From 02805852e1da67552c1c837d0f0751dcbb88a27e Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Sun, 17 Dec 2023 12:57:28 +0000 Subject: [PATCH 1/8] release: 1.5.0 --- packages/@biomejs/biome/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@biomejs/biome/package.json b/packages/@biomejs/biome/package.json index befb50e021ef..ab8ca31cac1d 100644 --- a/packages/@biomejs/biome/package.json +++ b/packages/@biomejs/biome/package.json @@ -1,6 +1,6 @@ { "name": "@biomejs/biome", - "version": "1.4.1", + "version": "1.5.0", "bin": "bin/biome", "scripts": { "postinstall": "node scripts/postinstall.js" From f4c398b2260f23b6916fcd5be7b68bef5c076b5f Mon Sep 17 00:00:00 2001 From: Jon Date: Sun, 17 Dec 2023 12:13:07 -0800 Subject: [PATCH 2/8] chore: add formatter changelog entries since 1.4.0 release (#1241) --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c119249d6fbd..d45b814ed609 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -88,6 +88,22 @@ Biome now scores 97% compatibility with Prettier and features more than 180 lint #### Bug fixes - Fix [#1169](https://github.com/biomejs/biome/issues/1169). Account for escaped strings when computing layout for assignments. Contributed by @kalleep +- Fix [#851](https://github.com/biomejs/biome/issues/851). Allow regular function expressions to group and break as call arguments, just like arrow function expressions. [#1003](https://github.com/biomejs/biome/issues/1003) Contributed by @faultyserver +- Fix [#914](https://github.com/biomejs/biome/issues/914). Only parenthesize type-casted function expressions as default exports. [#1023](https://github.com/biomejs/biome/issues/1023) Contributed by @faultyserver +- Fix [#1112](https://github.com/biomejs/biome/issues/1112). Break block bodies in case clauses onto their own lines and preserve trailing fallthrough comments. [#1035](https://github.com/biomejs/biome/pull/1035) Contributed by @faultyserver +- Fix `RemoveSoftLinesBuffer` behavior to also removed conditional expanded content, ensuring no accidental, unused line breaks are included [#1032](https://github.com/biomejs/biome/pull/1032) Contributed by @faultyserver +- Fix [#1024](https://github.com/biomejs/biome/issues/1024). Allow JSX expressions to nestle in arrow chains [#1033](https://github.com/biomejs/biome/pull/1033) Contributed by @faultyserver +- Fix incorrect breaking on the left side of assignments by always using fluid assignment. [#1021](https://github.com/biomejs/biome/pull/1021) Contributed by @faultyserver +- Fix breaking strategy for nested object patterns in function parameters [#1054](https://github.com/biomejs/biome/pull/1054) Contributed by @faultyserver +- Fix over-indention of arrow chain expressions by simplifying the way each chain is grouped [#1036](https://github.com/biomejs/biome/pull/1036), [#1136](https://github.com/biomejs/biome/pull/1136), and [#1162](https://github.com/biomejs/biome/pull/1162) Contributed by @faultyserver. +- Fix "simple" checks for calls and member expressions to correctly handle array accesses, complex arguments to single-argument function calls, and multiple-argument function calls. [#1057](https://github.com/biomejs/biome/pull/1057) Contributed by @faultyserver +- Fix text wrapping and empty line handling for JSX Text elements to match Prettier's behavior. [#1075](https://github.com/biomejs/biome/pull/1075) Contributed by @faultyserver +- Fix leading comments in concisely-printed arrays to prevent unwanted line breaks. [#1135](https://github.com/biomejs/biome/pull/1135) Contributed by @faultyserver +- Fix `best_fitting` and interned elements preventing expansion propagation from sibling elements. [#1141](https://github.com/biomejs/biome/pull/1141) Contributed by @faultyserver +- Fix heuristic for grouping function parameters when type parameters with constraints are present. [#1153](https://github.com/biomejs/biome/pull/1153). Contributed by @faultyserver. +- Fix binary-ish and type annotation handling for grouping call arguments in function expressions and call signatures. [#1152](https://github.com/biomejs/biome/pull/1152) and [#1160](https://github.com/biomejs/biome/pull/1160) Contributed by @faultyserver +- Fix handling of nestled JSDoc comments to preserve behavior for overloads. [#1195](https://github.com/biomejs/biome/pull/1195) Contributed by @faultyserver +- Fix [#1208](https://github.com/biomejs/biome/issues/1208). Fix extraction of inner types when checking for simple type annotations in call arguments. [#1195](https://github.com/biomejs/biome/pull/1195) Contributed by @faultyserver - Fix [#1220](https://github.com/biomejs/biome/issues/1220). Avoid duplicating comments in type unions for mapped, empty object, and empty tuple types. [#1240](https://github.com/biomejs/biome/pull/1240) Contributed by @faultyserver From 741c2405114b2c77dd83f7822bc449d52f898811 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Mon, 18 Dec 2023 10:47:11 +0000 Subject: [PATCH 3/8] fix changelog --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d45b814ed609..60ffad06171f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ Read our [guidelines to categorize a change](https://biomejs.dev/internals/versi New entries must be placed in a section entitled `Unreleased`. Read our [guidelines for writing a good changelog entry](https://github.com/biomejs/biome/blob/main/CONTRIBUTING.md#changelog). -## Unreleased +## 1.5.0 Biome now scores 97% compatibility with Prettier and features more than 180 linter rules. @@ -22,9 +22,9 @@ Biome now scores 97% compatibility with Prettier and features more than 180 lint - The command `biome migrate` now updates the `$schema` if there's an outdated version. -- The commands `format`, `lint`, `check` and `ci` now accepts two new arguments: `--changed` and `--since`. - Use these options when the VCS integration is enabled to process only the files that were changed. - Contributed by @simonxabris +- The CLI now takes in consideration the `.gitignore` in the home directory of the user, if it exists. Contributed by @ematipico +- The commands `format`, `lint`, `check` and `ci` now accepts two new arguments: `--changed` and `--since`. Use these options when the VCS integration + is enabled to process only the files that were changed. Contributed by @simonxabris ```shell biome format --write --changed @@ -95,14 +95,14 @@ Biome now scores 97% compatibility with Prettier and features more than 180 lint - Fix [#1024](https://github.com/biomejs/biome/issues/1024). Allow JSX expressions to nestle in arrow chains [#1033](https://github.com/biomejs/biome/pull/1033) Contributed by @faultyserver - Fix incorrect breaking on the left side of assignments by always using fluid assignment. [#1021](https://github.com/biomejs/biome/pull/1021) Contributed by @faultyserver - Fix breaking strategy for nested object patterns in function parameters [#1054](https://github.com/biomejs/biome/pull/1054) Contributed by @faultyserver -- Fix over-indention of arrow chain expressions by simplifying the way each chain is grouped [#1036](https://github.com/biomejs/biome/pull/1036), [#1136](https://github.com/biomejs/biome/pull/1136), and [#1162](https://github.com/biomejs/biome/pull/1162) Contributed by @faultyserver. +- Fix over-indention of arrow chain expressions by simplifying the way each chain is grouped [#1036](https://github.com/biomejs/biome/pull/1036), [#1136](https://github.com/biomejs/biome/pull/1136), and [#1162](https://github.com/biomejs/biome/pull/1162) Contributed by @faultyserver. - Fix "simple" checks for calls and member expressions to correctly handle array accesses, complex arguments to single-argument function calls, and multiple-argument function calls. [#1057](https://github.com/biomejs/biome/pull/1057) Contributed by @faultyserver - Fix text wrapping and empty line handling for JSX Text elements to match Prettier's behavior. [#1075](https://github.com/biomejs/biome/pull/1075) Contributed by @faultyserver - Fix leading comments in concisely-printed arrays to prevent unwanted line breaks. [#1135](https://github.com/biomejs/biome/pull/1135) Contributed by @faultyserver - Fix `best_fitting` and interned elements preventing expansion propagation from sibling elements. [#1141](https://github.com/biomejs/biome/pull/1141) Contributed by @faultyserver - Fix heuristic for grouping function parameters when type parameters with constraints are present. [#1153](https://github.com/biomejs/biome/pull/1153). Contributed by @faultyserver. - Fix binary-ish and type annotation handling for grouping call arguments in function expressions and call signatures. [#1152](https://github.com/biomejs/biome/pull/1152) and [#1160](https://github.com/biomejs/biome/pull/1160) Contributed by @faultyserver -- Fix handling of nestled JSDoc comments to preserve behavior for overloads. [#1195](https://github.com/biomejs/biome/pull/1195) Contributed by @faultyserver +- Fix handling of nestled JSDoc comments to preserve behavior for overloads. [#1195](https://github.com/biomejs/biome/pull/1195) Contributed by @faultyserver - Fix [#1208](https://github.com/biomejs/biome/issues/1208). Fix extraction of inner types when checking for simple type annotations in call arguments. [#1195](https://github.com/biomejs/biome/pull/1195) Contributed by @faultyserver - Fix [#1220](https://github.com/biomejs/biome/issues/1220). Avoid duplicating comments in type unions for mapped, empty object, and empty tuple types. [#1240](https://github.com/biomejs/biome/pull/1240) Contributed by @faultyserver From e335a52389171d34eb3f24bb11e2def932ef2d85 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Mon, 18 Dec 2023 10:59:01 +0000 Subject: [PATCH 4/8] document github workflow action --- CHANGELOG.md | 6 ++++++ website/src/content/docs/internals/changelog.mdx | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 60ffad06171f..17f4a981e825 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,12 @@ Biome now scores 97% compatibility with Prettier and features more than 180 lint - The command `biome migrate` now updates the `$schema` if there's an outdated version. - The CLI now takes in consideration the `.gitignore` in the home directory of the user, if it exists. Contributed by @ematipico +- The `biome ci` command is now able to print [GitHub Workflow Commands](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions) when there are diagnostics in our code. Contributed by @nikeee + This will **might** require setting the proper permissions on your GitHub action: + ```yaml + permissions: + pull-requests: write + ``` - The commands `format`, `lint`, `check` and `ci` now accepts two new arguments: `--changed` and `--since`. Use these options when the VCS integration is enabled to process only the files that were changed. Contributed by @simonxabris diff --git a/website/src/content/docs/internals/changelog.mdx b/website/src/content/docs/internals/changelog.mdx index a307641a35f8..3661dc66377b 100644 --- a/website/src/content/docs/internals/changelog.mdx +++ b/website/src/content/docs/internals/changelog.mdx @@ -27,6 +27,12 @@ Biome now scores 97% compatibility with Prettier and features more than 180 lint - Biome now shows a diagnostic when it encounters a protected file. Contributed by @ematipico - The command `biome migrate` now updates the `$schema` if there's an outdated version. +- The `biome ci` command is now able to print [GitHub Workflow Commands](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions) when there are diagnostics in our code. Contributed by @nikeee + This will **might** require setting the proper permissions on your GitHub action: + ```yaml + permissions: + pull-requests: write + ``` - The commands `format`, `lint`, `check` and `ci` now accepts two new arguments: `--changed` and `--since`. Use these options when the VCS integration is enabled to process only the files that were changed. From bae6087ac8d3de0ea0c4a2980634df057b95b01c Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Mon, 18 Dec 2023 11:49:39 +0000 Subject: [PATCH 5/8] VCS integration --- website/astro.config.ts | 4 ++ .../content/docs/guides/how-biome-works.mdx | 10 ++- .../content/docs/guides/integrate-in-vcs.mdx | 67 +++++++++++++++++++ website/src/content/docs/index.mdx | 26 +++++++ .../src/content/docs/internals/changelog.mdx | 26 +++++-- .../content/docs/reference/configuration.mdx | 4 ++ 6 files changed, 130 insertions(+), 7 deletions(-) create mode 100644 website/src/content/docs/guides/integrate-in-vcs.mdx diff --git a/website/astro.config.ts b/website/astro.config.ts index aa8a22fcb61c..25bdf6675125 100644 --- a/website/astro.config.ts +++ b/website/astro.config.ts @@ -135,6 +135,10 @@ export default defineConfig({ "pt-BR": "Integrando o Biome no seu editor", }, }, + { + label: "Integrate Biome with your VCS", + link: "/guides/integrate-in-vcs", + }, ], }, { diff --git a/website/src/content/docs/guides/how-biome-works.mdx b/website/src/content/docs/guides/how-biome-works.mdx index 9705def4f52e..bfb17c238848 100644 --- a/website/src/content/docs/guides/how-biome-works.mdx +++ b/website/src/content/docs/guides/how-biome-works.mdx @@ -1,9 +1,10 @@ --- title: How Biome works -description: Learn how to set up a new project with Biome. +description: Learn how Biome works, like assumptions, configuration and more. --- import DefaultConfiguration from "@src/components/generated/DefaultConfiguration.mdx"; +This is a guide that explains how the tool works, assumptions, and internal information useful when setting up the project and the configuration file. ## Configuration @@ -93,7 +94,7 @@ The following files are parsed as **`JSON` files** with the options `json.parse - `.hintrc` - `.babelrc` -### `ignore` and `include` syntax rules +## Syntax rules for `ignore` and `include` The syntax and meaning of these two options loosely follow the [globset rules](https://docs.rs/globset/latest/globset/#syntax) but without the ability to set options. @@ -116,3 +117,8 @@ The syntax and meaning of these two options loosely follow the [globset rules](h > `[!ab]` to match any character except for `a` and `b`. > - Metacharacters such as `*` and `?` can be escaped with character class > notation. e.g., `[*]` matches `*`. + +### Ignore folders and ignore files + + + diff --git a/website/src/content/docs/guides/integrate-in-vcs.mdx b/website/src/content/docs/guides/integrate-in-vcs.mdx new file mode 100644 index 000000000000..c9d63f0fd623 --- /dev/null +++ b/website/src/content/docs/guides/integrate-in-vcs.mdx @@ -0,0 +1,67 @@ +--- +title: Integrate Biome with your VCS +description: Learn how Biome works, like assumptions, configuration and more. +--- + +The VCS (Version Control System) integration is meant to take advantage of **additional** features that only a VCS can provide, allowing to customise +your development experience even further. + +The integration is *opt-in**, and it requires two mandatory fields. The `vcs.enabled` field, and the `vcs.clientKind` field, both in the configuration file: + +```json title="biome.json" +{ + "vcs": { + "enabled": true, + "clientKind": "git" + } +} +``` + +This configuration doesn't do **anything per se**. You have to opt-in new features. + +### Use the ignore file + +This is a feature that allows Biome to read the ignore file of the VCS and ignore all the files and folders that were specified in it. This is an opt-in feature, and you have to enable the `vcs.useIgnoreFile` field: + +```json title="biome.json" ins={5} +{ + "vcs": { + "enabled": true, + "clientKind": "git", + "useIgnoreFile": true + } +} +``` + +### Process only changed files + +This is a feature that is available only via CLI, and allows to process **only** the files that **changed** from one revision and another. + +First, you have to update your configuration file and tell Biome what's the default branch via `vcs.defaultBranch` field: + +```json title="biome.json" ins={6} +{ + "vcs": { + "enabled": true, + "clientKind": "git", + "useIgnoreFile": true, + "defaultBranch": "main" + } +} +``` + +Then, add the `--changed` option to your command, to process only those files that your VCS acknowledged as "changed". Biome, with the help of the VCS, will determine the changed file from the branch `main` and your current revision: + +```shell +biome format --changed +``` + +:::caution +Biome doesn't check what's changed, this means that even adding spaces or newlines to a file, will mark this file as "changed" +::: + +Alternatively, you can use the option `--since` to specify an arbitrary branch. This option **takes precedence** over the option `vcs.defaultBranch`. For example, you might want to check your changes against the `next` branch: + +```shell +biome format --changed --since=next +``` diff --git a/website/src/content/docs/index.mdx b/website/src/content/docs/index.mdx index 16082b56f54f..b3799e601f38 100644 --- a/website/src/content/docs/index.mdx +++ b/website/src/content/docs/index.mdx @@ -30,6 +30,32 @@ banner: import { Card, CardGrid } from '@astrojs/starlight/components'; import Netlify from "@src/components/Netlify.astro"; + +

+ What's Biome +

+

+ Biome is a performant toolchain for web projects, it aims to provide developer tools to maintain the health of said projects. + + ```shell + npm install --save-dev --save-exact @biomejs/biome + ``` +

+ + **Biome is a [fast formatter](./benchmark#formatting)** for _JavaScript_, _TypeScript_, _JSX_, and _JSON_ that scores **[96% compatibility with _Prettier_](https://console.algora.io/challenges/prettier)**. + + ```shell + npx @biomejs/biome format ./src + ``` + + **Biome is a [performant linter](https://github.com/biomejs/biome/tree/main/benchmark#linting)** for _JavaScript_, _TypeScript_, and _JSX_ that features **[more than 170 rules](https://biomejs.dev/linter/rules/)** from ESLint, TypeSCript ESLint, and [other sources](https://github.com/biomejs/biome/discussions/3). + It **outputs detailed and contextualized diagnostics** that help you to improve your code and become a better programmer! + + ```shell + npx @biomejs/biome lint ./src + ``` +
+ Built with Rust and an innovative architecture inspired by rust-analyzer. diff --git a/website/src/content/docs/internals/changelog.mdx b/website/src/content/docs/internals/changelog.mdx index 3661dc66377b..58208cde5eb6 100644 --- a/website/src/content/docs/internals/changelog.mdx +++ b/website/src/content/docs/internals/changelog.mdx @@ -14,7 +14,7 @@ Read our [guidelines to categorize a change](https://biomejs.dev/internals/versi New entries must be placed in a section entitled `Unreleased`. Read our [guidelines for writing a good changelog entry](https://github.com/biomejs/biome/blob/main/CONTRIBUTING.md#changelog). -## Unreleased +## 1.5.0 Biome now scores 97% compatibility with Prettier and features more than 180 linter rules. @@ -27,16 +27,16 @@ Biome now scores 97% compatibility with Prettier and features more than 180 lint - Biome now shows a diagnostic when it encounters a protected file. Contributed by @ematipico - The command `biome migrate` now updates the `$schema` if there's an outdated version. + +- The CLI now takes in consideration the `.gitignore` in the home directory of the user, if it exists. Contributed by @ematipico - The `biome ci` command is now able to print [GitHub Workflow Commands](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions) when there are diagnostics in our code. Contributed by @nikeee This will **might** require setting the proper permissions on your GitHub action: ```yaml permissions: pull-requests: write ``` - -- The commands `format`, `lint`, `check` and `ci` now accepts two new arguments: `--changed` and `--since`. - Use these options when the VCS integration is enabled to process only the files that were changed. - Contributed by @simonxabris +- The commands `format`, `lint`, `check` and `ci` now accepts two new arguments: `--changed` and `--since`. Use these options when the VCS integration + is enabled to process only the files that were changed. Contributed by @simonxabris ```shell biome format --write --changed @@ -100,6 +100,22 @@ Biome now scores 97% compatibility with Prettier and features more than 180 lint #### Bug fixes - Fix [#1169](https://github.com/biomejs/biome/issues/1169). Account for escaped strings when computing layout for assignments. Contributed by @kalleep +- Fix [#851](https://github.com/biomejs/biome/issues/851). Allow regular function expressions to group and break as call arguments, just like arrow function expressions. [#1003](https://github.com/biomejs/biome/issues/1003) Contributed by @faultyserver +- Fix [#914](https://github.com/biomejs/biome/issues/914). Only parenthesize type-casted function expressions as default exports. [#1023](https://github.com/biomejs/biome/issues/1023) Contributed by @faultyserver +- Fix [#1112](https://github.com/biomejs/biome/issues/1112). Break block bodies in case clauses onto their own lines and preserve trailing fallthrough comments. [#1035](https://github.com/biomejs/biome/pull/1035) Contributed by @faultyserver +- Fix `RemoveSoftLinesBuffer` behavior to also removed conditional expanded content, ensuring no accidental, unused line breaks are included [#1032](https://github.com/biomejs/biome/pull/1032) Contributed by @faultyserver +- Fix [#1024](https://github.com/biomejs/biome/issues/1024). Allow JSX expressions to nestle in arrow chains [#1033](https://github.com/biomejs/biome/pull/1033) Contributed by @faultyserver +- Fix incorrect breaking on the left side of assignments by always using fluid assignment. [#1021](https://github.com/biomejs/biome/pull/1021) Contributed by @faultyserver +- Fix breaking strategy for nested object patterns in function parameters [#1054](https://github.com/biomejs/biome/pull/1054) Contributed by @faultyserver +- Fix over-indention of arrow chain expressions by simplifying the way each chain is grouped [#1036](https://github.com/biomejs/biome/pull/1036), [#1136](https://github.com/biomejs/biome/pull/1136), and [#1162](https://github.com/biomejs/biome/pull/1162) Contributed by @faultyserver. +- Fix "simple" checks for calls and member expressions to correctly handle array accesses, complex arguments to single-argument function calls, and multiple-argument function calls. [#1057](https://github.com/biomejs/biome/pull/1057) Contributed by @faultyserver +- Fix text wrapping and empty line handling for JSX Text elements to match Prettier's behavior. [#1075](https://github.com/biomejs/biome/pull/1075) Contributed by @faultyserver +- Fix leading comments in concisely-printed arrays to prevent unwanted line breaks. [#1135](https://github.com/biomejs/biome/pull/1135) Contributed by @faultyserver +- Fix `best_fitting` and interned elements preventing expansion propagation from sibling elements. [#1141](https://github.com/biomejs/biome/pull/1141) Contributed by @faultyserver +- Fix heuristic for grouping function parameters when type parameters with constraints are present. [#1153](https://github.com/biomejs/biome/pull/1153). Contributed by @faultyserver. +- Fix binary-ish and type annotation handling for grouping call arguments in function expressions and call signatures. [#1152](https://github.com/biomejs/biome/pull/1152) and [#1160](https://github.com/biomejs/biome/pull/1160) Contributed by @faultyserver +- Fix handling of nestled JSDoc comments to preserve behavior for overloads. [#1195](https://github.com/biomejs/biome/pull/1195) Contributed by @faultyserver +- Fix [#1208](https://github.com/biomejs/biome/issues/1208). Fix extraction of inner types when checking for simple type annotations in call arguments. [#1195](https://github.com/biomejs/biome/pull/1195) Contributed by @faultyserver - Fix [#1220](https://github.com/biomejs/biome/issues/1220). Avoid duplicating comments in type unions for mapped, empty object, and empty tuple types. [#1240](https://github.com/biomejs/biome/pull/1240) Contributed by @faultyserver diff --git a/website/src/content/docs/reference/configuration.mdx b/website/src/content/docs/reference/configuration.mdx index c31438fece18..d6f604e59aa7 100644 --- a/website/src/content/docs/reference/configuration.mdx +++ b/website/src/content/docs/reference/configuration.mdx @@ -186,6 +186,10 @@ If Biome can't find the configuration, it will attempt to use the current workin If no current working directory can't be found, Biome won't use the VCS integration, and a diagnostic will be emitted +### `vcs.defaultBranch` + +The main branch of the project. Biome will use this branch when evaluating the changed files. + ## `linter` ### `linter.enabled` From 30aa194a72c49f8ea7205332714e211d29446a0c Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Mon, 18 Dec 2023 10:59:01 +0000 Subject: [PATCH 6/8] document github workflow action --- website/src/content/docs/internals/changelog.mdx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/website/src/content/docs/internals/changelog.mdx b/website/src/content/docs/internals/changelog.mdx index 58208cde5eb6..d89e58c36519 100644 --- a/website/src/content/docs/internals/changelog.mdx +++ b/website/src/content/docs/internals/changelog.mdx @@ -27,6 +27,12 @@ Biome now scores 97% compatibility with Prettier and features more than 180 lint - Biome now shows a diagnostic when it encounters a protected file. Contributed by @ematipico - The command `biome migrate` now updates the `$schema` if there's an outdated version. +- The `biome ci` command is now able to print [GitHub Workflow Commands](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions) when there are diagnostics in our code. Contributed by @nikeee + This will **might** require setting the proper permissions on your GitHub action: + ```yaml + permissions: + pull-requests: write + ``` - The CLI now takes in consideration the `.gitignore` in the home directory of the user, if it exists. Contributed by @ematipico - The `biome ci` command is now able to print [GitHub Workflow Commands](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions) when there are diagnostics in our code. Contributed by @nikeee From bad118b4cdf6b1899f0dcba778e5a876db650da5 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Mon, 18 Dec 2023 11:49:39 +0000 Subject: [PATCH 7/8] VCS integration --- website/src/content/docs/internals/changelog.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/src/content/docs/internals/changelog.mdx b/website/src/content/docs/internals/changelog.mdx index d89e58c36519..544ec690addf 100644 --- a/website/src/content/docs/internals/changelog.mdx +++ b/website/src/content/docs/internals/changelog.mdx @@ -27,21 +27,21 @@ Biome now scores 97% compatibility with Prettier and features more than 180 lint - Biome now shows a diagnostic when it encounters a protected file. Contributed by @ematipico - The command `biome migrate` now updates the `$schema` if there's an outdated version. + +- The CLI now takes in consideration the `.gitignore` in the home directory of the user, if it exists. Contributed by @ematipico - The `biome ci` command is now able to print [GitHub Workflow Commands](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions) when there are diagnostics in our code. Contributed by @nikeee This will **might** require setting the proper permissions on your GitHub action: ```yaml permissions: pull-requests: write ``` - - The CLI now takes in consideration the `.gitignore` in the home directory of the user, if it exists. Contributed by @ematipico - The `biome ci` command is now able to print [GitHub Workflow Commands](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions) when there are diagnostics in our code. Contributed by @nikeee This will **might** require setting the proper permissions on your GitHub action: ```yaml permissions: pull-requests: write - ``` -- The commands `format`, `lint`, `check` and `ci` now accepts two new arguments: `--changed` and `--since`. Use these options when the VCS integration + ```- The commands `format`, `lint`, `check` and `ci` now accepts two new arguments: `--changed` and `--since`. Use these options when the VCS integration is enabled to process only the files that were changed. Contributed by @simonxabris ```shell From c1d81a9d3a8e8319faa002e8be70aa48bd50aa9b Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Fri, 29 Dec 2023 09:15:33 +0000 Subject: [PATCH 8/8] draft roadmap 2024 --- CHANGELOG.md | 2 +- crates/biome_js_parser/src/syntax/stmt.rs | 12 +- .../inline/err/array_binding_err.rast | 4 +- .../err/export_variable_clause_error.rast | 4 +- .../test_data/inline/err/for_stmt_err.rast | 4 +- ...ing_declarations_inside_for_statement.rast | 8 +- .../inline/err/object_binding_pattern.rast | 4 +- .../err/using_declaration_statement_err.rast | 16 +- .../variable_declaration_statement_err.rast | 12 +- pnpm-lock.yaml | 4 + .../assets/blog/roadmap-2024/banner-dark.png | Bin 0 -> 58396 bytes .../assets/blog/roadmap-2024/banner-light.png | Bin 0 -> 60776 bytes .../blog/roadmap-2024/github-annotation.png | Bin 0 -> 25345 bytes website/src/assets/social-logo.png | Bin 15315 -> 58396 bytes website/src/content/blog/annoucing-biome.mdx | 3 +- .../blog/biome-wins-prettier-challenge.md | 81 ++-- website/src/content/blog/roadmap-2024.md | 353 ++++++++++++++++++ website/src/content/config.ts | 3 +- website/src/layouts/Blog.astro | 6 +- 19 files changed, 440 insertions(+), 76 deletions(-) create mode 100644 website/src/assets/blog/roadmap-2024/banner-dark.png create mode 100644 website/src/assets/blog/roadmap-2024/banner-light.png create mode 100644 website/src/assets/blog/roadmap-2024/github-annotation.png create mode 100644 website/src/content/blog/roadmap-2024.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 17f4a981e825..6845459b1f73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,7 +75,7 @@ Biome now scores 97% compatibility with Prettier and features more than 180 lint "files": { "ignore": [ "node_modules/**", - "!**/dist/**" // this is now accepted and allow list files inside the `dist` folder + "!**/dist/**" // this is now accepted and allow files inside the `dist` folder ] } } diff --git a/crates/biome_js_parser/src/syntax/stmt.rs b/crates/biome_js_parser/src/syntax/stmt.rs index d3ff7c48db97..3945365cfe7d 100644 --- a/crates/biome_js_parser/src/syntax/stmt.rs +++ b/crates/biome_js_parser/src/syntax/stmt.rs @@ -1472,22 +1472,22 @@ fn parse_variable_declarator( ) { let err = p - .err_builder("Object and Array patterns require initializers", id_range) + .err_builder("Object and Array patterns require initializers.", id_range) .with_hint( - "this pattern is declared, but it is not given an initialized value", + "This pattern is declared, but it is not given an initialized value.", ); p.error(err); } else if initializer.is_none() && context.is_const() && !p.state().in_ambient_context() { let err = p - .err_builder("Const declarations must have an initialized value", id_range) - .with_hint( "this variable needs to be initialized"); + .err_builder("Const declarations must have an initialized value.", id_range) + .with_hint( "This variable needs to be initialized."); p.error(err); } else if initializer.is_none() && context.is_using() { let err = p - .err_builder("Using declarations must have an initialized value", id_range) - .with_hint( "this variable needs to be initialized"); + .err_builder("Using declarations must have an initialized value.", id_range) + .with_hint( "This variable needs to be initialized."); p.error(err); } diff --git a/crates/biome_js_parser/test_data/inline/err/array_binding_err.rast b/crates/biome_js_parser/test_data/inline/err/array_binding_err.rast index 6a72d4a5bc98..8824f582df9a 100644 --- a/crates/biome_js_parser/test_data/inline/err/array_binding_err.rast +++ b/crates/biome_js_parser/test_data/inline/err/array_binding_err.rast @@ -344,7 +344,7 @@ array_binding_err.js:4:15 parse ━━━━━━━━━━━━━━━━ -- array_binding_err.js:4:5 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Object and Array patterns require initializers + × Object and Array patterns require initializers. 2 │ let [="default"] = [1, 2]; 3 │ let ["default"] = [1, 2]; @@ -352,7 +352,7 @@ array_binding_err.js:4:5 parse ━━━━━━━━━━━━━━━━ │ ^^^^^^^^^^ 5 │ - i this pattern is declared, but it is not given an initialized value + i This pattern is declared, but it is not given an initialized value. -- let [a b] = [1, 2]; diff --git a/crates/biome_js_parser/test_data/inline/err/export_variable_clause_error.rast b/crates/biome_js_parser/test_data/inline/err/export_variable_clause_error.rast index be55fe7a3d09..1459909572f4 100644 --- a/crates/biome_js_parser/test_data/inline/err/export_variable_clause_error.rast +++ b/crates/biome_js_parser/test_data/inline/err/export_variable_clause_error.rast @@ -154,7 +154,7 @@ export_variable_clause_error.js:1:16 parse ━━━━━━━━━━━━ -- export_variable_clause_error.js:2:14 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Const declarations must have an initialized value + × Const declarations must have an initialized value. 1 │ export let a = ; > 2 │ export const b; @@ -162,7 +162,7 @@ export_variable_clause_error.js:2:14 parse ━━━━━━━━━━━━ 3 │ export let d, c; 4 │ - i this variable needs to be initialized + i This variable needs to be initialized. -- export let a = ; diff --git a/crates/biome_js_parser/test_data/inline/err/for_stmt_err.rast b/crates/biome_js_parser/test_data/inline/err/for_stmt_err.rast index 784711d0f720..bc0ba28a6527 100644 --- a/crates/biome_js_parser/test_data/inline/err/for_stmt_err.rast +++ b/crates/biome_js_parser/test_data/inline/err/for_stmt_err.rast @@ -652,7 +652,7 @@ for_stmt_err.js:7:5 parse ━━━━━━━━━━━━━━━━━━ -- for_stmt_err.js:8:10 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Object and Array patterns require initializers + × Object and Array patterns require initializers. 6 │ for await (let a in []) {} 7 │ for await (let i = 0; i < 10; ++i) {} @@ -660,7 +660,7 @@ for_stmt_err.js:8:10 parse ━━━━━━━━━━━━━━━━━ │ ^^^ 9 │ - i this pattern is declared, but it is not given an initialized value + i This pattern is declared, but it is not given an initialized value. -- for ;; {} diff --git a/crates/biome_js_parser/test_data/inline/err/invalid_using_declarations_inside_for_statement.rast b/crates/biome_js_parser/test_data/inline/err/invalid_using_declarations_inside_for_statement.rast index 19200d33970c..8f5a5bc48d8d 100644 --- a/crates/biome_js_parser/test_data/inline/err/invalid_using_declarations_inside_for_statement.rast +++ b/crates/biome_js_parser/test_data/inline/err/invalid_using_declarations_inside_for_statement.rast @@ -132,14 +132,14 @@ JsModule { -- invalid_using_declarations_inside_for_statement.js:1:18 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Using declarations must have an initialized value + × Using declarations must have an initialized value. > 1 │ for (await using of x) {}; │ ^^ 2 │ for await (await using of x) {}; 3 │ - i this variable needs to be initialized + i This variable needs to be initialized. -- invalid_using_declarations_inside_for_statement.js:1:21 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @@ -168,14 +168,14 @@ invalid_using_declarations_inside_for_statement.js:1:22 parse ━━━━━━ -- invalid_using_declarations_inside_for_statement.js:2:24 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Using declarations must have an initialized value + × Using declarations must have an initialized value. 1 │ for (await using of x) {}; > 2 │ for await (await using of x) {}; │ ^^ 3 │ - i this variable needs to be initialized + i This variable needs to be initialized. -- invalid_using_declarations_inside_for_statement.js:2:27 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ diff --git a/crates/biome_js_parser/test_data/inline/err/object_binding_pattern.rast b/crates/biome_js_parser/test_data/inline/err/object_binding_pattern.rast index 4fb0c0c4229e..bcbe6a5b65de 100644 --- a/crates/biome_js_parser/test_data/inline/err/object_binding_pattern.rast +++ b/crates/biome_js_parser/test_data/inline/err/object_binding_pattern.rast @@ -354,14 +354,14 @@ object_binding_pattern.js:1:9 parse ━━━━━━━━━━━━━━ -- object_binding_pattern.js:1:5 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Object and Array patterns require initializers + × Object and Array patterns require initializers. > 1 │ let { 5 } } = { eval: "foo" }; │ ^^^^^ 2 │ let { eval } = { eval: "foo" }; 3 │ let { 5, 6 } = { eval: "foo" }; - i this pattern is declared, but it is not given an initialized value + i This pattern is declared, but it is not given an initialized value. -- object_binding_pattern.js:1:11 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ diff --git a/crates/biome_js_parser/test_data/inline/err/using_declaration_statement_err.rast b/crates/biome_js_parser/test_data/inline/err/using_declaration_statement_err.rast index 7a7656a2fa0d..402913d30174 100644 --- a/crates/biome_js_parser/test_data/inline/err/using_declaration_statement_err.rast +++ b/crates/biome_js_parser/test_data/inline/err/using_declaration_statement_err.rast @@ -441,14 +441,14 @@ JsModule { -- using_declaration_statement_err.js:1:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Using declarations must have an initialized value + × Using declarations must have an initialized value. > 1 │ using a; │ ^ 2 │ using {b}; 3 │ using c = d, e; - i this variable needs to be initialized + i This variable needs to be initialized. -- using_declaration_statement_err.js:2:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @@ -480,7 +480,7 @@ using_declaration_statement_err.js:2:7 parse ━━━━━━━━━━━ -- using_declaration_statement_err.js:3:14 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Using declarations must have an initialized value + × Using declarations must have an initialized value. 1 │ using a; 2 │ using {b}; @@ -489,7 +489,7 @@ using_declaration_statement_err.js:3:14 parse ━━━━━━━━━━━ 4 │ export using m = n; 5 │ await using f; - i this variable needs to be initialized + i This variable needs to be initialized. -- using_declaration_statement_err.js:4:8 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @@ -515,7 +515,7 @@ using_declaration_statement_err.js:4:8 parse ━━━━━━━━━━━ -- using_declaration_statement_err.js:5:13 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Using declarations must have an initialized value + × Using declarations must have an initialized value. 3 │ using c = d, e; 4 │ export using m = n; @@ -524,12 +524,12 @@ using_declaration_statement_err.js:5:13 parse ━━━━━━━━━━━ 6 │ await using g = h, j; 7 │ await using [o] = p; - i this variable needs to be initialized + i This variable needs to be initialized. -- using_declaration_statement_err.js:6:20 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Using declarations must have an initialized value + × Using declarations must have an initialized value. 4 │ export using m = n; 5 │ await using f; @@ -538,7 +538,7 @@ using_declaration_statement_err.js:6:20 parse ━━━━━━━━━━━ 7 │ await using [o] = p; 8 │ export await using q = r; - i this variable needs to be initialized + i This variable needs to be initialized. -- using_declaration_statement_err.js:7:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ diff --git a/crates/biome_js_parser/test_data/inline/err/variable_declaration_statement_err.rast b/crates/biome_js_parser/test_data/inline/err/variable_declaration_statement_err.rast index a2e77866f214..06479a5df0c6 100644 --- a/crates/biome_js_parser/test_data/inline/err/variable_declaration_statement_err.rast +++ b/crates/biome_js_parser/test_data/inline/err/variable_declaration_statement_err.rast @@ -298,7 +298,7 @@ JsModule { -- variable_declaration_statement_err.js:3:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Const declarations must have an initialized value + × Const declarations must have an initialized value. 1 │ let a, { b } = { a: 10 } 2 │ const c = 1, { d } = { a: 10 } @@ -307,12 +307,12 @@ variable_declaration_statement_err.js:3:7 parse ━━━━━━━━━━ 4 │ let [f]; 5 │ const { g }; - i this variable needs to be initialized + i This variable needs to be initialized. -- variable_declaration_statement_err.js:4:5 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Object and Array patterns require initializers + × Object and Array patterns require initializers. 2 │ const c = 1, { d } = { a: 10 } 3 │ const e; @@ -321,12 +321,12 @@ variable_declaration_statement_err.js:4:5 parse ━━━━━━━━━━ 5 │ const { g }; 6 │ - i this pattern is declared, but it is not given an initialized value + i This pattern is declared, but it is not given an initialized value. -- variable_declaration_statement_err.js:5:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Object and Array patterns require initializers + × Object and Array patterns require initializers. 3 │ const e; 4 │ let [f]; @@ -334,7 +334,7 @@ variable_declaration_statement_err.js:5:7 parse ━━━━━━━━━━ │ ^^^^^ 6 │ - i this pattern is declared, but it is not given an initialized value + i This pattern is declared, but it is not given an initialized value. -- let a, { b } = { a: 10 } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c0e9807edd66..6eaf62c80442 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -50,6 +50,10 @@ importers: specifier: ^0.22.0 version: 0.22.0 + packages/@biomejs/wasm-nodejs: {} + + packages/@biomejs/wasm-web: {} + website: dependencies: astro: diff --git a/website/src/assets/blog/roadmap-2024/banner-dark.png b/website/src/assets/blog/roadmap-2024/banner-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..07cd9b926248b98f0610debfb28ae4d8013f0538 GIT binary patch literal 58396 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 literal 0 HcmV?d00001 diff --git a/website/src/assets/social-logo.png b/website/src/assets/social-logo.png index 7be42507dbe4cc3cdd8eb4818472afec2662582b..07cd9b926248b98f0610debfb28ae4d8013f0538 100644 GIT binary patch literal 58396 zcmceD;+@=XUMdInR1++B@yqJz;FuuD#ono!}?t?}nM$wYzq0*0fjuxw8Ge z%J!QE&e}3?R`-~s?HMztOU#rCxALGuJu=h1ZeHe3`C6_yqbW77&0*00 zm%K?&q&kZ`RrpG8p>xB0VR;3tB!w(~_)1>Im2}rz9PSi%3hzZe&Hi?S@KJVa&@ZPS z`tif*$5&=?CloIh@*OrBwAICMKk?yi4?UIi=kZh`n}yt}j8XamzI?>_tTVxU%;Ja3 zUl-h|0_1N@w%aXTwXR5QDc8G&x;}jAlX2-wVCi|9_NpT8%X4?anlnD5B&Auhe`^slzv_L9_My5 z%@~`0dPegmeT3`1&mQ*aJQXZQ5UdALC+lySYfU>q3Wda@4-;CQGYYLkRq$NeyA#Zp-R=K~U+!Pgx-V>JV*Rb0 zrNYp4u^=Y*_=g*aaJugNP?A%3DQ9NAMjN*QxA`Y#igTe0uS10xQ|Dt2?xr)8>#y?e z4;8@-DuSy~1k*>R7ICSMvQ(3BAv%zfB_RPj)die;eVNX(-*N}V#1eaC?tXPlvXEC= z@$D&%VdCx4y`0KVd6Sf_ryKq2)jM__e6K-gD}AId`?&d*&(B4f5+>KX!N)c3!>bkw z$B&;ApDehVW>?N$%WutesxRAXd`H*J6?v0SHg3FJ!;K+lj~_Q5wiOJXil!^dgW9#> zeRFJ;FW*|eNP#!pqP%nS;~@Ayr_wv5Pca|9r>ppVr{!rMOY}JSCUV|9!PV7JVryea z7t{(Zn3fyY`fTuW+-Oj*SA(?(YAVHhB`@^tn*yteF{Tf)xaDhAy~_1VF7YSNpTBC3 zt ziVL#Q^A`PT6u3@$%hYQD-w4Bnecf$tnT(q`Gho>z(o-E|D36a%OQ=e6xec2aW*YQ? zfoC-FHtHcvKndV;nXBRs*%*pO^(olR+(vGF(f&R9t;bT|ANKiBpGmQgUey9LI-w4_ z0`j?yhP5bf(DPTH;fEIlt9n_Qmt0Eg11Cs67QWlC!2}DI^@?*uAqMw?Hs&k7!=!Db zuZ^K5qfi2ph@-je9n;Q&-K|0Us~^3;bD%vfX|E;}kluDSyixrd-61*YoE1XAgBiQ4$gn!LgA{7v24_}N6Ws>#zv~TD$$N{W9di5 z(~nAWJYc%NVS})6;JpXje;%!PyAgaON5)o@jq}`&MTa$)eH@2+z!#tZEWfnupy>{L z)N=f&bC3S0EzLrI^|n3A7`opw z-H6L{^ocHDFu}xX?xUt0yWR1CyrdJ4UeXuM!VmR_XOUjS#}+^Gzl)o5`oK`)>T0?3 z+SMCm?W6DR2}C>lqWYa7AN^1QLU}8KN;i+k3&+IY-RJJMNSjBxJ$h@oR$o|al3}Od zNo}T2){}wRq05#vd6<<;K(`C)d}8|Yxjf=6!+-TYT^ zorLv7o8Juj-=xQN%b$}g-~T(0|0MDL)d>82NeMLox2OR~7A`f6g-e@hplAOGpMviD zR?1T08KSYhe08~WWs%RMro9Kyk4$;=a@xbjE_*qGu`PZ^3xYj|qku$xiG5Dd{o^x8 z*I5~6)v`yPwY~u@Ti`kWda_IVQ6jgU!9B~qSJ18RZ*f0l+Er9k8fxIrz=!|&-uS#w zvPt>IMy_L@+Lv+?U{P+ZfpA$#WDM*DTn6d#4%t*NCH(>aXbr&+s;n#D)?A&`darx= zX}GtWv*`yt!#>DOmv;1(P_5vCYy5Mw?GD(qwBt~sR$=Xheu!k>w3$(9%s+j`F!uV?2?l~#`KnG3dZ)gDCQd`0iI~C;U4V(xV>O( z8~vj^01pnbiwwDK;vtcCZW-`NJwhZjjfUGtZ%@B&6HC$0F=^&6T==38=R2aX zq*FWfxQnU7O^07qRFkgp>7@Yf#*jQTH-8Q=hJr7rk;B}^-7z+ygE}9DQgz_qs2;>| zcwEHDuTz6+{iFKjlh2rtL{E5>kc4yt47wrp&6f0EZ);B4#A&1}-T|L;{P-JYW%}GM zdg*iDk&Z+0Xd^ZNWbav_^U6>5x0E>9%FJTD&60&g-SyAc6ySJVtH9X*A3#>)3cL^q#p@bT<(je9O$52u^uPNE)tx=yn9 z-rthm!^VB{r{(i4embx2!nK>at>cc90qhi3to&676dYsDr2uj%M`@O#7YP`^ibZFh z#HHGKbKPA;N-kHfY+Fa7zxrV1t)&fGTywV}e*Ondo4Og02wL>tkA-E)h3aD z*tm1PR9>T3-+udbbE@|lH3dq5;^b329xI6ElmJ$+?`Jr z&YYPX+bO&!@w^gNTvKy5%QkpPA~ewJ05T~_j(V%{o<5>PSdNU1@FvBjksCH_H*x?F z8q2;fspdNVF$l8xoPQ^D2^r~QDSS7xD3}khd_r&auzafts5wUr=|;^0P^3R@YLXJc z08$@5mcjKYh%BRNu$N44zJsgl=%qbjPr6Q7y@-=!X4qBXrCIb}z}jo&5Ng>aZh);9 z_qJ~8*Y$aMjlQ1dXNc34%py1(8V6d}MCM_%I2Tcc{&=Q~kHx?2qr}h?!Tg35c!+)< zS`}dKa`EQo8(skmQ*0a2B@4mG=s3U;Kdo{$_w=!pbk!lM6r5Q(n0RSsRQ7sOZ;dYn7d-Xq_IH~u zY}sg-8>oN%M(V275XAI_&2qoqxS;sz)~gfWUDPkOa__2s$9jG~w0KNH2@i16TlI2T zp-=Lyy(_zzu1?g{mraar`5Js55Gkqw@_)&kjDMsUDgF`hf+#lRM+OmK%iVdvqoaX~>WhB}Z0$Qs)Wyk!u%^ztx?a*O|N6Y|$9VmCtTD`gc+F%=Ijb2=Y}8 zU%HcY6@q-zUl#&?HaCX(kr@|8_*nQ~=CNE>QO9b{SY zBA0dWJi!nzcKpP-y!R8Tpw`1dS-<2j6+BI|eR*ed0|>DHueZsb51#cqHrDS{&EEc+ zt8_2?=A!-i+9=NVB`ym)GSKd+XjnsCk zv*|EA?pi>-`n@69|ADhzc8Na?hnr`db41sBWq?ppr*%*dFN#=n@LbB=M*X3=8&eC& zWWy?pD}Xo0L*ZdZ=kjqW&0AM~A~+s2-Ct|mg+a8Sc=oHRz5CWRe-Rb{+g1Ly$i?_c zCE)!Q9ZDYwaHgg@wnN37>TzT!@*XROv~17TlO0H|S$K&X*R(G@dYj*D!N!M}dB@&88Ja}OR;Fb(Kl<0C(){|XGWJo?HlCH^0MNNPC={!%bceA&OXB&IS z6mU{EFTng3C9Who=e6}E?+*hyTXzCg#`x149`ra(>3fa$3wD!!g5v}bsk`{%Z3J7&+>VL5|XGXdy(62RynV7Y#?0UZxn{CmS% zdH^Ayv?mt)e!B75O4S75&gKic`jmIVniibr6h2x1L-E5VDU9HAKYJxJ?z;p$!okMb zKW7%>@<`M$kjS!oX_Hfn$a6NUPWJ`qaLAAbri1h(NB-$S9WgnI0@DO6rMYL_g}IID znKq0=NVbg$1)CRlx@rLUm-_KB)0@l83j5%rxI|u#-ZXoNN9e(ue01`zRI~s}cG#K^ z&}Rki;woHIDNLb69hvgVad-V zWC351M<%XK7IcWgDqM{t_O~R|qyoR#5{GPy-I@=9bqSgP9COD#E5DT3>_#X@p zJKWpjrEg-ljyvmJT#){HeW_tp^Jug?@7u|_OYX?0Rg>N{d4FG0LpoZyB`1KTOKLzy z^hLzA>M#!ttF{qsd781Q7jf5ewRnH}Px=h1l6k8zkKU6fN7 zMTyoqEDp?~@?hzPb2E|ktJ72hczOH#)EY8K_vxL56rp;PAzM$^AHLW0KI}5d<-{VN z2mac?GyGR10!~~5Cr*IJ)SF{d02O(U{nVQrWsu%W(xu0&*M}g)4j*&#(B+s-g z8))bRN)z<45$!_&c{H;!$4KySvMo$EtCz3*H6oxgW8g+u?>E|SPl3e3Wf1BR6a%HZ z36odWv(h(ULpn8PiZNg*ViS4K>b*yAzZ_q_|Kgp7a9|hE73^1^t^o=~ccvx-EPE_i zc5YI>H_^+nkXmCyM;6QY)%%J^_S`NmCW;mXM>}?tJV(_uV>KWpGM@>gSxt47NyNlB ziY6jn$7Q|pT1WzzyTyXTu(-TX|CVIjs9{rs2Zj8Nsctq~&=tuNF$X1Ll{E$@U2I6^ zkgc-YUjQ0h))ZXN=VP#?_}n&zCNCfoKh#*-9XyqKP0@%t59G;f$YwjE(SEC^dfYPO z&~?}5HingkHG@+RHwKRz-#fdr`TX2QRozS~q<}t8-)Kn-1RhuzZEjd_o{t5Y2|$gz zfyr0MZUD0%YeTF{5ETPV)R_>>Fr`+CIRoNg>l6(nhx$Z)hb-^_KBij*yE!E|aW##b ztp}S^Rn?L@&~FFoBfs&c4jsRFD0~ptd1b)I3CJ;Pr6`VI3YlKf za*9kZb0MQ4paS89_-FccUzeED)1Xh&KZl@i#Jc91BrYYvZ&*t+Vvgc#Xe^F+_*Ree zvBXKjVXmDrw~_o7O8ynQY>Y==FrcJ$t(-wa9!3gV69C0e>I>eimenSr6AGt0w%wcN&RjPxR>;M`syUEXFOkV<)#MB=@+26!Lu^m zeJrk~ba$XG^Sq0z>XumMfj#ynH-Oz-m`I+5d#ar*E|uo);9O_h&>@Wk=~;r7HLvT5`Djra(mqBeuLlZ|4ed)Jg^slrb8DF*a&XW)#d_&eJ3n>vH3l}!IWdh?s zgH9hy29tu$sH=@$k$xbsWmn9N!0L?$G!PpNb}Li1TV>%8Hu{qDfJ4bLYkXx^A4cAy zHN&Wxaa(x^0aqJSunoN5y))(^CH#6>&RTg@ZWtJ>TA)~@@Qbg6qF}@a&QVBpNMGnE;+#d3uq{$^?4s93>LbzWQJIV_hMH z@B9wO_W;Qpu>jAeeEkAgV@t4soD;qCyU3Z5XWcL`;4v_`2HLN_$5N%<#C@%`tfPgK z<4od@es8p4-@uIqzPK2^reX*A!Om}~tF3Z1l$p#}nzM`?m=%kHNk(p|08qud&VTl+ zxLq$2h-;(MO7D%&qOg;^fS`9=OFG(DGEQFNLTQPTfg)WB%77KUoPej8K#jY2ikokI zW_jN&p@_WWmH-TCYoI{+Kr2Jay<#IyJ`hg8F}BumIVjt)*Zo)bgUk9La0NJ<=+~}J znmCtyo9_wg);Yc$@-6)_Ema9Syqps}s}FE62LpwWg^65W(4AJWN$NYSd?kr2l(XvO zT^o5k00CoDO9leZ1&42cMD1CdC5|d9jNSN^j_Qu)6rTn8)V@L-iV8@~`I0LY-x?wI z^7=^PH_5L6gtcWlV8n*X`qBICiJ8w9}M$Nb{ih{L^&sIc} zy|`Y?oO@L>8%?%BJR8!-;){Nh>mObOmgBs+4DYEHi$^}GOa&9-RzC^r0st#{lVTB} zy#qO}7~;MpUldo;G%}Eivx($$gZam;+OO~S>ycOOnM#wN}q=hDte}bk$KH@n+F>c~qE)Jn5dCDyVGD1@!N12Kk^Xq0|h_d!$ z<4^<`q1_3rt7+(KAtawUFh#12UvR?RL z30?A609T|9LLNWWbZf(g(y}`C#f;xifDpVvWni+0i2mEbW!M zE57sFhxufhPCyz@a59SCl)Phg2C)xB>+8}NEM1R^)@bwm&&)$B0S~Ct#876g5!?YZe`Ch#DQu zZ$Vfwxb*If1{IPDeq#W3daZ;&ggkRI1x`B^6;8j~7dLxNy65i(Wxf4(Ouikd= z8o;8|$qEpheNs|SEv06?$#ioWmY!5`ptqN_)G5arw16x%(Js!g=SJA`@sbxUzHnDN zxfbN--Owc?q(T)N5pf)<1ai$Piqu&umCUz_G*@Js2oSfsS&EV1&Sxu~TV8@w`Ay`u zg^ysTC7~?QaO|aq@ld6L^oh5KjNr5;FoCwum2p2w94>_R{%IKp&#R}wJxoP7MKh$w zYeFI1gNU^QwU6d+Au=qkA3d21GL+g z(z}ZT8x(M5P5@H4!^r<Y^x#b|0HWNl(mfD|z!B}$eY@!<0hPM-m(zTnNMJf=9?lP~=hkO00+9Ey z-#GAZ0dnCaTuoY*m5C&8OSja?E$-M`spUw7+UGne-j4tS4S%>yLK=kfN@#mkgCxVC z1kliU{`=Hwj!)R!fE69(=E1-s0F#%FY|{`yA;rBePcOYh=2)5gd5t^myuy zfhmaV572J_VNJlYf~d$i+_(}-Hvn^-t`mt0^#bu1XW;Lda<@kuxL$Ik@j~}P$i)@a zY`M-KX)No86uD~hqHMRi`IUPI`K>2;fKc512OE`8Db?r;Gz8Z_o?o{%)(@#V{yf^j zNFZyDlXs-Jpco1paaUpm2khz#IqhRnV%!TqOPz0U2a6rx31am#g}+iUm*5D5kfqnn z!zNzupTiITmZx8&`-IX|D(8@($`qseEy)+DDJE4eTJ{trWHG77pBK5(BgmB&c&j!Q z>0T2Sf6{ajuS<86A}U`8?eL{vlZAm5s16s+iZmdCgKD+){1yfT4vN_6Rp5tT7w$nF z)}1;txN{Bo(T~G|F7O4A&=@I4*g~wBzz^wGI`{VYtQCK(moO_1N?*eL%XUfXb<_xE z1!bk@d)5PaS$<`k`b+XEsw^3(p1QsmVm^J1T1*mvYx0}hILuAg<2=`d1gGMNoGk6e zL20<18q$jnrf^gVYd6UUHGle zmm+Ht8u8=oaJpgcAeG4n$#`m`n4=Tx2;Vh7Ei#btbM+8xtnIPs}Q<%cXo(Jh|8H9jkt9_xH`f!l>o*DW-w7D&K!72XYy3R0Nv zt?I68!6M)%LDp#C0^5t3EJ=+7!KGS6LU|U5b_B0_{cAVUT#%~L9)ZjHZo6i9{X1sm z2Ue5qK>b%=H5dr}aA3%$$V*W#STZ=-CTwJ9#L(CQ|* z8r1`>XIe8>PZCEvXrP1K6y;O6JjilbLeWnALky>){9=Gekiw=LQaXCkvY+oXT%`%H zqClm3eD4Tf*oOKHbFA$o*hKcSvM9w8u;+`{HCJ=(<2~o?E4h!!4$a3_8b{Q_S}0)V z)}U9#`g{Ol!{yQ@>n;WyDE-!43RoqziaTm&%;G_3c0sP0#FWlmPkG*80}n+Mw-aC0 z6hIzF!h-l~7)Dw>q58{v*JjSl(|Tq;11_F97SINfW4b5>#EYmVdDU|3<}|)cHy;B8 zlG?XA&8YcJ!ZvBB8C6#F?@d+!DAix4$w^iQ$6I5Y0u%{WLTu9h!WfM+HQE6!>3(=o zr)^|*fmCFqqiLYHEfQ8#9!E;qQu4hcpaB+GKp5Ea@j0J*{_7$Q1X6xqkwu8awysnO zK8%HG4?p42bp;!@1FH5l1OnzN1kAOwqIazqmOl2gvAJTL3MC({jQvyDv6);V0G5l8 zU*U$xD(5NEMYOKs9cD0H=>@zl$*%f85+oLi>qhsADfL9@`w0Uu2WbR>?48h+C&V|GW7~div{7*fLR!!RJPT{{CB}?nvix zXUSV}IT_zWeG7SBZsQ?R^`&J3T%3reNq75=8~{MsXT$>@&;;s>CXH@JeEd1-Fh7ZHHx3iGG0As5}*44D~|cZp0Zr=}Ny{XGsT1ow#%CD(b`T zKn&BLZ9{B`;a*WYd_FYJl-_>Rip|0f#~mfSfGtMkEvzs0>@ohVui=Ql3& zTc0evaMz}?52*wUMY+K;ZEGJA>gF>;^L5eQwZdK(ERuU0R5N|65pPWjkvicK@n0nz z1kz|E!Mf83*M>P})j$@qTfMiuQz@zvYFkD9=B%nFWv6Ohym9%-tqq+X1ziL^%v6{@T_5e^2B^-{qF>KsHtwR%q!;U zH3g`o#qH){qq0~GCEJ1gy~gUII2XK4WBRM<-H$<$*I z?(&fn!9tvfHd|s17qJMZ3PUrwAwq~Ll@d~gQs|lhWCN|*0nwBsH5bmutb*o~!N8i} zY2BWEF3PBxu1Pz19vlF~E0h8jTn?Ca!dCqa8k#5k^#oZd_9Ym&-=z!yH&Lv%Y7YV5 zHLM}hJBPWD@o_m&@G-UltmLG3cKHFb>n9#wZ3Fe@+#?|EB8A zng9?*2vD9SL@v1@Xc7^&H~v2+MOEiATnk^%9CqS#kl;jOJb&TQvho!&|D(8Q%cbjkXJJyUq~~^ zD;HO5NAer0)8GFW@bTELXn{^P+G}>WTj~bORdnS#TL?#sZvnz7&nyZCUV1G!BKvd) zzX=1IC7X%2#Ox6IgO*ebft_{7z-l}xdO@x|s|>yiFtP-~Hqu#QG&T4W3M`q_X`njf z#%CagVUoiG+3ua)+x)g!;V+uqUT|Z8p2hOm>h9J1M)5^6nxX##JHyC3w3_!&mfP8q z8JTW101{6oSj(rmb)sz~&qy&}n_SZx=7c=2%)NT$rg9kgfqm>}G5?XEzKBBdz-t3f zyVs<-4|^!>4m~y<+_ab|_(X6?6a9&LmxPYcj_`-`z3SCF_W&M-fRC(W?%!ZJbNu+- z6yUiRVlGzfjs zFx%)`on_SIF*^a4s=RYZR}vs)ny9ldDZM1CaN1e}aX>O0z}DSP$9PZbRx)TX#HPDt zg6Acr$Ca3<0>ym+pimN*#%w|B;a5|g!DA014cNsHgoIT`iLmd zoHg#UVq!+Wa@}Y>!~i%*{d|KP5|u3~#zC0926;e*-(gxv%pH()@pGn&wECR25R&N( zOZe1D-Fv$VC^(*th>X?f(7b^VU516vFTh{$&LP7E$27^OagfB$KJp!JBfbo@05tC# z=rI!@gf|()I69Jc@6h>4*QFvvLhHYH@ceb$>OI#ssfyCT$#YYrIyP>#-Ob1Jk@y!M ziOfvim3RJp%f85TC|Bk{#m&hkk*dxM!lLMI42;;W7RmtgE?PSu1^7&g;xWK3E{1~1 zW4C$Q5L=NGT(8!ZK;E)Z2`r99L4A&xgnJv^W~vUVJKa)|28)k?Ym5uGqL%ELoSw;Dq!tp;d!W+`XzsqpkVy`B0GF8((N53dV6l;MCKr^ zS|uj0)3I}5rmRDf*%Q;oEZ2q|Gt{QRxwT>!XcBF8r~TrjlMP}K{hgQ$hB6;Wq{eoF zn#E_K`cKT$b7^)GK-r#)*Lk>aDLQEk0}T>UGi|B>nT7)!3DGJPT#T_<=^K(v*>|bY z`^W2rj4&?qbFoupjA|xJu1?P`zU8FmA8@^_7~5Dj?Ywl*H^C67dcuE9mB7*a-=E)b$Pgy{dKqF>v^n1 z!i*uQ5^FA?mFPps8?|SFAa#5H?+ZQKFtX|`R&Y6)`q(#+*ZWW_^>jm4S#fuvlJcKnbKA$3`hi6xj@`H33DjU)KJR zA2x3MDzy{$49P2%a{2b{UN*M>8;Md=+q>otl5+sH*WrW`AIm;~>*6E{-5cg6Xlo(k zLCpw|!BSrpwTg@x)!h&&6Yd*(3&nzXhCe_`q1=+@y;ziI`oCH0vk|T9hq5s|wLh{r(cTr$NB=VggER7_#DsNPx$*Ml??V%hVXwP0FGb9 zKu>##!It~t&s%M(Pu66HJEt>QrNOlosfcRbp0!$GHMv*?&6;2SwlRfk;(D(fYIFM# z$UW=V+c*>`OKb0ai&ieZ5!Hi+_>39mqW*CAfE*>82*vFT{aHgwyXHn)f6w?6yWVFr zRyZIW1VGQJt!R{HXzIB_o0%>WgDL8hleLQOx0+=T=O+|Be4S!cYqLxWZtNQ{|Na^+ zu9?LOXbM?Y7Zo&V8y9&_^Md}t+{~XiTF4>9V!TYo+)Od@)50K^9Y88T$wVa*4Ofc` z*h(5^YjSxyoXJwnrn58tKUw^woK|zCan5^%8#FskKiIo@<3jbb zP~$mtt*$2Gvew~A%h(6^gR=sfCzx@>!pON#Y&39h+OSIELd9#~X{Ho2I-Qx9`2T4e zwBp*7d#dT3<4EjP=WdJZ1Vw;(BdSwJrGK%wXG_30#YQ?d3J1$z)l1lT;%>1v_=@7f zZiA6IG+ue=O-R)N$+B8f^zpyZNkno8#W4eZ5#Y^Nn1;{ubWm+r^-1M896``Ym{V6W zyLkegZ$e%~zLrh|nWx933W#aIe& z;Vn1r1u?mOLb0{5tSl^`VkFK`iIJNbEMkQpH6}?e z(0gmYK8e%)qZqNw6`*c*EfTR=^S5mhtK$Zgc(P_0(DTS3;*_4*IiU_JC?*}1uLD(R zf>}Zxzt6jM)hmg!p>;ZHD z<(6i}i&AMNXV3CL+7J4l%)=4toU93gE!?Z9b%e$_Py=kKd0Ima=NPgE>}@9l*MWCC~bP58wWt|Acg624Aa(y!PUr$QC$|p5OOO3n-5~KY`zC23PofQgOomv zzpa!$^?24}#n?v7G#(H;KA`;x=qs^!U@|Mp{kwjR7J&kk4Wu2T&vfIl%Xl~twa}ak zbIjgUb~IIBvjW$*-W^MAJb}puWj6*@9yXFYav#Mv6b7-auu$0=7`G9s_n_l8bme$5 z^k#q?G?mpP)xxwj(On>KU~E&HDsz5+688;Ycz~T&vM_imv^N6H3!@u%ctHPE&Qj>R zA1sB{0!*${JY7RZ%OmN?EGwV=>+R{F!6M!LXFGsglpYi6;~oA65=zA55X}%E4RYfk%N&-EeEWmOJkEf6MeLzi*keMB|&Gf4vZjAwYdt~@W%33HMHr$Is*s^Z;>@{k}4p8B>{1u z6*Mla1x#c@8TmlgGLsy|nopH>LvuK2Vi9A}Dk(h)>Gz({)0J+!4P`ze?s(|=or2}F zP}tVfr@c-6L~fgHz+4a3q|gTH!Pn9L5$Har^dB_*O~T?OoF69=h`WH? zyDP!p!L&Croy9&rlj4oL(C6XQ6tRy_B2flFM!gMdi)}QrM6IFc>@1Pd*nD{#r|0rt zShJECUHo-ng31yxWl&{Ri6@s{;!i&AAW;GHqHN|oaWr4X zU>`%Kaz4jiv8PxSTdcWS(vvw4*4Zd!F#o!B8ZV`jV{2n!RwXyq$KnM=fYTvjhWWBh z{xEqrS#bZg0m3z9Ef4b(rCy`jff239Wa6|Eu`F2}PGN~*xd^C}=|Psb=(oCW$ ztZ|MeR3}5rR&S{qO^l_Oy?;DnvgW8E0o@2d208$^0r>#MY_)+u`G*iFskSy89kw1F zwk^XcQvuy+>6<+Wq9w4NH*4Q<^u!+f#G}fI~AdCBjH2 z@-BK>=!+BL4w$g-6!3t(=sgy?7Qj`jvC0|nvNY9*>zxm+yEG+xEtpDDFcW<_3R-%} zsmeOit5I*q;jxOF*aVQxtg&sy3Fkx6n%1Y{%hw7Y(dlNRK}G0rrDT?svXA~A@2^=! zp=Pq!n+8h!1Sl;u{XDC75&?(i4or)7p&%T5l*jsHzisn&hi;cfH(DmxfF>uva@5a3 z^@>;~_mI2L4zGXLtbZU@HxbAgLvoG!h;DYJKFnA?o-kj)YK7WM%@?57FoOvyl5k`t zbb~`Qr@J4F3Q$smYE1`z!i0ewd0>dHN~Z4ozGt3n0ISM@!Y|v}N5~6M;M9%PO?$Bf zaIi@%e!~hhn{@kQ1uDFxOOJAh!DsD~1Hncu#NgxG;~fYYT9Ix@Iwm!9y(8p#w zU9m=*W_q7u-9!#_#EvO-<%>3hL5QU*@dAYYmUe?7V>PsebEp3hNI`ebHQ6wW{zJUF zRiITk$3TcXXxarPD%610`Zf~vA{^*EsD{u>WrE~+T0*ahgz-PDUO1kr=3mDtFvnS} z6ohfLySeQ+Vv_q^vaT@VHRFYrVp`81-jyh@6J4{$^f8F!Of!yJBNs&Ug}EQ7+rDBm zs*Kx9DJq;?Xq)|GRe9o+H&&&iWu*krjKqc$&?+Mx%%mbtv!n?c|BJoVU8;<&=AcD` z20PH$C)L}yTnP)FMqa@>2)#I9KUYECJw`_W+c=$?q$6j zZIXp2S@If6)3M7{DJTwvn<2^^4&Ak|S+Q)%KDGRKkdK`mN22$Eg0mjxC|0!A*-ZzH zd~^&d*EgT^khE$D_K|9u#95a%+=MrAqxCOX_~=bK%UfGRyO{PNaDhGs$lDZ}#OxC@ z(X<$!)|2dIGj3IjT8-z=*ZJZ+CuWCol59#(0bljM!Q#w zqm3NAKQJH0-1tM;T)4D}2gtfeJwyBkxkH&-V--dr!Ic)E@PlA18=E{U_B&WH*$kG( ziGg7#P^mu(EA^oVLh8kadQDcNhNob|yguGY&S8@XXIPt;usLC)FnrxLbA~BBC>$}K zzp*&VsJ<(XG2%O8=*i{$F=n%rt?`3&JCqm$NS!VN3-a!f*wop1GfTtVh$E|FY;%23 z$|7R>OJM;i^=`D=#1ltb`PX>CfC6Z0l&aZ_>=5o_gEt+ZDv=Ojjzq4>U6SoBw!c-W zLFaxFySmN8D`83wd5XYf;Ig|ZCKU|T#atHn>L{%R!_+Tf>Qpx?<5W-1Ku2I+o!@q- zAX+MT)k&U!PD8ZjXp30lM6tQri8K8?7capc-l@Q(A2_^-9!Hk2Dyk+Gl-&99o3Q09k^k$59UAvJ#t z1Gz74YgSyWn6X~!5-`pA9;PS;f#53#NdU-R*p#et2PWO>H{MkHW6ig_FLH3kmnu_C z>b&AB&|SHW^#6M@s%Eopppj@^WjI(jH4Kl%NV8M6Cye}a4qWkq@wO?G^adFzdtOjL zLIa_3DO~3Hy;$HdjzVK;L}#HqT(eO{p;pI%(2nO2=+`@J=g@vnL%*0-;?~6a4K@kh ztN`+c(skU|MZq&066jdJ7@Lu2qZkA z8p_{k9*cLZfm(1{WjHSfhcCP<0M1W`W-UsXic_7`7jTkvBfLrh6JWthU==dUQVJ+H zGOa*IPST-piGjkL2f?0c2^2ugg19;5c>1Y^nVv8SY_RD$C}DOqh@rJrZ6AxoqFI3$ z_XUiWgad=Vvx0+t8zl6uP8a8An%rT`H$Kc>i zU}<6~X_@Eapo9wgr{qyNPH06T-=1(vs?)&pv=K{~%0x%hf-@Nbh{mnO5!(R8SxtYL zO`=l+Fd`=-@`Jm7JCm&{}v=2}B_^Qe+TrPRv1^b+xus_l2F^D%71 zVeUrX98VDQW|mQ)dcej@$H{zZEvAi7NTx|+d7|xwgq3n7@Bgj%yQFl$h%vo}N=HPT~T;_cs#bUW6AHn33El)l*FO-wdLzF6mnM)oO&0TdM8G4ze2 z&S^a*%m`$uC7hgL6D&TKewYe=2K&C@BUrroMSsCXoHcx0*8wKy?GJhW57{#?ED18Q zrnVpID;0}a>k>59+92X+$kSp&9lbWGJ=%Uc&|^^-^~_js0w8#*cx`?o^GOFZfB5DX zs6c8eChj2)!+ZwJ2;wiaqPx=Jf4eAIz5^^9LFcqs6GP&>oQ*=zx`p7~*Rv*(j(_vg zX~+y+yvaf_OO5~5Ux>!Wzidn$9lLFkN+T%>6rVOrB2#Q%>1i+Bd8GBu?eg(3O@_? zCf!JP>%|l^P1^mcS%HBJKGp|**Xaej1g=XY#05Gl71_e+L3ObtqR47>?5|Z*14;Js z?s{-}gPBK&vol?fS0l_di)y6KV-Zm1$6ZMtq%tK_nZ&JoNUWk8Y@H)Q0wfvjA`dsf z0SGopDAt7rPURU!mO)y_hDv>`t+(0j9eMsrOqY5!%`sib(c2gJe$78+WS7Yk>4UU1;Dsm+=OIg$v1O52)&mM zZA$sx_o?zzQV+06fupT6$NX^Z!)&*kPfIhPq-fzeOP!Uh_QP2e^4l#*WV5U>#J*$mv2I5> zpVF9@sI`58O>1eMYIa{Gz6DC5kuciQrF!4n*oTY{aSCr@eK3!pN$`J)Jz3L8=);0w z|36qZL>v)ZWdEX=S&75$V-rOu7Yif3x>z;_{R98NYluIj~C!=}Ab=I*(d_h(Y}lBhCq? z=e{o%#A%wsyZCe7ITQNri>+;3EgU9E0h+vQ9bHE3hf^r&ER}3mXkTej?S`i_j}>F{ zwu8OQ;6%|!g?DNg+lgIja8KU?U)0hJpTTv>mrHSzI7cuOrPwGB5Abs9;DB?%S>-Zb ziqzr>LCgg$SitUH0*;ci&&SThttpk(EMQR<0zxioj9gKkH4uj&`KmSR7Mvgoq+#M&l z=)s=N+t*BIadCeWSQTU1r?+u2#%1~i%Vvo$CF~&M*V54MPC|z)sO1R=cXloJr&DCa zV%&doy&GVk{FgQl@{#vJ7=hVza^rgZkV@z85qsaE6rJnGm5GBkLWR?og#HEo@csb| zzNVwgt@pv)qEY!LeX&Y0{hmgB{hNW=gLjj=c&{3#`UJ@5NV5h>Z{8uSL2}VLe7XGB zCvhnBbn`3t_*5}Kzclfr^UP1LO@J3^aa5PjJiB<1K2xw?=W6`;91O|TRQkVGUm8Q7 z5wlN)Jbulr?vt^GS-kia!KYAN8+t!w;WtW!G0ps{oN_A2#Xri?4M)A!EmK1)R z%Ujlyq6;PMB;Oz6VV>}g=`MYQB(%TK1B@Ac92v$48GE}O11m?Tpv1yMd*i~!)FcD2 zQCjCWlUbsGv={nT?hDwU6IZ>)&Z8yO24IQl*=8IAs5b@gc>t%4Z>V6;w{>%d$7VQ_ z;7t?+a-yvDtki8j1)_$}k2qATPhz3Ug&YmY;Pvk7o53{WqxU2ct4(zqR)MqB4UvPf zSHx9M5&HV_eZ>lB_~n=2r`DNW&_yXuDow+o9uusW%O1Ot-lTnO%P-ua_yWf-*PC(h zn1A4iSuKlyZoQ4dt#+a-udMUMq7Iju;43#P0L{V6PL1lbIByK95JCOks%8(7lVzfG z=b9%RS=@2)hPAq{Lhiu$OL(q>K03rQvCwRUnapdxW$;1>H0j;(A82U^tFQoL0XWfC zsQ$vayI?S|>%|J!2Pq(UK;ZK0&iNGAmU|(Td@-Msp9fTZ$=-CLv#Z#%dC;jK8FaPy z#Kg06-QFn8#P|LGUx= zyqr+{9%Q7!-i+D1G9B?q5_ua_rzYjUpV2poZ>c~P8XkXSI*x^1;ubeB!uNugbZ|*r z9NK%qacDsX%^}Z(!2l!QP}Fb-Oql|@hgkXr+<|v8%bMv6UMJ}^zD)P)zWCB)ckrMI z8_#LkMY!a12UruDcX2fL)dnGpZwFmePQI@?ZjKz`81b28O= z;}|ykq6gpGzu(iQ3;4R=6QoPN#?!ofh7AbBby;ElQ=TRV!6+ zfHHMvvmufNMZFgWs1;vHPc^o1^I@9d2O%Si|Fyj^GOngn7(Zaes;!cSiC<6p!?!>C zqobkSc6eiN@|TM{mY;I?mngx6>q=WOB`7mFZgmM_L=^23I00#PBN;BwotG{_+8LAw zb*xun;9(q!x&7_tr_cGq3Nd|1lI6f#d5uLK(!#ADBWPbWJK|wi;QLd@rkI^$?jM$< z;0}I(2vc=0$Vqhe-O^{kjba=xb_2fDmCM^53U5rh-uvtlf%jjLBPRAwEZO~i3*WvT zANLjMyN=b`_dZXx;OKWDmX30pb754O%6WVj(}mXxS1qm?w;;~(W$0z?*tI3#dbvKN z}sAV_D`O1@`cm%vnm<(3|Ozd?%Wm0=f*nC_C#HStxG3C9CMG^YPhXYUT}OyV12*d4M?AZ!axs zUllgIOzRvHAo!PcByOl_O=8=!BdgrMO+2g^^AEBRJk{)q>!4HU_<0KwL+fz-9K4qh z9x*>;=*0@xhRbH{ixIAO($@%AU2j0qCzuO9*Xl}151U7R>_47!&*#rumtHcc5~K_t zSP^r?&&Dd(tkOcKue)Vzb$UlGXgLqn`n!EsbwhuQ-5@;LS;#B$KDsXxa z+0Ht{aH0>4L%fmzPio@xbKgT3ac|>ySXPj_$^+tGiNq!!+O#vY`E((8irEzxf$wq( zBt)FLVA6;}cefbcTK6f}x|qwlLV;Z%y=oF63{LhNV}%6v_X6e-Dolo28)3O)(>_;0Y_i+eq`Vy-v1FwxJ{6m0VNgbZ zJcPcj*pFCCXZ_MZoWxp7O|kO)tGF3qJ+ajdzG;JPop~GSZqYf^@Sjc(=aIQNTIrSFc2| z#ct8h1-={WJBfmy;YP;d1#-LOephCqq))OGN7KI-o1Qoml~;fX)Xa~lq)+?`X>#Rm zn+1@twJua6eR4bvq;Syg&|9>aoV2q`;KI{itE>}5+MEL^?Mmo_$T+&0^pqOBO=xK4 zygD4@>o)C{wzd{l)Tnl;*5EVZIK|q`SNS7N4aKvt2=w;CGw?(s4hVC$#$j#NkSx?r zF~ft;();l$t4u8t!yz8tZ-@JD(f43nYnx+)CG@CX!@OucDb!=45?a?`exCfs3EX6; z?GyKQBGr=cRQ(jxeGCW$p0$XR8EsCoxN8VpQr!J?lni^3f(mnd4_dO=kxa|A;PMbX z(rOD>IC=ih4QIc6Cp<{3W;1h)Stc8(`C=lyD!&kR*QCKB0{fe=6o0X@J*pu#7Z3#- z!Y%T`8LOM=dprrBKEeRjPR@i|6O$7pJnqWPerD>R<58X|;f)*kTqCv zT*HH?ll8aEd?h@qicX14GP@)0fYB?%p=1_6qLX#Lw*401BOK^Q^zrCz@HX?+@<%`e ze8PjJ8>JjNfKx}gU9-(f;K9mWvFMs{$P>I2`O>X4{?5EseU%!z-E!(^MHVXW?v?S- z6V`GOYk0oUx9r!C&z?I%vwmp5KHUmO8&cbUniA(x=b)~GndkR?`9@z&$c`Tuw(C}Z zVf#_1-#Z_8ZBYXI>XXdRgSWxe-H+bmNPNS0W z$AiO5g8OPl#Hl)V?N%7X|8h^)>8HbfEjbEv4n96c?Ukx)aUm=bUQjipYyqmP;xIhv z+5=8sDn9}lc6q>BBe@u@`M4J5Sj4>6vP)swq%bWOdcc>2mq4eVY4#SsvL;`LLQ|Y& z#WeHh)68cbBPtz*u_Q12PI|;0Pyd>Lk7|4!Qj7RNp9@}P!aZ2;XmP#VLGgqA)+#LL z6ybe^=++;#Ek8PzMGVJ?rAE_Kk^^r9TYgZs{J`gNhv2_yTRtsQ6*xVAE7arqRFCT! zCU+zL3A}jbm)UMhb}jsDYBnT$bjA%j<9Qe;yxX(`Kiu+(5EFJ04$r47Vu;`BId=-f zDq)=(gTCQSUBjE2pw_)BM;zg5^E~e6dBk(kTFYf^_^nTNWUqIbd_fm>B0B8EOauSB zc($n}sUNkb1VPc$eBmPw%Aq`ms11=yV=k0703-@1lNM>Olnhlel6nnVH7RWb=otyZtzqwDmKz2-CG zjjH-o9|aMS(#_k$hUN#Sz0K2Cpb_v>t=Wf-^dLQPGR=QF{F-}2B0Nmpx(p8&9?SBo z!!uWO@_^Tm4fq_B*l`WIZ3Ip8Q20eIYIN81f!`pJzs9UrCVU+ zTnBLru6Qcfv<|5S+yS`~8$*%EUMfcxZBDSJ{Z0$)!Jmk;d4nFE|9Tq!#V&BH4{w z;#%NqXBgn|_1ds2(cxG84a%Fi&wfvbZN1lAqrRMyQz#v(?k+6G6^P@PDs#<_TN=u9 zYUvfEm)mtWBUPTQ?^u4#gB+5^Qq#O!SG$1n|6lV&jyM#+*T;~9I#I5 z*$rdfd6z z)}ii;a+07Arnh_8q-{c_QU|qymgA59X&y=i97W8j|1E!NFH=@^V}^UxW|#Y+^l!6F z?s!F1>dA*&{G_wwqNphgD&q^dUFBA#2ekrXWSRAR#`md<5+k6W2!c8v zfVsUj@eNu!1W(WA9zYJI5f!M0Uu#uK^$E0d*<-;;E)~9ct>r#i#Z^kdHH`X|OP@A+ zAJN5=i5XieYS5;`)lRchgeZ1O&>cgb8c?06Hb$w90Y-&YS08HtoFs<;@0s?5eidq2 z-APBQMs(cNFrJ!)GV=thwmLPH(0h9Mq4&gXmd;EKSW>-ikA7EitrC1Q3f5rLS6bs& z#akQR2N?r}|DSpty;Tlp?**8dzKdoVHQePcyIXocGYpdS2csMO5yj42+xi`KGC@K- zUExdz4PN$gdfDl4+0^vL-2-0|aq}s^X;$k2UZa(&RxnsHX5GNSWKm5wyGh=G8k!Hc zWVhlSR7CqvrTP!KyWLkhhL3e^gx*F7*J+3((nVnUwNF|z=$aZTwlHTn!SI2y=>wP_ zw;B(qWmp;f>jrpEs#mIXIxZ&Mlw+ANq;juG)wP?_lB+c5YVzO_CNOSeM1Q!R^rse< zzCCerV0bg$S*C)#D&N@w%Pa6j%BE7dpFH=lJb%xYVSer8?~lZf3mXsqrRPA)8T$8Q zAA9HhZw1g3O*Hvf&)!DmyX(wFI`iAxO_$6i#(-H`>dVs~B*<>(zoPHV*=y>53qOP2 zB4VuS3rYU?f|&0wx4aCPL}@I^d{Q=mU+$rDej>$eVsh8lrgxY4VQ+Ke@#s;G0|F5Sb9>?yA1*Y42^=%|{j;HQX|-0J3J zwmYI`;4KQ&Olu6Bl~CX`U&b8P@6pt20aCvup`eqp=sZl_`MW{XM(zXe$+XVq<~vY@ znun%pPR8NOB@&2IUy)avgEzBYbmK;JOqy#}wSLG)iU4qjOEq;6;;GT=Q0w&6OG0{x z?z*D$#I=A?im4X+8V2B=sddTx*rNvjnBU=&YdxO%90d!iB0i7(%sluTt9_Gw4uJfS z?bCk0U&roEcmKJZ zC}X(>r2t?Hi-xeYS_ss;CqtMy6IvyF9x5;Cq>80B5(}eW1Mg-}L*+N?a!Ix>DtLpd6jS zq}&+#BV4)P6I&vv|E!RNVFwug5-Ku~rlT5$Sou#3|9GB;Ua1bx_rrco9KZDIZJn(C z#Xvc*QeGd6^15&7O$`kPU zU(_$K6#_;??VI;BQ*@@UQJ=FDpF|eYML3N+8&eayI$>)=i5OiJ(<@bUf=|hcY_6U@ z@D>fmAnfS!m*J$k6u-@*@5+%NnC#5Shw|TB)k^rzYI3Fnqrg(z8PUF{QAKn8npdx3K-xx0Iy;O7^X z4SS%z;^%)IY8B&O(vDih3JgqlTOE+u3AcPc^X3Y$OX`Lvi0r1En%yX#x@evt!_}ry zTZA3lK2w-bA{q)Cw(LxqoY)Q0PAZ205d9tC$=XY(_p3y502Xps`Ez!RtktLwi=H4L5US}U}& z0TfP6EJ9I0gwr^$Fz)mXZ~^Ai5p2C$@Iw2+qC>;bOy%%fiIEG6qCwb^K zG|G!b)3o5=dplPqG_Oj4Al9mxHrU_&A&@Udj9>#>QzIA3ci=nmqIJdxc_O(E4cTfSEO@>2ZK7y(o-C!102SpQ}_?hsD8h{;NZ#=k~_IBS-jNM z*D{xI?*@eHf!b4;1AtOuR+SvmQzr`HH4U_^PV^huiNXt<)DZx0WV-_D`!_*wYmEtA zWcR79V{&fmY1h$X%K+2avDLLQ7t9g7V<~Nf+x@T$e#>eXQ)Msg!a_Qmz?b`p{`um{ zETfA|-H02_JpyyLhX@_F^h55ZKeQvtfZHbeS5lACCZJEChxiw%7C8`8(||_X5eW3A zNz`stWOlXU4DLGyUDi-!mvF=~J5xqpvVOI*2HAiMQIhS$JrQcA9(7xGsGP3U&KRap;s@%J>3J6oM$bep-rx#M5 z6I%b9r3hs09_T}J=?z^K${IZ;)usjn-HM~%f{nMOq~4^re=8?yRTaeQ@NwJ@iPwNz zTPfIB2N`fYHa72pk?XbTmE%-b3frkbH&jiqRAg(aG~k~B1D&`scQM}5x#+qn*3aj^*pom3O*)u9!~!t?9@I-i)eHFIzadms zB*9Ei!Dwp*0!@!JYF$ED)``FL5H#|QxUBZ6MY4f4De9OvNCC}%auzcnB258g{&>~z zdja!TiXsKk3&NcAd;01%GVkh$d$TeeTI!eeL9H1p`^yf58jY1h>z?0rFL+>h6S{gJ zD%#67`*E>9r4qsdD)+&sPReicbWkH%!m!>f`GX!B307!Sy<$p0Ex=RwQ5vJoMJlXj zRQ2WmSKGBlS6N=^TuOqbX<(FQMy5s)Os7^3t!Nm)9J#4!oQbWg(2>HS7c4cxfn_xy zgfoCBmsT8HP84fmm($`}tQd-tK#d%t6>0^uNHhc@91KWI0dv2foNxBt@B8lkp77D6 zOYonXoP6iK?EO5?e)j%E=-O}UF#xo$^$7i*lJ6o4{^tBfwwhPNaB)#5Al;`eilR>BoPMR;oW3l)^Z=xMjA{>mBap(s-xw*&^Grs zm-~2?iAm*uf$h*jWlxG^_)iU?h5N(Qo>eaWlS=u7`o=~bx`@6R%&Gun|C<-e>W8g7 z00FMi{FHg1*x*f#ZxFaHgHIGb$U7Nw%`WOn7j~ z^WWPijib{~5i~mRI$xp0ND6Nnr&N{BrcCi^*Vsc`iQX?UDJt-+- z;E4hTHXq*G05`RWg5HvdQl-~vmU|6HaZ8BG5TQmiD`za;`{g4ieVEkw9XdrH(<$o4 zjJ&qL1G((H6@(1RPiC7 zC(ymI986!FL1e7)CnA;9MY1musSob@q5hmfH3L~WuD&qR^dlt!N;278_9BeRs)KU|J6yFQZzG&s= zE*+i1>2x6nuqt($=~UH%MC_-YJ_4XW z-I6(=R9^AKM)weP63?Hx7Cf~8*KMMww(j1^O8|>T^qRBg*jPS7Bn7(|A%|M{oikZ$ z@X0rzxtaXD+Kw}c=lBKox<(!ajwK|hMG7OqvX1cGa@WqA(r!+xWNfn8poaiXpmkzU zG}y5?aIHnk{^1kji95KW!oW1O)tdd1gzR}YuvX5X2tA?$tbIGV`2<{mJw+t=mVFva z(FAoH(SW>%P@+N&+az=ajpx)wzG)Ttf>LxCCY-=amux`D16lcE_(7%!Hk-W658~`) zr-w#lBY2~&;~j%S+rzuz$TXJ6$oWuTh&1oo-;+@Pq0#_>itp~u8OuCUf=>A83QgQ& zAYJL6C`HxM?vY}f(%PeKBNY;im1)3xgtM!)D5Kq2h|+A(Py*0KNveN^HKnCjbt&!K zf(KvDyY7tRpc`Dns96O0uZ6 zE4A9Kqfo?Q!njb+F*?lV@}*{{13P7b-GT>me+0{sLQPQ8cUM&&)f4)b4vRyBEKU3+uY7OHS<}Yj{J;f%rF6O= zn3*m=NH}evZ_Zt*yHp^Fm6gn9;uMG%>joWya_F^XUR}5auSD-J>-@mJjV~v$4~4Ev zBNN8E33Mid3G+9leo+Gg)prSQ_qlxIX`BKi7Zu3@i?k?c*BL9voXm@4va{5bbcWU8 z3)gfB+x?7)Lr3=; zr0Na@?+4>YW8VaIdyeC$lnbNI3DnpDHLLG(jYL9mXaVn8rJX(&PD$^@OO4t$c(*?= z-fbe(LY`Tl;Cv-Gw%adCMhby_MZ|9-drw7qj4CGY{qg)W>shu_$0_vZXG{zn7+baN549lIZG*%|8Uo`f6>@fFz2z1YJvkf8v;@jqC%ihv>nP zmuP#tg&2n$dW|LUY075`hU-k4Y=IJkWl4HJfMKwqNn3?ug+;Pbk;XM+oNH->VkLAa zls@iMNl(F@{|v-!OjZgs=0#Pj+BP)7n7<1lcwtMni=3^5i*0r>)>2kw>oR)T=CmNB z%i#fb5ka^!>!BEv`Zo_{F{-dwY{@;z5R{`N1Hu8hKOqj$ZLcm3iNX-&GnJ&vmLW?b zi>I%P6eTjO)C;w8%clJ<#%@r`#@>ng>d8z8;Po{gPnN+mh2BBd%eXAJD zTms-Mx_&Ut<@V+q=I?2OlcI+MkrEeq!!#xu6Hzp=xe8<5vQ&u0oyIwmP7AR;KIJUr z*G$^96JT$|&`Yw{&bcHD-3S(3TrqOfoUcN>d3{4DTGSQeo(0D}Ev6g*)1}#8HjU^` z@tUIg^{?&TcS!e0{F&F41-RBUH|5l|a@RmCBmk8nCo@RL8)o>ENP=}QyR1&NtT41_ z3+=vKAwm`vtC8VGN?CyHWJkG2nV)HJC*TgQ}_&tK+g%j3ukc??u!O zMJGoemtlhmP-K4!HUFaI-fwG>wsM?lWQKPI8nk3JU???K-BeaUqDx$c&r;n1I;pBx z+$dV7Rw+nV5qq$kU_v2Jq@u9Lx)aP3+)GC52(Y2z9{3FtE4TCyWb+*uA${nF)5|A|5x)j*lF{Mt7%JsIPzA84#NAD$kAv#D+?H^T8rQoRNxxIi6h1ll@zmi0X3}+2Jb_F`ke!>=W1q{hkW?3H-2`DQXPc`{T&h!Ne@+ zK+%3$z&&{QtJ3nkY$4=xRr53aHgSW zW^udw5GE!~v>v(d|g6G`2?z0?YPp>BC&6M_Wbg1SR)Vo(Cdr!c+H8@nvEM*A(97ZG{DjSjtU?4N=6lFH`h=D(~ho@%+b z!y8@J_Z3po^n>XDki1I$MxKDwMa|ba)$MbEGh4}jzyTsxJ++cpAxoe$gktbd>+Vm` zLV+_V@t4Id=n}*uG@#oi51QP;2TWP3!CKwQj+N=oG0LpNwzLBz>wHZ2YD{|AGCv zZSTz6+Fpgk2znZ(>D;CCtU4%GEmjp;*h+w#;E#j1-<2~=Tl7L&~e2af)g^C9`*I+0}mx8Xq*W zQw5~~^)&Z>E|ok{Q|^X-F4LvyD$zC3JsE&LX7P@A{>0_H*NlAbhY~3Gp1BRZd;{g5 zxBt5`;rc^Ct|+FoUTH$*B_fB$kM22Jjl==E6xy1O?4Q$8!d*13z6{s&bhU{kSA*;9 z@hm_%G=>P6cCe7&5uyf;Py?c5&gVp0nfTV$)elzX1ey~A&6UloR>{bZdq9qv)ut_x zT6v*b%i-dYEgz4Bc6aJc1%iUjv$IP>$02@?;V%~^q|449f4gzB`{NIG7hH%7-Kuwc zHnc*)^MLN?se`VZhFLeTqxWl^fUR}_*I@wS{)VcfiF`o{$&?(=*HEq{c zDTxY4!s)xX*gu6Wagh!fVLI%Ycxa5>Dzc3w<8lOq)8ImBT~TQZ~~jbH{-2gAy2ztc{Nmls=R^X zZ0NF%K(`ajGV&fXAUO!#c)=RusVq_)DKJL%4yE7>Qq`e*-1Jk}hONQyEIqv{r4&%b zXcBbp$SytkeRG1zvbd)U9iz3&^gDHlKE|$Q);D5nv3DtrbR!n+GqRHKcq+=P-5Ug)d z)}MW9TKR%9kib`eKBGGiRq&yh49@znUi;GO+TNi1{GqNU#oM^EYtt7u>X%f^aACGVWj`vT zj@_b}Rh5St+PYS&_RGy`HVq7aIf2r{)Pk}3)D^xe!`Y~al@-GibuDM#=t&0x&zKXd zn!bm`Q56e=$zk)#m-?yJ;>FHd6DX{rjy1eNqO^OD%q?cTPS4T(>#V|rvVat?X#zf5 z)Q|^lDszKs3|H2b(OA1HMegkq3+PPa3U3|LZDwed0E~xI{aSYpBjigA1h_8n1|;4- zO1!Z+V)q3tqrTK*MpxPa4V?buNzYm%I6wGT5`ZGsHQEi&xI z;;-zsv4(+J`k{Qmpd}y{P%?v=HjhA5+w$1^opSat=vhi8K6o`IwLvs*lU znmC6sJzN`VrpQa;cTw$TGnVdKV6x$Zq_g51cLa(KV{VmG& ziIT8;Cifm3hx%WK9?hX&&`26)U~LfRiu<105jjD~A^OI9dAb_Bh6^rh`J%!b8@DfZ zI#2vEV!ZQm`!8sjlPq7a_T>EB9KN0$MF3AcxYAz-A9<~_ zD|;)9hi`-#5!H%4*`4N6rFWeI+{ug*14$TMtq2u9ML z^DrY6$8V~;0_1(?h0~?JZHXH;gc4q;YzU~;fmhz>Nq_bT0lC| zLI6V%kS5Y^{JnR*-@Cr`-M{X=S+g?xoc-))@3YUDeKN@;<_T1jnu3i24-b!8>yi3X zJUn6m505~Qj1booNBfl=4-a4ciH@O$CS2!l3mxvj>NEbg@K0{0!yP!`fA;@Rz<;U! z7XXL<56}Po{vTVM{J#MIQ~Q6C|2Ief)%>6D|C9f}`~NrLzdhpm|F`4+N%g z-lj4mBFNW}K4VYCr_S7IA)t}a;x@F_6BCA@=xe5F`CiF&CFn`G+6wu;*;XD;ud*^5 zIFv?Ww2|uz58U2Ghu3!b=TshD&7Ixk|H+y92oH}3PfPuQq0f(Bi`VA#b6lN>R))+v zme^^(xX6QDNB>+tKDRWU+eF_l2#iHGAD+MByuMaOH`MEG?+iGjhQTcN8+$W)mq5VJ zzb?<8qh?uf!}x#uQXzzuo~<9pdnlQlydHM6=7K|BhCH1I3XL}p8!GXss8fTg|Z~UWZ9F7pg z!7h`qxke~yoHUPO+-1V&0Y6)z#1UWdX`x!9E(jFvJZG*k18n1wA%B^qrk~o-;jr7X z*1JS1fW0Mlfe>er@9CC9hI8Z@H9>>pRtnw~ro_Xw+qHTr@Nh73x#~|OcsNE8QG$O_ zEDnhh;?DHS-Tz1wZEoV>NR}h9J97WH37zn9wsjoedm*B7!Em$HQjETQU)UdY>j01O zoGPPd{&*{OokLol?q2Nu7?Ij_f^8Zeu+;zKR*2S!^S*ABg*QQXin;po=Q(EPAA_Gr z@VgzFPR9fnwqk=Op*0lv-2)@X?jY~JrF8mD6=3Ag-Qj&>`R*{@U3&cRiPtxkiVjtL zCOl1J@K&UL)P9Q0Va!7$lJS74hec{P3%;2VkqNGYbWhzx9|pq{&afbLvrBBdLIoWU z_>i*A6aM&{+)HVKaQEVl(JcCd&!U<*)PZYsq*Av~c_prqz4J7>aK-{{vhu+a=5AFy_OB<~4(T!r8INp!Kgsjdh<#NAAHXy!Z&nkehFQ zOHU?T!*^@>aO0Cx&T%lj^fowpmW(4=j3++Lav>r^qJ4kknt6%3VPPIACtLsWMmU#b zOb~GxElo}fJsj9=P-46da!&tqc4FvOtQpch;El%bmJLljpQUDk%6!MoJN4QdKi0~e z1x}n>#-%}>Npcn_*AZ@Ih_q#7zEXM)_=5LTfRDdhd(}nodwjnY;yg3H;RSJ~;PqPw z6gSlgCzj%i!7JcPeOzWH-zcY2u%PJU=y||&pIy(wh~O24=l?WoVzTmG-KPIRttqYl zBBq2zXy5{M@@cQhqh>-8{4<$u!Xk=4sw^(p>k@=da5-^lvi<7clC0Fit(CQ~{wydF zIV|np@Zv6hAxcRfbPs&}H}cqitQ*NG#RbV@9Eb6Ki|c&)HJr&5m#@0mnZ>BsFRi99 z4IH5aB^R<~WHb`5J7%=X4|GhUga*Sgwaixia_H7acq_evd5vSg8~4ZPwsBL=dmd3- zQ=_ZAqEo|#n}_`QJW_wYFhbgleP;de!=xib+VwtruK8M>!2PHgQ#$+d6e*jtWMtGMu;JX?_`} zy}8CtljQV!)dP?1nK36S=v+~vak?shUa8%3$h`q?!$u>Y+wx7=>Q9MvM}bkRbUY6? z1B7e_%RRh#QAJ~Rl*U7^FabU!I^do!Lm+q#c-?9NfKIsF1}i0c!)T}^jcRd ztpgFW+|$-@(C}8$C-3R9)NNxWx5a=#8&{$#AUC}%MD&-SL5LwQ{!NlbsHTMdS{Ioc zq>$y=o=?`?E__aX0U-%E`9WHO18qbfa zy13hR_Z0kcv3Fu6ycQp7Os;LUdby|vI}ur%$c9@rIvJ<^h(y{4TNNbJq9pI=1I>wL>`OI(+sE{#l14y5mcyg!RdK&~o!*SR znBPdV4=9g7z32W&mY+lvQ=5>EsN{qTyKmN$jirH!ey-^wbt5!bei~A=cZ7P=*`a|N z-6ULi@EANYPm8-s%?U$8W~pEVWoGEwq`dKy!OC&q#@PY%vqtwz51{%PElQ_Mr2G3F z`?plELIpAh0to4Y`OV33o7}fxWKewbYvp2nS3`%Kr`q>h+Fttsl9HTsr6?U#9o)E7 zEmy@=xl{2iMn5ykEqQXgWnytN>h$2xOW`%$TxQ{(W;+kyZ~#L0CB<&(JzOTSC%?0< z!%CKPB|pK+Afuy4Rky2nJ7>YcWF4`f7d#^c#=O+~FzzJqmJB(u@qx87{Q?HxEyz}z zd%X2qy5ybs_Gs3MQY*do3F%cv&B|~FG(sC$()MRXCyn98bMsx^reT$p8lCwy6!r$*4ny@i?*U~|HNb|-m#2xzy2@nh{(>*xkALsYmKZCz0KE~%&1|6 zop=z&e;MVd?k((>6y%Te;aGnvf{0QSt#EAhm3jFLh?~FVH?Ps&ZJL>Iw0{3;ze>v_ z-K9v4%x}gw>xz^h?PSZN0;|s) z+N^21KK93o1Nk`&C{^QLLGv+waA(8%Vu?6oVFW;_%N8nsiLNf`m@W2yaOqY0gEy?Z zxkC_B*I2Cy$p5&ImemA&05O`AI#z4;Efd?eF#ah(Oo&HTMDT#=vPVljD2yk&j93yFHcJD0vdIjx>YK!+%k-Ark`Ua{k>V3MHZ|2Xxb%>c-!%Fi(z_CLjA2rGPFw+;cJzu1zIP3 zGMCra!9R9r6czi4e0C4L1V>M3$h-wk-uy%b=3Fzi7Z%=?a@{V8%x+a&3p=!Ciq#{0 z+-<7Ap}Ah#eL9~e_)~7sP3IofGlRdN1W<3UrwH0;mvEQ;j_mfGqo#n|v3EdMYj16} z%-4o@mE9F5+<}+MYhP{@yWR#f)|2u+AJts4IJVB06?T=0SJ(BJnovEujO>=3He^{- zRCf++^nWS^Os%K80a4||tV=q8C-LFkf?l0f#)EGTELBN@Aua$-+WjADVFpS*t~?j**hDea0Mf8+6#g+jA;z?(a|N z=Sh&I97M4z!}FY9h^dNd-towx%4y@^iK0fX4Lp>(Mx$TR;F z3AFp_dHb8+2Wlid4U0Crqy?y zF{CohR!EmnE={Z1N~O;aHxUwKei6u;DCX9KWW=Zv9UL|T;Z|nHt!iwZ?VqzZQ&H9 zEpO^kHigZLEia{ApDpedTnrDRQwO)XQ@c&uZJcM&>LYV!Q*6!^eIJ^;*@gm`SL4g= z;b)&_lIc(ZRBWzG=%ZJDWZT?#Eqy=BD1*7ARA@vtl32>#~AwvZl39H38d- zk>fw}(-zyl)9BQ1t+*%!Jtjy7a)-6r%|wErAI)4{M%jef#BYNADSz&^T8khjHb-X` z6-Srz|QISL9%ytwkyUBK+8kKD_x^fIl^&%b+4w6V%Cjm_o$r1+gFq4&#_Mv% z&qTb%+yDHx!F>>lM@8sRW!GtWOYDipjnTJnyEePRiHOR z;_CN;HfcAJGk@((KGKn})uOqpSwOHE@+ty?*z{MXZs{a=aZ)`<1>?7KX`J~|lyTEO z2JY8c!JU-)llN?^jzPDQJ(0nMz9&n?T*y70#QFtYJZhCl5LAQn4z6-jzat9jV_I)j z<}B6d;VfQV?2HP@WdUC|bAE_`#8pPl_aoIReG3J+L33!2BZOOG_aW6hf( zvYq01iBm{7+G8lHF~kf|D}K5CrQ}w;)Nf{quB=!N@uq}>`x?z8 zqCH=_29oce5Vpgi`q?`-1`T;p%ne9|CzFfS%&s1%O+PJIPG*i})uJF1y1$E@p2I&k zHM4I-Kwv`j(~SnasZdx9J`@xrP6wkjx~^ufk4mk3@2Tcx;#UdAQ$crDb0*<00;VO> zn5zf2PXc6$TXUjaw=KbLV5oV#r`O)!mGqL&X7*E8de^|a{@9h?+2Vv&e{b#rb-H^X zbsJYdt&NO)yisPlt(GyHI6RA}_u7K(cYMVw_&8Sl-;N>Y*|~ z^p|x@{vc%<=u-cbah!@vh@SR}hn4)?dq70sp8Fl+oKN_+)fx!)96$^C zLT+tA1OzZ+WCKN;k@QfkG?;Qr*WPPMi8Hw?W;r0&YI@>Z1Y(}LIRMqFajG0)Px&;n zvTGoPTe^F*#hX8kr+f%yxl*7Bmy6GMpARGz*mGQ^&LYd5-tVf7qwNOElmLk1qQ{=Q zz(ojTdi|zDXTAZ4LDhI@$Lg=KDd{KIH(lWp>jR}S04Fn@SS-E`2P|ist84QpLjNcz z^zp}8t3UlKnlGa~jHruo)xj>uV%dNMIWLoI6*4~Ze#5w>80VT=M}4CN0WiMV9Kjz| z%zZK~{q2$)x8QvDA2EWm2mHz|m%#}J`?nI&9&?ew%179-bp>S07@dO=VSPBRGGxeS zqZiyl%b1?@JBNA?@dAWVX%*~$OAsvU7EjkZ&x_6KjHnO145R_pLme8>#XxN?SjiGe zFQ5=Qv0_)Kb}eDzp#227&`ccp|kZFA~*|}MF@ANJ@dZMs6T@%j4kv?9YU8y}G z+9nJ!k-~+?4uT;8=D8%$j2&651``k`Hb3qCk1zi_?``Uf38tCECe=}M&UZ6X-xxJX z1Yt`eA+;OhIU=MA2)VV=cZev3qLw`NGZJ> zmzvja_-7;VxMgPx|JEv=`H?hV2Zp8G4|2 zPf5@*Bg_g@mAtYJ_P459oB|D4pi!m^?^sdvy8889vLRM{1LJppQw~V4CUuUw>G+nL za-RsZpWt&iyIv z*_0TZ`$Go({q-Wf-2csSw1`JP@u-0G*e{D2wB4wm*m= z`MgO3hExSxDjp)Au@`k#^&AE-xW_F73xb};M!{;3?O>HuACMW z{Hti^35ObXk%NQHXOKthK)2~VK;sY14n>`L zMqT8VpVA-XCr*MjT|y~|5^z=d`?B|df_@{^Wr%w@1xi8&ECRY?>bWQREF`(@&^j-! z9~`LYxoe*hV$*SBW#8y&9^o_L0@@0$WqEwRW~qxxHMt&~ zg{zL9EYXL%M_&HE3z)7@t&+n=&5Ff^%2W*odpIA|Jl3Oxn zF@-}~6iV&j<-xTadO!{d(oku?$MoxN`#qxAz`1{Tkv#ZIDrlJkHVR@EL%c|&Css!V zWrR=T=*?w8@h?HwjT2FJr>Bcut@(QS*DGP+p#Lv8fyjOhA2^otd z7s3f>XdKx-0=95Aa7)6N8f*ET={%JK74-M}YHFZSBNq~P zUqOPE&V_Dzd-B_YpHtLum*+eSG9JMOs-CJ-V->|;PT6Ph&Q-RIl(U0xx>yxb7QJGq z1>u~?Uj%>gE5{lV3`jw>utSn=ttIS&eFUV*eZ%6&`nh~mTV$;Rd`TS$^RI(1*+kTe znP~;%r=NcNHz_(N<@1$ipWApN4$X~$0wk{%mxu{o`W#eq9H-RNl#>B6>@qxrE=($M z%VKqyd?{#y9ODpXKn&hfOss{$#fCV?#jpZ`;FwxSB9W`|(RrsALE8<$){h{d2W^pU zpbg|By2&qpzFV8Vxlvge=>CWlEb-}l>*inV z;LzbaTGR;$S5+tsiGs8=Xu7bz^wwm3xG+hH*;t8 zmCOYRKvlG%1%3xP0Kr3cJwOS{tQ70T2Gy)@#G5FvIV^-ggD1qma!Ogr;E5nWH*d&+ z5!GfL=(%1Hp@2>$Ksqv36F{$5K+jt9TyE5tt$Yvnz^`qN?&rYLW&Sk(yvH(WaPK4l9j~2;_f-3~|B&)D8%sX(1=rDLf0(8C-SMDSS zqGp`CwQ|aXCi*T}4a(ye`8tJ2pi}(zx;S0`T7wZVMjki-pR^(+qN_2 z9?IKz#ZdX3|KM5clD>-*A$%~zpn3HPDVS-bEGvT3aj$VyBo!zA7Lqg#o{#~{op>AY zk$dnwZ+GjQ7^Q?W8)@kw*Rz7GbOPu+T=>LoFnGcp(6yq!=oSMNkCzcf6??uK?FEXR zLgdhOHMBRr;GgpROzWNQvhVmV8Zyi7@$MWjJR~2Gb{{1WG|vy!JivwBdON}3^WSvX zRF1EDumJ-&$lm!A4><$R2H8I^8X-$t9x;*TdhGsnB!HU2%M)Ad@C2d3$~VRD^pxH6 z0)7f`@2*Lknc{<=(T2Ef^RGTCyyx^gADD>Kd+wmKOS}UfBa?(Wg(#uff8Hk&0&}(p z=|eU5D{_+5kkv|WmLl$iKp}c_<)pw)&z$j_%&6cAYoMAX;xO46h?5g`ewJmrJnis; z4z3+$VB6br0|<<8ANY{7dZi@^A5XaPSSCSBbW;i*g@?p_*^ubO$`SELX|q+Mb0D+g z<;ultPE=mPW2Q*iZL^(ie5fz{&s09Lowu&G;lziJ9kn;yB5U#K26CFL@YFW> z9uBjWx{zK%<7b~-ZP_X7Al4>Lg{|}iq`gA)B%(ja-rM`2s|NJ>C0H_Fi_^Du62yXY2r66HMMaznW#xVHK<#l1fj z)HkWMH|-Rnhnmg!mOHGvTsi;fpa7%~zcuCbh=`%zO8K(Y4IfSSoU~BK;URT^-iTR~?u>q@>5fLQ`vKUBfV~n|ZVEMEeb<3i>~AR^ z4$%n!0M$Qp)@l2p(5wib$7w>G;InKzoqDLRN&ZbGxoNzs_5z zf&R;}fU`^L^H&K6!3$klmI5^-^^s@Tqjwc_mIPq;$|U#tT2UpidE&WA)qQ$-xSn%8 za&T~f!PLS=|D2puUx}Zek1}PrzPZ@h88gjm4R?RpnJ!d+JkWQ;8sZjgpa9~JniOBX zNKk!iZm0{T8wfufd=kLb9G+s!cwv2-N^Pr@XLzZ&x;+X(GtdYQy;xk`^lVpqNwL2x zvLFiH0W#KFWi8w&V3Ta{mx`!Ie!jcWhxO)k=p#H-^vCH*?99+U7WWk<1*-L6u}u%U zQapw4YIc}1X9{(d=r~wYBMzRp3AV^jcRbS6t&JRq#{Dr3J!}a8PB?qCND2S^s_#E} z9qL!xcU5>Vp@kR}TbXRyJJ|kSP~Rl^DGgq*S(qn zCd+{Kpb#8QE*78ZPK!n6Fv*AojR$b@8sN&A(6s;-E*$ile_a9}>WY^7K2T=4B%EIi zORbRceK;u+Z1AXxB3QD1vpuJt0ewUY{lhxY@lv35yZw*jJrlA}9tgvrWV~Zb^N4KT z5(y~bW{w926`Jm=;o-3k{CgH)NpJ^&`KW^rCag%^<8=^n4>nML$=_M#xn3XMyC6&h zSoS!)dN}@2?k3tJpOlXP`e((jix3Ppzylw`_^6|NW69vVfP(CStvz`17~2 zoeqUa7aC|ng>SC<3hG&>5FS*Ia+kJt3#0e&Go|2hyXcw{K2&*SP3}3$Q3;pmK&uo! zz_g08fwRQkGuVI#oZPQo8YBW1u}Pvp*`_7ueRB92C9G-1yxnG~Bz&P+kP15JZ`|)o z0CM$gE)wad;URL&d41RVLhO1&+hM$)JMKl93 zlJq#8zjJef49N@halfu?&bt903^llLS(d|x-aJ)FUMY^% zi*rxE5744@gh7G~e$JOCK?aH3%5Y*R;%~8D7DJ0}7_Lo?2eTnk+su1jzKAi_RBAl%(>XjdSnbheR#5IP5M;e57-qQ!^W_+E|~05RqA&_N$q zT!%3}(gP?%Z`}%wH^K!%jk-Vc%^VO~f1wXs?o=iK)_b%J5jDiMQvw9w0lMuGSC1CM z-0p*t5spuIfMT%wWWU4Q?xI}`9#RDey4A75N8vo)%*0l1)VWCv7AYl+@TSO=<1Xo2 zpvgCXK(j-xRzCg93M^4%51x<*GzaW_@+Eh4G-)D+*i|*3Mg1am%xo z)LJ@t*qCNt-Am<6gSR{V+^?ml(&JxCH4@CnJ7cFlJ5@f2)teh8vozh`F|9RzJ>@xd zvvB9B25ok5ivMD326^0N7~to^aTIs+X0-NwWb$tBxI1#foSNv0H~27oLC%~wS6FH~ zdvTw?y>`*UiQ(zrBi?N5sb)WMYk7O?pI?t$I`pH9uV{h~bA0{x-%fj!T2#U&4o3oD zey#I6E_&VvBc~n>R-&-qA)3!1#LW-ut$!%a$}3dWE60AESuS4-edM=_k8M0yAsA$P zK-?$;tB%w8pJmMDZUd#ypn^ zZ2uwuX7mf9`p?U^OZHlytACCMYTp*<5f%gV0YUU2nH;-ElHS~bmrWMR$BG)QboQ+c+P+XzaKPzscfT@{%qB{< zH3FeLFnrV@M+Rx2k2iC!JJAD$Py<)ezm;5BCMH$lD+9O44!HlIN~Dwcsoo>*zJI?V z7Gp~*buXKgjxI(&JlMrjfFktf4LcC2Og(Fys0F`QiHQlmKcYg8#RVtNnj$ui_z>(&$*Nypd+z zTF_zefub1CumlgMl4_LQdx_;9<5qM;(jUaO1sL9YS@3~YbWn`Y0ZLK!Dg*I@(r%S`tO&m z%u65kNvwb1_@liya(n`Ya2(7j)>&D(r-@dvnU|E9Ku8Xf24EkUva1iTXoil5TB{ zU5u@D)q+{LiJ%PJC5{dIOrej##d_H;XI6v&GxqSx1iE~!I2F`>eC7RpjT^~}TDFjO z+}LyKm96ETZ}cP#9G7>$jr#sI59Quf0$_ito0Y}ZCM5%bZhxPsfm(gChihANZZM6k z>{0=!Z#$0~V%qBBh84SkeA~e}syhpax)L1syp3{lXJamlb$;F8Si`YkICygTj$(vp=^GaOPD|D1wxFbs#j>{ z{TX%O<<|nB;)PHZ+6r8M#0WureZM}ibs)){UmmbewPGR^=kA?ISjzwt8fI>x^Oy2F zPUJ`FX0{n|#uy|t#8xXMBY04cU4y1efL0p`uQ(tjx^{~-H0Z~U*ZYO9k3U}O>VcKC z_Clzf3d>2C#RrOpx59cc9O3MR3jiHV^Gzd<$Z3i{BDOvUbVpS6*!|ifK?u-dvtY*o z$hgCS3AT)<%vkZlm0Ac=02z1s;w)hAvVz{uf5lSC0rhjD-uT3kyswP$8W}g&{SMU` z1C+GLkdjJNN$**JB70=00-)ZrbvtDqUqf z!Y{jiN%Q=;Vc%hf7ADo(LodmX<4=&AJIek7aMwJidKe{)bu0NA=J0Jl$M$AUESrsf z<41vkn6y7`Far}0gx4>FtmBdrc~Aw+V-pr1uE}d|Q?Ig#zr$?Ci0x$;*n)yvRM>hj zH}40mHz9x`Zr=lgKCLm&(i?>_dSi6fUt3L$f0vFqY`1Tj&~9gd4Q1EIAU_PCv=3L` z|C#%>VADf#?Y=8ND^(foL-bw$$JZ>4SB|s#_HDJ_gj#^9C&kH$oIk~SPap5Zeq;Fh zK-W0amJu=CmhB;k3Q>Ia`118@M%Y8*BV!ua@t$%&1Sah3TCq8;iwVfMezxsran}25 zPQO=3`Ppg2XB9I{rD<5|Qq;D&?dg!vDl9)sb^V4WGd9LrCAHFH&mcLbPjs*+)ARw z7MMl1ZbloJQf&O=65{*o^h{yJ2kHnr1NFBtUYgR>zdAnHCVPZDtr8Q8+)rYnK8GEzZ z0egH(A3lGlOsWOerLR0Q3*z+A25g;mBj1Y3@V+v^tSTJuPmggjV?_NUO>jZkP)|+H z=a6IGKGq#MyZV`6wcc4$G{cC+h~70EwE(4qzJC~vy-w3a!DI*K4cZ>_pz4EQ&wPKm zCp`lj{kkq};;y}Kq6%TR#uI4reE#Juk4)grbIv^IGB;an;*ITGp z9+UE4@+Zo5?cA-#4p%Hd&-~jIk2JxZ_r3~hM}s`izxR&E#fzd4D!#X~2%gx+9YPbi zS}IZTCxfVa!yO;j~zD~_$I@T z@X|fT8)w9pwR4{5mn`k%kPa(y0rXfIo^zzPKRwNqp04Gd{j6v|9X4+3z6qw1_>RNz zCZeUv(yh~tU+#vk{m8x$Cn6oiS_TtG*)SlksMEoRbg)oa)Dyk8XC=8apW@tIvV#C} zxd}c@fU(9gKjyV*Z&u^?(-#OwRtjF|_8i|}o7@W@`k{jSpz8t;(mfqao&Cq3BB;co zmg>va-0M7wV4x^=f*ZFLl)fKx9GlX*g$ntRbe7TUfIO?mP_-94Xo!@IWIJFG3cg>s7h_)`RBOo zg46!+MNL@^6|qZkE6|(Z7A@(H7(A(Cykm4elVXebBIHT&FNtDy2xF^^n^r|P`z69s z`&f^%2~@y@K8NLO)43&J&lrT1WdDcp%WEfQH-Wa>s^KJlZBP94ZrDJ3H&sDd>Y>`L zgAlCl;|D)m){H?_g!1(rMEb|KUyMP;orFkV<3&FiEma@6Lh&pJB#&{k=}X(DeHif3 zl>IEG_7q|0ya zS~~hPee)C)ZnlZd9AnFDy`~hoptE=J_a7bK)Pylq3&zmh{?ij`X*b@2&PxCieJIRx z9&(O|WWpK%h$UGjNlP7$`JFDgw(A+ zla#eC^|2Nx!EjBnjVq>|CTO;{?-V|E514+~6Chj&zQDJ&!IDoH1y2!Z!6y^%Jr0W4 zxeW1}oVQT3RO^czLrB<3BU*pA#Z2ch*aO#d2v$RQ5#|X=wJUGPJoizSFp2txNhKaW zI#3e&?Msh9b;r8z8iV$yt}qN$3rhD88!dTDR@SJ^$Yt^Li}>g1>T-9)&k^05#kW!K zy`zTakLmhnZ+r@WjWU0-XVauS8j2~1dSjdE)p0xBgJbJ{V;#hKZy|+yAc6Pw?g&_2= zRPN!kY?;YFHGzRUz__7PKG&XEAEfGmqw`b;;9KQ)iJA169ksUkU4KTT#M9`Dm_u7HK8NhV&G~x69wx0>NW$)0!#KV@o6EPHxZ_E_h8r*iCrXOx@T7{?2 zN%8jhrPKmb1r?w4EjUH`O<9P0WowwRVb+N9sAzu(a(YgKb;MG6j~pRaNM!cYSkKa{_f}8+y8C}{@A#EkNmVPjrZd&X0o(l=WYa(-|V3<)Lx}yUl27t{Tli)Nt&S7 z6nw$})7#rOLXa3myLfL1Vgq`EtE5>XB{cO(_52)z^FgVoGq>WV?NTSd;Uz2Q&P^ zng7O}Ip)4oP}A4;4(hFW9I0@b@Sl@A@vZ&6Z#U?-r}$B8zArNRx4(Z-G`rS*jZPp? ztG}2S8$A!InzK;etRB_D3_qU%DlY#PC*zQ{-b4Xi??3${`VRZXajd+5@!Bh*@d4G(}^Vx`OFC65&vKMV5Bj{ec@H?0ow`2pae0H=qKp_clv0HL{3o8j3@cfo(=)!{gBgbvHd-Jr_Mu0n}#L ze7kI%!DSK^lADt}hTu)FLo{Os6Ee@1AHmIoO2#mZMrw`fKZSf6>>UvL>KP{~e*4c& zJwc`=(c7r!K}nZaweM4b`kJg2ovOUM34eG|Ipw`sFw~KO3N2E^`|0dPNn^$rM~ix3 z&e^mBNRiE9v-Vo(FH7;LD|rvNQ!P>s#?;o2Tqiy3WDbX4DE(BejtjAwmc&FZCw=0%+QchwvvhugEi zY!n|cZaPcuWm}am=dugiB5fjG|8)@0a&7_R*q7LIxoP4w8s)jD3XfRxY}e!R5<@Ab zs+I1E<(2LE%`N%<_{3K=F1bFH{zUyArL{B~BPaVTXoD3cWO{q~x~!DK?|lGl=BP9= z=&^@FwAtnvG9WzJX`w+hS7J1#gIQ^BYSD5<&-GSYeQSNzY(k2(eSpW88~Tg>wH-M^?TY r2~p>DjLqFO&G-NQ^!fk8t8+N0Dz1@xn?}&nursery/noDefaultExport.js:1:8 lint/nursery/noDefaultExport ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - + Avoid default exports. - + > 1 │ export default function f() {}; ^^^^^^^ 2 │ - + Default exports cannot be easily discovered inside an editor and don't encourage the use of consistent names through a code base. - + Use a named export instead. - + - [noAriaHiddenOnFocusable](https://biomejs.dev/linter/rules/no-aria-hidden-on-focusable) @@ -169,17 +170,17 @@ Biome is a linter too, and it features [177 rules](https://biomejs.dev/linter/ru ```
nursery/noAriaHiddenOnFocusable.js:1:1 lint/nursery/noAriaHiddenOnFocusable  FIXABLE  ━━━━━━━━━━━━━━
-  
+
      Disallow aria-hidden="true" from being set on focusable elements.
-  
+
     > 1 │ <div aria-hidden="true" tabIndex="0" />
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       2 │ 
-  
+
      aria-hidden should not be set to true on focusable elements because this can lead to confusing behavior for screen reader users.
-  
+
      Unsafe fix: Remove the aria-hidden attribute from the element.
-  
+
       1 │ <div·aria-hidden="true"·tabIndex="0"·/>
          -------------------
   
@@ -192,16 +193,16 @@ Biome is a linter too, and it features [177 rules](https://biomejs.dev/linter/ru ```
nursery/noImplicitAnyLet.js:1:5 lint/nursery/noImplicitAnyLet ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-  
+
      This variable has implicitly the any type.
-  
+
     > 1 │ var a;
          ^
       2 │ a = 2;
       3 │ 
-  
+
      Variable declarations without type annotation and initialization have implicitly the any type. Declare type or initialize the variable with some value.
-  
+
   
- [useAwait](https://biomejs.dev/linter/rules/use-await) @@ -214,9 +215,9 @@ Biome is a linter too, and it features [177 rules](https://biomejs.dev/linter/ru ```
nursery/useAwait.js:1:1 lint/nursery/useAwait ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-  
+
      This async function lacks an await expression.
-  
+
     > 1 │ async function fetchData() {
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     > 2 │ // Missing `await` for the promise returned by `fetch`
@@ -224,9 +225,9 @@ Biome is a linter too, and it features [177 rules](https://biomejs.dev/linter/ru
     > 4 │ }
      ^
       5 │ 
-  
+
      Remove this async modifier, or add an await expression in the function.
-  
+
     > 1 │ async function fetchData() {
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     > 2 │ // Missing `await` for the promise returned by `fetch`
@@ -234,9 +235,9 @@ Biome is a linter too, and it features [177 rules](https://biomejs.dev/linter/ru
     > 4 │ }
      ^
       5 │ 
-  
+
      Async functions without await expressions may not need to be declared async.
-  
+
   
- [useValidAriaRole](https://biomejs.dev/linter/rules/use-valid-aria-role) @@ -246,18 +247,18 @@ Biome is a linter too, and it features [177 rules](https://biomejs.dev/linter/ru ```
nursery/useValidAriaRole.js:1:1 lint/nursery/useValidAriaRole  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-  
+
      Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role.
-  
+
     > 1 │ <div role="datepicker"></div>
      ^^^^^^^^^^^^^^^^^^^^^^^
       2 │ 
-  
+
      Check WAI-ARIA for valid roles or provide options accordingly.
-  
+
      Unsafe fix: Remove the invalid role attribute.
        Check the list of all valid role attributes.
-  
+
       1 │ <div·role="datepicker"></div>
          -----------------
   
@@ -295,17 +296,17 @@ new RegExp("abc", "u"); ```
a11y/noAccessKey.js:1:22 lint/a11y/noAccessKey  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-  
+
      Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments.
-  
+
     > 1 │ <input type="submit" accessKey="s" value="Submit" />
                           ^^^^^^^^^^^^^
       2 │ 
-  
+
      Assigning keyboard shortcuts using the accessKey attribute leads to inconsistent keyboard actions across applications.
-  
+
      Unsafe fix: Remove the accessKey attribute.
-  
+
       1 │ <input·type="submit"·accessKey="s"·value="Submit"·/>
                          --------------
   
@@ -317,15 +318,15 @@ new RegExp("abc", "u"); ```
a11y/useHeadingContent.js:1:1 lint/a11y/useHeadingContent ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-  
+
      Provide screen reader accessible content when using heading  elements.
-  
+
     > 1 │ <h1 />
      ^^^^^^
       2 │ 
-  
+
      All headings on a page should have content that is accessible to screen readers.
-  
+
   
- [complexity/useSimpleNumberKeys](https://biomejs.dev/linter/use-simple-number-keys) @@ -335,19 +336,19 @@ new RegExp("abc", "u"); ```
complexity/useSimpleNumberKeys.js:1:4 lint/complexity/useSimpleNumberKeys  FIXABLE  ━━━━━━━━━━━━━━━━
-  
+
      Hexadecimal number literal is not allowed here.
-  
+
     > 1 │ ({ 0x1: 1 });
         ^^^
       2 │ 
-  
+
      Safe fix: Replace 0x1 with 1
-  
+
   1  - ({·0x1:·1·});
     1+ ({·1:·1·});
   2 2
-  
+
   
### Promoted rules diff --git a/website/src/content/blog/roadmap-2024.md b/website/src/content/blog/roadmap-2024.md new file mode 100644 index 000000000000..326314cd4985 --- /dev/null +++ b/website/src/content/blog/roadmap-2024.md @@ -0,0 +1,353 @@ +--- +title: Roadmap 2024 +description: Roadmap 2024, v1.5.0 and new logo +summary: Roadmap 2024, v1.5.0 and new logo +authors: + - ema + - team +pubDate: 2024-01-06 +coverImage: + lightSrc: ../../assets/blog/roadmap-2024/banner-light.png + darkSrc: ../../assets/blog/roadmap-2024/banner-dark.png + alt: The Prettier challenge banner, with the Biome logo over it +socialImage: ../../assets/social-logo.png +--- +## Roadmap 2024 + +We are thrilled to share what the Core Contributors and Maintainers would like to focus on in 2024. + +We want to remind the community that Biome is a project driven by the community, so we can't promise that all the ideas outlined below are going to be shipped. + +However, if you're excited about some aspects of the project, and you want to see some of them developed faster than others, you can help us in many ways: +- [**Be involved in the project and the community**](https://github.com/biomejs). Help us to build those features. +- [**Sponsor us**](https://opencollective.com/biome). Ask your company to sponsor us. Biome is so fast that can cut down CI times in your company, and save money. Performance is part of our mission. Plus, sponsorship is a good medium of _advertisement_ for your company. +- [**Improve our documentation with ideas, recipes, or guides**](/guides/getting-started). Translate our documentation, help us to make Biome available to people who aren't proficient in English. + + +### Preface + +The project is young and still can't compete against other giants such as Prettier, eslint, webpack, vite, esbuild, etc., although the recent events (sponsors, bounty challenge, Biome being a fork of Rome) showed that the users **have** interest in the project, and we showed those users that we have the tools for fulfilling a need. + +Moving small projects from ESLint/Prettier is easy, but moving **big** code bases is challenging and time-consuming. This is a big friction to Biome. + +Users have different needs though, so it will be impossible to satisfy all of them, so we want to make sure that they contribute to our project and embrace our philosophy. + +### Main area of focus + +1. Help users to move to Biome +2. Increase Biome's languages, so Biome tools can span +3. Deepen Biome's existing capabilities to offer more functionalities +4. Plugins +5. Transformations +6. Community and content + +### Help users to move to Biome + +- Offer guides on our website to users who want to migrate from Prettier (CLI commands and configuration) +- Offer guides on our website to users who want to migrate from ESlint (CLI commands and configuration) +- Offer a section on our website that shows a mapping of the ESLint rules to our rules +- Offer commands to ease the transition + - A command called `biome migrate prettier` that will read `.prettierrc` and `.prettierignore`, will update the `biome.json` file (or create it) with the configuration coming from the Prettier files. + - A command called `biome migrate eslint` that will read the JSON configuration of Eslint and the ignore file. There will be expectations and limitations. + + +### Increase Biome's languages, so Biome tools can span + +CSS is going to be our next language of focus. HTML and Markdown will follow. Follow our [up-to-date page](/internals/language-support) to know the progress of our works. + +The CSS language will enable a lot of work and experimentation: CSS formatting and linting, and we will port some of the lint rules from `styelelint`. A new area of experimentation is cross-linting. + +The idea of cross-linting can be explained with an example: compute the CSS styles/classes defined in a project, and warn a user when said styles aren't used inside JSX/HTML files. + +Plus, we unlock another area of experimentation, which is embedded formatting. + +HTML and Markdown will be our next languages of focus. HTML will enable us to parse other variants of HTML that are popular in the frontend ecosystem: [Vue](https://vuejs.org/), [Svelte](https://svelte.dev/) and [Astro](https://astro.build/). This would require some exploration on how to represent super languages of HTML. + +### Deepen Biome's existing capabilities to offer more functionalities. + +- Project analysis and dependency resolution +- Type system +- CLI + +#### Project analysis and dependency resolution + +We will provide lint rules that can read the manifest and do operations over it, such as invalid licenses. + +With project resolution, we will be able to provide more lint rules, some of which will be able to detect unused modules. + +With dependency resolution, we will be able to provide to - for example - detect dependencies that aren't used inside a project. + +With this infrastructure, our LSP is going to be more powerful and we will able to provide more features, for example: +- rename variables across a project; +- auto-complete for imports; +- in-line types + +#### Type system + +Building a full-fledged type system such as TypeScript is a massive effort, that's why we decided to take a different direction and start by building a subset of the type system that would require stricter typing. This approach would allow us to build some important lint rules that users have been asking for. + +This will come with a downside: relying on a stricter code, and minimal type inference from the compiler. + +Once we have something we can rely on, we can slowly widen the type-checking functionality. + +#### CLI + +More features for the command line tool, such as: +- Add the `explain` command for offline documentation; +- Allow to export the output in different formats (JSON, etc.) +- Auto-completion for other shells such as `zsh`; +- Implement the `--modified` argument, which allows to format - for example - only the modified lines of a document; +- Expose metrics for Biome's operations, and being able to track down possible performance bottlenecks; + +### Plugins + +We will explore plugins, and come up with a design that fits Biome. +Biome is different from other tools because Biome is a toolchain that has multiple tools in it, so we have to think out of the box and propose a design that might differ from the tools people are used to. + +We don't know yet what a Biome's plugin will look like, although we think a plugin should be able to tap all the tools that Biome offers. + +Some ideas that we will consider: +- DSL +- WASM +- A Runtime + +### Transformations + +Transformations and code generation are going to be our first steps towards our compiler. + +We will provide the ability to transform TypeScript and JSX files into JavaScript files. + +### Community and content + +Biome has a growing ecosystem, with an official VSCode extension, an official IntelliJ extension, and a Discord bot. We want to grow the features provided by these tools and welcome any user who wants to help us. + +Our community is slowly growing, and we want to reward any person who sticks around a contributions to Biome. At Biome, **we value any type of contribution**, so you don't need to be proficient in Rust in order to help us. Even participating to discussions and help us to shape our features, or helping other people are considered *contributions*. If you think you contributed to our ecosystem, we encourage you to [candidate yourself as a maintainer of the project](https://github.com/biomejs/biome/blob/main/GOVERNANCE.md#maintainer-nomination). + +Recently Biome started its own [YouTube Channel](https://www.youtube.com/channel/UC6ssscaFgCSlbv1Pb6krGVw). We will use this channel to share learning content with the community. + +## New logo and homepage + +With this blog post, we also want to officially announce our new logo, homepage and rebranding of the website. + +With this new logo, we want to give a different meaning to the project. Biome **isn't** a fork of Rome anymore, but a self-sufficient project ready to bloom. + +The triangle of the logo represents the mountains - **soil** -, and the curly shape on the bottom left represents a wave of the ocean - **water**. Two elements important to create a self-sufficient ecosystem, so it can thrive and grow. + + +## Version 1.5.0 + +With the Roadmap 2024, we also publish a new version. This version has few features around the CLI and **many** fixes in our formatter. Our TypeScript, JSX and JavaScript formatting has surpassed the **97% compatibility rate** with Prettier. + +### New features + +- Process only the files that were changed. +- The command `biome ci` now prints diagnostics in GitHub PRs. +- A new command `biome explain`. +- The command `biome migrate` updates the `$schema`. +- New lint rules. + +#### Process only the files that were changed + +If you enable the integration with VCS, you can tell Biome to process only the files that were changed. As for now, this feature computes the files that were changed by using a VCS, so Biome doesn't know what's changed. + +This feature practically makes some utilities such as `lint-staged` obsolete. + +In order to take advantage of this feature, you have to tell Biome what's the default branch in the configuration file, then you'll have to pass the option `--changed` via CLI: + +```json title="biome.json" ins={5} +{ + "vcs": { + "enabled": true, + "clientKind": "git", + "defaultBranch": "main" + } +} +``` + +Once you modified some files, use the new option to the command you need, for example the `format` command: + +```shell ins="--changed" +biome format --changed --write +``` + +#### The command `biome ci` now prints diagnostics in GitHub PRs + +For quite some time, users were confused by the difference of the commands `check` and `ci`, because until now their behaviours are very similar. From this version, the command `ci` is able to detect the GitHub CI environment, and print annotation in the PRs. + +![Screenshot of a GitHub annotation printed by Biome](../../assets/blog/roadmap-2024/github-annotation.png) + +It's possible that you would need to change in your permissions of your workflow files, in case you don't see the annotations: + +```yaml title=".github/workflows/action.yml" +permissions: + pull-requests: write +``` + +#### A new command `biome explain` + +This command will serve as "offline" documentation tool. In this release, the command supports the explanation of all the lint rules, for example you can request documentation for `noAccumulatingSpread`: + +```shell +biome explain noAccumulatingSpread +``` + +Which will print the following markdown: + +``````markdown +# noAccumulatingSpread + +No fix available. + +This rule is recommended. + +# Description +Disallow the use of spread (`...`) syntax on accumulators. + +Spread syntax allows an iterable to be expanded into its individual elements. + +Spread syntax should be avoided on accumulators (like those in `.reduce`) +because it causes a time complexity of `O(n^2)` instead of `O(n)`. + +Source: https://prateeksurana.me/blog/why-using-object-spread-with-reduce-bad-idea/ + +## Examples + +### Invalid + +```js,expect_diagnostic +var a = ['a', 'b', 'c']; +a.reduce((acc, val) => [...acc, val], []); +``` + +```js,expect_diagnostic +var a = ['a', 'b', 'c']; +a.reduce((acc, val) => {return [...acc, val];}, []); +``` + +```js,expect_diagnostic +var a = ['a', 'b', 'c']; +a.reduce((acc, val) => ({...acc, [val]: val}), {}); +``` + +## Valid + +```js +var a = ['a', 'b', 'c']; +a.reduce((acc, val) => {acc.push(val); return acc}, []); +``` + +`````` + +We plan to make this output more readable for terminals, as well as provide autocompletion for this command. + +#### The command `biome migrate` updates the `$schema` + +The command `biome migrate` now updates the `$schema` value inside the configuration file `biome.json` if you avail of the online schema. Run this command as soon as you update to Biome `v1.5.0`: + +```json title="biome.json" ins="1.5.0" del={2} ins={3} +{ + "$schema": "https://biomejs.dev/schemas/1.4.1/schema.json" + "$schema": "https://biomejs.dev/schemas/1.5.0/schema.json" +} +``` + +#### New rules + +##### [useExportType](https://biomejs.dev/linter/rules/use-export-type) + +```ts +interface I {} +export { I }; +``` + +
nursery/useExportType.js:2:8 lint/nursery/useExportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+   All exports are only types and should thus use export type.
+
+    1 │ interface I {}
+  > 2 │ export { I };
+          ^^^^^^
+    3 │ 
+
+   Using export type allows transpilers to safely drop exports of types without looking for their definition.
+
+   Safe fix: Use a grouped export type.
+
+    2 │ export·type·{·I·};
+         +++++
+
+ +##### [useFilenamingConvention](https://biomejs.dev/linter/rules/use-filenaming-convention) + +Enforces naming conventions for JavaScript and TypeScript filenames. + +##### [useNodeImportProtocol](https://biomejs.dev/linter/rules/use-node-import-protocol) + +```jsx +import fs from 'fs'; +``` + + +
nursery/useNodeImportProtocol.js:1:16 lint/nursery/useNodeImportProtocol  FIXABLE  ━━━━━━━━━━━━━━━━━
+
+   Import from Node.js builtin module "fs" should use the "node:" protocol.
+
+  > 1 │ import fs from 'fs';
+                  ^^^^
+    2 │ 
+
+   Using the node: protocol is more explicit and signals that the imported module belongs to Node.js.
+
+   Unsafe fix: Change to "node:fs".
+
+    1  - import·fs·from·'fs';
+      1+ import·fs·from·"node:fs";
+    2 2
+
+
+ +##### [noNodejsModules](https://biomejs.dev/linter/rules/no-nodejs-modules) + +```jsx +import fs from "fs"; +import path from "node:path"; +``` + +
nursery/noNodejsModules.js:1:16 lint/nursery/noNodejsModules ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+   Using Node.js modules are forbidden.
+
+  > 1 │ import fs from "fs";
+                  ^^^^
+    2 │ import path from "node:path";
+    3 │ 
+
+   Can be useful for client-side web projects that do not have access to those modules.
+
+   Remove the import module.
+
+
+ +##### [noInvalidUseBeforeDeclaration](https://biomejs.dev/linter/rules/no-invalid-use-before-declaration) + +```jsx +function f() { + console.log(x); + const x; +} +``` + +
nursery/noInvalidUseBeforeDeclaration.js:3:11 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+   Const declarations must have an initialized value.
+
+    1 │ function f() {
+    2 │     console.log(x);
+  > 3 │     const x;
+             ^
+    4 │ }
+    5 │ 
+
+   This variable needs to be initialized.
+
+
diff --git a/website/src/content/config.ts b/website/src/content/config.ts index e273f1bc0448..639fd049f01a 100644 --- a/website/src/content/config.ts +++ b/website/src/content/config.ts @@ -15,7 +15,8 @@ const blogSchema = (image: ImageFunction) => authors: z.array(z.string()), coverImage: z .object({ - src: image(), + lightSrc: image(), + darkSrc: image(), caption: z.string().optional(), alt: z.string(), }) diff --git a/website/src/layouts/Blog.astro b/website/src/layouts/Blog.astro index 9a13565e606c..b39ac12a5cde 100644 --- a/website/src/layouts/Blog.astro +++ b/website/src/layouts/Blog.astro @@ -14,7 +14,11 @@ const { post } = Astro.props; { post.coverImage && (
- {post.coverImage.alt} + + {post.coverImage.alt} + {post.coverImage.alt} + + {post.coverImage.caption && (
{post.coverImage.caption}