From cb5d07df579d2214991d6dbce6c70a3b80ad06de Mon Sep 17 00:00:00 2001 From: mc <42146119+mchammer01@users.noreply.github.com> Date: Thu, 18 Jan 2024 11:32:24 +0000 Subject: [PATCH 01/75] Update "broken" link (#48747) --- data/reusables/support/ask-and-answer-forum.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/reusables/support/ask-and-answer-forum.md b/data/reusables/support/ask-and-answer-forum.md index 8e69add438..923b039be7 100644 --- a/data/reusables/support/ask-and-answer-forum.md +++ b/data/reusables/support/ask-and-answer-forum.md @@ -1 +1 @@ -You can connect with developers around the world to ask and answer questions, learn, and interact directly with {% data variables.product.product_name %} staff. To get the conversation started, see "[{% data variables.product.prodname_gcf %}](https://github.community)." +You can connect with developers around the world to ask and answer questions, learn, and interact directly with {% data variables.product.product_name %} staff. To get the conversation started, see "[{% data variables.product.prodname_gcf %}](https://github.com/orgs/community/discussions/)." From bffcfd95b507c6b905d6f4889ea4593f32c321f1 Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Thu, 18 Jan 2024 12:33:15 +0100 Subject: [PATCH 02/75] [Improvement]: Get started (phase 1): About GitHub and Git (new article) #12376 (#46850) Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> Co-authored-by: Isaac Brown <101839405+isaacmbrown@users.noreply.github.com> --- .../quickstart/about-github-and-git.md | 75 +++++++++++++++++++ content/get-started/quickstart/index.md | 1 + 2 files changed, 76 insertions(+) create mode 100644 content/get-started/quickstart/about-github-and-git.md diff --git a/content/get-started/quickstart/about-github-and-git.md b/content/get-started/quickstart/about-github-and-git.md new file mode 100644 index 0000000000..098c13d77a --- /dev/null +++ b/content/get-started/quickstart/about-github-and-git.md @@ -0,0 +1,75 @@ +--- +title: About GitHub and Git +shortTitle: About GitHub and Git +intro: 'You can use {% data variables.product.product_name %} and Git to collaborate on work.' +versions: + fpt: '*' + ghes: '*' + ghec: '*' +type: overview +topics: + - Git + - Fundamentals + - GitHub + - Collaboration + - Community +--- + +## About {% data variables.product.prodname_dotcom %} + +{% data variables.product.prodname_dotcom %} is a {% ifversion not ghes %}cloud-based {% endif %}platform where you can store, share, and work together with others to write code. + +Storing your code in a "repository" on {% data variables.product.prodname_dotcom %} allows you to: +- **Showcase or share** your work. +- **Track and manage** changes to your code over time. +- Let others **review** your code, and make suggestions to improve it. +- **Collaborate** on a shared project, without worrying that your changes will impact the work of your collaborators before you're ready to integrate them. + +Collaborative working, which is one of the most fundamental features of {% data variables.product.prodname_dotcom %}, is possible thanks to an open-source software called "Git," upon which {% data variables.product.prodname_dotcom %} is built. + +## About Git + +Git is a version control system that intelligently tracks changes in files. Git is particularly useful when you and a group of people are all making changes to the same files at the same time. + +Typically, to do this in a Git-based workflow, you would: +- **Create a branch** off from the main copy of files that you (and your collaborators) are working on. +- **Make edits** to the files independently and safely on your own personal branch. +- Let Git intelligently **merge** your specific changes back into the main copy of files, so that your changes don't impact other people's updates. +- Let Git **keep track** of your and other people's changes, so you all stay working on the most up-to-date version of the project. + +If you want to learn more about Git, see "[AUTOTITLE](/get-started/using-git/about-git)." + +### How do Git and {% data variables.product.prodname_dotcom %} work together? + +When you upload files to {% data variables.product.prodname_dotcom %}, you'll store them in a "Git repository." This means that when you make changes (or "commits") to your files in {% data variables.product.prodname_dotcom %}, Git will automatically start to track and manage your changes. + +There are plenty of Git-related actions that you can complete on {% data variables.product.prodname_dotcom %} directly in your browser, such as creating a Git repository, creating branches, and uploading and editing files. + +However, most people work on their files locally (on their own computer), then continually sync these local changes—and all the related Git data—with the central "remote" repository on {% data variables.product.prodname_dotcom %}. There are plenty of tools that you can use to do this, such as GitHub Desktop. + +Once you start to work collaboratively, where you and others all need to be making changes to the same repository at the same time, you'll continually: + +- **Pull** all the latest changes made by your collaborators from the remote repository on {% data variables.product.prodname_dotcom %}. +- **Push** back your own changes to the same remote repository on {% data variables.product.prodname_dotcom %}. + +Git figures out how to intelligently merge this flow of changes, and {% data variables.product.prodname_dotcom %} helps you manage the flow through features such as "pull requests." + +## Where do I start? + +If you're new to {% data variables.product.prodname_dotcom %}, and unfamiliar with Git, we recommend working through the articles in the "[Quickstart](/get-started/quickstart)" category, which will help you to: + +- **Create an account** on {% data variables.product.prodname_dotcom %}. +- **Learn the "{% data variables.product.prodname_dotcom %} Flow"**, and the key principles of collaborative working (branches, commits, pull requests, merges). +- **Find inspiration** on {% data variables.product.prodname_dotcom %} and learn how to **download** interesting code for your own use. + +{% ifversion fpt or ghec %} + +## Next steps + +- "[AUTOTITLE](/get-started/quickstart/creating-an-account-on-github)" + +{% endif %} + +## Further reading + +- "[AUTOTITLE](/get-started/using-github/connecting-to-github)" diff --git a/content/get-started/quickstart/index.md b/content/get-started/quickstart/index.md index db3f3c4f2e..207aac12c2 100644 --- a/content/get-started/quickstart/index.md +++ b/content/get-started/quickstart/index.md @@ -12,6 +12,7 @@ topics: - Notifications - Accounts children: + - /about-github-and-git - /creating-an-account-on-github - /hello-world - /finding-inspiration-on-github From 51f8256e8f4e4cbcd09de48b08033343d834e92e Mon Sep 17 00:00:00 2001 From: mc <42146119+mchammer01@users.noreply.github.com> Date: Thu, 18 Jan 2024 11:48:29 +0000 Subject: [PATCH 03/75] Improve and amend information about malware in Dependabot (#48626) Co-authored-by: Anne-Marie <102995847+am-stead@users.noreply.github.com> --- .../about-dependabot-alerts.md | 14 +++++------ .../configuring-dependabot-alerts.md | 6 ++--- ...ing-notifications-for-dependabot-alerts.md | 4 +++- .../viewing-and-updating-dependabot-alerts.md | 4 +++- .../troubleshooting-dependabot-errors.md | 3 --- .../about-global-security-advisories.md | 23 +++++++++++++++--- .../about-the-github-advisory-database.md | 24 ++++++++++++++----- ...isories-in-the-github-advisory-database.md | 2 +- .../about-supply-chain-security.md | 4 ++-- .../github-reviewed-overview.md | 1 + .../advisory-database/malware-overview.md | 1 + .../advisory-database/unreviewed-overview.md | 1 + .../no-dependabot-alerts-for-malware.md | 5 ++++ .../repositories/dependency-review.md | 2 +- 14 files changed, 65 insertions(+), 29 deletions(-) create mode 100644 data/reusables/advisory-database/github-reviewed-overview.md create mode 100644 data/reusables/advisory-database/malware-overview.md create mode 100644 data/reusables/advisory-database/unreviewed-overview.md create mode 100644 data/reusables/dependabot/no-dependabot-alerts-for-malware.md diff --git a/content/code-security/dependabot/dependabot-alerts/about-dependabot-alerts.md b/content/code-security/dependabot/dependabot-alerts/about-dependabot-alerts.md index ea60e3ee68..317cd2f475 100644 --- a/content/code-security/dependabot/dependabot-alerts/about-dependabot-alerts.md +++ b/content/code-security/dependabot/dependabot-alerts/about-dependabot-alerts.md @@ -1,6 +1,6 @@ --- title: About Dependabot alerts -intro: '{% data variables.product.product_name %} sends {% data variables.product.prodname_dependabot_alerts %} when we detect that your repository uses a vulnerable dependency{% ifversion GH-advisory-db-supports-malware %} or malware{% endif %}.' +intro: '{% data variables.product.product_name %} sends {% data variables.product.prodname_dependabot_alerts %} when we detect that your repository uses a vulnerable dependency.' product: '{% data reusables.gated-features.dependabot-alerts %}' redirect_from: - /articles/about-security-alerts-for-vulnerable-dependencies @@ -26,14 +26,12 @@ shortTitle: Dependabot alerts ## About {% data variables.product.prodname_dependabot_alerts %} -{% ifversion GH-advisory-db-supports-malware %} -{% data reusables.advisory-database.beta-malware-advisories %} -{% endif %} - {% data variables.product.prodname_dependabot_alerts %} tell you that your code depends on a package that is insecure. If your code depends on a package with a security vulnerability, this can cause a range of problems for your project or the people who use it. You should upgrade to a secure version of the package as soon as possible.{% ifversion GH-advisory-db-supports-malware %} If your code uses malware, you need to replace the package with a secure alternative.{% endif %} +{% data reusables.dependabot.no-dependabot-alerts-for-malware %} + {% data reusables.dependabot.quickstart-link %} ## Detection of insecure dependencies @@ -74,7 +72,7 @@ As {% data variables.product.prodname_dependabot_alerts %} rely on the dependenc {% data reusables.repositories.enable-security-alerts %} -{% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %} detects vulnerable dependencies and malware in _public_ repositories and displays the dependency graph, but does not generate {% data variables.product.prodname_dependabot_alerts %} by default. Repository owners or people with admin access can enable {% data variables.product.prodname_dependabot_alerts %} for public repositories. Owners of private repositories, or people with admin access, can enable {% data variables.product.prodname_dependabot_alerts %} by enabling the dependency graph and {% data variables.product.prodname_dependabot_alerts %} for their repositories. +{% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %} detects vulnerable dependencies in _public_ repositories and displays the dependency graph, but does not generate {% data variables.product.prodname_dependabot_alerts %} by default. Repository owners or people with admin access can enable {% data variables.product.prodname_dependabot_alerts %} for public repositories. Owners of private repositories, or people with admin access, can enable {% data variables.product.prodname_dependabot_alerts %} by enabling the dependency graph and {% data variables.product.prodname_dependabot_alerts %} for their repositories. You can also enable or disable {% data variables.product.prodname_dependabot_alerts %} for all repositories owned by your user account or organization. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/configuring-dependabot-alerts)." @@ -83,7 +81,7 @@ For information about access requirements for actions related to {% data variabl {% data variables.product.product_name %} starts generating the dependency graph immediately and generates alerts for any insecure dependencies as soon as they are identified. The graph is usually populated within minutes but this may take longer for repositories with many dependencies. For more information, see "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository#enabling-or-disabling-security-and-analysis-features-for-private-repositories)." {% endif %} -When {% data variables.product.product_name %} identifies a vulnerable dependency{% ifversion GH-advisory-db-supports-malware %} or malware{% endif %}, we generate a {% data variables.product.prodname_dependabot %} alert and display it {% ifversion fpt or ghec or ghes %} on the **Security** tab for the repository and{% endif %} in the repository's dependency graph. The alert includes {% ifversion fpt or ghec or ghes %}a link to the affected file in the project, and {% endif %}information about a fixed version. +When {% data variables.product.product_name %} identifies a vulnerable dependency, we generate a {% data variables.product.prodname_dependabot %} alert and display it {% ifversion fpt or ghec or ghes %} on the **Security** tab for the repository and{% endif %} in the repository's dependency graph. The alert includes {% ifversion fpt or ghec or ghes %}a link to the affected file in the project, and {% endif %}information about a fixed version. {% data variables.product.product_name %} may also notify the maintainers of affected repositories about new alerts according to their notification preferences.{% ifversion dependabot-suppressed-notifications %} When {% data variables.product.prodname_dependabot %} is first enabled, {% data variables.product.product_name %} does not send notifications for all vulnerable dependencies found in your repository, only for new vulnerable dependencies identified after {% data variables.product.prodname_dependabot %} is enabled.{% endif %} For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/configuring-notifications-for-dependabot-alerts)." @@ -97,7 +95,7 @@ When {% data variables.product.product_name %} identifies a vulnerable dependenc {% warning %} -**Note**: {% data variables.product.product_name %}'s security features do not claim to catch all vulnerabilities{% ifversion GH-advisory-db-supports-malware %} and malware{% endif %}. We actively maintain {% data variables.product.prodname_advisory_database %} and generate alerts with the most up-to-date information. However, we cannot catch everything or tell you about known vulnerabilities within a guaranteed time frame. These features are not substitutes for human review of each dependency for potential vulnerabilities or any other issues, and we recommend consulting with a security service or conducting a thorough dependency review when necessary. +**Note**: {% data variables.product.product_name %}'s security features do not claim to catch all vulnerabilities. We actively maintain {% data variables.product.prodname_advisory_database %} and generate alerts with the most up-to-date information. However, we cannot catch everything or tell you about known vulnerabilities within a guaranteed time frame. These features are not substitutes for human review of each dependency for potential vulnerabilities or any other issues, and we recommend consulting with a security service or conducting a thorough dependency review when necessary. {% endwarning %} diff --git a/content/code-security/dependabot/dependabot-alerts/configuring-dependabot-alerts.md b/content/code-security/dependabot/dependabot-alerts/configuring-dependabot-alerts.md index 88bf303570..03947901a8 100644 --- a/content/code-security/dependabot/dependabot-alerts/configuring-dependabot-alerts.md +++ b/content/code-security/dependabot/dependabot-alerts/configuring-dependabot-alerts.md @@ -1,6 +1,6 @@ --- title: Configuring Dependabot alerts -intro: 'Enable {% data variables.product.prodname_dependabot_alerts %} to be generated when a new vulnerable dependency {% ifversion GH-advisory-db-supports-malware %}or malware {% endif %}is found in one of your repositories.' +intro: 'Enable {% data variables.product.prodname_dependabot_alerts %} to be generated when a new vulnerable dependency is found in one of your repositories.' shortTitle: Configure Dependabot alerts versions: fpt: '*' @@ -17,11 +17,11 @@ topics: - Repositories --- -## About {% data variables.product.prodname_dependabot_alerts %} for vulnerable dependencies{% ifversion GH-advisory-db-supports-malware %} and malware{% endif %} +## About {% data variables.product.prodname_dependabot_alerts %} for vulnerable dependencies {% data reusables.repositories.a-vulnerability-is %} -{% data variables.product.prodname_dependabot %} scans code when a new advisory is added to the {% data variables.product.prodname_advisory_database %} or the dependency graph for a repository changes. When vulnerable dependencies{% ifversion GH-advisory-db-supports-malware %} or malware{% endif %} are detected, {% data variables.product.prodname_dependabot_alerts %} are generated. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)." +{% data variables.product.prodname_dependabot %} scans code when a new advisory is added to the {% data variables.product.prodname_advisory_database %} or the dependency graph for a repository changes. When vulnerable dependencies are detected, {% data variables.product.prodname_dependabot_alerts %} are generated. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)." {% data reusables.dependabot.dependabot-alert-create-PR %} diff --git a/content/code-security/dependabot/dependabot-alerts/configuring-notifications-for-dependabot-alerts.md b/content/code-security/dependabot/dependabot-alerts/configuring-notifications-for-dependabot-alerts.md index 7f94d86b77..f3cdc3c7e8 100644 --- a/content/code-security/dependabot/dependabot-alerts/configuring-notifications-for-dependabot-alerts.md +++ b/content/code-security/dependabot/dependabot-alerts/configuring-notifications-for-dependabot-alerts.md @@ -23,9 +23,11 @@ topics: ## About notifications for {% data variables.product.prodname_dependabot_alerts %} -When {% data variables.product.prodname_dependabot %} detects vulnerable dependencies{% ifversion GH-advisory-db-supports-malware %} or malware{% endif %} in your repositories, we generate a {% data variables.product.prodname_dependabot %} alert and display it on the **Security** tab for the repository. {% data variables.product.product_name %} notifies the maintainers of affected repositories about the new alert according to their notification preferences.{% ifversion fpt or ghec %} {% data variables.product.prodname_dependabot %} is enabled by default on all public repositories, and needs to be enabled on private repositories. By default, you will receive {% data variables.product.prodname_dependabot_alerts %} by email. You can override the default overall behavior by choosing the type of notifications you want to receive, or switching notifications off altogether in the settings page for your user notifications at [https://github.com/settings/notifications](https://github.com/settings/notifications). +When {% data variables.product.prodname_dependabot %} detects vulnerable dependencies in your repositories, we generate a {% data variables.product.prodname_dependabot %} alert and display it on the **Security** tab for the repository. {% data variables.product.product_name %} notifies the maintainers of affected repositories about the new alert according to their notification preferences.{% ifversion fpt or ghec %} {% data variables.product.prodname_dependabot %} is enabled by default on all public repositories, and needs to be enabled on private repositories. By default, you will receive {% data variables.product.prodname_dependabot_alerts %} by email. You can override the default overall behavior by choosing the type of notifications you want to receive, or switching notifications off altogether in the settings page for your user notifications at [https://github.com/settings/notifications](https://github.com/settings/notifications). {% endif %} +{% data reusables.dependabot.no-dependabot-alerts-for-malware %} + {% ifversion dependabot-suppressed-notifications %}Regardless of your notification preferences, when {% data variables.product.prodname_dependabot %} is first enabled, {% data variables.product.product_name %} does not send notifications for all vulnerable dependencies found in your repository. Instead, you will receive notifications for new vulnerable dependencies identified after {% data variables.product.prodname_dependabot %} is enabled, if your notification preferences allow it.{% endif %} {% ifversion fpt or ghec %}If you're an organization owner, you can enable or disable {% data variables.product.prodname_dependabot_alerts %} for all repositories in your organization with one click. You can also set whether {% data variables.product.prodname_dependabot_alerts %} will be enabled or disabled for newly-created repositories. For more information, see "[AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-for-all-new-repositories-when-they-are-added)." diff --git a/content/code-security/dependabot/dependabot-alerts/viewing-and-updating-dependabot-alerts.md b/content/code-security/dependabot/dependabot-alerts/viewing-and-updating-dependabot-alerts.md index c4e2dadad5..66b1c7cba4 100644 --- a/content/code-security/dependabot/dependabot-alerts/viewing-and-updating-dependabot-alerts.md +++ b/content/code-security/dependabot/dependabot-alerts/viewing-and-updating-dependabot-alerts.md @@ -38,6 +38,8 @@ You can enable automatic security updates for any repository that uses {% data v {% data variables.product.product_name %} generates {% data variables.product.prodname_dependabot_alerts %} when we detect that the default branch of your codebase is using dependencies with known security risks. For repositories where {% data variables.product.prodname_dependabot_security_updates %} are enabled, when {% data variables.product.product_name %} detects a vulnerable dependency in the default branch, {% data variables.product.prodname_dependabot %} creates a pull request to fix it. The pull request will upgrade the dependency to the minimum possible secure version needed to avoid the vulnerability. +{% data reusables.dependabot.no-dependabot-alerts-for-malware %} + Each {% data variables.product.prodname_dependabot %} alert has a unique numeric identifier and the {% data variables.product.prodname_dependabot_alerts %} tab lists an alert for every detected vulnerability. Legacy {% data variables.product.prodname_dependabot_alerts %} grouped vulnerabilities by dependency and generated a single alert per dependency. If you navigate to a legacy {% data variables.product.prodname_dependabot %} alert, you will be redirected to a {% data variables.product.prodname_dependabot_alerts %} tab filtered for that package. {% endif %} You can filter and sort {% data variables.product.prodname_dependabot_alerts %} using a variety of filters and sort options available on the user interface. For more information, see "[Prioritizing {% data variables.product.prodname_dependabot_alerts %}](#prioritizing-across--data-variablesproductprodname_dependabot_alerts-)" below. @@ -132,7 +134,7 @@ You can view all open and closed {% data variables.product.prodname_dependabot_a ## Reviewing and fixing alerts -It’s important to ensure that all of your dependencies are clean of any security weaknesses. When {% data variables.product.prodname_dependabot %} discovers vulnerabilities {% ifversion GH-advisory-db-supports-malware %}or malware{% endif %} in your dependencies, you should assess your project’s level of exposure and determine what remediation steps to take to secure your application. +It’s important to ensure that all of your dependencies are clean of any security weaknesses. When {% data variables.product.prodname_dependabot %} discovers vulnerabilities in your dependencies, you should assess your project’s level of exposure and determine what remediation steps to take to secure your application. {% ifversion fpt or ghec or ghes %} diff --git a/content/code-security/dependabot/working-with-dependabot/troubleshooting-dependabot-errors.md b/content/code-security/dependabot/working-with-dependabot/troubleshooting-dependabot-errors.md index 10f50cdf0e..3dc8b6ab2a 100644 --- a/content/code-security/dependabot/working-with-dependabot/troubleshooting-dependabot-errors.md +++ b/content/code-security/dependabot/working-with-dependabot/troubleshooting-dependabot-errors.md @@ -50,9 +50,6 @@ When {% data variables.product.prodname_dependabot %} is blocked from creating a There are several reasons why an alert may have no pull request link: 1. {% data variables.product.prodname_dependabot_security_updates %} are not enabled for the repository. -{% ifversion GH-advisory-db-supports-malware %} -1. The alert is for malware and there is no secure version of the package. -{% endif %} 1. The alert is for an indirect or transitive dependency that is not explicitly defined in a lock file. 1. An error blocked {% data variables.product.prodname_dependabot %} from creating a pull request. diff --git a/content/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/about-global-security-advisories.md b/content/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/about-global-security-advisories.md index 08d571b090..bd70a3fd50 100644 --- a/content/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/about-global-security-advisories.md +++ b/content/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/about-global-security-advisories.md @@ -20,9 +20,26 @@ redirect_from: {% ifversion fpt or ghec %}There are two types of advisories: global security advisories and repository security advisories. For more information about repository security advisories, see "[AUTOTITLE](/code-security/security-advisories/working-with-repository-security-advisories/about-repository-security-advisories)."{% endif %} -Global security advisories are grouped into two categories: {% data variables.product.company_short %}-reviewed advisories and unreviewed advisories. -- {% data variables.product.company_short %}-reviewed advisories are security vulnerabilities{% ifversion GH-advisory-db-supports-malware %} or malware{% endif %} that have been mapped to packages in ecosystems we support. -- Unreviewed advisories are security vulnerabilities that we publish automatically into the {% data variables.product.prodname_advisory_database %}, directly from the National Vulnerability Database feed. +Global security advisories are grouped into these categories: {% data variables.product.company_short %}-reviewed advisories,{% ifversion GH-advisory-db-supports-malware %} unreviewed advisories, and malware advisories{% else %} and unreviewed advisories{% endif %}. +- {% data reusables.advisory-database.github-reviewed-overview %} +- {% data reusables.advisory-database.unreviewed-overview %}{% ifversion GH-advisory-db-supports-malware %} +- {% data reusables.advisory-database.malware-overview %} + +{% note %} + +**Note:** {% data variables.product.prodname_dependabot %} doesn't generate {% data variables.product.prodname_dependabot_alerts %} for unreviewed and malware advisories. + +{% endnote %} + +{% else %} + +{% note %} + +**Note:** {% data variables.product.prodname_dependabot %} doesn't generate {% data variables.product.prodname_dependabot_alerts %} for unreviewed advisories. + +{% endnote %} + +{% endif %} For more information about the {% data variables.product.prodname_advisory_database %}, see "[AUTOTITLE](/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/about-the-github-advisory-database)." diff --git a/content/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/about-the-github-advisory-database.md b/content/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/about-the-github-advisory-database.md index 93ef341e23..6f6567d90f 100644 --- a/content/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/about-the-github-advisory-database.md +++ b/content/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/about-the-github-advisory-database.md @@ -1,6 +1,6 @@ --- title: About the GitHub Advisory database -intro: 'The {% data variables.product.prodname_advisory_database %} contains a list of known security vulnerabilities {% ifversion GH-advisory-db-supports-malware %}and malware, {% endif %}grouped in two categories: {% data variables.product.company_short %}-reviewed advisories and unreviewed advisories.' +intro: 'The {% data variables.product.prodname_advisory_database %} contains a list of known security vulnerabilities {% ifversion GH-advisory-db-supports-malware %}and malware, grouped in three categories: {% data variables.product.company_short %}-reviewed advisories, unreviewed advisories, and malware advisories.{% else %} grouped in two categories: {% data variables.product.company_short %}-reviewed advisories and unreviewed advisories.{% endif %}' versions: fpt: '*' ghec: '*' @@ -24,8 +24,6 @@ Security advisories are published as JSON files in the Open Source Vulnerability ## About types of security advisories -{% data reusables.advisory-database.beta-malware-advisories %} - Each advisory in the {% data variables.product.prodname_advisory_database %} is for a vulnerability in open source projects{% ifversion GH-advisory-db-supports-malware %} or for malicious open source software{% endif %}. {% data reusables.repositories.a-vulnerability-is %} Vulnerabilities in code are usually introduced by accident and fixed soon after they are discovered. You should update your code to use the fixed version of the dependency as soon as it is available. @@ -38,7 +36,7 @@ In contrast, malicious software, or malware, is code that is intentionally desig ### {% data variables.product.company_short %}-reviewed advisories -{% data variables.product.company_short %}-reviewed advisories are security vulnerabilities{% ifversion GH-advisory-db-supports-malware %} or malware{% endif %} that have been mapped to packages in ecosystems we support. We carefully review each advisory for validity and ensure that they have a full description, and contain both ecosystem and package information. +{% data reusables.advisory-database.github-reviewed-overview %} Generally, we name our supported ecosystems after the software programming language's associated package registry. We review advisories if they are for a vulnerability in a package that comes from a supported registry. @@ -58,14 +56,28 @@ Generally, we name our supported ecosystems after the software programming langu If you have a suggestion for a new ecosystem we should support, please open an [issue](https://github.com/github/advisory-database/issues) for discussion. -If you enable {% data variables.product.prodname_dependabot_alerts %} for your repositories, you are automatically notified when a new {% data variables.product.company_short %}-reviewed advisory reports a vulnerability {% ifversion GH-advisory-db-supports-malware %}or malware{% endif %} for a package you depend on. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)." +If you enable {% data variables.product.prodname_dependabot_alerts %} for your repositories, you are automatically notified when a new {% data variables.product.company_short %}-reviewed advisory reports a vulnerability for a package you depend on. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)." ### Unreviewed advisories -Unreviewed advisories are security vulnerabilities that we publish automatically into the {% data variables.product.prodname_advisory_database %}, directly from the National Vulnerability Database feed. +{% data reusables.advisory-database.unreviewed-overview %} {% data variables.product.prodname_dependabot %} doesn't create {% data variables.product.prodname_dependabot_alerts %} for unreviewed advisories as this type of advisory isn't checked for validity or completion. +{% ifversion GH-advisory-db-supports-malware %} + +### Malware advisories + +{% data reusables.advisory-database.beta-malware-advisories %} + +{% data reusables.advisory-database.malware-overview %} + +{% data variables.product.prodname_dependabot %} doesn't generate alerts when malware is detected as most of the vulnerabilities cannot be resolved by downstream users. You can view malware advisories by searching for `type:malware` in the {% data variables.product.prodname_advisory_database %}. + +Our malware advisories are mostly about substitution attacks. During this type of attack, an attacker publishes a package to the public registry with the same name as a dependency that users rely on from a third party or private registry, with the hope that the malicious version is consumed. {% data variables.product.prodname_dependabot %} doesn’t look at project configurations to determine if the packages are coming from a private registry, so we aren't sure if you're using the malicious version or a non-malicious version. Users who have their dependencies appropriately scoped should not be affected by malware. + +{% endif %} + ## About information in security advisories In this section, you can find more detailed information about security advisories in the {% data variables.product.prodname_advisory_database %}, such as: diff --git a/content/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/browsing-security-advisories-in-the-github-advisory-database.md b/content/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/browsing-security-advisories-in-the-github-advisory-database.md index e109bd74b4..63400847ae 100644 --- a/content/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/browsing-security-advisories-in-the-github-advisory-database.md +++ b/content/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/browsing-security-advisories-in-the-github-advisory-database.md @@ -59,7 +59,7 @@ You can search the database, and use qualifiers to narrow your search. For examp | Qualifier | Example | | ------------- | ------------- | | `type:reviewed`| [**type:reviewed**](https://github.com/advisories?query=type%3Areviewed) will show {% data variables.product.company_short %}-reviewed advisories for security vulnerabilities. | -{% ifversion GH-advisory-db-supports-malware %}| `type:malware` | [**type:malware**](https://github.com/advisories?query=type%3Amalware) will show {% data variables.product.company_short %}-reviewed advisories for malware. | +{% ifversion GH-advisory-db-supports-malware %}| `type:malware` | [**type:malware**](https://github.com/advisories?query=type%3Amalware) will show malware advisories. | {% endif %}| `type:unreviewed`| [**type:unreviewed**](https://github.com/advisories?query=type%3Aunreviewed) will show unreviewed advisories. | | `GHSA-ID`| [**GHSA-49wp-qq6x-g2rf**](https://github.com/advisories?query=GHSA-49wp-qq6x-g2rf) will show the advisory with this {% data variables.product.prodname_advisory_database %} ID. | | `CVE-ID`| [**CVE-2020-28482**](https://github.com/advisories?query=CVE-2020-28482) will show the advisory with this CVE ID number. | diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-supply-chain-security.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-supply-chain-security.md index 8c8a40717b..286cdb9298 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-supply-chain-security.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-supply-chain-security.md @@ -41,7 +41,7 @@ The dependency graph is central to supply chain security. The dependency graph i Other supply chain features on {% data variables.product.prodname_dotcom %} rely on the information provided by the dependency graph. - Dependency review uses the dependency graph to identify dependency changes and help you understand the security impact of these changes when you review pull requests. -- {% data variables.product.prodname_dependabot %} cross-references dependency data provided by the dependency graph with the list of advisories published in the {% data variables.product.prodname_advisory_database %}, scans your dependencies and generates {% data variables.product.prodname_dependabot_alerts %} when a potential vulnerability {% ifversion GH-advisory-db-supports-malware %}or malware{% endif %} is detected. +- {% data variables.product.prodname_dependabot %} cross-references dependency data provided by the dependency graph with the list of advisories published in the {% data variables.product.prodname_advisory_database %}, scans your dependencies and generates {% data variables.product.prodname_dependabot_alerts %} when a potential vulnerability is detected. {% ifversion fpt or ghec or ghes %}- {% data variables.product.prodname_dependabot_security_updates %} use the dependency graph and {% data variables.product.prodname_dependabot_alerts %} to help you update dependencies with known vulnerabilities in your repository. {% data variables.product.prodname_dependabot_version_updates %} don't use the dependency graph and rely on the semantic versioning of dependencies instead. {% data variables.product.prodname_dependabot_version_updates %} help you keep your dependencies updated, even when they don’t have any vulnerabilities. @@ -110,7 +110,7 @@ The term "{% data variables.product.prodname_dependabot %}" encompasses the foll #### What are Dependabot alerts -{% data variables.product.prodname_dependabot_alerts %} highlight repositories affected by a newly discovered vulnerability based on the dependency graph and the {% data variables.product.prodname_advisory_database %}, which contains advisories for known vulnerabilities{% ifversion GH-advisory-db-supports-malware %} and malware{% endif %}. +{% data variables.product.prodname_dependabot_alerts %} highlight repositories affected by a newly discovered vulnerability based on the dependency graph and the {% data variables.product.prodname_advisory_database %}, which contains advisories for known vulnerabilities. - {% data variables.product.prodname_dependabot %} performs a scan to detect insecure dependencies and sends {% data variables.product.prodname_dependabot_alerts %} when: {% ifversion fpt or ghec %} diff --git a/data/reusables/advisory-database/github-reviewed-overview.md b/data/reusables/advisory-database/github-reviewed-overview.md new file mode 100644 index 0000000000..14aedbcd90 --- /dev/null +++ b/data/reusables/advisory-database/github-reviewed-overview.md @@ -0,0 +1 @@ +{% data variables.product.company_short %}-reviewed advisories are security vulnerabilities that have been mapped to packages in ecosystems we support. We carefully review each advisory for validity and ensure that they have a full description, and contain both ecosystem and package information. diff --git a/data/reusables/advisory-database/malware-overview.md b/data/reusables/advisory-database/malware-overview.md new file mode 100644 index 0000000000..dc53151352 --- /dev/null +++ b/data/reusables/advisory-database/malware-overview.md @@ -0,0 +1 @@ +Malware advisories relate to vulnerabilities caused by malware, and are security advisories that {% data variables.product.prodname_dotcom %} publishes automatically into the {% data variables.product.prodname_advisory_database %}, directly from information provided by the npm security team. Malware advisories are exclusive to the npm ecosystem. {% data variables.product.prodname_dotcom %} doesn't edit or accept community contributions on these advisories. diff --git a/data/reusables/advisory-database/unreviewed-overview.md b/data/reusables/advisory-database/unreviewed-overview.md new file mode 100644 index 0000000000..6ab33614a2 --- /dev/null +++ b/data/reusables/advisory-database/unreviewed-overview.md @@ -0,0 +1 @@ +Unreviewed advisories are security vulnerabilities that we publish automatically into the {% data variables.product.prodname_advisory_database %}, directly from the National Vulnerability Database feed. diff --git a/data/reusables/dependabot/no-dependabot-alerts-for-malware.md b/data/reusables/dependabot/no-dependabot-alerts-for-malware.md new file mode 100644 index 0000000000..95bfbf3f27 --- /dev/null +++ b/data/reusables/dependabot/no-dependabot-alerts-for-malware.md @@ -0,0 +1,5 @@ +{% ifversion GH-advisory-db-supports-malware %} + +{% data variables.product.prodname_dependabot %} doesn't generate {% data variables.product.prodname_dependabot_alerts %} for malware. For more information, see "[AUTOTITLE](/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/about-the-github-advisory-database#malware-advisories)." + +{% endif %} diff --git a/data/reusables/repositories/dependency-review.md b/data/reusables/repositories/dependency-review.md index ad49ab4b50..7757225ed4 100644 --- a/data/reusables/repositories/dependency-review.md +++ b/data/reusables/repositories/dependency-review.md @@ -1 +1 @@ -Additionally, {% data variables.product.prodname_dotcom %} can review any dependencies added, updated, or removed in a pull request made against the default branch of a repository, and flag any changes that would reduce the security of your project. This allows you to spot and deal with vulnerable dependencies{% ifversion GH-advisory-db-supports-malware %} or malware{% endif %} before, rather than after, they reach your codebase. For more information, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request)." +Additionally, {% data variables.product.prodname_dotcom %} can review any dependencies added, updated, or removed in a pull request made against the default branch of a repository, and flag any changes that would reduce the security of your project. This allows you to spot and deal with vulnerable dependencies before, rather than after, they reach your codebase. For more information, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request)." From c21c627db629c416a798ffe22790eadd6cccbd84 Mon Sep 17 00:00:00 2001 From: Chad Bentz <1760475+felickz@users.noreply.github.com> Date: Thu, 18 Jan 2024 07:13:41 -0500 Subject: [PATCH 04/75] Updates to new SPDX format for DR Enforcement Action (#48682) Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> --- .../configuring-dependency-review.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-dependency-review.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-dependency-review.md index cab0e0c520..b6de115d2c 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-dependency-review.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-dependency-review.md @@ -141,10 +141,10 @@ Notice that all of the examples use a short version number for the action (`v3`) {% ifversion dependency-review-action-licenses %} # You can only include one of these two options: `allow-licenses` and `deny-licenses` # ([String]). Only allow these licenses (optional) - # Possible values: Any `spdx_id` value(s) from https://docs.github.com/en/rest/licenses + # Possible values: Any SPDX-compliant license identifiers or expressions from https://spdx.org/licenses/ allow-licenses: GPL-3.0, BSD-3-Clause, MIT # ([String]). Block the pull request on these licenses (optional) - # Possible values: Any `spdx_id` value(s) from https://docs.github.com/en/rest/licenses + # Possible values: Any SPDX-compliant license identifiers or expressions from https://spdx.org/licenses/ deny-licenses: LGPL-2.0, BSD-2-Clause {% endif %} # ([String]). Skip these {% data variables.product.prodname_advisory_database %} IDs during detection (optional) @@ -205,13 +205,13 @@ Notice that all of the examples use a short version number for the action (`v3`) {% ifversion dependency-review-action-licenses %} # You can only include one of these two options: `allow-licenses` and `deny-licenses` # ([String]). Only allow these licenses (optional) - # Possible values: Any `spdx_id` value(s) from https://docs.github.com/en/rest/licenses + # Possible values: Any SPDX-compliant license identifiers or expressions from https://spdx.org/licenses/ allow-licenses: - GPL-3.0 - BSD-3-Clause - MIT # ([String]). Block the pull request on these licenses (optional) - # Possible values: Any `spdx_id` value(s) from https://docs.github.com/en/rest/licenses + # Possible values: Any SPDX-compliant license identifiers or expressions from https://spdx.org/licenses/ deny-licenses: - LGPL-2.0 - BSD-2-Clause From 8a45308413959c54f2b65ba57a7468fecf3a3794 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Thu, 18 Jan 2024 07:39:31 -0500 Subject: [PATCH 05/75] Remove mention of 'ghae' in example in README (#48733) --- data/features/README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/data/features/README.md b/data/features/README.md index 355b51af43..e57fb62e1b 100644 --- a/data/features/README.md +++ b/data/features/README.md @@ -1,4 +1,4 @@ -## Feature-based versioning +# Feature-based versioning Feature-based versioning allows us to define and control the versions of an arbitrarily named "feature" in one place. @@ -15,7 +15,6 @@ versions: fpt: '*' ghec: '*' ghes: '>3.1' - ghae: '*' ``` The format and allowed values are the same as the [frontmatter versions property](/content#versions). @@ -40,7 +39,7 @@ You cannot use `feature:` to specify multiple concurrent versions, as this is no ## Schema enforcement -The schema for validating the feature versioning lives in [`src/content-linter/lib/feature-versions-schema.js`](src/content-linter/lib/feature-versions-schema.js) and is exercised by [`tests/linting/lint-versioning.js`](tests/linting/lint-versioning.js). +The schema for validating the feature versioning lives in [`src/data-directory/lib/data-schemas/features.js`](../../src/data-directory/lib/data-schemas/features.js). ## Script to remove feature tags From 3a034e6401ec1be1ef1e6bece89d212938a66156 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Thu, 18 Jan 2024 07:51:08 -0500 Subject: [PATCH 06/75] Remove GHAE in Liquid and front matter (1) (#48742) --- content/account-and-profile/index.md | 3 --- .../configuring-notifications.md | 10 ++------ ...self-hosted-runners-for-your-enterprise.md | 23 +++++++++---------- 3 files changed, 13 insertions(+), 23 deletions(-) diff --git a/content/account-and-profile/index.md b/content/account-and-profile/index.md index 0176d5c715..d9c88496ca 100644 --- a/content/account-and-profile/index.md +++ b/content/account-and-profile/index.md @@ -7,9 +7,7 @@ introLinks: featuredLinks: startHere: - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/changing-your-github-username - - '{% ifversion ghae %}/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard{% endif %}' - /account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/managing-your-profile-readme - - '{% ifversion ghae %}/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile{% endif %}' - /account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/about-notifications popular: - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address @@ -40,4 +38,3 @@ children: - /setting-up-and-managing-your-github-profile - /managing-subscriptions-and-notifications-on-github --- - diff --git a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications.md b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications.md index c1fb800ce1..d36eba2310 100644 --- a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications.md +++ b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications.md @@ -18,7 +18,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - Notifications @@ -68,11 +67,6 @@ When you watch a repository, you're subscribing to updates for activity in that To see repositories that you're watching, go to your [watching page](https://github.com/watching). For more information, see "[AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github)." -{% ifversion ghae %} - -### Configuring notifications - -{% endif %} You can configure notifications for a repository on the repository page, or on your watching page. ### About custom notifications @@ -138,7 +132,7 @@ Email notifications from {% data variables.location.product_location %} contain | Header | Information | | --- | --- | | `From` address | This address will always be {% ifversion fpt or ghec %}'`notifications@github.com`'{% else %}'the no-reply email address configured by your site administrator'{% endif %}. | -| `To` field | This field connects directly to the thread.{% ifversion not ghae %} If you reply to the email, you'll add a new comment to the conversation.{% endif %} | +| `To` field | This field connects directly to the thread. If you reply to the email, you'll add a new comment to the conversation. | | `Cc` address | {% data variables.product.product_name %} will `Cc` you if you're subscribed to a conversation. The second `Cc` email address matches the notification reason. The suffix for these notification reasons is {% data variables.notifications.cc_address %}. The possible notification reasons are: | | `List-Id` field | This field identifies the name of the repository and its owner. The format of this address is always `OWNER/REPOSITORY `, e.g. `List-Id: grain-lang/grain `. | | `X-GitHub-Severity` field | {% data reusables.repositories.security-alerts-x-github-severity %} The possible severity levels are:
  • `low`
  • `moderate`
  • `high`
  • `critical`
For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)." | @@ -187,7 +181,7 @@ If you belong to an organization, you can choose the email account you want noti {% data reusables.notifications.access_notifications %} {% data reusables.notifications-v2.manage-notifications %} 1. Under "Default notifications email", select the email address you'd like notifications sent to. -{% ifversion ghes or ghae %} +{% ifversion ghes %} 1. Click **Save**.{% endif %} ### Customizing email routes per organization diff --git a/content/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/getting-started-with-self-hosted-runners-for-your-enterprise.md b/content/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/getting-started-with-self-hosted-runners-for-your-enterprise.md index e9edbb6e5e..b534fd5640 100644 --- a/content/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/getting-started-with-self-hosted-runners-for-your-enterprise.md +++ b/content/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/getting-started-with-self-hosted-runners-for-your-enterprise.md @@ -5,7 +5,6 @@ intro: 'You can configure a runner machine for your enterprise so your developer versions: ghec: '*' ghes: '*' - ghae: '*' permissions: 'Enterprise owners can configure policies for {% data variables.product.prodname_actions %} and add self-hosted runners to the enterprise.' type: quick_start topics: @@ -18,7 +17,7 @@ topics: {% data reusables.actions.about-actions-for-enterprises %} For more information, see "[AUTOTITLE](/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/about-github-actions-for-enterprises)." -With {% data variables.product.prodname_actions %}, developers can write and combine individual tasks called actions to create custom workflows. {% ifversion ghes or ghae %}To enable {% data variables.product.prodname_actions %} for {% ifversion ghae %}your enterprise{% elsif ghes %} {% data variables.location.product_location %}{% endif %}, you must host at least one machine to execute jobs.{% endif %} {% ifversion ghec %}You can host your own runner machine to execute jobs, and this{% elsif ghes or ghae %}This{% endif %} machine is called a self-hosted runner. {% data reusables.actions.self-hosted-runner-locations %} {% data reusables.actions.self-hosted-runner-architecture %} {% ifversion ghec %}All{% elsif ghes or ghae %}Self-hosted{% endif %} runners can run Linux, Windows, or macOS. For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners)." +With {% data variables.product.prodname_actions %}, developers can write and combine individual tasks called actions to create custom workflows. {% ifversion ghes %}To enable {% data variables.product.prodname_actions %} for {% ifversion ghes %} {% data variables.location.product_location %}{% endif %}, you must host at least one machine to execute jobs.{% endif %} {% ifversion ghec %}You can host your own runner machine to execute jobs, and this{% elsif ghes %}This{% endif %} machine is called a self-hosted runner. {% data reusables.actions.self-hosted-runner-locations %} {% data reusables.actions.self-hosted-runner-architecture %} {% ifversion ghec %}All{% elsif ghes %}Self-hosted{% endif %} runners can run Linux, Windows, or macOS. For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners)." {% ifversion ghec %} @@ -34,9 +33,9 @@ This guide shows you how to apply a centralized management approach to self-host 1. Optionally, further restrict the repositories that can use the runner 1. Optionally, {% ifversion actions-runner-controller %}to build and scale self-hosted runners automatically, use {% data variables.product.prodname_actions_runner_controller %} (ARC). For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-actions-runner-controller)."{% else %}build custom tooling to automatically scale your self-hosted runners{% endif %} -You'll also find additional information about how to monitor and secure your self-hosted runners,{% ifversion ghes or ghae %} how to access actions from {% data variables.product.prodname_dotcom_the_website %},{% endif %} and how to customize the software on your runner machines. +You'll also find additional information about how to monitor and secure your self-hosted runners,{% ifversion ghes %} how to access actions from {% data variables.product.prodname_dotcom_the_website %},{% endif %} and how to customize the software on your runner machines. -After you finish the guide, {% ifversion ghec or ghae %}members of your enterprise{% elsif ghes %}users of {% data variables.location.product_location %}{% endif %} will be able to run workflow jobs from {% data variables.product.prodname_actions %} on a self-hosted runner machine. +After you finish the guide, {% ifversion ghec %}members of your enterprise{% elsif ghes %}users of {% data variables.location.product_location %}{% endif %} will be able to run workflow jobs from {% data variables.product.prodname_actions %} on a self-hosted runner machine. ## Prerequisites @@ -46,7 +45,7 @@ After you finish the guide, {% ifversion ghec or ghae %}members of your enterpri ## 1. Configure policies for {% data variables.product.prodname_actions %} -First, enable {% data variables.product.prodname_actions %} for all organizations, and configure a policy to restrict the actions{% ifversion actions-workflow-policy %} and reusable workflows{% endif %} that can run {% ifversion ghec or ghae%}within your enterprise on {% data variables.product.product_name %}{% elsif ghes %}on {% data variables.location.product_location %}{% endif %}. Optionally, organization owners can further restrict these policies for each organization. +First, enable {% data variables.product.prodname_actions %} for all organizations, and configure a policy to restrict the actions{% ifversion actions-workflow-policy %} and reusable workflows{% endif %} that can run {% ifversion ghec %}within your enterprise on {% data variables.product.product_name %}{% elsif ghes %}on {% data variables.location.product_location %}{% endif %}. Optionally, organization owners can further restrict these policies for each organization. {% data reusables.enterprise-accounts.access-enterprise %} {% data reusables.enterprise-accounts.policies-tab %} @@ -55,11 +54,11 @@ First, enable {% data variables.product.prodname_actions %} for all organization 1. To enable local actions{% ifversion actions-workflow-policy %} and reusable workflows, {% endif %} and actions created by {% data variables.product.company_short %}, select {% data reusables.actions.policy-label-for-select-actions-workflows %}, then select **Allow actions created by {% data variables.product.company_short %}**. 1. Click **Save**. -You can configure additional policies to restrict the actions available to {% ifversion ghec or ghae %}enterprise members{% elsif ghes %}users of {% data variables.location.product_location %}{% endif %}. For more information, see "[AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#allowing-select-actions-to-run)." +You can configure additional policies to restrict the actions available to {% ifversion ghec %}enterprise members{% elsif ghes %}users of {% data variables.location.product_location %}{% endif %}. For more information, see "[AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#allowing-select-actions-to-run)." ## 2. Deploy the self-hosted runner for your enterprise -Next, add a self-hosted runner to your enterprise. {% data variables.product.product_name %} will guide you through installation of the necessary software on the runner machine. After you deploy the runner, you can verify connectivity between the runner machine and {%ifversion ghec or ghae %}your enterprise{% elsif ghes %}{% data variables.location.product_location %}{% endif %}. +Next, add a self-hosted runner to your enterprise. {% data variables.product.product_name %} will guide you through installation of the necessary software on the runner machine. After you deploy the runner, you can verify connectivity between the runner machine and {%ifversion ghec %}your enterprise{% elsif ghes %}{% data variables.location.product_location %}{% endif %}. ### Adding the self-hosted runner @@ -110,7 +109,7 @@ For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managin {% ifversion actions-runner-controller %}Optionally, you can use {% data variables.product.prodname_actions_runner_controller %} (ARC) to automatically scale self-hosted runners. {% data reusables.actions.actions-runner-controller-about-arc %} -{% else %}Optionally, you can build custom tooling to automatically scale the self-hosted runners for {% ifversion ghec or ghae %}your enterprise{% elsif ghes %}{% data variables.location.product_location %}{% endif %}. For example, your tooling can respond to webhook events from {% data variables.location.product_location %} to automatically scale a cluster of runner machines. For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/autoscaling-with-self-hosted-runners)." +{% else %}Optionally, you can build custom tooling to automatically scale the self-hosted runners for {% ifversion ghec %}your enterprise{% elsif ghes %}{% data variables.location.product_location %}{% endif %}. For example, your tooling can respond to webhook events from {% data variables.location.product_location %} to automatically scale a cluster of runner machines. For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/autoscaling-with-self-hosted-runners)." {% endif %} ## Next steps @@ -119,12 +118,12 @@ For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managin - {% data variables.product.company_short %} recommends that you review security considerations for self-hosted runner machines. For more information, see "[AUTOTITLE](/actions/security-guides/security-hardening-for-github-actions#hardening-for-self-hosted-runners)." -- {% ifversion ghec %}If you use {% data variables.product.prodname_ghe_server %}, you{% elsif ghes or ghae %}You{% endif %} can manually sync repositories on {% data variables.product.prodname_dotcom_the_website %} containing actions to your enterprise on {% ifversion ghes or ghae %}{% data variables.product.product_name %}{% elsif ghec %}{% data variables.product.prodname_ghe_server %}{% endif %}. Alternatively, you can allow members of your enterprise to automatically access actions from {% data variables.product.prodname_dotcom_the_website %} by using {% data variables.product.prodname_github_connect %}. For more information, see the following. +- {% ifversion ghec %}If you use {% data variables.product.prodname_ghe_server %}, you{% elsif ghes %}You{% endif %} can manually sync repositories on {% data variables.product.prodname_dotcom_the_website %} containing actions to your enterprise on {% ifversion ghes %}{% data variables.product.product_name %}{% elsif ghec %}{% data variables.product.prodname_ghe_server %}{% endif %}. Alternatively, you can allow members of your enterprise to automatically access actions from {% data variables.product.prodname_dotcom_the_website %} by using {% data variables.product.prodname_github_connect %}. For more information, see the following. - - "[AUTOTITLE]({% ifversion ghec or ghae %}/enterprise-server@latest{% endif %}/admin/github-actions/managing-access-to-actions-from-githubcom/manually-syncing-actions-from-githubcom)"{% ifversion ghec or ghae %} in the {% data variables.product.prodname_ghe_server %} documentation{% endif %} - - "[AUTOTITLE]({% ifversion ghec or ghae %}/enterprise-server@latest{% endif %}/admin/github-actions/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect)"{% ifversion ghec or ghae %} in the {% data variables.product.prodname_ghe_server %} documentation{% endif %} + - "[AUTOTITLE]({% ifversion ghec %}/enterprise-server@latest{% endif %}/admin/github-actions/managing-access-to-actions-from-githubcom/manually-syncing-actions-from-githubcom)"{% ifversion ghec %} in the {% data variables.product.prodname_ghe_server %} documentation{% endif %} + - "[AUTOTITLE]({% ifversion ghec %}/enterprise-server@latest{% endif %}/admin/github-actions/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect)"{% ifversion ghec %} in the {% data variables.product.prodname_ghe_server %} documentation{% endif %} -- You can customize the software available on your self-hosted runner machines, or configure your runners to run software similar to {% data variables.product.company_short %}-hosted runners{% ifversion ghes or ghae %} available for customers using {% data variables.product.prodname_dotcom_the_website %}{% endif %}. The software that powers runner machines for {% data variables.product.prodname_actions %} is open source. For more information, see the [`actions/runner`](https://github.com/actions/runner) and [`actions/runner-images`](https://github.com/actions/runner-images) repositories. +- You can customize the software available on your self-hosted runner machines, or configure your runners to run software similar to {% data variables.product.company_short %}-hosted runners{% ifversion ghes %} available for customers using {% data variables.product.prodname_dotcom_the_website %}{% endif %}. The software that powers runner machines for {% data variables.product.prodname_actions %} is open source. For more information, see the [`actions/runner`](https://github.com/actions/runner) and [`actions/runner-images`](https://github.com/actions/runner-images) repositories. ## Further reading From 0e14b6ec4c7f09c2ac63fa2b81d6d281c9f54ac2 Mon Sep 17 00:00:00 2001 From: Laura Coursen Date: Thu, 18 Jan 2024 09:21:48 -0600 Subject: [PATCH 07/75] Remove some GHAE versioning --- ...ting-from-gitlab-cicd-to-github-actions.md | 3 +- .../using-secrets-in-github-actions.md | 3 +- ...izing-user-messages-for-your-enterprise.md | 11 ++++--- .../audit-log-events-for-your-enterprise.md | 1 - .../index.md | 2 -- .../security-log-events.md | 3 +- ...guring-advanced-setup-for-code-scanning.md | 11 ++----- .../secret-scanning/about-secret-scanning.md | 13 ++++---- content/get-started/quickstart/github-flow.md | 3 +- .../get-started/quickstart/github-glossary.md | 3 +- .../adding-locally-hosted-code-to-github.md | 7 ++--- ...ing-the-audit-log-for-your-organization.md | 1 - .../about-github-pages.md | 9 +++--- .../enterprise-accounts/access-enterprise.md | 2 +- data/variables/product.yml | 30 +++++++++---------- data/variables/projects.yml | 8 ++--- 16 files changed, 44 insertions(+), 66 deletions(-) diff --git a/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions.md b/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions.md index 77034b113d..85f2c7e3fc 100644 --- a/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions.md +++ b/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions.md @@ -8,7 +8,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: tutorial topics: @@ -18,7 +17,7 @@ topics: - CD shortTitle: Migrate from GitLab CI/CD --- - + {% data reusables.actions.enterprise-github-hosted-runners %} ## Introduction diff --git a/content/actions/security-guides/using-secrets-in-github-actions.md b/content/actions/security-guides/using-secrets-in-github-actions.md index 923e965044..c19eddd3ee 100644 --- a/content/actions/security-guides/using-secrets-in-github-actions.md +++ b/content/actions/security-guides/using-secrets-in-github-actions.md @@ -13,10 +13,9 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' --- - + {% data reusables.actions.enterprise-github-hosted-runners %} ## About secrets diff --git a/content/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise/customizing-user-messages-for-your-enterprise.md b/content/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise/customizing-user-messages-for-your-enterprise.md index 9e84e7dd70..f1ebd49c23 100644 --- a/content/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise/customizing-user-messages-for-your-enterprise.md +++ b/content/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise/customizing-user-messages-for-your-enterprise.md @@ -11,7 +11,6 @@ intro: 'You can create custom messages that users will see on {% data variables. versions: ghec: '*' ghes: '*' - ghae: '*' type: how_to topics: - Enterprise @@ -54,24 +53,24 @@ There are several types of user messages. {% endif %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} ## Creating a custom sign out message {% data reusables.enterprise-accounts.access-enterprise %} {% data reusables.enterprise-accounts.settings-tab %} {% data reusables.enterprise-accounts.messages-tab %} -1. {% ifversion ghes or ghae %}To the right of{% else %}Under{% endif %} "Sign out page", click **Add message** or **Edit message**. +1. {% ifversion ghes %}To the right of{% else %}Under{% endif %} "Sign out page", click **Add message** or **Edit message**. ![Screenshot of the "Sign out page" section of the "Messages" settings. A button, labeled with a plus icon and "Add message," is highlighted with an orange outline.](/assets/images/enterprise/site-admin-settings/sign-out-add-message-button.png) 1. Under **Sign out message**, type the message you'd like users to see. -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% data reusables.enterprise_site_admin_settings.message-preview-save %}{% else %} {% data reusables.enterprise_site_admin_settings.click-preview %} 1. Review the rendered message. {% data reusables.enterprise_site_admin_settings.save-changes %}{% endif %}{% endif %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} ## Creating a mandatory message @@ -114,7 +113,7 @@ You can set a global announcement banner to be displayed to all users at the top {% ifversion custom-banner-messages %} You can also create announcement banners at the organization level. For more information, see "[AUTOTITLE](/organizations/managing-organization-settings/creating-an-announcement-banner-for-your-organization)."{% endif %} -{% ifversion ghae or ghes %} +{% ifversion ghes %} You can also set an announcement banner{% ifversion ghes %} in the administrative shell using a command line utility or{% endif %} using the API. For more information, see {% ifversion ghes %}"[AUTOTITLE](/admin/configuration/configuring-your-enterprise/command-line-utilities#ghe-announce)" and {% endif %}"[AUTOTITLE](/rest/enterprise-admin#announcements)." {% endif %} diff --git a/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise.md b/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise.md index c1ae4548f9..bc93bf36da 100644 --- a/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise.md +++ b/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise.md @@ -12,7 +12,6 @@ redirect_from: versions: ghec: '*' ghes: '*' - ghae: '*' type: reference topics: - Auditing diff --git a/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/index.md b/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/index.md index b820feece5..04025994cd 100644 --- a/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/index.md +++ b/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/index.md @@ -5,7 +5,6 @@ shortTitle: Review audit logs versions: ghec: '*' ghes: '*' - ghae: '*' topics: - Enterprise children: @@ -20,4 +19,3 @@ children: - /using-the-audit-log-api-for-your-enterprise - /audit-log-events-for-your-enterprise --- - diff --git a/content/authentication/keeping-your-account-and-data-secure/security-log-events.md b/content/authentication/keeping-your-account-and-data-secure/security-log-events.md index 1c0dc010b8..7811bff29d 100644 --- a/content/authentication/keeping-your-account-and-data-secure/security-log-events.md +++ b/content/authentication/keeping-your-account-and-data-secure/security-log-events.md @@ -4,7 +4,6 @@ intro: Learn about security log events recorded for your personal account. versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - Identity @@ -15,7 +14,7 @@ topics: {% ifversion ghes %}**Notes**: - This article contains the events available in the latest version of {% data variables.product.prodname_ghe_server %}. Some of the events may not be available in previous versions. --{% else %}**Note:**{% endif %} This article contains the events that may appear in your user account's security log. For the events that can appear in an organization's audit log{% ifversion ghec or ghes or ghae %} or the audit log for an enterprise{% endif %}, see "[AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/audit-log-events-for-your-organization){% ifversion ghec or ghes or ghae %}" and "[AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise)."{% else %}."{% endif %} +-{% else %}**Note:**{% endif %} This article contains the events that may appear in your user account's security log. For the events that can appear in an organization's audit log{% ifversion ghec or ghes %} or the audit log for an enterprise{% endif %}, see "[AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/audit-log-events-for-your-organization){% ifversion ghec or ghes %}" and "[AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise)."{% else %}."{% endif %} {% endnote %} diff --git a/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning.md b/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning.md index 40168305f4..a8bd0bacaf 100644 --- a/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning.md +++ b/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning.md @@ -9,7 +9,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: how_to topics: @@ -47,15 +46,9 @@ Your repository is eligible for {% ifversion code-scanning-without-workflow %}ad - it uses {% data variables.product.prodname_codeql %}-supported languages or you plan to generate code scanning results with a third-party tool. - {% data variables.product.prodname_actions %} are enabled.{% ifversion fpt %} - it is publicly visible.{%- elsif ghec %} -- it is publicly visible, or {% data variables.product.prodname_GH_advanced_security %} is enabled.{%- elsif ghes or ghae %} +- it is publicly visible, or {% data variables.product.prodname_GH_advanced_security %} is enabled.{%- elsif ghes %} - {% data variables.product.prodname_GH_advanced_security %} is enabled.{% endif %} -{% ifversion ghae %} -Before configuring {% data variables.product.prodname_code_scanning %} for a repository, you must ensure that there is at least one self-hosted {% data variables.product.prodname_actions %} runner available to the repository. - -Enterprise owners, organization and repository administrators can add self-hosted runners. For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners)" and "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners)." -{% endif %} - {% ifversion code-scanning-without-workflow %} ## Configuring advanced setup for a repository @@ -113,7 +106,7 @@ The `on:pull_request` and `on:push` triggers for code scanning are each useful f {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-security %} -1. To the right of "{% data variables.product.prodname_code_scanning_caps %} alerts", click **Set up {% data variables.product.prodname_code_scanning %}**.{% ifversion ghec or ghes or ghae %} If "{% data variables.product.prodname_code_scanning %} alerts" is missing, you need to ask an organization owner or repository administrator to enable {% data variables.product.prodname_GH_advanced_security %}.{% endif %} For more information, see "[AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization)" or "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository)." +1. To the right of "{% data variables.product.prodname_code_scanning_caps %} alerts", click **Set up {% data variables.product.prodname_code_scanning %}**.{% ifversion ghec or ghes %} If "{% data variables.product.prodname_code_scanning %} alerts" is missing, you need to ask an organization owner or repository administrator to enable {% data variables.product.prodname_GH_advanced_security %}.{% endif %} For more information, see "[AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization)" or "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository)." 1. Under "Get started with {% data variables.product.prodname_code_scanning %}", click **Set up this workflow** on the {% data variables.code-scanning.codeql_workflow %} or on a third-party workflow. Workflows are only displayed if they are relevant for the programming languages detected in the repository. The {% data variables.code-scanning.codeql_workflow %} is always displayed, but the "Set up this workflow" button is only enabled if {% data variables.product.prodname_codeql %} analysis supports the languages present in the repository. diff --git a/content/code-security/secret-scanning/about-secret-scanning.md b/content/code-security/secret-scanning/about-secret-scanning.md index 32df506d3c..7f85155651 100644 --- a/content/code-security/secret-scanning/about-secret-scanning.md +++ b/content/code-security/secret-scanning/about-secret-scanning.md @@ -11,7 +11,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: overview topics: @@ -26,7 +25,7 @@ topics: If your project communicates with an external service, you might use a token or private key for authentication. Tokens and private keys are examples of secrets that a service provider can issue. If you check a secret into a repository, anyone who has read access to the repository can use the secret to access the external service with your privileges. We recommend that you store secrets in a dedicated, secure location outside of the repository for your project. -{% data variables.product.prodname_secret_scanning_caps %} will scan your entire Git history on all branches present in your {% data variables.product.prodname_dotcom %} repository for secrets{% ifversion ghec or ghes or ghae %}, even if the repository is archived{% endif %}.{% ifversion ghes < 3.11 %} {% data variables.product.prodname_secret_scanning_caps %} does not scan issues.{% endif %} +{% data variables.product.prodname_secret_scanning_caps %} will scan your entire Git history on all branches present in your {% data variables.product.prodname_dotcom %} repository for secrets{% ifversion ghec or ghes %}, even if the repository is archived{% endif %}.{% ifversion ghes < 3.11 %} {% data variables.product.prodname_secret_scanning_caps %} does not scan issues.{% endif %} {% data reusables.secret-scanning.what-is-scanned %} @@ -73,13 +72,13 @@ You cannot change the configuration of {% data variables.product.prodname_secret {% endif %} -## About {% data variables.secret-scanning.user_alerts %}{% ifversion ghes or ghae %} on {% data variables.product.product_name %}{% endif %} +## About {% data variables.secret-scanning.user_alerts %}{% ifversion ghes %} on {% data variables.product.product_name %}{% endif %} -{% ifversion ghes or ghae %}{% data variables.secret-scanning.user_alerts_caps %} is available on all organization-owned repositories as part of {% data variables.product.prodname_GH_advanced_security %}. The feature is not available on user-owned repositories.{% endif %}{% ifversion fpt or ghec %}{% data variables.secret-scanning.user_alerts_caps %} are available for free on all public repositories{% endif %}{% ifversion fpt %}.{% endif %}{%ifversion ghec %}, and for private and internal repositories that are owned by organizations using {% data variables.product.prodname_ghe_cloud %} with a license for {% data variables.product.prodname_GH_advanced_security %}.{% endif %} When you enable {% data variables.product.prodname_secret_scanning %} for a repository, {% data variables.product.prodname_dotcom %} scans the code for patterns that match secrets used by many service providers. {% ifversion secret-scanning-backfill-email %}When the scan is completed, {% data variables.product.prodname_dotcom %} sends an email alert to the enterprise and organization owners, even if no secrets were found.{% endif %} For more information about the repository content that is scanned, see "[About {% data variables.product.prodname_secret_scanning %}](#about--data-variablesproductprodname_secret_scanning)" above. +{% ifversion ghes %}{% data variables.secret-scanning.user_alerts_caps %} is available on all organization-owned repositories as part of {% data variables.product.prodname_GH_advanced_security %}. The feature is not available on user-owned repositories.{% endif %}{% ifversion fpt or ghec %}{% data variables.secret-scanning.user_alerts_caps %} are available for free on all public repositories{% endif %}{% ifversion fpt %}.{% endif %}{%ifversion ghec %}, and for private and internal repositories that are owned by organizations using {% data variables.product.prodname_ghe_cloud %} with a license for {% data variables.product.prodname_GH_advanced_security %}.{% endif %} When you enable {% data variables.product.prodname_secret_scanning %} for a repository, {% data variables.product.prodname_dotcom %} scans the code for patterns that match secrets used by many service providers. {% ifversion secret-scanning-backfill-email %}When the scan is completed, {% data variables.product.prodname_dotcom %} sends an email alert to the enterprise and organization owners, even if no secrets were found.{% endif %} For more information about the repository content that is scanned, see "[About {% data variables.product.prodname_secret_scanning %}](#about--data-variablesproductprodname_secret_scanning)" above. When a supported secret is leaked, {% data variables.product.product_name %} generates a {% data variables.product.prodname_secret_scanning %} alert. {% ifversion secret-scanning-backfills %}{% data variables.product.prodname_dotcom %} will also periodically run a full git history scan of existing content in {% ifversion fpt %}public{% else %}{% data variables.product.prodname_GH_advanced_security %}{% endif %} repositories where {% data variables.product.prodname_secret_scanning %} is enabled, and send alert notifications following the {% data variables.product.prodname_secret_scanning %} alert notification settings.{% endif %}{% ifversion secret-scanning-non-provider-patterns %} User alerts can be of two types: high confidence alerts, or non-provider alerts.{% endif %} For more information, see "{% ifversion fpt or ghec %}[About user alerts](/code-security/secret-scanning/secret-scanning-patterns#about-user--alerts){% else %}[{% data variables.product.prodname_secret_scanning_caps %} patterns](/code-security/secret-scanning/secret-scanning-patterns#about-user-secret-scanning-alerts){% endif %}." -If you're a repository administrator, you can enable {% data variables.secret-scanning.user_alerts %} for any {% ifversion fpt %}public{% endif %} repository{% ifversion ghec or ghes or ghae %}, including archived repositories{% endif %}. Organization owners can also enable {% data variables.secret-scanning.user_alerts %} for all {% ifversion fpt %}public {% endif %}repositories or for all new {% ifversion fpt %}public {% endif %}repositories within an organization. For more information, see "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository)" and "[AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization)." +If you're a repository administrator, you can enable {% data variables.secret-scanning.user_alerts %} for any {% ifversion fpt %}public{% endif %} repository{% ifversion ghec or ghes %}, including archived repositories{% endif %}. Organization owners can also enable {% data variables.secret-scanning.user_alerts %} for all {% ifversion fpt %}public {% endif %}repositories or for all new {% ifversion fpt %}public {% endif %}repositories within an organization. For more information, see "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository)" and "[AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization)." You can also define custom {% data variables.product.prodname_secret_scanning %} patterns for a repository, organization, or enterprise. For more information, see "[AUTOTITLE]({% ifversion fpt %}/enterprise-cloud@latest{% endif %}/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning){% ifversion fpt %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}."{% endif %} @@ -88,7 +87,7 @@ You can also define custom {% data variables.product.prodname_secret_scanning %} ### Accessing {% data variables.secret-scanning.alerts %} -When you enable {% data variables.product.prodname_secret_scanning %} for a repository or push commits to a repository with {% data variables.product.prodname_secret_scanning %} enabled, {% data variables.product.prodname_dotcom %} scans the contents for secrets that match patterns defined by service providers{% ifversion ghes or ghae or ghec %} and any custom patterns defined in your enterprise, organization, or repository{% endif %}. +When you enable {% data variables.product.prodname_secret_scanning %} for a repository or push commits to a repository with {% data variables.product.prodname_secret_scanning %} enabled, {% data variables.product.prodname_dotcom %} scans the contents for secrets that match patterns defined by service providers{% ifversion ghes or ghec %} and any custom patterns defined in your enterprise, organization, or repository{% endif %}. When {% data variables.product.prodname_secret_scanning %} detects a secret, {% data variables.product.prodname_dotcom %} generates an alert. @@ -104,7 +103,7 @@ For more information on how to configure notifications for {% data variables.sec Repository administrators and organization owners can grant users and teams access to {% data variables.secret-scanning.alerts %}. For more information, see "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository#granting-access-to-security-alerts)." -{% ifversion ghec or ghes or ghae > 3.4 %} +{% ifversion ghec or ghes %} You can use security overview to see an organization-level view of which repositories have enabled {% data variables.product.prodname_secret_scanning %} and the alerts found. For more information, see "[AUTOTITLE](/code-security/security-overview/about-security-overview)." {% endif %} diff --git a/content/get-started/quickstart/github-flow.md b/content/get-started/quickstart/github-flow.md index 3d6a943855..90cc0d6e41 100644 --- a/content/get-started/quickstart/github-flow.md +++ b/content/get-started/quickstart/github-flow.md @@ -11,7 +11,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - Pull requests @@ -23,7 +22,7 @@ topics: ## Prerequisites -To follow {% data variables.product.prodname_dotcom %} flow, you will need a {% data variables.product.prodname_dotcom %} account and a repository. {% ifversion fpt or ghec %}For information on how to create an account, see "[AUTOTITLE](/get-started/quickstart/creating-an-account-on-github)."{% elsif ghes or ghae %}For more information, contact your site administrator.{% endif %} For information on how to create a repository, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/quickstart-for-repositories)."{% ifversion fpt or ghec %} For information on how to find an existing repository to contribute to, see "[AUTOTITLE](/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github)."{% endif %} +To follow {% data variables.product.prodname_dotcom %} flow, you will need a {% data variables.product.prodname_dotcom %} account and a repository. {% ifversion fpt or ghec %}For information on how to create an account, see "[AUTOTITLE](/get-started/quickstart/creating-an-account-on-github)."{% elsif ghes %}For more information, contact your site administrator.{% endif %} For information on how to create a repository, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/quickstart-for-repositories)."{% ifversion fpt or ghec %} For information on how to find an existing repository to contribute to, see "[AUTOTITLE](/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github)."{% endif %} ## Following {% data variables.product.prodname_dotcom %} flow diff --git a/content/get-started/quickstart/github-glossary.md b/content/get-started/quickstart/github-glossary.md index 15ca5b9094..c00c032ebf 100644 --- a/content/get-started/quickstart/github-glossary.md +++ b/content/get-started/quickstart/github-glossary.md @@ -8,7 +8,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' --- {% for glossary in glossaries %} @@ -16,7 +15,7 @@ versions: ## {{ glossary.term }} {{ glossary.description }} - + {% endfor %} --- diff --git a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/adding-locally-hosted-code-to-github.md b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/adding-locally-hosted-code-to-github.md index 7d8ceeda77..7acda639e1 100644 --- a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/adding-locally-hosted-code-to-github.md +++ b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/adding-locally-hosted-code-to-github.md @@ -11,7 +11,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' shortTitle: Local code --- @@ -92,7 +91,7 @@ Before you can add your local repository to {% data variables.product.prodname_d {% mac %} {% data reusables.migrations.create-empty-repo %} -1. At the top of your repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}'s Quick Setup page, click {% octicon "copy" aria-label="Copy to clipboard" %} to copy the remote repository URL. +1. At the top of your repository on {% data variables.location.product_location %}'s Quick Setup page, click {% octicon "copy" aria-label="Copy to clipboard" %} to copy the remote repository URL. ![Screenshot of the "Quick Setup" header in a repository. Next to the remote URL, an icon of two overlapping squares is highlighted with an orange outline.](/assets/images/help/repository/copy-remote-repository-url-quick-setup.png) @@ -124,7 +123,7 @@ Before you can add your local repository to {% data variables.product.prodname_d {% windows %} {% data reusables.migrations.create-empty-repo %} -1. At the top of your repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}'s Quick Setup page, click {% octicon "copy" aria-label="Copy to clipboard" %} to copy the remote repository URL. +1. At the top of your repository on {% data variables.location.product_location %}'s Quick Setup page, click {% octicon "copy" aria-label="Copy to clipboard" %} to copy the remote repository URL. ![Screenshot of the "Quick Setup" header in a repository. Next to the remote URL, an icon of two overlapping squares is highlighted with an orange outline.](/assets/images/help/repository/copy-remote-repository-url-quick-setup.png) {% data reusables.command_line.open_the_multi_os_terminal %} @@ -155,7 +154,7 @@ Before you can add your local repository to {% data variables.product.prodname_d {% linux %} {% data reusables.migrations.create-empty-repo %} -1. At the top of your repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}'s Quick Setup page, click {% octicon "copy" aria-label="Copy to clipboard" %} to copy the remote repository URL. +1. At the top of your repository on {% data variables.location.product_location %}'s Quick Setup page, click {% octicon "copy" aria-label="Copy to clipboard" %} to copy the remote repository URL. ![Screenshot of the "Quick Setup" header in a repository. Next to the remote URL, an icon of two overlapping squares is highlighted with an orange outline.](/assets/images/help/repository/copy-remote-repository-url-quick-setup.png) {% data reusables.command_line.open_the_multi_os_terminal %} diff --git a/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization.md b/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization.md index bc01d164be..6dc7240073 100644 --- a/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization.md +++ b/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization.md @@ -8,7 +8,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - Organizations diff --git a/content/pages/getting-started-with-github-pages/about-github-pages.md b/content/pages/getting-started-with-github-pages/about-github-pages.md index f6512a1217..bc7698e536 100644 --- a/content/pages/getting-started-with-github-pages/about-github-pages.md +++ b/content/pages/getting-started-with-github-pages/about-github-pages.md @@ -1,6 +1,6 @@ --- title: About GitHub Pages -intro: 'You can use {% data variables.product.prodname_pages %} to host a website about yourself, your organization, or your project directly from a repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}.' +intro: 'You can use {% data variables.product.prodname_pages %} to host a website about yourself, your organization, or your project directly from a repository on {% data variables.location.product_location %}.' redirect_from: - /articles/what-are-github-pages - /articles/what-is-github-pages @@ -14,7 +14,6 @@ product: '{% data reusables.gated-features.pages %}' versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - Pages @@ -40,11 +39,11 @@ Organization owners can disable the publication of {% data variables.product.pro ## Types of {% data variables.product.prodname_pages %} sites -There are three types of {% data variables.product.prodname_pages %} sites: project, user, and organization. Project sites are connected to a specific project hosted on {% data variables.product.product_name %}, such as a JavaScript library or a recipe collection. User and organization sites are connected to a specific account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. +There are three types of {% data variables.product.prodname_pages %} sites: project, user, and organization. Project sites are connected to a specific project hosted on {% data variables.product.product_name %}, such as a JavaScript library or a recipe collection. User and organization sites are connected to a specific account on {% data variables.location.product_location %}. -To publish a user site, you must create a repository owned by your personal account that's named {% ifversion fpt or ghec %}`.github.io`{% else %}`.`{% endif %}. To publish an organization site, you must create a repository owned by an organization that's named {% ifversion fpt or ghec %}`.github.io`{% else %}`.`{% endif %}. {% ifversion fpt or ghec %}Unless you're using a custom domain, user and organization sites are available at `http(s)://.github.io` or `http(s)://.github.io`.{% elsif ghae %}User and organization sites are available at `http(s)://pages./` or `http(s)://pages./`.{% endif %} +To publish a user site, you must create a repository owned by your personal account that's named {% ifversion fpt or ghec %}`.github.io`{% else %}`.`{% endif %}. To publish an organization site, you must create a repository owned by an organization that's named {% ifversion fpt or ghec %}`.github.io`{% else %}`.`{% endif %}. {% ifversion fpt or ghec %}Unless you're using a custom domain, user and organization sites are available at `http(s)://.github.io` or `http(s)://.github.io`.{% endif %} -The source files for a project site are stored in the same repository as their project. {% ifversion fpt or ghec %}Unless you're using a custom domain, project sites are available at `http(s)://.github.io/` or `http(s)://.github.io/`.{% elsif ghae %}Project sites are available at `http(s)://pages.///` or `http(s)://pages.///`.{% endif %} +The source files for a project site are stored in the same repository as their project. {% ifversion fpt or ghec %}Unless you're using a custom domain, project sites are available at `http(s)://.github.io/` or `http(s)://.github.io/`.{% endif %} {% ifversion ghec %} If you publish your site privately, the URL for your site will be different. For more information, see "[AUTOTITLE](/pages/getting-started-with-github-pages/changing-the-visibility-of-your-github-pages-site)." diff --git a/data/reusables/enterprise-accounts/access-enterprise.md b/data/reusables/enterprise-accounts/access-enterprise.md index 4e00ef33fa..281297cf90 100644 --- a/data/reusables/enterprise-accounts/access-enterprise.md +++ b/data/reusables/enterprise-accounts/access-enterprise.md @@ -3,6 +3,6 @@ 1. In the list of enterprises, click the enterprise you want to view. -{%- elsif ghes or ghae %} +{%- elsif ghes %} {% data reusables.enterprise-accounts.access-enterprise-ghes %} {%- endif %} diff --git a/data/variables/product.yml b/data/variables/product.yml index 72a28295ae..c8d65b5620 100644 --- a/data/variables/product.yml +++ b/data/variables/product.yml @@ -89,18 +89,18 @@ prodname_codeql_cli: 'CodeQL CLI' # CodeQL usually bumps its minor version for each minor version of GHES. # Update this whenever a new enterprise version of CodeQL is being prepared. codeql_cli_ghes_recommended_version: >- - {% ifversion ghes < 3.10 or ghae < 3.10 %}2.12.7{% elsif ghes < 3.11 %}2.13.5{% elsif ghes < 3.12 %}2.14.6{% endif %} + {% ifversion ghes < 3.10 %}2.12.7{% elsif ghes < 3.11 %}2.13.5{% elsif ghes < 3.12 %}2.14.6{% endif %} # Projects v2 prodname_projects_v2: '{% ifversion ghes = 3.8 or ghes = 3.9 %}Projects (beta){% else %}Projects{% endif %}' prodname_projects_v1: >- - {% ifversion ghes < 3.8 or ghae %}project boards{% else %}projects (classic){% endif %} + {% ifversion ghes < 3.8 %}project boards{% else %}projects (classic){% endif %} prodname_projects_v1_caps: >- - {% ifversion ghes < 3.8 or ghae %}Project boards{% else %}Projects (classic){% endif %} + {% ifversion ghes < 3.8 %}Project boards{% else %}Projects (classic){% endif %} prodname_project_v1: >- - {% ifversion ghes < 3.8 or ghae %}project board{% else %}project (classic){% endif %} + {% ifversion ghes < 3.8 %}project board{% else %}project (classic){% endif %} prodname_project_v1_caps: >- - {% ifversion ghes < 3.8 or ghae %}Project board{% else %}Project (classic){% endif %} + {% ifversion ghes < 3.8 %}Project board{% else %}Project (classic){% endif %} # Personal access tokens pat_generic: 'personal access token' @@ -128,7 +128,7 @@ prodname_oauth_app: 'OAuth app' prodname_oauth_apps: 'OAuth apps' # API and developer docs -prodname_enterprise_api: '{% ifversion ghes %}GitHub Enterprise Server{% elsif ghae %}GitHub AE{% endif %} APIs' +prodname_enterprise_api: 'GitHub Enterprise Server APIs' prodname_unfurls: 'Content Attachments' # GitHub Actions @@ -155,8 +155,8 @@ prodname_github_issues: 'GitHub Issues' prodname_registry: 'GitHub Packages' prodname_container_registry: 'Container registry' prodname_container_registries: 'Container registries' -prodname_docker_registry_namespace: '{% ifversion fpt or ghec %}`docker.pkg.github.com`{% elsif ghes or ghae %}docker.HOSTNAME{% endif %}' -prodname_container_registry_namespace: '{% ifversion fpt or ghec %}`ghcr.io`{% elsif ghes or ghae %}containers.HOSTNAME{% endif %}' +prodname_docker_registry_namespace: '{% ifversion fpt or ghec %}`docker.pkg.github.com`{% elsif ghes %}docker.HOSTNAME{% endif %}' +prodname_container_registry_namespace: '{% ifversion fpt or ghec %}`ghcr.io`{% elsif ghes %}containers.HOSTNAME{% endif %}' prodname_npm_registry: 'npm registry' # GitHub Insights @@ -207,7 +207,7 @@ prodname_security_advisories: 'GitHub Security Advisories' prodname_advisory_database: 'GitHub Advisory Database' # Secret scanning -prodname_secret_scanning: 'secret scanning' # Overall feature name and name for GHES and GHAE +prodname_secret_scanning: 'secret scanning' # Overall feature name and name for GHES prodname_secret_scanning_caps: 'Secret scanning' # Code scanning @@ -284,10 +284,10 @@ current-340-version: '11.10.354' # Developer site product variables # Use this inside command-line and other code blocks doc_url_pre: >- - {% ifversion fpt or ghec %}https://docs.github.com/rest{% elsif ghes %}https://docs.github.com/enterprise/{{ currentVersion | version_num }}/rest{% elsif ghae %}https://docs.github.com/github-ae@latest/rest{% endif %} + {% ifversion fpt or ghec %}https://docs.github.com/rest{% elsif ghes %}https://docs.github.com/enterprise/{{ currentVersion | version_num }}/rest{% endif %} # Use this inside command-line code blocks api_url_pre: >- - {% ifversion fpt or ghec %}https://api.github.com{% elsif ghes %}http(s)://HOSTNAME/api/v3{% elsif ghae %}https://HOSTNAME/api/v3{% endif %} + {% ifversion fpt or ghec %}https://api.github.com{% elsif ghes %}http(s)://HOSTNAME/api/v3{% endif %} # Use this inside command-line code blocks # Enterprise OAuth paths that don't include "/graphql" or "/api/v3" oauth_host_code: >- @@ -297,15 +297,13 @@ device_authorization_url: >- [`https://github.com/login/device`](https://github.com/login/device) {%- elsif ghes %} `http(s)://HOSTNAME/login/device` - {%- elsif ghae %} - `https://HOSTNAME/login/device` {%- endif %} # Use this all other code blocks api_url_code: >- - {% ifversion fpt or ghec %}https://api.github.com{% elsif ghes %}http(s)://HOSTNAME/api/v3{% elsif ghae %}https://HOSTNAME/api/v3{% endif %} + {% ifversion fpt or ghec %}https://api.github.com{% elsif ghes %}http(s)://HOSTNAME/api/v3{% endif %} # Use this inside command-line code blocks graphql_url_pre: >- - {% ifversion fpt or ghec %}https://api.github.com/graphql{% elsif ghes %}http(s)://HOSTNAME/api/graphql{% elsif ghae %}https://HOSTNAME/api/graphql{% endif %} + {% ifversion fpt or ghec %}https://api.github.com/graphql{% elsif ghes %}http(s)://HOSTNAME/api/graphql{% endif %} # Use this all other code blocks graphql_url_code: >- - {% ifversion fpt or ghec %}https://api.github.com/graphql{% elsif ghes %}http(s)://HOSTNAME/api/graphql{% elsif ghae %}https://HOSTNAME/api/graphql{% endif %} + {% ifversion fpt or ghec %}https://api.github.com/graphql{% elsif ghes %}http(s)://HOSTNAME/api/graphql{% endif %} diff --git a/data/variables/projects.yml b/data/variables/projects.yml index a62d70d0f3..3bc861b47a 100644 --- a/data/variables/projects.yml +++ b/data/variables/projects.yml @@ -4,13 +4,13 @@ project_v2: 'project' project_v2_caps: 'Project' projects_v1_board: >- - {% ifversion ghes < 3.8 or ghae %}project board{% else %}classic project{% endif %} + {% ifversion ghes < 3.8 %}project board{% else %}classic project{% endif %} projects_v1_board_caps: >- - {% ifversion ghes < 3.8 or ghae %}Project board{% else %}Classic project{% endif %} + {% ifversion ghes < 3.8 %}Project board{% else %}Classic project{% endif %} projects_v1_boards: >- - {% ifversion ghes < 3.8 or ghae %}project boards{% else %}classic projects{% endif %} + {% ifversion ghes < 3.8 %}project boards{% else %}classic projects{% endif %} projects_v1_boards_caps: >- - {% ifversion ghes < 3.8 or ghae %}Project boards{% else %}Classic projects{% endif %} + {% ifversion ghes < 3.8 %}Project boards{% else %}Classic projects{% endif %} command-palette-shortcut: 'Command+K (Mac) or Ctrl+K (Windows/Linux)' From c6cb416077e1c2d4a12a3828a8e9d3991a615ccc Mon Sep 17 00:00:00 2001 From: Laura Coursen Date: Thu, 18 Jan 2024 09:32:43 -0600 Subject: [PATCH 08/75] Remove AE from product.yml --- data/variables/product.yml | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/data/variables/product.yml b/data/variables/product.yml index 937972fa78..3ff449c43a 100644 --- a/data/variables/product.yml +++ b/data/variables/product.yml @@ -8,7 +8,7 @@ company_short: 'GitHub' # GitHub's flagship products product_name: >- - {% ifversion ghec %}GitHub Enterprise Cloud{% elsif ghes %}GitHub Enterprise Server{% elsif ghae %}GitHub AE{% else %}GitHub{% endif %} + {% ifversion ghec %}GitHub Enterprise Cloud{% elsif ghes %}GitHub Enterprise Server{% else %}GitHub{% endif %} ## Use this variable when referring to the product, when the output should always be GitHub. For example, "the GitHub REST API" prodname_dotcom: 'GitHub' @@ -89,18 +89,18 @@ prodname_codeql_cli: 'CodeQL CLI' # CodeQL usually bumps its minor version for each minor version of GHES. # Update this whenever a new enterprise version of CodeQL is being prepared. codeql_cli_ghes_recommended_version: >- - {% ifversion ghes < 3.10 or ghae < 3.10 %}2.12.7{% elsif ghes < 3.11 %}2.13.5{% elsif ghes < 3.12 %}2.14.6{% endif %} + {% ifversion ghes < 3.10 %}2.12.7{% elsif ghes < 3.11 %}2.13.5{% elsif ghes < 3.12 %}2.14.6{% endif %} # Projects v2 prodname_projects_v2: '{% ifversion ghes = 3.8 or ghes = 3.9 %}Projects (beta){% else %}Projects{% endif %}' prodname_projects_v1: >- - {% ifversion ghae %}project boards{% else %}projects (classic){% endif %} + projects (classic) prodname_projects_v1_caps: >- - {% ifversion ghae %}Project boards{% else %}Projects (classic){% endif %} + {% else %}Projects (classic) prodname_project_v1: >- - {% ifversion ghae %}project board{% else %}project (classic){% endif %} + project (classic) prodname_project_v1_caps: >- - {% ifversion ghae %}Project board{% else %}Project (classic){% endif %} + Project (classic) # Personal access tokens pat_generic: 'personal access token' @@ -128,7 +128,7 @@ prodname_oauth_app: 'OAuth app' prodname_oauth_apps: 'OAuth apps' # API and developer docs -prodname_enterprise_api: '{% ifversion ghes %}GitHub Enterprise Server{% elsif ghae %}GitHub AE{% endif %} APIs' +prodname_enterprise_api: 'GitHub Enterprise Server APIs' prodname_unfurls: 'Content Attachments' # GitHub Actions @@ -155,8 +155,8 @@ prodname_github_issues: 'GitHub Issues' prodname_registry: 'GitHub Packages' prodname_container_registry: 'Container registry' prodname_container_registries: 'Container registries' -prodname_docker_registry_namespace: '{% ifversion fpt or ghec %}`docker.pkg.github.com`{% elsif ghes or ghae %}docker.HOSTNAME{% endif %}' -prodname_container_registry_namespace: '{% ifversion fpt or ghec %}`ghcr.io`{% elsif ghes or ghae %}containers.HOSTNAME{% endif %}' +prodname_docker_registry_namespace: '{% ifversion fpt or ghec %}`docker.pkg.github.com`{% elsif ghes %}docker.HOSTNAME{% endif %}' +prodname_container_registry_namespace: '{% ifversion fpt or ghec %}`ghcr.io`{% elsif ghes %}containers.HOSTNAME{% endif %}' prodname_npm_registry: 'npm registry' # GitHub Insights @@ -207,7 +207,7 @@ prodname_security_advisories: 'GitHub Security Advisories' prodname_advisory_database: 'GitHub Advisory Database' # Secret scanning -prodname_secret_scanning: 'secret scanning' # Overall feature name and name for GHES and GHAE +prodname_secret_scanning: 'secret scanning' # Overall feature name and name for GHES prodname_secret_scanning_caps: 'Secret scanning' # Code scanning @@ -284,10 +284,10 @@ current-340-version: '11.10.354' # Developer site product variables # Use this inside command-line and other code blocks doc_url_pre: >- - {% ifversion fpt or ghec %}https://docs.github.com/rest{% elsif ghes %}https://docs.github.com/enterprise/{{ currentVersion | version_num }}/rest{% elsif ghae %}https://docs.github.com/github-ae@latest/rest{% endif %} + {% ifversion fpt or ghec %}https://docs.github.com/rest{% elsif ghes %}https://docs.github.com/enterprise/{{ currentVersion | version_num }}/rest{% endif %} # Use this inside command-line code blocks api_url_pre: >- - {% ifversion fpt or ghec %}https://api.github.com{% elsif ghes %}http(s)://HOSTNAME/api/v3{% elsif ghae %}https://HOSTNAME/api/v3{% endif %} + {% ifversion fpt or ghec %}https://api.github.com{% elsif ghes %}http(s)://HOSTNAME/api/v3{% endif %} # Use this inside command-line code blocks # Enterprise OAuth paths that don't include "/graphql" or "/api/v3" oauth_host_code: >- @@ -297,15 +297,13 @@ device_authorization_url: >- [`https://github.com/login/device`](https://github.com/login/device) {%- elsif ghes %} `http(s)://HOSTNAME/login/device` - {%- elsif ghae %} - `https://HOSTNAME/login/device` {%- endif %} # Use this all other code blocks api_url_code: >- - {% ifversion fpt or ghec %}https://api.github.com{% elsif ghes %}http(s)://HOSTNAME/api/v3{% elsif ghae %}https://HOSTNAME/api/v3{% endif %} + {% ifversion fpt or ghec %}https://api.github.com{% elsif ghes %}http(s)://HOSTNAME/api/v3{% endif %} # Use this inside command-line code blocks graphql_url_pre: >- - {% ifversion fpt or ghec %}https://api.github.com/graphql{% elsif ghes %}http(s)://HOSTNAME/api/graphql{% elsif ghae %}https://HOSTNAME/api/graphql{% endif %} + {% ifversion fpt or ghec %}https://api.github.com/graphql{% elsif ghes %}http(s)://HOSTNAME/api/graphql{% endif %} # Use this all other code blocks graphql_url_code: >- - {% ifversion fpt or ghec %}https://api.github.com/graphql{% elsif ghes %}http(s)://HOSTNAME/api/graphql{% elsif ghae %}https://HOSTNAME/api/graphql{% endif %} + {% ifversion fpt or ghec %}https://api.github.com/graphql{% elsif ghes %}http(s)://HOSTNAME/api/graphql{% endif %} From ea7f1c9c2e513bda9f3ee130fe5f87f936f5594c Mon Sep 17 00:00:00 2001 From: Laura Coursen Date: Thu, 18 Jan 2024 09:33:23 -0600 Subject: [PATCH 09/75] Remove AE from projects.yml --- data/variables/projects.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data/variables/projects.yml b/data/variables/projects.yml index 16bda84ec5..76613f3381 100644 --- a/data/variables/projects.yml +++ b/data/variables/projects.yml @@ -4,13 +4,13 @@ project_v2: 'project' project_v2_caps: 'Project' projects_v1_board: >- - {% ifversion ghae %}project board{% else %}classic project{% endif %} + classic project projects_v1_board_caps: >- - {% ifversion ghae %}Project board{% else %}Classic project{% endif %} + Classic project projects_v1_boards: >- - {% ifversion ghae %}project boards{% else %}classic projects{% endif %} + classic projects projects_v1_boards_caps: >- - {% ifversion ghae %}Project boards{% else %}Classic projects{% endif %} + Classic projects command-palette-shortcut: 'Command+K (Mac) or Ctrl+K (Windows/Linux)' From 8fdd20a957876a5fab6fcb74f65214a11658a3e3 Mon Sep 17 00:00:00 2001 From: Laura Coursen Date: Thu, 18 Jan 2024 09:42:33 -0600 Subject: [PATCH 10/75] Fix typo --- data/variables/product.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/variables/product.yml b/data/variables/product.yml index 3ff449c43a..4764bdf445 100644 --- a/data/variables/product.yml +++ b/data/variables/product.yml @@ -96,7 +96,7 @@ prodname_projects_v2: '{% ifversion ghes = 3.8 or ghes = 3.9 %}Projects (beta){% prodname_projects_v1: >- projects (classic) prodname_projects_v1_caps: >- - {% else %}Projects (classic) + Projects (classic) prodname_project_v1: >- project (classic) prodname_project_v1_caps: >- From 48e7c72a490ebac0fcef6e01c6fd696393850d5f Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Thu, 18 Jan 2024 16:43:57 +0100 Subject: [PATCH 11/75] [Improvement]: Get started (phase 1): Moving some articles out of Get started -> Quickstart #12380 (#47047) Co-authored-by: Peter Bengtsson --- .github/CONTRIBUTING.md | 4 ++-- .github/workflows/sync-search-pr.yml | 1 + ...contributions-not-showing-up-on-my-profile.md | 2 +- .../releasing-and-maintaining-actions.md | 4 ++-- .../using-markdown-and-liquid-in-github-docs.md | 16 ++++++++-------- .../contributing-to-a-project.md | 2 +- .../git-cheatsheet.md | 1 + .../getting-started-with-git/git-workflows.md | 2 +- .../getting-started-with-git/index.md | 3 ++- .../set-up-git.md | 1 + content/get-started/index.md | 2 +- .../getting-started-with-your-github-account.md | 4 ++-- content/get-started/quickstart/hello-world.md | 2 +- content/get-started/quickstart/index.md | 7 +------ content/get-started/using-git/about-git.md | 2 +- .../pushing-commits-to-a-remote-repository.md | 2 +- .../communicating-on-github.md | 1 + .../using-github/connecting-to-github.md | 6 +++--- .../{quickstart => using-github}/github-flow.md | 1 + content/get-started/using-github/index.md | 3 ++- .../quickstart-for-writing-on-github.md | 2 +- content/index.md | 3 +-- .../about-issues.md | 2 +- ...and-tracking-work-for-your-team-or-project.md | 2 +- .../about-team-discussions.md | 2 +- .../creating-a-github-pages-site-with-jekyll.md | 2 +- .../working-with-forks/fork-a-repo.md | 7 ++++++- .../quickstart-for-repositories.md | 2 +- data/reusables/getting-started/set-up-git.md | 2 +- 29 files changed, 48 insertions(+), 42 deletions(-) rename content/get-started/{quickstart => getting-started-with-git}/git-cheatsheet.md (94%) rename content/get-started/{quickstart => getting-started-with-git}/set-up-git.md (99%) rename content/get-started/{quickstart => using-github}/communicating-on-github.md (99%) rename content/get-started/{quickstart => using-github}/github-flow.md (99%) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index c881233bec..d551eb19e1 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -13,8 +13,8 @@ Use the table of contents icon >>>>>> main:content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md - You can also create a new repository where you can put all your projects and share the code on {% data variables.product.prodname_dotcom %}. {% data reusables.getting-started.create-a-repository %}" - {% data reusables.getting-started.being-social %} diff --git a/content/repositories/creating-and-managing-repositories/quickstart-for-repositories.md b/content/repositories/creating-and-managing-repositories/quickstart-for-repositories.md index 87da8931ae..ed9118369e 100644 --- a/content/repositories/creating-and-managing-repositories/quickstart-for-repositories.md +++ b/content/repositories/creating-and-managing-repositories/quickstart-for-repositories.md @@ -119,7 +119,7 @@ You have now created a repository, including a _README_ file, and created your f {% webui %} -- You can now clone a {% data variables.product.prodname_dotcom %} repository to create a local copy on your computer. From your local repository you can commit, and create a pull request to update the changes in the upstream repository. For more information, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/cloning-a-repository)" and "[AUTOTITLE](/get-started/quickstart/set-up-git)." +- You can now clone a {% data variables.product.prodname_dotcom %} repository to create a local copy on your computer. From your local repository you can commit, and create a pull request to update the changes in the upstream repository. For more information, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/cloning-a-repository)" and "[AUTOTITLE](/get-started/getting-started-with-git/set-up-git)." {% endwebui %} diff --git a/data/reusables/getting-started/set-up-git.md b/data/reusables/getting-started/set-up-git.md index 4900b28f29..0d593bd574 100644 --- a/data/reusables/getting-started/set-up-git.md +++ b/data/reusables/getting-started/set-up-git.md @@ -1 +1 @@ -Synchronizing {% data variables.product.prodname_dotcom %} repositories with your computer allows you to work locally and push your changes to {% data variables.product.prodname_dotcom %}. For more information, see “[Set up Git](/get-started/quickstart/set-up-git).” +Synchronizing {% data variables.product.prodname_dotcom %} repositories with your computer allows you to work locally and push your changes to {% data variables.product.prodname_dotcom %}. For more information, see “[Set up Git](/get-started/getting-started-with-git/set-up-git).” From 723a72f6d6fdb0c79b41afb29661f1b176da09e0 Mon Sep 17 00:00:00 2001 From: Ethan Palm <56270045+ethanpalm@users.noreply.github.com> Date: Thu, 18 Jan 2024 08:18:43 -0800 Subject: [PATCH 12/75] Content strategy bug fix 2024-01-17 (#48743) --- .../style-guide.md | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/content/contributing/style-guide-and-content-model/style-guide.md b/content/contributing/style-guide-and-content-model/style-guide.md index bd5440546d..1e8acee16b 100644 --- a/content/contributing/style-guide-and-content-model/style-guide.md +++ b/content/contributing/style-guide-and-content-model/style-guide.md @@ -254,7 +254,29 @@ Note that regardless of the identifier you use (letters, words), footnotes will Headers must adequately describe the content under them. Headers can either follow the guidelines for writing titles or can be written as questions. Use sentence casing for headers. Each header on a page must be unique. -Use H2 for headers and H3 for subheaders. If an article has headers, the headers must start with an H2 level header and cannot skip header levels. There must be text content between a header and subheader, such as an introduction. When referring to headers, surround the header name with quotation marks. +If an article has headers, the headers must start with an H2 level header. You can use H3 and H4 level headers to further organize content into related groups, but you cannot skip header levels. There must be text content between a header and subheader, such as an introduction. +- **Use:** + + ```markdown + ## HEADER (H2) + TEXT + + ### SUBHEADER (H3) + TEXT + + #### SUBHEADER (H4) + TEXT + ``` + +- **Avoid:** + + ```markdown + ## HEADER (H2) + + #### SUBHEADER (H4) + ``` + +When referring to headers, surround the header name with quotation marks. - **Use:** Under "User licenses," view your total licenses. For more information, see the "[AUTOTITLE](/contributing/style-guide-and-content-model/contents-of-a-github-docs-article)." From c0eaf9afcca296dde598b6dd24960a235c186d72 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Thu, 18 Jan 2024 11:21:50 -0500 Subject: [PATCH 13/75] Remove GHAE in Liquid and front matter (2) (#48750) --- ...-ssh-key-and-adding-it-to-the-ssh-agent.md | 35 ++++++----------- content/rest/quickstart.md | 25 ++++++------ .../getting-started-with-the-rest-api.md | 39 +++++++++---------- 3 files changed, 43 insertions(+), 56 deletions(-) diff --git a/content/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md b/content/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md index b9c3c9b1b5..33e9e75abd 100644 --- a/content/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md +++ b/content/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md @@ -10,7 +10,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - SSH @@ -29,7 +28,7 @@ If you want to use a hardware security key to authenticate to {% data variables. ## Generating a new SSH key -You can generate a new SSH key on your local machine. After you generate the key, you can add the public key to your account on {% ifversion fpt or ghec or ghes %}{% data variables.location.product_location %}{% elsif ghae %}{% data variables.product.product_name %}{% endif %} to enable authentication for Git operations over SSH. +You can generate a new SSH key on your local machine. After you generate the key, you can add the public key to your account on {% data variables.location.product_location %} to enable authentication for Git operations over SSH. {% ifversion ghes %} @@ -41,13 +40,6 @@ If you are a site administrator for {% data variables.location.product_location {% data reusables.command_line.open_the_multi_os_terminal %} 1. Paste the text below, replacing the email used in the example with your {% data variables.product.product_name %} email address. - {%- ifversion ghae %} - - ```shell - ssh-keygen -t rsa -b 4096 -C "your_email@example.com" - ``` - - {%- else %} ```shell ssh-keygen -t ed25519 -C "your_email@example.com" @@ -62,7 +54,6 @@ If you are a site administrator for {% data variables.location.product_location ``` {% endnote %} - {%- endif %} This creates a new SSH key, using the provided email as a label. @@ -129,10 +120,10 @@ Before adding a new SSH key to the ssh-agent to manage your keys, you should hav - Open your `~/.ssh/config` file, then modify the file to contain the following lines. If your SSH key file has a different name or path than the example code, modify the filename or path to match your current setup. ```text - Host {% ifversion ghes or ghae %}HOSTNAME{% else %}github.com{% endif %} + Host {% ifversion ghes %}HOSTNAME{% else %}github.com{% endif %} AddKeysToAgent yes UseKeychain yes - IdentityFile ~/.ssh/id_{% ifversion ghae %}ecdsa{% else %}ed25519{% endif %} + IdentityFile ~/.ssh/id_ed25519 ``` {% note %} @@ -141,10 +132,10 @@ Before adding a new SSH key to the ssh-agent to manage your keys, you should hav - If you chose not to add a passphrase to your key, you should omit the `UseKeychain` line. - - If you see a `Bad configuration option: usekeychain` error, add an additional line to the configuration's' `Host *.{% ifversion ghes or ghae %}HOSTNAME{% else %}github.com{% endif %}` section. + - If you see a `Bad configuration option: usekeychain` error, add an additional line to the configuration's' `Host *.{% ifversion ghes %}HOSTNAME{% else %}github.com{% endif %}` section. ```text - Host {% ifversion ghes or ghae %}HOSTNAME{% else %}github.com{% endif %} + Host {% ifversion ghes %}HOSTNAME{% else %}github.com{% endif %} IgnoreUnknown UseKeychain ``` @@ -153,7 +144,7 @@ Before adding a new SSH key to the ssh-agent to manage your keys, you should hav 1. Add your SSH private key to the ssh-agent and store your passphrase in the keychain. {% data reusables.ssh.add-ssh-key-to-ssh-agent %} ```shell - ssh-add --apple-use-keychain ~/.ssh/id_{% ifversion ghae %}rsa{% else %}ed25519{% endif %} + ssh-add --apple-use-keychain ~/.ssh/id_ed25519 ``` {% data reusables.ssh.apple-use-keychain %} @@ -211,7 +202,7 @@ If you are using macOS or Linux, you may need to update your SSH client or insta {% mac %} ```shell - ssh-keygen -t {% ifversion ghae %}ecdsa{% else %}ed25519{% endif %}-sk -C "your_email@example.com" + ssh-keygen -t ed25519-sk -C "your_email@example.com" ``` {% endmac %} @@ -219,7 +210,7 @@ If you are using macOS or Linux, you may need to update your SSH client or insta {% windows %} ```powershell - ssh-keygen -t {% ifversion ghae %}ecdsa{% else %}ed25519{% endif %}-sk -C "your_email@example.com" + ssh-keygen -t ed25519-sk -C "your_email@example.com" ``` {% endwindows %} @@ -227,12 +218,11 @@ If you are using macOS or Linux, you may need to update your SSH client or insta {% linux %} ```shell - ssh-keygen -t {% ifversion ghae %}ecdsa{% else %}ed25519{% endif %}-sk -C "your_email@example.com" + ssh-keygen -t ed25519-sk -C "your_email@example.com" ``` {% endlinux %} - {%- ifversion not ghae %} {% note %} **Note:** If the command fails and you receive the error `invalid format` or `feature not supported,` you may be using a hardware security key that does not support the Ed25519 algorithm. Enter the following command instead. @@ -242,7 +232,6 @@ If you are using macOS or Linux, you may need to update your SSH client or insta ``` {% endnote %} - {%- endif %} 1. When you are prompted, touch the button on your hardware security key. 1. When you are prompted to "Enter a file in which to save the key," press Enter to accept the default file location. @@ -250,7 +239,7 @@ If you are using macOS or Linux, you may need to update your SSH client or insta {% mac %} ```shell - > Enter a file in which to save the key (/Users/YOU/.ssh/id_{% ifversion ghae %}ecdsa{% else %}ed25519{% endif %}_sk): [Press enter] + > Enter a file in which to save the key (/Users/YOU/.ssh/id_ed25519_sk): [Press enter] ``` {% endmac %} @@ -258,7 +247,7 @@ If you are using macOS or Linux, you may need to update your SSH client or insta {% windows %} ```shell - > Enter a file in which to save the key (c:\Users\YOU\.ssh\id_{% ifversion ghae %}ecdsa{% else %}ed25519{% endif %}_sk):[Press enter] + > Enter a file in which to save the key (c:\Users\YOU\.ssh\id_ed25519_sk):[Press enter] ``` {% endwindows %} @@ -266,7 +255,7 @@ If you are using macOS or Linux, you may need to update your SSH client or insta {% linux %} ```shell - > Enter a file in which to save the key (/home/YOU/.ssh/id_{% ifversion ghae %}ecdsa{% else %}ed25519{% endif %}_sk):[Press enter] + > Enter a file in which to save the key (/home/YOU/.ssh/id_ed25519_sk):[Press enter] ``` {% endlinux %} diff --git a/content/rest/quickstart.md b/content/rest/quickstart.md index 69f38ec7cc..99ed1b6cf5 100644 --- a/content/rest/quickstart.md +++ b/content/rest/quickstart.md @@ -5,7 +5,6 @@ allowTitleToDifferFromFilename: true versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' shortTitle: Quickstart topics: @@ -43,7 +42,7 @@ You can also use {% data variables.product.prodname_cli %} in your {% data varia Instead of using the `gh auth login` command, pass an access token as an environment variable called `GH_TOKEN`. {% data variables.product.prodname_dotcom %} recommends that you use the built-in `GITHUB_TOKEN` instead of creating a token. If this is not possible, store your token as a secret and replace `GITHUB_TOKEN` in the example below with the name of your secret. For more information about `GITHUB_TOKEN`, see "[AUTOTITLE](/actions/security-guides/automatic-token-authentication)." For more information about secrets, see "[AUTOTITLE](/actions/security-guides/encrypted-secrets)." -The following example workflow uses the "[List repository issues](/rest/issues/issues#list-repository-issues)" endpoint, and requests a list of issues in {% ifversion ghes or ghae %}a repository you specify{% else %}the `octocat/Spoon-Knife` repository{% endif %}.{% ifversion ghes or ghae %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}. Replace `REPO-OWNER` with the name of the account that owns the repository. Replace `REPO-NAME` with the name of the repository.{% endif %} +The following example workflow uses the "[List repository issues](/rest/issues/issues#list-repository-issues)" endpoint, and requests a list of issues in {% ifversion ghes %}a repository you specify{% else %}the `octocat/Spoon-Knife` repository{% endif %}.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}. Replace `REPO-OWNER` with the name of the account that owns the repository. Replace `REPO-NAME` with the name of the repository.{% endif %} ```yaml copy on: @@ -119,10 +118,10 @@ You can use Octokit.js to interact with the {% data variables.product.prodname_d 1. Install `octokit`. For example, `npm install octokit`. For other ways to install or load `octokit`, see [the Octokit.js README](https://github.com/octokit/octokit.js/#readme). 1. Import `octokit` in your script. For example, `import { Octokit } from "octokit";`. For other ways to import `octokit`, see [the Octokit.js README](https://github.com/octokit/octokit.js/#readme). -1. Create an instance of `Octokit` with your token.{% ifversion ghes or ghae %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} Replace `YOUR-TOKEN` with your token. +1. Create an instance of `Octokit` with your token.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} Replace `YOUR-TOKEN` with your token. ```javascript copy - const octokit = new Octokit({ {% ifversion ghes or ghae %} + const octokit = new Octokit({ {% ifversion ghes %} baseUrl: "{% data variables.product.api_url_code %}",{% endif %} auth: 'YOUR-TOKEN' }); @@ -130,12 +129,12 @@ You can use Octokit.js to interact with the {% data variables.product.prodname_d 1. Use `octokit.request` to execute your request. Send the HTTP method and path as the first argument. Specify any path, query, and body parameters in an object as the second argument. For more information about parameters, see "[AUTOTITLE](/rest/guides/getting-started-with-the-rest-api#using-parameters)." - For example, in the following request the HTTP method is `GET`, the path is `/repos/{owner}/{repo}/issues`, and the parameters are {% ifversion ghes or ghae %}`owner: "REPO-OWNER"` and `repo: "REPO-NAME"`{% else %}`owner: "octocat"` and `repo: "Spoon-Knife"`{% endif %}.{% ifversion ghes or ghae %} Replace `REPO-OWNER` with the name of the account that owns the repository, and `REPO-NAME` with the name of the repository.{% endif %} + For example, in the following request the HTTP method is `GET`, the path is `/repos/{owner}/{repo}/issues`, and the parameters are {% ifversion ghes %}`owner: "REPO-OWNER"` and `repo: "REPO-NAME"`{% else %}`owner: "octocat"` and `repo: "Spoon-Knife"`{% endif %}.{% ifversion ghes %} Replace `REPO-OWNER` with the name of the account that owns the repository, and `REPO-NAME` with the name of the repository.{% endif %} ```javascript copy await octokit.request("GET /repos/{owner}/{repo}/issues", { - owner: "{% ifversion ghes or ghae %}REPO-OWNER{% else %}octocat{% endif %}", - repo: "{% ifversion ghes or ghae %}REPO-NAME{% else %}Spoon-Knife{% endif %}", + owner: "{% ifversion ghes %}REPO-OWNER{% else %}octocat{% endif %}", + repo: "{% ifversion ghes %}REPO-NAME{% else %}Spoon-Knife{% endif %}", }); ``` @@ -182,20 +181,20 @@ jobs: TOKEN: {% raw %}${{ secrets.GITHUB_TOKEN }}{% endraw %} ``` -The following is an example JavaScript script with the file path `.github/actions-scripts/use-the-api.mjs`.{% ifversion ghes or ghae %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}. Replace `REPO-OWNER` with the name of the account that owns the repository. Replace `REPO-NAME` with the name of the repository.{% endif %} +The following is an example JavaScript script with the file path `.github/actions-scripts/use-the-api.mjs`.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}. Replace `REPO-OWNER` with the name of the account that owns the repository. Replace `REPO-NAME` with the name of the repository.{% endif %} ```javascript import { Octokit } from "octokit" -const octokit = new Octokit({ {% ifversion ghes or ghae %} +const octokit = new Octokit({ {% ifversion ghes %} baseUrl: "{% data variables.product.api_url_code %}",{% endif %} auth: process.env.TOKEN }); try { const result = await octokit.request("GET /repos/{owner}/{repo}/issues", { - owner: "{% ifversion ghes or ghae %}REPO-OWNER{% else %}octocat{% endif %}", - repo: "{% ifversion ghes or ghae %}REPO-NAME{% else %}Spoon-Knife{% endif %}", + owner: "{% ifversion ghes %}REPO-OWNER{% else %}octocat{% endif %}", + repo: "{% ifversion ghes %}REPO-NAME{% else %}Spoon-Knife{% endif %}", }); const titleAndAuthor = result.data.map(issue => {title: issue.title, authorID: issue.user.id}) @@ -284,7 +283,7 @@ If you are authenticating with a {% data variables.product.prodname_github_app % {% endwarning %} -1. Use the `curl` command to make your request. Pass your token in an `Authorization` header.{% ifversion ghes or ghae %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}. Replace `REPO-OWNER` with the name of the account that owns the repository. Replace `REPO-NAME` with the name of the repository.{% endif %} Replace `YOUR-TOKEN` with your token. +1. Use the `curl` command to make your request. Pass your token in an `Authorization` header.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}. Replace `REPO-OWNER` with the name of the account that owns the repository. Replace `REPO-NAME` with the name of the repository.{% endif %} Replace `YOUR-TOKEN` with your token. ```shell copy curl --request GET \ @@ -307,7 +306,7 @@ You can also use `curl` commands in your {% data variables.product.prodname_acti {% data variables.product.prodname_dotcom %} recommends that you use the built-in `GITHUB_TOKEN` instead of creating a token. If this is not possible, store your token as a secret and replace `GITHUB_TOKEN` in the example below with the name of your secret. For more information about `GITHUB_TOKEN`, see "[AUTOTITLE](/actions/security-guides/automatic-token-authentication)." For more information about secrets, see "[AUTOTITLE](/actions/security-guides/encrypted-secrets)." -{% ifversion ghes or ghae %}In the following example, replace `HOSTNAME` with the name of {% data variables.location.product_location %}. Replace `REPO-OWNER` with the name of the account that owns the repository. Replace `REPO-NAME` with the name of the repository.{% endif %} +{% ifversion ghes %}In the following example, replace `HOSTNAME` with the name of {% data variables.location.product_location %}. Replace `REPO-OWNER` with the name of the account that owns the repository. Replace `REPO-NAME` with the name of the repository.{% endif %} ```yaml copy on: diff --git a/content/rest/using-the-rest-api/getting-started-with-the-rest-api.md b/content/rest/using-the-rest-api/getting-started-with-the-rest-api.md index 5f68558d24..3773213416 100644 --- a/content/rest/using-the-rest-api/getting-started-with-the-rest-api.md +++ b/content/rest/using-the-rest-api/getting-started-with-the-rest-api.md @@ -5,7 +5,6 @@ intro: 'Learn how to use the {% data variables.product.prodname_dotcom %} REST A versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - API @@ -200,9 +199,9 @@ Install {% data variables.product.prodname_cli %} on macOS, Windows, or Linux. F ### 2. Authenticate -1. Authenticate with {% data variables.product.company_short %} by running this command from your terminal.{% ifversion ghes or ghae %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}. For example, `octo-inc.ghe.com`.{% endif %} +1. Authenticate with {% data variables.product.company_short %} by running this command from your terminal.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}. For example, `octo-inc.ghe.com`.{% endif %} - {%- ifversion ghes or ghae %} + {%- ifversion ghes %} ```shell copy gh auth login --hostname HOSTNAME @@ -270,10 +269,10 @@ gh api --method GET /events -F per_page=2 -F page=1 #### Example request using body parameters -The following example uses the ["Create an issue" endpoint](/rest/issues/issues#create-an-issue) to create a new issue in {% ifversion ghes or ghae %}a specified{% else %}the octocat/Spoon-Knife{% endif %} repository.{% ifversion ghes or ghae %} Replace `REPO-NAME` with the name of the repository where you want to create a new issue, and replace `REPO-OWNER` with the name of the account that owns the repository.{% endif %} In the response, find the `html_url` of your issue, and navigate to your issue in the browser. +The following example uses the ["Create an issue" endpoint](/rest/issues/issues#create-an-issue) to create a new issue in {% ifversion ghes %}a specified{% else %}the octocat/Spoon-Knife{% endif %} repository.{% ifversion ghes %} Replace `REPO-NAME` with the name of the repository where you want to create a new issue, and replace `REPO-OWNER` with the name of the account that owns the repository.{% endif %} In the response, find the `html_url` of your issue, and navigate to your issue in the browser. ```shell copy -gh api --method POST /repos/{% ifversion ghes or ghae %}REPO-OWNER/REPO-NAME{% else %}octocat/Spoon-Knife{% endif %}/issues \ +gh api --method POST /repos/{% ifversion ghes %}REPO-OWNER/REPO-NAME{% else %}octocat/Spoon-Knife{% endif %}/issues \ --header "Accept: application/vnd.github+json" \ --header "X-GitHub-Api-Version: 2022-11-28" \ -f title='Created with the REST API' \ @@ -315,7 +314,7 @@ Use the `curl` command to make your request. For more information, see [the curl Specify the following options and values in your request: - **`--request` or `-X`** followed by the HTTP method as the value. For more information, see "[HTTP method](#http-method)." -- **`--url`** followed by the full path as the value. The full path is a URL that includes the base URL for the GitHub REST API (`https://api.github.com`) and the path of the endpoint, like this: `{% data variables.product.api_url_code %}/PATH`.{% ifversion ghes or ghae %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} Replace `PATH` with the path of the endpoint. For more information, see "[Path](#path)." +- **`--url`** followed by the full path as the value. The full path is a URL that includes the base URL for the GitHub REST API (`https://api.github.com`) and the path of the endpoint, like this: `{% data variables.product.api_url_code %}/PATH`.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} Replace `PATH` with the path of the endpoint. For more information, see "[Path](#path)." To use query parameters, add a `?` to the end of the path, then append your query parameter name and value in the form `parameter_name=value`. Separate multiple query parameters with `&`. If you need to send an array in the query string, use the query parameter once per array item, and append `[]` after the query parameter name. For example, to provide an array of two repository IDs, use `?repository_ids[]=REPOSITORY_A_ID&repository_ids[]=REPOSITORY_B_ID`. For more information, see "[Query parameters](#query-parameters)." For an example, see "[Example request using query parameters](#example-request-using-query-parameters-1)." - **`--header` or `-H`**: @@ -349,13 +348,13 @@ curl --request GET \ #### Example request using body parameters -The following example uses the "[Create an issue](/rest/issues/issues#create-an-issue)" endpoint to create a new issue in {% ifversion ghes or ghae %}a specified{% else %}the octocat/Spoon-Knife{% endif %} repository.{% ifversion ghes or ghae %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}. Replace `REPO-NAME` with the name of the repository where you want to create a new issue, and replace `REPO-OWNER` with the name of the account that owns the repository.{% endif %} Replace `YOUR-TOKEN` with the authentication token you created in a previous step. +The following example uses the "[Create an issue](/rest/issues/issues#create-an-issue)" endpoint to create a new issue in {% ifversion ghes %}a specified{% else %}the octocat/Spoon-Knife{% endif %} repository.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}. Replace `REPO-NAME` with the name of the repository where you want to create a new issue, and replace `REPO-OWNER` with the name of the account that owns the repository.{% endif %} Replace `YOUR-TOKEN` with the authentication token you created in a previous step. {% ifversion pat-v2 %} {% note %} -**Note**: If you are using a {% data variables.product.pat_v2 %}, you must replace `{% ifversion ghes or ghae %}REPO-OWNER` and `REPO-NAME{% else %}octocat/Spoon-Knife{% endif %}` with a repository that you own or that is owned by an organization that you are a member of. Your token must have access to that repository and have read and write permissions for repository issues. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." +**Note**: If you are using a {% data variables.product.pat_v2 %}, you must replace `{% ifversion ghes %}REPO-OWNER` and `REPO-NAME{% else %}octocat/Spoon-Knife{% endif %}` with a repository that you own or that is owned by an organization that you are a member of. Your token must have access to that repository and have read and write permissions for repository issues. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." {% endnote %} @@ -364,7 +363,7 @@ The following example uses the "[Create an issue](/rest/issues/issues#create-an- ```shell copy curl \ --request POST \ ---url "{% data variables.product.api_url_code %}/repos/{% ifversion ghes or ghae %}REPO-OWNER/REPO-NAME{% else %}octocat/Spoon-Knife{% endif %}/issues" \ +--url "{% data variables.product.api_url_code %}/repos/{% ifversion ghes %}REPO-OWNER/REPO-NAME{% else %}octocat/Spoon-Knife{% endif %}/issues" \ --header "Accept: application/vnd.github+json" \{% ifversion api-date-versioning %} --header "X-GitHub-Api-Version: 2022-11-28" \{% endif %} --header "Authorization: Bearer YOUR-TOKEN" \ @@ -404,10 +403,10 @@ Create an access token to authenticate your request. You can save your token and ### 4. Make a request with Octokit.js 1. Import `octokit` in your script. For example, `import { Octokit } from "octokit";`. For other ways to import `octokit`, see [the Octokit.js README](https://github.com/octokit/octokit.js/#readme). -1. Create an instance of `Octokit` with your token.{% ifversion ghes or ghae %} Set the base URL to `{% data variables.product.api_url_code %}`. Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} Replace `YOUR-TOKEN` with your token. +1. Create an instance of `Octokit` with your token.{% ifversion ghes %} Set the base URL to `{% data variables.product.api_url_code %}`. Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} Replace `YOUR-TOKEN` with your token. ```javascript copy - const octokit = new Octokit({ {% ifversion ghes or ghae %} + const octokit = new Octokit({ {% ifversion ghes %} baseUrl: "{% data variables.product.api_url_code %}",{% endif %} auth: 'YOUR-TOKEN' }); @@ -418,13 +417,13 @@ Create an access token to authenticate your request. You can save your token and - Send the HTTP method and path as the first argument to the `request` method. For more information, see "[HTTP method](#http-method)" and "[Path](#path)." - Specify all path, query, and body parameters in an object as the second argument to the `request` method. For more information, see "[Parameters](#parameters)." - In the following example request, the HTTP method is `POST`, the path is `/repos/{owner}/{repo}/issues`, the path parameters are `owner: "{% ifversion ghes or ghae %}REPO-OWNER{% else %}octocat{% endif %}"` and `repo: "{% ifversion ghes or ghae %}REPO-NAME{% else %}Spoon-Knife{% endif %}"`, and the body parameters are `title: "Created with the REST API"` and `body: "This is a test issue created by the REST API"`.{% ifversion ghes or ghae %} Replace `REPO-OWNER` with the name of the account that owns the repository, and `REPO-NAME` with the name of the repository.{% endif %} + In the following example request, the HTTP method is `POST`, the path is `/repos/{owner}/{repo}/issues`, the path parameters are `owner: "{% ifversion ghes %}REPO-OWNER{% else %}octocat{% endif %}"` and `repo: "{% ifversion ghes %}REPO-NAME{% else %}Spoon-Knife{% endif %}"`, and the body parameters are `title: "Created with the REST API"` and `body: "This is a test issue created by the REST API"`.{% ifversion ghes %} Replace `REPO-OWNER` with the name of the account that owns the repository, and `REPO-NAME` with the name of the repository.{% endif %} {% ifversion pat-v2 %} {% note %} - **Note**: If you are using a {% data variables.product.pat_v2 %}, you must replace `{% ifversion ghes or ghae %}REPO-OWNER` and `REPO-NAME{% else %}octocat/Spoon-Knife{% endif %}` with a repository that you own or that is owned by an organization that you are a member of. Your token must have access to that repository and have read and write permissions for repository issues. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." + **Note**: If you are using a {% data variables.product.pat_v2 %}, you must replace `{% ifversion ghes %}REPO-OWNER` and `REPO-NAME{% else %}octocat/Spoon-Knife{% endif %}` with a repository that you own or that is owned by an organization that you are a member of. Your token must have access to that repository and have read and write permissions for repository issues. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." {% endnote %} @@ -432,8 +431,8 @@ Create an access token to authenticate your request. You can save your token and ```javascript copy await octokit.request("POST /repos/{owner}/{repo}/issues", { - owner: "{% ifversion ghes or ghae %}REPO-OWNER{% else %}octocat{% endif %}", - repo: "{% ifversion ghes or ghae %}REPO-NAME{% else %}Spoon-Knife{% endif %}", + owner: "{% ifversion ghes %}REPO-OWNER{% else %}octocat{% endif %}", + repo: "{% ifversion ghes %}REPO-NAME{% else %}Spoon-Knife{% endif %}", title: "Created with the REST API", body: "This is a test issue created by the REST API", }); @@ -468,12 +467,12 @@ Additionally, the response will include headers that give more details about the To view the status code and headers, use the `--include` or `--i` option when you send your request. -For example, this request gets a list of issues in {% ifversion ghes or ghae %}a specified{% else %}the octocat/Spoon-Knife{% endif %} repository: +For example, this request gets a list of issues in {% ifversion ghes %}a specified{% else %}the octocat/Spoon-Knife{% endif %} repository: ```shell gh api \ --header 'Accept: application/vnd.github+json' \ ---method GET /repos/{% ifversion ghes or ghae %}REPO-OWNER/REPO-NAME{% else %}octocat/Spoon-Knife{% endif %}/issues \ +--method GET /repos/{% ifversion ghes %}REPO-OWNER/REPO-NAME{% else %}octocat/Spoon-Knife{% endif %}/issues \ -F per_page=2 --include ``` @@ -542,11 +541,11 @@ try { To view the status code and headers, use the `--include` or `--i` option when you send your request. -For example, this request gets a list of issues in {% ifversion ghes or ghae %}a specified{% else %}the octocat/Spoon-Knife{% endif %} repository: +For example, this request gets a list of issues in {% ifversion ghes %}a specified{% else %}the octocat/Spoon-Knife{% endif %} repository: ```shell curl --request GET \ ---url "https://api.github.com/repos/{% ifversion ghes or ghae %}REPO-OWNER/REPO-NAME{% else %}octocat/Spoon-Knife{% endif %}/issues?per_page=2" \ +--url "https://api.github.com/repos/{% ifversion ghes %}REPO-OWNER/REPO-NAME{% else %}octocat/Spoon-Knife{% endif %}/issues?per_page=2" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer YOUR-TOKEN" \ --include @@ -651,7 +650,7 @@ try { {% curl %} -For example, you can use `>` to redirect the response to a file. In the following example, replace `REPO-OWNER` with the name of the account that owns the repository, and `REPO-NAME` with the name of the repository.{% ifversion ghes or ghae %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} +For example, you can use `>` to redirect the response to a file. In the following example, replace `REPO-OWNER` with the name of the account that owns the repository, and `REPO-NAME` with the name of the repository.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} ```shell copy curl --request GET \ From 26a776d2895c5b1ba1635461f4d4679b19c5572c Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Thu, 18 Jan 2024 08:33:29 -0800 Subject: [PATCH 14/75] Update audit log event data (#48757) --- src/audit-logs/lib/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/audit-logs/lib/config.json b/src/audit-logs/lib/config.json index e02f93e0e2..30bdaad13d 100644 --- a/src/audit-logs/lib/config.json +++ b/src/audit-logs/lib/config.json @@ -1,4 +1,4 @@ { "apiOnlyEventsAdditionalDescription": "This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", - "sha": "9d8853a5a1102bc954cd80819b52730c5473cc33" + "sha": "db2cfd87318253ab51801e16fcaa551c7aa46ffe" } \ No newline at end of file From d9007decda3166a964aacf0d51915cb7873fea59 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Thu, 18 Jan 2024 12:33:46 -0500 Subject: [PATCH 15/75] Port precompute-pageinfo.js to TypeScript (#48749) --- package.json | 2 +- src/frame/lib/page-data.js | 10 +-- src/pageinfo/middleware.js | 2 +- ...ute-pageinfo.js => precompute-pageinfo.ts} | 65 +++++++++++++++---- 4 files changed, 60 insertions(+), 19 deletions(-) rename src/pageinfo/scripts/{precompute-pageinfo.js => precompute-pageinfo.ts} (53%) mode change 100755 => 100644 diff --git a/package.json b/package.json index 1d7b151971..679e8f9bf4 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "playwright-test": "playwright test --config src/fixtures/playwright.config.ts --project=\"Google Chrome\"", "post-lints": "node src/content-linter/scripts/post-lints.js", "postinstall": "cp package-lock.json .installed.package-lock.json && echo \"Updated .installed.package-lock.json\" # see husky/post-checkout and husky/post-merge", - "precompute-pageinfo": "node src/pageinfo/scripts/precompute-pageinfo.js", + "precompute-pageinfo": "tsx src/pageinfo/scripts/precompute-pageinfo.ts", "prepare": "husky install src/workflows/husky", "prettier": "prettier -w \"**/*.{ts,tsx,js,mjs,scss,yml,yaml}\"", "prettier-check": "prettier -c \"**/*.{ts,tsx,js,mjs,scss,yml,yaml}\"", diff --git a/src/frame/lib/page-data.js b/src/frame/lib/page-data.js index 8735504188..6a3b4751f2 100644 --- a/src/frame/lib/page-data.js +++ b/src/frame/lib/page-data.js @@ -37,7 +37,7 @@ const translatableFrontmatterKeys = Object.entries(frontmatterSchema.schema.prop * first since it's the most expensive work. This gets us a nested object with pages attached that we can use * as the basis for the siteTree after we do some versioning. We can also use it to derive the pageList. */ -export async function loadUnversionedTree(languagesOnly = null) { +export async function loadUnversionedTree(languagesOnly = []) { if (languagesOnly && !Array.isArray(languagesOnly)) { throw new Error("'languagesOnly' has to be an array") } @@ -47,7 +47,7 @@ export async function loadUnversionedTree(languagesOnly = null) { const languagesValues = Object.entries(languages) .filter(([language]) => { - return !languagesOnly || languagesOnly.includes(language) + return !languagesOnly.length || languagesOnly.includes(language) }) .map(([, data]) => { return data @@ -295,7 +295,7 @@ export async function versionPages(obj, version, langCode) { } // Derive a flat array of Page objects in all languages. -export async function loadPageList(unversionedTree, languagesOnly = null) { +export async function loadPageList(unversionedTree, languagesOnly = []) { if (languagesOnly && !Array.isArray(languagesOnly)) { throw new Error("'languagesOnly' has to be an array") } @@ -303,7 +303,7 @@ export async function loadPageList(unversionedTree, languagesOnly = null) { const pageList = [] await Promise.all( - (languagesOnly || Object.keys(languages)).map(async (langCode) => { + ((languagesOnly.length && languagesOnly) || Object.keys(languages)).map(async (langCode) => { await addToCollection(rawTree[langCode], pageList) }), ) @@ -335,7 +335,7 @@ export function createMapFromArray(pageList) { return pageMap } -export async function loadPageMap(pageList, languagesOnly = null) { +export async function loadPageMap(pageList, languagesOnly = []) { const pages = pageList || (await loadPageList(languagesOnly)) const pageMap = createMapFromArray(pages) return pageMap diff --git a/src/pageinfo/middleware.js b/src/pageinfo/middleware.js index 6ce31cafee..d852997b19 100644 --- a/src/pageinfo/middleware.js +++ b/src/pageinfo/middleware.js @@ -22,7 +22,7 @@ const router = express.Router() // Note that if the file does not exist, it will be ignored and // every pageinfo is computed every time. // Note! The only reason this variable is exported is so that -// it can be imported by the script scripts/precompute-pageinfo.js +// it can be imported by the script scripts/precompute-pageinfo.ts export const CACHE_FILE_PATH = '.pageinfo-cache.json.br' const validationMiddleware = (req, res, next) => { diff --git a/src/pageinfo/scripts/precompute-pageinfo.js b/src/pageinfo/scripts/precompute-pageinfo.ts old mode 100755 new mode 100644 similarity index 53% rename from src/pageinfo/scripts/precompute-pageinfo.js rename to src/pageinfo/scripts/precompute-pageinfo.ts index 24a31f097b..e95c027ad6 --- a/src/pageinfo/scripts/precompute-pageinfo.js +++ b/src/pageinfo/scripts/precompute-pageinfo.ts @@ -13,7 +13,7 @@ * Why cache?: Despite being a fast computation (3 Liquid + Markdown renders), * it still adds up. And it's safe and cheap to precompute in advance. * - * Why only the English?: To make the file not too large. + * Why only the English by default?: To make the file not too large. * Given how good these things compress, we might consider, in the * future, to do all languages. * @@ -29,20 +29,55 @@ import fs from 'fs' import { brotliCompressSync } from 'zlib' -import { loadPages, loadUnversionedTree } from '#src/frame/lib/page-data.js' +import chalk from 'chalk' +import { program, Option } from 'commander' + +import { languageKeys } from 'src/languages/lib/languages.js' +import { loadPages, loadUnversionedTree } from 'src/frame/lib/page-data.js' import { CACHE_FILE_PATH, getPageInfo } from '../middleware.js' -main() +program + .description('Generates a JSON file with precompute pageinfo data by pathname') + .addOption( + new Option('-l, --language ', 'Which languages to focus on') + .choices(languageKeys) + .default(['en']), + ) + .option('-o, --output-file ', 'path to output file', CACHE_FILE_PATH) + .parse(process.argv) + +type Options = { + outputFile: string + languages: string[] +} +const opts = program.opts() + +main({ + outputFile: opts.outputFile, + languages: opts.language, +}) const CI = Boolean(JSON.parse(process.env.CI || 'false')) -async function main() { - const unversionedTree = await loadUnversionedTree(['en']) - const pageList = await loadPages(unversionedTree, ['en']) +type PageInfo = { + title: string + intro: string + product: string +} + +async function main(options: Options) { + const { outputFile, languages } = options + if (outputFile !== CACHE_FILE_PATH) { + console.warn(chalk.yellow(`Writing to ${outputFile} instead of ${CACHE_FILE_PATH}`)) + } + const unversionedTree = await loadUnversionedTree(languages) + const pageList = await loadPages(unversionedTree, languages) let label = `Compute pageinfos for ${pageList.length.toLocaleString()} pages` console.time(label) - const pageinfos = {} + const pageinfos: { + [pathname: string]: PageInfo + } = {} for (const page of pageList) { const pathname = page.permalinks[0].href try { @@ -57,14 +92,20 @@ async function main() { } console.timeEnd(label) - label = `Serialize, compress, and write to ${CACHE_FILE_PATH}` + label = `Serialize, compress, and write to ${outputFile}` console.time(label) const payload = CI ? JSON.stringify(pageinfos) : JSON.stringify(pageinfos, null, 2) - const payloadBuffer = Buffer.from(payload, 'utf-8') - const payloadCompressed = brotliCompressSync(payloadBuffer) - fs.writeFileSync(CACHE_FILE_PATH, payloadCompressed) + if (outputFile.endsWith('.json')) { + fs.writeFileSync(outputFile, payload) + } else { + const payloadBuffer = Buffer.from(payload, 'utf-8') + const payloadCompressed = brotliCompressSync(payloadBuffer) + fs.writeFileSync(outputFile, payloadCompressed) + } console.timeEnd(label) console.log( - `Wrote ${Object.keys(pageinfos).length.toLocaleString()} pageinfos to ${CACHE_FILE_PATH}`, + chalk.green( + `Wrote ${Object.keys(pageinfos).length.toLocaleString()} pageinfos to ${outputFile}`, + ), ) } From d31a91cbe179c9d127df8fdfeb5948f0e856e893 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Thu, 18 Jan 2024 12:33:54 -0500 Subject: [PATCH 16/75] Upgrade @playwright/test and @axe-core/playwright (#48748) --- package-lock.json | 40 ++++++++++++++++++++-------------------- package.json | 4 ++-- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 04eb905609..ff20d3b7ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -97,13 +97,13 @@ "devDependencies": { "@actions/core": "^1.10.0", "@actions/github": "^6.0.0", - "@axe-core/playwright": "^4.8.2", + "@axe-core/playwright": "^4.8.3", "@github/markdownlint-github": "^0.4.1", "@graphql-inspector/core": "^5.0.0", "@graphql-tools/load": "^8.0.0", "@jest/globals": "29.7.0", "@octokit/rest": "^20.0.2", - "@playwright/test": "1.40.1", + "@playwright/test": "1.41.0", "@types/imurmurhash": "^0.1.4", "@types/js-cookie": "^3.0.6", "@types/lodash": "^4.14.202", @@ -227,12 +227,12 @@ } }, "node_modules/@axe-core/playwright": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.8.2.tgz", - "integrity": "sha512-9KOhX2tNuvqn9DzpBNyqoqNKRZBrexeSiN9irQ0sEdq8zH13JnatepCJxobuXn4UopNy6iIpP4342beMiH+MSQ==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.8.3.tgz", + "integrity": "sha512-YtbkAWeOp5oQeI8vS6KYqJDa5yTl5O1wJP8KOZAAVjhxeiK/Y1ssxnZuGRobARyVh3eS6O3jdxTv/iCK1RfgaA==", "dev": true, "dependencies": { - "axe-core": "~4.8.2" + "axe-core": "~4.8.3" }, "peerDependencies": { "playwright-core": ">= 1.0.0" @@ -3064,12 +3064,12 @@ } }, "node_modules/@playwright/test": { - "version": "1.40.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.40.1.tgz", - "integrity": "sha512-EaaawMTOeEItCRvfmkI9v6rBkF1svM8wjl/YPRrg2N2Wmp+4qJYkWtJsbew1szfKKDm6fPLy4YAanBhIlf9dWw==", + "version": "1.41.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.41.0.tgz", + "integrity": "sha512-Grvzj841THwtpBOrfiHOeYTJQxDRnKofMSzCiV8XeyLWu3o89qftQ4BCKfkziJhSUQRd0utKhrddtIsiraIwmw==", "dev": true, "dependencies": { - "playwright": "1.40.1" + "playwright": "1.41.0" }, "bin": { "playwright": "cli.js" @@ -4153,9 +4153,9 @@ } }, "node_modules/axe-core": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz", - "integrity": "sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.3.tgz", + "integrity": "sha512-d5ZQHPSPkF9Tw+yfyDcRoUOc4g/8UloJJe5J8m4L5+c7AtDdjDLRxew/knnI4CxvtdxEUVgWz4x3OIQUIFiMfw==", "dev": true, "engines": { "node": ">=4" @@ -12545,12 +12545,12 @@ } }, "node_modules/playwright": { - "version": "1.40.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.40.1.tgz", - "integrity": "sha512-2eHI7IioIpQ0bS1Ovg/HszsN/XKNwEG1kbzSDDmADpclKc7CyqkHw7Mg2JCz/bbCxg25QUPcjksoMW7JcIFQmw==", + "version": "1.41.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.41.0.tgz", + "integrity": "sha512-XOsfl5ZtAik/T9oek4V0jAypNlaCNzuKOwVhqhgYT3os6kH34PzbRb74F0VWcLYa5WFdnmxl7qyAHBXvPv7lqQ==", "dev": true, "dependencies": { - "playwright-core": "1.40.1" + "playwright-core": "1.41.0" }, "bin": { "playwright": "cli.js" @@ -12563,9 +12563,9 @@ } }, "node_modules/playwright-core": { - "version": "1.40.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.40.1.tgz", - "integrity": "sha512-+hkOycxPiV534c4HhpfX6yrlawqVUzITRKwHAmYfmsVreltEl6fAZJ3DPfLMOODw0H3s1Itd6MDCWmP1fl/QvQ==", + "version": "1.41.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.41.0.tgz", + "integrity": "sha512-UGKASUhXmvqm2Lxa1fNr8sFwAtqjpgBRr9jQ7XBI8Rn5uFiEowGUGwrruUQsVPIom4bk7Lt+oLGpXobnXzrBIw==", "dev": true, "bin": { "playwright-core": "cli.js" diff --git a/package.json b/package.json index 679e8f9bf4..53df206856 100644 --- a/package.json +++ b/package.json @@ -319,13 +319,13 @@ "devDependencies": { "@actions/core": "^1.10.0", "@actions/github": "^6.0.0", - "@axe-core/playwright": "^4.8.2", + "@axe-core/playwright": "^4.8.3", "@github/markdownlint-github": "^0.4.1", "@graphql-inspector/core": "^5.0.0", "@graphql-tools/load": "^8.0.0", "@jest/globals": "29.7.0", "@octokit/rest": "^20.0.2", - "@playwright/test": "1.40.1", + "@playwright/test": "1.41.0", "@types/imurmurhash": "^0.1.4", "@types/js-cookie": "^3.0.6", "@types/lodash": "^4.14.202", From 183c4bcf2e0b275e3a96a33e1d864b722118fe63 Mon Sep 17 00:00:00 2001 From: Steve Guntrip Date: Thu, 18 Jan 2024 18:52:57 +0000 Subject: [PATCH 17/75] Project status updates [GA] (#48508) Co-authored-by: Ben Ahmady <32935794+subatoi@users.noreply.github.com> --- .../best-practices-for-projects.md | 10 +++++-- .../learning-about-projects/index.md | 1 + .../sharing-project-updates.md | 29 +++++++++++++++++++ data/features/projects-v2-status-updates.yml | 6 ++++ 4 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 content/issues/planning-and-tracking-with-projects/learning-about-projects/sharing-project-updates.md create mode 100644 data/features/projects-v2-status-updates.yml diff --git a/content/issues/planning-and-tracking-with-projects/learning-about-projects/best-practices-for-projects.md b/content/issues/planning-and-tracking-with-projects/learning-about-projects/best-practices-for-projects.md index c3c0533ceb..99be1f3e50 100644 --- a/content/issues/planning-and-tracking-with-projects/learning-about-projects/best-practices-for-projects.md +++ b/content/issues/planning-and-tracking-with-projects/learning-about-projects/best-practices-for-projects.md @@ -25,7 +25,7 @@ To track how smaller issues fit into the larger goal, use {% ifversion task-list Issues and pull requests include built-in features to let you easily communicate with your collaborators. Use @mentions to alert a person or entire team about a comment. Assign collaborators to issues to communicate responsibility. Link to related issues or pull requests to communicate how they are connected. -## Make use of the description and README +## Make use of the description{% ifversion projects-v2-status-updates %}, README, and status updates{% else %} and README{% endif %} Use your project's description and README to share information about the project. @@ -35,9 +35,13 @@ For example: - Describing the project views and how to use them. - Including relevant links and people to contact for more information. -Project READMEs support Markdown which allows you to use images and advanced formatting such as links, lists, and headers. +Project READMEs support Markdown which allows you to use images and advanced formatting such as links, lists, and headers. For more information, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/creating-projects/creating-a-project)." -For more information, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/creating-projects/creating-a-project)." +{% ifversion projects-v2-status-updates %} + +You can also share high-level updates with other users of your project by posting status updates. Status updates allow you to mark the project with a status, such as "On track" or "At risk", set start and target dates, and share written updates with your team. For more information, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/learning-about-projects/sharing-project-updates)." + +{% endif %} ## Use views diff --git a/content/issues/planning-and-tracking-with-projects/learning-about-projects/index.md b/content/issues/planning-and-tracking-with-projects/learning-about-projects/index.md index e78511b6be..cd5f835d6c 100644 --- a/content/issues/planning-and-tracking-with-projects/learning-about-projects/index.md +++ b/content/issues/planning-and-tracking-with-projects/learning-about-projects/index.md @@ -11,5 +11,6 @@ children: - /quickstart-for-projects - /best-practices-for-projects - /finding-your-projects + - /sharing-project-updates allowTitleToDifferFromFilename: true --- diff --git a/content/issues/planning-and-tracking-with-projects/learning-about-projects/sharing-project-updates.md b/content/issues/planning-and-tracking-with-projects/learning-about-projects/sharing-project-updates.md new file mode 100644 index 0000000000..6d81815073 --- /dev/null +++ b/content/issues/planning-and-tracking-with-projects/learning-about-projects/sharing-project-updates.md @@ -0,0 +1,29 @@ +--- +title: 'Sharing {% data variables.projects.project_v2 %} updates' +intro: 'You can post updates to your {% data variables.projects.projects_v2 %} that share the current status, start date, and target date of the {% data variables.projects.project_v2 %} itself.' +allowTitleToDifferFromFilename: true +versions: + feature: projects-v2-status-updates +type: overview +permissions: 'Anyone with write access for a project can add a status update. Anyone with read access for a project can view status updates and subscribe.' +topics: + - Projects +--- + +## About status updates + +You can keep your team up to date and share high-level overviews, which people can use to determine the status of your project. You can set a status, such as "On track" or "At risk", to allow people to quickly determine the current state of the project. You can also set start dates and target dates. Your status update can also contain a message that supports formatting with Markdown. + +Status updates can be found on your project's side panel, below the description and README. You can read the most recent update at the top and the full history of updates beneath. Once you've added a status update, the current status is also shown in the project's header and in lists when you're browsing projects. + +## Adding new status updates + +You can add status updates to any project you have write access for. You can't add status updates to a project that is set as a template. When you start creating a new status update, the form will default to the previous update's status, start date, and target date. + +1. Navigate to your project. +1. In the top-right, click {% octicon "sidebar-expand" aria-label="Project details" %} to open the side panel. +1. Next to "Status updates", click **Add update**. +1. To change the status, click **Status**, and then select the status that best reflects the state of the project. +1. To change the dates shown in your status update, click either **Start date** or **Target date**, and select a new date. +1. Optionally, in the comment field, type a message to include in your status update. You can use Markdown to format your message. +1. Click **Save update**. diff --git a/data/features/projects-v2-status-updates.yml b/data/features/projects-v2-status-updates.yml new file mode 100644 index 0000000000..eaec23c0f8 --- /dev/null +++ b/data/features/projects-v2-status-updates.yml @@ -0,0 +1,6 @@ +# Issue 12678 +# Status updates +versions: + fpt: '*' + ghec: '*' + ghes: '>=3.13' From 7cda7922411a8859c29affc2658b0f3a15727e88 Mon Sep 17 00:00:00 2001 From: Jess Hosman <1183847+jhosman@users.noreply.github.com> Date: Thu, 18 Jan 2024 12:40:18 -0700 Subject: [PATCH 18/75] Remove And at beginning of sentence (#48746) Co-authored-by: Vanessa --- .../using-the-rest-api/getting-started-with-the-rest-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/rest/using-the-rest-api/getting-started-with-the-rest-api.md b/content/rest/using-the-rest-api/getting-started-with-the-rest-api.md index 3773213416..e03bebee04 100644 --- a/content/rest/using-the-rest-api/getting-started-with-the-rest-api.md +++ b/content/rest/using-the-rest-api/getting-started-with-the-rest-api.md @@ -115,7 +115,7 @@ Media types specify the format of the data you want to consume from the API. Med The most common media types supported by the {% data variables.product.prodname_dotcom %} REST API are `application/vnd.github+json` and `application/json`. -There are other custom media types that you can use with some endpoints. For example, some endpoints support the media types `full`, `raw`, `text`, or `html`. And the REST API to manage [commits](/rest/commits/commits#get-a-commit) and [pull requests](/rest/pulls/pulls) support the media types `diff`, `patch`, and `sha`. +There are custom media types that you can use with some endpoints. For example, the REST API to manage [commits](/rest/commits/commits#get-a-commit) and [pull requests](/rest/pulls/pulls) support the media types `diff`, `patch`, and `sha`. The media types `full`, `raw`, `text`, or `html` are used by some other endpoints. All custom media types for {% data variables.product.product_name %} look like this: `application/vnd.github.PARAM+json`, where `PARAM` is the name of the media type. For example, to specify the `raw` media type, you would use `application/vnd.github.raw+json`. From 85aba9dd0b90b8e6234a049a89def3e7d0940de1 Mon Sep 17 00:00:00 2001 From: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Date: Thu, 18 Jan 2024 13:30:53 -0700 Subject: [PATCH 19/75] Fix release note formatting (#48761) --- data/release-notes/enterprise-server/3-8/12.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/data/release-notes/enterprise-server/3-8/12.yml b/data/release-notes/enterprise-server/3-8/12.yml index a44ca3e259..5b2e1054f2 100644 --- a/data/release-notes/enterprise-server/3-8/12.yml +++ b/data/release-notes/enterprise-server/3-8/12.yml @@ -25,6 +25,7 @@ sections: **MEDIUM**: An incorrect authorization vulnerability was identified that allowed issue comments to be updated with an improperly scoped token. This vulnerability did not allow unauthorized access to any repository content as it also required `contents.write` and `issues.read` permissions. This vulnerability was reported via the [GitHub Bug Bounty Program](https://bounty.github.com/) and has been assigned [CVE-2023-51379](https://www.cve.org/CVERecord?id=CVE-2023-51379). - | **MEDIUM**: An incorrect authorization vulnerability was identified that allowed issue comments to be read with an improperly scoped token. This vulnerability was reported via the [GitHub Bug Bounty Program](https://bounty.github.com/) and has been assigned [CVE-2023-51380](https://www.cve.org/CVERecord?id=CVE-2023-51380). + - | **LOW:** Pre-receive hooks have been further hardened against shell command injections. - | **LOW:** To render interactive maps in an instance's web UI using Azure Maps, GitHub Enterprise Server has migrated from use of an unsecure Azure Maps API token to a more secure access token provided by role-based access control (RBAC) in Entra ID. After upgrading to this release, to re-enable interactive maps, an administrator must reconfigure authentication to Azure Maps in the Management Console. For more information, see "[AUTOTITLE](/admin/configuration/configuring-user-applications-for-your-enterprise/configuring-interactive-maps)." From ab8cceb0cebbfde937a99a5dbaaed15708e57267 Mon Sep 17 00:00:00 2001 From: Grace Park Date: Thu, 18 Jan 2024 13:52:41 -0800 Subject: [PATCH 20/75] Set max of 4 supported release boxes on landing page (#48760) --- src/landings/components/ProductReleases.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/landings/components/ProductReleases.tsx b/src/landings/components/ProductReleases.tsx index b952a286e3..350b389e14 100644 --- a/src/landings/components/ProductReleases.tsx +++ b/src/landings/components/ProductReleases.tsx @@ -14,7 +14,7 @@ export function ProductReleases() { return (
- {ghesReleases.map((release) => { + {ghesReleases.slice(0, 4).map((release) => { const releaseNumber = release.version if (!enterpriseServerReleases.supported.includes(releaseNumber)) { return null From 3821a979bb7754fef4a28e82f7582c8570428d85 Mon Sep 17 00:00:00 2001 From: Ken Muse Date: Thu, 18 Jan 2024 20:44:16 -0500 Subject: [PATCH 21/75] Update ARC metrics names (#48586) Co-authored-by: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Co-authored-by: Siara <108543037+SiaraMist@users.noreply.github.com> --- ...ale-sets-with-actions-runner-controller.md | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller.md index 28be535224..e94b44349b 100644 --- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller.md +++ b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller.md @@ -774,24 +774,25 @@ The following table shows the metrics emitted by the controller-manager and list {% endnote %} -| Owner | Metric | Type | Description | -| ------------------ | ------------------------------ | --------- | ----------------------------------------------------------------------------------------------------------- | -| controller-manager | pending_ephemeral_runners | gauge | Number of ephemeral runners in a pending state | -| controller-manager | running_ephemeral_runners | gauge | Number of ephemeral runners in a running state | -| controller-manager | failed_ephemeral_runners | gauge | Number of ephemeral runners in a failed state | -| listener | assigned_jobs | gauge | Number of jobs assigned to the runner scale set | -| listener | running_jobs | gauge | Number of jobs running or queued to run | -| listener | registered_runners | gauge | Number of runners registered by the runner scale set | -| listener | busy_runners | gauge | Number of registered runners currently running a job | -| listener | min_runners | gauge | Minimum number of runners configured for the runner scale set | -| listener | max_runners | gauge | Maximum number of runners configured for the runner scale set | -| listener | desired_runners | gauge | Number of runners desired (scale up / down target) by the runner scale set | -| listener | idle_runners | gauge | Number of registered runners not running a job | -| listener | started_jobs_total | counter | Total number of jobs started since the listener became ready [1] | -| listener | completed_jobs_total | counter | Total number of jobs completed since the listener became ready [1] | -| listener | job_queue_duration_seconds | histogram | Number of seconds spent waiting for workflow jobs to get assigned to the runner scale set after queueing | -| listener | job_startup_duration_seconds | histogram | Number of seconds spent waiting for workflow job to get started on the runner owned by the runner scale set | -| listener | job_execution_duration_seconds | histogram | Number of seconds spent executing workflow jobs by the runner scale set | +| Owner | Metric | Type | Description | +| ------------------ | --------------------------------------------- | --------- | ----------------------------------------------------------------------------------------------------------- | +| controller-manager | gha_controller_pending_ephemeral_runners | gauge | Number of ephemeral runners in a pending state | +| controller-manager | gha_controller_running_ephemeral_runners | gauge | Number of ephemeral runners in a running state | +| controller-manager | gha_controller_failed_ephemeral_runners | gauge | Number of ephemeral runners in a failed state | +| controller-manager | gha_controller_running_listeners | gauge | Number of listeners in a running state | +| listener | gha_assigned_jobs | gauge | Number of jobs assigned to the runner scale set | +| listener | gha_running_jobs | gauge | Number of jobs running or queued to run | +| listener | gha_registered_runners | gauge | Number of runners registered by the runner scale set | +| listener | gha_busy_runners | gauge | Number of registered runners currently running a job | +| listener | gha_min_runners | gauge | Minimum number of runners configured for the runner scale set | +| listener | gha_max_runners | gauge | Maximum number of runners configured for the runner scale set | +| listener | gha_desired_runners | gauge | Number of runners desired (scale up / down target) by the runner scale set | +| listener | gha_idle_runners | gauge | Number of registered runners not running a job | +| listener | gha_started_jobs_total | counter | Total number of jobs started since the listener became ready [1] | +| listener | gha_completed_jobs_total | counter | Total number of jobs completed since the listener became ready [1] | +| listener | gha_job_queue_duration_seconds | histogram | Number of seconds spent waiting for workflow jobs to get assigned to the runner scale set after queueing | +| listener | gha_job_startup_duration_seconds | histogram | Number of seconds spent waiting for workflow job to get started on the runner owned by the runner scale set | +| listener | gha_job_execution_duration_seconds | histogram | Number of seconds spent executing workflow jobs by the runner scale set | [1]: Listener metrics that have the counter type are reset when the listener pod restarts. From eb2d2b528f3bb9aab79cd9637cc2c9526a51028d Mon Sep 17 00:00:00 2001 From: Maya Messinger Date: Fri, 19 Jan 2024 03:15:41 -0600 Subject: [PATCH 22/75] Remove UAE from SMS supported countries temporarily (#48759) Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> --- .../countries-where-sms-authentication-is-supported.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/authentication/securing-your-account-with-two-factor-authentication-2fa/countries-where-sms-authentication-is-supported.md b/content/authentication/securing-your-account-with-two-factor-authentication-2fa/countries-where-sms-authentication-is-supported.md index bd34219faa..8bc02d107e 100644 --- a/content/authentication/securing-your-account-with-two-factor-authentication-2fa/countries-where-sms-authentication-is-supported.md +++ b/content/authentication/securing-your-account-with-two-factor-authentication-2fa/countries-where-sms-authentication-is-supported.md @@ -124,7 +124,6 @@ If your country is not on this list, then we aren't currently able to reliably d
  • Trinidad and Tobago
  • Turks and Caicos Islands
  • Uganda
  • -
  • United Arab Emirates
  • United Kingdom
  • United States
  • Uzbekistan
  • From 7bb80d12c520b70474b55f701cc26f0adf5a3852 Mon Sep 17 00:00:00 2001 From: Dani Brooks <104226514+danibrooks@users.noreply.github.com> Date: Fri, 19 Jan 2024 01:38:43 -0800 Subject: [PATCH 23/75] Updating Processing Locations for Azure (#47792) Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> --- .../privacy-policies/github-subprocessors.md | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/content/site-policy/privacy-policies/github-subprocessors.md b/content/site-policy/privacy-policies/github-subprocessors.md index 1992acc3d0..39abe00890 100644 --- a/content/site-policy/privacy-policies/github-subprocessors.md +++ b/content/site-policy/privacy-policies/github-subprocessors.md @@ -23,22 +23,22 @@ To receive notifications of updates to this Subprocessor list, please follow the If you have questions about this list, please contact us at . -| Name of Subprocessor | Description of Processing | Location of Processing | Corporate Location | -| --------------------------- | ------------------------------------------------------------------------------ | ---------------------- | ------------------ | -| Amazon Web Services (AWS) | Cloud Hosted Infrastructure and Data Hosting | United States | United States | -| Azure (Microsoft) | Cloud Hosted Infrastructure and Data Hosting | United States | United States | -| Azure Cognitive Services | Customer support ticketing analysis | United States | United States | -| Cloudflare | Content delivery service | United States | United States | -| Fastly | Content delivery service | United States | United States | -| Google Cloud Platform (GCP) | Cloud Hosted Infrastructure | United States | United States | -| Microsoft | Technical Services | United States | United States | -| Moveworks | Customer support ticketing analysis | United States | United States | -| NexMo (aka Vonage) | SMS notification provider for 2 Factor Authentication | United States | United States | -| Obsidian Security | Security management | United States | United States | -| Pusher | Building and managing real-time infrastructure for web and mobile applications | United States | United States | -| SendGrid | SMS notification provider for 2 Factor Authentication | United States | United States | -| Splunk | Logging pipeline for security log, storage, and search | United States | United States | -| Twilio | SMS notification provider for 2 Factor Authentication | United States | United States | -| VividCortex | Monitor database performance, efficiency, and uptime | United States | United States | -| Zapier | App infrastructure and support | United States | United States | -| Zendesk | Customer support ticketing system | United States | United States | +| Name of Subprocessor | Description of Processing | Location of Processing | Corporate Location | +| --------------------------- | ------------------------------------------------------------------------------ | ----------------------- | ------------------ | +| Amazon Web Services (AWS) | Cloud Hosted Infrastructure and Data Hosting | United States | United States | +| Azure (Microsoft) | Cloud Hosted Infrastructure and Data Hosting | United States, France,
    Switzerland, and Japan | United States | +| Azure Cognitive Services | Customer support ticketing analysis | United States | United States | +| Cloudflare | Content delivery service | United States | United States | +| Fastly | Content delivery service | United States | United States | +| Google Cloud Platform (GCP) | Cloud Hosted Infrastructure | United States | United States | +| Microsoft | Technical Services | United States | United States | +| Moveworks | Customer support ticketing analysis | United States | United States | +| NexMo (aka Vonage) | SMS notification provider for 2 Factor Authentication | United States | United States | +| Obsidian Security | Security management | United States | United States | +| Pusher | Building and managing real-time infrastructure for web and mobile applications | United States | United States | +| SendGrid | SMS notification provider for 2 Factor Authentication | United States | United States | +| Splunk | Logging pipeline for security log, storage, and search | United States | United States | +| Twilio | SMS notification provider for 2 Factor Authentication | United States | United States | +| VividCortex | Monitor database performance, efficiency, and uptime | United States | United States | +| Zapier | App infrastructure and support | United States | United States | +| Zendesk | Customer support ticketing system | United States | United States | From bc541e475cb235e6e638e0f6cd63003c2f5ffd03 Mon Sep 17 00:00:00 2001 From: Sophie <29382425+sophietheking@users.noreply.github.com> Date: Fri, 19 Jan 2024 11:24:06 +0100 Subject: [PATCH 24/75] Follow-up to: [Improvement]: Mention alternatives to forking and directly address fork detach / extract options (#48732) Co-authored-by: Matt Rose <19803303+yamiacat@users.noreply.github.com> Co-authored-by: lesleyanneb <31181282+lesleyanneb@users.noreply.github.com> --- .../working-with-forks/detaching-a-fork.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/detaching-a-fork.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/detaching-a-fork.md index 63421ed482..f079965a50 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/detaching-a-fork.md +++ b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/detaching-a-fork.md @@ -5,13 +5,25 @@ versions: fpt: '*' ghes: '*' ghec: '*' - ghae: '*' topics: - Pull requests permissions: People with admin access for a forked repository can delete the forked repository. --- -To turn your fork into a standalone repository, you can clone the fork, use the clone to create a new repository, and then delete the fork. The new repository will no longer automatically sync with changes from the original repository. This is useful when you want to take the work you are doing in a different direction or maintain distinct versions. +## About detaching forks + +To turn your fork into a standalone repository, you can clone the fork, use the clone to create a new repository, and then delete the fork. This is useful when you want to take the work you are doing in a different direction or maintain distinct versions. + +The new repository will no longer automatically sync with changes from the original repository. + +{% note %} + +**Notes:** + +- The new repository will not retain any of its issues, pull requests, wikis, stars, watchers, comments, child forks, or other metadata that may currently be associated with your current fork. +- All commit metadata will be preserved. Commits may become eligible to be counted as contributions, if they meet certain criteria. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile#your-local-git-commit-email-isnt-connected-to-your-account)." + +{% endnote %} {% ifversion ghes %} From dfa42233dabd34c34fbd76a9da29c61ae6feed48 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Fri, 19 Jan 2024 08:02:52 -0500 Subject: [PATCH 25/75] Remove GHAE in Liquid and front matter (3) (#48762) --- .../managing-notifications-from-your-inbox.md | 12 +----------- .../personalizing-your-profile.md | 3 +-- ...rprise-contributions-to-your-githubcom-profile.md | 11 ----------- ...contributions-and-achievements-on-your-profile.md | 3 +-- .../viewing-contributions-on-your-profile.md | 5 ++--- ...-my-contributions-not-showing-up-on-my-profile.md | 5 ++--- ...nviting-collaborators-to-a-personal-repository.md | 3 +-- .../setting-your-commit-email-address.md | 5 ++--- .../managing-accessibility-settings.md | 8 ++++---- 9 files changed, 14 insertions(+), 41 deletions(-) diff --git a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox.md b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox.md index aca931dd54..ee58f920d1 100644 --- a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox.md +++ b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox.md @@ -9,7 +9,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - Notifications @@ -97,7 +96,7 @@ To add a `repo:` filter, you must include the owner of the repository in the que ### Supported `is:` queries -To filter notifications for specific activity on {% data variables.location.product_location %}, you can use the `is` query. For example, to only see repository invitation updates, use `is:repository-invitation`{% ifversion not ghae %}, and to only see {% data variables.product.prodname_dependabot_alerts %}, use `is:repository-vulnerability-alert`{% endif %}. +To filter notifications for specific activity on {% data variables.location.product_location %}, you can use the `is` query. For example, to only see repository invitation updates, use `is:repository-invitation`, and to only see {% data variables.product.prodname_dependabot_alerts %}, use `is:repository-vulnerability-alert`. - `is:check-suite` - `is:commit` @@ -162,12 +161,3 @@ If you use {% data variables.product.prodname_dependabot %} to keep your depende For more information about {% data variables.product.prodname_dependabot %}, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)." {% endif %} - -{% ifversion ghae %} - -If you use {% data variables.product.prodname_dependabot %} to tell you about insecure dependencies, you can use and save these custom filters to show notifications for {% data variables.product.prodname_dependabot_alerts %}: -- `is:repository_vulnerability_alert` -- `reason:security_alert` - -For more information about {% data variables.product.prodname_dependabot %}, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)." -{% endif %} diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile.md index b266b55095..cb3705d628 100644 --- a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile.md +++ b/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile.md @@ -13,7 +13,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - Profiles @@ -59,7 +58,7 @@ If you use Gravatar, and your Gravatar image is associated with the email you us {% data reusables.user-settings.access_settings %} 1. Under "Profile Picture", select {% octicon "pencil" aria-hidden="true" %} **Edit**, then click **Remove photo** to revert to your identicon. - {% ifversion not ghae %}If your email address is associated with a [Gravatar](https://en.gravatar.com/), you cannot revert to your identicon. Click **Revert to Gravatar** instead.{% endif %} + If your email address is associated with a [Gravatar](https://en.gravatar.com/), you cannot revert to your identicon. Click **Revert to Gravatar** instead. ![Screenshot of the "Public profile" section of a user account's settings. A button, labeled with a pencil icon and "Edit", is outlined in dark orange.](/assets/images/help/profile/edit-profile-photo.png) diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile.md index 0d7620ac1d..6970efdd44 100644 --- a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile.md +++ b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile.md @@ -11,7 +11,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - Profiles @@ -59,14 +58,4 @@ To send enterprise contributions from {% data variables.product.prodname_ghe_ser 1. Review the resources that {% data variables.product.prodname_ghe_server %} will access from your {% data variables.product.prodname_dotcom_the_website %} account, then click **Authorize**. {% data reusables.github-connect.send-contribution-counts-to-githubcom %} -{% elsif ghae %} - -1. Sign in to {% data variables.product.prodname_ghe_managed %} and {% data variables.product.prodname_dotcom_the_website %}. -1. On {% data variables.product.prodname_ghe_managed %}, in the upper-right corner of any page, click your profile photo, then click **Settings**. - ![Screenshot of a user's account menu on {% data variables.product.prodname_dotcom %}. The menu item "Settings" is outlined in dark orange.](/assets/images/help/settings/userbar-account-settings.png) -{% data reusables.github-connect.github-connect-tab-user-settings %} -{% data reusables.github-connect.connect-dotcom-and-enterprise %} -{% data reusables.github-connect.authorize-connection %} -{% data reusables.github-connect.send-contribution-counts-to-githubcom %} - {% endif %} diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile.md index 5c9f8b6538..1bd7bf38cd 100644 --- a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile.md +++ b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile.md @@ -9,7 +9,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - Profiles @@ -20,7 +19,7 @@ If you publicize your private contributions, people without access to the privat {% note %} -**Note:** {% ifversion fpt or ghes or ghec %}On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom_the_website %}{% elsif ghes %}{% data variables.product.product_name %}{% endif %}, public contributions on your profile are visible {% ifversion fpt or ghec %}to anyone in the world who can access {% data variables.product.prodname_dotcom_the_website %}{% elsif ghes %}only to other users of {% data variables.location.product_location%}{% endif %}.{% elsif ghae %}On {% data variables.product.prodname_ghe_managed %}, only other members of your enterprise can see the contributions on your profile.{% endif %} +**Note:** On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom_the_website %}{% elsif ghes %}{% data variables.product.product_name %}{% endif %}, public contributions on your profile are visible {% ifversion fpt or ghec %}to anyone in the world who can access {% data variables.product.prodname_dotcom_the_website %}{% elsif ghes %}only to other users of {% data variables.location.product_location%}{% endif %}. {% endnote %} diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile.md index b61f237c53..bfd536c102 100644 --- a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile.md +++ b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile.md @@ -10,7 +10,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - Profiles @@ -34,7 +33,7 @@ On your profile page, certain actions count as contributions: - Opening a discussion - Answering a discussion - Proposing a pull request -- Submitting a pull request review{% ifversion ghes or ghae %} +- Submitting a pull request review{% ifversion ghes %} - Co-authoring commits in a repository's default branch or `gh-pages` branch{% endif %} {% data reusables.pull_requests.pull_request_merges_and_contributions %} @@ -96,4 +95,4 @@ If you can't see certain events in your timeline, check to make sure you still h ## Viewing contributions from {% data variables.product.prodname_enterprise %} on {% data variables.product.prodname_dotcom_the_website %} -If you use {% ifversion fpt or ghec %}{% data variables.product.prodname_ghe_server %}{% ifversion ghae %} or {% data variables.product.prodname_ghe_managed %}{% endif %}{% else %}{% data variables.product.product_name %}{% endif %} and your enterprise owner enables {% data variables.enterprise.prodname_unified_contributions %}, you can send enterprise contribution counts to your {% data variables.product.prodname_dotcom_the_website %} profile. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile)." +If you use {% ifversion fpt or ghec %}{% data variables.product.prodname_ghe_server %}{% else %}{% data variables.product.product_name %}{% endif %} and your enterprise owner enables {% data variables.enterprise.prodname_unified_contributions %}, you can send enterprise contribution counts to your {% data variables.product.prodname_dotcom_the_website %} profile. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile)." diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile.md index f9decba52c..64b79c2f14 100644 --- a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile.md +++ b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile.md @@ -9,7 +9,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - Profiles @@ -18,7 +17,7 @@ shortTitle: Missing contributions ## About your contribution graph -Your profile contributions graph is a record of contributions you've made to repositories {% ifversion ghae %}owned by{% else %}on{% endif %} {% data variables.location.product_location %}. Contributions are timestamped according to Coordinated Universal Time (UTC) rather than your local time zone. Contributions are only counted if they meet certain criteria. In some cases, we may need to rebuild your graph in order for contributions to appear. +Your profile contributions graph is a record of contributions you've made to repositories on {% data variables.location.product_location %}. Contributions are timestamped according to Coordinated Universal Time (UTC) rather than your local time zone. Contributions are only counted if they meet certain criteria. In some cases, we may need to rebuild your graph in order for contributions to appear. If you are part of an organization that uses SAML single sign-on (SSO), you won’t be able to see contribution activity from the organization on your profile if you do not have an active SSO session. People viewing your profile from outside your organization will see anonymized contribution activity of your contribution activity for your organization. @@ -70,7 +69,7 @@ Subject: [PATCH] updated index for better welcome message The email address in the `From:` field is the address that was set in the [local git config settings](/get-started/getting-started-with-git/set-up-git). In this example, the email address used for the commit is `octocat@nowhere.com`. -If the email address used for the commit is not connected to your account on {% data variables.location.product_location %}, {% ifversion ghae %}change the email address used to author commits in Git. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address#setting-your-commit-email-address-in-git)."{% else %}you must [add the email address](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account) to your account on {% data variables.location.product_location %}. Your contributions graph will be rebuilt automatically when you add the new address.{% endif %} +If the email address used for the commit is not connected to your account on {% data variables.location.product_location %}, you must [add the email address](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account) to your account on {% data variables.location.product_location %}. Your contributions graph will be rebuilt automatically when you add the new address. {% ifversion fpt or ghec %} {% note %} diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md index 1fc0bfd537..3d7ba8a2d9 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md @@ -12,7 +12,6 @@ product: '{% data reusables.gated-features.user-repo-collaborators %}' versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - Accounts @@ -35,7 +34,7 @@ If you're a member of an {% data variables.enterprise.prodname_emu_enterprise %} ## Inviting a collaborator to a personal repository -You can send an invitation to collaborate in your repository directly to someone on {% data variables.location.product_location %}{% ifversion fpt or ghec %}, or to the person's email address{% elsif ghes or ghae %}.{% endif %} +You can send an invitation to collaborate in your repository directly to someone on {% data variables.location.product_location %}{% ifversion fpt or ghec %}, or to the person's email address{% elsif ghes %}.{% endif %} {% ifversion fpt or ghec %} diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address.md index 14da8bac36..40894516cb 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address.md @@ -16,7 +16,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - Accounts @@ -27,7 +26,7 @@ shortTitle: Set commit email address {% data variables.product.prodname_dotcom %} uses your commit email address to associate commits with your account on {% data variables.location.product_location %}. You can choose the email address that will be associated with the commits you push from the command line as well as web-based Git operations you make. -For web-based Git operations, you can set your commit email address on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. For commits you push from the command line, you can set your commit email address in Git. +For web-based Git operations, you can set your commit email address on {% data variables.location.product_location %}. For commits you push from the command line, you can set your commit email address in Git. {% ifversion fpt or ghec %}Any commits you made prior to changing your commit email address are still associated with your previous email address.{% else %}After changing your commit email address on {% data variables.product.product_name %}, the new email address will be visible in all of your future web-based Git operations by default. Any commits you made prior to changing your commit email address are still associated with your previous email address.{% endif %} @@ -45,7 +44,7 @@ For web-based Git operations, you can set your commit email address on {% ifvers You can also choose to block commits you push from the command line that expose your personal email address. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/blocking-command-line-pushes-that-expose-your-personal-email-address)."{% endif %} -To ensure that commits are attributed to you and appear in your contributions graph, use an email address that is connected to your account on {% data variables.location.product_location %}{% ifversion fpt or ghec %}, or the `noreply` email address provided to you in your email settings{% endif %}. {% ifversion not ghae %}For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account)."{% endif %} +To ensure that commits are attributed to you and appear in your contributions graph, use an email address that is connected to your account on {% data variables.location.product_location %}{% ifversion fpt or ghec %}, or the `noreply` email address provided to you in your email settings{% endif %}. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account)." {% ifversion fpt or ghec %} diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-accessibility-settings.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-accessibility-settings.md index b2259d1d50..fa89d78e3d 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-accessibility-settings.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-accessibility-settings.md @@ -12,9 +12,9 @@ type: how_to ## About accessibility settings -To create an experience on {% ifversion fpt or ghec or ghes %}{% data variables.location.product_location %}{% elsif ghae %}{% data variables.product.product_name %}{% endif %} that fits your needs, you can customize the user interface. Accessibility settings can be essential for people with disabilities, but can be useful to anyone. For example, customization of keyboard shortcuts is essential to people who navigate using voice control, but can be useful to anyone when a keyboard shortcut for {% data variables.product.product_name %} clashes with another application shortcut. +To create an experience on {% data variables.location.product_location %} that fits your needs, you can customize the user interface. Accessibility settings can be essential for people with disabilities, but can be useful to anyone. For example, customization of keyboard shortcuts is essential to people who navigate using voice control, but can be useful to anyone when a keyboard shortcut for {% data variables.product.product_name %} clashes with another application shortcut. -You can decide whether you want to use some or all keyboard shortcuts on {% ifversion fpt or ghec %}{% data variables.location.product_location %}{% elsif ghes or ghae %}the website for {% data variables.location.product_location %}{% endif %} and you can also control the display of animated images{% ifversion link-underlines %} and how links are displayed{% endif %}. +You can decide whether you want to use some or all keyboard shortcuts on {% ifversion fpt or ghec %}{% data variables.location.product_location %}{% elsif ghes %}the website for {% data variables.location.product_location %}{% endif %} and you can also control the display of animated images{% ifversion link-underlines %} and how links are displayed{% endif %}. {% ifversion link-underlines %} @@ -31,10 +31,10 @@ You can control whether links in text blocks on {% data variables.location.produ {% data reusables.user-settings.access_settings %} {% data reusables.user-settings.accessibility_settings %} 1. Under "Content", manage settings for link appearance. - + - To enable underlines on links in text blocks, under "Link underlines", select **Show link underlines**. - To disable underlines on links in text blocks, under "Link underlines", select **Hide link underlines**. - + {% endif %} ## Managing keyboard shortcuts From 6b73bbf6aed567ced3f1c9cc2d265d6f1162e9e2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Fri, 19 Jan 2024 08:03:08 -0500 Subject: [PATCH 26/75] Update all internal links in content/get-started (#48756) --- .../accessibility/github-command-palette.md | 2 +- .../accessibility/keyboard-shortcuts.md | 2 +- ...-archive-of-your-personal-accounts-data.md | 2 +- .../about-building-integrations.md | 8 +++---- .../about-using-integrations.md | 2 +- ...-to-contribute-to-open-source-on-github.md | 2 +- .../following-organizations.md | 2 +- .../following-people.md | 2 +- .../saving-repositories-with-stars.md | 2 +- .../caching-your-github-credentials-in-git.md | 2 +- .../about-github-advanced-security.md | 2 +- .../access-permissions-on-github.md | 6 ++--- .../learning-about-github/githubs-plans.md | 6 ++--- .../types-of-github-accounts.md | 2 +- ...ng-started-with-github-enterprise-cloud.md | 22 +++++++++---------- ...g-started-with-github-enterprise-server.md | 16 +++++++------- .../getting-started-with-github-team.md | 2 +- ...etting-started-with-your-github-account.md | 2 +- .../quickstart/about-github-and-git.md | 2 +- .../downloading-files-from-github.md | 2 +- .../finding-inspiration-on-github.md | 2 +- .../git-and-github-learning-resources.md | 2 +- .../get-started/using-git/about-git-rebase.md | 2 +- .../using-github/connecting-to-github.md | 2 +- .../quickstart-for-writing-on-github.md | 2 +- .../about-task-lists.md | 2 +- .../writing-mathematical-expressions.md | 2 +- 27 files changed, 51 insertions(+), 51 deletions(-) diff --git a/content/get-started/accessibility/github-command-palette.md b/content/get-started/accessibility/github-command-palette.md index 9bb23ab963..b6ebdb87f8 100644 --- a/content/get-started/accessibility/github-command-palette.md +++ b/content/get-started/accessibility/github-command-palette.md @@ -146,7 +146,7 @@ These commands are available from all scopes. |`New organization`|Create a new organization. For more information, see "[AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/creating-a-new-organization-from-scratch)." | |`New project`|Create a new project board. For more information, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/creating-projects/creating-a-project)." | |`New repository`|Create a new repository from scratch. For more information, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/creating-a-new-repository)." | -|`Switch theme to `|Change directly to a different theme for the UI. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/managing-your-theme-settings)." | +|`Switch theme to `|Change directly to a different theme for the UI. For more information, see "[AUTOTITLE](/get-started/accessibility/managing-your-theme-settings)." | ### Organization commands diff --git a/content/get-started/accessibility/keyboard-shortcuts.md b/content/get-started/accessibility/keyboard-shortcuts.md index 8925ea94e0..5680c2f0f9 100644 --- a/content/get-started/accessibility/keyboard-shortcuts.md +++ b/content/get-started/accessibility/keyboard-shortcuts.md @@ -20,7 +20,7 @@ versions: Typing ? on {% data variables.product.prodname_dotcom %} brings up a dialog box that lists the keyboard shortcuts available for that page. You can use these keyboard shortcuts to perform actions across the site without using your mouse to navigate. {% ifversion keyboard-shortcut-accessibility-setting %} -You can disable character key shortcuts, while still allowing shortcuts that use modifier keys, in your accessibility settings. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/managing-accessibility-settings)."{% endif %} +You can disable character key shortcuts, while still allowing shortcuts that use modifier keys, in your accessibility settings. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-accessibility-settings)."{% endif %} {% ifversion command-palette %} The {% data variables.product.prodname_command_palette %} also gives you quick access to a wide range of actions, without the need to remember keyboard shortcuts. For more information, see "[AUTOTITLE](/get-started/accessibility/github-command-palette)."{% endif %} diff --git a/content/get-started/archiving-your-github-personal-account-and-public-repositories/requesting-an-archive-of-your-personal-accounts-data.md b/content/get-started/archiving-your-github-personal-account-and-public-repositories/requesting-an-archive-of-your-personal-accounts-data.md index bc8ba4d04e..8b27d5b220 100644 --- a/content/get-started/archiving-your-github-personal-account-and-public-repositories/requesting-an-archive-of-your-personal-accounts-data.md +++ b/content/get-started/archiving-your-github-personal-account-and-public-repositories/requesting-an-archive-of-your-personal-accounts-data.md @@ -21,7 +21,7 @@ For more information about the data {% data variables.product.product_name %} st When you request an export of your personal data through settings on {% data variables.product.prodname_dotcom_the_website %}, {% data variables.product.product_name %} packages your personal data in a `tar.gz` file and sends you an email to your primary email address with a download link. -By default, the download link expires after seven days. At any time before the download link expires, you can disable the link from your user settings. For more information, see "[AUTOTITLE](/get-started/privacy-on-github/requesting-an-archive-of-your-personal-accounts-data#deleting-access-to-an-archive-of-your-personal-accounts-data)." +By default, the download link expires after seven days. At any time before the download link expires, you can disable the link from your user settings. For more information, see "[AUTOTITLE](/get-started/archiving-your-github-personal-account-and-public-repositories/requesting-an-archive-of-your-personal-accounts-data#deleting-access-to-an-archive-of-your-personal-accounts-data)." If your operating system cannot natively unpack the `tar.gz` file, you can use a third-party tool to extract the archived files. For more information, see "[How to unzip a tar.gz file](https://opensource.com/article/17/7/how-unzip-targz-file)" on Opensource.com. diff --git a/content/get-started/exploring-integrations/about-building-integrations.md b/content/get-started/exploring-integrations/about-building-integrations.md index 8d0d74de53..0a3d16214a 100644 --- a/content/get-started/exploring-integrations/about-building-integrations.md +++ b/content/get-started/exploring-integrations/about-building-integrations.md @@ -1,6 +1,6 @@ --- title: About building integrations -intro: "You can build integrations to extend {% data variables.product.company_short %}'s functionality." +intro: 'You can build integrations to extend {% data variables.product.company_short %}''s functionality.' versions: fpt: '*' ghes: '*' @@ -18,10 +18,10 @@ Many integrations are {% data variables.product.prodname_github_apps %}, {% data Your integration can use {% data variables.product.company_short %}'s API to fetch data and make changes to data on {% data variables.product.company_short %}. {% data variables.product.company_short %} has a REST API and a GraphQL API. For more information, see: -- "[AUTOTITLE](/rest/overview/about-githubs-apis)" +- "[AUTOTITLE](/rest/about-the-rest-api/comparing-githubs-rest-api-and-graphql-api)" - "[AUTOTITLE](/rest)" - "[AUTOTITLE](/graphql)" -Your integration can use webhooks to learn when specific events happen on {% data variables.product.company_short %}. For more information, see "[AUTOTITLE](/webhooks-and-events/webhooks/about-webhooks)." +Your integration can use webhooks to learn when specific events happen on {% data variables.product.company_short %}. For more information, see "[AUTOTITLE](/webhooks/about-webhooks)." -{% ifversion fpt or ghec %} If your integration is a {% data variables.product.prodname_github_app %} or custom action, you can publish your integration on {% data variables.product.prodname_marketplace %}. For more information, see "[AUTOTITLE](/apps/publishing-apps-to-github-marketplace/github-marketplace-overview/about-github-marketplace)" and "[AUTOTITLE](/actions/creating-actions/publishing-actions-in-github-marketplace)."{% endif %} +{% ifversion fpt or ghec %} If your integration is a {% data variables.product.prodname_github_app %} or custom action, you can publish your integration on {% data variables.product.prodname_marketplace %}. For more information, see "[AUTOTITLE](/apps/github-marketplace/github-marketplace-overview/about-github-marketplace-for-apps)" and "[AUTOTITLE](/actions/creating-actions/publishing-actions-in-github-marketplace)."{% endif %} diff --git a/content/get-started/exploring-integrations/about-using-integrations.md b/content/get-started/exploring-integrations/about-using-integrations.md index 2b3bb0487f..3d980e8b5c 100644 --- a/content/get-started/exploring-integrations/about-using-integrations.md +++ b/content/get-started/exploring-integrations/about-using-integrations.md @@ -23,7 +23,7 @@ Integrations are tools that extend {% data variables.product.company_short %}'s You can discover many integrations in [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace). {% data variables.product.prodname_marketplace %} includes {% data variables.product.prodname_github_apps %}, {% data variables.product.prodname_oauth_apps %}, and custom actions that you can use in {% data variables.product.prodname_actions %} workflows. You can also get integrations directly from the integration creator. -{% ifversion fpt or ghec or ghes %} For a list of featured {% data variables.product.company_short %} integrations, see "[AUTOTITLE](/get-started/exploring-integrations/github-extensions-and-integrations)."{% endif %} +{% ifversion fpt or ghec or ghes %} For a list of featured {% data variables.product.company_short %} integrations, see "[AUTOTITLE](/get-started/exploring-integrations/featured-github-integrations)."{% endif %} {% ifversion ghes %} diff --git a/content/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github.md b/content/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github.md index e3db05cdeb..170f4bc69f 100644 --- a/content/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github.md +++ b/content/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github.md @@ -24,7 +24,7 @@ If there's a particular topic that interests you, visit `github.com/topics/` element with the `prefers-color-scheme` media feature, you can add an image that changes depending on whether a visitor is using light or dark mode. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/managing-your-theme-settings)." +By using the HTML `` element with the `prefers-color-scheme` media feature, you can add an image that changes depending on whether a visitor is using light or dark mode. For more information, see "[AUTOTITLE](/get-started/accessibility/managing-your-theme-settings)." 1. Copy and paste the following markup into your {% ifversion ghae %}`about-me.md`{% else %}`README.md`{% endif %} file. diff --git a/content/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists.md b/content/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists.md index 057e7f31ee..04715354fc 100644 --- a/content/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists.md +++ b/content/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists.md @@ -17,7 +17,7 @@ topics: {% ifversion projects-v2-tasklists %} {% note %} -**Note:** For more information about the new iteration of tasklists, which is currently in beta, see "[AUTOTITLE](/issues/tracking-your-work-with-issues/about-tasklists)." +**Note:** For more information about the new iteration of tasklists, which is currently in beta, see "[AUTOTITLE](/issues/managing-your-tasks-with-tasklists/creating-a-tasklist)." {% endnote %} {% endif %} diff --git a/content/get-started/writing-on-github/working-with-advanced-formatting/writing-mathematical-expressions.md b/content/get-started/writing-on-github/working-with-advanced-formatting/writing-mathematical-expressions.md index e50a622dca..3db184a546 100644 --- a/content/get-started/writing-on-github/working-with-advanced-formatting/writing-mathematical-expressions.md +++ b/content/get-started/writing-on-github/working-with-advanced-formatting/writing-mathematical-expressions.md @@ -17,7 +17,7 @@ Mathematical expressions rendering is available in {% data variables.product.pro ## Writing inline expressions {% ifversion math-backtick-syntax %} -There are two options for delimiting a math expression inline with your text. You can either surround the expression with dollar symbols (`$`), or start the expression with $\` and end it with \`$. The latter syntax is useful when the expression you are writing contains characters that overlap with markdown syntax. For more information, see "[Basic writing and formatting syntax](/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax)." +There are two options for delimiting a math expression inline with your text. You can either surround the expression with dollar symbols (`$`), or start the expression with $\` and end it with \`$. The latter syntax is useful when the expression you are writing contains characters that overlap with markdown syntax. For more information, see "[AUTOTITLE](/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax)." {% else %} To include a math expression inline within your text, delimit the expression with dollar symbols `$`. {% endif %} From 68ea3288c2810687deaed4d154be7c1c005bb9c2 Mon Sep 17 00:00:00 2001 From: Devraj Mehta Date: Fri, 19 Jan 2024 08:17:55 -0500 Subject: [PATCH 27/75] Add docs for kerberos SPN override environment variable (#48600) Co-authored-by: hubwriter --- .../configuring-network-settings-for-github-copilot.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/copilot/configuring-github-copilot/configuring-network-settings-for-github-copilot.md b/content/copilot/configuring-github-copilot/configuring-network-settings-for-github-copilot.md index 6f4ae826ae..85a341b0c0 100644 --- a/content/copilot/configuring-github-copilot/configuring-network-settings-for-github-copilot.md +++ b/content/copilot/configuring-github-copilot/configuring-network-settings-for-github-copilot.md @@ -109,7 +109,7 @@ Kerberos is an authentication protocol that allows users and services to prove t Kerberos uses a service principal name (SPN) to uniquely identify a service instance. By default, the SPN is derived from the proxy URL. For example, if the proxy URL is `http://proxy.example.com:3128`, the SPN is `HTTP/proxy.example.com`. -If the default SPN isn't correct for your proxy, you can override the SPN in {% data variables.product.prodname_vscode_shortname %} and in JetBrains IDEs. You cannot currently override the default SPN in {% data variables.product.prodname_vs %}. +If the default SPN isn't correct for your proxy, you can override the SPN in {% data variables.product.prodname_vscode_shortname %} and in JetBrains IDEs. You cannot currently override the default SPN in {% data variables.product.prodname_vs %}. However, you can use the environment variable `AGENT_KERBEROS_SERVICE_PRINCIPAL` to override the SPN for {% data variables.product.prodname_vs %} and JetBrains IDEs. {% vscode %} From ffa25e5e3fd438fd42f877b81295d2676565d7bc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Jan 2024 13:34:27 +0000 Subject: [PATCH 28/75] Bump actions/cache from 3.3.1 to 4.0.0 (#48745) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Peter Bengtsson --- .github/workflows/link-check-daily.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/link-check-daily.yml b/.github/workflows/link-check-daily.yml index da5aea6002..bd5ac57366 100644 --- a/.github/workflows/link-check-daily.yml +++ b/.github/workflows/link-check-daily.yml @@ -49,7 +49,7 @@ jobs: run: src/early-access/scripts/merge-early-access.sh - name: Restore disk-cache file for external link checking - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 + uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 with: path: external-link-checker-db.json key: external-link-checker-${{ hashFiles('src/links/scripts/rendered-content-link-checker.js') }} From 87565ab08aca92d3d614b62a7d0b5026d937ecaa Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Fri, 19 Jan 2024 09:12:41 -0500 Subject: [PATCH 29/75] Remove GHAE in Liquid and front matter (4) (#48768) --- ...mission-levels-for-a-personal-account-repository.md | 3 +-- ...-for-a-project-board-owned-by-a-personal-account.md | 5 ++--- .../deleting-your-personal-account.md | 2 +- .../about-continuous-integration.md | 5 +---- .../building-and-testing-go.md | 10 +++------- .../building-and-testing-java-with-ant.md | 7 +------ .../building-and-testing-java-with-gradle.md | 7 +------ .../building-and-testing-java-with-maven.md | 7 +------ .../building-and-testing-net.md | 7 ++----- 9 files changed, 13 insertions(+), 40 deletions(-) diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-personal-account-repository.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-personal-account-repository.md index 26f541bf46..e1ba38c900 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-personal-account-repository.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-personal-account-repository.md @@ -10,7 +10,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - Accounts @@ -85,7 +84,7 @@ Collaborators can also perform the following actions. | Submit a review on a pull request that affects the mergeability of the pull request | "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request)" | | Create and edit a wiki for the repository | "[AUTOTITLE](/communities/documenting-your-project-with-wikis/about-wikis)" | | Create and edit releases for the repository | "[AUTOTITLE](/repositories/releasing-projects-on-github/managing-releases-in-a-repository)" | -| Act as a code owner for the repository | "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)" |{% ifversion fpt or ghae or ghec %} +| Act as a code owner for the repository | "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)" |{% ifversion fpt or ghec %} | Publish, view, or install packages | "[AUTOTITLE](/packages/learn-github-packages)" |{% endif %} | Remove themselves as collaborators on the repository | "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository)" | diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-project-board-owned-by-a-personal-account.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-project-board-owned-by-a-personal-account.md index 701011bb09..a04f4e6392 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-project-board-owned-by-a-personal-account.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-project-board-owned-by-a-personal-account.md @@ -10,7 +10,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' topics: - Accounts @@ -29,7 +28,7 @@ There are three levels of permissions for project board collaborators: The project board owner and collaborators with admin access have full control of the project board. In addition to all the permissions allowed by project board collaborators, a project board owner and collaborator with admin access can: - [Manage, view, and add collaborators](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-access-to-your-personal-accounts-project-boards) -- [Configure a project board as {% ifversion ghae %}internal{% else %}public{% endif %} or private](/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility) +- [Configure a project board as public or private](/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility) - [Delete a project board](/issues/organizing-your-work-with-project-boards/managing-project-boards/deleting-a-project-board) - [Close a project board](/issues/organizing-your-work-with-project-boards/managing-project-boards/closing-a-project-board) - [Reopen a closed project board](/issues/organizing-your-work-with-project-boards/managing-project-boards/reopening-a-closed-project-board) @@ -58,7 +57,7 @@ Collaborators with write access to a user-owned project board can: ## Project board visibility -You can change the project board's visibility from private to {% ifversion ghae %}internal{% else %}public{% endif %} and back again. By default, user-owned project boards are private. For more information, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility)." +You can change the project board's visibility from private to public and back again. By default, user-owned project boards are private. For more information, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility)." ## Further reading diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/deleting-your-personal-account.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/deleting-your-personal-account.md index 8c84da2b37..0cf4f7df3e 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/deleting-your-personal-account.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/deleting-your-personal-account.md @@ -55,7 +55,7 @@ Before you delete your personal account, make a copy of all repositories, privat {% warning %} -**Warning:** Once your personal account has been deleted, {% ifversion fpt or ghec %}{% data variables.product.company_short %}{% elsif ghes or ghae %}an enterprise owner{% endif %} cannot restore your content. +**Warning:** Once your personal account has been deleted, {% ifversion fpt or ghec %}{% data variables.product.company_short %}{% elsif ghes %}an enterprise owner{% endif %} cannot restore your content. {% endwarning %} diff --git a/content/actions/automating-builds-and-tests/about-continuous-integration.md b/content/actions/automating-builds-and-tests/about-continuous-integration.md index 1d2189b869..911d4bf214 100644 --- a/content/actions/automating-builds-and-tests/about-continuous-integration.md +++ b/content/actions/automating-builds-and-tests/about-continuous-integration.md @@ -10,7 +10,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: overview topics: @@ -30,9 +29,7 @@ Building and testing your code requires a server. You can build and test updates ## About continuous integration using {% data variables.product.prodname_actions %} -{% ifversion ghae %}CI using {% data variables.product.prodname_actions %} offers workflows that can build the code in your repository and run your tests. Workflows can run on runner systems that you host. For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners)." -{% else %} CI using {% data variables.product.prodname_actions %} offers workflows that can build the code in your repository and run your tests. Workflows can run on {% data variables.product.prodname_dotcom %}-hosted virtual machines, or on machines that you host yourself. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners)" and "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners)." -{% endif %} + CI using {% data variables.product.prodname_actions %} offers workflows that can build the code in your repository and run your tests. Workflows can run on {% data variables.product.prodname_dotcom %}-hosted virtual machines, or on machines that you host yourself. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners)" and "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners)." You can configure your CI workflow to run when a {% data variables.product.prodname_dotcom %} event occurs (for example, when new code is pushed to your repository), on a set schedule, or when an external event occurs using the repository dispatch webhook. diff --git a/content/actions/automating-builds-and-tests/building-and-testing-go.md b/content/actions/automating-builds-and-tests/building-and-testing-go.md index dea32c55f7..96ef8ea780 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-go.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-go.md @@ -4,24 +4,20 @@ intro: You can create a continuous integration (CI) workflow to build and test y versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: tutorial topics: - CI shortTitle: Build & test Go --- - + {% data reusables.actions.enterprise-github-hosted-runners %} ## Introduction This guide shows you how to build, test, and publish a Go package. -{% ifversion ghae %} -{% data reusables.actions.self-hosted-runners-software %} -{% else %} {% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with preinstalled software, which includes the dependencies for Go. For a full list of up-to-date software and the preinstalled versions of Go, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#preinstalled-software)." -{% endif %} +{% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with preinstalled software, which includes the dependencies for Go. For a full list of up-to-date software and the preinstalled versions of Go, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#preinstalled-software)." ## Prerequisites @@ -44,7 +40,7 @@ We recommend that you have a basic understanding of the Go language. For more in ![Screenshot of the "Choose a workflow" page. The "Configure" button on the "Go" workflow is highlighted with an orange outline.](/assets/images/help/actions/starter-workflow-go.png) -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} If you don't find the "Go - by {% data variables.product.prodname_actions %}" starter workflow, copy the following workflow code to a new file called `go.yml` in the `.github/workflows` directory of your repository. ```yaml copy diff --git a/content/actions/automating-builds-and-tests/building-and-testing-java-with-ant.md b/content/actions/automating-builds-and-tests/building-and-testing-java-with-ant.md index ffdc9ece7f..addee74c79 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-java-with-ant.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-java-with-ant.md @@ -7,7 +7,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: tutorial topics: @@ -23,11 +22,7 @@ shortTitle: Build & test Java & Ant This guide shows you how to create a workflow that performs continuous integration (CI) for your Java project using the Ant build system. The workflow you create will allow you to see when commits to a pull request cause build or test failures against your default branch; this approach can help ensure that your code is always healthy. You can extend your CI workflow to upload artifacts from a workflow run. -{% ifversion ghae %} -{% data reusables.actions.self-hosted-runners-software %} -{% else %} {% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with pre-installed software, which includes Java Development Kits (JDKs) and Ant. For a list of software and the pre-installed versions for JDK and Ant, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software)". -{% endif %} ## Prerequisites @@ -51,7 +46,7 @@ We recommend that you have a basic understanding of Java and the Ant framework. 1. The "{% ifversion actions-starter-template-ui %}Choose a workflow{% else %}Choose a workflow template{% endif %}" page shows a selection of recommended starter workflows. Search for "Java with Ant". 1. On the "Java with Ant" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} If you don't find the "Java with Ant" starter workflow, copy the following workflow code to a new file called `ant.yml` in the `.github/workflows` directory of your repository. diff --git a/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md b/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md index b3387b5e8a..d40bab4812 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md @@ -7,7 +7,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: tutorial topics: @@ -23,11 +22,7 @@ shortTitle: Build & test Java & Gradle This guide shows you how to create a workflow that performs continuous integration (CI) for your Java project using the Gradle build system. The workflow you create will allow you to see when commits to a pull request cause build or test failures against your default branch; this approach can help ensure that your code is always healthy. You can extend your CI workflow to {% ifversion actions-caching %}cache files and{% endif %} upload artifacts from a workflow run. -{% ifversion ghae %} -{% data reusables.actions.self-hosted-runners-software %} -{% else %} {% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with pre-installed software, which includes Java Development Kits (JDKs) and Gradle. For a list of software and the pre-installed versions for JDK and Gradle, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software)". -{% endif %} ## Prerequisites @@ -51,7 +46,7 @@ We recommend that you have a basic understanding of Java and the Gradle framewor 1. The "{% ifversion actions-starter-template-ui %}Choose a workflow{% else %}Choose a workflow template{% endif %}" page shows a selection of recommended starter workflows. Search for "Java with Gradle". 1. On the "Java with Gradle" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} If you don't find the "Java with Gradle" starter workflow, copy the following workflow code to a new file called `gradle.yml` in the `.github/workflows` directory of your repository. diff --git a/content/actions/automating-builds-and-tests/building-and-testing-java-with-maven.md b/content/actions/automating-builds-and-tests/building-and-testing-java-with-maven.md index 51648c6c7a..758d5c5fd4 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-java-with-maven.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-java-with-maven.md @@ -7,7 +7,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: tutorial topics: @@ -23,11 +22,7 @@ shortTitle: Build & test Java with Maven This guide shows you how to create a workflow that performs continuous integration (CI) for your Java project using the Maven software project management tool. The workflow you create will allow you to see when commits to a pull request cause build or test failures against your default branch; this approach can help ensure that your code is always healthy. You can extend your CI workflow to {% ifversion actions-caching %}cache files and{% endif %} upload artifacts from a workflow run. -{% ifversion ghae %} -{% data reusables.actions.self-hosted-runners-software %} -{% else %} {% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with pre-installed software, which includes Java Development Kits (JDKs) and Maven. For a list of software and the pre-installed versions for JDK and Maven, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software)". -{% endif %} ## Prerequisites @@ -51,7 +46,7 @@ We recommend that you have a basic understanding of Java and the Maven framework 1. The "{% ifversion actions-starter-template-ui %}Choose a workflow{% else %}Choose a workflow template{% endif %}" page shows a selection of recommended starter workflows. Search for "Java with Maven". 1. On the "Java with Maven" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} If you don't find the "Java with Maven" starter workflow, copy the following workflow code to a new file called `maven.yml` in the `.github/workflows` directory of your repository. diff --git a/content/actions/automating-builds-and-tests/building-and-testing-net.md b/content/actions/automating-builds-and-tests/building-and-testing-net.md index ddd040e677..e0561112a6 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-net.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-net.md @@ -6,7 +6,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' shortTitle: Build & test .NET --- @@ -17,9 +16,7 @@ shortTitle: Build & test .NET This guide shows you how to build, test, and publish a .NET package. -{% ifversion ghae %} To build and test your .NET project on {% data variables.product.prodname_ghe_managed %}, the .NET Core SDK is required. {% data reusables.actions.self-hosted-runners-software %} -{% else %} {% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with preinstalled software, which includes the .NET Core SDK. For a full list of up-to-date software and the preinstalled versions of .NET Core SDK, see [software installed on {% data variables.product.prodname_dotcom %}-hosted runners](/actions/using-github-hosted-runners/about-github-hosted-runners). -{% endif %} + {% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with preinstalled software, which includes the .NET Core SDK. For a full list of up-to-date software and the preinstalled versions of .NET Core SDK, see [software installed on {% data variables.product.prodname_dotcom %}-hosted runners](/actions/using-github-hosted-runners/about-github-hosted-runners). ## Prerequisites @@ -39,7 +36,7 @@ We recommend that you have a basic understanding of the .NET Core SDK. For more 1. The "{% ifversion actions-starter-template-ui %}Choose a workflow{% else %}Choose a workflow template{% endif %}" page shows a selection of recommended starter workflows. Search for "dotnet". 1. On the ".NET" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} If you don't find the ".NET" starter workflow, copy the following workflow code to a new file called `dotnet.yml` in the `.github/workflows` directory of your repository. From 536742a010912cc14b4720229ae2b190b6e0b377 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Fri, 19 Jan 2024 10:01:53 -0500 Subject: [PATCH 30/75] Remove GHAE in Liquid and front matter (5) (#48769) --- .../building-and-testing-nodejs.md | 7 ++----- .../building-and-testing-powershell.md | 6 +----- .../building-and-testing-python.md | 8 ++------ .../building-and-testing-ruby.md | 3 +-- .../building-and-testing-swift.md | 7 ++----- .../creating-actions/creating-a-composite-action.md | 3 +-- .../creating-a-docker-container-action.md | 3 +-- .../creating-actions/creating-a-javascript-action.md | 3 +-- .../metadata-syntax-for-github-actions.md | 3 +-- 9 files changed, 12 insertions(+), 31 deletions(-) diff --git a/content/actions/automating-builds-and-tests/building-and-testing-nodejs.md b/content/actions/automating-builds-and-tests/building-and-testing-nodejs.md index 5ff4fcf675..be8d4145b0 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-nodejs.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-nodejs.md @@ -8,7 +8,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: tutorial topics: @@ -46,7 +45,7 @@ We recommend that you have a basic understanding of Node.js, YAML, workflow conf 1. Filter the selection of workflows by clicking **Continuous integration**. 1. On the "Node.js" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} If you don't find the "Node.js" starter workflow, copy the following workflow code to a new file called `node.js.yml` in the `.github/workflows` directory of your repository. @@ -144,9 +143,7 @@ jobs: ``` If you don't specify a Node.js version, {% data variables.product.prodname_dotcom %} uses the environment's default Node.js version. -{% ifversion ghae %} {% data reusables.actions.self-hosted-runners-software %} -{% else %} For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software)". -{% endif %} +For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software)". ## Installing dependencies diff --git a/content/actions/automating-builds-and-tests/building-and-testing-powershell.md b/content/actions/automating-builds-and-tests/building-and-testing-powershell.md index 7aa9b81362..53710fb8f8 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-powershell.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-powershell.md @@ -6,7 +6,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' authors: - potatoqualitee @@ -25,10 +24,7 @@ This guide shows you how to use PowerShell for CI. It describes how to use Peste {% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with pre-installed software, which includes PowerShell and Pester. -{% ifversion ghae %} -{% data reusables.actions.self-hosted-runners-software %} -{% else %}For a full list of up-to-date software and the pre-installed versions of PowerShell and Pester, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software)". -{% endif %} +For a full list of up-to-date software and the pre-installed versions of PowerShell and Pester, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software)". ## Prerequisites diff --git a/content/actions/automating-builds-and-tests/building-and-testing-python.md b/content/actions/automating-builds-and-tests/building-and-testing-python.md index 382740ee72..af9dcfc4c8 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-python.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-python.md @@ -8,7 +8,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: tutorial topics: @@ -23,10 +22,7 @@ shortTitle: Build & test Python This guide shows you how to build, test, and publish a Python package. -{% ifversion ghae %} -{% data reusables.actions.self-hosted-runners-software %} -{% else %} {% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with pre-installed software, which includes Python and PyPy. You don't have to install anything! For a full list of up-to-date software and the pre-installed versions of Python and PyPy, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software)". -{% endif %} +{% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with pre-installed software, which includes Python and PyPy. You don't have to install anything! For a full list of up-to-date software and the pre-installed versions of Python and PyPy, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software)". ## Prerequisites @@ -51,7 +47,7 @@ We recommend that you have a basic understanding of Python, and pip. For more in 1. The "{% ifversion actions-starter-template-ui %}Choose a workflow{% else %}Choose a workflow template{% endif %}" page shows a selection of recommended starter workflows. Search for "Python application". 1. On the "Python application" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} If you don't find the "Python application" starter workflow, copy the following workflow code to a new file called `python-app.yml` in the `.github/workflows` directory of your repository. diff --git a/content/actions/automating-builds-and-tests/building-and-testing-ruby.md b/content/actions/automating-builds-and-tests/building-and-testing-ruby.md index 56a78b6168..321c6d7f48 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-ruby.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-ruby.md @@ -6,7 +6,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: tutorial topics: @@ -41,7 +40,7 @@ We recommend that you have a basic understanding of Ruby, YAML, workflow configu 1. Filter the selection of workflows by clicking **Continuous integration**. 1. On the "Ruby" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} If you don't find the "Ruby" starter workflow, copy the following workflow code to a new file called `ruby.yml` in the `.github/workflows` directory of your repository. diff --git a/content/actions/automating-builds-and-tests/building-and-testing-swift.md b/content/actions/automating-builds-and-tests/building-and-testing-swift.md index 8c6fe8b8a3..062984dff0 100644 --- a/content/actions/automating-builds-and-tests/building-and-testing-swift.md +++ b/content/actions/automating-builds-and-tests/building-and-testing-swift.md @@ -6,7 +6,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: tutorial topics: @@ -21,8 +20,7 @@ shortTitle: Build & test Swift This guide shows you how to build and test a Swift package. -{% ifversion ghae %} To build and test your Swift project on {% data variables.product.prodname_ghe_managed %}, the necessary Swift dependencies are required. {% data reusables.actions.self-hosted-runners-software %} -{% else %}{% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with preinstalled software, and the Ubuntu and macOS runners include the dependencies for building Swift packages. For a full list of up-to-date software and the preinstalled versions of Swift and Xcode, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software)."{% endif %} +{% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with preinstalled software, and the Ubuntu and macOS runners include the dependencies for building Swift packages. For a full list of up-to-date software and the preinstalled versions of Swift and Xcode, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software)." ## Prerequisites @@ -43,7 +41,7 @@ We recommend that you have a basic understanding of Swift packages. For more inf 1. Filter the selection of workflows by clicking **Continuous integration**. 1. On the "Swift" workflow, click {% ifversion actions-starter-template-ui %}**Configure**{% else %}**Set up this workflow**{% endif %}. -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} If you don't find the "Swift" starter workflow, copy the following workflow code to a new file called `swift.yml` in the `.github/workflows` directory of your repository. @@ -95,7 +93,6 @@ You can configure your job to use multiple versions of Swift in a matrix. {% data reusables.actions.actions-use-sha-pinning-comment %} - name: Swift on: [push] diff --git a/content/actions/creating-actions/creating-a-composite-action.md b/content/actions/creating-actions/creating-a-composite-action.md index a7881d5dab..9208652014 100644 --- a/content/actions/creating-actions/creating-a-composite-action.md +++ b/content/actions/creating-actions/creating-a-composite-action.md @@ -7,7 +7,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: tutorial defaultPlatform: linux @@ -27,7 +26,7 @@ Once you complete this project, you should understand how to build your own comp ## Prerequisites -Before you begin, you'll create a repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. +Before you begin, you'll create a repository on {% data variables.location.product_location %}. 1. Create a new public repository on {% data variables.location.product_location %}. You can choose any repository name, or use the following `hello-world-composite-action` example. You can add these files after your project has been pushed to {% data variables.product.product_name %}. For more information, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/creating-a-new-repository)." diff --git a/content/actions/creating-actions/creating-a-docker-container-action.md b/content/actions/creating-actions/creating-a-docker-container-action.md index 87f719e60e..8386bad645 100644 --- a/content/actions/creating-actions/creating-a-docker-container-action.md +++ b/content/actions/creating-actions/creating-a-docker-container-action.md @@ -10,7 +10,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: tutorial topics: @@ -184,7 +183,7 @@ git push --follow-tags Now you're ready to test your action out in a workflow. {% ifversion private-actions %}- When an action is in a private repository, you can control who can access it. For more information, see "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-a-private-repository)."{% else %}- When an action is in a private repository, the action can only be used in workflows in the same repository.{% endif %} -{% ifversion ghes or ghec or ghae %}{% ifversion internal-actions %}- When an action is in an internal repository, you can control who can access it. For more information, see "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-an-internal-repository)."{% else %}- When an action is in an internal repository, the action can only be used in workflows in the same repository.{% endif %}{% endif %} +{% ifversion ghes or ghec %}{% ifversion internal-actions %}- When an action is in an internal repository, you can control who can access it. For more information, see "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-an-internal-repository)."{% else %}- When an action is in an internal repository, the action can only be used in workflows in the same repository.{% endif %}{% endif %} - Public actions can be used by workflows in any repository. {% data reusables.actions.enterprise-marketplace-actions %} diff --git a/content/actions/creating-actions/creating-a-javascript-action.md b/content/actions/creating-actions/creating-a-javascript-action.md index 806f5655a5..67aaee7f9f 100644 --- a/content/actions/creating-actions/creating-a-javascript-action.md +++ b/content/actions/creating-actions/creating-a-javascript-action.md @@ -10,7 +10,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: tutorial topics: @@ -215,7 +214,7 @@ Checking in your `node_modules` directory can cause problems. As an alternative, Now you're ready to test your action out in a workflow. -Public actions can be used by workflows in any repository. When an action is in a private{% ifversion ghec or ghes or ghae%} or internal{% endif %} repository, the repository settings dictate whether the action is available only within the same repository or also to other repositories owned by the same {% ifversion ghec or ghes or ghae %}organization or enterprise{% else %}user or organization{% endif %}. For more information, see "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository)." +Public actions can be used by workflows in any repository. When an action is in a private{% ifversion ghec or ghes %} or internal{% endif %} repository, the repository settings dictate whether the action is available only within the same repository or also to other repositories owned by the same {% ifversion ghec or ghes %}organization or enterprise{% else %}user or organization{% endif %}. For more information, see "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository)." {% data reusables.actions.enterprise-marketplace-actions %} diff --git a/content/actions/creating-actions/metadata-syntax-for-github-actions.md b/content/actions/creating-actions/metadata-syntax-for-github-actions.md index 22495f6fe7..fc2fe04643 100644 --- a/content/actions/creating-actions/metadata-syntax-for-github-actions.md +++ b/content/actions/creating-actions/metadata-syntax-for-github-actions.md @@ -10,7 +10,6 @@ redirect_from: versions: fpt: '*' ghes: '*' - ghae: '*' ghec: '*' type: reference --- @@ -366,7 +365,7 @@ runs: last_name: Octocat ``` -{% ifversion ghes or ghae %} +{% ifversion ghes %} #### `runs.steps[*].continue-on-error` From d786881fa2a09ac2c284cb92e8c97b389e2a0658 Mon Sep 17 00:00:00 2001 From: mc <42146119+mchammer01@users.noreply.github.com> Date: Fri, 19 Jan 2024 15:05:50 +0000 Subject: [PATCH 31/75] Dependabot sometimes doesn't automatically close unnecessary PRs (#48717) Co-authored-by: Vanessa --- .../troubleshooting-dependabot-errors.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/content/code-security/dependabot/working-with-dependabot/troubleshooting-dependabot-errors.md b/content/code-security/dependabot/working-with-dependabot/troubleshooting-dependabot-errors.md index 3dc8b6ab2a..99850f5104 100644 --- a/content/code-security/dependabot/working-with-dependabot/troubleshooting-dependabot-errors.md +++ b/content/code-security/dependabot/working-with-dependabot/troubleshooting-dependabot-errors.md @@ -109,6 +109,16 @@ If a security vulnerability is released for `B` versions `<2.0.0` and a patch is {% data variables.product.prodname_dependabot %} automatically generates a pull request that upgrades both the locked parent and child transitive dependencies.{% endif %} +### {% data variables.product.prodname_dependabot %} fails to close a open pull request for an update that has already been applied on the default branch + +{% data variables.product.prodname_dependabot %} will close pull requests for dependency updates, once it detects these updates have been committed to the default branch. However, in rare circumstances, the pull request may remain open. If you notice that you have committed an update to a dependency manually, and that the pull request for that same update is still open, you can use one of the following commands in a comment on the pull request: +- `@dependabot recreate`, or +- `@dependabot rebase`. + +Either comment will trigger {% data variables.product.prodname_dependabot %} to check if the dependency is no longer upgradable or vulnerable. If {% data variables.product.prodname_dependabot %} detects that the pull request is no longer required, it will close the pull request in this particular case. + +For more information about {% data variables.product.prodname_dependabot %} comment commands, see "[AUTOTITLE](/code-security/dependabot/working-with-dependabot/managing-pull-requests-for-dependency-updates#managing-dependabot-pull-requests-with-comment-commands)." + ### {% data variables.product.prodname_dependabot %} cannot update to the required version as there is already an open pull request for the latest version **Security updates only.** {% data variables.product.prodname_dependabot %} will not create a pull request to update the vulnerable dependency to a secure version because there is already an open pull request to update this dependency. You will see this error when a vulnerability is detected in a single dependency and there's already an open pull request to update the dependency to the latest version. From 8dafcf97d05ff911a29059443352dbe9baa9bda6 Mon Sep 17 00:00:00 2001 From: Sophie <29382425+sophietheking@users.noreply.github.com> Date: Fri, 19 Jan 2024 16:23:11 +0100 Subject: [PATCH 32/75] Follow-up to: managing-a-branch-protection-rule.md rules need clarification (#48766) Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> --- .../repositories/rulesets-unsupported-fnmatch-syntax.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/data/reusables/repositories/rulesets-unsupported-fnmatch-syntax.md b/data/reusables/repositories/rulesets-unsupported-fnmatch-syntax.md index 5279571eca..598f7cfed8 100644 --- a/data/reusables/repositories/rulesets-unsupported-fnmatch-syntax.md +++ b/data/reusables/repositories/rulesets-unsupported-fnmatch-syntax.md @@ -1,5 +1,9 @@ {% note %} -**Note:** Although {% data variables.product.prodname_dotcom %} supports `File::FNM_PATHNAME` in `fnmatch` syntax, `File::FNM_EXTGLOB` is not supported. +**Note:** Not all expressions from the `fnmatch` syntax are supported in branch protection rules. Please be aware of the following constraints: + +- You cannot use the backslash (`\`) character as a quoting character, as {% data variables.product.prodname_dotcom %} does not support the use of backslashes in branch protection rules. +- You can specify character sets within square brackets (`[]`), but you cannot currently complement a set with the `^` operator (e.g., `[^charset]`). +- Although {% data variables.product.prodname_dotcom %} supports `File::FNM_PATHNAME` in `fnmatch` syntax, `File::FNM_EXTGLOB` is not supported. {% endnote %} From ad4644e2fd478d66cc9c739de1258426752ec038 Mon Sep 17 00:00:00 2001 From: mc <42146119+mchammer01@users.noreply.github.com> Date: Fri, 19 Jan 2024 15:48:09 +0000 Subject: [PATCH 33/75] Remove some GHAE versioning for secret scanning pattern tables (#48773) --- .../secret-scanning-patterns.md | 22 -- data/secret-scanning.yml | 234 ------------------ 2 files changed, 256 deletions(-) diff --git a/content/code-security/secret-scanning/secret-scanning-patterns.md b/content/code-security/secret-scanning/secret-scanning-patterns.md index 97ba408af7..e57b508c04 100644 --- a/content/code-security/secret-scanning/secret-scanning-patterns.md +++ b/content/code-security/secret-scanning/secret-scanning-patterns.md @@ -176,28 +176,6 @@ Push protection and validity checks are not supported for non-provider patterns. {% endif %} - -{% ifversion ghae < 3.5 %} - -| Provider | Token | {% data variables.product.prodname_secret_scanning_caps %} alert | -|----|:----|:----:| -{%- for entry in secretScanningData %} -| {{ entry.provider }} | {{ entry.secretType }} | {% if entry.isPrivateWithGhas %}{% octicon "check" aria-label="Supported" %}{% else %}{% octicon "x" aria-label="Unsupported" %}{% endif %} | -{%- endfor %} - -{% endif %} - - -{% ifversion ghae = 3.5 or ghae > 3.5 %} - -| Provider | Token | {% data variables.product.prodname_secret_scanning_caps %} alert | Push protection | -|----|:----|:----:|:----:| -{%- for entry in secretScanningData %} -| {{ entry.provider }} | {{ entry.secretType }} | {% if entry.isPrivateWithGhas %}{% octicon "check" aria-label="Supported" %}{% else %}{% octicon "x" aria-label="Unsupported" %}{% endif %} | {% if entry.hasPushProtection %}{% octicon "check" aria-label="Supported" %}{% else %}{% octicon "x" aria-label="Unsupported" %}{% endif %} | -{%- endfor %} - -{% endif %} - ## Further reading - "[AUTOTITLE](/code-security/getting-started/securing-your-repository)" diff --git a/data/secret-scanning.yml b/data/secret-scanning.yml index b0e1fb04d8..37fa026eaa 100644 --- a/data/secret-scanning.yml +++ b/data/secret-scanning.yml @@ -5,7 +5,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -18,7 +17,6 @@ fpt: '*' ghec: '*' ghes: '>=3.11' - ghae: '>=3.11' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -31,7 +29,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -44,7 +41,6 @@ fpt: '*' ghec: '*' ghes: '>=3.11' - ghae: '>=3.11' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -57,7 +53,6 @@ fpt: '*' ghec: '*' ghes: '>=3.11' - ghae: '>=3.11' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -70,7 +65,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -83,7 +77,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -96,7 +89,6 @@ fpt: '*' ghec: '*' ghes: '>3.9' - ghae: '>3.9' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -109,7 +101,6 @@ fpt: '*' ghec: '*' ghes: '>3.9' - ghae: '>3.9' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -122,7 +113,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -135,7 +125,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -148,7 +137,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -161,7 +149,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -186,7 +173,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -199,7 +185,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -212,7 +197,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -225,7 +209,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -238,7 +221,6 @@ fpt: '*' ghec: '*' ghes: '>=3.11' - ghae: '>=3.11' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -251,7 +233,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -264,7 +245,6 @@ fpt: '*' ghec: '*' ghes: '>3.8' - ghae: '>3.8' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -277,7 +257,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -290,7 +269,6 @@ fpt: '*' ghec: '*' ghes: '>=3.11' - ghae: '>=3.11' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -303,7 +281,6 @@ fpt: '*' ghec: '*' ghes: '>3.8' - ghae: '>3.8' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -316,7 +293,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -329,7 +305,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>=3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -342,7 +317,6 @@ fpt: '*' ghec: '*' ghes: '>3.8' - ghae: '>3.8' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -355,7 +329,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -368,7 +341,6 @@ fpt: '*' ghec: '*' ghes: '>3.8' - ghae: '>3.8' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -381,7 +353,6 @@ fpt: '*' ghec: '*' ghes: '>3.8' - ghae: '>3.8' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -394,7 +365,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -407,7 +377,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '<3.4' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -420,7 +389,6 @@ fpt: '*' ghec: '*' ghes: '>=3.11' - ghae: '>=3.11' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -433,7 +401,6 @@ fpt: '*' ghec: '*' ghes: '>3.6' - ghae: '>3.6' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -446,7 +413,6 @@ fpt: '*' ghec: '*' ghes: '>=3.11' - ghae: '>=3.11' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -459,7 +425,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -472,7 +437,6 @@ fpt: '*' ghec: '*' ghes: '>=3.9' - ghae: '>=3.9' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -497,7 +461,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -510,7 +473,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -523,7 +485,6 @@ fpt: '*' ghec: '*' ghes: '>3.7' - ghae: '>3.7' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -536,7 +497,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -549,7 +509,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -562,7 +521,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -586,7 +544,6 @@ fpt: '*' ghec: '*' ghes: '>=3.9' - ghae: '>= 3.9' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -599,7 +556,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -623,7 +579,6 @@ fpt: '*' ghec: '*' ghes: '>=3.10' - ghae: '>=3.10' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -636,7 +591,6 @@ fpt: '*' ghec: '*' ghes: '>3.8' - ghae: '>3.8' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -649,7 +603,6 @@ fpt: '*' ghec: '*' ghes: '>3.8' - ghae: '>3.8' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -662,7 +615,6 @@ fpt: '*' ghec: '*' ghes: '>3.8' - ghae: '>3.8' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -675,7 +627,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -688,7 +639,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -701,7 +651,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -714,7 +663,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -727,7 +675,6 @@ fpt: '*' ghec: '*' ghes: '>3.7' - ghae: '>3.7' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -740,7 +687,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -753,7 +699,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -766,7 +711,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -779,7 +723,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -792,7 +735,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -805,7 +747,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -818,7 +759,6 @@ fpt: '*' ghec: '*' ghes: '>=3.9' - ghae: '>= 3.9' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -831,7 +771,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -844,7 +783,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -857,7 +795,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -870,7 +807,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -883,7 +819,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -896,7 +831,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -909,7 +843,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -922,7 +855,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -935,7 +867,6 @@ fpt: '*' ghec: '*' ghes: '>3.8' - ghae: '>3.8' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -948,7 +879,6 @@ fpt: '*' ghec: '*' ghes: '>3.8' - ghae: '>3.8' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -961,7 +891,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -974,7 +903,6 @@ fpt: '*' ghec: '*' ghes: '>3.7' - ghae: '>3.7' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -987,7 +915,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -1000,7 +927,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1013,7 +939,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1026,7 +951,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -1039,7 +963,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -1052,7 +975,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1065,7 +987,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1078,7 +999,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1091,7 +1011,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1104,7 +1023,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1117,7 +1035,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1130,7 +1047,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1143,7 +1059,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -1156,7 +1071,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -1169,7 +1083,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1182,7 +1095,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1195,7 +1107,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1208,7 +1119,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1221,7 +1131,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1234,7 +1143,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1247,7 +1155,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -1260,7 +1167,6 @@ fpt: '*' ghec: '*' ghes: '>3.5' - ghae: '>3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1273,7 +1179,6 @@ fpt: '*' ghec: '*' ghes: '>3.7' - ghae: '>3.7' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1286,7 +1191,6 @@ fpt: '*' ghec: '*' ghes: '>3.7' - ghae: '>3.7' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1299,7 +1203,6 @@ fpt: '*' ghec: '*' ghes: '>3.7' - ghae: '>3.7' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1312,7 +1215,6 @@ fpt: '*' ghec: '*' ghes: '>3.7' - ghae: '>3.7' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1325,7 +1227,6 @@ fpt: '*' ghec: '*' ghes: '>3.8' - ghae: '>3.8' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1338,7 +1239,6 @@ fpt: '*' ghec: '*' ghes: '>3.8' - ghae: '>3.8' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1351,7 +1251,6 @@ fpt: '*' ghec: '*' ghes: '>3.8' - ghae: '>3.8' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1364,7 +1263,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1377,7 +1275,6 @@ fpt: '*' ghec: '*' ghes: '>3.9' - ghae: '>3.9' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1390,7 +1287,6 @@ fpt: '*' ghec: '*' ghes: '>3.9' - ghae: '>3.9' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1403,7 +1299,6 @@ fpt: '*' ghec: '*' ghes: '>3.9' - ghae: '>3.9' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1416,7 +1311,6 @@ fpt: '*' ghec: '*' ghes: '>3.9' - ghae: '>3.9' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1429,7 +1323,6 @@ fpt: '*' ghec: '*' ghes: '>=3.11' - ghae: '>=3.11' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1442,7 +1335,6 @@ fpt: '*' ghec: '*' ghes: '>=3.11' - ghae: '>=3.11' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1455,7 +1347,6 @@ fpt: '*' ghec: '*' ghes: '>=3.11' - ghae: '>=3.11' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1468,7 +1359,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1481,7 +1371,6 @@ fpt: '*' ghec: '*' ghes: '>3.7' - ghae: '>3.7' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1494,7 +1383,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1507,7 +1395,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1520,7 +1407,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1533,7 +1419,6 @@ fpt: '*' ghec: '*' ghes: '>3.4' - ghae: '>3.4' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -1546,7 +1431,6 @@ fpt: '*' ghec: '*' ghes: '>3.6' - ghae: '>3.6' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1559,7 +1443,6 @@ fpt: '*' ghec: '*' ghes: '>3.6' - ghae: '>3.6' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1572,7 +1455,6 @@ fpt: '*' ghec: '*' ghes: '>3.10' - ghae: '>3.10' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1585,7 +1467,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1598,7 +1479,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1611,7 +1491,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1624,7 +1503,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1637,7 +1515,6 @@ fpt: '*' ghec: '*' ghes: '>3.7' - ghae: '>3.7' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -1650,7 +1527,6 @@ fpt: '*' ghec: '*' ghes: '>3.8' - ghae: '>3.8' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1663,7 +1539,6 @@ fpt: '*' ghec: '*' ghes: '>3.8' - ghae: '>3.8' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1676,7 +1551,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -1700,7 +1574,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -1713,7 +1586,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1726,7 +1598,6 @@ fpt: '*' ghec: '*' ghes: '>=3.11' - ghae: '>=3.11' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1739,7 +1610,6 @@ fpt: '*' ghec: '*' ghes: '>=3.10' - ghae: '>=3.10' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1752,7 +1622,6 @@ fpt: '*' ghec: '*' ghes: '>=3.10' - ghae: '>=3.10' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1765,7 +1634,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -1778,7 +1646,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -1791,7 +1658,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1804,7 +1670,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1817,7 +1682,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1830,7 +1694,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1843,7 +1706,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1856,7 +1718,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1869,7 +1730,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1882,7 +1742,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1895,7 +1754,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1908,7 +1766,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1921,7 +1778,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -1934,7 +1790,6 @@ fpt: '*' ghec: '*' ghes: '>3.9' - ghae: '>3.9' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1947,7 +1802,6 @@ fpt: '*' ghec: '*' ghes: '>=3.10' - ghae: '>= 3.10' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1960,7 +1814,6 @@ fpt: '*' ghec: '*' ghes: '>=3.10' - ghae: '>= 3.10' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1973,7 +1826,6 @@ fpt: '*' ghec: '*' ghes: '>=3.10' - ghae: '>= 3.10' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1986,7 +1838,6 @@ fpt: '*' ghec: '*' ghes: '>=3.10' - ghae: '>= 3.10' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1999,7 +1850,6 @@ fpt: '*' ghec: '*' ghes: '>=3.10' - ghae: '>= 3.10' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -2012,7 +1862,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2025,7 +1874,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2038,7 +1886,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2051,7 +1898,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2064,7 +1910,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2077,7 +1922,6 @@ fpt: '*' ghec: '*' ghes: '>3.7' - ghae: '>3.7' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2090,7 +1934,6 @@ fpt: '*' ghec: '*' ghes: '>3.7' - ghae: '>3.7' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2103,7 +1946,6 @@ fpt: '*' ghec: '*' ghes: '>3.10' - ghae: '>3.10' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2116,7 +1958,6 @@ fpt: '*' ghec: '*' ghes: '>3.10' - ghae: '>3.10' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2129,7 +1970,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2142,7 +1982,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2155,7 +1994,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2168,7 +2006,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2181,7 +2018,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2194,7 +2030,6 @@ fpt: '*' ghec: '*' ghes: '>3.9' - ghae: '>3.9' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -2207,7 +2042,6 @@ fpt: '*' ghec: '*' ghes: '>3.6' - ghae: '>3.6' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2220,7 +2054,6 @@ fpt: '*' ghec: '*' ghes: '>3.6' - ghae: '>3.6' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -2244,7 +2077,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2257,7 +2089,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2270,7 +2101,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2283,7 +2113,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2296,7 +2125,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2309,7 +2137,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2322,7 +2149,6 @@ fpt: '*' ghec: '*' ghes: '>3.6' - ghae: '>3.6' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2335,7 +2161,6 @@ fpt: '*' ghec: '*' ghes: '>3.5' - ghae: '>3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2348,7 +2173,6 @@ fpt: '*' ghec: '*' ghes: '>3.9' - ghae: '>3.9' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2361,7 +2185,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2374,7 +2197,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2387,7 +2209,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2400,7 +2221,6 @@ fpt: '*' ghec: '*' ghes: '>3.9' - ghae: '>3.9' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2413,7 +2233,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2426,7 +2245,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2439,7 +2257,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2452,7 +2269,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -2465,7 +2281,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2478,7 +2293,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2491,7 +2305,6 @@ fpt: '*' ghec: '*' ghes: '>3.4' - ghae: '>3.4' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2504,7 +2317,6 @@ fpt: '*' ghec: '*' ghes: '>3.4' - ghae: '>3.4' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2517,7 +2329,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2530,7 +2341,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2543,7 +2353,6 @@ fpt: '*' ghec: '*' ghes: '>3.4' - ghae: '>3.4' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2556,7 +2365,6 @@ fpt: '*' ghec: '*' ghes: '>3.4' - ghae: '>3.4' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2569,7 +2377,6 @@ fpt: '*' ghec: '*' ghes: '>3.4' - ghae: '>3.4' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2582,7 +2389,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2595,7 +2401,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2608,7 +2413,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2621,7 +2425,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2634,7 +2437,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2647,7 +2449,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2660,7 +2461,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2673,7 +2473,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2686,7 +2485,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2699,7 +2497,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2712,7 +2509,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2725,7 +2521,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2738,7 +2533,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2751,7 +2545,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2764,7 +2557,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2777,7 +2569,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2790,7 +2581,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2803,7 +2593,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2816,7 +2605,6 @@ fpt: '*' ghec: '*' ghes: '>3.7' - ghae: '>3.7' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2829,7 +2617,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2842,7 +2629,6 @@ fpt: '*' ghec: '*' ghes: '>3.7' - ghae: '>3.7' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2855,7 +2641,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -2868,7 +2653,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '>3.8' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2881,7 +2665,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2894,7 +2677,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2907,7 +2689,6 @@ fpt: '*' ghec: '*' ghes: '>3.6' - ghae: '>3.6' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2920,7 +2701,6 @@ fpt: '*' ghec: '*' ghes: '>3.9' - ghae: '>3.9' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2933,7 +2713,6 @@ fpt: '*' ghec: '*' ghes: '>3.9' - ghae: '>3.9' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2946,7 +2725,6 @@ fpt: '*' ghec: '*' ghes: '>3.9' - ghae: '>3.9' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2959,7 +2737,6 @@ fpt: '*' ghec: '*' ghes: '>3.11' - ghae: '>3.11' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2972,7 +2749,6 @@ fpt: '*' ghec: '*' ghes: '>=3.5' - ghae: '>= 3.5' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -2985,7 +2761,6 @@ fpt: '*' ghec: '*' ghes: '>3.4' - ghae: '>3.4' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2998,7 +2773,6 @@ fpt: '*' ghec: '*' ghes: '>3.4' - ghae: '>3.4' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -3011,7 +2785,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -3024,7 +2797,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -3037,7 +2809,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -3050,7 +2821,6 @@ fpt: '*' ghec: '*' ghes: '>=3.11' - ghae: '>=3.11' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -3063,7 +2833,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -3087,7 +2856,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -3100,7 +2868,6 @@ fpt: '*' ghec: '*' ghes: '*' - ghae: '*' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -3113,7 +2880,6 @@ fpt: '*' ghec: '*' ghes: '>3.6' - ghae: '>3.6' isPublic: true isPrivateWithGhas: true hasPushProtection: true From df512405dfb28a499d766e76e42e9272c9183aa8 Mon Sep 17 00:00:00 2001 From: Grace Park Date: Fri, 19 Jan 2024 10:26:56 -0800 Subject: [PATCH 34/75] Bug fix: remove `^` in regex for list-first-word-capitalization (#48764) --- .../lib/linting-rules/list-first-word-capitalization.js | 3 ++- .../tests/unit/list-first-word-captitalization.js | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/content-linter/lib/linting-rules/list-first-word-capitalization.js b/src/content-linter/lib/linting-rules/list-first-word-capitalization.js index 578d4eacb2..f19b566b89 100644 --- a/src/content-linter/lib/linting-rules/list-first-word-capitalization.js +++ b/src/content-linter/lib/linting-rules/list-first-word-capitalization.js @@ -33,7 +33,8 @@ export const listFirstWordCapitalization = { const firstWord = content.trim().split(' ')[0] // Liquid is considered a text node but we don't want to capitalize it - if (/^[{%|{{]/.test(content)) return + if (firstWord.startsWith('[{%') || firstWord.startsWith('{%') || firstWord.startsWith('{{')) + return // If the first letter is capitalized, it's not an error if (/[A-Z]/.test(firstWord[0])) return // There are items that start with a number or words that contain numbers diff --git a/src/content-linter/tests/unit/list-first-word-captitalization.js b/src/content-linter/tests/unit/list-first-word-captitalization.js index 6e72f0a992..d596346b86 100644 --- a/src/content-linter/tests/unit/list-first-word-captitalization.js +++ b/src/content-linter/tests/unit/list-first-word-captitalization.js @@ -46,6 +46,8 @@ describe(listFirstWordCapitalization.names.join(' - '), () => { "- '[AUTOTITLE](/billing/managing-billing-for-github-marketplace-apps)'", '- [Viewing your sponsors and sponsorships](/sponsors/receiving-sponsorships-through-github-sponsors/viewing-your-sponsors-and-sponsorships)', '- macOS', + '- [{% data variables.actions.test %}](/apple/test)', + '- {{ foo }} for example', '- {% data variables.product.prodname_dotcom_the_website %} Services Continuity and Incident Management Plan', '- {% data variables.product.prodname_dotcom_the_website %} Services Continuity and Incident Management Plan', '- x64', From 8dd3a5adf983301d83c205a95d73b4455ad55299 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Fri, 19 Jan 2024 13:43:22 -0500 Subject: [PATCH 35/75] Stop indexing GHAE in Elasticsearch (#48694) --- src/search/scripts/index-elasticsearch.js | 10 +++++++++- src/search/scripts/sync-search-indices.js | 13 ++++++++++--- src/search/scripts/sync.js | 9 ++------- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/search/scripts/index-elasticsearch.js b/src/search/scripts/index-elasticsearch.js index cbcc92523f..f2ddd52c68 100755 --- a/src/search/scripts/index-elasticsearch.js +++ b/src/search/scripts/index-elasticsearch.js @@ -19,6 +19,14 @@ import { retryOnErrorTest } from './retry-on-error-test.js' import { languageKeys } from '#src/languages/lib/languages.js' import { allVersions } from '#src/versions/lib/all-versions.js' +const availableVersions = Object.fromEntries( + Object.entries(allVersions) + // GHAE is deprecated and not yet entirely deleted from all-versions + // Until so, we manually filter it out. + .filter(([version]) => version !== 'github-ae@latest') + .map(([key, value]) => [key, value]), +) + // Now you can optionally have set the ELASTICSEARCH_URL in your .env file. dotenv.config() @@ -38,7 +46,7 @@ dotenv.config() // We need this later to be able to map CLI arguments to what the // records are called when found on disk. const shortNames = Object.fromEntries( - Object.values(allVersions).map((info) => { + Object.values(availableVersions).map((info) => { const shortName = info.hasNumberedReleases ? info.miscBaseName + info.currentRelease : info.miscBaseName diff --git a/src/search/scripts/sync-search-indices.js b/src/search/scripts/sync-search-indices.js index 8f7f5e049c..40367febaf 100755 --- a/src/search/scripts/sync-search-indices.js +++ b/src/search/scripts/sync-search-indices.js @@ -16,8 +16,15 @@ import { languageKeys } from '#src/languages/lib/languages.js' import { allVersions } from '#src/versions/lib/all-versions.js' import searchSync from './sync.js' +const availableVersions = Object.fromEntries( + Object.entries(allVersions) + // GHAE is deprecated and not yet entirely deleted from all-versions + // Until so, we manually filter it out. + .filter(([version]) => version !== 'github-ae@latest') + .map(([key, value]) => [key, value]), +) const shortNames = Object.fromEntries( - Object.values(allVersions).map((info) => { + Object.values(availableVersions).map((info) => { const shortName = info.hasNumberedReleases ? info.miscBaseName + info.currentRelease : info.miscBaseName @@ -25,7 +32,7 @@ const shortNames = Object.fromEntries( }), ) -const allVersionKeys = [...Object.keys(shortNames), ...Object.keys(allVersions)] +const allVersionKeys = [...Object.keys(shortNames), ...Object.keys(availableVersions)] program .description('Creates search records by scraping') @@ -133,9 +140,9 @@ async function main(opts, args) { const options = { language, notLanguage, - version: indexVersion, outDirectory, config, + versionsToBuild: indexVersion ? [indexVersion] : Object.keys(availableVersions), } await searchSync(options) } diff --git a/src/search/scripts/sync.js b/src/search/scripts/sync.js index c63ef71559..127a26bfcc 100644 --- a/src/search/scripts/sync.js +++ b/src/search/scripts/sync.js @@ -12,9 +12,9 @@ import { writeIndexRecords } from './search-index-records.js' // e.g. `github-docs-dotcom-en.json` and `github-docs-2.14-ja.json` export default async function syncSearchIndexes({ language, - version, notLanguage, outDirectory, + versionsToBuild, config = {}, }) { const t0 = new Date() @@ -24,14 +24,9 @@ export default async function syncSearchIndexes({ notLanguage ? notLanguage !== lang : language ? language === lang : true, ) - // build indices for a specific version if provided; otherwise build indices for all versions - const versionsToBuild = Object.keys(allVersions).filter((ver) => - version ? version === ver : true, - ) - console.log( `Building indices for ${chalk.yellow(language || 'all languages')} and ${chalk.yellow( - version || 'all versions', + versionsToBuild.length === 1 ? versionsToBuild[0] : 'all versions', )}.\n`, ) From 535da150af724afc8ab28a6e1bcad7017009dbca Mon Sep 17 00:00:00 2001 From: Hector Alfaro Date: Fri, 19 Jan 2024 14:15:15 -0500 Subject: [PATCH 36/75] Remove early access mention from concurrency Actions example (#46237) Co-authored-by: github-actions --- ...currency-expressions-and-a-test-matrix.png | Bin 318153 -> 146568 bytes ...ncurrency-expressions-and-a-test-matrix.md | 47 ------------------ 2 files changed, 47 deletions(-) diff --git a/assets/images/help/actions/overview-actions-using-concurrency-expressions-and-a-test-matrix.png b/assets/images/help/actions/overview-actions-using-concurrency-expressions-and-a-test-matrix.png index d520037202dedb13800d482e09daa8ae0adaf7ba..0edabd7269e5e88363fd4081018ca75e0e66627b 100644 GIT binary patch literal 146568 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�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 literal 318153 zcmb@t1yo#1(>6*xxC9RpUwE z>#qO1ldQdItKI!{byszDRiKoF5IhVv3=|X;JV=;d1_}z=4+`pa_uJ=?9M2^^G^m$z z5g>jZImc)Fv*nOHsOM#O*})kW<4R9$AV14Yz_Z_f0il1tLz>yAVz6Jg(>gCdx`Fnw zzC+0&1;Wcr$+=|7X5Yf9G0;U`CqA zU$sE889If3=dIM*Y^f~XYk>FBiJm^H0qJG;V1au)pzsz`@a6AHhd4y1mtlL;s+=gl zGqm_O2FP!+g`S24`LP#nxPkZGCw@_Yq~)zATcbAE#+81RLVbI&Jt*%M2Ot^{`zu42 zLBT;2yipQW{5u0`JD_^^2xKjY{q}dp%tht~5cF_o8B&JuJEv?1{Cdzf;qNR0e?YeIh%XjoI(dUqB3KWTje|Aim`^!uZKXGHwZs()wvSJgimP=9*(r>bY)pTD5~)cKqK zpN#)%^moR8Rs94`zWUuuC=h+pdx~DYI5>j}?+&QrQ26i-K|$CzA{!nn*F;IdA!u;= zg4>h!uOQVu#hBxULeW6rac5*KrrxD5tA4S=1-9#J1&O|a=UyNvPyT|IhLY^;=30-> zdU|q6$-xzo3rfpcIrYsXizBhZOq50O;Vx)TUq+YDd6(}u*L`_;_|P`^nVE$cBw-a2 z5?fuKUCE)$E{=r)MLr%XeU6RSm+xsKMBJEFT*xgyU6EJOjsB}I`WdUub2*m}>5=)+ zQD8kth4N~XuHfDZe$vofQNr?LXeco`5C<+TV`r9)PYnL;+RdPW5|4{SOavT-6}FFySt3m1kygxzx1=85as=N0zM@I1>VLe8J>QhGRI4Jp(!Q@N{w6Z ztO~~f`i-a~Us!xt|0O*8dS+AmKzO*P&)rqrWNX*%by!{byiY|ejq!0!5<@LzT%Wu! zOL0rsM*&$Aa#mDV)>>jH2Sk>-gSqb8$`#i_NN8Nho0>mRvUf!>4c&VawNSI2 z`3YK2+6@i(5iM&*w`|RxQ&0Pf>-}2&n6(#Zt2>Py&84}^s#UIP6_6Pz0E0JJ_990M zs9cJeREEy*5mnV{Y}09A-aq>`G0SRgwREZI`(_yqKMq6k1TwQ0mjzjP%IJurdK=Gb zQ4I)#AD<=?3TmKzgACDUn~Tytk(}HFzF573hz)eQr((r*S`9wusr417A)`LI#mIVa zGCoD@k-u9DxDH34e&Y%Kb9S{{6A$b03_9kKjkEsYRTp#prvB=J(6|K+sX|}B?fN%M z1+wHDJY{UeY0fwgTVj75m#!P$B< zaa+#9QM+6m&r;O!x;Rh7&w`nP41{1HI1p7m;JmTK;wMf$tjYgyzfquxgY~%d5Znq2 zC41oiCgyQB&k?nmxrui9n}pMcCV2(dHm1dq-9|9OhsKR@2*b6%ht@x_TwT8j7ZiGw zE2h&R^su!Yq*j0Z1Vsk^;p0J8zumB?fWv2Y&G(0n*-Aj&zJ{8T7E^OE@LkYeZ+~L9 zFB-)~?`O(Wp*KUF0syGH(_WqUrsKfl!*-n*(}UgjSSd^R=%Y)E_@YyrE_#G&SFSUM z{bh$v`O7#_*ALG&Yk*JRaxKBfmBE9*DE8o)+3r66melogaCdHN=}QRUM*pMpYjnj) z^b(@*28tpN_gzJygpik7IV8l7t~y;g7`cZYMCvH8zT2vA40mr7Bx{z=RAx?gkHcjP z-CcVXA3yxsS+Bd0Z+L=#901>Jxz6F9J5qX#C-aCGR&zW`9IN9nb4h z*f%p@oc1u#k%Dwh6jxb57STC~b-;_Bb&3{`udBaU@cOkk`Xfj7saH??&)^_g^hGy5 z@P=ZDaEnIb(n&$q>{}>fN=G+ew^|!HMT`^3fFq#)~r?ojn{Hv2w7+hlarKc(u#rXR#>GutQYvw5fS~oCHuFpQ(9jU&l`2?iz6L{F~ZIA<+Q7M{dK& z;H`ho^?}{(8-_r+2R<;3NA&F;bkseV@rkv{jxGYHMNehXfB4mWNk;}*1Ap93wP%{S zsH>i2dYfWEZAJJmQ4;qZwzTED?RY|VQ%5^4(9)yx1%CLM*e^{%Y$_~{B-N=k0-*W^ z0D_1!5O}yHeP#mqOFC-piK6)WFBj~oIKQC>Z^#jYpdtXji#~y)0nZ`;k-voIuf(qh zq*wn+K!IeyFF%3#e@oq`#IKyE-v2A{``akL<>{})uLq>szY@Q`4gmcYrN0t?`V#>l z;rR#g{~zc<#`%Z%|LtItWg#T`1g#^>hnIN%Gd52`P(^ulVXg;jlsZavm8pdCodFCy zJ$-ba{S|z*?YZDyLV=00oH7yUX^uPrWT59rk$_;GzB#Gou~`PG&rvGtia`owDuu(T zZ4Eh>L2`Vnotlxq^(^p4EfvV!0;L7^+nvqw-eg)QuMtNyu$|njBEQ(h5fC?t+sZ0< ziJ)ivem=eHX=oe&iTqFj%t;DF_}%C1gHA-TJaKm7y+Lq**sLd00A(3kY7dRcl;pl*yo zw@cIGEG?MB&SlPNdlWT|j4gdP=!o!u7ibe%Id=^lbocsTo>^bKG4e7QuKfWQZd_wBDoIyejRugT<7zkjfG zi&83uqhabroMvLfDk~Ci9zZi;WM%Auu7krU>83L#hjE%Ri4%$P=&~zva;G98Ix=*i zAv#i3GT~P=O6vfHs;M`7Df8 zUjY&fO7}+VpylGEzh6zycQ_Y4tdp{>W8wIe`8;l_AUvRgyE*x17Y6aYkU2F5z3608 zLMnxg$60lLXji0#L`~;r^z_u^`@`sxjcD#u^+dH(M7OB&_=az-hN>R?0Vuo;pDkSe z!jnJ_EC-&sf1Fe+41aB6g$C(AfFLXB1^(H5YTy;Tgp6-~k#PUQ1rTitukOh@%7uT#k@;;B@!G7`*6q8IaAZzi)O!D2wWo{0} zVxW6h9#|FiA2ZLPOO0E($YpBN7CvSuzEs+>D<}&k2lhcCWd9*pRO0RAY|YxK*V_=f z>~#o+SD-KL#icCVALg?D&UR)PJY*r}6$ppMzr+oArR%HB7(%`y#d32)ull8SR^TzM z(pChngqk{6Ox<16>#>E0EV0zlLz|fwb>sBn;_>It5K318MS1WwfobbnX+gfCLw!L_ zOGX1ia%FUToD`_$6)%@cw65=k#mz-GV1TOL{R~q-@kCxgG@0U&-mH}%t9gBeehg7VXhn~Kz>^Fnk?|2nXjYWt{&h^n2 zg+X({oWxy1?qwfdBr5dwYPxHKU*(8rHqbH_cqFAdJ+4G+x=l)J=OT3*`J(L#c%0j- zPZEXcHprZk!ca)R$-fCQ`Wft|FD@T*vy|A=iXl;ALJo?4l{-%%kDm~&dD7ON{Kh|P ziGlXj3X&|SW`LXLTKcU{!#RQNYUc?tRXfdgol-Q zJDrcEDygjVjxUZuRD$PgRU=~zzm!=}7kWb&EIu3e1`$3c*oz{p3F?0B%;#~q+`M%S zR)Keg$)!yNeo@YoM7>kL+>I?!CZmR9!M4rj$`c(wAFGaQ899&66z?1gY@q7gvh8Sm zoLKRYV%6gECdXDAc+*9%+G33_zf$<6m<6YGk zgZsryTR6t{`A$k+i+~1Z6rFpV+lf_N|8SwZq>&kmJcL_+bMzBi#3fteOTwm#S!mrm zg||4M64yEO{Mh%*o=C zM)sjK?`l_Si82RvG}fT~Fk_;9M0a}kBi)PnOhuVav38#6+>UQSvUqmJcy2WY_>|}t zUkKixd7RlP#!C?T(B_~;trvcGhNB;oVrDVZJi)yOcRb?yvF+4Tu75V=b1fWy_bJ(E zI^49ls0IzSC)YqbF1%ZXOH;?)%2Y6Xsjdjn`$iw{eXKntFu+k#95sDW(Ysfc;BgL- zj~(PHTAdSQwa6yv6mv52okM9shQx?tIVxE*oti_-jY}oeUK_~fDws|As@1W{z4H50?t~P zX?$%`&VOUT7OEqu-Tllkfqpb$y`US_(9vi(BJ`Ehp>e$MkjW+)ivg5{Njh`+V*^KP zg*L+_I}-EtgIBVtp}c6}(A7i}{Spe7X#Dz^U4?WoapO0lJ0B#kTMN`?d6S_8$JKmP zxeEbXT2VwjHAdeez1SfQ8I{q^n5-UrvBBOJyjf$s#@V~UJUO|@g4io=o1)%JIZrk0cKp{+$wA~GU&ENopf#q?ZV#m@!}jbJWU?lB7`S%WFl17R-ooDs zun)3|36VANa#59yV*tAndMGL8z8S`qs^lQvw_iXiR&(kF=zT_-nYHso=sk~aB4b}* zu`)8VSfu741EGvuujr^ZK@X^t8+iXXUQR z90crA8sN_Loa}IoDR}h7Q&^36C$`mjUmC}3B=dEVy-F`rC_>8SRwBu(e-P@}(@{uB zw`3TX4g@~qDxnVKUZDZzAtO)n)>8W*oujlQ$&;%1 zI^zw?l_B0p-d54CXES_(0vd=5mVvA|aK|qOAc2|J!!1#+l@jQLc1l3C zFXybixyz7xg|4@}L_(H3bcRG zKW<*Xp_!{M;Cf2=dI3g+UT{QX??$ecoV*Y7t5dK@#lO@I1_V~A;(#B;_&`_r_?L2( zs-xP{DVuUUt%7!a*9+DichfFsm7Lkt*3Vup5O5vhGgO)%rI5C3(GmC}MCyxN7L0_> zI5vY(X#)6cTX3qiidG)>Y*rEw_wOqCd+8z>rgG8 zg>;lMsl*}in*07(e~|;;Rp_r2=t)LyghSAbv%WPJ2CeOGSvsefdnf{1d-X*sbtJFS zzSmiNJ>fkrRi4@@I5-(2{Z{kbWt%)-K86HU_!_#5Vwi>|xIT5)8p!AN13J#}R1p9C zcGG&kw3Xg>`Yt`pauN&C9Ob;2QQF36U%KFUBH%pQ3#R@qCfQm}FXJs*`(#9E*+w0l zY^VZ=aK&x?Rp~Ca)jX}G8{Pxn(Sx0{LJm>EdL7A<2Sl{Lmj&0|e}j(Fq9~m-xa*$p ze`Mx_UB`JxY>IN0=r)~}Yaj?0r34I0k3r)?&u=C*H=RiL&i1qP1;fP+T_K3H9pE$P zQ|U)5A=(yg6mHfm?0xC5_ZSM+9okhzY3_J!j7)V%0uh|I$0LlM9R)XaEeL3K%`?k} zg8EHtv(MpiHVbsx?UA6r5q?|O(t!#^JZGQb(bC&c2uwO4b$Eu)m}lDrWKoK@3jt#q zpTz0FpMF~LX@m9y<^vir{;^#LjtR(O)S}dPn4Jq^oW+3eaUCKiMOwUUA)MLC! zsMSP-J5s6VlI#sN*EbP~X_WHMEEB&7=xa1Cei1j>y(aBfO}~O0__mr5?K&N)3Y)&O zQOR#r^VT;>*hZeg$O_)WK+gFZ{u@4tYROh!qWINZ9Fn86Tm!0+Gw>#tEWwaoq$_bg z18`zDeu?HXkXS?&B%+_MzfB4`-*qNa*9wEt*Xu)D zbU-tX>XZ-XD5Ej%iE(Y5ikD!{T36Oy7mDijt`_u|5Ops)sVoR@-iMB7lOl#FLcbqF z=$~0tfzYGkChC=;%CVdi7eJbEP)%;((6nr67{IuGREx?RB4E_@VKw!A6rHm_?t8y+ zzI!HZQK{1ad84AGsE%>zjRJFy+gAY>s5d57{Dg;EN0Ux#26f)oj^$=T$(pWltaaFy zEmR+uEJL`Ibz~)}?ks#lF`BP`9=VftN**oVupKX0A6f2&b)ecbBRN6Tp3%2xdsjj4gF+Mj*7fYsH*@pHH4XDFb;%G>nx ze7ZEj)T)mu(gnkHJcR8byD=NLXQ=^!6(d1wSgtp7D0^M|Xpl3PH`3{92F?Zk?vAD; zTsUpy{VwMCk_`dS=}_b}?7pY549sDFDN;mMmD@3ubACU zpCwhrqPjccy=6hXZoNLbrKJcAnZhgvqXy zlG}KDe=}EYbrwz7TbP0oFY<^P!*7{*b%|1yZq`u&uF=3!t{15A;*KuFQlKn}W#oi$ zYHk;Q;55n)m+@9uxU-`VXbroEEeUoO5L=U*Hj%ReyVi3|Z ziQh4Fw8>|soL`N$5+BwC^DXe)xu8qz`xWyh2j)SWLw8;Vsee0cWuSRKnGrNMh>Xbj zVXJm}mxGeHM?iR!CU#beu6{iTA08XdqM1eWrZzxC2Js*2OP^%yh9g>1{84@j(cq-^ z7B5qnWl$}Jc&cZ*U&Z6cYCn2jl_F!D$Qi$Cqi8^mga#&2V+xkC$FOWV>Eu~LwqtaX z2pDN>(KA>2F(&xomFl|^C5<1morTy8hp^%%j7Z<7Esb?@Es1w_r>ps5H0 zOp@=VpHQu@9ByYDME2Kd%Xqb$m$0D14X-y`MK>>&CsecLz|&jz8^@r8&?K~5^g znU)3<7YYX*huK{TA*$muQbGClO&1d>3G$`qN^Hgys)c}6Z-(GPIHR*|%Isx}@=TQT zO)CS`Z0#ej7{QdYWj2L)f=QSB>fy4Qw>9vHwYC17u4S8GmZp=9EKY=rE%E^# zU0QAQ8ZizchO?;2CKsLrOcB>!8zOwBA$38!>NK{;*|i3T*Qb9R9qGyQ0Mh9J&)?e7 zpJZDJKGxo4y?;m1J)xkV*dbML9VaDh8caon|2{TH0Y!@oH7XSw7>K1^J(=(YSrz6v z+Vqo7xR_jOAqQ&r@}Y<|^h>f&J3tpXy{>0X2ehh0->C|KU~psN9lS*MFsRem&C@M_z|r&B;gxhE&;p=81k{>!Ql~YcIJHQTR=4E=0@8@9IYA6^e{c z@!o{-c19o;2`ygdyWk$%wBzUkF4$+RK2T$l#IUMrBxp@#)wDAO@xgJ1H;3f`P6h<{ zWMATTMC)S7Ew|6IER{?bbME;q_8ehbm>HWcs-W(oCGz}ZW-A&=LDCvX@KoYskcvD7 z@pK^hglaJ|&q~vR2->U~!pR|8#D~!g9C6Ws@3C_eJ(nlWVrC>*Ie_oVaIvGTqI)zD zbC8d%!;)$Q)yq%kGz8>$;fyhlb4ueahtfc&4O`P9GF+EiHzi97PgG=?+-e#|E7P78 zh2xC?Tc(nCi9(!~JMZ$l3*GA%UVD$_EgNqNeSNnflxn^tjIzd~oK9I`%$M!>~~Wg5C<6hY~Sw@1<}C@~wtsvRjw$p@^?PYA})s=}&H zWiTN2>P+>TeekH;k*&m+@-MKz_EQ4O^eDQ+mq?Hsb~tN&TsIR}O*JU(gvP>q>q<-% z0IvXF&KPI5F`mtw)F_hdSms%LYbv%wJB#~eBtLldcAK*BK&3`coEi^_FsWbeS5xKqQ7HwPpq$mxL18GEj9#CNHZNs9$pHEV{awLcOH zNabVn)SEw(TfmgI^V5uBbTfu7>Goe`h+uBx{o^>tEWav#jZW1~^Y0Anh zhX~nS-n-!!BsB+|WAbdar|sE3jQcBx8v; z(vH~qVIwN^ia(-AV7I>JS44jrWr?u|AJGgdyh8}fetm?WJSQe9NlU~p$7Hs{X|!`+ zM1NHFj!*#}SKy4T8N7hJ{jNH-SOLuWF7h)BY@zwmOU#I*fh& z*$M#$D7^-K6=FD@b6~STVEode0PN!wGYOe<*60&x$)l?v%<$rJ4IH87*Me1)=J7<- z-VAT-)qJkjmd8|uLC@s`_9|5;ClpYXD5!KpMNkYISNFTf2yWR;TXx*O-n`8`^I{b| zqU!z9mGuux#w=Cz#`!%$q?Ub$mLDBmX+8o9s387FlzuSe#55UD)?#uB*JkdKsACl~ zAp=6;?H$s;camf?*v@osTXVhg9@CIWXvM20*c_B+pf=vxcg>wYI*GBBKMh{UVWhY` zw@toDZ_7CzBb5Ikz+EQHiov9M(0jM#ZhLM&fx+zBb$%~i?SN6){}m^z*Jmyg+h!2q z1X=e8)Ff!mWRHYX)}ky&DVEgY42S&oX6Q(ANeb>WKk(+k3ui&PN&$4K5)-T=zLTv2 zv_r=_$~e#=p#a?}jVwyZcYU^U`~GPW{`KyMNrTv(kUV1moHZB)0}e4uMRfupBRd1< zO$ghtWOYiGvxD3YWGX?7<-TrWw>=@0N@lKVIHgG?fRo07GDVoyFkAQ`g|=)08~INE z0)krdb$fII?do*-jkmMpGT)1{00Px{gXWW2HB-~;%u7lV1*D*4frvyhzbfs~M%%Ge zLcXknkE`BKto-{(@?=Y>K@qb?iza=SqFK`0MVTIN0x_&a*_bU=n5+^Xwb~Ts=97y#i-4*CC1VrlP#_-gE>>*%}n><1BC*lK9M!@hAkK-d)&ZYTImfJI_FS?eOLHaDWP0?#I{ox5^gvDA;F4j~~?oOXR;HM>-6X`tlC}C1T>K zvjCBc&RCLoRmqFwvZ~1H!K&t)RGDBkr#bjn5`S<0S-MZRG@YiAiHkv4N_6Rgb&7+U zd2O1j47l;z^e=09Wm-6faX5AC!y(!n@0^A($>aS*E7G}tKyN@?_;e5OkR4ydOk8-# zy6!$3OYfSZ591Hp9T1@-us5F!>@o%~}#H`d!G*fYw zic$bF^1j!u271m7%`!03RbH|JE8C|B>2%lQpC*;8_+Ky7VNVeb_a~Pq--WJsxjp%f>*M@=lFKX(@x->r7Wk%|Wt}x3B zHnlL6YG1*BGH##gi%swcKc}^X+?#lXAmNCFQ2Fh}Du9if$SYLS`&32D7Kvn3|HGvV zYERbUX9g&HyNMO50ta1+17`7E5${qgLs!R(9ECND=fA;Lau=s8r-Mz|Ar`B>QnAl8 z{=0d%&MC~^THcod*QJ|gY2Du!W9&y!A>a-SUR-7l#(q5-M{iy$hmuX zueN30DUxA1q%89@ZFWjCX!ZsHYG~fLl*z1nFN(J>FJPflK)kzf4aF2G!T5wQ1e+h> zmOtZ8;^0SsptqSE7^*9nMF2E+&x8q6mknVn$0C?iR@Y~4;0n!s@Onw(EeR|gF+N$+$czLEUvWc7QaL=xiD6<3b69C83X?4XKy%SJ~?R>-w136b1{LiF@DF>l&E8AYEf#9-P$ zT?KwIy`2sRYZvjFE|7bT2KUQc+xt)|fIjEYaxMV34v9RnQ-Esv5GFb{&Q2X4y38T< z6A~3eX^vh{7`QY{{O)EOd17Lim0N|4u&;?r>}2f=o=-&DFsYkUQ_;^OB;q40$ALuf zm`ll^KsJV+cG+5@AT^$ZF-ighBI;whqVB9ZaO+rBXI|eU zI|IOydbLxURELJ#!qf8FjP&||S= zyjjEjWpr_2qRfR(5& zw)i*F+tZNivcNjpn$?&S1F_@Hx`J1YYcDvRN$e`XoqPF_KXhKlBJnoRzQq-QM>np= z!%V(qFguyDXq8YZ%O$8_BA}x9et7!2!O^(zYgN8x+sGpF@kCNxdbihjg)s|sqWR?asZ^wrT>6$24w~Wn#j9F^s0Vz$)dP3Ry z3cj0#+`1skm1ejLFU{h&XjV0iVB5H<45PL6=?g!V!`B2?%WN6p2HRvHN-d;vTKQK0 zfXUc~f?6?FSHB{4&u!?1x@WTdM7*b)7`T$~T#QveBBK9jJ~Fh1XTOKo?0 zSorX!%)2%R?33swm7IJ4FJS<{qxrbi5H0UFFFc_mLJ^36QJe=@PEHP7j!RrD$f=o{ z4Aw}3hRAlWe^{shIfx^#wjs9~?$Q4KIX~E`E;LdK8@^4n!_0o9nAaCJW8!i&@2BeF zkp@efXaP^^K5hy6!gqOSp(DQIET6J|xeOX-(<#KoKl%&|{6XstRbUmz>ruHo_s1=kz6Cy42#3ykXVUM|; z_Sufe?p6?;&+4ln4TiLEu7V6T_a?O*FETow-O?xx+1lo0i5km^`uC7AEdHuJKDDwr z<#+eERzEBpfNYL@eAJt&Hbqj!7l}Dw+)_Z>mrl>Q6`M`6+MHz6+;>@Vi2<;!nC=tD zNb%L9gzFbm3#NCWAuhO;9qx^%l!~SD^%dDHG8$I#)D*FDl&&UZAfundiK13N=b-5k zH33JCk8}*Mxl-E{AfJF07oNdfXqMQ;peU@-1!Ma{F*Aq)%nTN(5dVYlladhf5HoMh zAZ&y_$Tg2_gL7Brq+he#h?Cr!Nma%%`F-UrEXg^hTANJfLG%+$}v#5OmD~FO@ z1*9`=ttM|xmtatH1I8e8Jwsp@5a)xK0eNW=-3>Lz2XV!@#^9K?Pn}+5XYg0Bdvadf zdcUR!YyrPe$hu3HY&T1L@Cj3Vtajq{@oCLDw5hVK@04ZLC(LImB3q9eFheFXe57Y$ z7$4nl2-I+EHA+`pHcJEU2c0Q0iQqPYVaa{Oj2(c12#KeDFN^6WWh9zLUi^G$%co1p z0~q2{c8dqA6a~V}#WF+b>hzn{wA0NKk@77RcaftzwNw90?vP*vqkgw`n`vU%c-N6M z6=)BB>nBiOfZFjG`M!urTj@26E;lkTP*ue0yPvFjG5{C;P;UMGUO34iHE-*rgaVlL z<>zx&J>7?E^~-5ul@ZeO*LZ%IRRs8w?|b(Zn5ylXgw38j4SvII9rXnFgsrcfF>We8 zQCB+kXIN#ui%~N;^o|!ldj0ORh7@i1| z-mkvA6=FV%d`k}>E5EiomG3_0_B!}&W zPc4?F2r@_*^)C96)s2usTO_rGofbqZlYIH9SzI3Dn;S74^~eO*8pW{Q%Ptmb_8+_q z7x;?cB-_Rf^EVakaH#u$4yt$ID8ZCErImd9V{@K&D z>+gdGH`S8{H;OinQ8EQ2wxh!?#%^Gmvt1@U z9}(q!gc1(ZbWJ^8tAl&lQ84Z9x+^J5uRZrs1r&tMGf``lC}Izp8DzG2OwUFpr9Oy5 z#J4YjU)ntume`R|VC{v_YT4IZ{VWtK&-HN%Z|CfoT)m~K$b(ixO5wLTXW)joU+rAw z2^Zk(EJewSrn*pCsH&cm#lO5WH}C-+0u{kh{{L`P-Hy-R~g67!XgjnGwEE#RGu z>;vh#SVx=q2j@H%`xjJq&1FAST9ko)5(kTp-YdBT%rb7xrOqvRv+iAri}8z)=_IVS zvuM)vc>(cW!TtmNlZ#V4(5i5%f`f#mL3HX_(aU}&W5BX3ah0b?i$`6oo6YtqhTfJ1xgML_E)nn5a0)P2aO5Y zt5PU$oa)cPypxfp4m>d`h)=HJJm_HS3wJlUy-vOYTw zMC#NDq`56pRCYIvFgtz+8_u?zY9i3QMG|Z#{F%iRuH@n@y!Rm*w*(-NqLY)8ulI%m z^Z}c*Kn0aXI0w2Br&qkIv4a^yqh{^0dg=JTyvg0t5QJAK_B4XFRQB^HD3eVtfRuJF>#fYz%-l>Y}W6neHdP<-O_pKuJ-l8 z%9)3siVuG`oX9k@qLe3k3N1CH9wPt=z`*7jiHVqIp}01 zSewyu8y{lwT}}=WtV~=b{Bx)1PA>u$L1Dmv3~vD{Po(o)hmp#4p?@xPXE=q7ZJf2oc?H<3h;_N8*{f(axvU>(KdLf;T)$USlnbg7wET8j{M z$vR?B2btGrC}haAUlF-!uY36dfxM@7U~sfJaDY)9$gTkLB1nQcYo5H2MnuK)A45HW z#t(@OaMq1zX?SK#^>r*mM)|s{+`#Q^S$*EvalRG1zQsTdy_-jQ?n!h97Q3zo-9BZD zoadvvQL-|;KGXh#-;GcI#VUwt9<4^uhL{NC9E#WZWyTN5VkYXBNan}@NM8@<{|sRdkQH^b;`A0k6u!v* z9zJPM+y1g}Tl-7t>)9s9LWUSXfrK<$5RcT4diw7&a+69yDq4;h3kjtUhhjIATWP>^-$$p~IfMvKvzV|G|h;elEkJq!nP ziF}!g%i2GrX(WA~;^y#a5Inye*K0OLVU08jk~mawET(I z3RxdQ6rjkBgoC1nOWgQ$giwdhn1;Nj-5x4fMe zuT{jRtX5H)z2pVS&0-t#O-`Ril{Bi>m|qFpvLEiq`KVSwF*Of+b7l(UX%74u8 zV%3|Iu)5kN2EYXb6h3746#)M*y15y|+v&;gP6Q>6yh<42byTx~x`9!j6~cHP4#0%* z0Ob#0MChQPvMylO>IGA2)b$B|R0i?N;fRubnewVd`Wk-f-Tv`2w;f%f93U3fUTsvr z8GCSHq8Wkp^~5F5x4c9CoC=J%iLhn)EIPgbGqFL6o-2{mPzey>rR@F0^s0!A5qbXM z2N{Y-rUBy!oL(tkoydXxkh9DUiOTi3iv9_U9+-3h6BrR49`D52-i<*M*1|V@Jujs? z`oT>wwuM#xxDOmbD%0w=sLVp%M@St~!El}`hmqQ{{LDX#8_2A2{F=gwztlo|@loqX zDt5wB*f#mFKR)$slm4_8y0lat9xlXRLJr&zzRntSf=Z&n`Auue_cgP5x1v9L}@E3`NB29X@Ph4_p!cI0?)h{9WDGNR@$T1HMl zCOy`+3K+=`q=F#3D5?69sCr)slM>FwME~8sVL9;1IFQW-0j)#zEtgU}{MqQ7q#NcX z8D}q#z{xxMnW3rQ@0!>1?%_nRNA299}i2;B0l z!}ewo?Rn+^2lw~~|2LO6V9dutAyr#lPbt`dq@_rygP5kPCK$iG|z+=~F_9W!i-AQkZWRnuWd(tF_!n zfbTA#QcELTZx4ef{S=!L>z)GLz*&$Of>vhGYi!jGA&6I^C*b{G7f4GZ?1^hiN@-i*#(!HgN^6z$QfLWxVhZ%hpC+wh%bdy1%EfK<1sD26D!GD5<8nEyyL;KE*pvT6o4hV*EH@if8=cLO&<)S*I5!4vNTuHhJi$P# zGkze7$dIqbmO!=an5f!v1{qmHsLC3Ncrs@QSO+6~b9?hTx_L5pc6;{$`u`Q-7d5?^+>|MHPAa z)U^g5GwBteKFyCPf)}{CT3sBcki8w;t}N|r9=BGmU7fAg4;E_>X|^YauV=kpJ~e)I zVY8Syz)b=I(dRt-w%XTquPY@FPWqW!A4ByhbNy81)A`@5^^}Ap*yviB>&x(Dp|o77 zDIpG_*1Ov@IX^0*ci;KkLj-<<^BpWhU(1NVnXZUCzu2=5UKZ zf=7qjq($=O-a*ByE@7rT+(W{NG&Gh`pXje#;iM)H4Hi$RJVkT;zXfnH{wI3rcSIJX zH3SKizZ1WA9#GW(w|KDs1-Y*xpr=jd_v-rBQiFo}01^R1N{IgxH}xxc3ewkK?>~uO z>(>)t1R(?Y{bRBIkHr6;oE+J|qTK$K_yr$m?Ef*A?Z0Es#D6cle^K~X;(tXh%XlOC zD2?+Wnmj_rnSs6IIz&MEiQ~LvCvjk zSL5p3{d}It7qTiIA`SBt`u&GJz?y|ti2EtNHmIUMYaU~Cm3- z^8+LT=1O8wjMDVOa}#6ZIb*JoFWSh`=u?;RaEVEVrSlGl1UfRg+=(esE(hJkXBgCh z_D4(JK|%cnVShZlc;7zRn4T<7z&=4>pcZ>x_3rMYNp*E~u}i@h6j>~oJ8VSZn^&*! zIB!2afQA+e9h|#^YZAYY8-7n&bm`rGN3ZW}Zk{UPVLKjsK)l5~M&lfQ>UO_n#?bRe zvm)?$vVcQQ3h7|IOfXz<2tvX~qR(r3`BX|3a3_{jLw$j7(!Kq|B@(zqxh6uCZ7M5m z+`q^-*c`QZ2m7l%+jU^^#xO0s!C|%S9GjBnN_+73Yj(W}db)}H>n!qQE_l+opL`S> zb-VYSoEOEl<2T^ZU-(n{$qhjm_^Cbaew~*c$rcob#^orc0NlKo5XFM;{1WAYfp;AB|?q z1dG?5(WAZsD>_j?I<3K;bz6Ebl8T)jQw-J9!0n?2fo#yqpUzHI870KjysA@dl1Tet zLJWx^-bxKooG7Zxfg%cC(8@Gtj@ z4dxbpv2ty{X=rdJ2gT&Bd0@A3yAPq{npu1OIc+=vuo36yS5RPV`XMzi5H>sj0Y3br z^L}ULHYhtg+wS6`Ulnb0^RXL!g)%FBj6p*XpEbm4r0n~}kF)KDk91)Q6O)q%u)&u0 zXS~Iko>uGQW10aGuOK)>!aSO!LG}!c_3rDjmo$LY$2Fl)=$(n7V+;jwnWt*a0S>bc zqufHOn|8ZU4FNuvyAKf#mo?m$&FQ&vXJCQtS1=_xx%yHhN=JVx0*K;Ld7^2SJ{5Eh+^iIy2ddq|mdPUO#| zKXLKylF$^jYCZNd_!;o07@|D>jU!$@g>r88Jr4%27hqW#>+9Z=brOlAnHz^AckgpJ z@l~?-9Y9WNYn$@gJcttTw!gDIC+SPy2r^f2T*)_9%uWx}vdDxOJ(h4B&S%gC9EEpY z&-vvuDw_`GDiLqA=Ks^7&n|o&0|Ns|xX(aDiySWL9)&Rgjf8>@K6P<%d3kw#ePAm3 zv4vb#_jW(IoaIA1P}Tn^dgH7U;98PDi05}t$mi_CCn+~tl3!eG{?dtPqbDQjF3-=; z<5+!sSp*lA+{1(WjTq?t&q7yp6$PA9Gmf@?3)oPx_t!|8_bfm%Y8_m`*JGOjo*p2DjC+4RfM+fMr7gj!OX(og!t>8p{DCDh8I(l={^5gQXjMhdc_aJggW zT77Q+dJ{L5!|iZ?ichI8)$R2M_@dJya&ihz=S#GE0lpc1F;iaLOo)R?mN)4WpFDok zGUE^uQ)_}OSBhwWD_Sax)X44BL1W{U4`iDf=wY$^wzBH3>zzB4{0)6l0I(vc6@B=mrO>oJ_&XB(#5(!q-PgAm%aj+mvreuMCT$+q#UAAi*sJhsNDWu;6s#E3GNOF?$WpicXtm?qrn}5 zySoIY$a~)_-^`sqGYwBe(?!*(ePpk__By)*Mgh#w6;l87!^>UV{epUWyN|ITJSV)WA z`WJQe`k=}7@*}COpJu0fGhC}(lGo+UH^@-OfM5Ytd3o!jBY7%SrU4O;PcGd^+tjUJ zNt_e*l}#u6P0hQzsit}AVZ+U`4{c6c?Nt-9Zi6?Wy#l1?o!**m?as%X@fT-=%xkw1 zlL4&Aq{U7puBR6Z4aiB6iz;IZ9jh5GTa5!n50?`pH6Or2m+f5_#OzWU1kU&?d^;=I zbZD_^uPE5GbeNtQEK8#Ua_(HcWRvC)U@2c|Vn*gFT^vrOnk>w;r>1(@<7yv3+g0rK zQ}>REGDP-XklGBXjj8>9WuGrZagrO$jNQ=7r0VR&CW9J%G>D+G4rk{s{z2%UZu@Z# zRNC4|GnkiSesdCO(kZ2B#pC4BCZW$9RuKc|>ubf?AO~eBKW5Gx6_(kJ2B}pU z)Tamfy7{CuUdF~280Pj4^f|;05(IPF4td>q3Atq>Q6SLRb5agXRK`U__8}uUks6cE zRVhK$(#npg^WEwwXPj5Y)umN1h&`^3jt`sD$=&X5kO>+be&-bJ?M?ErkiEo`txwmD zR5(S3ALU}jv{kFoL*|#aluhL?%+FWG`6lO=C(~fwQ}W|Gf_C%m9CzK>*1{4KGrWAf z3PF%{kr^QimJb;;(ZJ9!eWSrE-tBsaqkyWHDx6!j ziR&xo-h}0^o6wJmyn^$0qm6$5?sE-x>z&rWIF6O#dzKLKiCVBoe@ZGU{Kn!kq*I5* zWMHZQeT71lKcY!B+SN?OIrI}bu)nVHcvtW*NTk_p(NT9C<gpE0h=t+ ztkmWW`o3(v@+&`F&e~(hLNX{7kfF`aU%3mzrZP1 zdVxf{&JK>OQk^33$>fA77l~2nnhH93a3o91O}s?*oPnVR^+)2?57+Hs$Hc+$Ln`zV z3JO6=V@kJvL3?#pi2N9lnZ06k_hjRV5h;b$BYA2H2Cw~2#1GK6g?c-_l-K+Wy1s@> z^m}i&7GK?LD=BL=wR8(&lKFSXT9cah`;{oG@}a!GT(NjM73Yb_!Q@wKOte?|V6b+* zi&h&48Qe^o*6W}9X9;gqeD8qNjU2c_9_%N65SM^jS8`;7j3*e`tHt;Yjms~f!!QP< z*X8E+eC;@rSpi<*bt*R=#Blc_B`;#i@)z23a<=+1>nND~@W3Q|dCWXPf5{5g7<;2Pb(w0MqF{8@H`yd#*h9$+*kN2mPgmiJK}Q7mjYE%?I6FH@}=H1Vl;Jah7UwOHtN z>nCxgO4sungAxRnqAjNnb?hGCOe02nnAD#h*DCR0NnKk5Tkl=stgr&ePz(4B~| zQ2_(nE`JnktmEc|28M4^?@ImqWT2Ap?7ZA-745hT@c{sd* z_~;9b%DztUlPa5)!XS-l_Y`gk3ef(0m}c!ihOQzA#EZ2;GnOG4%t_}7g7nhZ2 z%WU6HeNXsY|AnOw`nW>P4g}1o-J-yI8|cTL4nQVviOFazEL#<(#rz_WyW8`nmNB(U z>shJ%FF9DuF4A4*s>;ftY20wy$g0bwC4O3Gq3E^=3>h|aO5ltf^6`^ed`lS%3+V_>XveOEid=^L`^o zG|uhHXsGr*4|Lv6meJQw#~vC8FQFcv^E3GtBH2Iw{Ke%SQcqAQp@4~wT9(=brz*5p zh(1VD4|zB_RMF``3()7twF)=6vpctaM|+Q2NLDy=QZCLe zsv9=7uiF#I;|~K+;;dNb6B^kZ0C9bJg(o^@XJ-==6L)sL)Rp)3^#uhX-pvEPK19kM zkX-wq+GBcthrXbpF-hgS4LU2{L7sTgRj~!6%>ql3R4twTe_Bzv!{4Qv074(G$ix7^(FOI0KALE$Q9 zh`TFfFyGS}(rMCE)3&V|$iOG;3=KdQ zbr;!2%VH2M9z;n8Z8B(*nGqA|SqD#=ZcL^$I?ZEKIh|glP>S<-tVClm2XV~TyE3KD zr7!BP96QmU0et>H;Vi{W3E;2c(K3&WHcK1r{lf_?ZCsJ&2$*!5+lZnhupEBhNTDp9Vb7u*+qEfE+wNK3Ozp zY;tc5)oLD~e`X_lMar+q6 zE9}*n;cg7i&k~gyl5Z#6DVv%FV_`KBb9a6edB@G&=y`R7p0*1p=oAOqH8@y*b>_2G zb3cYs;&P9n)ZyaijG#5*r5z+csg%exov*_Het8N<9V068?ZcYSlmZx$I1ttK4DUM` z`LXaDWMZ;Cj22AfhYxM-Cc{mkj=?4}bS)oFD$ zH9G=5@(OVFBWzx&oxhn-Q$hk}bu=}f(fuoS&RTd}uMt*OhV_xav$NhvoifCWHDc(L z$E2J*WxM5i6SF}}fE`O|^Xa;->45@rT5wkW z56D~hq$W+C^z?SF0fMTi0|5CaM-|33b>xr1|59wQj4RPxSm;#PIh?6vGN=TW8|%)_ zPS85{h%R}Ln<}#1&EEWcQ&=`A(*3fnqlfx;p7anikkpc_3xbKZLwl;N)t`|l$>j)Cdz$XOt@a8{! zPbar3$BG6$Q)AL@AXBDRr2@zX(7mW^g4x_Rv>%Uao@b>yCY3B^wSfJL)M4w|tE-p4 zHappPaq!d~utPciwZZ``9;}9vfBA0uS0I3psFl1g=Z|MOzFZV7)xp8EVsdM325)9g zaWa;FTll7atUVNxCb4t9+6tWhra*Z=?`yqEr5p8mp_@UkG8~xouM{3<{ja0QRUEP; zFOAc4;y4Pk&`AhJo34$j|5^ro*BA(vGnnjMZ_iB;=vWq!uCx=fmdxXLn8NBF%ljC$ ztRF|^a*GqvfSGNio_J{NeAUF=-o``IN*o;^qgUYn1uUahUch2+zOm;F0LVnfrLYB8 z>*o?F%X3yt%BredG}ib40X-WC)vR`C{<$pd7k=}u2358{;0=x`HlFVr9dm*n^)S@&=98`2iq+AryW++NJ$-cXx^~WHGYJ6OYW7MDo z-HqB_E-(BmUPg3*T488XEr4H4N}p+)&3 zejM4KBv4dKi?0Qs_g~;hr(T@_PGN$BN~FyR(_WH#DP;{GQsXE+;iOmXVl?^hJW@ zdcFk(R6zlU@p|^@{=K*O`MEUJTj%4Q7^7hig^|gMiV8!jz$Fg$@(-S>!>Ir(7KHb= z@Ay;P4nTzx{(m^}fF&D;Qw3}JT}}%zztLD)aHrgs;_Ml}v1t2=2*RH|v6;M_&yzb)wVs~^ORSgZqaNpP2 zIk7b-{M>_ePUvL$Ss-+9pu%^(fzNbPpQ?3Q+yL$dod|uQ^647&*4dJ5V)0U!hOBqaW-OOl6kAu0>U36F%?U?d#ry(rHnwTDl*qV;HT>B{ zI(d(k;Bx%&yMN)TzdVv1?;~JF@C!frU0C>S92r4kSf}nq_^85TM6GRTY({z>DWVk4 z|9hd?h1@+4KHeM3&ROYo`9%dRblx`H_K+U#B3y(oG9oJnb;7z!q?_o|-qAPT^chnP z)U><2VYHEt*7w;R^@WPmOap}5!fWZDg6?eq$m~)mtm`O!%b`d7po_p0IH!qP%3kB)~Z*yO;j2Mrty2mrjguB z;PL$(c0EF~$1LOan?D};alPe4skjLc%<~Qy{+JFDaJve~DoQyI!2;okOs(a!O%=@r zbS4ebg3;ch`&zNoCDbTDcW6H9-jbA$*3>T4X6PZRIl&bT{^A)yM}L3fU1m&76pI`t(7 zUq0zsd^Y;L8{oGk*6Fz7H*R-zz;_FP`v>FKFR}G(enl)l6~v72!ftD+bI@C09vXOe zihi8`4%ti$NTHIRXIsB~O~h}s*bYDqR>f9-L6bZMN=Y2ob2BEKnCRqt}S1Nll;4C|ji(HErYMS0vQanQA; zXK&dF8dxj2V(TFyH(j4G=S_GGW^UIP3UD zude=2A9Rr)ycQzy-mbwZ%R?iCN8^ok(KQg51Nhc7W5P6=9iF$3uxFcz?y`M43XUrs z?*YnsP(HcN`eR&$JH4M*Xyl4?=bClUkj@6u7Tfh5dw8<(v*4s!Gw~o*6Sy3yG<R zwLJHiueS}2gJj2+{h>Qi;bwRGB0`Ys`!6A_kbp&>h|= zkEDL{4N62tIy;&%Qv8z*L7`|PQ)i3uE92kjjNBO)ya*;{OTy7f4W zZ(pfoQ_NK^iFm9LCH*s*>A3fza)-&{w!@oYEFBDU4uF=x-tM^bHzh-3RH2cvnt`=- zAg6zac`#;Y21jbE+K``6X9a(eq)^w7Olt|Ec|W z%-@2oKoB0-Ahtwv&ba2~vq$OPKLv-}HhW5BTJSw%ks_R_eYq9cTCS)n1stssHIE9t zf40PGW4>!*m$P`T?)<1+F|K6M>G#F&(xui{k5~CyOk;ENN7eTq%Afyu@&6&ak$2^|jLl9Hnet)+E)``ErGPY5GHU_c`n@#p!^UnHP_5-U=olQ}b5 zf%K=}pO=5$0PY45iuG8>(rexK;afHzPc{M>Ee91N%bSn1t>tK&eJ@v&w*tL z(4S1#ne+>o9=1G>{XF5wvZMJ5g}`P(LJhY_t=e!pV1zaM_buxCFnrF9a;h}EXecQk zYYV5v?5w(DbZ1yfqj(q*)vXLajad(ZAYg?*UHIe)9|q8f!0KI2gAE)=qRUAFE}$Bi z+wpL1bU1WBilkbLzD0&aV#;dxqYz8G;B)|P&~P0Gmh*mU&4lfB2fTb7uC|A{)t4M8 zla)1-#2o)n=hb3I|D4Y~ujtHec56~9THCdyT8ggAu^sAkJH&H8ufxLLa9IP1esg%B z8GpvhlPAWAkH3S!?<8=T)MFzRNpfc_KLw3fM294g56pM=^-6<>-?^MQDM06&>~GJx z7AWJ^T1|h-)wAh9<|x6?wS>w|i-z-(D;ej@-{G{Mb1yA)JWuy$Y&VCKc`VgA!4>!< z|FZU49@O1hWVTboCwfUBJcz5UV4*rrGKCWLNuovi^<9&O` z-m`aYrX{V{Yx!f4{4#X&MBpes{Qv#n>zPfR?5xdRgfIfW5^Ud)$CCl)07K0b{~Duz zMq)zo(&Q?#*N;ngCNY|cHn2@!Rl+Db4Q}N=EO>%*Ds5`uYlhFgE3#V@p+4QBIB+*X!)J2nY=py)+M9i|SUY)(%Kl zwd27&pooYM^YAYmkxJSYfQOc_m7^o|+b(^H5Sw+_%>4FQ?-_kdGW}>{+PQ~$RKn?y zsclOM|6cR{TOu$1P;n|sO2y9O5AEr{j}ZU|x=fRtXDJ5-{2=rm?+xF_aD$_t=-GYB z86Cjv0z4peiJKE=FcSh51t?RaCOo_Z$AbkUT|hk2z4xY|P#izWw^uhNSzGVMq4bHs zXzn&t{L{eeul4iQgX{R;S#-txk79O|Y2slH7limq>MO&Y_b# z`-k|ERUjBhP|v&Ht!+0tZoiIs+Sp3pWOw$X&Cu2a$c-f{?-DsNCVkfSc^R5`f9I-> z!+igv?dY14vYHcrWj7SRc@V)wOZH;el1pqGD1~=uCHOaHJ(& z0a;5Qk^73_@JA~EOSe=jfxjqHva){a3?2K<$zU4GIHqAdVMlfl)7u?rt zOy;*m!PQ$PoweT+8g?)TX284pdbLo=xY8=)vHPh}Py1aG!Ubh$8vpv)7B(*7829@e zaGJ++bP0!^@4~qy8!SKP!dqi&q(RJN@BNmzYfPssnB7rnz_0ZH!6pC$@wrTu(}Ut( z`>AA$6>}24PvLccdAXWrNX+LkpW{xizq{c0#A3h=;c{};AzygYqI9W=MF%1SHlHhJ zi+i(^#AV56eNkpXAbTMS~-s-JDp5*OR5Vom=Bufdk~rco}jF%~%snXw(yZmJ4^eQfm5AH(rw8kx1ncQ)3T4F(pCNrczf zgc60C&6K-tcWX5I-bK}9{j6@|YOP<58I#ZXo7Ez%cmwr zMGUrSfZ#G}R|KSrToDRb(^~xaRlwmE!V%eaRRYugdoKskf|a35JgTKyrAiaQ4=qc1 zCc(9biwR6X+Fkl2TCb^$enYZws)$Lo{B4|A7?BZ`M;VrQc*@a5K6(3I?o!_;3YGxq z2L+ARr@}{QB}E2avshkdx zGHHT09-Z&mA{iH4)v00bx2Q^|7wZx6Np8tv5~eOlzh3WHzMnmiTlb+k{GQNH;>_9Klr#v zs{u94?xRYR;Nw1;{CpYLUnwWYsO)KCtM#wDx2?Ol8%BfRR|6GujuZPO;^8+#+jRK*W457<1V?tWe!)bIfAZrF$3+%|Rz5EQJ|-!>+M(?|rmh0IJT1Dq)Gr z|La>BS^#QwJW}TPa`WyyOoaU{OIWSN(&s<|^L4+_Byh8F80TCgQ;X30j;4@PG>wk0 zL=li^c>R_$!`%#*=$omarB$_Ltu~;&wb>!PxgeHMN@Mr@_&uH)mQ-so_MBLJBZg5Y zTQmF17Wh60d1thl3n)0K3SG+};I8{A&MHB)JT5L&$VuqckrAR&Eyggy8&f#(`gPzh zuCV=^^Q2TcC_UCmJhP&;B)!=OD{g)c*xnr&V({MHyFn|q5a5KDnjH!JJLdzWMON!eL7$n=@j2H6Ltd;-WI69%BgL65 z)Od6E%V@ch?1_p_Sx&!5?{C+j1`}w1G6v~0Cd=qVGn zl}woajE^jfY0}ZIz8i^Ja5?|19#Km0W@aV5BjxgFXTr2yY%n)ckrcI9i)(t@y4mTt zLXiT@eR343Z=hgone&03gUM!?|2J7C{)rcxL=vn-1fs@@@R1q@WQESc@P8C)-0UV+ z=>t3LWa3CEBgX)SYE^NPgvr@x5W>pNnmAShQAh%+TmD=3i^@~vLn>Z;*pT|ju9gpo z)bVzYHshGqLb0B9XBW>oY^<-(%|I9zJdb`h*+mZ`p_KZYpiPJui&w6<3x)y7b!lot z-}!Ljdsuhq8xEB|E+E?vPv|w9f1rg=QR(>bEq540Q9*&2_ilCTI0{H5lJ5*jQicHb5HlmapqA|gY2SLQzG?ed^Rw=A4~{MQ|itk zy4;s#K7MANkdL+e+`xRPl?Kf*=_*XyfbIS|usZZZK91q|oY zQ+y6n7;N)H;`DJcnswtZ))6vhnqBA*ZUYkU|Rei(Zz^etwf|b0*z%bZa zkGgYee87N}I5>=m=P6;JV3UV8vxup^ZZ-&A6k3Wc0BR1Ly&j5Li#6vlV2mknQIsCr zjtBC}X4G`Nh0e!Z=8N4u6qR}9;dVkos%{{6G9Cbin-9%P4v>+rJ(+KC&oy2`alyo< zRYm|5vpdX$ujlCs*j75~dd46XABXuBepy}2U(58%VlZor)uON#J^V=bp#tWSMt=?A zo;Kq0#^4;k$2UFC+Y9`)H(0&FACxF~di(3FjumDo*^;Aj7&Iy^PTm_B7`RA)D+pOa zlTIfkX+N3et?~icuGMpN#l|m#4dK&@xDY4~2GQUp!gBqEsm*R!7FJHAuo_ko+`KGS z5s1-{VuoXgm$d1>TDdb%_ZIPdx(Ut?TY}r|MWCp|PeEbvUlP65#s*^25E;^Mw3qsF zuP3O!#jNRz=;^b$lyf@-4!Sd{RVtq-WdsS?~N%jB)n;1zPCfy7`wR=2FP zixfJr0k(&X=6JM8upf+lDJgjp2wt+84K7pN)e&v0C4%5&QuvcJ^IPt} z!C*9E3w=K#Bz!OvIP=}rsy0JUg&_*%kUB2aF)Eb`m%-Vt@1VxZ9Xg232=uc|hXWod zQm+jDWOf;uZ2Ve7zSiWdZC=?Z&v~=1Tc(+Y_Oqp(WNyMAwMB2JNUEkPw zicJboL3s+zawhu1k#0DSej*|dYuBB{zz&#b>g8$1g?yZCkMW{R;NupW&VzB8v=+oj zW#!$g=u}Jbbc+ru0cCes)gDu6v48X$^fMjpY$^siA$ja94MEn`l{dT+Jw2Yf77h4| zEM@(H!Ae#>!E+08300XK9;;jy!vBJ#DEz+ug11x6%wY%_PuYL(kfQ;z*7vbhKBdKq z1$=XivPSur;$A<#+m+K(q!5`f0v^Ve7YL;M1K8uRD6C9#9y=LXSx0d&20?5h<+96C z21rq1tW*4i9FIGkP(Ymok_n=Q^{bYE)oA6tVKn)ZPfHDS*N1-g8uM^X*0@szJ&d4E zN_&hs{`j@juR_)tx>Y5YbT`+?rA;eM#P6WFcLFG+D6Go1K3#J4w|r_E)mF!tx=gTa$` zoB>*fxcqKc+?Mwlh%tq(8sM-bW_9f&qUIG4&M7`~^xD_94*H^t3hctQVXi6@TskV1 zN1vteA5KgOTmZeB@*?f{EkT`?^{LAPUE1mH3M}QfroPZ%ZUpQ&Qgyw=Kl+%^PU}sR z?>VO5c(E7rqRap<2I^We?Mq)|7Nu~mCvm+M1_iaP^4M*2(ZE#9c~FSob?065u!CoU z%xSG5(55;-ky6!CS+GA;pv@29E1BoiffM9d7~2y~${)$FRZG>w&!B7BdDTTlW)|9I z#t1|4&#ktO6M`~L9t4GfG&1&F zwZCNw$;o$|Bq#xw2L?8sGGGs-{}GG*LFu9$XX>^hYx6C(;n{VzmqZh@A$Nsu(0vB4 z0u{45wHl`xU&y`m6G0PPR{}c(>?eLhrd6PT2^bi)K5$Z~7ifO&Bg^nA`)bVT;f-!^ zWL*Cs0AaoVA&BsOzEYX+!0m*d3F0dj-;VG9L7=sZ&bO= z<^g#~bVM}t2?U6is-!g^+C;{&lb|4P>b5USIUo}!!iTRBx|!WdMeXcJDPurrz`wqB z2h=HwA=!@xz3eZHZ8c^aKk*HYqalGHfN5}?ZuZ_0E$ZM42T_sVQ2V9%I~#- z6pSL7iPqtQCyDY)8n(bu+X7I&u!*_1!@<1^l`>VZAUG%-q`sTx>4C>-6GBaw^O%J3 zP}Gagk|!PIh-1`=;YqNhMKAHB0`VqhZ!K0HHlEp?RFf?x)|%bkoSVLTQhoRA>KEXZ ztVcOar`FT52Mi*KYqI-Q`VJHqF<_UdNZKtn%IHA7?o|WQWTvh<nnjs+j6P-v8;JF`DH}cg&9bmV=x+qOSH(6P)2A z%6>A{nPm{n1LWIP>Jw{y(ps$KR2Ez=NV^$xtZh%CF9?|f#*3nIrNq+{&LP?YqjkfqS*qw61oK$GJD^=T`W=4gM94p1Q!&st)s9xB2g zsjIAnQ~k2Fj+4c9lK~5LJj0$xoQ}6&g&E4H=NQpuwiTA*dUA3SGR`Byban?m}FRd1)$>Q#1CuKmOe!f6NOXtGciz5$CpIY zQit6ktr>Azkn_ zNb2mi#$$d|Z^cuFEi1ktnM6hruO)diX+FJ2`vWETgS1G6B3bh!WHttRbU>%m zpeu-w&mrUcuhYvSkf2J)ZN71Q!uEVR5IKoYSb|V2+cL7l7E<54;!GK1D&<<4*-2E$ zt?uM7%)x7$EimE~_N=@C?3AopstwjtdwW~~P=_{O5Ch4vI`-u$z*0vkjlSCZuqY#g zB6}BE$d`gzOF}%@HrwV;%aUkN&uWvCrqO%zlPWyDZKwKF0okg?bnD8}wnnEORAT=3 z_EnuVC-3V@L81JPd-DuTi9GXl&i%1MvD-@TT@Snpw?hcnv<(*uWj)UffY0C!GfmH~ z8I(YDOKr6ZT+aV5gN#L@O(IhJGo2E}Vt>)`MHev%Z=v#Bm|%J&_0t3AhehyU6H)Uj zXe_7H^Jgf2t(BbX{JS20=d+)X8%nl~}Vt_kU2fV36jL=YSH ztITaJ!8=@2D6|_gQSVQmiJP4N){ucQ!Ygqe4~-x-G1d@;sCZ+2b(eU$&bbhPC+vMv zE?$NVb7+|`3AelFfHo{SP3Kc?V?bMIfJN_1XALkk8|RvqGcv0)q%)9!&poFgE}VXE zl}eTYqZY#je=gfqPXR-*tTGS~dlupTgTN0E@0wq+A%c~zn9-Mv!7<8W}n%Q9l|{_g51Ts-m|pM~%qzP(S`^jd<2 z8di=;2~HE+o%8$&5QP7YBYhL%6*-zCo%VV1^%bgHjJ0x~)O%@blQof0lleVBN@Sca zn`Xlt3EveG60*%^7|cQ@V!7u7li|Z8W22(t>gkTq)lqC3O6Ef?kJR^y=fvu-r3U+- z6_ZoA7aBzyv~3R0OU)$-GeODDa%T`yGKkOXA^EBjXSDMxwnX=Ngup^jI*7^Kh~G z7QUu_zTUA_cML~lU8P9D+ja#4Ub(JYve5Mpf79{mTB7x-ci>4?51xO>`LUyA~$VHXA`|kv?3}5`2hvWM z2FeKftro0iw_9up$Zpiq*ziPV7v3s|A)pCUs>$=nO6qCq!hj`Lrq zOZWx`dzgL|zC>06OviaF}q8@xII`&0~NM@M8uHRK=2) ziv}-5KQ$^q0sZN^N2707L?EqjDUiLJIiMZ!4iST1F`uTvAj0)`3{)JWN-(7cJ~(b?c1@edLNWAwMBV-s!x1c zos^uBih_m2V?H~n!8lC#yk=R&{z3Fp$<9d5^#C(75O>^*52{28E?VNR2`+jmzSZ6( z*{hoCt@~T_pzl?q-JxhN>!H@FAw%{Cg=u?4jm1*ndj=wkcVG6Lp4ANkWkvEtJPZEI ziUkH%ES8Vs!?t!3D}@7}DYewW1gLMt*u(2b*aFp(YK%|!>J7ZBAd_Df&}`IaW|n{* zN{nSD!IOHr;HAC@_(pmg3b4r!8*HSm+@#`yI7>(neG4XCV1E^Z8D1{ZT$boAKzDvr znwqO}#y2J751bZh+zG7Q7{ClQP&FJC#-{jKV**g5_K{Yj2A`zLWIk=h&`oh8;6R{1 z1cOp-CVp?Q@6#5k*QUqnJjvOo^7oB79?#nrHz>~;MgRakv=XL4BhEDy}R0(vk z%494@I*HSK_FumoFFCi|;bQFsKd1mG{6t6Ct(_Et0Cj^-lZ#t>`JY}KZ_K` zdV~KhdOZg8a(u29WmUb&?p>hRzJTjh0Kl86E?BA=1%DMn(f(lNk8yGrW>Sv(YEgaJjRK zW?(k4*>oLDZ3DAWF4msduQ8t@K8c1JiN1rRseUZ!>#0sN3; zxmqf#%bw4fT^x?Xf}ga9y*HB4cqP-S9o0tsM4m<_&TTt!dhY+*y zP2hp2_Rw>t@fC$?#gniO%gP$_q|%C-;!CxpuIk#RNoq06(e1PCJ$2W^{lqB2joS&w z!Gy9M9jZUV4<<@$<6Dy?c5ou-{1AWI-?HiYLO)ypdn&pP>4rC#mgvfLci(Xp{PU{Y zC)AM6r))tW)`{=>q_EWU{Yrhl`^7a=+H~$J)kS}4%gyG4QC!s8p^?>+=R+=?XVs+f zWW!gFhf3=U(`wF#MH6mn19T{Q-;-WpI89>y>X=l@WWC1w_c^kSZZ@11+ZTMbjw0(8!cm%^eH% zoCMJ%fTW=&m%VNk-l*b#4#n+aSDMh12CDIZ0c|7J(kdH@rG1L+eb@0Y@b6Iuw3M(< z;dg)3Ern}jQjf<;_V@Rs+1;ex5~xkV#c2YmWHV?q@D5CAlf37m_p!#=lQIZn`(q2) z-=G{eZMM*r*0+@061ioK?GNG9&K=g>{^|$|TixZDTA2P)Z3G1h>};QFJldNRs$B7U zLQnSbLN3c)ah6T%HQX)y7oCdgv4fzfwfT5Zu*r38uI%Ggn1_NZUQ>djvOr);*f}dW zmNev~UG)0Td!6#EN-@BBX~0mh4WATLy8;{dkFN`}%YSYH`qFPYP1P%8!ws> zyJFF=kr1T?H1<>Zb4chcy1IMNpD@%v^lk;8T71UnE$W3VwhM<|;=>2Y&sKbTnkO;E5i z$&q+VfI(|SS!&{2d0>9euqKLj!-b`4>(aw%#jgY0nlGzibEv7<6?GHAu$bN2j}F&Y z96>wn1Qyydsf{~(*i!ofp64}kWR|_@Pq^Ke6N7874@5K@tYtyPhkTF9yT`|OP&)91 z{z4E9C`?D8F5RqU;i3EK)6ZXR-usjlmG89P+wT}W443J4sFbQFr6lPn%crQ(8d*C@ zaf;JgB3;Vv@_XClI3=OIV-(JJhbS^eS3GX zraUXX=zNt-75!7>1Ni-xLWY7b1QZEGhjUq*&t8S6-A+M!XH750Xc@PKAf=201RB{_iVP5l1uWW zRKo+lODhD}6ZhMX58DmNrz!6Ijk?IKcb6V>JyWPc7nLH=xKfe2%YDgM4N5QDD!Fta zl4-|9=gWL@Sl;xNhpr3JoY zAlVA}O2CiEEHbbt^e?0rnFWbl!z_>`cBCP_-bk{1`GT-^3lGgM!)m!*XrrmAn}RZX z0}1$~?P&L16hmpZ1ZT!khs^_bA}aWi1Kt@gH|@enOOI3hyYEcRXQM`Go(IHecH0n< zV+@K^M(EltP(8-Qrs|of)dzlPhaiQ2Xo7_7jpObry2mo2>8%6^Oss8pdeID&##z^8 zT2trrLUlgP)w^7?cD`lv1wB3L9#0hqCHUJL_PHf(i5WHUEjOOjSg`tuqi`H5_VPdn z`k$n(%qaf3uRpgZ3Jn5P{{gc#xqcw!Ado2XTXwWV{brYQCd~%3g?fh+CK`t8xYqmX zxR1ncQ8wrzxR|blFK4RMZNX3G>MM6)W2Bmb$AK^|%Owuq0290f-YsG$x1J%bLY2~m z#=|E^;r9`u;ty_VkqLyZeBa7o`P)z(7PeazAw3(ltLp{V3-r!m0p=AAC5XmiE6L~n zSaRvz-O|>BgGJd5r*n;QMRDkeH3Hu)GWG`!mpgWXsBpKn_y>fFrXYEng$=^|?F1YN zXqOZ)bNA|lRo$P9qIRqjGSP@sVQ1wjX;Cnb5?3=I{jr3CaLuHy<1yN@JdU4kAc`#?@df*Y;r)1eB6cx(AR_ zLO{A>=#=h~knU8Zo1t4tk?s_v8>G9-AqAxCyYYGV-tT^o@A%ChYcZ@fYu$ZcabD-u zOoA=$tvHjN?IWy%tyvV($vCRH+PGAK3g@cemdO_#t{nPECra?8*JZvbJuRg*?$fY8 zDcYOXypArq5%#&Hqins7_+4$+4Y71ge#z+HY0k#fWEY*UyM%s(sgp-i(&cVDmpolG zVtk)(cal%vp`#!x=lbRmrAIpsE0?e2Ly9f z*d}9A>}-;T?Xl~1vjNx=+!Bv4mD^LD+E_yklhc!Op@R8lu$I~5_Ad5cLqAs;QXr-L zkDlXcDW#k%rL4LWHrsNuXZ!KJTnc9Zs+KGAiEc9C!IcGX&trkny~%q#uHI{c0y3?-mNEu*?3+j1xx33Jq+#cvEOU_6WCv}P=---UUw=`My+z3 z^14!YORqlv)VZ5XR8rxo?7K_HbJd>ukL^uvC#b`{>Ls0TJUS^e5jLf`3eM>94b|gN zH>lX2=g4)FIXv1Eu#5Z1%^lV**le_)_3Wo`(qsqxI2>NJH-0QT{V2QAPOPTgvtPb1 zhSTz7EN;%}7puuQ(pQ51p148%*XJu?(`@hlv}WICcgelKkV~8w-h8R|817%Cnf7A8 zOHX0G%oJbj?TgP}77+tWPZ#^N9&@~om;Kn?cuEFQVUdsP4lXYOgkC8(crSIDIi3E9 zbq&ji4(oH4#3E=W=t@x8&${f>;Byl*72KScighvRSB_Mx`=&lXCt`Iuj`a4zCH=U4 zsIn!s9!qIhMCrM=&pPUM($ra4LYMcu@gY-@6YnaqNh=YzXFEULSg~kr^KG{Rp`eo5 zzt`S)JSYQ96;iNwb#QmHAb59?{;5lT!}saE-mL;00*O>mrLnw0ir^nLS>j=&Cx`v* zg4$CB$24Nm6=AB`csAWZ`ZwECqkVDopNvNXC5QCOf=S9AQv041>fhX+wfG+9CQ2n< zwxPYU+sIASw>fs6`}zC$G{~!O9R6AUvg+N)kyFnM8NUb2Ibljz?Xd`w0I>nA7LuF8 z|B^I~&y?Yf%7?;ZDIBz!cM7Fgq4=*fE5<{g6)KO}uG{9xX*@ciZpHZ&81 z#1e_NS6Cz`h{Y>U*~MWfk(Z)KE%we`^jmwHptvLwL8CSL}-ekpFg$jAO6YUoPL zK3O)ZOjYu6VrM5E|9*-wJhj?DlQGeTt-7n2=jjtd72^~Y^H)togjT-NH&K}`dmMny z`Vy1dx0iBrsrn9eIl<}-QeHW!R|cEagQt=7sZC!!^)C@x zM2B^?DjaU6NIg?*UKlt`HMf&I9(%BsHSfJFi1_I>6^mK{hS6d3 zj~eE}eTP40?|x?Wxq3#xW41c;J1kGtx##QQXgA$*M`(4bLD$iD3e1$+^#`yHUpTjY z;PN(EH;WGbEAbUp_iQ}k>M zvv3N*yL)rcU%?@(e68#I<#u7)9MNlQ0=!+*-Va3T2$z)TI;6f5zPJBSFskO6*E7t1WWOasOtNeht;xlUhsmm# z^UOqUd~e8y83Z~P5hYOzHEQ~_(R~$OAVN#DS{?~%9=nuK(72862K2YeBL;e`4j{Ip z1|J;?8Xoko_YoZg@!{;Rj#dx*TR7TDywrq8grRlO|G{LaKPY>Z@ak$kL1TyKJJbwwA?s``UZRsEgBR*Mx!`KRJbk z5+~F_`WOw`c5F7JEp4+HW1L?#L{A!eiA6a0EJneACG4V33MY7?@Q%gI-!vft8FB56 z|6cEJ6W$Nqq>X3Kq9-f7)eU~ni!;s)K33UUe$A1`XLYM=9UK`A>1ri(Of0*q_>#nC zDjGroK&?k*3ZMDS%+Tjt_ROmzs9Vc3*&IKL8L(1zh?Md=IiEd79jahQMSc|YTbV}) z^Js{fq^1idL@^d~VV*zGQyvyp_`SA+ z2C{{mrA;2bq&pdXY!U98RwSgYPKdxI^{ekCj|gmR>!ph`@sE@>2Qvxl=USD9j2F@H z8sh`Q@F=X+It=v3Ez2*gcFqebQ`g5^bn2|-yp%&#%q9Lu5Y1Jlzh4Zcl;;4_L^`41 z+-3z!w%Q%IZ(F_}h(&kO^z#q`Nb&J&h zfx300#lsYa&pfe65ec`bVUSFdtCH_~#nD$-S8Wp=vyYyJhRT%dEAQ z4ZI?IOrYIp&)dr#QJ^$1oRkudF)AUgEbLU+RIB)br6oG&i~qW+Y(#}*l8zkpn<&U5 zm?618uQKUal?MG|V^dy)gmIezjO)+KMTlraaVseZ;=<#nQaHQaS=EltbIn^6FZf-N z>_{&ROhq498*aUtBYDhXm?=!{FIjQIdq!FlQnt0sIs_B@@ujDk0Ndn@`zvfSF75jd zUE*Obx+jYvGcokhM|ghkA|Q@d*HzpDVVG82?-lF~h%k9Bo(2nOv^R@V>|c}HuD!JI zS;=^ps|cggWf^jvW~S5S(oc+nO()aqml@}v;RFj z3jSxi1ksVt;tPFMvt$G28B~jMj$bSJsk#qP%vPD2FEzy^humHa``+@I<;dOZGdaoa zw#_U}^BV+$7wfS~+5E11i=H&AT1LuGHg<$K6#O8aR2H9k7u}YB#>}e<#ie8@mHK?b z*Y^q$zzadg5OnQEhmPJ}PPKRd%)!@n8HVF>Q40N%{pDV=P7SkuSpH_colOg`%s(hT2c&U*ZE2T@S?bP;KR3LwJQBs?h`2@ts0-5}!-4>AU6p;Qpc_ z`~GsCrrb{;w ziMh!ct{2v9^HlCb1AOhngsqNe>{Dl;lJr^-UIarfR?HBTBv4^nq1lK1F?sW}-HUk8 zqd}^RVmB%|4)c{KnvA^*mNC^FbdA<=w-KfPXq%uj?|ady#v-iF<^9$WKga|#Ts(XC zPVwtIXubuNFqP|m1%`4EMJEaJNZw$z_OM4pO4jnS%CKPk_}_Uy8Y&Gtipzp2FR{8( zCtCtduAIy$T^1VqDNz#QemEL$)ENrxn*=gxue4A^m`g@)KM2^=RbxpjlTqqVBtqp_AQunTs$8 zWtfpr)l_F;jB01B&2sF#M4|C*cL2-}ow;xP0Y|5el(W#+D0|W&IwaJZDz6h{$%1#S z20vd>3Dwu^2}HY4&tczBWc z!=H+2k~lkMAH7&0kxSOaO?&Qi#Dq7A2OZL@^ZO79#8iK{GKziO);ePhYkd?Fg7ych z*DsaQO3nPj**>J9#yXVF1u(|o$>GuVg>u^-4Bd_i|`9ZWM4s>q4ksC}^sr*wTT{cTKXI%+3wr~U1(Ux#7pNS3pg zOo!g9U28lVtdQ%h&Nt<)opgCW3RyIb7Jzg*g{yKDCfQbACivtq3u)O|#&@r-z%j*V z0m^X4+Gb7&g-QOI&n=8>xIj*idw{6P-0*Qss!JwW!jp|oYLv(_^aT?G3$dLW17yAq zlQn*4{0kqh%c7C;Rn#@!ib)A-T6;5Dc86aG3fHCw6|FVrpO#M$uJ^vbq#=97Cy96m zrPfb4bb4P}g+daGXM}tVb{z6WB^2!98r3Rl`i%OV?hP~lv+n(s%R(WU^7q?bDit)I z3W`Sh#_e6tPs3`<36JAJuDd_^g23D&W0d|nRBnIqdm=-uyAZ5BFbd)6=ogp0+1ro8 z_J<*ns6W7HUX&WP~mj=70h3^`rs18 z@@cW}wryOC!={Uw5O6X$d&TR4oID?J^VNZFKJriM=g+{Tl=pC4i9=D(X*oF4ko0)5 zLMAO3$XLn*udvp*qSu>f0J*jNlPLe77;(;FJ{)25RxLIIir6?^C&;fjH=zO@w*XDP zb}85%G8XT4jp2^Xbo?89`omxExMFe&<4uE*=BS}*eh)dA=W|z0#U#BDBTSlP)IDUV zmV89JG|-42fsU{6Q8G?ChGlUB-JU^l6;UQ!Dc zlMw6F3MbEIpH@aDBp_+~x*G#IH7eM%{L;xdSq=ZW@YW7HcNR+F#{sBBg{Pu>0*Nad8m+J>6YQCrW{zv5?~ zt9#}J(ioTKh(EJ>wf%F#dpZfa!};DEqc!$g(C~Jf2^C`Dl+@x>{XBo zB3{oEVxd#}bV7~$cb&+4hgyf*{6S45?k-VigE1>t;eW>by+Lx=1DJmo0o>&0*^;j< zOFZzjo6gt8wBE6?+X6TC-L0$O_3uw0G#`Fi>U*H-AEGia|KV(%sb(XQRsT+VCUjzMx&OT(5V3@~8JzySu4? zvRQZQJL@kumVWKuf_hazj-`hUm~(P_cMXUHJRx-HjmehirlZ{g>k7{E9~WqJv-z1m z&xw2%$)Ghr2_KC|-7!pL)|QvxwYf%mvw9o`8TQxvwaWSX%hd0$ZWx)gu=P86sTsk7 zYZOc;3F6v4dQ?crvO)*`lTPQNW;tA)+XrVm&zw0PBpJ#x04Iot9`IX^@nWsbi?N{6Z7dsvo1TVv4@ zO1k`dxj-sOAt?vA-L$4gjH57psMrYF1v?hvv>HwU;Tiig{>d=3RFK)Kv$|T7~kuGxH-EYY!hr zRl@n2?T;r}_0|Y;O7#&wRk_cv+K@E}za$(0aqJCS8S*lD?7&=>;oI-TM7+z+z+iSX zPPnJTGj;x}vTs5FB2}57uaM5l_)F~fCyF~xEF4$ z@bHQ}*uyW}CE_x1F^V?(H@LX5Ci+jBfpMom8Io)}3nIm@4qEPjfktSvPyMUi<-kn0 zI1IS>Vlm?inNC|#a;4*aa%O8?>rFOccxO4zN_6x z)gg$UyHh4?6T1*Pdr@etEaf}uxJFR8%3V#x` zg=p@zE9@oOZ>G7|$-mNR8n1KTY3r1pnRkYdb1*Y6#5sd_+#H9KC?vgR{T!s>K6BM( zhX_C>LPJB7N@{kDTCdim>P|rtzdmzXe5JM84Ob;+9c34w{0P@LmKwIlm5wX;L4EM-r99FQbOlTLP}2{c zoST-CawJX~(A+B5&q_Ku>J34h(%Eed;Yaa~g4JFdL|p|=a;a3k`HbSQUqcI5aT=l| z`MmOf?()9(li&W9>>&wJyO_JPk1?s;=a)i|2{Ic@3F{uwoT2PZA@_0Pd_8}(bQ3F+ zz(7M{KQw;X<+53LFu-E88)r3QFE8+D@54jor`W+#Jl$SJG*Aqw2Yid# zuDN|D-6OF0om}+Aul6dX;`+XTGoVE2o2v3KjK>ccloLWz?`_X#d?QOv1u8Fw*hjsz z9)1yh$;}}^kKuOf(6L4Z{RwCH1ES3$!q-aV&`Gvv$Zcmo$cw|z9T6yLca`x;LQ82N zrg+wMZMCkTlG?b0mvAK}1e#q+7yZE%&R`3y5zYJ4Dmd3{Guh3;(@&1Ep%150H&xZs zE8mIhh*We&pWjwgii|~_BOk7D4NJjziv0W18z*{ZLq(l{>F(k=pTfWO4b@P{GoW(J zHygVazuIYamX0e?tTCE6ivN~as8MV(6B-c8Ul+!pT7d1qiC3CL1vQ^lKOwFR%mRT> zXg-Kg2?>e2Y#-yv2X4sU5x-IL;4x~JI3|*rkXLizf%vSjh-LfB#A3x~h*sK(@|oU; zY8TQIbyQDF6qfFzw(>IgWRsKVX&y4Xt+0kW#P_Rx>-r(|?m7l_jaJrXqQ+a88k&p= zBEf5LyeWdGami)#z4JXVQXPJnu*`3R*z-8mJY%8`t9h}N81gtK^_%wLS+B7#L8+c7 zQ#J-uSkm#a6J%^okb0dxazSFEuI+Nvz#m!2pG~E7%9RX$hDcs|uv+zLa`;nn&~uB! zQ-F}JpdJcQQgtfQ7g}D)7BCkPv3;ZDV0{!&!cmj_bP{!pMzwh)R($%=<2Qx~+$6De zx~8nX#oH$S#8k<^(O0Gz}#GL`P>QanN&Qs6X3AA!?U)xg`d&*i|jS7gj4*V|B{)u<&)u@p;p( zHy$+ie{@{Aj%l>}1;D8lypJLv-??m%-O%**e%5O%{(MXrB5Qt~Q}B#o>gne?>rP9_ z=j~u~{isUQ6KBD0IucG%x%u)#OxeeE#ee+VIV@XlSJj#%imb2tDzD5+#gwI zs~jIxNRue#zg&n_!2?l$kc+rnDV&JIqqYN73(u>)TJP)YPAPNB((<(rF@NYjF&31O zQbM_E7e~rz<(uWSYrY@vH#)h&HxkeG1r6*2>0=XosL>9Gk6Z_$A@4yXgA=?1I6x+Nw@2-Hb;Ns24?vwWOk5aA($`_dwqaND~Kng3QF z#bE@UQY1vi>gY$4dvoax*Q%7ZAjXs>r->3s+Oc`^-I?86Ah;mu13x>j!S^(AV^;~! zh+($E*W5-`_(Czu)h*wA`2`jisb)s1Q;R4+@Bd=ezuKGgT~?e($wWnEQiMSF$B^Yx z`kj!`iBe+h+XdR@AB90~=s9S!vy5dUVBRR0f$-7p?@OQmIN_3;w0!*ZAoCB1Ng9YC zPL9&q!Vn2i9`eu+jv(*s!pBLM#~4t7<U2zO#wtVX;g(9qP zls?HR z5w4ei@KHdU-#RQ>BPAW|uuA(_d=N>s&b)|;l>1EVom8OMPA3L~7Qo54oAn%OGamB; z%)zIkVpZg4;WyXNe=7+882BqLgEBMtiOo_HpD}1&6(TF|*@8StGat(N?uVnIC=(1V zk;$>5gF*tAt-5cYpl)RGxO-n}d&F3vnNtj-i|M(LBH?3$N4P0|LO2P}U&GK*`7o>2 zY^qZ-6%}J`GvQ7>?ub63-mUxK4l1f`0wl}!CPRs!mz%YTe_{W8!`G!WY@V#K1MHvY(dQG z5U0U#cjkNNx=ev}o|~;4Gx1Fw3!P2jYZC6d8mshBI#=ctA)ThB_Co={LUHPW>FRaZ zi4P)iOhY01ZYz&&cUav}Ip}Q{FMFZM>FndDd%Cyh-GZYlt}Ry!+toWPDxgjs!`!oD zgo8;{yghz4b;+WzlrIdRniyrm&DD4fRYS*|m=ezyYcx$RCUJ=;zOGEW&C7vRk+T`zM=#Ts%*jIDS zGPZg_y-`$&&;r8x?twz~O51~3U;hXSEdXG6BRoUx3F!?-^+}0-%V4W8&|?aDF0qiRkgcjgxwUz9;WW0?6vEVzb&^%g8%&~k+f=&EAuT7@PYfJZAq{5^ z_^zMXF=ELlFxJKk^)70;S92eGZD}V=rRnno*sa|>+TJmN!g+t)B>2nOE z*Fq+tphvexO+LngeOoM&h@F$2y}uceP~Q}wN66)1hW5%lOHWXt((M(Mz$4qIw%8r< zO>U0;!(SW|@=e4juSmCXsQ*<972oJ|?B7@Tt5sx?S61$8q;~5?=Nr0G>aps02POF$z&806J$I9+*Z)(3Y? zL|w0ugca*Fl;<;%GM#o5DC&Hu__EG+lESA_gFd$dyv)?bt9vBT;f9wA#u`-*m3!v) zsLRezjS<@HzikL%60;u$>p#`UXvR;|RxUPD@ZU{YmfecZiD7=OBR#n)wU`c*_&qNh zWA#Zg(rUb~li=>6AG_)L~!rx zUq23l09FC_yJk@x*Y%{R=@XWZG_*7u7(h`nx$MH>=Dx||rq0iT&^8^ARt1D5gm#zb zYcKr?51+?=TdWyn9Ho6i#33gwUE`)c_Wb>mXZ>4Ru;;Fo6%{0M=7T)8+}2A@b{xf> zZ(MJwl2tGIChSGK=pbwm`B(Z|*OCBj2$tHRT&dBY^X_QC%j*3FHVR+^#oyElTTcZp z*2i3zycMkDUOSXLXHb2&Q$w29ESeTWBNNZI+H`$%A7`Ldz0DyXzc*yV5 zxr3*Z1eOKLxmZ9a7pnRkV=}B~qo~Y-`UG&_JjF)~mi8n6A!1b4zoO>tiABN+7&MnP zfzdR_EysX(*J%A3?|IUalyX|6Pm>5mbTqrf!;<#f7aftpt2t@a2HbW%uV3x-l&kzQ z7zilX@Zsy0pXzlSmF@ivCxOK^RVaC*$dJkzVX}P<p#kSR5DOohF8!C*-s3-YnrN zFCY3Kgzj)1$U@oeJM=;g5VFI&lc{5kir4LhfxY^D9#IxGB%}vhdPP)|gb-0e0%uwz z^@tSOmxO|GX4JS5A;eLUT0uIHa!5S)U@ulNPYQ-Vm{jZE`{bu-U&R-PP{r)Gq^O?z zt7>Dc{uwQN24C}8kr!p2=%k{0Av8#ebzvd2yTP~)vCh%oD&l8z*@E4%C=Xg*WuD#uMj`vOZUxq3B#^mBh$$&>UL1Z z(0~0u7G4?{2wzKj6#iJiy+Nnb68JctLMOkeaIv!XUZ4eCc@P6f9R;=7_&NSu9DU@zdA_Px=lFwN9`| zzADzPt#{J=93Tqm)%OM7mz?LcQNKSADi*4jwno{k#3)2UWD@Dy!{6c3%Cd>y`;9yJ z`U+cXX=D<3$h<0+BVW3dW9!8pS`)5Q*Vg%=py4jo^;WVpaEsWRJP$CWkoBL5jDh^j zb#Hv>luckViy;iFQH5o}lGq$olm!e9vhzs!tl`@z&L>O*?rt=_wY^Cz{HsZL%iYhy z169nJ!$V}Me4i4N4}>SS?Uj+G@Q`}`A$^FFHT>&vOh_^+_59Bdr8~WwAnp{RIy9R& z;Iq86_jtGx-hF{SxT<-#mLK^j?SneD7f^^OwK=8xs^2u>B|KLBgpvP**hRz>lMFF% zqsa)?%Q!&6Y74xaF1&6WZ`Eszj|Lu%f6B>!1VeAMb8oL%`1zJC{pd4NjPoZdQ54a( zmqst0-URM!8ZS#B921Dj=k~e<;kn!?VM65P%octNx<+)fdc4%DA0mrBma{)2=%qG^ zd}QF*8RxpHL>s*O$Zu$NOA>?EH`z7A;EG!BNy zu>Z3FI*v2FGrFY)0w=J`vfIq}Ai|uKhta?RFFssBD%yOnUwP7Mx(ZO9DvOON4n_&m zJvtoH^~8yVeGCJj;=eZjDkT%AqVDA{Nz_YjYY{Ei8?RIYkaiE3z+a^Xg3|IY^~>2b zVdh#-a7|in5w|A_^}mRSyFq%@=>aaqv43)pS-a+?Uemc%>Gwc&91+cCuL}Td2S7jE zZHov<@6jbiPt6`FuX9&Ay)YU2Np@7?OYK(0V|!B`SC?Yle9WW8vJlHe%r4GiiNTa{ z*nG8lW_Zi8*r-$m2P`9Q)~A@)iB6EAEGRA6;PJJITbb7xB?Rx&`2(gGrBLznyO~CiiyZ_>7lHNdBU_&Si~rK4NGZx7ULE{g9D$FhNr=f`5B5 zm*cH6pJSvQJkmReRyMU=28--C|6MNPi(e?sSy3nF%pKzhN}MXhY#tAvVNhq2^K+2V z_2zd6+ke(fP6VJ!nYZq1A?q_g9TStNTj?JVWG0FDsxZKPumAk14|Asf1uP< zBOhrfF+>nf{h&F$#mRX(fYHU6Mf3Hy*hmsCHJ3p*-akZs@1#Wy%T?V?zT^#STDRJ; z3J>WwJZTO)EI<3P5;yQVAS~^*k1fKhytz*tyEk?iC=neaJMR#vaPa!=`Efn;8o22% z5sd=e4=THo|1+lkLDAn^8bQhcHg-lvEGgJ*=sFv-_93>z&RAwg@vs2Q$$^J?u8JKq zwLsmWZQTNB)d~s^9po4L1L(@-$@rYs_ZJ%f8Cn1aHL6N)K?s^(bm=D0wD7Z%4}q`s%^OYM+6V3JucS_N{#)8*YXNReaag~4QDk^% zGg+oV@j#JvHT`&H@>@=JL^X5r~{qbAL0W4LO+)K$n!l96KYec?4AH@n1EctX+8KLDh zP7Slw|->?nogQ?O1{)rslECE+epw+XupgTz|U5 zfX&xE?!Ho?5H%3{@ogZr76{=uv12c^xZT$4Xy5Y~#-#ChVvDn89u)jvlcvkwenLjZ zJ}O6RS5FYMwq}pl%*15c>D_o$Zqfzd@OQsDeLqGK6m_X6pcu1mOxX)KOB0y1V^DM( zPi3J{=W&c~O3%cEgs#=QE5QYKN^?<0wHw6*{$Flo)L2$h?=*71alqG5p&&|r_mlEQ z-CVKc!E2PQbxSdm_-*pBZfw|}#k%BB>2h7EYc%I*Re@Ai4+ zDO}<0y{{vll4mLwZ_=^BJ|Hk&l~zRw6f&nrksbH4!*Xg&fwlah4Yo5sE)K3~SWHb+5@|ICfQ7}?&{+&=O*PV0-c zOS8v4j`%MVN>$SZg2g_cnn@#SOkPNSny!08jNVReD5DRUK&El%VNMn47#M|G$FXNm z@XcLM_j&Ek7Wq}K;7R3chZkxkrz=&2mG7Cth5Aajxe~nUnar%M({7T@MNu#aG3~2_ zU_kVVr60fjb~_Pll_$&>i1|vX!4GVw7#O9eEBUfPn80u>tSonv!frNnv3|@WYd)S- z&c(+5p646|d7@zMLnFEG+pEzH#_*1~vbQCt*tYaKMdQ^yJ(4BIf#2AG$?rZ3gbX8M+o<$tElKWilfwOFHi^Gmzr z7(3hkQg`Sn>D?o_fPl>IG32rsfqaFaY3(si>si2WG;$7AVF~)kNz(@403i3)<>}cA z-DWnAmf&_RSlNrv-wRj6lfW=Z(F=%*qPN-4m;+IFofxDN_apsS!XF-$mrE~spA8>4 z%mUg0q_-GEeBpkPOB%hbDhyb5i>9ivx z_B2vx@ujA$Qf4zERd!ZuP!U-KR&sK(O5Pyk&7b{+HcZ@F5nK!u6To_&m1PV;)gC~B z#o_p~f51-2UPXnDf}F|ddhzhx1z#5GHRN`dJjb2Wz0YfOKMHfA1E_2lYSy%QB`{5B zJj>RToE;CyNlA|ZeBnskj7F2>^DF;qH#mxIYfEZ$(x09|hXcXjO6Kg@$^!&sS;Z`S zsr~uyjEBYAyoo~&1L)NU%PDbbS$|!J-2f&e4vQHnm-M~{T;NWeyErr*AQkQE-E#e=uG@LOhn&z%n;x-=V}ffK8QRd z(*GhYcOAp;c?PJkmK(rmre0YC4QfyQ}# zF0F71SVzs$Yu!$cz6;-e&}O3cOAA3Mmutk_Y2xY=R}%VRpU^h?f>2&-Uoxh$Ov+Twp55@Ik$W=r!kPdn!Ews@t~Fu#?kI# zp~Ck-xiBxqS!`HN^-W&3lTbuT)#oM};c269G8JtQrkkqCMBRpywigy3A%{#xP!nDg zo*XnY@=pqzvVhf4Cr8;DhRHuaKQ=nR-Z7+GRtFTChl<*@&YG1r?e)j_LQ&XLRIO?6 zXX~X-RX3{*MsP5p zzgJ>K?O$`T;6HB7zZ2>nFCDXzK0OexE^#I5C) z69vRXM3Y|})zKi_fSU+r%HS{sop}GVBjXGqI_EqqHfxB=83paNW?{7skMpzNW+P=G z(LH#-UeGJZxuS5=a|p=IRa*g)8!nWQ8A*g&LmuF1@~@Py=|7fxjpe{& za^Ax_DFq8G#vMh6I=?2hsRnzOm{<<*>`L_Rf1kHENy*?M#0nEM+eMNsAKIVFqFL`5 zGz_K9rc&RdrY_Q|ECD|G@KUToe&3bVI}Panv)&Nsn*ty8wd`T(_(HKo86kYCEjo3x zVO_f`CAGuTJ;7O&WaMNjA6Hmke6!>bbQb6_uWpfsl$$@O+F*REcK3UP8a~mO$&SgF7U_-R zrdn`|{e$D|NMJfWN-z^}kX;WaqsAF@1is)!<6XDc2{bfZ$?*i7+=E2WC-FIgHnVpm zh{Cf$n@GuTEG#F8$k|IDg(W=1WJdn9fQ!@vtxO-1XSR1zK?gSOKHcb!&{CMG?;rJ%P@C?Cq3EXvcHxDr-Zfa@SPI@F?rFu&C&aN{Wms zy#wqod!pP+LSL+=Y|~zwUjD?+{@x`Ak?NUI+*a9iU!y1xd*d}8G|&ztLvFQC8g4J9Np$5v7K>PkQUuP0N!HIu^zM7fo8fO3}-J=Rmlv zK>U8Bd4})BA_^H?-SN-6LT3%wYj&uEKcqJfwgr-1Yuyu4z!a|o?{j~d++r{Jn9*Lnp z-q$mUXZ+_2Ex~IH5|PGc%}=nVH#rqh*18QQ$N91wuHy=Ph81c+JiZ#euSI75#mVoz9kt zPb}yQcJOay7>Rd0N&kV;{q4VE{&_D90$V?1AT;8zJ&3=jsrdZDn4`Id=Iuqkn45jG) z`Ez~qcp3}n!{5R8$NReya%diZprM!fn{b2)3eJBI;L3k}DT6RW!GARWA)kP1!4M4Y z58(6n{I4$`?jLIa?fZvMLuM45{~o}7|MlhXvt^VM{_<*Qz`*(M;r^}V_iy_9I`Hl9 z`Cngtz^Wh*${?oyuy5SI>F?{nZGX@I`tt88u`%z_fs6N#UPq|goezk4E=&;Es%oe3 zC@4He$nHgJcS|exEAEyBpF-So-Hch*%6K{`q&LYid`5D7Ql((YQMWA{89YI#WJzYQ zx_YrYqzd|^v3aU1yt{4hPb~Fe$dv_S%Rv*;I~x@Hm%HWd%S28I zDe&y{_5FEYFZg!xabl^U_i0l#=imUOH#Zt$b>MN|l0T5ul))^K1B3Q{j86TfqG5_= zpa-Lm_I@tc^TABW|K5r)w=pZ>e?KF@WTAzU#X$&J9WBVD!BY@izI_k+&y{G1ruNcF zBkui`oY6~EQ2#1%nqF3;6fl*#rC{Mny)nh$+AhYjd2kp=an!5QqNP1Vvvs{ya(+eN zeRq3tyrq!o1ErVjz&hP;?LREUSUzv5An7KWta)FoX8c~ey1M3l__j;g0HmED)%v%< zf_^era!ya$X4-+HfZEVPBkrGHjc2sSa<><3rXpXWhqoNxq+D5(kUC;o5OD8)Pk5s;h@#VT%zVXWMes3bv$00(L#G+l@YuRm0=Ez~fj#8<^!xjDBJ|uWf{w z^2=Du7dN&59{{u@au&B~m0=8zlM~j1rn6SSmId;Ux3Ac3LX~SQ-&rq~S@Z+)D9PsE zM^@S00RLxl_fd3@loX#jX25ejT+=Zkp-;eFJU&tX`}?aQ0~P}F`@))$L)i$VeZ~Gx zO9TY3?E9oQ7y6mn2X)#OZh+tNV0Sk~z_F%PnQ~8#>>{F7ht+$N#7ZWtNymZ<>W!?F zu#nB9UGGs$(kwf1_ncYNhN)QkoDdI7;Id=?`_=VFAzJ7t+=*GMVLr~f&>R`Pq@Wnf z+(pOXbpBB%QM+x+TichVB?S>ZcZ=xlERbGnDyT$Oxln`lJzos?eE2!+THED74N3)t z0n9Wh>vpb4d`X#D{%Fc;E9uQs7UL4M&+{ zcvO-Ls+3c*T6Ib$ldtf<#!=OIZ|y6-825(FSGq2NoGd1VO;pYyljn0|aCOBjzVscN zrs{$M?mZL=qA*?ey@9gsoR1 z2KH$FIQmxD6`A^{GgJ-uITz|Z5B#BH>oKZucQ6x z<$}O><3KQCQ`^s9ayEZw=My7Q5Mn-@5&LFV4(8?k$1P%!iRP$YSXA(4SH_(OFw&>L zaZh1-@nVueLGooj7>pLS?~Chpzb&@7Xm%#qtS4gv}e zgE&${LqR^I`sUjme@5tgmn%dp{yf!Qs`%!-Jo)D)^iYA@@k;jqOHCG#SN%>f@Lg@~ zqFaAD4xZ^CKwSB?8gN0Cvo@=_<{g%QuGqavE9<>!5g>)8PCnP>Tj)9bxx|p?;B{O% ztd8{X z$)_m|OY}(;DL3A-p`oE2=;N?L!6LpGuSA?GnR|-rlnB{?lL*?g!N&>;irF<7Od`G( zUoq^FlSFeI#U{QB$D!Vk*5>wwJMpaj9aSJM09ll9VfOD<{7<$o?pO#4CgHx_8)ar< zHm^7_0Zo@PZ>*YHS5W^1HQj=^w)Dn0NU{&0ihl4Z$koM}MtAMdqqN~PPr$vi!n!|U zub?@BZN+-y9u6LrN}=9=>2>?JwiR13e`OdjdhZ9uRP4HBrdM7XuPhHp>7l$cSTUgb zcEYIAlpeZxww!%~rdqMwDw%n{e?>lT6ZNM}gXxqDwvIyXv#Q`-yPfX3v{bshWy<)L z0sjXZdV4g)@!7wUc2V3nA}w@(zCJ(oQ%HAY<~U)0MLJ|d@9j*>a4xaY$>!0BF`e~n z)ybda%J=X0UM6bKep&BDk6rIm8zp+>bbJzhAx;E1YQelC5&CB8xJ@_&*WMN9lcZ>M}|F_)9Ku+FsT{^o$EJ)Z}a22w8 z5pN0x=} za2HP>%XioNjpRj>&)xmX|Nq8AckFr(zTW<}14I`$L`=_PFTxL}m?<_pbZ>9(G1|JY zX>9GH&+x$+-NL$wbMd0;ODkm>sC&nXlM6SAUgj%!ZV?+8N0S6heTIX_lL;A6*eEsV z`y4KHDTRsDegLw3zFeXnXeb5akNV$jT%Q36Q@sSKHX+|#P8tt<>rT70uWqBhJAQx} z!&luF-8r+(ks8b2&*{uzJ_o0oi0b!_yXkzJW4^UR_(Rq|c`JF7J%{foW4E_Uv?n+g zPEtJ!EgbQVvC^_tzh%%b?{0RYX2ymEX)w7rBUfwfaZw{ERz88aA5W6HzS8HVo2n+} zq{n+Q*qYKx$>eLDNao$=<{<(@d(QlR@*C+B(E%k^R{I}ScQn-C1JN9#fU1Br5Ix9^?eqFpkKuFXrHeAK0>K>s%aHpU65c>kzQvI&BWP|=HNknuas~X z8OgqBU#Q5xj7DSXg)LE9qAT1ML9G&}z9`m5)G`MBg_Kcd)KHRyqIYA56GHpCT(uQ9 zIN({-Bi~;~I_rkX0{pU6D+$j9edJ5NK_0(s!$Z|?wb)*Q3(p#eOTnTcl)VzP%)oEJ zURiN>zJ~QY2X*WEH)y#bR9ZqY@#c%xW&g!KLiZ9}#`X~nJ z&sUG)3$<(D(;Zb4r4iM%Hk}`t!g1nt3X0a1iXe>y@zN*3R$3Z!G7ubo3TRsG!H+LY zOS{y}dKD!2#=#460I~hI2+#oKLEPXYw6F??BR00mG4@Kwqa(CXX(Xx;kz7s@&d-Yc z8_}}Y`Jc;j;?&o2khT)(`yb$xk>%`3|8PD+lTk=-Z1URM{Qv0s$KXi6FYX(i*tXS~ zBoo_CCh6G5#I|j_gNZTG#I|jl6Wi8IPXGS*Ij8EWx}UDjyROc4^}hDfUhDHc6-D}c z%&^^ktmKrjL#>#UY}n}f_+2wE5a+zv^cZJ(dYhRJi&)6Zej(nk1C5lKVVB_HM~CnJ z)$$hHT-wQtX(c)Sz4P%@M?v?$d*ZFqJOK}F+O*RL*CLhNo7IdM9PYUw6R$ApgG9oV zUmtyIF)Ll>lf$kggcuc`LtcRrl!th!)qmT(pK!DbHj^8TigOHd#QUmD+j=`$*dgbJ0i%3?v8|1Fk;vH+hoz*wtNg&aOGLdWEITEElJcP5uVPg4o{i@AVaC^L4RfZK3iU!9u`PZ1OG-I_&S zMtXWYKCAO*P)K0%H@CPhG`I+8a)6=O#PAWc7s=1*&{K$!=6~Sg+(`J!14rzX`ZQS*^8{Nsw5hfK`wxM%c+z_l?lWEQu6iT z^em&-5#QB)xRjNAH#zZjAnTC1JN(zdmZ|nw7uu@Uf{>r-70_lv=5 zy&V`FWib(szWjxStXl;Oh8?8M5D;fUi9~t7Zq_^!MF3&!@Ib;qcpwP=e|yjCZSuAM zmobt}M>9!BaBmRFp39)r-seW+wXKzjp_Z0jQ-=sOSf}LuWc5#G^Oq-^x%Pn_qe8I( zs(-J?WM~dOTqNy*bYM`sHqks5d}!M8Q-0Pc^!x8zu(ieLiz@eiA^>MO?h;Ja9pPi< zX;tg){dCj%t!glw4-XmPf^_uJIXzl1ZKi2iKe@d(i*W7uzI<=CUa?xveno@{lLjRv zVSqT0F+jf9WNpTW<>4qqZ1YcJG7G-9?w@k-_9L`UUs0u_u9dN3R78} z)zDiVWbU|}zviFBNc_L0(qj0(I~?+xl2_7l z-XSCqfP^y!-Zos9&=PsZm&lR18LCQ`rLAtv$U*7&I-~qjNXwys$HJGQ#@^Qnmb2g^ zX4$dPWi8l3r|Dm*>29U#t;VQQ3R@P4*&V(EHgC3SkeG>z+U~&bUk@VEc`aCnKRb(U zROUJVNF=dFv70mZ%bV`+g+!1+Dz{6+p9*^*2wWWS?w?Khyo^^rsgjEj|Cv6q^yulG z9bE}1_!6YsWJGipWWR;Pc^8iq6OEMJf?b{7;EBU_h55f97Jvb^z(8pbYbUtGIc?au zI5%YS&>F?{q!5$F&_hNXEl+J&!e#2H-)I_^Y%^3x^*zDk{$Z`nhm4l${=SKbyXA7V z$?Ns}oM;w%qI;(y!VqDDnLSoktAB1!Q%{70n~^>)<#Dm0=UI(NGK^35GUoE1Z`vSv-;08BW?8)I`HJ~k^jr3 zqg(H0aR%?Jw6RU@Ex7l3q1mU9u1CpKO>TcUj==Ka8I6`{3E3Y%;(VJ(IXU7#ooYhgi=Bl#suKav=FT;PH^nVRyR70++fL~9( z=>efb*r2xq5b}VdYgzI+uk!~xrtm!^mqC<8J*w!Ts-o!1G=9Cd1&fK_^@zcI6;BFcJ`%%rc4=hD%3&yTd0ZGT=R72GGj_R&ou>z zdRDTGM_4481x2^XJt5E>M5RGv?$PT23N{MP+jAFm^4%~Dp2eN;85@_$Wgv8aG;Y~_ z|D3|7%db!PSoL(BviW!l$w52L4`3-JQCvHQa5=dyZOwLj&yQE{yMU<@{Z8XqYz&R5 zAMp9gZb9>&sIdfMVm^Zq`d%FoybAEht$GEIDSOuE7o6m%{*Jb66c1XQ-fs~n$`5cq zZ~CGE2YwXw>yU~2i!sDCM?IFH1om##Lf^( z<2_UXt?`+pWm&;5Kb}@pCx+wl8iC-u7v}VJ)NWppu3W{qHk%Gw?8gF|ZKI=4V49YA zAeJ_A84%ZtiOKu>B9M-E84~u{0^P(Tv(- z=wW-jUDm$j&|W%YveZ_p=(aS~ngo7jdhGYN;9=)jeE$YOi3WM7O;9vImikLr||Y0w3OAx{C?8}9!M&Dmycazxhl9hlvo7l z5zCsjNlY$`rvyS4%F|XiGH}k5fCDOFlNA)R+6Q%0;?mvjdNuR?MH* z3E~L5_Wv9K^GYJ(x7;0KDsS}P=__p^a5+^$6oY#iWxGgh#cC{LM!1eyX6{p!>L8Z( z#?U{hzrS)x)jyN>9`XM7(=$h_@akCry6#k5nlQaRh zy*<*t;3gI?w;#YIacJG2(|IP~a6aD7E**p+Pz{~L*e?;%3+oS#Xn!L0Jr|r3hZGRp zn!LNXKDzWlwI<)`mT5|mF(Ym934rk|ReQfvL}~P&nD!UvPS z>`5uoK_=i0I+|Fq4|WN%I%3vdYIeEKsu0lDmimhaIS(Q>Ys#strc*-mw%4l?$K3L+Re2E)iT=EhR@p6^X8jz6$+<; zG%3;uWuXo6>vMsq%}(0z+X&@_l+ z$XPt*5aC^;HWrP4ayb*-=m<}tgp0-XHI56#Rcz&l7#fFfQPDj9B(zjE*KW0q+rgS5 zWZY<)*#QGL2AY!X&K(IxMe0M5AWgrL*{pUB91z^!u0{UZqz()}nF~n&Mx@awwCX)q z&-uMqtpj$7KQ@QszIS&&@RaX3GB8RpyUpS3B20j#>^KfiKC3H{e!d5GSB?h0a;;Xr zNQ|d=ozrGR-Ki-Cf>n2Lx?Cvad)ZH)^4!QW>!lLan#HL29KJmJufFpSUUSR}c|Q5D zB+%R7+a^eA;FHT~s@*#&BTK8TUAw4!l|@*IQpo8tM0E6^1VV&zooVDbz7>GEudE*wJ?xf-b! zlU8F!9OOC{?MA6Cp#LoFex|n>)kPxg7SAvFgFm@m3_F|6#s96`SxqHLegh`DDC)`_ zbf#iY}V1QIBaVOweM5|!mX*CWj#)cG=JXH#zgV!y=XHR=M4$dzcJT8s5j)2|T8 z)Vmi3%H(uiQ*6$sGIVKoS(CPkgN#8AwdU^o3awxP0e)jh2574ikXX6BYEvaB*1naArfu!8+Ah0!M5HMV zGZL46 zFsG|y4THz{2@iVmwN4xMJ|y;4{?R^ib7-WzRyupRD!e}h;=+RsFiFj-!nv+jiLx61 zU;R#p&10rpjrUST@T6{|CD1XVseL#u@8%B7cfCyr2o{(~+^3$HrEy}^>1-6a2#Yba z`_l~tIiHi@cVUwEGDsuC?K`fTcjkxP^LAzvPb`Q!N1t8lcfaA_cdol{y9#CkU4k_y zp~zmyzu!A0_ zJWgkFVC?hnl@hxSIA(#$mVa2Zz>n-hvg%Q{Ejtvy^Y-nYB|J|gMyHH~#J^B+(QZGN z%%A8T@qbTfo)EtjHb5K6t^8R=zXH++EG%rn4o8=CP9o7FloVY)ws3b|HOo){O23Jy z(Iv|Qja4;j{+xvuMHLr57XbIua-KAaTMC-gFwyW8Pm^kx?El$P3!9<-!#b}EZE!3QfkH} zI=-x)j>GsWYk#3HXD6_MFL#BQSaB7h1{U0r1d z^+My1ZJPEnWGthizhfx`9e&0vLMe|`mFy;VK-oO-{ci86_{(R6;*cu-!Ekx~+Fm|w z7fz#ULJ9yCXS(7dMH?w!dFu@oxTwiWjZm^^T6@|W0V<&Iz-0XuytA%XFEQk1_e?J4 zXcY;R&+rxnp-at^@HvCfevUVX8h{aG!mi{&pB8S8qNHB@$wzldI3o%k7px+;v{`(R zrHK7#C!d$s|5((Gj=K?mIH4Fs*pI=cfkAJfgjsBP``g*Z`ZDm@ny%j*^&NL_SXD3N z>2R11GDv>&pnhjCpGKztwwDVtp)p{g>voZ}&LIm7CWP`G^g;U)+>K%_z;i=*DzV^x_f6e6cx5Z&%NIWIN=tI$ull_Eyz= z;_tYQ|J)sC9oo?w_Ac|K#P37bhEAK)>$)Y_skDlaEx=bA(dJXtAwGD^@P@tRpYqh{ z5sp53%@?ak+=}kxECkvQ?8H*!>K-%-To+w zQD)Qapd}g_QoJ9A{Oq%npyLsmUw36yE`Uh^q~t}6M8JfUOe@^K$owAUw?=YyUP2df zq*!Amj4`{e7Dp^lIH?`h!gFh*?x(pTrtcgrfriq32%Vxuv(iP#Aj^g_Yc%u zj4R$}!B45R4w^xampX25e_~XBPvf9Wjn@BJ!R`;QjA5`l{>=*4C`7v135B(jL%XT< z9jwYQWB2Ge9tLi!gJ?*@{xnH(&5$#GP!4x10f1)}(MP%T3tQ{-{)Wf%`h1EHCCmmN z#nr{YLkO79$4Z3YsDfbWlW{}MP~1f8b0;fe2$aFm*JfZHzw=&YPq7-O%R;H^v7XR; zE|)-FJwXed(vS3Rt91h?YO8);^SxL-n3tKzI#p8dm-8mU-rl3|$i~ifE>s`ONx0F2 zY#5wI1-0*0NO@gT0p^UjJvTjXgnT zT2zCG92wXAB}Fh}LP{rOGQDM$kR3&<4pB*9d|k!y?E~s@MkbAJ3>@f}0Iuy;A416f z9=r=b)KzVG`~#0@e>#-wysG=B8Xjtb(*r{@nR&O*5WMZT#zXMDELBLJ*1eNr;I4?sO4ZilfW!tsO;u-PVlO#uh#3t(!zX28n;S@&&8 zR(0D``%3qd+Z}4i`o~R#u!_^c@6-S$>eqg}ZpZaTf@|-Uj#01e``qW|maf0|d7u62 zn)-jIJ-Qb(d8R)r$}#w6`)VKkOJs;O-**#yCFHF(s&qY$r*LPX^4>R(>x%knQSo_B zB82~)3I~BwI!uOOEZvLaJ{dPW;7|r5z=MgdT9$$;Ap3MK3yPb?^2xhypPmAILL0R_ zt;1n&%vx&AyF1;!aPJEeJ1|Lum^ScohE4ew;wof1*alfq3;10buOYlNgB?NWSJF!? zbjCrNd1^D2BT~eXSoGml+wCHGGp96SA$K+{ltB|1q9MDo>H#ZTYz1Gy>&05rbAAzN z*set3SB2}@!k#c!A!-6KSV2nY$}c<<%NXrH*<`4>cz?5aNHt^^R1)e(FGhxTLPaQ= zCg8a7mcwsgC*r0UI@7#ND!6DE<4&79k@iOT_6q-1r3KRUjMBs+T}favjszm*XD-qg zLyHPD&_dxtWKPB`a?7DiC@s@C;g|v;|IT6doq3`6+(kMiTL4$~FYieF45s}2k(`rc zfzA|;vF>x$TGXR4wgLgWPD3e0jN9K11z)IiMzFNC-b?g) z{zhmJ4&tC3-2b3X0;*Mc$bia|k_MDA$;%P4o?0a!FTt4#C!{pWe+n$nHsVgVe7>EL zqQMt%RZpduDMfK-BD&8F0m)oBZN*X>UuWn&IT0W@A;)8aO!#d7xQLu<5|tM}yA#!_ zNRzV*Wbgym7}CDH6uPU4eruj&?09htRo*W}2v0$S!L8AXxCTm^n%pqCNin`WJ;5@< z0}bH*u54MC0J^UEO&hZs5W2_Qyg2O|8lk~dAUKEdTQx>xnBrpCXu&OC;-b`huvC6 zLZgsX2=xu;Nm-Rh^q-omR$Ujf(;YhkU(;87ZnLx#xQr#25XQv0R+E{&^($ivJ+TG| zj?i-uIL?aYA&-3#;C=llu5e9ONhz93WCPF|$3P)uODt5_s>z=Wh%aggJ{Lltpx6C& zI+xjns#t7T3XH%ve1Y24y$cN~a`IdvsiiRMdTcPk=RztyxYRY5hoD1rF$_^N8zVMSeR3` zpQWn1<3|uFQ3)~uT(9||xivP1GN-8l-xF`Kr%y$*v5G0|;cF@MxM+lGUP`gNoG*=wz@YwDNjq>P*yh0Jg9nCwnt<=lhBG6Quxc{P7tEa5)Z$;-D6N zI56O*QYK6HQ>}0Uw3y#tmKmPMVr6Y9rSaQj3Kp3+_Q=1|Ha!c(k$(xnG&k%sMD8K zB~!Z*Pi1~p_={4H*E0=rD+I)Ka^0W$g|i#)V_eL#ENBIXtLbCq>dB~Jo#7pI*jyClm9^Qb7|WO*3D= zt{|Y9xPeW(BdYQjdR0$mUIdr!w7iU03?jQrl~OuBm-baxv66_|>dp#rkiD($N2CMl ztI>uf5~7wgE}0E8B#Z1xKGgS1m0K<8=%?n>^yecLQ1m%u=GX$S!Q_d=ktwl#LaJ+H z0zW~Y94GQ>yXs7%r;*l3BKC;2DvT}%467q#qw#0JN;)a$t^D%ZJ_5bT9 z0`3;_{@zFlyZ?P^>7myx{Qnn>{{7T9lVPg{Q^4Rb(&H5_H)=k?6M28NsO;-CXw<<| zrug&(bg?)Q32A)2Rl3htNn~_GH`N_iPYjAcxB>6>%BdgJ4jq5vW6(ytn-W3b$)Om7 z4`WQBr@91Yz1CF+PcyoCG~b($(YaQ;)B3}pmgW6o+=k=Hm_IwdhxCSRek0YvTS=a? zEj{}rqA}iE{v$d5XLorbKyzl6Xb1hLQ#`xeDsCCfK=`oGQXa{1rp1eI(?&eY5wl~x z8haZ$`Z1c-Ay41zo3y{sf_F49`LKeU5Az#Fgov&uMiIlLS0zaG5XV2$hQf0XV32$HUX+g(2{QGqc#=#?x zNX4>n)$`GWQ0ZxXWZu74xUXSF62A;)q1ug@s0l9c?7#qA*UzvTNek?h&?I9S5X4%> zfVkQMN^Xm!O2*50*eiZ`PopD2z`rTQV{!0qk0JhJ1+W zgc$a@W97;MAr16>dFcDrT)!dlXf)+R4`%3SlT!7!ENDg5O$6_Fhn|F@!GBqAff=$x zFwP!iuVYWGCo;Sk6EQqBWI$77&gDv#kpplNDK3r`m$c$trveB%kzy+>eh+8D0th;adqDYHBooT$3R;{+G9sfMzJC|n8F zsZ%#ktP(7=t&kH8_l(9CSTc$t_e@+cn2Z4J6!W-RLpKrw;V^$Rd|=sYZI|boeHgRO zQT+sQ1i+6RwO=rA@bJ&_|Cv7uT#a3Abo;p}NQwFx%Nlu{hY;M>&AhD;ce3wahl!D8 zr#G@QW6(M&N5ybzX$1^)^{t#9nqia9fTCy|7lJU>dPnCh!&n#o5(RwX2 z?)0?8J${T+Wu#FXYB;J}!B25(T+rEWin?FD(XH<*+W2&K3&)G}+;%LbPsrZq%(i~S zhO(&-Sr6CM)k>mrb*$mQ$mO@I#4mkYP^eb3HiK7MWhMBv#S;{e7V6$|6*LuZ&Zymr| z2`=y{>8kbqs^{;8g`{9yjcM<}x=oGWi4hjBywKyMi?G+N*~mh2O99mw9I3D8R6@X} zAh>+5>%QTqD8-m|ox$pI6d`xP%YoxZT0EwE^bL&; z(vpw8e5gZ8;uviqp^hBG_mU?b#I8DEh+x7{r{}0( z&CO8d)G}Ff1N3=C7%HQkTn?m_{fRGC?~p^O|MYy9TVxdl5ziqiOn%dRVoZbwuneT6 z0S9lhQ>8&7(J~fHzv&oboj9L^!&j@K)(Lqsp+1L+fou^F=2i!dmpJpvqggFaQ>mc|g4~YC3|iGavF8)qJ)D-7gsc5H8cA>go)Z3Q)r28s9}{ zPro9Gb4N*LmZp*_t+MA{X*OO{EBoVBiBPM>1J%N8Ix&_{@cEZ4>*#p$O4Ub*r2KPe zRV)CZxvkzADq4)Mjt8dpro<682;d@97xHaF-ZZl|m0b_r^+LxN5h2klt^3=IM^MSy z&@cCg0xmkLG284t0^81%kSo(N@~8r1Yo-Wlp2OG%l!^{`?4A*) zSzCu+$?}RatN(ZNQr&j-R^$I@bM1HSWBA;@0`r2il4;}r!T;y=>Vbg0jlKJ$!LarW z6$Z#Brjo7x?0b3s$Fbk|P|$Om@4WgvRJ!G|bzxeMhCbNb$Wo$8j#VUdHp&JNO*b(Qs|}x?q@jQT==y!*#(Ng#)+{8^8EG}k1P$h;EL{M@((a4~ z2fzMYIIDTsb1!@m0wAHQlj9_}OXcL$SI>A5+WqwDXpnL~_^*Qrjubz(b{5-K+xF$q zc&LgoG~{pHT_-^ryh>mDAmPNTGj?K8&en@%v8^f+R_WB}^0n&G;MqDEh@)$o&(2;C zzzekm;dZ1DuN2gZjN9`u6`(;0{Ht=YW&a%{Q8%q5eTFa9uibI6bM`(TJ^b?<%UG!rQF=ahjGH>n*G;{$IZ||Z zab`Y&#DIj4^=V|4n?5-)mDk&PuQB7n!Z1nsGgtEeg51>HmcB z2A;SX()^%HtuOXW?L=f@9|E{ADTy+N$tpz(QTMtUSiB$6BUH>vqQ@`Av>;P~8Z)R| zGS(dD%$m$t#++GWGyI>lkF(alB^71Diltzg;j4ewc~dF>7?Rwa()$sEL%je1^t^N# zu)vw=y)c7xo)H)RT)mT&hp9`DAF_cKMde7);Wdo6dkOG2{@o4=vonO z+q!}3RG)MZL&!6=CQ;R<^{meaPEM+5($YnPcK=c>pKk>wP$d_a=%2lIz2m96Ti8Ja zULQNN&4;oS$XXfxxW>jcrh&0$!+!{sclWUBJ8T31#i+rEL>^l$yO~ZpYXf}Qw0**j z{gpK_DDHEfZp>`LnX_09A{_r@0An%A4&wz(gd@Gtho)xd0=uMhio6NG*9t(yC$!>Y zkzjZFO4t(%@EfGF*xD~*f~h5&*70zZo_EKRveev8WB<2h0!E|p1wd*y*@ZOH8qDpR zt6Qk3Q39_LQdFqPXU3BOFYSHh^mugyY}gLR+0`w!ePc|}W}e;Vt9&ey>9^M?5*I5I zj3C=2(-^?U{{o5i3b3|-b&_cS!YltvqPXz;+Kiv0q=?#Rm18D@9?eL?pW7$?Yv)+X zjXv^3z;U_TiY{}d(^1{X-_Bu52KfvwdDhLR=g%87G=T?4YS72efY%k8+)5bf)~_py zi?caWa+!B3zWw3Z&<$H&#|Q=GWN)((N6f879uzkFAlm+EJsTB*33m zo*Q+0(gX^X_T!)k{v?XC-f$xOlzh2V1gSOm(ym}E@0NlaX4BG9pBdd+_+rbOxG%8Z zk^od;`jet`{WNTnOXhbMXwlZuKh=GAO%iXk98n{B!iiswjWS+Bab-=0;dOgioTB|d z`X{<(gmhLXM8?AbEoOhIfKxat(c>x74XpL(x&BE2tSBDkTf0NF6_#N95ZipF-ApI_a1c+$*tzCc1u2E@E5Tsb1A2b60 zfzM8vCB(}Jo~6=ONJEiyUd8vAPoLl)%d6W@UtN9MuTlD`RZKbS`Wv z*_^du@sI>a#V-gtE~W41$8F=l~x$w zb!0VsUJf@EBIBg%QI0s!$v4;2c0*A$@$|^_E9WwsXr#z$tozBlrrVV&%CSQ;Aem2> zYmmwy9CcqzSC0wA?GhJw&=;==Z%HD1EMCe=I>0Y75(A-HGnUMm8%_dm4H+na-666) z0hj3Km{+T@02Hj-Uqs!mgV0Q6j{I+2j1 z6-u+uryV$!tjL>Mnvb^SpLEdmELeM#Y10ltr`PIFh6Mgyqc??rW;>w>=-r2y^s5v+(!hIeT)?T($(g{0_tS)I##J=pI?I!WDa^bQxJQNnJFc6{Cm}pr< zaiu-RkBw<*$lxz=MVbS~q!DvDZSC>-KpZ(%Oi3mk(Qxc3Nv7n6%~5i~w~agV-Se|a zMFuf= zNoxt#l(^uy=pB=GMj#O(sA$P*C!GHkWKKq*4TCfx4Z_8-Dtz8@Gi|G2($L^C(^2K5 z8rv%!H$7HTP-l7cxJq`^uyoyukCSMifC1uGIz_f{k^{4PLr<$a_eYN9JCa~SUM`8 zMs2p(V0&Lx0dMkNK7+Z9ZYfet&7i`;K92dUgR@dGDUI`PPUUuH4t;pG6A!HFQQ$Zo z!nm7Ui4>tq>;AVeKt@LMhS&9~cwHWB-_8;qTnvH_sio#SdXj1XBq}O!eJ~EOmX_e| z9?xLSL#9?6%`-;)P#B`tC(Fl$jI{K_ZZFJsE{b%7~iJh5%Tu9J}I%K*g}9 z!p1X9ZC1R0k>->wxb^S(h&UKaj3k=acz&rWNQD4?c&Kt=y8Y}e%Sd5Z;|oF&nK&SW z2(#cBr|GIOqv4;Ks+-Zayp0EVxvx=xtQ>d=$<7zc5_WM_sx?)7((^13X|W}=99El5 z?>AtvuhUeHB82#yx>ZpXf?M@epjr-oa-EtU$ii@S=3vj?QWU6F!Q5&(c6!g0SU}31 zHuj{k??Dq}5(dCY5CqHNgy%$$$jSLReOJ6CM#tCF`3|C>c4}Gy6~+T3@jkBy;7+h{ zzJ-ep#8`^ighP~gKGRZ+b-r~+qza#K5K&dCcoHKn^|C82Bu(Af+SDGevh%Qe{+N}< z94MTOhy>tJ)lm}76CCTo;{c$m30&k7i`vKoWrA_}n*63PI^oPDEm~v}%yx`%a^!rp z031?+O{kR;pc^}h{#bUG<Gtp0u(qB(9prS0~wt|@+T z36Ppz!$y};)?wGT7&TT)z?i(YuW|?NgTJQ!#p#+?0#xLiG&vZ`fsr+|1cfGC_l*j8 zsJYfh0mO=SiItG2=Z z_0+8WJb;=27cd6NaeG5GE>JHCs&NOL-r`%n$yDO&8~C9#hvS!Y9pY%`GwXKjOi15t zz9Mn{xX`|Eoyy40mh0`@@9j+8JnVdpfpz9#`)3qV2)YQbMNjrHCdD1|;O8~fG1fi_ zZekEULk;HyaDA23=S(t9u$oK)EC`#7rhI<3!h(gucciViePdZrARSMZ;Qx~L+iji z!y7HsnkvPcS}p=gklYSizv`gp+i1q^EuEqINK zVr6NT20_-P{q8EjPVlIKLQ^dBjCj@xzlTk84F1xySIwsN8xweR?N|Jg8xIx%P5v*J z^hzT5b}Jq56A=ZMk(C1gM7sTL(~3nr9$CvgTbCIk4r(0qLlfk>A6(1QT%rc*f5!%Y z1Gu_j)!l%v>-)MSG^=zrjxZ!V3=Mok9F3pfPIhnIP2>N+KRX_oAImM>f5E5wj75(B zf@5F~PLY5Ho^!#%?+u62cZ&ZG6gTgawyVc`tHPd5#rbUa28~2P?#nUi;GfaIags_G z@MR3Rw$lq4XDiF`cJ|@8c2$m~L03*y1(x`9ATV)sGFl&+|vgCap7m}L_sO+NY2cUCNeji2z9t}!u1il<8;eExB8CGiQk;qlve+cmb zhj^RYp659=hyY-PgP?tE5&%{e`D~)5-GA+q^ROfd>+BEmhEG|vsv0of?Fai^%Mm!< zKdNbU&HB@FW{28T%@P5A(iV3bj&t$wfy$9fa^6TN=E|W>`~#jQtl3idz|7Q(Z}^Cy zqL#-T(WG`uFSj-4h(AkV!&v)UdMuFAY(k*qaTNK}EbWpls$>n6(SN^S?1G`i)kisp36+84B<`%dr z`(!3Hnf)A9oFg27u{VT^pzfZ2Osez~oa1!feu+K0&&yN|0(b@2XL5??)Iu+YKJ6bh z*CRK;jyqbb5`dtBvxo;t8JvHc>JX}?>jgT3BM`QpZ~_(uf_Gf2!UO;b72ZAf`D$St zT)(o1YDr!qOWP3!x%;d%=rnD&hTi>LWKl!Kk4wL?oMMbEBVSiSibEuwnIInuhS|Uu zrZg`o*(t#9215#mC4rFm$ua`@ieNwG+a;Vggl+ud8Mc@~IL9Tp%$akdv>V9UXL2cT zG`VCSO|xl6Am~m3?8hx}c0Mp#OacT-$?X3) zhVL6qH*3YqZ$d{#LT+RbLu$m|GKm4qx%!7rg(jp}=Y>w;9e}+o;FQsRc617YWiirU zddT5ALvVEk^C&ctlNok$-8cwbH8c9vaMYsXcx89Z$dV}yIx1DE=a2qX%ReH6?AjPL zQXRX;MdVF9#w!6h<@jTH)GlGG#+7qO`z%Th+?VyRkn1xc|IMy(%9PnNNdivG2@|IK zW2;?QK5fu|e7Aj}skAVNKT<8}-Y4&c&p^1zcj@F~V*Ve5jNGC+@# zFV6@vo$!2mB@_C0urNR4e_QcAD%xh0S@`d%Vg&qE+sd}^+gOYr1<*f@l$lo>6%(kC z$Eun^RNg%Iod|s3eeHN`p5<`+z&?Xg?N{A(72dS06Qg^qyM31?&$adtReE>3NjbIx z4>D!hI^F@+CD%)Ray>2V%0{Q`0fn0HGxRe)2CsISF+te=XMH3dhGU#fT&gCjUn43f zLzlLlEMNKQMJ8J-mx8tbUe|&&zphLEG#og=!e@6IW{9}zTu%b9mF^p(Jzkqtuz&z) zsCLIsZ8+d@uY!`B)`dFXkciwFT@SU;0pCGZ>x!IqFWl)3zFaLs}PgEim4qWXjww$#97FA;7uw@oUN2uA>hNRf9+EF#GWewAh$;r4eZ z6tm)<6B11y*f@!pZ`=-T=^Jg;NG4#M@AZ7z)iwwNkf7R4$hOY0x6XZw0*HS7^EJwb z&+IKqak+9<&JK13JqZA395Ya2WxRX%weJM6PxD<8RKk*FRX>o>-zZluY~U&Z)~D|I z|Iqc8L3Ko3gKk0y?(TYUcZc8{Jh%jRO>l?c8sy;a?jAh2LvVM8-~^ZHyzk7NTXnzN z#h+8vz1h~Qm+kd5Z+LvoMpZkp0g&jVhLBlQoNjtzMa+@R% zCA#gA6R}&gLPQBqIqv#G4!94RyRO%yNxbsTD7WIIN#FWtM3z3!8lVJ7uX`*A`Caq) zVUj#_03QCS!E8KCQMS%U848a|sD0r3~^3GOvJBg*&v|>iR>EHT6n*a_l1Jc^c z2-OqgI=bTWuRnvAEGuGnxp>yoR6PdHo2uW-l=IN)x2ZSKc<5>bgV1rMK8@=y5Tl&Q zF4PBLThoMeVX1@FRPm3Uv=Y8sHLQxq6jpi?!#TkSUOOY40_HXwHnRd{5Xb|W-MU&0 z*RjOHAE;$>QDs{?+h4R2yoy8u-tT}_x?S(HXUc1GWQY>O8-R9!1|v`$+cxowMhqGO z;e=v>!WPma{2eNEg0F2So!jT~*?e5rHKiQ)E?i@{1X*};9o2JN5e{vq$)Y+uwe+`R z8SnUyW!TqK;X(IW3fXBbXl=3}?Qd|%UMrb*R!OZ0I@2kE1sj%~Mv{L*`IhgjfQOJNa5bkbQThuxsUt=AU4=^Gfp69tkiBd)|6u_ zrxS{p&6guB_FP>CL+(51D=8lcf0>5a{wAC*ziLTAUNDfOGl=4xczv-T*x&3uw~cG1 zRAbQ4tZFz&a&$ASDY;a2m4|=%RQNow)8_1bAMh_V= z{ln|O7}msCz^~5)lm}KU$mFqG8<`o9J=g{;oae0=1NP76i&;LeRLJ^&-&DOnK7Z|m z`X4<2B-5=Ym3P1)w)f4teu2nmtp}YUa4x?5cDETZ6}&2!F4bOZ9=Kn^aDl+240E6br=%f zPF|m446tl`44-f(ac6AmtIv%Fkble!&jgrT_XtkHV!jQ?s5z*5z8D^;i$L$fs(J8~_9Af$1 z_R!?jV@m}M_Ettpq0B`%8OIj4N45IN%rUdg7V?XUGpT79Wi{(l(vY#vR0C?obZx#x zc!ujL*K!F+MK7#khQ`nQ+FX|M_Yv+!-1Ew_QSCrT-RlPv?+XRkB(`eC2O8Ty5TBlK zNe1?V*yv)n-8McKXc(nRKh^Gp7A{)ln>J7K5)5`hE~lOu=_Lu`RB<%zbDTJ&2nHp3 zK!%Dt-S5bZ4klP5V}7Z$O5rj*wKNm`XD%i9G~bCqXw)rOUZcJIEcWxMxeXLiipfV} zw#BDkakRRKH4X6RJa#JfXyU?-y5XQ<)1O6R%kMP~#Oy{k(PgfGD<+6%%8^oWW7N{J z(WkUuz*gGYrLX@iQ zmQ*)tba>T;+!_l~b!%n$+X^i^^nVO0DIFb}6!{(YlA`Rcn6KE8dLN?a)VBY*9TYfg zf08qJRJq@y5qSVV*PUePer+@PJGTJG2#w{ZYjzY5Uvw|+cOyM&&^+FRD)d~E>=Gx4 z_w}@K;Wkg?bw^~~`ozv~NESpF|94?yb6?k9oJw^wucUdyVZq?-uj9GYo%c@qhUZN! z4a_)Y;#T^`bCP2n8E1iGq*XS2+n>kEuRiG_hw(~6CJjw8j%Z&-0{uNc1*3KWpFKEe z!iapd9o=7>E0R<$RdAs+?>x)mFE^AO%!jYirjyJM-DPI&)k z;&v*(fB6}3y=Yef@9(rbEU5#hxSwVApuk+5-^%I_WC`v8IBB*iJuC|fa$frYV>xubrMLJt6O=uI{_tO(O#BAK#|FRO)Of89~Dl@d9 zJ@Q)}a9ILat-2r+52Q8HC=PM6jI;fK+wxg*+UM3N7OeN~N0@+~8wpcuKBk|3hQy+i zu@kD+6|=9T*uLv+K6kE2%TNt(TX7I5v(iiTSlGUW{IC6o7NXJ1)kqu|CKK#?<>G{6 zZDc}epbAh$N^3z_%js$)^Z1VKMu$N7y61uqrpAS!g0!%U??JWB5e*A-^S;*;;1M69 zFD5uKD^c=jjTp?ZLs4%B_Re^gm%dbNt!)o`t*c80xh*|gdhy<9Iihu{Z8c-Bof}~w zpwzF?ted0_sktn4pdQm!U-HD{M!eV)@ z7)Ie*-Y?%C4}ah%#VhbLS@;TTHL^)(?xKQ#50q+rD4~K@q*a3>&WkRK{lV0;si9~Z z(dwWg%u}SfajQf|hH|U44Kl2D;baF9(hXQ~0|&dR_E1`6VGVa{K4#EjLOVM4oRT=- z$9c}nmAVn{>b0*nKzwVF&{$eAz^%wR2xM%~Rb5B7RWXgUw}1yg_~$aCxrl^1+)}t` z$XV1eVW$L?!EYOF3+e`!g?Bu?%wIgsio$`wt^ zmOR0()|@*%S$8D?*M$>9hP|7~b@}@Hw?mG})USl0%PxuUt?EnUvj2H!d>*YuA@iD8 zGPAZGovNyKRc(KFw8+743+uS$HiHeiSh+{C>dc_=ceR8q8p6i7%`$+a5fC2#4VqO0 zPE5c6>lm=t^U8GD06wjiQ6Z0~=NW$8!O=<2!;vhJJM<5OGn2x8Tat*cw_imFNgjY) z=a-y7)XO_ZjqHap9l!ffzeAFmi{+EA?q{$fSAzy`w|8TmnACqBJMTJJnqLN`2sgY> zPDSqH#(ekvUb{Om21fB?{Vs9+9FFq(JGlXsIaK&2m#5=M0bqb_j0@SU?wx<; zKG0@+OZsQ7B;*C>d%1#TXwcH85)u*77rdhobg-=VXgjTPsHD1ZT0(bN#}yPtzx$C_A8v_@s7sj%;ZgkdvRG60)J*wRr|nWF z_4Xm?V8>3iZc3kBk+G`J^x-^V9Q)XQp!S5Wi)ETWg~0@@F2kZ!l7zR$R&RXuVWw&Bv2Fog=Yh| zD5V>1;YbWX&^}KKRdDA*#x|b)BOJ@Ppm2MM$b*n)^Dw~H@3DU5W+Ue3WCr~}A}j_a zbp_xI(Hes2(_7-)_Z{sq&x~ep-{M({go%f?XlAYYq?$>*ritn_h2>Z%!!jd}RUNrC zK+~TLQ;pdfzEMAE;-a~5m^2K2;9AO#R4Q1xz^xfX(UA zLuY~a$BNcWS@FX>nXEYRx5Zh!;7}mG&?@)Sq)2}ai|kHf9Q_Movi=@OPU=%o^`rvQ zRzNW{fd}rNvSQ8v1Z!lwo|q)o@&I3;U~1m>968Sr!lc`zO3P=<1VSoI)l%}nypD_M z$yUK04+2TjW5zZi_HA|p!M9%Ai8f241~xX<7FxTQzbdQ~jq;~-DV-X`AE2e80*NF4@e=k;(a&8;DKOgdR!e{ z_fSfz;?m6b=`oAnSQ7=GdmT<8QAB3w#}*VUuFB7Rr^qvK-E)zW_zcsf^Wk?=>O`!S z7*_;fiFOTcM>q!`bepV)&0;80SRW;J6CUX}FU{%E8((5;&gAv)gheh7i!yN*EyI@+ z!pDVQv{1Swf!GEnwT>mlJ1&z1kbhwX_Iz}#7^HxaLQuDAVv2F#7eqp(o{f?E*=asH zan?W*zfws7i3w@+Egu`)kgV0%59)2?8<GsR~SwoTp7QXRx#(Vi;?CX%@l82V5n09CF*^ zBF8D>@y;jyUFm_*yLaF`wQoNs9us3a$hL}%9hX`1)aL0Mppo}aQ-07*Bhw2=fWVIO zclYHX3Ko)Yfqu{_5P1uS{@&9^X-N2?m;SNwo-Og;KN0gqXYFzw_hrY7EEKzd;n z<^jz9hV8=ni;%Ga-E+&{)JamN>?2<@@)$nm1Btwdg{wJ2Fo%#OpAqv9utr z)iPsPcG^+k_PIK;cw&-@1ihze9BM9UIF0stv^SM9>LSqx4FiCa3=bsQKN_{$B%+kK3c#3JmE?AAz?zBhOf_$!F3FXDx=aTm~7)0 z|4E61{kqUIbhzro67Zr0qx$id&a}jljCFz9+nyx5M(h~6EYT@O2EvD}ctZPj7Ue^* zAr)G+(nF%6W)^~`b{z|rE-sA>F^;s5Ccy#W^Zfj?9>#9OSFADO6fTJ=L=CqyA`ONr?7-|k7*a*?WwSAp=|~Ynn+TSB+zrwTD)l{ms0kY zcuA3h^CUR2UktFm#_aVAs9%mzE&IFn^q|w3l}JFQ$K6)*Z35JdM?+u}q!l>kV470P zjESm2>is)9x;tJtttaTv1U6kg3QRd_Kr{H0LUwup-Rg`$NE{1 zcVk-iiOb6F^5JA+5hgy0y%`&ON)#crrTVTRhn_T-S2S2LsR*IflzTLv>!-_)x^3{{0VKF}pG`5HL=t$p~+V6SGIg zRA^3~I8GU4db{dir4u)@7HxAWPY4@E6<<-!d( zL=D=K>`0Wzee$QQ_H(ReEJ_n{u}I`Gh@gyr0f!F$zZ%+0p-pw$Yq`NwYcDR}?Z*Na zJ-CgP^;>SmP_NUDbJP>^?4K0|&)dm0pT5sfdVE{wJLqxIdri=_t=*Frd7NtQ{9D;l z`IFb!GsABeNF?s1Jc-?%ThRAgK5`PSpVv9V)o&~>@w>I~YntqQLJp9YHFz7~`98Ps z*J(V{?e^ScVZ-}xxq&Luk0aWV4=93Rum=~i)n8|AiLr@FF~A5IdzweB=`i7-hqM}_ zVgI@FEewdMvdn8h;M~Cl(N~BgN(aq*xxG!BFVvS-CN?L1*fDPH+qqJp;plj%P}IcI z0_9lCFPD4SSo^#6@%X`Un*C01WF@;(gPBMVjLl@uyXSB0k@wqXcY~?3V(@$~pCF0y zaX$!y46Tpo3%tE2&s{dR80(Q0GaPwcJy5(#%i}z!U#lEM12#CkWJoj99 z_@Lv^m#Q~ya4)>JQxASbV{zr@-+?Ts%_pzk7%CRW)l|qBAxZwfsU%tPV8-YNr`l1# z?4Osupb{T#+?%-EhT(j&$fWEScld3#**pkQe_*76_l^`)?y4x)ix9IR+$kOxYDU=+ zg$q^4+?sQ!8kcMPO^K+(IXAt1UU>b>xey9VC+>5#t*k1{6AV_PP0dqt1cy|8#U-Tl zCI);V|DdV>*ji=`P)nbST_7>RcwJVU5mWx*lA6gD%R0D?xiY zybs~s6!iBKQ%1JI*ksc<3_PYZ*hmYA8`-yMqw1Mj^iSH4M zA{b~;Ds`fi1@pVEF{s~t-l=cR%F=|$6UUUpov{)F1^6=8D%=(<(Oz1Hl$Syx`newBTTe3 ztmpeEHfPIY^fgprWXUrhAH1KU`&28q&gJ*uhJ`B@E8#GQm|iEf%qw!V#eH;i=s72NttLs>X2~^&R}>^)%eY z`GT{wu7!P7#HWdv8Eb}|xxh@gDlM*{>w9!45&xxX_M>xLc%I{V`{lmw^|WZgn(M}n9AJK0 zh&;8dV=B#5E$F$uAXEG{E`PiI`u2LbBWl*0niAy$^Aun_QPro(8(}~t?LoIprr(`` za4_UQmt(^r49C9{Gy@T#UGzio0om&c3w+eN7Cmg6)v)BQp3nry;F^MZT`qcKv|g#I zh68E)ZnbrGeD*x^2m($!L4BTPCN2{ugw8532CpMA_Ux+EPOcu*^tGgGzf_z6%}Lgh zqq>U|3$kVSZ2vTpOAG2^yES;3-l>%m>nbzv;;TU!<9mYI$HviBkLAQNfez}0!^S)S za6!M!3+N^~H@BH3VDoBJ@5A4ca{T_TdoeiGcZNqeW4J}TwQ&sVC7&|GN|E6fAnUVyq(K$^pi)AJG z3k75`QS%+zd;{AAB3t9)D@zNg5k1iP(Z;nbwdde8rHAS2TBTEK;&I2948{lEIwa&M zTDcC4>{uAMhies~f3Q0trTb29V4mvZkzImI(GZ8D-S=5UT15F&VVdX6&H!PgryxlapSPzl zqb6I_Wv=>Didrnr&u%?@w-Lj*_}$e41bJ79VasAM1OdD*=sESI-QonSG8jpX}+^{K8P+f2z!%7SR;O9*EQx)3)x zEo)xA%^j+(r;Cj>t~ht1z~9vJs{>c+{C92Ar7{B7Ug2;HCiqIPTtHOykMdkCGHr0w z;aSazu!b?#f)XK@>#=3qz-y?&@CCUV`CV^H1-4zo^pP%#bL%!SP0)P=cLNmpyWK${ zA2wDn<6e|-R;CpK6L=D{Y^a4#Z zhYV?_ap%mG9wk&$4C}MV?S$B{y$O5{>DC?7qyf4)HGoU|-`C3M*w%K&8azXJftp65 ztgs#p+ex%}gVXtO34jq2A&4@ZrLKDjYTVB(Y;@BVUJu=B)R+jJEcC|x<@CY!qhIP9 z`p(fS;S!TNgdUt&V1yTv3&Bb>rLf=V=(4$6Z@I>a!WW2E>j&7NS-c*t)I%Y&`j-ID ziRbG^p^M+F!~nzap(rFpCQe3$(kgRY?_1dkX8KTynj{I*S3Y;W?ZE3yK54_)shtAn zphG(43rs2^h0-yGKTMMda`r}q2oV64X1+n%G#0LhtbtuHd&9wo{fp$K_z!xZ-JcAh z(6X#Bj=3on_iTOlk|6utISy&waa|@S;%N$1s1616*;sCAYMko1v>nvK>7Q=${I7C9 zW3!$;$>(VJ1%Tp+FX1u2L=F(66-}OZsq|qoaPPeF)vc(jt5^j)@%T>2)G$bcmQ40{ zxO6?$nixq1m4rhQLhnjE+_Ah2v*KTz`jjNqO;c6K@<4BpzeD`>=w@%Ko@k+Cgl(!| z=VjGE8XEUyGLYev-JJ;S%A;3I7MqNDBePfi$m^s4RAkoeML>hN@AV(U8V##YxYH|l zr2SnIkE)L^=c)uDafG~F`$>`buta_g@9J3J(BaDQ=nZ}CfbZ}n(QF<@S#O0Yah4{^l zGhPLF<{h`mRHhwsh{OA5Xx zcfF9x+0UZRaNTQVy_HYIL&&0Q<(B&bS(qU-;|ytHTo;CYYk5>yO45N?MJwz4`&4d6(wtfr~P>DWnO8W7qNlaDFfA${u`UD3eeYs zqw9dTX1kT5@wd(UaMkJ_y2!AhrZrgpzeF;PlSfXtA`G+>LnXW2@drLIF`h3klXUYV zZ7o=F-WR))QzhXXi?GXXr*4nWW;DBQL(~TC#%l|i zUR_UCZ9Kx3IPrd4FD%LsQr{`7)r6%-8K6fnYX5t($3D;x6Dg~!wz;fC7mjLt`h3ao zc~(Y3f<%OY*X3+F4%6c6y2r0mpc1?+g4_tr>9*7yu%HmIZ` z^$sf}b9FKkC0`%Uj>p?ZJm$-usC zEB4WILGJn=QIO?77&@T&)cv{SHv4OCy~ql8VG;x2-ie*k$~B{#9s0L#+Ozs{UZ;t+&HxEUeg!(#tzAECnKRKrb zrmAV#)=xjq7L|Iqu3`aVN(R;^`!^FHFqmED+FDSLljn25mT9L5k^U<%XJf8PPi<#+ zp%H#9r}F#Y&y^?N%*ny}wEz2&x(Xf#ja3&Z(kh*;@}nIW2JNKKgRYB8GjnrSUO`lv z4bmk7l%g$AbbXJiE+OPU6w72;V4?y+Ecv``)+8H``LaOs$!|Nr|LU3I$Qs!2+HDRE zUEkrHxU$|WtwjD0EbKetKbERlhrVgQdy;p@`D+EFci6kli=QNhg(fRCb?N#NFHO~g z)vD@GXzyW@P}H{bC5|TOzZ|oFo1s2-Pd#J5OLI79&Tnk=(W(oVT8W2)gUzu^1lTe& z1e~zSKS}Ww&%S~BtzMt7!2q)sxR}!cyyN_dT^(aOJ$`3rnjC#s=;GZ@%64_oi<|Ms*Vw2_K^MlQ^tP0_Vihd$cD3T7T1YKH8oT1P2LyGX{sQ~%vh`)lBE{S0-Nox)aOKud_|OT<))bo2 z1rqHL%%@64p8xw`d%|C8?IeXn+n!xJi~FOZ>&vpgTV>c)HP3wS?$N$9iiJNru6P_q zhr~bF)@IOnWb9k%Yk2O$|M%6Dfk1ZgOBYr+tG5~7@Tv28Phu=iU+_^{bSVjeWelPJiKTzeMaG z8SVHl_i)58XBJCco&FO7Ut1gLD0>=By<}2ydAu(YGh?JR0nL=)up{ZkxMUo#uKPob z$1Z8fjlbCIilP++T>CIUliDC&lbIJwQe|_KNxJV-Vl@VlMw+QX$oXT4YE23Yt2#@?X7xVY>!T+yymi{n}A!89T+PQ zLDzXw)$?GDwi%1T{;j%eIg+mDi%VTo6S-p3x~ds}I5u74JuYOHbzhIiV-rzuqK<{K zy*S)Is;&R!SQCE|qigZ-F{{oW$dVKsdC)VPROFheicz-i+-*5UIBs6PR@+YSyZkd`sf;HLnL09)M(7i(_UU8emPMn$ z(V2o^@UJ_>_n2D2JQqgNL)0AuBHlk1U1)7jvhp|2;uiubF-OLS{scT;Paa0{oQe3n zl)8QEv$!NVS_H}(r7l6RP7|_JPDqBMQY(mMZS}2-kys*U_4XfXGPDP6`s`2SCyNEW3l*E3I6eDnlOE`M0#O9`%k{i#s9>W(s4B@^}li)fbkc z7K{%ora0;rco@W)X^PM%&H6=ViwB9!yf^uUG=IGRuo&&1$b$bjR$B1Lrcce!_Wizx z6D{;u3!8(gb^P=+mwMcAg$Y4CPZ*!S`!kc@HLhT!29)&L!$}=^|9silwEWbND(G|V zanQ}0(U?%-t%U6$mQsS|xm(r904J(urvCTM%qY#$S;fQ#x7EhcoTRKE(m}Kk8;6Bl zt@CsO8;SKx@q}5m*za$t=e%eX`Zh}XKc|+L%2%V{MdppcF{grf5u9Zg$~Q~7U6Org zeBNI&GV=#nX1SX@1QnBfV=%u@W)bn&-z__+vR~HEQ-3GK&Q<=-x0j5Xjd-H3Cnf3B8WaR6$d-iwa{))5 z05W6sLXVhj>JYskN9K26+np_Ji!o3df9;qtiTjQEYYpofco|J+WPtlC*TXJK?VbW8 zoE2q@P9%d?gvDt4R6j9SNg>FV#~L_nOkpB3Wxho(q6m0l54_2(ONu!|@I}Xnh1_{k zZ&ldJz8?MbJ*V5Ij3E&rP0lEtK1^I;-5PwbadV)N=vN@^df()BN11-MRa5W&;C;83 zTB0)O)S!V*=e2DniJG+KMM`f+%vXC=! z&*4=8-sLHwoOv+eT!@=NPp~UqcA6Qdm*DLtlJnN1(4S5pgKsLHRd6@9w!xR3kyA>* zkmdnJI0HGA!q^5L0Skb^ws_v=)$gauCNQAh?wL8ABb9!znTtoi4iUINj*d;6DQN|LnM+K`PqP3T$;# zII7_;oPRq}79x9`wyb2(8jKPip(Ob>REj&P*MYe6RJ}D61uK{Hi5AR$hVOEuT=8D- zs(;sSyloUHNK-xn8mmy*H0{G zGQ3_;9V&vbCD3i^vH7kwjo>YJh2P&39YPB3inaLcFEjO<`&JwRtX=Q2+C@dq1@Y1{ z4WN=Gl+yiC)1@I;T{hrXJwiHgL{eCNI}k?Y`{EK}s>j?|27;W`q86V;{FnygAL9TJcQ0(B)YsUq zCA(fEDMW6}!Rf=-!F9fG+D#1a?`ia%Z0i9=$G^Y3`VCZf12>oR#u)at2j}@RFAMYR z0u@=RQiNABnZ-T@q>sk;!xg!KI~%7NO%!H8><%}zz%}T_Et-TP{xL~Wfx3dEyHo~z z3=YPqYT4<=z!@{-HjL$u>*-&|$E6v)FV|@cJNz0-K|$=e$d(0xhG$7oMuiy_^Rjy8>U&Ea02BLsYOa|5{U4^u?p6soSWj(gO__+3tv}C3E=CHG?F_` zDBz^ukKlS$#RpAStmT9g%%77o{zWu;_WYa+b`gvbMTjF{^Wl%%n#b6DlW zo#xb0=3y#@LpWi$3Z`AzO9&V@G%LX#nW{^ke1(D?G4at?tB8F0eIOM} zfP`;H>}82*Ny)2b{BhfpG^?D;k!;fUpu+m!G=)(&qDQz4ge%!=-ey>v;bxt1VQQ5a zzm$I4NQo?dsv=9D7mWmUGqCUS@gT#u=0{1Wv!unxMqJr%&(CL{i5&1TD10%R z0&l!L1__$UNwd5)+*qx`OdiT#%+BwV?DQ9aRN?rSSGSMvZv=lCaJ!+Dgf*6(_K9ix zX|1fLrs?ua*ZGlyQr^#ij=zPT7RJFDey7CbxTISmkAt5>t|a1?JZaAMMN8Gy^vF#%8TdVygw4ELEWD@=IUZ)|j5Y6o z+I6|u_voGk7tNkkK#A|YiYtay;67U9!_lZ_tamyf!P|bISqE6eQ{MO{8Zrg5k@p(@R*JcbOcn*?TvtYSPX0HB9t~WYgNl3UD#YTaM zQ`v4#gG7`^tOg_QS64|a6 z2{FNibI`>NS04R|?~Q7`X>7Z#V?RlmdLP#}M{hh|g+<_dP%$=-<2Y8BJ4MoeX@@!& z^yrO$!fLy||7)SS5w*G`b-v+L>Ruk=F0AF)`u zjATnLxtaEDgb6MTyh7}ec7CQ0F$1`h@80JpjCmWqC5KwDdz>GZ4j0rlr5e`G0XDa? z?=c}k{>7S;ug6?(FH1vZdA1~VyuGApd~3~czuV*npU?HE$&bj{ih%H=kMnby!>!@W zS90{>XFhHR;Us)b9CTvX!3))V;Hv$G$Z903q#X@6hw)#dIjj{Q9Hx$FvFZH z=0+@C1tW6;GUZPf{nGZ#+muEq0q6^a)p0n8vP!z%j~WZcaAKP@;CnhOS<-Mt8NbVk zqZQTQ5nTlpVi&E-&d!eHgsjNILUUYpM=;8LJ zRUt&i7%~)H@V*KP+N>rvB2CIxpYr}mK#7fsK#af|aSM>Lcq;P71Ce(V6r81Jqy*wL z6p+HhiDzivZPjjc_MzUt zRTR}Qd(d&bd7=fwo-^Ed2b5MRm`U;M`aN}36b4~+MoD$iEg28@ zbrv5a+uHSs+VcgQo`{RJW4uw)hG>iGKQnE`E^WPk- z0hg-3=sDePwh^MbxFY2ZLt6^bD1W6IntyEkajF$Z@ie?axFX7U3APX5M>2fs%xQadXNPUiwI3&(6rHp3>E_~ zm>>lu7CZ?@=RM8S2UaUx;#AT2k0_O_H?$~W9Fh6DR{dCjzk|_z_IX=2gn3+1D~GT3 zDc8(_uKC+z#<)|>{vPS;NxomL+rowp(Ms$6TW|HMSM!&p&Yd%6tpL!cx;PLTZU&k$ zFZo#~)!E?7ZbtTb=-*G-6Dw=|ZM%9OWPY$o!+2=AxeQlmt50$qR5+=I-duPjf7vnI zL(*Dj=B~)?*6H-j^!YlIwEEpLo@}l8!$K^0spV_{~K|%{Dqa&WWXE zK*9z$faxZe+$_I@^ERjh$dP>fIC|CI;ZMGJ*;ikY8b5kD#W#vzY06~O@nrXCf;#is z5cq8dyThga5LHsiIv=*(#%7imhObf2qt{r3orUJfrAD2eN}Fz&UcF4MRHaZhQ5JkP z>-ya-1RrD3{z<=t5T_bWJ%sR+QeJQxOB~sWS66ts1 z@OZ=!3GrJM2$6X|&-3nE#*`hSc9ZoQje+;eIl+pX^V^Pec2ADqRU}7Rrx*z*@+CZ6 zMQsW`gB9aDp@CL>#5d)R1XKrBwC{oJRHd;WLJb7(Amv_&mywS1t3H1IA41MLE=JN7 zuLdkjg1pZB)L2{wM;G3UTLs`IzC-y=MBGp5d^OAWeAE%TDO-;~bLt&OQq=L8DNLTD z2#umIX0Y>|P#KGE6`6X4M45`S+Q9V`>cWQyOi(7AORna*k&BD7TF3rQ+muKag9~c$ zZ;RmLK@3R7rQdM?dwGH`qntk~{vOvz9 zJ0Fr(rkFZ@m6L9Gyv1Prw7UQ9nwifNC0FfRCitpk$cb?X+xt>)vLpEwK$AilpAg&g z3ZMz1VbgBJKDg;m7US1Sh&UU3X>~lE^!3mXK9+=m##r`F_WK|%q=$7iW!DCgxt?e{ za}&Dg*IY|*jRWepXF_d{u4P)hZYZwARg@^qS}g!Tnfq^enV~%ArhO#trYkIyKWkPV zb_e1wU7Ti?v#j7hKf>ss1YKM`_#%*iHw zeb{+EWEfr+0>OzGky4%^wq>tP3O+iYdxoCWN%$^XtV$TZ!>p%P>3Jeu55TtfV@?1m z5lc~aT=vZR$py{)U35WAYJ^=ztnPSVMwsW9OzpRmcZ=S*`@L^iO8Z_I|G{Bn z3%4%ryGGZNG*z0jdopK@f0V^7o_=U%aV*J92Q^}+>_%NfZPlxtGq04EHDUt-Cy^78 zR~1q9+aFB}I;N)4a|Vs-w;Ac|kY&c%-7!Swm`*M(qfQmf;6>~l>_P2D?ITdOZQsdA zb~EE6*4QJ;k$I<-xw5ksKxy-W!Za`hyD(Pu$Xj$9gP$p36#P@eOJwD=SQxAZ!xH|Q z_MLc8&HrMd4Dk0o2+T6G89Wo>lz?rLv^rX>6v!rshuq*j8GeRK-|pfEja$j)OG0&p z{QQ*ODtLR-*^7kbE9XZqz0vd}@z?g^=LYg$CT!20Ow>i%^JC=d`qm_DS(}b)IqPjG zKCB&Qj#~rYHL>cIyJhICSkvt+<3d$`lbx&Hrm*^5`QHs`POsx;X;*_ivEzkgmP}0cXpTU%yydLjQUMFy{Ebe!58G1^gL=7_D+iO z;xWOHF*bjb8RW?1dU7>02_>}ndlT2`Px1*drXt$z1~J6><~Yjq(r@E^wxRc*v9-V_ z75ykScv2jDDFU)#9`a7CHz94wiJX+Yxt_tCZE=J+m1y~6>?^p9!$aozJzQmaVMcqK z?0L4eR!655#%5a+iP))=Xb8VU6c}b{RzRvbQ>`ePfY1QCG7aMQG9$v zqZ+2=J9l>*wsS+MpNJ7;y2{UT*sr`$1f-aTY@KZ4f25kDid-Qm(>8NH=rWEjiB^8g z;{otooG3#K&+^wx_22(`IUYk43ZHg&KB?k;gBfv%7=>RoK`BI$`*v}H!yK&l7{uYH z=%82t#g-}KMK|ok+$y^mr1Z`}1#0!n;twZ7eFNV?PwBpTmey%>bZAtFl+G9Dy&r~` zf|&ali0ss=h3r~mirE<}H{s<1zmxQ2F%ara`!mxr%8F`Vx2loxb8353Jz=3hm0yWf z-=|H?DK=f8pIw{|1VE5OJJXmu$NOsU#5Y=6k3*>9jJEi$5B5+5YTCJ zV$oB`UOyS zsPgA-{Htbh$UOPzq)@HzD+39Sb#t;7)TuAx(Ri+#g>Y^%sCif(5AEDmsmi9Y(6A+( zpu8CdX*#pfsY&)Bs;?SVNS>qv zjOa1bh|G;^h16lFa)B`&Lc8AA;iwddwE1Q04^*nr0C|}CIv_3swW&Y;N%vBcqH5&= zt&Zs0VS`e)O84hjWU9@bPn=1RcM%B_U`VcDm zg`lSNwLzP@xdQH|>CfKi$_g}pboWP#rO|E`R@@>hGM^QBr8Yf6w(pVnW6U7xW zPl#el`76lVFNBK_#>6iwFqf0`G|5AtC&$yFcjowWb63nBJCzi6#jARWZ_Apx^dKG#;`&LYSl!cf?=-mt*E^2tV z$;+w~X~>!8!w`vXKNVtsfo}B-7`&48S8&d2IZ9edm1yFhx+t3^A*SF|?x$7&Pg7xQ z#BXFch5OB1V5|C^NX*Qd&Mp67r&nSQWZ?SU;kx`dvt7=>ZRaOuuJ*YGCV6U9rj+K< zE{rH~JrKeGD$C;=VRMroJHchLP^qJ>$506gOZ>xC^SH{;7t%+YX+Pp%*> zCEcWJXLSNnu*n0>6_+LSB7^Lw2yc5UWb024FwGdYNZLLg`o2P zs*Ci1`nZJMpo}6j;UymZkP8az&Q&K$*=pJ34pp%z-roklt^K{xm$p>emQyy!NIMlK zY`QAc+;HrHrpSpSV$5E48j9&iDCnYxRp~m|j7vb<1O!6+ndN~NgAjEI4>p-tXAXx5 zdIP6=n8~qo<{%i8Hqe#85!Rj-{5Hq5h$5zq+9S zfl5@cc=fvL>@1r0(X{4Hq`iYX3OXF_H~nBUo;d#J?Jbs(Q0s2EkpIQjTL8rsbZNtQ za3{DA1Shz=gu&fCxVw9B4THNwNRR-*-Ccsa1b27)hUERXcK_X?imBVTz0W<}$DXDE z&L~RVNv&gqEpvwFqAPN^bbJVEbFCrB7arr&4>FU+fFmU>g^Ok$O?-c3uQL+3EPYq5 zNZrAmXntwDnk33N0_lM|%J#UQJF;G*h<0@G(#@=R`h+kkcN|kX1S9&eY2ddmh!zdu z(9cCw*bBMF$Xx26|Bh1B5(+XV3A%CqiuG zN-Q}FL6LO)FyEC(Hf}@_57goYPiE9HU*W3m?H+V*%C`#aG!&e6khz?susy_df14O) z7Vj7J*v9=FDE>a7fS2D+kq-eJZT2KywD@DrV0dzTmivwr9M1z1?0ER3@8dBn&jx$8 z)%#VMEf>&gZIxPMMl~Y}2DwY*$+SCy9uJUZ%7PHLE6)Cqx4M`7i`e#lQRmdko|$UD zk^y2!#d{+_?mo!-ePx5nYj6TvHRXATxI-KQj;t2xK_rc{J;E*j**rXZv}+9o03Gp5 z*WII+HwQ)~5xg>$@8Kf_6;FP0BX2ys6TyLPl-UR@pZ)6K?>TCyD&~BA^!$VIzAh}e zdwpqENEUd!QHw5nJ@)phXyxY%$h2&CY`pFNqTx$hI*;Ouel;0701wYe$XYLy5 zi;klmFf9BmrG>ZXcZB1{KdXad(QL!W?;f@<>|cw{QOW;ehb;sygBi z2B9s_>*Qh2yWzVPreHZZhYw|+B;{&y>#1pqu!G|8OCz8AziR zc5CbwoMb{(*e9?-m&p+__9?-fGW{c?v~u-fPx(Q@B~#-pt2EZ)s7TRAb)(Ai-&fy- zfz^E%9}h_rzO~{e(RR{hiaH$db9&K#{uECI_ezfMEp35w0Y_hs&f86B`IOXkq9^as zYpnZG_=D^@okI-qaCN?=GVrlV?#HGai`dIz5nwn7z1E*e5d>S+W?sl}9%}i7+f8lu z%(0Ej*t~gs>o-B6B`^`l&iNA0+*lNPPoY6JY7G|;Ok*@G zTq@O^qp9NOx@K-e^$+X(;A9;GIR!q}iYib~`;=(iJ$@~hJ@*Gw45o44mv!cW-f_PUgBNb&h$ zM8q?|8IA$IjnjFnQ*LP(&AqZn{BRLuM8&u_8pp4Wb#f}~yBNgzKSkgo06qAUD~I>4 zEIOy3;Q^m!x0bQqhZ+(hN{&Dh>N0Jv-TH#9qxtWU2t0|W_Oawx)o^pJsx3sSV1+we zKS%>H&+u6*4>_WfrV%s6|Bx)25H2{M-4m^>w7$zZaBJ&BOptB}kTpF^IW56@hB)lx z_QIu@)e&?zBT^VTEdsdu?d1z^bi~_{3qzWG!SXit?RamyD2ZTrm?LkL-UKxLQBQhCSoQ9`pVx?NdMHP?uD(|Oa@aXyz57{X%1@{mkT5#ul#!viS$xOnjQv)QJGb`uRU{LVs>1RXA(uCVVULgaZF?tmWDm(lhfH>!t3e}A+n+gtQjJ|=|W+_B-*E}3l6L&r7vfA zPhi(An@E%Rz2Mkpib-R#g``Fl37L^vf=Ov<-985Bjds3>Ovt9-uVvdlLsQL#{}oZ=O4h zL>&H_gLZnQ4tNW@L5ZJe#^1@tc_$b;onQ9V&h$N_!Ab+hl^cVf>h2F@+;7~$F_fIa z>R}%0gALxIalt*BDoT8P?N`T96QZ+tG_B33FElCoH38L1`}&9z4v-&8=756sh+d&$IjSPq=x#CQZFlQKX= z0HQYwh3F{gK{5#<%F|bz2;&Pj7?8tv?P+FBHW8#6Q;ef0G8!rjn_4&3(1_o)=I7KqG_gm9@A=7g}qt-*oT<*`~cM{B!xEj##alt>vg-g=eZ z=tEQ^$gbhx-TZN$Mu(+3^5)Oi? zQ%;&_5_67mhsVphx~SFf#CD3Mg*}j1K%T{R=Dg0!-lk5_(AFd2Y~>IkCfAtmQRYUy z{;>lGdl5@72d}-F{%+%UNIWZ_1vYDKijiqrO~bI`$|2R~2Xhf|>4mQQqWVnm)n$F~ z8Fe0Q2??N{()E|mvqzf9qZ25(H}=^G<;IPq`2Z>>bbL;1vM7te&v8PH8gp*M7(P^J zsnek)xi;T<%_PxD|9l`vq9+NdjK=H(IF&Jke3izHHP%#Ml*UY9o6c{)fAs&w6R}g^ zZOaVa8ZM|eR5(-zc8;6H0ynp8RF=$QMA>lJ&`(j-LT{7yy7iff=qXKW5>C}PYdCaR zOAttq#YW=~)+W@dZjglG2Y zzh2$xpOHBQns(|A>7SigZ{V-U0J|2&9jK*POh&%4r$lz1=QSO32P8t+Fls;}?tfI! z9+VI1KUR7LZx;bI3Ws%t`$4P$sb3ZTsIqFdUR)5KepAR7-8Lf;oD-6ty z&;a9oBBYN-R~AidafrXwm)Z+RsPY>^%t%YL z?d5x;g|qM;Nz3>l_e*Gzx5bnjFDa+gz1S(DZg~83&fNvOP+9vxd4qa*-+R6a?aeE= zP&FHAZq7i*p@^>Wh+q)1fMRaL$L0!=3%nvg{OOJ5jg zuWC~a*zZl-k>NX9jkRV!gGjVg3U(roT!jp=j`~<*5g?(6ro0a~+>f?uqIxFwAKMy`uNPru z#5nN1B3XMffyn42q6FPc1J-xF9tJ-u_3@ zl}HKtWv&QAVO26{d2MOsY+&BTpk60q>6uB5&j56wI(|N2o1Nq$vcP5;{sOO}NQVo} zp--BBA?xsTvziT;fP($z%ddC=+9UR+M+zRgwUjbr2m8y2n11kHF*JUzM3fg9w?fS6 z2udsrY4|Dj-Wyi~VaZ0&+?F@;5VURBL;(x6n_6Kng89R6Xq4}OYh^V1h-^WlfwT4} zRSg1m$uRbr7xo1=Dpi`Zsru`E3BXoq>j>YALE}paNZD)e7fU%uo%6Qp=fq` zjnwn>*a&RA>=dN_FKS(z1B%A=Bk=Ou@&?7xg;{OA@%R%eu^^ilc4+Bp!v3`7@>VUK zZOs$q{nR9vG7&eQ1!CJ9 zekWpNLFCE9QW+(avZ@{Lz(+*lkEq~y7`t##k2n?x8 zUa}*%>RK_#IBK>&<>|ckXwKn5 zKhZUzb7)KfF$9y=-Xmngv^MHwl$GnsMlV`Q0;vpVlZ%+GFJ1;~GwLn`wqZ zJVms?90)4e6p%~pR@GT&4O8D#2W4om5TEczBL!L`BCT38v4##D_vIq5?Vk`G2Fz3u zA5oWI6%%4zh0|fm3yC`m#FQx03uub zJw6%O&W z^biKO#a+mfT=J?^linT^RlZeVvQM3e-eb_cG zj~Y%UswuHh>XtQ+h7mx=R26O8MH?a6+?S^tBuI*ID~>GQj9KkD^=GLg=)@<4=Rk_G zLvVzL%F-mQpMO1cTDFK>=*K$&@^sG-!`2 z8?v#Q-X+)6>v}Q9!{WDu!Ql|CbcrmGI)K@5dnD(`Se7v=$d- z-R%0od4s9hlD zlu44fHCkW6;H^zocUj1h6_}1rWvOfT*u9cDi7uhU$@8oHyN;WnX@MzAZ-|1-!WMJY zVxMZ0o@=ItEMl3F@xyRgo;N=DNOBR_Uzb+?0erXoQou_N_}=CDc$L_g9v3S26SvE1 zr(`Ge@ak<|HCi!E(G-gR<|w;$ z7zeVQ$`lZ?EKv(`voaG*2`CK3?n}H#;4oDpRroG+oL$)S1}=H;V8X&g0u9sW;Pk6r zCc_>qB3T3UK~cgx5)zl+*vPz$3%@?s!w+z>g=xVUDxFRMY|oLF)v>_J*T}iFrqU~} zh6=ES*k*_006rwyqJ}9_8p3CrgzXyUIyN{eZUc(9^rJ z){kAL6NEiS&1zGexRp9t1Q-mYWL9$e)|w78V7&*_#YF|KYH0tKI9IgBjQ?%)dD@TV zs*qtcn*8fxR6;J`9#OXb7$JUN8GNH}9^qX2#F7PZCpKsMhj=qIDlMiw*n$s!sI;ay zUlu91x-e_^feg&pBy9ZN(oXA;EK!d`w^dr`pGnH4xgYUWK#EFFpSaxV5kF|@JYTm8 zQ9rKjO9C;WA^kr|#*T0}o%GHP6zHU~<^c$!RO_5DEZ>Y(KS9QuNBWB5S?Ririr2@t zuk+JeChs}eJ?l@sBnj@(t882wY_mq*ljD_9rm34sgY3foq!+15R}V{TuX~(E(2_2w z-o;Z!De_d6f2JcOjrEvc=Q#f0zm*7xW4XI4l>sU%xy8Mg)9`S-rk1I1-S8H#JlekV z|23zw6I&7la~G>ByTq>oLZuZb&Q%71y$qzQ|Ni{P*+5--QbI&7GgH;f)CcA%vIfEG zh%S+ojS6AvDqxj6Pq*E{QyvWdR2W1vxK3u8`)-sBsx$>0*g2`26y`yX>(sf82rPNV zefJ(>B`$+t$3~K3=V)V;Z~H5@y}5~zv*A=?W@6nh3mB@rAMD~-h(RP4-|5=-B>MYT zChjJoe`k$kN|tPl2Mxgc zW0=lFp(T5dL{SPeGEHE^<0G_4ssPD=Me(-nJdc>UcoSqEot9c*3Db?sgUg`A`}F&G(aG!Ut_q(6F=zR0FumjJh&n zR+C1-kUG4(iG{*xvN<_%D{hcf=rc@IX?ueUilCp3?b)YYFYGQ*tFWvY2r48Tu~`_Ba1*GlM}PWGz4v4L$6OKhvcX6C z<8;HJ%LgC>k>d+$YK1~7@lYu_gx?Q9Z>xNva(9#&30YUVd-z$xQ>GXXxa~ zsi|{JkE|}HkPbVE84k}}i9Ps{cIM3gb*;UA;>hEVmiiB{m_kFvql9tHsJ+-^x!Xrw zgLY%TkTzeWNKVgcnx!Cp5h_9N<@BiWe{Pn(T6`0Ak=1+%A|C?&s#3qIjjgY9Yh^$uE?+xrT%%19ybqat-wa7Dg) z%h&xf0g5oOX<6ZykI8Q3OLt`R*na8LDMnPTr?)lqx}c^rc7;{D;y`i!MSA@BrK7FwhnX>IU0B5 zUr?!{ZoG+r9&-(*4zUrK*R14@q^?s@PsBzsr1&5ul4yCFDlNq2vr%`!U?60tE8m&C z#=DQ;i)o0bX@=k&L!~!4KI!uhd3KlYq=R&Sx)eotW}=QvXJ@k~7JkeMf{a#Eh|c|3 zwrk*5U`mvH_!{tgeYi@7#?)Q~E0c6Dvz6mr=_f(Q!5J$*Bk6D*G%i;co)-xfW>t{5{d6@X%MY7%)tft<^_pvr024$=#s&!pVP!=bp2c<&AHT zcW6nj^Z4LRx)V7EsNlAx0cuG2xj6lw90^mM>MPZ*+5*F{7B8uf4WA(MIelv38zt#8 zI_4`f2HY_;{t6^(bWTLOWnL4G;QX?3s|=cChc!5hV?Bg`O_uqXhk5*~^{LdKR}HFc zXeQ2iNwTA8Iwfcl9h$tWpo1-$Fr^H>qvTf6YRWe&jGJ}vuwCeu)e?tLl!?*p`e_5HobR< zG-H_{ldzeeKF%LE(VGS&3Tr!;~4qi;gJ6`d6G%}=3@T^!ZwSfL>DlSII(?bC%Q!IZ7mrnO54W$WB`%eA zYd!2e@fO|C8KLlbN!C3xD9RvZCVBv2dwsUB8ZO zdRCmN4zZ>_azWkqBOz^g6avsSCQb9FPhS$Ep zp>b;BhO$sVs>{J1>_qpJ{YV+%NhK<2;>1GwAT!ZjNrpn)Q$pZuIPRvGxU2NOsZgYdG@6ka8iJWCu6x>Zgw^XjX(KdRDWwj zcI3T)r!z#yjK-fZ6Sre!(ADwNaK$JCx>16+fH$lda?&LeObY@(tK)@hWmL>%9+nkY z^nYD4WgqR|M|JmOP>@ZBfVx5GVceYk(vPyaGP&xd#K5s*IYv8J9w)?@^Ru6+dB+Tg zu>Dw1`hte*W~Vu1to^a=(`O=pezIYsURcjij{m-^Jy)E^h5M{j;Ngtr|=PX$8jgoM7^Hz^|5}J(}b;#tk|mERxySjZkb`zvyGp*4X)NMB0nSA z)ad#6U8sPtGn5Dp-Ve)NP0%q!H5=^wRkr^xY8BQ;cgBNi{7q!%J>L3)ed;6&I>Xi6 z0LlPQfK9y!ilAHp7SGNhqj>2Fw${YF%?j0T@~2?sBC-AQIkQ0`HWz%^DmNk&Dh#HP zq`;I6kPe0@fF&I)ncOYxkENksKi^FoD$_`GaSjxEFWfemhkAdb`H#^8N#K<8ijTpwAX4BZ6NXS(<~JfZQp;t077YGTG)^}JjQQ2uv@v1?<V1QOU=W?Vc8ez<9JOw2=Q)pD2#yCKK|Tbq!cYaVlI-tBL5 z$g!ZAP{y}RIWxU4F1uE>+k>+PyuL# zdR>QeWIJ}FH=gR7_GRq%HmhmuV57~ZSjO&7^~Rg8%YSo~ezOxJ2nV)8=_iPzjtw8W z1sgiQ1W!?kgD8C{4&*tdmFa`>;SwJFpb`OK3ov{WRDSvQ=9~qzb5apVJS2M??UvC_3K^1 zL6)c{Dz)A+%q|dpcrax{fRPnX7q16PY(rp15V`NtAqULO;$H zMqmwE?q`>}zluzD%2NJnVh+0Evh_BWhMu`O;JjIxFnbAPygY+9n+uj2L!$yB$B2hm zd~h98tDKHd9yK~yUM|_jf~YOPs1Q10N<|_-n3@0w6n@ANxLa~&M&W|H;9QXmkT5;* zva%P2a}=WVv2sqJdd`DT^%8Fm=ta1&@R;Jng~EvS`ZD|+ap1S66ajXHMFvH23RAk( z{6^f~zwYR8{H_nRXyG(`J5+l zJx_9=a`z_YPD##daq*kp!E~fWP^NFX{zxJplV!nei`TD}1>Wf4Ec{$wG2g3s_@Ic{ z$!1J4^RBMhXNGt1MEMn_Wefz8?J#hv2j7eQUQeT8`A6wsGwIWyEKKi-fQO0T7up!5 zvV2C!{_uE9W7I#GV{LoVZf(Lq?FqIxlM-yjr7Y|4+0Z#%9`s*;z0n6_Q*+Gof)!W| z=Bg#5^}QsCnn!Z3?yB)p1nY^c78ktHucaaa=#w7`)j&S1AO$XlI{+2?MmcW}t~CI{$5FctryhKtbW6wklCb9=q7Er z>PXHSZdO*}s#b@mD6YzR(`7ZPXf<&a;h*X|ej;RJ|9N010c2tya@O|&2iRj&~DMV6HQZY$I{$wy=Zy4nk(}`h|1E% zCINkfZpl{u0_Ouzwk~{|kHZ6D2g>ym9o0y+(*L1sVD;G$#FJZ>kosy!X2jwF1)3)t z(G@mf$7$&Id<1~a%;J#gwXm2ljbDg2Ij3DwX$R2_1BYkcpF$}^8bPm5>Q%HjA18R!H9~mD7X2kwC$1RC^nGAEuFS3E#PGrRf#16#`c4TE0G9b-(%o#DG!7` zk|JrAq3?kVOYK^yXVIlF)Rn`0ZhEUQufAiFy+C@BtDp(gwfgqP3qh84FJ3glu^$p? zB3Rwnzr5tQ45T-c!s|Kqd8Q!oW<0y(CJ1-X{A>_lm&KlU*Spw_A|#zJEKpv0N4hkN zim(E{h;=^q%sI}+lSuVKWU)vjWg3BL`C1Xe)xYF6K z@>aW}>bo6&f8NoU=*vi6-tkvU^^A6cBF$NF-;2Iv8lG-YsIL#=V@VYBI_fQz4IPQX zZ9QSB1?|lwo+CpHGds%zF$bz2N(eO88ekwlTP)ggZFYSMLRAxs@}dQPiE^I22dhGh zE@QGpquT~4UY1VxeYhsm+E@52L^2Q1)iHnm7(2#13ojOXFd&}KB!%10$6;2;q?o=_ zAoY!eiu0X7{Oe#8t4Ri{wBvBkO10pv24Gri)jA3=Qugr1;lApk|32CmnskNG z7ei3^LeVFjqg+=Eb#Q85lLu&awA2J{JDLY6aqwx^UL{D7BBo@Yxujl%7 z?!Cl^&c0=gFcnc<<|07yI?|nj=LpCU*4L_W*Uh52wK~*dYNX_f;KsOVliQld44X+S zS5ans2G_gLy70RZN$dQ4F>d5ib6rxHZhQ=4V-Xf!GH)LQ1*kr)Fl-v&_RmX4e$m?| zxzT3naH`HmFBa#R{ED@^uLkm(EE_7Nc-En0MuTjS_+qb$Wf&(hCAS~o3K{#@TdiiL z^cP>S;=-5?ZF1Z;|1ACCbRUz@VEZz%Xz;pHwc~TKpn+z;XrvTwG)I)h2|gyX{JJ&c z$BHz!+Jo#HrJ10A-9hXQm{-Ef<>-x)DW?^k#1hN=+GZJX@H_ZptU3w|+u=}mx0Ahv zLo0H;Wvm~)A_zHgkd>9U{&gc8`4^d)J7)cBVK>_ltmk@_EzRXwP~RNL2uT{)V%K?L zu(cmd1I+14FoiZuc)D8cZj)1>i3qEbBl?ueG21}_));(#xXS+B>AkP{<;R5?*f9|; zJtLI6ncGd!*@#~27s&BRf&2#gzbgOge4^byg} zq%D^sBDl4QL*f-==3z} z)$=&~d-`Xhe1K(&Z!FczKvX3@u~_ELH_&HMZr2!PKci}{if@jaH51?9UXc^N{niY@ zWnEA&{c9@%|NM21`FkEw&P)TJ5E=|MV;7`2Qq0RVTVEm%-&1P_b9+bm4&Fb3*_tnu z=ldtvJSdkoqYbALmEAs`LV(yEuzcSl-JZNVxm^EUx+4$PBor??^-g9~WstxqnT_#M zg}JbV$dig-HlB2agRoF4G*twm>kil}0)c51gE#X}m1y#d200>{(7SRx=}tg3O71e_ z1~?)OB32IJ3a0o{4Dh@}n6fNsJ1K;#>-J1~(uCF*bLK2S?$Fu%6RkXed0cG|Z3p2h zLHl>UOhwb610FW&X}jRkY5Afbhw{>?A|GVjfEKQ9UJU-Is+!o(R9L|_OQ%1^itl;#9 z57d9{$L zq9_4{5MYVbgnVhIs2;}kOlHnc6b@f@WqZmK_k2H+S^&6x)~SzXX(cWi9t)0_W^3oa zoL^7pzIxZgV7~!hP9x)N=H5rp`paX1xYU1O;4Gdy!{Q}V5u|CmA&u|{8K^jm<>Op& z7il5!t=bcP8aBzUj3QK%>i{L188hDQCnh`^Dhez(kPWigJcf-34%IZI-g&8t_VYtP zH1vgbC}JC5h0V0RoN06^ENsGWrr@#EjK>`B-=Dm#t1C3I5-2!WB24m03jEuQ*;EJy zo5wjJ)3M&$DV+PkXIRK_J-gQ0O|x^bXwtwOGb(}_mG69hm zWs$8-o-W7BX* zJSte9dI}pKVDYY!|6o-H`qOE%Z-?L4P*Ao~ivvTe^Y!+zX1@>@`*HFJ+G^Dwp0y+X z{)GjWR$x4J7cNVPlEtycTGlmpO)!3wFOVxpHK;XWv6u_Y2;(D`?OOJ<8POk0iuzfP zsel7XtP)65r^Kfi>w@U#YD473O(A1muDn{35MoBnw;47QB*9!agy90du98qAh z)}S1pTaM=jj=m+dZO<#Oh8W6;zl(L(u%!5fz^*>2)7b4PIebQYojK8BJd9YyRDk?A zHyp0+1rol62tv>+8L=E49gSwjN@f%Iy4!)%FKI!dHr(2`**V}C$Z>~+czcNnp0OY3 z$!X{DD0%RlLz>aZFb*hr+t|l=nS!5CQ5++$U@qSgeECv8tOWcD*^?I`lp%uPfJk+f z&zOoV)uS|zq&TVc0UlLKrnt5}oq9-J-SF!(*dBYGAP5U55J0{q-2Le$v_-feT3ZbI zld3*ppvo_dro4J3t>s@!r_x7*b8XKhL1dZHxnX${;H^2n*l|)pRv*ihJ1h_+N(d?2 zSpW{12u{00p2js*Spxf!-CWFKqe(#aJ=kX{aWa$TK^ULhppY(@QVBpXKD-hhTeVi~ zb_xix^z;V#_8ycnp17GbNWkOUnHA1WPw-aYEZQ+Nok~`vEW7PK`ad)zR9>vrpZdL5 zSo5taW$Qrl5z;g3itgJ#u!7J+meCsICF_W z+#h6-;1SamRL4|{F20@*uhtrM3^ax7a!OX1msuw;f5H>!SvK(`V2KMxJ=7d&!q*$< zrPB-4`!uOadm^Y}(J}PWH^>1CZ3)vT2Q?G32lIOv~@kCN=5u6i<(_EQ{(Hn|Vx-z-f9zsF0 z1LYLB8}!)FZJlq3rW(B84?gIODsmXD<9{-%@9#_bkiE(!4n(~DC9LAKE1h6xf;uT6 zFI5G%IpFR8WU)WQ!H`su%k$8e*<$}4Ba%Qi!8IiX#GS>$8=;yg zokZCS-h1~u5C-q(u?q2uJ6c!rV!7)d4aVxu`t#5lsd|-0!!k$0V%OwDUk=i0Z~3{! zxth{3jP~(Kw*5H@*poDYsMB*ynnMcst0+9%dMEvyGjl#&ry(>jZQ~?51$ApzbLuD< z2%5}_z!}UG-J}=u`xy4%gcOT58z7-j(aChB}UEdD6AR1n|hWkJ8SLuo+ z!K@9ul+Y^=CU&d6b~rP~VmPbN8TnViFjF+b_KLdseUsPdauiPswo2DwA$GwCYI*Lh zVQNx75E@VlOzp3gS%Xm?jKY^rN`a@h@8pojCXp<`p%c^h zKlHt1`k3}@0bv_D(N|R!z2h8L+qb1sF^M8M8dV)rC$}z0Jgfohip1ZCSBMp91gUc& zgm$)t$&raoqIt10qpK_#95avS24~-kQ5Qz&(3g`{DTyEOCF*&j;<5R(8qJB^tNx6_ zd%$_^@|d?928lTtb_xz*W`=$1@Vtd38e@}MS8&E+&OgrkU4|913h3ygmBV30$#uK% zR5AL@e9LF|>hk0eu`gPbCM_kX@8Aw6eu9b%BY3KpJ@nW~wClMFXb+$YOYb>+J1b`i`r-t!^ zNxMry<|~oDft&K zyvn$WRZ}cQXMRM`j%Y|4Y@{K|GRBW6PBiwwMOwKttojbeuCO_v)*zU?2L}v&aa9Wp zPYQt+KgBHF_06J)p*22#y*f7!*~xtuJY%L@!jor3B049?Caza{p{#&AoZh|j|{;pQrjEfb39wka(>V3LzisbOhx2scbRcds@{xj**<+QLh$iN>Oeai7@M0HQx z6i|mx@cPxd)3%@raDzs`stPaWa)cH4c(_JCib;veTqLp9V9ouzC&HNoz}QshN&+mn zV$A5MwU(`fQt;B>iE|rwfc~?m!X(aVW9cgYjYM|)>l&RAsYP>tAMU4NuzO>J3Gpsz zN9`XCb20nP_{;dB2?l2a2_84jv zh!g%X{$qSeCb#X&aLcr=mB<`8Za*z50QYBMBQcVrhuj8R@wwnDZ&IcwkHN?<7&&x7 zOjod($sUu3muKJS+}a@XBx*5S*>;ipm4dwH@dlHe+`&A5jWu03|4NO5z?>|A|5s0{ zo`&CZvt=7<*4Du)a=mxo&h83x8;|~Od*PVK;f{{*()aiWcgq&Ah|Rc_AWv?Z_I&v9 z8Cm4^dI1SeG;nkJwRQUSvKR^rqx2Y*hfDZrrvHeP1mW_#9`Om|BP4x1!ya2jM5u6P z65DY8UU{b#F6(f*&l0xN5YTHgPHCl5G0s_8^#O3zT}p4@>#ocmRvqE48e=)rvl1yQ zt}LE^y!-t^Q+TRTk6@|mnJM1kHKouQYyrPbF!~TT6sF-0K(afOx}V+&O0=oyxdIntgJt2f$`qKBMhSxdh`mV z=^`K)aDeaMdZklDtkR@YR8FLe`2-X9V^yNEq9$At01II$MnBW=QhLX~)oVH9YGdW9 zE?i_gvpAo&oAe&^^d88)j5}^N)(!&3pLilbMX@1!v)00W-8(6!Fz3r5G8wOn6u=-b zULF(#7~`}zJCukovD7XtB}t|7#AkgFS$SBz_K$=5S3pL7W?e?-K-wmk`O6<4U0fZ2 zbLvU*F&`tUqPq&v|L%B=kHmwb{-*c7a>*?@x@s)WT-VbsF7N*BdDkNh3se3hnoe8n5Kt{jzx6HZD*ml3jvl zJxCI9PY?YiMc0$G z(mYSkCfEKGow|i@8oP@wM=$GG%-Ad!tDmxc&tuT~6tW%HzaApz3Vs8f`ac{)#|imA zK2sT8czG5&_CqTaOYgK;2~;nTtvv6itTye&o3}l^)Kd*>=zN_d2ji$hK!5-p^ARd* zFK5Fa3_LDFz+qAQaj#}0Y3-+mj6#QBc#x7!G!4f6#Hy8;nOQWyHqE-PpUtg4vy;wM zwq2gT9yc)<)G~!hYbQTI+N?I!tgU0%`(Mp$j4#g0(Z5)?XXwk z>@ewq zU;+T*UwL8JzuAOA{GJc8A+I8D@45A-8@~I2-Y8{I#e9t9@*B9NfJj}FQ>L%8#*9}8;qG01rRm325>R7j%kiIbc7OZ5{z`G!?fAEa z!Y|;`5D@&s7{IrY0G-OWCH{{2rOualBbN1Vxws!EzPvQxu0wR#n{8zO(6h&iTszw*sLQI|o>B8h4DqB)I2>peJ3| zIH~@>`Bw96#Z9sv{0hMn-T}C8tW{S(rhJlp%YG(r^Eoz6?Rle6_HB%V?T7klwd3=v zC!BA6F^pLL6g^NTxNq~XsHcx{bu*i_J&XA~pff)_+w_{Wi~rVD9m^-2d+tc*((_zHfDyfZk?~8u+hv;NP{{@_K$7 zm50{9UL4A-WL-w^?JZu_cxu|rib9L*zXe*M zudcIF+Rllp$*Z%sm& ztvV?FTU8>Z7cA1Zqz<=hk+)8~5i#21Z;ZcW9A0MnpP8)xR}+Y(=J7)5U(x7K%ZqRH z3nr8UPT<>M6AHt?|G|XX%b9<0@pqtxpyd)B9Y~0ECBbTQTuFFnNC=omX3m?~OPuww zF@_399tcB9U>iMnx&8}d8$1)9|BdyWk^HxZe~jt>VoLwvLttEIgnujx+>!tNKn89I z{89g9g7(xv(GkW%OlLU_KZgiUUE|kW#{v4H$>h{#zyA64HM1Am!i5nu2nV}LOVq}w z1^onYu{LNhFI;8b;T_u;Smg=rPqs1gaIsnHJN;30oc0;O^LD`KQnFd9n{o@o6*^5( z*_4l)dV28OEOgU2UfjE$)mHjmik zx!;6@L-aqe5>)tGeQr*L8f+is9d<@|>~omes+|C=-xxk%LU)Y~;e7A!5gJQr!lD9}`bGue7S#Fuwy<=jYAl34VWzv>Nn{V}4)0eD_;6 z1x?TZ!tF#T*8Zih+{1TU$p75xDQURcRjVv0ngC^Ng&_}ML*b9EOx(LuPZnOWU#KG2tC z$uz{?uwiWCEX6+P?hbAvKU74};}1W~&lQ2!>5&$W4EN1@W}RjZ0lrg(I!S4ItGXk* z*1IuBy@-Z7z1!`s+UA^5o#?jZrqhUK@g@JR9xfUp_x*WOZ?qgHhSEDde;N3}F?!4o zXK6^u0%uRsMKjK_HmX47|6m#e)0^tGBaS-7Zc_|AP1idD$N4Wuu!MY(Nd=A1K~zdC zRZ{PRpIPVN3yan5VeXb8St)C(ojL6m`7I~6F@z($RAt1&wXC-?NrRDNr zOi!!Xlq);9FWPY3!u_6t}MxuL$JDi(y#REyoY8|HsxlM@RYv(V{aG&Lop$VzXm=;)%Os zOl;e>?T$UMZQHhO+q(JP_wIe`zW2J<`u;uNcUGNUReRT|Izy)KY`^?DjlCQl01FJ6 zybp&GcOu}nxoIz0Som5MQk1e`j*ghwdinH9N-(M%jQ%P}9204>Wx0=*5GdRS6ELug z9`{d^Ejm{w`?bz!c?l*3C4$34@Q8Ol~*ih`;HJ_>|XaL5-+t-iV} zm2E5<=2!^8gQWrq0D(fMp$;q73%6J13pI&WDdjDF3cO79cT~{{@dfi(9J>FV)c@L3 zS26tse`}I^d&aS{KU-F4Y~c5U;d?o)p)0opeoj_!9XrUJNaA*3k|XD`KO`*OU9vk^ ziLaaYG`Hh<1%eL1;B5|&7p%4WfN zTZR-{3HE&V`6)?TpAU$EtoOM1C0lXVJ;x;%@Qi3q%ER?>cobHN%6{G)hE6luXXX^M z8bYVuaYCnLQUpj3iXLnnYe6VqZbY$x^sAimqCDqqAM8L4&?zxB`0ra1lIOyd>M}~} z&pFKLZcC@J%U4@FY{d+u}I>*SMqWDjn) zCv^390?UJpmxr^}((+h&5GV3~yF*he+%`Xl<7Bzv#6m~8cAHu3?19GMWn+fDSH+w- zQc~*CR{+lazx%9%QRfsN&Q}maDBO3&>Dyih*96~YP9u(0hxVwI3M7)3vjjzTNZ%m* ztOqU%#gJXdFIsOb8!Xo*6Dj5MS6dxK%bte3XJ8&VOBPPvJpNO9H$O4CKZStLO%Vd62#`LJ|NDH0T(CWH;b*`9|F+`)fnXmYGOzQd z10k1bulF0R!c9{)-;1N4I~0J`(n#Q~q&B?D5$rUHE$ z-+vPps6a^gzgQhlm7Q4|`*9j9PyCmddcdUOFAo0@l3pL%F7eJ&cJ8RXHJOBSZg9cQvJo zS^$CP@!tNuWhCssn~oQr&@98sTX|&|wNYA{n`9Q=cOho>N-0`&R7=G4-{iDICtOxWytywNTf^~nV*z;z>;HZ?G`6-j`{Xj|%6uVjKo(8=q6#h?goVZPd>P6W z;Qu|VUPLws6o80gK1iw8)M?`*i+=(gG6bG7W?7XVO zCHqEH@)E!D=YsLq&~t5mOx0g5Lq3CI2n{LmuhgEfZm;*0FDZ$q2k8g^F(hJGU-jYR zK?3~w^xsi*zD!G9xjb~b$TPX5PkrkoJa0X!mA{QTd2zWH9fH|ySI3KQ8XeWZmg3V; z80ywtpO422m>KBM!JUu0EYv1$;(GS(*`G~;H?v48I;#Anm3Tj1;k3MJ z*qNzYN?H=f3-N?2jok&9Nto5zjX)69IVI#QH0}rGYk@#v1J*MT9fAb8)#>6>5Z`-@ z)Y&v(8pyEA5i>yGA8FHY(&kHoUPVW;8G3zDPX)ROA3mMNNvT^pGG6A z*}Bq+LQ)KsSv-~`A2s#u*V9!Nf=j*Y=ZenTiR$}|-AoPJo3lviIBpJ)D*Xl~u25A~ z6xJ>e0WXXN*#ByjR~COhW7zszxNn6(Q2vPUYR#|8wfUtm8yz$`#DQ02+K;{J!N$1HksjxoL0($t11ea-oLmdq z>Ylas+Hvar$i#CFVii&XhBN1DlM%nx1@{%7P1?4Z2P{HjdAuK3XIS*AuA0*0(a`N*p;6MfjM%EDn zv8Yv8VH{TPC6%nv2q1>@2;Fa-UtzR#ut^CJH}Lw9vufZ+T%pTy|Ju_XBNC)&HFV%C zfM6)dRSlcZ{OqvnpD!Fl?)?1tdh(Mng_W9p{xTdQ{J_6U`kb3)hiPo=ecw+sb^f)@ zUT^=;TCOdZ6$*9AIzDdnA~>)iLVBEHTyRXue9X6Zfz=sKF?K|zowQ90-cIfoA_Mhv z7L{8v(w^9B#9U-fYwZJ5x|PS|l_e;&heX&_Dhqb})_`a6dAqksP5c&etq?`3)xSV~kjV ztO73zl7>MUZQ9{s$c;%#!f%mX=HkTF+e|%7Z$qVce~~OPK(XP@+tb1N@cDnSWZ5aU z{L~T@=fS&CuEcS*6C@YD=hUfN5SVK;f0Go2wz~f)XrRngeY%?ASioqr#)mFXvREsg zG#NvMx?btA3ct+;yy|x3pQ!$B74bwRcK8UX=tSe1r<__}@Q;KRQRyH7A{w%gJL!u} zSpM9cSQTIfq_&|ZV*{%9_@Of_9GaJiXvJb)S;+(g{bA{Vwd(kB8uJ;G{d`|mPiKVm zP;vQ8ARF-mB9SdA@yK=>fv|zXAwU1$FTVOz$s5UJmp&m!OT)|gg^#F*J@_qXEvKc8 z%VpJ>J|ClG3XVek99Xcv;B9SZZD($-4xwN|ST%<2^x7i!X;l2;$*o|~Ael=D9-fxT z(DC(zRw6Ev7cjWf$17Xg)^Hpf1KF?DM$}Tm<)w$dsuWj9-!(#w?(vEsJN5OV@5_+n z76D=mgZ{5^OCWlWNKongF7IEJk)d$!5^7m(Ti6Fl;>H!Qy&Cv~Ytt8wuJM09XhGiO zBo!^^0^--?84Xclps8Q(ElwMAN?Jdmv_1rSh!d1LN76^N zmVex2ez-r6E`=0fxe4cZSwB8>e6(=~t0-y?#m2nc6TJ4(du|E)XB_TGbIYn|kl?&~ zAHzj0&&r*g(54E;c*La(uY&8S2O<9YVOQGSb@lNB6cR& zYBGODH7-2AK@Fp*g$_A#a_|HZHzvY%LP)n-UoP@3wwzeEgwkB>OmH)wov%;MNOJL< zPoJN!N3=ltn)${;`U+hlsUyRlM{C<4t78{vXnnlA?Y@I~QfmV2&Urx1%q^L&Nuy0} z3v?=V#ikx+WtQ0EpAq}-5jXbkBz&bB9dQ4+;BL)s*Y!kB*{h>Y*X*u-d$LkFfdUu z+Pc^V18w(Bj9|{07K-<=j5L7Es8GM%ufLBL85~DNr+ZZ`pQ+I9&U2mXglmV^1=hq$ z@o^dZqz4Dnsku~)?g(p0?cDPMaj>Bz1r@NAeU+6Omh$r9v6I=+UNnNmM^0Ae+unD| zoQD2TC~dtqB?bwx<=K`39R+nXN;(Lf4|5Z6?K$04=Kc*qnpX-YDY*QjD-_BsDI+7? z#gZnrIIZ#R&1UU8sSHZ0y3LX^I83+QciA+EjULo_@E~(OHQQL*4mGpHO|Ti8?w+;V zjYH|U**Pn=s6P3uFGN~Ga?pnZvlvu9h8`%6=`Zjgw(j>s)d_y02f8Z5&fg7IicSWZ zN~noPzbVF(w6ITtX_5V6$mhP%`W&q^EpG7-a9VY@OB8?R;%}%FOD5+PgYk;((qC3V z3E|@IniXCcGqwJWW#JtnQOU7b3Z-#Gh1g%sAH6v@m}(YRFSADl$ssAb>K^H_8^o7WdS<#1KUB{8KQA8LE?Q%Z8d~SEc8)F7X?@nvOywi6#?hoUted+oE(L52f8aRa0F;?WTz`qiAaGk$>E#L14k%4yaxoHjqI zykoCEL{v)B$8B1w<-!QB&?|L5*-$FS`%xuX3CCh3{h{`YcS{N(bp$_=G{+Xeuj>8; z{d+Xx-jY2P96G1#@$K=+KEHrCIs5mdjUq7%<(DHo57+fMGF1A7X%dC{O4+^RFqSMP zBZ<3AU_R^9VDY~8O4SNFT^-xwu@gJ}JXIvby+rUaugNj|W0|Uxpy$+deBFS0DNA(@ z_hxiX*%!1q${)r59u=qeS0Yk9-qY^=%Kk<(ErJwA2+t~4+EccNYIS-}!j#&0Yo43? zGAMhN@JN~qe)NWXyA3BLhE#sF>{_ih&Cc6XY}nKi({T3+!z+PexLUG_^--mAIX=Cq zfpg5AOY_A_#PD3s#Aj&CPqVJh)BEBL+d_kg~wcpCe%17bg9=1>Cx&9 zJ;e?u7k?sa`^Ou>WhJ@Bz~l2m2YzZVtJd4G5;=^-)uLV$T)epeSe@-*$*E(ZW9uiq z>r|NLP0GS!&_~ibzDz(^yV7at#NzkdsR@DD2s zQwY;o`N}`kU{JYFsr_z;kR8_NsQzPlDe~R=Bt5=^Bgc6qX4ogr5 z-43#g_uX93d%X-?e!;BADe+(i$9>rjHgqd2{ZDSNEQ3m0O z^)1pQMf4Sjkxt3{BGD_F%GK1#h~CXNyLOoMX&NxObnpXUiJrcmJ=q{6z|!W>3F`pP zhSZhWAn=&a;s_#w6;GXX0JdSqjO14o$0k*9`|9|k^lE}b_s92e7nLiB%^r$!5cM45x=BPnkn$otVrT05IPbjdEV3^sgl!-n0G^ zu;dSj&^=gn!tNjt|2Z^4L70p!gHV)Daz?_W4q+Mpm5FkAb0&p?BUf4woxbB)M73m| zV6QSKYUJeoWDOpYidq1z1z$$vuh05qrP$t+J!FZ23N14$FF6=h=Qm>Y`x2?hj zJw?M`@)huonRLA&o+Fr38JkXp`Y7OCMElLGSdS6vBgN^#si0PuZ~|qPX-ybh=w7z( zL&AxgXpoH~88E*+8ENoco>VbI1~nq^@}DS_DI&AP zJeAC21G)D{TTH{woW#H4USFO^h5z<*QV^|hO*a>Gngy1T>EzdbGBcb(mD$ z=b~=|arf>Ljdeg|dwXCocj4UwRo#5Cd-`{;x_SN6^B4SD;_0mRq=oO^LZRQNZfSO| z4+{Yae-vxZ!Cpvz z6r`*>*peE$F0a@Igv(}lPEndDH*bl{H<+c}Uf2%i&HqC>D-ZQ~c z(Xc6c=Xv1s&!AE!tIHPr86>cB;jy_Tg`r}|LIiq$F!nz{>r^j=|65qq^Ro&MBtU|- zKTIF`Cw4Trmj5k(siJW|pOLO}@>@__;ect_lhgCy?`m{~ch%sLtV!eH*dd~qZ`dS! zhV9m5-l`?ngJxD~Rv0_U*<<1*|HcFtaB*ze#9HT%^78tkI}VxsU^mE>Fewne{p0Rn2pt)bi|mYt-EPZm6PFEv z=Pii(MwSp1q}M2+i1R!aj;me0xP=Kbx2T2m+(1dg%3{(N zP|;@cb@CjIR)hdOLhE*|9VIfC+rgezhGuv(td3(6IiWEjVD5Z|GGRwGabVD?+MdqtAo84ES~RTiLLwNfTE5`Df@`nO-9D5|f?7A{ zSJ>C=<+a?`Z!*Y#A1A0;@Obotlr$aAT1V(M+%i3cB|NUgHGL_mMnh%{KZllu0p9LL zw4R1>HXcP1Kc$Tw0>0hJ9x0x)aAw0X5rt1sjv|cHK7fUL9ZZMAKum;!)>^CEKKFWC z@N(-K{HR}cO%=uWXgx?ywNj}ZB1=V$Ocg6sSojLIZ_eBa(@MJd`f2U-={CnIo*)7B zUI}bsus+|iY0y=@MSXSnf;;ik9zz8L@xzOR* z@*+!0Z#Gn+UM(B<>iMHCV>{vYHOpB;Uxh7bL&^UkIZ@Bcah#t+OAK)OOVJ+sZF7GdBC#lUszmCR1 zmF+OOC7*=Z4a9^YQQh>Z`Pfr^i4lV0#j>IKC8bb<@(V&l#4uoXdCCM3r94Xv(&&*P zhG~PQNoRX;7ZA?iSo!p6FZuMYF&lok(_Ed1Gx}Sc?&HFV_r0mQoeFT0zrwzUXYv1@ zrJ|Z2=j}dV5}vylucSVnjMIPKHo|WhoFKXa^d#DzeHoQp#+!`s zKZPJhoGu_j6hvqp5X=)c^Mym-1ri@}az?DQd6z$`*D?>VTvmM2D47eaOfHrE!k(ZIc>V z7&YwMWFhJ-;ykK$cg#R{=#R-yZ_!5*fz7sY2~0Mxn{jR@lM!83WWD?SU7`SIXFr9A zcu06esd^FF7oBUJ|$5YeY7k1qmi*Qf`%M0%Z&Kte4JVkDb^@is0O0;?9GGl{h|7 zC(@WKEByY>C^-(><{^N{VlRQ5)+2aM^h`}6WJc)~A<;?U*rDZOntPj1;ase1?k{W3 zuW@z^Xr5-02qg%e@d>8YzSP&{*}ihy+J@Qd`f)}Q zI8At$%Sb2I>e3bcc`<=eywnk3vS&9aJ79oz7H@oHy4{S?UG=~pgvjZk)OR{;W>qf( z3X^>&Au1JBmC!$e+gFXndC3B2S1Zk>r2CqRh>cx`0$?E0{L|d7xaD!4q;ph6h+TNh zrIX};a8$@o{tlG3l%8$LDj18lOs#NG_)qL^}#17ET8$yQQ_Vh)U7yxVGh&xa?jeKV_wV(Y6hh$0{|Arj3(#T(xW~zkJ4?%8rXkwiIVQ(-6tQ<$& zGFM}h;JCD-ygnH_&M}4fIYIDF5811;zxNucc$Fvz(Hrl<<{CLvAM2v#Opl^8{#*eKEBjURnl5X22 zrB_h^OY+$tWcS^3D*%##HK9B@-9kAq8wJ=60h@tlw1Ds5uhutHie|iYUSO z?vLaP>TYjApI$1l^m#-4V~gNj=L&2v*I?OrmH*Is&_)UI?t1C}ePWTjLK2|D!=9c_ z6yBSrI;NuxWNH!R`Y6uAva;?)+ZGESlT|nBbJx2_Bvj&A>7W8jfRYxAaWvG#CiLko za4u2`@t2L*N0|Elc^g)>-wKi1qKx_kNk%3|?WO!W`+#>|%J47=r#TG_f8=?}aUHE# zGG`|O1;%5R>36H2f8J3Pn^0OD^j%_GFj|mU;Fx?4bc>=yW1{sKvK`ZwM#w1X4Vs@)=MJ&KYcVLOXt=ubOlwOJSUh{^Au1fv{! z0-ES>v5V~M{-V%IbViELpxTS{AojSllg2EZ--NW?qnvm8ZjTAov)>sl)v&IxVYS_O zp)C}b49j@`-!)-(rJjwRsG;(a%bHIJJY?Az^0HoypmYQF)>oPugPEGyNWe%)5z7@a z9tlOEkpp-2XnvZgWcv8^irzgF1p@CjrfxESZ-ubh=fWm8X9J9|^HkOz`jCC|McTRz z^+Fb`k(eNPFe4c{XBYfWo@EKixdn+e6bc-dIhmr(Gq}VjyU&l;AKGNqcRhx}>xDkU zvefZBqWnXMF55-Bin}CV0p&#JV?+$ZCHr%Ne|j(g@3On7zSM&g$EUNQ>$UK{U*rhj zK*dkyN43zF`pb&KFFiL4r9Po9*k`kOd89)$M9ioYv~ffCqlQ2u#X%}&f-;InB~#i5 zkfVvq&WLkAstZg2MYry;z-O<{WFaLw@pNL++6zr=CwTi1o3LQ7Giej<_S;LHxv@W) zF+M%O0^%`iTKD?E!>WQuqMI>hyt1+JVhsz{hlb1VhEATUm)g8b%`$3 z++POe7|$hUdMVFEcLzX`8JwJRvX9gxSjk@p!1l?Tu}AU|5SD*`!Oq3;@_6Zc6v*=Et7QpS6Ft2(ve)1xqA`cug{&iJbxEm}KR?%`KMA6_&LN=|*)Rwn_q-D@!gGE;0|KQ1*nJQ%n2Bg*5 z!a>yA)<7Rl;cJr5ak%bXMl0C3@C(0iEXJrv8;2gln@xVzV2WZpoTAE}3Oto7u7~Fl z6ih-wp&Kl=VUbm-({xy)^=U+ijZrf=cacp_hq}#13piV(h}NgtbI_}2D{X6ry-psm zkH(;myraI?M7fP8o{suVz1ZXZ+U;CB7cZV5m&IszwX>Na8_g%EX1Asuji-^VwWYCW z5KFHbM-9u2hGN`?Z{g zGhHQ%lx?^U)AzTiaJ3+cs~GXeHKBvVTvxxsLKL%AUxm-sayU|JXxJAD>WNMNzt|Wm z2Vk{z-0Qtl`%NHwYt?~>h?FPa>r@oEWCqj6{EAJZ*6T4l4V<3PXYY~f=i}iBwq@gU z(wjvl(=|H2$1cf_*NKl+J)==hd72be0Hx+hqfHCn`|eB~>vKPQ`%|b=Yq#Eo>jGKB zx+jcym-2b|s>Q=q3h~h=`fBZl7Z>kiv_IypT&VwTP(Wh2aN2kpciMQ}Z}83`Shb%K zKhPLYtI8q<;cT8-xq+!*?p#DVM+-ckZ|Wid$;|j>o#MDj)e!b<9RuUGYhw)-jJk;6 z2@ANyyUT80Y+ZOp=^TVNoRPux+E~BIMv(}NkdhQHYr?p0^88SMpPYHF-k}a%)608M z$|5<*Z@WK0d?Lz&PDqHJ-oLv^9a^S#NDX3%RX==Sgk=+HI><##18dNJ4u<9p@$ew$ zd@pGGgh4d$Qp$&X8LgZk+Px(j7AnY;0GhY{6!$>7GtX34;kzLT_lWPm<7fbmlTNFd zDA-lS#|$bQMgbacvN~G01#-nbB|>Cpg7aZ}QNc`Bk#2?w9ey#31f-i&v)w2oxrsFu z>cO_3tJ*F+F4+Al7&b=?3aKK?X-rXnAE0DFm)4LW1E~fMaTyqI;X?n0)3e?DDL?M> zi%MgY#;eR{vFAYD83gSsrBkK)00h^XwFRSmi%E4V8M;W**3FDB2pju!_&&4Yv_z9j zBio=>Bi#lzQH#CxuU7~L(6fV84A{Djz_J6*;(^M+elb~V5@x^86zJGY#8>u(bH>h? zx<$uj5OcpYg7OPPkE4nj5dFrOXf=D(aQlWz$~h&Gevlr=n!Y&noPrO{|FoVEGy->( z#!+6jY8=-lQ7fPs07fbD!$`hp9zg{oz5>Iq>3IA zM}@xHeJhy(Xp)VT;VCLZJXTOWFTFV^yk;a%TSe7bu}AtAG#S=&XZ-U;AsY9z88Ybc{?w86{haTX`F&QeZztgio2$JL_Iu6L7 ztboaI-Nz`Wm&5`J%&1VCs*7uKUmR}{gQ$bGyB}wEit3;)%bR}FdY?8wwxWZ;(u|13 z7K>q3C@l_G8g;U2H($O2!>>L`UtsnBVtwf>2#W;43W4lb(LK@3MABN1-5BWju>pMB z9j_xDQrx?fYE~Wcx3V}1ZSk+l~3E@;|)>9d*k&UQL+_< z4lVY6v1q`jl(G{#1c2w) zzvq`Z&6Nz`Fg-RcJSxv$eHq*gO@8ajnAA+u%@Gj($&TybJb3+3$ z?OczU=Br@zk-&IT$7($H(#sa?Z){kjn;-!cl_vZV4StN|_TT}|$+W+3gynz34DS}E z;yWSFp7H-LS0!yX3wSsPNGw#{QMVh1DtSta_x`Ti^9RiGR(xj>mSC`E07m<$ zX$@td%1M{GOz3C7XtZbJT?G_-`Ov4J&N(CVTcx$z-PrsDvq+?U2jW$w6{IXM#EH!R zwXbWLpDib}o`)7jpe-THQm^8)4eLdXl1;iwAbawb&!4SJY{cp_l6uv*U91(!L%(03 zAz^Mb+r3u)00r--HItO<+RhUXDbQu9ydgvaOsp~o^@Z?Mz^uX+3QLEVb?Fity3YHU z=vNeil)Tm|RbhM^ofEdc$GkrxoF#ZY_lIBbX;yjOFqIu>7ODzQn)MU1KH3m0noF{g z#veDkLm%a1m%F0d(`jnFIr;Ax(M3aF!d`W`zE_Il#gCxUHm%o5cW(R!PUGM{%RLb`OhY z5zb^o)=~<~j1H*8EKg>gg8*EBrM&-Au>Z6jw!&GWAyee*+kf9t`0lHsTDE^F+LPv9 z78`IUkC0ucx**DTZvv;=u0DEb!T8owJD`HJXB^bBkg+t^=auz)HtF{}t&g$oyb-gQ z-SeFXB#}C(>h}S!_k;hmdTGm+HODC4_uj(P0QLgi!oTka_hNtJQ3~cC8@yf`Vx>70 z7@tEdT0Vn?`8@O)KQnD*&xN00RPutoFHDEXvt5u{fpp;`{DEac%xYI=dZ%`E%8|f_ zSadp-E>m3Ye}%N{sk(sXQgl$WpT7+QKIU03P>YM1m`G@ z8Zs!Xix*mSq9 zeS>jV%ZZ259XIGp%LxEO)l0o)zaqaWYW%urYu9jC`mO9U)VVAO7RBc(>qCj7j@Q=0 zM|lb3$cNhM+3KT^>7xSUc5D!xqnlD9$5ZIrTf*)L$t9%4`Mi~zCKTJ9iX$M#pfw}ia#eUC=`HoSfEiaaZ zEMt$MShL>iJECaQE{?7_ziFMT34^=wDvZ&cl?L)in_?5Bog4p+V8u{PnQxhLyZxZy zHQxT;&%FgI$>g%<2WcE$iU()#!JZ z&;*$XfN}ejV|y(893dx|N6Gv%=rKCvWJP|id&U*)MF*9+seyGAG__KV?@0P(3*YXNG5g=_g(P{vV+)tn6`Trb!}Z+C|29lRQDE-a6}OCIfJp z8N2z6!W9r(Zw=_V&Tdtd_2fB^4~MK=M%2FX8>oc=j56HC;AZ1iDV~az+Nhw~U)H~3 zO3W=?ZF3}!a^95Y=8#K1bs>5_wm-BHB+Zh+?scJ%WjEE6e(=QTzt^tE=tq{;H{vne zGPEnj08pg0!yldDbJ$8GLzZAMBoI90dHVBD>i%5*LGh>9UXA>XGe-y-m-r4}H}D?R zOkcnn`;k5wC&!_mCui{2#%hB45EwqN%M7D#=JjPCde$!yiyIB z;}@BY41mMo*(7>YRRA1_7L4rm8$A@gOQt)ibxG*8Ljf@KI^0tv4JguHt~p|4YjFgG zpg^>$hO>Y9GgzAiti<)hLxdJdt_uQ$Jx0`pR5A6FtrH>tq6?#QlH>3WQT^Zk}TS0i4mM7kDZ4=teB;1;l0!Mlr7yK%S; zs?ft!V13fjT)kF?j(S+;8Fy&Bh7et1wr5B^8eMp0$p~yvO2C>d2L929Femf(NKPBG z9L$xRdNNu0tK={@too|Y+oL-?e&taE=m{obo(pg(*~0h|KVVhHZSM#SQ4C=oz<*KcmY*1vF3!(~m5N&3qmdqOjNyO>2qVl%B&#j3foxY;cX2M7m>fIXkWdF8UW* zXE24Y*I5Z{x1r8!sZ4{~1#%RRu z$7%7&cZFNOG6KtD&fG{OZ11jEK@o5~Oldod+ez<(Te7}!DxFCg6}Xm7{B$EBH(sJz z_;h}`unbbJGWzF_|08mC_zaxi$oWMd)-Jpey&g&SM#!8NZOD-&(tnY4c(!_vq>P<_*V4a0 zOqY9i?=ydZ;O~Ua-anr?RQ~-@lnVYllzO=0qQu@j1vcnkYE~|M)Mn;)JL72$m-ta0 zyQV}nw)diYEl{UBn>U9<3B0fs%2H4#+AqNb;fsxGa&S)OPqCF6^>01G;5nqmH*(3W zumue8E@AhVu{1~(Jo`iaf%_(FMt7KQG!qY^A;@N2igbrA^@L6;FiSo%aRuq>-niQ- zfdG=A#j9GUu*Qv1fVdM z8>&tuGpJ@$bt3TS2bzLrHI^hd#vD~#?=lISGgtwVmRnSvUyOvP#WQr{xw0(IE$^R-2!GHx13M zj+b7y;aLmRMyxc z2=K}|LIDry*81ifv>_g=A|Bzu>q*w+VClT6zyJWLzVDgen6HAA z+7dAFjNZJO#>ukqm;?D!mY-0a1t$?DnZFlC>woS1i{f=G%79yys0RA+C>l{=pt5TSgpC`* z⁢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

    Il;lDvqQuZ)v zaF8Z@d%)y{g6;@#JunxMZv{UiS_;*JgyO|ATO+sDH}f8lk>^6eMi4ed+}IGRXm!%k zKRmR!B%Y!*zLu(d94{MQ0y@3_nE4{5lHJbV90m9mn*;;>wdco(j%((DbUBXn51d3@ z_IQ5C;L$Bftv0o2*B*^W6Dsz zd^s-jUv;CCy8fsFPyN`cn(tKIE(-E&FK0W)mM0T`{McUhdWGurVbrMMao!7BQiuX? z0nDx*I{{a!visaAaz@vz^@HFPCgR8ku ztZ9X#3EWcovBiay5@9?J4~OaD!|t0SoMlZXJeFP?12mVj#h1UY99}!Rs`*KP-6ks7=C;?Uh!INWIbUc5|TwNe`M$yXR)-3P~}z9$PNuMfRFjC`oe)$kXVPQQtd2O z$sj>aIiOD?OOH>PS@*oy3ID@&KnM)ecgX~3^Vs?$NZIeRqy0jYW=~HoC^2meN$&~0 z9&z$oNB=xtWG`nJ;VIJa({f;VsU2+^7bJRK1LYGIT%Gfydy*-k5u#n5wDKCf|1a+( zT8o9nqAVs;j-m)h>ezoQZG=JR_bgaTMwF~35DZWkBaagN{3X{%3UkUgz$FGE;=bNc zg37yR$e1HcNN!{}_FedPlwk+We2|_V0Aq=T-94#ye4O>^ml~2>h*lwV8Q$A%#jtrdU-q&@Kfm=ERQR`i1`9=ndEY{z{^TQ zNKo@MU7#;0IDotr{I!GL05Q5a!l z>z%y&XFA;xC35u-00_WC#WfW48fLY7pBb*vr7xyF802|;nhh-#~(g)U_1=zynqnF zMm9RoWk9WaVu|K!V0_fgqkpXgW|g1;A!E+J9f71T$0%KdA(c0X#rGjBg{ z{|LAT(BXs-mKKyXUYm&m8k}DBLUr0vEd#lQU+EIwYOZX)8 z6*&&4F|%~SNS$KrV8D!_V?EtOqjyaJB~8FH_zQ2 zLyB-HAl(tVW<%*CngRV)W({L_SU$N@Q}D7+Li9Jc06E(MXI#_06bAnD6uZpS_z}Yg z%mPDu@E}9}bV!jTNza9Zam&HaV2_oa5bUk29=&fgDzrrt3X^VcWW%kCL?lMUV)NPX zTYx`+Mxw`TVvpB=%`UP+pJ!av-W9xPHSa6-H)ZEg><#*W4zCt>uM64RON%(~XO5{@ zB@Ni|09cp#P-2mDF>soH)Ggq4ldU>^iqg+xvExJ&o_`ENbEXj&Trs8q#)I1-Mu3W zS?;j#s{=aWBxSxo3*o$*k|_VHOk^Mkx#@8?(WlFb&Q%=f^|VO}heANa&hL8CeBWOC z4hlBv5evHCs)y3;b|2A*z;bq^umV8k%Z z>!oLpc|ALf81r+j@*&tIga>D$*1a8g7z6UM-@7MCVwB#`Z$_*+Z-&L3fi)D!BrNuw z{y>jMWapOvT&u?WAIjIW8dfRXW;b;mY1c3nvYvu2M6blS@K;xkSc54Qk}u8% zbE|&yB-iI$lTZn(^UJsx`iQY9t}7^(dVT8JR5xA=bU%0#mYApj!4RIIlq2zS=v4%t z$s1#i&5J9%Ic*yu6Z=P&z{*W>?+y8&gLdch`kbOkJl_SxxD9P(Vt7_0L2^pq7S|XW z9nty2Fqpb*f7{wPe6*Elm43t*KDftnAl{CN!Me*x4qLr4_F8Gfl#5-QzB5cYLPx;+ zT@xBf`^fX1osbmIn+VTdTSRD=I}J> zNj)2LO`}zOiEo=JFnhh5+kTKC**(FaIU6z)P+pQo<~t;+QM#vcj5 z!R0lBm&y(HguJ1|%O^5tVFL`L*PYBO1_WLc z;_&N}Oz9o>y2Go1$KEU&j>QOzaLQAfHScGlb@0}jv-`CVygr+$ropxkWyhkN*wE^8 zHFCfo)tx&v&##!|K=))HRBd#~Mp(E?*+%jKpu)NPMtgdB@i}7%0=diGpQz0dVel4& zvCG$=iXy@&r%b6sp~*Gf>(dDf#Xc0de*_zQ7?LY?vf!u$(k8<@raBs;xYWibP0>2{iIxH4f_SJ9V(&2 zif|v_acse7o0jFgUkVBMeL_F0&7-dMyOKkX+@ixVR17&O+4Gd3q^czpRgTBB zoi6UPz$mLT;Yfg}x_8wHZ52~Q)M$ga5{u;xWLvDw0Tg@2XC83Z`0##A_h-^M^(v4< z3n^yap`jjZW~58a$Qm&mndYjj3oo&qh#e_O2V9hU5OVHnCXRvZiRMtWpel(!<5f`kN`*xo;B;WEPVgvQK9wiHto>3WfACyY-V#5101_fmKhzAt< zEDN(WPy{wCp6BY=dr#3rF+3>F*6Dh$(@Ok~VMM$9sJo!--9QEf@XieTC{3O2f$BWk zPePWB0wgMy$hBA#4nsBUd#59GVNWM^&zKD1U0PrbUL(Lk zHyqYkXMSM9ts)8{n_pUw5+VnhO0GAft(f*3LE~x6SuE~2Leh#vOyE=GFO4)-)SoxB zzkj7W^hv_zqVq_V6<=tyB25iX{9W6`?^_n*Tyzlj|LJWqf2d_rFY;(o>tB7~bbnd5 znw7PjB$<^qygVG<^9HMtx}SC2uDS`>D6`P8yT(sZ7SrsCZut4@bi!o(1SqnX4G(Df z2~?_I?z~wOf>kI#sm^bftlD-{-I6#gZeHL>OV{evUnEfh>ME^)eI7Fzlus9_Zl^8B zwM%qcqr62$4<}8hQ9d|cTQD~RTXg6|G(ZvSsEz(^d|=?2Q>w27X8C~+Up#}>%~rG= z*wyg!Rqw&DIeQ+7*dTAMDD&Z;NVInsX!z>qcGk?=iJ6lv)W$wvzUTPHt;_3Cl2CVp zDf##;jE*P;$N4;5zm}rpk|ZXnf69el+{e;g=!FxI4zT}e8T6A7HnSZ#8O*PT9;f8; z?~X8c(U0CZ9Z#88M}&}s{AKz55l;Z2&JT70dG6SJMcDETv9jhMZVc^fKCCTQ;+ll@ zBEH+WDKTCzvi~2{O@h*FPIo>F^QcRDGU&uxP46{|qyhHq30ApRkoBK})T7!*=TkD@ z`g+)iB#2cA!-C@{VtxFxP`=VXTj1j=^|*43F87|AEj57AZPjE+r^y^wfXFJ(yPeld5nwtVnURlu#;Uk(ZMtsP8KGcs(4<|cp7?c-Y`^Vn(yUYH~&w6R6)x>gxj8gWmK zPtl5U7kh$_MO7@L|4RBIDqJvhi|IZuG=_QR?H;fYv(Jk1bE^QR^1FH}PW&hLBP=3k zv_by>dM?{ohNh=kVqhhSit&Qa(S@?VdL;yT8YG&6EWd;QK>##|r~0gPYRGLoU(t?D ziGQ7IMDrTSpGaG8?Oz|mAdTZ*{d+sGuxH3aP_m_5#Ad}Moy6d^z~>VNp#meII$QiO zlO(B}R7w6^!o+SWVZesogV@?OqB@w&W<}ho&6JuSo8VJl4(LVDF+H2E`KeAlFTH|h{O8TX8XLX|d3utj1b|esY?F7s zf&`!@&#FbSk1CxSw>&fY13a&sb8&+o-&a9fWBl;9>_pxQhAY%ZB{6AT+~e2ADU9XB#!T=ZF)CY;v^5d;>BWgVahwd)uK(j` z#yKM{`Ax=O$z$`Gr?k*QOWEQu**5vhg>o1arHD8PgEHto6@>dytL7JhX$!&~DUuQf zz3JeACPDwPu5e>YBh0D*7d1BCQ_Ai`%g=B7=-}OaEB<;m=-Y!={Zo?2!_X{ZSD<>;@ZxOe{n7{vhIk->d$ zGSTF-Pyqe1#?HgkudyQf8U~X#P;Y=F;rVpIABWm!F~s!;_cd3>u#Yx=pi}umFsOS$|;-Dwp=n6*<11 z|KWj=7cLxct&oA(YpJnWM5&aE?Qr5kec3(~6GX+XMNl{TB&`vb6JN4=*Q-kp@gLOI zdJ?ypqm4~TW@aXj!{JJ^M;%%l3& zy%|&7E(#HU?8#ys@Nh6FYJ2}A+UTS6S@*Hrf1Jz=2-jM@c8qE@#>K?Qq_SN16oJpK zghA+5TMib(Xt|<(lyeF(>F`(ql7+FsE1Zl}!rF2halrrLyz;*j5H z8E0~om2*P>(6$B+IQ4?x9)Id$kNDR~jY=81$vD?d6p$(N@T7hJ78mp11a}Q?%1225!e%~;)we}}83$xQ627&+_zTJ(DyNr-|HjbG3}DHCek8#C&k>;G{{1!hzIQ;>fjjV63clhn9zz1#`a z7$l+qA%5G|TQMShVQpn|)cbpOz-f@<;ANAvasxHPwsfU!3^5@29epI;S~>MdB{w^>M) zG#%I_8-ygNVc|(HuH-Fv+%+B`m-aU<33U|FTYqTx2e&kM%I2Os5qj&Re^6)B6qkeH z{&wC_$!N*H<5jihdN}57#t;M%vCRENN+n2zfV*Vs-^4CZ?f%lDybGpD$lrz=I6VWQ ze;PK`>=d*$5dAlg*aP&Zzql*5|JU8vUuqq=0DtfNF$8{MK-`_fe2${KhI1a2k#SNKprz-u_ z9@yhrk>q)9d1Lu%d2>$&0ntnIZ)2?=KSrRE3bfdrz8p8*I%zoa#vlG({p9G>nbkK| z3+8-860P9$2`q7>9jAYeOAS-52BV@Xs=`xhES7j{H(bFUj#kTZsgtCSi$)AwM`xKD z_fHZ(uhiMR?s|Rv-ia9`ijkPp0 z<8nZtsa-!qzR;oQLEV36V>|Jl%HP%9R5qufe&gwVuqHb*tH39|)#cTd1zs-hD(`cK z7D;Yqey@zijLcdSO9kuw1BWh$9+vIyE27qRNV)tb`&d>VDtJEUjhiq`jf}}jnWxWw z2}~Dad>PP*XjsU;&SxDVJgIOy@zyg+>2qJfnlSM2B!l-QgSQg~Wuq$*tZYq7izwPD z*qE4WHb<1T#n+*}d{tA^R9)j@=Pzn92s>TB3~8RN4d0lotgnaG(Ruw7IezEg?c13d zH|yvlABsz2=fT{Mgm<5koY+VE9=1?g6VXpy4W>WFlwh)wq?g(Vs&n)8M^%qwNMBU+ zuJsiibutZ=*%GV~sr=MrwD~2b@q0pyx{V;nK6poAGrFUN;K0k@1WI=iP-%p zc_LJ7(o2NUr@)peotKvP{=I+*+0k+sGLhb#o$}Ykin2&15J9PDZRRWu7l96$Q{U%M zFnOAg*^;Lu%7|GR$wK_%yVmlM~Yt+lq3s;9zJ-&iiF^}!}oQ5zWH*LH{$cdo(Sh_`o!qy%U!UdaMYG1&+In+oFPK2+6Oqi z=bfLdm33ZdjYoNF53|v7pIxM+TW_CFB}Bz*oE%N;ckqAHmYE<$$eg468eXaJ0+Mmq zlng(usKF?4R=-D@GSY?7@ZQ2nOB%xJ^Wv_b=XJHTy_Op6 z58Ud-$u~1~xYjcc z6WM9U04rJzsWjg)I@3|TXsIX()W!fBaLbtOqv% z6-ph)vW4}3sdiBliQ>E(mjjjL(=%kf?KlJjZ`l#tr>!h0~NaT zfnBL95)q#2qOfsi(`XRvmMGhHhB)3w4#n@z>v?R)YmrxD>o@n($OFz1wP&AvJUgjP zl&He93~iD^+%NE;1T=s@=0yB06FqPm$q{n#GkfhX1TfyzxIj>bDn$4k~wMl*k?R9Pz&)=w<&n2~5WveK{Wr877x`L6n#i65i9 z9C`O$cqhylw9>4$aE}? zi{$R$Fp_VcwMnx4yeDi&h!_H8P=Y;Iy#oon;U_Wv4i^wW0s!=p+&I|jy^?f(CjjP5 zIULTqxw-@fNI>A?&as=#dfu%Ef;YplaGY-%c7;W{aN_UkXs|fzsyz-h);d|hJMq*X zQZjoo3-XI!dYC*rhNG-nu5Xgq&G`6Q(ra_Ga~m4minW?fYUXr|9KSxb6yzX7y?{Fh zOlC_{n#)i5T{My;-j9^3rk{{-i4ucU?bS?mOUv6=h^%iBn<{?4L(jrwoptZ#b%o`B z>Ox1j{O~FCB7X%*`BD1}K_bbjPymJ52l|%+ z{y>XSXKo%+#>KV~hJEf(c<$OPx|)Dy*q03H_*D1BZGZt=ky#emuXu#oiS`_2bQPOD ztd~YnaOV5+i2|_@DpKETdDBGI8Q>EakKRNe6gPsl4?29$sz?sk$6O^BF;l-lulY4| z;#bqE`%}m8Jr*Q$XgLXSkQ;>b0J#D%XjOnX*=AdB)SOajmi;lXhX9roE}UEQJU}mI z%UaF{WB&*{lwYi{dk_Hh^~MUM;Y>wqE3oO%n!qW=A?9uvn877pUL81;-)D}Zy5fxy zSZK}jmSOXDXQ+_wc!-gc$NFY{zJEeW{no61hnpm5D+rJn9SyfjIz>5Gs-@w$mH#z| zUDKNeP5+>K?db>dC1NK-5Jp*oGpGv$FjyS>{200)6{)YkiQxd}3tRO?Z3OcptG7gQ8O6+^vy}Ss~55CCYdPfP9 zh4t^zn zpXWj`z#mv^MxYTAkvv&dmW~vGKm@j1sld5MpuPXIhd#czVD=?;ZZmJFt{zTzja)Vz zv!fHfCC{Z0!8YMR$Z78$*^p_dE1?TWZ&NR z?{J9(48Q=t=FAGYxorf~q!&G3(ah9b3p`9jsC7)PJ-^)QV=5BG0qia> z6tZHEhf-S}v7HDCBG!x)r5s1Tu2vK z2CRyeR-xl}{8l=7ASGIFM~PZaf$-2LU^q3q=w%zN65X zh^?QTs=?BuOOTQfyluhhcEqj5($wGgJDl4*B?>&~{ppaxWh?tQlw{hsZdI;@ciWPk zw~mOX$0rAnvijQv5r2)JFw%AzCcl;F{XcUz2oYppq&imDdTqhMxG`(7g#9IqnVp{Y zt^{mp^RRCO{=Q~~k6O+;-w(2fonTNa78hAPfejB5LsjR-gK%JBJ5MWxiruuRRT(d! zqo-IES?$iKGe0KU=%FGmx2mgg#NP=&i@%H!6n-ywsu~jr6vKF+H?1CJx;XikR8Y86 zHTL<{;C^@c9`WuZISPQTZ4eNW%{dtJ9MRH*Qk6AG(()SG+Pv9?_bHTjl-S9sOTq^E zJr1NlJO~YNl8Qzy%-0eItd#Xr&a%RwhT7b}y)70vR`t6k>f*Gq`?gKqVl}2GJiKn?^}~Q) zNmQs9%00@L43jDv!v(wT^)*bb5?SLiF0n6lw*onjZLve!JE`=gCV4V?AC{ck{Odv4 z4BK0`2bU1LTeultH!_5O$$L;BW7`n}@O!Y_IGPd)oWz#sEsT@q{R{E-1ztfct@)ux z(=3W+0d_YC9&te=c};Bd8@~N8ASLpX87XD4k06GUNGPT)FM5F@rkPtao3qU38q^w4tV%kT;+^&JW132Y=vJ+>?-D5%p924mqN;DVv*mjGX^HP znTT86DGr)D8fWk+pcDdOKf0J1ki4L~+( zu(WAC!s}^D=hgM4gqSCsg#X7(R*{bLek|YAYBhcpg?fhK^IE*lJy;L;`zH#ajmQ#V zv?!Lr(oM=A!_5POCn!v4Gv!GA2!6|hD}3xDVj`+tMm08*3#>|)!<%6m!>+PGbdXXI zP1*_#TjEe7EHdd-)>@=cSD$PGOLWBI2~C=wYpHqdkITi{!*duZ)lknr9jVWO%o!{R z6cn;GlxXi@2pJjvEN@brzw0`Quk-2ZtEY=({TGiFSfQ;aj@RP)G~s)L~q^iK)F zQ-fc2h1n01Ki@@6(#-`iV=~ome6u*1jIoK%eWdcw;9F;FZT;~acSkJLKLiz0tD@a% zdOZKYht%e^QN3`9ile8KLjg~V8{8$JfKA9@mBylfl8&x_h>?gET>dzBkRn*OEip*h zC)-@!not>!g()jPTuo4PdHuU~B&jI@R$Qbgxo1cv*!5~q;AJ~@?meYR*6*bRR5d)e zE5gFiP?#?zuFuM_vzAF~5DWkP;0EnTFn?b#Ud&$h=l&rb{2X zkJr&Bl2jJs0Qo0^Pm0rZIbgH!-Q$RvenQD`s>l?p*GAx&B7E(KSn!{_!6ec2e4ITLnWsUZj(3b$l{xS9s|q2l9DtA6(m7t~OMT?mnX8YMVSE^~e@}bkUv*S;N-+ zX(k4$RxnafRWuqQ<+C-9`Tn$pPp>*xqu(BdPhZ{%!6eEy}>bmm|$OMr|xI7sf%70D=~M4j`;@*TI`Zj;GZ8x#+~z?7fi zLJ#5Y(>2Rj%;17oL(C;Ydv6|~N@Zc1EV=?SkLS+--?y6w!xF3HPlmH6G^v)!Omv4? zGIR%<2kG`3Ud?+SesWY(M<;}*ust)y*WTdi-(t$08d61du>wF}gcitsdJQ9bl5_Sq zR5+8Pz+N04kiNf^de==PxrD^CR@?Xj+eY_73vChU4F!UH7taJ!hjl6;DS`vfgAWhg zBj7m_7u*><3ip2A)R`TIQe2Th7sYIoN6ml2B-}}HOP%~0pIzAbUdPePt7QMP)cn!Y z(4rFUPP5q1;0GK)G%{_>@#htyx!OZElSL6ts!UsgmF2+%6+kH=JToudS6lr+-e=)k zu(ej4?7Mq!*eN8eBq`G~tIF;y2N7A#%Iv$G1^y2j7IY>kK)@z8ID z{I)EL2^;pZwC}M4dXbxBqW~wyXKWNXg&TvOBH}_aiG~U#2iAkb4aN8S>l00oP~VkW zV@Z6eWxQyOU0*Y9{l@KZ7!1GJD#-J|EMPj2MQ9u?USc^WB-(K%E3kIOPw-l&PcZOC z^`*u2Z(9svl3Oe~Ca^iw=Kn0@VM0wp5|V5Ci0T0sX282tsqaJ?nH^0OQ{`)EM$pgg z@^WLzzj=#~$~e8jP7ah*(-I2C)pFoZP<_BAs_r7bZS0!#F79D9Yfps5rmZtP#ek|D zvU_%z972JdvLXKfY3`A8(xs-(<1;u^nsFxxO83XfkdYBva z8BM%=k3>}{-bFfDzoqM5zeIxgCmnV*la@pC>WpcD^VcZ}^>mLyNd4c-q*_%9DcwG)lZ2T3rzO?n zRNvOVOS0Hz?i+&e0E{^wh;+(jtx+fuq?(Wjl78P&sd&FwaD|cH^4&|bOes@_zu-aL zBk&GHIlariDschLCNdl8T@eSG)Xo}aNhh-_#8pxxShCOy*e-pS1QF|KsVj+YKcc?Q z9kdvJs>NAu5^#O~*y1@9&c7)25@xMT0ld$4{<*Ptcd*vLIdgbx+G^Qad$-oG3v{tw z-BvezmB^`d>&eed+`#k)-L>WDIOS${5GU%>{W2N*o*rV#DcSq*B_mUR5m{Mn#1-o+ z=>Cqa;^F#xtiqLHyLUmYVLNxWjD}O(PDTS&XYyV0!D7YZ``EVK0we7Dhs2=P*lq`FR!{6GgZEDQ|bWy+7GMGu}Vb+MDFF zb(7N6YTx`0xvf4@}3V9uu5AtJgwb)M=1@pvDvzw-&o#ui!3b>k{C8WgnSG;CSzrldX zLl(PDdZX9-Nq`Lp-GYcc^y#ne34-v?wJ9!=7{k_K<2p3T(U7AG%1tVcdi&k-rDeg8F8WSt8ujMEUQO)m7Nn)6g@O@84p*R=4bnut-|D%Q^o+!@KW+u-g zpEhHbrSphd^7JS`G;BKO_V{VRnI9F%6W(5$-CT$WtxV&;okM;3D}!<%IGJXqRCG7x z)l@dr>gds)3>66ZYMXOZx&Ey+`vXSLIHDSPjqT#p`KmTl7zdCaAVW=KG(7`g;Bhd-aSbA1Dt>%burhXHeP7<;7tD0Gu|kmwR`|lb=yO>&AEFZ z!;rhZhy)mPa?wWNLOZzZ+0R`q zAR=YgPykDE!?N{Pfv#~_7%Mx|mdWnVl9Or`*87wP+JlhgPD;2wPOXo+A)_05|8kkrgGt(XM+M_=N`dfoGh#?u z-O&heYA0fEj8Y%#Y4eT^kH%(S3{QL^OTf>nOSC@9_5 z#vb9>X?h;W>2UO+OPujFe2!H6Jb^nWX;Js6C2zNVYdV}fAh_-Rmx^5Nsk-!Wt_DM zkJ6@QvsSG|ZfkcF=@#P<#zg}WW8CK1lSrD_KjXnG3Pf_65<9!RQrM?@5B1)suhdd; zWgj$9FS&0Fer)?ush}`=13X~XtJ{Kn|C%vEqh-# zi&|a?@@8Qph>S|#vuWT1f0+ud7ZmLeFtgut9`mg1;okSr6W%>k#(Ka-uocuambOIg zHvZ=29q5)(UmLz`tB%1=7GV{dgGhMgwHai1t-Ct>`Q4w138oWu$#%t4$cR%)yyo!Q zw2KWI?S_!=OA-!;tB1BA46OpQRRI%MhGz^TMgiZ3%Sz+K0&a^4EDgL-sh;(*`2A?VVh*|>4=i+yBq6ca4%uhhy9Tr4-O&Nk2 zBCYr{pgYRv|B+{h4PGC5n7pn>omw${+;*E*9bRB?>q(<-^{yW+<~YOg*c+YFJm+-Q zZW8pvqedUsUOn}co-rydyK*Njc7I8zc-#-^_>ffaOuw0mzPeXVCrb>0BJQz1>@8fdaCNanTje7qs{e7V#~wjC^hKjCbgv(?tFmk&4DQIlJu$Cl^&b@|MwLNMARjOV=@{V+t?mplL} zrP|lg!Z9dPCf)-+fXk8=|8e_5A54~Le`Xk-ikf34*30pk)iqokJFQ#(1`+}DPn-ah zPzJi(2f4H0)=_niC-O}0dWg~FCfY@UME#w1iL4U!>W;i`l=X#R`bPeHw)|4@@Dw5{ zY(U&gKE0uV$QH}*U;zGweVne;@WacJg12azi=P;R9@h`Y_Z}!3OPztLv&ubcOybJ< zyV)P|{R<^22Q(}X#V-@v7J`iC%s$)QGp00&Wnl_&p=KXtON!K;JW~{XSo0bx{FL!f z!z{E?Sq1$NYtf6PJ|YVGNnAGdb*3kY+j5dElR-HtBe;3R)2S@~MnK25hNO=NbEcFj za{~z1c|^xKYnXZ%v!{7K%ykbVbUxAS5xEd@AGlrJ04ce-BNx4p;FDI7XKYpwtmi_ z3zkl7rNzM5#&(f=2rFAw$;J@Gb*=;WtNH@5?la{r{fh>bgmsiK$74?8A{~|%s!D%R zau5s8kB_#8Cwc4L7v?XbB=W#-3iKe+-+KUJ9Q=gyl|#HdjxY9Zmp5A9)~_iCz^Iz@ z=o{7R@y6qlFQ!;xrm-6@a3ls6atM-LLkxMzB+?cNKGnwk`RC$c%TRRIDi}PhU z#Ps*$lf{94ix*T(bTO$VnRo9+(Y3cvC)$}XA{EEubI2%P9GOSXDc8J*^fZqA@|nv+ zwwfUrhb@UcEejAZZP1F5X{f((MtUw)V1K;Iv|=&x@(UjWleW-E%Rqe_OEOe7XG5^d zEECgeRquPv$rsUpqOOGI;n0yVz`5l31Q#ja=~0`eI9!aFECpdNKdbLM4l{?vMNx*M zHY;@wwYDCF$PCh%Ph@6JZ4zD+#VWBg$*`<0iT%wix_f&FQtVsp6dWs#y>+awTk*CX z`Gb&+Nig=ilY^7afnbi$Z*+9`P7fKHPD2o}xN!(1*BoMNl&;1I7S@fhdA1Kc8 zl$Gm;HIy4$i+T4wp#<|VK~gIu2#c+!eZIiViGQVnTqJO~?@*K$UUOVJl)J9*Uy<&AutIUQ7&zny`(?z9C3p7ev$=WOjnVsj2 zK1sI*tPKMMzRN0>eR*w)eEQ)}^sV8P0<9nCgTJa;J64<4Xr8+=&v|6rt#kzv7fRLgomCf0Ign~y#T z41p>k!F&CKMBQKMME+3_a-zDgiWpf@IJR>Wdi+95gC%ac8WW=l3d+V@2Y+wDm<6o- zw~8dxN#q9JB%tJw!r6M1=JGOWfe&dPJ6!j6(OHluH5ubWpgn5%JZ65MI#)ezJoXoZ z`{35DXCX;9952jU$s2F+b43^zExd!?!@8aT!0oaqa=?*5s{ve`tg{_~ecbBztC|e2 z8xo-gDIxGsj~Sj9>vDfisVFkS#=a?02~c&=<7|6)xEWS%sFR+#6rLBii#dLxLk;h& zme9bGV1oE&dJ!bniKme>)=EvcMV&I{NZbfbIVK7^DbgRv`Shnnt=KRnpqy3vc%z8N zVwMQMzfUSq<@m!0AVz843eH zXvlEXT3R10;IY8R@Oxt(`uXsK+n|w5-!noXd^ha8jRBQpeEFLqbwg{c&rHB|g|hlW zIgpuV=t8hV@I*fETa*Dsj;g}J7w!ml6kulID@RB`!_+c`UmOc z_3X%i(bs!6(Om@u$eFJpaU~brjxMI{^5L@gMQAXlWSC|yEEJ`bQSBdeFj3Ynh8+UL z_wB0}C4HyZs&^7G^sOjxNHTgy$Z6}lNX-w)ldm^5V|rUQQ&++2lL^YnE=bDy?>`f2 zA%UhW0KahjLFwfMRv{= zv50@=r>LyYKKV89(1u%bl)x4FiDa5hi`;&to=Z=A>ieN1apWS{aSCvFA zGnFJu$L7pL!FiWz?SMI)5B)t*#)Q+7s1%S4)9-vlnx zjunLTU1Kp-*^fqw0*0xT6BGaSd6h>R)+V(swM$V0j*mOX^6Km5x7VorkQ|wxgm^?# z=^hk>WWf4tOlzffU1R@C`ZZ*Vy?8>e{V-nYb<Ynk0Z$!nP^plyfqm`|L$mX1q@ z-jfs}$}tm7o7$?_8EZ^c>=8Pr1v0aW3$5ai71#mSbe-8EX%lw9@=X&gfE4){8=8i^!Ccg9(s8DU9t~#Mi z4AXZuS6a)lCp@&?;;tPG`oz8;!a@?`@3?(?Q7)5)%pTF)^ekWwrUcewF z=aW5SeV=MOS5_x;DS6AZk zU&O}be=%t%cWHmnR1{FbO6aj+OssbDjyjYaueV&cX~f53G{xmGbFpdl=GBE_z;epm z?;B=Hg0@M%u;FGtV?m}5AGKKYveQu6BU*Dz7-;)u;jnynI_W;EMElnbQZ$L%lB4s^ zNQEHw?yx30?QgtqY3WyM@t0$5P-iAKfJ0VF~Y- zUU-VDWLi_-)kjxSQd*t(4vIpm`x3j);=uxe=NNdM zf9U46q&u|Ud%jRk4VE4q+qW&Maitkg+lImHy_!&xoxyb)YSuSb61b~ncjIg2jRAF0G?@pD zo4grDiL;(xKgWV?)FtsMUdRqvCqXnuH6$5gKc9ltR8>!wR7w)<?-)=u zobg%*oiPG6ezE3Q^XWnBt|;=30eT;-XE`7$_WV$1{loNwL7!2#CkmwM0$K^|ISERP zR_3tOP>K2-s37saI|8>zrhM7LSy}8Tdcj3XyZl^5?RhpPpTsg=6|Tl*K>KKIg(CGf zrjE&Kd~hn0p9sr%9p>@jr<9m*SeOGyoBq(VqYtT-h4B*uRYy7M$6a50b=Wae8lb2Y zVZGEh@?c1SB|P>@x%h&NgGEpQ_2})H5$z@G42c6t4w`)OdjN zLw>+H)=FZ9s7-?!9mv7_=;|zAqKUZ&Qo=_ImEICPEzT?5BmNxZn5jpB)GEAj8Gb9y z$k0)#*=Xce7~1A3v$yxs%UIzr;tx7Z9%+TTDO6&C|GsB5EjeQ4ukV=#Rmk$=LnIfp zGK@5zf$VOt7Voz4?1@nA#E+`|7pD~pNu}*qH-u>w!8@zGDgn9o@n66&27Xv^-+ZRG zm>>piaoQ=Qet6%1PN$B~KxXe#1YODO%!h$tme06IBV9Z}sU@3KFS;(RM}`kZ*?g2e zxKEJ|#$`W1hsFTS3t7&+`hs&z1cHgKUpisilmS%}SFzZJAL7rdi~f}`Z z&;+y6l&6odKSAX?A_4&;*DiO03z)ulTZcDSiQrlLbmdPa@8?x_rU>Vr_IJh;I7_L? zvI-otc=tE6np`)IjI2}aANo;*$aPR({Z>k^?XI2+t_6Ev zAcY188UA5NDeiL$zzBO1LMcl<_^+@oj|b{)3-z{5K%V@Z&_u$51JZmkSP~`pU@?~F z*qaO)9Fj@3E=T=&7fAMGFf@CdEP3%(|7qi(?$GJ^fXiNBKQ}IioS*hqNZ*!5?j$So zu3OmRA$iQ}M!oH!u89t3_qI(aNBvZgh|3mp()I8ry~b>e_ch?H(Cz&gnalJm*)_Y@ zoumnO`a)-qbPt4t*Xqh2j{+uy0}}b&&i!76Oo6r8oI>lTx6e1(oi2Ly5aB-8p`9{I zc~|Ns#oDypo0gdSf+6i+&IdyF%qiHJKg`eksIWaBd1glO!jY<{+c9mzj`!Ck)XX8x z7#XTIDRKxk7elsK6yTeDkdo0hf8nCv;8B(e6BhV0l?Rnj@OwEfMUDJ-O8=&fH5pF(P5xu`H`+I!_d6#do1+gXxoqGczYqv>IwWK9z0e(4T>zws5eqrt~Y zmvlz$)3_>R!+?^yNC~b!9&6d1D0tHAsd|;;t82L;J ziT5y$uOKR&{1fqjBv#FQ_K9?YW5|SwMAiZRO+w8@)%D0aNd%!&*YSiKVvn>sN#?-W z#dO^isyWQN5cr=TQ{wDC%G%48yj5oWC^6I{f&gA1<>UW)wqCM0s7)I#SD8I}=$F26 zX_U(gOlDKsuS6S@b=+RVupuZL*{}u9Y-2N)I))o|x7JNxjiQPG!Kk6nspqO&M6UV6 z)$u8AZ*!VVdT;WD^7#1BUHcjTIO&EA96$_%!M@94&VlXzx? z`$L!Q#@H&AjCD0X@PCQ)v-H@2ULMl=^$|7}6m7E1<)!K(&yWiZ9i7jS5wG@Jn>yz! zuL9wKi$L*=idv@#F4$`P=k)R;Y7x%vp7n&%)hd6&ePjtvpbGD3bwSpOE%B5q`ChkW zP39jWO@Xu+(0v!2I$|m@|Am4$Wa-ohjgXDat=j=@bFwkRN&eJdKE5*f69jKgw^W-j zEM6!tWXQ{HLBu*iI^z-5rY~MQ8({%3PpT>@5gOu?)!oULAtyKN?{^CU#Gw49oqhqoYW! zsoW&T<{8!6hXZnZFTW=GpB_pd@@v^>NzT1c%22j;FywdU{6B=SkIw=jQ^ltoTJd%b ze$K@|zexE83+`6--I4e#Wo~!zQ2Jf{S;aGkEL5j0jstAMRF_ zQTtBWxhPr5w`42I@l;*$m>#;b0ztq?sO66+_=8=YaNMX~3HGG}STlQ;XPdU#ee=r8 z^Bho(Wn})ZD1S0QiF{ze^mbETE{UT-Hr3karY5rq788%bCH<)b-S@Y}xsrH0VJrwQ z(VIHW;WNl-@z`xR?Ri|pdB;?0ETbh_=*9Sas~PUCrr4BZwZzy8vnnjoFW0@hb#&kP zxa8?{*{gyY@q@ z$--@wuM>=Z6qJ8hDrGbR3DCJI^ACvvK=+wpZ}8td6XyC2|1`ujo_m|B!U?@7@$rU; z&r1Kp>S4dkp`lP7$gsgZW< zYK3~)GJfoBsD%o0f;hyn!8j*N@X>Qi6!G_3-*<6HG=F1xXB^76gxK6kMPtTl=P~68 zli{2R6GW!BKBl0e)ZK=XcPBky>4RC(v;xfwy0|{_8pdz?Yev# zkDtc;yuU!DO9~#+7YgTV(BWJmc-W7Juo=9b@WxecQarCNO^++9FDJK8RB=O8zR#(vcFV0@@I~;T zWPXKBp*XTMtJg$v2)ay~Nt_xI>D2*h{@05jEIFN)`h`2LxB{8)i%dD>%K5StX9>EV z8T{ANQ_!<|U;k`(Hj>T)FxUt*?|c>oonj@pImnd>0af;dzWg|uDsbTC8FFGmt?iO_} z&&N@=pU59%dq91sz>rs2 zi3R0Z!EQP1n{l=#M2^}hc}ObZAYmcjuW9fj#nWH$Zn#oiz*B(bSHF5T>jfI{Dp_cO zXpgkhilEWRb{OwxTe1L2C9AT<6)k1devxGR)dN)R-x54m7*Rd% zZ4NKGmUVuM9hXd&Mn&O+22e)mS>+^uHc0WgZm4+m>lkBT3B}bl1|;x5CHsMM6i8vB zhN!kX2siu1A!<_4NaHagWMDqrO>oWDg{t)>))N907EbH*WzH-gd|&lw%S=mStLldV@EiS zc7D@6^G|nm+-q_GkrR<9#GlCeGXzZ=NOW);WU;4szr(b9#PEnwBN< z1c|>>sDt4e21OuR{892qhX=2udXkg%(;k%4YUvcn4AhY`0?7~3;vQAIiO_tKRX1A+3NZ92v311h<`vI@g zLobmf30`ccM96Cd)LDkWh={okGz=0EZDUOde_cq5t;OQkmNeBnTr zwv}JR7^2b9L6(+=AdjwC5T8*#8ksWb!TBa;G^iwg@+pbDn|E&C3i3!T!&zJq3v$?d zA%+$s zeJrf(93q&I?;WQ54qx8~Eo7V4akUh_n0o#lYsVTZIRn3;O8pr1AcYXSzQRgqp(}&- zos8tw!ayHr_~oe}C`%guMGyPSdZjf5xLJK2EjP}Yk2=jK zK7FZncFbp%fz=*ETnO1yl5FQ0!*P#|w>&rVoBSRZ0|lj;zp}pGeH|<+=tWK0&2U>O z7m!!+c?quP29^h87iYJvuYt1K^>rrBXBLr*ShmW4tc#niK>@u%Z4;}PA_Z&@4zX1t zHQoUNYhbP%KKxB*-FX6O`c9ik0Wy3PLBGg!id5{l;F}%S^EwmhxGo8N@;#GZ1!q%Y7`egWXr35@@%87@mFyV zaP|2&Rqw6e1I#L0-H~dTxRADvYb(~T7H=_sX0us`Sv@QR1VcW!u{rqqF`H#u{ztFhkg$q()P~Dms4h3W1*WEU`vObqN zJX9s=fpL@ooR9PWSc8^5lwGH0SCEu+P zD35brIXu_rANr2lfUnu{I@!yfMCva)drg=>PnCY`ZH+wzSvzmX$_iK`VM$as?Y9U# zeca!1o;R>GxE@TlOtX!;Vx*aM&xdu?rYIa4dND0ULoued%MeL8^d(9_hP7?&Td+!E zL<;Vb=}eeUcRB$W%=an2dj?0{MOxjc{P?9oOK&DTG*KHR{VtQF!7AK-6Z{&yNK~L|0~F9>;mxo?oa!$K~sr7Z?Y9 z6^YIDS!TXKs+>FNTr`n{;CoR}SFXO`=~)?qigq5*NC~(Uc6be_E=hIDCx6u0&7nxL z@qaxuFfX`>p9;?k$&bxtLJ|`#Rdl2zavZ=S3H7r<>^`BU_rPgtJ>)~cLlXcYx$_`n z^corNrLfc&zX>9HZC}5Ai!$UuTtG1lC(|MU4UrK`n}t*Oz%Y9!LSKr^Bb%~tba~=h2#~JAG9G>6T{HbGbC)aeWy3 z7EG2l7EN2_3WF@iXzWAqAhig!3G^{0!1N1fe*Ou65@UdlD0yN3dZ#{DzO1FY96X%b zhLK={Vd!>?xUey%NyA>>#qZdqYx)1cs2koJn9l)QR-TJtphuBS4-G?{|e>Ov=TA zzhB&%rxCnY1*~D4m)DOp(sh;_zyGe*d$QMmxiGe#Rh?J6A0)We=RGW~aXUeinfy%A zX=U@c4$EXcGk>8I)T=^RQ5i8~V%<&`97)(G`mUm46+3mk8{(s?lZ81K$(h9>4(r|V z1hBy4S_jyI)HgD#T5u&GGP;hwS>dLBcc;964h0N;yN3ahWw(AUqVkUsD>zdTVf-EZ zi{FUurAV=$IEAFl--~K!hIBS&TWS%00U?ACY=&4`x}|;m=1yH^W&HS$OCHRJB09eP zg9^{Qem_YT-da5Azfw1~SQM>U@-G5mZRNVM>Z+~!ps^WpWWD|GA6qf8n`go5!YP!9 zKxnVL4@HFIp7aixNO}bEGTCktB&jsoASvE1|65vqm|eq}9GKr5&ejvwUm}#)gORO% zxGgUvA>{83S%SbzYD6jtnDv-{S2xg(eSq>z`7 zL;c=8E{J&uP!;X38~TGhE^_u8#AJQ=}5=zcg^k>i=}vzy0@ZY!wJz@58;t+kI1v6I~ikUWHhQSkBz46KLuHNYFCx zht1uc8`+dgwbr;!2XN@syCIXr(yJtQ$_6Zvd{FYsr>cy1Tv@%3rdXKaUK@|QpL zj6P!DBWU?Z{;D(gA$CmUd=tFlyh%w281E-C{e5XeMD1t2 zH|dKcf@T}z6X+}*EInrA1LWVDNGou_Y&jt#gg>;Zy;Sx1O=xN*+TJ@tHy(O>?=J$V z1id~E7`0OxiR9P%*db@yde!b+|k~`8xc;u=!X&(q{y5hFH?6V^V^GI*GW;PS0~+ zGpS0DA}zmT@Y6K#Do~@!Gc#saY^w%Dkp8JjfdN-LHO|m_5kI1mULUROvf~g9$NBbl z%YbMJwdbdVF?IF+Tr8~_#otU!DlW8V{QQzIT*pn_yxW!#%lZtw6rw~uh^_!<2&Z}S z8an+1ta{ctG+bEOZyhS&l|Clu{4Hf%LH4q$n*S+-~Z2s}( zCfXNE-VFXrT{&Wz@xTnWsV+ngIx*gSxmO3mXo_p~I_gR8AtUL*q;q>k-2SE2uB47Xc#pY^IdzLtB3H5M{DnVp%9@{Dh!zL+t+I{v-yc4b^b;!AO4NltN~LO`6>3^R8PDN+|)5GyK<-I&i1Xvs9+m~Nt< zRJ~F>jIJ7gQ_}2FM)PR@#hCh=3bU#0Rt+UXiJC7_KW%wL+p@L$rYp8AsDp=m-E!)E z8mL^5pu5+Z#nM3M^bnbxTojDnfPo;|mil@DLWeTq>wQwCJDD9EA}@s6G9e z^XUn6&l1MT>Uq_2xsk!eGJYWCnW_>NLbhGu=Hy@%zwic7WSQ4TSJvEFr;4nI&w*At z3&o7+@OB<_&9&KI5O(1ADSrU-MrPbzHN#iSQEIr}l=d@J3b5*XVbuu~NhO61m`LW% zZ8)Sj)DI&^a{`a(Qx$)fXyt*P<;raumbT=gzZwXmk{HgGONGL@@yJO6IU?R9l}RID&(S2^lkWyVNif0OWT3D!1dJ5If&U*6ufW>CnPsLDeT6?{qak z;5Wvtr@$q95@XfBbY>5lr1{_#%@|_-87}dVrI(w*AD$TRcYcc)ojtDC${BgRU)8yu z>i|6}0%2(ms0kF2`a<;`$>lY4$&O0~{bj>HwSIaax2Q&cpqPUboX$f^Fo;r+;GgCi z-4TwDl~k-f93r!i!hodsaU(W&K*byhw6-SQxL@|heZn!h+8v)$u(oAC7DOo+Qu8xI z{NsvPTl5L3Pjm z7XO@~M_&fVp)Z44m7JdnTXqL!+kIo(*6zaPs&-;9%?)2J>`Y}2CUtO1%iNnLxAFye zpHc0qCMu_YK`VOhQ!?=T=^|SXRt^@I2C>d+HYfLJL4hwWb~A{a^YWy>##&C!GF4ox zy>tZrH@FA{e_U#SACVKF{QQ=)<=96;9d#Hio61Yui^d)qse=NDnC7dLca5WXsWjH) zeIM9gA~e;-GTy0+>CGHiRWv{S@_ot~E!CEK9OZjFx^3PSIBy^o_-eb@%3fZD5{&Rk z&c~scp#`wD+Ff(sP1i;H&CBo>+?h@GFdkypwkbCnAG`jl`D3PR(RJy|)JQ;IaKzR( zJY8&s8meR#$H`rx*Kdf5^c;t24VT{8t>jYY_J8c0M>yFq^m$K#bU@v1SZzUm_`6x0 z%4UG2uNae$bJk@y^1@P>+tTvfAZrX!eKnlwheFn%Qi*KqOpNyjD{&d$WV<{Wpwuc5 z-p3GDew_zz&|J$Uj>Wg05DSp@5;74T!6|L7Aj^o8+Pq!o!`18Up6_M~_@$di4qM@P5oMGSI5`F8TBP9emCF0#LwiLBF=wwN7m@OJO@T(8AdL97K|Mk+ z1Sh)8+U1$?T%Aj;$8aG6jfU2Tw^)w8&o(8!(N$ji6Hs2Sh#uOuiq`sLz9Cc*Aqbqb z#%$-}9se2a540XKW4M&hxxoj@{AORHCep2FB16&F%0+HA)t;$Stl><+0pblFarjgL$ysROaPL4{EkA4`A8GV5LNql z1-Zx&I$3!ez}`2BC=Z!DT*Xp01LH;Q!BQ_$9KDY%1qr+%K3p*&0}ajom2I-6*hQXy z1g*bzFw$K!mB^G53oNd~)+T`rUCLUPxR>$g^0YtZt>Xlx%RJ+@L?O2@b_#hY;(U7= zp}A-_sR<0g(=2lUtP-B3u|zpjdg3hr7;K+2?BmZjpa$yUqJSdy-8W`=&OwEC=S+>7 zTr*1SIr@IEW#lq^;hIwP1WhB5)|HofJM7=48YypLghKAOONI0YLv@gAOvm(5?}qDA z7=XyPP6S_%jO%Ns^J50H@%qBhupPh37El_?1j1-R2aSZ-QZ6X1eCB(9s^@qtJJCQV zfhG~U38g^6pPZdp?`LtIsc5x*55m>In~i2pYbO!384upCBWX zJ#LdP-IfmUL;gLJ*MUfi4EpO72TX4*$Yhs-Bq4e|G*a56&QcX7*a?Iidu}jV?C-%5 z^gL=0v-W`!kuyU_rjav>$MJoBmR#I(yYInMiAWSWU3d(-hFMCpuE8Cj^r0uTTg);0 zT&uJyvDKg0da1HoT>{|3kOZJzII_;Z&l1QYs8Qm+H^m~()J@l#0FXa*p0EX4$qqy8 z&4xi~rAmXJM1ZsLX^Q~7HS~N?^dh~yWMtk*+YZb@pD?_J!gl0 zr3{+x|6g3zcwrM^gb(fRZ3dHdEGXIls(C72u2*Hy{@F=34ZT(kbShHKSnD8Q-4+CfEJ4|-9^XJ4Bf^^%z()vkvwzOEQy?x3lxJ``wuk%Z zr5=m)aiBN%V1A+!!EC&cZ~sn!L^|A20Sf^Xhj167#uH#0_?=WW5I6uK>P^2$JHKrH z`j$V5?f6;Mu%2OnA&Em+5q~YP{82S|d@w3zYA|Y2lo5|nq65==ePB464({xKM}Jm4 zLu59rx#j-x^6TEa%;ny1E!nSxAE0c1OH=3_UCb>{YiV;%LAPypPPaZH0cFK9=kJnD zRrB8!$>&ebaxW3`D;YK@pQTw-fh^k%8+KYTBvI;|pw|Epv#1c)JlEJMJKL#qJ|t)W zto$C_Db3(lD6~9z&xHK*9S6apkypy|atGq89pDyw<()riQFI3Da!=2>22cbYkb)PRTu=MPiB%vcibRclLpmhY_7qWyA>vTW`Xu?O{RHp@o?9Vc0 zd*>WQxoU>u5D+BtW73?6)Ovq^QT!hjN;+uAxB2u2o4V-ZH*7Q|Qs1*#-=#QS;kDWP zsYRUujDmm~c%3Lbq|#GAfC$(G9) zP|xNY8G05icxz=M?Xr|}`;;l)ewqO~wt$VFO8J34@6^(v4?h-nHi@?EYkrNAVpk+Y zqSp^A>!h3%p`fwv_Oy6YxU!%g(l}7_ZysFEe}f0G%pQ z|MS&Vv*fg%glKLiqE?Q5Z_n6LlGN)Kk0e35*jE*&eRe*Tal!>_Z>0xn`TU#-LU`8c z--=4|ih3!OV;Lda3ACDqV`;hDH*^Zi6srDv6-s+7Cu*( zP9Ti=MLT_t#i-m3S0Ph&%ukT;msqifa|!O88%GP(r#R4SephalRT2hU=02 zE1i+UYm2ncny1NRs?wwo(ClKlX94e3jrDCS1u~**ak5H)I)!6N=%)-Er|kE4dJ-Zf z4lQFcTjbwfj6(A4^X0KplsF|U$KEM`;Pra4Ec1Ndk!>eT*D-uebcTubu$fu-v@_GD zTiN?Lg)>bE2?aws;{StYDx}?+>RZlxnZ4E{{E-e{JKhTQ&&B*Qx_H|s>J!uQ_15F1 z$7b_l-f>f&Z+~l2{mB_HnNQH&zH1Kx>%Ts5uK==0xUt)FWRrphL?t4CQwWZ9t7GvtgD2x~vlJCBma( zqq%bz!+Lq@{ZO~BrZgC3g zHiM>|LcRmY;*(Y}CJIb@w~&&>-~mp?$lw(FgHjL7@Z#-Q6P{z%{Y0F&^ukgYwhfjC zixC;sT&^$hlLo6uWEEOHyT3nW>C_5fSWe22BbXYr8oHSG0a_WE>`=H)JfD~js(t5i zal$&j+WAKwt%oNlD%W6$IbB z1?0sV>_EJhpF#Um3>S?KjRQ~Ii`f$}rKZDHf*=A1$w*TbacagHbH1INrN^amb0&c9 zVOZ`mLdUMJXAPZLS~wh<{C@M3EV+SzoL>3%L*H5prI#QszeD1K`|sfaBDF9~@Fke~iCOzol2noG&poI( zg^>Ht8L9y%r%nois-zGVjIC%|UNl4Z^ZY2?d5`B*H6o}y8>g%^@t0^F=6%$6vd!6d=hC5pBp&%5YvD}bHWjautEn)aSC#zZ;k|a%go+{ahfXfK;{B1w z^F$wE=dC|Lz1rPK#KM}73SZdC2hL<>^kqII(lCaB>LL>9$|$7AdEmR9t4h@hMpN{A zSAuA9Mc+SvHQU~lv2^1$89E)XWHBbhC||8B67n%eG7RU==dM(oV(U17yW*tiJCJ zqb{$3ff5%}wD@}qF29vCY?Wwg{wSYTX7_8O@aP3MA7CqbF`kge=NH82slQHEZHIYF zO-TiHv8wf{eAuQ(|Q{jJ<9w~USb>#$+v#}a8a`(4xSn&`OuP~SC*gWol6 z|1U=qz<6U!ruy%Yuzc@w$h?6%9qVqPva>z<-+g(YNw<-~x1t%|qYeCUJ(^{oxIM(P z!vHQdwV=~5>)#9o58>a6McdPc;!H_?8%Wd{?ngkyRPU>am|Um=39{!mFDcZSPJ?iG zdRP6$5-{vr?*}G~d&B#`T8BjaEhEBfcOeleYA_wBDe#zPIz$G}Q(#Xx`qMP_SI4~> z^;l?7gY*f&J|@kDJkRLS0o$b81cDmU4c%ft8ncoT?IzFa`&vS1L(G~!vs~v|Tq61& zkgMN~{p~ertdKaq_#%bz7OZji!adO)Jy0z`B0peW5%? z1?a-BD5&pNhnYDQ2Ry%`RwDfnn8C?Qj86%Q5*0;BwFjNNnmve|O{`-W9F}9Ml1M8| zHy0ag)IN{0pL8GcB(gWBfNdA;oijvs-U(5EXna1=WBY{va`Em>8+rF=k)cpvKL|C6NPvDB`Fg-H`0g zT2e{FTFcFI>qoP!1$2`qS``>9X=}QW0R`K7u=cTsIMKnuJ>k~ImN(Pv^YFdx>ce$1 zRq+yHijTuIeZK{}mQX9okXwG%23l7a+6EPU?jz$dVjzm^OH+6Fqy5dE_h&l@`#D7w zF)Rx|ZQwUbz6Z!qQEWfAG&`l+YljDpz95BmD9mcwQNv?TRqHt|-+Vs2m_=nND7w5NncaP#UVpx17Sp%;Bhq7d2lH-{DqNqR4dc{$LfV zWUW?Rga+<9QKd|_l>8{erNS*VDvovuJ3EgjJswpGUP&ZKh_!5I9l>htvnEdAoTzm% z0?etHx^4x!k~&&na_NvlR~lnT3_DuQ z8pjeQpdGm8`dmi+ktI3n&M)R1Qs2Mhr>r;C^XPwi2@JJ*f){xgY@N^4c)z%QP^Q0C8g3WfZ% z>T>Rv8QzBMFE3icXAMBrlT#f7s4*2vH9vVE=j)`ueYn&XaFSb;+kx>op%l*_{8l!a zg2)O5E?IZ@v!cF%*RHmjQ@xFEB#PO<|oR-aJ{X{?&n|ljH~L^TM+xc>$iP!s@KBL ztfu7a9j34I1_5wi=S;)*6~<~MGoD?}`l~!P0|%-$({EMXdwC^mDo3S{N9@FawRUT~T)1{VFU+ zI~dd`rEOHv+#qEkx5mXkc(_GpP-zbJi<*lRNXobhTmccL_u|Szy5Hb-9D~IJ)n3^^b-7I5T9h?~a#Zw6Ba@KP2wwyZuhPu49h#m$_u}DAxHo?#u{W zxN-*;rkU}H$=z&du1T6H!oLAp{q&hl3Q3Q%dvaW(f2UU08NIM*e75eoDBD>9{ zn3UXpi8u7tq*yxLXkuiJmlBq#tIpzFr%^R;mlx5D95)8WvmlD$RP7G-UPoX&!w+s% z#!V!rdbScR@O)pWAt&c<$2*A81?Ph2Gdr9*=ODMGafWDQpUqsx?K9R2cMxxfJdAdU z%Pei){$v4X&2h-da{kFSx8E0KGys?S($W-j_fvUsX$#M{n1-WL@p@Gq+(CXnb@lr$ z)z)j2AbnS}Y|RePsfqsFq3-J1Vbq^w3qWLiL{RbrIa)yVH8MPW(Q9hM<#}jnYYHe4 zkjiTAkG5^78J@h58;7mu0?As@pVAAk&wiBd5dlrlvo()=WcJ+IUwkV_OG za%#-OCmeFpnmHH#1zY!}ic~qA&g!L&^1+ON)6e@Man9Dc`)k--s{G5zly?1phN@x? z=)A#ZO_>=ab1hyXI!(Ln20iDKkj#`jhd};xuk7nayla_oMaAnYJK&=MW`jhojc)HJSaaha(bLLC>VacT;w5c;XJCp% zKlf@V(Il4OLhjafDI-es_`P2at`~1VJj-)&U!dJ8+;_<)M$4%V$8{EY5;rw6G3uh} zLL&KtJ;sG%L2c7)!K(ZpW|NSXEn3eL`+2|=1A-ob2H@4Ts${OC8EWgNv>fS)2tf$P z|Fk0|HW%c`I%tc1>7gTbZf1Uw1$iM-?qu-Zm@F3gH znk(zG?jSW_xF8&*wW(%Ce1VV8HQ3 zPFfry{?{Jo-v*nxbS!&1WI9A{@VE(`rS;}u3CwA^ zoSaWqZ>q#7UV{eb$&toNHlW1(0^?y4akIRSf0*mCc!HisvGk^Htbx30cxk&n|^3pyRE*w%wmEGz=VG-eg18fun~g@IqWl2h=xKG6q>++X2*nedkO`P)~+7k z+GNHmM({rbT94_giDZ`4Ixd#0k$CzD8o<>N&b@v)aI)e+B;YNG`V%#>=qBW$R&_`U zhKLGmMS4WslQP%*w7ctkATR{Iy-%$>?i^IR#psuulmyy3AbCLsN&S%-b4I3CrYCKf zx~r+weK%ZV`FK+94L@fy&bIpsU-hSMID6x;_!S&Ub6K*OE8F%yCz@EumQ?e*Xy>wX zyMr9w6j4#bYDQy9mGYe1nWUL3y#N{Tplcvk+~`E?Mc#9*vRW=y^Vu+WvWrYD)MH6* zJ5Sqq6)O+%|My=)3l7Kj_93c2N@HRsw#nDn~3YKSge z*zd?GNGmU@!M!>XDg}HVflHP#gSW1DBM=!HB(E`5(?Q_ow%x&N?ITHqHb><{gqsr> zdM6NK*V;2PgQ_Ya|Dl`cTaNNgPe&O3S7qe5T)?`g9dNAzK2+d1kOK)6V7>!#Xn&tlb zMESuy@^ga!v!kjh@Ec$nG_EtTjQ-2)-;S=gg3ESrf4}`CD!7#KuQm5e;a3q;s=${} zI<}mE!%h;Y#Pjua@t-RZi+V=ug4Mrc1%Ij83C6$vJ=)LK>j4vJKa?N1x~b2%Me*;o zq13k4u^?1{=~Ud7WAb(M<$q3~rsDlIhU4F9^|fOcAL;(x{i9Cu^_gn&zdKrPnY~y2 zcLvY@JRi${#$9U<0+Yba8$kFqKIGhZM3?+~Qi~dw9&SxG(f@PCp@V%#;EGUwABiY$ z3Fxbv$e2d|9pqKsL}@)d-&ZaB*Cc7F3t!V^0RKNvixeeJ6(`ntTX0U$=bz)zFsIpY zLhSz`>@A?`Xqt6lf&>CVg1c_q0>L#n8wu|2?iPYuaND?ha1uN?!NNv^y9IZ5`-k`a z&b{~CbJzM=S!8BM!m82|(DasvIQLx47ZIg@*#Q0I$k_ovL`eC;g}S)V}162xF}%* z-GH*3%BBk6#cn+foev;o=l7$_X91Jmh@mo|MA*LrHn)@}NM#!bw8C_>`BZJ!SB|_* z0KOC8gi^K|{om4L20)WPe@%3X(b>4xzr%WP)W29v`wyDd(d1A2iqsN%OQSUD3;vg(S@s-A{$*64uJtc?cB=)8_H90i|9M3+@BrW%gFS$} z_#(6}MX{?Cz!jK=YWDrL>3@b3x+VeqJq(PuTq^J+05OaP>eD>`^6CEI7YaRCzEBVb z=-j`o_0J;#76bnO_tJkgy*v%*5#;6F8f?I?lm2YMRXz+D80^+(=9UHmzXeI!v~(MR z{}&wBe*^0J4>p%UGQc$e+SkiB_@n=O$G>m?2ixlg;a@EhzD?>^_K#>)P9fS##$!^(bN)bU|jzS|^$E!;}~DUY6@sbF0NlNde}?&I}&?Vv$sn2jnj`dyWUx?hjmKrE08m~b)dG*T{%0d^= z)KOjEP|ZosF;DwGzabA{Yj?UqtN^Qblat3w&2Hl2AOw}o($O%aD5*+6z?VWPnwcc! zPj@d_^oJ9_)X!>e^1Cy%K;dBMPR~VjrCnBAp3>3aC5N@w7!`MW97xl5i7T zIL!q`-*mmcvM@C_!641Lh^m0@&Z)I@EeEWn-XeZj7$r|H}U)) zA@uY5_^MN$rG%Mc`IXVQjCQJky^x4>a5E>>Z&n^TLTt`=+@Wc4lM0Hex)EQG zN{`X$^J)VNFNi4;)L)6Y@H>t7)E(dm(x;_n^E=owOY%3C*g6T-v^Om+PH)BqZbi@K zd){!!70>4RS*ngsZh6sDw^lh=Pb^P)*tqQY9Yo2~Udm<6^Ktj&*1KJ1^Egm`u{PSC zpAfFw5o6=6DXpKFn=sHn+$KsuWK@uF3z{`DwZ)`*NQh$47j~Y9F_3bwi}9kVi_Px+ zhP5q6n7+W9oq-~Xlmtowy-*J+X@lf#bd-d|Z(=^sJn&u;a z&TpzgH196tDmny9!sN->SqLn&su*+H9Id>q%>@&KLySacusP8RVuhs{*ID1g6NV~m z;wCS(-Kc<-!R}XYS0C?`BoU-$S&P3__`Iz}*n3w7KJX{Xa8=j~SD`D}Pga|=Dr#B1{@49FYvI__XK-H-*4Yx;;Byf4P2a)6o@_s1R2^ETgw zA1@|EJA6)lg~ohhDKNphj%vEOyWQU-ot~VOl-V3w+|#(ohqNY~_o!E#W5g5uA>zO@`v zHHtlC8HVIBO}r$v`%v+<0i_=2tFBE>VzEMR5@8D_Z;D|4myA}bb!&Vk_i1#gWZ&j+!^!T< zGIN?+Oo-)$e)#2j$>Rm#?BE<=Py~4R;bq1padmZjKsU~ApR7>@br%phsf$bYdS6b>_&qMH zkRqEN0;o8VBQMxoMP@kV-$6x5fDEt+*ctjFA}LVq1o@A7%!~)cJ^QC?L(&<+C7>}~ zIs)>6-*)DdemBdg=|%+J87axXM^Qr%Z?y%^;lIHFG@lozmn9LI-ti|Evm8YBQ#GfvG)r&SF zY@18e7}rbWk}|uljXVe_7=r=K0Dd7P1_PA86hIW3$aw;}t~>bMFPwz+x45mJ?EDN$ zINvt#KE0UeIBM`%X}{|;2g%4}LUjFqt0^llxBKw(d7Z?m0@y`+jNrvfzftn1i$#P< zYL~MUDVpFPkS{b`OOIlIA1Q-nlmqi1x*v7I6(MVE;Io-!CllGWjW_w=D+95`qz(_!mdpOL6Fhe-i(>PM8jM7t3Q>i;s2tz`)&fsMsm%3v z3<=%OFS`Ri>*3~GxO6)afu{T3c`=rf0j{vQAiLfcEdVUQfQgfGr$Y7E{$hLcFx(@nu=_+6r zd4H)fTAxp8tZVyHZ(M3YJSE3;oqNgLQ-a&?@NLTcDx zSsS&7du{!7lrc`=9W5T_+i4-2@ofx3f5Vzz&j@2TN_Ra6FSb{OXmJ^|`p~fosc%0=Ejvz$T(ai^TpxC+x`dhqXyDoet`zRfH z$vLkt`t0Gx974pT^LUs&0ukT7h_`n)F~OWzxxFD8%;qIKI#m{YhdW2C_8SvdIxH5G z#$ro?!qo-wFviQ$BQsxq;PZAusO4N!@3Otf;G~~4*jeHB2jrq%c9V+VhlVp|n6CJd z+oPf%uDgQF+wtvI=Lrupd*m8MV?)!257%@(YwW>1^Ljq6`8241C$J)KGP~!51!(v- z{tgLaLSx9C%0b~B0V1jq!n=-t(n!+N3`8}v=t7e;nAK@=OYPt1^-kwz*r!X9@m_yr zK>Q<&vh)r{%#|r$Sob|X3z!mHLn6?~)%fegQm-Z^vxHkj16ohvK~D{*I>hu~yo`x4 zl7zcA#@^MmIe?pJ{9W*69 zBz0Z|FHW>$>Mdh|D+aP}WwEcg`EE=27oG9eNTFdC05>(ndWY2>a|hC9&&q=oI%lIE zB5NmKcXcGnu|q)#Ly$r(2nTTR&zT&%EJXBoYz~j}2GUf0iUFXDyp=mXXfW%yJ6{4= zW4i=eHbgpQY;-&u<=;DQ56)Rh{T{*#q++}FptL!F%D%P?uwQOIbp5??)1zu{|1{c> z>3ub~UGi1P=V0~}i+0)X8BT%q7?2whyzOu`wV7-IPr`;VwrW*skL#m)4_D7Gx2-pS zWxF=cS=;5n@?`kLG%B}^w(*6kKYjp+k>QAb8enB1D-A1lNNU0duB_TKS-{}T%Nqk{ z$%Hp#=*e)mbl!#i#f7S~+uZghk+xF|xow>>LndG4v4xmTQLRsOoYTlE>m2Gm$`zX( z;b2IjG~&j0OqVhl!$vUL>G_<}Ygvj#GB^IHaBxga%r9RvQ@ecUM32P7!!8mS)$MRD z%OLnrfiLhNs)S}O!uJb`qiYNC7bYo0$3ZFP54BW~8w?Qk(xlIgZ!03F?YkDT7x7XK;!22^BvXbE6J|*d^s7N?kTY?q-slFG{(+mzvmt#N3*WsQKBOBs+D|TP zHmBw!y&qV}dA~a&oMqybFPa^%6YPVU2ooS5w$9X}vn&GdZU*}tM<+@g?j@SJUJgHG zJ)SedClZK;dJu1h`w*}Xr!~`f7`I^)x04JC#|fMGv-k@WE9nkivNO-`bLPNBo_Xle z&1+hVjhal)Jy-XmI$7wD*xvX6Ul%q4<}yk(m_Wl`%Yv2(<7fJO^Jip45*Tkj#hFPo zXNJ4L%t&c3M5&SjEP^nT#f0Cw1y~bRsfza$F}*ZJC|EctW&1jx&Gwma36|%_P<;8{ ziqq-w&4D z>asTLuOAziUG@%jbQu$iRpTa{C6|^^88HKX()KKoll~3tP5MbrA+tCEFKwb(+8FzM z@7Q;SJkLz`Kkae)38^w!ncBr$p>9Ku%H(ah(yd#k1h4zQC$#`qOHp|k+LeBLw z8CMb|_{j#A#JMYI;ttJs___T$dQwu7jGZJYfk~^z6p9G}@?x}VYR4hevdK(Zq7b8( z{N0xfVK`fZn=U-*w>B6t&(n?VB#N~=!ZW%q!_$ZS$fBQg8jpi+k!O(1`^uGWD)4Fu<@5+)Y36A+~;)up%hW{b4e-DR0Dab(05^>3ta- z=Ky3oY29Rp4Sr*zG;%`(n#m9vF5Bs&V(uli6UXTiPcJ9IvC;g6ZHW$#V}2wq4$FBi zFE4TQZ6;j?OHGb`gr>*8(_dM18or>0QTyNTuPp1G!2e=rb1f=(lgj1w%CClX?@#4- z9@}J@KxAT+1&6%WdTw!h@H&_M7zG2vgtC0p zirzgMuEb=}*VrVJIkV=v5~orP*F!w${eW*>34IT2b^%Qwrn8eIs5qd4>!F9A_JJ(oX$z$*;i9;f>R86*nH7*cV zTdwl*i!J#Otk^-t7WM<@y{qa6AujThe2K8_@>e=rWzVG!RI1zAaI&}`y77E|NIY|E z#t{3JVuI*7dslA1SBnN^@4{TCGN>6cQA7WcOA2T(DB&LgtueL8p#~95w~I+xckoa+ zclrlN#dauK@w6Ki^yRc&&D#iFmZJOJbO+#%@*lUBe{Y{>J)jl7-ED{ajv{C~*G$su zeciHhC=;&#BIx>Fhi)?le%-}DZFX6frVWzg&!HOR+qh9*sHSA8RI5w&MKJwu785V4ejH3iEGKPS{&F9^AnN_pA0)G%1 zVu77P)=#rxBBcF=>kk(rLycqhKvm&?OyLP?rIlfvc1qsFz_hkGF~W;B>y16Pq}Scv zGNT6Zu;|?;^4JbuEeV`l3UNH{%6s&2g6RE*EqUI5{UmrN1-_+8Jdk{d^|D^YQybNQ zGkz?wpa;<#m(TE?D`c`|$NAjX3@vp3u{1+R^#3^0xc5iz6=y(=OQ#=;)~)Fv+7g2V zBs8|o-*pdtc)@L$LQL38Vf{dD2=BSJ@E`nAfo4BjV($S?*5t)O9o&#B(o zXjhTiQ-K3TEtD%BjRz%%`OT|r0S?-6+TsuwJeG++G9KH4cKPH;)JOPgYq&;>`O?m7 zkR*GK#P^^}jAd)Wb?VkO?)Ae`Dri$IGwV9@5c<$0Cu9R9#kJp(3DvZ!fbDRytpk9j z4>GTA^nb?J`9vP`r|xhuBjNSE4N0lUdFHnH+x(LVy4+Wki)2(v+*_4nV+~~rgn4Yw zxhPnqnK2TZ3Qi`pg2b#z#oV*6BN7Zkak9?0q5RjxJLCHX*|QaYnpI*eXfFzCSbp#H zQ-V2)j#uApNvfoQ<@9zxy-vT1zOx;x+W%I`U(2gHrE~3j{d*x=WEe_td|-<| zGdkFiLVEgps0EsH>HK3(Tq@#V9$PCq=uJh0D3=VuLbUTD7ur^jUjCKra$__slE$I zUWP=aGN@_0v$koDT?$!ng4Ku*|G;NY8WU5e=I@)~ZCJ7U5ie~Qef~1|tO=fI8S

    z<>cnM4%nZP2-+A+HUfmL_S<%o-scT^6<@hRr}!Ym!k0=0GF)_;Xp^nW<>(yNW4}yG z?h&Lv5NvH5CrME-U`WK|L&Ynb)}_b{**CX3BK`G+V*|wjII4n-O=L@KMY(|i#oc0_ z-;+@sTQu+^j$jwYkUNdI&%TOAZAcI0TPCsDpVN*$$RsY@ zc0hA7+8)tU7e1XlMiabF>3A$i7rE7IxwfCZd3*na?u+qTdEixx<>~m1)Amu@ZABM_ zbK~;W!ga?p981eZ&7kjNM#i_%RJYaDycIIRqxb#yp>Km|sqXi2G<2Jcr}o00Oydd{ zf8?|s)C`UYKLbu$xDK~q?PgQA)ZaH~tvx6O;*E=676O7s8TzgGCC>O)9_??A$ug5j zFXSk|A_}m%IV+3gF$6BkN+c9eb31;N`G~0q2|kH%j^TzcyVPxh{&ZNdEcr+f%(7$@Yb1!X4x=))^n?Qe4zx<4h)iHSwLsJZ1fhBD zE*$D~$KW%`1iYhkf3mE1(5%8N!(o=_=k3YF7cRk+fJO?tT%5tTn-7@Zgf~K6c`Ls5 za@m2YQ6bSfGGBP=b7`G5lH!M1QmJ)6*+VR6z`PbISWPNy8Hb zGlMNRD;FXu!(q=%0bYKhZJfa*jOp%sTY>~ z-5X`xd`t8PV=X+dEFvoMq=!x{JAx8? z0)ry%erYsBkGAo_ipLOr=B>HO7E`}@sln{{JConKhp^5Z@2N&MIrsN$<2+llKAcL# zOF*9NcC2{xMEPvaqp*<7y6Scdtunj{TzMi03UWVqDcLu0drPk*YvAPMgrbpgVrehA zsuHOcP@SreswX~_0B6m5O`a?du6 zB4{ySBi$@&3-f)y{%WEW09cOUp`CFM$)4EP^v~xie{_CL$uWhcYu4_qjSai3zueKSWO_)3y^R%=;wO%2r_P=`@qb?1&8Gsdo_^;#fA5BC7 z9jdzONZR zs@k)0@CJ{BJ`z-lQ!RKp5x5}otrPPU_o0AX{fIEr|M}Hh_>@RWsPrgZjMn=<*}9Fp zN9rW+hLweW5YR@_|9Qi?X(M?0K1&=)6WePuVgDvskV>Wn-Xj1$Q&}AwEIA^%M4!QI z2h{b1k!*bo-=XM54#Vf=KPigBP-#_u%XjA@AzcGQyV0DF)n9`LpH(#YW{O^WHMO%s z209icy8P>{p>X_kL<4)jblSx0SMRkMGDa1brF*Cg+s;0ol{Lhfj%1=Ud^!3K6s3b^ z(rAW(x^*^46D8J>Tc@Z67+MkfpSu>cMIpQi5bVP%jrTPC8B_F-4fnU1G--&=Zk;Ap6T$O2^Rh^hPq`WIRk!2*EBtgzv(;aH7dY_ijV0_+AN0_j3cGo8~;swboR0O>(!qmBdQcd_IMhoQ-g_y&b@Jk zNXkM>ACi4FH|b?3JbbN?E9ce0pJvAo*^?6ot(3 z_XAy_aQH1{Bw8L5LNrJ_iif`hV~8gb#Or_DhgGAfg77tYgdoB+{ucYshi=ash8kG& z=-0BYkja`)fC<2bghxRC>WzOMwmP;QI+9ePice+sY{`aOfEU=Da9+t_nKJf0b3}b?TK8OcV5*4@h%qlC9(d==drb~=$JZQl#QBb0j zRq#)@u(R_BP0E6-p1f&jaG%jY>aNYx7+Zbi= zfEaAz?=b8&*mmdjBA#DxlNA9$s;t)0)pzlbN#l2#f;Qg>A-b1X+8?DF)$^N$^4+4S z?#nUS^Kp2*hYC|0O|X<7MIe3cSqi761=w1;gsS7P)~Tkw)Bn>~zFfwH45d<`hsF|L z)&pA~$7NY1mi|ij-_X{5y)oG5vfCcY@cSE*5{zv96_moHhvwbfX%z|Vn5QRnMM_(* zpV7lB8-}WoJ}`P3yaq$0V~B*;M*ZkLi9cm<9sZ4yvrx15HXq!Lm;TyzGR`=tQRVw| zEk$LjE+vh5tJ!czZ}b-yO9iVS_QH~-cHQ^a-=x1PZlNGD%=!nF(^=dITs9e{A90jw z6TvoAt_U;l3gq83V+DK^L1ASESo`eb zG*hBw1C{t^+nx0GFtp!`S1}Yvfz^a-B7?g#;lc#{Hm# z4AitQVW4PoQ^CUE*BU?0&!$R*_oZ)Z<(UY$-V-$8m^xHZgG&99wMnpPH5@KN`2321 zC=pu;=ck^fEdu_+Vt5{Y&Fq2$>@)`+_x5bEeG6}#;a$kTWbG#V!%EHrBx zb2&KouXPh=Dhl~8hs*R0I2ksf&i^I0D(rMQg{S9w>a}v;t}8mjV_Rd>cmyA4sDm13 zy5jpdD*Wt?_eTa;6Fd_L6d zX4~EY8LAO2pKSmFDlJ|*TXK*bdWP#NZmIB@?y75s1dz zmeVk?Jai)j0SxDW(-}aXxyK#|2er-0qr1~01xJu7|4J_12k30e)BIzFHU6tP`#9FF;mx4_!q78)Oyj=J zSFEGt5b?;YRp|+JN#U8JjkiAxp)$+aAEd{9(RR}xp*NVQDN(1h;VF*n^-f>n3g3~) zB_1)C8;?eK=#`r7`q+?w=T$JpG_w!!casQ{6J}^-Ya~^~-*$&ujBwwox_mnmJlV^6 zLhj(L#c?zRH@VMYmJ;oBL@Nsyy)-9~P0=Jl-_S-Xy<4qPx3E zZ*pi2{`YBc?_f^9{7l1AF#1y)XZp|J)416>Qc5tUryy@#Sv5+TD)nq~UXigAx5@Ug zm@~4KZPDJi4aR^h&fej-=!qbZ7>_1$iH`W+Hvlql2{yP{_8KJ_m!m3?mzuAg(bRTY zviLLhmnbSUl_S0=_rGEj%*vOj;60qNkMZ^*1u1(147AB0XFJ7}Hj97bgQAfCHp^>e z%kxRsJa>w4FL@7c3tis=K|T)W=GSXBOU;LCR8j~sK!hrqaEV0q7|6vr05&cG8_{Lw zQaa9(UPAU&55o@jd>4yrOpu2zypEqX3Qao{rGJ6qfTbs%T|H30aF+~g>ksB5?GI;+ zHJH#3VW4+Xoo{ja8~^0K-^C4J!CspZmfC1Ui#L5JbqC0YN5w&qcEP}2EYMeN;l7xH zIuXRe+PF6>D1g1@th%r(1#upVFrIk_nN&fb+(cTcKPJz9B~tmtdMSc-8uaq z_+qU9p4CZFKy&UyzTP~gD< z?Ox*-f2p~wJ80Z5ACs)MLr|;^<;F^_sWG<#5{f@*6%C<4l#%M__lsV9}k^?$MS?RaJQH|{-XJ%V3vh4 zWts>?IVapV0%J3y-}Y!n#A!kCAv0R~EZ_~g1Tv2l;uN{e@-ax>)m=j|N10~RHYT)E zzm{~IKP3*NmC>2=5frnjH^yC~jwcNvRcaVLIF?AGToThGhaMm>nhwGB4aji8%`8oq zNL+dy0Q(t4b;5H~Fk8*X)`2h$#5Nl!59?}y4n`f!mqJCp$@(A-37_ePtAnr&bz{qH z{%M{YH9DXpEZ&C&^D%NSBS|IA^I)38zWqi@f`3*{0!n)op$WU^A{kexGN`Rb4xU)AL`^sIW3_HWLPtJO9HCc(>L6Oho@zBu+x|;EY=zP zm4>;nvsu@%{eDy##CrvbfU7In*+T=5Zz2_DCrD$yq6~9&)r#vkc)qevmFLra=l9M# zUS#f^kPC(M+~6IU22{Gu!++Sp1nfI%mPE~-tP$fD>((p~^6*K0CCVL+bk@=k4~pV` z>l(f;FlfQXc|u+HHYK^jdmR6}9_USN2rc?BlC*m>P!`!}aW`5GG%h!VKmM~Ex^K>a zKlB!01La4e1K;BhpW!(@Js-7>1G)#Oz}Xomp7&oR<*XjmBS5#SdH~g}6S=a!Nd8ra zcIv5+B=EGYPMt-52@!lnW5-!4RB3Q)i|J4sPstxm3xawUC9L3wPa>a@E&6&euHcVR z_ypYGzh8Me*m`{l;Ba)5&3Q`qEqQVM6LJN7tvJ({*z14Xu%vl|r>pB@pXYn0o^>@1 zy?W362AO!%px3C>_R+PV-!U2QJ)XL_>x#4WX{|FQAV6)V#_L1Y6!rM9^A9<_fCvA6flH%s~2W*ZxUEAmyvMJMg$SdcDplwCoefE?Bly4!kr~W z?@4w9*1P5bQ-O~A4xp3KtT}Ubgw%PP)q9>z7L_|0cr9j>BJVDq1(`bp1D=B zq>h4PSOJy5VSU7#&{y61v_Yp@!613;Uz29G$yq<6%CAaOL!4=E`qK561NU{7)+4)u z4O2#UPSMj1@xK39bx@ybxhCUCaO}3#0^|}oJRXPN&6`uL_`IhWSXKRpG5#+bv1XmM zwa#bzXc$;$=XX3gwj3gg7`?luO@!Zm@Ou0zpF{~I74(8W?FGIR{`I;hE9sni3whX} z{XSP?=at6DZR@?YPS!Dy^imVpVkBF|#A-bVUC?{iEX9l(a)||ImqJ{cC|g%}D*ECX zR11#^0ndBH{u z8(MQJ6oU(UoJ6obw;s0>1oe@vkvp<W^FUCE&fM2)VN25J56ov%_g zF7QV_LN?E12<2gi0pT(qMsiNgp&`GGfF&eXlC6&f4R1J=WOVv?Qrvu4aQ_W++9yBO zZG!`52;`*JUOO4XDkcCor*E&pNFI6r%r9!9 z3tZYDA=Mzc^`A=JTZcWxFKuEq0|V(^~l^xU$Y~wkmCCn zxV`(Ud!2`zc$d-tvA7H5W0=OuWjuA0J>Enb+>Og~uhe*~1aL392^p^DqOkmg$!Xbu z$a34y>(WCqxqPYu1ruRVf z=Je3P&r6+B%K-p$eapP$J76~c;JUIob=;qoznH^&Ty1o%$!-$p}W$_az zp?^I0eSn^GC!j!rQ-8h5-Hg^5s9)_WD(6rKOn(5G z(JY^(EJmbGBPqe!Mp$}N&E9@Rg3K|TAtp=qXYsa0hcylORahLtSkjm_yW=*wtLrwW!zudA z+G$}iJ@%#+Xq16u;tA&=9!}r3AUFz%5S6g6=!91v#W5daO=$InEaD1@?P7jMu27WZ z*CUd48rDFk5Fpr**gG@uV}V6?sXKPSUQYNL8w4-}32#`n!hH1>L-bd2Q5=OC*irWh z;~9ao^jlpOgZeUgzhbGQfF{+Rk52cNi251ao$VrYg8LqwK5Z{qS3$awPgtzW}>9L%jWt0>%y`a0PZAVg|>(JKww1XV?e;f6*bzg20GhR`C; zFW#rqx`;LD7=Kcq+UxOdvD+5%ZdQ*gbU*$BfJdSA{cOUP85?j505R)xor; zJQ${SMpsjs#&2wqcm>jrYn~UYQr`ss&=UVnMLg=@#6HK;hS*D!7r*{3QF&PTv()@H zFomTBX{-l{5b96i%cs?AJYQ%)t<<{KOjtK)w|Txi6yZafo#^Ro7MCiBR5>X*^wHx@ zOOv#p$Amenv$;%0Op1E$u0jd=t9OXhr+zP}7M>Q3 zPtS!TNY?f!->6d7#-FtUw!r_gaQ?RoIzl5W4KZ??(er4V{8q9M&At5d^DaAi<>Xk@ zIi7&z5)lfuVkCGi1U$1+T0A^vo_2|fCY|kvk$%v%#j_XG< z>EXTi{k$&Q&zHx~Oc5Z~))P_u%T3{jYVzEnDX7Y~*VaDU{3~VDZV>@a4EVx#?l&;_2;Ij%$3gKcAv!d7&o4 zAIOnI|70;mt=E?*Bv)!vsTSv@dI(VHa2A8l>WeZ+3SeAqQ{$VQT&GaW(yN)HEFXyR&w6IyrPm zDLz{ryTnn>0?m}i_yD^``y=&&#=Df&5P5A6SiPS*KHTP6rU9<1rln7;9?2*1Odfm7 z3I-tpw1T>HA+F!_klfW~=A(6<(+E_mQsQTSFb9DoB1GEpXY$$@V?k_Qr%uWyA;VuX zuw1`5ygEwvfzV(+RxJIX-me^c^%<)eh_orsNbYCIU42czts@7gED1a70*MT%pahBg zC<-fhiBmn5I9ZIcrh23Ej~&e_sEb?{feK2(U*CIYRFcK)j=R_S5!#6B{XC79+lAof4}#kkIDF&%e$7Od z-6CE3d@v?33jf30n*!k^XWk%C0orBBA5?x}oVdZNCf~fT@Tr%4TJIl37kHW<4N+Op~*S8_mQRP0DURKsDA=$$$CT`S9BT;aYW1qEegr>#&)f z67yGChJ>}vpQ_BFyAF=Xim|yZ=c{}v!5Jl>r$;TdZ36z?chI*rSyFa4<{#4bL0=b+ zvjq=+|4*B)7MR)J?oYRc>Q*>>naJ>O{O)~O{&9YbdBGA3jQ@Pr==Y=G_a`1(%!ih( zbeoeV!+=<3ZAwMWy%OmS=dK=b%k`1h(d|mk=hMxH*+ndcs@n?-AuNmwMuXeEf{AbZ zeP=})`n~V;nw~vEafKRoYz*%2T7U!!yv3WG=O&ly?EG*Ydh(T9hv%!gQGI^njgmut zk6)phxwh4H8S8xtg}rYzgzx7@0U*6~R~Zn_g9+LFtj_XT@(U8|lGlZ5$wVwDP16X- zm7*Ns|2&I7Pxz`GQ%0sHs+8aTxY&dWACq3_sf*FDZ|78HO)ifQotH`)GP-oPi1!x< zU90usO`hLTJl@Uq*g9*~LfsU7IK_|s*-8TuV#oF5EPol|c_{*NT=#<>*}Jp_1K&#p z7F;8T@h$yRm6;1t4grR9ASBalgJcwR{ZW^-{h{ocY{#S0`(_8_@6AcjN!4E;TeGl8fg^~ zRDOst5|j0SWbQ9piagVlY6?>`GZ3HY9O{{b#%}ABGYTwcOHh12PJ# z#>C=OMNA1q+9&g!Q`+2r(x-CQCLmIP>u}77qF_E3+KZ_=( zUpBLge+76KoTqOX!{$UWzxG!mlPjmE1w!SX?w>0R z(Ib}a%~1wIOa$wX2sn=^*ghJ*KfO*ByZ~#liAihkOS8w67h0jIHM@uQ42AM441Kz* z-I_lAY%H<{wxa;|ofBjDcn^PRG5Vo7dg_h?yPRt)&8}VSID)HARDF#)>XnNkFEFbn>3ipgEn;{9*@fw zM3J;y)=Tt#K}3|q!nh1nBYv;VJOBtVp}ILFRicuqK`MI-#?{$Bc^f}yz`i!|$@ClGkkCnqgBRFigm=^O^Y^gJqJyN~HpCwt7GWm7e;9^&R=IJl# zgm4D6bLrwEjqh=$Tw?WeFyrnc9@uN9+q~bp#aGUi3N88wv;NPV>3@XWo$DoMnzEF8 z#d-hvc@14kXbRnDN31ZwZlON(t}lw@_k5kzHGp0Uv;u%Hi zG_IQpfve2??s%etfGAgLbu{Uv2>p^s3?Td?`WWOw-^bRk6M@OP}WE5Ge)y5>h+QOJ;A#3Y=klT4-*v-Z_Z#P6Kx0c*&P%)xAY zzG$~wFlha|xUhE^?g9VjpA8f6JjjigY=t7^nwiyrS7W6POVfymR%iiXz*X%|KAYmT z?lfDA8l-zxMX)fHqds~QjS@^VNqSSJ-0j2fx{s%d*$Kmy|KrIANG27XddK>@x$rmB zx7R?<{;P530`jFUvBuc68;s0S+K+@`@l`s=U~5>VV>*+Y_wM7}*{jz;v|#^2aOtDP z$Dki=nT=n}KbQBBX0^d!L%+yw;AOujA}75`X+&?_o&3;>V5MqB58BPtXhH7MnYkwA zU}_B^+rtL;DaG^ZkAT-vLfEw*(cshddXEZjF24V9{v|tX-sk&A{E;kilXuKQLh(ID zOw7AcrS0ojd@1@892#Nv$k8>pV8a?t4r$On68KDBzaH*J{VD{c z$?Gq@4s+WmhE8lK0vH=&8896Av^~KNZyK;fMa)N3;!daO>!1Zp)-f|~K39e&2;mD9 zZ9rgLfWxPX=HoR^4(&I^Q4n=S4xmK5f=x`c72)UAAyS*h=$~?IL{CiK7q6Mn-22o2 zoRJL34PvR4rswx;^PED1*_S;r#7oUJt}hdo9*@B~2YcJ*+5@qty4NC>2+E&kr>^}; zaZZ#yqiZaU`L*pUwIffZ&x@5cdUV}rvD}C)35B9E9!jidtda&z^PhKkA?QSkfZj-N z|D3c>ajH~?bOn!(q<8s(t_OaCB4kd1Dd=h%IwS~!i& zz}_7IgjsHIKi?fIfGjBrnG5ZoxvP%#X$6+>ToZ~};xii!jpD}kW?B6%%YhQUZELRy zN+y3=AcF_I5$eJM`g#L@Ac%rX>8Zr=o$9=UEP8$%DC5!a2T8M+6eebfDrwPnD^%OQ zE6=C>|0sJ4sH(ob-x~!*rKB4KHr>)C(riMyySqd>Md^}Fw{&;6ba#hzcQw!|e# z(yYtkA$}dwcj970dD&I8rq@z$;JwiMF+DT=DV@1~J}2(jn|66^JT?f8O7NMF5`>Mc zV@|oMsPnvS)_$*_7(Bd`#b%Ci-oRvSlF5H6B|)6aX!fA~WwBPKv_giElmxuXaW8hOwNod=CxVq|OK%bZ?BF!O@#Irpdm9te& zKmx4E3$QS)Do9fJwg&WqC*DRSZ9@I0S^?O?1I3PugKkSZHTx3Z$#u+|Ik7?FZI{4olkK=SR5>P}8cGU*B$60jqz!PU8wn$da5&pAY^( zPg5K9$L^?in-$gV_fQwrAGQR7LK`+y10RL|9<2yf^UkxiXSm-`BKaUL=lig7@hnzf zwU%>^eoz-yx8yb5{66SUVv^dQjvM!3V>6wLc`NsPs>5Mng?7Bjp?hR);dY{G)pE_p zyeeflUnrjOf)P1y$T1S(W9OBQuR<XRF&;KnxQ<^%RK<1e+1hsGfR~a7^OFUPHejtp`}MBG6Hw zBxEslZ1Gi3#8qq=^6B&GFOOf-?e9oTuzN{!@k&TnG`E(Bq%+V`F9R)VNPN}j?qq@g zrK+-Uu=w;k&fWmRw?|J5^h9@pyYLVRS=Te%0W&H5IEwV#?({ zwFZ7+=_JvzUEaK{z4-+mwYxXuf+Xj5brd!G^2J2&W}Jc3GeT_EF?BFU&FJ{DOh>#p zy|me{*TUQ44X_BD3N0n{v6Fi5)uG*JIfdfDYA=0qIudZzKd;W0bHF(fh$LgMRCK~3 z#_vJfB?oXMVy3>lFHQO>C#oqUHHWe?i3pM1jQCn)s1ZFa_`C^S{`oIMI@94ov(|bQ zek1GDB!8iR-jp=*>Z*l161XUo6HN)-%&_+x&T$=KLebOF(x#1Tk?iKct^ZI+JA_8gI=$&zg^C)10U#p25!9 za;>1;Ekm(#u5GXMENU!qP*b#L3nys$6>W^kjbh|Lt=#EQ8#m5R0(E7*7pX`P& z1HE7NciyU`nve%e)O5%VxNLl2hq+Z5LIE%?aXH z?KGN3&Rt$VO^q;$*wgyvCBf2v%Cqv&E}&R zXS<`F@P7s(LgjQgSUv44{oBsow2CnxF@Xy2Rm$IV0I3OE8aZmT~nEK)_(wkw%NtWrtuD;$#Df7b$A*4m5ZTTBm2GoNn& zHBU!q-T7|(^J$0@Zs;y;e_wrb zY-+C~`3>&#>Jj5F2vte3_;;U|qHq_zc{yP&>f?cW`JiN|&DPMJS5(LhOI z)ng5?9HvJ?Xf+lyoW>@C!SR;9wz%dO=}`!yFh08yz}{V_BjK2(x_~aC6ynIlqA0${ zM9H-}syWK|0apTQxP+)TwWf`Q0zGtWUC+`hkc>quJ6%*8zS6sGCT=pYGar*K^fd-G zG5HVX4I``3VS7FoePh`Ak0B-duz~qW2<0a@Gp88{PJKk#KGlhIW6zgd(HvOQm$LkF zM{%F8Cq6UD8?+>(T7@Ih*%o$B#^d=M(YhH-mOyEgzDX~BeZ!BN#fJEY9@N@xnD^u7 zp-My;>ZM%#>+CkT--*4i#&Z=4#TSd23kC?jOgpbA`R92O7!dibN2W2{_{EzjrBxV% zM~M0l2svurmO!_kFYbSWmzJSQ`%2iDA05pTkIQH#*8Dr$w=7|L^`>Rg&V1Tb&vL8> zI|@^2vP(Pz^^ouWGpkfvUu~DtSxG`+Re4DqvJ1^bJK|UKW%!n$scC3F^&aLAC~s9P zVPBybe8PhjgfbS4a(0W44HcWSETpzQbySBd&9MwJt7>ecQ}){U=BDqJGtaGjY*BVT z_|n*yrg6FsR)Zsr0xFF$6N%9+#w1||*x!Eq#Pi)j{RZ1vEJWs;>0RD!m_vcON2CCz z7DV4W(iar#0Hyy45{cc$M?O4|+~|nPLh9S9t}AJsUwO}y#DP(H-S7+wk`4g7-T`zq zC{c*h^Ab<@>p9YutbYHipCya$>sXHRCanBr>}^{7pLLg@O&uUSA*-OkvJeL`(%g3;-XG0B$k=UC%1#SQC!KYL;6>YKD+Io5sW>T+x@Tx*pQ&f z`=mF2V+y>V5UbvLzJ94Gu?%TsuKmeGqN^JX)CT>+=7fW2U+d0{QCB|~(k=hub%D!D zW}oFqt!?m2S`wZ=7*3`3D--vc=2NM9O+ea_&ULQ+nSLRAwdWQSm1b#C_-TAT zWEQpM`(t@V_e&=jMfEltUjewAC;-EQ@&wZPV@k{F(J1DGjBr7 z+v#35RH;svcN(+`&p}l0YFO>)t0|N?4(P@M|4}9X9FyK!pomRa3d^4SWQ@F-&|@`X@xD z5t%=aA#NmJ2R@MEet}eYKP)^z<$#A!m)kJ%9NlXJJA@TIK)(-(1c3BOSbewej4OcHdKOi5S;L~h*mIEW-x-VlgI|0oF#qB*J^}rn-s%Y>S$ZS;q40dR15hNl;d9u|3a`Ti+C zEknX=y-6P^ev5XM-RLT3w;E6A#r%Ej4pHD|PbFrEH*)F`&J$!G{9*OZ_JADL+g?A1RS~e_@QJyJ5g>s9SxZ^E2zm%+_}pME4zibR@D7 zlwV8G_xL(N`Fb=W4?M+RgB=0BNmfs+(K?>#hvNCmg}C>zu1P=&MIT|0k?MbGik)J< zk5E*ukSa<`rpIDfS|_ChG=NZ0)kZ?+70HhUJyz4=k!;EqgspIs_7qi)hDV^{FDv$q z9;(0S#OttCIlw1Sn<7mfOUI1_WaHFyr)hVZsS;ZIt>^F^{a$Q|#q8E-TjR#ub*IGD z-ov|i#sbvN=TA*NaP^-TqL0hUh% z>am6YUl;%0uF-*k8Ug%0bR+-X$UR<^j^dvBuDGZd#(udWsnZk4m49x9sm5K!8W&aN0io3Jn{2O~C8EoSy8V&9D1eK=0&08uW`VDoR1Hvm>!-(P4RY z3;F}wISeieDz27-oUhdZA*_nrLWGhsBq0euIe`E<94q_>BrY~yOI~$$$o1^nqx_gU zeWj;jySC#vccv%qx>t#%!dbE)nt{NfxkKY-lE($}H6?Z)tGS(8_2KMFE0JCAz}<;DWa;GZ)V*d3?UP>f9eDF-M0p>pE4yG%TMS_QDde|B_9{fdno>))b z{<>6agxY{zxSl`n=QjZ!H(B0~@AAKJU6Jo4@Ebcn1>xUZ$w~2KFoZo&!ekgRZ*TeJ#ML}_iG)ZqdZUVl#_>U9$0@!9&g-#8nvP4} z8%ZvR9=$&BgoVD0=#k?Wxnfj3R+&a?7IUR8J}IR7p$s~4OX;y>D_J-cg%WJVa~_w1 zGA3)0W)7f<>7lW>ShX0)vr+kZr!~&PTSb3yF}5#5=tMaGI z@rC3(e8o_%CkCc%Z_9CwP&`)ABbSN)=G%{jQb_s((~bXC3PfJf|K{Qbo`73WJbA^ ze!3Ket!hWj!fig4NYq1ATi>lQKgvbOW3yB%*KH{4e6MHL>CY4-ltQbu^TOMH4^f}< z8;P!YBDW#-EREWZf{exmmkcD_C=TzGrvSViCWc}&0xj~1xXkRJbn)=0%zCO?^lwRB ztt$E-ekb~O5kW-k_kynJg@uI`!4@B-MQ1ZUT~+RltW{sOUF{P%JChK2EWgfKsWm$I z07D%axq5Se6n3d??5N-LfdDy7#=3l&M5g?F%0C>yfc}Q7wVbZKTao(Ulxij*y@BzY z6j`~xH_+VVK)Gb#rc)*JheVmA`J~Gpd|*hCm8rt&`8JN)tpM>NSr&=FG1A-BZu^VRlm{$ zEF5g!``Z&psCu2Ho1X2#vrJTSDI{!8`BKP&`;EmX&1NfQFiw0-PZIp(s6cC1uTl|p zD2LN^pV~KAaUC@WBq_(9y85oeO&C3DSgcGiQ;@?R@5sg89Z@8(wE%OyW)7AUCR!_})Yb;SBxNQaqyOqwEv~DInWK7CVw$FC% z|7bNSLV7~eXi5Ej66Flzmy<7NT{{14*9zY@eXEQ}*KKAWf4^7YHJ7=3{(%}C3!^@n z+q&Pna-sCM$ozZbCJL7HxY?^}C$XH_{XJq2?q4hqqWKby$G8mr78{+Un?c?>SX}fC zLLj^An3BWLyI9ke%>HU(G_=Umxc7p1Oia`psan6DC4ZY&tF$~m{@{4|irAmS=_)ao zTF20E!$(9|XJ&iGSt7un(L>rgJ9LmJc6GC4C2W|{?kw2toWeS<>s!w^^Vvo@)2Z`- zvcNp{8DI2@!L|_Q`GQ&JA1BMejas@>9ydOPJ;kx4g8UpH&q9MF z;a~Zm!o3Og^6Kqr6{>%`cC`5_MoBp?QmuMpv1FQzRoTDwwp~Z&sG7LkL38-lCZIQW zwa{l>vHnjyqM2#Km;fV2v=XJeQlFxv8!B-S(C!|yGrp$ectJ{QfnR;Z8VN!pp<3RK zpA|U$#8zC7g%v{BAW1qsZ}TFNovHK$9S$+XPg1Oxih|C{nv}i0hiU&YWw3 zY+kM=6B1g{kW~FluPG29XiDb$n{WR{edL$@JhPY_xq6OYH@3;<39l<`XwR?vUOGqu z+4-xFHm4y7*B;9XX0dBU62hnXT!qkZxx%Vdy{vL_~g$-JnNav?q6a zMw9e=Y)$*&QY+(Lx17;CmOJR@2=Ku#5pYhsNJ6{dr9NDNf^xDpTC!uR#dZBHk@GQ_ zM1>~sxg1t<6oSjklJnBizUg>e^=jEhQcZi69``H`6=%mNdlQcniz{03cPnCLu9-Dh z#x;DCqN2%xszB&hD!Pz0Kue_{CbRjyj!!lb0yLI7s_!Z^ZIBgnOKJ*yyHAiptW}EV zOy^zQm|SXJd>)vaz*d5JCEibHw70(Z853_3IHJ0q04lXo--S^q6rQact?_R;;Vrm-|dOdhdlnZfDv4NB~`Jk|}`nPW@ zomW`paI=6mxwb0ri(2*av!`)MUOVY>^^2hSO_cha%VA7I@AG>67@4j~f`w(b45Kxx z1zYQ+*;LD&PXE%FjoMA1EgyhQn0B%iHDr6X;HBsn;1gqdbkv* zLAb^2KWID1L#}ja<8YCkW45_Oa)tmeeTPm$=)6hv#R8zWDrq^bMH(f$oqvTT_|Z~a zotK)cs^ac?e}@#xV=v&kKUcAFh^*CsO!AH-gQy2gPmj-E?>2lD5{_J`$iK5%hS4w-D3BF)A5%U+?GT+z|4{szmp{@HV4 z-+*XhGhuZUUgt9{9)UtTg#JJ!%eLq4Jgr-9z9Cj^a)X_U%Eaq_yCiezr4acf7%5-9 zV%r6s1-Xq9_&&px&1a1MMe8wBskv0T`Kt1et}^0=H`uSkw;4SACqvwf?!2H|Q;&9b z>g`hza?`&O83guF-N-pSk%J$GoBuQJgjzeFSZoe(TyFCZS1eR@TT1m1Rz&o28)1+| z9r6O~LHqiBg+mD4wSzDJojY!(>2}5v1mM4U2W+kTs42Gppt}G0`cNk+MjYmy*eE~} z-&0E=ZJ;jQKZmW!Qpp^X8cv35tFbY0DFpe-V1JHtB5qDKt^2iTtq#y(9AFOFKTzts zD{WCe9VKn3l!Wj?k4~!((NBL(2*pCcPEWWaowDC%runPS37Z}{znOwm^9jT!{0g4E zl>w$i;u770Y(etNEG8O-z`bmk+(Zi$#|He0} z6)Kc8ua_#){-%%`yxE`vbhxZIsLNe;9vD;2)0vf!t67&#M?LWy3o7swi=P^n$aM1N zCE9m-7A455S1o@6DBDUW&1a(24)a*jUaVLWYMB=)gX@1@cSI2|eT3KJ;q5QBQTxPa zbAes_de;7?kFnxgh!DI?3P?fH%bXa^E>zFcbN#kGuT5+jNgm1vXDk5HCbdG{N3#K2 zz+6X9Kr#$HHa8%YPH%4P%N)0d`FASxZ{YUy=ci)jrImczGWqGQLs-YjD;-XbH0<`b zf{ub{Vg>v+eEf5n5E=>^;Q$%2g4ApiJBx(s23@bWvarr?Pv~9$Ty1Q{POI{E$k=pm>QX4mdOGnpB8XAaP<`Ox zLh>puSSgL$1bId7iz}x6q9psuk%#&_WAy`3$*R(igl`A+gOQ-9fXpBTma_&PEAmFj z^DG9xp#b*rsx%OvjSA^p@nxkDH5*!_;>UH9Y)~(i+3+25X0chn8nufW6W&H4w1^>= zN_U(NEIJ=J_8F@x0iGoiy|~j$Kc3riZo48el&>2bE|PQ7rInU24Y+3kA?&bX?@XH1<0T>F>EYvv#w26qIUaMu8&*=K5RSjKNu}reHjM z8*pqKaTP2QAtM9B_ue3XacLTb9YqvL7zEmlW^{jR6hW;5jm~6&u zxbz6>H=P-V-R-mavd9f+ep0ZB=}Lr>ymK-&m+bPH9Emk=YWc@`_~Y~7o&Pf z($~a#;nG@Ye8OwMkTw#8p{>96&P=#PVLUE{N&~a-M`q-WJN`aAeBk^2xMu|v!+dh% z@JHQS$|>9xK;4f!5|qWo@KG3FApvvrP6_u>YnCfU=!1n=ws-7>xM_7!WFw`1imI5K z=-H~Nb)sK+usy6^Je2i+hK*Z<(qO7@%;`C?SINSm?f_O;x(tX8v)nG-(&_1G6kwe- zHWIpSf{oNaw-}&>GrydgnO0Jm%vA+{)IN;2YNX^xBS7O|H6Xn@V_VSQSkH4x$dSt; z>h%i)X4AYf1m{te&j+JpB1(;qmcvLyh>5SJ^gk9(oRs>kq|7lYZP^U;YuW#4Hp;%Q`$SL&)EEb;?5}}vDE-$_rAI326sN(q|S6=zdlLs zh+L9`hxuxn)rsw$c&Wi{2;w*UoyXm{E@CM`qKVFKV zG!SI&8XyzqdF|I3X(waNyu{H!it z9@{F*&gFD(`7ZV0P9B&oMG!=8rn9$fF&TD{f|{G>av^Q_$su@Gi{FrRJsa-k7Kg0+ zMyZVk5lXIbUuJgK8Z2%G&Tv@=5;vfTIJJL4$^UG>1t!KCg8Jp=T|6+PV5ZM+7Reea z4+J8`u>_eV6BvF=6Okp(MYoY=oE1ZU*oGV81SW`oE2p76h|I4iHiLDD6@hqPltBcY z2G0kmP2GDpUX8dJY708Bg43=y~VoKguL=!o<}BhEjHY9Myphyv#Ybe^GN}E z(U1N*qWbG=nDe~*Fg4xf`P`s+3_2~}+I&}l#zBK_& zyy-b~SA@Kx%+1xJN~pmC*%<>fSt^=>p#TWX@DU|z$UbTU`#d?Z6v*MDK1lt_HrLsp5Weg$v^2~L5NI0hI-XR&T^BlQdXE#19Wr*?2e*tHS!C3`5my!tuvqvo z>n_g3A)OwY;~caL%jaO{UO!f_o1g{8qgjv$>^Y2Hcs{mxBF*$n2&9jmPT=@hF_ceK zkjDKJupYCD5w*{0ji%Gjky*)}C)=rzLSAB}BV&UgS#X!}llt${;lJ6_I0ukeQ3414 zatR0fU(21aBycF+sgd+3+EUz@LA`eYbDs_G6zMZ1e_HQx!TBYV?O z7AXSl4|K!JNy~Y6Iba%RQhx)CC!8{7GpGh&zxQ}m6oQCmC!F>^+KNoeMvMrNDMUid zO&efRvQr>}%0s}akuRhT9`S@l0Rjval?o6K)b+ZOU0nmw6uF8K>HHD| z95$9`9Ttv}iYIgL9F{%^NdZe5?AEKG<)*uwkpGerZ(iZFLe7ungG_U z(4(VF3PEf3V|+rHZ=oyqrYKWo(KwzDjTAwzEA;f& zJPp4F>=eQ&iB?DeV{|n^G?M`hCCKFgUAA1VCfHOK27Mk*7l{NPm~(WQ$bh|0^IiQq zUXKQ&t*KS*au4M}+Hk+96st$fax}eVaZ-Ov5Uy>y@;z*7d$*pr9lj7wu?yaqWQL9@ zn_ej|9b~p0Fa4|1YE8K!4}|`ck-Yx+hzZjMGcJZ-A|SFYK2n4D?^F)x?H_D#eE;$1 zS!BBPZCg(Nyc(;MQztnHj4yxY3iPX+NmFd3uN$w4;Op4&&Pe)kW5GbW7H z-%ksymcIxRBR68FRgQng2@3wqxhv-V0K~`+rCoOA!t!W zXK~D<)n@k>ldRdZ_X3>*e!|`dG&DJv20nHH*yrODdGR_sbc|^{k)V1q9JZeIh3uYL zo3$ir@Cz(|`NFb|_wo_#4ZwmARbGC(-G8*$!0_YEg6l~Edy79R`NO&=vn+@G?nWs0 z@v9D89PDTXd0-C9*PPNId||$~>(PT2f)g1R^_4LO`$r-{&aJ=RNfY@_qfLtfemKdSS09@vS(|XwW+d@@6M+$hVi6kBdK+9u<7zW z6W0b%+E$EihwP9b9aB9-JY4sg-IaH~Qhm&&9gg|~wQ#hrm_)_YlXptrl1dy2%X_~k z`Vc?M2}Kn)|C+SsOTVFvS)H3JZv3pg!cTOPY)vqy6Ad+m%oUAs#@2F;`7N_R5Vz|s ze3Iyn7z(k)Xl29ly|e|o%bykVQO(Ho!C|?wpn|%IdS%*P0lOV8SH&KgU8i9}P^5m)R3!^g z-76Cf?wVrp>jzwz62ZUss~X>5B-IVpI2@@pHLN7LopXF&;JKLRGC7WrGa86xl@cON z(OH_GZ+tjP6rKwv?Y8Rrkzy>P2m6f@9xl*$G&4AY)1$eCjK$^lGF(bOYE{juNkd(A z!gH^;yZ>OK!R2JVzh-K@-)-S*Ei0mAyq0uCw3gpiJ=L2Hht%)gUIIKBdK-OL;x_VU zQc`VYNr!J<;VaLIG1C~9rl1Q5)P^1!;D4E%nObE!bAEw2|S$zD1QS zGf(g>VYfwa*hiim*H5(qVcvBJ6ZZvaQGa%R&%tZ9p``%XHCU^4Jksn493mdCRs6YZ z3|>6ax!(si3t*cVk%^aJ!o^DSO_^F`2RzQM+eTqDCC3wzG_$JyJ%bo3U5=qX7fk|VPd?jQ>b{SzQBg_{?HUTt?R1|j0Qe<~)bEX=4GU>*CIUeI zjD2DRyiReJWnA+Trc_g{8$XUL6BtFF|1)Qjbog7^C4Y@}&-6U^DW_5qBZOfh1m)wu67R zY%#?JA^Xv|D5C?K)%w+lPK|{5372xwM8Hw)aH9e28OauFSVa6p4l92Zi^I{HNjEX=TUFszo=9jq(H@Mzp>-(y z)c=Asvb8}3>9!`*ka=U@4R$C0EsIIVMN|k%Y_L@KYJQNtMhI=kI$}0CsXqxG>IY5P z82Bt2ik!v!V!tI{!RiSQbF|4~(bIHnJ65mIgfiaESyddIEO)4u$Aua?`E)ZMxIGhE%ym%d-N$G{*$0Hro7(h_KQx!hZ{-*E7u(ByY* zf3^&P*+k*OTg)bd9eV*0^yD97RaOfC$wzLT{`%_5$}f1ZpL$WHJ7)_HgN~o`1F+$J zYXY1DnCR@VDFTyTEeFznxIJtw|7vGrr&eQ%AgRt&X1k06@e<(Ya@eQI05o`(`}J2w z`V2a0&G_y-+CLrTf>tJ>U-l(7d5%t1JN2F?)>WC$h9!nqeVINkY9jdf45f{kscNbu z&(hJXqi=eT>&v3o%r`d(y8D7vb+NoeWTJ6>aSUaSij)38&{)TzJcC;0q`WF|OOZZN2WIji;w z`{8dg9U-Gwlfx)LhXB7XgVdxQl*Y`J5wv`~o!dW4om+(wsW6;`*1O3%hil<4ZLSQK zg|`qrvYl(EEWsXeF*iN)5mby?&)9u2-r0H9NeR|p0-7uLN;`{>;O9nbON4#1$ka7} zm@S?q+*2Jjp4m7(`BGGMSJu;}A8%|?=1(f_^w}+G-WzetJ?DNO(DMpc=maFgnRLka z-CNz`QW|2#&(qt=QKZKd$Ek1Z7pPX8pCBzFH+``yD~4Rm z*&yxK@U7)~>) zv)>aE4hTIxKjLxRw12N~miyIS)xz}DR9tNA#r|(!UI-IW|J6X< zfv$CM+E?>if5n1ytaERsyWhNecpy}mcCzR9%Znc%F>y*CU$G;dza52MJ#-cJ)w>jp zh%1d(fX9ij6ErL73P#^0buixHbUo^^>y%1l!JZC^qu^^$GgurHoM9oraXdEmM;F5` zY^`Sq<5l5WK@RgvCvSM(IwjvK2H}h6(^+vZ|J(w3Z-bg4;v5nND-C|O+I z)aX^yz*V=t7mA2q^;yGfR6F!K0`weR#kl&Fr1~1uFTUeX8Ss^%QDnW!8}`HyL$+0F zgOdyvS@81$T`TtvL5>_E3T85pbLm0MEAh@|Zh2RbmrC5rdnW0p?gIFiG)GMKsUL|< zFNwr^|3&#=zCo?R)En_Od04789jMU3qHBM?`Qj*dwzn4;4Qj@S%KBW)yATH9t?8I! z0P>iVX`^JO*yCncLX^EuDR?d45d4SX-e$~^NJ!FR4-n;1;$EuU&9{MF%m$bA;RJP&s43T)Li020 zwlKr_@};wuoroLDo5_O3RKMJgP4|f~&moHI-1vcr$2X;1aI+*it+Pd-q&i2!_{{rg zPvh~ou|*Xjbz~Cpy<>yUiiN^699W6GzTNPm2R|81GqcQ~{Uz)re+-Z46sL>6P!u5U zkVpb!M9EV`N()=B!o2q*!{j@C`CTyWtC{ojd+p0N375&PFLPp@$Y4W`IlFd`D-PRA zSat|a>mlFgT1rchQ7?mnd3o)>tF7(bpSY&~*P0uwQ<$C=eF018F8aPyJem$Z2!>1& zMdx-iEwuYKBRx|bb`tkn-qrnjIwGU z8qcBtS;?0^_Up8ORWoI961!8J5ZV3bFhDot_d3KMOc`-KD@iM9hL4vx@4B-$?{+=M zjVicOchF#@XC|UG%|xsu(Y)Aa!er=vwWc(|%1UX1y+L;?gFr5o*zmDP{v|*Kz-HiaBJ@&;^j2&d8jQmrwI0-;NNZof8@g>38!VeH7ftm4}wapyV z5KL3rHEg@gS)XyAIQ;ji>&gRyRz@N$*I?+y2tH3O95Af&9;d>FGz2pdSR}l>B32YA!A* zEHWYirwbT4Z*Qs1PH~QD;bF%E8k)M5nJlDF5SMERPkDFjb;tT?->$Xf_I5m3reTXQ zjvQI$M$0TLV3rsbFfZnHj!M%>P^-R#A_pw}0lAcB?_dN+B5 z_pc7##6~2QRhJq{0?}WldC<*2=qmj|U>Md)`&KyuYBSsg$NQ7R`5$ZJ2uBY4B>xC5 zA4K2~5OPeC1_fOahXcpaUTCB9{uSo80;i3YBCgt-0tvi-lH?;KDCr?gqk}~*LN|0v zG3)UO%!SK$jI=J6HXNCqFaN4AAM}&1Kw(UBTA%JD^jKcaVX}o2pG@{`3Q2T4`9}X7 zoh8@|cQ$NLU}0#}q3O@bOkHy0O*fm?{iTtt@P6N|Zhk1BzkPh&hu2WiP>YU>3X4dX znV)W`ZFIVGGCtVOE3`rc?6`Ke{C*RwrJj>*LP3>hy0;k{s}&F}2?#=;M4sUH&Oq${ zk-9rs{riP?0~enKK3oe!?fr|YFTT05yet+ziJkv}e76Y%|-4{du#G3)=wfVeiq zycH1M0@~V=jKnz5lSte0Q8KzH5Weci{9stzvlFmtw>om02zq!H?1a1Nqb4>6#3Tvn zeE4ZoPjUSG(G+>OzCyv>qCNG)uYK6FE3tqAR|4Xq*P(#)C>*!07=P6H_T^T@gYF;W z@nLzvStUl2!kpP4~}uhgg%OC zhdTPW>;7ud9R{lA6#?x#6qNFfoK)qLW?8`?@=<3T$Md9YE*G1Ba8Z2j{ovmbFjIfVVI)6pZ}X^NUe#0((#N&kTdA@P ze+ZAJit)47?C~wuldw98kgUvfz%Aa~Et%ZmL3-_(oPS>w?B*ZT1@~9be!R;at5PEV z;MqODC;xzV$P`HVf63R4o~+iBJ__4Gf0fB%PZIF|ee3@r9RI5+=X_F(|CPf_K!CUS z1?Z3;1N^^q?od#Z|BA-r%l>~z<-0eaf$V*X66EP@LN0CIdusbDxQDm;q2h5nd2aDk z2o%s|^bB!rO;$n|j>aGED$gk2Y?7?^bZ{9L4jo1Kuh>R3O-aAPx=%{?zSyZ{hHDq+$!Jrv6qNF z6$4+FRqOnRwr~;euSnhL_QU)6`bVYuFRB_I((s3L{4Cgbb^joIhcb5KUb6ZdXrJm$ zVtB#BuR}&-j=RBa344YFp7Em@EcU-qaZ&)8=_v9S8!iy1dH_w<{6Zb71j?=1kl^JDEyls z@u&#Iw_Z@9V$U;X#E8ZfJvrML4jsuap^~#7LJ%JT%3v`N8=y^qlmq`i{_tNfXdY`? zF^Co@NRLi|O7$NXP~z|D9>S#oivw8(33~Yc?+NRK#)=Cq(Dl5eVz>w28FAp$$$DoHGZwn zS;zZE1-Se7>9-{g6T>R_F0+5Gqhw#x4m67yA7NzwB$aOd9lj_t$Kz91C+=4V{BeDC zHxv1M3%1`LTc*ftgR=6R@T{oZCC5(J0IQWD1N5wI{lA$&%=OvT<$pq(RP8P8&OGF~a{&2; z;>X`*ynmuwOj+#C))ZLAD+Z-8<=sh4p3$k-rB!}La83U;+>dJovlozazhdQ@zO2>` zXMU+@mNcOxKmHS0N$t{O=s&l~j}c^L6cCQ=FS~}@0~JI7M01%^QK3fN*ZBsQ`^%MA zc4wqj2Xlc^qRvHa`l`ZF-Wiem+bnt=A$w;BKCX9myy%ffz&?a^cxZr_>QFQ&(@>SG z`a^NCoM)h~mZ+e)WpmmDfePxI39ff-V?9K~oP3*fOXaT51%|QEqhZ*lWo=0+KkcjT zRQAh_dWNd!)OFLd*CU2tMWe~8YOd`rQ8y|i2>5de)_GX7&r{++3y=^|*EIZV^?W+u z!FoBcGaac9?exNXvTy;5>ztgFG~=FpV-nadBZ~MQI2dGgsJuEG*1e7Y^v9Dq3Lqo#J6VI}hElUMZA;PH(H^ z`uW;t&)Lx}P-!!DB2OA3-CGBblqOTZ^ZuytA9?aWTSe)S{G^oGg>I(C%qGX1!+O`}dpCeV;8&7)SyoUf zfnMRX*&x8=n=qZEUccgNYr8)v1uq$2%baFc=bx#9krv*q9G%g-_}$(#JKHUygg2;jKw%kI>+N$lc9_i0}RF1~0n>GHpS`t*`gV2EFk@BhSPLV84e_E_1%# z4t8E9ohV#xgigJd8#r?OuFOfIn`7po~ zZTZ1f{n%=J;??iqx}oaXO;N*7?mL8&Q9TkIr_bOzYNK_+}S78P(+Q^dV+-*2c5R#X3r1}*D(Bq zqoY7VACO0k)Y-n{mu%6tu`ybl*c39-MuJOWO`w(|=IVIkv2zbneB z%VNtNYZ-Pwj~!_jkG5Ii$_C-)#uHO>C`m#mN*1WD#Rek0P#sjSl~I%pb&|{M4rr~_+pa?Y|?HhN&Ju2(N?5S7v9H5L;McWG|zxs&)qyUx-0=h+0SJr)e56sFR}_w>~sa+acX zyB3nvmxy>2JyS_s9x3(5{$2wom^8*0R~wt$7BgSIQ!c2G`iEm);Bz!+=U{LGXN953 z#aJ8Tw3HK~V!uV`I4M*-Cy7)$eC760!4Cgiah(+TOJ3eR^of6n6ylpeFEMz;(2fOT zm55c8L(4cFMGbvSD#_9zI-0E zdpnbL)}Dc$5>`S-;9iX!tPIDBs<)1bp@TO}fPtxR(%5?D577&8(RYxVW; z#dyXkUYFgrDv#IfM}m8EK{!;R*NMb?E1l4LIV#1wg^P841-pzTzV#X{I%-K?Jcz?? zru=)GzNjR*5$5l4v&Q>BHv@@WdT)U~rqQiQwb~k4HxLlk6}>GfEiaYXpT!K{8p#mX zmiAj7Fd9rem@Xsdyx2;EPoZvbF~L?L(pdsiny^^g(Pn{~+jktogix=^$(xFgGU~__ zonb=`7&%eUFoF{j=A_ov-A_`fcnuxPRwWd6XRF+bCvk6*dx_Q9`C>Yaqnm$?%@=1EJTda0nF zg(dbo`)+>8nMP}1kL{^F0rG(r`!4Ox!5c$Xie&2j-_@<)6>0v9T%2pw6R*!xk>TK)?7Kz@w#L*y8hNnM{2DhKfz1HS4#6&s=gO0 zF=2E>TD)%Y25#lfl0Vx)JZ7{)fbi~8W}**DmUyM^e~w>JrnuN&L;Di)e=U-BJMEjc zU0xM(;$4BwMB%4n{a`bFyoS$Zhl2m^JrNoa8PJ1}sCER)HMgY~=mTec*cMz#Ok4Rw zR8>`wa9QDn6vK?o7aHAw{h9|5s=MwE;UJPP$jLc6T7~wV|0Z!35sW#A&S|}D43b~J_!E2% z|HEt@68_6QZq{D?55L64>!@$N0{u-Gs4;rR+a$5LJzAONNW2OdVVETY9n&AoI&w-_ zNXStW>$ge2SW8I^S)Rl)_!}5yVT$l8YWylF)d)pOYZ2%b5|kAb{iO4=QNfwHM#iyw z&vlP}>s@*XWtLnqnpV9T?K|IOhx4;QPmJ$G)xmUM%aYZoXtfO_dM2KqHloNE%d`pc z<+3g={P)W$U8?5$Sv%gC7cXpKV>oS0iomX8a^g;@Hh&4+64p|nE#MFrAD;ETKv3~D z6}T`U?oBq(?CR=zdz1ull~PYgtf6;Atd{iX@pU&-3~P&2VJu;+@9hR|{^F;(prD=( z5p}U(H)LsWxeMN`wfZl;N7M#WNFf+PDjLz`d97ojVioh=a(<4hprAlHjobJlf$`*9 z=DPy`+&V^bati;2ThH8W%RpIqN9e+D01vSAcKQ%;+1i(-lepE@)o+1FAeIW+M`Zs` z#?;`+09FQ;kGvl2!dpO+9hc`_m~tUYm7@bg2LL5Ooxn)4Ic&I`<8YM@Ng~#nD^#Ul z4E2^LQn5AtA}(Ku#rMneKAPmKhvRvCagatxq5bxdm_Y?}+(th9jKB9c93kx?69tGf zf!f-r1PC^|S;+6SN1Is~>Jk}Gx1>_Omv2@A1fBj!Jh(DoH!|s#IQ`Dn#7M=;*DtrL zfy5A9zY2pA?1xmlk3Xu_2%M=EZLeyTyueOU>~cD<%@XqUwW>8A|0g+Lh_I7Q=VzXv zsnmCY!`k(Z`#@#@d~%&_U<<6pd)z>0Us)LqFbR77z#j(l!DY7EdXIHpa(V}HyTTh> zdQ|$0emcV}1Z>(V(fdC5nItOmp#J9j$TWYUZp92@M5HwSlCl0}=!I{=`jC_8^GTMI z(%@`Qb^oyWZdlfNE_Z|5aDizo(euqX5W)LsxYuw)54y)1?m|L_g@ONDD?^_+r9L6j zcEFnN?<})@hI^0X`)mP8?m~?O3^i=jo~TiqM9(M;KTlzDv?aIeqh^blql>VjJ8x*r z*yTBU>;OdEC%`1l=se)CM`iI_idKO{Mf5Ute962h{8bssuBs5`(_aXn78kbDy@@Lz zs--&C3K!^s76#~Dq?U(x7{{;72c7n(r7iJe&2^qSdsMdvQ**N>Wwb<;7j|ar;uRp2 zKN=LDqr}Su+yD+JmKX>y0kI?iQx9%jl3nm;>7T?uRQ_>Iwj&6evdL8n@VL1`6!dMG ziF53q7eiyPSGmSqp7y@tbp>HTOV~{yeZO3|UaFgW_>!)3%C8lH}(u2B^ z%uNO-0+SzHP;AqH_&pB&VaS62KFt|TTl4D5Fu=qEny-nkP zP7buWyI&{HDyNjq;*n{F4}Fcduc z1yC1*M6eWX4Vg)@LFN2iB$CF^PaVJ3Rjrr(dE4kI@!Uye!3HP~ zbmy^MlVNzm6e4@5qKJaP>@Y7~@nt5(oj>iD1Gtg6zjtJQq(%@*vYPt}a?n$lPnLZT zpz5raDrIS5vej*`avcb>m@lsgu?Na+(R90MsQ#0a@juvS-~#dO+jsQZHBGv$Pb6ux zH!xi67SjihFi0Be3q2I%KOuYjlwj?psT2DhX5+od*eV1LaDT&`{Z^I54AN4K)za08 ze6$qVT&XUfsxxxkr^N3#dQiWMy9j+Wz(_qC|J9}bp=nvYLg0#hf7r|Nb7Uv z=Y~9rzF=6V^= zh}7M6^TTQxTjYx_>i=X!{|7k?s3;H53VZki{8S>MT&YCPFDH5%ksbcWZLdYg>qlRNY+U+CTLpx^c@L54q-TzbRqlO{L2-7PgZ3XK4H zPnh*RIR$gl$u;~LArdv?e6i`NEUp#0{3uc&r+0KTDn*0CeHN%>!JV+EvBLPnJ$WTs zJgU+{3B}3RgB5o0ejp1K0G8hTU1EH`9TQVsR}rkiQK!;R`1XK_JItzWf$#05-ij@m z>w3uto%eA@_WvcpR{GK&OJ%yid=CgxW2)Hgi~<=b@~{%0!QdoKwRHzkhcDwJ3p2XF zLTC$_eslzrg~m&FI#%@0B!E01?ROkoy^sH;w*dXitz#esmYjY6S+ z4YB_ua{vl$h@O0#UX4iN=bEXNzVh|KH8~X+SCh+lvt`Ezl55x#mdfqgKY;Qhin17l zJ0A0%VZOFBxe8)=S8)7+&&NtQT;-BXl9ja@iI5{?zGjU`DkUO#;**HyOei+Js>)PV z5O4sa1C#8YTwBm=7vjR@R=!0>XEhf&S(I#PF5q9FvrMH)n^XWRfYJV4xL)e|uV;_> zn?}B_=VhE6;1Ed@Je&sVw(${whEYhg-rd0jMH!<wRHP@=)#QSS zdOnFZ=!EH~DFj@K)M0;)c-#rG<5<98lkKfvYlW1LcWqroH6>4uu^YRU+x;}@lxp(_ zbM|uPm^`f2RW^n(HPFQ38ETB*fVCuKzAQmmSP4O6nTjki?j8kV`GiJy!Qpjf=cSLz zQuc<-%=lPAosJ7yO;NS=>+#dI7Fegr>(~}t-y~qOKFvd4LkZ9#z^yqef|uDUQPYQZ zL)qRF{-9XK;5#nzgUdl$O7zO+DXcKKt!Fm7^0PM64KAtsfVq!$#vH`K_8ka5rCRky2 zw#-TfM{Aj?vSTTj4!B{LnxRezp)e@>8gr(N?P%$n=I_3`9oIt^e|l3giJJe;< z4~|bvSY)6HJCfb)pqrG_`N+WH*hf53>gxwA)VNrP3RM0Cngp5&te50lvP&d9F)M|; z=9Cr(A;)fW2X?2ev(DdS7&P5ETaD-FFf;@+Z={-yV zzJc`~{5!z3$NDs3Yj^IdK(jv3^{l5;Zya`4@_Ym)`>#WQ6F^YxP8HTt<}^6$GRayK zQu3QwC~Ik0nVa|)6q8`E1IgWhQzV#Ie#{ooOowGsNgwL~s5y|a1#s4g z?bH}-7Gy-pZ4fok*>{`o0I7Q7OKN@{6&NcJs^EPK;r3#&5# z5nEBa#lYCfYT_)^`Dpq6Y=AzUeuFvtkju%$WK&!X+$BUuTO5GweHtVZs?5w(nf)6q zA+uENJ^~!fo>P#swY3TzdOIDL1uMZBngI$+is8bD-C)7fY8JLc5|aVYFc~VQ>xB%i z?W>G{NA#0g!6Se<*R$C%a&c(t5(|wMA~6sawtGU8X0`}CD@bxy0k1))HrQy3?`Q{z z36dCCfZ`Pu1AD49uY$TLmZ@lI|EmC14ySM7u}Cf{K`ZQ-aX>CseS_;Cqb|R!*x8%6 zu!3Ty*my}noOvB>mpfzU0LxGIX56?CBH>eNS@L>Mz82sG?;QC3d!`l8=wN2*qFe!cqy{{qD5?V(O8*g zyUV1&A8h1!cpr~;H|=*$q6NOc3(dbeT3YCvt3H||lwOKStTZvSiSAykat-|zBMEE+ z%-zUi3rcm{c9~5X5l>-_jg2X=RTGCzfPJubg9B=1DwnmFhNuZ(wD%H!|4xDRM2Z3I zV#Or}V%b?R#`=mIuZI+8_yc)F#pG95fs|n~9xgIc+@sO?cEn*z!22XwJ^gD0pi1~@ z`E#dC#7gHWnCe4fJ#-?+EnMF&5DLO|#-Y8T2zeia{UJGMWHnV8LPSaX(b#1>-(ro* zCBE>7x1F1c%5rDGrscd@nO^?1hvQHu1%2;BRR&$99sG$u%NF3;x)Eo{SzT2W(3eM3 z^@sO9{x7NXud7x@S|7$+JYn?F0aGyJf?PJS!e%TJFw=n`Nxp14uV5=2VZHs#QJ{YX zG|sn3VCnrrS;T478@0OPX}bMqvd)sqZ>2{%+5O@Gj)tls`~$Pe9gsIlF8y@1@H3Um zS(NK6`tk0P%WDmTa~&&DVtn)qA5uq`C1b}QVj&_X<(^2wvmrJKi9=zS8*!muo+z26 zWfVtg%j*=}gjxu!dTl;Hgi6nGZ%-2NI=brvXJm4_9SF;pCuD)_w}vee1_8e%3O?=% zi3HjoIsQ~cuB`&IjPq2O_-ssB5GPLZLgpu$uwU$scAcM_wciCg8G&A?b ze6wuegyG36Jr2~6%I%HW=o^v~RRkXY-vhWp!U~G&Od08H%E=fvZ=hJBVuoaB}E7@M82q&XvD?E z1op7OzW3|!1-z#4F|oR8SsA9AG4m7HrSuc?KEu6SJrvpCw`60hCBc}Vf*FjVY@z@U z>M~OeC3P{o*VTI^Jkb;Q_diY|fV2Ri#=0ziaEDfimAHQ9CY{ZC+ML9avuJw@H)NIMi(abPyPC87Yu@@J50%Tq|XdIvB&XPiJssHA5M5HUYhAS zVD+o2NNd;0k10lhIoZsVy3peEk)K(JFmu*&y_#Qit?}D-L=ZSiwE`0?SA-qo;hMPy zu~~PA`QH&Ji7y?6GuB_scJuPW0s-l_dbfIeLBSvic3Ahv<`>Qsi3rS4oHa)faj_9P zN>BZuP5k`z4hWomJ0PV_<&DeE2UbTQ!HD(i-No3i-(ff$Xc>$9gX)!X9G{uFRPk2w z)W9JE2#D812^^9LOeTYBAYLE~Nn7h@hPke{Yy>_RBj8de^v3h0t}p=No44;Yvx4f|4oips!5mx{xCE1z3o3EVD)HywL=6LNYtE$Mf^?7EYyv$Ls@q#S)RGRis zge`j41O5g&P`BAQj3Pj!I}{xq(-|HiT-Z|{S^`L~M`IdU;M?e`r#W$*C3~>2IoXKQ z?2)qqqV7!Ev?Reei~Y-(-fS&KX4~JKTt+)G6?UDtOX_8fq=p8&B?TN+%CSzzk<%N1 z1Y~(2rm|Algo}FJWNPvq+`>&leAn_{_6HSU32@Q#8|De|30Cv@Xk!K9rFOWje3j&1tU)EK1S;$)emh&&yAOKeD{Osdu3wBI(S*mzCY?6TRjUrX2|0DRzI9Nf#ldSxQ|FU{@CFMm;v8IXS_eD_opCbDv9h<%WHt3b0 zls47hCm-0r6|v+0G}DLIpr2LXg;y~O6o_STCG!_$M(Fl+u>LB)_%9J{B2VKB;>gF_ z+;Fd9J{d#?$m^wmo{h&BxK114r6`xy<%<--c3@R?Fqn7%E!CtkkR}0&VOump;|9gL@9>Tau4&sx0xjk5$Ou7(dw{#o*w-xHP zjYeVhaAWu{IJY)#Vo@ZR+LEU&@xTAJs9w7Qx8AS<(X2{3!mQ%}Kuo^k#|>l=5=3Ck zU6d9I`=`RX^G3tk5*$dul`q)KS7z)&TZ_^oiP4aa3n-x9nE&&N0o|{|yI*~UdIkH6 z;o$k#?!g7zTt9X+s1Ilj@S+6+fHldp7pVeZBLExs|ALSJ_E&&=6L`hHpw$30(Eoi& z27ulEdAtn}F1P}e`|`-Y*DvjUK`{YE{_|0_7hGHX%Yc9N|G9iAz2YxE>XjsbtoyfK z07?od@;{INuV=!_Uto=GrcCb6-#&^Vyp_9nf*Gz-N@n&WvqUlvwEgzj)hJL7%PZ0x z{&$oHG^Nob>l=pl^&lBfh`GBdqB6d-Rv8{6U@`j>L=mXEYrB!h9K)uYzd*PErt<=I@Mb>JK^4#3uVY zOYF7|Ek*uL@grRzp%Y-T?%U(gjeaT0Cn)J$1kgS}HN*DK{{_gIUfcdVZ842)wqFXb zb5g1WxhDMmsC(ew9{W?CxySwwlz5}M^N-a_8;OtsBH$Ok>*2x8s14bxgV$`|iC(qs zJeDdnn&#OCRyXToV##0blhJD-W!}CN{8#_{qbL7I8J(H_&tLxkk+j;W|D9uhXZXJg z3b+Bh{_2~*s`Wp=5d9tAOAMRJiqqO`gRQqF|A!`|+&?v%-xY@2tS2+e|uSZ^T zJGH>rzh}ZygAa>_zR$|^II+)$eXutOf1yK{jXb@*xi_Vei5#0)avrh%p5!%EN*#Gw z=uSgNqq@-MaV)>P6bNE#c1@Ov^MtpRmMR`kKmJaUOEwBkd_D0d$oB%3I)@ zsxSKOx|npzbmrQ4(>D@19rYnIvtQ1U#14kqo`(AJaCc>SSw+zkOl`cNpog`Jn~jUv zu1SE$kkc|i%G{(R+1aO1m0!h**rXj^^E|l3`vKlCG{TB^n7|8~Y?J+Mo@@_tHs%z- z>sr?z7pv-c8J1N|a`s+wtURNk=Cw*1#l74@8yrGtg_8q(Xo!#!B8`z=2)~IHu@gNN zUFhQ%Se9BxlMReAiI3`Jg0C7rg*s|eYb;3@&p8<}&=c_bp;^BI1K)H~CUnJlGLj}wM zfVc*59!93Cy>L|a_k~J|zqwqekdhiaz{i^yXXa{f^E+YpjSdeEzdlF4I6aRHm9_kO ze4r}2wXwA@JHNZL)8E^hiM+Xqi4Y!kcz~}s!R)dSSdAzRU~O=60xv$+W%bchcap#Q z9%jhU0@i9h7neBA$_p!y)ten%_Jfm=Z1kPm^!#na;FD=#S6_8}WWK+MavI6%%=}|rKTm~ifrTYOds6TK+wo6BUu!)zF*f9$`;$1CBVL6N3Y)!E z)iB-bhx5(Fq_qlasB@ZGo^15_;QU0P`}g9~`0MZ^)L{KMSl+tm52=m)8sV#UudS$% z7651pw^O|8ltId4cn3hyOORwB7>0sOdx#9CWFV_2lo(GAg@BqKg^ZPDeuajO=yuX% zwbil_u}BDLqaX5kUpfJ7Hxe#LI`g)dLIL_Hs4;3YZL1pM|1;n`UQzX_(rLJfVok0C z&>${g!*RXh{hT`UoXq1se6-|#wCpaYBHztw8LF(HxuT}54gZ#0SykUQzq@#$_4#zW zK)Fz*NX_=97gd<&>h$(%*a}&eUY@bMo`htlXXf7KYFN9Gr`a=Mas#eKV6|7muf2!{ z>$=b!_g&qTzlC!d94tbp)iIu9wnTz<%`822Ae+7^@(Pxf82s4$vj54)SCvnt&o+q| zDRHV%C=NPN7rd>{pxO9ZZWGUm8IhH6-PJX++} zl!(4O?&|JqI@E|ZSyN*%HZB_d``K>OCVjhAPObwUkMAy-pfScAZ0iFK+HR-L_Nl_` z=6z+d{Cv|8yS(ZIzsaAT(C_qRzkJ{>1&O%Cf|#T#RK&W;;B6#{@k`aX+YEC(j8ZutZP9?d#d9yJp|kpXbV?a}@s4)X)h=Yk6nK z$V4qF4|ZK{a;4uOSu`?nvLZ|da3x=7%T@srI1%^H!L-SdpvvdlV~u zE6U<~UAiuTO}f555%qrGV4c9P)Z9gShQ59)%IzPOq%WxSO`kB8?Vks_`LPW3eD@nBE^1p(do9N z_(S#doL+OHUn1g3((I>u-QAv#P-KWiRRE;OR;?1_3k%nw^euY4XyghS8e1LN0|4h& zgTrlsU)JOqCJpb?jp4%%z*>Za1h-GHCrSU(_%7Xm?ODbTI3K4LJPvO*5VG2MybqmR z9NxT1z9|VuOi}4#sWhp;^L&F`!CsKU8G5y*dXu)wwKUpWC&_lC)8b0_{R?SDJV-!d zeCL7HNkuT-*$&++3pll-%KnO_)zY_HOMTc#0a$Ng2wq)Z+z}O%6g!+vk#=1jQ>e** z!1SvgBa4NclVad*zllI!+{qUbh0C$Dv{m662lTD`6pBqoW<$WB&Uv# zF`r6~ydO@t{ov4Ne;0i{L_wwWkvJ1U(p0SM4*fw?a#}gUD>S*D#A-2m)e;B#CR}Sd z*Uwwy(g(q1qx;A~M~`nxx}DQ~2n3Fp^n;rP} zHfY>#=-LLGHO(U`Ko}w{{Y|Qw8*IU5MJSTu6@mv}m9)@+;RP&fFU|ahOhncvJb%6N z+@?@@G+SSoQHJBM1&4t22w?USJB4tuPhxg6UY1X>A-R2eK zkEC!^S_5&#c|_D`S4$d0bY_>uTE1V_dVa(0rcuAAhL-IAQ2W0$96Ai+B|D+Nui zz=)ExmdV%v@}h;VV02XW1W5do0hWh_I|Y^)0vw`ljpYYL$PKduj%O3M;X+73(m_ho z#-u|Rc}FA(|G6$e(wsgJ=+LT7_n<4I^Asu}cNoPbEW4sNeK5BZo-O%<YM>phhT7;eX-gVdr z-;$$PY6E6srdhikpJFOmsN}epZ3OAZj#@Eo&zgTuV>HvM_jK{dVNq@Mpx$9l`E<8F zC%6-35xD)?H#rnKtL-c1Q%K7M^gA~1>yxH2R}Dc;NR5Li*MabY!;dW4%kb}V@hH1n%JkO^C7MIA2*-qFTlQ)sbdqnCuQwGJDd;Iz?pMD=vLNnErt^424jWW18co_<1 z3R=2*?~B(wt38ocu%v-}zN?X~h7aPh$K9xHNkLG`Nj9f?PwcFpeT)qDnI)#9zca?N z(^hU3SCaEO>&A7Ipd!j>k(R6^=!JQG%{jUL!HDETe~_x|4B|rieT_RfUPWOj@^8q6{nfY1)qJSks!XTzPq>2!*% zSRMh^H6gKKnVt4r7N@o@%t;gbG=Q>3 zQ(Y>ypY2U*+lQ|iy_;LAxvVc?r2Kw9{bYfb2yVleNMp$BX0p+%)vTFkAgCL$ETl?Mmp%FWB$`I*13kAxt0P{J#@?Q} zIOOcDTP6%13r&3~*DpJH`nCx2Hd0cg`^TF?sJui-;>eyPfeKrdhy4i%8LGozmn^Um zDk9czr^TCdMeO9`Yk5I!DQmSwM39?QKEcRSFia5Vl)2=)_XE>-^_Jr|=M_E=KN#PeQc|8iRNiC%G_DON9I#`%R#891vKpH6gLD(^I{sJUO+C&7+VO6Za-OYsdHKO~PB}#O> z4^@p_dO~o#>dYmiEzs-g4MdpgbG^oK2I?TsH%#^8F)AG!qO-;KVf+N2CX8>pB1s~> zzf?V~#=Hi9jLH&t_rWOY@7rsz;G)CM`Z~N|jrB@P4pvM9!-@a_w@ZSM*fk+LyD^V* zRbe9=JIldccry3H+=%z5bU3f;M`Ui)kND|TD+#{D4h~Kfjw56rT8}9mTJAJc63g*gl4=b0egInhncU?m?Tx?`+s*{4;w|77t zplon3@EXh?$H&NklYGS^G~vvlN9g(fYuN zoNnx`p$*rtd1bejOpZC*7!{?WpTqgY7NaKlT^zMTcK7WZ)GY1D=NO%;Cmn+;D-LN3 z&4WT@n~w-Z9cj^16J#7|0~q_<8~i|hH+t!VO=}q^?9s$byvpo#i%N!VE$#AX6R5US zB(F+2Vz$<^?WDa*`$%SAiNUo$1jukD?eF1|lxH4sX;4@zOz5qVt@xDTD6KDxdAtgU z-&^=RH8WjHHF!TCW%M4T?i076fBa{sWSEEtinM#Pdfwi&Z0=+h!_pAKBn*v{q)f?J z$j>>R_}+-EzW}#r@L2|{vA&p#CpTz;MqW5UX)5_XXvOW$7Ss&29b5E3-@-?29w1B} z6rmA%)gtkE?ttQ!j0CDdF0_T*v#(zBXj}S#m9Er^rIw3ecrlf8|ic!^0G>s=s z7%hB6tKv+u!w`~<1NqaI5Y%zyGktSm=^9=S=cdav=9k}FhaqhY94sZF9W%%4DE;*Y zho|>Cmc!pTY5MNEtDV{p>ekIv8&1e72{hAFhGzCCwA-xJ^zC{S{Bb^(f_${{#7Jx6 z`27T`POmu-4bv~1)phKv<*gFrUacA6sRfG{7FqOAynfddQ1=$T3#mFhC+k9s>1O6A zi4Gkvkv}2(J_{Q!)9L}sx9$Qx-pvlU= z*E7NSNkSr`;Tj1{LTuG@f*dJ5ozzAg9F9Iwxp#~$AAZ3Ig(w@}fW!BGede>i2P6%N z*6@<7eh}QE)Z0%V7wGXD!D%h^{adM`EOb&##(UgF+m}2c z@^1BymO)_R&3|2S}<;vBj`aY!pKCi>s&?`3H^6IKHs~ z5ix4f@pbOMrc+ekMn~qzxV*gPrLdErnf*3IJH-Wl*x1x(543CnVqvQt;UCv~JJjGA|;ma*lE5 z(_$XJUHwcY2gX1&=DRPkp(E;APwj4N2_(W*!quGUe-fJFK^3cpri37D= zWk0On^^hAg{6s-%!Yvb?f%-kHZ|e7fAl(VQYAbmw^DJpJPuNWb^pn%xQ(c)yADz$! zX3Xdm+(vO=D4T-#9wE|j*tkYp2eY%`9jW?byegY;7de!k1*8q;R2Yqo7`&nXHA+{( zk%IDU(jPZTG+X)dAP2RFtVZG@hbDN$Ap{X7hxkV$N6PI%+ydG|v^2q+iL@1{tyU4~ zG@Pi77k&M&ss{9R6eu<-VPoGS094Py*jm;b>U<6yS>Syds{7D;>)l6X_Ic+|&oq)A zh>iXUIQe$7MKt-W_4)C5B$bPgk>hJ?7mUxt(yp+QZ;{0+`&@0ejri`Qo}K~b?b@uM?< z=2=2YV(W_*lSCvR2<(+uga>2Ra@+nRw)`hyM9S+C()9xrWPZ;pzl}z|$E#7AV-Iu1 z>q=|nN>?a4qWrx}R=ZT5@9n6ki&gp~&zZS9ZB(L$XJ~&olth&y944e zUhRBbkZ~W7!w-$V*3!5oba%!#R*gG6^}2AhR$ZL`GJh#CQL1g-_}Z7ej?3>43dJ zLL=}xFu?mXzzuSuTtJZ&kS(tJlLAj+*`SSP8fK`JR5vAKjLS$^>DC||% zq%;__bCQ^EQ=-xFLgXnmh;gTn8=3a!`luOx;P9=UI>5bx-8p zE_G0L2aav4w?BVN)QP9Wr#o-CetS#qFLT=$kbLZX!lKe$vbb#j+{tvZly2E&fJFKE zhLFKScGf`?+(%4m`2!z))-cLIhOV_x_6;UtXRi8%6L~MsHCL5Xie=R;QjuO##m2=b zYB7_aUu{ohqS$pJQ?-RW4gh69rNc^YJl7?ZN$sObGR^>}p@r3;Z&GN}Ls0+l^Hp zM4Yc7Fcvv87$*X>xj)jBGK;U0nT9rwv;?6bO?P+6$L@bnJAX?lU8MtOqa&q9-EwB^ z)H0Rres1(QHeLF_?mCO?63K& zUcPkCt1W6lm|L~;)dHP^wL0{5^Z*4$jXGx^ZGg3Qk=PO1oMY%-reW&oa162B~` zU||Oaiq1P?nuciTI5G<{bZZlHf`PUttilM^S)>P-?^eY!wFhda(_DlDwA z!Adq`HlN&i#|)k4n13GJqv?2(?+_5lamH9oFxuR$;Ej#I54W^ssUVTO`7(Bbh2W@( z!_7qVHk5P1*K2_}KfHE!j04WF^`}*8y3MOE_uAK=+%2i6^(BsynV7U9)tV;-@9z21 zzp$-R^7HA$sp>jcR>#!#bB-OkA34KLt+q)Ekz^jQ!y88&B?kGLK^x>RayxBw30r@* z9PC5v12aP=O)tpcnX5H&*2S|Ag9llnC?8A+#RisWJ;T54F)b|| zX+ZGrfH`E`e$^lVp@Udv$Ej$T{e6oD)t~KIsOWlzM>Qd`-E|*2FS2S;!qw>^ugwPm7r9VvO@}36EmekDe zd0(n}h*^ z7-?0*7dylTA2lo-x&En4e@yvPE{$8P`zR`-xY{JySmE66kG9#f;tMgHoZT^jtVJg*O+C#||=bthZuE=t|JFN3&?^&UD zCk!YH1HPZ2PQiVM*VIN%NMHac?`sYuwqp}reZDnK`a^^Y05UE!(I;Cv3 z7P1vlDv7e)8q<;>eO|6?^SIhBMy+djahhq}IRBr$16$m68BGFRk=4imTnT@`C zmrq2Zv9*6oe2)~E#v2XVXv>RU&G2QBnBos<6CrhdRXjJb`4b6jp0Ud;tK}W@RRLKU zHycABc}M(twSb?AP#KT3cQj8gEnV27p;84g9M`&eAn*2RWFr453K6-|r)z^w@*sH6 zR1XyVmLZ?Pzpw=H^PI{RY$@vCuk*>)h@ajn9MO#5lYS1Vi36;pdAlsr_R&WB(VF6{ ztjE?%zo^eruNQSmz`@M<_gu5eg}1dB>;#v=pt;mk)u{5UD62uWzLLN`vf8sqd?)Dd zj-Bc#IVH;5l=(jM(ZnN$MGML?-3mQ7c~>5S#&2-mMI2Y`$t=2=8uD3&O)N8yASR2i zu7qXXokwXatZ`nY?WIs=phnx}+vIpll_P=EoVHwJuDFDeC+`$`Po%1izOa|H3l$Ff zK!$k_i?S1h1(Xg-IJ0IP1>x@CT4CZ>e514KOdAYba%sOd4j4sHMG-$1HI0>U9hMUw zm!ol%-KBayWfuqv1dZFi2LHk}?vLX>zd0`QP?0R5*bT?*HIgogMIJt#tjrH@=@MV% z&HQ}Ek=pJ+in~|eAAmfhZS%>EhXKOUS{7Uw?o~y9Y=J=uZ?BjmJFQi@#B)SFkwHKQBa#=XebA1}QD6g4S4;>1$>g zI=9)^3)gh4Crk1@`{uMhz+NL zo_F@aL9mC?cc-#a$UmpBEo#|*zM}cMJsEpwgfGGJSrJb=RPd@qc*8GV1@pFE0==cK zohCXkyJaJ^FZe_JxTMTyYP)eC5Hj}zW$FsSs2H7zlC=g!Fo^kG#o*+IUrV#|cnggC zEVZ`1%MvF?3xvf9jqx`J`z*?^uvf+6Cf(zK!Vu~C?dnfvld*TD*q}L*zW=E5>^LlN z58W|e%h^=v)8)#8^qZ2B+NXD>DXyQ7JD(7DuK7+zzfFv=@5U-#r!>tpt~?U#Hr>)$ zCpOJ2d!e}=oIcyT*tGAOk_6=uv$cEQ<$5n$KSPc1Za3jtH~8DHjxk5BF5OJmHXkBd zyFiiG0^a}DleJPe5^(Ed2lf-8o`M3dY>LZxU#^cUwzgg3mqPTkdq^K^{&cz3-5pPehS}2=99hWm$6HX}(K(uW>(U|7?m}x$L$dnt`i# z+j8A}yrpS{yDbjsrc0L9WYVP7BqwLyo+JD8@MkiS!m@0)<|o8!YLl@osq*@DAhV_a zr$KJ7n)8Ab@quhvAn#^6>}&Q6>=J!gTBf>Z7^iySUUN8y#_P`OPu@@L>y+vo!jX zF3Yv!wpEY45Tr6I8rJ2)881HmL1#gA1)?eDP&mjOQ5m@A`dY*)f@;0`y-9Dw>g%Y0 zrP2N2+lub8tA6iIPP5SAm9Z~`So@oA&X~(8Ro5Qu4sI1Wuh=)UB^z|E!#rJjW5OSU zD`i`+auyUgM#uD-O&Ghf9ApSp>jYO6Z)unO^hrDw5OjFx_#D0@t?j{p`=QW{hC?LkrjIab{4?N5l};F^>9V#SW3kH^w97_o> zqOBRNR73)#BtZGM2%mz!`Kwybn1_}CNgPOD4q(6)DVeMX&R&gUSX^Z*wux(j?MHo) zF%&CTlE2yEF=7lTnz?jg2r3Hu!T4oAKdl`~AhSQ0Ow(lMFHc75mOpWI5-Y3~J1=iH z9vpwf7tdf2D!55Sm_hD&9U6udJi%NCO{i#?Vvad1FLLY9kiBNA6)QfTyNYPaKKnXG zFyI|hmqtH%g6XH$Gfts=_}UYKU)F{WpFf4kMeauFFJkG!h}RhWd{W4n1~euz18Dlx<5n-cBlQDC%Rh*5mZjYN z2wDk{FeiODQ;yD>;M0DxH<^7$&RG#|U@-3>UZ{Dcwm_LG!mFzv_Z{WfdnasAT{Igf z%W*VR1>BvaHYDAXk?{UuHOny7=a1Wx1o?o5{>Z@nN1oDjv7)|0u5L$6zFo9)vk{ac zBph|ns9>r=oOsMdB#4dz?{^lrB8A3pbFr`Nr9`&t(GkkCW&DPVrNCNp7{FQ|ypU!2 z&KZM0zN?p&=L5Wc_7?uWUs~eosAUck=I7OdL36SqH-EdhpjBG@km18P&zeRg`oLg4 z0Yp3BLqh$#c&e?c%Hdiw3H0+ZmbJlQd8_!Zu{t9qg4qf63V1kE6~4o=YPN@tCxa{tb?)eXIxsESqt>*14QkMzBSj5Yh?~#rL)O0F zmu#|%G71H0{GP8 z$BYNVuOqT8Yw@Dw+$4^81lWTJZoBEdcIWr4b|fBxbJN-}P=9Z1+~Hc^=}JDl0h6EX z!tma-Cssy0PFX({)2NK=xF3I)$PrHdT5}sC%f~e@Znxyv+EzUVrD;`tsW{Tqzuj^> zWZl;kIJ2TB=tySTC6e&K`)D4N>opjju#N|=Q0qn`7HHi0RMDMaMKfFkg^TCeVX4_J zL*7N%$x5uEs&Y^g+w9)sihYks+vQ}k-A6Fy4Q?KOroxp8E;Cd4ll2B_(55CyKb~SR zZN#y3f_&4V*pk^5c4cq%%ncKZ%!JBS$hcwAT%U(fbGYN%zQ{M*Bvtta32>dWJ zjvj=eAh9qxvkdZE_Z9p7P(nXTlDYF_hfR5+jWQ?qB(-~_sme@xCItCRX|IA;b*R<- zu??f?3B}pA3ZwPp4tmejKa&X|FkwGrbbPpUsCgY_#B00d`s2c(n&qw9&RN!PHQYwg zl=u1`wmsZERwfl^Mw}aXDO<-D)O2fza5ei(_FS(x%n%YM!es=y>$EG8ZGeoHSyeWm&rkE za~Tb(Og)0Eme`QPCFfFtJmi*^cX~MXLKu>-Np2m;+~AUcK;!Q7K4KuQY=BGa=b0us zpIbm;5e<}WQDpk{D{+N*rcX+!OUfGO+BTA%d9NiBTx%<@65c4c9H8!~K2mD`5Q*~! zAAILJc5UO4B=|&=z9%z`Si7jkp*5D1*MygpjF2~ORidqAr<6C`7sQPNL9jK#o^EbT zNJ)~HG^3IxM>%rghcJD1Zs&L><3*#T52uYn^%Yy_L{A*ztH~EhqA)TkGb4zhjm0td z_6KEAkISXcRgT?M!Iu4FF4Dx5f0KLvIB^e#Rg(ke=&M06ELHNZ1hN+l(O?+|eYf(M zpC(Bkir794TXrA+5A0v>hW6W#L8Eaz59Hg~VWe8Q`$Y+_L-F2nj&Jiz&fNVDH|CH> zRknU){$`=H-UlH{NGBi6wT~g;+z(XY3h2xu0V6-S94DqDbIs)=}ihJ+2#T1#Mq zahOJD)U)eYFylPrsplMWx^=5fXbtj1CBB|jHWj_e{6!l-QP2SyB=#|MM+8%M_}m@I zvMK0@so~XAqOTqoHkue)XnWpkOE$z0ZJFl2Rw{C!Epce#9{pnvx0?0&fGEB^tfJWA zkrb@OL5ixw>i^T2>?TVHA*zj;*n?FCA5ul|s^@^KX-b&_+qZq;2x98@=csJyrl5Pa)?(P%> zr0Xnwp7;FU`~By@7>u#jV)k5f&3V^F#+EV>^~z9#!hEFoNAlW0B$;H;5STws3!~p< z0*ueNCjdHl;gTkMC9lt>PIVO`>5!H%_>;IGR820-duio54Ra<^TfF!FJgCrRGZVfq zw7$BLbOuA+)1P4N%qb3}3tEt6tf-s(`-f_vTUlj!;=1D*7O6$&QS7q)>Cz$4te?!| zp?e75<;hf@5EG1tuhb3*p8>$9Q<~8-i|FHlQur^09H(suZE|D~VGe-jOs7J(8N;?~ zyZmPC17v>AJ!cU2A(jEU9h;{2vu&)M_2GPOq~!62PBc<(C(i%Dw98sBpx){%$?$P; z?pE4=o0@##IWQ#K@9Dc!EGUhVq9?l}itV7LbvQc!k5j|8KS?{SN_-j9Zr+=UefEur z@aR3_XCaZyT&`iW1$kL=;nJ4;5dQgD{E7v)^A~Zhw$ol*0=^7OyerMD`Uie}i2>0fC>Nk!hpDzq4l(m2{w?7)N zzilauN#%4c#FB<82Al2;giXZQO{0aczYx}lVfR8M2k+wS&4&6*CjA!pMjXdJog8OA zor(F(BW@be%SsI`OrL)1FTw;WaWW=u3Z-#H=t}TuCv*7G$S8)Al9y%H|g{Z>U9^;GNDPhxFq4^O{kZIQHAGE5{^d#GM*4hu;jYC>UHE` z4sP&gyy>M6v7iI_bjmbQzzi5Jl;wNfJ|BdK2o;Rna`;syv$<85MIz)R^)%~>4YBD! zA-=EF18FaQ6+ZjYH^nDm3bkaOMUI__sG`z3cLb!19GK^GU*`fFT%Ih$AxqC2mGsiI z(EQTfZRWe6+vzlMhEJ*?c$(xgw?$U7b-W7@2Yyc@tM@p3sO9wRH;_UC6ODoCYNZaY z5_cGtv{&;p%WAHUuz#!VNJuN6yXC#V7IpRh9ZjRxgvpTOA&=ZxL02}-aSB49dWHyOfRrJyme6&4G%eOl!V@C%}UZv z38MC--;;jE^9;*J`lcKXs^ART%!mJdlIM9pfTJX`Blvu` z!ab{3+x&?=U^8yNs84}s;dgI>V*7Jfsu6+&bnWh{;rYtpd6pB0cOg;SOy6IE%Wr9E zb(h^qkKA(~k}adMK6{@m^q#oxVwL7Y)g$E#BVnYHC&l9yb}^_bx(LW11C7JDJIuj* zDnk}T*z^>Zp%>(J&@I`4r0;W|mRZ24oTeYROvY-<^ zBD&y1@1hM`?AJ^V=Ms|HW{4zIp6A%R=`c*0gR7cll%O5Er}AOnp9Tt0tL3v$3IZ+Y znJ`h*Mk5#K^((<8jxoDQeeITfOZXm#yQ?A6|=H#5m# zSDKa_kb{#K#v?E_54_%ciwmehUNd~qS5q}k&`rDs1(C=JDWtBmS5RpySIc`d|sw^$Ng+)%b+oqmY8yz%}7bQ-BC%%8PZza@#!zHpqA%%xYadSP? zKWW{t+_Ny@<=Awq5G5EkJ*42|Oco78?d?9xaE75#$kjK7SAA0$j1EJ)zbY0@HgM-A za>Vksq@3H0@y(s$QAn+SZR42yZud^2@_#xj9-X@&Wz5U(r-RmEJ6f=$j!UF*n_X)fpOEbhESAdWe zZEvx(<9^XK%VQB!UiH>~jw>01PwlYLc)4+e9xX*hke!w;u_E)g6coJOoN*gi&Mj!gonY>}LYc9gbd+o3-M!B71o>Yl9Bt(5_AMno>)MfTm?~~rZX&IlQH+l( zYmfS040clYYkK5ZTOMfGQN!avpF6G=Klr>|pKU50dG>1?Sf5^S0mN`LO8$;N>v3A^ zB%qa*u2W`@_J^V!zjvx0E)AdS>3CN?^YQydp-kq>)B}ykb{m?uXvH~xlo&95js90X zIJ?wGjH72?E0Co+p_Y zADA00=r*arge~btw3@#LjoXM}?tSQ+PY}Un#v>wzoVML=xvFs* zSLdp?C*tb{ZeMu%7w}jmY|JqRR0FW+!ZlstkvR(8 z7w5H*aNt99vNHU_4)!o~(7YAP;9PN*8F-Ue+!!fU4;~m2HA1ct;8ncDzDolN1EkNz zItYLb$MxismsKYB5nL~_m>FI<7ubph!>EJ7w834<4xU1=CENwWT9pf4Cm}CPoVfZ| z_nt{_OyY^khLY&DoZmWd(ns+-s$@$fSHRT#p?d@4*2=POX0R79zK(}VpLcou1WPf1 zNbXldlypxfl(d9sN)=*#5tQWVp^jxJ-fbgs-AE;b&|)r1Y6>b@yj3CaprT=+hQe8= z3p05!OM}Vct6FDeI5w7DnsjR0ES)SgF(3<)281#v8V_ z1XEv;*=NN^yqsZLW7-^?9N?Ef;M#seU}tb(i$^!O6bNF~^+iihg(u6o>=MBTrRhiS zSY4R9$vB^JH;K;ZnCpZTm$cQE@4kk#FeJPDUmv4afgT%@DI~7HD32Vzc8NX@b(FW? z9cEP~C&)GYMdytw8znF6*r?KMj6@-=tedAO~`yma5if6@_RM{#}X7owo0-(m^KKn zR&B3s(`lf;*Yu`cf7O}Jlcd0dvlnELC-mHaxlO6j+>}Edi~fsex?6s_5IOg}2-iB? z(%a7_i2f=89nM8VY`Y~J=y^j4_N2dzuTEQHIofW{TT~ zB!3j!yi1~DIKB=egDo!LwVGxvQnQ2Jq9lCi>GYoP{G|P~3qgq9ITyus%V41XbKZFz zzp>(7tH0-58%8V{)b)VqbzYgvk146chry#S;~zewGOCaceFSm#+ElAjt?Q?;brX$p zU8hrnN4p}EezNte#?%&r`xi}NKqZ!anIk^ndR7#_!pSB!qG?`qH1^`6)Z+TAmhsd) zIS|q$T_(i~L+g$p2uOvXKg*aBEQ%pZIbYa1gZAP>T!s5`fl4;=eSZkZZSFC};F1|T z%ms<7Rh=AB1Pco|^JtEEa!7|laZo53^P6Rh?woz?*661;Q3OXN5yN_ir4b;Q6j6cj zI;c3@7W|8Wpb@JQ70pejN}&<3U|9eS4N!SJ&X_0o(vbUXmTXWBT(CA;&8TZ$c7As`r4NCA|g2J8#ro5GQ)u zECq%8eIEFxZe4czf$e;wNuAo)MI~h-G;U?nP{)EKO^Ht;@O~2V_$b5|R^#CBJ$*j+V7fIiX-HPqmHd3d z0B==&d)0z=)H0u8L#Q#f(KTRpd`0cO3PBf{a@Bm9tigdSgH6+1^|Es0YcVnfKMWLf zm-nK6fu}_ybWmC{A3eMEGS=t7EUdC}zMFr2vg7?dLjYGiNE4$|%XL<~Xmr_Y@(CSm zMIFtv=fj{a1+sR3@-szuT8`$sc^}|E0s;ByhN_KJSffom%L@aaqfku)eB$bM2AEx= z5oxCt$01UVgH@~V$Nasrpo5A*9~Cn-M?WLbfy<(Oqs-)ODV!Zya_T;1j3^n1a9v?T z^?laXgpidK-tL6$CkpQdLhu#q7CCs5Y8*YrWB#{xM7yd7lI|kSBL#SFS9_L)Tn777 zzVDsaBvzZ`yEk#@&|xnMQi2sViLyEYS>bf%FY=4n?- zc88>tWQ{APZaHfyC_m2n_!tKjIO_Xl^-u)p{x$U{Z|ncs9^rw%$m4U_B~csRzbD#ZfAiTa2M}P)2|}Z*wj*5>Ei-zAj>!a@00Vy; z$47;Re)TUBP+PCz-e~VC2FvV#0SAB0kDaB}sScdm2x6(pp2Mg{j&&`oHsQjFH1X7X}9-Z%|X>%g9eAKIctfmd)iPdz{{XNWH|rO}kr>}IbIx!;47S7WMm z(xJQ}7>=?tkz{b9oYJmamdnfc&E^?z^!cg$NIy+{Zq@b%d>b-w_D{~mxK?| z2M8rwFJ19-*qT2*!-a7C=4OfCwt%G?xWRW8<+zhqib7y3ZcRD@DGf?zd){?C?L9L> z3a|3Z?@D|lKXD6h%3#yJc1SJ}fHdr6(uRxfFqrnwe0^fhDFB?z@f3Lc;|mAmWLEuI z){-I`gGXd)_!+7wUg$+2Sc&BDm>#+jvAi&vJ0&o2O`$9jlLJ{7VK(QcH+@w1MT3AU zDueE@G~5O+;*i1En8C5w_R1eh%Oox%w0>!w5K(vd9bAvds8l&xvpg4D@Sh}ly`S>j zg(QXyC|1qxm3XvK?c`I&m=6i9tiIhx1heqn2iqbhOX`5MqYSkxl%E7os;dsf?E*iU+C}63tktV;4PNJRhIi+F*P?u-GS2;3?qqj(4^8%DUlQoDy}f_d zizZT$xJ?fS$Zc1$Lzg*jIH1esV~>Qzcc|H>bD9ghhIfwvJeg(naptiN0j5_q;96_c zI@nifV*(WoR`31Y_J5n|ed+PNEv0fsM;PBjTJxlbd~j&2uaUiuTi(sNL{|GsE=4Yx z;)WFq6St@D+LS9G6d$jMxHQyR(IoW-@0mJQB)i0K7y^poVQhqt+lZP_T3M92K1JyA zO01f$=1a@at1H&jnoA#Gy>oE1$e`*Onh`k7`f#yen67DdKTl(AI<57Wa8S z@;<*b*UnI5eMcehNMwD_o%;5pcHN)*t)sw7#_P@V7XM}HLHrgXSW)=yhAU@N^m?;O zxO|kFWvXe@b5Yz3YgP}8_L6Ik#88+6W_UqYNwCbTswH!hdPs>OU{6xiOQMS*- zJ0k07NFnj=m7cfzM++_A5wyqXV7hECe=p=^hF)_#nGqR|%`l52VfhFSWjDT<^f>Bt zNEs_Q?*(|*M0BNGn~#Dv>x{lqH>`+BHb$Xw$QmP$)}d+3fWPB;qaW2$T;06e$j=MR z5|Oe^uDPx;gqy@uDpR9_C(vWYz+R1vV^={oH(;b}yfkuN{VUm)mM(`1<&9^TP2bERvga}4=^wS=6Duc$Y32CgXVpk&sKOT zaXP2}^$HE1vob@stLdH&VKGGHzgBCVq=z&juMuVPcvZDEDWao*SN%@^{N8VFc^;Uj z^bgc1(L=T~HCyCVw5IhIZXN+!zC39%K%MLLd)QP%%NQP`yl!$()6hj9ma*-3O=uZw z+xw}|tdfuHICC3jIlB&c&!yip&;o+s*ek_eJyHnAOL^86#0l1)gJ9?dJ;HdRJPmR- zv=AG&Fo!m5vC7WmdW0Z$7foAa_Zy7zY^dxox=Qm~?d-$#5>OZX%%M9ri7j;XZFXsB zCXB%?e@iFlSm=ISs+FDv5I6%PDLe$C;5>cfhkn&iNEJPUcE0J>4%N4?TqabNh8rxHJh^V1_J&`rh}Mtig;4 zVn)b44dcOQsvUdLW2B~l+j5yrQzc<1i7qR;&QQcyxWV*b1i-S{s$=2tR4Nwb(&TKx z#K0S1rez6(hVJTs*Ea5mL4IR~tR)3nNb=f8IlzLYNY~~W6?n$TevI~O#S8`^wn;d` z#e<@4-oUq>U2L%|T;#^3R{lB!=J&7Mh4zx>b6j?Zm0o^5(16x(s5u-26l#4QMc=e= z6Z>HNuIC+ehbECBpwaYwKl=QYKn07eZ{(4Dzt0vXJak%{f%mx2aVhKnK$W)REf#8e3)dO(xXuyM`vDpfsyJ z(aamebJ}$oFX%fpXW~yvf3ZFI`Xp;TMo#H32e<7bUqyd<(TnMVsz#-F#0S50!D3b$ zRyiLC%2FA0o_po?`zN;q^rfj8nULczf&bp4?7Y_jSxaBHtX!woJt5#kye*IU$U4^X zI}f96bEDzZ|Gwjjdx?rx7J!x;? z5g(M?_!n-*4kuPu%ukts+!T}L4+-QWL8O_|ttKJsv9s?@S8FCNt;1mBVqQaqo}u4~ z(YOiYK4W#{Mlgp3#PvqDcNJ+{9)z{Yfl9uGIGT*_xzBbc@mqc&ffSKs6NrHZRz_$7 zDDjrHTUQ*r{lZtSz^MvPSt4AOKscJa8-VLw-O5ESCu*LJ)lg5TEH7i!3jxs*6|;Qv ztl$}ifPUg9b_eO2jRs9nFbprq;HXvW;?&RZqsFRszMZ?ciN}IGjTPJU_E3`fOfK)k zonX0D43k8EjCl!#TY54*4T+UG&?DFtSZ#j2ZG7EU>}e|zZ{}5o7eLDlH6=W#o6t|V z64ttUh$2)rZKIWe#_%B+E;tJ1vk(_|2%UU0lmbP{ai@wMs3(zo7=J<4FY}jVf9atA zrRH^(-tZ(u97-EIG?EcS?y<7;+Cdb83J9HS@AABRt?U{N6|@u`gL$T0O7j@!ZXUDMLY;67-OdDnzrG4@9e%H(13PD^bAvr(FNTlLxzET%zp zWoQ}=Vr)9R(|lPy_%)#fty*_Px|#QK6Wo5!ie7xp(tL;e5cZm+#r#?lKcO{fpkE-5`sOzZ+Z5FRuzUYUZTUxcDRYhy z{fjf_b~xv8A&1fohtB?PduohFG+^}>pZ2^|v@+TE;QE=J2?U-s3<&XLdAb0^Jy{+r zJ(zmoWK|s-v<;H0E~n5x5{AmQtHn9}0P&SgtpD-y+j_3KonBR%Zi_gUJ^S>tgeU@qqd1SvKtVey<{xLELw-8N` z6L2;copENq;cc=sThDxrlfl1TH0q;bG+dD)puM_aY}|The%#>Fs1JKpJCo8*N=-O> z$+>6P`bMUl-%nBQ9UntM$VC$24s@t0cI(xZhUM4}A_9Jr2RN*G0YS5fy|KE|3gEYw zaQdxeF9ZN%U-LuIoC)^rVz>9N<4+4QI2J`BCBq?cA_v*EQ3**7H0C@^$tT$0cYNQj zMW+i=hcE=YQ4USf-jMSw=Ds5BF-6Oo)rvQ0T4ibD}> z-=lrjES|T_ao4cV-^9T)HDOcQNgs#-V-DR#s_ckD28#^2Nc5ua^XH(?hgR#2R<+$mme?rQ)esE72wCiHdFz?|U42o%K6n zo*RaktUdWrb&1s39mqKBENqU;FIed>(ngI4ZTWSm2B4Zvt+U%&yFv%4M482T*}_-E$WB>@QWjFJ&SQT|4K|Fx9>SM(ooqntK)ya z%iD3gDaUeTO(J@~eDRTaM(pJ_^j;KjHBpnU6rjgg82%r zMl{mQrDx(r1T}b`FPB$Jcsg${!eUsVN^t)x^)0~+rUz*Dx0@t^L9fIWixP9x>6uQc=KFJB^vh~)larNKP2bga}f6xW{9JD8>N9=neBuD zos~k&%w-!#XJ3W4>}wkfR83+aK-(fk?+>Pdi7CgUrjPGqW+c1M@CNIkl(f5?7k*VC zdL2$l6t>z_10)vC_s&1kp!u)Or}mQpFU5pg^SJ@mf=4U~Xr^n>{IaRdzVPiZik9L+ zqhm>|<*Qfk9dr)vn7{9{#ami6agBS%FNm+|zrZbmIxiHQTgxm~y#OCNQzQhtOx8#- z;85Z@ytv}>I-nt(SAwL!_8rpn_Qn(NvQoCYi_NyyIM;}`__z#59%L6^T8=EGKJ1O; zmht6yhXcX0OiK+GT4xAjwWa;zQBikVU&p#7&qd`_b}o}WS|fM|9Y?qXglW~OqbSoANi*?{c+lLAWN}XyJp=uE zxU3o{3+zP%|JgoIrkKpFmG){_x&MlfZ|CqR2Sajvp(?Nu>$Tygiq%`Fv&qCsTBi{r zGTJr=oxnHCO%4{if*_DJfdHLh^}9aVp-ii9t17P9#k5ifU(`QNO z_PL~H#CIa;0l;ST!(?_sRohb-u)C(z2-70Z1`OvVHT9ahJ|YFBSZ%WMWJjR8pL&t` z9Y3Bvzct#h$guOjsAv$q4sLO7GkZaq5ju_W=DCi+lL*U$72-Ef;y-tg380 zKSaXe@jcRAJ4~be<#kh4$aW`l{)9;Ww29xb{fX>;zhA_Cu*5~p^ooq0$Z`auq81&0 zK=c{d2n{F&T>UDDyXMpNJLrz{|6P#X#SI)cik)LT8!W9%%WA}sQB8@A?kxE%s^WfX zxv=APhPyXyK%8jbcoaiTQqiw!>stWZ{Pp+WDeHu`@RydAc$bBCB{P~?q@^?@HHeMY zdlyiSS8+PHyuON>mDlB1wwj_L&g8GsHvfYSpGk zq}3T->wMgF>4bydKDIwcV9m*EojIxCy#d^$t=IyMdAS6%+GYdiwnAZ7eQxFVGD_97 zV-&)o7`~W&>WAoE>QGQ5k2%K_myJVTd4kpm0d$i1(T*{;>&E^ojkwgahk*&d`wgWM zsyuRVrg}vY#k(jcip~v{2W&7y`^!F)p^#*C^bHv_xga-!RgJpeZHBf@)YpOqEp<(F z7@esDjcmm@tHdwor0s ziiAITbJlBNEf~F6C|@1fYl)VCa?(vv9(2gM2OAICA~{^%F|cH zV?(W)BuC}-gFW0LQpvWPb70KfITk(g9TcpQ;RsO^U>|Y0g7Okc*_+CLl**+}d$@fc zFLkAHRo`62Hcb>cnMcRF?CW#6jG35Pqn>c^{564Yru56iUG`~>EfIQgmXkrmClLhW zD{_;>dUiXz8#ZH3!`+oa`C3ws^VXP#Wv~YKlobWIF~WT0MdHJ33I1gf2WitdBI*m} zw+qOZZ*Uoj0rh|ji|2O>WX5KUv3)s0Rr#17OvJqJ(VV2hkrj5R(FU?V)kKpPt55r> zOY*Uh5!wzQGd*SW4(*~3C%^OvC~~x8hKP`ks5|d$G>nO<(pwG{I?_irKH?vWAMc~# z^a7Frk=Wy7o7AhXBn7>`GNEs1#|hdf=@fsu(zEj$L$As_xzFzMdATaP_8riRIIP{1 z+bx03D|Ytd!>g^X^6GV|3XPpik8(;Wq)T6jRt)H4h^^qh1&^|u`uBGxyRStW)72*cefXoCHDIW}$N9RR%*qd2z>4BS zRd(I+wwL9{a;rlz&vI7SA>QuF#M$uo)$2o=qEp#y}KWY#T!t+d{(yep+E{8+s=R=5s zS}N!gvk9jUh=G1HA2o0HerbT7;neGFu#olO!A|Jhb-=syu=DNF)4+dLtgNhlHt(bMP1uci0s$&;ERD=**p{u|In!1`r3O8WJ$A;YJdA$&_R&JU~BD7(YLF-L{E#G+T#anC>3o+=R6>&627 zS3Xp>wW9)Yr8MSvscb}Vx-dLe>^%H~JeJ**E*&Ypye>@cZ@;Z@AoUzi+=><5_?V!W z4Zw}B+pixzI__6ELVh|8`tC#e4^N;EcXJ)pz;RV9PG#OJML#Z^e~2cwyHz|v~Im|IUEtW`vhJx9G@ z@k|>`3z&uXa!Rmsm!fx!zy?dTcC(aNY%(5X9(&=p>GhPyNV78Q*o5s!PDtT_8G^sX z-%O&)cW1Ne`_@yv5gBd%IqI{6!$Ci6(E*`kRHBw7en&+0X>q=I<~3Tk7)oQ~&!)9J zTO}H3bf-mTJocHAxd1*ZW`gP-dWOsJ_gAJLW_jz>P;1QlKOICFn*i$bc{_DJRTLL5 zQ5g>7-nyadFdeaMH{7#wD58bNDu!5gb3==rGfY4<1Qay65T+te>TvZ?`x*xhStRZY zxdv#4fFTn1AbvctvNAc7O9=t>MgR7K2*F>Q(Dmc5WU<2d(Y%}65^L|vIOB2@627QY zrz0tue)rdG)Oopzqly>PZG&3EaTUV{<&x66WANzA| z&h#Cini{p+CH*ZKv$46T7A_qj7tiFQEJEo%d^Zd!{m}$>nDtFla)7^Wg3~nncjTbp z`&|A*xi{U7AFiow#Oc`Op)YY66ucULO)_Ru7*~I8E*UrPkb_R>$(1l_zGH}0evivp z=dd9CClB@-30FhBO|SWA2?aKNQ={s_1CANrSrl z*XtW284j2DVaxoW+42{Oiq8{-ifJBr$HlN9r=K6R+}?@Fs-Ge!sr4l4&IHt@XZq+< z10MOU@g~LX`SW5gv%WFp?k2zU|7^WU#UCsKr5Kcoq2IzV7rlQMM<2Rbdvml}=gJW{ z;MQhOlOPpm-%82MhYshe6d3i92bZcF@@iiEyH0HSlUn&Lky3r#7jdWs5{BhI4OR-g z4)u!f(#m|sw^`WgzPk1#CH;MUN0Vo9O9=%aGM6)+(HwdSy?*eiHA5Ozy2wSZMMEpa zKu^)wAbXW;tk6|rbrV`*LK+gIp(frZ!oe2;&fc9SJIbHn%_+f9#IZ`!Z?7V!$oKz`Pe*~uDaJSKaPxIXutU(>tn9-BLlxv z4ISeiN9dr}1OdQVF^0=f#-vZ3vQ`Wa;t|6kh7`K`cDHp5MEbvU9E>dDH3S^iet*#} z!^)9S1Z<}VBOg=TB%SkL1>@3VsT&dJJCT;F8Msu7nEJ#9{4diH;DBFFazi294n6x- z_VmY{cO#NOElo6VXHWF`Ru13503kn`#Qg>f(BJsLu9k{6TFj}(;_G=%q_jVni^PIk zk1zoLbcQnDd%?A)t2^Sf0pPQmW|>pl6DwHpwHsL&8%g(ZP%~Ju9~F%K>WZ5DR>p>7 z&Ze?)Q})LPjuNZW=T5}+Re}DI7&`mSjaC%cHGk>RnOFd?hHf;2TvLiueQHbpGrcpc zc}dTLm9OQc?OAIglZ&_t`h?I$s~m~J2^dW&Re0?iXH^OnHv%6z;l_&|TuWzdPwm*l zD5MY7FdV7wVqzA2qL$Z8hVqe^dUcV;W$56SmHRJE6@D1f``ceQIH1CM`kO&OVig3m zW}OBNmG;`~nET7_3mr0PpW~QoEGueusv9^)Y}+60-GHrQ_4v?Tn+;!5xh9+ZTvMNb z?}#?%Rl7_iSq20omw)ku>s~qp`yBY|2Vk$l;rMG8RU{Hb|80&%F2^eKmDs)xefgNJ zJZ>Bb4Tw;r)S;7E-qej>d5`MpK+=sJH>RpG_?HT)6NoTu(7=Kq3_Uqm%Q4l0lcPP| zq1Y5v0g}NQSuPRT*jc0ES5@@Pc^b@utc$PQL}@Nk@4Q-e&TDDhv2{WdE}!%H2QU*& z%R(Q!5t`wK#Gtu`-%Q;n0Y|N``5O-T;Gf`xor!=gek^=6g#aML$fYY=+u64k)Uv}% zmNRigtQ&R5$qFEpmYU|lFutaOq>xmg+xHZkV2JU*LVd2?EuiB_ zkklclwNS5Cr}A#pzC5`nJ4Ae!n}_sneFa9D2^2oiN8w&pCHMo14Az!szpYB3Nj^)i z(a0E)fogqBWo(0bw19ArFyH2UQST$!ns?X!VXxB=;DE-yEs4dONtjr2Y$*leB-2Nbr!Rz@r9(hox$Jb>og|L?kR}zg z-|?UgIUsB)DKxWCLQM=g={ddV>{yQn@aO*@()ywLI++?rM4y1!b3ZcX`I4^nPLk-;nUZbu!fwN|yEN=}LabJ~;oW4)oVF!tm!_tH*AC!4aPfe` zdKcG?=eu&rYuC{eoAY?QH>(F2cd5Sge=7gl9i<1`aaUhOD&n>X7>T9ndy_)-e0OG! z&wb?6|JaswiX}vJXlk3!q|`PaSWxxHzKTP&c?1G%)z9jj>N`B5@!9jtZU?aNJw`kD zU+6{|LVi$8&S)4uG8*0jqd3=QCE`EzY&KFWQvR?>-@t@NEX^w&XihM+v}> zotq4i4yl!I*zz8~g0R<%X@=5;j|t>OMdwTNuQUsIYZ zeOv<&z6s~nQhQPPE_Sv?-@VA8pnV42hb_IOIKKMr>2V~dq!CVr z;$z`^FF6f%odE;ag`{Y#^2$zQFO2uODFuThN$%-&0odRPTJ#yz0-l5~d`80j$%BbC zJzI+XbGT><)s)u+LposJ9&~szv+wKS#+=J(FQiB$5kk! zOhvmEPAs}`Hy$Cmn8wx+t|+C`Z*xJ5i)q(gERUNSLwD4qEcTDN)FGr_jE+tRBTvLW z|4Mq@T-$ZL>DH%^)sOirii)w3QNIk4FA;!vs``8GtDujhZJZo~O+d-BOTME{ZvIif zFh2LIWi8)T3hZ@k3M~1LioX(P78QYW%x7|fvBNWkn`Sqwvu>A59m5oq4RZ;DX$_$l zE^^#bB)14HhvLc-J(zM7I1^0msM@!rRtk>sy(#P?a%BC)Nv)rrJDN#{$=e~YifW^B z07WFf%)iTLG*btixm&uXl?xTR8y)8}sEkrBfcJxbj@mDjXMY?JbQSeq$ zTc0Z+OWAEt7-M|k^IO#F;%w4BUj^!0vyWSTQ!_4I#HZoCe>F#kDrDM zv3ly>QjZ{4YT|w_+qzr!CTTx=3%jr>s5n-fTq-|leSG{iNd6_N$R9h#7W+;P$M@CQ z9V#SKIfhRAc|k`eWs|U9^)w&%IrUNTVlDyjX2BpbEd{qv^uu7dt zRKN({@78W)(`9d%4|?+YFN|c+%C`!KKtNL{1^5s=jE}h#-bZ#j$#`SWoBcosk z^IG8(_%uCZH`8Bnm6R9@4L52uztTlWK-Y-eSZbVD;m+TOLuIK^5fg}|%CSEv;3VJQ zYbnNE9?frju%D+cn>+%569dL@n0c7U_Eo2wl&0C0iH3VirQPuQy>*3PS_#dtS?egr zn~{Gb^`F-5cE*Lu3fL4R=#IE6+IUytlSD!akw5F2PC~zj97G zivazGjY(v)MDOTixfyOz3n{BcgvngKz3xy}#s|`Cc|{eL7;~0yMpMkSZ1(?s+y$K5 z7miuH&OWF7@whyyXn1Pqc+3Kv*5!f=qB@!fiZaN&=QlL~SGL4xzyixqHU(zy|`VP!I&32E@C0{P{_tKGux0 z*{x?U*Q^#GeThVA?JpxR5)jm(Y5DfG^G1ngPnuagnPSPUM*Cp%?*96OYI|suOMUA0 zkL5<#XeRrDNvzRTe#T!$5V0hAN|?saff(P-EsCT-KvYO#Gq~&{(jFs5Z7mR$BWqIV zyGeiVv%$d@`k_EDMC>aZtqg$<45@^&l0qrMT;!3X$1#6lsdaR7Q>`2+65+#lL3Vf? zhvOYMO2*CQ&qofcehg;uWtCirF7R)2QsT^{!(!7@q-_`yyR5aRsZZob-CTd|gBSL* zWTZ>9opV*+_^nRRlobO9OMT~i2qc7j4v4(U+trl~b~h3t5Z_qf zD4kI#@9I%+PUMFAI{~=3AU8O;!xYk^xh0tsnkk1x(Uwwu)$n)Jl&3~VBa&b3OR4km z$)uz?cd}oWKZ*LQv5(PvUOV0Px5F~Im_x*{rTQ$tBgf@51tN*gu31?W?g*=GeNH=g z_bT-)Ixq2^koxP*V?e;i70mTJgR!yeMRlD#`9Z=ak|srIF?qQ?iqb2WsMW5Z?wY>v zDs=qCVn$y34-wehT|wf>pRv-LeJ&dVLv8oC zXC%63!YbdC- zT+TRg^k2?!3wpPqk(Jy|b-61XUzjxBAbrA>rFZZNhv621d%yj~63+APLA|1-VpejB zC*@t(vrh;ktAIvS$6)ireL_OUmaHE|vHm$yjkFB*`LlV?0{zxzEA=4IQZPShH^ zYVoVwR32~M0#3Yg(2Du@Bizte(#lp%v&m~31iu}5}@irajs7Bmvz~`zA&hPx6fgJF-#QH;Pc{84hsm0NP?M3 zweI(Nx`rC2UUYN-C6!~7UA17c@Dsx)q`9}lQ&igiFE9v10j7-?{R;|8IkIb8Q7XEa zvG91h8Uh@c|5A=#?9lPvT9$?Al3rvE?p zYTHRWR{mnKK3HB0p>qPwNClPMbNp?NqpkF4Do6ne)5)H&J-od1w!`>v807Q%p z`~r(L=4{Lmb!NQd;&_ z58&4RbX#XVRSmkm%srt%)p2Adpl~@(jFtZ3)-jPWF!32WOjZ%-( z%2%}+oqx9e>E|1r*-=tL?U{=+-v4B$!N6z(h_*l1 z1ONR9XxSg`+usM)z!=H{oQc2J@=&1L{!i}PRdD~O8fkxrm2*mXMt?>->6ZIXtH!nU z*W9jsPtR2UY0O^#oSKI8?4nb}4HWU85ipUI(r^oy=lD|&8<;E_;s&@5eE8E@wh4mg zF5%$6&2zS>StPh!{F7&o*^K4!pW4GDm|Y(aJFq^(|3R#Ewo#XfIs=gKzf*H}_2A7j z>Yv*Tw^+6R%xrDDxCh2RIaFR^dC>eberejqaSwkHc?OQ$f0KI5>ORN80sj?PU(if` zI`p?^%F{oD;ynDRFwF6f>j$;Tzjrg!E*(1J|Nie$9O=n|{NE{2F49Ex_gxe`Joxla zJ-4F@{vob8R?$7b`KP5;;LO=Oi<+-R*e-ewo{kAGdvaAH8edt>yHKKrlGbRvr%6=OTKqLR4;{N46{=-81 z_u?&331GR(`MbdVg;>IDCjj#kNccDTAK1;m9LfLx{C}a z1PsN0^2NLqFszi`Ixyl(W7Y^aUCya86afnUcXdVbofjNxWEy*lsnQG2sEkq2FV-)k zn|(&ZL%^GV@#g;_>?_0KXts4BSb*RTAq1GgCAdrQA-KC+aCZ$ZfiO5hf(3#Gf@{z~ zaCdiix7#G&-e=!)&T}vPn6B>X?p0l@R;^m~R=v;YObI?P&ZlD|&P%!FJLeP1H{Ox0 z&K+#Na+Bc{{uDTPiJ*7skv{1$e&5FY>rk>A#-atFK-;^^{=HLgHED-dRHcg^quC&S zc`IJ@Gse>D1CzM3tG;@3??>%NrjmlL?e4tdimwfu8^VlbbtON(=dQSoV*lmqEdYH3 zAwO}*f+1kd$)Wi8v>iXepTj-Vzh}DIMrQiw*=VkeJk4B1l~ErkNsJ}PRXM7zgF8L0 zgVz&OCrcL_({;79W+SD4e@ETgJE)`VwcXt+{bnU%DUDTi-p^>0?lx*;W4T{YYGZA? z{}VzxGo}ALJPb1DwicAJ>`Ng3c=L6_u!_?hqh;NSJs1i<5q*Hx@Atj!V!+D0B;B6Z zvAn{qGpSve5ujna{WMJ^WA#4Yex_@K(;NP%P_O0OF1)w6)T%>5=O}~Zu?_!kp}MIngumPu!oVaV;O+L0T?j_6p5j^>fuMRl2T2h?UiUE{v2sfMqONkgC*qO` z3)LU`?J|SuD;b^HprtHSJb|AXUz%rLTrURKt6i=}&kZ`k$UN;zbj9`Tbg$c+@u{ud z+X21-h}E{_Yeq6Y1TqcV?d*B2kGUx24guRSH75E#>j$1pKMb=ULEPDCp@M zWI&tVC5cs~zIyD1aqPdxo#GYbIo)i}m8U^in7nv<2TXxb&t zozH0hg?33QZiJ0-x4-uxHne|G`iIZtf;jyoMiaESps+KG1xAhINQwKQNaPOOI*fxa z#Hby)ZO10S-RJq9o*sfh{fHe`nc9Iaaabd%m{?Av-?Ci41=hp3iJ+UO)Ca5R?7vB15U8=TA* zRteC&@6Wrvrs8aFF4u(Lpet3A6zjB}X*4}q>%rhZf(h}tT6R{kZ*sj)EQY3W+N2ho zr+!KfVx+{a3^+TvP*hbFe}kKU3RLX!4gcLydqhI6Lb4{G8}aktaQf?=qB4MyYqebr zV!2Ixji4JH@eWGG&WcWwMUJI-<8fWT@OZBuxTo?%sx?|zPIHP`ug>t>&DXs~iXI6o zq?$b9&#z6DSsf*kZNMtfd-D$3o=C%CE6*4!$DhTO*@ZFr9g9j!m$5!J|3h=(`%Csu zHwMYr%wF_O7i<1t(nH@qs3Yeq&iZD0nbE}Dba&EpIUgF!JL>}I+krG#Q_bOg?c1nD zCePPP^PREx+U!-ndX*M)wZ{?hpoprQtDA3y53d!I7kzL2s2VPX<8i!Lk1wcq@lp0BB^%8AM6H*qCS(3QNX0{<~XLI0|_AZhH5j!yY>Ue#o_ zQDd_=@hB2)2WQ@8*(V)1@&;>jb*B|hCy3Gz3Ztoo;rq!3LJ_owbI5?EhHMHe0_0bI zhUX5j#T`IVh|Q}e?}y|mN~Z+9Mi6(}=<_*hMFOL+m3_g4j85u#`H0a#Ff-%P-&51o z&NR5cJw)qAacHUcvPGA2S5*3Pex><&=Ekg?rRF;>*s@%4h1L!S_owyyU2DttzfNrL zZ(ICqA<4N-r^J;sa^G8$5Nw!XeHAP2(LW$8t*A_LWNTQ6D$_qiztzdhg2l3NaI5cd zI81|fNZUuw^46EFMn~C#X%|e-?8S4W?~vN}>3c>K(VuhW2wRz0Q|RH94-ZT$+nk#@ zCy7BxaH99D-u-FG&w)<~`lIRzpzm(>BBxS{Rd}9C*9Ok9cN?GW0K)jI@k#y7we`r4 zdFu&DOrbZK82pYMXX{D&T`CsukQ>4oKm0Bvu0uo+U?>CSdwSl!PN)UUw{rdyO2ba^Z=#NDuc6UxQ5>t{o zapI9lAU#Oe-Bf`Nq>EZ7z$d8f?rd~0s127y@)IeT;$b;(QuF z(0cNkubdOCdlMn;m!1m{nX(y}XqvjrC5)Z6X4wkDW<0c#W0k*8sZ+3UoCkH~n{OIk z_RWdZGMcotWv?i{CHT^8>!VzxL0C$jY8tUW#LrF2GAkT7`VBXqQr6dj=q~edW=FZlF zm)kRYH|Wyf7oSiih;$iz%~WTv(3T_oL-6)foNeCcwD+;P~gx9SB`q+SXl-;+gu8R!|$G!)V6 zbr#eq-#hUzqRYxhrY*twx49`mlpudR90f>(!k42k8eU=|Qm0-0-xQLcY%m?Si8Nti zI~H@lQnG&NmXu55hOp~+uMJC5%ce##uKfBn*s?owE@;NWA%K%7+j6zi3-l$?M5nJW zu&vw=n=Y$u=UsU~#Z8mC=dh$qEq5pMeLOxlQDc=aOn3#F8VQ*7KD38J#3W7uc1cc7 zPJsR$Pu$`*I3R1--0$`_qvLSl;jY6V<77(HO+ zrT}>s26i^=Fi21L`V#AV8QWB};VRleBT8YMg^Ak_qaDZsV~dC{eIWUrf#Y2E4de(@ z8MKw|I@OFe)#39Rmu+QR;-EKBJ zy)Z4}YPW7J)`9f%J51o?;~*H6Cz;sX#$*J^DCNdlzw}E7af7fCSy&H#8=n54pL`FY z3fLVV;|LN7)Zad3^6yIIZ1<5Y_c~N$mDip@twCYuv~@b?#YjSKHLhG#Nki4Bu%xt= zmen0KFo6e{e>=9NoMwK*a-qACC5{;k8um!TYgdz8e2YX)XmHq-+j|}`lgsVJNEA}= zazp*>{ZgL2PEc-TaopzK*zH0(<85@B|H#4C4iPa}Q%MoQ)P1B)&S#Z#JE6dC%FMS5 zF;e9$`sb9*Of_nL;Me@;$#lHBp;;*s-&{P7eoU+;_Q$2G+?^niBek3pVP-l9t#Y!IR?z7XfCQVWJ&dmwjS|t1b zG*DGl9rnOFm-`h>dfSG|ECOC}E9ZMjjUC5G;RY7>Fdd(@Yhi4p}hR2}}Zaa64Hvu>le?%6E87?$KqryLGmm96~ z9X8$q5UYdr)!B(*7o-HxPF1!N1)^x^Ykb=KVc$_@3SngNu~LonY;L+P|F9`Bske1x zU{JoOiZEp>X&bO(_78DcV;tY4WKQ4n6#TrEk$_f<6@w^QeVJYN% z>nNQ+IOVu$5Wl$Ty30HpAQj*!2c3-tp?64P_hy^d3Q^|681nPzEp}8I}_y2J{iVIEZl3GHN3mQ#0m6 z4=~C2t`CPg@JtX{4f|(%c>CJ}5%ku?EX-1kWJmD!0ZACbDrJFf?mBLv;Nt7F*km$A zDe+8-_b7(dHk+?BHuH8!97w-cFXUTPY4}$+vlN3I6Ggv(43~~{mU%R9W}Ti9&}fF2 zwhHFrtuGMBw=5;>KGu@2uZL+AycKUha@`X&iN4e#<~J^E;xe6lWr!0h1!o;j$kpF)JOX?R+6MAs1{`agQOf?6#BtBGQy zSMD$ydnGlCf|i~PTxDPKh0fX9DRZ2wcT4qt;B)9^dTbCaQ?}gdA!x&gLmqq4pMe-Q znKfRY#23WejH~P0O?@BkcE4nT6P4FN2aKt%b6#J_R*}z=TpavhxWU$z4N8hj^o?1_G<>wekq2v_dZ+P!ZmQYS% z8OQR?K_`}N%1l~yf?!Id<#%9dY=@o_KA8#YVevKeAJ<61OC~mHb7+^Z0(5Y7Im_LH zxD#l4=8^jBDXcgj?XWQxg}Lj}sY1UHc7mjw@RRh#>lM`?rK4k`Y%_N64;2g#js;jkP?_`x2(M_}EM1TkvbyL#YEmC8B!`GFysxQgNwcYBj0xh#@4grX@l z6onYu{G%7VK=@_{Amn3*QaQFEIMz}eVX{>LTF@KOu)4C%-2af1e-w{i4()iiv$g?8 zMr)E=-HhBU+IYvjG_ll`l2I8{&{frTiCh{*0S*^J_<36)=3^|P#JeygNTSH5d587$ zf3YvE(dm4_b~wvz;CG2y8d~H6$SI+73njA`9>Ac5<{KSF6mmGk@s}`5sggRub@w;r ze4@{LOteLq%OZ+|_)UzP1L;WL!eME?q{b$|WziIY6iHm?Y8`+vQFeXT&d~SgGW2;; zIY|tvz>eSTa%ud*mFq_;P&&H8Fqa4x8u8DG86NrZAWO3YcAn?6L9H~R5ul0Jw2%V6 zpyxi%n4}3TI@7*0&v0n~_o z2F<0V6#2xRos7@H4{mxhoafl|Rglwin}{G$&7gNF;A%UhgfEDd-+hnW^ERuGYK%C$ zfF_830Lw*lnKD-4B|kWP7e?F6aPz}2LZpNXC%J>>wut363Yu`{xVNfMcPvc!ApBs4 zcs*nWLAC61h-8?#Rho# ztfL54xkw7q1|zD>MUf^wsrkxLg|OcShbC11SVYPnwEC`Cri%C~rSEB4HBW=bM zl&2t@)Nb71WeW^3lHv6Vzg3Bro{4`#hkIjv`Ie2Fp9ma|Gbt*fSV1a?*uxfk5+yI) z;Cs4=9T@rYRkf)9TUYdt&@nE-FidJWasfVh#SoXHcu+1uZn5x22b@jo^-_3W+!alJxB^64YOrr)Y(%0&rP845`_9lhffx;-VXtMaNGb;}mO_%&J0xCwT zjuop@uOeG23!gqOKvyWlf82pXSZ%Z}9mZQHeNs}hfPx%}c_Nc|3LB6uN!3V2EMPR< zt^lFH^StYTbSPC-Ryx=?FacH&sD0t}ks=PXk)IK*skvqwZITgbL^sQ=FT#UXfF`2C zu4>b)>2Xg`{;CYve@_zAHHO4GoOlXNKDsfXP3stfWgN&1@&!V(nH{JaFkhb z$B)E>)l@3PZM01wNUD(RIB=U^gc>w00}YNkW7%CX{ESHzIy6Fs)Gt;{lozrq4pKq% z&L=;MYX1CBm@MdD4zmfaD3~_q*WMoKWU=loK!XkpRq+tz*puV$gu%Y&=aT@ldH|)E zONUSv=(G0h=3u6fSs!6kd3hDVxZ1ko-C9qQo+om<;GMmvr&+ZQ_*-ddfS*wgMOmFe z>oW%iIJlhpkgt4YpwO4$(6On4z{1bJ24|$l{)Mh* zAJGf%n-x}k5H4<(aHR@vu*{(}I6RF;&l1bvV;Dqb%_88l8%zfLKc1h+zXGSMg;`LQ z_++3rY$#oL^tqhhoBok6lR`(D9+W&+FPmRbi>p@ABF)OdD5_D@iirR8Gg-%r$lX|? zg={4rWRL**n7veJu|lH&B2A!&NbybACR^`d1&Mc3nsWkN*b%?7L%|eKH!(=tm-YbK zOcSYiQ1L0PqO&>{l8pTQmuf8~@e5m3=%+|+w>|uM!`Pn>f$ura3;tDi}XEXq` zD%W&f@$XRYPYnAh5C|Obyy>8(vRTN!KIz3V0E-9qOw|T`e!Q`3iO&tqAIycs9d2)8 zjO7$V#Rgbe=_IaGFZUN?5)9rXMKY&dqdeb%&ikGt+7pYhvDQQ+u~17zd#OL z=eqhgAZGqg)cpU7vYrjCZS<$Ec6}sB?Vp~m0)~*jv=IH4(>Usu53n%;7gNB_ofl0J zJNuvD5NL8h;B5$akM)gvH5U+j{~LoUEmNT>8ROzTY9ARVv|mZH(G_J&$jvrXfre~t zXlTj;8G--*?nthEiA#^W1o#o2_g8xj>Ph_uUaP^&0+XjtnVl`(U7;^UV0(Uwp@6*y zXEj;k2h_uxlV0YQ-^>iz(0Ec93~C+pC}I;sx555aWx%9bw4fkG8NOz{K+&>Pg4BDa z|I&FCfNz2g0G~?q3 zx67YJA03~(x~$SH@nO&#C+NHQWGL)CA94H|k=3tyiQvhOnO3y%z^BNKIz4Tf68noD z_0{{Y+2Td|L+cl%uYf*aseJS(Ra#!sE14eRow>C)6WMxHRv!M1tD~I(a%`N70)M#9IeSyIc0*D}C4PCJquO2Hf({tzBX~0{|P{)L|tK-$-EyYp> ze($v{ROUv179481vx{R@XKsBVzk51dbD z^nX`0VHM*D4(}kWaB$oV@Z~c#WDZ$&{W&r}FMT2+HMS$mJB5W@SJ|gC9g0$BqM|cW zzW~jkl!BnJ#Fz`0`u=db(5d!B?Xn&k8KkAzW_wLVZrXH#zRa;2HzKyaAh@K3TqV?( z0OB@YuXP_sjGAPd$xPR0;G#i3FP+}C`0tjZyC6gwo13Sh@#Hr>1e}I$ zLY)P?$DnYP$)RK}yXJ^OOJN0jB$bIz^bkyU79F2utv2O5+2;#Fra-lRU)JP`1HS%c?C@#gL+#$h|OKrYi5 zT;gPFNSit=O~08vBAxajwaYAx^?%dRh?x@0-ozMEKDBPPD-m5?0d=m+uO$gF}I7EO>P!3PkS(n|*yBVDZ$8@)EMHk8zUU zzPJUv{OC;X@SmpE-W2G#n1t4rmYiM#FNfhA7aBbjS<1VOfHC=~d7t~ucK)L0F5`a5 ztd7n+b8t}WU7eTbJ}}<|%-9$`)GYY&ff$~#y^sfAzl(R8<7U|a;zGU549%3%*mMU; zHz~c7Mj*P#uV!l(wA{#b&&J8wdpu=*aytz4SshVcqpz0c)_GBbLyEQ0oiwJ3< z3xv6kSrn;ON|66!^Apd-hxY@0v>i3=>qmrhbL&)iE`gju4EKt#Z(F($Lc zIY3Q?W_%IW>IwxupYY;l*UtN9+MFAcSXD$K0)CC}usISw|9M=GDl~sEt@GrS-<`vq zpkbRBJiYlq>iI}7bL4v#I8R7wN~S+eXEb2D3JVG%&R5NE&WJ2NdPv5D!sO*bt*{KK zH0nKx?%}5Wi9d@JhFhk6w-{2PnLt5SEvTiR z$IQL|Y~qzEPiaa8`{^4H&c#$y+N)LcqJDMD$cxBLkQUn$V9Y6ZVD;pVO49!K$up(u z4+V)66VpF7zo6xQkMZ#}xT2CvJv*k(Oye;ho+=(f!^KVbg1x|&>IP)jyK69)*OHWx*;%ZMhd6dw)vI@Ohi%|i%(5)x-X(g zJtby%yxQ0a5BTbDzwmreyE6Ay(vnoiK>R77!B=Z|2{?VbEiFEnzEe!Mika70Upl_i z#k!DqE4bt5`%`{3+lY{J{~g*&owb#B@&YUekHEvYuZ!`L&(v|~MfUJsC0>y2TZa@K z(#Yd(3nNE(8WL?^^B;GCqTlBM*RC{6)3qV4A;v<3`}=E!$hN{{eI5_=3`%F9UOjg>cQ!^ z>RjgwJ|^<9w;kmQwCdI6^m-=8m2-mbRpdCPRCQy6z|O;pxMm3ySHPaCwhf*}?~6bBMV4$6kwX zU`(#rdYakmxnsaYz4seLT~v7((M{X4x72YUMicl$Sp*Aei7o>#D?6rzN*RAF+95F5BSLa`FV+KzR`i zE5&Zx>%U0GW*ybLmYdd^bZ%S}P`;@Zc}e=bb-oyn*jc2}M19M3;tCVx&k z`qmilM-|swMg2veGF!)~rprHx^;2C@NM#W1-CqEzhxR`(T0q_Y4ZTfyLQeZb{=x75 zg(v@m%Kcl$f8FzhIsG^0_wOZwf5USBABf%my!8J80DH&&h54HN!Ib`kHU6Uy|Hcjf z-#rLPcv2Pb3gcf+N#1w=s41{g`gGAs>#2GSBwZi#RG&T`AX`fJiS-&Ia2BTcN%H}< zN)$MG^^{hF#61DFM{Z-EQjOnNF&6&85__3VQ~IF+C;g4Z)$TW_{=WI3*iJCzDXaVY z{epvE4S&lyzlz-Rr!9mP*Vx(pRes7{dvAiLoZnqtTYmh5erLldlhOl>2+Yspw3X7o zIP(dp!J+3Jvsng1p06 zEncSmRkbJO13=tyYo?8wI>l^ z0G<0Q3dvK#0Qy(O?Vb{U^BMekG=K_+U;_Z|r|N?F=l9PkAob_>=buNzaLN7s@PFR= z=h1(k(h}@9#fP+2JHZ&OPq|%XlY^d7+Mm1I)YrjT2(g^~*w0#RGkcM|elmNRK3Sw0 zw;TPS+u}*h=9OvZV?J@6-W0R4vaVU`PmN2@r1zF1K9Wt~*XPuAX*>eOkGn6HB6F45 zbjoD{l%B+f2K^P;A9|WUu4DG;Mql;zfQn(|JCl&4z!Z#YjDR_N979iV3!DH!=nuvks3CojBKvtg(PY3`ap!n zNNP9?d5h(c!13`}tV#`=scTEtFtY5GKkOEJd|E6C?yIB>T`8rP2v462j12x$VKCr2 z%(&4X(>xxM(J!4`Txtx;g|62|F$C{EbylApAEUlNVJa#}+dN_3S`_!Ad*>-(<}9P5 z;w&R)E11Nr!`)ofM9IlyxcaqUZGtn?`=*7sVrrM?fu-C5fCw9X)6or&lJ8d==fF#v zEXXb{Y_2Y^^0SCawX0kahQs`Bb2#}}4L*tZop*xDo5>8*xjtSh_)_b1!}?cP?I@cQ z|Ja(>6-7^JAa&nVvS;-)q!&rSK z^7j3w=J^Gb^+zv&163D^4FX&TZrFE;3>VB6t9{|@RcuY14c%eEbrpf2zlZPHuaDL7;@p` znjs&SS6QwrF7Sx!E)pK1p5V7n`n%G;+I;St2|YEl+4P~nOKyJ7>mM+&VuHVL6kNSy zRTilllvyyud`UrljA*#rj)c z7Uq_rzPYrD2R-_S-E=nqD5%mY`KyCTv;Hia@4&!PYF)e9`g#TYPS1Tg_|U4ssPlJ6 z?xSCS6@V6|wP}{ZWFT&RhxYX`qC`R{c)bwcz?=?J(6nps1CG~yuS(jZ-lXMaViJuY zK0?ZAW{otEIIr6jIFsDjF{UGJ_KLKX?VF}?9Ge2vkMtUx(5E&uH*t9Gs+N ze)GfI_0|l$gmGZ%p5j!tu+XZ?)8-5V9RU%MgoucUm{>_7BqUPmH&Zd_{l@-EXQW-z z`NXVk!#*&jd2)0X5h>q2&@caP@C6F`bqvBTFte9$*QNp4fta3!YsG_R7kp+jD3M}9 zACi3}KU5zIv`sh8&h+e(pn9SFa6FS9q#esPcYvjV$R^*SaPIT}RN>%j5zF>aOVEc>s>PTW>EM{+P&Z1GnF`h2AI+>AP#(*9wBs~N#)|hfWPGdBL7$O0u9g4 zUIL6LZ`j03Y^*~ix>Ur~CMTHn%Rgwr&^}Gq>}-<^0c$i=bZ+jyPXIXJ8SnAJY$z*h z7>2;v&@*Z1iO=XKnkvP(a^v$Fd76P11*^9k+KNJTX>la8d=l>F7AVi2{BBj`9L zeZJ{ax_5VFL2hMUiLsGo*Nx1=)>Uo+-h*&_R8+M3_!u58K0#7qRuE3aNDfIwdpphr z7W)^%%Y*sJ(b*UQTrFiNFl)UG55lYUi4#pU`#qS!H@N(c=Y2%gV@iDPcW49p%S|RG zxnc__n@2~BRJz**dZn{-jp1B3H`!dA zq`s~orASx)+3(HxieTibTqTjjR4`>)kMRJkx&F5T2mU(2ha;a*^T)S7%N zMnce?mFf2^PHkjV2qdw>e5v)V1STcF-v+QeaCclT56I7HHp1OdS9F<)>u(Y3PWCb6 z&;mAQ?2WC=t;}Q2m~7@Za9I#fKauibSn&8X*GY!MbKWpUVM+QcehERnia6#GX!vrN zq}N4dE=>H>3n@e>2hK+p_9Eu%?%Jkju%AfQIOR=hTE^yW=FeX8_s{Ii9&kkI^A+!9 zV9sWIG!#C*8yHeZk9#GnkT;qUV0ee1(PnJqiI0?iSmWou*A?dcY>FF;{#0(;)M1X# z3$fbcaI`H1yHjKmUL{4ARnG_p)+{RmCh^rcntBy}D*!FJ3FE-2P7q1%t`XFUbjxSH zsd77q$eO)8ZEwqkB@Ky6wQ$uf{^<5&=4!;*LJLKaDVroSmE&C8J{bWC@r-STSP&5g zeTGt%=k@m^VlAI$Gsv6hsOv^LhqA&WweN@qf)h&pkuSFucwdyzsHXK1EtxQ_SOXZeTC#(;Ol z?X%2Fz{SMN=ssdT zh~+qaSJNCVO1`Y8rwb4{I!a^OqX_qX4wIA8W@i>KcQivkq_ZLs&9U`#JG$a2ZCx#Z zzbOfa^!3uy5lr&ClCE8)pXupN%IwuiLZB`0qz7C1*H){v^LWCy>0u3(lC?FyX1qWY zt;pnWBRtUS#4^Aw816cHi&HO|&4x;06j$Zzz|&HDSK&uv48KHBia1i1MI|6IlR_J$ z^CD6%m)HrjaBw+i<;0SZd%KsJ8=50BN7>-?cx;@{y!;wg=4Kr129s%l3zJkfOI2_n z=&Yom%lZ{J>}7U6cL$b3sJw26K5|S^fT2#8#E{60W^)#6@HcWrWNHG*wVUQ|3n)ozW3Hrn(@q%b zbkhCF9qfCGd=#H*omg;R3@&zjQj4NWal4Gxe(NX-4L|k?%&}EBUR_!b@0(lc+_t|< z+q4xqBV2x~5CFqpFG>+Nj(Df2t)Ybs{^B<_x6oPV_X_XG;z2pgL`|+T+;Q>#7a^ZW z?0WiDje&HS_Vb3lJ8YJykOuS&ZZ8ikcK2t~)vTux2p-*V)DFf)VCVOaM^iipj%M(S z5ALMzGPh#Uf{6?zAZ-if4Ejyu>B${uGXVV&fz?5f0JtUhLtX+EJj{VV+hqb({^D7; zs-ayrkJ%6HEHbdm$C70hh>i~9MgZYEB6@!b42+L523_Mn?MVwC#tgq|Gztg0$=amf znQ{AZY=sZi|W%$|%#aZ}f@=&CpomakLmdH@bXE zO_9WXhI<d`o zlqY?AMa`QJs}AoNFd6ad1r^kd4&x`ZJn6T8tcS;xqLqL;}OEi5RO$rqAAzLF?ka z@85hgMRTi41>h)V-BYq_lHKF}_Fbs&u2e(TlZWRP7+dgc{uos05x~CwV_Fj*oy%z< zpf@yYNJ3ZSFQz9G86zX*?N>*Gha!O8SKNjTE(i$deLbxNi;D6O?}8(1fF))XroCe~ zE!X{au6suo*0zdq!`|xnGxF$0iHWL5bz?C}%=vCiK4Vt?I8CRe4OjjOPL!>LR3#sUMIobK2#o-Iy&&habxUa<|4dnU)WM%%pRhe_6!lF(tj?a&e z8JTF|D*Y(IDW6gq7j40Ai!;+je$LBUL!ZftH?U+7iCEasa;^0|%?)W4dSJ z_V|1+eruDJF8iH}5M(rQn?$5% z8Gmh6k@<>&L(sSiz}%gP*1f6@BN~`n_?*u|f(oX%siY<*}#4H&ba$ zKr0UCDdiy>xJH&GEX5V)sa@`S8)@g8Yj@j)RMaC2_Y4NwNQqiJBTOm-M%}Pa#RR?i z<$QLcO~&`kp6!MwsfR~u)w$rkPLpOIpY%iw%u+{8A^hi7Ow@i2$P53}8;gGYK&x)G zL!a<((=R_9&p1t~N<(!{T^H}!S#Z9yroEt&`cgZfbJlJ(PKX$-tqzG9k@j|g5E^~? z9Nnk7dx2ICY2j-#K~C)(TgOVO<$ zVY8Q6wS9B2C|7t@j3+lx$v5dEb71m%4IC2z!~9UIHD^|*(Jz_zvEwgR^0VsT*pi2n z4GWys&cwG&LW@C8FEa+MF3I^-u~z%(R)Sn42H!bsM5#M5*oQEJxvOr-V;xv0<|@%} zX~yin0*jHxHO#wG!zIY6pM9RKXGdeG7H-9xXKraq`_BGJj{-iyyX3M7k0g6lnFT6h zwfqrYQ>HKIHN1Aa{p47UKO1wj{|}VOa<-&owKj&rXNElytuCvU+KF!y8Me$DN4LBe zkY{(ACfh_>KG7KZr6)CK4TDMeRY){`Fa6MTxkhO4zIVM&u^bv~hH2xE2zwU-x8SwL zE)>L$_R0Gu>F6o|DHxfH88vu^_0aE#PdR7&TxoG`V35DCWMS|07h=VW(uFNp zy!|7r$2ATHU)gfq<`%~s%aFkZN*;tfk?0wtNXF`^_*_}Y-y@mHm;RSTBwt~C4uh9(ntLB~{#Q*X34am$4&68io$jrcYfA?zwwlL4tSB!`8Rpda5*Iz^eGJQ zr9j_sU9WjG*#hCU8;`z2G&^s~=&j#wji>1V{f~L`-Flh#I=#Nnpw|MbQV6Y*e5r0t zYs*@VD3r}?;34VIJG3^A{j{Cz;dyv2wR_nkiO6;8WaGw|vV0P9boyA;7P2|{iu*jt6TH!ysXDYee>v ze~1zUIRV2|-X93zkn$ac;lOZaxnea*d1HrRjY!M1P~zai%~G7*9iV%83Zkg`G$-?! zX!r=qc5ScbKUZ0Ibzs8kN}LT=>!iS;wh0AM4|1cbVf9<{zy0XC;Pu#1jVak7?r%Mr z88v4Z<8#5c^t>Qk361;M&*|eNEVhR@9_06@ZQT!hrDP66ilJm)g|+#=BfLVmMnkR(o#Ds|jUTS0lK01rSqoF0W zU6Rz%*%HaU<|?Y``OMIibDk{uS5kM?+tJ>G^1L}iatY{M`&_|P1nioH zIm&j@=S#wVJ~})VzG76)EnEn;_UMWgneW2pV}1emFAEvj41-b8V7IRZ^ccJ=L4D;u z`>s>1lFj@i$zF^$8}$IHRFsEL9J&;0d-76Qhr8x+ZO}KI2=$W^9z-jWS}vtzaoqNd z{8s_G{7}~29iPz5Ji>*{)WIjOqHLvhA?5nrex8(q@!_`I<9qak9vcHEVK*u4)>M}Z zgrgV3n-55@mal2`b}W)V?KwFX3?{20sLu?D>{;~xw*1WWV>5@2Dg;@TKX}sirmg9B z83ixPI+xy1de$CM{b_ky^*s>YQ)ZOgwbNAk z`4Xa09f_a_6}*uc+lS)R{7%QRO_CUibr$OMZ=|1Ag=JAK0-t3ER(>yaeyirR+FQJm zl>BweVl)uTrbv>msIvLJgRSb)sYC>;J>7xWjWt?{Bow~Z-s_#+NJDSW%u=jEc0k&O zqvk55?Bl`3sG{0VGu>gJ<_+c!Ep#nN@4j8v*IIup`70d>>$Y3)W$>pGxXuVXdbLj` zZ=rtr|Lyt zq)=9)2o$HE0Z4T<5ukPkq073#rknAy>keu`7Nd^tNanhz(qWu#Ov$L1>%zZUt|D8) zmQGT4OAkeErcps2gH0F~3+(3^UI%$hj0AfPhrT`DBpVU<7zEIG8P$_^_~anty~sl> zXvf+Te9yG?`=mux_|XSv>Dc3zWLoPajl%uAY?t&`14!ba5So#l>m}*l(@p^#&&2#v zu=T!6TSFG<2WJXfM=6RV*_uJidLQB)oHYe;sL;aU>tntp<6>n7_zT~LjWfr=1MynW+Yf0C2cj}`=_B0`LWZ0$H z$K!rcYo*k%;K&>kkO(%dz_+OYisYP6gQ26GDmiozOHk~oWDEpA#`*SzNL{0PG)iUF z$ckoyBA-(<=G1Y zjm`11rIunhYEa#{SEKdMJU*bQOEPrS4^njIkT8sQi!vbRZ~5A`!?XvYJ|W4RZ$=%C zVH*A6*4wuekHklObSVkSu(Bq*bDeOJpH_~Kip4?veesezh~kv1*ZGnhH9@n4_%f`# z%7b0_#OA&JmAlo0dO{Qf!YlLSfTF_h=C&6!hTk;WXjOb9h*14h@XPU{QCAZvhMJWo$UlzVls&M%{b(pt|glYK_9bzmCgh%5!QzwX&J?#u@F~ z)9U!z=?Zq2{@466QI$zzQ1wBx^~m;h*S76yl=Vr zEW!Hbb)7>TYgH#YeLva$))!YawfeMrmnY^4^NP#{ii^8hi{!a&n7ai6SmsK~+v@Os z@;t;T;nUa&K5u-ARY1W8VOV23J&oQrQz<1Y)p`T~9D~-l?K2a$Ghtx1D90p76iIqv z31^f664z|}XbkFWYgh2>J^4Krt*|&|VyKCFj9PtjQWL6L0S z?{(!xNR@hwnhAwm==0X2AIx%IfTpsYd<(GgNDeea2f~N@gCsv_K}b`WR%N^BQ@e&< zG^Di}L$f~7^qAAI#=^4r)(22uc&_Ie>PFQU!{of~xdt*b1+TbBl9z<~Gj)2; z#rFPGoDRuAi;!`(Np~e!*^u;YUbenafxg`R=?DXSI#o1wyvH5u+$&G6$- zD9rMW!p)Y@2`KK0#tYR~+~WvEcElU-o*XLfDVD&Q7GD?4dAg3D+<%sfnO=+gCrd^B z;?Wq@mv`8uu7MWE@Y^et((zX2Vy0M~-x0os34djSk*M-O`-AgnWL*`t`1|ung6Lnk zpT&x}5nZd&Sqt?B;h!i#xdTH;Ut^Ha&;JgpH$cx#w8W){F4BOEMRZ-%YChVHY$yHV z40&6#J4%19Paf2ETHwGX-1YsHMAkfWMWQfyY*r)+x^Wn|Szwsp$}F{Q{p}AJiM_Uf zkV70)Bph-&=g&3OwGNV&NcuT^ma518IF4_dy2h%={^XxWS2T{qUbbQQT!aX~H8z{E zRLx|g%Rv@KCImb;8uu(F&?d?LNbrjI%;fO8dpeIqC{8$t+%bA+?_Io=XV4|72s<3k z$zt1nJ$R(`J&P7J{7~9&c7t)^0l>YYF=SBH3&!9Mcg!aohX2aFZmRF%O8wgliH0;o zr%a-0X}q5?aN-wH2^IqrD;5$Ro?cm5VAGNzcvwN?csbusz|b~>EBrK+60I=@pO`TV zx+N(otE6!h#>PY<5A2Pl*OBs%Q4LL?<*uG84C$IC2L_#Mz~~jSyPcaFnWjn>DcrF2 z!a=Q3J$$}Qr>rl&m_Y<2({AMi8`TcFSiuZyp?g>ERk!?qvNLBOs36lmzYE)-6YfN6 za|-MuSgHB6jxWLG6&9P+xZLZf#AVIYnAge?rxMqIrY+e27;Se@|?r35CA!v;ImVhk+FWinI1 zb5fXj-&Yo-K#%Y<`=UkV%m?uOnMP*g>9n!Fmet_;T%Ln0emCk%|*@8 zO=~;@n7_0WD3TLIt)Ouc{+_tVv5cT3@9X9#{T0gvqp5{el3AwUb& zDH3EeJ(L;Nisc+jCgOv1=Nd&qaN> z$=4E|#0qQ;!toRj=`hL3B#Tv2VNg>D^&i?YskTi!RI!QGmM#ckP#0TSR{l#lIV0EE zMg{75md6SyaC`Ul^>Kn{@PVEsW&c}Ap&TToTxQ~NoVqRB${m$3`B5C_S^eV|2-Zk> zYLQz^GGH@xjRC>}EXdd?&A87mIf~9SQqyTWBd>A0@=K`S3?Tdj7L@x#*7csd5}A5% z)WQ<%_b6Lm>dUZuO7%jj3+s{L!%M>78|t>xuUqG%U=g^dea$M9Ydf1d8|*{Hg|5%+ z1s-`6bmMK1o}8PeNVU7^a}p~@h|QYtPP^4#Th4$9%+q!F_9X#}Zife#9HDFPMICI< z8^Qvy02=QXVEy+LQSA>X+3oHF<6Z9<5kGPN#_=||5$)Zuk@42lteCjYk z4GN|8tr{ismIs=8$}f`**UHdzIiS-tDNHMxiJsOD5=qA^I@5*$uYDzn~?R zY>MUUh8%>E?=g24hZOUr^m9z@rD0EWb;ww03R6s%Jc8qG{)MB_o#{SP6e^o0D1%eL z(~-;3aEweRVeL_ri^*LRhUBbT(%>;3;p3fF6+@CQnVnGG6Fz z(9Up#K*`O-P(Md8?U4zO3l>joz_cY2OQ(r{F%q(HgOb9;ZxSGYsi^EkV%}-&WdK>r zww*@;jYq;k=NM8X1g=uAcrY2dptf55Et(VvL}jbt@L#ZnNDbu`265)lYc-Y!ahV#j ze@@Btqw6M(ao{h~X=cIG*lYolx1BQPaxccDo}(B^_EefM4#VB^w)Y6yR7LXLW+=g` zW+@Y|C}?%{cNT+-)Zn=5Y3YS->+c2J>BKRoX^X>VAB8WGY9F!!v0Tw8t^8 zRffz6y2hme4>!n@53Li5FVs)oEMsyHOKmfM1h5P0n)YjXTR7}3@*0`t3Xd!a2!SpU ze$Sl{8PZ%d;_y^`({!lEqEjs;8Sn>$fk&wC^xK{V9;nVdBuDAx1M=t%3kQ4 zdDJVB5+32eB%u?uxAtIR>o^=-WoxFB4}h0J&tJ}b+YzH1rI^~QcAt|PuSR{YQr9*I zUE8kG!x9mjvhj16NEP%K zrz^rkq7|Tbr#fnrNCfUdfK3@0u#&du@G#n#!rY=uqQW0p-LO^#a3F}TRPqf(RjXi7 zMH3V2;t%M_iC4`~5k>1S2M@sP8*H1!b=+4NP(C^0%4DoNZ@K<*%yYR;uZ3EWz==Ag z0bzWQo>e_8baCQ=Q#el!Cp4}^1i)8sI0^>WOa+wc0EDEI8M-D~90m;&PTBJ)M+9cN%#T2DA&ze2hc54MVnG1|;;KagOR zXc$wA4|FNculeqYIjnqpuQY~)3(9>!T$~uHu^)8{SiXnO+Xa(1Jbn(u(OhA#KvpP# zsd2N(smZWnNxA;p4?z-K;UK_R+j$k931=tXM5BP%NVZ(caWv-xC$UFO8Fv)*c~Wfe zt|%+QeA^Tas76ir*JBIo5hCFBXELZj)bLjO(z24yfFT9j0Y6k zW*90LklX!=Ui!k7<`w1LOOlW3ar+TCn&g_X)An667}AXs9#&w`ql^Nd+4*>^fX)TO z^9wV9AW*S%7~D`YA;~-nz`!M1`2cu|)7x)aQ2@DA=AGAD%O+f=C$!!d!(HLpNfjO) z!t!M8aZcWAC?IV}TjAds%Dvo~5t0!qlYc@Mpb>5S-)KYim}?XPRB9UA-s1Ro+MG=+ zf~b0=Zb{*uXSwn(rQpqhoSqj@*6tVyxazS)_&Eph^|Io1Ft$%FX?~Od0vG0^|Em4o zvro)+Pol2s*sWMN0Yzg8UH!b_&`oYa*AIYNnZ{ktNxd54UE9&h8Tb_Hsv}d&_ML$^ zh=US>!Jz2sjmY;hdHgq+J}cRL@w5T%Qzut6`u<00*Hh+n>E0VV3e3Sqbwi7b>tt1{ z6zyviYC25vTB4wZdEF?0ZIktv*-1hW#*J#92Y}|3lEDHzwYiM}&}y@IA-qalc3Vo{ zFWP6`$yUFe2Ttt>lz_|aLByU=QUSR4)N*~m=RO`kxzSnI)fwjlxF0qQtYHV1#hY|v zsQiFdNTZp71@S-6E1hOl;-CR&8uZX3TA34Xkbt56zNSwCibz)hMMdebo@~pN?&afp zPmw&*R=i3HaLJr|X>=9MxXo3uByLp&5@?4IY@lWp$c8560po@Gl|~7I1s~Ya2mCOA z$-yu^6-_0Cx6IQ}L>lj4-Y|L)*c(8HN-x{{q+-oKZZ2-M2z*pEa|R$ehRPHI}kJpH+Vl*cuXmqqy%`ndCoLSS`8||B%&T=KF{3{#`r4A` zDlutO?S*;}ruPI>pz~N)Bn~p78Z)cc8v0Xtfw+MJE}j?% zr0ZEw)9a^|UzCBy8vhM~C8|gU{#~e+&Yx?21Fa-0ePU|fluTAmf1T&Hx-8LqS!_a1 z1uF{ha=^^e>MbX>)AiU${i?1g$SDEB)O!Hz*@Bw_Xb#36=DwCdi&}QBU!j&+xxcM% z_dag8kQ1BbS(Z?g$3)|H+^qQ?yUM23`LpGmi)!?SKxoJos=Rl#NZ5q3|&a|oujf`CCVl22679;}dF4c!X z7Vy}@f{2ff?2zbDL~6Z_0n~_S6yk z^@k`0bMUJ98(()!DNnbVHF@R=soTJrV*c70)M)1=z2!Jd7<254P279L}p=Sh+p4j%ThR-jc zK#X~Z@J?X#u#Mj;JPJ3~hN=t}^^W_F29lOweZK(zCLKW0#>kAR&*^I~Iz{s2 z!}fzU2mJaGLLj4F*@pAZFeqwWj|CIGlGCx2+M{X-MQAK0jfA!J@|C8yPNwJ1g>N8S zqJ=WgC?l%QYWLfiTsqS#e(38>$uK`QMjfJ=GX=oGy`aQr9{8?p?kd7oHB6k{yw%`1yDW>;^*?xI1H)s&RVXGT#YE8n z-cBka@I*)9vC>*b^tO!am+qlqGVkI-gjKqbm|8}$@bu-KwVk9 zrez?2Ty;_%m!db6RnK`V-9U)k=`zFxnY*tN-F9eKGgD$RJs8WGW6PH|>MkZh1Oy4E zy&v|b;C2!>(3r&e5F*fzv98Dv09e7M%oHv4i|_`w`$zK{$= zq}DA!71}SW17qlgL;n`fXB{hbFC8HRdvCGTBtWK~pK2N`LI4bTcRigMUpN)YW_mmb zVQ797-MS(M&ctJWRq0Wk>s@J8^HrVGT{xBimBr$6DCS6or|GGaeYjd>l>o^eYRbgq zzTKVO`~t*+J1^Q;2=qU_2;M9ToYe(un;T!I7G{6!%(I0f2Bdrz35VM>_e5=nA}FvU zGE+WRa~u{6Ck_Yx(~3cWO}c=q?kI&L`0OrGtgY&R;Omwk>eK>A!r?B%yMEO}D?xmg z4b=VY@yUyV1igUa154a_YcODsQ4{M_O18d%vP_}V96zJ9eC!U{RVA|K=u)~HLFD5c zPXJ(TzA1p}j<})~Iegp2DKT|X#Ct@ihM-ux-8>a4tTSF48bI@Sk}zdo&Ud#xLV`ic zEqwg_Bs%vg+27yJ{_=2Fxu@V+;z(9O%LhqZ2y{w|=+x)SkftDiP!RfExk_S|#+HK* zx;2SO6B~lkCdG-6#!Umv%t9=jwrey#`#p1FE=LPd8=ENwoEy1Bg6_LZXFl@aUSJiU zHNon2DEamfF4I0iVqqU%lwtcgK2M(5G7P{5ZHX8lbY(m0S>-*) zD-QCPG2j6t0~foLWOBCq-q4VYiMX>9w^jU)DU>gRtv65hz7clW6J6qlPq znY|hf$S7l)xFm6pEg190?k&Lu1)>RSZ8pSLL|Wvh;<07KH|fi6@EVZ?E~=TpeD0Hp z&8W@fWCCGO;^>Kd(cJDEWulkY^-Ku|ASW_)?2qn;Ol@jQQ7qJ07o6qYV@=lfk^x@~ z53gbXSW>Z9&Bq-gX3A@Sg*Q7y2;Yx-{a+>r0Z4%gly7Yp5hHY}<&;!w9#omKo)lZ=be4wO`Iuh=p%~mwm{qvLpw{1`_q$IZmrf0bqp0E>poL9*Vbv zP&(I>)g?m-#o{G#upfC--_yM+{;G@^V;IRt%ntNX?Z2N*{Q=}f=0oHIGx(e<6!(7h zkGsuWHj6|Tz?rZ=5U;2GaXl|7N@xK{;%Lb{uBcS&jsAe2p^?Gz3O4rpF`kT1$93tR z#BQZJ4AB6p+SFLGKt_vlz#_qqkXm678YWx;cCqvJ{M(Rgl9(osFqO+5JsHqXTe1Tz z`URd^al%FP#pjd1qpmtaz;kd}7IGfq<|9=V(}0FIfiZ0{2z*#E1i8*X0XlOYORWh+ zDANq8W>*OOZz9bF(75H=S{DfH;$qh<#K7-4iR^CAamnFg^Xj1%INq`~5MU3C9?MB> zUQ;3!r>4k<_`o)HW99ibFn>E>8{LeQpaaa8kUh;Rn>i7Ok+-uSfoP_qP#Uf5PRiAqD{t)mNT`-Z!coGSs}$AtS7gBY zdd-^{+62k&QAJfRmBq$1O*2*y;IzsaP!cK=ic%2@jKU|bmH;K}F2f86rM!3nfG=Kf zM|QG_0a?8lMZtMKR~$YuYdIOq>?AXb}|&l2}uMgZVL8*2-wpf}5bNNlty zK^*iUD&sRACcFQKhnEiXoxq&XwKo}z{eJr!(-2A~t;n$GC=N-7X1)%a+)-q}z!cRZ zTmN-%Wh}Fwq{g&UJC?-ch_o_$Io$Tf&c*P>&dQc(tq7=wONdja5ZC)b`ExMn^z*U? zG=Rr8Ns%F44TwOrDCL;#06TaMn!gw5ER{b6G_CtI)M?cN;Zh0$%AD|j>J41XC zYZ`}sfDG7neDAKBgt1&ACgCvC#C7V6#B8)jtW#}p)&92k#%{aTS|igJ^|UW7ocE{$ z7qY1q0;uMaahUy;PRwWC+k6|dNIrm^8ZC70H_{%~qhC+QQjlm!Rb~sIITxV+BV~6{ zeZ~VYk2q5MqPWs#NzAJ&D1pX@&5W&S9E$s<`=WbUiTXFpLxB%Kv&dA+DAp_>ZCD+e zBc)GO8znQY_6R+;@$mi0KV`fd;862<(#m5R^#M0*3# zxhi^f}xGi4%7RU1nl6(Uwd26 z`4*t(Btv<;XiPM4&|&VZ8V$H`ETqrIZ+7y9EFBWVb*O8al7i$xquW5RIkl^*;Rj*R z{LIm|A5>bXJi79{B_4Dka-xV?~w}@zgCpr+8-F)+bSPGC!3$vSse5&hjD? zvn@Od2m=QEVHJi}JrC!9aE@D82UjxCvF4Le=lh+lUKV?JeX*L`SuoqUr>WjV8>g@L zwBB}W9U=p^FV^1qZBW<=QDoDESnl({6{(-Z~-RB`B>62|S;XQ-_R>|5QhjcD64t*)ni?mk`06;%X z;{ox|U3oQKZ)LvEhGa&h)*m$^HOOW27ce7`KH9p=9ev3RK;;$b%Q~f9t8-|>541}t%{e>Ab9El8`MOW z4DTZG5CcdFNd9LGzq3Fzzw>~^ zwu~uH-g3_OB1|v5m{KM~b9Rlz`4MUU@`KO%hix10D(6(_51;7bknLK|+Mcv(Eu0VX z5(UoJg+HJWj*<=BJA%*uS+77N>NYk#V@qmTn1`uNk5M=!}`qGNYx?;1AHf#9)ZGZ zBBn1ZDAi$v{B#nmEz$g{s0Z9$*SX-v8c_W8v1((YZ8L~Z`&Kn=&*FX_xG~16eTBs^ zrbu0$M?p9HmGC)BP22ZF9~t&D*p8zinlm7Y{Z!U39H8SEIOS|{2)d#|0(I49(znHUXzk=@N z{SYi;uQU(W>AOb}%dxL3vBKy}atP1tm0V{&l zZNiwysF2?!%GKNy`et!N=d6h}YmbXIU=UuHp5(ye<5q4$jr-dzR75to|M<=- z&H|z@ARXK^RmFZ`U7^%LIqazjf6Ez!*D zy!)JgGhw=_jP^o71shZD@8kzj%o)6fQlgIu>NGzr8TIEseonUDDU0YvI zo%2$h`BX*QV+xo<5kp_5jA7m+5e&;7seRMa>dWbOF|Uc>Ic$Yi}=tZr1yMG#qz#KiWKQ zP-)DSE;zPsA_nPZQmai zxx)^^m~Sc5G5q4Dut0}}59r9IT!Qr2g7p|J#W88}n?BquTgFWR=g;kLn%h>O5zO9T z)OEkDFX+hVQSDE!;!tF!BYIXaQ2iIFwu^OJdT%RRdmll7d+nOH)n7|?e~Eb=gr;FR zIsh=E7JrI5-6eiP53Sl!Njyw=Qe6KY=sXJrtcvxoVJBCuEMg&q z(m+CVy^36Ua)KQA>`_QziVD^kKfc;o-bZ@}D=-A%?uMbTk@v3k7(K7kM>&g(!OWZp zxCMI7Z6##2UE}j_pI63a4reZ~_&@8Deh$WkXWOxFiS4li8u0TOPX~fN(sofqPHjQ5 z(KA-+Enw{it2rG^EG-2HBz=qcWP`yHw=a7JSphR!73%&LM%?#J`0B>HL#m6@da3BA zCajqPg9h?L1u0~NEgmS1!myV}7ONyBfnLgq&s|lHs ziFml58|*US(!7*=IwE`_=lx8~Ig%8PcWzAsA{?dHh;yn2pa_`>B?fY`WFfjBe@s{Z zHs|8omn6jHm<(}(EH_HJc9ZB_fykyH_i2u!30%U(k{3#p6SI{pI;goiC08b}d|39q zSO1YBEK|kG8bTQ}0_mEH2t*r6I721P8D8iJ8z;6+7$(9_Av4c zU_7`{^m6sXst1Sn5**~zE(B^1q8)tDnMFknG~qM!A$Dsal*rEwtgPd#j7rH0uZ52p z)oS6-Pc^aIs>svyn!6`2fch}M9Vlq*(4gR{breKDg6s)-Bn^KvtcQFRYnwG0cfZsA2LEg%i^+# z9^d`FdpGHCNA^D{@_#2qc;f>B!jIP{R86SxVGw<)WsL0`LHK;mhs)J-h)ma~Q$>!6 zCFM1-_4_^=tNfD|gGy7B`E& zG-Qln3G|N6JMMewYSiG<5})|5jvaNK-k?9do}Rtx!Wecsyk4zukjI~bT5jr=7@Ln1 zeGXf$+Q54zb$q)bIt7+$&+N7$xb%D;<`89Go_z0r5jJ-YsAvHi-43d3eV>+Cf?mBI zhV))X3tr5Z>Ikv4vKOCUv%^V)!g=fi)W$nN0Il*P4w%&=*{k) zub+olW+CxwuJkMX*7^G8OA`i(XQ0(!pcS0-7?4`9Q! zkQEU!Lm)d0lR{=}rtO56pn}3BxTj!XdXW%X*pdqJ^+ACVn`mwq+>pf9OUZqW0}^O6 z%_pmU{6sc}UtHv~al}wY5%%m~!eIz${bn!i|QCx(yn28K18Z;xK0g#9H z6dN^W1J$h~q&*pA5BL=IR<*H8si7I7fP=`UuOGXA27iuJ$lH7V)1w_d(eU!xCkuAu z2X9Lym&s?++k(198MbRsDzBSEix%UbytHXb13ikWT+uZ(R)Qe=8ye-ay0;iy6pSYS zQ!iB}GHM_;fj{Br-~&_!?J5WB`6dhF)9f9BwF$Q{g;3>-qUFCxP`sTkKQFR2roN9b zg=CAdYfy1AFUnaj|LtvNSkG5`OPm(l7%2_0!2@ArZZp=)qtzBEo%PCOzzbqvPifNC zjKi)zv!Lg*yh7Q@BDvt^Pc9=ERN!glyn7l);u3m zUMMeRU<`kFu7(fn$xoR3mGd_GLB@N&JmDM2_$X2U?=#jH5Ah}EKm{R7q?9d;{hzm7 zxIiJMpYobZ)Eq9--2h&JE&>j6&^6il{IPg0NxacK4Fm_XMs~MTM9_U1j{Q<};`Ap_ z9L^Lk0t4pdksD+xk_OA1N0uh5~L40mQNs|PWJ+mcxK!_m1xJ+pfEt85}3-$uMxd6ZE# z4H~xpj=Jzz{nQgxx>+Q1n5u^Rqwsg=q&gh_C?*Op5{7HvpVNTmK{l&OVbGMiK`;^MnLxL1kp~Eo5@-wZo0$-cXNe%lCi4iE8}Ri-=bm0Eq=-B5EV=qrVn4Qrqrq1c5rU@S zssp$atOM2=PR)T#SwGpnfu3C<29Pt;Ojd`{I#hNGw@gE@su?9 z07Vpvpdf74lF1-K&RJ#HQ9RIat_{k7Duu;pST|oU(sx)65m%88V^dW${=~%~Xq^GS zFl7pQMgFC%&T1G2Y61=FVCEbnl_y6Tm@AVAku<$v#t)+8ygyma&3*~Dh|IGa*j-rF z%?UB9m9Ko9WJd;Wisewr(kY;I{5DRPoV7^yL_|Pvel7Y4K2s+hHH{1cT(5<|>{nVmOXg8ol>kpf1$%^*52`AVGiH_#*rLeC3Co}Q~ zI$C&s*V7CCgzkkZ=8tW*t?705NfV=N;-CvgPVLhlRW9^jf6E_Kbz%0eCFXw0!l^v2 zZYXur=rg>G$<-T4sqcO?nWxy@#{KNXu*MTylX_N zW(~;2bnSOk)*ff;8JqUW;2kRI$MJ5pU)_0kvf|B8@G(d5HD2#U z#ochHU<3-fIbA|gu4eu7`=(G^%6$P`!mrHT7~;FDpmZGglF5?x?T6S zXKZ602IaT{7C|^$sYHZ<-Z#2}j#1<%o912WsaZaB% zt{Se6@y4Qh+bdGzL0DpIJfmb^Y3Z_cvt3z};*kY5Xm%kYSV21p+}#n?nS9k_s2Vh( zQho6oeu&FSn5gE@jf2wZwZFFwg|aeRTD=yM0+S=M0@S}k5%Jo1JP19Zc#KqE=XT3T zbJ?|-t+pYIkjH#cV_6k;za8}7z_jGDfVSm`(yIA;FI6%$*5G&sc@b=w>*l7CU6-FO z_&JJVQ8<{io?L+RH8zts;5Sk~91Dfn=fq0+iSZ9@I;d$a1AKR8a!N=jIOI9$j3nJN z4H&f|$UOxH`wj6&tK&{ifOa%g{Lt>jE{HykG*klta{en1>cL4_>k855(n zdrJ($)V#MlitLcan%|a#dBIo)Lc<0a>abwrZFNAl?xZ9J)=gT6vCmdJWLs26uKAqx zeG)30ZAOQO8^;)zb}tCaG*R4C3yh%EYWGuy%&Ban*CNbCTNkOrty-@VwQFFVfVJ88c*b7Vxnr_PUq1&f zr<>#tGnAr6R#ny*#@AZP8o;8}#N|vS{A4ebWvRR{Q;+wu@@P1JH zYmpFe&uMV+GjBT&F0=CI_@IsAgJGais$-|Q<9TDa{GWOHYh|(1DwAuJ8-?DF#G{|T z;j=JII*?|t!?eT^%=``k7{z*5pb!dVos%li6!?EREc%3_L-`s@!x$-3kZr*Xs!Ub| zy{}x}#MRW?9SbU#4t(Kx*6xB4Ng$LSnj#rLDLquBLHZfLvy?NAIwZb&L;sp9ah)&| z@r`X|Hu18F$6`5-(DPPpQ92LlMrEpX4&nny{TO5#k?JVKgMYDW-JEOBSaS|uh9(Q9 zHb+3&ViRpRX?|x(5c=WEVVlyaVlmZY>~SzyQ>v2BIopl_l!N4H9vav zMrJZQOeclJ77*}yU9ZvcHyF)j#N_nx-+7Hirt=D})IRxr3n&;%a=zcc=nT7zF@Bcs z(srg9DU}TLj3ngp*((Ddijcc zKY)x|xQudD%I(8%NS1G}`MxR7eQt(V`abcisGv76kzcIB9BSBV&Dn#% z&_I<`7E`}>R)-y$aVI7mm0H>CP>L4{VROO6SEUYTU8hnVvpaGQhd4rE#abD)6M>=( z8`~ho5HW({!Nyg#O=%?1f_Bochis=HQ|A+vn@W!6$Iq%4%CPbCj`|0K&JH@g+Utr< zO2`8NwYi%xp-wH^-w=o>p^#~LP!;bne^6b05XXIWB3!O&go?~`#wWVa z7lm*5CFNO)i1uwD!^Ln$@js>1g_Kblp)_BINialee{dFYb?7H! zKF|qI%@fJh(`~a5;6smMk0?fn3x7by(7fH2IW}=YPiN5TEepiU4}ZnmuVSc=hY&1a zHzp#y>J_ry2CWt6tU`Zt^d1d&*kHx5Cp7^lFNX(}plem?~iMJGsDr_Jy6x8P; zmy_3svSPRg5v31PFj?6fM2JII<)N{|Bg@ z#2zuD%?01u4B8ZtdriJdY`95pcVgIfU+Z~V@rH}|=v?JQ6i72%c<&Ctg#>34@n3FR zreN>$pzhyP6xq{FXwIMIUd?`o&W`(E&Tn?ewswA5;RYJUMdz#9c-O37?wyr?Unj0V zotK)kpSK>MHieQ@3I|Z&0`b7my#QPwWo%3?SkO4^QyEK0p-C|=gr+2@B`C;G`0nG}LauqA-}jW%6L(33%DJBM^!FKK zDLX)0&E&Q zUW=Z6Zoo08&d*vtGMbH_;(H4xySKZFh3qVz>JaT$8D znqOaI)Kq_^s2X=yecn!-IaqdtP|^;h4&l`X4u2cfsA-Yinmu^H+^7@d#I^Az4H5Zn zK+#jiw#U@yvE`C0cbsKZkaWKd!)Z2av$q<6$`Akl@0^^o-IHdWX6Fi}dLr43FR8-; z2>>9k`z};jS-Qt{h4plCVbwPqbB0RD&=UMv^T{TaJ|eL7FX(b<)p;cWJhm`lt(x=O zh|qF2!~oq3Ej?$i6Q;M<2y1fj>(5T+9itbw zL#B2E!Cu*ls&*zD~SU#J`%HLr{ozQ~Ce;`fQX=nA=iywR6@d z0Re^whJlC%oV|mElKck(y)B3WzWLub?=Pak^a_4(nN-=?^?q-6mP|)6@C3$PB>|46 z6TL_G^E5i4|Cd=g5X5(B-;DYG(9%&w82?@p|yrK|#y`22O9& z|AA8`W>k`09lc0^0Tw~IOJ(3_5YG!GW#EK<0F4~9Tx=L{ ztab9OM795FSJhNNOz~d3`^r7fz-C-FG5jqV4P9FK(*xendJ-h#P`Ve-M!0v zmwBH5)ze+t`K-S&5Zq7@esWC&xEd>Gw-WzVVwR$WmuxSRrJnO0jP?00uD{X{4C}0x zNd8|zhDNN_F58PN*lY96h{xNwoJavrYnp^is{X>jkgY(q{j90Y&-pBpf4FIY&hf}0Q= z-V=g%Z@pjsLw|n9;r*N#AzDC6X(6hmVFh zpGuS6+i-f2KLQsuvTAn|vrRdW3XUpjzKWb5wU&uL!xvy!O~>@F0&-{t?$vxPB{jrH z>91x)6z-KPsQ_DcASiA-^?=pO{6_E-1vbh*vR$WIAdU>Uc;2`|B1vLwUjd_*+k*E< z#@V_U#JRx59%UKl&AbJJt{%MJi5$YG;p(A9y^OBxbuVPw4ol2j_5I`00l?5n!`rs< z`T%f(YJ3sk_kVQlM|`NAV4qU&(bX*Z)V65j6fi&*UY$LEYU=^+GoWPH39Y36z-8XU z!$n!y>i9qIfDr6IaEb)Aym0yyI-i!D93E*gYXm8Pu$Htk-xb)U?Jv*+Yj|_lf@99z zoQgwjw}TxwB5CFN=N8hC7Tts!yqMMHI-HQGvIz zo;BNe8Z$FjUw`4%ruj=DWjoc^4SV#Rl)bzx(=bb%t3Kvz7;ButMBR+){Tir{%k}tc z#qO&YG=c4M3e{�@1bqa;9q2vMpl3{0W9uo0hGNSR%&VpanDEanzZRMCd<%v`pi>rDrF;-4a^F2k! z6WYV0gJN9ug;nb^XR}LT^Eirc)jx@)!b;psI^*p|Ov$CfrFAm6@aRxQJ@~NyowF(9 zo$Nc3o02hio-L|y#%8OXYm1tS35z+Wz4wJeAMV8k-jzfDuc_$U6KsRaR%^D>5}Q`b z_a0v7w?4F4LONsH_Ke!Xc@0xWgJk`g@ z-`!vH)^7j)4eHXpeVhw@%RiTq{|Tv4wT8r}hEE5duP#CoW58lxpUa(z_;jV#^#dNL zTOLPj?}fOb806{bc~HfNZa81Ad3^mqVD=GjJ#qS9quW|~lTQ98@W2AL{XfA37Crw| z4!FL|K-G5~_4nYnWK{yJT619kcL&kobN!qK$Rr&3-_*-SwgP?pz`Bfjf_H3oa2WSc zo?!=yMQTNYVSwL5aDU%ICa|j5B{TM24}b$BpCEuo24pI5xjFIQ6A1Arh1w)QU*Soo z=(|n;2fvg3n1}nxzB%I7y&>^`xatrPH3y;F>_FYe?0;yl@w}73(wR+b} z{u68v5Xa(YS453zfH{-MS)+&Ge>n2sK6KcgAe(dC_5f)stDw5G|8rIV&f%O#?37`5 zD5gRdWNM_$Z!4X#w7skM->3U=Rln$xX+;GS@-lKATfh!#Bll??%LmLo0} ynU>h^Ni`s<^53(LPp*|wzy5b&9Rzr(_JLe0#vrMe;Awb|0Th)LDHqcB|9=1uCG&0o diff --git a/content/actions/examples/using-concurrency-expressions-and-a-test-matrix.md b/content/actions/examples/using-concurrency-expressions-and-a-test-matrix.md index cd3f3b7ad2..99375cd460 100644 --- a/content/actions/examples/using-concurrency-expressions-and-a-test-matrix.md +++ b/content/actions/examples/using-concurrency-expressions-and-a-test-matrix.md @@ -122,53 +122,6 @@ jobs: lfs: {% raw %}${{ matrix.test-group == 'content' }}{% endraw %} persist-credentials: 'false' -# If the current repository is the `github/docs-internal` repository, this step uses the `actions/github-script` action to run a script to check if there is a branch called `docs-early-access`. - - name: Figure out which docs-early-access branch to checkout, if internal repo - if: {% raw %}${{ github.repository == 'github/docs-internal' }}{% endraw %} - id: check-early-access - uses: {% data reusables.actions.action-github-script %} - env: - BRANCH_NAME: {% raw %}${{ github.head_ref || github.ref_name }}{% endraw %} - with: - github-token: {% raw %}${{ secrets.DOCUBOT_REPO_PAT }}{% endraw %} - result-encoding: string - script: | - const { BRANCH_NAME } = process.env - try { - const response = await github.repos.getBranch({ - owner: 'github', - repo: 'docs-early-access', - BRANCH_NAME, - }) - console.log(`Using docs-early-access branch called '${BRANCH_NAME}'.`) - return BRANCH_NAME - } catch (err) { - if (err.status === 404) { - console.log(`There is no docs-early-access branch called '${BRANCH_NAME}' so checking out 'main' instead.`) - return 'main' - } - throw err - } - -# If the current repository is the `github/docs-internal` repository, this step checks out the branch from the `github/docs-early-access` that was identified in the previous step. - - name: Check out docs-early-access too, if internal repo - if: {% raw %}${{ github.repository == 'github/docs-internal' }}{% endraw %} - uses: {% data reusables.actions.action-checkout %} - with: - repository: github/docs-early-access - token: {% raw %}${{ secrets.DOCUBOT_REPO_PAT }}{% endraw %} - path: docs-early-access - ref: {% raw %}${{ steps.check-early-access.outputs.result }}{% endraw %} - -# If the current repository is the `github/docs-internal` repository, this step uses the `run` keyword to execute shell commands to move the `docs-early-access` repository's folders into the main repository's folders. - - name: Merge docs-early-access repo's folders - if: {% raw %}${{ github.repository == 'github/docs-internal' }}{% endraw %} - run: | - mv docs-early-access/assets assets/images/early-access - mv docs-early-access/content content/early-access - mv docs-early-access/data data/early-access - rm -r docs-early-access - # This step runs a command to check out large file storage (LFS) objects from the repository. - name: Checkout LFS objects run: git lfs checkout From ca3a911a746144cd4ff7ed1646aefd42968a85d4 Mon Sep 17 00:00:00 2001 From: Andrew Kim <6799182+andrewakim@users.noreply.github.com> Date: Fri, 19 Jan 2024 13:16:41 -0800 Subject: [PATCH 37/75] Update storing-workflow-data-as-artifacts.md (#48679) Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> Co-authored-by: Joe Clark <31087804+jc-clark@users.noreply.github.com> Co-authored-by: jc-clark --- .../storing-workflow-data-as-artifacts.md | 16 ++++++++-------- .../actions/action-download-artifact.md | 2 +- data/reusables/actions/action-upload-artifact.md | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/content/actions/using-workflows/storing-workflow-data-as-artifacts.md b/content/actions/using-workflows/storing-workflow-data-as-artifacts.md index cb8a08c313..41646a06a3 100644 --- a/content/actions/using-workflows/storing-workflow-data-as-artifacts.md +++ b/content/actions/using-workflows/storing-workflow-data-as-artifacts.md @@ -180,15 +180,15 @@ Jobs that are dependent on a previous job's artifacts must wait for the dependen Job 1 performs these steps: - Performs a math calculation and saves the result to a text file called `math-homework.txt`. -- Uses the `upload-artifact` action to upload the `math-homework.txt` file with the artifact name `homework`. +- Uses the `upload-artifact` action to upload the `math-homework.txt` file with the artifact name `homework_pre`. Job 2 uses the result in the previous job: -- Downloads the `homework` artifact uploaded in the previous job. By default, the `download-artifact` action downloads artifacts to the workspace directory that the step is executing in. You can use the `path` input parameter to specify a different download directory. +- Downloads the `homework_pre` artifact uploaded in the previous job. By default, the `download-artifact` action downloads artifacts to the workspace directory that the step is executing in. You can use the `path` input parameter to specify a different download directory. - Reads the value in the `math-homework.txt` file, performs a math calculation, and saves the result to `math-homework.txt` again, overwriting its contents. -- Uploads the `math-homework.txt` file. This upload overwrites the previously uploaded artifact because they share the same name. +- Uploads the `math-homework.txt` file. As artifacts are considered immutable in `v4`, the artifact is passed a different input, `homework_final`, as a name. Job 3 displays the result uploaded in the previous job: -- Downloads the `homework` artifact. +- Downloads the `homework_final` artifact from Job 2. - Prints the result of the math equation to the log. The full math operation performed in this workflow example is `(3 + 7) x 9 = 90`. @@ -209,7 +209,7 @@ jobs: - name: Upload math result for job 1 uses: {% data reusables.actions.action-upload-artifact %} with: - name: homework + name: homework_pre path: math-homework.txt job_2: @@ -220,7 +220,7 @@ jobs: - name: Download math result for job 1 uses: {% data reusables.actions.action-download-artifact %} with: - name: homework + name: homework_pre - shell: bash run: | value=`cat math-homework.txt` @@ -228,7 +228,7 @@ jobs: - name: Upload math result for job 2 uses: {% data reusables.actions.action-upload-artifact %} with: - name: homework + name: homework_final path: math-homework.txt job_3: @@ -239,7 +239,7 @@ jobs: - name: Download math result for job 2 uses: {% data reusables.actions.action-download-artifact %} with: - name: homework + name: homework_final - name: Print the final result shell: bash run: | diff --git a/data/reusables/actions/action-download-artifact.md b/data/reusables/actions/action-download-artifact.md index 11694395b5..5361ac71ad 100644 --- a/data/reusables/actions/action-download-artifact.md +++ b/data/reusables/actions/action-download-artifact.md @@ -1 +1 @@ -actions/download-artifact@v3 +actions/download-artifact@v4 diff --git a/data/reusables/actions/action-upload-artifact.md b/data/reusables/actions/action-upload-artifact.md index 248c970f06..8376b96609 100644 --- a/data/reusables/actions/action-upload-artifact.md +++ b/data/reusables/actions/action-upload-artifact.md @@ -1 +1 @@ -actions/upload-artifact@v3 +actions/upload-artifact@v4 From 9833d5948a4cde5a97bd69087ab3d977720d9269 Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Sat, 20 Jan 2024 08:34:31 -0800 Subject: [PATCH 38/75] Update audit log event data (#48782) --- src/audit-logs/data/ghec/enterprise.json | 5 +++++ src/audit-logs/lib/config.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/audit-logs/data/ghec/enterprise.json b/src/audit-logs/data/ghec/enterprise.json index 66ec41566e..0d610169ee 100644 --- a/src/audit-logs/data/ghec/enterprise.json +++ b/src/audit-logs/data/ghec/enterprise.json @@ -724,6 +724,11 @@ "description": "The excluded paths for GitHub Copilot were updated.", "docs_reference_links": "N/A" }, + { + "action": "copilot.plan_changed", + "description": "The plan for GitHub Copilot was updated.", + "docs_reference_links": "/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot" + }, { "action": "custom_hosted_runner.create", "description": "N/A", diff --git a/src/audit-logs/lib/config.json b/src/audit-logs/lib/config.json index 30bdaad13d..4dab0b31d7 100644 --- a/src/audit-logs/lib/config.json +++ b/src/audit-logs/lib/config.json @@ -1,4 +1,4 @@ { "apiOnlyEventsAdditionalDescription": "This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", - "sha": "db2cfd87318253ab51801e16fcaa551c7aa46ffe" + "sha": "038555ef3a0e297abdb2c0475aa67e0177d2f5b1" } \ No newline at end of file From 2af233bef79b832aafcbac73e6733536b6f83380 Mon Sep 17 00:00:00 2001 From: Laura Yu <60276246+lauraway@users.noreply.github.com> Date: Sun, 21 Jan 2024 08:48:34 -0800 Subject: [PATCH 39/75] Specify that Actions range filter pattern only applies to alphanumeric characters (#48780) --- .../using-workflows/workflow-syntax-for-github-actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/actions/using-workflows/workflow-syntax-for-github-actions.md b/content/actions/using-workflows/workflow-syntax-for-github-actions.md index 862d264d5a..862952d3bf 100644 --- a/content/actions/using-workflows/workflow-syntax-for-github-actions.md +++ b/content/actions/using-workflows/workflow-syntax-for-github-actions.md @@ -1130,7 +1130,7 @@ You can use special characters in path, branch, and tag filters. - `**`: Matches zero or more of any character. - `?`: Matches zero or one of the preceding character. - `+`: Matches one or more of the preceding character. -- `[]` Matches one character listed in the brackets or included in ranges. Ranges can only include `a-z`, `A-Z`, and `0-9`. For example, the range`[0-9a-z]` matches any digit or lowercase letter. For example, `[CB]at` matches `Cat` or `Bat` and `[1-2]00` matches `100` and `200`. +- `[]` Matches one alphanumeric character listed in the brackets or included in ranges. Ranges can only include `a-z`, `A-Z`, and `0-9`. For example, the range`[0-9a-z]` matches any digit or lowercase letter. For example, `[CB]at` matches `Cat` or `Bat` and `[1-2]00` matches `100` and `200`. - `!`: At the start of a pattern makes it negate previous positive patterns. It has no special meaning if not the first character. The characters `*`, `[`, and `!` are special characters in YAML. If you start a pattern with `*`, `[`, or `!`, you must enclose the pattern in quotes. Also, if you use a [flow sequence](https://yaml.org/spec/1.2.2/#flow-sequences) with a pattern containing `[` and/or `]`, the pattern must be enclosed in quotes. From 87a01020d6b3b7742f7b06120597e5d4267e2614 Mon Sep 17 00:00:00 2001 From: Hirsch Singhal <1666363+hpsin@users.noreply.github.com> Date: Sun, 21 Jan 2024 09:02:31 -0800 Subject: [PATCH 40/75] u2s tokens can't be modified to have a different expiration, just no expiration (#48555) Co-authored-by: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> Co-authored-by: Sophie <29382425+sophietheking@users.noreply.github.com> --- .../token-expiration-and-revocation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/authentication/keeping-your-account-and-data-secure/token-expiration-and-revocation.md b/content/authentication/keeping-your-account-and-data-secure/token-expiration-and-revocation.md index 7cff35cc95..3b317c19f1 100644 --- a/content/authentication/keeping-your-account-and-data-secure/token-expiration-and-revocation.md +++ b/content/authentication/keeping-your-account-and-data-secure/token-expiration-and-revocation.md @@ -59,6 +59,6 @@ The owner of an {% data variables.product.prodname_oauth_app %} can revoke an ac {% data reusables.apps.oauth-token-limit %} -## User token revoked due to {% data variables.product.prodname_github_app %} configuration +## User token expired due to {% data variables.product.prodname_github_app %} configuration -User access tokens created by a {% data variables.product.prodname_github_app %} will expire after eight hours by default. Owners of {% data variables.product.prodname_github_apps %} can optionally change the default expiration period for their user access tokens, or configure the tokens to never expire. For more information about configuring your {% data variables.product.prodname_dotcom %} App's user access tokens, see "[AUTOTITLE](/apps/maintaining-github-apps/activating-optional-features-for-github-apps)." +User access tokens created by a {% data variables.product.prodname_github_app %} will expire after eight hours by default, and then must be regenerated using the included refresh token. Owners of {% data variables.product.prodname_github_apps %} can optionally configure these tokens to never expire instead, but this is not recommended due to the security implications. For more information about configuring your {% data variables.product.prodname_github_app %}'s user access tokens, see "[AUTOTITLE](/apps/maintaining-github-apps/activating-optional-features-for-github-apps)." From 34b8051254e03c2f47d2b479ae6c382d63ca8626 Mon Sep 17 00:00:00 2001 From: Sophie <29382425+sophietheking@users.noreply.github.com> Date: Mon, 22 Jan 2024 08:32:04 +0100 Subject: [PATCH 41/75] Delete errant reusable from "Managing your GitHub Copilot subscription for your personal account" article (#48783) --- ...our-github-copilot-subscription-for-your-personal-account.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/content/billing/managing-billing-for-github-copilot/managing-your-github-copilot-subscription-for-your-personal-account.md b/content/billing/managing-billing-for-github-copilot/managing-your-github-copilot-subscription-for-your-personal-account.md index 24d2f16094..04f4800c03 100644 --- a/content/billing/managing-billing-for-github-copilot/managing-your-github-copilot-subscription-for-your-personal-account.md +++ b/content/billing/managing-billing-for-github-copilot/managing-your-github-copilot-subscription-for-your-personal-account.md @@ -21,8 +21,6 @@ If you have access to {% data variables.product.prodname_copilot %} through a {% {% data reusables.billing.billing-info %} -{% data reusables.copilot.dotcom-settings %} - ## Setting up a {% data variables.product.prodname_copilot %} trial or subscription for your personal account Before you can start using {% data variables.product.prodname_copilot_for_individuals %}, you will need to set up a free trial or subscription. From d6a096dbfae9ec665d19f3760f99380bfffd0cf7 Mon Sep 17 00:00:00 2001 From: Isaac Brown <101839405+isaacmbrown@users.noreply.github.com> Date: Mon, 22 Jan 2024 10:46:29 +0000 Subject: [PATCH 42/75] [Accessibility] Add transcript for Azure billing demo (#48767) --- content/video-transcripts/index.md | 1 + ...nsumption-through-an-azure-subscription.md | 94 +++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 content/video-transcripts/transcript-billing-github-consumption-through-an-azure-subscription.md diff --git a/content/video-transcripts/index.md b/content/video-transcripts/index.md index 2c7536b550..c9597f8d5b 100644 --- a/content/video-transcripts/index.md +++ b/content/video-transcripts/index.md @@ -12,4 +12,5 @@ topics: children: - transcript-codespaces-your-instant-dev-box-in-the-cloud - transcript-using-projects-for-feature-planning + - transcript-billing-github-consumption-through-an-azure-subscription --- \ No newline at end of file diff --git a/content/video-transcripts/transcript-billing-github-consumption-through-an-azure-subscription.md b/content/video-transcripts/transcript-billing-github-consumption-through-an-azure-subscription.md new file mode 100644 index 0000000000..134cc58800 --- /dev/null +++ b/content/video-transcripts/transcript-billing-github-consumption-through-an-azure-subscription.md @@ -0,0 +1,94 @@ +--- +title: Transcript - "Billing GitHub consumption through an Azure subscription" +intro: Audio and visual transcript. +shortTitle: Billing through Azure +allowTitleToDifferFromFilename: true +product_video: 'https://www.youtube.com/watch?v=DAiIhJKCt8s' +topics: + - Transcripts +versions: + fpt: '*' + ghec: '*' +--- + +[Title card: "GitHub consolidated billing on Azure."] + +T.J.: Hello, everyone. Thank you for joining us to learn how you can bill your GitHub consumption through Azure. + +During this video, we will share the benefits of billing through Azure, review eligible GitHub products, demo the process step by step, and share resources to help you move forward. + +Let's start with why so many customers are already billing their GitHub consumption through Azure. The key benefits are consolidation, visibility, and commercials. + +From a consolidation standpoint, joint GitHub and Microsoft customers will be able to see all their GitHub consumption on their Azure invoice, eliminating the need for additional invoices and saving time on the procurement process. + +From a visibility perspective, GitHub customers will be able to leverage all the powerful tools and features of the Azure billing portal to gain enhanced visibility into their GitHub consumption spend. + +And finally, if a Microsoft customer has an Azure discount, it will automatically be applied to all future GitHub consumption billed through Azure. + +If a Microsoft customer also has a Microsoft Azure Consumption Commitment, or MACC, all future GitHub consumption will decrement their MACC as well. + +So what GitHub products are eligible for Azure billing? Any GitHub consumption products are eligible today, meaning products that customers pay for based on actual usage, including Copilot for Business, GitHub-hosted actions, larger hosted runners, GitHub Packages and storage, and GitHub Codespaces. Please note that GitHub Enterprise and GitHub Advanced Security are currently not able to be billed through Azure, but are instead invoiced on an annual basis. + +[A table shows eligibility for Azure billing and MACCs for the products mentioned. In the table, all products eligible for Azure billing are also eligible for MACCs.] + +T.J.: Now let's jump into a demo to see how to actually turn this on. + +[He shares his screen. He's on the home page of the Microsoft Azure portal.] + +T.J.: The first step in the process is to set up an admin consent workflow to allow your GitHub enterprise owner the ability to request the installation of a new application. This can be done by logging in to the Azure portal and opening up Microsoft Entra ID. + +From here, you'll need to click on "Enterprise Applications", and then under the "Security" section, "Consent and permissions". Finally, click "Admin consent settings". + +From here, you'll need to actually turn this on if it's not already enabled. So I'm going to go ahead and click "Yes". + +[In the settings, under "Users can request admin consent to apps they are unable to consent to", he switches a toggle to "Yes".] + +T.J.: And you'll need to add who has the ability to approve these requests. This would normally be yourself, the global admin, or potentially a team that you're a member of. + +Once you're happy with the settings, you can go ahead and click "Save". From here, you'll need to wait about an hour for these settings to replicate across Azure before you can proceed with the next step. + +Now I'll hand it over to the GitHub enterprise owner to actually request the application be installed. + +[The enterprise owner, Brian, shares his screen. He's looking at an enterprise account on GitHub.] + +Brian: So to start the process of linking an Azure subscription, I need to go to the settings for my enterprise, and underneath "Settings", you'll see there's an option here for billing. Then, under the various settings here, I'm going to go over to "Payment information", and finally "Add Azure Subscription". So I'm gonna click that link. + +[A Microsoft page: "Approval required".] + +Brian: Now once I sign in, it says approval is required from my Azure administrator, so I'm going to say, "Need to have GitHub paid," and let's select "Request approval". + +Now, at this point it says, "Hey, the request has been sent," so I'm gonna go back to my application and it's going to say, "Hey, we're not ready yet." + +[On the enterprise on GitHub, an error message says: "Authentication with Azure failed."] + +Brian: I'm going to go back into my subscription and I'm going to wait to hear from my administrator who will let me know when this is done. + +So now let's switch over back to T.J., and T.J., can you show us the approval process? + +[Back on the Azure portal.] + +T.J.: Your Entra global administrator should receive an email notification to approve a new request. To do so, they can go back into Entra ID, go to "Enterprise applications", and then look for "Admin consent requests" down under the "Activity" section. + +Here you'll see the pending request to install the GitHub Subscription Permission Validator. I can go ahead and click here and review the permissions and consent on behalf of my organization. + +It'll pop up asking me to reauthenticate, and then I can see the exact permissions that it's requesting. In this case, this application is just going to have access to see the users and be able to understand which subscriptions they're in ownership of to make sure that they have permissions to bill against it. + +So if I'm happy with this, I can go ahead and hit "Accept". And that's all I need to do. I can hand it back over to the GitHub enterprise owner to finish the last step. + +[Back in the enterprise on GitHub.] + +Brian: Okay. Well, I checked my email and my administrator approved from the Azure side that we can set up billing. So I'll go back into "Settings", go to "Billing" again, go to "Payment information", "Add Azure Subscription". + +[A dialog displays, labeled "Select a subscription".] + +Brian: Okay. Now that I've been authenticated, we see what subscription I'm hooking up to. I'm going to click it, click "Connect". + +[On the main "Payment information" page, under "Metered billing settings".] + +Brian: With my billing subscription selected, the last thing I need to do is select "Enable metered billing through Azure", and click "Update metered billing settings". + +At this point, the eligible items within my subscriptions, as we described earlier in the slides, will now be billed to the selected subscription. + +T.J.: Thanks so much for joining us today. For future reference, we are also sharing two helpful resources to help you bill GitHub consumption through Azure in the future. And if you have a dedicated GitHub and/or Microsoft account team, please don't hesitate to reach out to them for additional information. Thanks. + +End of transcript. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription)" and [Get subscription and tenant IDs in the Azure portal](https://learn.microsoft.com/en-us/azure/azure-portal/get-subscription-tenant-id) in the Microsoft documentation. From 4ea2302c2c9c5f8aa68520530e081244acd5b304 Mon Sep 17 00:00:00 2001 From: Brandon Osborne Date: Mon, 22 Jan 2024 06:43:58 -0500 Subject: [PATCH 43/75] Corrected documentation (#31025) Co-authored-by: hubwriter --- .../configuring-github-copilot-in-your-environment.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/copilot/configuring-github-copilot/configuring-github-copilot-in-your-environment.md b/content/copilot/configuring-github-copilot/configuring-github-copilot-in-your-environment.md index d22d40c1eb..583483dfd4 100644 --- a/content/copilot/configuring-github-copilot/configuring-github-copilot-in-your-environment.md +++ b/content/copilot/configuring-github-copilot/configuring-github-copilot-in-your-environment.md @@ -233,8 +233,7 @@ If you don't want to use the default keyboard shortcuts in {% data variables.pro If you use ReSharper, {% data variables.product.prodname_copilot %} may work best when you configure ReSharper to use {% data variables.product.prodname_copilot %}'s native IntelliSense. For more information about ReSharper, see the [ReSharper documentation](https://www.jetbrains.com/resharper/documentation/documentation.html) -1. In the {% data variables.product.prodname_vs %} menu bar, under **Tools**, click **Options**. - ![Screenshot of {% data variables.product.prodname_vs %} menu bar. In the "Tools" menu, the "Options" item is highlighted with an orange outline.](/assets/images/help/copilot/vs-toolbar-options.png) +1. In the {% data variables.product.prodname_vs %} menu bar, under **Extensions**, click **ReSharper**, then click **Options**. 1. In the "Options" dialog, under **Environment**, click **IntelliSense** and then click **General**. 1. Under "General" select **{% data variables.product.prodname_vs %}** and then click **Save**. From a8e7ff39aac9b1ba6f9497de7413c9730bad039c Mon Sep 17 00:00:00 2001 From: Hirsch Singhal <1666363+hpsin@users.noreply.github.com> Date: Mon, 22 Jan 2024 04:25:49 -0800 Subject: [PATCH 44/75] Changing the GHES hostname will invalidate all security keys (#48544) Co-authored-by: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> Co-authored-by: Sophie <29382425+sophietheking@users.noreply.github.com> --- .../enterprise_installation/changing-hostname-not-supported.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/reusables/enterprise_installation/changing-hostname-not-supported.md b/data/reusables/enterprise_installation/changing-hostname-not-supported.md index 7d9e1fb748..2f73ba70e7 100644 --- a/data/reusables/enterprise_installation/changing-hostname-not-supported.md +++ b/data/reusables/enterprise_installation/changing-hostname-not-supported.md @@ -1,5 +1,5 @@ {% warning %} -**Warning**: Do not change the hostname for {% data variables.product.prodname_ghe_server %} after initial setup. Changing the hostname will cause unexpected behavior, up to and including instance outages. If you have changed the hostname for your instance and are experiencing problems, contact GitHub Enterprise Support or GitHub Premium Support. +**Warning**: Do not change the hostname for {% data variables.product.prodname_ghe_server %} after initial setup. Changing the hostname will cause unexpected behavior, up to and including instance outages and invalidation of users' security keys. If you have changed the hostname for your instance and are experiencing problems, contact {% data variables.contact.enterprise_support %} or {% data variables.contact.premium_support %}. {% endwarning %} From 15c8f4b0200cd752d2538d17a8e93880baf1795e Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Mon, 22 Jan 2024 08:21:46 -0500 Subject: [PATCH 45/75] Remove GHAE in Liquid and front matter (6) (#48771) --- .../managing-email-preferences/index.md | 2 +- .../about-deployments/deploying-with-github-actions.md | 2 +- .../oauth-apps/using-oauth-apps/authorizing-oauth-apps.md | 2 +- .../adding-a-new-ssh-key-to-your-github-account.md | 6 +++--- .../connecting-to-github-with-ssh/managing-deploy-keys.md | 2 +- .../testing-your-ssh-connection.md | 2 +- .../about-authentication-to-github.md | 4 ++-- .../creating-a-strong-password.md | 6 +++--- .../keeping-your-account-and-data-secure/index.md | 2 +- .../removing-sensitive-data-from-a-repository.md | 4 ++-- .../reviewing-your-ssh-keys.md | 2 +- .../token-expiration-and-revocation.md | 2 +- .../updating-your-github-access-credentials.md | 2 +- .../about-commit-signature-verification.md | 4 ++-- .../adding-a-gpg-key-to-your-github-account.md | 2 +- .../associating-an-email-with-your-gpg-key.md | 2 +- .../telling-git-about-your-signing-key.md | 6 +++--- .../troubleshooting-ssh/error-key-already-in-use.md | 2 +- .../documenting-your-project-with-wikis/about-wikis.md | 2 +- .../changing-access-permissions-for-wikis.md | 2 +- .../getting-started-with-git/about-remote-repositories.md | 2 +- .../getting-started-with-your-github-account.md | 4 ++-- .../splitting-a-subfolder-out-into-a-new-repository.md | 8 ++++---- ...g-an-external-git-repository-using-the-command-line.md | 4 ++-- .../about-your-organizations-news-feed.md | 2 +- .../learn-github-packages/installing-a-package.md | 2 +- .../working-with-the-nuget-registry.md | 2 +- content/pages/index.md | 2 +- .../creating-a-github-pages-site-with-jekyll.md | 2 +- .../creating-a-commit-with-multiple-authors.md | 2 +- .../why-are-my-commits-linked-to-the-wrong-user.md | 2 +- .../referencing-and-citing-content.md | 2 +- .../customizing-your-repository/about-code-owners.md | 4 ++-- .../managing-files/adding-a-file-to-a-repository.md | 2 +- .../using-files/working-with-non-code-files.md | 4 ++-- content/rest/apps/oauth-applications.md | 2 +- content/rest/gitignore/gitignore.md | 2 +- .../about-github-premium-support.md | 2 +- data/reusables/repositories/deploy-keys.md | 2 +- src/fixtures/fixtures/content/pages/index.md | 2 +- 40 files changed, 56 insertions(+), 56 deletions(-) diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/index.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/index.md index 10004ee3ec..60ed65e1da 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/index.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/index.md @@ -1,6 +1,6 @@ --- title: Managing email preferences -intro: 'You can add or change the email addresses associated with your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. You can also manage emails you receive from {% data variables.product.product_name %}.' +intro: 'You can add or change the email addresses associated with your account on {% data variables.location.product_location %}. You can also manage emails you receive from {% data variables.product.product_name %}.' redirect_from: - /categories/managing-email-preferences - /articles/managing-email-preferences diff --git a/content/actions/deployment/about-deployments/deploying-with-github-actions.md b/content/actions/deployment/about-deployments/deploying-with-github-actions.md index f092af08ac..a7611e068e 100644 --- a/content/actions/deployment/about-deployments/deploying-with-github-actions.md +++ b/content/actions/deployment/about-deployments/deploying-with-github-actions.md @@ -147,7 +147,7 @@ You can also view the logs of each workflow run and the history of workflow runs ## Tracking deployments through apps {% ifversion fpt or ghec %} -If your personal account or organization on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} is integrated with Microsoft Teams or Slack, you can track deployments that use environments through Microsoft Teams or Slack. For example, you can receive notifications through the app when a deployment is pending approval, when a deployment is approved, or when the deployment status changes. For more information about integrating Microsoft Teams or Slack, see "[AUTOTITLE](/get-started/exploring-integrations/github-extensions-and-integrations#team-communication-tools)." +If your personal account or organization on {% data variables.location.product_location %} is integrated with Microsoft Teams or Slack, you can track deployments that use environments through Microsoft Teams or Slack. For example, you can receive notifications through the app when a deployment is pending approval, when a deployment is approved, or when the deployment status changes. For more information about integrating Microsoft Teams or Slack, see "[AUTOTITLE](/get-started/exploring-integrations/github-extensions-and-integrations#team-communication-tools)." {% endif %} You can also build an app that uses deployment and deployment status webhooks to track deployments. {% data reusables.actions.environment-deployment-event %} For more information, see "[AUTOTITLE](/apps)" and "[AUTOTITLE](/webhooks-and-events/webhooks/webhook-events-and-payloads#deployment)." diff --git a/content/apps/oauth-apps/using-oauth-apps/authorizing-oauth-apps.md b/content/apps/oauth-apps/using-oauth-apps/authorizing-oauth-apps.md index 3d287e96ec..c5fd633fe0 100644 --- a/content/apps/oauth-apps/using-oauth-apps/authorizing-oauth-apps.md +++ b/content/apps/oauth-apps/using-oauth-apps/authorizing-oauth-apps.md @@ -15,7 +15,7 @@ topics: - Identity - Access management --- -When an {% data variables.product.prodname_oauth_app %} wants to identify you by your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}, you'll see a page with the app's developer contact information and a list of the specific data that's being requested. +When an {% data variables.product.prodname_oauth_app %} wants to identify you by your account on {% data variables.location.product_location %}, you'll see a page with the app's developer contact information and a list of the specific data that's being requested. {% ifversion fpt or ghec %} diff --git a/content/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account.md b/content/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account.md index 7ce8f8a6f5..9fcf79c313 100644 --- a/content/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account.md +++ b/content/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account.md @@ -1,6 +1,6 @@ --- title: Adding a new SSH key to your GitHub account -intro: 'To configure your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} to use your new (or existing) SSH key, you''ll also need to add the key to your account.' +intro: 'To configure your account on {% data variables.location.product_location %} to use your new (or existing) SSH key, you''ll also need to add the key to your account.' redirect_from: - /articles/adding-a-new-ssh-key-to-your-github-account - /github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account @@ -25,7 +25,7 @@ After you generate an SSH key pair, you must add the public key to {% ifversion ## Prerequisites -Before adding a new SSH key to your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}, complete the following steps. +Before adding a new SSH key to your account on {% data variables.location.product_location %}, complete the following steps. 1. Check for existing SSH keys. For more information, see "[AUTOTITLE](/authentication/connecting-to-github-with-ssh/checking-for-existing-ssh-keys)." 1. Generate a new SSH key and add it to your machine's SSH agent. For more information, see "[AUTOTITLE](/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)." @@ -34,7 +34,7 @@ Before adding a new SSH key to your account on {% ifversion ghae %}{% data varia You can add an SSH key and use it for authentication, or commit signing, or both. If you want to use the same SSH key for both authentication and signing, you need to upload it twice. -After adding a new SSH authentication key to your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}, you can reconfigure any local repositories to use SSH. For more information, see "[AUTOTITLE](/get-started/getting-started-with-git/managing-remote-repositories#switching-remote-urls-from-https-to-ssh)." +After adding a new SSH authentication key to your account on {% data variables.location.product_location %}, you can reconfigure any local repositories to use SSH. For more information, see "[AUTOTITLE](/get-started/getting-started-with-git/managing-remote-repositories#switching-remote-urls-from-https-to-ssh)." {% data reusables.ssh.key-type-support %} diff --git a/content/authentication/connecting-to-github-with-ssh/managing-deploy-keys.md b/content/authentication/connecting-to-github-with-ssh/managing-deploy-keys.md index 621c5e7356..c5a43ecd07 100644 --- a/content/authentication/connecting-to-github-with-ssh/managing-deploy-keys.md +++ b/content/authentication/connecting-to-github-with-ssh/managing-deploy-keys.md @@ -156,7 +156,7 @@ For more information, see "[AUTOTITLE](/apps/creating-github-apps/authenticating ## Machine users -If your server needs to access multiple repositories, you can create a new account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} and attach an SSH key that will be used exclusively for automation. Since this account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} won't be used by a human, it's called a _machine user_. You can add the machine user as a [collaborator][collaborator] on a personal repository (granting read and write access), as an [outside collaborator][outside-collaborator] on an organization repository (granting read, write, or admin access), or to a [team][team] with access to the repositories it needs to automate (granting the permissions of the team). +If your server needs to access multiple repositories, you can create a new account on {% data variables.location.product_location %} and attach an SSH key that will be used exclusively for automation. Since this account on {% data variables.location.product_location %} won't be used by a human, it's called a _machine user_. You can add the machine user as a [collaborator][collaborator] on a personal repository (granting read and write access), as an [outside collaborator][outside-collaborator] on an organization repository (granting read, write, or admin access), or to a [team][team] with access to the repositories it needs to automate (granting the permissions of the team). {% ifversion fpt or ghec %} diff --git a/content/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection.md b/content/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection.md index e8ab59b31f..da4ed75e42 100644 --- a/content/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection.md +++ b/content/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection.md @@ -1,6 +1,6 @@ --- title: Testing your SSH connection -intro: 'After you''ve set up your SSH key and added it to your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}, you can test your connection.' +intro: 'After you''ve set up your SSH key and added it to your account on {% data variables.location.product_location %}, you can test your connection.' redirect_from: - /articles/testing-your-ssh-connection - /github/authenticating-to-github/testing-your-ssh-connection diff --git a/content/authentication/keeping-your-account-and-data-secure/about-authentication-to-github.md b/content/authentication/keeping-your-account-and-data-secure/about-authentication-to-github.md index 4603fca8cd..947bc473e4 100644 --- a/content/authentication/keeping-your-account-and-data-secure/about-authentication-to-github.md +++ b/content/authentication/keeping-your-account-and-data-secure/about-authentication-to-github.md @@ -134,9 +134,9 @@ If you authenticate without {% data variables.product.prodname_cli %}, you must You can work with all repositories on {% data variables.product.product_name %} over SSH, although firewalls and proxies might refuse to allow SSH connections. -If you authenticate with {% data variables.product.prodname_cli %}, the CLI will find SSH public keys on your machine and will prompt you to select one for upload. If {% data variables.product.prodname_cli %} does not find a SSH public key for upload, it can generate a new SSH public/private keypair and upload the public key to your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. Then, you can either authenticate with a {% data variables.product.pat_generic %} or via the web browser. For more information about authenticating with {% data variables.product.prodname_cli %}, see [`gh auth login`](https://cli.github.com/manual/gh_auth_login). +If you authenticate with {% data variables.product.prodname_cli %}, the CLI will find SSH public keys on your machine and will prompt you to select one for upload. If {% data variables.product.prodname_cli %} does not find a SSH public key for upload, it can generate a new SSH public/private keypair and upload the public key to your account on {% data variables.location.product_location %}. Then, you can either authenticate with a {% data variables.product.pat_generic %} or via the web browser. For more information about authenticating with {% data variables.product.prodname_cli %}, see [`gh auth login`](https://cli.github.com/manual/gh_auth_login). -If you authenticate without {% data variables.product.prodname_cli %}, you will need to generate an SSH public/private keypair on your local machine and add the public key to your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. For more information, see "[AUTOTITLE](/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)." Every time you use Git to authenticate with {% data variables.product.product_name %}, you'll be prompted to enter your SSH key passphrase, unless you've [stored the key](/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#adding-your-ssh-key-to-the-ssh-agent). +If you authenticate without {% data variables.product.prodname_cli %}, you will need to generate an SSH public/private keypair on your local machine and add the public key to your account on {% data variables.location.product_location %}. For more information, see "[AUTOTITLE](/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)." Every time you use Git to authenticate with {% data variables.product.product_name %}, you'll be prompted to enter your SSH key passphrase, unless you've [stored the key](/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#adding-your-ssh-key-to-the-ssh-agent). {% ifversion fpt or ghec %} diff --git a/content/authentication/keeping-your-account-and-data-secure/creating-a-strong-password.md b/content/authentication/keeping-your-account-and-data-secure/creating-a-strong-password.md index c0f7e28cc3..e9181892a3 100644 --- a/content/authentication/keeping-your-account-and-data-secure/creating-a-strong-password.md +++ b/content/authentication/keeping-your-account-and-data-secure/creating-a-strong-password.md @@ -1,6 +1,6 @@ --- title: Creating a strong password -intro: 'Secure your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} with a strong and unique password using a password manager.' +intro: 'Secure your account on {% data variables.location.product_location %} with a strong and unique password using a password manager.' redirect_from: - /articles/what-is-a-strong-password - /articles/creating-a-strong-password @@ -15,13 +15,13 @@ topics: - Access management shortTitle: Create a strong password --- -You must choose or generate a password for your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} that is at least: +You must choose or generate a password for your account on {% data variables.location.product_location %} that is at least: - {% ifversion ghes %}Seven{% else %}Eight{% endif %} characters long, if it includes a number and a lowercase letter, or - 15 characters long with any combination of characters To keep your account secure, we recommend you follow these best practices: - Use a password manager to generate a password of at least 15 characters. -- Generate a unique password for {% data variables.product.product_name %}. If you use your {% data variables.product.product_name %} password elsewhere and that service is compromised, then attackers or other malicious actors could use that information to access your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. +- Generate a unique password for {% data variables.product.product_name %}. If you use your {% data variables.product.product_name %} password elsewhere and that service is compromised, then attackers or other malicious actors could use that information to access your account on {% data variables.location.product_location %}. - Configure two-factor authentication for your personal account. For more information, see "[AUTOTITLE](/authentication/securing-your-account-with-two-factor-authentication-2fa/about-two-factor-authentication)."{% ifversion passkeys %} - {% data reusables.passkeys.add-passkey-option %}{% endif %} - Never share your password, even with a potential collaborator. Each person should use their own personal account on {% data variables.product.product_name %}. For more information on ways to collaborate, see: "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository)," "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models)," or "[AUTOTITLE](/organizations/collaborating-with-groups-in-organizations)." diff --git a/content/authentication/keeping-your-account-and-data-secure/index.md b/content/authentication/keeping-your-account-and-data-secure/index.md index f819cadc8a..1df0d41250 100644 --- a/content/authentication/keeping-your-account-and-data-secure/index.md +++ b/content/authentication/keeping-your-account-and-data-secure/index.md @@ -1,6 +1,6 @@ --- title: Keeping your account and data secure -intro: 'To protect your personal information, you should keep both your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} and any associated data secure.' +intro: 'To protect your personal information, you should keep both your account on {% data variables.location.product_location %} and any associated data secure.' redirect_from: - /articles/keeping-your-account-and-data-secure - /github/authenticating-to-github/keeping-your-account-and-data-secure diff --git a/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md b/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md index 0c2c9f06bc..313efea197 100644 --- a/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md +++ b/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md @@ -24,7 +24,7 @@ You can remove the file from the latest commit with `git rm`. For information on {% warning %} -**Warning**: This article tells you how to make commits with sensitive data unreachable from any branches or tags in your repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. However, those commits may still be accessible in any clones or forks of your repository, directly via their SHA-1 hashes in cached views on {% data variables.product.product_name %}, and through any pull requests that reference them. You cannot remove sensitive data from other users' clones of your repository, but you can permanently remove cached views and references to the sensitive data in pull requests on {% data variables.product.product_name %} by contacting {% data variables.contact.contact_support %}. {% ifversion fpt or ghec %}{% data variables.contact.github_support %} only assists in the removal of sensitive data in cases where we determine that the risk can't be mitigated by rotating affected credentials.{% endif %} +**Warning**: This article tells you how to make commits with sensitive data unreachable from any branches or tags in your repository on {% data variables.location.product_location %}. However, those commits may still be accessible in any clones or forks of your repository, directly via their SHA-1 hashes in cached views on {% data variables.product.product_name %}, and through any pull requests that reference them. You cannot remove sensitive data from other users' clones of your repository, but you can permanently remove cached views and references to the sensitive data in pull requests on {% data variables.product.product_name %} by contacting {% data variables.contact.contact_support %}. {% ifversion fpt or ghec %}{% data variables.contact.github_support %} only assists in the removal of sensitive data in cases where we determine that the risk can't be mitigated by rotating affected credentials.{% endif %} Once you have pushed a commit to {% data variables.product.product_name %}, you should consider any sensitive data in the commit compromised. If you have committed a password, you should change it. If you have committed a key, generate a new one. Removing the compromised data doesn't resolve its initial exposure, especially in existing clones or forks of your repository. @@ -148,7 +148,7 @@ To illustrate how `git filter-repo` works, we'll show you how to remove your fil git remote add origin https://github.com/OWNER/REPOSITORY.git ``` -1. Once you're happy with the state of your repository, and you have set the appropriate remote, force-push your local changes to overwrite your repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}, as well as all the branches you've pushed up. A force push is required to remove sensitive data from your commit history. +1. Once you're happy with the state of your repository, and you have set the appropriate remote, force-push your local changes to overwrite your repository on {% data variables.location.product_location %}, as well as all the branches you've pushed up. A force push is required to remove sensitive data from your commit history. ```shell $ git push origin --force --all diff --git a/content/authentication/keeping-your-account-and-data-secure/reviewing-your-ssh-keys.md b/content/authentication/keeping-your-account-and-data-secure/reviewing-your-ssh-keys.md index de62738a08..8df0d611be 100644 --- a/content/authentication/keeping-your-account-and-data-secure/reviewing-your-ssh-keys.md +++ b/content/authentication/keeping-your-account-and-data-secure/reviewing-your-ssh-keys.md @@ -1,6 +1,6 @@ --- title: Reviewing your SSH keys -intro: 'To keep your credentials secure, you should regularly audit your SSH keys, deploy keys, and review authorized applications that access your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}.' +intro: 'To keep your credentials secure, you should regularly audit your SSH keys, deploy keys, and review authorized applications that access your account on {% data variables.location.product_location %}.' redirect_from: - /articles/keeping-your-application-access-tokens-safe - /articles/keeping-your-ssh-keys-and-application-access-tokens-safe diff --git a/content/authentication/keeping-your-account-and-data-secure/token-expiration-and-revocation.md b/content/authentication/keeping-your-account-and-data-secure/token-expiration-and-revocation.md index 3b317c19f1..5e8b7efdb3 100644 --- a/content/authentication/keeping-your-account-and-data-secure/token-expiration-and-revocation.md +++ b/content/authentication/keeping-your-account-and-data-secure/token-expiration-and-revocation.md @@ -47,7 +47,7 @@ If a valid OAuth token, {% data variables.product.prodname_github_app %} token, You can revoke your authorization of a {% data variables.product.prodname_github_app %} or {% data variables.product.prodname_oauth_app %} from your account settings which will revoke any tokens associated with the app. For more information, see "[AUTOTITLE](/apps/using-github-apps/reviewing-your-authorized-integrations)" and "[AUTOTITLE](/apps/oauth-apps/using-oauth-apps/reviewing-your-authorized-applications-oauth)." -Once an authorization is revoked, any tokens associated with the authorization will be revoked as well. To reauthorize an application, follow the instructions from the third-party application or website to connect your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} again. +Once an authorization is revoked, any tokens associated with the authorization will be revoked as well. To reauthorize an application, follow the instructions from the third-party application or website to connect your account on {% data variables.location.product_location %} again. ## Token revoked by the {% data variables.product.prodname_oauth_app %} diff --git a/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md b/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md index 78c070abc2..c814424cb0 100644 --- a/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md +++ b/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md @@ -22,7 +22,7 @@ shortTitle: Update access credentials ## Requesting a new password 1. To request a new password, visit {% ifversion fpt or ghec %}https://{% data variables.product.product_url %}/password_reset{% else %}`https://{% data variables.product.product_url %}/password_reset`{% endif %}. -1. Enter the email address associated with your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}, then click **Send password reset email.** The email will be sent to the backup email address if you have one configured. +1. Enter the email address associated with your account on {% data variables.location.product_location %}, then click **Send password reset email.** The email will be sent to the backup email address if you have one configured. 1. We'll email you a link that will allow you to reset your password. You must click on this link within 3 hours of receiving the email. If you didn't receive an email from us, make sure to check your spam folder. 1. If you have enabled two-factor authentication, you will be prompted for your 2FA credentials: {% ifversion fpt or ghec %} diff --git a/content/authentication/managing-commit-signature-verification/about-commit-signature-verification.md b/content/authentication/managing-commit-signature-verification/about-commit-signature-verification.md index c7b105026d..86c7be69f2 100644 --- a/content/authentication/managing-commit-signature-verification/about-commit-signature-verification.md +++ b/content/authentication/managing-commit-signature-verification/about-commit-signature-verification.md @@ -77,7 +77,7 @@ You can optionally choose to have {% data variables.product.prodname_dotcom %} G You can use GPG to sign commits with a GPG key that you generate yourself. -{% data variables.product.product_name %} uses OpenPGP libraries to confirm that your locally signed commits and tags are cryptographically verifiable against a public key you have added to your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. +{% data variables.product.product_name %} uses OpenPGP libraries to confirm that your locally signed commits and tags are cryptographically verifiable against a public key you have added to your account on {% data variables.location.product_location %}. To sign commits using GPG and have those commits verified on {% data variables.product.product_name %}, follow these steps: @@ -95,7 +95,7 @@ To sign commits using GPG and have those commits verified on {% data variables.p You can use SSH to sign commits with an SSH key that you generate yourself. For more information, see the [Git reference documentation](https://git-scm.com/docs/git-config#Documentation/git-config.txt-usersigningKey) for `user.Signingkey`. If you already use an SSH key to authenticate with {% data variables.product.product_name %}, you can also upload that same key again for use as a signing key. There's no limit on the number of signing keys you can add to your account. -{% data variables.product.product_name %} uses [ssh_data](https://github.com/github/ssh_data), an open source Ruby library, to confirm that your locally signed commits and tags are cryptographically verifiable against a public key you have added to your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. +{% data variables.product.product_name %} uses [ssh_data](https://github.com/github/ssh_data), an open source Ruby library, to confirm that your locally signed commits and tags are cryptographically verifiable against a public key you have added to your account on {% data variables.location.product_location %}. {% data reusables.gpg.ssh-git-version %} diff --git a/content/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account.md b/content/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account.md index 778c34739c..d64ce5c472 100644 --- a/content/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account.md +++ b/content/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account.md @@ -1,6 +1,6 @@ --- title: Adding a GPG key to your GitHub account -intro: 'To configure your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} to use your new (or existing) GPG key, you''ll also need to add the key to your account.' +intro: 'To configure your account on {% data variables.location.product_location %} to use your new (or existing) GPG key, you''ll also need to add the key to your account.' redirect_from: - /articles/adding-a-gpg-key-to-your-github-account - /github/authenticating-to-github/adding-a-new-gpg-key-to-your-github-account diff --git a/content/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key.md b/content/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key.md index e16db51f31..05a3abb4e0 100644 --- a/content/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key.md +++ b/content/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key.md @@ -17,7 +17,7 @@ shortTitle: Associate email with GPG key --- {% note %} -If you're using a GPG key that matches your committer identity and your verified email address associated with your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}, then you can begin signing commits and signing tags. +If you're using a GPG key that matches your committer identity and your verified email address associated with your account on {% data variables.location.product_location %}, then you can begin signing commits and signing tags. {% endnote %} diff --git a/content/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key.md b/content/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key.md index a026b9a38f..1ad77be162 100644 --- a/content/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key.md +++ b/content/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key.md @@ -21,7 +21,7 @@ shortTitle: Tell Git about your signing key {% mac %} -If you're using a GPG key that matches your committer identity and your verified email address associated with your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}, then you can begin signing commits and signing tags. +If you're using a GPG key that matches your committer identity and your verified email address associated with your account on {% data variables.location.product_location %}, then you can begin signing commits and signing tags. {% note %} @@ -63,7 +63,7 @@ If you have multiple GPG keys, you need to tell Git which one to use. {% windows %} -If you're using a GPG key that matches your committer identity and your verified email address associated with your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}, then you can begin signing commits and signing tags. +If you're using a GPG key that matches your committer identity and your verified email address associated with your account on {% data variables.location.product_location %}, then you can begin signing commits and signing tags. {% note %} @@ -84,7 +84,7 @@ If you have multiple GPG keys, you need to tell Git which one to use. {% linux %} -If you're using a GPG key that matches your committer identity and your verified email address associated with your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}, then you can begin signing commits and signing tags. +If you're using a GPG key that matches your committer identity and your verified email address associated with your account on {% data variables.location.product_location %}, then you can begin signing commits and signing tags. {% note %} diff --git a/content/authentication/troubleshooting-ssh/error-key-already-in-use.md b/content/authentication/troubleshooting-ssh/error-key-already-in-use.md index ae32ca4be7..fd8d787f42 100644 --- a/content/authentication/troubleshooting-ssh/error-key-already-in-use.md +++ b/content/authentication/troubleshooting-ssh/error-key-already-in-use.md @@ -24,7 +24,7 @@ $ ssh -T -ai ~/.ssh/id_rsa git@{% data variables.command_line.codeblock %} > provide shell access. ``` -The _username_ in the response is the account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} that the key is currently attached to. If the response looks something like "username/repo", the key has been attached to a repository as a [_deploy key_](/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys). +The _username_ in the response is the account on {% data variables.location.product_location %} that the key is currently attached to. If the response looks something like "username/repo", the key has been attached to a repository as a [_deploy key_](/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys). To force SSH to use only the key provided on the command line, use `-o` to add the `IdentitiesOnly=yes` option: diff --git a/content/communities/documenting-your-project-with-wikis/about-wikis.md b/content/communities/documenting-your-project-with-wikis/about-wikis.md index 810564a1c3..61c169bd16 100644 --- a/content/communities/documenting-your-project-with-wikis/about-wikis.md +++ b/content/communities/documenting-your-project-with-wikis/about-wikis.md @@ -15,7 +15,7 @@ topics: - Community --- -Every repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} comes equipped with a section for hosting documentation, called a wiki. You can use your repository's wiki to share long-form content about your project, such as how to use it, how you designed it, or its core principles. A README file quickly tells what your project can do, while you can use a wiki to provide additional documentation. For more information, see "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-readmes)." +Every repository on {% data variables.location.product_location %} comes equipped with a section for hosting documentation, called a wiki. You can use your repository's wiki to share long-form content about your project, such as how to use it, how you designed it, or its core principles. A README file quickly tells what your project can do, while you can use a wiki to provide additional documentation. For more information, see "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-readmes)." With wikis, you can write content just like everywhere else on {% data variables.product.product_name %}. For more information, see "[AUTOTITLE](/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github)." We use [our open-source Markup library](https://github.com/github/markup) to convert different formats into HTML, so you can choose to write in Markdown or any other supported format. diff --git a/content/communities/documenting-your-project-with-wikis/changing-access-permissions-for-wikis.md b/content/communities/documenting-your-project-with-wikis/changing-access-permissions-for-wikis.md index 20453a1f69..178e1ec090 100644 --- a/content/communities/documenting-your-project-with-wikis/changing-access-permissions-for-wikis.md +++ b/content/communities/documenting-your-project-with-wikis/changing-access-permissions-for-wikis.md @@ -1,6 +1,6 @@ --- title: Changing access permissions for wikis -intro: 'Only repository collaborators can edit a {% ifversion fpt or ghec or ghes %}public{% endif %} repository''s wiki by default, but you can allow anyone with an account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} to edit your wiki.' +intro: 'Only repository collaborators can edit a {% ifversion fpt or ghec or ghes %}public{% endif %} repository''s wiki by default, but you can allow anyone with an account on {% data variables.location.product_location %} to edit your wiki.' product: '{% data reusables.gated-features.wikis %}' redirect_from: - /articles/changing-access-permissions-for-wikis diff --git a/content/get-started/getting-started-with-git/about-remote-repositories.md b/content/get-started/getting-started-with-git/about-remote-repositories.md index 3a37e28b1c..710efc1c82 100644 --- a/content/get-started/getting-started-with-git/about-remote-repositories.md +++ b/content/get-started/getting-started-with-git/about-remote-repositories.md @@ -69,7 +69,7 @@ When you `git clone`, `git fetch`, `git pull`, or `git push` to a remote reposit ## Cloning with SSH URLs -SSH URLs provide access to a Git repository via SSH, a secure protocol. To use these URLs, you must generate an SSH keypair on your computer and add the **public** key to your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. For more information, see "[AUTOTITLE](/authentication/connecting-to-github-with-ssh)." +SSH URLs provide access to a Git repository via SSH, a secure protocol. To use these URLs, you must generate an SSH keypair on your computer and add the **public** key to your account on {% data variables.location.product_location %}. For more information, see "[AUTOTITLE](/authentication/connecting-to-github-with-ssh)." When you `git clone`, `git fetch`, `git pull`, or `git push` to a remote repository using SSH URLs, you'll be prompted for a password and must provide your SSH key passphrase. For more information, see "[AUTOTITLE](/authentication/connecting-to-github-with-ssh/working-with-ssh-key-passphrases)." diff --git a/content/get-started/onboarding/getting-started-with-your-github-account.md b/content/get-started/onboarding/getting-started-with-your-github-account.md index 21e93870d2..37f5212fe5 100644 --- a/content/get-started/onboarding/getting-started-with-your-github-account.md +++ b/content/get-started/onboarding/getting-started-with-your-github-account.md @@ -80,7 +80,7 @@ If you plan to use Git locally on your computer, whether through the command lin If you prefer to use a visual interface, you can download and use {% data variables.product.prodname_desktop %}. {% data variables.product.prodname_desktop %} comes packaged with Git, so there is no need to install Git separately. For more information, see "[AUTOTITLE](/desktop/overview/getting-started-with-github-desktop)." -Once you install Git, you can connect to {% data variables.product.product_name %} repositories from your local computer, whether your own repository or another user's fork. When you connect to a repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} from Git, you'll need to authenticate with {% data variables.product.product_name %} using either HTTPS or SSH. For more information, see "[AUTOTITLE](/get-started/getting-started-with-git/about-remote-repositories)." +Once you install Git, you can connect to {% data variables.product.product_name %} repositories from your local computer, whether your own repository or another user's fork. When you connect to a repository on {% data variables.location.product_location %} from Git, you'll need to authenticate with {% data variables.product.product_name %} using either HTTPS or SSH. For more information, see "[AUTOTITLE](/get-started/getting-started-with-git/about-remote-repositories)." ### 3. Choosing how to interact with {% data variables.product.product_name %} @@ -159,7 +159,7 @@ Notifications provide updates about the activity on {% data variables.product.pr ### 8. Working with {% data variables.product.prodname_pages %} -You can use {% data variables.product.prodname_pages %} to create and host a website directly from a repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. For more information, see "[AUTOTITLE](/pages/getting-started-with-github-pages/about-github-pages)." +You can use {% data variables.product.prodname_pages %} to create and host a website directly from a repository on {% data variables.location.product_location %}. For more information, see "[AUTOTITLE](/pages/getting-started-with-github-pages/about-github-pages)." {% ifversion discussions %} diff --git a/content/get-started/using-git/splitting-a-subfolder-out-into-a-new-repository.md b/content/get-started/using-git/splitting-a-subfolder-out-into-a-new-repository.md index 5e1281b5da..d4d2232f0e 100644 --- a/content/get-started/using-git/splitting-a-subfolder-out-into-a-new-repository.md +++ b/content/get-started/using-git/splitting-a-subfolder-out-into-a-new-repository.md @@ -14,13 +14,13 @@ versions: ghec: '*' shortTitle: Splitting a subfolder --- - + {% note %} **Note:** You need Git version 2.22.0 or later to follow these instructions, otherwise `git filter-repo` will not work. {% endnote %} - + If you create a new clone of the repository, you won't lose any of your Git history or changes when you split a folder into a separate repository. However, note that the new repository won't have the branches and tags of the original repository. {% data reusables.command_line.open_the_multi_os_terminal %} @@ -51,7 +51,7 @@ If you create a new clone of the repository, you won't lose any of your Git hist {% endtip %} {% endwindows %} - + ```shell $ git filter-repo --path FOLDER-NAME/ # Filter the specified branch in your directory and remove empty commits @@ -68,7 +68,7 @@ If you create a new clone of the repository, you won't lose any of your Git hist 1. [Create a new repository](/repositories/creating-and-managing-repositories/creating-a-new-repository) on {% data variables.product.product_name %}. -1. At the top of your new repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}'s Quick Setup page, click {% octicon "copy" aria-label="Copy to clipboard" %} to copy the remote repository URL. +1. At the top of your new repository on {% data variables.location.product_location %}'s Quick Setup page, click {% octicon "copy" aria-label="Copy to clipboard" %} to copy the remote repository URL. ![Screenshot of the "Quick Setup" header in a repository. Next to the remote URL, an icon of two overlapping squares is highlighted with an orange outline.](/assets/images/help/repository/copy-remote-repository-url-quick-setup.png) diff --git a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-an-external-git-repository-using-the-command-line.md b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-an-external-git-repository-using-the-command-line.md index 43c2241f60..3484c7871c 100644 --- a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-an-external-git-repository-using-the-command-line.md +++ b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-an-external-git-repository-using-the-command-line.md @@ -26,7 +26,7 @@ For purposes of demonstration, we'll use: - An external account named **extuser** - An external Git host named `https://external-host.com` - A {% data variables.product.product_name %} personal account named **ghuser** -- A repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} named **repo.git** +- A repository on {% data variables.location.product_location %} named **repo.git** {% endtip %} @@ -43,7 +43,7 @@ For purposes of demonstration, we'll use: ```shell $ cd REPO.git $ git push --mirror https://{% data variables.command_line.codeblock %}/USER/REPO.git - # Pushes the mirror to the new repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} + # Pushes the mirror to the new repository on {% data variables.location.product_location %} ``` 1. Remove the temporary local repository. diff --git a/content/organizations/collaborating-with-groups-in-organizations/about-your-organizations-news-feed.md b/content/organizations/collaborating-with-groups-in-organizations/about-your-organizations-news-feed.md index 7de2eb7666..a9860c937d 100644 --- a/content/organizations/collaborating-with-groups-in-organizations/about-your-organizations-news-feed.md +++ b/content/organizations/collaborating-with-groups-in-organizations/about-your-organizations-news-feed.md @@ -30,7 +30,7 @@ An organization's news feed shows other people's activity on repositories owned ## Accessing your organization's news feed -1. {% data variables.product.signin_link %} to your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. +1. {% data variables.product.signin_link %} to your account on {% data variables.location.product_location %}. 1. Open your {% data reusables.user-settings.personal_dashboard %}. 1. In the upper-left corner of the page, select the dropdown menu that switches account context, then select an organization. diff --git a/content/packages/learn-github-packages/installing-a-package.md b/content/packages/learn-github-packages/installing-a-package.md index 5b5ec21aa0..8529be0bca 100644 --- a/content/packages/learn-github-packages/installing-a-package.md +++ b/content/packages/learn-github-packages/installing-a-package.md @@ -19,7 +19,7 @@ versions: ## About package installation -You can search on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} to find packages in {% data variables.product.prodname_registry %} that you can install in your own project. For more information, see "[AUTOTITLE](/search-github/searching-on-github/searching-for-packages)." +You can search on {% data variables.location.product_location %} to find packages in {% data variables.product.prodname_registry %} that you can install in your own project. For more information, see "[AUTOTITLE](/search-github/searching-on-github/searching-for-packages)." After you find a package, you can read the package's description and installation and usage instructions on the package page. diff --git a/content/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry.md b/content/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry.md index 7ba4c73f00..576a9bcf28 100644 --- a/content/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry.md +++ b/content/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry.md @@ -117,7 +117,7 @@ If you specify a `RepositoryURL` in your `nuget.config` file, the published pack ### Publishing a package using a GitHub {% data variables.product.pat_generic %} as your API key -If you don't already have a {% data variables.product.pat_generic %} to use for your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." +If you don't already have a {% data variables.product.pat_generic %} to use for your account on {% data variables.location.product_location %}, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." 1. Create a new project. Replace `PROJECT_NAME` with the name you'd like to give the project. diff --git a/content/pages/index.md b/content/pages/index.md index 248ed26cd1..0febf26fc7 100644 --- a/content/pages/index.md +++ b/content/pages/index.md @@ -1,7 +1,7 @@ --- title: "{% data variables.product.prodname_pages %} documentation" shortTitle: "{% data variables.product.prodname_pages %}" -intro: 'Learn how to create a website directly from a repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. Explore website building tools like Jekyll and troubleshoot issues with your {% data variables.product.prodname_pages %} site.' +intro: 'Learn how to create a website directly from a repository on {% data variables.location.product_location %}. Explore website building tools like Jekyll and troubleshoot issues with your {% data variables.product.prodname_pages %} site.' introLinks: quickstart: /pages/quickstart overview: /pages/getting-started-with-github-pages/about-github-pages diff --git a/content/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll.md b/content/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll.md index b9ed9cacd6..69741ef91e 100644 --- a/content/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll.md +++ b/content/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll.md @@ -119,7 +119,7 @@ Before you can use Jekyll to create a {% data variables.product.prodname_pages % git commit -m 'Initial GitHub pages site with Jekyll' ``` -1. Add your repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} as a remote, replacing {% ifversion ghes or ghae %}HOSTNAME with your enterprise's hostname,{% endif %} USER with the account that owns the repository{% ifversion ghes or ghae %},{% endif %} and REPOSITORY with the name of the repository. +1. Add your repository on {% data variables.location.product_location %} as a remote, replacing {% ifversion ghes or ghae %}HOSTNAME with your enterprise's hostname,{% endif %} USER with the account that owns the repository{% ifversion ghes or ghae %},{% endif %} and REPOSITORY with the name of the repository. ```shell {% ifversion fpt or ghec %} diff --git a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md index f5f8243981..8f6a7ed268 100644 --- a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md +++ b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md @@ -14,7 +14,7 @@ shortTitle: With multiple authors --- ## Required co-author information -Before you can add a co-author to a commit, you must know the appropriate email to use for each co-author. For the co-author's commit to count as a contribution, you must use the email associated with their account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. +Before you can add a co-author to a commit, you must know the appropriate email to use for each co-author. For the co-author's commit to count as a contribution, you must use the email associated with their account on {% data variables.location.product_location %}. {% ifversion fpt or ghec %} diff --git a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/why-are-my-commits-linked-to-the-wrong-user.md b/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/why-are-my-commits-linked-to-the-wrong-user.md index 2246e015db..e387da2392 100644 --- a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/why-are-my-commits-linked-to-the-wrong-user.md +++ b/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/why-are-my-commits-linked-to-the-wrong-user.md @@ -21,7 +21,7 @@ shortTitle: Linked to wrong user ## Commits are linked to another user -If your commits are linked to another user, that means the email address in your local Git configuration settings is connected to that user's account on {% data variables.product.product_name %}. In this case, you can change the email in your local Git configuration settings{% ifversion ghae %} to the address associated with your account on {% data variables.product.product_name %} to link your future commits. Old commits will not be linked. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address#setting-your-commit-email-address-in-git)."{% else %} and add the new email address to your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} account to link future commits to your account. +If your commits are linked to another user, that means the email address in your local Git configuration settings is connected to that user's account on {% data variables.product.product_name %}. In this case, you can change the email in your local Git configuration settings{% ifversion ghae %} to the address associated with your account on {% data variables.product.product_name %} to link your future commits. Old commits will not be linked. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address#setting-your-commit-email-address-in-git)."{% else %} and add the new email address to your account on {% data variables.location.product_location %} account to link future commits to your account. 1. To change the email address in your local Git configuration, follow the steps in "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address#setting-your-commit-email-address-in-git)". If you work on multiple machines, you will need to change this setting on each one. 1. Add the email address from step 2 to your account settings by following the steps in "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account)".{% endif %} diff --git a/content/repositories/archiving-a-github-repository/referencing-and-citing-content.md b/content/repositories/archiving-a-github-repository/referencing-and-citing-content.md index c28460607c..566cd6b9bb 100644 --- a/content/repositories/archiving-a-github-repository/referencing-and-citing-content.md +++ b/content/repositories/archiving-a-github-repository/referencing-and-citing-content.md @@ -14,7 +14,7 @@ shortTitle: Reference & cite content --- ## Issuing a persistent identifier for your repository with Zenodo -To make your repositories easier to reference in academic literature, you can create persistent identifiers, also known as Digital Object Identifiers (DOIs). You can use the data archiving tool [Zenodo](https://about.zenodo.org/) to archive a repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} and issue a DOI for the archive. +To make your repositories easier to reference in academic literature, you can create persistent identifiers, also known as Digital Object Identifiers (DOIs). You can use the data archiving tool [Zenodo](https://about.zenodo.org/) to archive a repository on {% data variables.location.product_location %} and issue a DOI for the archive. {% tip %} diff --git a/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners.md b/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners.md index 73414445eb..4d497da0d5 100644 --- a/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners.md +++ b/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners.md @@ -69,12 +69,12 @@ A CODEOWNERS file uses a pattern that follows most of the same rules used in [gi If you want to match two or more code owners with the same pattern, all the code owners must be on the same line. If the code owners are not on the same line, the pattern matches only the last mentioned code owner. -{% ifversion fpt or ghec%}In most cases, you{% else %}You{% endif %} can also refer to a user by an email address that has been added to their account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}, for example `user@example.com`. {% ifversion fpt or ghec %} You cannot use an email address to refer to a {% data variables.enterprise.prodname_managed_user %}. For more information about {% data variables.enterprise.prodname_managed_users %}, see "[AUTOTITLE](/enterprise-cloud@latest/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users){% ifversion fpt %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}."{% endif %}{% endif %} +{% ifversion fpt or ghec%}In most cases, you{% else %}You{% endif %} can also refer to a user by an email address that has been added to their account on {% data variables.location.product_location %}, for example `user@example.com`. {% ifversion fpt or ghec %} You cannot use an email address to refer to a {% data variables.enterprise.prodname_managed_user %}. For more information about {% data variables.enterprise.prodname_managed_users %}, see "[AUTOTITLE](/enterprise-cloud@latest/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users){% ifversion fpt %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}."{% endif %}{% endif %} CODEOWNERS paths are case sensitive, because {% data variables.product.prodname_dotcom %} uses a case sensitive file system. Since CODEOWNERS are evaluated by {% data variables.product.prodname_dotcom %}, even systems that are case insensitive (for example, macOS) must use paths and files that are cased correctly in the CODEOWNERS file. {% ifversion codeowners-errors %} -If any line in your CODEOWNERS file contains invalid syntax, that line will be skipped. When you navigate to the CODEOWNERS file in your repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}, you can see any errors highlighted. A list of errors in a repository's CODEOWNERS file is also accessible via the API. For more information, see "[AUTOTITLE](/rest/repos#list-codeowners-errors)" in the REST API documentation. +If any line in your CODEOWNERS file contains invalid syntax, that line will be skipped. When you navigate to the CODEOWNERS file in your repository on {% data variables.location.product_location %}, you can see any errors highlighted. A list of errors in a repository's CODEOWNERS file is also accessible via the API. For more information, see "[AUTOTITLE](/rest/repos#list-codeowners-errors)" in the REST API documentation. {% else %} If any line in your CODEOWNERS file contains invalid syntax, the file will not be detected and will not be used to request reviews. {% endif %} diff --git a/content/repositories/working-with-files/managing-files/adding-a-file-to-a-repository.md b/content/repositories/working-with-files/managing-files/adding-a-file-to-a-repository.md index 068aca1c6d..85109e3b93 100644 --- a/content/repositories/working-with-files/managing-files/adding-a-file-to-a-repository.md +++ b/content/repositories/working-with-files/managing-files/adding-a-file-to-a-repository.md @@ -43,7 +43,7 @@ Files that you add to a repository via a browser are limited to {% data variable ## Adding a file to a repository using the command line -You can upload an existing file to a repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} using the command line. +You can upload an existing file to a repository on {% data variables.location.product_location %} using the command line. {% tip %} diff --git a/content/repositories/working-with-files/using-files/working-with-non-code-files.md b/content/repositories/working-with-files/using-files/working-with-non-code-files.md index 15200f0f36..640fdcdc29 100644 --- a/content/repositories/working-with-files/using-files/working-with-non-code-files.md +++ b/content/repositories/working-with-files/using-files/working-with-non-code-files.md @@ -49,7 +49,7 @@ shortTitle: Working with non-code files ### Viewing images -You can directly browse and view images in your repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. +You can directly browse and view images in your repository on {% data variables.location.product_location %}. SVGs don't currently support inline scripting or animation. @@ -129,7 +129,7 @@ You can embed ASCII STL syntax directly in Markdown. For more information, see " ![Screenshot of a rendered CSV file, with data shown in a table format.](/assets/images/help/repository/rendered-csv.png) -When viewed, any _.csv_ or _.tsv_ file committed to a repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} automatically renders as an interactive table, complete with headers and row numbering. By default, we'll always assume the first row is your header row. +When viewed, any _.csv_ or _.tsv_ file committed to a repository on {% data variables.location.product_location %} automatically renders as an interactive table, complete with headers and row numbering. By default, we'll always assume the first row is your header row. You can link to a particular row by clicking the row number, or select multiple rows by holding down the shift key. Just copy the URL and send it to a friend. diff --git a/content/rest/apps/oauth-applications.md b/content/rest/apps/oauth-applications.md index c890964578..92fd6a82ff 100644 --- a/content/rest/apps/oauth-applications.md +++ b/content/rest/apps/oauth-applications.md @@ -17,7 +17,7 @@ autogenerated: rest ## About {% data variables.product.prodname_oauth_apps %} and OAuth authorizations of {% data variables.product.prodname_github_apps %} -You can use these endpoints to manage the OAuth tokens that {% data variables.product.prodname_oauth_apps %} or {% data variables.product.prodname_github_apps %} use to access people's accounts on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. +You can use these endpoints to manage the OAuth tokens that {% data variables.product.prodname_oauth_apps %} or {% data variables.product.prodname_github_apps %} use to access people's accounts on {% data variables.location.product_location %}. Tokens for {% data variables.product.prodname_oauth_apps %} have the prefix `gho_`, while OAuth tokens for {% data variables.product.prodname_github_apps %}, used for authenticating on behalf of the user, have the prefix `ghu_`. You can use the following endpoints for both types of OAuth tokens. diff --git a/content/rest/gitignore/gitignore.md b/content/rest/gitignore/gitignore.md index 0779e5826d..a97d936959 100644 --- a/content/rest/gitignore/gitignore.md +++ b/content/rest/gitignore/gitignore.md @@ -17,7 +17,7 @@ autogenerated: rest ## About gitignore -When you create a new repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} via the API, you can specify a [.gitignore template](/get-started/getting-started-with-git/ignoring-files) to apply to the repository upon creation. You can use the REST API to get .gitignore templates from the {% data variables.product.product_name %} [.gitignore repository](https://github.com/github/gitignore). +When you create a new repository on {% data variables.location.product_location %} via the API, you can specify a [.gitignore template](/get-started/getting-started-with-git/ignoring-files) to apply to the repository upon creation. You can use the REST API to get .gitignore templates from the {% data variables.product.product_name %} [.gitignore repository](https://github.com/github/gitignore). You can use the `application/vnd.github.raw` custom media type when getting a gitignore template. For more information, see "[AUTOTITLE](/rest/overview/media-types)." diff --git a/content/support/learning-about-github-support/about-github-premium-support.md b/content/support/learning-about-github-support/about-github-premium-support.md index 510f1a2994..c657f68476 100644 --- a/content/support/learning-about-github-support/about-github-premium-support.md +++ b/content/support/learning-about-github-support/about-github-premium-support.md @@ -125,7 +125,7 @@ If you don't receive an initial response within the guaranteed response time to The credit request must be made within 30 days of the end of the quarter during which {% data variables.contact.premium_support %} did not respond to your tickets within the designated response time. Credit requests will not be honored if the respective deadline has passed. Once the respective deadline passes, you have waived the ability to claim a refund for the qualified credit. Credit requests may take the form of a refund or credit to your account, cannot be exchanged into a cash amount, require you to have paid any outstanding invoices, and expire upon termination of your agreement with {% data variables.product.company_short %}. To receive a refund, you must submit a completed credit request to . To be eligible, the credit request must: -- Be sent from an email address associated with your account on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} +- Be sent from an email address associated with your account on {% data variables.location.product_location %} - Be received by {% data variables.product.company_short %} by the end of the 30th day after the quarter in which the four qualifying credits occurred - Include "Credit Request" in the subject line diff --git a/data/reusables/repositories/deploy-keys.md b/data/reusables/repositories/deploy-keys.md index 847fe22700..41aad645dd 100644 --- a/data/reusables/repositories/deploy-keys.md +++ b/data/reusables/repositories/deploy-keys.md @@ -1 +1 @@ -You can launch projects from a repository on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %} to your server by using a deploy key, which is an SSH key that grants access to a single repository. {% data variables.product.product_name %} attaches the public part of the key directly to your repository instead of a personal account, and the private part of the key remains on your server. For more information, see "[AUTOTITLE](/rest/guides/delivering-deployments)." +You can launch projects from a repository on {% data variables.location.product_location %} to your server by using a deploy key, which is an SSH key that grants access to a single repository. {% data variables.product.product_name %} attaches the public part of the key directly to your repository instead of a personal account, and the private part of the key remains on your server. For more information, see "[AUTOTITLE](/rest/guides/delivering-deployments)." diff --git a/src/fixtures/fixtures/content/pages/index.md b/src/fixtures/fixtures/content/pages/index.md index efa587c4d5..9e6d441f25 100644 --- a/src/fixtures/fixtures/content/pages/index.md +++ b/src/fixtures/fixtures/content/pages/index.md @@ -1,7 +1,7 @@ --- title: Pages Documentation shortTitle: Pages ({% data variables.product.product_name %}) -intro: 'Pages are cool on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}. ' +intro: 'Pages are cool on {% data variables.location.product_location %}. ' introLinks: quickstart: /pages/quickstart layout: product-landing From c52b2559c3e87b4265409441dee7284c99d04c7c Mon Sep 17 00:00:00 2001 From: Matt Pollard Date: Mon, 22 Jan 2024 14:37:25 +0100 Subject: [PATCH 46/75] Enterprise bug fix hour for week of January 15, 2024 (#48770) --- ...setting-up-a-trial-of-github-advanced-security.md | 12 +++++------- content/rest/enterprise-admin/scim.md | 4 ++-- content/rest/scim/index.md | 4 +++- content/rest/scim/scim.md | 4 +++- data/release-notes/enterprise-server/3-11/2.yml | 8 -------- data/reusables/scim/ghec-open-scim-beta-note.md | 1 + .../organization-rest-api-ghec-deployment-option.md | 5 +++++ 7 files changed, 19 insertions(+), 19 deletions(-) create mode 100644 data/reusables/scim/organization-rest-api-ghec-deployment-option.md diff --git a/content/billing/managing-billing-for-github-advanced-security/setting-up-a-trial-of-github-advanced-security.md b/content/billing/managing-billing-for-github-advanced-security/setting-up-a-trial-of-github-advanced-security.md index b10d5ff310..7a552b76c0 100644 --- a/content/billing/managing-billing-for-github-advanced-security/setting-up-a-trial-of-github-advanced-security.md +++ b/content/billing/managing-billing-for-github-advanced-security/setting-up-a-trial-of-github-advanced-security.md @@ -13,18 +13,16 @@ shortTitle: Set up an Advanced Security trial ## About trials of {% data variables.product.prodname_GH_advanced_security %} -{% data variables.product.prodname_GH_advanced_security %} provides features that help you improve and maintain the security and quality of code. For more information, see "[AUTOTITLE](/get-started/learning-about-github/about-github-advanced-security)." - -{% note %} - -**Note:** You need an enterprise account to set up a trial to evaluate the features that come with {% data variables.product.prodname_GH_advanced_security %}, such as {% data variables.product.prodname_code_scanning %}, {% data variables.product.prodname_secret_scanning %}, and dependency review. For more information about enterprise accounts, see "[AUTOTITLE](/enterprise-cloud@latest/admin/overview/about-enterprise-accounts)." - -{% endnote %} +{% data variables.product.prodname_GH_advanced_security %} provides features that help you improve and maintain the security and quality of code, such as {% data variables.product.prodname_code_scanning %}, {% data variables.product.prodname_secret_scanning %}, and dependency review. For more information, see "[AUTOTITLE](/get-started/learning-about-github/about-github-advanced-security)." During a trial, you can add any number of committers and enable {% data variables.product.prodname_GH_advanced_security %} for any number of organizations. You can set up a trial if you pay for {% data variables.product.prodname_ghe_cloud %} by credit card or PayPal, or if you are already taking part in a free trial of {% data variables.product.prodname_ghe_cloud %}. The standard length of the trial is 30 days. If you're taking part in a free trial of {% data variables.product.prodname_ghe_cloud %}, the trial of {% data variables.product.prodname_GH_advanced_security %} will last for the time you have remaining on your trial of {% data variables.product.prodname_ghe_cloud %}. +## Prerequisites + +To set up a trial of {% data variables.product.prodname_GH_advanced_security %}, you must be an owner of an enterprise account. For more information, see "[AUTOTITLE](/admin/overview/about-enterprise-accounts)" and "[AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/roles-in-an-enterprise#enterprise-owners)." + ## Setting up your trial of {% data variables.product.prodname_GH_advanced_security %} {% data reusables.enterprise-accounts.access-enterprise %} diff --git a/content/rest/enterprise-admin/scim.md b/content/rest/enterprise-admin/scim.md index 566596318e..0975c9d200 100644 --- a/content/rest/enterprise-admin/scim.md +++ b/content/rest/enterprise-admin/scim.md @@ -9,12 +9,12 @@ topics: autogenerated: rest --- +{% data reusables.scim.ghec-open-scim-beta-note %} + ## About SCIM {% ifversion ghec %} -{% data reusables.scim.ghec-open-scim-beta-note %} - {% data reusables.enterprise_user_management.about-scim-provisioning %} If you don't use a partner IdP with an existing integration, you can integrate using the following API endpoints. For more information, see "[AUTOTITLE](/admin/identity-and-access-management/provisioning-user-accounts-for-enterprise-managed-users/provisioning-users-with-scim-using-the-rest-api)." ### Base URL diff --git a/content/rest/scim/index.md b/content/rest/scim/index.md index 2961a53407..5b7e951a01 100644 --- a/content/rest/scim/index.md +++ b/content/rest/scim/index.md @@ -1,7 +1,7 @@ --- title: SCIM intro: >- - Use the REST API to control and manage your GitHub organization members access + Use the REST API to control and manage your GitHub organization members' access with SCIM. versions: ghec: '*' @@ -12,4 +12,6 @@ children: autogenerated: rest --- +{% data reusables.scim.organization-rest-api-ghec-deployment-option %} + diff --git a/content/rest/scim/scim.md b/content/rest/scim/scim.md index 0dc1256241..bba63b15fa 100644 --- a/content/rest/scim/scim.md +++ b/content/rest/scim/scim.md @@ -1,7 +1,7 @@ --- title: SCIM intro: >- - Use the REST API to control and manage your GitHub organization members access + Use the REST API to control and manage your GitHub organization members' access with SCIM. versions: # DO NOT MANUALLY EDIT. CHANGES WILL BE OVERWRITTEN BY A 🤖 ghec: '*' @@ -12,6 +12,8 @@ redirect_from: autogenerated: rest --- +{% data reusables.scim.organization-rest-api-ghec-deployment-option %} + ## About SCIM ### SCIM Provisioning for Organizations diff --git a/data/release-notes/enterprise-server/3-11/2.yml b/data/release-notes/enterprise-server/3-11/2.yml index a168ed64d1..9a269718fc 100644 --- a/data/release-notes/enterprise-server/3-11/2.yml +++ b/data/release-notes/enterprise-server/3-11/2.yml @@ -3,14 +3,6 @@ sections: bugs: - When an instance is upgraded with a hotpatch, the instance may lose network connectivity after a reboot. known_issues: - - | - An upgrade to GitHub Enterprise Server 3.11 may fail, hanging on the "Reloading system services" screen. The following error will appear in `/var/log/syslog`. - - ```text - agent: Error starting agent: error="Failed to start Consul server: Failed to start Raft: failed to load any existing snapshots" - ``` - - To address this issue, [contact GitHub Support](https://support.github.com/contact). - | Custom firewall rules are removed during the upgrade process. - | diff --git a/data/reusables/scim/ghec-open-scim-beta-note.md b/data/reusables/scim/ghec-open-scim-beta-note.md index 66985627be..cef33d5c9e 100644 --- a/data/reusables/scim/ghec-open-scim-beta-note.md +++ b/data/reusables/scim/ghec-open-scim-beta-note.md @@ -5,6 +5,7 @@ **Notes**: - Support for provisioning users with {% data variables.product.company_short %}'s public SCIM schema is in private beta and subject to change. To request access to the beta, contact your account manager on {% data variables.contact.contact_enterprise_sales %}. +- This operation allows you to provision user accounts for your enterprise on {% data variables.product.prodname_ghe_cloud %} using SCIM. The operation is only available for use with {% data variables.product.prodname_emus %}. If you don't use {% data variables.product.prodname_emus %} and want to provision access to your organizations using SCIM, see "[AUTOTITLE](/rest/scim/scim)." - {% data variables.product.company_short %} recommends that you test provisioning in an environment that's isolated from the production data on your IdP and {% data variables.location.product_location %}. {% endnote %} diff --git a/data/reusables/scim/organization-rest-api-ghec-deployment-option.md b/data/reusables/scim/organization-rest-api-ghec-deployment-option.md new file mode 100644 index 0000000000..d0317f83fa --- /dev/null +++ b/data/reusables/scim/organization-rest-api-ghec-deployment-option.md @@ -0,0 +1,5 @@ +{% note %} + +**Note**: This operation allows you to provision access to an organization on {% data variables.product.prodname_ghe_cloud %} using SCIM. The operation is not available for use with {% data variables.product.prodname_emus %}. For more information about provisioning {% data variables.enterprise.prodname_managed_users %} using SCIM, see "[AUTOTITLE](/rest/enterprise-admin/scim)." + +{% endnote %} From c0f73ebd4dfeeb21cdbf053f42547f47437909de Mon Sep 17 00:00:00 2001 From: hubwriter Date: Mon, 22 Jan 2024 16:00:13 +0000 Subject: [PATCH 47/75] Update devcontainer.json Add the versioning identifier VS Code extension. --- .devcontainer/devcontainer.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index f501ff8f19..4d69dce013 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -31,6 +31,7 @@ "bierner.markdown-preview-github-styles", "streetsidesoftware.code-spell-checker", "alistairchristie.open-reusables", + "AlistairChristie.version-identifier", "GitHub.copilot", "GitHub.copilot-chat" ] From 126c79495a2c77e95b5a33a4d6fd6ef1894ef6f5 Mon Sep 17 00:00:00 2001 From: hubwriter Date: Mon, 22 Jan 2024 16:01:02 +0000 Subject: [PATCH 48/75] Update devcontainer.json Add the Versioning Identifier VS Code extension. --- .devcontainer/devcontainer.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index f501ff8f19..4d69dce013 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -31,6 +31,7 @@ "bierner.markdown-preview-github-styles", "streetsidesoftware.code-spell-checker", "alistairchristie.open-reusables", + "AlistairChristie.version-identifier", "GitHub.copilot", "GitHub.copilot-chat" ] From 8d3711f0daa865c37bcb08edc32409f99a8d40b2 Mon Sep 17 00:00:00 2001 From: "john r. durand" Date: Mon, 22 Jan 2024 08:39:52 -0800 Subject: [PATCH 49/75] Correct formatting of macOS. (#31188) Co-authored-by: Alex Nguyen <150945400+nguyenalex836@users.noreply.github.com> --- .../managing-commit-signature-verification/signing-commits.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/authentication/managing-commit-signature-verification/signing-commits.md b/content/authentication/managing-commit-signature-verification/signing-commits.md index aba9600c5f..7755190bd4 100644 --- a/content/authentication/managing-commit-signature-verification/signing-commits.md +++ b/content/authentication/managing-commit-signature-verification/signing-commits.md @@ -25,10 +25,10 @@ topics: To configure your Git client to sign commits by default for a local repository, in Git versions 2.0.0 and above, run `git config commit.gpgsign true`. To sign all commits by default in any local repository on your computer, run `git config --global commit.gpgsign true`. To store your GPG key passphrase so you don't have to enter it every time you sign a commit, we recommend using the following tools: -- For Mac users, the [GPG Suite](https://gpgtools.org/) allows you to store your GPG key passphrase in the Mac OS Keychain. +- For Mac users, the [GPG Suite](https://gpgtools.org/) allows you to store your GPG key passphrase in the macOS Keychain. - For Windows users, the [Gpg4win](https://www.gpg4win.org/) integrates with other Windows tools. -You can also manually configure [gpg-agent](http://linux.die.net/man/1/gpg-agent) to save your GPG key passphrase, but this doesn't integrate with Mac OS Keychain like ssh-agent and requires more setup. +You can also manually configure [gpg-agent](http://linux.die.net/man/1/gpg-agent) to save your GPG key passphrase, but this doesn't integrate with macOS Keychain like ssh-agent and requires more setup. {% endtip %} From 6aa6bc552ed9cbb2cdb6529892d188b26cac9805 Mon Sep 17 00:00:00 2001 From: Siara <108543037+SiaraMist@users.noreply.github.com> Date: Mon, 22 Jan 2024 08:45:54 -0800 Subject: [PATCH 50/75] GitHub Actions: Hosted runners deliver consistent build times on latest hardware - [GA] (#48517) Co-authored-by: Steve-Glass <84886334+Steve-Glass@users.noreply.github.com> --- .../about-github-hosted-runners.md | 17 ++- .../section-choosing-the-runner-for-a-job.md | 59 ++++++++- .../actions/supported-github-runners.md | 117 ++++++++++++++++-- 3 files changed, 176 insertions(+), 17 deletions(-) diff --git a/content/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners.md b/content/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners.md index d88c60c613..70c41bd918 100644 --- a/content/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners.md +++ b/content/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners.md @@ -112,11 +112,20 @@ While the job runs, the logs and output can be viewed in the {% data variables.p {% ifversion actions-hosted-runners %} +{% data variables.product.prodname_dotcom %}-hosted runners are available for use in both public and private repositories. + {% note %} -**Note**: {% data variables.product.prodname_dotcom %} also offers {% data variables.actions.hosted_runner %}s, which are available in larger configurations for Linux, Windows, and macOS virtual machines. Autoscaling is enabled by default and optional dedicated IP addresses are available for Linux and Windows. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/using-larger-runners#machine-specs-for-larger-runners)." +**Note:** The `-latest` runner images are the latest stable images that {% data variables.product.prodname_dotcom %} provides, and might not be the most recent version of the operating system available from the operating system vendor. {% endnote %} + +{% warning %} + +**Warning:** Beta and Deprecated Images are provided "as-is", "with all faults" and "as available" and are excluded from the service level agreement and warranty. Beta Images may not be covered by customer support. + +{% endwarning %} + {% endif %} {% data reusables.actions.supported-github-runners %} @@ -161,7 +170,11 @@ You can install additional software on {% data variables.product.prodname_dotcom ## Cloud hosts used by {% data variables.product.prodname_dotcom %}-hosted runners -{% data variables.product.prodname_dotcom %} hosts Linux and Windows runners on `Standard_DS2_v2` virtual machines in Microsoft Azure with the {% data variables.product.prodname_actions %} runner application installed. The {% data variables.product.prodname_dotcom %}-hosted runner application is a fork of the Azure Pipelines Agent. Inbound ICMP packets are blocked for all Azure virtual machines, so ping or traceroute commands might not work. For more information about the `Standard_DS2_v2` resources, see "[Dv2 and DSv2-series](https://docs.microsoft.com/azure/virtual-machines/dv2-dsv2-series#dsv2-series)" in the Microsoft Azure documentation. {% data variables.product.prodname_dotcom %} hosts macOS runners in Azure data centers. +{% data variables.product.prodname_dotcom %} hosts Linux and Windows runners on virtual machines in Microsoft Azure with the {% data variables.product.prodname_actions %} runner application installed. The {% data variables.product.prodname_dotcom %}-hosted runner application is a fork of the Azure Pipelines Agent. Inbound ICMP packets are blocked for all Azure virtual machines, so ping or traceroute commands might not work. {% data variables.product.prodname_dotcom %} hosts macOS runners in Azure data centers. + +{% data variables.product.prodname_dotcom %} provides different Linux and Windows runners for public and private repositories. +- For Linux and Windows runners in **public** repositories, GitHub uses `Standard_D4ads_v5` virtual machines. For more information, see [Dasv5 and Dadsv5-series](https://learn.microsoft.com/en-us/azure/virtual-machines/dasv5-dadsv5-series#dadsv5-series) in the Microsoft Azure documentation. +- For Linux and Windows runners in **private** repositories, GitHub uses `Standard_DS2_v2` virtual machines. For more information, see [Dv2 and DSv2-series](https://learn.microsoft.com/en-us/azure/virtual-machines/dv2-dsv2-series#dsv2-series) in the Microsoft Azure documentation. ## Workflow continuity diff --git a/data/reusables/actions/jobs/section-choosing-the-runner-for-a-job.md b/data/reusables/actions/jobs/section-choosing-the-runner-for-a-job.md index 6e054e5d95..be4487c684 100644 --- a/data/reusables/actions/jobs/section-choosing-the-runner-for-a-job.md +++ b/data/reusables/actions/jobs/section-choosing-the-runner-for-a-job.md @@ -55,9 +55,64 @@ Use `jobs..runs-on` to define the type of machine to run the job on. If you use a {% data variables.product.prodname_dotcom %}-hosted runner, each job runs in a fresh instance of a runner image specified by `runs-on`. -Available {% data variables.product.prodname_dotcom %}-hosted runner types are: +Available {% data variables.product.prodname_dotcom %}-hosted runner labels are: -{% data reusables.actions.supported-github-runners %} + + + + + + + + + + + + + + + + + + + + + + + + + +
    OS (YAML workflow label)Notes
    +ubuntu-latest, ubuntu-22.04, ubuntu-20.04 + +The ubuntu-latest label currently uses the Ubuntu 22.04 runner image. +
    +windows-latest, windows-2022, windows-2019 + +The windows-latest label currently uses the Windows 2022 runner image. +
    +macos-latest, macos-12, macos-11 + +The macos-latest workflow label currently uses the macOS 12 runner image. +
    +macos-13 [Beta] + +N/A +
    + +For more information about {% data variables.product.prodname_dotcom %}-hosted runner specifications, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources)." + +{% note %} + +**Note:** The `-latest` runner images are the latest stable images that {% data variables.product.prodname_dotcom %} provides, and might not be the most recent version of the operating system available from the operating system vendor. + +{% endnote %} + +{% warning %} + +**Warning:** Beta and Deprecated Images are provided "as-is", "with all faults" and "as available" and are excluded from the service level agreement and warranty. Beta Images may not be covered by customer support. + +{% endwarning %} #### Example: Specifying an operating system diff --git a/data/reusables/actions/supported-github-runners.md b/data/reusables/actions/supported-github-runners.md index 15ddc20d25..15745e47d4 100644 --- a/data/reusables/actions/supported-github-runners.md +++ b/data/reusables/actions/supported-github-runners.md @@ -1,3 +1,9 @@ + + +### Standard {% data variables.product.prodname_dotcom %}-hosted runners for Public repositories + +For public repositories, jobs utilizing the default YAML workflow labels listed in the table below run on virtual machines with the associated specifications. The use of these runners on public repositories is free and unlimited. + @@ -15,6 +21,103 @@ Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +4 + +16 GB + +150 GB + +ubuntu-latest, ubuntu-22.04, ubuntu-20.04 + +The ubuntu-latest label currently uses the Ubuntu 22.04 runner image. +
    +Windows + +4 +16 GB + +150 GB + +windows-latest, windows-2022, windows-2019 + +The windows-latest label currently uses the Windows 2022 runner image. +
    +macOS + +3 + +14 GB + +14 GB + +macos-latest, macos-12, macos-11 + +The macos-latest workflow label currently uses the macOS 12 runner image. +
    +macOS + +4 + +14 GB + +14 GB + +macos-13[Beta] + +N/A +
    + +### Standard {% data variables.product.prodname_dotcom %}-hosted runners for Private repositories + +For private repositories, jobs utilizing the default YAML workflow labels listed in the table below run on virtual machines with the associated specifications. These runners use your {% data variables.product.prodname_dotcom %} account's allotment of free minutes, and are then charged at the per minute rates. For more information, see "[AUTOTITLE](/billing/managing-billing-for-github-actions/about-billing-for-github-actions#per-minute-rates)." + + + + + + + + + + + + + + +
    Virtual MachineProcessor (CPU)Memory (RAM)Storage (SSD)OS (YAML workflow label)Notes
    +Linux + 2 @@ -83,7 +186,7 @@ macOS 14 GB -macos-13 [Beta] +macos-13[Beta] N/A @@ -91,15 +194,3 @@ N/A
    - -{% note %} - -**Note:** The `-latest` runner images are the latest stable images that {% data variables.product.prodname_dotcom %} provides, and might not be the most recent version of the operating system available from the operating system vendor. - -{% endnote %} - -{% warning %} - -**Warning:** Beta and Deprecated Images are provided "as-is", "with all faults" and "as available" and are excluded from the service level agreement and warranty. Beta Images may not be covered by customer support. - -{% endwarning %} From 4e08b11ddea02d70d9b1dd8b900619a73ac45450 Mon Sep 17 00:00:00 2001 From: Steve-Glass <84886334+Steve-Glass@users.noreply.github.com> Date: Mon, 22 Jan 2024 12:34:56 -0500 Subject: [PATCH 51/75] Update billing-hosted-runners.md (#48758) Co-authored-by: Siara <108543037+SiaraMist@users.noreply.github.com> --- .../about-larger-runners/about-larger-runners.md | 4 ++-- .../about-larger-runners/running-jobs-on-larger-runners.md | 4 ++-- data/reusables/billing/billing-hosted-runners.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/content/actions/using-github-hosted-runners/about-larger-runners/about-larger-runners.md b/content/actions/using-github-hosted-runners/about-larger-runners/about-larger-runners.md index f7c25efcb5..85507b9290 100644 --- a/content/actions/using-github-hosted-runners/about-larger-runners/about-larger-runners.md +++ b/content/actions/using-github-hosted-runners/about-larger-runners/about-larger-runners.md @@ -29,8 +29,8 @@ The following machines sizes are available for macOS {% data variables.actions.h | Runner Size | Architecture| Processor (CPU)| Memory (RAM) | Storage (SSD) | YAML workflow label | | --------------| --------------| -------------- | ------------- | ------------- | --------------------- | -| Large | Intel| 12 | 30 GB | 14 GB | macos-latest-large, macos-12-large , macos-13-large[Beta] | -| XLarge| arm64 (M1)|6 CPU and 8 GPU| 14 GB | 14 GB | macos-latest-xlarge[Beta], macos-13-xlarge[Beta] | +| Large | Intel| 12 | 30 GB | 14 GB | macos-latest-large, macos-12-large [latest] , macos-13-large, macos-14-large[Beta] | +| XLarge| arm64 (M1)|6 CPU and 8 GPU| 14 GB | 14 GB | macos-latest-xlarge, macos-13-xlarge[latest], macos-14-xlarge[Beta] | #### Limitations for macOS {% data variables.actions.hosted_runners %} diff --git a/content/actions/using-github-hosted-runners/about-larger-runners/running-jobs-on-larger-runners.md b/content/actions/using-github-hosted-runners/about-larger-runners/running-jobs-on-larger-runners.md index c248414c08..88764de906 100644 --- a/content/actions/using-github-hosted-runners/about-larger-runners/running-jobs-on-larger-runners.md +++ b/content/actions/using-github-hosted-runners/about-larger-runners/running-jobs-on-larger-runners.md @@ -38,8 +38,8 @@ Use the labels in the table below to run your workflows on the corresponding mac | Runner Size | Architecture| Processor (CPU)| Memory (RAM) | Storage (SSD) | OS (YAML workflow label) | | --------------| --------------| -------------- | ------------- | ------------- | --------------------- | -| Large | Intel| 12 | 30 GB | 14 GB | macos-latest-large, macos-12-large , macos-13-large[Beta] | -| XLarge| arm64 (M1)|6 CPU and 8 GPU| 14 GB | 14 GB | macos-latest-xlarge[Beta], macos-13-xlarge[Beta] | +| Large | Intel| 12 | 30 GB | 14 GB | macos-latest-large, macos-12-large [latest] , macos-13-large, macos-14-large[Beta] | +| XLarge| arm64 (M1)|6 CPU and 8 GPU| 14 GB | 14 GB | macos-latest-xlarge, macos-13-xlarge [latest], macos-14-xlarge[Beta] | {% note %} **Note:** For macOS {% data variables.actions.hosted_runner %}s, the `-latest` runner label uses the macOS 12 runner image. For macOS Xlarge, the `-latest` runner label uses the macOS 13 runner image diff --git a/data/reusables/billing/billing-hosted-runners.md b/data/reusables/billing/billing-hosted-runners.md index d3b3042009..83f516063b 100644 --- a/data/reusables/billing/billing-hosted-runners.md +++ b/data/reusables/billing/billing-hosted-runners.md @@ -11,6 +11,6 @@ | Windows | 16 | $0.128 | | Windows | 32 | $0.256 | | Windows | 64 | $0.512 | -| macOS | 3 or 4 | $0.08 | +| macOS | 3 or 4 (M1 or Intel) | $0.08 | | macOS | 12 | $0.12 | | macOS | 6 (M1) | $0.16 | From b428d248fadff12adff26787e25b65f2121493a4 Mon Sep 17 00:00:00 2001 From: Siara <108543037+SiaraMist@users.noreply.github.com> Date: Mon, 22 Jan 2024 10:31:55 -0800 Subject: [PATCH 52/75] Linking the certs configuration docs of self-hosted runner for Dependabot on actions (#48779) --- .../managing-self-hosted-runners-for-dependabot-updates.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/content/admin/github-actions/enabling-github-actions-for-github-enterprise-server/managing-self-hosted-runners-for-dependabot-updates.md b/content/admin/github-actions/enabling-github-actions-for-github-enterprise-server/managing-self-hosted-runners-for-dependabot-updates.md index 0107cade32..685b405da6 100644 --- a/content/admin/github-actions/enabling-github-actions-for-github-enterprise-server/managing-self-hosted-runners-for-dependabot-updates.md +++ b/content/admin/github-actions/enabling-github-actions-for-github-enterprise-server/managing-self-hosted-runners-for-dependabot-updates.md @@ -64,6 +64,10 @@ If you specify more than 14 concurrent runners on a VM, you must also update the {% data variables.product.prodname_dependabot %} runners require access to the public internet, {% data variables.product.prodname_dotcom_the_website %}, and any internal registries that will be used in {% data variables.product.prodname_dependabot %} updates. To minimize the risk to your internal network, you should limit access from the Virtual Machine (VM) to your internal network. This reduces the potential for damage to internal systems if a runner were to download a hijacked dependency. +### Certificate configuration for {% data variables.product.prodname_dependabot %} runners + +If your {% data variables.product.prodname_ghe_server %} instance uses a self-signed certificate, or if {% data variables.product.prodname_dependabot %} needs to interact with registries that use self-signed certificates, those certificates must also be installed on the self-hosted runners that run {% data variables.product.prodname_dependabot %} jobs. This security hardens the connection. You must also configure Node.js to use the certificate, because most actions are written in JavaScript and run using Node.js, which does not use the operating system certificate store. + ### Adding self-hosted runners for {% data variables.product.prodname_dependabot %} updates 1. Provision self-hosted runners, at the repository, organization, or enterprise account level. For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners)" and "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners)." @@ -74,6 +78,8 @@ If you specify more than 14 concurrent runners on a VM, you must also update the - Recommended approach: [Run the Docker daemon as a non-root user (Rootless mode)](https://docs.docker.com/engine/security/rootless/) - Alternative approach: [Manage Docker as a non-root user](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user) - Verify that the runners have access to the public internet and can only access the internal networks that {% data variables.product.prodname_dependabot %} needs. + - Install any self-signed certificates for your {% data variables.product.prodname_ghe_server %} instance or for registries that {% data variables.product.prodname_dependabot %} will need to interact with. + - Configure Node.js to use the same certificate. For more information, see "[AUTOTITLE](/admin/github-actions/advanced-configuration-and-troubleshooting/troubleshooting-github-actions-for-your-enterprise#configuring-nodejs-to-use-the-certificate)." 1. Assign a `dependabot` label to each runner you want {% data variables.product.prodname_dependabot %} to use. For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners#assigning-a-label-to-a-self-hosted-runner)." From 65a3eb98113d297b5e1381039abfaab42592d235 Mon Sep 17 00:00:00 2001 From: Rachael Sewell Date: Mon, 22 Jan 2024 10:52:41 -0800 Subject: [PATCH 53/75] remove translation health reports (#48800) --- .../workflows/translation-health-report.yml | 137 ----------------- contributing/translations-for-translators.md | 28 ---- package.json | 1 - .../create-translation-health-report.js | 142 ------------------ 4 files changed, 308 deletions(-) delete mode 100644 .github/workflows/translation-health-report.yml delete mode 100755 src/languages/scripts/create-translation-health-report.js diff --git a/.github/workflows/translation-health-report.yml b/.github/workflows/translation-health-report.yml deleted file mode 100644 index 216df2c39e..0000000000 --- a/.github/workflows/translation-health-report.yml +++ /dev/null @@ -1,137 +0,0 @@ -name: Translation health report - -# **What it does**: Provides errors and summary statistics on rendering translated content. -# **Why we have it**: To improve our translations by having clearer visibility. -# **Who does it impact**: Docs engineering, Microsoft translators. - -on: - workflow_dispatch: - schedule: - - cron: '20 16 * * *' # Run every day at 16:20 UTC / 8:20 PST - -permissions: - contents: write - -jobs: - create-translation-health-report: - name: Create translation health report - if: github.repository == 'github/docs-internal' - runs-on: ubuntu-20.04-xl - # This sets a maximum execution time of 300 minutes (5 hours) - # to prevent the workflow from running longer than necessary. - timeout-minutes: 300 - strategy: - fail-fast: false - matrix: - include: - - language: zh - language_dir: translations/zh-cn - language_repo: github/docs-internal.zh-cn - - - language: es - language_dir: translations/es-es - language_repo: github/docs-internal.es-es - - - language: pt - language_dir: translations/pt-br - language_repo: github/docs-internal.pt-br - - - language: ru - language_dir: translations/ru-ru - language_repo: github/docs-internal.ru-ru - - - language: ja - language_dir: translations/ja-jp - language_repo: github/docs-internal.ja-jp - - - language: fr - language_dir: translations/fr-fr - language_repo: github/docs-internal.fr-fr - - - language: de - language_dir: translations/de-de - language_repo: github/docs-internal.de-de - - - language: ko - language_dir: translations/ko-kr - language_repo: github/docs-internal.ko-kr - steps: - - name: Checkout the docs-internal repo - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - - - name: Clone docs-internal.popular-pages - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - with: - repository: github/docs-internal.popular-pages - # This works because user `docs-bot` has read access to that private repo. - token: ${{ secrets.DOCS_BOT_PAT_READPUBLICKEY }} - path: popular-pages - - - name: Checkout the language-specific repo - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - with: - repository: ${{ matrix.language_repo }} - token: ${{ secrets.DOCS_BOT_PAT_WORKFLOW_READORG }} - path: ${{ matrix.language_dir }} - - - name: Get language SHA - run: | - gitref=$(cd ${{ matrix.language_dir }} && git rev-parse --short HEAD) - echo "gitref=$gitref" >> $GITHUB_ENV - - - uses: ./.github/actions/node-npm-setup - - - name: Create translation health report - env: - POPULAR_PAGES_JSON: popular-pages/records/popular-pages.json - run: | - npm run create-translation-health-report -- \ - --language ${{ matrix.language }} \ - --gitref ${{ env.gitref }} \ - >> $GITHUB_WORKSPACE/translation-health-report.json - - - name: View report in workflow - run: cat $GITHUB_WORKSPACE/translation-health-report.json - - - name: Log in to Azure - uses: azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # pin @v1.4.6 - with: - creds: ${{ secrets.PROD_AZURE_CREDENTIALS }} - - # https://learn.microsoft.com/en-us/cli/azure/storage/blob?view=azure-cli-latest#az-storage-blob-upload - # https://github.com/marketplace/actions/azure-cli-action - - name: Upload latest to Azure blob storage - uses: azure/CLI@b0e31ae20280d899279f14c36e877b4c6916e2d3 # pin @v1.0.8 - with: - inlineScript: | - az storage blob upload \ - --name "${{ matrix.language }}-latest.json" \ - --file $GITHUB_WORKSPACE/translation-health-report.json \ - --account-name githubdocs \ - --account-key ${{ secrets.AZURE_GITHUBDOCS_STORAGE_KEY }} \ - --container-name translation-health-reports \ - --overwrite true - - - name: Upload date formatted to Azure blob storage - uses: azure/CLI@b0e31ae20280d899279f14c36e877b4c6916e2d3 # pin @v1.0.8 - with: - inlineScript: | - # Write a date formatted for historical reference - az storage blob upload \ - --name "${{ matrix.language }}-$(date +%Y-%m-%d).json" \ - --file $GITHUB_WORKSPACE/translation-health-report.json \ - --account-name githubdocs \ - --account-key ${{ secrets.AZURE_GITHUBDOCS_STORAGE_KEY }} \ - --container-name translation-health-reports \ - --overwrite true - - - name: Log out from Azure - if: always() - run: | - az logout - - - uses: ./.github/actions/slack-alert - if: ${{ failure() && github.event_name != 'workflow_dispatch' }} - with: - slack_channel_id: ${{ secrets.DOCS_ALERTS_SLACK_CHANNEL_ID }} - slack_token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }} diff --git a/contributing/translations-for-translators.md b/contributing/translations-for-translators.md index 51b02e4614..b0f2e26f64 100644 --- a/contributing/translations-for-translators.md +++ b/contributing/translations-for-translators.md @@ -19,31 +19,3 @@ We do not accept translation changes from open source contributors. - [ ] Do not translate anything inside of Liquid tags, such as `{% data %}` or `{% ifversion ... %}`, `{% note %}` or `{{ someVariable }}`. - [ ] Be sure to translate the frontmatter properties `title`, `shortTitle`, `intro`, `permissions` but leave all other keys in each content `.md` file - [ ] For every `{% ifversion ... %}` there's a `{% endif %}` following it - -## Error diagnosis - -We provide error reports that we upload daily. - -

    -Report locations - -We have both "latest" or date in 'yyyy-mm-dd' format for historical reference. - -- https://githubdocs.blob.core.windows.net/translation-health-reports/es-latest.json -- https://githubdocs.blob.core.windows.net/translation-health-reports/es-2023-01-05.json -- https://githubdocs.blob.core.windows.net/translation-health-reports/ja-latest.json -- https://githubdocs.blob.core.windows.net/translation-health-reports/ja-2023-01-05.json -- https://githubdocs.blob.core.windows.net/translation-health-reports/pt-latest.json -- https://githubdocs.blob.core.windows.net/translation-health-reports/pt-2023-01-05.json -- https://githubdocs.blob.core.windows.net/translation-health-reports/zh-latest.json -- https://githubdocs.blob.core.windows.net/translation-health-reports/zh-2023-01-05.json -- https://githubdocs.blob.core.windows.net/translation-health-reports/ru-latest.json -- https://githubdocs.blob.core.windows.net/translation-health-reports/ru-2023-01-05.json -- https://githubdocs.blob.core.windows.net/translation-health-reports/ko-latest.json -- https://githubdocs.blob.core.windows.net/translation-health-reports/ko-2023-01-05.json -- https://githubdocs.blob.core.windows.net/translation-health-reports/fr-latest.json -- https://githubdocs.blob.core.windows.net/translation-health-reports/fr-2023-01-05.json -- https://githubdocs.blob.core.windows.net/translation-health-reports/de-latest.json -- https://githubdocs.blob.core.windows.net/translation-health-reports/de-2023-01-05.json - -
    diff --git a/package.json b/package.json index 53df206856..b386485cf7 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,6 @@ "check-content-type": "node src/workflows/check-content-type.js", "check-github-github-links": "node src/links/scripts/check-github-github-links.js", "copy-fixture-data": "node src/tests/scripts/copy-fixture-data.js", - "create-translation-health-report": "node src/languages/scripts/create-translation-health-report.js", "debug": "cross-env NODE_ENV=development ENABLED_LANGUAGES=en nodemon --inspect src/frame/server.js", "delete-orphan-translation-files": "tsx src/workflows/delete-orphan-translation-files.ts", "dev": "cross-env npm start", diff --git a/src/languages/scripts/create-translation-health-report.js b/src/languages/scripts/create-translation-health-report.js deleted file mode 100755 index 74847991c6..0000000000 --- a/src/languages/scripts/create-translation-health-report.js +++ /dev/null @@ -1,142 +0,0 @@ -#!/usr/bin/env node - -// [start-readme] -// -// Create a list of errors and summary statistics for errors in a particular language. -// -// [end-readme] - -/* Nota bene: - If you are getting more errors all the sudden, try running this: - $ npm run create-translation-health-report -- -l en -r 000 - If there's any errors before getting the JSON output, - const context = { ... } probably needs more data. -*/ - -import { program } from 'commander' -import fs from 'fs/promises' - -program - .description('Create a translation health report for one language.') - .requiredOption('-l, --language ', 'The language to health check') - .option('-r, --gitref ', 'Language repo latest git commit short SHA') - .parse(process.argv) - -// Throw errors instead of falling back to English -process.env.DEBUG_TRANSLATION_FALLBACKS = true -// The error option stops everything, but we want it to continue to generate the full report -process.env.ENABLED_LANGUAGES = `en,${program.opts().language}` - -// In debug mode, it will call console.warn ... so overriding :) -// Want to make sure the result is valid JSON -const prevConsoleWarn = console.warn -const prevConsoleError = console.error - -let issues = [] -console.warn = console.error = (...args) => { - if (args.length > 1) { - issues.push({ message: args.map(String).join(' '), score: 0 }) - } else if (typeof args[0] === 'string') { - issues.push({ message: args[0], score: 0 }) - } else if (args[0]?.constructor === Object) { - const path = args[0].path?.replace('/index.md', '').replace('.md', '') - issues.push({ path, message: args[0].message, score: scores[path] || 0 }) - } else if (Array.isArray(args[0]) && args[0][0]?.constructor === Object && args[0][0].filepath) { - // This is a YML parsing error. It's serious enough to bump the score. - let message = args[0][0].message - if (args[0][0].reason) { - message += ` (reason: ${args[0][0].reason})` - } - const path = args[0][0].filepath - // By giving it a +100 on the score, it at least stands above all the - // other issues which are mostly score 0. It's artificial but it works. - issues.push({ path, message, score: (scores[path] || 0) + 100 }) - } else { - // Don't use .warn() because this logging here is for the engineer - // working on this script. - console.log("WARNING: Don't know how to turn these args into an issue", args) - } -} - -// Weird import syntax, but forces it to load after process.env... changes -const { languageKeys } = await import('#src/languages/lib/languages.js') -const { loadPages, loadPageMap } = await import('#src/frame/lib/page-data.js') -const { precompileRedirects } = await import('#src/redirects/lib/precompile.js') -const { allVersions, allVersionKeys } = await import('#src/versions/lib/all-versions.js') -const { getProductStringFromPath } = await import('#src/frame/lib/path-utils.js') - -// Check that the language is valid -const { language, gitref } = program.opts() -if (!languageKeys.includes(language)) { - throw new Error(`Language ${language} is not in ${languageKeys.join()}.`) -} - -// Gather popularity data the search uses to prioritize errors -const scores = {} -const { POPULAR_PAGES_JSON } = process.env -if (POPULAR_PAGES_JSON) { - const popularPagesRaw = await fs.readFile(POPULAR_PAGES_JSON, 'utf8') - for (const row of JSON.parse(popularPagesRaw)) { - scores[row.path_article] = row.path_count - } -} - -// Load all pages in language -const allPages = await loadPages() -const pages = allPages.filter((page) => page.languageCode === language) -const pageMap = await loadPageMap(pages) -const redirects = await precompileRedirects(pages) - -// Try to render each page -for (const page of pages) { - const plainPath = page.relativePath.replace('/index.md', '').replace('.md', '') - // Go through each version... - const versions = allVersionKeys.filter((version) => page.applicableVersions.includes(version)) - const pageIssues = {} - for (const version of versions) { - const path = `/${language}/${version}/${plainPath}` - // Reference middleware/context.js for shape - const context = { - currentVersion: version, // needed for all pages - currentLanguage: language, // needed for all pages - currentPath: path, // needed for all pages - currentVersionObj: allVersions[version], // needed for ifversion tag - currentProduct: getProductStringFromPath(path), // needed for learning-track on guides pages - pages: pageMap, // needed for learning-track on guides pages - redirects, // needed for learning-track on guides pages - } - try { - await page.render(context) - } catch (err) { - // Which messages apply to which versions - pageIssues[err.message] = pageIssues[err.message] || [] - pageIssues[err.message].push(version) - } - } - if (Object.keys(pageIssues).length) { - issues.push({ - path: plainPath, - messages: pageIssues, - score: scores[plainPath] || 0, - }) - } -} - -// Sort by score desc so the translators know what to focus on first -// Issues with more information should be higher -issues = issues - .filter((issue) => !issue.path?.includes('early-access')) - .sort((a, b) => b.score - a.score || JSON.stringify(b).length - JSON.stringify(a).length) - -// Begin an output report -const report = { - language, - gitref, - datetime: new Date().toJSON(), - issuesCount: issues.length, - issues, -} - -console.warn = prevConsoleWarn -console.error = prevConsoleError -console.log(JSON.stringify(report, null, 2)) From 2388dfbc49d87a9329e598d8c34a6d389a6e40f7 Mon Sep 17 00:00:00 2001 From: ljcr84 <66281472+ljcr84@users.noreply.github.com> Date: Mon, 22 Jan 2024 20:00:32 -0300 Subject: [PATCH 54/75] Update deep-dive.md Fix VS Code Command Palette command for Windows (#31215) Co-authored-by: Alex Nguyen <150945400+nguyenalex836@users.noreply.github.com> --- content/codespaces/getting-started/deep-dive.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/codespaces/getting-started/deep-dive.md b/content/codespaces/getting-started/deep-dive.md index e0ee174389..b563c88fa8 100644 --- a/content/codespaces/getting-started/deep-dive.md +++ b/content/codespaces/getting-started/deep-dive.md @@ -94,7 +94,7 @@ If a codespace times out it will stop running, but you can restart it from the b To stop your codespace you can - In the browser: on your list of codespaces at [https://github.com/codespaces](https://github.com/codespaces), click the ellipsis (**...**) to the right of the codespace you want to stop and click **Stop codespace**. -- In {% data variables.product.prodname_vscode_shortname %}: open the {% data variables.product.prodname_vscode_command_palette %} - for example, by pressing Ctrl+Shift+Enter (Windows/Linux) or Shift+Command+P (Mac) - type `Codespaces: stop` then press Enter. For more information, see "[AUTOTITLE](/codespaces/reference/using-the-vs-code-command-palette-in-codespaces#suspending-or-stopping-a-codespace)." +- In {% data variables.product.prodname_vscode_shortname %}: open the {% data variables.product.prodname_vscode_command_palette %} - for example, by pressing Ctrl+Shift+P (Windows/Linux) or Shift+Command+P (Mac) - type `Codespaces: stop` then press Enter. For more information, see "[AUTOTITLE](/codespaces/reference/using-the-vs-code-command-palette-in-codespaces#suspending-or-stopping-a-codespace)." - In the JetBrains client, click the stop button at the top of the {% data variables.product.prodname_github_codespaces %} tool window. For more information, see the "JetBrains IDEs" tab of "[AUTOTITLE](/codespaces/developing-in-a-codespace/stopping-and-starting-a-codespace)." - In a terminal window: use the {% data variables.product.prodname_cli %} command `gh codespace stop`. For more information, see "[AUTOTITLE](/codespaces/developing-in-a-codespace/using-github-codespaces-with-github-cli#gh-commands-for-github-codespaces)." From 95a86b60252a4f2939fee3f29d374a4d7a542c36 Mon Sep 17 00:00:00 2001 From: Drew Shirts Date: Mon, 22 Jan 2024 16:39:54 -0700 Subject: [PATCH 55/75] Update github-candidate-privacy-policy.md (#31133) Co-authored-by: Alex Nguyen <150945400+nguyenalex836@users.noreply.github.com> --- .../privacy-policies/github-candidate-privacy-policy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/site-policy/privacy-policies/github-candidate-privacy-policy.md b/content/site-policy/privacy-policies/github-candidate-privacy-policy.md index f1f51cba79..0f1f15a446 100644 --- a/content/site-policy/privacy-policies/github-candidate-privacy-policy.md +++ b/content/site-policy/privacy-policies/github-candidate-privacy-policy.md @@ -56,7 +56,7 @@ GitHub will share your Candidate Personal Information with those who have a legi 1. To comply with our legal obligations, regulations or contracts, or to respond to a court order, administrative or judicial process (such as subpoena, government audit or search warrant) or, in response to lawful requests by public authorities (such as national security or law enforcement); 1. As necessary to establish, exercise, or defend against potential or pending litigation; 1. Where necessary to protect GitHub, your vital interests (such as safety and security), or those of another person; or -1. With your consent (such to contact your referees). It is your responsibility to obtain consent from referees before providing their personal information to GitHub. +1. With your consent (such to contact your references). It is your responsibility to obtain consent from references before providing their personal information to GitHub. ## Your rights to your Candidate Personal Information From 64879f591386ed8e1103f9cba9ccf5aea1a262b8 Mon Sep 17 00:00:00 2001 From: Siara <108543037+SiaraMist@users.noreply.github.com> Date: Mon, 22 Jan 2024 15:57:27 -0800 Subject: [PATCH 56/75] Actions bug fix hour for week of January 15, 2024 (#48801) --- ...ncurrency-expressions-and-a-test-matrix.md | 42 +++++++++---------- .../security-hardening-for-github-actions.md | 2 + .../using-secrets-in-github-actions.md | 4 -- .../actions/about-oidc-short-overview.md | 2 - ...eating-a-runner-group-for-an-enterprise.md | 2 +- .../oidc-custom-claims-aws-restriction.md | 2 +- 6 files changed, 25 insertions(+), 29 deletions(-) diff --git a/content/actions/examples/using-concurrency-expressions-and-a-test-matrix.md b/content/actions/examples/using-concurrency-expressions-and-a-test-matrix.md index 99375cd460..a1da13cbac 100644 --- a/content/actions/examples/using-concurrency-expressions-and-a-test-matrix.md +++ b/content/actions/examples/using-concurrency-expressions-and-a-test-matrix.md @@ -55,13 +55,13 @@ name: Node.js Tests # The `on` keyword lets you define the events that trigger when the workflow is run. You can define multiple events here. For more information, see "[AUTOTITLE](/actions/using-workflows/triggering-a-workflow#using-events-to-trigger-workflows)." on: -# Add the `workflow_dispatch` event if you want to be able to manually run this workflow. For more information, see [`workflow_dispatch`](/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch). + # Add the `workflow_dispatch` event if you want to be able to manually run this workflow. For more information, see [`workflow_dispatch`](/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch). workflow_dispatch: -# Add the `pull_request` event, so that the workflow runs automatically every time a pull request is created or updated. For more information, see [`pull_request`](/actions/using-workflows/events-that-trigger-workflows#pull_request). + # Add the `pull_request` event, so that the workflow runs automatically every time a pull request is created or updated. For more information, see [`pull_request`](/actions/using-workflows/events-that-trigger-workflows#pull_request). pull_request: -# Add the `push` event with the `branch` filter, so that the workflow runs automatically every time a commit is pushed to a branch called "main". For more information, see [`push`](/actions/using-workflows/events-that-trigger-workflows#push). + # Add the `push` event with the `branch` filter, so that the workflow runs automatically every time a commit is pushed to a branch called "main". For more information, see [`push`](/actions/using-workflows/events-that-trigger-workflows#push). push: branches: - main @@ -81,24 +81,24 @@ concurrency: # This groups together all the jobs that run in the workflow file. jobs: -# This defines a job with the ID `test` that is stored within the `jobs` key. + # This defines a job with the ID `test` that is stored within the `jobs` key. test: -# This configures the job to run on a {% data variables.product.prodname_dotcom %}-hosted runner or a self-hosted runner, depending on the repository running the workflow. -# -# In this example, the job will run on a self-hosted runner if the repository is named `docs-internal` and is within the `github` organization. If the repository doesn't match this path, then it will run on an `ubuntu-latest` runner hosted by {% data variables.product.prodname_dotcom %}. For more information on these options, see "[AUTOTITLE](/actions/using-jobs/choosing-the-runner-for-a-job)." + # This configures the job to run on a {% data variables.product.prodname_dotcom %}-hosted runner or a self-hosted runner, depending on the repository running the workflow. + # + # In this example, the job will run on a self-hosted runner if the repository is named `docs-internal` and is within the `github` organization. If the repository doesn't match this path, then it will run on an `ubuntu-latest` runner hosted by {% data variables.product.prodname_dotcom %}. For more information on these options, see "[AUTOTITLE](/actions/using-jobs/choosing-the-runner-for-a-job)." runs-on: {% raw %}${{ fromJSON('["ubuntu-latest", "self-hosted"]')[github.repository == 'github/docs-internal'] }}{% endraw %} -# This sets the maximum number of minutes to let the job run before it is automatically canceled. For more information, see [`timeout-minutes`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes). + # This sets the maximum number of minutes to let the job run before it is automatically canceled. For more information, see [`timeout-minutes`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes). timeout-minutes: 60 -# This section defines the build matrix for your jobs. + # This section defines the build matrix for your jobs. strategy: -# Setting `fail-fast` to `false` prevents {% data variables.product.prodname_dotcom %} from cancelling all in-progress jobs if any matrix job fails. + # Setting `fail-fast` to `false` prevents {% data variables.product.prodname_dotcom %} from cancelling all in-progress jobs if any matrix job fails. fail-fast: false -# This creates a matrix named `test-group`, with an array of test groups. These values match the names of test groups that will be run by `npm test`. + # This creates a matrix named `test-group`, with an array of test groups. These values match the names of test groups that will be run by `npm test`. matrix: test-group: [ @@ -112,56 +112,56 @@ jobs: translations, ] -# This groups together all the steps that will run as part of the `test` job. Each job in a workflow has its own `steps` section. + # This groups together all the steps that will run as part of the `test` job. Each job in a workflow has its own `steps` section. steps: -# The `uses` keyword tells the job to retrieve the action named `actions/checkout`. This is an action that checks out your repository and downloads it to the runner, allowing you to run actions against your code (such as testing tools). You must use the checkout action any time your workflow will use your repository's code. Some extra options are provided to the action using the `with` key. + # The `uses` keyword tells the job to retrieve the action named `actions/checkout`. This is an action that checks out your repository and downloads it to the runner, allowing you to run actions against your code (such as testing tools). You must use the checkout action any time your workflow will use your repository's code. Some extra options are provided to the action using the `with` key. - name: Check out repo uses: {% data reusables.actions.action-checkout %} with: lfs: {% raw %}${{ matrix.test-group == 'content' }}{% endraw %} persist-credentials: 'false' -# This step runs a command to check out large file storage (LFS) objects from the repository. + # This step runs a command to check out large file storage (LFS) objects from the repository. - name: Checkout LFS objects run: git lfs checkout -# This step uses the `trilom/file-changes-action` action to gather the files changed in the pull request, so they can be analyzed in the next step. This example is pinned to a specific version of the action, using the `a6ca26c14274c33b15e6499323aac178af06ad4b` SHA. + # This step uses the `trilom/file-changes-action` action to gather the files changed in the pull request, so they can be analyzed in the next step. This example is pinned to a specific version of the action, using the `a6ca26c14274c33b15e6499323aac178af06ad4b` SHA. - name: Gather files changed uses: trilom/file-changes-action@a6ca26c14274c33b15e6499323aac178af06ad4b id: get_diff_files with: output: ' ' -# This step runs a shell command that uses an output from the previous step to create a file containing the list of files changed in the pull request. + # This step runs a shell command that uses an output from the previous step to create a file containing the list of files changed in the pull request. - name: Insight into changed files run: | echo {% raw %}"${{ steps.get_diff_files.outputs.files }}" > get_diff_files.txt{% endraw %} -# This step uses the `actions/setup-node` action to install the specified version of the `node` software package on the runner, which gives you access to the `npm` command. + # This step uses the `actions/setup-node` action to install the specified version of the `node` software package on the runner, which gives you access to the `npm` command. - name: Setup node uses: {% data reusables.actions.action-setup-node %} with: node-version: 16.14.x cache: npm -# This step runs the `npm ci` shell command to install the npm software packages for the project. + # This step runs the `npm ci` shell command to install the npm software packages for the project. - name: Install dependencies run: npm ci -# {% ifversion actions-caching %}This step uses the `actions/cache` action to cache the Next.js build, so that the workflow will attempt to retrieve a cache of the build, and not rebuild it from scratch every time. For more information, see "[AUTOTITLE](/actions/using-workflows/caching-dependencies-to-speed-up-workflows)."{% endif %} + # {% ifversion actions-caching %}This step uses the `actions/cache` action to cache the Next.js build, so that the workflow will attempt to retrieve a cache of the build, and not rebuild it from scratch every time. For more information, see "[AUTOTITLE](/actions/using-workflows/caching-dependencies-to-speed-up-workflows)."{% endif %} - name: Cache nextjs build uses: {% data reusables.actions.action-cache %} with: path: .next/cache key: {% raw %}${{ runner.os }}-nextjs-${{ hashFiles('package*.json') }}{% endraw %} -# This step runs the build script. + # This step runs the build script. - name: Run build script run: npm run build -# This step runs the tests using `npm test`, and the test matrix provides a different value for {% raw %}`${{ matrix.test-group }}`{% endraw %} for each job in the matrix. It uses the `DIFF_FILE` environment variable to know which files have changed, and uses the `CHANGELOG_CACHE_FILE_PATH` environment variable for the changelog cache file. + # This step runs the tests using `npm test`, and the test matrix provides a different value for {% raw %}`${{ matrix.test-group }}`{% endraw %} for each job in the matrix. It uses the `DIFF_FILE` environment variable to know which files have changed, and uses the `CHANGELOG_CACHE_FILE_PATH` environment variable for the changelog cache file. - name: Run tests env: DIFF_FILE: get_diff_files.txt diff --git a/content/actions/security-guides/security-hardening-for-github-actions.md b/content/actions/security-guides/security-hardening-for-github-actions.md index f6d0dbbc7f..a6cf50188e 100644 --- a/content/actions/security-guides/security-hardening-for-github-actions.md +++ b/content/actions/security-guides/security-hardening-for-github-actions.md @@ -181,6 +181,8 @@ To help mitigate the risk of an exposed token, consider restricting the assigned {% data reusables.actions.about-oidc-short-overview %} +{% data reusables.actions.oidc-custom-claims-aws-restriction %} + {% endif %} ## Using third-party actions diff --git a/content/actions/security-guides/using-secrets-in-github-actions.md b/content/actions/security-guides/using-secrets-in-github-actions.md index c19eddd3ee..b55c33ac70 100644 --- a/content/actions/security-guides/using-secrets-in-github-actions.md +++ b/content/actions/security-guides/using-secrets-in-github-actions.md @@ -26,16 +26,12 @@ Secrets are variables that you create in an organization, repository, or reposit For secrets stored at the environment level, you can enable required reviewers to control access to the secrets. A workflow job cannot access environment secrets until approval is granted by required approvers. -{% ifversion fpt or ghec or ghes %} - {% note %} **Note**: {% data reusables.actions.about-oidc-short-overview %} {% endnote %} -{% endif %} - ### Naming your secrets The following rules apply to secret names: diff --git a/data/reusables/actions/about-oidc-short-overview.md b/data/reusables/actions/about-oidc-short-overview.md index 6d975ab96f..9e62e3e0d1 100644 --- a/data/reusables/actions/about-oidc-short-overview.md +++ b/data/reusables/actions/about-oidc-short-overview.md @@ -1,4 +1,2 @@ If your {% data variables.product.prodname_actions %} workflows need to access resources from a cloud provider that supports OpenID Connect (OIDC), you can configure your workflows to authenticate directly to the cloud provider. This will let you stop storing these credentials as long-lived secrets and provide other security benefits. For more information, see "[AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect)" - -{% data reusables.actions.oidc-custom-claims-aws-restriction %} diff --git a/data/reusables/actions/creating-a-runner-group-for-an-enterprise.md b/data/reusables/actions/creating-a-runner-group-for-an-enterprise.md index 27ef4d27ad..66f89442da 100644 --- a/data/reusables/actions/creating-a-runner-group-for-an-enterprise.md +++ b/data/reusables/actions/creating-a-runner-group-for-an-enterprise.md @@ -9,7 +9,7 @@ Always include a security admonition above this procedure. This is either one of Enterprises can add their runners to groups for access management. Enterprises can create groups of runners that are accessible to specific organizations in the enterprise account{% ifversion restrict-groups-to-workflows %} or to specific workflows{% endif %}. Organization owners can then assign additional granular repository{% ifversion restrict-groups-to-workflows %} or workflow{% endif %} access policies to the enterprise runner groups. For information about how to create a runner group with the REST API, see the enterprise endpoints in the [{% data variables.product.prodname_actions %} REST API](/rest/actions#self-hosted-runner-groups). -If no group is specified during the registration process, runners are automatically added to a default group. You can later move the runner from the default group to a custom group. For more information, see "Moving a runner to a group." +If no group is specified during the registration process, runners are automatically added to a default group. You can later move the runner from the default group to a custom group. For more information, see "[Moving a runner to a group](#moving-a-runner-to-a-group)." When creating a group, you must choose a policy that defines which organizations have access to the runner group. diff --git a/data/reusables/actions/oidc-custom-claims-aws-restriction.md b/data/reusables/actions/oidc-custom-claims-aws-restriction.md index 77c4bf8d96..509622dbeb 100644 --- a/data/reusables/actions/oidc-custom-claims-aws-restriction.md +++ b/data/reusables/actions/oidc-custom-claims-aws-restriction.md @@ -1,5 +1,5 @@ {% note %} -**Note:** support for custom claims for OIDC is unavailable in AWS. +**Note:** Support for custom claims for OIDC is unavailable in AWS. {% endnote %} From edc2fb17f0ec4806df5ee5385f0685e474a508bc Mon Sep 17 00:00:00 2001 From: Steve Guntrip Date: Tue, 23 Jan 2024 10:12:13 +0000 Subject: [PATCH 57/75] Add a short introduction to the GitHub Projects map topic (#48789) Co-authored-by: Ben Ahmady <32935794+subatoi@users.noreply.github.com> --- content/issues/planning-and-tracking-with-projects/index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/content/issues/planning-and-tracking-with-projects/index.md b/content/issues/planning-and-tracking-with-projects/index.md index 36d8794c99..c232de9adf 100644 --- a/content/issues/planning-and-tracking-with-projects/index.md +++ b/content/issues/planning-and-tracking-with-projects/index.md @@ -22,3 +22,7 @@ redirect_from: --- {% data reusables.projects.projects-beta %} + +A project is an adaptable collection of items that you can view as a table{% ifversion projects-v2-roadmaps %}, a kanban board, or a roadmap{% else %} or a kanban board{% endif %} and that stays up-to-date with {% data variables.product.company_short %} data. Your projects can track issues, pull requests, and ideas that you note down. + +You can create and customize multiple views by filtering, sorting, and grouping issues and pull requests,{% ifversion projects-v2-insights %} visualize work with configurable charts,{% endif %} and add custom fields to track metadata specific to your team. Rather than enforcing a specific methodology, a project provides flexible features you can customize to your team’s needs and processes. From 066e2e453dc9aaf735b1f7c5d1143146cb4fea3e Mon Sep 17 00:00:00 2001 From: marz Date: Tue, 23 Jan 2024 05:28:41 -0500 Subject: [PATCH 58/75] Update secret-scanning-partner-program example payload (#48727) Co-authored-by: Anne-Marie <102995847+am-stead@users.noreply.github.com> --- .../secret-scanning-partner-program.md | 30 +++++-------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/content/code-security/secret-scanning/secret-scanning-partner-program.md b/content/code-security/secret-scanning/secret-scanning-partner-program.md index 8bf5935b89..6fe877465b 100644 --- a/content/code-security/secret-scanning/secret-scanning-partner-program.md +++ b/content/code-security/secret-scanning/secret-scanning-partner-program.md @@ -103,12 +103,12 @@ to validate the messages you receive are genuinely from {% data variables.produc The two HTTP headers to look for are: -- `GITHUB-PUBLIC-KEY-IDENTIFIER`: Which `key_identifier` to use from our API -- `GITHUB-PUBLIC-KEY-SIGNATURE`: Signature of the payload +- `Github-Public-Key-Identifier`: Which `key_identifier` to use from our API +- `Github-Public-Key-Signature`: Signature of the payload You can retrieve the {% data variables.product.prodname_dotcom %} secret scanning public key from https://api.github.com/meta/public_keys/secret_scanning and validate the message using the `ECDSA-NIST-P256V1-SHA256` algorithm. The endpoint will provide several `key_identifier` and public keys. You can determine which public -key to use based on the value of `GITHUB-PUBLIC-KEY-IDENTIFIER`. +key to use based on the value of `Github-Public-Key-Identifier`. {% note %} @@ -128,28 +128,14 @@ key to use based on the value of `GITHUB-PUBLIC-KEY-IDENTIFIER`. POST / HTTP/2 Host: HOST Accept: */* -content-type: application/json -GITHUB-PUBLIC-KEY-IDENTIFIER: f9525bf080f75b3506ca1ead061add62b8633a346606dc5fe544e29231c6ee0d -GITHUB-PUBLIC-KEY-SIGNATURE: MEUCIFLZzeK++IhS+y276SRk2Pe5LfDrfvTXu6iwKKcFGCrvAiEAhHN2kDOhy2I6eGkOFmxNkOJ+L2y8oQ9A2T9GGJo6WJY= -Content-Length: 83 +Content-Length: 104 +Content-Type: application/json +Github-Public-Key-Identifier: bcb53661c06b4728e59d897fb6165d5c9cda0fd9cdf9d09ead458168deb7518c +Github-Public-Key-Signature: MEQCIQDaMKqrGnE27S0kgMrEK0eYBmyG0LeZismAEz/BgZyt7AIfXt9fErtRS4XaeSt/AO1RtBY66YcAdjxji410VQV4xg== -[{"token":"some_token","type":"some_type","url":"some_url","source":"some_source"}] +[{"source":"commit","token":"some_token","type":"some_type","url":"https://example.com/base-repo-url/"}] ``` -{% note %} - -**Note**: The key id and signature from the example payload is derived from a test key. -The public key for them is: - -```shell ------BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsz9ugWDj5jK5ELBK42ynytbo38gP -HzZFI03Exwz8Lh/tCfL3YxwMdLjB+bMznsanlhK0RwcGP3IDb34kQDIo3Q== ------END PUBLIC KEY----- -``` - -{% endnote %} - The following code snippets demonstrate how you could perform signature validation. The code examples assume you've set an environment variable called `GITHUB_PRODUCTION_TOKEN` with a generated [{% data variables.product.pat_generic %}](https://github.com/settings/tokens) to avoid hitting rate limits. The {% data variables.product.pat_generic %} does not need any scopes/permissions. From dcef4a7b6092efd853d40d22c8ba30f952357db5 Mon Sep 17 00:00:00 2001 From: hubwriter Date: Tue, 23 Jan 2024 12:10:13 +0000 Subject: [PATCH 59/75] Delete .devcontainer/test-custom-devcontainer directory --- .../devcontainer.json | 27 ------------------- 1 file changed, 27 deletions(-) delete mode 100644 .devcontainer/test-custom-devcontainer/devcontainer.json diff --git a/.devcontainer/test-custom-devcontainer/devcontainer.json b/.devcontainer/test-custom-devcontainer/devcontainer.json deleted file mode 100644 index 587805e006..0000000000 --- a/.devcontainer/test-custom-devcontainer/devcontainer.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "Test postCreateCommand", - "image": "mcr.microsoft.com/devcontainers/universal:linux", - - "settings": { - "terminal.integrated.shell.linux": "/bin/zsh", - }, - - // Visual Studio Code extensions which help authoring for docs.github.com. - "extensions": [ - "dbaeumer.vscode-eslint", - "sissel.shopify-liquid" - ], - - "hostRequirements": { - "cpus": 8, - "memory": "8gb", - "storage": "32gb" - }, - - // Use 'forwardPorts' to make a list of ports inside the container available locally. - "forwardPorts": [5000], - - // Use 'postCreateCommand' to run commands after the container is created. - "postCreateCommand": "echo Added: `date` > aaa-TEST.txt" - -} From 3f5263c558679258afe11b1896f638c21db39859 Mon Sep 17 00:00:00 2001 From: hubwriter Date: Tue, 23 Jan 2024 12:14:05 +0000 Subject: [PATCH 60/75] Update github-debian.sh --- .devcontainer/library-scripts/github-debian.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/library-scripts/github-debian.sh b/.devcontainer/library-scripts/github-debian.sh index 2d474fdefa..1a7a177c18 100644 --- a/.devcontainer/library-scripts/github-debian.sh +++ b/.devcontainer/library-scripts/github-debian.sh @@ -4,7 +4,7 @@ # Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information. #------------------------------------------------------------------------------------------------------------- # -# Docs: https://github.com/microsoft/vscode-dev-containers/blob/master/script-library/docs/github.md +# Docs: https://github.com/microsoft/vscode-dev-containers/blob/main/script-library/docs/github-cli.md # # Syntax: ./github-debian.sh [version] From dc3f4de1d711dc05f6bf2229257a948c306e1933 Mon Sep 17 00:00:00 2001 From: Steve Guntrip Date: Tue, 23 Jan 2024 13:09:42 +0000 Subject: [PATCH 61/75] Update project (classic) usage (#48784) Co-authored-by: Sophie <29382425+sophietheking@users.noreply.github.com> --- .../verifying-your-email-address.md | 2 +- .../about-your-personal-dashboard.md | 2 +- ...o-your-personal-accounts-project-boards.md | 15 ++--- ...oject-board-owned-by-a-personal-account.md | 63 ++++++++++--------- ...oving-assigned-issues-on-project-boards.md | 15 ++--- ...card-is-added-to-a-project-board-column.md | 5 +- ...g-github-actions-for-project-management.md | 4 +- .../events-that-trigger-workflows.md | 8 +-- ...olicies-for-projects-in-your-enterprise.md | 4 +- .../reviewing-your-security-log.md | 2 +- content/discussions/quickstart.md | 2 +- .../accessibility/github-command-palette.md | 2 +- ...ng-started-with-github-enterprise-cloud.md | 2 +- .../getting-started-with-github-team.md | 4 +- ...etting-started-with-your-github-account.md | 8 +-- .../about-project-boards.md | 2 +- .../changing-project-board-visibility.md | 2 +- .../copying-a-project-board.md | 6 +- .../deleting-a-project-board.md | 2 +- ...es-and-pull-requests-to-a-project-board.md | 2 +- .../migrating-from-projects-classic.md | 10 +-- .../managing-visibility-of-your-projects.md | 2 +- .../creating-an-issue.md | 2 +- ...-tracking-work-for-your-team-or-project.md | 16 ++--- ...sferring-an-issue-to-another-repository.md | 2 +- .../using-ghe-migrator/about-ghe-migrator.md | 2 +- ...rating-data-to-github-enterprise-server.md | 2 +- .../about-organizations.md | 2 +- ...ing-the-audit-log-for-your-organization.md | 2 +- ...t-board-permissions-for-an-organization.md | 6 +- .../deleting-an-organization-account.md | 2 +- ...ing-project-boards-in-your-organization.md | 10 +-- ...ra-with-your-organization-project-board.md | 3 +- .../roles-in-an-organization.md | 8 +-- .../repository-roles-for-an-organization.md | 2 +- ...ery-parameters-to-create-a-pull-request.md | 2 +- .../about-repositories.md | 2 +- .../disabling-projects-in-a-repository.md | 2 +- .../using-the-rest-api/issue-event-types.md | 8 +-- .../searching-issues-and-pull-requests.md | 10 +-- ...-visibility-permissions-or-projects-v2.yml | 2 +- ...classic-project-visibility-permissions.yml | 2 +- .../projects-v1-create-repo-project.yml | 2 +- data/features/projects-v2-migration.yml | 2 +- .../audit_log/audit-log-action-categories.md | 8 +-- ...ng-access-to-repositories-projects-apps.md | 2 +- .../pre-release-program/starfox-preview.md | 2 +- data/reusables/profile/access_profile.md | 2 +- .../add-column-new-project.md | 2 +- .../project-management/choose-template.md | 2 +- .../project-management/choose-visibility.md | 2 +- .../create-project-name-description.md | 2 +- .../edit-project-columns.md | 2 +- ...or-more-info-project-keyboard-shortcuts.md | 2 +- .../project-management/linked-repositories.md | 2 +- .../project-board-import-with-api.md | 2 +- .../projects/classic-project-creation.md | 2 +- data/reusables/projects/disabled-projects.md | 2 +- data/reusables/projects/project_boards_old.md | 2 +- .../assign-an-issue-as-project-maintainer.md | 2 +- data/variables/projects.yml | 8 +-- 61 files changed, 153 insertions(+), 148 deletions(-) diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address.md index 184ce49913..92926b3f96 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address.md @@ -27,7 +27,7 @@ If you do not verify your email address, you will not be able to: - Generate {% data variables.product.pat_generic %}s - Receive email notifications - Star repositories -- Create or update project boards, including adding cards +- Create or update projects - Create or update gists - Create or use {% data variables.product.prodname_actions %} - Sponsor developers with {% data variables.product.prodname_sponsors %} diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard.md index f25e9705cd..9ecb7f206f 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard.md @@ -44,7 +44,7 @@ In the left sidebar of your dashboard, you can access the top repositories and t The list of top repositories is automatically generated, and can include any repository you have interacted with, whether it's owned directly by your account or not. Interactions include making commits and opening or commenting on issues and pull requests. The list of top repositories cannot be edited, but repositories will drop off the list 1 year after you last interacted with them. -You can also find a list of your recently visited repositories, teams, and project boards when you click into the search bar at the top of any page on {% data variables.product.product_name %}. +You can also find a list of your recently visited repositories, teams, and projects when you click into the search bar at the top of any page on {% data variables.product.product_name %}. ## Staying updated with activity from the community diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-access-to-your-personal-accounts-project-boards.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-access-to-your-personal-accounts-project-boards.md index 7bd8ca5148..773a1440b2 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-access-to-your-personal-accounts-project-boards.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-access-to-your-personal-accounts-project-boards.md @@ -1,6 +1,6 @@ --- -title: Managing access to your personal account's project boards -intro: 'As a project board owner, you can add or remove a collaborator and customize their permissions to a project board.' +title: 'Managing access to your personal account''s {% data variables.projects.projects_v1_boards %}' +intro: 'As a {% data variables.projects.projects_v1_board %} owner, you can add or remove a collaborator and customize their permissions to a {% data variables.projects.projects_v1_board %}.' redirect_from: - /articles/managing-project-boards-in-your-repository-or-organization - /articles/managing-access-to-your-user-account-s-project-boards @@ -16,13 +16,14 @@ versions: ghec: '*' topics: - Accounts -shortTitle: Manage access project boards +shortTitle: 'Manage {% data variables.projects.projects_v1_boards %} access' +allowTitleToDifferFromFilename: true --- -A collaborator is a person who has permissions to a project board you own. A collaborator's permissions will default to read access. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-project-board-owned-by-a-personal-account)." +A collaborator is a person who has permissions to a {% data variables.projects.projects_v1_board %} you own. A collaborator's permissions will default to read access. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-project-board-owned-by-a-personal-account)." -## Inviting collaborators to a user-owned project board +## Inviting collaborators to a user-owned {% data variables.projects.projects_v1_board %} -1. Navigate to the project board where you want to add an collaborator. +1. Navigate to the {% data variables.projects.projects_v1_board %} where you want to add an collaborator. {% data reusables.project-management.click-menu %} {% data reusables.project-management.access-collaboration-settings %} {% data reusables.project-management.collaborator-option %} @@ -30,7 +31,7 @@ A collaborator is a person who has permissions to a project board you own. A col {% data reusables.project-management.add-collaborator %} 1. The new collaborator has read permissions by default. Optionally, next to the new collaborator's name, use the drop-down menu and choose a different permission level. -## Removing a collaborator from a user-owned project board +## Removing a collaborator from a user-owned {% data variables.projects.projects_v1_board %} {% data reusables.project-management.click-menu %} {% data reusables.project-management.access-collaboration-settings %} diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-project-board-owned-by-a-personal-account.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-project-board-owned-by-a-personal-account.md index a04f4e6392..59b619bf95 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-project-board-owned-by-a-personal-account.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-project-board-owned-by-a-personal-account.md @@ -1,6 +1,6 @@ --- -title: Permission levels for a project board owned by a personal account -intro: 'A project board owned by a personal account has two permission levels: the project board owner and collaborators.' +title: 'Permission levels for a {% data variables.projects.projects_v1_board %} owned by a personal account' +intro: 'A {% data variables.projects.projects_v1_board %} owned by a personal account has two permission levels: the {% data variables.projects.projects_v1_board %} owner and collaborators.' redirect_from: - /articles/permission-levels-for-user-owned-project-boards - /github/setting-up-and-managing-your-github-user-account/permission-levels-for-user-owned-project-boards @@ -13,51 +13,52 @@ versions: ghec: '*' topics: - Accounts -shortTitle: Project board permissions +shortTitle: '{% data variables.projects.projects_v1_board_caps %} permissions' +allowTitleToDifferFromFilename: true --- ## Permissions overview -There is only one owner of a user-owned project board; this permission cannot be shared with another personal account. In addition to the owner, other people can collaborate on project boards. +There is only one owner of a user-owned {% data variables.projects.projects_v1_board %}; this permission cannot be shared with another personal account. In addition to the owner, other people can collaborate on {% data variables.projects.projects_v1_boards %}. -There are three levels of permissions for project board collaborators: +There are three levels of permissions for {% data variables.projects.projects_v1_board %} collaborators: {% data reusables.project-management.project-board-permissions %} -## Owner and admin permissions for a user-owned project board +## Owner and admin permissions for a user-owned {% data variables.projects.projects_v1_board %} -The project board owner and collaborators with admin access have full control of the project board. In addition to all the permissions allowed by project board collaborators, a project board owner and collaborator with admin access can: +The {% data variables.projects.projects_v1_board %} owner and collaborators with admin access have full control of the {% data variables.projects.projects_v1_board %}. In addition to all the permissions allowed by {% data variables.projects.projects_v1_board %} collaborators, a {% data variables.projects.projects_v1_board %} owner and collaborator with admin access can: -- [Manage, view, and add collaborators](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-access-to-your-personal-accounts-project-boards) -- [Configure a project board as public or private](/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility) -- [Delete a project board](/issues/organizing-your-work-with-project-boards/managing-project-boards/deleting-a-project-board) -- [Close a project board](/issues/organizing-your-work-with-project-boards/managing-project-boards/closing-a-project-board) -- [Reopen a closed project board](/issues/organizing-your-work-with-project-boards/managing-project-boards/reopening-a-closed-project-board) +- [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-access-to-your-personal-accounts-project-boards) +- [AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility) +- [AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/deleting-a-project-board) +- [AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/closing-a-project-board) +- [AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/reopening-a-closed-project-board) -## Read and write permissions for a user-owned project board +## Read and write permissions for a user-owned {% data variables.projects.projects_v1_board %} -Collaborators with read access to a user-owned project board can: +Collaborators with read access to a user-owned {% data variables.projects.projects_v1_board %} can: -- View a project board -- Copy a project board -- Filter cards on a project board +- View a {% data variables.projects.projects_v1_board %} +- Copy a {% data variables.projects.projects_v1_board %} +- Filter cards on a {% data variables.projects.projects_v1_board %} -Collaborators with write access to a user-owned project board can: +Collaborators with write access to a user-owned {% data variables.projects.projects_v1_board %} can: -- View a project board -- Copy a project board -- Filter cards on a project board -- Edit a project board -- Link a repository to a project board -- Configure automation for project boards -- Copy a project board -- Add issues and pull requests to a project board -- Add notes to a project board -- Track progress on your project board -- Archive cards on a project board +- View a {% data variables.projects.projects_v1_board %} +- Copy a {% data variables.projects.projects_v1_board %} +- Filter cards on a {% data variables.projects.projects_v1_board %} +- Edit a {% data variables.projects.projects_v1_board %} +- Link a repository to a {% data variables.projects.projects_v1_board %} +- Configure automation for {% data variables.projects.projects_v1_boards %} +- Copy a {% data variables.projects.projects_v1_board %} +- Add issues and pull requests to a {% data variables.projects.projects_v1_board %} +- Add notes to a {% data variables.projects.projects_v1_board %} +- Track progress on your {% data variables.projects.projects_v1_board %} +- Archive cards on a {% data variables.projects.projects_v1_board %} -## Project board visibility +## {% data variables.projects.projects_v1_board_caps %} visibility -You can change the project board's visibility from private to public and back again. By default, user-owned project boards are private. For more information, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility)." +You can change the {% data variables.projects.projects_v1_board %}'s visibility from private to {% ifversion ghae %}internal{% else %}public{% endif %} and back again. By default, user-owned {% data variables.projects.projects_v1_boards %} are private. For more information, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility)." ## Further reading diff --git a/content/actions/managing-issues-and-pull-requests/moving-assigned-issues-on-project-boards.md b/content/actions/managing-issues-and-pull-requests/moving-assigned-issues-on-project-boards.md index f92dc9b383..cb4b46a5ca 100644 --- a/content/actions/managing-issues-and-pull-requests/moving-assigned-issues-on-project-boards.md +++ b/content/actions/managing-issues-and-pull-requests/moving-assigned-issues-on-project-boards.md @@ -1,6 +1,6 @@ --- -title: Moving assigned issues on project boards -intro: 'You can use {% data variables.product.prodname_actions %} to automatically move an issue to a specific column on a project board when the issue is assigned.' +title: 'Moving assigned issues on {% data variables.projects.projects_v1_boards %}' +intro: 'You can use {% data variables.product.prodname_actions %} to automatically move an issue to a specific column on a {% data variables.projects.projects_v1_board %} when the issue is assigned.' redirect_from: - /actions/guides/moving-assigned-issues-on-project-boards versions: @@ -13,20 +13,21 @@ topics: - Workflows - Project management shortTitle: Move assigned issues +allowTitleToDifferFromFilename: true --- {% data reusables.actions.enterprise-github-hosted-runners %} ## Introduction -This tutorial demonstrates how to use the [`alex-page/github-project-automation-plus` action](https://github.com/marketplace/actions/github-project-automation) to automatically move an issue to a specific column on a project board when the issue is assigned. For example, when an issue is assigned, you can move it into the `In Progress` column your project board. +This tutorial demonstrates how to use the [`alex-page/github-project-automation-plus` action](https://github.com/marketplace/actions/github-project-automation) to automatically move an issue to a specific column on a {% data variables.projects.projects_v1_board %} when the issue is assigned. For example, when an issue is assigned, you can move it into the `In Progress` column your {% data variables.projects.projects_v1_board %}. In the tutorial, you will first make a workflow file that uses the [`alex-page/github-project-automation-plus` action](https://github.com/marketplace/actions/github-project-automation). Then, you will customize the workflow to suit your needs. ## Creating the workflow 1. {% data reusables.actions.choose-repo %} -1. In your repository, choose a project board. You can use an existing project, or you can create a new project. For more information about creating a project, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/creating-a-project-board)." +1. In your repository, choose a {% data variables.projects.projects_v1_board %}. You can use an existing project, or you can create a new project. For more information about creating a project, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/creating-a-project-board)." 1. {% data reusables.actions.make-workflow-file %} 1. Copy the following YAML contents into your workflow file. @@ -52,7 +53,7 @@ In the tutorial, you will first make a workflow file that uses the [`alex-page/g ``` 1. Customize the parameters in your workflow file: - - Change the value for `project` to the name of your project board. If you have multiple project boards with the same name, the `alex-page/github-project-automation-plus` action will act on all projects with the specified name. + - Change the value for `project` to the name of your {% data variables.projects.projects_v1_board %}. If you have multiple {% data variables.projects.projects_v1_boards %} with the same name, the `alex-page/github-project-automation-plus` action will act on all projects with the specified name. - Change the value for `column` to the name of the column where you want issues to move when they are assigned. - Change the value for `repo-token`: 1. Create a {% data variables.product.pat_v1 %} with the `repo` scope. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." @@ -62,7 +63,7 @@ In the tutorial, you will first make a workflow file that uses the [`alex-page/g ## Testing the workflow -Whenever an issue in your repository is assigned, the issue will be moved to the specified project board column. If the issue is not already on the project board, it will be added to the project board. +Whenever an issue in your repository is assigned, the issue will be moved to the specified {% data variables.projects.projects_v1_board %} column. If the issue is not already on the {% data variables.projects.projects_v1_board %}, it will be added to the {% data variables.projects.projects_v1_board %}. If your repository is user-owned, the `alex-page/github-project-automation-plus` action will act on all projects in your repository or personal account that have the specified project name and column. Likewise, if your repository is organization-owned, the action will act on all projects in your repository or organization that have the specified project name and column. @@ -71,7 +72,7 @@ Test your workflow by assigning an issue in your repository. 1. Open an issue in your repository. For more information, see "[AUTOTITLE](/issues/tracking-your-work-with-issues/creating-an-issue)." 1. Assign the issue. For more information, see "[AUTOTITLE](/issues/tracking-your-work-with-issues/assigning-issues-and-pull-requests-to-other-github-users)." 1. To see the workflow run that assigning the issue triggered, view the history of your workflow runs. For more information, see "[AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/viewing-workflow-run-history)." -1. When the workflow completes, the issue that you assigned should be added to the specified project board column. +1. When the workflow completes, the issue that you assigned should be added to the specified {% data variables.projects.projects_v1_board %} column. ## Next steps diff --git a/content/actions/managing-issues-and-pull-requests/removing-a-label-when-a-card-is-added-to-a-project-board-column.md b/content/actions/managing-issues-and-pull-requests/removing-a-label-when-a-card-is-added-to-a-project-board-column.md index 7bc7c9d1d6..71cfa7c5f2 100644 --- a/content/actions/managing-issues-and-pull-requests/removing-a-label-when-a-card-is-added-to-a-project-board-column.md +++ b/content/actions/managing-issues-and-pull-requests/removing-a-label-when-a-card-is-added-to-a-project-board-column.md @@ -1,5 +1,5 @@ --- -title: Removing a label when a card is added to a project board column +title: 'Removing a label when a card is added to a {% data variables.projects.projects_v1_board %} column' intro: 'You can use {% data variables.product.prodname_actions %} to automatically remove a label when an issue or pull request is added to a specific column on a {% data variables.projects.projects_v1_board %}.' redirect_from: - /actions/guides/removing-a-label-when-a-card-is-added-to-a-project-board-column @@ -13,6 +13,7 @@ topics: - Workflows - Project management shortTitle: Remove label when adding card +allowTitleToDifferFromFilename: true --- {% data reusables.actions.enterprise-github-hosted-runners %} @@ -62,7 +63,7 @@ In the tutorial, you will first make a workflow file that uses the [`actions/git To find the column ID, navigate to your {% data variables.projects.projects_v1_board %}. Next to the title of the column, click {% octicon "kebab-horizontal" aria-label="Column menu" %} then click **Copy column link**. The column ID is the number at the end of the copied link. For example, `24687531` is the column ID for `https://github.com/octocat/octo-repo/projects/1#column-24687531`. - If you want to act on more than one column, separate the conditions with `||`. For example, `if github.event.project_card.column_id == '12345678' || github.event.project_card.column_id == '87654321'` will act whenever a project card is added to column `12345678` or column `87654321`. The columns may be on different project boards. + If you want to act on more than one column, separate the conditions with `||`. For example, `if github.event.project_card.column_id == '12345678' || github.event.project_card.column_id == '87654321'` will act whenever a project card is added to column `12345678` or column `87654321`. The columns may be on different {% data variables.projects.projects_v1_boards %}. - Change the value for `name` in the `github.rest.issues.removeLabel()` function to the name of the label that you want to remove from issues or pull requests that are moved to the specified column(s). For more information on labels, see "[AUTOTITLE](/issues/using-labels-and-milestones-to-track-work/managing-labels#applying-labels-to-issues-and-pull-requests)." 1. {% data reusables.actions.commit-workflow %} diff --git a/content/actions/managing-issues-and-pull-requests/using-github-actions-for-project-management.md b/content/actions/managing-issues-and-pull-requests/using-github-actions-for-project-management.md index 77ec4e0a19..fdb2496e9b 100644 --- a/content/actions/managing-issues-and-pull-requests/using-github-actions-for-project-management.md +++ b/content/actions/managing-issues-and-pull-requests/using-github-actions-for-project-management.md @@ -15,7 +15,7 @@ shortTitle: Actions for project management --- -You can use {% data variables.product.prodname_actions %} to automate your project management tasks by creating workflows. Each workflow contains a series of tasks that are performed automatically every time the workflow runs. For example, you can create a workflow that runs every time an issue is created to add a label, leave a comment, and move the issue onto a project board. +You can use {% data variables.product.prodname_actions %} to automate your project management tasks by creating workflows. Each workflow contains a series of tasks that are performed automatically every time the workflow runs. For example, you can create a workflow that runs every time an issue is created to add a label, leave a comment, and move the issue onto a {% data variables.projects.projects_v1_board %}. ## When do workflows run? @@ -32,7 +32,7 @@ For a full list of events that can trigger workflows, see "[AUTOTITLE](/actions/ ## What can workflows do? -Workflows can do many things, such as commenting on an issue, adding or removing labels, moving cards on project boards, and opening issues. +Workflows can do many things, such as commenting on an issue, adding or removing labels, moving cards on {% data variables.projects.projects_v1_boards %}, and opening issues. You can learn about using {% data variables.product.prodname_actions %} for project management by following these tutorials, which include example workflows that you can adapt to meet your needs. diff --git a/content/actions/using-workflows/events-that-trigger-workflows.md b/content/actions/using-workflows/events-that-trigger-workflows.md index 138ff3c103..018cd2f8a2 100644 --- a/content/actions/using-workflows/events-that-trigger-workflows.md +++ b/content/actions/using-workflows/events-that-trigger-workflows.md @@ -459,7 +459,7 @@ on: {% note %} -**Note**: {% data reusables.developer-site.multiple_activity_types %} The `edited` activity type refers to when a project board, not a column or card on the project board, is edited. For information about each activity type, see "[AUTOTITLE](/webhooks-and-events/webhooks/webhook-events-and-payloads#project)." {% data reusables.developer-site.limit_workflow_to_activity_types %} +**Note**: {% data reusables.developer-site.multiple_activity_types %} The `edited` activity type refers to when a {% data variables.projects.projects_v1_board %}, not a column or card on the {% data variables.projects.projects_v1_board %}, is edited. For information about each activity type, see "[AUTOTITLE](/webhooks-and-events/webhooks/webhook-events-and-payloads#project)." {% data reusables.developer-site.limit_workflow_to_activity_types %} {% endnote %} @@ -479,7 +479,7 @@ on: {% endnote %} {% endif %} -Runs your workflow when a project board is created or modified. For activity related to cards or columns in a project board, use the [`project_card`](#project_card) or [`project_column`](#project_column) events instead. For more information about project boards, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards)." For information about the project board APIs, see "[AUTOTITLE](/graphql/reference/objects#project)" in the GraphQL API documentation or "[AUTOTITLE](/rest/projects)" in the REST API documentation. +Runs your workflow when a {% data variables.projects.projects_v1_board %} is created or modified. For activity related to cards or columns in a {% data variables.projects.projects_v1_board %}, use the [`project_card`](#project_card) or [`project_column`](#project_column) events instead. For more information about {% data variables.projects.projects_v1_boards %}, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards)." For information about the {% data variables.projects.projects_v1_board %} APIs, see "[AUTOTITLE](/graphql/reference/objects#project)" in the GraphQL API documentation or "[AUTOTITLE](/rest/projects)" in the REST API documentation. For example, you can run a workflow when a project has been `created` or `deleted`. @@ -517,7 +517,7 @@ on: {% endnote %} {% endif %} -Runs your workflow when a card on a project board is created or modified. For activity related to project boards or columns in a project board, use the [`project`](#project) or [`project_column`](#project_column) event instead. For more information about project boards, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards)." For information about the project card APIs, see "[AUTOTITLE](/graphql/reference/objects#projectcard)" in the GraphQL API documentation or "[AUTOTITLE](/rest/projects#cards)" in the REST API documentation. +Runs your workflow when a card on a {% data variables.projects.projects_v1_board %} is created or modified. For activity related to {% data variables.projects.projects_v1_boards %} or columns in a {% data variables.projects.projects_v1_board %}, use the [`project`](#project) or [`project_column`](#project_column) event instead. For more information about {% data variables.projects.projects_v1_boards %}, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards)." For information about the project card APIs, see "[AUTOTITLE](/graphql/reference/objects#projectcard)" in the GraphQL API documentation or "[AUTOTITLE](/rest/projects#cards)" in the REST API documentation. For example, you can run a workflow when a project card has been `created` or `deleted`. @@ -555,7 +555,7 @@ on: {% endnote %} {% endif %} -Runs your workflow when a column on a project board is created or modified. For activity related to project boards or cards in a project board, use the [`project`](#project) or [`project_card`](#project_card) event instead. For more information about project boards, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards)." For information about the project column APIs, see "[AUTOTITLE](/graphql/reference/objects#projectcolumn)" in the GraphQL API documentation or "[AUTOTITLE](/rest/projects#columns)" in the REST API documentation. +Runs your workflow when a column on a {% data variables.projects.projects_v1_board %} is created or modified. For activity related to {% data variables.projects.projects_v1_boards %} or cards in a {% data variables.projects.projects_v1_board %}, use the [`project`](#project) or [`project_card`](#project_card) event instead. For more information about {% data variables.projects.projects_v1_boards %}, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards)." For information about the project column APIs, see "[AUTOTITLE](/graphql/reference/objects#projectcolumn)" in the GraphQL API documentation or "[AUTOTITLE](/rest/projects#columns)" in the REST API documentation. For example, you can run a workflow when a project column has been `created` or `deleted`. diff --git a/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-projects-in-your-enterprise.md b/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-projects-in-your-enterprise.md index f1c7aadbf5..b910d4fc92 100644 --- a/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-projects-in-your-enterprise.md +++ b/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-projects-in-your-enterprise.md @@ -19,7 +19,7 @@ topics: - Enterprise - Policies - Projects -shortTitle: Project board policies +shortTitle: Projects policies --- ## About policies for projects in your enterprise @@ -31,7 +31,7 @@ Some policies apply to both {% data variables.product.prodname_projects_v2 %}, t ## Enforcing a policy for organization-wide projects -Across all organizations owned by your enterprise, you can enable or disable organization-wide project boards, or allow owners to administer the setting on the organization level. +Across all organizations owned by your enterprise, you can enable or disable organization-wide {% data variables.projects.projects_v1_boards %}, or allow owners to administer the setting on the organization level. {% data reusables.enterprise-accounts.access-enterprise %} {% data reusables.enterprise-accounts.policies-tab %} diff --git a/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md b/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md index 9e6226cc18..f2efe9247f 100644 --- a/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md +++ b/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md @@ -44,7 +44,7 @@ The events listed in your security log are triggered by your actions. Actions ar | `payment_method` | Contains all activities related to paying for your {% data variables.product.prodname_dotcom %} subscription.{% endif %}{% ifversion pat-v2%} | `personal_access_token` | Contains activities related to {% data variables.product.pat_v2 %}s. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)."{% endif %} | `profile_picture`| Contains all activities related to your profile picture. -| `project` | Contains all activities related to project boards. +| `project` | Contains all activities related to {% data variables.projects.projects_v1_boards %}. | `public_key` | Contains all activities related to [your public SSH keys](/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account). | `repo`| Contains all activities related to the repositories you own.{% ifversion fpt or ghec %} | `sponsors` | Contains all events related to {% data variables.product.prodname_sponsors %} and sponsor buttons (see "[AUTOTITLE](/sponsors/getting-started-with-github-sponsors/about-github-sponsors)" and "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository)"){% endif %}{% ifversion ghes or ghae %} diff --git a/content/discussions/quickstart.md b/content/discussions/quickstart.md index 28299ba6ad..8f3e647fdd 100644 --- a/content/discussions/quickstart.md +++ b/content/discussions/quickstart.md @@ -10,7 +10,7 @@ shortTitle: Quickstart ## Introduction -{% data variables.product.prodname_discussions %} is a collaborative communication forum for the community around an open source or internal project. Discussions are for conversations that need to be transparent and accessible but do not need to be tracked on a project board and are not related to code, unlike {% data variables.product.prodname_github_issues %}. Discussions enable fluid, open conversation in a public forum. +{% data variables.product.prodname_discussions %} is a collaborative communication forum for the community around an open source or internal project. Discussions are for conversations that need to be transparent and accessible but do not need to be tracked on a project and are not related to code, unlike {% data variables.product.prodname_github_issues %}. Discussions enable fluid, open conversation in a public forum. Discussions give a space for more collaborative conversations by connecting and giving a more centralized area to connect and find information. diff --git a/content/get-started/accessibility/github-command-palette.md b/content/get-started/accessibility/github-command-palette.md index b6ebdb87f8..b1ad5b1a25 100644 --- a/content/get-started/accessibility/github-command-palette.md +++ b/content/get-started/accessibility/github-command-palette.md @@ -144,7 +144,7 @@ These commands are available from all scopes. |`Import repository`|Create a new repository by importing a project from another version control system. For more information, see "[AUTOTITLE](/migrations/importing-source-code/using-github-importer/importing-a-repository-with-github-importer)." | |`New gist`|Open a new gist. For more information, see "[AUTOTITLE](/get-started/writing-on-github/editing-and-sharing-content-with-gists/creating-gists)." | |`New organization`|Create a new organization. For more information, see "[AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/creating-a-new-organization-from-scratch)." | -|`New project`|Create a new project board. For more information, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/creating-projects/creating-a-project)." | +|`New project`|Create a new project. For more information, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/creating-projects/creating-a-project)." | |`New repository`|Create a new repository from scratch. For more information, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/creating-a-new-repository)." | |`Switch theme to `|Change directly to a different theme for the UI. For more information, see "[AUTOTITLE](/get-started/accessibility/managing-your-theme-settings)." | diff --git a/content/get-started/onboarding/getting-started-with-github-enterprise-cloud.md b/content/get-started/onboarding/getting-started-with-github-enterprise-cloud.md index b2e44bc193..4b06b07ff1 100644 --- a/content/get-started/onboarding/getting-started-with-github-enterprise-cloud.md +++ b/content/get-started/onboarding/getting-started-with-github-enterprise-cloud.md @@ -114,7 +114,7 @@ To manage and moderate your enterprise, you can set policies for organizations w ### 1. Managing policies for organizations in your enterprise account -You can choose to enforce a number of policies for all organizations owned by your enterprise, or choose to allow these policies to be set in each organization. Types of policies you can enforce include repository management, project board, and team policies. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/admin/policies)." +You can choose to enforce a number of policies for all organizations owned by your enterprise, or choose to allow these policies to be set in each organization. Types of policies you can enforce include repository management, projects, and team policies. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/admin/policies)." ### 2. Viewing audit logs, configuring webhooks, and restricting email notifications for your enterprise diff --git a/content/get-started/onboarding/getting-started-with-github-team.md b/content/get-started/onboarding/getting-started-with-github-team.md index 8ab3490e1f..0a0c0a59d0 100644 --- a/content/get-started/onboarding/getting-started-with-github-team.md +++ b/content/get-started/onboarding/getting-started-with-github-team.md @@ -31,7 +31,7 @@ Only organization members with the _owner_ or _billing manager_ role can access ## Part 2: Adding members and setting up teams -After creating your organization, you can invite members and set permissions and roles. You can also create different levels of teams and set customized levels of permissions for your organization's repositories, project boards, and apps. +After creating your organization, you can invite members and set permissions and roles. You can also create different levels of teams and set customized levels of permissions for your organization's repositories, projects, and apps. ### 1. Managing members of your organization @@ -49,7 +49,7 @@ After creating your organization, you can invite members and set permissions and {% data reusables.getting-started.managing-team-settings %} -### 5. Giving people and teams access to repositories, project boards and apps +### 5. Giving people and teams access to repositories, projects, and apps {% data reusables.getting-started.giving-access-to-repositories-projects-apps %} diff --git a/content/get-started/onboarding/getting-started-with-your-github-account.md b/content/get-started/onboarding/getting-started-with-your-github-account.md index 37f5212fe5..b804a539a9 100644 --- a/content/get-started/onboarding/getting-started-with-your-github-account.md +++ b/content/get-started/onboarding/getting-started-with-your-github-account.md @@ -106,7 +106,7 @@ With {% data variables.product.product_name %}, you can create, edit, move and d ## Part 3: Collaborating on {% data variables.product.product_name %} -Any number of people can work together in repositories across {% data variables.product.product_name %}. You can configure settings, create project boards, and manage your notifications to encourage effective collaboration. +Any number of people can work together in repositories across {% data variables.product.product_name %}. You can configure settings, create projects, and manage your notifications to encourage effective collaboration. ### 1. Working with repositories @@ -130,7 +130,7 @@ If you have existing projects you'd like to move over to {% data variables.produ ### 3. Managing collaborators and permissions -You can collaborate on your project with others using your repository's issues, pull requests, and project boards. You can invite other people to your repository as collaborators from the **Collaborators** tab in the repository settings. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository)." +You can collaborate on your project with others using your repository's issues, pull requests, and {% data variables.projects.projects_v1_boards %}. You can invite other people to your repository as collaborators from the **Collaborators** tab in the repository settings. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository)." You are the owner of any repository you create in your personal account and have full control of the repository. Collaborators have write access to your repository, limiting what they have permission to do. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-personal-account-repository)." @@ -149,9 +149,9 @@ By adding files like contributing guidelines, a code of conduct, and a license t By adding files like contributing guidelines, a code of conduct, and support resources to your repository you can create an environment where it's easier for collaborators to make meaningful, useful contributions. For more information, see "[AUTOTITLE](/communities/setting-up-your-project-for-healthy-contributions)." {% endif %} -### 6. Using GitHub Issues and project boards +### 6. Using {% data variables.product.prodname_github_issues %} and {% data variables.product.prodname_projects_v2 %} -You can use GitHub Issues to organize your work with issues and pull requests and manage your workflow with project boards. For more information, see "[AUTOTITLE](/issues/tracking-your-work-with-issues/about-issues)" and "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards)." +You can use {% data variables.product.prodname_github_issues %} to organize your work with issues and pull requests and manage your workflow with {% data variables.product.prodname_projects_v2 %}. For more information, see "[AUTOTITLE](/issues/tracking-your-work-with-issues/about-issues)" and "[AUTOTITLE](/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects)." ### 7. Managing notifications diff --git a/content/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards.md b/content/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards.md index ea7a52d5fb..f74a5f1cca 100644 --- a/content/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards.md +++ b/content/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards.md @@ -21,7 +21,7 @@ allowTitleToDifferFromFilename: true You can create notes within columns to serve as task reminders, references to issues and pull requests from any repository on {% data variables.location.product_location %}, or to add information related to the {% data variables.projects.projects_v1_board %}. You can create a reference card for another {% data variables.projects.projects_v1_board %} by adding a link to a note. If the note isn't sufficient for your needs, you can convert it to an issue. For more information on converting notes to issues, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/tracking-work-with-project-boards/adding-notes-to-a-project-board)." -Types of project boards: +Types of {% data variables.projects.projects_v1_boards %}: - **User-owned {% data variables.projects.projects_v1_board %}** can contain issues and pull requests from any personal repository. - **Organization-wide {% data variables.projects.projects_v1_board %}** can contain issues and pull requests from any repository that belongs to an organization. {% data reusables.project-management.link-repos-to-project-board %} For more information, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/linking-a-repository-to-a-project-board)." diff --git a/content/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility.md b/content/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility.md index 16593291ad..b555058bb8 100644 --- a/content/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility.md +++ b/content/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility.md @@ -25,7 +25,7 @@ allowTitleToDifferFromFilename: true {% endnote %} -1. Navigate to the project board you want to make {% ifversion ghae %}internal{% else %}public{% endif %} or private. +1. Navigate to the {% data variables.projects.projects_v1_board %} you want to make {% ifversion ghae %}internal{% else %}public{% endif %} or private. {% data reusables.project-management.click-menu %} {% data reusables.project-management.access-collaboration-settings %} {% data reusables.project-management.choose-visibility %} diff --git a/content/issues/organizing-your-work-with-project-boards/managing-project-boards/copying-a-project-board.md b/content/issues/organizing-your-work-with-project-boards/managing-project-boards/copying-a-project-board.md index 7a460d923b..73312a9cfb 100644 --- a/content/issues/organizing-your-work-with-project-boards/managing-project-boards/copying-a-project-board.md +++ b/content/issues/organizing-your-work-with-project-boards/managing-project-boards/copying-a-project-board.md @@ -26,9 +26,9 @@ A {% data variables.projects.projects_v1_board %}'s automation is also enabled b {% data reusables.project-management.click-menu %} 1. Click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}, then click **Copy**. ![Screenshot showing a project menu. The copy option is highlighted with an orange outline.](/assets/images/help/projects/project-board-copy-setting.png) -1. Under "Owner", use the drop-down menu and click the repository or organization where you want to copy the project board. -1. Optionally, under "Project board name", type the name of the copied {% data variables.projects.projects_v1_board %}. -1. Optionally, under "Description", type a description of the copied project board that other people will see. +1. Under "Owner", use the drop-down menu and click the repository or organization where you want to copy the {% data variables.projects.projects_v1_board %}. +1. Optionally, under "{% data variables.projects.projects_v1_board_caps %} name", type the name of the copied {% data variables.projects.projects_v1_board %}. +1. Optionally, under "Description", type a description of the copied {% data variables.projects.projects_v1_board %} that other people will see. 1. Optionally, under "Automation settings", select whether you want to copy the configured automatic workflows. This option is enabled by default. For more information, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-automation-for-project-boards)." {% data reusables.project-management.choose-visibility %} 1. Click **Copy project**. diff --git a/content/issues/organizing-your-work-with-project-boards/managing-project-boards/deleting-a-project-board.md b/content/issues/organizing-your-work-with-project-boards/managing-project-boards/deleting-a-project-board.md index 4dd563353b..aa3f90494c 100644 --- a/content/issues/organizing-your-work-with-project-boards/managing-project-boards/deleting-a-project-board.md +++ b/content/issues/organizing-your-work-with-project-boards/managing-project-boards/deleting-a-project-board.md @@ -24,7 +24,7 @@ allowTitleToDifferFromFilename: true {% data reusables.project-management.click-menu %} {% data reusables.project-management.click-edit-sidebar-menu-project-board %} 1. Click **Delete project**. -1. To confirm that you want to delete the project board, click **OK**. +1. To confirm that you want to delete the {% data variables.projects.projects_v1_board %}, click **OK**. ## Further reading diff --git a/content/issues/organizing-your-work-with-project-boards/tracking-work-with-project-boards/adding-issues-and-pull-requests-to-a-project-board.md b/content/issues/organizing-your-work-with-project-boards/tracking-work-with-project-boards/adding-issues-and-pull-requests-to-a-project-board.md index 7bf3603a7a..0ef2165f11 100644 --- a/content/issues/organizing-your-work-with-project-boards/tracking-work-with-project-boards/adding-issues-and-pull-requests-to-a-project-board.md +++ b/content/issues/organizing-your-work-with-project-boards/tracking-work-with-project-boards/adding-issues-and-pull-requests-to-a-project-board.md @@ -24,7 +24,7 @@ You can put a maximum of 2,500 cards into each project column. If a column has r {% note %} -**Note:** You can also add notes to your project board to serve as task reminders, references to issues and pull requests from any repository on {% data variables.product.product_name %}, or to add related information to your {% data variables.projects.projects_v1_board %}. For more information, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/tracking-work-with-project-boards/adding-notes-to-a-project-board)." +**Note:** You can also add notes to your {% data variables.projects.projects_v1_board %} to serve as task reminders, references to issues and pull requests from any repository on {% data variables.product.product_name %}, or to add related information to your {% data variables.projects.projects_v1_board %}. For more information, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/tracking-work-with-project-boards/adding-notes-to-a-project-board)." {% endnote %} diff --git a/content/issues/planning-and-tracking-with-projects/creating-projects/migrating-from-projects-classic.md b/content/issues/planning-and-tracking-with-projects/creating-projects/migrating-from-projects-classic.md index 9b07ac8a3a..8b6d309e8f 100644 --- a/content/issues/planning-and-tracking-with-projects/creating-projects/migrating-from-projects-classic.md +++ b/content/issues/planning-and-tracking-with-projects/creating-projects/migrating-from-projects-classic.md @@ -26,9 +26,9 @@ allowTitleToDifferFromFilename: true ## About project migration -You can migrate your project boards to the new {% data variables.product.prodname_projects_v2 %} experience and try out tables, multiple views, new automation options, and powerful field types. For more information, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects)." +You can migrate your {% data variables.projects.projects_v1_boards %} to the new {% data variables.product.prodname_projects_v2 %} experience and try out tables, multiple views, new automation options, and powerful field types. For more information, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects)." -## Migrating an organization project board +## Migrating an organization {% data variables.projects.projects_v1_board %} {% data reusables.projects.enable-migration %} {% data reusables.profile.access_org %} @@ -37,7 +37,7 @@ You can migrate your project boards to the new {% data variables.product.prodnam 1. In the left sidebar, click **Projects (classic)**. {% data reusables.projects.migrate-project-steps %} -## Migrating a user project board +## Migrating a user {% data variables.projects.projects_v1_board %} {% data reusables.projects.enable-migration %} 1. In the upper-right corner of {% data variables.product.prodname_dotcom_the_website %}, select your profile photo, then click **Your projects**. @@ -49,11 +49,11 @@ You can migrate your project boards to the new {% data variables.product.prodnam 1. Above the list of projects, click **Projects (classic)**. {% data reusables.projects.migrate-project-steps %} -## Migrating a repository project board +## Migrating a repository {% data variables.projects.projects_v1_board %} {% note %} -**Note:** {% data variables.projects.projects_v2_caps %} does not support repository level projects. When you migrate a repository project board, it will migrate to either the organization or personal account that owns the repository project, and the migrated project will be pinned to the original repository. +**Note:** {% data variables.projects.projects_v2_caps %} does not support repository level projects. When you migrate a repository {% data variables.projects.projects_v1_board %}, it will migrate to either the organization or personal account that owns the repository project, and the migrated project will be pinned to the original repository. {% endnote %} diff --git a/content/issues/planning-and-tracking-with-projects/managing-your-project/managing-visibility-of-your-projects.md b/content/issues/planning-and-tracking-with-projects/managing-your-project/managing-visibility-of-your-projects.md index f92ec50f1c..cfba95efcd 100644 --- a/content/issues/planning-and-tracking-with-projects/managing-your-project/managing-visibility-of-your-projects.md +++ b/content/issues/planning-and-tracking-with-projects/managing-your-project/managing-visibility-of-your-projects.md @@ -10,7 +10,7 @@ type: tutorial topics: - Projects allowTitleToDifferFromFilename: true -permissions: Organization owners can manage the visibility of project boards in their organization. Organization owners can also allow collaborators with admin permissions to manage project visibility. Visibility of user projects can be managed by the owner of the project and collaborators with admin permissions. +permissions: Organization owners can manage the visibility of {% data variables.projects.projects_v1_boards %} in their organization. Organization owners can also allow collaborators with admin permissions to manage project visibility. Visibility of user projects can be managed by the owner of the project and collaborators with admin permissions. --- ## About project visibility diff --git a/content/issues/tracking-your-work-with-issues/creating-an-issue.md b/content/issues/tracking-your-work-with-issues/creating-an-issue.md index 7a9e6499d4..709eae733b 100644 --- a/content/issues/tracking-your-work-with-issues/creating-an-issue.md +++ b/content/issues/tracking-your-work-with-issues/creating-an-issue.md @@ -165,7 +165,7 @@ Query parameter | Example `labels` | `https://github.com/octo-org/octo-repo/issues/new?labels=help+wanted,bug` creates an issue with the labels "help wanted" and "bug". `milestone` | `https://github.com/octo-org/octo-repo/issues/new?milestone=testing+milestones` creates an issue with the milestone "testing milestones." `assignees` | `https://github.com/octo-org/octo-repo/issues/new?assignees=octocat` creates an issue and assigns it to @octocat. -`projects` | `https://github.com/octo-org/octo-repo/issues/new?title=Bug+fix&projects=octo-org/1` creates an issue with the title "Bug fix" and adds it to the organization's project board 1. {% ifversion projects-v2 and projects-v1 %}{% ifversion projects-in-issue-forms %}{% else %}Only {% data variables.projects.projects_v1_boards %} can currently be specified in URL queries.{% endif %}{% endif %} +`projects` | `https://github.com/octo-org/octo-repo/issues/new?title=Bug+fix&projects=octo-org/1` creates an issue with the title "Bug fix" and adds it to the organization's project 1. {% ifversion projects-v2 and projects-v1 %}{% ifversion projects-in-issue-forms %}{% else %}Only {% data variables.projects.projects_v1_boards %} can currently be specified in URL queries.{% endif %}{% endif %} `template` | `https://github.com/octo-org/octo-repo/issues/new?template=issue_template.md` creates an issue with a template in the issue body. The `template` query parameter works with templates stored in an `ISSUE_TEMPLATE` subdirectory within the root, `docs/` or `.github/` directory in a repository. For more information, see "[AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests)." {% ifversion fpt or ghec %} diff --git a/content/issues/tracking-your-work-with-issues/planning-and-tracking-work-for-your-team-or-project.md b/content/issues/tracking-your-work-with-issues/planning-and-tracking-work-for-your-team-or-project.md index 8519206579..52f7e85693 100644 --- a/content/issues/tracking-your-work-with-issues/planning-and-tracking-work-for-your-team-or-project.md +++ b/content/issues/tracking-your-work-with-issues/planning-and-tracking-work-for-your-team-or-project.md @@ -13,9 +13,9 @@ topics: --- ## Introduction -You can use {% data variables.product.prodname_dotcom %} repositories, issues, project boards, and other tools to plan and track your work, whether working on an individual project or cross-functional team. +You can use {% data variables.product.prodname_dotcom %} repositories, issues, projects, and other tools to plan and track your work, whether working on an individual project or cross-functional team. -In this guide, you will learn how to create and set up a repository for collaborating with a group of people, create issue templates{% ifversion issue-forms %} and forms{% endif %}, open issues and use task lists to break down work, and establish a project board for organizing and tracking issues. +In this guide, you will learn how to create and set up a repository for collaborating with a group of people, create issue templates{% ifversion issue-forms %} and forms{% endif %}, open issues and use task lists to break down work, and establish a {% data variables.projects.projects_v1_board %} for organizing and tracking issues. ## Creating a repository @@ -112,7 +112,7 @@ Below is an example of a `front-end` label that we created and added to the issu ![Screenshot of an issue called "Front-end work for Project Octocat." In the right sidebar, in the "Labels" section, the "front-end" label is applied.](/assets/images/help/issues/quickstart-add-label-to-issue.png) -## Adding issues to a project board +## Adding issues to a {% data variables.projects.projects_v1_board %} {% ifversion projects-v2 %} @@ -131,13 +131,13 @@ We can also view the same project as a board. {% endif %} {% ifversion projects-v1 %} -You can {% ifversion projects-v2 %} also use the existing{% else %} use{% endif %} {% data variables.product.prodname_projects_v1 %} on {% data variables.product.prodname_dotcom %} to plan and track your or your team's work. Project boards are made up of issues, pull requests, and notes that are categorized as cards in columns of your choosing. You can create project boards for feature work, high-level roadmaps, or even release checklists. For more information, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards)." +You can {% ifversion projects-v2 %} also use the existing{% else %} use{% endif %} {% data variables.product.prodname_projects_v1 %} on {% data variables.product.prodname_dotcom %} to plan and track your or your team's work. {% data variables.projects.projects_v1_boards_caps %} are made up of issues, pull requests, and notes that are categorized as cards in columns of your choosing. You can create {% data variables.projects.projects_v1_boards %} for feature work, high-level roadmaps, or even release checklists. For more information, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards)." -### Project board example +### {% data variables.projects.projects_v1_board_caps %} example -Below is a project board for our example Project Octocat with the issue we created, and the smaller issues we broke it down into, added to it. +Below is a {% data variables.projects.projects_v1_board %} for our example Project Octocat with the issue we created, and the smaller issues we broke it down into, added to it. -![Screenshot of a project board called "Project Octocat Board," with issues organized into columns for "To do", "In progress," and "Done."](/assets/images/help/issues/quickstart-project-board.png) +![Screenshot of a {% data variables.projects.projects_v1_board %} called "Project Octocat Board," with issues organized into columns for "To do", "In progress," and "Done."](/assets/images/help/issues/quickstart-project-board.png) {% endif %} @@ -152,4 +152,4 @@ You have now learned about the tools {% data variables.product.prodname_dotcom % - "[AUTOTITLE](/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists)" for learning more about task lists{% endif %} {% ifversion projects-v2 %} - "[AUTOTITLE](/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects)" for learning more about projects - "[AUTOTITLE](/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/changing-the-layout-of-a-view)" for learning how to customize views for projects{% endif %} -{% ifversion projects-v1 %}- "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards)" for learning how to manage project boards{% endif %} +{% ifversion projects-v1 %}- "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards)" for learning how to manage {% data variables.projects.projects_v1_boards %}{% endif %} diff --git a/content/issues/tracking-your-work-with-issues/transferring-an-issue-to-another-repository.md b/content/issues/tracking-your-work-with-issues/transferring-an-issue-to-another-repository.md index fdada85eb6..f315d5e852 100644 --- a/content/issues/tracking-your-work-with-issues/transferring-an-issue-to-another-repository.md +++ b/content/issues/tracking-your-work-with-issues/transferring-an-issue-to-another-repository.md @@ -23,7 +23,7 @@ To transfer an open issue to another repository, you must have write access to t {% endnote %} -When you transfer an issue, comments and assignees are retained. Labels and milestones are also retained if they're present in the target repository, with labels matching by name and milestones matching by both name and due date. This issue will stay on any user-owned or organization-wide project boards and be removed from any repository project boards. For more information, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards)." +When you transfer an issue, comments and assignees are retained. Labels and milestones are also retained if they're present in the target repository, with labels matching by name and milestones matching by both name and due date. This issue will stay on any user-owned or organization-wide {% data variables.projects.projects_v1_boards %} and be removed from any repository {% data variables.projects.projects_v1_boards %}. For more information, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards)." People or teams who are mentioned in the issue will receive a notification letting them know that the issue has been transferred to a new repository. The original URL redirects to the new issue's URL. People who don't have read permissions in the new repository will see a banner letting them know that the issue has been transferred to a new repository that they can't access. diff --git a/content/migrations/using-ghe-migrator/about-ghe-migrator.md b/content/migrations/using-ghe-migrator/about-ghe-migrator.md index 25a2f17e00..0cb3e67ea2 100644 --- a/content/migrations/using-ghe-migrator/about-ghe-migrator.md +++ b/content/migrations/using-ghe-migrator/about-ghe-migrator.md @@ -46,7 +46,7 @@ The items in the table below can be migrated with a repository. Any items not sh | Wikis | All wiki data is migrated. | Teams | **@mentions** of teams are rewritten to match the target. | Milestones | Timestamps are preserved. -| {% data variables.product.prodname_projects_v1_caps %} boards | Project boards associated with the repository and with the organization that owns the repository are migrated. {% data variables.product.prodname_projects_v2 %}, the all-new projects experience, is not supported. +| {% data variables.product.prodname_projects_v1_caps %} boards | {% data variables.projects.projects_v1_boards_caps %} associated with the repository and with the organization that owns the repository are migrated. {% data variables.product.prodname_projects_v2 %}, the all-new projects experience, is not supported. | Issues | Issue references and timestamps are preserved. | Issue comments | Cross-references to comments are rewritten for the target instance. | Pull requests | Cross-references to pull requests are rewritten to match the target. Timestamps are preserved. diff --git a/content/migrations/using-ghe-migrator/migrating-data-to-github-enterprise-server.md b/content/migrations/using-ghe-migrator/migrating-data-to-github-enterprise-server.md index 700ae03c3f..2f24a0f9e4 100644 --- a/content/migrations/using-ghe-migrator/migrating-data-to-github-enterprise-server.md +++ b/content/migrations/using-ghe-migrator/migrating-data-to-github-enterprise-server.md @@ -195,7 +195,7 @@ The record types match those found in the [migrated data](/migrations/using-ghe- | Repositories | `repository` | Teams | `team` | Milestones | `milestone` -| Project boards | `project` +| {% data variables.projects.projects_v1_boards_caps %} | `project` | Issues | `issue` | Issue comments | `issue_comment` | Pull requests | `pull_request` diff --git a/content/organizations/collaborating-with-groups-in-organizations/about-organizations.md b/content/organizations/collaborating-with-groups-in-organizations/about-organizations.md index 2847a712d8..fb737563ff 100644 --- a/content/organizations/collaborating-with-groups-in-organizations/about-organizations.md +++ b/content/organizations/collaborating-with-groups-in-organizations/about-organizations.md @@ -20,7 +20,7 @@ topics: You can invite an unlimited number of people to join your organization, then give these organization members a variety of roles that grant different levels of access to the organization and its data. For more information, see "[AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization)." -In addition to managing access to the organization itself, you can separately manage access to your organization's repositories, project boards, and apps. For more information, see "[AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization)", "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/project-board-permissions-for-an-organization)", and "[AUTOTITLE](/organizations/managing-programmatic-access-to-your-organization)." +In addition to managing access to the organization itself, you can separately manage access to your organization's repositories, projects, and apps. For more information, see "[AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization)", "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/project-board-permissions-for-an-organization)", and "[AUTOTITLE](/organizations/managing-programmatic-access-to-your-organization)." To simplify access management and enhance collaboration, you can create nested teams that reflect your group's structure, with cascading access permissions and mentions. For more information, see "[AUTOTITLE](/organizations/organizing-members-into-teams/about-teams)." diff --git a/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization.md b/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization.md index 6dc7240073..cf5e9b0418 100644 --- a/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization.md +++ b/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization.md @@ -76,7 +76,7 @@ To search for specific events, use the `action` qualifier in your query. Actions | `payment_method` | Contains all activities related to how your organization pays for GitHub.{% endif %}{% ifversion pat-v2%} | `personal_access_token` | Contains activities related to {% data variables.product.pat_v2 %}s in your organization. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)."{% endif %} | `profile_picture`| Contains all activities related to your organization's profile picture. -| `project` | Contains all activities related to project boards. +| `project` | Contains all activities related to {% data variables.projects.projects_v1_boards %}. | `protected_branch` | Contains all activities related to protected branches. | `repo` | Contains activities related to the repositories owned by your organization.{% ifversion fpt or ghec %} | `repository_advisory` | Contains repository-level activities related to security advisories in the {% data variables.product.prodname_advisory_database %}. For more information, see "[AUTOTITLE](/code-security/security-advisories/working-with-repository-security-advisories/about-repository-security-advisories)." diff --git a/content/organizations/managing-access-to-your-organizations-project-boards/project-board-permissions-for-an-organization.md b/content/organizations/managing-access-to-your-organizations-project-boards/project-board-permissions-for-an-organization.md index 7e2d1e355e..a0c2b6483e 100644 --- a/content/organizations/managing-access-to-your-organizations-project-boards/project-board-permissions-for-an-organization.md +++ b/content/organizations/managing-access-to-your-organizations-project-boards/project-board-permissions-for-an-organization.md @@ -27,9 +27,9 @@ There are three levels of permissions to a {% data variables.projects.projects_v Organization owners and people with admin permissions can give a person access to an organization {% data variables.projects.projects_v1_board %} individually, as an outside collaborator or organization member, or through their membership in a team or organization. An outside collaborator is someone who is not an organization member but given permissions to collaborate in your organization. Organization owners and people with admin permissions to a {% data variables.projects.projects_v1_board %} can also: -- Set default project board permissions for all organization members. -- Manage access to the project board for organization members, teams, and outside collaborators. For more information, see "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/managing-team-access-to-an-organization-project-board)", "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/managing-an-individuals-access-to-an-organization-project-board)", or "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/managing-access-to-a-project-board-for-organization-members)." -- Manage project board visibility. For more information, see "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/managing-access-to-a-project-board-for-organization-members)." +- Set default {% data variables.projects.projects_v1_board %} permissions for all organization members. +- Manage access to the {% data variables.projects.projects_v1_board %} for organization members, teams, and outside collaborators. For more information, see "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/managing-team-access-to-an-organization-project-board)", "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/managing-an-individuals-access-to-an-organization-project-board)", or "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/managing-access-to-a-project-board-for-organization-members)." +- Manage {% data variables.projects.projects_v1_board %} visibility. For more information, see "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/managing-access-to-a-project-board-for-organization-members)." ## Cascading permissions for {% data variables.projects.projects_v1_boards %} diff --git a/content/organizations/managing-organization-settings/deleting-an-organization-account.md b/content/organizations/managing-organization-settings/deleting-an-organization-account.md index 95f5f25c86..e13f3082fd 100644 --- a/content/organizations/managing-organization-settings/deleting-an-organization-account.md +++ b/content/organizations/managing-organization-settings/deleting-an-organization-account.md @@ -50,7 +50,7 @@ You can also archive an organization, instead of deleting it. Archiving an organ ## Backing up your organization content -{% ifversion not ghes %} After you delete an organization, {% data variables.product.company_short %} **cannot restore your content**. Therefore, before{% else %}Before{% endif %} you delete your organization, make sure you have a copy of all repositories, wikis, issues, and project boards from the account. +{% ifversion not ghes %} After you delete an organization, {% data variables.product.company_short %} **cannot restore your content**. Therefore, before{% else %}Before{% endif %} you delete your organization, make sure you have a copy of all repositories, wikis, issues, and projects from the account. {% ifversion ghes %} {% note %} diff --git a/content/organizations/managing-organization-settings/disabling-project-boards-in-your-organization.md b/content/organizations/managing-organization-settings/disabling-project-boards-in-your-organization.md index 51f94b5faa..6d1aa66585 100644 --- a/content/organizations/managing-organization-settings/disabling-project-boards-in-your-organization.md +++ b/content/organizations/managing-organization-settings/disabling-project-boards-in-your-organization.md @@ -1,6 +1,6 @@ --- -title: 'Disabling {% ifversion projects-v2 %}projects{% else %}project boards{% endif %} in your organization' -intro: 'Organization owners can turn off {% ifversion projects-v2 %}organization-wide {% data variables.projects.projects_v2 %}, organization-wide {% data variables.projects.projects_v1_boards %}, and repository-level {% data variables.projects.projects_v1_boards %}{% else %}organization-wide project boards and repository project boards{% endif %} in an organization.' +title: 'Disabling {% ifversion projects-v2 %}projects{% else %}{% data variables.projects.projects_v1_boards %}{% endif %} in your organization' +intro: 'Organization owners can turn off {% ifversion projects-v2 %}organization-wide {% data variables.projects.projects_v2 %}, organization-wide {% data variables.projects.projects_v1_boards %}, and repository-level {% data variables.projects.projects_v1_boards %}{% else %}organization-wide {% data variables.projects.projects_v1_boards %} and repository {% data variables.projects.projects_v1_boards %}{% endif %} in an organization.' redirect_from: - /github/managing-your-work-on-github/managing-project-boards/disabling-project-boards-in-your-organization - /articles/disabling-project-boards-in-your-organization @@ -21,7 +21,7 @@ After you disable organization-wide projects, it won’t be possible to create n After you disable repository-level {% data variables.projects.projects_v1_boards %} in an organization, it won't be possible to create new {% data variables.projects.projects_v1_boards %} in any repositories in the organization, and any existing {% data variables.projects.projects_v1_boards %} in repositories in the organization will become inaccessible at their previous URLs. {% data variables.projects.projects_v1_boards_caps %} at the organization level are not affected. -When {% data variables.projects.projects_v1_boards %} are disabled, you will no longer see project board information in timelines or [audit logs](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization). +When {% data variables.projects.projects_v1_boards %} are disabled, you will no longer see {% data variables.projects.projects_v1_board %} information in timelines or [audit logs](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization). {% endif %} @@ -47,8 +47,8 @@ You can control whether organization members can create {% data variables.projec {% data reusables.profile.org_settings %} 1. In the "Code planning, and automation" section of the sidebar, click **{% octicon "table" aria-label="The table icon" %} Projects**. 1. Decide whether to allow members to create {% data variables.projects.projects_v1_boards %} in repositories in your organization. Then, under **Projects (classic) only**: - - To enable project boards in repositories, select **Allow members to enable Projects (classic) for all repositories**. - - To disable project boards in repositories, unselect **Allow members to enable Projects (classic) for all repositories**. + - To enable {% data variables.projects.projects_v1_boards %} in repositories, select **Allow members to enable {% data variables.product.prodname_projects_v1_caps %} for all repositories**. + - To disable {% data variables.projects.projects_v1_boards %} in repositories, unselect **Allow members to enable {% data variables.product.prodname_projects_v1_caps %} for all repositories**. 1. Click **Save**. {% endif %} diff --git a/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md b/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md index 96644c2c90..709e07f3f7 100644 --- a/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md +++ b/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md @@ -1,5 +1,5 @@ --- -title: Integrating Jira with your organization project board +title: 'Integrating Jira with your organization {% data variables.projects.projects_v1_board %}' intro: 'You can integrate Jira Cloud with your organization account to scan commits and pull requests, creating relevant metadata and hyperlinks in any mentioned Jira issues.' redirect_from: - /articles/integrating-jira-with-your-organization-project-board @@ -8,6 +8,7 @@ versions: ghes: '*' ghae: '*' shortTitle: Integrate Jira +allowTitleToDifferFromFilename: true --- {% ifversion ghes or ghae %} diff --git a/content/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization.md b/content/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization.md index 0f7e16fa45..144586237d 100644 --- a/content/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization.md +++ b/content/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization.md @@ -45,7 +45,7 @@ Organization owners have complete administrative access to your organization. Th ### Organization members -The default, non-administrative role for people in an organization is the organization member. By default, organization members have a number of permissions, including the ability to create repositories and project boards. +The default, non-administrative role for people in an organization is the organization member. By default, organization members have a number of permissions, including the ability to create repositories and projects. {% ifversion fpt or ghec %} @@ -112,7 +112,7 @@ Some of the features listed below are limited to organizations using {% data var | Delete the organization account, including all repositories | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | | Create teams (see "[AUTOTITLE](/organizations/managing-organization-settings/setting-team-creation-permissions-in-your-organization)") | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | | [Move teams in an organization's hierarchy](/organizations/organizing-members-into-teams/moving-a-team-in-your-organizations-hierarchy) | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | -| Create project boards (see "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/project-board-permissions-for-an-organization)") | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | +| Create projects (see "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/project-board-permissions-for-an-organization)") | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | | See all organization members and teams | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | | @mention any visible team | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | | Can be made a _team maintainer_ | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} |{% ifversion ghec %} @@ -186,7 +186,7 @@ Some of the features listed below are limited to organizations using {% data var | View the security overview for the organization (see "[AUTOTITLE](/code-security/security-overview/about-the-security-overview)") | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} |{% endif %}{% ifversion ghes %} | Manage {% data variables.product.prodname_dependabot_security_updates %} (see "[AUTOTITLE](/code-security/dependabot/dependabot-security-updates/about-dependabot-security-updates)") | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} |{% endif %} | Manage an organization's SSH certificate authorities (see "[AUTOTITLE](/organizations/managing-git-access-to-your-organizations-repositories/managing-your-organizations-ssh-certificate-authorities)") | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | -| Create project boards (see "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/project-board-permissions-for-an-organization)") | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} |{% ifversion team-discussions %} +| Create {% data variables.projects.projects_v1_boards %} (see "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/project-board-permissions-for-an-organization)") | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} |{% ifversion team-discussions %} | View and post public team discussions to **all teams** (see "[AUTOTITLE](/organizations/collaborating-with-your-team/about-team-discussions)") | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | | View and post private team discussions to **all teams** (see "[AUTOTITLE](/organizations/collaborating-with-your-team/about-team-discussions)") | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | | Edit and delete team discussions in **all teams** (for more information, see "[AUTOTITLE](/communities/moderating-comments-and-conversations/managing-disruptive-comments)) | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} |{% endif %} @@ -233,7 +233,7 @@ Some of the features listed below are limited to organizations using {% data var | Can be made a _team maintainer_ | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | | Transfer repositories | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | | Manage an organization's SSH certificate authorities (see "[AUTOTITLE](/organizations/managing-git-access-to-your-organizations-repositories/managing-your-organizations-ssh-certificate-authorities)") | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | -| Create project boards (see "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/project-board-permissions-for-an-organization)") | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} |{% ifversion team-discussions %} +| Create {% data variables.projects.projects_v1_boards %} (see "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards/project-board-permissions-for-an-organization)") | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} |{% ifversion team-discussions %} | View and post public team discussions to **all teams** (see "[AUTOTITLE](/organizations/collaborating-with-your-team/about-team-discussions)") | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | | View and post private team discussions to **all teams** (see "[AUTOTITLE](/organizations/collaborating-with-your-team/about-team-discussions)") | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | | Edit and delete team discussions in **all teams** (for more information, see "[AUTOTITLE](/communities/moderating-comments-and-conversations/managing-disruptive-comments)) | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} |{% endif %} diff --git a/content/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization.md b/content/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization.md index 11d3451601..f7e5525d4c 100644 --- a/content/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization.md +++ b/content/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization.md @@ -108,7 +108,7 @@ Some of the features listed below are limited to organizations using {% data var | [Delete and restore packages](/packages/learn-github-packages/deleting-and-restoring-a-package) | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | {% endif %} | Manage [topics](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/classifying-your-repository-with-topics) | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | | Enable wikis and restrict wiki editors | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | -| Enable project boards | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | +| Enable {% data variables.projects.projects_v1_boards %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | | Configure [pull request merges](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges) | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | | Configure [a publishing source for {% data variables.product.prodname_pages %}](/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site) | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} |{% ifversion copilot %} | View [content exclusion settings](/copilot/managing-copilot-business/configuring-content-exclusions-for-github-copilot) for {% data variables.product.prodname_copilot %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} |{% endif %} diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request.md index b80f22d39d..c95975b0d4 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request.md @@ -32,5 +32,5 @@ Query parameter | Example `labels` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&labels=help+wanted,bug` creates a pull request with the labels "help wanted" and "bug". `milestone` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&milestone=testing+milestones` creates a pull request with the milestone "testing milestones." `assignees` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&assignees=octocat` creates a pull request and assigns it to @octocat. -`projects` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&title=Bug+fix&projects=octo-org/1` creates a pull request with the title "Bug fix" and adds it to the organization's project board 1. +`projects` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&title=Bug+fix&projects=octo-org/1` creates a pull request with the title "Bug fix" and adds it to the organization's project 1. `template` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&template=issue_template.md` creates a pull request with a template in the pull request body. The `template` query parameter works with templates stored in a `PULL_REQUEST_TEMPLATE` subdirectory within the root, `docs/` or `.github/` directory in a repository. For more information, see "[AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests)." diff --git a/content/repositories/creating-and-managing-repositories/about-repositories.md b/content/repositories/creating-and-managing-repositories/about-repositories.md index 52b89db938..d39bba944d 100644 --- a/content/repositories/creating-and-managing-repositories/about-repositories.md +++ b/content/repositories/creating-and-managing-repositories/about-repositories.md @@ -56,7 +56,7 @@ You can use repositories to manage your work and collaborate with others. - You can use issues to collect user feedback, report software bugs, and organize tasks you'd like to accomplish. For more information, see "[AUTOTITLE](/issues/tracking-your-work-with-issues/about-issues)."{% ifversion fpt or ghec %} - {% data reusables.discussions.you-can-use-discussions %}{% endif %} - You can use pull requests to propose changes to a repository. For more information, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)." -- You can use project boards to organize and prioritize your issues and pull requests. For more information, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards)." +- You can use {% data variables.product.prodname_projects_v2 %} to organize and prioritize your issues and pull requests. For more information, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects)." {% ifversion fpt or ghec %} With {% data variables.product.prodname_free_team %} for personal accounts and organizations, you can work with unlimited collaborators on unlimited public repositories with a full feature set, or unlimited private repositories with a limited feature set. To get advanced tooling for private repositories, you can upgrade to {% data variables.product.prodname_pro %}, {% data variables.product.prodname_team %}, or {% data variables.product.prodname_ghe_cloud %}. {% data reusables.gated-features.more-info %} diff --git a/content/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/disabling-projects-in-a-repository.md b/content/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/disabling-projects-in-a-repository.md index 1a8d743b16..987872cf45 100644 --- a/content/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/disabling-projects-in-a-repository.md +++ b/content/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/disabling-projects-in-a-repository.md @@ -32,7 +32,7 @@ When you disable {% data variables.projects.projects_v2 %} in a repository, link {% endif %} -When you disable {% data variables.projects.projects_v1_boards %} in a repository, existing {% data variables.projects.projects_v1_boards %} are inaccessible at their previous URLs. If you decide to re-enable project boards, any project boards that were previously added will be available. +When you disable {% data variables.projects.projects_v1_boards %} in a repository, existing {% data variables.projects.projects_v1_boards %} are inaccessible at their previous URLs. If you decide to re-enable {% data variables.projects.projects_v1_boards %}, any {% data variables.projects.projects_v1_boards %} that were previously added will be available. After you disable {% data variables.projects.projects_v1_boards %}, you will no longer see {% data variables.projects.projects_v1_board %} information in timelines or audit logs. diff --git a/content/rest/using-the-rest-api/issue-event-types.md b/content/rest/using-the-rest-api/issue-event-types.md index b36926590c..3addc128fc 100644 --- a/content/rest/using-the-rest-api/issue-event-types.md +++ b/content/rest/using-the-rest-api/issue-event-types.md @@ -27,7 +27,7 @@ Issue events all have the same object structure, except events that are only ava ## added_to_project -The issue or pull request was added to a project board. {% data reusables.projects.disabled-projects %} +The issue or pull request was added to a {% data variables.projects.projects_v1_board %}. {% data reusables.projects.disabled-projects %} This event is available for the following issue types. @@ -247,7 +247,7 @@ This event is available for the following issue types. ## converted_note_to_issue -The issue was created by converting a note in a project board to an issue. {% data reusables.projects.disabled-projects %} +The issue was created by converting a note in a {% data variables.projects.projects_v1_board %} to an issue. {% data reusables.projects.disabled-projects %} This event is available for the following issue types. @@ -559,7 +559,7 @@ This event is available for the following issue types. ## moved_columns_in_project -The issue or pull request was moved between columns in a project board. {% data reusables.projects.disabled-projects %} +The issue or pull request was moved between columns in a {% data variables.projects.projects_v1_board %}. {% data reusables.projects.disabled-projects %} This event is available for the following issue types. @@ -638,7 +638,7 @@ This event is available for the following issue types. ## removed_from_project -The issue or pull request was removed from a project board. {% data reusables.projects.disabled-projects %} +The issue or pull request was removed from a {% data variables.projects.projects_v1_board %}. {% data reusables.projects.disabled-projects %} This event is available for the following issue types. diff --git a/content/search-github/searching-on-github/searching-issues-and-pull-requests.md b/content/search-github/searching-on-github/searching-issues-and-pull-requests.md index 306179ff32..c4d5759a07 100644 --- a/content/search-github/searching-on-github/searching-issues-and-pull-requests.md +++ b/content/search-github/searching-on-github/searching-issues-and-pull-requests.md @@ -200,14 +200,14 @@ The `milestone` qualifier finds issues or pull requests that are a part of a [mi | milestone:MILESTONE | [**milestone:"overhaul"**](https://github.com/search?utf8=%E2%9C%93&q=milestone%3A%22overhaul%22&type=Issues) matches issues that are in a milestone named "overhaul." | milestone:MILESTONE | [**milestone:"bug fix"**](https://github.com/search?utf8=%E2%9C%93&q=milestone%3A%22bug+fix%22&type=Issues) matches issues that are in a milestone named "bug fix." -## Search by project board +## Search by project -You can use the `project` qualifier to find issues that are associated with a specific [project board](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards) in a repository or organization. You must search project boards by the project board number. You can find the project board number at the end of a project board's URL. +You can use the `project` qualifier to find issues that are associated with a specific project. You must search projects by the project number. You can find the project number at the end of a project's URL. | Qualifier | Example | ------------- | ------------- -| project:PROJECT_BOARD | **project:github/57** matches issues owned by GitHub that are associated with the organization's project board 57. -| project:REPOSITORY/PROJECT_BOARD | **project:github-linguist/linguist/1** matches issues that are associated with project board 1 in @github's linguist repository. +| project:PROJECT_NUMBER | **project:github/57** matches issues owned by GitHub that are associated with the organization's project 57. +| project:REPOSITORY/PROJECT_NUMBER | **project:github-linguist/linguist/1** matches issues that are associated with project 1 in @github's linguist repository. ## Search by commit status @@ -376,7 +376,7 @@ You can narrow your search to issues and pull requests that are missing certain | `no:label` | [**priority no:label**](https://github.com/search?q=priority+no%3Alabel&type=Issues) matches issues and pull requests with the word "priority" that also don't have any labels. | `no:milestone` | [**sprint no:milestone type:issue**](https://github.com/search?q=sprint+no%3Amilestone+type%3Aissue&type=Issues) matches issues not associated with a milestone containing the word "sprint." | `no:assignee` | [**important no:assignee language:java type:issue**](https://github.com/search?q=important+no%3Aassignee+language%3Ajava+type%3Aissue&type=Issues) matches issues not associated with an assignee, containing the word "important," and in Java repositories. -| `no:project` | [**build no:project**](https://github.com/search?utf8=%E2%9C%93&q=build+no%3Aproject&type=Issues) matches issues not associated with a project board, containing the word "build." +| `no:project` | [**build no:project**](https://github.com/search?utf8=%E2%9C%93&q=build+no%3Aproject&type=Issues) matches issues not associated with a {% data variables.projects.projects_v1_board %}, containing the word "build." ## Further reading diff --git a/data/features/classic-project-visibility-permissions-or-projects-v2.yml b/data/features/classic-project-visibility-permissions-or-projects-v2.yml index 32feb60808..5e043e3ff7 100644 --- a/data/features/classic-project-visibility-permissions-or-projects-v2.yml +++ b/data/features/classic-project-visibility-permissions-or-projects-v2.yml @@ -1,5 +1,5 @@ # Issue 7720 -# Organization owners can restrict public classic projects /OR/ Projects V2 +# Organization owners can restrict public projects (classic) /OR/ Projects V2 versions: fpt: '*' ghec: '*' diff --git a/data/features/classic-project-visibility-permissions.yml b/data/features/classic-project-visibility-permissions.yml index 9e921ee199..4378df58b1 100644 --- a/data/features/classic-project-visibility-permissions.yml +++ b/data/features/classic-project-visibility-permissions.yml @@ -1,5 +1,5 @@ # Issue 7720 -# Organization owners can restrict public classic projects. +# Organization owners can restrict public projects (classic) versions: fpt: '*' ghec: '*' diff --git a/data/features/projects-v1-create-repo-project.yml b/data/features/projects-v1-create-repo-project.yml index d095bd44f4..8feb2a9cc8 100644 --- a/data/features/projects-v1-create-repo-project.yml +++ b/data/features/projects-v1-create-repo-project.yml @@ -1,3 +1,3 @@ -# Ability to create new repository level classic projects +# Ability to create new repository level projects (classic) versions: ghes: '*' diff --git a/data/features/projects-v2-migration.yml b/data/features/projects-v2-migration.yml index 2fbce03ddd..985704535a 100644 --- a/data/features/projects-v2-migration.yml +++ b/data/features/projects-v2-migration.yml @@ -1,4 +1,4 @@ -# Migrating from classic projects +# Migrating from projects (classic) versions: fpt: '*' ghec: '*' diff --git a/data/reusables/audit_log/audit-log-action-categories.md b/data/reusables/audit_log/audit-log-action-categories.md index d7bbb485e0..59f9d9a827 100644 --- a/data/reusables/audit_log/audit-log-action-categories.md +++ b/data/reusables/audit_log/audit-log-action-categories.md @@ -106,7 +106,7 @@ | `organization_default_label` | Contains activities related to default labels for repositories in an organization. {%- ifversion fpt or ghec or ghes %} | `organization_domain` | Contains activities related to verified organization domains. -| `organization_projects_change` | Contains activities related to organization-wide project boards in an enterprise. +| `organization_projects_change` | Contains activities related to organization-wide {% data variables.projects.projects_v1_boards %} in an enterprise. {%- endif %} {%- ifversion fpt or ghec %} | `pages_protected_domain` | Contains activities related to verified custom domains for {% data variables.product.prodname_pages %}. @@ -124,9 +124,9 @@ {%- ifversion fpt or ghec %} | `profile_picture` | Contains activities related to an organization's profile picture. {%- endif %} -| `project` | Contains activities related to project boards. -| `project_field` | Contains activities related to field creation and deletion in a project board. -| `project_view` | Contains activities related to view creation and deletion in a project board. +| `project` | Contains activities related to projects. +| `project_field` | Contains activities related to field creation and deletion in a project. +| `project_view` | Contains activities related to view creation and deletion in a project. | `protected_branch` | Contains activities related to protected branches. | `public_key` | Contains activities related to SSH keys and deploy keys. | `pull_request` | Contains activities related to pull requests. diff --git a/data/reusables/getting-started/giving-access-to-repositories-projects-apps.md b/data/reusables/getting-started/giving-access-to-repositories-projects-apps.md index feb8c445b0..c9b44a9aa1 100644 --- a/data/reusables/getting-started/giving-access-to-repositories-projects-apps.md +++ b/data/reusables/getting-started/giving-access-to-repositories-projects-apps.md @@ -1,3 +1,3 @@ You can give organization members, teams, and outside collaborators different levels of access to repositories owned by your organization with repository roles. For more information, see "[AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization)." -You can also customize access to your organization's project boards and allow individual organization members to manage your organization's {% data variables.product.prodname_github_apps %}. For more information, see "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards)" and "[AUTOTITLE](/organizations/managing-programmatic-access-to-your-organization)." +You can also customize access to your organization's projects and allow individual organization members to manage your organization's {% data variables.product.prodname_github_apps %}. For more information, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/managing-your-project/managing-access-to-your-projects)," "[AUTOTITLE](/organizations/managing-access-to-your-organizations-project-boards)," and "[AUTOTITLE](/organizations/managing-programmatic-access-to-your-organization)." diff --git a/data/reusables/pre-release-program/starfox-preview.md b/data/reusables/pre-release-program/starfox-preview.md index aca22eee88..93fd99ab54 100644 --- a/data/reusables/pre-release-program/starfox-preview.md +++ b/data/reusables/pre-release-program/starfox-preview.md @@ -2,7 +2,7 @@ **Note:** Project card details are now shown in REST API responses for project-related issue and timeline events. This feature is now available for developers to preview. For details, see the [blog post](https://developer.github.com/changes/2018-09-05-project-card-events). -To receive the `project_card` attribute, project boards must be [enabled](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/disabling-project-boards-in-a-repository) for a repository, and you must provide a custom [media type](/rest/overview/media-types) in the `Accept` header: +To receive the `project_card` attribute, {% data variables.projects.projects_v1_boards %} must be [enabled](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/disabling-project-boards-in-a-repository) for a repository, and you must provide a custom [media type](/rest/overview/media-types) in the `Accept` header: ```text application/vnd.github.starfox-preview+json diff --git a/data/reusables/profile/access_profile.md b/data/reusables/profile/access_profile.md index 4ffe9b8b43..5cbbd19316 100644 --- a/data/reusables/profile/access_profile.md +++ b/data/reusables/profile/access_profile.md @@ -1,4 +1,4 @@ -1. {% ifversion fpt or ghec %}In the top right corner of {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom_the_website %}{% else %}{% data variables.product.product_name %}{% endif %}, click your profile photo, then click **Your profile**.{% endif %} +1. In the top right corner of {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom_the_website %}{% else %}{% data variables.product.product_name %}{% endif %}, click your profile photo, then click **Your profile**. {% ifversion global-nav-update %} diff --git a/data/reusables/project-management/add-column-new-project.md b/data/reusables/project-management/add-column-new-project.md index b6cd2ae07b..17269bea7f 100644 --- a/data/reusables/project-management/add-column-new-project.md +++ b/data/reusables/project-management/add-column-new-project.md @@ -1 +1 @@ -1. On your new project board, to add your first column, **Add a column**. +1. On your new {% data variables.projects.projects_v1_board %}, to add your first column, **Add a column**. diff --git a/data/reusables/project-management/choose-template.md b/data/reusables/project-management/choose-template.md index 6979185464..f1215bff84 100644 --- a/data/reusables/project-management/choose-template.md +++ b/data/reusables/project-management/choose-template.md @@ -1 +1 @@ -1. Optionally, to add a template to your project board, use the **Template:** drop-down menu and click a template. +1. Optionally, to add a template to your {% data variables.projects.projects_v1_board %}, use the **Template:** drop-down menu and click a template. diff --git a/data/reusables/project-management/choose-visibility.md b/data/reusables/project-management/choose-visibility.md index cad83ff9b9..40cdb3fae8 100644 --- a/data/reusables/project-management/choose-visibility.md +++ b/data/reusables/project-management/choose-visibility.md @@ -1 +1 @@ -1. Under "Visibility", choose to make your project board {% ifversion ghae %}internal{% else %}public{% endif %} or private. For more information, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility)." +1. Under "Visibility", choose to make your {% data variables.projects.projects_v1_board %} {% ifversion ghae %}internal{% else %}public{% endif %} or private. For more information, see "[AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility)." diff --git a/data/reusables/project-management/create-project-name-description.md b/data/reusables/project-management/create-project-name-description.md index e6367e8cb5..1bf40bc6dc 100644 --- a/data/reusables/project-management/create-project-name-description.md +++ b/data/reusables/project-management/create-project-name-description.md @@ -1 +1 @@ -1. Type a name and description for your project board. +1. Type a name and description for your {% data variables.projects.projects_v1_board %}. diff --git a/data/reusables/project-management/edit-project-columns.md b/data/reusables/project-management/edit-project-columns.md index c532ecf40d..fdbbde77f4 100644 --- a/data/reusables/project-management/edit-project-columns.md +++ b/data/reusables/project-management/edit-project-columns.md @@ -1,5 +1,5 @@ {% tip %} -**Tip:** To edit or remove a column from your project board, in the upper-right corner of the column, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}. +**Tip:** To edit or remove a column from your {% data variables.projects.projects_v1_board %}, in the upper-right corner of the column, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}. {% endtip %} diff --git a/data/reusables/project-management/for-more-info-project-keyboard-shortcuts.md b/data/reusables/project-management/for-more-info-project-keyboard-shortcuts.md index f838b15b97..9465991464 100644 --- a/data/reusables/project-management/for-more-info-project-keyboard-shortcuts.md +++ b/data/reusables/project-management/for-more-info-project-keyboard-shortcuts.md @@ -1 +1 @@ -For more information about keyboard shortcuts, see "Project boards" in "[AUTOTITLE](/get-started/accessibility/keyboard-shortcuts#project-boards)." +For more information about keyboard shortcuts, see "{% data variables.projects.projects_v1_boards_caps %}" in "[AUTOTITLE](/get-started/accessibility/keyboard-shortcuts#project-boards)." diff --git a/data/reusables/project-management/linked-repositories.md b/data/reusables/project-management/linked-repositories.md index 80ce41e26a..1b64c0f70b 100644 --- a/data/reusables/project-management/linked-repositories.md +++ b/data/reusables/project-management/linked-repositories.md @@ -1 +1 @@ -1. Optionally, under **Linked repositories**, search for a repository you'd like to link to your project board. +1. Optionally, under **Linked repositories**, search for a repository you'd like to link to your {% data variables.projects.projects_v1_board %}. diff --git a/data/reusables/project-management/project-board-import-with-api.md b/data/reusables/project-management/project-board-import-with-api.md index 5070f24289..f711eabde2 100644 --- a/data/reusables/project-management/project-board-import-with-api.md +++ b/data/reusables/project-management/project-board-import-with-api.md @@ -1 +1 @@ -You can use {% data variables.product.prodname_dotcom %}'s API to import a project board. For more information, see "[AUTOTITLE](/graphql/reference/mutations#importproject/)." +You can use {% data variables.product.prodname_dotcom %}'s API to import a {% data variables.projects.projects_v1_board %}. For more information, see "[AUTOTITLE](/graphql/reference/mutations#importproject/)." diff --git a/data/reusables/projects/classic-project-creation.md b/data/reusables/projects/classic-project-creation.md index 84152dfa91..29c15666ca 100644 --- a/data/reusables/projects/classic-project-creation.md +++ b/data/reusables/projects/classic-project-creation.md @@ -2,7 +2,7 @@ {% note %} -**Note:** You can only create a new classic project board for an organization, user, or repository that already has at least one classic project board. If you're unable to create a classic project board, create a beta project board instead. For more information, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/creating-projects/creating-a-project)." +**Note:** You can only create a new {% data variables.projects.projects_v1_board %} for an organization, user, or repository that already has at least one {% data variables.projects.projects_v1_board %}. If you're unable to create a {% data variables.projects.projects_v1_board %}, create a {% data variables.projects.project_v2 %} instead. For more information, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/creating-projects/creating-a-project)." {% endnote %} diff --git a/data/reusables/projects/disabled-projects.md b/data/reusables/projects/disabled-projects.md index 4e197f27dd..4bfe1f8cf8 100644 --- a/data/reusables/projects/disabled-projects.md +++ b/data/reusables/projects/disabled-projects.md @@ -1 +1 @@ -You only see this event in responses when project boards have been [enabled](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/disabling-project-boards-in-a-repository) in the repository. +You only see this event in responses when {% data variables.projects.projects_v1_boards %} have been [enabled](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/disabling-project-boards-in-a-repository) in the repository. diff --git a/data/reusables/projects/project_boards_old.md b/data/reusables/projects/project_boards_old.md index d18fb9b34b..3acc58a179 100644 --- a/data/reusables/projects/project_boards_old.md +++ b/data/reusables/projects/project_boards_old.md @@ -4,7 +4,7 @@ **Notes:** - {% data variables.product.prodname_projects_v2 %}, the all-new projects experience, is now available. For more information about {% data variables.product.prodname_projects_v2 %}, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects){% ifversion projects-v2-migration %}" and for information about migrating your {% data variables.projects.projects_v1_board %}, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/creating-projects/migrating-from-projects-classic){% endif %}." -- You can only create a new classic project board for an organization{% ifversion projects-v1-create-repo-project %}, repository, {% endif %} or user that already has at least one classic project board. {% ifversion projects-v1-create-repo-project %}{% else %} You cannot create new classic projects for repositories. {% endif %} If you're unable to create a classic project board, create a project instead. +- You can only create a new {% data variables.projects.projects_v1_board %} for an organization{% ifversion projects-v1-create-repo-project %}, repository, {% endif %} or user that already has at least one {% data variables.projects.projects_v1_board %}. {% ifversion projects-v1-create-repo-project %}{% else %} You cannot create new {% data variables.projects.projects_v1_boards %} for repositories. {% endif %} If you're unable to create a {% data variables.projects.projects_v1_board %}, create a project instead. {% endnote %} diff --git a/data/reusables/repositories/assign-an-issue-as-project-maintainer.md b/data/reusables/repositories/assign-an-issue-as-project-maintainer.md index 36d7f4e5e6..f4adfbf8fc 100644 --- a/data/reusables/repositories/assign-an-issue-as-project-maintainer.md +++ b/data/reusables/repositories/assign-an-issue-as-project-maintainer.md @@ -1 +1 @@ -1. If you're a project maintainer, you can [assign the issue to someone](/issues/tracking-your-work-with-issues/assigning-issues-and-pull-requests-to-other-github-users), [add it to a project board](/issues/organizing-your-work-with-project-boards/tracking-work-with-project-boards/adding-issues-and-pull-requests-to-a-project-board#adding-issues-and-pull-requests-to-a-project-board-from-the-sidebar), [associate it with a milestone](/issues/using-labels-and-milestones-to-track-work/associating-milestones-with-issues-and-pull-requests), or [apply a label](/issues/using-labels-and-milestones-to-track-work/managing-labels). +1. If you're a project maintainer, you can [assign the issue to someone](/issues/tracking-your-work-with-issues/assigning-issues-and-pull-requests-to-other-github-users), [add it to a {% data variables.projects.projects_v1_board %}](/issues/organizing-your-work-with-project-boards/tracking-work-with-project-boards/adding-issues-and-pull-requests-to-a-project-board#adding-issues-and-pull-requests-to-a-project-board-from-the-sidebar), [associate it with a milestone](/issues/using-labels-and-milestones-to-track-work/associating-milestones-with-issues-and-pull-requests), or [apply a label](/issues/using-labels-and-milestones-to-track-work/managing-labels). diff --git a/data/variables/projects.yml b/data/variables/projects.yml index 76613f3381..b82eeaef02 100644 --- a/data/variables/projects.yml +++ b/data/variables/projects.yml @@ -4,13 +4,13 @@ project_v2: 'project' project_v2_caps: 'Project' projects_v1_board: >- - classic project + {% ifversion ghes < 3.8 %}project board{% else %}project (classic){% endif %} projects_v1_board_caps: >- - Classic project + {% ifversion ghes < 3.8 %}Project board{% else %}Project (classic){% endif %} projects_v1_boards: >- - classic projects + {% ifversion ghes < 3.8 %}project boards{% else %}projects (classic){% endif %} projects_v1_boards_caps: >- - Classic projects + {% ifversion ghes < 3.8 %}Project boards{% else %}Projects (classic){% endif %} command-palette-shortcut: 'Command+K (Mac) or Ctrl+K (Windows/Linux)' From eb9571a80de8d2dee7ae53c4e7adef09ad84b871 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 23 Jan 2024 08:12:04 -0500 Subject: [PATCH 62/75] Remove GHAE in Liquid and front matter (7) (#48772) --- content/account-and-profile/index.md | 2 +- .../about-self-hosted-runners.md | 4 ++-- .../understanding-github-actions.md | 2 +- ...ure-devops-with-github-actions-importer.md | 8 +++---- ...rom-bamboo-with-github-actions-importer.md | 2 +- ...-pipelines-with-github-actions-importer.md | 2 +- ...m-circleci-with-github-actions-importer.md | 6 ++--- ...rom-gitlab-with-github-actions-importer.md | 2 +- ...om-jenkins-with-github-actions-importer.md | 6 ++--- ...-travis-ci-with-github-actions-importer.md | 2 +- .../about-github-connect.md | 4 ++-- ...manually-syncing-actions-from-githubcom.md | 8 +++---- .../saml-configuration-reference.md | 6 ++--- ...siderations-for-external-authentication.md | 2 +- .../using-saml-for-enterprise-iam/index.md | 2 +- .../updating-a-users-saml-nameid.md | 2 +- .../configuring-custom-footers.md | 2 +- ...-visibility-for-organization-membership.md | 2 +- ...nting-users-from-creating-organizations.md | 2 +- ...-large-file-storage-for-your-enterprise.md | 2 +- ...bling-git-ssh-access-on-your-enterprise.md | 2 +- .../migrating-to-internal-repositories.md | 2 +- .../viewing-people-in-your-enterprise.md | 2 +- .../index.md | 2 +- ...about-the-audit-log-for-your-enterprise.md | 2 +- ...ching-the-audit-log-for-your-enterprise.md | 24 +++++++++---------- .../overview/about-enterprise-accounts.md | 2 +- .../overview/about-github-for-enterprises.md | 2 +- ...s-for-github-actions-in-your-enterprise.md | 2 +- ...-management-policies-in-your-enterprise.md | 10 ++++---- .../migrating-oauth-apps-to-github-apps.md | 4 ++-- ...hub-app-that-responds-to-webhook-events.md | 10 ++++---- .../building-ci-checks-with-a-github-app.md | 2 +- .../quickstart.md | 4 ++-- .../scopes-for-oauth-apps.md | 2 +- .../sharing-your-github-app.md | 4 ++-- ...talling-a-github-app-from-a-third-party.md | 4 ++-- .../using-ssh-agent-forwarding.md | 10 ++++---- .../reviewing-your-security-log.md | 2 +- .../about-commit-signature-verification.md | 2 +- .../about-code-scanning-with-codeql.md | 2 +- ...ading-codeql-analysis-results-to-github.md | 10 ++++---- ...ing-notifications-for-dependabot-alerts.md | 2 +- ...he-detection-of-vulnerable-dependencies.md | 2 +- ...ng-a-security-policy-to-your-repository.md | 2 +- .../secret-scanning-patterns.md | 2 +- .../end-to-end-supply-chain/securing-code.md | 2 +- .../about-supply-chain-security.md | 2 +- ...loring-the-dependencies-of-a-repository.md | 4 ++-- ...etting-started-with-your-github-account.md | 4 ++-- .../using-github/communicating-on-github.md | 2 +- .../creating-gists.md | 2 +- .../guides/managing-enterprise-accounts.md | 2 +- content/issues/index.md | 5 ++-- .../overview/migration-paths-to-github.md | 4 ++-- ...-of-a-migration-between-github-products.md | 6 ++--- ...ra-with-your-organization-project-board.md | 2 +- ...rogrammatic-access-in-your-organization.md | 2 +- .../introduction-to-github-packages.md | 2 +- ...nstalling-a-package-with-github-actions.md | 2 +- content/packages/quickstart.md | 8 +++---- .../working-with-the-apache-maven-registry.md | 4 ++-- .../working-with-the-docker-registry.md | 10 ++++---- .../working-with-the-npm-registry.md | 4 ++-- .../working-with-the-nuget-registry.md | 4 ++-- .../working-with-the-rubygems-registry.md | 2 +- content/pages/index.md | 10 ++++---- ...reating-a-github-pages-site-with-jekyll.md | 2 +- .../resolving-a-merge-conflict-on-github.md | 4 ++-- ...sitory-is-deleted-or-changes-visibility.md | 2 +- ...creating-a-commit-with-multiple-authors.md | 4 ++-- .../about-protected-branches.md | 2 +- .../available-rules-for-rulesets.md | 2 +- .../deleting-a-repository.md | 2 +- .../restoring-a-deleted-repository.md | 6 ++--- .../setting-repository-visibility.md | 2 +- .../viewing-a-projects-contributors.md | 2 +- .../configuring-git-large-file-storage.md | 2 +- .../authenticating-to-the-rest-api.md | 4 ++-- ...ipting-with-the-rest-api-and-javascript.md | 16 ++++++------- .../scripting-with-the-rest-api-and-ruby.md | 2 +- .../using-pagination-in-the-rest-api.md | 4 ++-- .../about-searching-on-github.md | 2 +- .../understanding-the-search-syntax.md | 2 +- content/search-github/index.md | 3 +-- .../searching-on-github/searching-in-forks.md | 2 +- .../searching-issues-and-pull-requests.md | 2 +- .../troubleshooting-webhooks.md | 6 ++--- content/webhooks/types-of-webhooks.md | 8 +++---- ...led-deliveries-for-a-github-app-webhook.md | 14 +++++------ ...led-deliveries-for-a-repository-webhook.md | 10 ++++---- ...-deliveries-for-an-organization-webhook.md | 10 ++++---- .../using-webhooks/creating-webhooks.md | 2 +- .../using-webhooks/disabling-webhooks.md | 4 ++-- .../using-webhooks/editing-webhooks.md | 2 +- .../handling-failed-webhook-deliveries.md | 2 +- .../webhooks/webhook-events-and-payloads.md | 4 ++-- .../actions/allow-specific-actions-intro.md | 4 ++-- .../actions/disabling-github-actions.md | 2 +- .../self-hosted-runner-ports-protocols.md | 2 +- .../security-feature-availability.md | 2 +- .../deprecating_auth_with_query_parameters.md | 2 +- .../audit_log/audit-log-search-by-repo.md | 2 +- .../codeql-action-version-ghes.md | 2 +- .../codeql-cli/download-codeql-cli-zip.md | 2 +- ...abot-alerts-dependency-graph-enterprise.md | 2 +- .../dependency-review/action-enterprise.md | 2 +- .../enterprise-accounts/options-tab.md | 2 +- .../business.md | 2 +- .../manage-global-webhooks-api.md | 2 +- .../configuring-security-features.md | 2 +- .../gist/anonymous-gists-cannot-be-deleted.md | 2 +- .../notifications/outbound_email_tip.md | 2 +- ...nerable-dependency-notification-options.md | 2 +- .../docker_registry_deprecation_status.md | 2 +- .../package-settings-options-menu.md | 2 +- .../pages/build-failure-email-server.md | 2 +- .../pull_request_merges_and_contributions.md | 2 +- .../repositories/enable-security-alerts.md | 2 +- .../rest-api/github-cli-install-and-auth.md | 2 +- data/reusables/search/syntax_tips.md | 2 +- data/reusables/secret-scanning/api-beta.md | 2 +- ...nterprise-resolving-and-closing-tickets.md | 2 +- data/variables/package_registry.yml | 2 +- data/variables/rest.yml | 2 +- 125 files changed, 225 insertions(+), 227 deletions(-) diff --git a/content/account-and-profile/index.md b/content/account-and-profile/index.md index d9c88496ca..dee404770f 100644 --- a/content/account-and-profile/index.md +++ b/content/account-and-profile/index.md @@ -17,7 +17,7 @@ featuredLinks: - /account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile - /account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/blocking-command-line-pushes-that-expose-your-personal-email-address - - '{% ifversion ghes or ghae %}/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-the-default-branch-name-for-your-repositories{% endif %}' + - '{% ifversion ghes %}/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-the-default-branch-name-for-your-repositories{% endif %}' changelog: label: 'profiles, github-themes, notifications' versions: diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners.md index 024ad3fc41..b332241db2 100644 --- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners.md +++ b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners.md @@ -12,7 +12,7 @@ versions: ghec: '*' type: overview --- - + {% data reusables.actions.enterprise-github-hosted-runners %} ## About self-hosted runners @@ -232,7 +232,7 @@ You can also use self-hosted runners with a proxy server. For more information, For more information about troubleshooting common network connectivity issues, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#troubleshooting-network-connectivity)." -{% ifversion ghes or ghae %} +{% ifversion ghes %} ## Communication between self-hosted runners and {% data variables.product.prodname_dotcom_the_website %} diff --git a/content/actions/learn-github-actions/understanding-github-actions.md b/content/actions/learn-github-actions/understanding-github-actions.md index a70f9071fc..c5b6886ab7 100644 --- a/content/actions/learn-github-actions/understanding-github-actions.md +++ b/content/actions/learn-github-actions/understanding-github-actions.md @@ -82,7 +82,7 @@ For more information, see "[AUTOTITLE](/actions/creating-actions)." ### Runners -{% data reusables.actions.about-runners %} Each runner can run a single job at a time. {% ifversion ghes or ghae %} You must host your own runners for {% data variables.product.product_name %}. {% elsif fpt or ghec %}{% data variables.product.company_short %} provides Ubuntu Linux, Microsoft Windows, and macOS runners to run your workflows; each workflow run executes in a fresh, newly-provisioned virtual machine. {% ifversion actions-hosted-runners %} {% data variables.product.prodname_dotcom %} also offers {% data variables.actions.hosted_runner %}s, which are available in larger configurations. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/using-larger-runners)." {% endif %}If you need a different operating system or require a specific hardware configuration, you can host your own runners.{% endif %} For more information{% ifversion fpt or ghec %} about self-hosted runners{% endif %}, see "[AUTOTITLE](/actions/hosting-your-own-runners)." +{% data reusables.actions.about-runners %} Each runner can run a single job at a time. {% ifversion ghes %} You must host your own runners for {% data variables.product.product_name %}. {% elsif fpt or ghec %}{% data variables.product.company_short %} provides Ubuntu Linux, Microsoft Windows, and macOS runners to run your workflows; each workflow run executes in a fresh, newly-provisioned virtual machine. {% ifversion actions-hosted-runners %} {% data variables.product.prodname_dotcom %} also offers {% data variables.actions.hosted_runner %}s, which are available in larger configurations. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/using-larger-runners)." {% endif %}If you need a different operating system or require a specific hardware configuration, you can host your own runners.{% endif %} For more information{% ifversion fpt or ghec %} about self-hosted runners{% endif %}, see "[AUTOTITLE](/actions/hosting-your-own-runners)." {% data reusables.actions.workflow-basic-example-and-explanation %} diff --git a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-azure-devops-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-azure-devops-with-github-actions-importer.md index 4d5e3fe994..3201d4b7ae 100644 --- a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-azure-devops-with-github-actions-importer.md +++ b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-azure-devops-with-github-actions-importer.md @@ -88,7 +88,7 @@ The `configure` CLI command is used to set required credentials and options for - For "Which CI providers are you configuring?", use the arrow keys to select `Azure DevOps`, press Space to select it, then press Enter. - For "{% data variables.product.pat_generic_caps %} for GitHub", enter the value of the {% data variables.product.pat_v1 %} that you created earlier, and press Enter. - - For "Base url of the GitHub instance", {% ifversion ghes or ghae %}enter the URL for your {% data variables.product.product_name %} instance, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %} + - For "Base url of the GitHub instance", {% ifversion ghes %}enter the URL for your {% data variables.product.product_name %} instance, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %} - For "{% data variables.product.pat_generic_caps %} for Azure DevOps", enter the value for the Azure DevOps {% data variables.product.pat_generic %} that you created earlier, and press Enter. - For "Base url of the Azure DevOps instance", press Enter to accept the default value (`https://dev.azure.com`). - For "Azure DevOps organization name", enter the name for your Azure DevOps organization, and press Enter. @@ -313,7 +313,7 @@ In this example, {% data variables.product.prodname_actions_importer %} uses the The pipeline is selected by matching the `repository_slug` in the configuration file to the value of the `--azure-devops-organization` and `--azure-devops-project` option. The `path` is then used to pull the specified source file. ```shell -gh actions-importer dry-run azure-devops pipeline --output-dir ./output/ --config-file-path ./path/to/azure_devops/config.yml +gh actions-importer dry-run azure-devops pipeline --output-dir ./output/ --config-file-path ./path/to/azure_devops/config.yml ``` ##### Specify the repository of converted reusable workflows and composite actions @@ -495,7 +495,7 @@ variables: ```yaml parameters: - name: template - type: string + type: string default: simple_step.yml steps: @@ -511,7 +511,7 @@ parameters: default: - build_step - release_step -steps: +steps: - {% raw %}${{ each step in parameters.steps }}{% endraw %}: - template: "${{ step }}-variables.yml" ``` diff --git a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-bamboo-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-bamboo-with-github-actions-importer.md index e226f1fb2a..ed038d8127 100644 --- a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-bamboo-with-github-actions-importer.md +++ b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-bamboo-with-github-actions-importer.md @@ -85,7 +85,7 @@ The `configure` CLI command is used to set required credentials and options for - For "Which CI providers are you configuring?", use the arrow keys to select `Bamboo`, press Space to select it, then press Enter. - For "{% data variables.product.pat_generic_caps %} for GitHub", enter the value of the {% data variables.product.pat_v1 %} that you created earlier, and press Enter. - - For "Base url of the GitHub instance", {% ifversion ghes or ghae %}enter the URL for your {% data variables.product.product_name %} instance, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %} + - For "Base url of the GitHub instance", {% ifversion ghes %}enter the URL for your {% data variables.product.product_name %} instance, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %} - For "{% data variables.product.pat_generic_caps %} for Bamboo", enter the value for the Bamboo {% data variables.product.pat_generic %} that you created earlier, and press Enter. - For "Base url of the Bamboo instance", enter the URL for your Bamboo Server or Bamboo Data Center instance, and press Enter. diff --git a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-bitbucket-pipelines-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-bitbucket-pipelines-with-github-actions-importer.md index a2e719c79a..11e9db89d0 100644 --- a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-bitbucket-pipelines-with-github-actions-importer.md +++ b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-bitbucket-pipelines-with-github-actions-importer.md @@ -82,7 +82,7 @@ The `configure` CLI command is used to set required credentials and options for - For "Which CI providers are you configuring?", use the arrow keys to select `Bitbucket`, press Space to select it, then press Enter. - For "{% data variables.product.pat_generic_caps %} for GitHub", enter the value of the {% data variables.product.pat_v1 %} that you created earlier, and press Enter. - - For "Base url of the GitHub instance", {% ifversion ghes or ghae %}enter the URL for your {% data variables.product.product_name %} instance, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %} + - For "Base url of the GitHub instance", {% ifversion ghes %}enter the URL for your {% data variables.product.product_name %} instance, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %} - For "{% data variables.product.pat_generic_caps %} for Bitbucket", enter the Workspace Access Token that you created earlier, and press Enter. - For "Base url of the Bitbucket instance", enter the URL for your Bitbucket instance, and press Enter. diff --git a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-circleci-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-circleci-with-github-actions-importer.md index bb8e217d9b..0076ac163e 100644 --- a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-circleci-with-github-actions-importer.md +++ b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-circleci-with-github-actions-importer.md @@ -68,7 +68,7 @@ The `configure` CLI command is used to set required credentials and options for - For "Which CI providers are you configuring?", use the arrow keys to select `CircleCI`, press Space to select it, then press Enter. - For "{% data variables.product.pat_generic_caps %} for GitHub", enter the value of the {% data variables.product.pat_v1 %} that you created earlier, and press Enter. - - For "Base url of the GitHub instance", {% ifversion ghes or ghae %}enter the URL for your {% data variables.product.product_name %} instance, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %} + - For "Base url of the GitHub instance", {% ifversion ghes %}enter the URL for your {% data variables.product.product_name %} instance, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %} - For "{% data variables.product.pat_generic_caps %} for CircleCI", enter the value for the CircleCI personal API token that you created earlier, and press Enter. - For "Base url of the CircleCI instance", press Enter to accept the default value (`https://circleci.com`). - For "CircleCI organization name", enter the name for your CircleCI organization, and press Enter. @@ -76,7 +76,7 @@ The `configure` CLI command is used to set required credentials and options for An example of the `configure` command is shown below: ```shell - $ gh actions-importer configure + $ gh actions-importer configure ✔ Which CI providers are you configuring?: CircleCI Enter the following values (leave empty to omit): ✔ {% data variables.product.pat_generic_caps %} for GitHub: *************** @@ -258,7 +258,7 @@ In this example, {% data variables.product.prodname_actions_importer %} uses the The pipeline is selected by matching the `repository_slug` in the config file to the value of the `--circle-ci-organization` and `--circle-ci-project` options. The `path` is then used to pull the specified source file. ```bash -gh actions-importer dry-run circle-ci --circle-ci-project circle-org-name/circle-project-name --output-dir ./output/ --config-file-path ./path/to/circle-ci/config.yml +gh actions-importer dry-run circle-ci --circle-ci-project circle-org-name/circle-project-name --output-dir ./output/ --config-file-path ./path/to/circle-ci/config.yml ``` ##### Specify the repository of converted composite actions diff --git a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-gitlab-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-gitlab-with-github-actions-importer.md index fcaa85a125..efe0a2f5c3 100644 --- a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-gitlab-with-github-actions-importer.md +++ b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-gitlab-with-github-actions-importer.md @@ -70,7 +70,7 @@ The `configure` CLI command is used to set required credentials and options for - For "Which CI providers are you configuring?", use the arrow keys to select `GitLab`, press Space to select it, then press Enter. - For "{% data variables.product.pat_generic_caps %} for GitHub", enter the value of the {% data variables.product.pat_v1 %} that you created earlier, and press Enter. - - For "Base url of the GitHub instance", {% ifversion ghes or ghae %}enter the URL for your {% data variables.product.product_name %} instance, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %} + - For "Base url of the GitHub instance", {% ifversion ghes %}enter the URL for your {% data variables.product.product_name %} instance, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %} - For "Private token for GitLab", enter the value for the GitLab {% data variables.product.pat_generic %} that you created earlier, and press Enter. - For "Base url of the GitLab instance", enter the URL of your GitLab instance, and press Enter. diff --git a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-jenkins-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-jenkins-with-github-actions-importer.md index 2455f453ce..dfcad8292c 100644 --- a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-jenkins-with-github-actions-importer.md +++ b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-jenkins-with-github-actions-importer.md @@ -64,7 +64,7 @@ The `configure` CLI command is used to set required credentials and options for - For "Which CI providers are you configuring?", use the arrow keys to select `Jenkins`, press Space to select it, then press Enter. - For "{% data variables.product.pat_generic_caps %} for GitHub", enter the value of the {% data variables.product.pat_v1 %} that you created earlier, and press Enter. - - For "Base url of the GitHub instance", {% ifversion ghes or ghae %}enter the URL for your {% data variables.product.product_name %} instance, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %} + - For "Base url of the GitHub instance", {% ifversion ghes %}enter the URL for your {% data variables.product.product_name %} instance, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %} - For "{% data variables.product.pat_generic_caps %} for Jenkins", enter the value for the Jenkins personal API token that you created earlier, and press Enter. - For "Username of Jenkins user", enter your Jenkins username and press Enter. - For "Base url of the Jenkins instance", enter the URL of your Jenkins instance, and press Enter. @@ -93,7 +93,7 @@ The `configure` CLI command is used to set required credentials and options for ```shell Updating ghcr.io/actions-importer/cli:latest... - ghcr.io/actions-importer/cli:latest up-to-date + ghcr.io/actions-importer/cli:latest up-to-date ``` ## Perform an audit of Jenkins @@ -137,7 +137,7 @@ To install the `paginated-builds` plugin: To perform a forecast of potential {% data variables.product.prodname_actions %}, run the following command in your terminal. By default, {% data variables.product.prodname_actions_importer %} includes the previous seven days in the forecast report. ```shell -gh actions-importer forecast jenkins --output-dir tmp/forecast +gh actions-importer forecast jenkins --output-dir tmp/forecast ``` ### Inspecting the forecast report diff --git a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-travis-ci-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-travis-ci-with-github-actions-importer.md index 0564ae15d4..400132ea4f 100644 --- a/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-travis-ci-with-github-actions-importer.md +++ b/content/actions/migrating-to-github-actions/automated-migrations/migrating-from-travis-ci-with-github-actions-importer.md @@ -71,7 +71,7 @@ The `configure` CLI command is used to set required credentials and options for - For "Which CI providers are you configuring?", use the arrow keys to select `Travis CI`, press Space to select it, then press Enter. - For "{% data variables.product.pat_generic_caps %} for GitHub", enter the value of the {% data variables.product.pat_v1 %} that you created earlier, and press Enter. - - For "Base url of the GitHub instance", {% ifversion ghes or ghae %}enter the URL for your {% data variables.product.product_name %} instance, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %} + - For "Base url of the GitHub instance", {% ifversion ghes %}enter the URL for your {% data variables.product.product_name %} instance, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %} - For "{% data variables.product.pat_generic_caps %} for Travis CI", enter the value for the Travis CI API access token that you created earlier, and press Enter. - For "Base url of the Travis CI instance", enter the URL of your Travis CI instance, and press Enter. - For "Travis CI organization name", enter the name of your Travis CI organization, and press Enter. diff --git a/content/admin/configuration/configuring-github-connect/about-github-connect.md b/content/admin/configuration/configuring-github-connect/about-github-connect.md index 2997ae6dd1..3d3cc023c0 100644 --- a/content/admin/configuration/configuring-github-connect/about-github-connect.md +++ b/content/admin/configuration/configuring-github-connect/about-github-connect.md @@ -28,7 +28,7 @@ After you configure the connection between {% data variables.location.product_lo | Feature | Description | More information | | ----------- | ----------- | ----------- |{% ifversion ghes %} -Automatic user license sync | Manage license usage across your {% data variables.product.prodname_enterprise %} deployments by automatically syncing user licenses from {% data variables.location.product_location %} to {% data variables.product.prodname_ghe_cloud %}. | "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-automatic-user-license-sync-for-your-enterprise)"{% endif %}{% ifversion ghes or ghae %} +Automatic user license sync | Manage license usage across your {% data variables.product.prodname_enterprise %} deployments by automatically syncing user licenses from {% data variables.location.product_location %} to {% data variables.product.prodname_ghe_cloud %}. | "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-automatic-user-license-sync-for-your-enterprise)"{% endif %}{% ifversion ghes %} {% data variables.product.prodname_dependabot %} | Allow users to find and fix vulnerabilities in code dependencies. | "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise)"{% endif %} {% data variables.product.prodname_dotcom_the_website %} actions | Allow users to use actions from {% data variables.product.prodname_dotcom_the_website %} in public workflow files. | "[AUTOTITLE](/admin/github-actions/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect)"{% ifversion server-statistics %} {% data variables.product.prodname_server_statistics %} | Analyze your own aggregate data from GitHub Enterprise Server, and help us improve GitHub products. | "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-server-statistics-for-your-enterprise)"{% endif %} @@ -70,7 +70,7 @@ Additional data is transmitted if you enable individual features of {% data vari | Feature | Data | Which way does the data flow? | Where is the data used? | | ------- | ---- | --------- | ------ |{% ifversion ghes %} -Automatic user license sync | Each {% data variables.product.product_name %} user's user ID and email addresses | From {% data variables.product.product_name %} to {% data variables.product.prodname_ghe_cloud %} | {% data variables.product.prodname_ghe_cloud %} |{% endif %}{% ifversion ghes or ghae %} +Automatic user license sync | Each {% data variables.product.product_name %} user's user ID and email addresses | From {% data variables.product.product_name %} to {% data variables.product.prodname_ghe_cloud %} | {% data variables.product.prodname_ghe_cloud %} |{% endif %}{% ifversion ghes %} {% data variables.product.prodname_dependabot_alerts %} | Vulnerability alerts | From {% data variables.product.prodname_dotcom_the_website %} to {% data variables.product.product_name %} | {% data variables.product.product_name %} |{% endif %}{% ifversion dependabot-updates-github-connect %} {% data variables.product.prodname_dependabot_updates %} | Dependencies and the metadata for each dependency's repository

    If a dependency is stored in a private repository on {% data variables.product.prodname_dotcom_the_website %}, data will only be transmitted if {% data variables.product.prodname_dependabot %} is configured and authorized to access that repository. | From {% data variables.product.prodname_dotcom_the_website %} to {% data variables.product.product_name %} | {% data variables.product.product_name %} {% endif %} {% data variables.product.prodname_dotcom_the_website %} actions | Name of action, action (YAML file from {% data variables.product.prodname_marketplace %}) | From {% data variables.product.prodname_dotcom_the_website %} to {% data variables.product.product_name %}

    From {% data variables.product.product_name %} to {% data variables.product.prodname_dotcom_the_website %} | {% data variables.product.product_name %}{% ifversion server-statistics %} diff --git a/content/admin/github-actions/managing-access-to-actions-from-githubcom/manually-syncing-actions-from-githubcom.md b/content/admin/github-actions/managing-access-to-actions-from-githubcom/manually-syncing-actions-from-githubcom.md index 1f3e8db61c..5eaec49fb2 100644 --- a/content/admin/github-actions/managing-access-to-actions-from-githubcom/manually-syncing-actions-from-githubcom.md +++ b/content/admin/github-actions/managing-access-to-actions-from-githubcom/manually-syncing-actions-from-githubcom.md @@ -13,12 +13,12 @@ topics: - Enterprise shortTitle: Manually sync actions --- - + {% data reusables.actions.enterprise-github-hosted-runners %} {% data reusables.actions.enterprise-no-internet-actions %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} The recommended approach of enabling access to actions from {% data variables.product.prodname_dotcom_the_website %} is to enable automatic access to all actions. You can do this by using {% data variables.product.prodname_github_connect %} to integrate {% data variables.product.product_name %} with {% data variables.product.prodname_ghe_cloud %}. For more information, see "[AUTOTITLE](/admin/github-actions/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect)." @@ -45,9 +45,9 @@ The `actions-sync` tool can only download actions from {% data variables.product - If you want to sync the bundled actions in the `actions` organization on {% data variables.location.product_location %}, you must be an owner of the `actions` organization. {% note %} - + **Note:** By default, even site administrators are not owners of the bundled `actions` organization. - + {% endnote %} Site administrators can use the `ghe-org-admin-promote` command in the administrative shell to promote a user to be an owner of the bundled `actions` organization. For more information, see "[AUTOTITLE](/admin/configuration/configuring-your-enterprise/accessing-the-administrative-shell-ssh)" and "[AUTOTITLE](/admin/configuration/configuring-your-enterprise/command-line-utilities#ghe-org-admin-promote)." diff --git a/content/admin/identity-and-access-management/iam-configuration-reference/saml-configuration-reference.md b/content/admin/identity-and-access-management/iam-configuration-reference/saml-configuration-reference.md index 567615bbcf..67539a65c0 100644 --- a/content/admin/identity-and-access-management/iam-configuration-reference/saml-configuration-reference.md +++ b/content/admin/identity-and-access-management/iam-configuration-reference/saml-configuration-reference.md @@ -83,12 +83,12 @@ The following SAML attributes are available for {% data variables.product.produc | :- | :- | :- | | `NameID` | {% octicon "check" aria-label="Required" %} | A persistent user identifier. Any persistent name identifier format may be used. {% ifversion ghec %}If you use an enterprise with {% data variables.product.prodname_emus %}, {% endif %}{% data variables.product.product_name %} will normalize the `NameID` element to use as a username unless one of the alternative assertions is provided. For more information, see "[AUTOTITLE](/admin/identity-and-access-management/managing-iam-for-your-enterprise/username-considerations-for-external-authentication)."

    {% note %}**Note:** It's important to use a human-readable, persistent identifier. Using a transient identifier format like `urn:oasis:names:tc:SAML:2.0:nameid-format:transient` will result in re-linking of accounts on every sign-in, which can be detrimental to authorization management.{% endnote %} | | `SessionNotOnOrAfter` | {% octicon "x" aria-label="Optional" %} | The date that {% data variables.product.product_name %} invalidates the associated session. After invalidation, the person must authenticate once again to access {% ifversion ghec or ghae %}your enterprise's resources{% elsif ghes %}{% data variables.location.product_location %}{% endif %}. For more information, see "[Session duration and timeout](#session-duration-and-timeout)." | -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} | `administrator` | {% octicon "x" aria-label="Optional" %} | When the value is `true`, {% data variables.product.product_name %} will automatically promote the user to be a {% ifversion ghes %}site administrator{% elsif ghae %}enterprise owner{% endif %}. Setting this attribute to anything but `true` will result in demotion, as long as the value is not blank. Omitting this attribute or leaving the value blank will not change the role of the user. | | `username` | {% octicon "x" aria-label="Optional" %} | The username for {% data variables.location.product_location %}. | {%- endif %} | `full_name` | {% octicon "x" aria-label="Optional" %} | {% ifversion ghec %}If you configure SAML SSO for an enterprise and you use {% data variables.product.prodname_emus %}, the{% else %}The{% endif %} full name of the user to display on the user's profile page. | -| `emails` | {% octicon "x" aria-label="Optional" %} | The email addresses for the user.{% ifversion ghes or ghae %} You can specify more than one address.{% endif %}{% ifversion ghec or ghes %} If you sync license usage between {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_ghe_cloud %}, {% data variables.product.prodname_github_connect %} uses `emails` to identify unique users across products. For more information, see "[AUTOTITLE](/billing/managing-your-license-for-github-enterprise/syncing-license-usage-between-github-enterprise-server-and-github-enterprise-cloud)."{% endif %} | +| `emails` | {% octicon "x" aria-label="Optional" %} | The email addresses for the user.{% ifversion ghes %} You can specify more than one address.{% endif %}{% ifversion ghec or ghes %} If you sync license usage between {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_ghe_cloud %}, {% data variables.product.prodname_github_connect %} uses `emails` to identify unique users across products. For more information, see "[AUTOTITLE](/billing/managing-your-license-for-github-enterprise/syncing-license-usage-between-github-enterprise-server-and-github-enterprise-cloud)."{% endif %} | | `public_keys` | {% octicon "x" aria-label="Optional" %} | {% ifversion ghec %}If you configure SAML SSO for an enterprise and you use {% data variables.product.prodname_emus %}, the{% else %}The{% endif %} public SSH keys for the user. You can specify more than one key. | | `gpg_keys` | {% octicon "x" aria-label="Optional" %} | {% ifversion ghec %}If you configure SAML SSO for an enterprise and you use {% data variables.product.prodname_emus %}, the{% else %}The{% endif %} GPG keys for the user. You can specify more than one key. | @@ -106,7 +106,7 @@ To specify more than one value for an attribute, use multiple `` element on the root response document and match the ACS URL only when the root response document is signed. If your IdP signs the assertion, {% data variables.product.product_name %} will ignore the assertion. -- Your IdP must always provide the `` element as part of the `` element. The value must match your `EntityId` for {% data variables.product.product_name %}.{% ifversion ghes or ghae %} This value is the URL where you access {% data variables.location.product_location %}, such as {% ifversion ghes %}`http(s)://HOSTNAME`{% elsif ghae %}`https://SUBDOMAIN.githubenterprise.com`, `https://SUBDOMAIN.github.us`, or `https://SUBDOMAIN.ghe.com`{% endif %}.{% endif %} +- Your IdP must always provide the `` element as part of the `` element. The value must match your `EntityId` for {% data variables.product.product_name %}.{% ifversion ghes %} This value is the URL where you access {% data variables.location.product_location %}, such as {% ifversion ghes %}`http(s)://HOSTNAME`{% elsif ghae %}`https://SUBDOMAIN.githubenterprise.com`, `https://SUBDOMAIN.github.us`, or `https://SUBDOMAIN.ghe.com`{% endif %}.{% endif %} {%- ifversion ghec %} - If you configure SAML for an organization, this value is `https://github.com/orgs/ORGANIZATION`. diff --git a/content/admin/identity-and-access-management/iam-configuration-reference/username-considerations-for-external-authentication.md b/content/admin/identity-and-access-management/iam-configuration-reference/username-considerations-for-external-authentication.md index 3daba543e0..2f8f367360 100644 --- a/content/admin/identity-and-access-management/iam-configuration-reference/username-considerations-for-external-authentication.md +++ b/content/admin/identity-and-access-management/iam-configuration-reference/username-considerations-for-external-authentication.md @@ -76,7 +76,7 @@ Usernames{% ifversion ghec %}, including underscore and short code,{% endif %} m ## About username normalization -Usernames for user accounts on {% ifversion ghes or ghae %}{% data variables.product.product_name %}{% elsif ghec %}{% data variables.product.prodname_dotcom_the_website %}{% endif %} can only contain alphanumeric characters and dashes (`-`). +Usernames for user accounts on {% ifversion ghes %}{% data variables.product.product_name %}{% elsif ghec %}{% data variables.product.prodname_dotcom_the_website %}{% endif %} can only contain alphanumeric characters and dashes (`-`). {% ifversion ghec %} When you configure SAML authentication, {% data variables.product.product_name %} uses the SCIM `userName` attribute value sent from the IdP to determine the username for the corresponding user account on {% data variables.product.prodname_dotcom_the_website %}. If this value includes unsupported characters, {% data variables.product.product_name %} will normalize the username per the following rules. diff --git a/content/admin/identity-and-access-management/using-saml-for-enterprise-iam/index.md b/content/admin/identity-and-access-management/using-saml-for-enterprise-iam/index.md index f3d5025e90..4992bb4e94 100644 --- a/content/admin/identity-and-access-management/using-saml-for-enterprise-iam/index.md +++ b/content/admin/identity-and-access-management/using-saml-for-enterprise-iam/index.md @@ -1,7 +1,7 @@ --- title: Using SAML for enterprise IAM shortTitle: SAML for enterprise IAM -intro: 'You can centrally manage {% ifversion ghes or ghae %}accounts and {% endif %}access to {% ifversion ghes %}{% data variables.location.product_location %}{% elsif ghae %}your enterprise{% elsif ghec %}your enterprise''s resources{% endif %} with SAML single sign-on (SSO){% ifversion ghec or ghae %} and System for Cross-domain Identity Management (SCIM){% endif %}.' +intro: 'You can centrally manage {% ifversion ghes %}accounts and {% endif %}access to {% ifversion ghes %}{% data variables.location.product_location %}{% elsif ghae %}your enterprise{% elsif ghec %}your enterprise''s resources{% endif %} with SAML single sign-on (SSO){% ifversion ghec or ghae %} and System for Cross-domain Identity Management (SCIM){% endif %}.' versions: ghec: '*' ghes: '*' diff --git a/content/admin/identity-and-access-management/using-saml-for-enterprise-iam/updating-a-users-saml-nameid.md b/content/admin/identity-and-access-management/using-saml-for-enterprise-iam/updating-a-users-saml-nameid.md index 938c06089e..b7f7270cec 100644 --- a/content/admin/identity-and-access-management/using-saml-for-enterprise-iam/updating-a-users-saml-nameid.md +++ b/content/admin/identity-and-access-management/using-saml-for-enterprise-iam/updating-a-users-saml-nameid.md @@ -1,7 +1,7 @@ --- title: Updating a user's SAML NameID shortTitle: Update SAML NameID -intro: 'When an account''s `NameID` changes on your identity provider (IdP) and the person can no longer {% ifversion ghes or ghae %}sign into {% data variables.location.product_location %}{% elsif ghec %}authenticate to access your enterprise''s resources{% endif %}, you must {% ifversion ghec %}either contact {% data variables.product.company_short %} Support or revoke the person''s linked identity{% elsif ghes %}update the `NameID` mapping on {% data variables.location.product_location %}{% elsif ghae %}contact {% data variables.product.company_short %} Support{% endif %}.' +intro: 'When an account''s `NameID` changes on your identity provider (IdP) and the person can no longer {% ifversion ghes %}sign into {% data variables.location.product_location %}{% elsif ghec %}authenticate to access your enterprise''s resources{% endif %}, you must {% ifversion ghec %}either contact {% data variables.product.company_short %} Support or revoke the person''s linked identity{% elsif ghes %}update the `NameID` mapping on {% data variables.location.product_location %}{% elsif ghae %}contact {% data variables.product.company_short %} Support{% endif %}.' versions: ghes: '*' type: how_to diff --git a/content/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise/configuring-custom-footers.md b/content/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise/configuring-custom-footers.md index c1be9fcdf0..5116324810 100644 --- a/content/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise/configuring-custom-footers.md +++ b/content/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise/configuring-custom-footers.md @@ -17,7 +17,7 @@ redirect_from: ## About custom footers for {% ifversion ghec or ghae %}your enterprise{% elsif ghes %}{% data variables.product.product_name %}{% endif %} -You can configure the web UI for {% data variables.product.product_name %} to display a custom footer with up to five additional links. The custom footer appears above the default {% data variables.product.prodname_dotcom %} footer{% ifversion ghes or ghae %}, to all users and on all pages{% elsif ghec %} to all enterprise members and collaborators, on all repository and organization pages for repositories and organizations that belong to the enterprise{% endif %}. +You can configure the web UI for {% data variables.product.product_name %} to display a custom footer with up to five additional links. The custom footer appears above the default {% data variables.product.prodname_dotcom %} footer{% ifversion ghes %}, to all users and on all pages{% elsif ghec %} to all enterprise members and collaborators, on all repository and organization pages for repositories and organizations that belong to the enterprise{% endif %}. ## Configuring custom footers diff --git a/content/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/configuring-visibility-for-organization-membership.md b/content/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/configuring-visibility-for-organization-membership.md index 8bba058530..b6aaa3478e 100644 --- a/content/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/configuring-visibility-for-organization-membership.md +++ b/content/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/configuring-visibility-for-organization-membership.md @@ -20,7 +20,7 @@ You can also enforce your default setting on all current organization members in {% endif %} {% data reusables.enterprise-accounts.access-enterprise %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% data reusables.enterprise-accounts.policies-tab %} {% else %} {% data reusables.enterprise-accounts.settings-tab %} diff --git a/content/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/preventing-users-from-creating-organizations.md b/content/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/preventing-users-from-creating-organizations.md index 24e5b3bc1d..355bfd4e61 100644 --- a/content/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/preventing-users-from-creating-organizations.md +++ b/content/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/preventing-users-from-creating-organizations.md @@ -18,7 +18,7 @@ topics: shortTitle: Prevent organization creation --- {% data reusables.enterprise-accounts.access-enterprise %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% data reusables.enterprise-accounts.policies-tab %} {% else %} {% data reusables.enterprise-accounts.settings-tab %} diff --git a/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/configuring-git-large-file-storage-for-your-enterprise.md b/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/configuring-git-large-file-storage-for-your-enterprise.md index 0c425bc7fd..c00cd4d0ae 100644 --- a/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/configuring-git-large-file-storage-for-your-enterprise.md +++ b/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/configuring-git-large-file-storage-for-your-enterprise.md @@ -39,7 +39,7 @@ For more information, see "[AUTOTITLE](/repositories/working-with-files/managing ## Configuring {% data variables.large_files.product_name_long %} for your enterprise {% data reusables.enterprise-accounts.access-enterprise %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% data reusables.enterprise-accounts.policies-tab %} {% else %} {% data reusables.enterprise-accounts.settings-tab %} diff --git a/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/disabling-git-ssh-access-on-your-enterprise.md b/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/disabling-git-ssh-access-on-your-enterprise.md index 6900ff03aa..2ce6c23bec 100644 --- a/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/disabling-git-ssh-access-on-your-enterprise.md +++ b/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/disabling-git-ssh-access-on-your-enterprise.md @@ -53,7 +53,7 @@ shortTitle: Disable SSH for Git ## Disabling Git SSH access to all repositories in your enterprise {% data reusables.enterprise-accounts.access-enterprise %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% data reusables.enterprise-accounts.policies-tab %} {% else %} {% data reusables.enterprise-accounts.settings-tab %} diff --git a/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/migrating-to-internal-repositories.md b/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/migrating-to-internal-repositories.md index 24440a8269..8bf53326b7 100644 --- a/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/migrating-to-internal-repositories.md +++ b/content/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/migrating-to-internal-repositories.md @@ -40,7 +40,7 @@ If you don't have private mode enabled, the migration script will have no effect ## Running the migration 1. Connect to the administrative shell. For more information, see "[AUTOTITLE](/admin/configuration/configuring-your-enterprise/accessing-the-administrative-shell-ssh)." -{% ifversion ghes or ghae %} +{% ifversion ghes %} 1. Run the migration command. ```shell diff --git a/content/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/viewing-people-in-your-enterprise.md b/content/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/viewing-people-in-your-enterprise.md index 8f85e2699e..41a7e8ea2c 100644 --- a/content/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/viewing-people-in-your-enterprise.md +++ b/content/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/viewing-people-in-your-enterprise.md @@ -187,7 +187,7 @@ If your enterprise uses {% data variables.product.prodname_emus %}, you can view ## Viewing dormant users -You can view a list of all dormant users {% ifversion ghes or ghae %} who have not been suspended and {% endif %}who are not site administrators. {% data reusables.enterprise-accounts.dormant-user-activity-threshold %} For more information, see "[AUTOTITLE](/admin/user-management/managing-users-in-your-enterprise/managing-dormant-users)." +You can view a list of all dormant users {% ifversion ghes %} who have not been suspended and {% endif %}who are not site administrators. {% data reusables.enterprise-accounts.dormant-user-activity-threshold %} For more information, see "[AUTOTITLE](/admin/user-management/managing-users-in-your-enterprise/managing-dormant-users)." {% ifversion filter-by-enterprise-member-type %} diff --git a/content/admin/monitoring-activity-in-your-enterprise/index.md b/content/admin/monitoring-activity-in-your-enterprise/index.md index 229bc23617..fa69cd7d09 100644 --- a/content/admin/monitoring-activity-in-your-enterprise/index.md +++ b/content/admin/monitoring-activity-in-your-enterprise/index.md @@ -1,6 +1,6 @@ --- title: Monitoring activity in your enterprise -intro: 'You can view user and system activity by leveraging audit logs{% ifversion ghes or ghae %}, push logs, dashboards, webhooks, and log forwarding{% else %}and webhooks{% endif %}.' +intro: 'You can view user and system activity by leveraging audit logs{% ifversion ghes %}, push logs, dashboards, webhooks, and log forwarding{% else %}and webhooks{% endif %}.' redirect_from: - /enterprise/admin/installation/monitoring-activity-on-your-github-enterprise-server-instance versions: diff --git a/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/about-the-audit-log-for-your-enterprise.md b/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/about-the-audit-log-for-your-enterprise.md index e5563d5877..20dfa5f8b7 100644 --- a/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/about-the-audit-log-for-your-enterprise.md +++ b/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/about-the-audit-log-for-your-enterprise.md @@ -40,7 +40,7 @@ topics: {% data reusables.enterprise_site_admin_settings.access-settings %} 1. In the left menu, click **Audit log**.{% endif %} -In addition to viewing your audit log, you can monitor activity in your enterprise in other ways, such as {% ifversion ghes or ghae %}viewing push logs and {% endif %}managing global webhooks. For more information, see "[AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/exploring-user-activity)." You can also use the audit log, and other tools, to monitor the actions taken in response to security alerts. For more information, see "[AUTOTITLE](/code-security/getting-started/auditing-security-alerts)." +In addition to viewing your audit log, you can monitor activity in your enterprise in other ways, such as {% ifversion ghes %}viewing push logs and {% endif %}managing global webhooks. For more information, see "[AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/exploring-user-activity)." You can also use the audit log, and other tools, to monitor the actions taken in response to security alerts. For more information, see "[AUTOTITLE](/code-security/getting-started/auditing-security-alerts)." ## Using your audit logs diff --git a/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/searching-the-audit-log-for-your-enterprise.md b/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/searching-the-audit-log-for-your-enterprise.md index bcaab95c3f..2c32350e27 100644 --- a/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/searching-the-audit-log-for-your-enterprise.md +++ b/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/searching-the-audit-log-for-your-enterprise.md @@ -63,38 +63,38 @@ Key | Value -------------- | -------------------------------------------------------- `action` | Name of the audited action. `actor` | Name of the user account that initiated the action. -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} `actor_id` | ID of the user account that initiated the action.{% endif %} -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} `actor_ip` | IP address from which the action was initiated.{% endif %} -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} `business` | Name of the enterprise affected by the action (if applicable).{% endif %} -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} `business_id` | ID of the enterprise affected by the action (if applicable).{% endif %} {%- ifversion token-audit-log %} `created` | Time at which the action occurred.{% ifversion ghes %} If querying the audit log from the site admin dashboard, use `created_at` instead.{% endif %} `country` | Name of the country where the actor was when performing the action. `country_code` | Two-letter short code of the country where the actor was when performing the action. -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} `from` | View from which the action was initiated.{% endif %} `hashed_token` | The token used to authenticate for the action (if applicable, see "[AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/identifying-audit-log-events-performed-by-an-access-token)"). {% endif %} `ip` | IP address of the actor. -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} `note` | Miscellaneous event-specific information (in either plain text or JSON format).{% endif %} -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} `oauth_app_id` | ID of the {% data variables.product.prodname_oauth_app %} associated with the action.{% endif %} `operation` | Operation type that corresponds with the action. Operation types are `create`, `access`, `modify`, `remove`, `authentication`, `transfer`, and `restore`. -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} `org` | Name of the organization affected by the action (if applicable).{% endif %} -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} `org_id` | ID of the organization affected by the action (if applicable).{% endif %} -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} `repo_id` | ID of the repository affected by the action (if applicable).{% endif %} -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} `repository` | Name with owner of the repository where the action occurred (such as `"octocat/octo-repo"`).{% endif %} {%- ifversion ghec %} `repository` | Name with owner of the repository where the action occurred (such as `octocat/octo-repo`).{% endif %} -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} `user_id` | ID of the user affected by the action.{% endif %} `user` | Name of the user affected by the action. diff --git a/content/admin/overview/about-enterprise-accounts.md b/content/admin/overview/about-enterprise-accounts.md index 33571185e1..ce6f34dad5 100644 --- a/content/admin/overview/about-enterprise-accounts.md +++ b/content/admin/overview/about-enterprise-accounts.md @@ -47,7 +47,7 @@ Your enterprise account allows you to manage and enforce policies for all the or ## About administration of your enterprise account -{% ifversion ghes or ghae %} +{% ifversion ghes %} From your enterprise account on {% ifversion ghae %}{% data variables.product.product_name %}{% elsif ghes %}a {% data variables.product.prodname_ghe_server %} instance{% endif %}, administrators can view{% ifversion remove-enterprise-members %} and manage{% endif %} enterprise membership{% ifversion enterprise-owner-join-org %}, manage their own membership in organizations owned by the enterprise,{% endif %} and manage the following for the {% ifversion ghes %}{% data variables.product.prodname_ghe_server %} instance{% elsif ghae %}enterprise on {% data variables.product.prodname_ghe_managed %}{% endif %}. diff --git a/content/admin/overview/about-github-for-enterprises.md b/content/admin/overview/about-github-for-enterprises.md index ecf8de9d44..2272746cda 100644 --- a/content/admin/overview/about-github-for-enterprises.md +++ b/content/admin/overview/about-github-for-enterprises.md @@ -30,7 +30,7 @@ For a full list of features available with {% data variables.product.prodname_en For {% data variables.product.prodname_ghe_cloud %}, you can allow developers to create and manage their own personal accounts, or you can use {% data variables.product.prodname_emus %}, which enables you to create and manage the user accounts for your developers. For more information, see "[AUTOTITLE](/admin/identity-and-access-management/managing-iam-for-your-enterprise/about-authentication-for-your-enterprise)." -You can benefit from the power of {% data variables.product.prodname_dotcom_the_website %} even while using {% data variables.product.prodname_ghe_server %}{% ifversion ghae %} or {% data variables.product.prodname_ghe_managed %}{% endif %} by enabling {% data variables.product.prodname_github_connect %}, which allows you to configure additional features and workflows such as {% data variables.product.prodname_dependabot_alerts %} for insecure dependencies. For more information, see "[About {% data variables.product.prodname_github_connect %}]({% ifversion ghec %}/enterprise-server@latest{% endif %}/admin/configuration/configuring-github-connect/about-github-connect){% ifversion ghes or ghae %}."{% elsif ghec %}" in the {% data variables.product.prodname_ghe_server %} documentation.{% endif %} +You can benefit from the power of {% data variables.product.prodname_dotcom_the_website %} even while using {% data variables.product.prodname_ghe_server %}{% ifversion ghae %} or {% data variables.product.prodname_ghe_managed %}{% endif %} by enabling {% data variables.product.prodname_github_connect %}, which allows you to configure additional features and workflows such as {% data variables.product.prodname_dependabot_alerts %} for insecure dependencies. For more information, see "[About {% data variables.product.prodname_github_connect %}]({% ifversion ghec %}/enterprise-server@latest{% endif %}/admin/configuration/configuring-github-connect/about-github-connect){% ifversion ghes %}."{% elsif ghec %}" in the {% data variables.product.prodname_ghe_server %} documentation.{% endif %} ## Further reading diff --git a/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise.md b/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise.md index 9dd5bd0505..66081beb6a 100644 --- a/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise.md +++ b/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise.md @@ -43,7 +43,7 @@ You can choose to disable {% data variables.product.prodname_actions %} for all {% data reusables.actions.actions-use-policy-settings %} - {%- ifversion ghes or ghae %} + {%- ifversion ghes %} {% note %} **Note:** To enable access to public actions{% ifversion actions-workflow-policy %} and reusable workflows{% endif %}, you must first configure {% data variables.location.product_location %} to connect to {% data variables.product.prodname_dotcom_the_website %}. For more information, see "[AUTOTITLE](/admin/github-actions/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect)." diff --git a/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise.md b/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise.md index cebe4b9cec..d607cf44b9 100644 --- a/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise.md +++ b/content/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise.md @@ -50,7 +50,7 @@ shortTitle: Repository management policies You can enforce policies to control how members of your enterprise on {% data variables.product.product_name %} manage repositories. You can also allow organization owners to manage policies for repository management. For more information, see "[AUTOTITLE](/repositories/creating-and-managing-repositories) and "[AUTOTITLE](/organizations)." -{% ifversion ghes or ghae %} +{% ifversion ghes %} ## Configuring the default visibility of new repositories @@ -59,7 +59,7 @@ Each time someone creates a new repository within your enterprise, that person m If an enterprise owner disallows members from creating certain types of repositories, members will not be able to create that type of repository even if the visibility setting defaults to that type. For more information, see "[Enforcing a policy for repository creation](#enforcing-a-policy-for-repository-creation)." {% data reusables.enterprise-accounts.access-enterprise %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% data reusables.enterprise-accounts.policies-tab %} {% else %} {% data reusables.enterprise-accounts.settings-tab %} @@ -181,7 +181,7 @@ Across all organizations owned by your enterprise, you can allow members with ad 1. On the **Repository policies** tab, under "Repository issue deletion", review the information about changing the setting. {% data reusables.enterprise-accounts.view-current-policy-config-orgs %} 1. Under "Repository issue deletion", select the dropdown menu and click a policy. -{% ifversion ghes or ghae %} +{% ifversion ghes %} ## Enforcing a policy for Git push limits @@ -226,7 +226,7 @@ Across all organizations owned by your enterprise, you can allow members to see Requiring users to resolve merge conflicts locally on their computer can prevent people from inadvertently writing to an upstream repository from a fork. {% data reusables.enterprise-accounts.access-enterprise %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% data reusables.enterprise-accounts.policies-tab %} {% else %} {% data reusables.enterprise-accounts.settings-tab %} @@ -298,7 +298,7 @@ If necessary, you can prevent repository administrators from changing anonymous ### Setting anonymous Git read access for all repositories {% data reusables.enterprise-accounts.access-enterprise %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% data reusables.enterprise-accounts.policies-tab %} {% else %} {% data reusables.enterprise-accounts.settings-tab %} diff --git a/content/apps/creating-github-apps/about-creating-github-apps/migrating-oauth-apps-to-github-apps.md b/content/apps/creating-github-apps/about-creating-github-apps/migrating-oauth-apps-to-github-apps.md index d871ee4b57..1d4da54234 100644 --- a/content/apps/creating-github-apps/about-creating-github-apps/migrating-oauth-apps-to-github-apps.md +++ b/content/apps/creating-github-apps/about-creating-github-apps/migrating-oauth-apps-to-github-apps.md @@ -88,14 +88,14 @@ As the app owner, you should include calls to action to encourage your users to If you want your {% data variables.product.prodname_github_app %} to make API requests on behalf of itself or access organization or repository resources, the user must install your {% data variables.product.prodname_github_app %}. When a user installs a {% data variables.product.prodname_github_app %} on their account or organization, they choose which repositories the app can access, and they grant the app the organization and repository permissions that it requested. -To help your users install your {% data variables.product.prodname_github_app %}, you can add a link to your app's webpage that users can click to install the {% data variables.product.prodname_github_app %}. The format of the install URL is `{% data variables.product.oauth_host_code %}/{% ifversion ghes or ghae %}github-apps{% else %}apps{% endif %}/YOUR_APP_NAME/installations/new`. Replace `YOUR_APP_NAME` with the sluggified name of your {% data variables.product.prodname_github_app %}, which you can find in the "Public link" field on the settings page for your {% data variables.product.prodname_github_app %}. +To help your users install your {% data variables.product.prodname_github_app %}, you can add a link to your app's webpage that users can click to install the {% data variables.product.prodname_github_app %}. The format of the install URL is `{% data variables.product.oauth_host_code %}/{% ifversion ghes %}github-apps{% else %}apps{% endif %}/YOUR_APP_NAME/installations/new`. Replace `YOUR_APP_NAME` with the sluggified name of your {% data variables.product.prodname_github_app %}, which you can find in the "Public link" field on the settings page for your {% data variables.product.prodname_github_app %}. To pre-select any repositories your {% data variables.product.prodname_oauth_app %} had access to, you can append `/permissions` and query parameters to the install URL. This helps users grant your {% data variables.product.prodname_github_app %} access to repositories that your {% data variables.product.prodname_oauth_app %} already has access to. The query parameters are: - `suggested_target_id`: The ID of the user or organization that is installing your {% data variables.product.prodname_github_app %}. This parameter is required. - `repository_ids[]`: The repository IDs to select for the installation. If omitted, all repositories are selected. The maximum number of repositories that can be pre-selected is 100. To get a list of repositories that your {% data variables.product.prodname_oauth_app %} has access to, use the [List repositories for the authenticated user](/rest/repos#list-repositories-for-the-authenticated-user) and [List organization repositories](/rest/repos#list-organization-repositories) endpoints. -For example: `{% data variables.product.oauth_host_code %}/{% ifversion ghes or ghae %}github-apps{% else %}apps{% endif %}/YOUR_APP_NAME/installations/new/permissions?suggested_target_id=ID_OF_USER_OR_ORG&repository_ids[]=REPO_A_ID&repository_ids[]=REPO_B_ID`. +For example: `{% data variables.product.oauth_host_code %}/{% ifversion ghes %}github-apps{% else %}apps{% endif %}/YOUR_APP_NAME/installations/new/permissions?suggested_target_id=ID_OF_USER_OR_ORG&repository_ids[]=REPO_A_ID&repository_ids[]=REPO_B_ID`. For more information about installing {% data variables.product.prodname_github_apps %}, see {% ifversion ghec or fpt %}"[AUTOTITLE](/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-personal-account)," "[AUTOTITLE](/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-organizations),"{% endif %} "[AUTOTITLE](/apps/using-github-apps/installing-a-github-app-from-a-third-party)" and "[AUTOTITLE](/apps/using-github-apps/installing-your-own-github-app)." diff --git a/content/apps/creating-github-apps/writing-code-for-a-github-app/building-a-github-app-that-responds-to-webhook-events.md b/content/apps/creating-github-apps/writing-code-for-a-github-app/building-a-github-app-that-responds-to-webhook-events.md index 9c44fc4a49..370f4b8751 100644 --- a/content/apps/creating-github-apps/writing-code-for-a-github-app/building-a-github-app-that-responds-to-webhook-events.md +++ b/content/apps/creating-github-apps/writing-code-for-a-github-app/building-a-github-app-that-responds-to-webhook-events.md @@ -116,12 +116,12 @@ Make sure that you are on a secure machine before performing these steps since y 1. In your terminal, navigate to the directory where your clone is stored. 1. Create a file called `.env` at the top level of this directory. 1. Add `.env` to your `.gitignore` file. This will prevent you from accidentally committing your app's credentials. -1. Add the following contents to your `.env` file. {% ifversion ghes or ghae %}Replace `YOUR_HOSTNAME` with the name of {% data variables.location.product_location %}. You will update the other values in a later step.{% else %}You will update the values in a later step.{% endif %} +1. Add the following contents to your `.env` file. {% ifversion ghes %}Replace `YOUR_HOSTNAME` with the name of {% data variables.location.product_location %}. You will update the other values in a later step.{% else %}You will update the values in a later step.{% endif %} ```text copy APP_ID="YOUR_APP_ID" WEBHOOK_SECRET="YOUR_WEBHOOK_SECRET" - PRIVATE_KEY_PATH="YOUR_PRIVATE_KEY_PATH"{% ifversion ghes or ghae %} + PRIVATE_KEY_PATH="YOUR_PRIVATE_KEY_PATH"{% ifversion ghes %} ENTERPRISE_HOSTNAME="YOUR_HOSTNAME"{% endif %} ``` @@ -144,7 +144,7 @@ Add the following code to `app.js`. The code includes annotations that explain e // // You installed the `dotenv` and `octokit` modules earlier. The `@octokit/webhooks` is a dependency of the `octokit` module, so you don't need to install it separately. The `fs` and `http` dependencies are built-in Node.js modules. import dotenv from "dotenv"; -import {App{% ifversion ghes or ghae %}, Octokit{% endif %}} from "octokit"; +import {App{% ifversion ghes %}, Octokit{% endif %}} from "octokit"; import {createNodeMiddleware} from "@octokit/webhooks"; import fs from "fs"; import http from "http"; @@ -155,7 +155,7 @@ dotenv.config(); // This assigns the values of your environment variables to local variables. const appId = process.env.APP_ID; const webhookSecret = process.env.WEBHOOK_SECRET; -const privateKeyPath = process.env.PRIVATE_KEY_PATH;{% ifversion ghes or ghae %} +const privateKeyPath = process.env.PRIVATE_KEY_PATH;{% ifversion ghes %} const enterpriseHostname = process.env.ENTERPRISE_HOSTNAME;{% endif %} // This reads the contents of your private key file. @@ -167,7 +167,7 @@ const app = new App({ privateKey: privateKey, webhooks: { secret: webhookSecret - },{% ifversion ghes or ghae %} + },{% ifversion ghes %} Octokit: Octokit.defaults({ baseUrl: `https://${enterpriseHostname}/api/v3`, }),{% endif %} diff --git a/content/apps/creating-github-apps/writing-code-for-a-github-app/building-ci-checks-with-a-github-app.md b/content/apps/creating-github-apps/writing-code-for-a-github-app/building-ci-checks-with-a-github-app.md index d9921cf62f..cc6cab68de 100644 --- a/content/apps/creating-github-apps/writing-code-for-a-github-app/building-ci-checks-with-a-github-app.md +++ b/content/apps/creating-github-apps/writing-code-for-a-github-app/building-ci-checks-with-a-github-app.md @@ -166,7 +166,7 @@ Make sure that you are on a secure machine before performing these steps, since 1. In your terminal, navigate to the directory where your clone is stored. 1. Create a file called `.env` at the top level of this directory. 1. Add `.env` to your `.gitignore` file. This will prevent you from accidentally committing your app's credentials. -1. Add the following contents to your `.env` file. {% ifversion ghes or ghae %}Replace `YOUR_HOSTNAME` with the name of {% data variables.location.product_location %}. You will update the other values in a later step.{% else %}You will update the values in a later step.{% endif %} +1. Add the following contents to your `.env` file. {% ifversion ghes %}Replace `YOUR_HOSTNAME` with the name of {% data variables.location.product_location %}. You will update the other values in a later step.{% else %}You will update the values in a later step.{% endif %} ```shell copy GITHUB_APP_IDENTIFIER="YOUR_APP_ID" diff --git a/content/apps/creating-github-apps/writing-code-for-a-github-app/quickstart.md b/content/apps/creating-github-apps/writing-code-for-a-github-app/quickstart.md index 7e497466bd..12217d1382 100644 --- a/content/apps/creating-github-apps/writing-code-for-a-github-app/quickstart.md +++ b/content/apps/creating-github-apps/writing-code-for-a-github-app/quickstart.md @@ -73,12 +73,12 @@ Your cloned repository includes `.env` in the `.gitignore` file. This will preve 1. Navigate to the directory where your clone of [github/github-app-js-sample](https://github.com/github/github-app-js-sample) is stored. 1. Create a file called `.env` at the top level of this directory. -1. Add the following contents to your `.env` file. {% ifversion ghes or ghae %}Replace `YOUR_HOSTNAME` with the name of {% data variables.location.product_location %}. You will update the other values in a later step.{% else %}You will update the values in a later step.{% endif %} +1. Add the following contents to your `.env` file. {% ifversion ghes %}Replace `YOUR_HOSTNAME` with the name of {% data variables.location.product_location %}. You will update the other values in a later step.{% else %}You will update the values in a later step.{% endif %} ```text copy APP_ID="YOUR_APP_ID" WEBHOOK_SECRET="YOUR_WEBHOOK_SECRET" - PRIVATE_KEY_PATH="YOUR_PRIVATE_KEY_PATH"{% ifversion ghes or ghae %} + PRIVATE_KEY_PATH="YOUR_PRIVATE_KEY_PATH"{% ifversion ghes %} HOSTNAME="YOUR_HOSTNAME"{% endif %} ``` diff --git a/content/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps.md b/content/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps.md index eb2e1cbdeb..a1c5fb5009 100644 --- a/content/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps.md +++ b/content/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps.md @@ -48,7 +48,7 @@ X-Accepted-OAuth-Scopes: user Name | Description -----|-----------|{% ifversion not ghae %} -**`(no scope)`** | Grants read-only access to public information (including user profile info, repository info, and gists){% endif %}{% ifversion ghes or ghae %} +**`(no scope)`** | Grants read-only access to public information (including user profile info, repository info, and gists){% endif %}{% ifversion ghes %} **`site_admin`** | Grants site administrators access to [{% data variables.product.prodname_ghe_server %} Administration API endpoints](/rest/enterprise-admin).{% endif %} **`repo`** | Grants full access to public{% ifversion ghec or ghes or ghae %}, internal,{% endif %} and private repositories including read and write access to code, commit statuses, repository invitations, collaborators, deployment statuses, and repository webhooks. **Note**: In addition to repository related resources, the `repo` scope also grants access to manage organization-owned resources including projects, invitations, team memberships and webhooks. This scope also grants the ability to manage projects owned by users.  `repo:status`| Grants read/write access to commit statuses in {% ifversion fpt %}public and private{% elsif ghec or ghes %}public, private, and internal{% elsif ghae %}private and internal{% endif %} repositories. This scope is only necessary to grant other users or services access to private repository commit statuses _without_ granting access to the code. diff --git a/content/apps/sharing-github-apps/sharing-your-github-app.md b/content/apps/sharing-github-apps/sharing-your-github-app.md index 0ba90e8830..c8421ee14d 100644 --- a/content/apps/sharing-github-apps/sharing-your-github-app.md +++ b/content/apps/sharing-github-apps/sharing-your-github-app.md @@ -38,12 +38,12 @@ If your {% data variables.product.prodname_github_app %} is public, other users {% data reusables.user-settings.github_apps %} 1. Next to the {% data variables.product.prodname_github_app %} that you want to share, click **Edit**. 1. Click **Public page**. {% data variables.product.company_short %} will bring you to the public page for your {% data variables.product.prodname_github_app %}. -1. Click **Install**. {% data variables.product.company_short %} will bring you to the installation URL for your {% data variables.product.prodname_github_app %}. The URL will look something like `{% data variables.product.oauth_host_code %}/{% ifversion ghes or ghae %}github-apps{% else %}apps{% endif %}/APP-NAME/installations/new`, where `APP-NAME` is the name of the {% data variables.product.prodname_github_app %}. +1. Click **Install**. {% data variables.product.company_short %} will bring you to the installation URL for your {% data variables.product.prodname_github_app %}. The URL will look something like `{% data variables.product.oauth_host_code %}/{% ifversion ghes %}github-apps{% else %}apps{% endif %}/APP-NAME/installations/new`, where `APP-NAME` is the name of the {% data variables.product.prodname_github_app %}. 1. Share the installation URL with other users. For more information about how users can install your app from this URL, see "[AUTOTITLE](/apps/using-github-apps/installing-a-github-app-from-a-third-party)." When you share the URL, you can include a `state` query parameter in the installation URL to preserve the state of the application page and return people back to that state after they install, authenticate, or accept updates to your GitHub App. For example, you could use the `state` to correlate an installation to a user or account. - To preserve a state, add it to the installation URL: `{% data variables.product.oauth_host_code %}/{% ifversion ghes or ghae %}github-apps{% else %}apps{% endif %}//installations/new?state=AB12t` + To preserve a state, add it to the installation URL: `{% data variables.product.oauth_host_code %}/{% ifversion ghes %}github-apps{% else %}apps{% endif %}//installations/new?state=AB12t` ## Sharing your {% data variables.product.prodname_github_app %} with {% data variables.product.prodname_ghe_server %} instances diff --git a/content/apps/using-github-apps/installing-a-github-app-from-a-third-party.md b/content/apps/using-github-apps/installing-a-github-app-from-a-third-party.md index 179125a37b..7751a0f3f0 100644 --- a/content/apps/using-github-apps/installing-a-github-app-from-a-third-party.md +++ b/content/apps/using-github-apps/installing-a-github-app-from-a-third-party.md @@ -9,7 +9,7 @@ versions: shortTitle: Install from third party --- -{% ifversion ghes or ghae %} +{% ifversion ghes %} You cannot install third-party {% data variables.product.prodname_github_apps %} on organizations owned by your instance.{% ifversion ghes %} If you want to use the functionality of a third-party {% data variables.product.prodname_github_app %}, you can contact the app developer about making the {% data variables.product.prodname_github_app %} available for {% data variables.product.prodname_ghe_server %}. For more information, see "[AUTOTITLE](/apps/sharing-github-apps/making-your-github-app-available-for-github-enterprise-server)."{% endif %} @@ -45,7 +45,7 @@ The "app manager" role in an organization does not give a person the ability to ## Installing a {% data variables.product.prodname_github_app %} -During the installation process, the app owner will direct you to a {% data variables.product.company_short %} URL to install the {% data variables.product.prodname_github_app %}. The URL will look something like `{% data variables.product.oauth_host_code %}/{% ifversion ghes or ghae %}github-apps{% else %}apps{% endif %}/APP-NAME/installations/new`, where `APP-NAME` is the name of the {% data variables.product.prodname_github_app %}. +During the installation process, the app owner will direct you to a {% data variables.product.company_short %} URL to install the {% data variables.product.prodname_github_app %}. The URL will look something like `{% data variables.product.oauth_host_code %}/{% ifversion ghes %}github-apps{% else %}apps{% endif %}/APP-NAME/installations/new`, where `APP-NAME` is the name of the {% data variables.product.prodname_github_app %}. 1. Select the location where you want to install the {% data variables.product.prodname_github_app %}. You can select your personal account or an organization that you are a member of. diff --git a/content/authentication/connecting-to-github-with-ssh/using-ssh-agent-forwarding.md b/content/authentication/connecting-to-github-with-ssh/using-ssh-agent-forwarding.md index 4a2bf492e5..607ca9cd39 100644 --- a/content/authentication/connecting-to-github-with-ssh/using-ssh-agent-forwarding.md +++ b/content/authentication/connecting-to-github-with-ssh/using-ssh-agent-forwarding.md @@ -28,10 +28,10 @@ Check out [Steve Friedl's Tech Tips guide][tech-tips] for a more detailed explan Ensure that your own SSH key is set up and working. You can use [our guide on generating SSH keys][generating-keys] if you've not done this yet. -You can test that your local key works by entering `ssh -T git@{% ifversion ghes or ghae %}hostname{% else %}github.com{% endif %}` in the terminal: +You can test that your local key works by entering `ssh -T git@{% ifversion ghes %}hostname{% else %}github.com{% endif %}` in the terminal: ```shell -$ ssh -T git@{% ifversion ghes or ghae %}hostname{% else %}github.com{% endif %} +$ ssh -T git@{% ifversion ghes %}hostname{% else %}github.com{% endif %} # Attempt to SSH in to github > Hi USERNAME! You've successfully authenticated, but GitHub does not provide > shell access. @@ -54,7 +54,7 @@ We're off to a great start. Let's set up SSH to allow agent forwarding to your s ## Testing SSH agent forwarding -To test that agent forwarding is working with your server, you can SSH into your server and run `ssh -T git@{% ifversion ghes or ghae %}hostname{% else %}github.com{% endif %}` once more. If all is well, you'll get back the same prompt as you did locally. +To test that agent forwarding is working with your server, you can SSH into your server and run `ssh -T git@{% ifversion ghes %}hostname{% else %}github.com{% endif %}` once more. If all is well, you'll get back the same prompt as you did locally. If you're unsure if your local key is being used, you can also inspect the `SSH_AUTH_SOCK` variable on your server: @@ -70,7 +70,7 @@ If the variable is not set, it means that agent forwarding is not working: $ echo "$SSH_AUTH_SOCK" # Print out the SSH_AUTH_SOCK variable > [No output] -$ ssh -T git@{% ifversion ghes or ghae %}hostname{% else %}github.com{% endif %} +$ ssh -T git@{% ifversion ghes %}hostname{% else %}github.com{% endif %} # Try to SSH to github > Permission denied (publickey). ``` @@ -85,7 +85,7 @@ SSH forwarding only works with SSH URLs, not HTTP(s) URLs. Check the `.git/confi ```shell [remote "origin"] - url = git@{% ifversion ghes or ghae %}hostname{% else %}github.com{% endif %}:YOUR_ACCOUNT/YOUR_PROJECT.git + url = git@{% ifversion ghes %}hostname{% else %}github.com{% endif %}:YOUR_ACCOUNT/YOUR_PROJECT.git fetch = +refs/heads/*:refs/remotes/origin/* ``` diff --git a/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md b/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md index f2efe9247f..12460bc8bd 100644 --- a/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md +++ b/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md @@ -47,7 +47,7 @@ The events listed in your security log are triggered by your actions. Actions ar | `project` | Contains all activities related to {% data variables.projects.projects_v1_boards %}. | `public_key` | Contains all activities related to [your public SSH keys](/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account). | `repo`| Contains all activities related to the repositories you own.{% ifversion fpt or ghec %} -| `sponsors` | Contains all events related to {% data variables.product.prodname_sponsors %} and sponsor buttons (see "[AUTOTITLE](/sponsors/getting-started-with-github-sponsors/about-github-sponsors)" and "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository)"){% endif %}{% ifversion ghes or ghae %} +| `sponsors` | Contains all events related to {% data variables.product.prodname_sponsors %} and sponsor buttons (see "[AUTOTITLE](/sponsors/getting-started-with-github-sponsors/about-github-sponsors)" and "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository)"){% endif %}{% ifversion ghes %} | `team` | Contains all activities related to teams you are a part of.{% endif %}{% ifversion not ghae %} | `two_factor_authentication` | Contains all activities related to [two-factor authentication](/authentication/securing-your-account-with-two-factor-authentication-2fa).{% endif %} | `user` | Contains all activities related to your account. diff --git a/content/authentication/managing-commit-signature-verification/about-commit-signature-verification.md b/content/authentication/managing-commit-signature-verification/about-commit-signature-verification.md index 86c7be69f2..93f3d617a5 100644 --- a/content/authentication/managing-commit-signature-verification/about-commit-signature-verification.md +++ b/content/authentication/managing-commit-signature-verification/about-commit-signature-verification.md @@ -23,7 +23,7 @@ You can sign commits and tags locally, to give other people confidence about the ![Screenshot of a commit in the commit list for a repository. "Verified" is highlighted with an orange outline.](/assets/images/help/commits/verified-commit.png) -{% ifversion ghes or ghae %} +{% ifversion ghes %} If a commit or tag has a signature that can't be verified, {% data variables.product.product_name %} marks the commit or tag "Unverified." {% endif %} diff --git a/content/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning-with-codeql.md b/content/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning-with-codeql.md index e04618bc1d..3dbc5661a1 100644 --- a/content/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning-with-codeql.md +++ b/content/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning-with-codeql.md @@ -42,7 +42,7 @@ There are two main ways to use {% data variables.product.prodname_codeql %} anal - Run the {% data variables.product.prodname_codeql_cli %} directly in an external CI system and upload the results to {% data variables.product.prodname_dotcom %}. For more information, see "[AUTOTITLE](/code-security/code-scanning/integrating-with-code-scanning/using-code-scanning-with-your-existing-ci-system)." -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% note %} On {% data variables.product.product_name %} {% ifversion ghes %}{{ allVersions[currentVersion].currentRelease }},{% endif %} the {% data variables.product.prodname_codeql %} action uses {% data variables.product.prodname_codeql_cli %} version {% data variables.product.codeql_cli_ghes_recommended_version %} by default. We recommend that you use the same version of the {% data variables.product.prodname_codeql_cli %} if you run analysis in an external CI system. diff --git a/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/uploading-codeql-analysis-results-to-github.md b/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/uploading-codeql-analysis-results-to-github.md index 8b7e41fe5e..70a2a7aed7 100644 --- a/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/uploading-codeql-analysis-results-to-github.md +++ b/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/uploading-codeql-analysis-results-to-github.md @@ -47,14 +47,14 @@ When you have decided on the most secure and reliable method for your configurat | codeql github upload-results \ --repository= \ --ref= --commit= \ - --sarif= {% ifversion ghes or ghae %}--github-url= \ + --sarif= {% ifversion ghes %}--github-url= \ {% endif %}--github-auth-stdin # {% data variables.product.prodname_github_app %} or {% data variables.product.pat_generic %} available in GITHUB_TOKEN codeql github upload-results \ --repository= \ --ref= --commit= \ - --sarif= {% ifversion ghes or ghae %}--github-url= \ + --sarif= {% ifversion ghes %}--github-url= \ {% endif %} ``` @@ -63,7 +63,7 @@ codeql github upload-results \ | --repository | {% octicon "check" aria-label="Required" %} | Specify the _OWNER/NAME_ of the repository to upload data to. The owner must be an organization within an enterprise that has a license for {% data variables.product.prodname_GH_advanced_security %} and {% data variables.product.prodname_GH_advanced_security %} must be enabled for the repository{% ifversion fpt or ghec %}, unless the repository is public{% endif %}. For more information, see "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository)." | --ref | {% octicon "check" aria-label="Required" %} | Specify the name of the `ref` you checked out and analyzed so that the results can be matched to the correct code. For a branch use: `refs/heads/BRANCH-NAME`, for the head commit of a pull request use `refs/pull/NUMBER/head`, or for the {% data variables.product.prodname_dotcom %}-generated merge commit of a pull request use `refs/pull/NUMBER/merge`. | --commit | {% octicon "check" aria-label="Required" %} | Specify the full SHA of the commit you analyzed. -| --sarif | {% octicon "check" aria-label="Required" %} | Specify the SARIF file to load.{% ifversion ghes or ghae %} +| --sarif | {% octicon "check" aria-label="Required" %} | Specify the SARIF file to load.{% ifversion ghes %} | --github-url | {% octicon "check" aria-label="Required" %} | Specify the URL for {% data variables.product.product_name %}.{% endif %} | --github-auth-stdin | {% octicon "x" aria-label="Optional" %} | Pass the CLI the {% data variables.product.prodname_github_app %} or {% data variables.product.pat_generic %} created for authentication with {% data variables.product.company_short %}'s REST API from your secret store via standard input. This is not needed if the command has access to a `GITHUB_TOKEN` environment variable set with this token. @@ -83,7 +83,7 @@ The following example uploads results from the SARIF file `temp/example-repo-js. codeql github upload-results \ --repository=my-org/example-repo \ --ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \ - --sarif=/temp/example-repo-js.sarif {% ifversion ghes or ghae %}--github-url={% data variables.command_line.git_url_example %} \ + --sarif=/temp/example-repo-js.sarif {% ifversion ghes %}--github-url={% data variables.command_line.git_url_example %} \ {% endif %} ``` @@ -119,7 +119,7 @@ You can make this diagnostic information available on the {% data variables.code codeql github upload-results \ --repository=my-org/example-repo \ --ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \ - --sarif=/temp/example-repo-js.sarif {% ifversion ghes or ghae %}--github-url={% data variables.command_line.git_url_example %} \ + --sarif=/temp/example-repo-js.sarif {% ifversion ghes %}--github-url={% data variables.command_line.git_url_example %} \ {% endif %} ``` diff --git a/content/code-security/dependabot/dependabot-alerts/configuring-notifications-for-dependabot-alerts.md b/content/code-security/dependabot/dependabot-alerts/configuring-notifications-for-dependabot-alerts.md index f3cdc3c7e8..8ab3f481be 100644 --- a/content/code-security/dependabot/dependabot-alerts/configuring-notifications-for-dependabot-alerts.md +++ b/content/code-security/dependabot/dependabot-alerts/configuring-notifications-for-dependabot-alerts.md @@ -33,7 +33,7 @@ When {% data variables.product.prodname_dependabot %} detects vulnerable depende {% ifversion fpt or ghec %}If you're an organization owner, you can enable or disable {% data variables.product.prodname_dependabot_alerts %} for all repositories in your organization with one click. You can also set whether {% data variables.product.prodname_dependabot_alerts %} will be enabled or disabled for newly-created repositories. For more information, see "[AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-for-all-new-repositories-when-they-are-added)." {% endif %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} By default, if your enterprise owner has configured email for notifications on your enterprise, you will receive {% data variables.product.prodname_dependabot_alerts %} by email. Enterprise owners can also enable {% data variables.product.prodname_dependabot_alerts %} without notifications. For more information, see "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise)." diff --git a/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md b/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md index 40d4a30a8f..076baa966b 100644 --- a/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md +++ b/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md @@ -36,7 +36,7 @@ topics: - {% data variables.product.prodname_dependabot %} scans any push, to the default branch, that contains a manifest file. When a new advisory is added, it scans all existing repositories and generates an alert for each repository that is affected. {% data variables.product.prodname_dependabot_alerts %} are aggregated at the repository level, rather than creating one alert per advisory. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)." - {% ifversion fpt or ghec or ghes %}{% data variables.product.prodname_dependabot_security_updates %} are triggered when you receive an alert about a vulnerable dependency in your repository. Where possible, {% data variables.product.prodname_dependabot %} creates a pull request in your repository to upgrade the vulnerable dependency to the minimum possible secure version needed to avoid the vulnerability. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-security-updates/about-dependabot-security-updates)" and "[AUTOTITLE](/code-security/dependabot/working-with-dependabot/troubleshooting-dependabot-errors)." - {% endif %}{% data variables.product.prodname_dependabot %} doesn't scan repositories on a schedule, but rather when something changes. For example, a scan is triggered when a new dependency is added ({% data variables.product.prodname_dotcom %} checks for this on every push), or when a new advisory is added to the database{% ifversion ghes or ghae %} and synchronized to {% data variables.location.product_location %}{% endif %}. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts#detection-of-insecure-dependencies)." + {% endif %}{% data variables.product.prodname_dependabot %} doesn't scan repositories on a schedule, but rather when something changes. For example, a scan is triggered when a new dependency is added ({% data variables.product.prodname_dotcom %} checks for this on every push), or when a new advisory is added to the database{% ifversion ghes %} and synchronized to {% data variables.location.product_location %}{% endif %}. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts#detection-of-insecure-dependencies)." ## Do {% data variables.product.prodname_dependabot_alerts %} only relate to insecure dependencies in manifests and lockfiles? diff --git a/content/code-security/getting-started/adding-a-security-policy-to-your-repository.md b/content/code-security/getting-started/adding-a-security-policy-to-your-repository.md index 2289412629..1f00d6d1a2 100644 --- a/content/code-security/getting-started/adding-a-security-policy-to-your-repository.md +++ b/content/code-security/getting-started/adding-a-security-policy-to-your-repository.md @@ -39,7 +39,7 @@ After someone reports a security vulnerability in your project, you can use {% d {% data reusables.repositories.github-security-lab %} {% endif %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} By making security reporting instructions clearly available, you make it easy for your users to report any security vulnerabilities they find in your repository using your preferred communication channel. {% endif %} diff --git a/content/code-security/secret-scanning/secret-scanning-patterns.md b/content/code-security/secret-scanning/secret-scanning-patterns.md index e57b508c04..66283bcfae 100644 --- a/content/code-security/secret-scanning/secret-scanning-patterns.md +++ b/content/code-security/secret-scanning/secret-scanning-patterns.md @@ -97,7 +97,7 @@ This table lists the secrets supported by {% data variables.product.prodname_sec - Applies to public repositories, and to private repositories where {% data variables.product.prodname_GH_advanced_security %}, {% data variables.product.prodname_secret_scanning %}. - Includes high confidence tokens, which relate to supported patterns and specified custom patterns, as well as non-provider tokens such as private keys, which usually have a higher ratio of false positives. - For {% data variables.product.prodname_secret_scanning %} to scan for non-provider patterns, the detection of non-provider patterns must be enabled for the repository or the organization. For more information, see "[AUTOTITLE](/code-security/secret-scanning/configuring-secret-scanning-for-your-repositories)." - {% data reusables.secret-scanning.non-provider-patterns-beta %}{% endif %}{% endif %}{% ifversion ghes or ghae %} + {% data reusables.secret-scanning.non-provider-patterns-beta %}{% endif %}{% endif %}{% ifversion ghes %} - **{% data variables.product.prodname_secret_scanning_caps %} alert**—token for which leaks are reported to users on {% data variables.product.prodname_dotcom %}.{% ifversion secret-scanning-non-provider-patterns %} - Applies to private repositories where {% data variables.product.prodname_GH_advanced_security %} and {% data variables.product.prodname_secret_scanning %} are enabled. - Includes high confidence tokens, which relate to supported patterns and specified custom patterns, as well as non-provider tokens such as private keys, which often result in false positives.{% else %} Applies to private repositories where {% data variables.product.prodname_GH_advanced_security %} and {% data variables.product.prodname_secret_scanning %} enabled.{% endif %}{% endif %} diff --git a/content/code-security/supply-chain-security/end-to-end-supply-chain/securing-code.md b/content/code-security/supply-chain-security/end-to-end-supply-chain/securing-code.md index b5b9485cff..22178c2729 100644 --- a/content/code-security/supply-chain-security/end-to-end-supply-chain/securing-code.md +++ b/content/code-security/supply-chain-security/end-to-end-supply-chain/securing-code.md @@ -96,7 +96,7 @@ You can configure {% data variables.product.prodname_secret_scanning %} to check Besides your code, you probably need to use secrets in other places. For example, to allow {% data variables.product.prodname_actions %} workflows, {% data variables.product.prodname_dependabot %}, or your {% data variables.product.prodname_github_codespaces %} development environment to communicate with other systems. For more information on how to securely store and use secrets, see "[AUTOTITLE](/actions/security-guides/encrypted-secrets)," "[AUTOTITLE](/code-security/dependabot/working-with-dependabot/configuring-access-to-private-registries-for-dependabot#storing-credentials-for-dependabot-to-use)," and "[AUTOTITLE](/codespaces/managing-your-codespaces/managing-encrypted-secrets-for-your-codespaces)." {% endif %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} Besides your code, you probably need to use secrets in other places. For example, to allow {% data variables.product.prodname_actions %} workflows{% ifversion ghes %} or {% data variables.product.prodname_dependabot %}{% endif %} to communicate with other systems. For more information on how to securely store and use secrets, see "[AUTOTITLE](/actions/security-guides/encrypted-secrets){% ifversion ghes %}" and "[AUTOTITLE](/code-security/dependabot/working-with-dependabot/configuring-access-to-private-registries-for-dependabot#storing-credentials-for-dependabot-to-use)."{% else %}."{% endif %} {% endif %} diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-supply-chain-security.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-supply-chain-security.md index 286cdb9298..70908cf209 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-supply-chain-security.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-supply-chain-security.md @@ -167,7 +167,7 @@ Any repository type: - **{% data variables.product.prodname_dependabot_version_updates %}**—not enabled by default. People with write permissions to a repository can enable {% data variables.product.prodname_dependabot_version_updates %}. For information about enabling version updates, see "[AUTOTITLE](/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates)." {% endif %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} - **Dependency graph** and **{% data variables.product.prodname_dependabot_alerts %}**—not enabled by default. Both features are configured at an enterprise level by the enterprise owner. For more information, see {% ifversion ghes %}"[AUTOTITLE](/admin/code-security/managing-supply-chain-security-for-your-enterprise/enabling-the-dependency-graph-for-your-enterprise)" and {% endif %}"[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise)." - **Dependency review**—available when dependency graph is enabled for {% data variables.location.product_location %} and {% data variables.product.prodname_advanced_security %} is enabled for the organization or repository. For more information, see "[AUTOTITLE](/get-started/learning-about-github/about-github-advanced-security)." {% endif %} diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md index fb845036a4..9091885642 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md @@ -50,7 +50,7 @@ Enterprise owners can configure the dependency graph at an enterprise level. For For each dependency, you can see its ecosystem, the manifest file in which it was found, and the license (where detected). Dependencies on private repositories, private packages, or unrecognized files are shown in plain text. If the package manager for the dependency is in a public repository, you can hover on the dependency name to display a pop-up with the associated repository information. {% endif %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} Any direct and indirect dependencies that are specified in the repository's manifest or lock files are listed{% ifversion ghes > 3.9 or ghae > 3.9%}.{% else %}, grouped by ecosystem.{% endif %} {% endif %} @@ -60,7 +60,7 @@ Dependencies submitted to a project using the Dependency submission API (beta) w If vulnerabilities have been detected in the repository, these are shown at the top of the view for users with access to {% data variables.product.prodname_dependabot_alerts %}. -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% note %} **Note:** {% data variables.product.product_name %} does not populate the **Dependents** view. diff --git a/content/get-started/onboarding/getting-started-with-your-github-account.md b/content/get-started/onboarding/getting-started-with-your-github-account.md index b804a539a9..a9f1d71340 100644 --- a/content/get-started/onboarding/getting-started-with-your-github-account.md +++ b/content/get-started/onboarding/getting-started-with-your-github-account.md @@ -40,7 +40,7 @@ For more information on all of {% data variables.product.prodname_dotcom %}'s pl To ensure you can use all the features in your {% data variables.product.product_name %} plan, verify your email address after signing up for a new account. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address)." {% endif %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} ### 1. Accessing your account @@ -145,7 +145,7 @@ To encourage collaborators in your repository, you need a community that encoura By adding files like contributing guidelines, a code of conduct, and a license to your repository you can create an environment where it's easier for collaborators to make meaningful, useful contributions. For more information, see "[AUTOTITLE](/communities/setting-up-your-project-for-healthy-contributions)." {% endif %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} By adding files like contributing guidelines, a code of conduct, and support resources to your repository you can create an environment where it's easier for collaborators to make meaningful, useful contributions. For more information, see "[AUTOTITLE](/communities/setting-up-your-project-for-healthy-contributions)." {% endif %} diff --git a/content/get-started/using-github/communicating-on-github.md b/content/get-started/using-github/communicating-on-github.md index 1f17541995..ccb8ce73a0 100644 --- a/content/get-started/using-github/communicating-on-github.md +++ b/content/get-started/using-github/communicating-on-github.md @@ -61,7 +61,7 @@ You can create and participate in issues, pull requests and team discussions, de ### Team discussions - can be started on your team's page for conversations that span across projects and don't belong in a specific issue or pull request. Instead of opening an issue in a repository to discuss an idea, you can include the entire team by having a conversation in a team discussion. -- allow you to hold discussions with your team about planning, analysis, design, user research and general project decision making in one place.{% ifversion ghes or ghae %} +- allow you to hold discussions with your team about planning, analysis, design, user research and general project decision making in one place.{% ifversion ghes %} - provide a collaborative experience outside the codebase, allowing the brainstorming of ideas. - often don’t have a clear owner. - often do not result in an actionable task.{% endif %} diff --git a/content/get-started/writing-on-github/editing-and-sharing-content-with-gists/creating-gists.md b/content/get-started/writing-on-github/editing-and-sharing-content-with-gists/creating-gists.md index e1bd713d71..63a73d0361 100644 --- a/content/get-started/writing-on-github/editing-and-sharing-content-with-gists/creating-gists.md +++ b/content/get-started/writing-on-github/editing-and-sharing-content-with-gists/creating-gists.md @@ -44,7 +44,7 @@ You can pin gists to your profile so other people can see them easily. For more {% endif %} -You can discover {% ifversion ghae %}internal{% else %}public{% endif %} gists others have created by going to the {% data variables.gists.gist_homepage %} and clicking **All Gists**. This will take you to a page of all gists sorted and displayed by time of creation or update. You can also search gists by language with {% data variables.gists.gist_search_url %}. {% ifversion ghes or ghae %}Gist search uses the same search syntax as [code search](/search-github/searching-on-github/searching-code).{% endif %} +You can discover {% ifversion ghae %}internal{% else %}public{% endif %} gists others have created by going to the {% data variables.gists.gist_homepage %} and clicking **All Gists**. This will take you to a page of all gists sorted and displayed by time of creation or update. You can also search gists by language with {% data variables.gists.gist_search_url %}. {% ifversion ghes %}Gist search uses the same search syntax as [code search](/search-github/searching-on-github/searching-code).{% endif %} Since gists are Git repositories, you can view their full commit history, complete with diffs. You can also fork or clone gists. For more information, see "[AUTOTITLE](/get-started/writing-on-github/editing-and-sharing-content-with-gists/forking-and-cloning-gists)." diff --git a/content/graphql/guides/managing-enterprise-accounts.md b/content/graphql/guides/managing-enterprise-accounts.md index 078ad7e99d..54f5296186 100644 --- a/content/graphql/guides/managing-enterprise-accounts.md +++ b/content/graphql/guides/managing-enterprise-accounts.md @@ -59,7 +59,7 @@ For some example queries, see "[An example query using the Enterprise Accounts A The enterprise account specific scopes are: - `admin:enterprise`: Gives full control of enterprises (includes `manage_runners:enterprise`, `manage_billing:enterprise` and `read:enterprise`) - - `manage_billing:enterprise`: Read and write enterprise billing data.{% ifversion ghes or ghae %} + - `manage_billing:enterprise`: Read and write enterprise billing data.{% ifversion ghes %} - `manage_runners:enterprise`: Access to manage GitHub Actions enterprise runners and runner-groups.{% endif %} - `read:enterprise`: Read enterprise profile data. diff --git a/content/issues/index.md b/content/issues/index.md index ff003b8aa7..cdf3809fe1 100644 --- a/content/issues/index.md +++ b/content/issues/index.md @@ -16,7 +16,7 @@ featuredLinks: guideCards: - /issues/planning-and-tracking-with-projects/customizing-views-in-your-project/changing-the-layout-of-a-view - /issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue - - '{% ifversion ghes or ghae %}/issues/organizing-your-work-with-project-boards/managing-project-boards/configuring-automation-for-project-boards{% endif %}' + - '{% ifversion ghes %}/issues/organizing-your-work-with-project-boards/managing-project-boards/configuring-automation-for-project-boards{% endif %}' - /issues/planning-and-tracking-with-projects/automating-your-project/automating-projects-using-actions popular: - /issues/tracking-your-work-with-issues/about-issues @@ -26,7 +26,7 @@ featuredLinks: - /communities/using-templates-to-encourage-useful-issues-and-pull-requests/about-issue-and-pull-request-templates - /issues/using-labels-and-milestones-to-track-work/managing-labels - /issues/tracking-your-work-with-issues/viewing-all-of-your-issues-and-pull-requests - - '{% ifversion ghes or ghae %}/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards{% endif %}' + - '{% ifversion ghes %}/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards{% endif %}' layout: product-landing beta_product: false versions: @@ -69,4 +69,3 @@ redirect_from: - /linking-a-pull-request-to-an-issue - /about-duplicate-issues-and-pull-requests --- - diff --git a/content/migrations/overview/migration-paths-to-github.md b/content/migrations/overview/migration-paths-to-github.md index 646ecd1d5d..5ceffb5574 100644 --- a/content/migrations/overview/migration-paths-to-github.md +++ b/content/migrations/overview/migration-paths-to-github.md @@ -94,7 +94,7 @@ Migrations from {% data variables.product.prodname_dotcom_the_website %} include - **Tooling**: Git CLI or GitHub Importer - **More information**: - "[AUTOTITLE](/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-an-external-git-repository-using-the-command-line)" - - "[AUTOTITLE]({% ifversion ghes or ghae %}/free-pro-team@latest{% endif %}/migrations/importing-source-code/using-github-importer/about-github-importer)" + - "[AUTOTITLE]({% ifversion ghes %}/free-pro-team@latest{% endif %}/migrations/importing-source-code/using-github-importer/about-github-importer)" ### Bitbucket Server or Bitbucket Data Center to {% data variables.product.prodname_dotcom_the_website %} @@ -122,7 +122,7 @@ Migrations from {% data variables.product.prodname_dotcom_the_website %} include - **Tooling**: Git CLI or GitHub Importer if the repository is accessible over the public internet - **More information**: - "[AUTOTITLE](/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-an-external-git-repository-using-the-command-line)" - - "[AUTOTITLE]({% ifversion ghes or ghae %}/free-pro-team@latest{% endif %}/migrations/importing-source-code/using-github-importer/about-github-importer)" + - "[AUTOTITLE]({% ifversion ghes %}/free-pro-team@latest{% endif %}/migrations/importing-source-code/using-github-importer/about-github-importer)" ### Any Mercurial repository to {% data variables.product.prodname_dotcom_the_website %} diff --git a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/overview-of-a-migration-between-github-products.md b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/overview-of-a-migration-between-github-products.md index 6eba448ac7..c75826c1b1 100644 --- a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/overview-of-a-migration-between-github-products.md +++ b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/overview-of-a-migration-between-github-products.md @@ -177,9 +177,9 @@ If you were using {% data variables.actions.hosted_runner %}s, self-hosted runne - To use runners at the organization or enterprise level, update your workflows. For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/using-self-hosted-runners-in-a-workflow)." 1. If you use {% data variables.actions.hosted_runner %}s, reconfigure your runners. - - Configure runner groups to control access to your runners. For more information, see "[AUTOTITLE]({% ifversion ghes or ghae %}/enterprise-cloud@latest{% endif %}/actions/using-github-hosted-runners/controlling-access-to-larger-runners)." - - Set up your {% data variables.actions.hosted_runner %}s. For more information, see "[AUTOTITLE]({% ifversion ghes or ghae %}/enterprise-cloud@latest{% endif %}/actions/using-github-hosted-runners/managing-larger-runners)." - - Update your workflows to point to your runners. For more information, see "[AUTOTITLE]({% ifversion ghes or ghae %}/enterprise-cloud@latest{% endif %}/actions/using-github-hosted-runners/running-jobs-on-larger-runners)." + - Configure runner groups to control access to your runners. For more information, see "[AUTOTITLE]({% ifversion ghes %}/enterprise-cloud@latest{% endif %}/actions/using-github-hosted-runners/controlling-access-to-larger-runners)." + - Set up your {% data variables.actions.hosted_runner %}s. For more information, see "[AUTOTITLE]({% ifversion ghes %}/enterprise-cloud@latest{% endif %}/actions/using-github-hosted-runners/managing-larger-runners)." + - Update your workflows to point to your runners. For more information, see "[AUTOTITLE]({% ifversion ghes %}/enterprise-cloud@latest{% endif %}/actions/using-github-hosted-runners/running-jobs-on-larger-runners)." 1. Re-add any encrypted secrets. - To use the browser, see "[AUTOTITLE](/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository)." diff --git a/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md b/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md index 709e07f3f7..e7bcf620a5 100644 --- a/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md +++ b/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md @@ -11,7 +11,7 @@ shortTitle: Integrate Jira allowTitleToDifferFromFilename: true --- -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% data reusables.profile.access_org %} {% data reusables.profile.org_settings %} 1. In the left sidebar, select **{% octicon "code" aria-hidden="true" %} Developer settings**, then click **OAuth Apps**. diff --git a/content/organizations/managing-programmatic-access-to-your-organization/about-programmatic-access-in-your-organization.md b/content/organizations/managing-programmatic-access-to-your-organization/about-programmatic-access-in-your-organization.md index 15876f6132..8353fdd206 100644 --- a/content/organizations/managing-programmatic-access-to-your-organization/about-programmatic-access-in-your-organization.md +++ b/content/organizations/managing-programmatic-access-to-your-organization/about-programmatic-access-in-your-organization.md @@ -53,7 +53,7 @@ If their organization uses SAML, organization owners can see each {% data variab {% endif %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} Site administrators can use the REST API to manage {% data variables.product.pat_generic %}s in their enterprise. For more information, see "[AUTOTITLE](/rest/enterprise-admin/users)" in the REST API documentation. diff --git a/content/packages/learn-github-packages/introduction-to-github-packages.md b/content/packages/learn-github-packages/introduction-to-github-packages.md index bb0fe232fa..2666957915 100644 --- a/content/packages/learn-github-packages/introduction-to-github-packages.md +++ b/content/packages/learn-github-packages/introduction-to-github-packages.md @@ -106,7 +106,7 @@ You can delete a package in the {% data variables.product.product_name %} user i When you use the GraphQL API to query and delete private packages, you must use the same {% data variables.product.pat_v1 %} you use to authenticate to {% data variables.product.prodname_registry %}. -For more information, see {% ifversion ghes or ghae %}"[AUTOTITLE](/packages/learn-github-packages/deleting-and-restoring-a-package)" and {% endif %}"[AUTOTITLE](/graphql/guides/forming-calls-with-graphql)." +For more information, see {% ifversion ghes %}"[AUTOTITLE](/packages/learn-github-packages/deleting-and-restoring-a-package)" and {% endif %}"[AUTOTITLE](/graphql/guides/forming-calls-with-graphql)." You can configure webhooks to subscribe to package-related events, such as when a package is published or updated. For more information, see the "[AUTOTITLE](/webhooks-and-events/webhooks/webhook-events-and-payloads#package)." diff --git a/content/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions.md b/content/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions.md index ff8a829a02..e14bd348e4 100644 --- a/content/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions.md +++ b/content/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions.md @@ -159,7 +159,7 @@ jobs: # This job publishes the package. `needs: run-npm-test` makes this job dependent on the `run-npm-test` job. build-and-push-image: runs-on: ubuntu-latest - needs: run-npm-test {% ifversion ghes or ghae %} + needs: run-npm-test {% ifversion ghes %} # Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job. permissions: contents: read diff --git a/content/packages/quickstart.md b/content/packages/quickstart.md index 6e5f820441..4b1156e121 100644 --- a/content/packages/quickstart.md +++ b/content/packages/quickstart.md @@ -22,7 +22,7 @@ In this guide, you'll create a {% data variables.product.prodname_actions %} wor 1. Clone the repository to your local machine. ```shell - git clone https://{% ifversion ghes or ghae %}YOUR-HOSTNAME{% else %}github.com{% endif %}/YOUR-USERNAME/YOUR-REPOSITORY.git + git clone https://{% ifversion ghes %}YOUR-HOSTNAME{% else %}github.com{% endif %}/YOUR-USERNAME/YOUR-REPOSITORY.git cd YOUR-REPOSITORY ``` @@ -40,7 +40,7 @@ In this guide, you'll create a {% data variables.product.prodname_actions %} wor package name: @YOUR-USERNAME/YOUR-REPOSITORY ... test command: exit 0 - ... + ... ``` 1. Run `npm install` to generate the `package-lock.json` file, then commit and push your changes to {% data variables.product.prodname_dotcom %}. @@ -53,7 +53,7 @@ In this guide, you'll create a {% data variables.product.prodname_actions %} wor ``` 1. Create a `.github/workflows` directory. In that directory, create a file named `release-package.yml`. -1. Copy the following YAML content into the `release-package.yml` file{% ifversion ghes or ghae %}, replacing `YOUR-HOSTNAME` with the name of your enterprise{% endif %}. +1. Copy the following YAML content into the `release-package.yml` file{% ifversion ghes %}, replacing `YOUR-HOSTNAME` with the name of your enterprise{% endif %}. ```yaml copy name: Node.js Package @@ -84,7 +84,7 @@ In this guide, you'll create a {% data variables.product.prodname_actions %} wor - uses: {% data reusables.actions.action-setup-node %} with: node-version: 16 - registry-url: {% ifversion ghes or ghae %}https://npm.YOUR-HOSTNAME.com/{% else %}https://npm.pkg.github.com/{% endif %} + registry-url: {% ifversion ghes %}https://npm.YOUR-HOSTNAME.com/{% else %}https://npm.pkg.github.com/{% endif %} - run: npm ci - run: npm publish env: diff --git a/content/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry.md b/content/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry.md index a16d40e2b5..d26480405f 100644 --- a/content/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry.md +++ b/content/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry.md @@ -35,7 +35,7 @@ You can authenticate to {% data variables.product.prodname_registry %} with Apac In the `servers` tag, add a child `server` tag with an `id`, replacing USERNAME with your {% data variables.product.prodname_dotcom %} username, and TOKEN with your {% data variables.product.pat_generic %}. -In the `repositories` tag, configure a repository by mapping the `id` of the repository to the `id` you added in the `server` tag containing your credentials. Replace {% ifversion ghes or ghae %}HOSTNAME with the host name of {% data variables.location.product_location %}, and{% endif %} OWNER with the name of the personal account or organization that owns the repository. Because uppercase letters aren't supported, you must use lowercase letters for the repository owner even if the {% data variables.product.prodname_dotcom %} user or organization name contains uppercase letters. +In the `repositories` tag, configure a repository by mapping the `id` of the repository to the `id` you added in the `server` tag containing your credentials. Replace {% ifversion ghes %}HOSTNAME with the host name of {% data variables.location.product_location %}, and{% endif %} OWNER with the name of the personal account or organization that owns the repository. Because uppercase letters aren't supported, you must use lowercase letters for the repository owner even if the {% data variables.product.prodname_dotcom %} user or organization name contains uppercase letters. If you want to interact with multiple repositories, you can add each repository to separate `repository` children in the `repositories` tag, mapping the `id` of each to the credentials in the `servers` tag. @@ -136,7 +136,7 @@ If you would like to publish multiple packages to the same repository, you can i For more information on creating a package, see the [maven.apache.org documentation](https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html). -1. Edit the `distributionManagement` element of the _pom.xml_ file located in your package directory, replacing {% ifversion ghes or ghae %}HOSTNAME with the host name of {% data variables.location.product_location %}, {% endif %}`OWNER` with the name of the personal account or organization that owns the repository and `REPOSITORY` with the name of the repository containing your project.{% ifversion ghes %} +1. Edit the `distributionManagement` element of the _pom.xml_ file located in your package directory, replacing {% ifversion ghes %}HOSTNAME with the host name of {% data variables.location.product_location %}, {% endif %}`OWNER` with the name of the personal account or organization that owns the repository and `REPOSITORY` with the name of the repository containing your project.{% ifversion ghes %} If your instance has subdomain isolation enabled:{% endif %} diff --git a/content/packages/working-with-a-github-packages-registry/working-with-the-docker-registry.md b/content/packages/working-with-a-github-packages-registry/working-with-the-docker-registry.md index 105e3060de..e698fdd6be 100644 --- a/content/packages/working-with-a-github-packages-registry/working-with-the-docker-registry.md +++ b/content/packages/working-with-a-github-packages-registry/working-with-the-docker-registry.md @@ -60,7 +60,7 @@ cat ~/TOKEN.txt | docker login https://docker.pkg.github.com -u USERNAME --passw {% endraw %} {% endif %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% ifversion ghes %} If your instance has subdomain isolation enabled: {% endif %} @@ -85,7 +85,7 @@ cat ~/TOKEN.txt | docker login HOSTNAME -u USERNAME --password-stdin {% endif %} -To use this example login command, replace `USERNAME` with your {% data variables.product.product_name %} username{% ifversion ghes or ghae %}, `HOSTNAME` with the URL for {% data variables.location.product_location %},{% endif %} and `~/TOKEN.txt` with the file path to your {% data variables.product.pat_generic %} for {% data variables.product.product_name %}. +To use this example login command, replace `USERNAME` with your {% data variables.product.product_name %} username{% ifversion ghes %}, `HOSTNAME` with the URL for {% data variables.location.product_location %},{% endif %} and `~/TOKEN.txt` with the file path to your {% data variables.product.pat_generic %} for {% data variables.product.product_name %}. For more information, see "[Docker login](https://docs.docker.com/engine/reference/commandline/login/#provide-a-password-using-stdin)." @@ -112,7 +112,7 @@ For more information, see "[Docker login](https://docs.docker.com/engine/referen > IMAGE_NAME VERSION IMAGE_ID 4 weeks ago 1.11MB ``` -1. Using the Docker image ID, tag the docker image, replacing OWNER with the name of the personal account or organization that owns the repository, REPOSITORY with the name of the repository containing your project, IMAGE_NAME with name of the package or image,{% ifversion ghes or ghae %} HOSTNAME with the hostname of {% data variables.location.product_location %},{% endif %} and VERSION with package version at build time. +1. Using the Docker image ID, tag the docker image, replacing OWNER with the name of the personal account or organization that owns the repository, REPOSITORY with the name of the repository containing your project, IMAGE_NAME with name of the package or image,{% ifversion ghes %} HOSTNAME with the hostname of {% data variables.location.product_location %},{% endif %} and VERSION with package version at build time. {% ifversion fpt or ghec %} ```shell @@ -137,7 +137,7 @@ For more information, see "[Docker login](https://docs.docker.com/engine/referen {% endif %} {% endif %} -1. If you haven't already built a docker image for the package, build the image, replacing OWNER with the name of the personal account or organization that owns the repository, REPOSITORY with the name of the repository containing your project, IMAGE_NAME with name of the package or image, VERSION with package version at build time,{% ifversion ghes or ghae %} HOSTNAME with the hostname of {% data variables.location.product_location %},{% endif %} and PATH to the image if it isn't in the current working directory. +1. If you haven't already built a docker image for the package, build the image, replacing OWNER with the name of the personal account or organization that owns the repository, REPOSITORY with the name of the repository containing your project, IMAGE_NAME with name of the package or image, VERSION with package version at build time,{% ifversion ghes %} HOSTNAME with the hostname of {% data variables.location.product_location %},{% endif %} and PATH to the image if it isn't in the current working directory. {% ifversion fpt or ghec %} ```shell @@ -263,7 +263,7 @@ $ docker push docker.HOSTNAME/octocat/octo-app/monalisa:1.0 {% data reusables.package_registry.docker_registry_deprecation_status %} -You can use the `docker pull` command to install a docker image from {% data variables.product.prodname_registry %}, replacing OWNER with the name of the personal account or organization that owns the repository, REPOSITORY with the name of the repository containing your project, IMAGE_NAME with name of the package or image,{% ifversion ghes or ghae %} HOSTNAME with the host name of {% data variables.location.product_location %}, {% endif %} and TAG_NAME with tag for the image you want to install. +You can use the `docker pull` command to install a docker image from {% data variables.product.prodname_registry %}, replacing OWNER with the name of the personal account or organization that owns the repository, REPOSITORY with the name of the repository containing your project, IMAGE_NAME with name of the package or image,{% ifversion ghes %} HOSTNAME with the host name of {% data variables.location.product_location %}, {% endif %} and TAG_NAME with tag for the image you want to install. {% ifversion fpt or ghec %} diff --git a/content/packages/working-with-a-github-packages-registry/working-with-the-npm-registry.md b/content/packages/working-with-a-github-packages-registry/working-with-the-npm-registry.md index c3e202bbf9..81ee3b6aa2 100644 --- a/content/packages/working-with-a-github-packages-registry/working-with-the-npm-registry.md +++ b/content/packages/working-with-a-github-packages-registry/working-with-the-npm-registry.md @@ -52,7 +52,7 @@ This registry supports granular permissions. {% data reusables.package_registry. You can authenticate to {% data variables.product.prodname_registry %} with npm by either editing your per-user _~/.npmrc_ file to include your {% data variables.product.pat_v1 %} or by logging in to npm on the command line using your username and {% data variables.product.pat_generic %}. -To authenticate by adding your {% data variables.product.pat_v1 %} to your _~/.npmrc_ file, edit the _~/.npmrc_ file for your project to include the following line, replacing {% ifversion ghes or ghae %}HOSTNAME with the host name of {% data variables.location.product_location %} and {% endif %}TOKEN with your {% data variables.product.pat_generic %}. Create a new _~/.npmrc_ file if one doesn't exist. +To authenticate by adding your {% data variables.product.pat_v1 %} to your _~/.npmrc_ file, edit the _~/.npmrc_ file for your project to include the following line, replacing {% ifversion ghes %}HOSTNAME with the host name of {% data variables.location.product_location %} and {% endif %}TOKEN with your {% data variables.product.pat_generic %}. Create a new _~/.npmrc_ file if one doesn't exist. {% ifversion ghes %} If your instance has subdomain isolation enabled: @@ -225,7 +225,7 @@ By default, you can only use npm packages hosted on your enterprise, and you wil ### Installing packages from other organizations -By default, you can only use {% data variables.product.prodname_registry %} packages from one organization. If you'd like to route package requests to multiple organizations and users, you can add additional lines to your _.npmrc_ file, replacing {% ifversion ghes or ghae %}`HOSTNAME` with the host name of {% data variables.location.product_location %} and {% endif %}`NAMESPACE` with the name of the personal account or organization {% ifversion packages-npm-v2 %}to which the package is scoped{% else %}that owns the repository containing the project{% endif %}. +By default, you can only use {% data variables.product.prodname_registry %} packages from one organization. If you'd like to route package requests to multiple organizations and users, you can add additional lines to your _.npmrc_ file, replacing {% ifversion ghes %}`HOSTNAME` with the host name of {% data variables.location.product_location %} and {% endif %}`NAMESPACE` with the name of the personal account or organization {% ifversion packages-npm-v2 %}to which the package is scoped{% else %}that owns the repository containing the project{% endif %}. {% ifversion ghes %} If your instance has subdomain isolation enabled: diff --git a/content/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry.md b/content/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry.md index 576a9bcf28..dffc013b7e 100644 --- a/content/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry.md +++ b/content/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry.md @@ -58,7 +58,7 @@ To authenticate to {% data variables.product.prodname_registry %} with the `dotn You must replace: - `USERNAME` with the name of your personal account on {% data variables.product.prodname_dotcom %}. - `TOKEN` with your {% data variables.product.pat_v1 %}. -- `NAMESPACE` with the name of the personal account or organization {% ifversion packages-nuget-v2 %}to which your packages are scoped{% else %}that owns the repository where your packages are hosted{% endif %}.{% ifversion ghes or ghae %} +- `NAMESPACE` with the name of the personal account or organization {% ifversion packages-nuget-v2 %}to which your packages are scoped{% else %}that owns the repository where your packages are hosted{% endif %}.{% ifversion ghes %} - `HOSTNAME` with the host name for {% data variables.location.product_location %}.{% endif %} {% ifversion ghes %}If your instance has subdomain isolation enabled: @@ -156,7 +156,7 @@ When publishing, {% ifversion packages-nuget-v2 %}if you are linking your packag - `1.0.0` with the version number of the package. - `OWNER` with the name of the personal account or organization that owns the repository to which you want to {% ifversion packages-nuget-v2 %}link your package{% else %}publish your package{% endif %}. - - `REPOSITORY` with the name of the repository to which you want to connect your package.{% ifversion ghes or ghae %} + - `REPOSITORY` with the name of the repository to which you want to connect your package.{% ifversion ghes %} - `HOSTNAME` with the host name for {% data variables.location.product_location %}.{% endif %} ``` xml diff --git a/content/packages/working-with-a-github-packages-registry/working-with-the-rubygems-registry.md b/content/packages/working-with-a-github-packages-registry/working-with-the-rubygems-registry.md index 3d2de53666..c11e09540d 100644 --- a/content/packages/working-with-a-github-packages-registry/working-with-the-rubygems-registry.md +++ b/content/packages/working-with-a-github-packages-registry/working-with-the-rubygems-registry.md @@ -132,7 +132,7 @@ For information on linking a published package with a repository, see "[AUTOTITL ## Publishing multiple packages to the same repository -To publish multiple gems to the same repository, you can include the URL to the {% data variables.product.prodname_dotcom %} repository in the `github_repo` field in `gem.metadata`. If you include this field, {% data variables.product.prodname_dotcom %} matches the repository based on this value, instead of using the gem name.{% ifversion ghes or ghae %} Replace HOSTNAME with the host name of {% data variables.location.product_location %}.{% endif %} +To publish multiple gems to the same repository, you can include the URL to the {% data variables.product.prodname_dotcom %} repository in the `github_repo` field in `gem.metadata`. If you include this field, {% data variables.product.prodname_dotcom %} matches the repository based on this value, instead of using the gem name.{% ifversion ghes %} Replace HOSTNAME with the host name of {% data variables.location.product_location %}.{% endif %} ```ruby gem.metadata = { "github_repo" => "ssh://{% ifversion fpt or ghec %}github.com{% else %}HOSTNAME{% endif %}/OWNER/REPOSITORY" } diff --git a/content/pages/index.md b/content/pages/index.md index 0febf26fc7..c6a0f02835 100644 --- a/content/pages/index.md +++ b/content/pages/index.md @@ -10,17 +10,17 @@ featuredLinks: - /pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site - /pages/getting-started-with-github-pages/creating-a-github-pages-site - '{% ifversion fpt or ghec %}/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site{% endif %}' - - '{% ifversion ghes or ghae %}/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll{% endif %}' + - '{% ifversion ghes %}/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll{% endif %}' - '{% ifversion ghec %}/pages/getting-started-with-github-pages/changing-the-visibility-of-your-github-pages-site{% endif %}' - - '{% ifversion ghes or ghae %}/pages/setting-up-a-github-pages-site-with-jekyll/adding-content-to-your-github-pages-site-using-jekyll{% endif %}' + - '{% ifversion ghes %}/pages/setting-up-a-github-pages-site-with-jekyll/adding-content-to-your-github-pages-site-using-jekyll{% endif %}' popular: - '{% ifversion fpt or ghec %}/pages/configuring-a-custom-domain-for-your-github-pages-site/about-custom-domains-and-github-pages{% endif %}' - /pages/setting-up-a-github-pages-site-with-jekyll/about-github-pages-and-jekyll - '{% ifversion fpt or ghec %}/pages/configuring-a-custom-domain-for-your-github-pages-site/troubleshooting-custom-domains-and-github-pages{% endif %}' - '{% ifversion fpt or ghec %}/pages/getting-started-with-github-pages/securing-your-github-pages-site-with-https{% endif %}' - - '{% ifversion ghes or ghae %}/pages/getting-started-with-github-pages/unpublishing-a-github-pages-site{% endif %}' - - '{% ifversion ghes or ghae %}/pages/setting-up-a-github-pages-site-with-jekyll/testing-your-github-pages-site-locally-with-jekyll{% endif %}' - - '{% ifversion ghes or ghae %}/pages/setting-up-a-github-pages-site-with-jekyll/adding-a-theme-to-your-github-pages-site-using-jekyll{% endif %}' + - '{% ifversion ghes %}/pages/getting-started-with-github-pages/unpublishing-a-github-pages-site{% endif %}' + - '{% ifversion ghes %}/pages/setting-up-a-github-pages-site-with-jekyll/testing-your-github-pages-site-locally-with-jekyll{% endif %}' + - '{% ifversion ghes %}/pages/setting-up-a-github-pages-site-with-jekyll/adding-a-theme-to-your-github-pages-site-using-jekyll{% endif %}' guideCards: - /pages/getting-started-with-github-pages/creating-a-custom-404-page-for-your-github-pages-site - /pages/setting-up-a-github-pages-site-with-jekyll/adding-a-theme-to-your-github-pages-site-using-jekyll diff --git a/content/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll.md b/content/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll.md index 69741ef91e..f8945450c3 100644 --- a/content/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll.md +++ b/content/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll.md @@ -119,7 +119,7 @@ Before you can use Jekyll to create a {% data variables.product.prodname_pages % git commit -m 'Initial GitHub pages site with Jekyll' ``` -1. Add your repository on {% data variables.location.product_location %} as a remote, replacing {% ifversion ghes or ghae %}HOSTNAME with your enterprise's hostname,{% endif %} USER with the account that owns the repository{% ifversion ghes or ghae %},{% endif %} and REPOSITORY with the name of the repository. +1. Add your repository on {% data variables.location.product_location %} as a remote, replacing {% ifversion ghes %}HOSTNAME with your enterprise's hostname,{% endif %} USER with the account that owns the repository{% ifversion ghes %},{% endif %} and REPOSITORY with the name of the repository. ```shell {% ifversion fpt or ghec %} diff --git a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github.md b/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github.md index 737e61d1a3..d5b51c28b4 100644 --- a/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github.md +++ b/content/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github.md @@ -18,7 +18,7 @@ shortTitle: Resolve merge conflicts --- You can only resolve merge conflicts on {% data variables.product.product_name %} that are caused by competing line changes, such as when people make different changes to the same line of the same file on different branches in your Git repository. For all other types of merge conflicts, you must resolve the conflict locally on the command line. For more information, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line)." -{% ifversion ghes or ghae %} +{% ifversion ghes %} If a site administrator disables the merge conflict editor for pull requests between repositories, you cannot use the conflict editor on {% data variables.product.product_name %} and must resolve merge conflicts on the command line. For example, if the merge conflict editor is disabled, you cannot use it on a pull request between a fork and upstream repository. {% endif %} @@ -36,7 +36,7 @@ If a site administrator disables the merge conflict editor for pull requests bet {% note %} - **Note:** If the **Resolve conflicts** button is deactivated, your pull request's merge conflict is too complex to resolve on {% data variables.product.product_name %}{% ifversion ghes or ghae %} or the site administrator has disabled the conflict editor for pull requests between repositories{% endif %}. You must resolve the merge conflict using an alternative Git client, or by using Git on the command line. For more information see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line)." + **Note:** If the **Resolve conflicts** button is deactivated, your pull request's merge conflict is too complex to resolve on {% data variables.product.product_name %}{% ifversion ghes %} or the site administrator has disabled the conflict editor for pull requests between repositories{% endif %}. You must resolve the merge conflict using an alternative Git client, or by using Git on the command line. For more information see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line)." {% endnote %} diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility.md index 4d72b3983a..e9c50a3c0f 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility.md +++ b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility.md @@ -42,7 +42,7 @@ If a public repository is made private, its public forks are split off into a ne In other words, a public repository's forks will remain public in their own separate repository network even after the upstream repository is made private. This allows the fork owners to continue to work and collaborate without interruption. If public forks were not moved into a separate network in this way, the owners of those forks would need to get the appropriate [access permissions](/get-started/learning-about-github/access-permissions-on-github) to pull changes from and submit pull requests to the (now private) upstream repository—even though they didn't need those permissions before. -{% ifversion ghes or ghae %} +{% ifversion ghes %} If a public repository has anonymous Git read access enabled and the repository is made private, all of the repository's forks will lose anonymous Git read access and return to the default disabled setting. If a forked repository is made public, repository administrators can re-enable anonymous Git read access. For more information, see "[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/enabling-anonymous-git-read-access-for-a-repository)." {% endif %} diff --git a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md index 8f6a7ed268..a111e58803 100644 --- a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md +++ b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors.md @@ -1,6 +1,6 @@ --- title: Creating a commit with multiple authors -intro: 'You can attribute a commit to more than one author by adding one or more `Co-authored-by` trailers to the commit''s message. Co-authored commits are visible on {% data variables.product.product_name %}{% ifversion ghes or ghae %} and can be included in the profile contributions graph and the repository''s statistics{% endif %}.' +intro: 'You can attribute a commit to more than one author by adding one or more `Co-authored-by` trailers to the commit''s message. Co-authored commits are visible on {% data variables.product.product_name %}{% ifversion ghes %} and can be included in the profile contributions graph and the repository''s statistics{% endif %}.' redirect_from: - /articles/creating-a-commit-with-multiple-authors - /github/committing-changes-to-your-project/creating-a-commit-with-multiple-authors @@ -82,7 +82,7 @@ The new commit and message will appear on {% data variables.location.product_loc ## Further reading -{% ifversion ghes or ghae %} +{% ifversion ghes %} - "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile)" - "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile)"{% endif %} - "[AUTOTITLE](/repositories/viewing-activity-and-data-for-your-repository/viewing-a-projects-contributors)" diff --git a/content/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches.md b/content/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches.md index b6a1ed7d76..041a025573 100644 --- a/content/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches.md +++ b/content/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches.md @@ -221,7 +221,7 @@ If someone force pushes to a branch, the force push may mean commits that other Enabling force pushes will not override any other branch protection rules. For example, if a branch requires a linear commit history, you cannot force push merge commits to that branch. -{% ifversion ghes or ghae %}You cannot enable force pushes for a protected branch if a site administrator has blocked force pushes to all branches in your repository. For more information, see "[AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise)." +{% ifversion ghes %}You cannot enable force pushes for a protected branch if a site administrator has blocked force pushes to all branches in your repository. For more information, see "[AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise)." If a site administrator has blocked force pushes to the default branch only, you can still enable force pushes for any other protected branch.{% endif %} diff --git a/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets.md b/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets.md index 08f455c07c..58abb8ef8a 100644 --- a/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets.md +++ b/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets.md @@ -140,7 +140,7 @@ If someone force pushes to a branch or tag, commits that other collaborators hav Enabling force pushes will not override any other rules. For example, if a branch requires a linear commit history, you cannot force push merge commits to that branch. -{% ifversion ghes or ghae %}You cannot enable force pushes for a branch if a site administrator has blocked force pushes to all branches in your repository. For more information, see "[AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise)." +{% ifversion ghes %}You cannot enable force pushes for a branch if a site administrator has blocked force pushes to all branches in your repository. For more information, see "[AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise)." If a site administrator has blocked force pushes to the default branch only, you can still enable force pushes for any other branch or tag.{% endif %} diff --git a/content/repositories/creating-and-managing-repositories/deleting-a-repository.md b/content/repositories/creating-and-managing-repositories/deleting-a-repository.md index ff8c6edbe3..cb4fe480f2 100644 --- a/content/repositories/creating-and-managing-repositories/deleting-a-repository.md +++ b/content/repositories/creating-and-managing-repositories/deleting-a-repository.md @@ -28,7 +28,7 @@ topics: {% endwarning %} -Some deleted repositories can be restored within 90 days of deletion. {% ifversion ghes or ghae %}Your site administrator may be able to restore a deleted repository for you. For more information, see "[AUTOTITLE](/admin/user-management/managing-repositories-in-your-enterprise/restoring-a-deleted-repository)." {% else %}For more information, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/restoring-a-deleted-repository)."{% endif %} +Some deleted repositories can be restored within 90 days of deletion. {% ifversion ghes %}Your site administrator may be able to restore a deleted repository for you. For more information, see "[AUTOTITLE](/admin/user-management/managing-repositories-in-your-enterprise/restoring-a-deleted-repository)." {% else %}For more information, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/restoring-a-deleted-repository)."{% endif %} {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-settings %} diff --git a/content/repositories/creating-and-managing-repositories/restoring-a-deleted-repository.md b/content/repositories/creating-and-managing-repositories/restoring-a-deleted-repository.md index f151ca28ef..28ac3a28a4 100644 --- a/content/repositories/creating-and-managing-repositories/restoring-a-deleted-repository.md +++ b/content/repositories/creating-and-managing-repositories/restoring-a-deleted-repository.md @@ -1,7 +1,7 @@ --- title: Restoring a deleted repository -intro: '{% ifversion ghes or ghae %}An enterprise owner{% elsif fpt or ghec %}You{% endif %} can restore some deleted repositories to recover their contents.' -permissions: '{% ifversion ghes or ghae %}{% elsif fpt or ghec %}Anyone can restore deleted repositories that were owned by their own personal account. Organization owners can restore deleted repositories that were owned by the organization.{% endif %}' +intro: '{% ifversion ghes %}An enterprise owner{% elsif fpt or ghec %}You{% endif %} can restore some deleted repositories to recover their contents.' +permissions: '{% ifversion ghes %}{% elsif fpt or ghec %}Anyone can restore deleted repositories that were owned by their own personal account. Organization owners can restore deleted repositories that were owned by the organization.{% endif %}' redirect_from: - /articles/restoring-a-deleted-repository - /github/administering-a-repository/restoring-a-deleted-repository @@ -16,7 +16,7 @@ topics: shortTitle: Restore deleted repository --- -{% ifversion ghes or ghae %} +{% ifversion ghes %} Usually, deleted repositories can be restored within 90 days by an enterprise owner{% ifversion ghes %} on {% data variables.location.product_location %}{% endif %}. For more information, see "[AUTOTITLE](/admin/user-management/managing-repositories-in-your-enterprise/restoring-a-deleted-repository)." diff --git a/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility.md b/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility.md index 31a760709a..f270970cb5 100644 --- a/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility.md +++ b/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility.md @@ -34,7 +34,7 @@ Members of an {% data variables.enterprise.prodname_emu_enterprise %} can only s We recommend reviewing the following caveats before you change the visibility of a repository. -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% warning %} diff --git a/content/repositories/viewing-activity-and-data-for-your-repository/viewing-a-projects-contributors.md b/content/repositories/viewing-activity-and-data-for-your-repository/viewing-a-projects-contributors.md index 9a4b8c2aea..d438008f08 100644 --- a/content/repositories/viewing-activity-and-data-for-your-repository/viewing-a-projects-contributors.md +++ b/content/repositories/viewing-activity-and-data-for-your-repository/viewing-a-projects-contributors.md @@ -19,7 +19,7 @@ shortTitle: View project contributors --- ## About contributors -You can view the top 100 contributors to a repository{% ifversion ghes or ghae %}, including commit co-authors,{% endif %} in the contributors graph. Merge commits and empty commits aren't counted as contributions for this graph. +You can view the top 100 contributors to a repository{% ifversion ghes %}, including commit co-authors,{% endif %} in the contributors graph. Merge commits and empty commits aren't counted as contributions for this graph. {% ifversion fpt or ghec %} You can also see a list of people who have contributed to the project's Python dependencies. To access this list of community contributors, visit `https://github.com/REPO-OWNER/REPO-NAME/graphs/contributors`. diff --git a/content/repositories/working-with-files/managing-large-files/configuring-git-large-file-storage.md b/content/repositories/working-with-files/managing-large-files/configuring-git-large-file-storage.md index 392ac6156a..f5a57541f2 100644 --- a/content/repositories/working-with-files/managing-large-files/configuring-git-large-file-storage.md +++ b/content/repositories/working-with-files/managing-large-files/configuring-git-large-file-storage.md @@ -17,7 +17,7 @@ If there are existing files in your repository that you'd like to use {% data va {% data reusables.large_files.resolving-upload-failures %} -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% tip %} diff --git a/content/rest/authentication/authenticating-to-the-rest-api.md b/content/rest/authentication/authenticating-to-the-rest-api.md index ec3135ce78..9c6cc119b3 100644 --- a/content/rest/authentication/authenticating-to-the-rest-api.md +++ b/content/rest/authentication/authenticating-to-the-rest-api.md @@ -106,7 +106,7 @@ If this is not possible, you can store your token as a secret and use the name o To make an authenticated request to the API in a {% data variables.product.prodname_actions %} workflow using {% data variables.product.prodname_cli %}, you can store the value of `GITHUB_TOKEN` as an environment variable, and use the `run` keyword to execute the {% data variables.product.prodname_cli %} `api` subcommand. For more information about the `run` keyword, see "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun)." -In the following example workflow, replace `PATH` with the path of the endpoint. For more information about the path, see "[AUTOTITLE](/rest/guides/getting-started-with-the-rest-api?tool=cli#path)."{% ifversion ghes or ghae %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} +In the following example workflow, replace `PATH` with the path of the endpoint. For more information about the path, see "[AUTOTITLE](/rest/guides/getting-started-with-the-rest-api?tool=cli#path)."{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} ```yaml jobs: @@ -124,7 +124,7 @@ jobs: To make an authenticated request to the API in a {% data variables.product.prodname_actions %} workflow using `curl`, you can store the value of `GITHUB_TOKEN` as an environment variable, and use the `run` keyword to execute a `curl` request to the API. For more information about the `run` keyword, see "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun)." -In the following example workflow, replace `PATH` with the path of the endpoint. For more information about the path, see "[AUTOTITLE](/rest/guides/getting-started-with-the-rest-api?tool=cli#path)."{% ifversion ghes or ghae %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} +In the following example workflow, replace `PATH` with the path of the endpoint. For more information about the path, see "[AUTOTITLE](/rest/guides/getting-started-with-the-rest-api?tool=cli#path)."{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} ```yaml copy jobs: diff --git a/content/rest/guides/scripting-with-the-rest-api-and-javascript.md b/content/rest/guides/scripting-with-the-rest-api-and-javascript.md index 63e3a10eb3..a5fd9a8832 100644 --- a/content/rest/guides/scripting-with-the-rest-api-and-javascript.md +++ b/content/rest/guides/scripting-with-the-rest-api-and-javascript.md @@ -41,12 +41,12 @@ If {% ifversion ghec or fpt %}these options are not possible{% else %}this is no If you want to use the {% data variables.product.company_short %} REST API for personal use, you can create a {% data variables.product.pat_generic %}. For more information about creating a {% data variables.product.pat_generic %}, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." -First, import `Octokit` from `octokit`. Then, pass your {% data variables.product.pat_generic %} when you create an instance of `Octokit`. In the following example, replace `YOUR-TOKEN` with a reference to your {% data variables.product.pat_generic %}.{% ifversion ghes or ghae %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} +First, import `Octokit` from `octokit`. Then, pass your {% data variables.product.pat_generic %} when you create an instance of `Octokit`. In the following example, replace `YOUR-TOKEN` with a reference to your {% data variables.product.pat_generic %}.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} ```javascript copy import { Octokit } from "octokit"; -const octokit = new Octokit({ {% ifversion ghes or ghae %} +const octokit = new Octokit({ {% ifversion ghes %} baseUrl: "{% data variables.product.api_url_code %}",{% endif %} auth: 'YOUR-TOKEN', }); @@ -56,14 +56,14 @@ const octokit = new Octokit({ {% ifversion ghes or ghae %} If you want to use the API on behalf of an organization or another user, {% data variables.product.company_short %} recommends that you use a {% data variables.product.prodname_github_app %}. If an endpoint is available to {% data variables.product.prodname_github_apps %}, the REST reference documentation for that endpoint will say "Works with {% data variables.product.prodname_github_apps %}." For more information, see "[AUTOTITLE](/apps/creating-github-apps/setting-up-a-github-app/creating-a-github-app)," "[AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/about-authentication-with-a-github-app)," and "[AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/identifying-and-authorizing-users-for-github-apps)." -Instead of importing `Octokit` from `octokit`, import `App`. In the following example, replace `APP_ID` with a reference to your app's ID. Replace `PRIVATE_KEY` with a reference to your app's private key. Replace `INSTALLATION_ID` with the ID of the installation of your app that you want to authenticate on behalf of. You can find your app's ID and generate a private key on the settings page for your app. For more information, see "[AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps)." You can get an installation ID with the `GET /users/{username}/installation`, `GET /repos/{owner}/{repo}/installation`, or `GET /orgs/{org}/installation` endpoints. For more information, see "[AUTOTITLE](/rest/apps/apps)" in the REST reference documentation.{% ifversion ghes or ghae %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} +Instead of importing `Octokit` from `octokit`, import `App`. In the following example, replace `APP_ID` with a reference to your app's ID. Replace `PRIVATE_KEY` with a reference to your app's private key. Replace `INSTALLATION_ID` with the ID of the installation of your app that you want to authenticate on behalf of. You can find your app's ID and generate a private key on the settings page for your app. For more information, see "[AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps)." You can get an installation ID with the `GET /users/{username}/installation`, `GET /repos/{owner}/{repo}/installation`, or `GET /orgs/{org}/installation` endpoints. For more information, see "[AUTOTITLE](/rest/apps/apps)" in the REST reference documentation.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} ```javascript copy import { App } from "octokit"; const app = new App({ appId: APP_ID, - privateKey: PRIVATE_KEY,{% ifversion ghes or ghae %} + privateKey: PRIVATE_KEY,{% ifversion ghes %} Octokit: Octokit.defaults({ baseUrl: "{% data variables.product.api_url_code %}", }),{% endif %} @@ -95,7 +95,7 @@ The script that the workflow runs uses `process.env.TOKEN` to authenticate: ```javascript copy import { Octokit } from "octokit"; -const octokit = new Octokit({ {% ifversion ghes or ghae %} +const octokit = new Octokit({ {% ifversion ghes %} baseUrl: "{% data variables.product.api_url_code %}",{% endif %} auth: process.env.TOKEN, }); @@ -103,12 +103,12 @@ const octokit = new Octokit({ {% ifversion ghes or ghae %} ### Instantiating without authentication -You can use the REST API without authentication, although you will have a lower rate limit and will not be able to use some endpoints. To create an instance of `Octokit` without authenticating, do not pass the `auth` argument.{% ifversion ghes or ghae %} Set the base URL to `{% data variables.product.api_url_code %}`. Replace `[hostname]` with the name of {% data variables.location.product_location %}.{% endif %} +You can use the REST API without authentication, although you will have a lower rate limit and will not be able to use some endpoints. To create an instance of `Octokit` without authenticating, do not pass the `auth` argument.{% ifversion ghes %} Set the base URL to `{% data variables.product.api_url_code %}`. Replace `[hostname]` with the name of {% data variables.location.product_location %}.{% endif %} ```javascript copy import { Octokit } from "octokit"; -const octokit = new Octokit({ {% ifversion ghes or ghae %} +const octokit = new Octokit({ {% ifversion ghes %} baseUrl: "{% data variables.product.api_url_code %}", {% endif %}}); ``` @@ -364,7 +364,7 @@ The `getChangedFiles` function gets all of the files changed for a pull request. ```javascript copy import { Octokit } from "octokit"; -const octokit = new Octokit({ {% ifversion ghes or ghae %} +const octokit = new Octokit({ {% ifversion ghes %} baseUrl: "{% data variables.product.api_url_code %}",{% endif %} auth: 'YOUR-TOKEN', }); diff --git a/content/rest/guides/scripting-with-the-rest-api-and-ruby.md b/content/rest/guides/scripting-with-the-rest-api-and-ruby.md index e26509a91b..2d0acd4c67 100644 --- a/content/rest/guides/scripting-with-the-rest-api-and-ruby.md +++ b/content/rest/guides/scripting-with-the-rest-api-and-ruby.md @@ -53,7 +53,7 @@ octokit = Octokit::Client.new(access_token: 'YOUR-TOKEN') If you want to use the API on behalf of an organization or another user, {% data variables.product.company_short %} recommends that you use a {% data variables.product.prodname_github_app %}. If an endpoint is available to {% data variables.product.prodname_github_apps %}, the REST reference documentation for that endpoint will say "Works with {% data variables.product.prodname_github_app %}." For more information, see "[AUTOTITLE](/apps/creating-github-apps/setting-up-a-github-app/creating-a-github-app)," "[AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/about-authentication-with-a-github-app)," and "[AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/identifying-and-authorizing-users-for-github-apps)." -Instead of requiring `octokit`, create an instance of `Octokit::Client` by passing your {% data variables.product.prodname_github_app %}'s information as options. In the following example, replace `APP_ID` with your app's ID, `PRIVATE_KEY` with your app's private key, and `INSTALLATION_ID` with the ID of the installation of your app that you want to authenticate on behalf of. You can find your app's ID and generate a private key on the settings page for your app. For more information, see "[AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps)." You can get an installation ID with the `GET /users/{username}/installation`, `GET /repos/{owner}/{repo}/installation`, or `GET /orgs/{org}/installation` endpoints. For more information, see "[AUTOTITLE](/rest/apps/apps)" in the REST reference documentation.{% ifversion ghes or ghae %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} +Instead of requiring `octokit`, create an instance of `Octokit::Client` by passing your {% data variables.product.prodname_github_app %}'s information as options. In the following example, replace `APP_ID` with your app's ID, `PRIVATE_KEY` with your app's private key, and `INSTALLATION_ID` with the ID of the installation of your app that you want to authenticate on behalf of. You can find your app's ID and generate a private key on the settings page for your app. For more information, see "[AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps)." You can get an installation ID with the `GET /users/{username}/installation`, `GET /repos/{owner}/{repo}/installation`, or `GET /orgs/{org}/installation` endpoints. For more information, see "[AUTOTITLE](/rest/apps/apps)" in the REST reference documentation.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} ```ruby copy require 'octokit' diff --git a/content/rest/using-the-rest-api/using-pagination-in-the-rest-api.md b/content/rest/using-the-rest-api/using-pagination-in-the-rest-api.md index c1487dd269..b098d6282b 100644 --- a/content/rest/using-the-rest-api/using-pagination-in-the-rest-api.md +++ b/content/rest/using-the-rest-api/using-pagination-in-the-rest-api.md @@ -96,7 +96,7 @@ For example, this script gets all of the issues from the `octocat/Spoon-Knife` r ```javascript copy import { Octokit } from "octokit"; -const octokit = new Octokit({ {% ifversion ghes or ghae %} +const octokit = new Octokit({ {% ifversion ghes %} baseUrl: "{% data variables.product.api_url_code %}", {% endif %}}); @@ -123,7 +123,7 @@ The `getPaginatedData` function makes a request to an endpoint with `octokit.req ```javascript copy import { Octokit } from "octokit"; -const octokit = new Octokit({ {% ifversion ghes or ghae %} +const octokit = new Octokit({ {% ifversion ghes %} baseUrl: "{% data variables.product.api_url_code %}", {% endif %}}); diff --git a/content/search-github/getting-started-with-searching-on-github/about-searching-on-github.md b/content/search-github/getting-started-with-searching-on-github/about-searching-on-github.md index e6cdf23813..30b96dea84 100644 --- a/content/search-github/getting-started-with-searching-on-github/about-searching-on-github.md +++ b/content/search-github/getting-started-with-searching-on-github/about-searching-on-github.md @@ -42,7 +42,7 @@ After typing a search query, you can press **Enter** to go to the full search re {% ifversion fpt or ghes or ghec %} - {% data reusables.search.required_login %}{% endif %} - {% data variables.product.prodname_pages %} sites are not searchable on {% data variables.product.product_name %}. However you can search the source content if it exists in the default branch of a repository, using code search. For more information, see "[AUTOTITLE]{% ifversion code-search-code-view %}(/search-github/github-code-search/understanding-github-code-search-syntax){% else %}(/search-github/searching-on-github/searching-code){% endif %}." For more information about {% data variables.product.prodname_pages %}, see "[AUTOTITLE](/pages/getting-started-with-github-pages/about-github-pages)" -- Currently our search doesn't support exact matching.{% ifversion ghes or ghae %} +- Currently our search doesn't support exact matching.{% ifversion ghes %} - Whenever you are searching in code files, only the first two results in each file will be returned.{% endif %} {% endnote %} diff --git a/content/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax.md b/content/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax.md index 4491caa52a..c420e33189 100644 --- a/content/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax.md +++ b/content/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax.md @@ -95,7 +95,7 @@ If your search query contains whitespace, you will need to surround it with quot - [cats NOT "hello world"](https://github.com/search?utf8=✓&q=cats+NOT+"hello+world"&type=Repositories) matches repositories with the word "cats" but not the words "hello world." - [build label:"bug fix"](https://github.com/search?utf8=%E2%9C%93&q=build+label%3A%22bug+fix%22&type=Issues) matches issues with the word "build" that have the label "bug fix." -{% ifversion ghes or ghae %} Some non-alphanumeric symbols, such as spaces, are dropped from code search queries within quotation marks, so results can be unexpected.{% endif %} +{% ifversion ghes %} Some non-alphanumeric symbols, such as spaces, are dropped from code search queries within quotation marks, so results can be unexpected.{% endif %} ## Queries with usernames diff --git a/content/search-github/index.md b/content/search-github/index.md index 7067f23f45..ed0d2275a5 100644 --- a/content/search-github/index.md +++ b/content/search-github/index.md @@ -6,7 +6,7 @@ introLinks: featuredLinks: startHere: - /search-github/searching-on-github/searching-issues-and-pull-requests - - '{% ifversion ghes or ghae %}/search-github/searching-on-github/searching-code{% endif %}' + - '{% ifversion ghes %}/search-github/searching-on-github/searching-code{% endif %}' - /search-github/github-code-search/understanding-github-code-search-syntax - /search-github/searching-on-github/searching-for-repositories - /search-github/searching-on-github/searching-commits @@ -41,4 +41,3 @@ children: - /github-code-search shortTitle: Search on GitHub --- - diff --git a/content/search-github/searching-on-github/searching-in-forks.md b/content/search-github/searching-on-github/searching-in-forks.md index a45790fb23..525715744e 100644 --- a/content/search-github/searching-on-github/searching-in-forks.md +++ b/content/search-github/searching-on-github/searching-in-forks.md @@ -16,7 +16,7 @@ topics: To show forks in repository search results, add `fork:true` or `fork:only` to your query. For more information, see "[AUTOTITLE](/search-github/searching-on-github/searching-for-repositories)." -{% ifversion ghes or ghae %}Forks are only indexed for code search when they have more stars than the parent repository. You will not be able to search the code in a fork that has fewer stars than its parent. To show forks with more stars than the parent repository in code search results, add `fork:true` or `fork:only` to your query. For more information, see "[AUTOTITLE](/search-github/searching-on-github/searching-code)."{% endif %} +{% ifversion ghes %}Forks are only indexed for code search when they have more stars than the parent repository. You will not be able to search the code in a fork that has fewer stars than its parent. To show forks with more stars than the parent repository in code search results, add `fork:true` or `fork:only` to your query. For more information, see "[AUTOTITLE](/search-github/searching-on-github/searching-code)."{% endif %} {% note %} diff --git a/content/search-github/searching-on-github/searching-issues-and-pull-requests.md b/content/search-github/searching-on-github/searching-issues-and-pull-requests.md index c4d5759a07..9d3b91717d 100644 --- a/content/search-github/searching-on-github/searching-issues-and-pull-requests.md +++ b/content/search-github/searching-on-github/searching-issues-and-pull-requests.md @@ -19,7 +19,7 @@ You can search for issues and pull requests globally across all of {% data varia {% tip %} -**Tips:**{% ifversion ghes or ghae %} +**Tips:**{% ifversion ghes %} - This article contains example searches on the {% data variables.product.prodname_dotcom %}.com website, but you can use the same search filters on {% data variables.location.product_location %}.{% endif %} - For a list of search syntaxes that you can add to any search qualifier to further improve your results, see "[AUTOTITLE](/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax)". - Use quotations around multi-word search terms. For example, if you want to search for issues with the label "In progress," you'd search for `label:"in progress"`. Search is not case sensitive. diff --git a/content/webhooks/testing-and-troubleshooting-webhooks/troubleshooting-webhooks.md b/content/webhooks/testing-and-troubleshooting-webhooks/troubleshooting-webhooks.md index 1587b8b439..b66cfab664 100644 --- a/content/webhooks/testing-and-troubleshooting-webhooks/troubleshooting-webhooks.md +++ b/content/webhooks/testing-and-troubleshooting-webhooks/troubleshooting-webhooks.md @@ -33,11 +33,11 @@ If you are not receiving the webhook deliveries that you expect, you should iden 1. Look at the logs for your server. The information in the logs depends on the code that your server runs to handle webhook deliveries. To help you diagnose problems on your server, you may want to add additional log statements to your code. -## Cannot have more than {% ifversion ghes or ghae %}250{% else %}20{% endif %} webhooks +## Cannot have more than {% ifversion ghes %}250{% else %}20{% endif %} webhooks -You can create up to {% ifversion ghes or ghae %}250{% else %}20{% endif %} {% ifversion ghec or ghes or ghae %} repository, organization, or global {% else %} repository or organization {% endif %}webhooks for each event type. If you attempt to create more, you will receive an error stating that you cannot have more than {% ifversion ghes or ghae %}250{% else %}20{% endif %} webhooks. +You can create up to {% ifversion ghes %}250{% else %}20{% endif %} {% ifversion ghec or ghes or ghae %} repository, organization, or global {% else %} repository or organization {% endif %}webhooks for each event type. If you attempt to create more, you will receive an error stating that you cannot have more than {% ifversion ghes %}250{% else %}20{% endif %} webhooks. -If you require more than {% ifversion ghes or ghae %}250{% else %}20{% endif %} webhooks, you can run a proxy that receives webhooks from {% data variables.product.company_short %} and forwards them to an unlimited number of destination URLs. +If you require more than {% ifversion ghes %}250{% else %}20{% endif %} webhooks, you can run a proxy that receives webhooks from {% data variables.product.company_short %} and forwards them to an unlimited number of destination URLs. ## URL host localhost is not supported diff --git a/content/webhooks/types-of-webhooks.md b/content/webhooks/types-of-webhooks.md index 5ee71c8814..aafca42ece 100644 --- a/content/webhooks/types-of-webhooks.md +++ b/content/webhooks/types-of-webhooks.md @@ -30,7 +30,7 @@ For more information, see "[AUTOTITLE](/webhooks/about-webhooks)." You can create webhooks in a repository to subscribe to events that occur in that repository. You must be a repository owner or have admin access in the repository to create and manage webhooks in a repository. You cannot create, edit, or delete webhooks in a repository where you do not have the required permissions. -You can create multiple webhooks in a single repository. However, you can only create up to {% ifversion ghes or ghae %}250{% else %}20{% endif %} webhooks that subscribe to each individual event type. For example, in a single repository you could only create up to {% ifversion ghes or ghae %}250{% else %}20{% endif %} different webhooks that each subscribe to the `push` event. +You can create multiple webhooks in a single repository. However, you can only create up to {% ifversion ghes %}250{% else %}20{% endif %} webhooks that subscribe to each individual event type. For example, in a single repository you could only create up to {% ifversion ghes %}250{% else %}20{% endif %} different webhooks that each subscribe to the `push` event. You can use the {% data variables.product.prodname_dotcom %} web interface or the REST API to manage repository webhooks. For more information, see "[AUTOTITLE](/webhooks/using-webhooks/creating-webhooks#creating-a-repository-webhook)," "[AUTOTITLE](/webhooks/using-webhooks/editing-webhooks#editing-a-repository-webhook)," and "[AUTOTITLE](/webhooks/using-webhooks/disabling-webhooks#disabling-a-repository-webhook)." For more information about using the REST API to manage repository webhooks, see "[AUTOTITLE](/rest/webhooks)." @@ -40,7 +40,7 @@ You can create webhooks in an organization to subscribe to events that occur in You must be an organization owner to create and manage webhooks in an organization. -You can create multiple webhooks in a single organization. However, you can only create up to {% ifversion ghes or ghae %}250{% else %}20{% endif %} webhooks that subscribe to each individual event type. For example, in a single organization you could only create up to {% ifversion ghes or ghae %}250{% else %}20{% endif %} different webhooks that each subscribe to the `push` event. +You can create multiple webhooks in a single organization. However, you can only create up to {% ifversion ghes %}250{% else %}20{% endif %} webhooks that subscribe to each individual event type. For example, in a single organization you could only create up to {% ifversion ghes %}250{% else %}20{% endif %} different webhooks that each subscribe to the `push` event. You can use the {% data variables.product.prodname_dotcom %} web interface or the REST API to manage organization webhooks. For more information, see "[AUTOTITLE](/webhooks/using-webhooks/creating-webhooks#creating-an-organization-webhook)," "[AUTOTITLE](/webhooks/using-webhooks/editing-webhooks#editing-an-organization-webhook)," and "[AUTOTITLE](/webhooks/using-webhooks/disabling-webhooks#disabling-an-organization-webhook)." For more information about using the REST API to manage organization webhooks, see "[AUTOTITLE](/rest/orgs/webhooks)." @@ -50,7 +50,7 @@ You can use the {% data variables.product.prodname_dotcom %} web interface or th Enterprise owners can create global webhooks to subscribe to events that occur within their enterprise or within organizations and repositories owned by the enterprise. -You can create multiple webhooks in a single enterprise. However, you can only create up to {% ifversion ghes or ghae %}250{% else %}20{% endif %} webhooks that subscribe to each individual event type. For example, in a single enterprise you could only create up to {% ifversion ghes or ghae %}250{% else %}20{% endif %} different webhooks that each subscribe to the `membership` event. +You can create multiple webhooks in a single enterprise. However, you can only create up to {% ifversion ghes %}250{% else %}20{% endif %} webhooks that subscribe to each individual event type. For example, in a single enterprise you could only create up to {% ifversion ghes %}250{% else %}20{% endif %} different webhooks that each subscribe to the `membership` event. You can use the {% data variables.product.prodname_dotcom %} web interface to manage global webhooks. For more information, see "[AUTOTITLE](/webhooks/using-webhooks/creating-webhooks#creating-a-global-webhook-for-a-github-enterprise)," "[AUTOTITLE](/webhooks/using-webhooks/editing-webhooks#editing-a-global-webhook-for-a-github-enterprise)," and "[AUTOTITLE](/webhooks/using-webhooks/disabling-webhooks#disabling-a-global-webhook-for-a-github-enterprise)." {% data reusables.enterprise_user_management.manage-global-webhooks-api %} @@ -68,7 +68,7 @@ You can use the {% data variables.product.prodname_dotcom %} web interface to ma ## {% data variables.product.prodname_sponsors %} webhooks -You can create webhooks to subscribe to events relating to {% data variables.product.prodname_sponsors %}. You can only create up to {% ifversion ghes or ghae %}250{% else %}20{% endif %} webhooks for a {% data variables.product.prodname_sponsors %} account. +You can create webhooks to subscribe to events relating to {% data variables.product.prodname_sponsors %}. You can only create up to {% ifversion ghes %}250{% else %}20{% endif %} webhooks for a {% data variables.product.prodname_sponsors %} account. You must be an account owner or have admin access in the sponsored account to manage sponsorship webhooks. diff --git a/content/webhooks/using-webhooks/automatically-redelivering-failed-deliveries-for-a-github-app-webhook.md b/content/webhooks/using-webhooks/automatically-redelivering-failed-deliveries-for-a-github-app-webhook.md index 7f47430386..8a651dac00 100644 --- a/content/webhooks/using-webhooks/automatically-redelivering-failed-deliveries-for-a-github-app-webhook.md +++ b/content/webhooks/using-webhooks/automatically-redelivering-failed-deliveries-for-a-github-app-webhook.md @@ -92,14 +92,14 @@ jobs: # - Replace `YOUR_PRIVATE_KEY_SECRET_NAME` with the name of the secret where you stored your private key. # - Replace `YOUR_TOKEN_SECRET_NAME` with the name of the secret where you stored your {% data variables.product.pat_generic %}. # - Replace `YOUR_LAST_REDELIVERY_VARIABLE_NAME` with the name that you want to use for a configuration variable that will be stored in the repository where this workflow is stored. The name can be any string that contains only alphanumeric characters and `_`, and does not start with `GITHUB_` or a number. For more information, see "[AUTOTITLE](/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows)." - {% ifversion ghes or ghae %}# - Replace `YOUR_HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} + {% ifversion ghes %}# - Replace `YOUR_HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} - name: Run script env: APP_ID: {% raw %}${{ secrets.YOUR_APP_ID_SECRET_NAME }}{% endraw %} PRIVATE_KEY: {% raw %}${{ secrets.YOUR_PRIVATE_KEY_SECRET_NAME }}{% endraw %} TOKEN: {% raw %}${{ secrets.YOUR_TOKEN_SECRET_NAME }}{% endraw %} LAST_REDELIVERY_VARIABLE_NAME: 'YOUR_LAST_REDELIVERY_VARIABLE_NAME' - {% ifversion ghes or ghae %}HOSTNAME: 'YOUR_HOSTNAME'{% endif %} + {% ifversion ghes %}HOSTNAME: 'YOUR_HOSTNAME'{% endif %} WORKFLOW_REPO: {% raw %}${{ github.event.repository.name }}{% endraw %} WORKFLOW_REPO_OWNER: {% raw %}${{ github.repository_owner }}{% endraw %} run: | @@ -123,25 +123,25 @@ async function checkAndRedeliverWebhooks() { const PRIVATE_KEY = process.env.PRIVATE_KEY; const TOKEN = process.env.TOKEN; const LAST_REDELIVERY_VARIABLE_NAME = process.env.LAST_REDELIVERY_VARIABLE_NAME; - {% ifversion ghes or ghae %}const HOSTNAME = process.env.HOSTNAME;{% endif %} + {% ifversion ghes %}const HOSTNAME = process.env.HOSTNAME;{% endif %} const WORKFLOW_REPO_NAME = process.env.WORKFLOW_REPO; const WORKFLOW_REPO_OWNER = process.env.WORKFLOW_REPO_OWNER; - // Create an instance of the octokit `App` using the {% ifversion ghes or ghae %}app ID, private key, and hostname{% else %}app ID and private key{% endif %} values that were set in the {% data variables.product.prodname_actions %} workflow. + // Create an instance of the octokit `App` using the {% ifversion ghes %}app ID, private key, and hostname{% else %}app ID and private key{% endif %} values that were set in the {% data variables.product.prodname_actions %} workflow. // // This will be used to make API requests to the webhook-related endpoints. const app = new App({ appId: APP_ID, - privateKey: PRIVATE_KEY,{% ifversion ghes or ghae %} + privateKey: PRIVATE_KEY,{% ifversion ghes %} Octokit: Octokit.defaults({ baseUrl: "{% data variables.product.api_url_code %}", }),{% endif %} }); - // Create an instance of `Octokit` using the token{% ifversion ghes or ghae %} and hostname{% endif %} values that were set in the {% data variables.product.prodname_actions %} workflow. + // Create an instance of `Octokit` using the token{% ifversion ghes %} and hostname{% endif %} values that were set in the {% data variables.product.prodname_actions %} workflow. // // This will be used to update the configuration variable that stores the last time that this script ran. - const octokit = new Octokit({ {% ifversion ghes or ghae %} + const octokit = new Octokit({ {% ifversion ghes %} baseUrl: "{% data variables.product.api_url_code %}",{% endif %} auth: TOKEN, }); diff --git a/content/webhooks/using-webhooks/automatically-redelivering-failed-deliveries-for-a-repository-webhook.md b/content/webhooks/using-webhooks/automatically-redelivering-failed-deliveries-for-a-repository-webhook.md index acdcf6eee4..ea3248818f 100644 --- a/content/webhooks/using-webhooks/automatically-redelivering-failed-deliveries-for-a-repository-webhook.md +++ b/content/webhooks/using-webhooks/automatically-redelivering-failed-deliveries-for-a-repository-webhook.md @@ -89,7 +89,7 @@ jobs: # - Replace `YOUR_REPO_NAME` with the name of the repository where the webhook was created. # - Replace `YOUR_HOOK_ID` with the ID of the webhook. # - Replace `YOUR_LAST_REDELIVERY_VARIABLE_NAME` with the name that you want to use for a configuration variable that will be stored in the repository where this workflow is stored. The name can be any string that contains only alphanumeric characters and `_`, and does not start with `GITHUB_` or a number. For more information, see "[AUTOTITLE](/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows)." - {% ifversion ghes or ghae %}# - Replace `YOUR_HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} + {% ifversion ghes %}# - Replace `YOUR_HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} - name: Run script env: TOKEN: {% raw %}${{ secrets.YOUR_SECRET_NAME }}{% endraw %} @@ -97,7 +97,7 @@ jobs: REPO_NAME: 'YOUR_REPO_NAME' HOOK_ID: 'YOUR_HOOK_ID' LAST_REDELIVERY_VARIABLE_NAME: 'YOUR_LAST_REDELIVERY_VARIABLE_NAME' - {% ifversion ghes or ghae %}HOSTNAME: 'YOUR_HOSTNAME'{% endif %} + {% ifversion ghes %}HOSTNAME: 'YOUR_HOSTNAME'{% endif %} WORKFLOW_REPO_NAME: {% raw %}${{ github.event.repository.name }}{% endraw %} WORKFLOW_REPO_OWNER: {% raw %}${{ github.repository_owner }}{% endraw %} run: | @@ -122,12 +122,12 @@ async function checkAndRedeliverWebhooks() { const REPO_NAME = process.env.REPO_NAME; const HOOK_ID = process.env.HOOK_ID; const LAST_REDELIVERY_VARIABLE_NAME = process.env.LAST_REDELIVERY_VARIABLE_NAME; - {% ifversion ghes or ghae %}const HOSTNAME = process.env.HOSTNAME;{% endif %} + {% ifversion ghes %}const HOSTNAME = process.env.HOSTNAME;{% endif %} const WORKFLOW_REPO_NAME = process.env.WORKFLOW_REPO_NAME; const WORKFLOW_REPO_OWNER = process.env.WORKFLOW_REPO_OWNER; - // Create an instance of `Octokit` using the token{% ifversion ghes or ghae %} and hostname{% endif %} values that were set in the {% data variables.product.prodname_actions %} workflow. - const octokit = new Octokit({ {% ifversion ghes or ghae %} + // Create an instance of `Octokit` using the token{% ifversion ghes %} and hostname{% endif %} values that were set in the {% data variables.product.prodname_actions %} workflow. + const octokit = new Octokit({ {% ifversion ghes %} baseUrl: "{% data variables.product.api_url_code %}",{% endif %} auth: TOKEN, }); diff --git a/content/webhooks/using-webhooks/automatically-redelivering-failed-deliveries-for-an-organization-webhook.md b/content/webhooks/using-webhooks/automatically-redelivering-failed-deliveries-for-an-organization-webhook.md index 5ff83e973f..5393438c90 100644 --- a/content/webhooks/using-webhooks/automatically-redelivering-failed-deliveries-for-an-organization-webhook.md +++ b/content/webhooks/using-webhooks/automatically-redelivering-failed-deliveries-for-an-organization-webhook.md @@ -88,14 +88,14 @@ jobs: # - Replace `YOUR_ORGANIZATION_NAME` with the name of the organization where the webhook was created. # - Replace `YOUR_HOOK_ID` with the ID of the webhook. # - Replace `YOUR_LAST_REDELIVERY_VARIABLE_NAME` with the name that you want to use for a configuration variable that will be stored in the repository where this workflow is stored. The name can be any string that contains only alphanumeric characters and `_`, and does not start with `GITHUB_` or a number. For more information, see "[AUTOTITLE](/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows)." - {% ifversion ghes or ghae %}# - Replace `YOUR_HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} + {% ifversion ghes %}# - Replace `YOUR_HOSTNAME` with the name of {% data variables.location.product_location %}.{% endif %} - name: Run script env: TOKEN: {% raw %}${{ secrets.YOUR_SECRET_NAME }}{% endraw %} ORGANIZATION_NAME: 'YOUR_ORGANIZATION_NAME' HOOK_ID: 'YOUR_HOOK_ID' LAST_REDELIVERY_VARIABLE_NAME: 'YOUR_LAST_REDELIVERY_VARIABLE_NAME' - {% ifversion ghes or ghae %}HOSTNAME: 'YOUR_HOSTNAME'{% endif %} + {% ifversion ghes %}HOSTNAME: 'YOUR_HOSTNAME'{% endif %} WORKFLOW_REPO_NAME: {% raw %}${{ github.event.repository.name }}{% endraw %} WORKFLOW_REPO_OWNER: {% raw %}${{ github.repository_owner }}{% endraw %} run: | @@ -119,12 +119,12 @@ async function checkAndRedeliverWebhooks() { const ORGANIZATION_NAME = process.env.ORGANIZATION_NAME; const HOOK_ID = process.env.HOOK_ID; const LAST_REDELIVERY_VARIABLE_NAME = process.env.LAST_REDELIVERY_VARIABLE_NAME; - {% ifversion ghes or ghae %}const HOSTNAME = process.env.HOSTNAME;{% endif %} + {% ifversion ghes %}const HOSTNAME = process.env.HOSTNAME;{% endif %} const WORKFLOW_REPO_NAME = process.env.WORKFLOW_REPO_NAME; const WORKFLOW_REPO_OWNER = process.env.WORKFLOW_REPO_OWNER; - // Create an instance of `Octokit` using the token{% ifversion ghes or ghae %} and hostname{% endif %} values that were set in the {% data variables.product.prodname_actions %} workflow. - const octokit = new Octokit({ {% ifversion ghes or ghae %} + // Create an instance of `Octokit` using the token{% ifversion ghes %} and hostname{% endif %} values that were set in the {% data variables.product.prodname_actions %} workflow. + const octokit = new Octokit({ {% ifversion ghes %} baseUrl: "{% data variables.product.api_url_code %}",{% endif %} auth: TOKEN, }); diff --git a/content/webhooks/using-webhooks/creating-webhooks.md b/content/webhooks/using-webhooks/creating-webhooks.md index b51b04ef9e..a074bb1b4e 100644 --- a/content/webhooks/using-webhooks/creating-webhooks.md +++ b/content/webhooks/using-webhooks/creating-webhooks.md @@ -71,7 +71,7 @@ After you create a new webhook, {% data variables.product.prodname_dotcom %} wil Enterprise owners can create a global webhook to subscribe to events that occur within their enterprise. -{% ifversion ghes or ghae %} +{% ifversion ghes %} You can use the {% data variables.product.company_short %} web interface or the REST API to create a global webhook. For more information about using the REST API to create a global webhook, see "[AUTOTITLE](/rest/enterprise-admin/global-webhooks)." diff --git a/content/webhooks/using-webhooks/disabling-webhooks.md b/content/webhooks/using-webhooks/disabling-webhooks.md index a12ab0665d..384e513054 100644 --- a/content/webhooks/using-webhooks/disabling-webhooks.md +++ b/content/webhooks/using-webhooks/disabling-webhooks.md @@ -17,7 +17,7 @@ topics: {% ifversion ghec %}You can disable a webhook that was previously enabled for a repository, organization, {% data variables.product.prodname_enterprise %}, {% data variables.product.prodname_marketplace %} account, {% data variables.product.prodname_sponsors %} account, or {% data variables.product.prodname_github_app %}.{% endif %} -{% ifversion ghes or ghae %}You can disable a webhook that was previously enabled for a repository, organization, {% data variables.product.prodname_enterprise %}, or {% data variables.product.prodname_github_app %}.{% endif %} +{% ifversion ghes %}You can disable a webhook that was previously enabled for a repository, organization, {% data variables.product.prodname_enterprise %}, or {% data variables.product.prodname_github_app %}.{% endif %} To disable a webhook, you can choose to deactivate or delete it. When you deactivate a webhook, the webhook deliveries will stop, and you can choose to reactivate the webhook at a later time. When you delete a webhook, it cannot be restored. @@ -52,7 +52,7 @@ You can use the {% data variables.product.prodname_dotcom %} web interface or th Enterprise owners can disable a global webhook in an {% data variables.product.prodname_enterprise %}. -{% ifversion ghes or ghae %} +{% ifversion ghes %} You can use the {% data variables.product.company_short %} web interface or the REST API to disable a global webhook. For more information about using the REST API to disable a global webhook, see "[AUTOTITLE](/rest/enterprise-admin/global-webhooks)." diff --git a/content/webhooks/using-webhooks/editing-webhooks.md b/content/webhooks/using-webhooks/editing-webhooks.md index 194700bd62..5121b8ea2e 100644 --- a/content/webhooks/using-webhooks/editing-webhooks.md +++ b/content/webhooks/using-webhooks/editing-webhooks.md @@ -47,7 +47,7 @@ You can use the {% data variables.product.prodname_dotcom %} web interface or th Enterprise owners can edit a global webhook to change any of the settings that were selected when the webhook was initially created. -{% ifversion ghes or ghae %} +{% ifversion ghes %} You can use the {% data variables.product.company_short %} web interface or the REST API to edit a global webhook. For more information about using the REST API to edit a global webhook, see "[AUTOTITLE](/rest/enterprise-admin/global-webhooks)." diff --git a/content/webhooks/using-webhooks/handling-failed-webhook-deliveries.md b/content/webhooks/using-webhooks/handling-failed-webhook-deliveries.md index ff44d4d9f0..9680f4a9a3 100644 --- a/content/webhooks/using-webhooks/handling-failed-webhook-deliveries.md +++ b/content/webhooks/using-webhooks/handling-failed-webhook-deliveries.md @@ -26,7 +26,7 @@ You can also write a script that checks for failed deliveries and attempts to re 1. Use the {% data variables.product.company_short %} REST API to fetch data about any webhook deliveries that were attempted since the last time that your script ran. For more information, see "[AUTOTITLE](/rest/webhooks/repo-deliveries#list-deliveries-for-a-repository-webhook)," "[AUTOTITLE](/rest/orgs/webhooks#list-deliveries-for-an-organization-webhook)," and "[AUTOTITLE](/rest/apps/webhooks#list-deliveries-for-an-app-webhook)." - {% ifversion fpt %}There are no API endpoints to get data about {% data variables.product.prodname_marketplace %} webhooks or {% data variables.product.prodname_sponsors %} webhooks.{% endif %}{% ifversion ghec %}There are no API endpoints to get data about {% data variables.product.prodname_marketplace %} webhooks, {% data variables.product.prodname_sponsors %} webhooks, or global webhooks.{% endif %}{% ifversion ghes or ghae %}There are no API endpoints to get data about global webhook deliveries.{% endif %} + {% ifversion fpt %}There are no API endpoints to get data about {% data variables.product.prodname_marketplace %} webhooks or {% data variables.product.prodname_sponsors %} webhooks.{% endif %}{% ifversion ghec %}There are no API endpoints to get data about {% data variables.product.prodname_marketplace %} webhooks, {% data variables.product.prodname_sponsors %} webhooks, or global webhooks.{% endif %}{% ifversion ghes %}There are no API endpoints to get data about global webhook deliveries.{% endif %} 1. Look at the fetched data to see if any deliveries failed. The data for a failed delivery will have a `status` value that is not `OK`. 1. Use the {% data variables.product.company_short %} REST API to redeliver any deliveries that failed. For more information, see "[AUTOTITLE](/rest/webhooks/repo-deliveries#redeliver-a-delivery-for-a-repository-webhook)," "[AUTOTITLE](/rest/orgs/webhooks#redeliver-a-delivery-for-an-organization-webhook)," and "[AUTOTITLE](/rest/apps/webhooks#redeliver-a-delivery-for-an-app-webhook)." diff --git a/content/webhooks/webhook-events-and-payloads.md b/content/webhooks/webhook-events-and-payloads.md index 406a89dda6..de0b98b32f 100644 --- a/content/webhooks/webhook-events-and-payloads.md +++ b/content/webhooks/webhook-events-and-payloads.md @@ -38,7 +38,7 @@ HTTP POST payloads that are delivered to your webhook's configured URL endpoint - `X-GitHub-Hook-ID`: The unique identifier of the webhook. - `X-GitHub-Event`: The name of the event that triggered the delivery. -- `X-GitHub-Delivery`: A globally unique identifier (GUID) to identify the delivery.{% ifversion ghes or ghae %} +- `X-GitHub-Delivery`: A globally unique identifier (GUID) to identify the delivery.{% ifversion ghes %} - `X-GitHub-Enterprise-Version`: The version of the {% data variables.product.prodname_ghe_server %} instance that sent the HTTP POST payload. - `X-GitHub-Enterprise-Host`: The hostname of the {% data variables.product.prodname_ghe_server %} instance that sent the HTTP POST payload.{% endif %}{% ifversion not ghae %} - `X-Hub-Signature`: This header is sent if the webhook is configured with a `secret`. This is the HMAC hex digest of the request body, and is generated using the SHA-1 hash function and the `secret` as the HMAC `key`. `X-Hub-Signature` is provided for compatibility with existing integrations. We recommend that you use the more secure `X-Hub-Signature-256` instead.{% endif %} @@ -56,7 +56,7 @@ You can choose to have payloads delivered in JSON format (`application/json`) or ```shell > POST /payload HTTP/2 -> X-GitHub-Delivery: 72d3162e-cc78-11e3-81ab-4c9367dc0958{% ifversion ghes or ghae %} +> X-GitHub-Delivery: 72d3162e-cc78-11e3-81ab-4c9367dc0958{% ifversion ghes %} > X-GitHub-Enterprise-Version: 2.15.0 > X-GitHub-Enterprise-Host: example.com{% endif %}{% ifversion not ghae %} > X-Hub-Signature: sha1=7d38cdd689735b008b3c702edd92eea23791c5f6{% endif %} diff --git a/data/reusables/actions/allow-specific-actions-intro.md b/data/reusables/actions/allow-specific-actions-intro.md index 72985b2292..62bc46f16f 100644 --- a/data/reusables/actions/allow-specific-actions-intro.md +++ b/data/reusables/actions/allow-specific-actions-intro.md @@ -6,11 +6,11 @@ When you choose {% data reusables.actions.policy-label-for-select-actions-workflows %}, local actions{% ifversion actions-workflow-policy %} and reusable workflows{% endif %} are allowed, and there are additional options for allowing other specific actions{% ifversion actions-workflow-policy %} and reusable workflows{% endif %}: - **Allow actions created by {% data variables.product.prodname_dotcom %}:** You can allow all actions created by {% data variables.product.prodname_dotcom %} to be used by workflows. Actions created by {% data variables.product.prodname_dotcom %} are located in the `actions` and `github` organizations. For more information, see the [`actions`](https://github.com/actions) and [`github`](https://github.com/github) organizations. -- **Allow Marketplace actions by verified creators:** {% ifversion ghes or ghae %}This option is available if you have {% data variables.product.prodname_github_connect %} enabled and configured with {% data variables.product.prodname_actions %}. For more information, see "[AUTOTITLE](/admin/github-actions/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect)."{% endif %} You can allow all {% data variables.product.prodname_marketplace %} actions created by verified creators to be used by workflows. When GitHub has verified the creator of the action as a partner organization, the {% octicon "verified" aria-label="The verified badge" %} badge is displayed next to the action in {% data variables.product.prodname_marketplace %}. +- **Allow Marketplace actions by verified creators:** {% ifversion ghes %}This option is available if you have {% data variables.product.prodname_github_connect %} enabled and configured with {% data variables.product.prodname_actions %}. For more information, see "[AUTOTITLE](/admin/github-actions/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect)."{% endif %} You can allow all {% data variables.product.prodname_marketplace %} actions created by verified creators to be used by workflows. When GitHub has verified the creator of the action as a partner organization, the {% octicon "verified" aria-label="The verified badge" %} badge is displayed next to the action in {% data variables.product.prodname_marketplace %}. - **Allow specified actions{% ifversion actions-workflow-policy %} and reusable workflows{% endif %}:** You can restrict workflows to use actions{% ifversion actions-workflow-policy %} and reusable workflows{% endif %} in specific organizations and repositories. Specified actions cannot be set to more than 1000. To restrict access to specific tags or commit SHAs of an action{% ifversion actions-workflow-policy %} or reusable workflow{% endif %}, use the same syntax used in the workflow to select the action{% ifversion actions-workflow-policy %} or reusable workflow{% endif %}. - + - For an action, the syntax is `OWNER/REPOSITORY@TAG-OR-SHA`. For example, use `actions/javascript-action@v1.0.1` to select a tag or `actions/javascript-action@a824008085750b8e136effc585c3cd6082bd575f` to select a SHA. For more information, see "[AUTOTITLE](/actions/learn-github-actions/finding-and-customizing-actions#using-release-management-for-your-custom-actions)." {%- ifversion actions-workflow-policy %} - For a reusable workflow, the syntax is `OWNER/REPOSITORY/PATH/FILENAME@TAG-OR-SHA`. For example, `octo-org/another-repo/.github/workflows/workflow.yml@v1`. For more information, see "[AUTOTITLE](/actions/using-workflows/reusing-workflows#calling-a-reusable-workflow)." diff --git a/data/reusables/actions/disabling-github-actions.md b/data/reusables/actions/disabling-github-actions.md index ef2c62fe2f..5600ce0f01 100644 --- a/data/reusables/actions/disabling-github-actions.md +++ b/data/reusables/actions/disabling-github-actions.md @@ -1 +1 @@ -By default, {% ifversion ghes or ghae %}after {% data variables.product.prodname_actions %} is enabled on {% data variables.location.product_location %}, it{% elsif fpt or ghec %}{% data variables.product.prodname_actions %}{% endif %} is enabled on all repositories and organizations. You can choose to disable {% data variables.product.prodname_actions %} or limit it to actions {% ifversion actions-workflow-policy %}and reusable workflows{% endif %} in your {% ifversion ghec or ghes or ghae %}enterprise{% else %}organization{% endif %}. +By default, {% ifversion ghes %}after {% data variables.product.prodname_actions %} is enabled on {% data variables.location.product_location %}, it{% elsif fpt or ghec %}{% data variables.product.prodname_actions %}{% endif %} is enabled on all repositories and organizations. You can choose to disable {% data variables.product.prodname_actions %} or limit it to actions {% ifversion actions-workflow-policy %}and reusable workflows{% endif %} in your {% ifversion ghec or ghes or ghae %}enterprise{% else %}organization{% endif %}. diff --git a/data/reusables/actions/self-hosted-runner-ports-protocols.md b/data/reusables/actions/self-hosted-runner-ports-protocols.md index fa711b3cb3..97bd3c2723 100644 --- a/data/reusables/actions/self-hosted-runner-ports-protocols.md +++ b/data/reusables/actions/self-hosted-runner-ports-protocols.md @@ -1,3 +1,3 @@ -{% ifversion ghes or ghae %} +{% ifversion ghes %} The connection between self-hosted runners and {% data variables.product.product_name %} is over {% ifversion ghes %}HTTP (port 80) or {% endif %}HTTPS (port 443). {% ifversion ghes %}To ensure connectivity over HTTPS, configure TLS for {% data variables.location.product_location %}. For more information, see "[AUTOTITLE](/admin/configuration/configuring-network-settings/configuring-tls)."{% endif %} {% endif %} diff --git a/data/reusables/advanced-security/security-feature-availability.md b/data/reusables/advanced-security/security-feature-availability.md index ef965ceae3..9141e7dbcf 100644 --- a/data/reusables/advanced-security/security-feature-availability.md +++ b/data/reusables/advanced-security/security-feature-availability.md @@ -1 +1 @@ -Some features are available for {% ifversion ghes or ghae %}all repositories{% elsif fpt or ghec %}repositories on all plans{% endif %}. Additional features are available to enterprises that use {% data variables.product.prodname_GH_advanced_security %}. {% ifversion fpt or ghec %}{% data variables.product.prodname_GH_advanced_security %} features are also enabled for all public repositories on {% data variables.product.prodname_dotcom_the_website %}.{% endif %} {% data reusables.advanced-security.more-info-ghas %} +Some features are available for {% ifversion ghes %}all repositories{% elsif fpt or ghec %}repositories on all plans{% endif %}. Additional features are available to enterprises that use {% data variables.product.prodname_GH_advanced_security %}. {% ifversion fpt or ghec %}{% data variables.product.prodname_GH_advanced_security %} features are also enabled for all public repositories on {% data variables.product.prodname_dotcom_the_website %}.{% endif %} {% data reusables.advanced-security.more-info-ghas %} diff --git a/data/reusables/apps/deprecating_auth_with_query_parameters.md b/data/reusables/apps/deprecating_auth_with_query_parameters.md index 70b201d9fc..5dcb8b4407 100644 --- a/data/reusables/apps/deprecating_auth_with_query_parameters.md +++ b/data/reusables/apps/deprecating_auth_with_query_parameters.md @@ -2,6 +2,6 @@ **Deprecation Notice:** {% data variables.product.prodname_dotcom %} will discontinue authentication to the API using query parameters. Authenticating to the API should be done with [HTTP basic authentication](/rest/overview/authenticating-to-the-rest-api#using-basic-authentication).{% ifversion fpt or ghec %} Using query parameters to authenticate to the API will no longer work on May 5, 2021. {% endif %} For more information, including scheduled brownouts, see the [blog post](https://developer.github.com/changes/2020-02-10-deprecating-auth-through-query-param/). -{% ifversion ghes or ghae %} Authentication to the API using query parameters while available is no longer supported due to security concerns. Instead we recommend integrators move their access token, `client_id`, or `client_secret` in the header. {% data variables.product.prodname_dotcom %} will announce the removal of authentication by query parameters with advanced notice. {% endif %} +{% ifversion ghes %} Authentication to the API using query parameters while available is no longer supported due to security concerns. Instead we recommend integrators move their access token, `client_id`, or `client_secret` in the header. {% data variables.product.prodname_dotcom %} will announce the removal of authentication by query parameters with advanced notice. {% endif %} {% endwarning %} diff --git a/data/reusables/audit_log/audit-log-search-by-repo.md b/data/reusables/audit_log/audit-log-search-by-repo.md index 477159be63..e37783b24e 100644 --- a/data/reusables/audit_log/audit-log-search-by-repo.md +++ b/data/reusables/audit_log/audit-log-search-by-repo.md @@ -2,7 +2,7 @@ Use the `repo` qualifier to limit actions to a specific repository. For example: -{%- ifversion ghes or ghae %} +{%- ifversion ghes %} - `repo:"my-org/our-repo"` finds all events that occurred for the `our-repo` repository in the `my-org` organization. - `repo:"my-org/our-repo" repo:"my-org/another-repo"` finds all events that occurred for both the `our-repo` and `another-repo` repositories in the `my-org` organization. - `-repo:"my-org/not-this-repo"` excludes all events that occurred for the `not-this-repo` repository in the `my-org` organization. diff --git a/data/reusables/code-scanning/codeql-action-version-ghes.md b/data/reusables/code-scanning/codeql-action-version-ghes.md index 3dcbf5daf0..40bd35011d 100644 --- a/data/reusables/code-scanning/codeql-action-version-ghes.md +++ b/data/reusables/code-scanning/codeql-action-version-ghes.md @@ -1,4 +1,4 @@ -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% note %} diff --git a/data/reusables/codeql-cli/download-codeql-cli-zip.md b/data/reusables/codeql-cli/download-codeql-cli-zip.md index 2ba9445c16..f0e0fb2a18 100644 --- a/data/reusables/codeql-cli/download-codeql-cli-zip.md +++ b/data/reusables/codeql-cli/download-codeql-cli-zip.md @@ -9,7 +9,7 @@ You should download the {% data variables.product.prodname_codeql %} bundle from - A compatible version of the queries and libraries from https://github.com/github/codeql - Precompiled versions of all the queries included in the bundle -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% note %} For {% data variables.product.product_name %}{% ifversion ghes %} {{ allVersions[currentVersion].currentRelease }}{% endif %}, we recommend {% data variables.product.prodname_codeql_cli %} version {% data variables.product.codeql_cli_ghes_recommended_version %}. diff --git a/data/reusables/dependabot/dependabot-alerts-dependency-graph-enterprise.md b/data/reusables/dependabot/dependabot-alerts-dependency-graph-enterprise.md index 3fdebf70bc..168833580d 100644 --- a/data/reusables/dependabot/dependabot-alerts-dependency-graph-enterprise.md +++ b/data/reusables/dependabot/dependabot-alerts-dependency-graph-enterprise.md @@ -1,2 +1,2 @@ -{% ifversion ghes or ghae %} +{% ifversion ghes %} Enterprise owners can configure {% ifversion ghes %}the dependency graph and {% endif %}{% data variables.product.prodname_dependabot_alerts %} for an enterprise. For more information, see {% ifversion ghes %}"[AUTOTITLE](/admin/code-security/managing-supply-chain-security-for-your-enterprise/enabling-the-dependency-graph-for-your-enterprise)" and {% endif %}"[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise)."{% endif %} diff --git a/data/reusables/dependency-review/action-enterprise.md b/data/reusables/dependency-review/action-enterprise.md index a4594a9171..090c5be312 100644 --- a/data/reusables/dependency-review/action-enterprise.md +++ b/data/reusables/dependency-review/action-enterprise.md @@ -1,3 +1,3 @@ -{% ifversion ghes or ghae %} +{% ifversion ghes %} Enterprise owners and people with admin access to a repository can add the {% data variables.dependency-review.action_name %} to their enterprise and repository, respectively. {% endif %} diff --git a/data/reusables/enterprise-accounts/options-tab.md b/data/reusables/enterprise-accounts/options-tab.md index db4daa0312..61a5d80fc4 100644 --- a/data/reusables/enterprise-accounts/options-tab.md +++ b/data/reusables/enterprise-accounts/options-tab.md @@ -1 +1 @@ -1. Under {% ifversion ghes or ghae %} {% octicon "law" aria-hidden="true" %} **Policies**{% else %}"{% octicon "gear" aria-hidden="true" %} Settings"{% endif %}, click **Options**. +1. Under {% ifversion ghes %} {% octicon "law" aria-hidden="true" %} **Policies**{% else %}"{% octicon "gear" aria-hidden="true" %} Settings"{% endif %}, click **Options**. diff --git a/data/reusables/enterprise_site_admin_settings/business.md b/data/reusables/enterprise_site_admin_settings/business.md index 294572aa66..8f069750cb 100644 --- a/data/reusables/enterprise_site_admin_settings/business.md +++ b/data/reusables/enterprise_site_admin_settings/business.md @@ -1 +1 @@ -1. In the left sidebar, click **Enterprise{% ifversion ghes or ghae %} overview{% endif %}**. +1. In the left sidebar, click **Enterprise{% ifversion ghes %} overview{% endif %}**. diff --git a/data/reusables/enterprise_user_management/manage-global-webhooks-api.md b/data/reusables/enterprise_user_management/manage-global-webhooks-api.md index e7812fd30d..104275e125 100644 --- a/data/reusables/enterprise_user_management/manage-global-webhooks-api.md +++ b/data/reusables/enterprise_user_management/manage-global-webhooks-api.md @@ -1,3 +1,3 @@ -{% ifversion ghes or ghae %} +{% ifversion ghes %} You can also use the REST API to manage global webhooks. For a complete list of endpoints, see "[AUTOTITLE](/rest/enterprise-admin/global-webhooks)." {% endif %} diff --git a/data/reusables/getting-started/configuring-security-features.md b/data/reusables/getting-started/configuring-security-features.md index fda18241c1..666b0a16a8 100644 --- a/data/reusables/getting-started/configuring-security-features.md +++ b/data/reusables/getting-started/configuring-security-features.md @@ -1 +1 @@ -To keep {% ifversion ghes or ghae %}the organizations in {% data variables.location.product_location %}{% else %}your organization{% endif %} secure, you can use a variety of {% data variables.product.prodname_dotcom %} security features, including security policies, dependency graphs, secret scanning and Dependabot security and version updates. For more information, see "[AUTOTITLE](/code-security/getting-started/securing-your-organization)" and "[AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization)." +To keep {% ifversion ghes %}the organizations in {% data variables.location.product_location %}{% else %}your organization{% endif %} secure, you can use a variety of {% data variables.product.prodname_dotcom %} security features, including security policies, dependency graphs, secret scanning and Dependabot security and version updates. For more information, see "[AUTOTITLE](/code-security/getting-started/securing-your-organization)" and "[AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization)." diff --git a/data/reusables/gist/anonymous-gists-cannot-be-deleted.md b/data/reusables/gist/anonymous-gists-cannot-be-deleted.md index 331f4fe843..08240b2448 100644 --- a/data/reusables/gist/anonymous-gists-cannot-be-deleted.md +++ b/data/reusables/gist/anonymous-gists-cannot-be-deleted.md @@ -1,4 +1,4 @@ -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% warning %} **Warning:** Anonymous gists cannot be deleted from the web browser. To have an anonymous gist deleted, contact {% data variables.contact.contact_support %}. Please provide the URL of the gist you wish to delete. diff --git a/data/reusables/notifications/outbound_email_tip.md b/data/reusables/notifications/outbound_email_tip.md index e8f714d69a..b8f39b8511 100644 --- a/data/reusables/notifications/outbound_email_tip.md +++ b/data/reusables/notifications/outbound_email_tip.md @@ -1,4 +1,4 @@ -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% note %} **Note**: You'll only receive email notifications if outbound email support is enabled on {% data variables.location.product_location %}. For more information, contact your site administrator. diff --git a/data/reusables/notifications/vulnerable-dependency-notification-options.md b/data/reusables/notifications/vulnerable-dependency-notification-options.md index 151022cb11..7aaf3182ff 100644 --- a/data/reusables/notifications/vulnerable-dependency-notification-options.md +++ b/data/reusables/notifications/vulnerable-dependency-notification-options.md @@ -1,4 +1,4 @@ -{% ifversion fpt or ghec %}By default, you will receive notifications:{% endif %}{% ifversion ghes or ghae %}By default, if your enterprise owner has configured email for notifications on your instance, you will receive {% data variables.product.prodname_dependabot_alerts %}:{% endif %} +{% ifversion fpt or ghec %}By default, you will receive notifications:{% endif %}{% ifversion ghes %}By default, if your enterprise owner has configured email for notifications on your instance, you will receive {% data variables.product.prodname_dependabot_alerts %}:{% endif %} - in your inbox, as web notifications. A web notification is sent when {% data variables.product.prodname_dependabot %} is enabled for a repository, when a new manifest file is committed to the repository, and when a new vulnerability with a critical or high severity is found (**On {% data variables.product.prodname_dotcom %}** option). - by email, an email is sent when {% data variables.product.prodname_dependabot %} is enabled for a repository, when a new manifest file is committed to the repository, and when a new vulnerability with a critical or high severity is found (**Email** option).{% ifversion ghae < 3.8 %} diff --git a/data/reusables/package_registry/docker_registry_deprecation_status.md b/data/reusables/package_registry/docker_registry_deprecation_status.md index fda36cc7e9..df327c3f24 100644 --- a/data/reusables/package_registry/docker_registry_deprecation_status.md +++ b/data/reusables/package_registry/docker_registry_deprecation_status.md @@ -1,5 +1,5 @@ {% warning %} -**Note:** The {% data variables.product.prodname_registry %} Docker registry {% ifversion ghes or ghae %} will be superseded in a future {% data variables.product.product_name %} release with the {% data variables.product.prodname_container_registry %}, which offers improved container support.{% elsif fpt %} is superseded by the {% data variables.product.prodname_container_registry %}, which offers improved container support. {% endif %} {% ifversion fpt or ghec %} For more information, see "[AUTOTITLE](/packages/working-with-a-github-packages-registry/migrating-to-the-container-registry-from-the-docker-registry)." {% endif %} +**Note:** The {% data variables.product.prodname_registry %} Docker registry {% ifversion ghes %} will be superseded in a future {% data variables.product.product_name %} release with the {% data variables.product.prodname_container_registry %}, which offers improved container support.{% elsif fpt %} is superseded by the {% data variables.product.prodname_container_registry %}, which offers improved container support. {% endif %} {% ifversion fpt or ghec %} For more information, see "[AUTOTITLE](/packages/working-with-a-github-packages-registry/migrating-to-the-container-registry-from-the-docker-registry)." {% endif %} {% endwarning %} diff --git a/data/reusables/package_registry/package-settings-options-menu.md b/data/reusables/package_registry/package-settings-options-menu.md index b11a59103e..62dc049232 100644 --- a/data/reusables/package_registry/package-settings-options-menu.md +++ b/data/reusables/package_registry/package-settings-options-menu.md @@ -1,4 +1,4 @@ -{% ifversion ghes or ghae %} +{% ifversion ghes %} 1. On the left click **Options**. ![Screenshot of a package's "Options" menu. In the lower right corner, "Options" is highlighted with an orange outline.](/assets/images/help/package-registry/packages-settings-options-menu.png) {% endif %} diff --git a/data/reusables/pages/build-failure-email-server.md b/data/reusables/pages/build-failure-email-server.md index 89e9253b46..a381bc2e03 100644 --- a/data/reusables/pages/build-failure-email-server.md +++ b/data/reusables/pages/build-failure-email-server.md @@ -1,4 +1,4 @@ -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% tip %} You will only receive an email if outbound email support is enabled on {% data variables.location.product_location %}. For more information, contact your site administrator. diff --git a/data/reusables/pull_requests/pull_request_merges_and_contributions.md b/data/reusables/pull_requests/pull_request_merges_and_contributions.md index 81bef02ac8..974e28e726 100644 --- a/data/reusables/pull_requests/pull_request_merges_and_contributions.md +++ b/data/reusables/pull_requests/pull_request_merges_and_contributions.md @@ -1,6 +1,6 @@ {% note %} -**Notes:**{% ifversion ghes or ghae %} +**Notes:**{% ifversion ghes %} - To appear on your profile contributions graph, co-authored commits must meet the same criteria as commits with one author.{% endif %} - When rebasing commits, the original authors of the commit and the person who rebased the commits, whether on the command line or on {% data variables.location.product_location %}, receive contribution credit.{% ifversion ghec or fpt %} - If you merged multiple personal accounts, issues, pull requests, and discussions will not be attributed to the new account and will not appear on your contribution graph.{% endif %} diff --git a/data/reusables/repositories/enable-security-alerts.md b/data/reusables/repositories/enable-security-alerts.md index 56fda0f0c1..61b386aa3d 100644 --- a/data/reusables/repositories/enable-security-alerts.md +++ b/data/reusables/repositories/enable-security-alerts.md @@ -1,3 +1,3 @@ -{% ifversion ghes or ghae %} +{% ifversion ghes %} Enterprise owners must enable {% data variables.product.prodname_dependabot_alerts %} for {% data variables.location.product_location %} before you can use this feature. For more information, see "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise)." {% endif %} diff --git a/data/reusables/rest-api/github-cli-install-and-auth.md b/data/reusables/rest-api/github-cli-install-and-auth.md index b41e5a727a..b443f15429 100644 --- a/data/reusables/rest-api/github-cli-install-and-auth.md +++ b/data/reusables/rest-api/github-cli-install-and-auth.md @@ -1,5 +1,5 @@ 1. Install {% data variables.product.prodname_cli %} on macOS, Windows, or Linux. For more information, see [Installation](https://github.com/cli/cli#installation) in the {% data variables.product.prodname_cli %} repository. -1. Authenticate with {% data variables.product.company_short %} by running this command from your terminal.{% ifversion ghes or ghae %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}. For example, `octo-inc.ghe.com`.{% endif %} +1. Authenticate with {% data variables.product.company_short %} by running this command from your terminal.{% ifversion ghes %} Replace `HOSTNAME` with the name of {% data variables.location.product_location %}. For example, `octo-inc.ghe.com`.{% endif %} {%- ifversion fpt or ghec %} diff --git a/data/reusables/search/syntax_tips.md b/data/reusables/search/syntax_tips.md index 8d3e299d35..0c7bcf9757 100644 --- a/data/reusables/search/syntax_tips.md +++ b/data/reusables/search/syntax_tips.md @@ -1,6 +1,6 @@ {% tip %} -**Tips:**{% ifversion ghes or ghae %} +**Tips:**{% ifversion ghes %} - This article contains links to example searches on the {% data variables.product.prodname_dotcom_the_website %} website, but you can use the same search filters with {% data variables.product.product_name %}. In the linked example searches, replace `github.com` with the hostname for {% data variables.location.product_location %}.{% endif %} - For a list of search syntaxes that you can add to any search qualifier to further improve your results, see "[AUTOTITLE](/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax)". - Use quotations around multi-word search terms. For example, if you want to search for issues with the label "In progress," you'd search for `label:"in progress"`. Search is not case sensitive. diff --git a/data/reusables/secret-scanning/api-beta.md b/data/reusables/secret-scanning/api-beta.md index b3fdea6462..a5579fe470 100644 --- a/data/reusables/secret-scanning/api-beta.md +++ b/data/reusables/secret-scanning/api-beta.md @@ -1,4 +1,4 @@ -{% ifversion ghes or ghae %} +{% ifversion ghes %} {% note %} diff --git a/data/reusables/support/enterprise-resolving-and-closing-tickets.md b/data/reusables/support/enterprise-resolving-and-closing-tickets.md index 07a7e65c84..f4c958c2dd 100644 --- a/data/reusables/support/enterprise-resolving-and-closing-tickets.md +++ b/data/reusables/support/enterprise-resolving-and-closing-tickets.md @@ -1,6 +1,6 @@ {% data variables.contact.enterprise_support %} may consider a ticket solved after providing an explanation, recommendation, usage instructions, {% ifversion ghae %}or {% endif %} workaround instructions{% ifversion ghes %}, or by advising you of an available release that addresses the issue{% endif %}. -{% ifversion ghes or ghae %} +{% ifversion ghes %} If you have installed additional third-party software on, or made modifications to, {% data variables.product.product_name %} outside of the recommendations of {% data variables.contact.enterprise_support %}, {% data variables.contact.enterprise_support %} may ask you to remove the software and/or modifications while attempting to resolve the issue. If the problem is fixed when the unsupported software or modifications have been removed, {% data variables.contact.enterprise_support %} may consider the ticket solved. {% endif %} diff --git a/data/variables/package_registry.yml b/data/variables/package_registry.yml index 8b52f7894d..9a03956021 100644 --- a/data/variables/package_registry.yml +++ b/data/variables/package_registry.yml @@ -1,6 +1,6 @@ # sentence fragments package-settings-actions-access-menu: >- - {% ifversion ghes or ghae %}through the **Actions access** menu option{% else %}by using the **Add Repository** button under "Manage Actions access" in the package's settings{% endif %} + {% ifversion ghes %}through the **Actions access** menu option{% else %}by using the **Add Repository** button under "Manage Actions access" in the package's settings{% endif %} package-settings-actions-access-role-dropdown: >- the **Role** drop-down menu to select the default access level that you'd like the repository to have to your package. # packages registries limits diff --git a/data/variables/rest.yml b/data/variables/rest.yml index 6ce315f536..8d3eb2d7a9 100644 --- a/data/variables/rest.yml +++ b/data/variables/rest.yml @@ -1 +1 @@ -example_request_url: '/repos{% ifversion ghes or ghae %}/REPO-OWNER/REPO-NAME{% else %}/octocat/Spoon-Knife{% endif %}/issues' +example_request_url: '/repos{% ifversion ghes %}/REPO-OWNER/REPO-NAME{% else %}/octocat/Spoon-Knife{% endif %}/issues' From 23cea62e0aa518201e9dc1d134016bcf71857920 Mon Sep 17 00:00:00 2001 From: Taylor Reis <76077878+taylorreis@users.noreply.github.com> Date: Tue, 23 Jan 2024 06:37:33 -0700 Subject: [PATCH 63/75] Update EMU guest collaborator docs to reflect current product behavior (#48554) Co-authored-by: Matt Pollard --- ...-single-sign-on-for-enterprise-managed-users.md | 6 +++++- .../roles-in-an-enterprise.md | 14 +++++--------- data/reusables/emus/guest-collaborators-note.md | 8 ++++++++ 3 files changed, 18 insertions(+), 10 deletions(-) create mode 100644 data/reusables/emus/guest-collaborators-note.md diff --git a/content/admin/identity-and-access-management/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-for-enterprise-managed-users.md b/content/admin/identity-and-access-management/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-for-enterprise-managed-users.md index 046f3015b1..3c41f7e483 100644 --- a/content/admin/identity-and-access-management/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-for-enterprise-managed-users.md +++ b/content/admin/identity-and-access-management/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-for-enterprise-managed-users.md @@ -114,7 +114,11 @@ After you enable SAML SSO, enable provisioning. For more information, see "[AUTO ### Enabling guest collaborators -If your enterprise uses {% data variables.product.prodname_emus %}, you can use the role of guest collaborator to grant limited access to vendors and contractors. Guest collaborators are provisioned by your IdP, and only have access to the specific repositories or organizations you add them to. Guest collaborators only have access to internal repositories within organizations where they are a member and private repositories they are expressly authorized to access. Guest collaborators will never see internal repositories in an organization they are not a member of. For more information, see "[AUTOTITLE](/admin/enterprise-cloud@latest/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/roles-in-an-enterprise#guest-collaborators)." +{% data reusables.emus.guest-collaborators-note %} + +If your enterprise uses {% data variables.product.prodname_emus %}, you can use the role of guest collaborator to grant limited access to vendors and contractors. For more information, see "[AUTOTITLE](/admin/enterprise-cloud@latest/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/roles-in-an-enterprise#guest-collaborators)." + +All repository access for organization members, including guest collaborators, is governed by the base permission policy for the organization. For more information, see "[AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/setting-base-permissions-for-an-organization)." If you use Azure AD or Okta for SAML authentication, you may need to update your IdP application to use guest collaborators. diff --git a/content/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/roles-in-an-enterprise.md b/content/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/roles-in-an-enterprise.md index 90f323c208..35066ddc51 100644 --- a/content/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/roles-in-an-enterprise.md +++ b/content/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/roles-in-an-enterprise.md @@ -86,19 +86,15 @@ People with outside collaborator access to repositories owned by your organizati ## Guest collaborators -{% note %} +{% data reusables.emus.guest-collaborators-note %} -**Note:** The guest collaborator role is only available with {% data variables.product.prodname_emus %}. This feature is currently in public beta and subject to change. +If your enterprise uses {% data variables.product.prodname_emus %}, you can use the role of guest collaborator to grant limited access to vendors and contractors. Like all {% data variables.enterprise.prodname_managed_users %}, guest collaborators are provisioned by your IdP. Unlike enterprise members, guest collaborators only have access to internal repositories within organizations where they are a member. Guest collaborators will never see internal repositories in an organization they are not a member of. -{% endnote %} +The base permission policy for an organization controls whether or not the guest collaborator has access to private repositories in an organization they are a member of, just like it will for other enterprise members. For more information, see "[AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/setting-base-permissions-for-an-organization)." -If your enterprise uses {% data variables.product.prodname_emus %}, you can use the role of guest collaborator to grant limited access to vendors and contractors. Like all {% data variables.enterprise.prodname_managed_users %}, guest collaborators are provisioned by your IdP. Unlike enterprise members, guest collaborators only have access to the specific repositories or organizations you add them to. +Guest collaborators can be members of IdP groups that are connected to {% data variables.product.prodname_dotcom %} teams, and will be added to the organization via SCIM, just like other enterprise members. For more information, see "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/managing-team-memberships-with-identity-provider-groups)." -Currently, guest collaborators must be added to an organization team in order to be granted access to repositories within that organization. When they are added to an organization team they become organization members. Guest collaborators only have access to internal repositories within organizations where they are a member and private repositories they are expressly authorized to access. Guest collaborators will never see internal repositories in an organization they are not a member of. - -Guest collaborators can be members of IdP groups that are connected to {% data variables.product.prodname_dotcom %} teams. However, guest collaborators are never added to an organization via SCIM. For more information, see "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/managing-team-memberships-with-identity-provider-groups)." - -If you want to prevent a user from accessing internal repositories, make sure that the only role assigned to the user is guest collaborator, both directly and via group membership. If the same user is assigned multiple roles, the more privileged role will override the less privileged role. For example, if you assign the guest collaborator role directly to a user, but the user is also a member of a group that's assigned the enterprise owner role, the user will have full privileges of an enterprise owner. +When provisioning your guest collaborators, make sure that the only role assigned to the user in your IdP is guest collaborator. This applies to both direct assignment, and group memberships. If the same user is assigned multiple roles, the more privileged role will override the less privileged role. For example, if you assign the guest collaborator role directly to a user, but the user is also a member of a group that's assigned the enterprise owner role, the user will have the full privileges of an enterprise owner. If you use Azure AD or Okta for SAML authentication, you may need to update your IdP application to use guest collaborators. For more information, see "[AUTOTITLE](/admin/identity-and-access-management/configuring-authentication-for-enterprise-managed-users/configuring-saml-single-sign-on-for-enterprise-managed-users#enabling-guest-collaborators)." diff --git a/data/reusables/emus/guest-collaborators-note.md b/data/reusables/emus/guest-collaborators-note.md new file mode 100644 index 0000000000..aa962136ec --- /dev/null +++ b/data/reusables/emus/guest-collaborators-note.md @@ -0,0 +1,8 @@ +{% note %} + +**Notes:** + +- The guest collaborator feature is currently in public beta and subject to change. +- The guest collaborator role is only available with {% data variables.product.prodname_emus %}. + +{% endnote %} From cb3b67c328a5cc9b33edfa1a956f534af96c7ea5 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 23 Jan 2024 09:40:45 -0500 Subject: [PATCH 64/75] CI with Elasticsearch v8.12 (#48763) --- .github/actions/setup-elasticsearch/action.yml | 2 +- .github/workflows/sync-search-pr.yml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/actions/setup-elasticsearch/action.yml b/.github/actions/setup-elasticsearch/action.yml index b67842892a..34199495b9 100644 --- a/.github/actions/setup-elasticsearch/action.yml +++ b/.github/actions/setup-elasticsearch/action.yml @@ -17,7 +17,7 @@ runs: with: # Make sure this matches production # It might also need to match what's available on Docker hub - elasticsearch version: '8.8.2' + elasticsearch version: '8.12.0' host port: 9200 container port: 9200 host node port: 9300 diff --git a/.github/workflows/sync-search-pr.yml b/.github/workflows/sync-search-pr.yml index 9805b7e145..f2c5c2748b 100644 --- a/.github/workflows/sync-search-pr.yml +++ b/.github/workflows/sync-search-pr.yml @@ -13,6 +13,8 @@ on: - 'package*.json' # Ultimately, for debugging this workflow itself - .github/workflows/sync-search-pr.yml + # Make sure we run this if the composite action changes + - .github/actions/setup-elasticsearch/action.yml permissions: contents: read From 2570661a4c67339bc6b1ab609d9a766c73693c5f Mon Sep 17 00:00:00 2001 From: David Jarzebowski Date: Tue, 23 Jan 2024 10:53:18 -0500 Subject: [PATCH 65/75] Update instructions to include workaround for known issue when installing SSL certificate authority certificates (#48797) Co-authored-by: Matt Pollard --- .../command-line-utilities.md | 6 ++++++ .../troubleshooting-tls-errors.md | 2 ++ .../using-cas-for-enterprise-iam/using-cas.md | 1 + 3 files changed, 9 insertions(+) diff --git a/content/admin/administering-your-instance/administering-your-instance-from-the-command-line/command-line-utilities.md b/content/admin/administering-your-instance/administering-your-instance-from-the-command-line/command-line-utilities.md index 17a7cb2f63..e427b55ebe 100644 --- a/content/admin/administering-your-instance/administering-your-instance-from-the-command-line/command-line-utilities.md +++ b/content/admin/administering-your-instance/administering-your-instance-from-the-command-line/command-line-utilities.md @@ -529,6 +529,12 @@ You can use these additional options with the utility: ghe-ssl-ca-certificate-install -c CERTIFICATE_PATH ``` +To apply the configuration, run the following command. During a configuration run, services on {% data variables.location.product_location %} may restart, which can cause brief downtime for users. + +```shell copy +ghe-config-apply +``` + ### ghe-ssl-certificate-setup This utility allows you to update an SSL certificate for {% data variables.location.product_location %}. diff --git a/content/admin/configuration/hardening-security-for-your-enterprise/troubleshooting-tls-errors.md b/content/admin/configuration/hardening-security-for-your-enterprise/troubleshooting-tls-errors.md index a161a83004..d2e088340d 100644 --- a/content/admin/configuration/hardening-security-for-your-enterprise/troubleshooting-tls-errors.md +++ b/content/admin/configuration/hardening-security-for-your-enterprise/troubleshooting-tls-errors.md @@ -90,6 +90,8 @@ If your {% data variables.product.prodname_ghe_server %} appliance interacts wit ghe-ssl-ca-certificate-install -c rootCA.crt ``` +{% data reusables.enterprise.apply-configuration %} + ## Updating a TLS certificate You can generate a new self-signed certificate or update an existing TLS certificate for {% data variables.location.product_location %} with the `ghe-ssl-certificate-setup` command line utility. For more information, see "[AUTOTITLE](/admin/configuration/configuring-your-enterprise/command-line-utilities#ghe-ssl-ca-certificate-setup)." diff --git a/content/admin/identity-and-access-management/using-cas-for-enterprise-iam/using-cas.md b/content/admin/identity-and-access-management/using-cas-for-enterprise-iam/using-cas.md index 1a3128cbcb..540b5f9970 100644 --- a/content/admin/identity-and-access-management/using-cas-for-enterprise-iam/using-cas.md +++ b/content/admin/identity-and-access-management/using-cas-for-enterprise-iam/using-cas.md @@ -48,3 +48,4 @@ No other attributes are available. 1. Under "Authentication", select **CAS**. 1. {% data reusables.enterprise_user_management.built-in-authentication-option %} 1. In the **Server URL** field, type the full URL of your CAS server. If your CAS server uses a certificate that can't be validated by {% data variables.product.prodname_ghe_server %}, you can use the `ghe-ssl-ca-certificate-install` command to install it as a trusted certificate. For more information, see "[AUTOTITLE](/admin/configuration/configuring-your-enterprise/command-line-utilities#ghe-ssl-ca-certificate-install)." +{% data reusables.enterprise.apply-configuration %} From 733415cdaaeaf631bcc5f3db562f742f1afeb3db Mon Sep 17 00:00:00 2001 From: Jorge <46056498+jorgectf@users.noreply.github.com> Date: Tue, 23 Jan 2024 17:55:03 +0100 Subject: [PATCH 66/75] Polish use of `changed-files`: Disable `safe_output` and use env var (#48787) Co-authored-by: Peter Bengtsson Co-authored-by: Peter Bengtsson --- .github/workflows/content-lint-markdown.yml | 11 ++++++++++- .github/workflows/test-changed-content.yml | 5 +++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/workflows/content-lint-markdown.yml b/.github/workflows/content-lint-markdown.yml index 265fe6fb75..47a1051eaa 100644 --- a/.github/workflows/content-lint-markdown.yml +++ b/.github/workflows/content-lint-markdown.yml @@ -32,10 +32,19 @@ jobs: id: changed-files uses: tj-actions/changed-files@716b1e13042866565e00e85fd4ec490e186c4a2f # v41.0.1 with: + # No need to escape the file names because we make the output of + # tj-actions/changed-files be set as an environment variable. Not + # as a direct input to the line of bash that uses it. + safe_output: false files: | content/** data/** - name: Run content linter if changed content/data files if: steps.changed-files.outputs.any_changed == 'true' - run: npm run lint-content -- --errors-only --paths ${{ steps.changed-files.outputs.all_changed_files }} + env: + # Make it an environment variable so that its value doesn't need to be escaped. + # See https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable + CHANGED_FILES: |- + ${{ steps.changed-files.outputs.all_changed_files }} + run: npm run lint-content -- --errors-only --paths "$CHANGED_FILES" diff --git a/.github/workflows/test-changed-content.yml b/.github/workflows/test-changed-content.yml index f24d769894..d6b2e551b6 100644 --- a/.github/workflows/test-changed-content.yml +++ b/.github/workflows/test-changed-content.yml @@ -47,6 +47,11 @@ jobs: id: changed-files uses: tj-actions/changed-files@716b1e13042866565e00e85fd4ec490e186c4a2f # v41.0.1 with: + # No need to escape the file names because we make the output of + # tj-actions/changed-files be set as an environment variable. Not + # as a direct input to the line of bash that uses it. + # See https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable + safe_output: false files: 'content/**' # Necessary so we can know what the old name was when a # content file was renamed. From fe856057733f3ceaf07bf1b49aab9cc1673f5253 Mon Sep 17 00:00:00 2001 From: Sumaiya Tarannum Noor Date: Tue, 23 Jan 2024 22:58:46 +0600 Subject: [PATCH 67/75] Update working-with-the-npm-registry.md (#31207) Co-authored-by: Alex Nguyen <150945400+nguyenalex836@users.noreply.github.com> --- .../working-with-the-npm-registry.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/packages/working-with-a-github-packages-registry/working-with-the-npm-registry.md b/content/packages/working-with-a-github-packages-registry/working-with-the-npm-registry.md index 81ee3b6aa2..3b43c3324b 100644 --- a/content/packages/working-with-a-github-packages-registry/working-with-the-npm-registry.md +++ b/content/packages/working-with-a-github-packages-registry/working-with-the-npm-registry.md @@ -28,9 +28,9 @@ shortTitle: npm registry If you publish over 1,000 npm package versions to {% data variables.product.prodname_registry %}, you may see performance issues and timeouts occur during usage. -In the future, to improve performance of the service, you won't be able to publish more than 1,000 versions of a package on {% data variables.product.prodname_dotcom %}. Any versions published before hitting this limit will still be readable. +In the future, to improve the performance of the service, you won't be able to publish more than 1,000 versions of a package on {% data variables.product.prodname_dotcom %}. Any versions published before hitting this limit will still be readable. -If you reach this limit, consider deleting package versions or contact Support for help. When this limit is enforced, our documentation will be updated with a way to work around this limit. For more information, see "[AUTOTITLE](/packages/learn-github-packages/deleting-and-restoring-a-package)" or "[AUTOTITLE](/packages/learn-github-packages/introduction-to-github-packages#contacting-support)." +If you reach this limit, consider deleting package versions or contacting support for help. When this limit is enforced, our documentation will be updated with a way to work around it. For more information, see "[AUTOTITLE](/packages/learn-github-packages/deleting-and-restoring-a-package)" or "[AUTOTITLE](/packages/learn-github-packages/introduction-to-github-packages#contacting-support)." {% endif %} ## Authenticating to {% data variables.product.prodname_registry %} @@ -142,7 +142,7 @@ You can use an _.npmrc_ file to configure the scope mapping for your project. In {% data reusables.package_registry.authenticate-step %} {% data reusables.package_registry.create-npmrc-owner-step %} {% data reusables.package_registry.add-npmrc-to-repo-step %} -1. Verify the name of your package in your project's `package.json`. The `name` field must contain the scope and the name of the package. For example, if your package is called "test", and you are publishing to the "My-org" {% data variables.product.prodname_dotcom %} organization, the `name` field in your `package.json` should be `@my-org/test`. +1. Verify the name of your package in your project's `package.json`. The `name` field must contain the scope and the name of the package. For example, if your package is called "test", and you are publishing it to the "My-org" {% data variables.product.prodname_dotcom %} organization, the `name` field in your `package.json` should be `@my-org/test`. {% data reusables.package_registry.verify_repository_field %} {% data reusables.package_registry.publish_package %} From c0a98f42816f9408c7921eda6abe67efbc5364be Mon Sep 17 00:00:00 2001 From: Sarah Edwards Date: Tue, 23 Jan 2024 08:58:59 -0800 Subject: [PATCH 68/75] Update comment based on feedback (#48807) --- src/workflows/get-preview-app-info.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/workflows/get-preview-app-info.sh b/src/workflows/get-preview-app-info.sh index 094ff29687..3624f683d0 100755 --- a/src/workflows/get-preview-app-info.sh +++ b/src/workflows/get-preview-app-info.sh @@ -14,9 +14,10 @@ PREVIEW_ENV_LOCATION="eastus" -# If a CUSTOM_GITHUB_REPOSITORY variable was set, use that. -# Otherwise, use the default GITHUB_REPOSITORY value. -# (This allows us to call this script from another repo.) +# GITHUB_REPOSITORY is a default env variable and cannot be overwritten. +# Use CUSTOM_GITHUB_REPOSITORY to specify a repo owner/name +# other than the repo owner/name where this script was called from. +# If CUSTOM_GITHUB_REPOSITORY is not specified, fall back to GITHUB_REPOSITORY. REPO_NAME_WITH_OWNER="${CUSTOM_GITHUB_REPOSITORY:-$GITHUB_REPOSITORY}" REPO_NAME="${REPO_NAME_WITH_OWNER#*\/}" From d6a22239022a09c76f26fa705dc8c38909dbba90 Mon Sep 17 00:00:00 2001 From: Grace Park Date: Tue, 23 Jan 2024 11:06:33 -0800 Subject: [PATCH 69/75] Broken link workflow (#48804) --- .github/workflows/link-check-on-pr.yml | 7 +------ src/links/scripts/rendered-content-link-checker.js | 1 + 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/link-check-on-pr.yml b/.github/workflows/link-check-on-pr.yml index 0ee535e828..9d9985efe5 100644 --- a/.github/workflows/link-check-on-pr.yml +++ b/.github/workflows/link-check-on-pr.yml @@ -36,7 +36,6 @@ jobs: token: ${{ secrets.DOCS_BOT_PAT_READPUBLICKEY }} - name: Link check all pages (internal links only) - id: all_links env: LEVEL: 'critical' ACTION_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} @@ -52,12 +51,8 @@ jobs: run: node src/links/scripts/rendered-content-link-checker.js - name: Upload artifact(s) + if: ${{ always() }} uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 with: name: artifacts path: ./artifacts - - - name: Fail if either check has broken links in its level - if: ${{ steps.changed_links.outputs.has_flaws_at_level == 'true' || steps.all_links.outputs.has_flaws_at_level == 'true' }} - run: | - exit 1 diff --git a/src/links/scripts/rendered-content-link-checker.js b/src/links/scripts/rendered-content-link-checker.js index 281c81ead9..98d48f3ca5 100755 --- a/src/links/scripts/rendered-content-link-checker.js +++ b/src/links/scripts/rendered-content-link-checker.js @@ -332,6 +332,7 @@ async function main(core, octokit, uploadArtifact, opts = {}) { ) } } + process.exit(1) } else { // It might be that the PR got a comment about >0 flaws before, // and now it can update that comment to say all is well again. From a45f9dec2083e55a3a9088c41421d89156033362 Mon Sep 17 00:00:00 2001 From: Luan Vieira Date: Tue, 23 Jan 2024 14:46:48 -0500 Subject: [PATCH 70/75] Billing early access update (#48795) From c9d02b292a5464c282c79be4fd232789d9abd405 Mon Sep 17 00:00:00 2001 From: PJ Quirk Date: Tue, 23 Jan 2024 22:02:51 +0000 Subject: [PATCH 71/75] Remove some unnecessary NSG rules for vnet injected runners (#48803) --- ...te-networking-for-github-hosted-runners.md | 45 +------------------ 1 file changed, 2 insertions(+), 43 deletions(-) diff --git a/content/admin/configuration/configuring-private-networking-for-hosted-compute-products/configuring-private-networking-for-github-hosted-runners.md b/content/admin/configuration/configuring-private-networking-for-hosted-compute-products/configuring-private-networking-for-github-hosted-runners.md index 61cd3dc497..14fb0111ea 100644 --- a/content/admin/configuration/configuring-private-networking-for-hosted-compute-products/configuring-private-networking-for-github-hosted-runners.md +++ b/content/admin/configuration/configuring-private-networking-for-hosted-compute-products/configuring-private-networking-for-github-hosted-runners.md @@ -113,53 +113,12 @@ You will use a script to automate configuring your Azure resources. direction: 'Outbound' destinationAddressPrefixes: [ '140.82.112.0/20' - '142.250.0.0/15' '143.55.64.0/20' - '192.30.252.0/22' '185.199.108.0/22' + '192.30.252.0/22' ] } - } - { - name: 'AllowInternetOutBoundMicrosoft' - properties: { - protocol: 'TCP' - sourcePortRange: '*' - destinationPortRange: '443' - sourceAddressPrefix: '*' - access: 'Allow' - priority: 230 - direction: 'Outbound' - destinationAddressPrefixes: [ - '13.64.0.0/11' - '13.96.0.0/13' - '13.104.0.0/14' - '20.33.0.0/16' - '20.34.0.0/15' - '20.36.0.0/14' - '20.40.0.0/13' - '20.48.0.0/12' - '20.64.0.0/10' - '20.128.0.0/16' - '52.224.0.0/11' - '204.79.197.200' - ] - } - } - { - name: 'AllowInternetOutBoundCannonical' - properties: { - protocol: 'TCP' - sourcePortRange: '*' - destinationPortRange: '443' - sourceAddressPrefix: '*' - destinationAddressPrefix: '185.125.188.0/22' - access: 'Allow' - priority: 240 - direction: 'Outbound' - destinationAddressPrefixes: [] - } - } + } ] } } From bd4eafa564dda64c997ab2e2542885179860650b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 16:31:24 -0800 Subject: [PATCH 72/75] Bump hastscript from 8.0.0 to 9.0.0 (#48819) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 24 ++++++++++++++++++++---- package.json | 2 +- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index ff20d3b7ee..e6fa249c40 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,7 +43,7 @@ "gray-matter": "^4.0.3", "hast-util-from-parse5": "^8.0.1", "hast-util-to-string": "^2.0.0", - "hastscript": "^8.0.0", + "hastscript": "^9.0.0", "helmet": "^7.0.0", "highlight.js": "11.9.0", "highlightjs-curl": "^1.3.0", @@ -7682,6 +7682,22 @@ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" }, + "node_modules/hast-util-from-parse5/node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-from-parse5/node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", @@ -7979,9 +7995,9 @@ } }, "node_modules/hastscript": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", - "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.0.tgz", + "integrity": "sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", diff --git a/package.json b/package.json index b386485cf7..1bdbaa2328 100644 --- a/package.json +++ b/package.json @@ -264,7 +264,7 @@ "gray-matter": "^4.0.3", "hast-util-from-parse5": "^8.0.1", "hast-util-to-string": "^2.0.0", - "hastscript": "^8.0.0", + "hastscript": "^9.0.0", "helmet": "^7.0.0", "highlight.js": "11.9.0", "highlightjs-curl": "^1.3.0", From 867d69c7302ea946a8c747f2cb97ee66625c76b1 Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Tue, 23 Jan 2024 19:24:02 -0600 Subject: [PATCH 73/75] GraphQL schema update (#48813) Co-authored-by: rachmari Co-authored-by: Grace Park --- data/graphql/ghae/schema.docs-ghae.graphql | 5 +++++ data/graphql/ghec/schema.docs.graphql | 5 +++++ data/graphql/schema.docs.graphql | 5 +++++ src/graphql/data/fpt/changelog.json | 13 +++++++++++++ src/graphql/data/fpt/schema.json | 8 ++++++++ src/graphql/data/ghae/schema.json | 8 ++++++++ src/graphql/data/ghec/schema.json | 8 ++++++++ 7 files changed, 52 insertions(+) diff --git a/data/graphql/ghae/schema.docs-ghae.graphql b/data/graphql/ghae/schema.docs-ghae.graphql index 5d9eb5fb65..0007478eb5 100644 --- a/data/graphql/ghae/schema.docs-ghae.graphql +++ b/data/graphql/ghae/schema.docs-ghae.graphql @@ -45317,6 +45317,11 @@ type UnpinIssuePayload { """ clientMutationId: String + """ + The id of the pinned issue that was unpinned + """ + id: ID + """ The issue that was unpinned """ diff --git a/data/graphql/ghec/schema.docs.graphql b/data/graphql/ghec/schema.docs.graphql index 78850cd818..7e22600889 100644 --- a/data/graphql/ghec/schema.docs.graphql +++ b/data/graphql/ghec/schema.docs.graphql @@ -56033,6 +56033,11 @@ type UnpinIssuePayload { """ clientMutationId: String + """ + The id of the pinned issue that was unpinned + """ + id: ID + """ The issue that was unpinned """ diff --git a/data/graphql/schema.docs.graphql b/data/graphql/schema.docs.graphql index 78850cd818..7e22600889 100644 --- a/data/graphql/schema.docs.graphql +++ b/data/graphql/schema.docs.graphql @@ -56033,6 +56033,11 @@ type UnpinIssuePayload { """ clientMutationId: String + """ + The id of the pinned issue that was unpinned + """ + id: ID + """ The issue that was unpinned """ diff --git a/src/graphql/data/fpt/changelog.json b/src/graphql/data/fpt/changelog.json index b2e3f81e71..b25c7e793e 100644 --- a/src/graphql/data/fpt/changelog.json +++ b/src/graphql/data/fpt/changelog.json @@ -1,4 +1,17 @@ [ + { + "schemaChanges": [ + { + "title": "The GraphQL schema includes these changes:", + "changes": [ + "

    Field id was added to object type UnpinIssuePayload

    " + ] + } + ], + "previewChanges": [], + "upcomingChanges": [], + "date": "2024-01-23" + }, { "schemaChanges": [ { diff --git a/src/graphql/data/fpt/schema.json b/src/graphql/data/fpt/schema.json index 04d9c23c13..63ca72a04b 100644 --- a/src/graphql/data/fpt/schema.json +++ b/src/graphql/data/fpt/schema.json @@ -6984,6 +6984,14 @@ "href": "/graphql/reference/scalars#string", "description": "

    A unique identifier for the client performing the mutation.

    " }, + { + "name": "id", + "type": "ID", + "id": "id", + "kind": "scalars", + "href": "/graphql/reference/scalars#id", + "description": "

    The id of the pinned issue that was unpinned.

    " + }, { "name": "issue", "type": "Issue", diff --git a/src/graphql/data/ghae/schema.json b/src/graphql/data/ghae/schema.json index 5264ebbf3b..569f4b562b 100644 --- a/src/graphql/data/ghae/schema.json +++ b/src/graphql/data/ghae/schema.json @@ -5067,6 +5067,14 @@ "href": "/graphql/reference/scalars#string", "description": "

    A unique identifier for the client performing the mutation.

    " }, + { + "name": "id", + "type": "ID", + "id": "id", + "kind": "scalars", + "href": "/graphql/reference/scalars#id", + "description": "

    The id of the pinned issue that was unpinned.

    " + }, { "name": "issue", "type": "Issue", diff --git a/src/graphql/data/ghec/schema.json b/src/graphql/data/ghec/schema.json index 04d9c23c13..63ca72a04b 100644 --- a/src/graphql/data/ghec/schema.json +++ b/src/graphql/data/ghec/schema.json @@ -6984,6 +6984,14 @@ "href": "/graphql/reference/scalars#string", "description": "

    A unique identifier for the client performing the mutation.

    " }, + { + "name": "id", + "type": "ID", + "id": "id", + "kind": "scalars", + "href": "/graphql/reference/scalars#id", + "description": "

    The id of the pinned issue that was unpinned.

    " + }, { "name": "issue", "type": "Issue", From 9bc4ac4342097d6727e3986c24fdc054ca0ea27a Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Wed, 24 Jan 2024 02:27:21 -0600 Subject: [PATCH 74/75] Update audit log event data (#48812) Co-authored-by: Matt Pollard --- src/audit-logs/lib/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/audit-logs/lib/config.json b/src/audit-logs/lib/config.json index 4dab0b31d7..561d9a7709 100644 --- a/src/audit-logs/lib/config.json +++ b/src/audit-logs/lib/config.json @@ -1,4 +1,4 @@ { "apiOnlyEventsAdditionalDescription": "This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", - "sha": "038555ef3a0e297abdb2c0475aa67e0177d2f5b1" + "sha": "b5bbe6c2aa628a381e44765b7a9deba2bba4bc7f" } \ No newline at end of file From 5f25dc71451bafc098c2b2c47dd82d46ef15ca9f Mon Sep 17 00:00:00 2001 From: Jules Porter Date: Thu, 25 Jan 2024 09:46:16 +0100 Subject: [PATCH 75/75] removes beta note --- .../overview/about-github-copilot-enterprise.md | 6 ------ .../overview/enabling-github-copilot-enterprise.md | 6 ------ 2 files changed, 12 deletions(-) diff --git a/content/copilot/github-copilot-enterprise/overview/about-github-copilot-enterprise.md b/content/copilot/github-copilot-enterprise/overview/about-github-copilot-enterprise.md index 6d9b4a230a..fcc8e11940 100644 --- a/content/copilot/github-copilot-enterprise/overview/about-github-copilot-enterprise.md +++ b/content/copilot/github-copilot-enterprise/overview/about-github-copilot-enterprise.md @@ -8,12 +8,6 @@ topics: - Copilot --- -{% note %} - -{% data variables.product.prodname_copilot_enterprise %} is in beta, and functionality and documentation are subject to change. You can nominate an organization or enterprise for the beta using the [{% data variables.product.prodname_copilot_enterprise_short %} waitlist form](https://github.com/github-copilot/copilot_enterprise_waitlist_signup/join). - -{% endnote %} - ## About the {% data variables.product.prodname_copilot_enterprise_short %} beta {% data variables.product.prodname_copilot_enterprise %} is a {% data variables.product.prodname_copilot_short %} plan available for enterprises that use {% data variables.product.prodname_ghe_cloud %}. {% data variables.product.prodname_copilot_enterprise_short %} is currently in beta and available to a limited number of customers. diff --git a/content/copilot/github-copilot-enterprise/overview/enabling-github-copilot-enterprise.md b/content/copilot/github-copilot-enterprise/overview/enabling-github-copilot-enterprise.md index 7f43384b82..68f44f66d5 100644 --- a/content/copilot/github-copilot-enterprise/overview/enabling-github-copilot-enterprise.md +++ b/content/copilot/github-copilot-enterprise/overview/enabling-github-copilot-enterprise.md @@ -8,12 +8,6 @@ topics: - Copilot --- -{% note %} - -{% data variables.product.prodname_copilot_enterprise %} is in beta, and functionality and documentation are subject to change. You can nominate an organization or enterprise for the beta using the [{% data variables.product.prodname_copilot_enterprise_short %} waitlist form](https://github.com/github-copilot/copilot_enterprise_waitlist_signup/join). - -{% endnote %} - ## About {% data variables.product.prodname_copilot_enterprise_short %} features To use {% data variables.product.prodname_copilot_enterprise %} features, you can nominate an organization or enterprise that you're a member of for the [{% data variables.product.prodname_copilot_enterprise_short %} waitlist](https://github.com/github-copilot/copilot_enterprise_waitlist_signup/join). To join the waitlist, the organization or enterprise must use {% data variables.product.prodname_ghe_cloud %} and have an active {% data variables.product.prodname_copilot_for_business %} subscription. For more information, see "[AUTOTITLE](/copilot/github-copilot-enterprise/overview/about-github-copilot-enterprise)."