From 2cf6857ec52442806e9ece337d2bcf4fd3a3b91e Mon Sep 17 00:00:00 2001 From: Mariam Adedeji <32063636+Rhia2@users.noreply.github.com> Date: Mon, 13 Nov 2023 13:59:36 +0000 Subject: [PATCH 001/222] Update troubleshooting.md (#58284) * Update troubleshooting.md * Update troubleshooting.md --- doc/batch_changes/references/troubleshooting.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/doc/batch_changes/references/troubleshooting.md b/doc/batch_changes/references/troubleshooting.md index 2a40279915e92..e456d48eb4fe8 100644 --- a/doc/batch_changes/references/troubleshooting.md +++ b/doc/batch_changes/references/troubleshooting.md @@ -176,6 +176,20 @@ If not, please update to the latest version of [Docker Desktop](https://docs.doc If you're experiencing `src-cli` hanging at the "Determining Workspace Type" step of the Batch Change we have found that clearing the Docker build cache using `docker builder prune` and restarting the Docker Daemon has resolved the issue. Please contact support if this does not resolve your issue. +### Using Rancher Desktop or Colima? + +If you encounter the error `docker: Error response from daemon: invalid mount config for type 'bind': bind source path does not exist`, try configuring the env var SRC_BATCH_TMP_DIR to reference an accessible directory. + +For Colima: +``` +export SRC_BATCH_TMP_DIR=/tmp/colima/batchchange +``` + +For Rancher Desktop: +``` +export SRC_BATCH_TMP_DIR=/tmp/rancher-desktop/batchchange +``` + ## Publishing changesets ### Do you have the right credentials? From 8af4951af53e965f61c1150a51e33115deade798 Mon Sep 17 00:00:00 2001 From: Mariam Adedeji <32063636+Rhia2@users.noreply.github.com> Date: Mon, 13 Nov 2023 15:01:14 +0000 Subject: [PATCH 002/222] Update deploy_executors_kubernetes.md (#58285) --- doc/admin/executors/deploy_executors_kubernetes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/admin/executors/deploy_executors_kubernetes.md b/doc/admin/executors/deploy_executors_kubernetes.md index 6a08b6ae24936..afae5b9ebab58 100644 --- a/doc/admin/executors/deploy_executors_kubernetes.md +++ b/doc/admin/executors/deploy_executors_kubernetes.md @@ -77,6 +77,7 @@ set on the Executor `Deployment` and will configure the `Job`s that it spawns. | KUBERNETES_JOB_ANNOTATIONS | N/A | The JSON encoded annotations to add to the Kubernetes Jobs. e.g. `{"foo": "bar", "faz": "baz"}` | | KUBERNETES_JOB_POD_ANNOTATIONS | N/A | The JSON encoded annotations to add to the Kubernetes Job Pods. e.g. `{"foo": "bar", "faz": "baz"}` | | KUBERNETES_IMAGE_PULL_SECRETS | N/A | The names of Kubernetes image pull secrets to use for pulling images. e.g. my-secret,my-other-secret | +> Note: `EXECUTOR_KUBERNETES_NAMESPACE` should be set to either "default" or the specific namespace where your Executor is deployed. +- [scip-treesitter-cli](#scip-treesitter-cli) + - [Usage](#usage) + - [Indexing](#indexing) + - [Evaluation](#evaluation) + - [Contributing](#contributing) + + +A command line tool that uses other scip-* crates to either + +- produce a SCIP file containing global and local symbols discovered during analysis. +- evaluate one SCIP file against another, producing precision/recall summary ## Usage -**Indexing** (`index --help` for more details) +### Indexing -``` +Index a list of files: + +```bash scip-treesitter-cli index --language java --out ./index.scip file1.java file2.java ... ``` -## Contributing +Index a folder recursively: + +```bash +scip-treesitter-cli index --language java --out ./index.scip --workspace +``` +### Evaluation + +```bash +scip-treesitter-cli evaluate --candidate index-tree-sitter.scip --ground-truth index.scip +``` + +## Development This is a standard Rust CLI project, with a single runnable entry point - the CLI itself. -1. Run tests: `cargo test` +The CI uses Bazel for building and testing, +but Cargo usage is also supported for convenience. - We use Insta for snapshot testing, if you're changing the output produced by the CLI, - run `cargo test` and then `cargo insta review` to accept/reject changes in symbols +### Running tests -2. Run CLI: `cargo run -- index --language java --out ./index.scip file1.java file2.java ...` +```bash +cargo test +``` -On CI, Bazel is used instead of Cargo. +```bash +bazel test //docker-images/syntax-highlighter/crates/scip-treesitter-cli:all +``` -1. Run tests: `bazel test //docker-images/syntax-highlighter/crates/scip-treesitter-cli:unit_test` -2. Build CLI: `bazel build //docker-images/syntax-highlighter/crates/scip-treesitter-cli:scip-treesitter-cli` +We use [Insta](https://insta.rs/) for snapshot testing. +If you're changing the output produced by the CLI, +run `cargo test` and then `cargo insta review` +to accept/reject changes in snapshots. + +### Build the CLI for local testing + +```bash +cargo build +``` + +```bash +bazel build //docker-images/syntax-highlighter/crates/scip-treesitter-cli +``` + +### Run the locally built CLI + +```bash +cargo run -- index --language java --out ./index.scip file1.java file2.java ... +``` + +```bash +bazel run //docker-images/syntax-highlighter/crates/scip-treesitter-cli -- index --language java --out ./index.scip file1.java file2.java ... +``` diff --git a/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/evaluate.rs b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/evaluate.rs new file mode 100644 index 0000000000000..8b44ad5a44c75 --- /dev/null +++ b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/evaluate.rs @@ -0,0 +1,724 @@ +#![allow(clippy::type_complexity)] +#![allow(clippy::needless_lifetimes)] + +use std::{ + collections::{HashMap, HashSet}, + marker::PhantomData, + path::PathBuf, +}; + +use anyhow::*; +use colored::Colorize; +use scip::types::Index; +use scip_treesitter::types::PackedRange; +use string_interner::{symbol::SymbolU32, StringInterner, Symbol}; + +use crate::{io::read_index_from_file, progress::*}; + +pub fn evaluate_command(candidate: PathBuf, ground_truth: PathBuf, options: ScipEvaluateOptions) { + Evaluator::default() + .evaluate_files(candidate, ground_truth, options) + .unwrap() + .print_summary() +} + +fn validate_index(idx: &Index) -> Result<()> { + let mut occs = 0; + + for doc in &idx.documents { + occs += doc.occurrences.len(); + } + + if occs == 0 { + Err(anyhow!( + "Index contains no occurrences and cannot be used for evaluation" + )) + } else { + Ok(()) + } +} +// These unfortunately don't help the typesafety and are only here to aid readability +// TODO: newtype https://doc.rust-lang.org/book/ch19-03-advanced-traits.html#using-the-newtype-pattern-to-implement-external-traits-on-external-types + +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] +struct PathId { + value: SymbolU32, +} + +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)] +struct SymbolId { + value: SymbolU32, + _marker: PhantomData, +} + +impl SymbolId { + fn into_any(self) -> SymbolId { + SymbolId { + value: self.value, + _marker: PhantomData, + } + } +} + +/// Phantom marker for SymbolId +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)] // https://github.com/rust-lang/rust/issues/26925 +struct GroundTruth; + +/// Phantom marker for SymbolId +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)] // https://github.com/rust-lang/rust/issues/26925 +struct Candidate; + +/// Phantom marker for SymbolId +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] // https://github.com/rust-lang/rust/issues/26925 +struct Any; + +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] +struct SymbolPair { + ground_truth: SymbolId, + candidate: SymbolId, +} + +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] +struct LocationInFile { + rng: PackedRange, + path_id: PathId, +} + +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] +pub struct SymbolOccurrence { + location: LocationInFile, + symbol: SymbolId, +} + +impl SymbolOccurrence { + fn range(&self) -> &PackedRange { + &self.location.rng + } +} + +#[derive(Eq, Hash, PartialEq, Clone, Debug)] +struct Overlap { + /// Total number of occurrence of a symbol from ground truth + total: u32, + /// Number of common occurrences between a ground truth symbol and a candidate + common: u32, +} + +impl Overlap { + fn jaccard(&self) -> f32 { + self.common as f32 / self.total as f32 + } +} + +#[derive(Debug, PartialEq)] +enum Mark { + TruePositive { weight: f32 }, + FalsePositive { weight: f32 }, + FalseNegative { weight: f32 }, +} + +#[derive(Debug, PartialEq)] +struct ClassifiedLocation { + location: LocationInFile, + symbol: SymbolId, + mark: Mark, +} + +#[derive(Clone, Copy, Default, Debug)] +pub struct ScipEvaluateOptions { + pub print_mapping: bool, + pub print_true_positives: bool, + pub print_false_positives: bool, + pub print_false_negatives: bool, +} + +#[derive(serde::Serialize, Debug)] +pub struct EvaluationSummary { + pub precision_percent: f32, + pub recall_percent: f32, + pub true_positives: f32, + pub false_positives: f32, + pub false_negatives: f32, +} + +#[derive(Debug)] +pub struct EvaluationResult<'e> { + evaluator: &'e Evaluator, + summary: EvaluationSummary, + true_positives: Vec, + false_positives: Vec, + false_negatives: Vec, + // What options were used for this evaluation + options: ScipEvaluateOptions, +} + +impl<'e> EvaluationResult<'e> { + fn new<'a>( + evaluator: &'a Evaluator, + classified: Vec, + options: ScipEvaluateOptions, + ) -> EvaluationResult<'a> { + let mut true_positives_occurrences: Vec = Vec::new(); + let mut false_positives_occurrences: Vec = Vec::new(); + let mut false_negatives_occurrences: Vec = Vec::new(); + + let mut true_positives = 0 as f32; + let mut false_positives = 0 as f32; + let mut false_negatives = 0 as f32; + + for classified_location in classified { + let symbol_occurrence = SymbolOccurrence { + location: classified_location.location, + symbol: classified_location.symbol, + }; + match classified_location.mark { + Mark::TruePositive { weight } => { + true_positives_occurrences.push(symbol_occurrence); + true_positives += weight + } + Mark::FalseNegative { weight } => { + false_negatives_occurrences.push(symbol_occurrence); + false_negatives += weight + } + Mark::FalsePositive { weight } => { + false_positives_occurrences.push(symbol_occurrence); + false_positives += weight + } + } + } + + let precision = 100.0 * true_positives / (true_positives + false_positives); + let recall = 100.0 * true_positives / (true_positives + false_negatives); + + EvaluationResult { + evaluator, + summary: EvaluationSummary { + precision_percent: precision, + recall_percent: recall, + true_positives, + false_positives, + false_negatives, + }, + true_positives: true_positives_occurrences, + false_positives: false_positives_occurrences, + false_negatives: false_negatives_occurrences, + options, + } + } +} + +impl<'e> EvaluationResult<'e> { + pub fn print_summary(&self) { + println!("{}", serde_json::to_string(&self.summary).unwrap()); + + let print_occ = |occ: &SymbolOccurrence| { + eprintln!( + "{}: L{} C{} -- {}", + self.evaluator.display_path(occ.location.path_id), + occ.range().start_line, + occ.range().start_col, + self.evaluator.display_symbol(occ.symbol), + ); + }; + + if self.options.print_false_negatives { + eprintln!(); + + eprintln!( + "{}: {}", + "False negatives".red(), + self.false_negatives.len().to_string().bold() + ); + eprintln!( + "{}", + "How many actual occurrences we DIDN'T find compared to compiler?".italic() + ); + + for symbol_occurrence in &self.false_negatives { + print_occ(symbol_occurrence); + } + } + + if self.options.print_false_positives { + eprintln!(); + eprintln!( + "{}: {}", + "False positives".red(), + self.false_positives.len().to_string().bold() + ); + eprintln!( + "{}", + "How many extra occurrences we reported compared to compiler?".italic() + ); + + for symbol_occurrence in &self.false_positives { + print_occ(symbol_occurrence); + } + } + + if self.options.print_true_positives { + eprintln!(); + eprintln!( + "{}: {}", + "True positives".green(), + self.true_positives.len().to_string().bold() + ); + + for symbol_occurrence in &self.true_positives { + let file = self + .evaluator + .display_path(symbol_occurrence.location.path_id); + let rng = symbol_occurrence.range(); + let header = format!("{file}: L{} C{} -- ", rng.start_line, rng.start_col); + + eprintln!( + "{} {}", + header.yellow(), + self.evaluator.display_symbol(symbol_occurrence.symbol) + ); + } + } + } +} + +#[derive(Default, Debug)] +pub struct Evaluator { + interner: StringInterner, +} + +// Public API +impl Evaluator { + pub fn evaluate_files<'e>( + &'e mut self, + candidate: PathBuf, + ground_truth: PathBuf, + options: ScipEvaluateOptions, + ) -> Result> { + self.evaluate_indexes( + &read_index_from_file(candidate), + &read_index_from_file(ground_truth), + options, + ) + } + + pub fn evaluate_indexes<'e>( + &'e mut self, + candidate: &Index, + ground_truth: &Index, + options: ScipEvaluateOptions, + ) -> Result> { + validate_index(candidate)?; + validate_index(ground_truth)?; + + let bar = create_spinner(); + bar.set_message("Indexing candidate symbols by location"); + let candidate_occurrences: HashMap> = + self.index_occurrences(candidate); + bar.tick(); + + bar.set_message("Indexing ground truth symbols by location"); + let ground_truth_occurrences: HashMap> = + self.index_occurrences(ground_truth); + bar.tick(); + + // For each symbol pair we maintain an Overlap instance + let mut overlaps: HashMap = HashMap::new(); + + // Lookup table where key is ground truth symbol, and the value + // is all the symbol pairs. + // Each symbol from ground truth dataset can be mapped to any number of + // symbols from the candidate set + let mut ground_truth_alternatives: HashMap, HashSet> = + HashMap::new(); + + bar.set_message("Analysing occurrences in candidate SCIP"); + for (&candidate_loc, &candidate_symbol) in candidate_occurrences.iter() { + // At given location from the candidate SCIP, see + // if ground truth dataset contains any symbol at same location + match ground_truth_occurrences.get(&candidate_loc) { + // If ground truth dataset doesn't have any symbol at this location, + // we treat it as a false positive, to be handled later + None => {} + Some(&ground_truth_symbol) => { + let pair = SymbolPair { + ground_truth: ground_truth_symbol, + candidate: candidate_symbol, + }; + + // See if we already have a lookup entry for this ground truth symbol + match ground_truth_alternatives.get_mut(&ground_truth_symbol) { + None => { + // If this is the first time we're seeing this symbol, + // create a lookup entry and put a single pair in there + ground_truth_alternatives + .insert(ground_truth_symbol, HashSet::from([pair])); + } + Some(s) => { + // Otherwise, add the symbol pair to the set (it might already be there) + s.insert(pair); + } + } + + // As we are currently iterating over candidate occurrences, + // we don't know how many occurrences there are in total in the + // ground truth dataset. + // That's why here we only manage the number of occurrences + // the datasets have in common + match overlaps.get_mut(&pair) { + None => { + overlaps.insert( + pair, + Overlap { + total: 0, + common: 1, + }, + ); + } + Some(overlap) => overlap.common += 1, + } + } + } + } + bar.tick(); + + bar.set_message("Computing overlap with ground truth SCIP occurrences"); + for ground_truth_symbol in ground_truth_occurrences.values() { + // now that we're iterating over all the ground truth occurrences, + // we can update the `total` counter for each symbol pair + // associated with that ground truth symbol + ground_truth_alternatives + .get(ground_truth_symbol) + .into_iter() + .for_each(|pairs| { + for pair in pairs { + if let Some(overlap) = overlaps.get_mut(pair) { + overlap.total += 1 + } + } + }); + } + bar.tick(); + + // For each candidate symbol we collect all possible ground truth symbols + // it can be mapped to + let candidate_mapping: HashMap< + SymbolId, + HashMap, Overlap>, + > = { + let mut result: HashMap, HashMap, Overlap>> = + HashMap::new(); + + for (symbol_pair, overlap) in overlaps { + match result.get_mut(&symbol_pair.candidate) { + None => { + result.insert( + symbol_pair.candidate, + HashMap::from([(symbol_pair.ground_truth, overlap)]), + ); + } + Some(map) => { + map.insert(symbol_pair.ground_truth, overlap); + } + } + } + + result + }; + + // We have produced the final counts for all symbol pairs - + // it's time to produce final weights + let symbol_pair_weight: HashMap = { + let mut result: HashMap = HashMap::new(); + + for (&candidate_symbol, alternatives) in &candidate_mapping { + let total_weight: f32 = alternatives.values().map(|i| i.jaccard()).sum(); + + for (&ground_truth_symbol, overlap) in alternatives { + let weight = overlap.jaccard(); + + let adjusted_weight = weight / total_weight; + + result.insert( + SymbolPair { + candidate: candidate_symbol, + ground_truth: ground_truth_symbol, + }, + adjusted_weight, + ); + } + } + + result + }; + + if options.print_mapping { + let mut candidate_mapping_vec: Vec<( + SymbolId, + HashMap, Overlap>, + )> = candidate_mapping.into_iter().collect(); + + candidate_mapping_vec.sort_by_key(|(sym, _)| *sym); + + for (candidate_symbol, alternatives) in candidate_mapping_vec.into_iter() { + let candidate = self.try_strip_package_details(candidate_symbol); + let mut alternatives_vec: Vec<(SymbolId, Overlap)> = + alternatives.into_iter().collect(); + alternatives_vec.sort_by_key(|(sym, _)| *sym); + + eprintln!("{}", self.display_symbol(candidate).red()); + + for (ground_truth_symbol, overlap) in &alternatives_vec { + let ground_truth = self.try_strip_package_details(*ground_truth_symbol); + let adjusted_weight = symbol_pair_weight + .get(&SymbolPair { + candidate: candidate_symbol, + ground_truth: *ground_truth_symbol, + }) + .unwrap(); + + eprintln!( + " {:.2} {} [{}/{} occurrences]", + adjusted_weight, + self.display_symbol(ground_truth).green(), + overlap.common, + overlap.total + ); + } + + eprintln!(); + } + } + + let mut classified_locations: Vec = Vec::new(); + + bar.set_message("Classifying occurrences into false negatives and true positives"); + // Now that the mapping is fully built, iterate over all ground truth occurrences + // and see if the canidate contains it. + // By iterating over ground_truth_occurrences we can only identify false negatives + // and true positives. + // False negatives are counted later + for (&ground_truth_location, &ground_truth_symbol) in ground_truth_occurrences.iter() { + match candidate_occurrences.get(&ground_truth_location) { + // if this location is not marked in the candidate dataset, + // this is a false negative - with full weight 1.0, as + // there's no ambiguity to speak of - this location *should* contain + // some symbol but doesn't + None => classified_locations.push(ClassifiedLocation { + location: ground_truth_location, + symbol: ground_truth_symbol.into_any(), + mark: Mark::FalseNegative { weight: 1.0 }, + }), + Some(candidate_symbol) => { + let pair = SymbolPair { + ground_truth: ground_truth_symbol, + candidate: *candidate_symbol, + }; + + match symbol_pair_weight.get(&pair) { + // At this location we found both the ground truth + // and candidate occurrence. We want to reward it - but with a + // weight indicating how precisely we matched candidate symbols to + // ground truth symbols - this weight comes from mapping we constructed earlier. + Some(weight) => classified_locations.push(ClassifiedLocation { + location: ground_truth_location, + symbol: ground_truth_symbol.into_any(), + mark: Mark::TruePositive { weight: *weight }, + }), + // This is an impossible situation by construction + None => panic!( + "Couldn't find a mapping for symbol {}", + self.display_symbol(ground_truth_symbol).red() + ), + } + } + } + } + + bar.set_message("Identifying false positives"); + for (candidate_location, candidate_symbol) in &candidate_occurrences { + // If there are occurrences present in candidate dataset, but + // not present in the ground truth, we treat it as a false positive + // and penalise it will full strength. + // + // Technically this may be a mistake, in case the indexer + // that produces ground truth has bugs in it. + // But for simplicity we assume that scip-* indexers + // are "perfect" + if !ground_truth_occurrences.contains_key(candidate_location) { + classified_locations.push(ClassifiedLocation { + location: *candidate_location, + symbol: candidate_symbol.into_any(), + mark: Mark::FalsePositive { weight: 1.0 }, + }); + } + } + + bar.finish_and_clear(); + + Ok(EvaluationResult::new(self, classified_locations, options)) + } +} + +// Private API +impl Evaluator { + fn make_symbol_id(&mut self, s: &str) -> SymbolId { + SymbolId { + value: self.interner.get_or_intern(s), + _marker: PhantomData, + } + } + + fn make_path_id(&mut self, s: &str) -> PathId { + PathId { + value: self.interner.get_or_intern(s), + } + } + + fn display_symbol(&self, s: SymbolId) -> &str { + self.interner.resolve(s.value).unwrap() + } + + fn display_path(&self, s: PathId) -> &str { + self.interner.resolve(s.value).unwrap() + } + + fn try_strip_package_details(&mut self, sym: SymbolId) -> SymbolId { + let s = self.display_symbol(sym); + if s.as_bytes().iter().filter(|&c| *c == b' ').count() != 5 { + return sym; + } + let parts: Vec<&str> = s.splitn(5, ' ').collect(); + let scheme = parts[0]; + let _manager = parts[1]; + let _package_name = parts[2]; + let _version = parts[3]; + let descriptor = parts[4]; + self.make_symbol_id(&format!("{scheme} . . . {descriptor}")) + } +} + +impl Evaluator { + fn index_occurrences(&mut self, index: &Index) -> HashMap> { + let mut out: HashMap> = HashMap::new(); + + for doc in &index.documents { + let path_id = self.make_path_id(&doc.relative_path); + out.reserve(doc.occurrences.len()); + for occ in &doc.occurrences { + let rng = PackedRange::from_vec(&occ.range).unwrap(); + let sym_id: SymbolId; + if let Some(prefix) = occ.symbol.strip_prefix("local ") { + sym_id = self.make_symbol_id(&format!( + "local doc-{}-{}", + path_id.value.to_usize(), + prefix + )); + } else { + sym_id = self.make_symbol_id(&occ.symbol); + } + let loc = LocationInFile { rng, path_id }; + out.insert(loc, sym_id); + } + } + + out + } +} + +#[cfg(test)] +mod tests { + use scip::types::*; + + use crate::evaluate::Evaluator; + + fn occurrence(n: i32, symbol: &str) -> Occurrence { + let mut occ = Occurrence::new(); + occ.range = vec![n, 5, 10]; + occ.symbol = symbol.to_string(); + occ + } + + fn document(path: &str, occs: Vec) -> Document { + let mut doc = Document::new(); + doc.relative_path = path.to_string(); + doc.occurrences.extend(occs); + doc + } + + fn index(documents: Vec) -> Index { + let mut idx = Index::new(); + idx.documents.extend(documents); + idx + } + + #[test] + fn evaluation_fundamentals() { + let doc1 = document( + "document1.java", + vec![occurrence(1, "sym1"), occurrence(2, "sym2")], + ); + + let doc2 = document( + "document2.java", + vec![occurrence(1, "sym1"), occurrence(2, "sym2")], + ); + + let ground_truth = index(vec![doc1, doc2]); + + let mut evaluator = Evaluator::default(); + + // Evaluating index against itself should yield 100% precision and 100% recall + { + let evaluate_with_self = evaluator + .evaluate_indexes(&ground_truth, &ground_truth, Default::default()) + .unwrap(); + assert_eq!(evaluate_with_self.summary.precision_percent, 100.0); + assert_eq!(evaluate_with_self.summary.recall_percent, 100.0); + assert_eq!(evaluate_with_self.summary.true_positives, 4.0); + assert_eq!(evaluate_with_self.summary.false_positives, 0.0); + assert_eq!(evaluate_with_self.summary.false_negatives, 0.0); + } + + // This has no overlap at all with the ground truth + // Should yield 0% precision, 0% recall + { + let evaluate_disjoint = evaluator + .evaluate_indexes( + &index(vec![ + document( + "bla/document1.java", + vec![occurrence(1, "sym1"), occurrence(2, "sym2")], + ), + document( + "bla/document2.java", + vec![occurrence(1, "sym1"), occurrence(2, "sym2")], + ), + ]), + &ground_truth, + Default::default(), + ) + .unwrap(); + assert_eq!(evaluate_disjoint.summary.precision_percent, 0.0); + assert_eq!(evaluate_disjoint.summary.recall_percent, 0.0); + assert_eq!(evaluate_disjoint.summary.true_positives, 0.0); + assert_eq!(evaluate_disjoint.summary.false_positives, 4.0); + assert_eq!(evaluate_disjoint.summary.false_negatives, 4.0); + } + + let empty_index = index(vec![document("bla.java", vec![])]); + + // Evaluating empty index is an error + { + let evaluate_empty = + evaluator.evaluate_indexes(&empty_index, &ground_truth, Default::default()); + assert!(evaluate_empty.is_err()); + } + + // Evaluating against an empty index is an error + { + let evaluate_against_empty = + evaluator.evaluate_indexes(&ground_truth, &empty_index, Default::default()); + assert!(evaluate_against_empty.is_err()); + } + } +} diff --git a/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/index.rs b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/index.rs new file mode 100644 index 0000000000000..a814562bcb25e --- /dev/null +++ b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/index.rs @@ -0,0 +1,204 @@ +use std::path::PathBuf; + +use anyhow::Result; +use clap::ValueEnum; +use scip::{types::Document, write_message_to_file}; +use scip_syntax::{get_locals, get_symbols}; +use scip_treesitter_languages::parsers::BundledParser; +use walkdir::DirEntry; + +use crate::{ + evaluate::Evaluator, + io::read_index_from_file, + progress::{create_progress_bar, create_spinner}, +}; + +pub struct IndexOptions { + pub analysis_mode: AnalysisMode, + /// When true, fail on first encountered error + /// Otherwise errors are logged but they don't + /// interrupt the process + pub fail_fast: bool, +} + +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)] +pub enum AnalysisMode { + /// Only extract occurrences of local definitions + Locals, + /// Only extract globally-accessible symbols + Globals, + /// Locals + Globals, extract everything + Full, +} + +impl AnalysisMode { + fn locals(self) -> bool { + self == AnalysisMode::Locals || self == AnalysisMode::Full + } + fn globals(self) -> bool { + self == AnalysisMode::Globals || self == AnalysisMode::Full + } +} + +pub enum IndexMode { + /// Index only this list of files, without checking file extensions + Files { list: Vec }, + /// Discover all files that can be handled by the chosen language + /// in the passed location (which has to be a directory) + Workspace { location: PathBuf }, +} + +pub fn index_command( + language: String, + index_mode: IndexMode, + out: PathBuf, + project_root: PathBuf, + evaluate_against: Option, + options: IndexOptions, +) { + let p = BundledParser::get_parser(&language).unwrap(); + let project_root = { + match index_mode { + IndexMode::Files { .. } => project_root, + IndexMode::Workspace { ref location } => location.clone(), + } + }; + + let canonical_project_root = project_root + .canonicalize() + .expect("Failed to canonicalize project root"); + + let mut index = scip::types::Index { + metadata: Some(scip::types::Metadata { + tool_info: Some(scip::types::ToolInfo { + name: "scip-treesitter-cli".to_string(), + version: clap::crate_version!().to_string(), + arguments: vec![], + ..Default::default() + }) + .into(), + project_root: format!("file://{}", canonical_project_root.display()), + ..Default::default() + }) + .into(), + ..Default::default() + }; + + let mut index_file = |filepath: &PathBuf| { + let contents = std::fs::read(filepath).unwrap(); + let relative_path = filepath + .strip_prefix(canonical_project_root.clone()) + .expect("Failed to strip project root prefix"); + + match index_content(contents, p, &options) { + Ok(mut document) => { + document.relative_path = relative_path.display().to_string(); + index.documents.push(document); + } + Err(error) => { + if options.fail_fast { + panic!("Failed to index {}: {:?}", filepath.display(), error); + } else { + eprintln!("Failed to index {}: {:?}", filepath.display(), error) + } + } + } + }; + + match index_mode { + IndexMode::Files { list } => { + let bar = create_progress_bar(list.len() as u64); + for filename in list { + let filepath = PathBuf::from(filename).canonicalize().unwrap(); + bar.set_message(filepath.display().to_string()); + index_file(&filepath); + bar.inc(1); + } + + bar.finish(); + } + IndexMode::Workspace { location } => { + let extensions = BundledParser::get_language_extensions(&p); + let is_valid = |entry: &DirEntry| { + entry.file_type().is_dir() + || entry + .file_name() + .to_str() + .map(|s| { + s.split('.') + .last() + .filter(|ext| extensions.contains(ext)) + .is_some() + }) + .unwrap_or(false) + }; + + let bar = create_spinner(); + + for entry in walkdir::WalkDir::new(location) + .into_iter() + .filter_entry(|e| is_valid(e)) + { + let entry = entry.unwrap(); + if !entry.file_type().is_dir() { + bar.set_message(entry.path().display().to_string()); + index_file(&entry.into_path()); + bar.tick(); + } + } + } + } + + eprintln!(); + + eprintln!( + "Writing index for {} documents into {}", + index.documents.len(), + out.display() + ); + + if let Some(file) = evaluate_against { + eprintln!("Evaluating built index against {}", file.display()); + + let ground_truth = read_index_from_file(file); + + let mut evaluator = Evaluator::default(); + evaluator + .evaluate_indexes(&index, &ground_truth, Default::default()) + .unwrap() + .print_summary(); + } + + write_message_to_file(out, index).expect("to write the file"); +} + +fn index_content( + contents: Vec, + parser: BundledParser, + options: &IndexOptions, +) -> Result { + let mut document: Document; + + if options.analysis_mode.globals() { + document = get_symbols(parser, &contents).unwrap(); + } else { + document = Document::new(); + } + + if options.analysis_mode.locals() { + let locals = get_locals(parser, &contents); + + match locals { + Some(Ok(occurrences)) => { + for occ in occurrences { + document.occurrences.push(occ); + } + } + + Some(Err(e)) => return Err(e), + None => {} + } + } + + Ok(document) +} diff --git a/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/io.rs b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/io.rs new file mode 100644 index 0000000000000..07a74b8134ab4 --- /dev/null +++ b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/io.rs @@ -0,0 +1,15 @@ +use std::{fs::File, io::BufReader, path::PathBuf}; + +use protobuf::{CodedInputStream, Message}; + +pub fn read_index_from_file(file: PathBuf) -> scip::types::Index { + let mut candidate_idx = scip::types::Index::new(); + let candidate_f = File::open(file).unwrap(); + + let mut reader = BufReader::new(candidate_f); + let mut cis = CodedInputStream::from_buf_read(&mut reader); + + candidate_idx.merge_from(&mut cis).unwrap(); + + candidate_idx +} diff --git a/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/lib.rs b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/lib.rs new file mode 100644 index 0000000000000..b725a33bef93b --- /dev/null +++ b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/lib.rs @@ -0,0 +1,4 @@ +pub mod evaluate; +pub mod index; +pub mod io; +pub mod progress; diff --git a/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/main.rs b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/main.rs index 7b4dca7f69a88..493c7c80099a9 100644 --- a/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/main.rs +++ b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/main.rs @@ -1,11 +1,8 @@ -use clap::{Parser, Subcommand, ValueEnum}; -use indicatif::{ProgressBar, ProgressStyle}; -use protobuf::Message; -use scip::types::Document; -use scip_syntax::{get_locals, get_symbols}; -use scip_treesitter_languages::parsers::BundledParser; - -use anyhow::Result; +use clap::{Parser, Subcommand}; +use scip_treesitter_cli::{ + evaluate::ScipEvaluateOptions, + index::{index_command, AnalysisMode, IndexMode, IndexOptions}, +}; use std::path::PathBuf; #[derive(Parser)] @@ -16,31 +13,12 @@ struct Cli { command: Commands, } -#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)] -enum AnalysisMode { - /// Only extract occurrences of local definitions - Locals, - /// Only extract globally-accessible symbols - Globals, - /// Locals + Globals, extract everything - Full, -} - -impl AnalysisMode { - fn locals(self) -> bool { - self == AnalysisMode::Locals || self == AnalysisMode::Full - } - fn globals(self) -> bool { - self == AnalysisMode::Globals || self == AnalysisMode::Full - } -} - #[derive(Subcommand)] enum Commands { /// Index source files using Tree Sitter parser for a given language /// and produce a SCIP file Index { - /// + /// Which language parser to use to process the files #[arg(short, long)] language: String, @@ -48,6 +26,12 @@ enum Commands { #[arg(short, long, default_value = "./index.scip")] out: String, + /// Folder to index - will be chosen as project root, + /// and files will be discovered according to + /// configured extensions for the selected language + #[arg(long)] + workspace: Option, + /// List of files to analyse filenames: Vec, @@ -62,15 +46,38 @@ enum Commands { /// Project root to write to SCIP index #[arg(short, long, default_value = "./")] project_root: String, + + /// Evaluate the build index against an index from a file + #[arg(long)] + evaluate: Option, }, -} -struct Options { - analysis_mode: AnalysisMode, - /// When true, fail on first encountered error - /// Otherwise errors are logged but they don't - /// interrupt the process - fail_fast: bool, + /// Fuzzily evaluate candidate SCIP index against known ground truth + ScipEvaluate { + /// SCIP file to evaluate (refered to as "candidate") + #[arg(long)] + candidate: String, + + /// SCIP file to be used as the source of truth (referred to as "ground truth") + #[arg(long)] + ground_truth: String, + + /// Print to stdout the mapping between candidate symbols and groun truth symbols + #[arg(long)] + print_mapping: bool, + + /// Print all occurrences in candidate SCIP that are matching occurrences in ground truth SCIP + #[arg(long)] + print_true_positives: bool, + + /// Print all occurrences in candidate SCIP that don't match any occurrences in ground truth SCIP + #[arg(long)] + print_false_positives: bool, + + /// Print all occurrences in ground truth SCIP that don't match any occurrences in candidate SCIP + #[arg(long)] + print_false_negatives: bool, + }, } pub fn main() { @@ -81,233 +88,56 @@ pub fn main() { language, out, filenames, + workspace, mode, fail_fast, project_root, - } => index_command( - language, - filenames, - PathBuf::from(out), - PathBuf::from(project_root), - Options { - analysis_mode: mode, - fail_fast, - }, - ), - } -} - -fn index_command( - language: String, - filenames: Vec, - out: PathBuf, - project_root: PathBuf, - options: Options, -) { - let p = BundledParser::get_parser(&language).unwrap(); - - let mut index = scip::types::Index { - metadata: Some(scip::types::Metadata { - tool_info: Some(scip::types::ToolInfo { - name: "scip-treesitter-cli".to_string(), - version: clap::crate_version!().to_string(), - arguments: vec![], - ..Default::default() - }) - .into(), - project_root: format!( - "file://{}", - project_root - .canonicalize() - .expect("Failed to canonicalize project root") - .display() - ), - ..Default::default() - }) - .into(), - ..Default::default() - }; - - let bar = ProgressBar::new(filenames.len() as u64); - - bar.set_style( - ProgressStyle::with_template( - "[{elapsed_precise}] {bar:40.cyan/blue} {pos:>7}/{len:7}\n {msg}", - ) - .unwrap() - .progress_chars("##-"), - ); - - for (_, filename) in filenames.iter().enumerate() { - let contents = std::fs::read(filename).unwrap(); - bar.set_message(filename.clone()); - bar.inc(1); - match index_content(contents, p, &options) { - Ok(mut document) => { - document.relative_path = filename.to_string(); - index.documents.push(document); - } - Err(error) => { - if options.fail_fast { - panic!("Failed to index {filename}: {:?}", error); - } else { - eprintln!("Failed to index {filename}: {:?}", error) - } - } - } - } - - bar.finish(); - - eprintln!(); - - eprintln!( - "Writing index for {} documents into {}", - index.documents.len(), - out.display() - ); - - write_message_to_file(out, index).expect("to write the file"); -} - -fn index_content(contents: Vec, parser: BundledParser, options: &Options) -> Result { - let mut document: Document; - - if options.analysis_mode.globals() { - document = get_symbols(parser, &contents).unwrap(); - } else { - document = Document::new(); - } - - if options.analysis_mode.locals() { - let locals = get_locals(parser, &contents); - - match locals { - Some(Ok(occurrences)) => { - for occ in occurrences { - document.occurrences.push(occ); + evaluate, + } => { + let index_mode = { + match workspace { + None => IndexMode::Files { list: filenames }, + Some(location) => { + if !filenames.is_empty() { + panic!("--workspace option cannot be combined with a list of files"); + } else { + IndexMode::Workspace { + location: location.into(), + } + } + } } - } - Some(Err(e)) => return Err(e), - None => {} + }; + + index_command( + language, + index_mode, + PathBuf::from(out), + PathBuf::from(project_root), + evaluate.map(PathBuf::from), + IndexOptions { + analysis_mode: mode, + fail_fast, + }, + ) } - } - - Ok(document) -} - -fn write_message_to_file

(path: P, msg: impl Message) -> Result<(), Box> -where - P: AsRef, -{ - use std::io::Write; - - let res = msg.write_to_bytes()?; - let output = std::fs::File::create(path)?; - let mut writer = std::io::BufWriter::new(output); - writer.write_all(&res)?; - - Ok(()) -} - -#[cfg(test)] -mod tests { - use assert_cmd::cargo::cargo_bin; - use assert_cmd::prelude::*; - use protobuf::{CodedInputStream, Message}; - use std::collections::HashMap; - use std::fs::File; - use std::io::BufReader; - use std::path::Path; - use std::process::Command; - use std::{env::temp_dir, path::PathBuf}; - - lazy_static::lazy_static! { - static ref BINARY_LOCATION: PathBuf = { - match std::env::var("SCIP_CLI_LOCATION") { - Ok(va) => std::env::current_dir().unwrap().join(va), - _ => cargo_bin("scip-treesitter-cli"), - } - }; - } - - use scip_treesitter::snapshot::{dump_document_with_config, EmitSymbol, SnapshotOptions}; - - fn read_index_from_file(file: PathBuf) -> scip::types::Index { - let mut candidate_idx = scip::types::Index::new(); - let candidate_f = File::open(file).unwrap(); - - let mut reader = BufReader::new(candidate_f); - let mut cis = CodedInputStream::from_buf_read(&mut reader); - - candidate_idx.merge_from(&mut cis).unwrap(); - candidate_idx - } - fn snapshot_syntax_document(doc: &scip::types::Document, source: &str) -> String { - dump_document_with_config( - doc, - source, - SnapshotOptions { - emit_symbol: EmitSymbol::All, - ..Default::default() + Commands::ScipEvaluate { + candidate, + ground_truth, + print_mapping, + print_true_positives, + print_false_positives, + print_false_negatives, + } => scip_treesitter_cli::evaluate::evaluate_command( + PathBuf::from(candidate), + PathBuf::from(ground_truth), + ScipEvaluateOptions { + print_mapping, + print_true_positives, + print_false_positives, + print_false_negatives, }, - ) - .expect("dump document") - } - - #[test] - fn java_e2e() { - let out_dir = temp_dir(); - let setup = HashMap::from([( - PathBuf::from("globals.java"), - include_str!("../testdata/globals.java").to_string(), - )]); - - run_index(&out_dir, &setup, vec!["--language", "java"]); - - let index = read_index_from_file(out_dir.join("index.scip")); - - for doc in &index.documents { - let path = &doc.relative_path; - let dumped = - snapshot_syntax_document(doc, setup.get(&PathBuf::from(&path)).expect("??")); - - insta::assert_snapshot!(path.clone(), dumped); - } - } - - fn prepare(temp: &Path, files: &HashMap) { - for (path, contents) in files.iter() { - let file_path = temp.join(path); - write_file(&file_path, contents); - } - } - - fn run_index(location: &PathBuf, files: &HashMap, extra_arguments: Vec<&str>) { - prepare(location, files); - - let mut base_args = vec!["index"]; - base_args.extend(extra_arguments); - - let mut cmd = Command::new(BINARY_LOCATION.to_str().unwrap()); - - cmd.args(base_args); - - for (path, _) in files.iter() { - cmd.arg(path.to_str().unwrap()); - } - - cmd.current_dir(location); - - cmd.assert().success(); - } - - fn write_file(path: &PathBuf, contents: &String) { - use std::io::Write; - - let output = std::fs::File::create(path).unwrap(); - let mut writer = std::io::BufWriter::new(output); - writer.write_all(contents.as_bytes()).unwrap(); + ), } } diff --git a/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/progress.rs b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/progress.rs new file mode 100644 index 0000000000000..2a9d4801affd6 --- /dev/null +++ b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/progress.rs @@ -0,0 +1,35 @@ +use indicatif::{ProgressBar, ProgressStyle}; + +pub fn create_spinner() -> ProgressBar { + let bar = ProgressBar::new_spinner(); + + bar.set_style( + ProgressStyle::with_template("{spinner:.blue} {msg}") + .unwrap() + .tick_strings(&[ + "ā–¹ā–¹ā–¹ā–¹ā–¹", + "ā–øā–¹ā–¹ā–¹ā–¹", + "ā–¹ā–øā–¹ā–¹ā–¹", + "ā–¹ā–¹ā–øā–¹ā–¹", + "ā–¹ā–¹ā–¹ā–øā–¹", + "ā–¹ā–¹ā–¹ā–¹ā–ø", + "ā–Ŗā–Ŗā–Ŗā–Ŗā–Ŗ", + ]), + ); + + bar +} + +pub fn create_progress_bar(len: u64) -> ProgressBar { + let bar = ProgressBar::new(len); + + bar.set_style( + ProgressStyle::with_template( + "[{elapsed_precise}] {bar:40.cyan/blue} {pos:>7}/{len:7}\n {msg}", + ) + .unwrap() + .progress_chars("##-"), + ); + + bar +} diff --git a/docker-images/syntax-highlighter/crates/scip-treesitter-cli/tests/integration_test.rs b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/tests/integration_test.rs new file mode 100644 index 0000000000000..1947b0df87a2d --- /dev/null +++ b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/tests/integration_test.rs @@ -0,0 +1,86 @@ +use std::collections::HashMap; +use std::path::Path; +use std::process::Command; +use std::{env::temp_dir, path::PathBuf}; + +use assert_cmd::cargo::cargo_bin; +use assert_cmd::prelude::*; + +use scip_treesitter_cli::io::read_index_from_file; + +lazy_static::lazy_static! { + static ref BINARY_LOCATION: PathBuf = { + match std::env::var("SCIP_CLI_LOCATION") { + Ok(va) => std::env::current_dir().unwrap().join(va), + _ => cargo_bin("scip-treesitter-cli"), + } + }; +} + +use scip_treesitter::snapshot::{dump_document_with_config, EmitSymbol, SnapshotOptions}; + +fn snapshot_syntax_document(doc: &scip::types::Document, source: &str) -> String { + dump_document_with_config( + doc, + source, + SnapshotOptions { + emit_symbol: EmitSymbol::All, + ..Default::default() + }, + ) + .expect("dump document") +} + +#[test] +fn java_e2e_indexing() { + let out_dir = temp_dir(); + let setup = HashMap::from([( + PathBuf::from("globals.java"), + include_str!("../testdata/globals.java").to_string(), + )]); + + run_index(&out_dir, &setup, vec!["--language", "java"]); + + let index = read_index_from_file(out_dir.join("index.scip")); + + for doc in &index.documents { + let path = &doc.relative_path; + let dumped = snapshot_syntax_document(doc, setup.get(&PathBuf::from(&path)).expect("??")); + + insta::assert_snapshot!(path.clone(), dumped); + } +} + +fn prepare(temp: &Path, files: &HashMap) { + for (path, contents) in files.iter() { + let file_path = temp.join(path); + write_file(&file_path, contents); + } +} + +fn run_index(location: &PathBuf, files: &HashMap, extra_arguments: Vec<&str>) { + prepare(location, files); + + let mut base_args = vec!["index"]; + base_args.extend(extra_arguments); + + let mut cmd = Command::new(BINARY_LOCATION.to_str().unwrap()); + + cmd.args(base_args); + + for (path, _) in files.iter() { + cmd.arg(path.to_str().unwrap()); + } + + cmd.current_dir(location); + + cmd.assert().success(); +} + +fn write_file(path: &PathBuf, contents: &String) { + use std::io::Write; + + let output = std::fs::File::create(path).unwrap(); + let mut writer = std::io::BufWriter::new(output); + writer.write_all(contents.as_bytes()).unwrap(); +} diff --git a/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/snapshots/scip_treesitter_cli__tests__globals.java.snap b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/tests/snapshots/integration_test__globals.java.snap similarity index 98% rename from docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/snapshots/scip_treesitter_cli__tests__globals.java.snap rename to docker-images/syntax-highlighter/crates/scip-treesitter-cli/tests/snapshots/integration_test__globals.java.snap index fb8a7c2a6b711..34027a9afdb55 100644 --- a/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/snapshots/scip_treesitter_cli__tests__globals.java.snap +++ b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/tests/snapshots/integration_test__globals.java.snap @@ -1,5 +1,5 @@ --- -source: crates/scip-treesitter-cli/src/main.rs +source: crates/scip-treesitter-cli/tests/integration_test.rs expression: dumped --- package MyPackage; diff --git a/docker-images/syntax-highlighter/crates/scip-treesitter-languages/src/parsers.rs b/docker-images/syntax-highlighter/crates/scip-treesitter-languages/src/parsers.rs index 1cd8c4c855632..440e51c2d8f66 100644 --- a/docker-images/syntax-highlighter/crates/scip-treesitter-languages/src/parsers.rs +++ b/docker-images/syntax-highlighter/crates/scip-treesitter-languages/src/parsers.rs @@ -1,3 +1,5 @@ +use std::collections::HashSet; + use tree_sitter::Language; #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] @@ -108,6 +110,21 @@ impl BundledParser { } } + pub fn get_language_extensions(&self) -> HashSet<&str> { + let ar = { + match self { + BundledParser::Go => vec!["go"], + BundledParser::Java => vec!["java"], + BundledParser::Javascript => vec!["js"], + BundledParser::Typescript => vec!["ts"], + BundledParser::Python => vec!["py"], + _ => vec![], + } + }; + + HashSet::from_iter(ar.into_iter()) + } + // TODO(SuperAuguste): language detection library pub fn get_parser_from_extension(name: &str) -> Option { match name { diff --git a/docker-images/syntax-highlighter/crates/scip-treesitter/src/types.rs b/docker-images/syntax-highlighter/crates/scip-treesitter/src/types.rs index dbaec91e69c10..7febfa8602fd0 100644 --- a/docker-images/syntax-highlighter/crates/scip-treesitter/src/types.rs +++ b/docker-images/syntax-highlighter/crates/scip-treesitter/src/types.rs @@ -1,6 +1,6 @@ use tree_sitter::Node; -#[derive(Debug, PartialEq, Eq, Default)] +#[derive(Debug, PartialEq, Eq, Default, Hash, Copy, Clone)] pub struct PackedRange { pub start_line: i32, pub start_col: i32, From 0794f2c773b22c3333130456347e437aba0e9ae9 Mon Sep 17 00:00:00 2001 From: Jean-Hadrien Chabran Date: Tue, 14 Nov 2023 19:39:30 +0100 Subject: [PATCH 010/222] bzl: bump db schemas to 5.2.2 (#58287) --- tools/release/README.md | 2 +- tools/release/schema_deps.bzl | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/release/README.md b/tools/release/README.md index 51a0ef9b86399..d36a307b76d29 100644 --- a/tools/release/README.md +++ b/tools/release/README.md @@ -194,5 +194,5 @@ new schemas to the bucket to ensure that the next release from `main`, i.e 5.3.X > How do I see which schemas where used to build the _migrator_ container. -`tar tf $(bazel cquery //cmd/migrator:tar_schema_descriptions --output=files)` will show the content the container layer used +`bazel build //cmd/migrator:tar_schema_descriptions && tar tf $(bazel cquery //cmd/migrator:tar_schema_descriptions --output=files)` will show the content the container layer used to inject the schemas in the final _migrator_ container image. diff --git a/tools/release/schema_deps.bzl b/tools/release/schema_deps.bzl index 6881188c63fb9..0d51e56e0335a 100644 --- a/tools/release/schema_deps.bzl +++ b/tools/release/schema_deps.bzl @@ -8,6 +8,6 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file") def schema_deps(): http_file( name = "schemas_archive", - urls = ["https://storage.googleapis.com/schemas-migrations/dist/schemas-v5.2.1.tar.gz"], - sha256 = "3ec54f2d132ba5fc4f084f3bc76650f1c759ab32b5b73aba2ac9df91098ffeaf", + urls = ["https://storage.googleapis.com/schemas-migrations/dist/schemas-v5.2.2.tar.gz"], + sha256 = "a60fb3311e164eb4b3061e56f5049c4b6324ccb1a301065b1c773b3dd04d2334", ) From bd03da329facf75cfefc613192413a28ef1b641b Mon Sep 17 00:00:00 2001 From: Keegan Carruthers-Smith Date: Tue, 14 Nov 2023 22:02:04 +0200 Subject: [PATCH 011/222] searcher: set Log on test githubStore (#58302) Without this benchmarks panic. Test Plan: go test -bench . --- cmd/searcher/internal/search/search_regex_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/searcher/internal/search/search_regex_test.go b/cmd/searcher/internal/search/search_regex_test.go index 638869b819d30..5c8684a43f617 100644 --- a/cmd/searcher/internal/search/search_regex_test.go +++ b/cmd/searcher/internal/search/search_regex_test.go @@ -428,6 +428,7 @@ var githubStore = &Store{ GitserverClient: gitserver.NewClient("test"), FetchTar: fetchTarFromGithub, Path: "/tmp/search_test/store", + Log: observation.TestContext.Logger, ObservationCtx: &observation.TestContext, } From 5b29bfa58d0ee0e5c9b1a64a8a3d80848ba88d5e Mon Sep 17 00:00:00 2001 From: Julie Tibshirani Date: Tue, 14 Nov 2023 12:26:13 -0800 Subject: [PATCH 012/222] Zoekt: bump version for more indexing fixes (#58308) This update contains these commits from the Zoekt repo: - e068116194 Indexing: improve skipped doc handling - 5e2620e0cf Indexing: properly block on shard building --- deps.bzl | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deps.bzl b/deps.bzl index bed5b3f51e16a..abf1e84e13ac7 100644 --- a/deps.bzl +++ b/deps.bzl @@ -5963,8 +5963,8 @@ def go_dependencies(): name = "com_github_sourcegraph_zoekt", build_file_proto_mode = "disable_global", importpath = "github.com/sourcegraph/zoekt", - sum = "h1:6+khC/kBCn1Am0TX4ne4fwqKGdY02BZgm/gKNKppNnA=", - version = "v0.0.0-20231110161813-2355607d5ff8", + sum = "h1:p+ejFr9s/9PfldOMF1+lsbsaMOy3nOpnJeQf/rxoei4=", + version = "v0.0.0-20231114160819-5e2620e0cf64", ) go_repository( diff --git a/go.mod b/go.mod index 7d35f4069e9df..aeab13a27207d 100644 --- a/go.mod +++ b/go.mod @@ -547,7 +547,7 @@ require ( github.com/sourcegraph/conc v0.2.0 github.com/sourcegraph/mountinfo v0.0.0-20231018142932-e00da332dac5 github.com/sourcegraph/sourcegraph/monitoring v0.0.0-20230124144931-b2d81b1accb6 - github.com/sourcegraph/zoekt v0.0.0-20231110161813-2355607d5ff8 + github.com/sourcegraph/zoekt v0.0.0-20231114160819-5e2620e0cf64 github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/objx v0.5.0 // indirect diff --git a/go.sum b/go.sum index 60d095c27ac78..29cb9678d7532 100644 --- a/go.sum +++ b/go.sum @@ -1599,8 +1599,8 @@ github.com/sourcegraph/tiktoken-go v0.0.0-20230905173153-caab340cf008 h1:Wu8W50q github.com/sourcegraph/tiktoken-go v0.0.0-20230905173153-caab340cf008/go.mod h1:9NiV+i9mJKGj1rYOT+njbv+ZwA/zJxYdewGl6qVatpg= github.com/sourcegraph/yaml v1.0.1-0.20200714132230-56936252f152 h1:z/MpntplPaW6QW95pzcAR/72Z5TWDyDnSo0EOcyij9o= github.com/sourcegraph/yaml v1.0.1-0.20200714132230-56936252f152/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= -github.com/sourcegraph/zoekt v0.0.0-20231110161813-2355607d5ff8 h1:6+khC/kBCn1Am0TX4ne4fwqKGdY02BZgm/gKNKppNnA= -github.com/sourcegraph/zoekt v0.0.0-20231110161813-2355607d5ff8/go.mod h1:WVDDy51tFgeKy8zXtujTSbqzgyJrqhrLC9sjWiEfAII= +github.com/sourcegraph/zoekt v0.0.0-20231114160819-5e2620e0cf64 h1:p+ejFr9s/9PfldOMF1+lsbsaMOy3nOpnJeQf/rxoei4= +github.com/sourcegraph/zoekt v0.0.0-20231114160819-5e2620e0cf64/go.mod h1:WVDDy51tFgeKy8zXtujTSbqzgyJrqhrLC9sjWiEfAII= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v0.0.0-20170901052352-ee1bd8ee15a1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= From 5d7baf5daffd25b8ce4d11f4c3c5005f1c6d7a72 Mon Sep 17 00:00:00 2001 From: Camden Cheek Date: Tue, 14 Nov 2023 15:29:03 -0600 Subject: [PATCH 013/222] Chore: clean up dead code (#58280) --- cmd/executor/internal/apiclient/baseclient.go | 10 - cmd/symbols/internal/api/BUILD.bazel | 2 - cmd/symbols/internal/api/handler.go | 40 -- internal/batches/graphql/BUILD.bazel | 2 - internal/batches/graphql/ids.go | 29 - .../graphql/root_resolver_implementations.go | 28 - .../graphql/root_resolver_references.go | 26 - internal/codycontext/context.go | 14 - internal/conf/client.go | 4 - internal/featureflag/middleware.go | 7 - internal/httpcli/client.go | 6 - internal/logging/BUILD.bazel | 5 +- internal/logging/logging.go | 22 - internal/own/background/background.go | 5 - internal/resetonce/BUILD.bazel | 8 - internal/resetonce/resetable_once.go | 34 -- internal/search/job/jobutil/job.go | 14 - internal/search/result/BUILD.bazel | 1 - internal/search/result/merge.go | 27 - internal/symbols/BUILD.bazel | 3 - internal/symbols/client.go | 92 --- internal/symbols/client_test.go | 9 - internal/symbols/v1/symbols.pb.go | 561 ++++++------------ internal/symbols/v1/symbols.proto | 52 +- internal/symbols/v1/symbols_grpc.pb.go | 37 -- 25 files changed, 201 insertions(+), 837 deletions(-) delete mode 100644 internal/logging/logging.go delete mode 100644 internal/resetonce/BUILD.bazel delete mode 100644 internal/resetonce/resetable_once.go delete mode 100644 internal/search/result/merge.go diff --git a/cmd/executor/internal/apiclient/baseclient.go b/cmd/executor/internal/apiclient/baseclient.go index a1bb1f1473990..3b86f7d2613a4 100644 --- a/cmd/executor/internal/apiclient/baseclient.go +++ b/cmd/executor/internal/apiclient/baseclient.go @@ -158,16 +158,6 @@ func (c *BaseClient) DoAndDrop(ctx context.Context, req *http.Request) error { return err } -// NewRequest creates a new http.Request with the provided URL and path. -func NewRequest(method string, baseURL, urlPath string, payload any) (*http.Request, error) { - u, err := url.Parse(baseURL) - if err != nil { - return nil, err - } - u.Path = path.Join(u.Path, urlPath) - return newJSONRequest(method, u, payload) -} - // NewRequest creates a new http.Request where only the Authorization HTTP header is set. func (c *BaseClient) NewRequest(jobId int, token, method, path string, payload io.Reader) (*http.Request, error) { u := c.newRelativeURL(path) diff --git a/cmd/symbols/internal/api/BUILD.bazel b/cmd/symbols/internal/api/BUILD.bazel index 664c1b0acdde4..ee3f39a59155d 100644 --- a/cmd/symbols/internal/api/BUILD.bazel +++ b/cmd/symbols/internal/api/BUILD.bazel @@ -18,7 +18,6 @@ go_library( "//cmd/symbols/observability", "//cmd/symbols/squirrel", "//cmd/symbols/types", - "//internal/conf/deploy", "//internal/database", "//internal/env", "//internal/grpc", @@ -31,7 +30,6 @@ go_library( "//internal/types", "//lib/errors", "@com_github_dustin_go_humanize//:go-humanize", - "@com_github_sourcegraph_go_ctags//:go-ctags", "@com_github_sourcegraph_log//:log", "@io_opentelemetry_go_otel//attribute", "@org_golang_google_grpc//codes", diff --git a/cmd/symbols/internal/api/handler.go b/cmd/symbols/internal/api/handler.go index 21913d75f4ac7..631e4b31f49bf 100644 --- a/cmd/symbols/internal/api/handler.go +++ b/cmd/symbols/internal/api/handler.go @@ -6,11 +6,9 @@ import ( "fmt" "net/http" - "github.com/sourcegraph/go-ctags" logger "github.com/sourcegraph/log" "github.com/sourcegraph/sourcegraph/cmd/symbols/types" - "github.com/sourcegraph/sourcegraph/internal/conf/deploy" internalgrpc "github.com/sourcegraph/sourcegraph/internal/grpc" "github.com/sourcegraph/sourcegraph/internal/grpc/defaults" "github.com/sourcegraph/sourcegraph/internal/search" @@ -49,22 +47,6 @@ func (s *grpcService) Search(ctx context.Context, r *proto.SearchRequest) (*prot return &response, nil } -func (s *grpcService) ListLanguages(ctx context.Context, _ *proto.ListLanguagesRequest) (*proto.ListLanguagesResponse, error) { - rawMapping, err := ctags.ListLanguageMappings(ctx, s.ctagsBinary) - if err != nil { - return nil, errors.Wrap(err, "listing ctags language mappings") - } - - protoMapping := make(map[string]*proto.ListLanguagesResponse_GlobFilePatterns, len(rawMapping)) - for language, filePatterns := range rawMapping { - protoMapping[language] = &proto.ListLanguagesResponse_GlobFilePatterns{Patterns: filePatterns} - } - - return &proto.ListLanguagesResponse{ - LanguageFileNameMap: protoMapping, - }, nil -} - func (s *grpcService) Healthz(ctx context.Context, _ *proto.HealthzRequest) (*proto.HealthzResponse, error) { // Note: Kubernetes only has beta support for GRPC Healthchecks since version >= 1.23. This means // that we probably need the old non-GRPC healthcheck endpoint for a while. @@ -107,7 +89,6 @@ func NewHandler( mux := http.NewServeMux() mux.HandleFunc("/search", handleSearchWith(jsonLogger, searchFuncWrapper)) mux.HandleFunc("/healthz", handleHealthCheck(jsonLogger)) - mux.HandleFunc("/list-languages", handleListLanguages(ctagsBinary)) addHandlers(mux, searchFunc, readFileFunc) if handleStatus != nil { @@ -151,27 +132,6 @@ func handleSearchWith(l logger.Logger, searchFunc types.SearchFunc) http.Handler } } -func handleListLanguages(ctagsBinary string) func(w http.ResponseWriter, r *http.Request) { - return func(w http.ResponseWriter, r *http.Request) { - if deploy.IsSingleBinary() && ctagsBinary == "" { - // app: ctags is not available - var mapping map[string][]string - if err := json.NewEncoder(w).Encode(mapping); err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - } - return - } - mapping, err := ctags.ListLanguageMappings(r.Context(), ctagsBinary) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - if err := json.NewEncoder(w).Encode(mapping); err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - } - } -} - func handleHealthCheck(l logger.Logger) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) diff --git a/internal/batches/graphql/BUILD.bazel b/internal/batches/graphql/BUILD.bazel index edf6ac706dde2..60edef1f20020 100644 --- a/internal/batches/graphql/BUILD.bazel +++ b/internal/batches/graphql/BUILD.bazel @@ -9,8 +9,6 @@ go_library( importpath = "github.com/sourcegraph/sourcegraph/internal/batches/graphql", visibility = ["//:__subpackages__"], deps = [ - "//internal/api", - "//lib/errors", "@com_github_graph_gophers_graphql_go//:graphql-go", "@com_github_graph_gophers_graphql_go//relay", ], diff --git a/internal/batches/graphql/ids.go b/internal/batches/graphql/ids.go index 77b0b480dcfeb..7fecd7210cf85 100644 --- a/internal/batches/graphql/ids.go +++ b/internal/batches/graphql/ids.go @@ -3,9 +3,6 @@ package graphql import ( "github.com/graph-gophers/graphql-go" "github.com/graph-gophers/graphql-go/relay" - - "github.com/sourcegraph/sourcegraph/internal/api" - "github.com/sourcegraph/sourcegraph/lib/errors" ) const batchChangeIDKind = "BatchChange" @@ -19,29 +16,3 @@ const changesetIDKind = "Changeset" func MarshalChangesetID(id int64) graphql.ID { return relay.MarshalID(changesetIDKind, id) } - -const orgIDKind = "Org" - -func MarshalNamespaceID(userID, orgID int32) (graphql.ID, error) { - // This is essentially a reimplementation of code in - // cmd/frontend/graphqlbackend to keep our import tree at least a little - // clean. - if userID != 0 { - return MarshalUserID(userID), nil - } else if orgID != 0 { - return relay.MarshalID(orgIDKind, orgID), nil - } - return "", errors.New("cannot marshal namespace ID: neither user nor org ID provided") -} - -const repoIDKind = "Repo" - -func MarshalRepoID(id api.RepoID) graphql.ID { - return relay.MarshalID(repoIDKind, int32(id)) -} - -const userIDKind = "User" - -func MarshalUserID(id int32) graphql.ID { - return relay.MarshalID(userIDKind, id) -} diff --git a/internal/codeintel/codenav/transport/graphql/root_resolver_implementations.go b/internal/codeintel/codenav/transport/graphql/root_resolver_implementations.go index 6f0f266645725..550404c8e093c 100644 --- a/internal/codeintel/codenav/transport/graphql/root_resolver_implementations.go +++ b/internal/codeintel/codenav/transport/graphql/root_resolver_implementations.go @@ -2,8 +2,6 @@ package graphql import ( "context" - "encoding/base64" - "encoding/json" "fmt" "strings" "time" @@ -133,29 +131,3 @@ func (r *gitBlobLSIFDataResolver) Prototypes(ctx context.Context, args *resolver return newLocationConnectionResolver(prototypes, pointers.NonZeroPtr(nextCursor), r.locationResolver), nil } - -// -// - -// decodeCursor is the inverse of encodeCursor. If the given encoded string is empty, then -// a fresh cursor is returned. -func decodeImplementationsCursor(rawEncoded string) (codenav.ImplementationsCursor, error) { - if rawEncoded == "" { - return codenav.ImplementationsCursor{Phase: "local"}, nil - } - - raw, err := base64.RawURLEncoding.DecodeString(rawEncoded) - if err != nil { - return codenav.ImplementationsCursor{}, err - } - - var cursor codenav.ImplementationsCursor - err = json.Unmarshal(raw, &cursor) - return cursor, err -} - -// encodeCursor returns an encoding of the given cursor suitable for a URL or a GraphQL token. -func encodeImplementationsCursor(cursor codenav.ImplementationsCursor) string { - rawEncoded, _ := json.Marshal(cursor) - return base64.RawURLEncoding.EncodeToString(rawEncoded) -} diff --git a/internal/codeintel/codenav/transport/graphql/root_resolver_references.go b/internal/codeintel/codenav/transport/graphql/root_resolver_references.go index 056251ba81db6..94caec410b694 100644 --- a/internal/codeintel/codenav/transport/graphql/root_resolver_references.go +++ b/internal/codeintel/codenav/transport/graphql/root_resolver_references.go @@ -96,29 +96,3 @@ func encodeTraversalCursor(cursor codenav.Cursor) string { rawEncoded, _ := json.Marshal(cursor) return base64.RawURLEncoding.EncodeToString(rawEncoded) } - -// -// - -// decodeReferencesCursor is the inverse of encodeCursor. If the given encoded string is empty, then -// a fresh cursor is returned. -func decodeReferencesCursor(rawEncoded string) (codenav.ReferencesCursor, error) { - if rawEncoded == "" { - return codenav.ReferencesCursor{Phase: "local"}, nil - } - - raw, err := base64.RawURLEncoding.DecodeString(rawEncoded) - if err != nil { - return codenav.ReferencesCursor{}, err - } - - var cursor codenav.ReferencesCursor - err = json.Unmarshal(raw, &cursor) - return cursor, err -} - -// encodeReferencesCursor returns an encoding of the given cursor suitable for a URL or a GraphQL token. -func encodeReferencesCursor(cursor codenav.ReferencesCursor) string { - rawEncoded, _ := json.Marshal(cursor) - return base64.RawURLEncoding.EncodeToString(rawEncoded) -} diff --git a/internal/codycontext/context.go b/internal/codycontext/context.go index 75d87eb7787c7..344eb4cf53f27 100644 --- a/internal/codycontext/context.go +++ b/internal/codycontext/context.go @@ -404,17 +404,3 @@ func max(vals ...int) int { } return res } - -func min(vals ...int) int { - res := math.MaxInt32 - for _, val := range vals { - if val < res { - res = val - } - } - return res -} - -func truncate[T any](input []T, size int) []T { - return input[:min(len(input), size)] -} diff --git a/internal/conf/client.go b/internal/conf/client.go index 5340636a8e146..be1cd9669048a 100644 --- a/internal/conf/client.go +++ b/internal/conf/client.go @@ -84,10 +84,6 @@ func SiteConfig() schema.SiteConfiguration { return Get().SiteConfiguration } -func ServiceConnections() conftypes.ServiceConnections { - return Get().ServiceConnections() -} - // Raw returns a copy of the raw configuration. func (c *client) Raw() conftypes.RawUnified { return c.store.Raw() diff --git a/internal/featureflag/middleware.go b/internal/featureflag/middleware.go index ddc5eb3c257b6..916208872ad8d 100644 --- a/internal/featureflag/middleware.go +++ b/internal/featureflag/middleware.go @@ -98,13 +98,6 @@ func FromContext(ctx context.Context) *FlagSet { return nil } -func CopyContext(dst, from context.Context) context.Context { - if flags := from.Value(flagContextKey{}); flags != nil { - return context.WithValue(dst, flagContextKey{}, flags) - } - return dst -} - func GetEvaluatedFlagSet(ctx context.Context) EvaluatedFlagSet { if flagSet := FromContext(ctx); flagSet != nil { return getEvaluatedFlagSetFromCache(flagSet) diff --git a/internal/httpcli/client.go b/internal/httpcli/client.go index 5b49d0b684b88..e5be80bfcf885 100644 --- a/internal/httpcli/client.go +++ b/internal/httpcli/client.go @@ -41,12 +41,6 @@ type Doer interface { Do(*http.Request) (*http.Response, error) } -type MockDoer func(*http.Request) (*http.Response, error) - -func (m MockDoer) Do(req *http.Request) (*http.Response, error) { - return m(req) -} - // DoerFunc is function adapter that implements the http.RoundTripper // interface by calling itself. type DoerFunc func(*http.Request) (*http.Response, error) diff --git a/internal/logging/BUILD.bazel b/internal/logging/BUILD.bazel index 9e07fb0d565aa..7dd917cc55ead 100644 --- a/internal/logging/BUILD.bazel +++ b/internal/logging/BUILD.bazel @@ -2,10 +2,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "logging", - srcs = [ - "logging.go", - "main.go", - ], + srcs = ["main.go"], importpath = "github.com/sourcegraph/sourcegraph/internal/logging", visibility = ["//:__subpackages__"], deps = [ diff --git a/internal/logging/logging.go b/internal/logging/logging.go deleted file mode 100644 index 06dbac95f10d5..0000000000000 --- a/internal/logging/logging.go +++ /dev/null @@ -1,22 +0,0 @@ -// Package logging carries logic related Sourcegraph's legacy logger, and is DEPRECATED. -// All new logging should use github.com/sourcegraph/log, and existing logging should be opportunistically -// migrated to the new logger. See https://docs.sourcegraph.com/dev/how-to/add_logging -package logging - -// ErrorLogger captures the method required for logging an error. -// -// Deprecated: All logging should use github.com/sourcegraph/log instead. See https://docs.sourcegraph.com/dev/how-to/add_logging -type ErrorLogger interface { - Error(msg string, ctx ...any) -} - -// Log logs the given message and context when the given error is defined. -// -// Deprecated: All logging should use github.com/sourcegraph/log instead. See https://docs.sourcegraph.com/dev/how-to/add_logging -func Log(lg ErrorLogger, msg string, err *error, ctx ...any) { - if lg == nil || err == nil || *err == nil { - return - } - - lg.Error(msg, append(append(make([]any, 0, 2+len(ctx)), "error", *err), ctx...)...) -} diff --git a/internal/own/background/background.go b/internal/own/background/background.go index 9de02117bf4d4..4c4941e4e46f5 100644 --- a/internal/own/background/background.go +++ b/internal/own/background/background.go @@ -2,7 +2,6 @@ package background import ( "context" - "fmt" "strconv" "time" @@ -31,10 +30,6 @@ import ( "github.com/sourcegraph/sourcegraph/lib/errors" ) -func featureFlagName(jobType IndexJobType) string { - return fmt.Sprintf("own-background-index-repo-%s", jobType.Name) -} - const ( tableName = "own_background_jobs" viewName = "own_background_jobs_config_aware" diff --git a/internal/resetonce/BUILD.bazel b/internal/resetonce/BUILD.bazel deleted file mode 100644 index 3eb19560000b8..0000000000000 --- a/internal/resetonce/BUILD.bazel +++ /dev/null @@ -1,8 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "resetonce", - srcs = ["resetable_once.go"], - importpath = "github.com/sourcegraph/sourcegraph/internal/resetonce", - visibility = ["//:__subpackages__"], -) diff --git a/internal/resetonce/resetable_once.go b/internal/resetonce/resetable_once.go deleted file mode 100644 index 5e7cb1afaf554..0000000000000 --- a/internal/resetonce/resetable_once.go +++ /dev/null @@ -1,34 +0,0 @@ -package resetonce - -import ( - "sync" - "sync/atomic" -) - -// Once is a copy of `sync.Once` with a `Reset` method, inspired by -// https://github.com/matryer/resync/blob/master/once.go -type Once struct { - done uint32 - m sync.Mutex -} - -func (o *Once) Do(f func()) { - if atomic.LoadUint32(&o.done) == 0 { - o.doSlow(f) - } -} - -func (o *Once) doSlow(f func()) { - o.m.Lock() - defer o.m.Unlock() - if o.done == 0 { - defer atomic.StoreUint32(&o.done, 1) - f() - } -} - -func (o *Once) Reset() { - o.m.Lock() - defer o.m.Unlock() - atomic.StoreUint32(&o.done, 0) -} diff --git a/internal/search/job/jobutil/job.go b/internal/search/job/jobutil/job.go index 00c8544440165..d679bb8ba6151 100644 --- a/internal/search/job/jobutil/job.go +++ b/internal/search/job/jobutil/job.go @@ -622,20 +622,6 @@ func mapSlice(values []string, f func(string) string) []string { return res } -func count(b query.Basic, p search.Protocol) int { - if count := b.Count(); count != nil { - return *count - } - - switch p { - case search.Batch: - return limits.DefaultMaxSearchResults - case search.Streaming: - return limits.DefaultMaxSearchResultsStreaming - } - panic("unreachable") -} - // toTextPatternInfo converts a an atomic query to internal values that drive // text search. An atomic query is a Basic query where the Pattern is either // nil, or comprises only one Pattern node (hence, an atom, and not an diff --git a/internal/search/result/BUILD.bazel b/internal/search/result/BUILD.bazel index 7e9a7784320a0..7f1602a84c467 100644 --- a/internal/search/result/BUILD.bazel +++ b/internal/search/result/BUILD.bazel @@ -11,7 +11,6 @@ go_library( "file.go", "highlight.go", "match.go", - "merge.go", "merger.go", "owner.go", "range.go", diff --git a/internal/search/result/merge.go b/internal/search/result/merge.go deleted file mode 100644 index 1512b8fcdbd0f..0000000000000 --- a/internal/search/result/merge.go +++ /dev/null @@ -1,27 +0,0 @@ -package result - -// Intersect performs a merge of match results, merging line matches for files -// contained in both result sets. -func Intersect(left, right []Match) []Match { - rightMap := make(map[Key]Match, len(right)) - for _, r := range right { - rightMap[r.Key()] = r - } - - merged := left[:0] - for _, l := range left { - r := rightMap[l.Key()] - if r == nil { - continue - } - switch leftMatch := l.(type) { - // key matches, so we know to convert to respective type - case *FileMatch: - leftMatch.AppendMatches(r.(*FileMatch)) - case *CommitMatch: - leftMatch.AppendMatches(r.(*CommitMatch)) - } - merged = append(merged, l) - } - return merged -} diff --git a/internal/symbols/BUILD.bazel b/internal/symbols/BUILD.bazel index 75e5cc68617c2..9dd08f92d67b8 100644 --- a/internal/symbols/BUILD.bazel +++ b/internal/symbols/BUILD.bazel @@ -16,15 +16,12 @@ go_library( "//internal/grpc/defaults", "//internal/httpcli", "//internal/limiter", - "//internal/resetonce", "//internal/search", "//internal/search/result", "//internal/symbols/v1:symbols", "//internal/trace", "//internal/types", "//lib/errors", - "@com_github_gobwas_glob//:glob", - "@com_github_sourcegraph_go_ctags//:go-ctags", "@com_github_sourcegraph_log//:log", "@io_opentelemetry_go_otel//attribute", "@org_golang_google_grpc//:go_default_library", diff --git a/internal/symbols/client.go b/internal/symbols/client.go index 3af0f65d082df..61cb53bee8af4 100644 --- a/internal/symbols/client.go +++ b/internal/symbols/client.go @@ -7,10 +7,7 @@ import ( "io" "net/http" "strings" - "time" - "github.com/gobwas/glob" - "github.com/sourcegraph/go-ctags" "github.com/sourcegraph/log" "go.opentelemetry.io/otel/attribute" "google.golang.org/grpc" @@ -26,7 +23,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/grpc/defaults" "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/limiter" - "github.com/sourcegraph/sourcegraph/internal/resetonce" "github.com/sourcegraph/sourcegraph/internal/search" "github.com/sourcegraph/sourcegraph/internal/search/result" proto "github.com/sourcegraph/sourcegraph/internal/symbols/v1" @@ -80,94 +76,6 @@ type Client struct { // function since we expect the client to be set at runtime once we have a // database connection. SubRepoPermsChecker func() authz.SubRepoPermissionChecker - - langMappingOnce resetonce.Once - langMappingCache map[string][]glob.Glob -} - -func (c *Client) ListLanguageMappings(ctx context.Context, repo api.RepoName) (_ map[string][]glob.Glob, err error) { - c.langMappingOnce.Do(func() { - var mappings map[string][]string - - if conf.IsGRPCEnabled(ctx) { - mappings, err = c.listLanguageMappingsGRPC(ctx, repo) - } else { - mappings, err = c.listLanguageMappingsJSON(ctx, repo) - } - - if err != nil { - err = errors.Wrap(err, "fetching language mappings") - return - } - - globs := make(map[string][]glob.Glob, len(ctags.SupportedLanguages)) - - for _, allowedLanguage := range ctags.SupportedLanguages { - for _, pattern := range mappings[allowedLanguage] { - var compiled glob.Glob - compiled, err = glob.Compile(pattern) - if err != nil { - return - } - - globs[allowedLanguage] = append(globs[allowedLanguage], compiled) - } - } - - c.langMappingCache = globs - time.AfterFunc(time.Minute*10, c.langMappingOnce.Reset) - }) - - return c.langMappingCache, nil -} - -func (c *Client) listLanguageMappingsGRPC(ctx context.Context, repository api.RepoName) (map[string][]string, error) { - // TODO@ggilmore: This address doesn't need the repository name for anything order than dialing - // an arbitrary symbols host. We should remove this requirement from this method. - conn, err := c.getGRPCConn(string(repository)) - if err != nil { - return nil, errors.Wrap(err, "getting gRPC connection to symbols server") - } - - client := proto.NewSymbolsServiceClient(conn) - resp, err := client.ListLanguages(ctx, &proto.ListLanguagesRequest{}) - if err != nil { - return nil, translateGRPCError(err) - } - - mappings := make(map[string][]string, len(resp.LanguageFileNameMap)) - for language, fp := range resp.LanguageFileNameMap { - mappings[language] = fp.Patterns - } - - return mappings, nil -} - -func (c *Client) listLanguageMappingsJSON(ctx context.Context, repository api.RepoName) (map[string][]string, error) { - // TODO@ggilmore: This address doesn't need the repository name for anything order than dialing - // an arbitrary symbols host. We should remove this requirement from this method. - - var resp *http.Response - resp, err := c.httpPost(ctx, "list-languages", repository, nil) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - if resp.StatusCode != http.StatusOK { - // best-effort inclusion of body in error message - body, _ := io.ReadAll(io.LimitReader(resp.Body, 200)) - err = errors.Errorf( - "Symbol.ListLanguageMappings http status %d: %s", - resp.StatusCode, - string(body), - ) - return nil, err - } - - mapping := make(map[string][]string) - err = json.NewDecoder(resp.Body).Decode(&mapping) - return mapping, err } // Search performs a symbol search on the symbols service. diff --git a/internal/symbols/client_test.go b/internal/symbols/client_test.go index b66a80f90fb96..c4b38bf84fdc6 100644 --- a/internal/symbols/client_test.go +++ b/internal/symbols/client_test.go @@ -197,7 +197,6 @@ func TestDefinitionWithFiltering(t *testing.T) { type mockSymbolsServer struct { mockSearchGRPC func(ctx context.Context, request *proto.SearchRequest) (*proto.SearchResponse, error) mockLocalCodeIntelGRPC func(request *proto.LocalCodeIntelRequest, ss proto.SymbolsService_LocalCodeIntelServer) error - mockListLanguagesGRPC func(ctx context.Context, request *proto.ListLanguagesRequest) (*proto.ListLanguagesResponse, error) mockSymbolInfoGRPC func(ctx context.Context, request *proto.SymbolInfoRequest) (*proto.SymbolInfoResponse, error) mockHealthzGRPC func(ctx context.Context, request *proto.HealthzRequest) (*proto.HealthzResponse, error) @@ -243,14 +242,6 @@ func (m *mockSymbolsServer) LocalCodeIntel(r *proto.LocalCodeIntelRequest, ss pr return errors.Newf("grpc: method %q not implemented", "LocalCodeIntel") } -func (m *mockSymbolsServer) ListLanguages(ctx context.Context, r *proto.ListLanguagesRequest) (*proto.ListLanguagesResponse, error) { - if m.mockListLanguagesGRPC != nil { - return m.mockListLanguagesGRPC(ctx, r) - } - - return nil, errors.Newf("grpc: method %q not implemented", "ListLanguages") -} - func (m *mockSymbolsServer) SymbolInfo(ctx context.Context, r *proto.SymbolInfoRequest) (*proto.SymbolInfoResponse, error) { if m.mockSymbolInfoGRPC != nil { return m.mockSymbolInfoGRPC(ctx, r) diff --git a/internal/symbols/v1/symbols.pb.go b/internal/symbols/v1/symbols.pb.go index b5ab0e6fde1bc..bd8193cac1776 100644 --- a/internal/symbols/v1/symbols.pb.go +++ b/internal/symbols/v1/symbols.pb.go @@ -34,8 +34,8 @@ type SearchRequest struct { Query string `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` // is_reg_exp, if true, will treat the Pattern as a regular expression IsRegExp bool `protobuf:"varint,4,opt,name=is_reg_exp,json=isRegExp,proto3" json:"is_reg_exp,omitempty"` - // is_case_sensitive, if false, will ignore the case of query and file pattern when - // finding matches + // is_case_sensitive, if false, will ignore the case of query and file pattern + // when finding matches IsCaseSensitive bool `protobuf:"varint,5,opt,name=is_case_sensitive,json=isCaseSensitive,proto3" json:"is_case_sensitive,omitempty"` // include_patterns is a list of regexes that symbol's file paths // need to match to get included in the result @@ -304,103 +304,13 @@ func (x *LocalCodeIntelResponse) GetSymbols() []*LocalCodeIntelResponse_Symbol { return nil } -// ListLanguagesRequest is the request to the ListLanguages method. -type ListLanguagesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *ListLanguagesRequest) Reset() { - *x = ListLanguagesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_symbols_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListLanguagesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListLanguagesRequest) ProtoMessage() {} - -func (x *ListLanguagesRequest) ProtoReflect() protoreflect.Message { - mi := &file_symbols_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListLanguagesRequest.ProtoReflect.Descriptor instead. -func (*ListLanguagesRequest) Descriptor() ([]byte, []int) { - return file_symbols_proto_rawDescGZIP(), []int{4} -} - -// ListLanguagesResponse is the response from the ListLanguages method. -type ListLanguagesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // language_file_name_map is a of map of language names to - // glob patterns that match files of that language. - // - // Example: "Ruby" -> ["*.rb", "*.ruby"] - LanguageFileNameMap map[string]*ListLanguagesResponse_GlobFilePatterns `protobuf:"bytes,1,rep,name=language_file_name_map,json=languageFileNameMap,proto3" json:"language_file_name_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -} - -func (x *ListLanguagesResponse) Reset() { - *x = ListLanguagesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_symbols_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListLanguagesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListLanguagesResponse) ProtoMessage() {} - -func (x *ListLanguagesResponse) ProtoReflect() protoreflect.Message { - mi := &file_symbols_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListLanguagesResponse.ProtoReflect.Descriptor instead. -func (*ListLanguagesResponse) Descriptor() ([]byte, []int) { - return file_symbols_proto_rawDescGZIP(), []int{5} -} - -func (x *ListLanguagesResponse) GetLanguageFileNameMap() map[string]*ListLanguagesResponse_GlobFilePatterns { - if x != nil { - return x.LanguageFileNameMap - } - return nil -} - type SymbolInfoRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repo_commit_path is the repo, commit, and path to the file to get symbol information for + // repo_commit_path is the repo, commit, and path to the file to get symbol + // information for RepoCommitPath *RepoCommitPath `protobuf:"bytes,1,opt,name=repo_commit_path,json=repoCommitPath,proto3" json:"repo_commit_path,omitempty"` // point is the point in the file to get symbol information for Point *Point `protobuf:"bytes,2,opt,name=point,proto3" json:"point,omitempty"` @@ -409,7 +319,7 @@ type SymbolInfoRequest struct { func (x *SymbolInfoRequest) Reset() { *x = SymbolInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_symbols_proto_msgTypes[6] + mi := &file_symbols_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -422,7 +332,7 @@ func (x *SymbolInfoRequest) String() string { func (*SymbolInfoRequest) ProtoMessage() {} func (x *SymbolInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_symbols_proto_msgTypes[6] + mi := &file_symbols_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -435,7 +345,7 @@ func (x *SymbolInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SymbolInfoRequest.ProtoReflect.Descriptor instead. func (*SymbolInfoRequest) Descriptor() ([]byte, []int) { - return file_symbols_proto_rawDescGZIP(), []int{6} + return file_symbols_proto_rawDescGZIP(), []int{4} } func (x *SymbolInfoRequest) GetRepoCommitPath() *RepoCommitPath { @@ -458,15 +368,15 @@ type SymbolInfoResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // result is the definition / hover information for the symbol at the given point in the file, - // if available. + // result is the definition / hover information for the symbol at the given + // point in the file, if available. Result *SymbolInfoResponse_DefinitionResult `protobuf:"bytes,1,opt,name=result,proto3,oneof" json:"result,omitempty"` } func (x *SymbolInfoResponse) Reset() { *x = SymbolInfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_symbols_proto_msgTypes[7] + mi := &file_symbols_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -479,7 +389,7 @@ func (x *SymbolInfoResponse) String() string { func (*SymbolInfoResponse) ProtoMessage() {} func (x *SymbolInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_symbols_proto_msgTypes[7] + mi := &file_symbols_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -492,7 +402,7 @@ func (x *SymbolInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SymbolInfoResponse.ProtoReflect.Descriptor instead. func (*SymbolInfoResponse) Descriptor() ([]byte, []int) { - return file_symbols_proto_rawDescGZIP(), []int{7} + return file_symbols_proto_rawDescGZIP(), []int{5} } func (x *SymbolInfoResponse) GetResult() *SymbolInfoResponse_DefinitionResult { @@ -520,7 +430,7 @@ type RepoCommitPath struct { func (x *RepoCommitPath) Reset() { *x = RepoCommitPath{} if protoimpl.UnsafeEnabled { - mi := &file_symbols_proto_msgTypes[8] + mi := &file_symbols_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -533,7 +443,7 @@ func (x *RepoCommitPath) String() string { func (*RepoCommitPath) ProtoMessage() {} func (x *RepoCommitPath) ProtoReflect() protoreflect.Message { - mi := &file_symbols_proto_msgTypes[8] + mi := &file_symbols_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -546,7 +456,7 @@ func (x *RepoCommitPath) ProtoReflect() protoreflect.Message { // Deprecated: Use RepoCommitPath.ProtoReflect.Descriptor instead. func (*RepoCommitPath) Descriptor() ([]byte, []int) { - return file_symbols_proto_rawDescGZIP(), []int{8} + return file_symbols_proto_rawDescGZIP(), []int{6} } func (x *RepoCommitPath) GetRepo() string { @@ -587,7 +497,7 @@ type Range struct { func (x *Range) Reset() { *x = Range{} if protoimpl.UnsafeEnabled { - mi := &file_symbols_proto_msgTypes[9] + mi := &file_symbols_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -600,7 +510,7 @@ func (x *Range) String() string { func (*Range) ProtoMessage() {} func (x *Range) ProtoReflect() protoreflect.Message { - mi := &file_symbols_proto_msgTypes[9] + mi := &file_symbols_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -613,7 +523,7 @@ func (x *Range) ProtoReflect() protoreflect.Message { // Deprecated: Use Range.ProtoReflect.Descriptor instead. func (*Range) Descriptor() ([]byte, []int) { - return file_symbols_proto_rawDescGZIP(), []int{9} + return file_symbols_proto_rawDescGZIP(), []int{7} } func (x *Range) GetRow() int32 { @@ -652,7 +562,7 @@ type Point struct { func (x *Point) Reset() { *x = Point{} if protoimpl.UnsafeEnabled { - mi := &file_symbols_proto_msgTypes[10] + mi := &file_symbols_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -665,7 +575,7 @@ func (x *Point) String() string { func (*Point) ProtoMessage() {} func (x *Point) ProtoReflect() protoreflect.Message { - mi := &file_symbols_proto_msgTypes[10] + mi := &file_symbols_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -678,7 +588,7 @@ func (x *Point) ProtoReflect() protoreflect.Message { // Deprecated: Use Point.ProtoReflect.Descriptor instead. func (*Point) Descriptor() ([]byte, []int) { - return file_symbols_proto_rawDescGZIP(), []int{10} + return file_symbols_proto_rawDescGZIP(), []int{8} } func (x *Point) GetRow() int32 { @@ -695,8 +605,10 @@ func (x *Point) GetColumn() int32 { return 0 } -// TODO@ggilmore: Note - GRPC has its own healthchecking protocol that we should use instead of this. -// See https://github.com/grpc/grpc/blob/master/doc/health-checking.md for more information. +// TODO@ggilmore: Note - GRPC has its own healthchecking protocol that we should +// use instead of this. See +// https://github.com/grpc/grpc/blob/master/doc/health-checking.md for more +// information. type HealthzRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -706,7 +618,7 @@ type HealthzRequest struct { func (x *HealthzRequest) Reset() { *x = HealthzRequest{} if protoimpl.UnsafeEnabled { - mi := &file_symbols_proto_msgTypes[11] + mi := &file_symbols_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -719,7 +631,7 @@ func (x *HealthzRequest) String() string { func (*HealthzRequest) ProtoMessage() {} func (x *HealthzRequest) ProtoReflect() protoreflect.Message { - mi := &file_symbols_proto_msgTypes[11] + mi := &file_symbols_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -732,11 +644,13 @@ func (x *HealthzRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use HealthzRequest.ProtoReflect.Descriptor instead. func (*HealthzRequest) Descriptor() ([]byte, []int) { - return file_symbols_proto_rawDescGZIP(), []int{11} + return file_symbols_proto_rawDescGZIP(), []int{9} } -// TODO@ggilmore: Note - GRPC has its own healthchecking protocol that we should use instead of this. -// See https://github.com/grpc/grpc/blob/master/doc/health-checking.md for more information. +// TODO@ggilmore: Note - GRPC has its own healthchecking protocol that we should +// use instead of this. See +// https://github.com/grpc/grpc/blob/master/doc/health-checking.md for more +// information. type HealthzResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -746,7 +660,7 @@ type HealthzResponse struct { func (x *HealthzResponse) Reset() { *x = HealthzResponse{} if protoimpl.UnsafeEnabled { - mi := &file_symbols_proto_msgTypes[12] + mi := &file_symbols_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -759,7 +673,7 @@ func (x *HealthzResponse) String() string { func (*HealthzResponse) ProtoMessage() {} func (x *HealthzResponse) ProtoReflect() protoreflect.Message { - mi := &file_symbols_proto_msgTypes[12] + mi := &file_symbols_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -772,7 +686,7 @@ func (x *HealthzResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use HealthzResponse.ProtoReflect.Descriptor instead. func (*HealthzResponse) Descriptor() ([]byte, []int) { - return file_symbols_proto_rawDescGZIP(), []int{12} + return file_symbols_proto_rawDescGZIP(), []int{10} } // Symbol is a code symbol @@ -799,15 +713,15 @@ type SearchResponse_Symbol struct { ParentKind string `protobuf:"bytes,8,opt,name=parent_kind,json=parentKind,proto3" json:"parent_kind,omitempty"` // signature is the signature of the symbol (TODO@ggilmore - what is this?) Signature string `protobuf:"bytes,9,opt,name=signature,proto3" json:"signature,omitempty"` - // file_limited indicates that the search ran into the limit set by "first" in the request, and so the result - // set may be incomplete. + // file_limited indicates that the search ran into the limit set by "first" + // in the request, and so the result set may be incomplete. FileLimited bool `protobuf:"varint,10,opt,name=file_limited,json=fileLimited,proto3" json:"file_limited,omitempty"` } func (x *SearchResponse_Symbol) Reset() { *x = SearchResponse_Symbol{} if protoimpl.UnsafeEnabled { - mi := &file_symbols_proto_msgTypes[13] + mi := &file_symbols_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -820,7 +734,7 @@ func (x *SearchResponse_Symbol) String() string { func (*SearchResponse_Symbol) ProtoMessage() {} func (x *SearchResponse_Symbol) ProtoReflect() protoreflect.Message { - mi := &file_symbols_proto_msgTypes[13] + mi := &file_symbols_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -924,7 +838,7 @@ type LocalCodeIntelResponse_Symbol struct { func (x *LocalCodeIntelResponse_Symbol) Reset() { *x = LocalCodeIntelResponse_Symbol{} if protoimpl.UnsafeEnabled { - mi := &file_symbols_proto_msgTypes[14] + mi := &file_symbols_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -937,7 +851,7 @@ func (x *LocalCodeIntelResponse_Symbol) String() string { func (*LocalCodeIntelResponse_Symbol) ProtoMessage() {} func (x *LocalCodeIntelResponse_Symbol) ProtoReflect() protoreflect.Message { - mi := &file_symbols_proto_msgTypes[14] + mi := &file_symbols_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -981,59 +895,13 @@ func (x *LocalCodeIntelResponse_Symbol) GetRefs() []*Range { return nil } -type ListLanguagesResponse_GlobFilePatterns struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Patterns []string `protobuf:"bytes,1,rep,name=patterns,proto3" json:"patterns,omitempty"` -} - -func (x *ListLanguagesResponse_GlobFilePatterns) Reset() { - *x = ListLanguagesResponse_GlobFilePatterns{} - if protoimpl.UnsafeEnabled { - mi := &file_symbols_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListLanguagesResponse_GlobFilePatterns) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListLanguagesResponse_GlobFilePatterns) ProtoMessage() {} - -func (x *ListLanguagesResponse_GlobFilePatterns) ProtoReflect() protoreflect.Message { - mi := &file_symbols_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListLanguagesResponse_GlobFilePatterns.ProtoReflect.Descriptor instead. -func (*ListLanguagesResponse_GlobFilePatterns) Descriptor() ([]byte, []int) { - return file_symbols_proto_rawDescGZIP(), []int{5, 0} -} - -func (x *ListLanguagesResponse_GlobFilePatterns) GetPatterns() []string { - if x != nil { - return x.Patterns - } - return nil -} - type SymbolInfoResponse_Definition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repo_commit_path is the repository name, commit, and file path for the symbol's definition. + // repo_commit_path is the repository name, commit, and file path for the + // symbol's definition. RepoCommitPath *RepoCommitPath `protobuf:"bytes,1,opt,name=repo_commit_path,json=repoCommitPath,proto3" json:"repo_commit_path,omitempty"` // range is the range of the symbol's definition, if it is known. Range *Range `protobuf:"bytes,2,opt,name=range,proto3,oneof" json:"range,omitempty"` @@ -1042,7 +910,7 @@ type SymbolInfoResponse_Definition struct { func (x *SymbolInfoResponse_Definition) Reset() { *x = SymbolInfoResponse_Definition{} if protoimpl.UnsafeEnabled { - mi := &file_symbols_proto_msgTypes[17] + mi := &file_symbols_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1055,7 +923,7 @@ func (x *SymbolInfoResponse_Definition) String() string { func (*SymbolInfoResponse_Definition) ProtoMessage() {} func (x *SymbolInfoResponse_Definition) ProtoReflect() protoreflect.Message { - mi := &file_symbols_proto_msgTypes[17] + mi := &file_symbols_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1068,7 +936,7 @@ func (x *SymbolInfoResponse_Definition) ProtoReflect() protoreflect.Message { // Deprecated: Use SymbolInfoResponse_Definition.ProtoReflect.Descriptor instead. func (*SymbolInfoResponse_Definition) Descriptor() ([]byte, []int) { - return file_symbols_proto_rawDescGZIP(), []int{7, 0} + return file_symbols_proto_rawDescGZIP(), []int{5, 0} } func (x *SymbolInfoResponse_Definition) GetRepoCommitPath() *RepoCommitPath { @@ -1090,7 +958,8 @@ type SymbolInfoResponse_DefinitionResult struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // definition is the information associated with the location of the symbol's definition. + // definition is the information associated with the location of the + // symbol's definition. Definition *SymbolInfoResponse_Definition `protobuf:"bytes,1,opt,name=definition,proto3" json:"definition,omitempty"` // hover is the hover text associated with the symbol Hover *string `protobuf:"bytes,2,opt,name=hover,proto3,oneof" json:"hover,omitempty"` @@ -1099,7 +968,7 @@ type SymbolInfoResponse_DefinitionResult struct { func (x *SymbolInfoResponse_DefinitionResult) Reset() { *x = SymbolInfoResponse_DefinitionResult{} if protoimpl.UnsafeEnabled { - mi := &file_symbols_proto_msgTypes[18] + mi := &file_symbols_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1112,7 +981,7 @@ func (x *SymbolInfoResponse_DefinitionResult) String() string { func (*SymbolInfoResponse_DefinitionResult) ProtoMessage() {} func (x *SymbolInfoResponse_DefinitionResult) ProtoReflect() protoreflect.Message { - mi := &file_symbols_proto_msgTypes[18] + mi := &file_symbols_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1125,7 +994,7 @@ func (x *SymbolInfoResponse_DefinitionResult) ProtoReflect() protoreflect.Messag // Deprecated: Use SymbolInfoResponse_DefinitionResult.ProtoReflect.Descriptor instead. func (*SymbolInfoResponse_DefinitionResult) Descriptor() ([]byte, []int) { - return file_symbols_proto_rawDescGZIP(), []int{7, 1} + return file_symbols_proto_rawDescGZIP(), []int{5, 1} } func (x *SymbolInfoResponse_DefinitionResult) GetDefinition() *SymbolInfoResponse_Definition { @@ -1213,105 +1082,79 @@ var file_symbols_proto_rawDesc = []byte{ 0x61, 0x6e, 0x67, 0x65, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x25, 0x0a, 0x04, 0x72, 0x65, 0x66, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x04, 0x72, 0x65, 0x66, 0x73, - 0x22, 0x16, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb4, 0x02, 0x0a, 0x15, 0x4c, 0x69, 0x73, - 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x16, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x66, - 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x46, 0x69, - 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, - 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x4d, 0x61, 0x70, 0x1a, 0x2e, 0x0a, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x46, 0x69, 0x6c, 0x65, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x73, 0x1a, 0x7a, 0x0a, 0x18, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x46, - 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x6c, 0x6f, 0x62, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x82, 0x01, 0x0a, 0x11, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x63, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, - 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x0e, 0x72, 0x65, 0x70, - 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x27, 0x0a, 0x05, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x79, 0x6d, - 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x05, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x22, 0xff, 0x02, 0x0a, 0x12, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x79, - 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x65, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x8a, 0x01, 0x0a, 0x0a, 0x44, 0x65, - 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x6f, - 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x70, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x0e, - 0x72, 0x65, 0x70, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2c, - 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, - 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x48, 0x00, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x1a, 0x82, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x66, 0x69, 0x6e, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x49, 0x0a, 0x0a, 0x64, - 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6d, - 0x62, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x05, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x88, 0x01, - 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x50, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x16, 0x0a, 0x06, - 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x49, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x72, 0x6f, 0x77, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x22, 0x31, 0x0a, 0x05, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x72, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x6f, 0x77, 0x12, 0x16, - 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x22, 0x10, 0x0a, 0x0e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x7a, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x11, 0x0a, 0x0f, 0x48, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x7a, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x9d, 0x03, 0x0a, 0x0e, - 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x41, - 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x19, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, - 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x5b, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, - 0x74, 0x65, 0x6c, 0x12, 0x21, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x74, - 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x56, - 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x12, - 0x20, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x0a, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x7a, - 0x12, 0x1a, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, - 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x7a, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x38, 0x5a, 0x36, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x73, 0x79, 0x6d, 0x62, 0x6f, - 0x6c, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x22, 0x82, 0x01, 0x0a, 0x11, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x70, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x0e, 0x72, 0x65, + 0x70, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x27, 0x0a, 0x05, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x79, + 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x05, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0xff, 0x02, 0x0a, 0x12, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, + 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x65, 0x66, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x8a, 0x01, 0x0a, 0x0a, 0x44, + 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x65, 0x70, + 0x6f, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, + 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, + 0x2c, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x48, 0x00, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x1a, 0x82, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x49, 0x0a, 0x0a, + 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, + 0x6d, 0x62, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64, 0x65, 0x66, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x05, 0x68, 0x6f, 0x76, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x50, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x6f, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, + 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x16, 0x0a, + 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x49, 0x0a, 0x05, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x72, 0x6f, 0x77, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x22, 0x31, 0x0a, 0x05, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x72, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x6f, 0x77, 0x12, + 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x22, 0x10, 0x0a, 0x0e, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x7a, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x11, 0x0a, 0x0f, 0x48, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x7a, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xc5, 0x02, 0x0a, + 0x0e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x41, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x19, 0x2e, 0x73, 0x79, 0x6d, 0x62, + 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x49, + 0x6e, 0x74, 0x65, 0x6c, 0x12, 0x21, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, + 0x74, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, + 0x4d, 0x0a, 0x0a, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, + 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6d, 0x62, 0x6f, + 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, + 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, + 0x0a, 0x07, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x12, 0x1a, 0x2e, 0x73, 0x79, 0x6d, 0x62, + 0x6f, 0x6c, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x42, 0x38, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2f, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1326,59 +1169,51 @@ func file_symbols_proto_rawDescGZIP() []byte { return file_symbols_proto_rawDescData } -var file_symbols_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_symbols_proto_msgTypes = make([]protoimpl.MessageInfo, 15) var file_symbols_proto_goTypes = []interface{}{ - (*SearchRequest)(nil), // 0: symbols.v1.SearchRequest - (*SearchResponse)(nil), // 1: symbols.v1.SearchResponse - (*LocalCodeIntelRequest)(nil), // 2: symbols.v1.LocalCodeIntelRequest - (*LocalCodeIntelResponse)(nil), // 3: symbols.v1.LocalCodeIntelResponse - (*ListLanguagesRequest)(nil), // 4: symbols.v1.ListLanguagesRequest - (*ListLanguagesResponse)(nil), // 5: symbols.v1.ListLanguagesResponse - (*SymbolInfoRequest)(nil), // 6: symbols.v1.SymbolInfoRequest - (*SymbolInfoResponse)(nil), // 7: symbols.v1.SymbolInfoResponse - (*RepoCommitPath)(nil), // 8: symbols.v1.RepoCommitPath - (*Range)(nil), // 9: symbols.v1.Range - (*Point)(nil), // 10: symbols.v1.Point - (*HealthzRequest)(nil), // 11: symbols.v1.HealthzRequest - (*HealthzResponse)(nil), // 12: symbols.v1.HealthzResponse - (*SearchResponse_Symbol)(nil), // 13: symbols.v1.SearchResponse.Symbol - (*LocalCodeIntelResponse_Symbol)(nil), // 14: symbols.v1.LocalCodeIntelResponse.Symbol - (*ListLanguagesResponse_GlobFilePatterns)(nil), // 15: symbols.v1.ListLanguagesResponse.GlobFilePatterns - nil, // 16: symbols.v1.ListLanguagesResponse.LanguageFileNameMapEntry - (*SymbolInfoResponse_Definition)(nil), // 17: symbols.v1.SymbolInfoResponse.Definition - (*SymbolInfoResponse_DefinitionResult)(nil), // 18: symbols.v1.SymbolInfoResponse.DefinitionResult - (*durationpb.Duration)(nil), // 19: google.protobuf.Duration + (*SearchRequest)(nil), // 0: symbols.v1.SearchRequest + (*SearchResponse)(nil), // 1: symbols.v1.SearchResponse + (*LocalCodeIntelRequest)(nil), // 2: symbols.v1.LocalCodeIntelRequest + (*LocalCodeIntelResponse)(nil), // 3: symbols.v1.LocalCodeIntelResponse + (*SymbolInfoRequest)(nil), // 4: symbols.v1.SymbolInfoRequest + (*SymbolInfoResponse)(nil), // 5: symbols.v1.SymbolInfoResponse + (*RepoCommitPath)(nil), // 6: symbols.v1.RepoCommitPath + (*Range)(nil), // 7: symbols.v1.Range + (*Point)(nil), // 8: symbols.v1.Point + (*HealthzRequest)(nil), // 9: symbols.v1.HealthzRequest + (*HealthzResponse)(nil), // 10: symbols.v1.HealthzResponse + (*SearchResponse_Symbol)(nil), // 11: symbols.v1.SearchResponse.Symbol + (*LocalCodeIntelResponse_Symbol)(nil), // 12: symbols.v1.LocalCodeIntelResponse.Symbol + (*SymbolInfoResponse_Definition)(nil), // 13: symbols.v1.SymbolInfoResponse.Definition + (*SymbolInfoResponse_DefinitionResult)(nil), // 14: symbols.v1.SymbolInfoResponse.DefinitionResult + (*durationpb.Duration)(nil), // 15: google.protobuf.Duration } var file_symbols_proto_depIdxs = []int32{ - 19, // 0: symbols.v1.SearchRequest.timeout:type_name -> google.protobuf.Duration - 13, // 1: symbols.v1.SearchResponse.symbols:type_name -> symbols.v1.SearchResponse.Symbol - 8, // 2: symbols.v1.LocalCodeIntelRequest.repo_commit_path:type_name -> symbols.v1.RepoCommitPath - 14, // 3: symbols.v1.LocalCodeIntelResponse.symbols:type_name -> symbols.v1.LocalCodeIntelResponse.Symbol - 16, // 4: symbols.v1.ListLanguagesResponse.language_file_name_map:type_name -> symbols.v1.ListLanguagesResponse.LanguageFileNameMapEntry - 8, // 5: symbols.v1.SymbolInfoRequest.repo_commit_path:type_name -> symbols.v1.RepoCommitPath - 10, // 6: symbols.v1.SymbolInfoRequest.point:type_name -> symbols.v1.Point - 18, // 7: symbols.v1.SymbolInfoResponse.result:type_name -> symbols.v1.SymbolInfoResponse.DefinitionResult - 9, // 8: symbols.v1.LocalCodeIntelResponse.Symbol.def:type_name -> symbols.v1.Range - 9, // 9: symbols.v1.LocalCodeIntelResponse.Symbol.refs:type_name -> symbols.v1.Range - 15, // 10: symbols.v1.ListLanguagesResponse.LanguageFileNameMapEntry.value:type_name -> symbols.v1.ListLanguagesResponse.GlobFilePatterns - 8, // 11: symbols.v1.SymbolInfoResponse.Definition.repo_commit_path:type_name -> symbols.v1.RepoCommitPath - 9, // 12: symbols.v1.SymbolInfoResponse.Definition.range:type_name -> symbols.v1.Range - 17, // 13: symbols.v1.SymbolInfoResponse.DefinitionResult.definition:type_name -> symbols.v1.SymbolInfoResponse.Definition - 0, // 14: symbols.v1.SymbolsService.Search:input_type -> symbols.v1.SearchRequest - 2, // 15: symbols.v1.SymbolsService.LocalCodeIntel:input_type -> symbols.v1.LocalCodeIntelRequest - 4, // 16: symbols.v1.SymbolsService.ListLanguages:input_type -> symbols.v1.ListLanguagesRequest - 6, // 17: symbols.v1.SymbolsService.SymbolInfo:input_type -> symbols.v1.SymbolInfoRequest - 11, // 18: symbols.v1.SymbolsService.Healthz:input_type -> symbols.v1.HealthzRequest - 1, // 19: symbols.v1.SymbolsService.Search:output_type -> symbols.v1.SearchResponse - 3, // 20: symbols.v1.SymbolsService.LocalCodeIntel:output_type -> symbols.v1.LocalCodeIntelResponse - 5, // 21: symbols.v1.SymbolsService.ListLanguages:output_type -> symbols.v1.ListLanguagesResponse - 7, // 22: symbols.v1.SymbolsService.SymbolInfo:output_type -> symbols.v1.SymbolInfoResponse - 12, // 23: symbols.v1.SymbolsService.Healthz:output_type -> symbols.v1.HealthzResponse - 19, // [19:24] is the sub-list for method output_type - 14, // [14:19] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 14, // [14:14] is the sub-list for extension extendee - 0, // [0:14] is the sub-list for field type_name + 15, // 0: symbols.v1.SearchRequest.timeout:type_name -> google.protobuf.Duration + 11, // 1: symbols.v1.SearchResponse.symbols:type_name -> symbols.v1.SearchResponse.Symbol + 6, // 2: symbols.v1.LocalCodeIntelRequest.repo_commit_path:type_name -> symbols.v1.RepoCommitPath + 12, // 3: symbols.v1.LocalCodeIntelResponse.symbols:type_name -> symbols.v1.LocalCodeIntelResponse.Symbol + 6, // 4: symbols.v1.SymbolInfoRequest.repo_commit_path:type_name -> symbols.v1.RepoCommitPath + 8, // 5: symbols.v1.SymbolInfoRequest.point:type_name -> symbols.v1.Point + 14, // 6: symbols.v1.SymbolInfoResponse.result:type_name -> symbols.v1.SymbolInfoResponse.DefinitionResult + 7, // 7: symbols.v1.LocalCodeIntelResponse.Symbol.def:type_name -> symbols.v1.Range + 7, // 8: symbols.v1.LocalCodeIntelResponse.Symbol.refs:type_name -> symbols.v1.Range + 6, // 9: symbols.v1.SymbolInfoResponse.Definition.repo_commit_path:type_name -> symbols.v1.RepoCommitPath + 7, // 10: symbols.v1.SymbolInfoResponse.Definition.range:type_name -> symbols.v1.Range + 13, // 11: symbols.v1.SymbolInfoResponse.DefinitionResult.definition:type_name -> symbols.v1.SymbolInfoResponse.Definition + 0, // 12: symbols.v1.SymbolsService.Search:input_type -> symbols.v1.SearchRequest + 2, // 13: symbols.v1.SymbolsService.LocalCodeIntel:input_type -> symbols.v1.LocalCodeIntelRequest + 4, // 14: symbols.v1.SymbolsService.SymbolInfo:input_type -> symbols.v1.SymbolInfoRequest + 9, // 15: symbols.v1.SymbolsService.Healthz:input_type -> symbols.v1.HealthzRequest + 1, // 16: symbols.v1.SymbolsService.Search:output_type -> symbols.v1.SearchResponse + 3, // 17: symbols.v1.SymbolsService.LocalCodeIntel:output_type -> symbols.v1.LocalCodeIntelResponse + 5, // 18: symbols.v1.SymbolsService.SymbolInfo:output_type -> symbols.v1.SymbolInfoResponse + 10, // 19: symbols.v1.SymbolsService.Healthz:output_type -> symbols.v1.HealthzResponse + 16, // [16:20] is the sub-list for method output_type + 12, // [12:16] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { file_symbols_proto_init() } @@ -1436,30 +1271,6 @@ func file_symbols_proto_init() { } } file_symbols_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListLanguagesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_symbols_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListLanguagesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_symbols_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SymbolInfoRequest); i { case 0: return &v.state @@ -1471,7 +1282,7 @@ func file_symbols_proto_init() { return nil } } - file_symbols_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_symbols_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SymbolInfoResponse); i { case 0: return &v.state @@ -1483,7 +1294,7 @@ func file_symbols_proto_init() { return nil } } - file_symbols_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_symbols_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RepoCommitPath); i { case 0: return &v.state @@ -1495,7 +1306,7 @@ func file_symbols_proto_init() { return nil } } - file_symbols_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_symbols_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Range); i { case 0: return &v.state @@ -1507,7 +1318,7 @@ func file_symbols_proto_init() { return nil } } - file_symbols_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_symbols_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Point); i { case 0: return &v.state @@ -1519,7 +1330,7 @@ func file_symbols_proto_init() { return nil } } - file_symbols_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_symbols_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HealthzRequest); i { case 0: return &v.state @@ -1531,7 +1342,7 @@ func file_symbols_proto_init() { return nil } } - file_symbols_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_symbols_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HealthzResponse); i { case 0: return &v.state @@ -1543,7 +1354,7 @@ func file_symbols_proto_init() { return nil } } - file_symbols_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_symbols_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchResponse_Symbol); i { case 0: return &v.state @@ -1555,7 +1366,7 @@ func file_symbols_proto_init() { return nil } } - file_symbols_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_symbols_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LocalCodeIntelResponse_Symbol); i { case 0: return &v.state @@ -1567,19 +1378,7 @@ func file_symbols_proto_init() { return nil } } - file_symbols_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListLanguagesResponse_GlobFilePatterns); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_symbols_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_symbols_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SymbolInfoResponse_Definition); i { case 0: return &v.state @@ -1591,7 +1390,7 @@ func file_symbols_proto_init() { return nil } } - file_symbols_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_symbols_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SymbolInfoResponse_DefinitionResult); i { case 0: return &v.state @@ -1605,16 +1404,16 @@ func file_symbols_proto_init() { } } file_symbols_proto_msgTypes[1].OneofWrappers = []interface{}{} - file_symbols_proto_msgTypes[7].OneofWrappers = []interface{}{} - file_symbols_proto_msgTypes[17].OneofWrappers = []interface{}{} - file_symbols_proto_msgTypes[18].OneofWrappers = []interface{}{} + file_symbols_proto_msgTypes[5].OneofWrappers = []interface{}{} + file_symbols_proto_msgTypes[13].OneofWrappers = []interface{}{} + file_symbols_proto_msgTypes[14].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_symbols_proto_rawDesc, NumEnums: 0, - NumMessages: 19, + NumMessages: 15, NumExtensions: 0, NumServices: 1, }, diff --git a/internal/symbols/v1/symbols.proto b/internal/symbols/v1/symbols.proto index 2d861b6801d7f..c521821223473 100644 --- a/internal/symbols/v1/symbols.proto +++ b/internal/symbols/v1/symbols.proto @@ -9,7 +9,6 @@ option go_package = "github.com/sourcegraph/sourcegraph/internal/symbols/v1"; service SymbolsService { rpc Search(SearchRequest) returns (SearchResponse) {} rpc LocalCodeIntel(LocalCodeIntelRequest) returns (stream LocalCodeIntelResponse) {} - rpc ListLanguages(ListLanguagesRequest) returns (ListLanguagesResponse) {} rpc SymbolInfo(SymbolInfoRequest) returns (SymbolInfoResponse) {} rpc Healthz(HealthzRequest) returns (HealthzResponse) {} } @@ -27,8 +26,8 @@ message SearchRequest { // is_reg_exp, if true, will treat the Pattern as a regular expression bool is_reg_exp = 4; - // is_case_sensitive, if false, will ignore the case of query and file pattern when - // finding matches + // is_case_sensitive, if false, will ignore the case of query and file pattern + // when finding matches bool is_case_sensitive = 5; // include_patterns is a list of regexes that symbol's file paths @@ -79,8 +78,8 @@ message SearchResponse { // signature is the signature of the symbol (TODO@ggilmore - what is this?) string signature = 9; - // file_limited indicates that the search ran into the limit set by "first" in the request, and so the result - // set may be incomplete. + // file_limited indicates that the search ran into the limit set by "first" + // in the request, and so the result set may be incomplete. bool file_limited = 10; } @@ -115,26 +114,9 @@ message LocalCodeIntelResponse { repeated Symbol symbols = 1; } -// ListLanguagesRequest is the request to the ListLanguages method. -message ListLanguagesRequest { - // All fields are empty. -} - -// ListLanguagesResponse is the response from the ListLanguages method. -message ListLanguagesResponse { - message GlobFilePatterns { - repeated string patterns = 1; - } - - // language_file_name_map is a of map of language names to - // glob patterns that match files of that language. - // - // Example: "Ruby" -> ["*.rb", "*.ruby"] - map language_file_name_map = 1; -} - message SymbolInfoRequest { - // repo_commit_path is the repo, commit, and path to the file to get symbol information for + // repo_commit_path is the repo, commit, and path to the file to get symbol + // information for RepoCommitPath repo_commit_path = 1; // point is the point in the file to get symbol information for @@ -144,7 +126,8 @@ message SymbolInfoRequest { // SymbolInfoResponse is the response from the SymbolInfo method. message SymbolInfoResponse { message Definition { - // repo_commit_path is the repository name, commit, and file path for the symbol's definition. + // repo_commit_path is the repository name, commit, and file path for the + // symbol's definition. RepoCommitPath repo_commit_path = 1; // range is the range of the symbol's definition, if it is known. @@ -152,15 +135,16 @@ message SymbolInfoResponse { } message DefinitionResult { - // definition is the information associated with the location of the symbol's definition. + // definition is the information associated with the location of the + // symbol's definition. Definition definition = 1; // hover is the hover text associated with the symbol optional string hover = 2; } - // result is the definition / hover information for the symbol at the given point in the file, - // if available. + // result is the definition / hover information for the symbol at the given + // point in the file, if available. optional DefinitionResult result = 1; } @@ -195,10 +179,14 @@ message Point { int32 column = 2; } -// TODO@ggilmore: Note - GRPC has its own healthchecking protocol that we should use instead of this. -// See https://github.com/grpc/grpc/blob/master/doc/health-checking.md for more information. +// TODO@ggilmore: Note - GRPC has its own healthchecking protocol that we should +// use instead of this. See +// https://github.com/grpc/grpc/blob/master/doc/health-checking.md for more +// information. message HealthzRequest {} -// TODO@ggilmore: Note - GRPC has its own healthchecking protocol that we should use instead of this. -// See https://github.com/grpc/grpc/blob/master/doc/health-checking.md for more information. +// TODO@ggilmore: Note - GRPC has its own healthchecking protocol that we should +// use instead of this. See +// https://github.com/grpc/grpc/blob/master/doc/health-checking.md for more +// information. message HealthzResponse {} diff --git a/internal/symbols/v1/symbols_grpc.pb.go b/internal/symbols/v1/symbols_grpc.pb.go index 4f0caa1006b73..146c2b4c7efbd 100644 --- a/internal/symbols/v1/symbols_grpc.pb.go +++ b/internal/symbols/v1/symbols_grpc.pb.go @@ -21,7 +21,6 @@ const _ = grpc.SupportPackageIsVersion7 const ( SymbolsService_Search_FullMethodName = "/symbols.v1.SymbolsService/Search" SymbolsService_LocalCodeIntel_FullMethodName = "/symbols.v1.SymbolsService/LocalCodeIntel" - SymbolsService_ListLanguages_FullMethodName = "/symbols.v1.SymbolsService/ListLanguages" SymbolsService_SymbolInfo_FullMethodName = "/symbols.v1.SymbolsService/SymbolInfo" SymbolsService_Healthz_FullMethodName = "/symbols.v1.SymbolsService/Healthz" ) @@ -32,7 +31,6 @@ const ( type SymbolsServiceClient interface { Search(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (*SearchResponse, error) LocalCodeIntel(ctx context.Context, in *LocalCodeIntelRequest, opts ...grpc.CallOption) (SymbolsService_LocalCodeIntelClient, error) - ListLanguages(ctx context.Context, in *ListLanguagesRequest, opts ...grpc.CallOption) (*ListLanguagesResponse, error) SymbolInfo(ctx context.Context, in *SymbolInfoRequest, opts ...grpc.CallOption) (*SymbolInfoResponse, error) Healthz(ctx context.Context, in *HealthzRequest, opts ...grpc.CallOption) (*HealthzResponse, error) } @@ -86,15 +84,6 @@ func (x *symbolsServiceLocalCodeIntelClient) Recv() (*LocalCodeIntelResponse, er return m, nil } -func (c *symbolsServiceClient) ListLanguages(ctx context.Context, in *ListLanguagesRequest, opts ...grpc.CallOption) (*ListLanguagesResponse, error) { - out := new(ListLanguagesResponse) - err := c.cc.Invoke(ctx, SymbolsService_ListLanguages_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *symbolsServiceClient) SymbolInfo(ctx context.Context, in *SymbolInfoRequest, opts ...grpc.CallOption) (*SymbolInfoResponse, error) { out := new(SymbolInfoResponse) err := c.cc.Invoke(ctx, SymbolsService_SymbolInfo_FullMethodName, in, out, opts...) @@ -119,7 +108,6 @@ func (c *symbolsServiceClient) Healthz(ctx context.Context, in *HealthzRequest, type SymbolsServiceServer interface { Search(context.Context, *SearchRequest) (*SearchResponse, error) LocalCodeIntel(*LocalCodeIntelRequest, SymbolsService_LocalCodeIntelServer) error - ListLanguages(context.Context, *ListLanguagesRequest) (*ListLanguagesResponse, error) SymbolInfo(context.Context, *SymbolInfoRequest) (*SymbolInfoResponse, error) Healthz(context.Context, *HealthzRequest) (*HealthzResponse, error) mustEmbedUnimplementedSymbolsServiceServer() @@ -135,9 +123,6 @@ func (UnimplementedSymbolsServiceServer) Search(context.Context, *SearchRequest) func (UnimplementedSymbolsServiceServer) LocalCodeIntel(*LocalCodeIntelRequest, SymbolsService_LocalCodeIntelServer) error { return status.Errorf(codes.Unimplemented, "method LocalCodeIntel not implemented") } -func (UnimplementedSymbolsServiceServer) ListLanguages(context.Context, *ListLanguagesRequest) (*ListLanguagesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListLanguages not implemented") -} func (UnimplementedSymbolsServiceServer) SymbolInfo(context.Context, *SymbolInfoRequest) (*SymbolInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SymbolInfo not implemented") } @@ -196,24 +181,6 @@ func (x *symbolsServiceLocalCodeIntelServer) Send(m *LocalCodeIntelResponse) err return x.ServerStream.SendMsg(m) } -func _SymbolsService_ListLanguages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListLanguagesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SymbolsServiceServer).ListLanguages(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: SymbolsService_ListLanguages_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SymbolsServiceServer).ListLanguages(ctx, req.(*ListLanguagesRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _SymbolsService_SymbolInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SymbolInfoRequest) if err := dec(in); err != nil { @@ -261,10 +228,6 @@ var SymbolsService_ServiceDesc = grpc.ServiceDesc{ MethodName: "Search", Handler: _SymbolsService_Search_Handler, }, - { - MethodName: "ListLanguages", - Handler: _SymbolsService_ListLanguages_Handler, - }, { MethodName: "SymbolInfo", Handler: _SymbolsService_SymbolInfo_Handler, From 6e921b6c0e99063412b78723103f4b06eec2e4a7 Mon Sep 17 00:00:00 2001 From: Jason Hawk Harris Date: Tue, 14 Nov 2023 16:05:28 -0600 Subject: [PATCH 014/222] Code Navigation: clean up prev next buttons (#58312) * clean up prev next buttons * remove superfluous percent symbols --- .../src/repo/blob/codemirror/search.module.scss | 10 ++++++++++ client/web/src/repo/blob/codemirror/search.tsx | 17 ++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 client/web/src/repo/blob/codemirror/search.module.scss diff --git a/client/web/src/repo/blob/codemirror/search.module.scss b/client/web/src/repo/blob/codemirror/search.module.scss new file mode 100644 index 0000000000000..d7c24375ce970 --- /dev/null +++ b/client/web/src/repo/blob/codemirror/search.module.scss @@ -0,0 +1,10 @@ +.bgroup-left { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.bgroup-right { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-left: none; +} diff --git a/client/web/src/repo/blob/codemirror/search.tsx b/client/web/src/repo/blob/codemirror/search.tsx index cbae9b4bed6b5..1b9744c9aa76a 100644 --- a/client/web/src/repo/blob/codemirror/search.tsx +++ b/client/web/src/repo/blob/codemirror/search.tsx @@ -30,7 +30,8 @@ import { ViewPlugin, type ViewUpdate, } from '@codemirror/view' -import { mdiChevronDown, mdiChevronUp, mdiFormatLetterCase, mdiInformationOutline, mdiRegex } from '@mdi/js' +import { mdiChevronLeft, mdiChevronRight, mdiFormatLetterCase, mdiInformationOutline, mdiRegex } from '@mdi/js' +import classNames from 'classnames' import { createRoot, type Root } from 'react-dom/client' import type { NavigateFunction } from 'react-router-dom' import { Subject, Subscription } from 'rxjs' @@ -48,6 +49,8 @@ import { createElement } from '../../../util/dom' import { CodeMirrorContainer } from './react-interop' +import styles from './search.module.scss' + const searchKeybinding = const platformKeycombo = shortcutDisplayName('Mod+F') @@ -224,9 +227,9 @@ class SearchPanel implements Panel { /> {totalMatches > 1 && ( - <> +

- +
)} {searchQuery.search ? ( From 3d6ad457bc54eb5c7d7f99b24c7af398d11a7f53 Mon Sep 17 00:00:00 2001 From: Michael Lin Date: Tue, 14 Nov 2023 14:37:48 -0800 Subject: [PATCH 015/222] doc: update cody on cloud instruction (#58314) --- doc/cody/overview/enable-cody-enterprise.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/cody/overview/enable-cody-enterprise.md b/doc/cody/overview/enable-cody-enterprise.md index 1b9047cac0145..7b1d7db5abb2c 100644 --- a/doc/cody/overview/enable-cody-enterprise.md +++ b/doc/cody/overview/enable-cody-enterprise.md @@ -168,7 +168,7 @@ You're all set to use Cody on your self-hosted Sourcegraph instance. You can lea ## Cody on Sourcegraph Cloud - With [Sourcegraph Cloud](../../cloud/index.md), you get Cody as a managed service, and you **do not** need to [enable Cody as is required for self-hosted setup](#enable-cody-on-your-sourcegraph-instance) -- However, by contacting your account manager, Cody can still be enabled on-demand on your Sourcegraph instance. The Sourcegraph team will refer to the [handbook](https://handbook.sourcegraph.com/departments/cloud/#managed-instance-requests) +- However, by contacting your account manager, Cody can still be enabled on-demand on your Sourcegraph instance. The Sourcegraph team will refer to the [handbook](https://golinks.io/cloud-requests-cody) - Next, you can configure the [VS Code extension](#configure-the-vs-code-extension) by following the same steps as mentioned for the self-hosted environment - After which, you are all set to use Cody with Sourcegraph Cloud From 879f497267862b09aa4cccade4fbb56521d24f80 Mon Sep 17 00:00:00 2001 From: Erik Seliger Date: Wed, 15 Nov 2023 01:55:23 +0100 Subject: [PATCH 016/222] Bump p4 cli version to 23.1 (#57832) --- wolfi-packages/p4cli.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wolfi-packages/p4cli.yaml b/wolfi-packages/p4cli.yaml index ebbc71cfe51ae..dc305051701e9 100644 --- a/wolfi-packages/p4cli.yaml +++ b/wolfi-packages/p4cli.yaml @@ -1,7 +1,7 @@ package: name: p4cli - version: 22.2 - epoch: 2 + version: 23.1 + epoch: 0 description: "Command line interface for Perforce" target-architecture: - x86_64 @@ -26,8 +26,8 @@ pipeline: - uses: fetch with: uri: https://cdist2.perforce.com/perforce/r${{package.version}}/bin.linux26x86_64/p4 - # Hash occasionally changes, available at https://filehost.perforce.com/perforce/r22.2/bin.linux26x86_64/SHA256SUMS (check version) - expected-sha256: 3dfa10fb0cca6e305037e1ec69df7f32cb4a04844bc8e0d662ebc562b470cf8b + # Hash occasionally changes, available at https://filehost.perforce.com/perforce/r23.1/bin.linux26x86_64/SHA256SUMS (check version) + expected-sha256: d63f0e38c6c6bce469ce584d64792ea06112ba7dfbe8bcdffd216c5b710421e8 extract: false - runs: | chmod +x p4 From 4ba7a9d0feabd3bc938f80b98325f395c94df5a3 Mon Sep 17 00:00:00 2001 From: Camden Cheek Date: Tue, 14 Nov 2023 18:56:26 -0600 Subject: [PATCH 017/222] File tree: get rid of single child logic (#58272) This removes the ability to collapse single-child directories. This feature has been pretty unstable and has been the source of quite a few bugs lately. Additionally, it's surprisingly expensive to implement, requiring fetching ton of extra data (the entire recursive git tree) from gitserver, which adds significant latency to interactions with the file tree. Between the complexity, bugginess, and fundamental perf issues, I don't think it's worth keeping around. Especially since it's pretty rare for directories to contain only a single subdirectory. --- client/shared/src/backend/repo.ts | 3 +- client/web-sveltekit/src/lib/repo/api/tree.ts | 4 +- .../src/integration/graphQlResponseHelpers.ts | 1 - client/web/src/integration/repository.test.ts | 1 - .../src/repo/RepoRevisionSidebarFileTree.tsx | 89 +------------------ client/web/src/repo/tree/TreePagePanels.tsx | 53 ++--------- 6 files changed, 14 insertions(+), 137 deletions(-) diff --git a/client/shared/src/backend/repo.ts b/client/shared/src/backend/repo.ts index 5934b0a1e3910..a0e380828c387 100644 --- a/client/shared/src/backend/repo.ts +++ b/client/shared/src/backend/repo.ts @@ -74,7 +74,7 @@ export const fetchTreeEntries = memoizeObservable( fragment TreeFields on GitTree { isRoot url - entries(first: $first, recursiveSingleChild: true) { + entries(first: $first) { ...TreeEntryFields } } @@ -87,7 +87,6 @@ export const fetchTreeEntries = memoizeObservable( url commit } - isSingleChild } `, variables: args, diff --git a/client/web-sveltekit/src/lib/repo/api/tree.ts b/client/web-sveltekit/src/lib/repo/api/tree.ts index ed5373819d54c..ade3c9d59f53e 100644 --- a/client/web-sveltekit/src/lib/repo/api/tree.ts +++ b/client/web-sveltekit/src/lib/repo/api/tree.ts @@ -40,8 +40,7 @@ const treeEntriesQuery = gql` submodule { commit } - isSingleChild - entries(first: $first, recursiveSingleChild: false) { + entries(first: $first) { canonicalURL name path @@ -49,7 +48,6 @@ const treeEntriesQuery = gql` submodule { commit } - isSingleChild } } } diff --git a/client/web/src/integration/graphQlResponseHelpers.ts b/client/web/src/integration/graphQlResponseHelpers.ts index 1a940e3eee59f..8faf3825a647e 100644 --- a/client/web/src/integration/graphQlResponseHelpers.ts +++ b/client/web/src/integration/graphQlResponseHelpers.ts @@ -25,7 +25,6 @@ export const createTreeEntriesResult = (url: string, toplevelFiles: string[]): T isDirectory: false, url: `${url}/-/blob/${name}`, submodule: null, - isSingleChild: false, })), }, }, diff --git a/client/web/src/integration/repository.test.ts b/client/web/src/integration/repository.test.ts index 7323a6f8bb5fc..1170f959a8778 100644 --- a/client/web/src/integration/repository.test.ts +++ b/client/web/src/integration/repository.test.ts @@ -497,7 +497,6 @@ describe('Repository', () => { isDirectory: false, url: '/github.com/ggilmore/q-test/-/blob/Geoffrey%27s%20random%20queries.32r242442bf/%25%20token.4288249258.sql', submodule: null, - isSingleChild: false, }, ], }, diff --git a/client/web/src/repo/RepoRevisionSidebarFileTree.tsx b/client/web/src/repo/RepoRevisionSidebarFileTree.tsx index 298c30528652d..34676b46cabbe 100644 --- a/client/web/src/repo/RepoRevisionSidebarFileTree.tsx +++ b/client/web/src/repo/RepoRevisionSidebarFileTree.tsx @@ -48,7 +48,7 @@ const QUERY = gql` tree(path: $filePath) { isRoot url - entries(first: $first, ancestors: $ancestors, recursiveSingleChild: true) { + entries(first: $first, ancestors: $ancestors) { name path isDirectory @@ -57,7 +57,6 @@ const QUERY = gql` url commit } - isSingleChild } } } @@ -486,11 +485,8 @@ type TreeNode = WildcardTreeNode & { entry: FileTreeEntry | null error: string | null dotdot: string | null - - // In case of a single child expansion, this is the path that should be used - // when finding the right parent - singleChildParentPath: string | null } + interface TreeData { // The flat nodes list used by react-accessible-treeview nodes: TreeNode[] @@ -524,23 +520,6 @@ function appendTreeData(tree: TreeData, entries: FileTreeEntry[], rootTreeUrl: s insertRootNode(tree, rootTreeUrl) } - // Bookkeeping for single child expansion: - // - // - `singleChildFolderPath`: This is a list of all folder names that are - // to be combined into the single child. This is needed to update the - // parent name properly. - // - `singleChildParentPathForPath`: When set, this tuple is used to find - // the parent for a single child substitution. - let singleChildFolderPath: string[] = [] - let singleChildParentPathForPath: - | null - | [ - // parent path to use for the next entries - string, - // entry parent path for which the substitution is valid - string - ] = null - let siblingCount = 0 for (let idx = 0; idx < entries.length; idx++) { const entry = entries[idx] @@ -556,61 +535,9 @@ function appendTreeData(tree: TreeData, entries: FileTreeEntry[], rootTreeUrl: s siblingCount = 0 } - // When entry.isSingleChild is true, it means that the entry is the only - // child of its parents. - // - // When we encounter such entries, we skip over them and instead update - // the respective parent when we finish the list. Since this child - // is already entered before, we need to update it. - // - // If we start the tree on a single child, we add the first entry to - // have a visible parent to append things to. - if (entry.isSingleChild && !(isNewTree && idx === 0)) { - if (singleChildParentPathForPath === null) { - singleChildParentPathForPath = [getParentPath(entry.path), entry.path] - } else { - singleChildParentPathForPath = [singleChildParentPathForPath[0], entry.path] - } - singleChildFolderPath.push(entry.name) - - // Store the path id in our lookup map and point to the single child - // parent (where this path name will be appended to) - const parentId = tree.pathToId.get(singleChildParentPathForPath[0]) - if (parentId) { - tree.pathToId.set(entry.path, parentId) - } - - // Single child entries are not rendered, so we're skipping over - // them. - continue - } - - // If we skipped over various single child entries, we need to find the - // parent and update it. - // - // This is only done for the first entry after a series of single child - // entries are skipped over. - if (singleChildFolderPath.length > 0 && singleChildParentPathForPath) { - const parentId = tree.pathToId.get(singleChildParentPathForPath[0]) - if (parentId) { - const parent = tree.nodes[parentId] - tree.nodes[parentId] = { - ...parent, - name: parent.name + '/' + singleChildFolderPath.join('/'), - entry: entries[idx - 1], - } - } - singleChildFolderPath = [] - } - - // Unset singleChildParentPathForPath when the parent path no longer matches - if (singleChildParentPathForPath !== null && singleChildParentPathForPath[1] !== getParentPath(entry.path)) { - singleChildParentPathForPath = null - } - const id = tree.nodes.length const node: TreeNode = { - name: singleChildFolderPath.length > 0 ? `${singleChildFolderPath.join('/')}/${entry.name}` : entry.name, + name: entry.name, id, isBranch: entry.isDirectory, parent: 0, @@ -619,7 +546,6 @@ function appendTreeData(tree: TreeData, entries: FileTreeEntry[], rootTreeUrl: s entry, error: null, dotdot: null, - singleChildParentPath: singleChildParentPathForPath ? singleChildParentPathForPath[0] : null, } appendNode(tree, node) @@ -648,7 +574,6 @@ function appendTreeData(tree: TreeData, entries: FileTreeEntry[], rootTreeUrl: s entry: null, error: errorMessage, dotdot: null, - singleChildParentPath: singleChildParentPathForPath ? singleChildParentPathForPath[0] : null, } appendNode(tree, node) } @@ -668,7 +593,6 @@ function insertRootNode(tree: TreeData, rootTreeUrl: string): void { entry: null, error: null, dotdot: null, - singleChildParentPath: null, } tree.nodes.push(root) tree.pathToId.set(tree.rootPath, 0) @@ -688,7 +612,6 @@ function insertRootNode(tree: TreeData, rootTreeUrl: string): void { entry: null, error: null, dotdot: dirname(rootTreeUrl), - singleChildParentPath: null, } appendNode(tree, node) } @@ -733,11 +656,7 @@ function nodeIsImmediateParentOf(nodeA: TreeNode, nodeB: TreeNode): boolean { if (nodeB.path === '') { return false } - let bParentPath = getParentPath(nodeB.path) - if (nodeB.singleChildParentPath !== null) { - bParentPath = nodeB.singleChildParentPath - } - return nodeA.path === bParentPath + return nodeA.path === getParentPath(nodeB.path) } function isImmediateParentOf(fullPathA: string, fullPathB: string): boolean { diff --git a/client/web/src/repo/tree/TreePagePanels.tsx b/client/web/src/repo/tree/TreePagePanels.tsx index b4ce755669d15..baeb54f0902ed 100644 --- a/client/web/src/repo/tree/TreePagePanels.tsx +++ b/client/web/src/repo/tree/TreePagePanels.tsx @@ -1,10 +1,10 @@ -import React, { type FC, useCallback, useRef, useState, useMemo, useEffect } from 'react' +import React, { type FC, useCallback, useRef, useState, useEffect } from 'react' import { mdiFileDocumentOutline, mdiFolderOutline, mdiMenuDown, mdiMenuUp } from '@mdi/js' import classNames from 'classnames' import { NoopEditor } from '@sourcegraph/cody-shared/dist/editor' -import { basename, dirname } from '@sourcegraph/common' +import { basename } from '@sourcegraph/common' import type { TreeFields } from '@sourcegraph/shared/src/graphql-operations' import { Card, @@ -122,49 +122,14 @@ export interface DiffStat { } export interface FilePanelProps { - entries: Pick[] + entries: Pick[] diffStats?: DiffStat[] className?: string filePath: string } export const FilesCard: FC = props => { - const { entries, diffStats, className, filePath } = props - - const entriesWithSingleChildExpanded = useMemo( - () => - entries.flatMap((entry, index) => { - // The GraphQL query with "recurse single child" will return entries - // that are not in the current directory. We filter them out for the - // view here. - let parentDir = dirname(entry.path) - if (parentDir === '.') { - parentDir = '' - } - if (parentDir !== filePath) { - return [] - } - - // Single child nodes may be expanded so we can skip over them more - // efficiently. - if (entry.isSingleChild) { - // Find the entry before the one that is no longer a single child - // and add this to the list of entries to render instead of the - // entry. - let idx - for (idx = index; idx < entries.length && entries[idx].isSingleChild; idx++) { - // Do nothing - } - if (idx > index && idx < entries.length && idx > 1) { - const lastSingleChild = entries[idx - 1] - return [lastSingleChild] - } - } - - return [entry] - }), - [entries, filePath] - ) + const { entries, diffStats, className } = props const [sortColumn, setSortColumn] = useState<{ column: 'Files' | 'Activity' @@ -182,17 +147,17 @@ export const FilesCard: FC = props => { } } - let sortedEntries = [...entriesWithSingleChildExpanded] + let sortedEntries = [...entries] const { column, direction } = sortColumn switch (column) { case 'Files': { if (direction === 'desc') { - sortedEntries.reverse() + entries.reverse() } break } case 'Activity': { - sortedEntries = [...entriesWithSingleChildExpanded] + sortedEntries = [...entries] if (diffStats) { sortedEntries.sort((entry1, entry2) => { const stats1: DiffStat = diffStatsByPath[entry1.name] @@ -344,9 +309,7 @@ export const FilesCard: FC = props => { // In case of single child expansion, we need to get the name relative to // the start of the directory (to include subdirectories) } - {entry.isSingleChild && filePath !== '' - ? entry.path.slice(filePath.length + 1) - : entry.name} + {entry.name} {entry.isDirectory && '/'} From f99600ed875e27cb764b04c8a7586207f508348c Mon Sep 17 00:00:00 2001 From: Camden Cheek Date: Tue, 14 Nov 2023 20:14:07 -0600 Subject: [PATCH 018/222] GraphQL: remove recursiveSingleChild option from backend (#58320) This removes the recursiveSingleChild logic from the tree resolver. All consumers of this field have been removed from the client already, and it's unlikely this would be something that customers would use (or even be able to use correctly) so I think it's safe to make what is technically a breaking change. --- cmd/frontend/graphqlbackend/git_tree.go | 40 +--------------- cmd/frontend/graphqlbackend/git_tree_test.go | 49 -------------------- cmd/frontend/graphqlbackend/schema.graphql | 14 +----- 3 files changed, 2 insertions(+), 101 deletions(-) diff --git a/cmd/frontend/graphqlbackend/git_tree.go b/cmd/frontend/graphqlbackend/git_tree.go index 2a697c1cfeedf..2c1c249e93231 100644 --- a/cmd/frontend/graphqlbackend/git_tree.go +++ b/cmd/frontend/graphqlbackend/git_tree.go @@ -22,16 +22,6 @@ func (r *GitTreeEntryResolver) IsRoot() bool { type gitTreeEntryConnectionArgs struct { graphqlutil.ConnectionArgs Recursive bool - // If recurseSingleChild is true, and the requested path only has a single child - // that is a directory, we recurse into that directory. - // Only respected when Recursive is false. - // Example: - // FS structure: - // /folder/subfolder/file - // Request for entries of /folder - // We don't return only /folder/subfolder, and instead also travserse into subfolder - // until we hit something with more than 1 child that's not a dir. - RecursiveSingleChild bool // If Ancestors is true and the tree is loaded from a subdirectory, we will // return a flat list of all entries in all parent directories. Ancestors bool @@ -57,14 +47,6 @@ func (r *GitTreeEntryResolver) entries(ctx context.Context, args *gitTreeEntryCo return nil, errors.Newf("invalid argument for first, must be non-negative") } - if args.Recursive && args.RecursiveSingleChild { - // No extra work needed, recursive includes all these. - args.RecursiveSingleChild = false - } - - // If RecursiveSingleChild is true, we also get all files recursively. Otherwise, we would - // have to do a readdir for every single directory to see if it has only one child (and nested) - // dirs, too. entries, err := r.gitserverClient.ReadDir(ctx, r.commit.repoResolver.RepoName(), api.CommitID(r.commit.OID()), r.Path(), args.Recursive) if err != nil { if strings.Contains(err.Error(), "file does not exist") { // TODO proper error value @@ -88,24 +70,6 @@ func (r *GitTreeEntryResolver) entries(ctx context.Context, args *gitTreeEntryCo entries = entries[len(strings.Split(strings.Trim(r.Path(), "/"), "/")):] } - if !args.Recursive && args.RecursiveSingleChild && len(entries) == 1 && entries[0].IsDir() { - opts := GitTreeEntryResolverOpts{ - Commit: r.Commit(), - Stat: entries[0], - } - r := NewGitTreeEntryResolver(r.db, r.gitserverClient, opts) - - subEntries, err := r.entries(ctx, &gitTreeEntryConnectionArgs{ - RecursiveSingleChild: true, - }, nil) - if err != nil { - return nil, err - } - for _, e := range subEntries { - entries = append(entries, e.stat) - } - } - maxResolvers := len(entries) if args.First != nil && int(*args.First) < maxResolvers { maxResolvers = int(*args.First) @@ -114,15 +78,13 @@ func (r *GitTreeEntryResolver) entries(ctx context.Context, args *gitTreeEntryCo sort.Sort(byDirectory(entries)) resolvers := make([]*GitTreeEntryResolver, 0, maxResolvers) - seen := 0 for _, entry := range entries { - if seen == maxResolvers { + if len(resolvers) >= maxResolvers { break } // Apply any additional filtering if filter == nil || filter(entry) { - seen++ opts := GitTreeEntryResolverOpts{ Commit: r.Commit(), Stat: entry, diff --git a/cmd/frontend/graphqlbackend/git_tree_test.go b/cmd/frontend/graphqlbackend/git_tree_test.go index c0ad6cea0d197..2a4890ffe7a10 100644 --- a/cmd/frontend/graphqlbackend/git_tree_test.go +++ b/cmd/frontend/graphqlbackend/git_tree_test.go @@ -370,55 +370,6 @@ func TestGitTree_Entries(t *testing.T) { }, entries) }) - t.Run("RecursiveSingleChild", func(t *testing.T) { - opts := GitTreeEntryResolverOpts{ - Commit: &GitCommitResolver{ - repoResolver: NewRepositoryResolver(db, gitserverClient, &types.Repo{Name: "my/repo"}), - }, - Stat: CreateFileInfo(".aspect/", true), - } - gitTree := NewGitTreeEntryResolver(db, gitserverClient, opts) - - entries, err := gitTree.Entries(context.Background(), &gitTreeEntryConnectionArgs{RecursiveSingleChild: true}) - require.NoError(t, err) - assertEntries(t, []fs.FileInfo{ - CreateFileInfo(".aspect/cli/", true), - CreateFileInfo(".aspect/rules/", true), - }, entries) - - opts = GitTreeEntryResolverOpts{ - Commit: &GitCommitResolver{ - repoResolver: NewRepositoryResolver(db, gitserverClient, &types.Repo{Name: "my/repo"}), - }, - Stat: CreateFileInfo(".aspect/rules/", true), - } - gitTree = NewGitTreeEntryResolver(db, gitserverClient, opts) - - entries, err = gitTree.Entries(context.Background(), &gitTreeEntryConnectionArgs{RecursiveSingleChild: true}) - require.NoError(t, err) - assertEntries(t, []fs.FileInfo{ - CreateFileInfo(".aspect/rules/external_repository_action_cache/", true), - CreateFileInfo(".aspect/rules/external_repository_action_cache/file", false), - }, entries) - - opts = GitTreeEntryResolverOpts{ - Commit: &GitCommitResolver{ - repoResolver: NewRepositoryResolver(db, gitserverClient, &types.Repo{Name: "my/repo"}), - }, - Stat: CreateFileInfo(wantPath, true), - } - gitTree = NewGitTreeEntryResolver(db, gitserverClient, opts) - - entries, err = gitTree.Entries(context.Background(), &gitTreeEntryConnectionArgs{RecursiveSingleChild: true}) - require.NoError(t, err) - assertEntries(t, []fs.FileInfo{ - CreateFileInfo(".aspect/", true), - CreateFileInfo("folder/", true), - CreateFileInfo("folder2/", true), - CreateFileInfo("file", false), - }, entries) - }) - t.Run("Ancestors", func(t *testing.T) { opts := GitTreeEntryResolverOpts{ Commit: &GitCommitResolver{ diff --git a/cmd/frontend/graphqlbackend/schema.graphql b/cmd/frontend/graphqlbackend/schema.graphql index 10b1e648aa289..1e35ee67bf4e6 100755 --- a/cmd/frontend/graphqlbackend/schema.graphql +++ b/cmd/frontend/graphqlbackend/schema.graphql @@ -5645,22 +5645,10 @@ type GitTree implements TreeEntry { """ first: Int """ - Recurse into sub-trees. If true, implies recursiveSingleChild. + Recurse into sub-trees. """ recursive: Boolean = false """ - If recurseSingleChild is true, and the requested path only has a single child - that is a directory, recurse into that directory. - Only respected when recursive is false. - Example: - FS structure: - /folder/subfolder/file - Request for entries of /folder: - Instead of returning just /folder/subfolder, this API also travserse into subfolder - until it hits something with more than 1 child that's not a dir. - """ - recursiveSingleChild: Boolean = false - """ Includes all parent directories and their entries. For example, if the path is `/client/web/something`, it will return the following entries in this order: From 928687d661baba4a09d107803607fea232309c97 Mon Sep 17 00:00:00 2001 From: Erik Seliger Date: Wed, 15 Nov 2023 03:27:14 +0100 Subject: [PATCH 019/222] Remove unused rateLimit on perforce connections (#58188) Perforce doesn't actually use any HTTP APIs so the regular rate limiting logic would never catch anything here. To avoid confusion, we've decided to remove it. If in the future we get requests for rate limiting, we can implement it again, but the on a gitserver level or so. --- CHANGELOG.md | 1 + internal/extsvc/types.go | 6 ------ schema/perforce.schema.json | 23 ----------------------- schema/schema.go | 10 ---------- 4 files changed, 1 insertion(+), 39 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 628f6758730d5..30f856de5c62c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ All notable changes to Sourcegraph are documented in this file. - The GitHub Proxy service is no longer required and has been removed from deployment options. [#55290](https://github.com/sourcegraph/sourcegraph/issues/55290) - The VSCode search extension "Sourcegraph for VS Code" has been sunset and removed from Sourcegraph repository. [#58023](https://github.com/sourcegraph/sourcegraph/pull/58023) +- The `rateLimit` configuration for Perforce code host connections has been removed to avoid confusion, it was unused. [#58188](https://github.com/sourcegraph/sourcegraph/pull/58188) - The feature flag `search-ranking` is now completely removed. [#58156](https://github.com/sourcegraph/sourcegraph/pull/58156) - The notepad UI, notebook creation feature. [#58217](https://github.com/sourcegraph/sourcegraph/pull/58217) diff --git a/internal/extsvc/types.go b/internal/extsvc/types.go index 8e84adfeb2b62..982bc3633800f 100644 --- a/internal/extsvc/types.go +++ b/internal/extsvc/types.go @@ -630,12 +630,6 @@ func GetLimitFromConfig(config any, kind string) (limit rate.Limit, isDefault bo isDefault = false limit = limitOrInf(c.RateLimit.Enabled, c.RateLimit.RequestsPerHour) } - case *schema.PerforceConnection: - limit = GetDefaultRateLimit(KindPerforce) - if c != nil && c.RateLimit != nil { - isDefault = false - limit = limitOrInf(c.RateLimit.Enabled, c.RateLimit.RequestsPerHour) - } case *schema.JVMPackagesConnection: limit = GetDefaultRateLimit(KindJVMPackages) if c != nil && c.Maven.RateLimit != nil { diff --git a/schema/perforce.schema.json b/schema/perforce.schema.json index dc9eff688f572..ecc3845e585f1 100644 --- a/schema/perforce.schema.json +++ b/schema/perforce.schema.json @@ -41,29 +41,6 @@ "default": 1000, "minimum": 1 }, - "rateLimit": { - "description": "Rate limit applied when making background API requests to Perforce.", - "title": "PerforceRateLimit", - "type": "object", - "required": ["enabled", "requestsPerHour"], - "properties": { - "enabled": { - "description": "true if rate limiting is enabled.", - "type": "boolean", - "default": true - }, - "requestsPerHour": { - "description": "Requests per hour permitted. This is an average, calculated per second. Internally, the burst limit is set to 100, which implies that for a requests per hour limit as low as 1, users will continue to be able to send a maximum of 100 requests immediately, provided that the complexity cost of each request is 1.", - "type": "number", - "default": 5000, - "minimum": 0 - } - }, - "default": { - "enabled": true, - "requestsPerHour": 5000 - } - }, "authorization": { "title": "PerforceAuthorization", "description": "If non-null, enforces Perforce depot permissions.", diff --git a/schema/schema.go b/schema/schema.go index 64670e314322d..de4699c6136be 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -1888,8 +1888,6 @@ type PerforceConnection struct { P4Port string `json:"p4.port"` // P4User description: The user to be authenticated for p4 CLI (P4USER). P4User string `json:"p4.user"` - // RateLimit description: Rate limit applied when making background API requests to Perforce. - RateLimit *PerforceRateLimit `json:"rateLimit,omitempty"` // RepositoryPathPattern description: The pattern used to generate the corresponding Sourcegraph repository name for a Perforce depot. In the pattern, the variable "{depot}" is replaced with the Perforce depot's path. // // For example, if your Perforce depot path is "//Sourcegraph/" and your Sourcegraph URL is https://src.example.com, then a repositoryPathPattern of "perforce/{depot}" would mean that the Perforce depot is available on Sourcegraph at https://src.example.com/perforce/Sourcegraph. @@ -1898,14 +1896,6 @@ type PerforceConnection struct { RepositoryPathPattern string `json:"repositoryPathPattern,omitempty"` } -// PerforceRateLimit description: Rate limit applied when making background API requests to Perforce. -type PerforceRateLimit struct { - // Enabled description: true if rate limiting is enabled. - Enabled bool `json:"enabled"` - // RequestsPerHour description: Requests per hour permitted. This is an average, calculated per second. Internally, the burst limit is set to 100, which implies that for a requests per hour limit as low as 1, users will continue to be able to send a maximum of 100 requests immediately, provided that the complexity cost of each request is 1. - RequestsPerHour float64 `json:"requestsPerHour"` -} - // PermissionsUserMapping description: Settings for Sourcegraph explicit permissions, which allow the site admin to explicitly manage repository permissions via the GraphQL API. This will mark repositories as restricted by default. type PermissionsUserMapping struct { // BindID description: The type of identifier to identify a user. The default is "email", which uses the email address to identify a user. Use "username" to identify a user by their username. Changing this setting will erase any permissions created for users that do not yet exist. From 47d275e6162d04a4319715259f21d7f17549a70c Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Tue, 14 Nov 2023 20:56:59 -0800 Subject: [PATCH 020/222] telemetry: allow env-var allowlisting of sensitive metadata export (#58317) --- .../sensitivemetadataallowlist/BUILD.bazel | 4 +- ...wlist.go => sensitivemetadataallowlist.go} | 37 +++++++++++++- .../sensitivemetadataallowlist_test.go | 50 +++++++++++++++++++ 3 files changed, 88 insertions(+), 3 deletions(-) rename internal/telemetry/sensitivemetadataallowlist/{sensitiviemetadataallowlist.go => sensitivemetadataallowlist.go} (67%) diff --git a/internal/telemetry/sensitivemetadataallowlist/BUILD.bazel b/internal/telemetry/sensitivemetadataallowlist/BUILD.bazel index 622aa6a46f3ef..eb4f99b3be336 100644 --- a/internal/telemetry/sensitivemetadataallowlist/BUILD.bazel +++ b/internal/telemetry/sensitivemetadataallowlist/BUILD.bazel @@ -5,12 +5,13 @@ go_library( name = "sensitivemetadataallowlist", srcs = [ "redact.go", - "sensitiviemetadataallowlist.go", + "sensitivemetadataallowlist.go", ], importpath = "github.com/sourcegraph/sourcegraph/internal/telemetry/sensitivemetadataallowlist", visibility = ["//:__subpackages__"], deps = [ "//cmd/frontend/envvar", + "//internal/env", "//internal/telemetry", "//internal/telemetrygateway/v1:telemetrygateway", "//lib/errors", @@ -28,6 +29,7 @@ go_test( "//internal/telemetry", "//internal/telemetrygateway/v1:telemetrygateway", "//lib/pointers", + "@com_github_hexops_autogold_v2//:autogold", "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//require", "@org_golang_google_protobuf//types/known/structpb", diff --git a/internal/telemetry/sensitivemetadataallowlist/sensitiviemetadataallowlist.go b/internal/telemetry/sensitivemetadataallowlist/sensitivemetadataallowlist.go similarity index 67% rename from internal/telemetry/sensitivemetadataallowlist/sensitiviemetadataallowlist.go rename to internal/telemetry/sensitivemetadataallowlist/sensitivemetadataallowlist.go index 6df601b2c09bf..6ae345fb0a039 100644 --- a/internal/telemetry/sensitivemetadataallowlist/sensitiviemetadataallowlist.go +++ b/internal/telemetry/sensitivemetadataallowlist/sensitivemetadataallowlist.go @@ -2,24 +2,36 @@ package sensitivemetadataallowlist import ( "fmt" + "strings" "github.com/sourcegraph/sourcegraph/cmd/frontend/envvar" "github.com/sourcegraph/sourcegraph/lib/errors" + "github.com/sourcegraph/sourcegraph/internal/env" "github.com/sourcegraph/sourcegraph/internal/telemetry" telemetrygatewayv1 "github.com/sourcegraph/sourcegraph/internal/telemetrygateway/v1" ) +var rawAdditionalAllowedEventTypes = env.Get("SRC_TELEMETRY_SENSITIVEMETADATA_ADDITIONAL_ALLOWED_EVENT_TYPES", "", + "Additional event types to include in sensitivemetadataallowlist.AllowedEventTypes, in comma-separated '${feature}::${action}' format.") +var additionalAllowedEventTypes = func() []EventType { + types, err := parseAdditionalAllowedEventTypes(rawAdditionalAllowedEventTypes) + if err != nil { + panic(err) + } + return types +}() + // AllowedEventTypes denotes a list of all events allowed to export sensitive // telemetry metadata. func AllowedEventTypes() EventTypes { - return eventTypes( + return eventTypes(append(additionalAllowedEventTypes, // Example event for testing. EventType{ Feature: string(telemetry.FeatureExample), Action: string(telemetry.ActionExample), }, - ) + )...) } type EventTypes struct { @@ -85,3 +97,24 @@ func init() { panic(errors.Wrap(err, "AllowedEvents has invalid event(s)")) } } + +func parseAdditionalAllowedEventTypes(config string) ([]EventType, error) { + if len(config) == 0 { + return nil, nil + } + + var types []EventType + for _, rawType := range strings.Split(config, ",") { + parts := strings.SplitN(rawType, "::", 2) + if len(parts) != 2 { + return nil, errors.Newf( + "cannot parse SRC_TELEMETRY_SENSITIVEMETADATA_ADDITIONAL_ALLOWED_EVENT_TYPES value %q", + rawType) + } + types = append(types, EventType{ + Feature: parts[0], + Action: parts[1], + }) + } + return types, nil +} diff --git a/internal/telemetry/sensitivemetadataallowlist/sensitivemetadataallowlist_test.go b/internal/telemetry/sensitivemetadataallowlist/sensitivemetadataallowlist_test.go index b38340aa81276..83ffdaf00e751 100644 --- a/internal/telemetry/sensitivemetadataallowlist/sensitivemetadataallowlist_test.go +++ b/internal/telemetry/sensitivemetadataallowlist/sensitivemetadataallowlist_test.go @@ -3,6 +3,7 @@ package sensitivemetadataallowlist import ( "testing" + "github.com/hexops/autogold/v2" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -22,3 +23,52 @@ func TestIsAllowed(t *testing.T) { Action: "disallowedAction", })) } + +func TestParseAdditionalAllowedEventTypes(t *testing.T) { + for _, tc := range []struct { + name string + config string + + expect autogold.Value + expectError autogold.Value + }{ + { + name: "invalid", + config: "asdf,foobar", + expectError: autogold.Expect(`cannot parse SRC_TELEMETRY_SENSITIVEMETADATA_ADDITIONAL_ALLOWED_EVENT_TYPES value "asdf"`), + }, + { + name: "1 type", + config: "foo::bar", + expect: autogold.Expect([]EventType{{ + Feature: "foo", + Action: "bar", + }}), + }, + { + name: "multiple types", + config: "foo::bar,baz.bar::bar.baz", + expect: autogold.Expect([]EventType{ + { + Feature: "foo", + Action: "bar", + }, + { + Feature: "baz.bar", + Action: "bar.baz", + }, + }), + }, + } { + t.Run(tc.name, func(t *testing.T) { + got, err := parseAdditionalAllowedEventTypes(tc.config) + if tc.expectError != nil { + require.Error(t, err) + tc.expectError.Equal(t, err.Error()) + } else { + assert.NoError(t, err) + tc.expect.Equal(t, got) + } + }) + } +} From 704449488fa1e059f8fe4a135cd6c0e5e5657ec4 Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Tue, 14 Nov 2023 20:57:22 -0800 Subject: [PATCH 021/222] doc: add notes that new telemetry docs only apply to some events (#58316) In 5.2.1, we've rolled out a new telemetry export framework and associated docs, but not all events use it yet - this change adds disclaimers that the new content does not apply to a lot of existing events. Migrations are being tracked by the analytics team. In most cases, there isn't an equivalent reference for the existing events, particularly Cody extension events, so I haven't added any links. There's a discussion about this in [this thread](https://sourcegraph.slack.com/archives/C04MSD3DP5L/p1699627360154729). I also made a few misc updates to other sections to hopefully improve the wording and clarity a bit. --- doc/admin/telemetry/index.md | 3 ++ .../telemetry/architecture.md | 2 ++ .../background-information/telemetry/index.md | 33 +++++++++++++++---- .../telemetry/protocol.md | 2 ++ .../telemetrygateway/v1/protoc-gen-doc.tmpl | 2 ++ 5 files changed, 36 insertions(+), 6 deletions(-) diff --git a/doc/admin/telemetry/index.md b/doc/admin/telemetry/index.md index fd693957a51af..fc93c2f5fa516 100644 --- a/doc/admin/telemetry/index.md +++ b/doc/admin/telemetry/index.md @@ -12,6 +12,9 @@ If you have any questions about telemetry collection, please reach out to your S Sourcegraph 5.2.1+ +> WARNING: This section refers to a new system for collecting telemetry introduced in Sourcegraph 5.2.1, and only applies to telemetry that has been migrated to use this new system. +> Certain Sourcegraph components - namely [Cody editor extensions](../../cody/index.md) - will continue to use a legacy mechanism for reporting telemetry directly to Sourcegraph.com until the migration is complete. + Sourcegraph instances 5.2.1 and later collect telemetry events to understand usage patterns and help improve the product. Telemetry events can be generated when certain user actions occur, like opening files or performing searches. This data helps us provide the highest level of support to Sourcegraph's customers. Sensitive data/PII exfiltration, intentional or not, is a significant concern to Sourcegraph that we take very seriously. diff --git a/doc/dev/background-information/telemetry/architecture.md b/doc/dev/background-information/telemetry/architecture.md index d5498f3851bb4..a6223fba872cb 100644 --- a/doc/dev/background-information/telemetry/architecture.md +++ b/doc/dev/background-information/telemetry/architecture.md @@ -10,6 +10,8 @@ In the [lifecycle of an event](./index.md#event-lifecycle), events are first [st See [testing events](./index.md#testing-events) for a summary of how to observe your events during development. +> WARNING: This page primarily pertains to the new telemetry system introduced in Sourcegraph 5.2.1 - refer to [DEPRECATED: Telemetry](deprecated.md) for the legacy system which may still be in use if a callsite has not been migrated yet. + ## Storing events Once [recorded](./index.md#recording-events), telemetry events are stored in two places: diff --git a/doc/dev/background-information/telemetry/index.md b/doc/dev/background-information/telemetry/index.md index efb0d16ad5813..5c182c5c93d30 100644 --- a/doc/dev/background-information/telemetry/index.md +++ b/doc/dev/background-information/telemetry/index.md @@ -12,6 +12,8 @@ There are currently two ways to log product telemetry: All usages of old telemetry mechanisms should be migrated to the new framework. +> WARNING: This page primarily pertains to the new system introduced in Sourcegraph 5.2.1 - refer to [DEPRECATED: Telemetry](deprecated.md) for the legacy system which may still be in use if a callsite has not been migrated yet. + - [Why a new framework and APIs?](#why-a-new-framework-and-apis) - [Event lifecycle](#event-lifecycle) - [Recording events](#recording-events) @@ -28,7 +30,7 @@ All usages of old telemetry mechanisms should be migrated to the new framework. The new telemetry framework and API aims to address the following issues: -- The existing `event_logs` parameters are arbitrarily shaped - to provide stronger guarantees against accidentally exporting sensitive data, the new APIs enforce stricter requirements - see [recording events](#recording-events) for more details. +- The existing `event_logs` parameters are arbitrarily shaped - to provide stronger guarantees against accidentally exporting sensitive data, the new APIs enforce stricter requirements, such as numeric metadata - see [recording events](#recording-events) for more details. - The shape of existing `event_logs` have grown organically over time without a clear structured schema. Callsites must construct full events on their own, and we cannot easily prune event objects of potentially [sensitive attributes](#sensitive-attributes) before export. @@ -49,22 +51,42 @@ See [telemetry export architecture](./architecture.md) for more details. ## Recording events -Note that recording APIs are intentionally stricter and have a smaller surface area than [the full events we end up exporting](#exported-event-schema). -This is to help prevent accidental export of sensitive data, and to make it clear what properties should be injected in a uniform manner instead of being constructed ad-hoc by callers - see [event lifecycle](#event-lifecycle) for details. +Recording events can be done via recording APIs available on each of the platforms documented below: + +- [Clients](#clients): web app, extensions, etc. +- [Backend services](#backend-services) + +Note that: + +- Recording APIs are intentionally stricter and have a smaller surface area than [the full events we end up exporting](#exported-event-schema). This make it clear what properties should be injected in a uniform manner serverside instead of being constructed ad-hoc by callers - see [event lifecycle](#event-lifecycle) for details. +- Metadata that gets exported by default only accepts numeric values. This offers a guard against accidentally exporting sensitive data. Arbitrarily shaped metadata can be collected, but not exported, via the `additionalMetadata` parameter - see [sensitive attributes](#sensitive-attributes). +- An escape hatch to export arbitrarily shaped metadata is available via an instance-side allowlist - see [sensitive attributes](#sensitive-attributes). ### Clients Clients (web apps, extensions, etc) should use [`@sourcegraph/telemetry`](https://github.com/sourcegraph/telemetry), providing client-specific metadata and implementation for exporting to a Sourcegraph instance's `mutation { telemetry { recordEvent(...) }}` GraphQL mutation. [sourcegraph/cody#1192](https://github.com/sourcegraph/cody/pull/1192) is a pull request demonstrating how to integrate `@sourcegraph/telemetry` into a client by extending specific classes and providing backing implementations for various interfaces. -#### VS Code +#### Cody extensions + +##### VS Code Event-recording development documentation for the VS Code extension is available in [`sourcegraph/cody/vscode/CONTRIBUTING.md`'s "Telemetry events" section](https://github.com/sourcegraph/cody/blob/main/vscode/CONTRIBUTING.md#telemetry-events). -#### Sourcegraph web app +##### Cody Agent > WARNING: Not yet available, coming soon! +#### Sourcegraph web app + +A shared event recorder for web app components is available in the platform context type, under `(PlatformContext).telemetryRecorder`: + +```ts +import type { PlatformContext } from '@sourcegraph/shared/src/platform/context' +``` + +In the web app, if a component has `PlatformContext` available, the `telemetryRecorder` instance can be used directly - otherwise, it can be prop-drilled in from the closest parent component with `PlatformContext` available. + ### Backend services In the backend, events are recorded using `EventRecorder` instances created from the `internal/telemetry/telemetryrecorder` package. For example: @@ -134,7 +156,6 @@ There are two core attributes in events that are considered potentially sensitiv - Certain events may be allowlisted to have this field exported - this is defined in [`internal/telemetry/sensitiviemetadataallowlist`](https://github.com/sourcegraph/sourcegraph/blob/main/internal/telemetry/sensitivemetadataallowlist/sensitiviemetadataallowlist.go). Adding events to this list requires review and approval from Legal. - `marketingTracking`: this field tracks a lot of properties around URLs visited and marketing tracking that may contain sensitive data. This is only exported from the [Sourcegraph.com](https://sourcegraph.com/search) instance. - ## Testing events In summary, when adding your events in the new telemetry framework, you can verify events are being recorded by: diff --git a/doc/dev/background-information/telemetry/protocol.md b/doc/dev/background-information/telemetry/protocol.md index b4a1e1f0c5870..876fbc70655b6 100644 --- a/doc/dev/background-information/telemetry/protocol.md +++ b/doc/dev/background-information/telemetry/protocol.md @@ -8,6 +8,8 @@ This page contains generated documentation for telemetry event data that gets exported to Sourcegraph from individual Sourcegraph instances. +> WARNING: This page primarily pertains to the new telemetry system introduced in Sourcegraph 5.2.1 - refer to [DEPRECATED: Telemetry](deprecated.md) for the legacy system which may still be in use if a callsite has not been migrated yet. + ## Table of Contents - [telemetrygateway/v1/telemetrygateway.proto](#telemetrygateway_v1_telemetrygateway-proto) diff --git a/internal/telemetrygateway/v1/protoc-gen-doc.tmpl b/internal/telemetrygateway/v1/protoc-gen-doc.tmpl index a06dedda0a3cb..aa7e7ec026822 100644 --- a/internal/telemetrygateway/v1/protoc-gen-doc.tmpl +++ b/internal/telemetrygateway/v1/protoc-gen-doc.tmpl @@ -8,6 +8,8 @@ This page contains generated documentation for telemetry event data that gets exported to Sourcegraph from individual Sourcegraph instances. +> WARNING: This page primarily pertains to the new telemetry system introduced in Sourcegraph 5.2.1 - refer to [DEPRECATED: Telemetry](deprecated.md) for the legacy system which may still be in use if a callsite has not been migrated yet. + ## Table of Contents {{range .Files}} {{$file_name := .Name}}- [{{.Name}}](#{{.Name | anchor}}) From 725f9aaac997d543899801a433253c0c04fc207e Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Wed, 15 Nov 2023 13:22:29 +0800 Subject: [PATCH 022/222] client: Centralize ref panel logic for Location grouping & uniquing (#58183) This way, we can document invariants and add assertions in a central places. --- .../src/codeintel/ReferencesPanel.mocks.ts | 18 +- client/web/src/codeintel/ReferencesPanel.tsx | 163 ++++++-------- client/web/src/codeintel/location.ts | 202 ++++++++++++++---- client/web/src/codeintel/useCodeIntel.ts | 10 +- .../src/enterprise/codeintel/useCodeIntel.ts | 67 ++---- 5 files changed, 258 insertions(+), 202 deletions(-) diff --git a/client/web/src/codeintel/ReferencesPanel.mocks.ts b/client/web/src/codeintel/ReferencesPanel.mocks.ts index 3526a38e01ff6..4cafe19c9db8c 100644 --- a/client/web/src/codeintel/ReferencesPanel.mocks.ts +++ b/client/web/src/codeintel/ReferencesPanel.mocks.ts @@ -19,7 +19,7 @@ import { type ResolveRepoAndRevisionVariables, } from '../graphql-operations' -import { buildPreciseLocation } from './location' +import { buildPreciseLocation, LocationsGroup } from './location' import type { ReferencesPanelProps } from './ReferencesPanel' import { USE_PRECISE_CODE_INTEL_FOR_POSITION_QUERY, @@ -701,10 +701,10 @@ export const defaultProps: ReferencesPanelProps = { useCodeIntel: ({ variables }: UseCodeIntelParameters): UseCodeIntelResult => { const [result, setResult] = useState({ data: { - implementations: { endCursor: '', nodes: [] }, - prototypes: { endCursor: '', nodes: [] }, - references: { endCursor: '', nodes: [] }, - definitions: { endCursor: '', nodes: [] }, + implementations: { endCursor: '', nodes: LocationsGroup.empty }, + prototypes: { endCursor: '', nodes: LocationsGroup.empty }, + references: { endCursor: '', nodes: LocationsGroup.empty }, + definitions: { endCursor: '', nodes: LocationsGroup.empty }, }, loading: true, referencesHasNextPage: false, @@ -737,20 +737,20 @@ export const defaultProps: ReferencesPanelProps = { data: { implementations: { endCursor: lsif.implementations.pageInfo.endCursor, - nodes: lsif.implementations.nodes.map(buildPreciseLocation), + nodes: new LocationsGroup(lsif.implementations.nodes.map(buildPreciseLocation)), }, prototypes: { endCursor: lsif.prototypes.pageInfo.endCursor, - nodes: lsif.prototypes.nodes.map(buildPreciseLocation), + nodes: new LocationsGroup(lsif.prototypes.nodes.map(buildPreciseLocation)), }, references: { endCursor: lsif.references.pageInfo.endCursor, - nodes: lsif.references.nodes.map(buildPreciseLocation), + nodes: new LocationsGroup(lsif.references.nodes.map(buildPreciseLocation)), }, definitions: { endCursor: lsif.definitions.pageInfo.endCursor, - nodes: lsif.definitions.nodes.map(buildPreciseLocation), + nodes: new LocationsGroup(lsif.definitions.nodes.map(buildPreciseLocation)), }, }, })) diff --git a/client/web/src/codeintel/ReferencesPanel.tsx b/client/web/src/codeintel/ReferencesPanel.tsx index 33905dc22c239..1c0fa76e52a8f 100644 --- a/client/web/src/codeintel/ReferencesPanel.tsx +++ b/client/web/src/codeintel/ReferencesPanel.tsx @@ -3,7 +3,7 @@ import React, { type MouseEvent, useCallback, useEffect, useLayoutEffect, useMem import { mdiArrowCollapseRight, mdiChevronDown, mdiChevronRight, mdiFilterOutline, mdiOpenInNew } from '@mdi/js' import classNames from 'classnames' import type * as H from 'history' -import { capitalize, uniqBy } from 'lodash' +import { capitalize } from 'lodash' import { useNavigate, useLocation } from 'react-router-dom' import { type Observable, of } from 'rxjs' import { map } from 'rxjs/operators' @@ -60,13 +60,7 @@ import type { HoverThresholdProps } from '../repo/RepoContainer' import { parseBrowserRepoURL } from '../util/url' import type { CodeIntelligenceProps } from '.' -import { - type Location, - type LocationGroup, - locationGroupQuality, - buildRepoLocationGroups, - type RepoLocationGroup, -} from './location' +import { type Location, LocationsGroup, type LocationsGroupedByRepo, type LocationsGroupedByFile } from './location' import { FETCH_HIGHLIGHTED_BLOB } from './ReferencesPanelQueries' import { newSettingsGetter } from './settings' import { findSearchToken } from './token' @@ -281,8 +275,6 @@ const SearchTokenFindingReferencesList: React.FunctionComponent< const SHOW_SPINNER_DELAY_MS = 100 -const empty: any[] = [] - const ReferencesList: React.FunctionComponent< React.PropsWithChildren< ReferencesPanelPropsWithToken & { @@ -352,10 +344,10 @@ const ReferencesList: React.FunctionComponent< // Make sure this effect only runs once }, [loading]) - const references = data?.references.nodes ?? empty - const definitions = data?.definitions.nodes ?? empty - const implementations = data?.implementations.nodes ?? empty - const prototypes = data?.prototypes.nodes ?? empty + const references = data?.references.nodes ?? LocationsGroup.empty + const definitions = data?.definitions.nodes ?? LocationsGroup.empty + const implementations = data?.implementations.nodes ?? LocationsGroup.empty + const prototypes = data?.prototypes.nodes ?? LocationsGroup.empty // The "active URL" is the URL of the highlighted line number in SideBlob, // which also influences which item gets highlighted inside @@ -396,10 +388,13 @@ const ReferencesList: React.FunctionComponent< // definitions) we select the first definition. We set it as activeLocation // and push it to the blobMemoryHistory so the code blob is open. useEffect(() => { - if (props.jumpToFirst && definitions.length > 0) { - setActiveLocation(definitions[0]) + if (props.jumpToFirst) { + const firstDef = definitions.first + if (firstDef) { + setActiveLocation(firstDef) + } } - }, [setActiveLocation, props.jumpToFirst, definitions, setActiveURL]) + }, [setActiveLocation, props.jumpToFirst, definitions.first, setActiveURL]) const onBlobNav = (url: string): void => { // Store the URL that the user promoted even if no definition/reference @@ -462,7 +457,7 @@ const ReferencesList: React.FunctionComponent< void @@ -594,12 +589,12 @@ const CollapsibleLocationList: React.FunctionComponent< React.PropsWithChildren > = props => { const isOpen = props.isOpen(props.name) ?? true - const quantityLabel = useMemo(() => { - const repoNumber = uniqBy(props.locations, 'repo').length - return `(${props.locations.length} ${pluralize('item', props.locations.length)}${ - repoNumber > 1 ? ` from ${repoNumber} repositories` : '' - } displayed${props.hasMore ? ', more available' : ''})` - }, [props.locations, props.hasMore]) + + const repoCount = props.locationsGroup.repoCount + const locationsCount = props.locationsGroup.locationsCount + const quantityLabel = `(${locationsCount} ${pluralize('item', locationsCount)}${ + repoCount > 1 ? ` from ${repoCount} repositories` : '' + } displayed${props.hasMore ? ', more available' : ''})` return ( props.handleOpenChange(props.name, isOpen)}> @@ -624,19 +619,25 @@ const CollapsibleLocationList: React.FunctionComponent< - {props.locations.length > 0 ? ( - props.handleOpenChange(props.name + id, isOpen)} - isOpen={id => props.isOpen(props.name + id)} - fetchHighlightedFileLineRanges={props.fetchHighlightedFileLineRanges} - /> + {locationsCount > 0 ? ( + <> + {props.locationsGroup.map((locations, index) => ( + props.handleOpenChange(props.name + id, isOpen)} + isOpen={id => props.isOpen(props.name + id)} + fetchHighlightedFileLineRanges={props.fetchHighlightedFileLineRanges} + /> + ))} + ) : ( {props.filter ? ( @@ -772,53 +773,7 @@ const SideBlob: React.FunctionComponent> ) } -interface LocationsListProps - extends ActiveLocationProps, - CollapseProps, - SearchTokenProps, - HighlightedFileLineRangesProps { - locations: Location[] - filter: string | undefined - navigateToUrl: (url: string) => void - activeURL: string -} - -const LocationsList: React.FunctionComponent> = ({ - locations, - isActiveLocation, - setActiveLocation, - filter, - navigateToUrl, - handleOpenChange, - isOpen, - searchToken, - fetchHighlightedFileLineRanges, - activeURL, -}) => { - const repoLocationGroups = useMemo(() => buildRepoLocationGroups(locations), [locations]) - - return ( - <> - {repoLocationGroups.map((group, index) => ( - - ))} - - ) -} - +/** Component to display the Locations for a single repo */ const CollapsibleRepoLocationGroup: React.FunctionComponent< React.PropsWithChildren< ActiveLocationProps & @@ -827,13 +782,13 @@ const CollapsibleRepoLocationGroup: React.FunctionComponent< HighlightedFileLineRangesProps & { filter: string | undefined navigateToUrl: (url: string) => void - repoLocationGroup: RepoLocationGroup + locations: LocationsGroupedByRepo openByDefault: boolean activeURL: string } > > = ({ - repoLocationGroup, + locations, isActiveLocation, setActiveLocation, navigateToUrl, @@ -845,38 +800,40 @@ const CollapsibleRepoLocationGroup: React.FunctionComponent< fetchHighlightedFileLineRanges, activeURL, }) => { - const open = isOpen(repoLocationGroup.repoName) ?? openByDefault + const repoName = locations.repoName + const open = isOpen(repoName) ?? openByDefault return ( - handleOpenChange(repoLocationGroup.repoName, isOpen)}> + handleOpenChange(repoName, isOpen)}>
- - {repoLocationGroup.referenceGroups.map(group => ( + + {locations.perFileGroups.map(group => ( handleOpenChange(repoLocationGroup.repoName + id, isOpen)} - isOpen={id => isOpen(repoLocationGroup.repoName + id)} + handleOpenChange={(id, isOpen) => handleOpenChange(repoName + id, isOpen)} + isOpen={id => isOpen(repoName + id)} navigateToUrl={navigateToUrl} fetchHighlightedFileLineRanges={fetchHighlightedFileLineRanges} /> @@ -893,13 +850,15 @@ const CollapsibleLocationGroup: React.FunctionComponent< CollapseProps & SearchTokenProps & HighlightedFileLineRangesProps & { - group: LocationGroup + repoName: string + group: LocationsGroupedByFile filter: string | undefined navigateToUrl: (url: string) => void activeURL: string } > > = ({ + repoName, group, setActiveLocation, isActiveLocation, @@ -1007,12 +966,12 @@ const CollapsibleLocationGroup: React.FunctionComponent< - {locationGroupQuality(group)} + {group.quality} - +
    {group.locations.map((reference, index) => { diff --git a/client/web/src/codeintel/location.ts b/client/web/src/codeintel/location.ts index 155f81a4b1444..aee990e0811ec 100644 --- a/client/web/src/codeintel/location.ts +++ b/client/web/src/codeintel/location.ts @@ -15,27 +15,178 @@ export interface Location { precise: boolean } -export interface RepoLocationGroup { +export interface LocationsGroupedByRepo { + /** Invariant: `repoName` matches the 'repo' key in all Locations in `perFileGroups` */ repoName: string - referenceGroups: LocationGroup[] + /** Invariant: This array is non-empty */ + perFileGroups: LocationsGroupedByFile[] } -export interface LocationGroup { - repoName: string - path: string - locations: Location[] +export type LocationGroupQuality = 'PRECISE' | 'SEARCH-BASED' + +export class LocationsGroupedByFile { + /** Invariant: `path` matches the 'file' key in all Locations in `locations` */ + public readonly path: string + /** Invariant: `precise` matches the 'precise' key in all Locations in `locations` */ + private readonly precise: boolean + /** Invariant: This array is non-empty */ + public readonly locations: Location[] + + /** + * Pre-condition: `locations` should be non-empty, and every entry + * should have the same value for 'file'. + */ + constructor(locations: Location[]) { + if (locations.length === 0) { + throw new Error('pre-condition failure') + } + this.path = locations[0].file + const out = LocationsGroupedByFile.preferPrecise(locations) + this.locations = out.locs + this.precise = out.precise + } + + /** + * Aggregate information about whether provided locations are search-based + * or precise. + * + * If one attempts to mix them, precise locations will be preferred, and + * search-based locations will be discarded. + */ + private static preferPrecise(locations: Location[]): { locs: Location[]; precise: boolean } { + const path: string = locations[0].file + let precise: boolean = locations[0].precise + let finalLocations: Location[] = [locations[0]] + for (const [i, loc] of locations.entries()) { + if (i === 0) { + continue + } + if (loc.file !== path) { + throw new Error('pre-condition failure') + } + if (precise && !loc.precise) { + continue + } + if (!precise && loc.precise) { + precise = true + finalLocations = [loc] + continue + } + if (loc.precise !== precise) { + throw new Error('already handled precise same-ness check earlier') + } + finalLocations.push(loc) + } + return { locs: finalLocations, precise } + } + + public get quality(): LocationGroupQuality { + return this.precise ? 'PRECISE' : 'SEARCH-BASED' + } } -export type LocationGroupQuality = 'PRECISE' | 'SEARCH-BASED' +/** + * Type to store locations grouped by (repo, file) pairs. + * + * This type is specialized for use in the reference panel code. + * So if a given (repo, file) pair contains both search-based Locations + * and precise Locations, the search-based Locations are discarded. + */ +export class LocationsGroup { + /** + * The total number of locations combined across all groups. + * + * This may be less than the number of Locations passed to the constructor, + * in case there are mixed search-based and precise Locations, + * or if there are duplicates. + */ + public readonly locationsCount: number + /** Invariant: Every Location stored in the group has a distinct URL. */ + private readonly groups: LocationsGroupedByRepo[] + + constructor(locations: Location[]) { + let locationsCount = 0 + const groups: LocationsGroupedByRepo[] = [] + + const urlsSeen = new Set() + const repoMap = new Map>() + for (const loc of locations) { + if (urlsSeen.has(loc.url)) { + continue + } + urlsSeen.add(loc.url) + let pathToLocMap = repoMap.get(loc.repo) + if (!pathToLocMap) { + pathToLocMap = new Map() + repoMap.set(loc.repo, pathToLocMap) + } + const fileLocs = pathToLocMap.get(loc.file) + if (fileLocs) { + fileLocs.push(loc) + } else { + pathToLocMap.set(loc.file, [loc]) + } + } + for (const [repoName, pathToLocMap] of repoMap) { + const perFileLocations: LocationsGroupedByFile[] = [] + for (const [path, locations] of pathToLocMap) { + if (locations.length === 0) { + throw new Error( + `bug in grouping logic created empty locations array for repo: ${repoName}, path: ${path}` + ) + } + const g = new LocationsGroupedByFile(locations) + if (g.locations.length > locations.length) { + throw new Error('materialized new locations out of thin air') + } + locationsCount += g.locations.length + perFileLocations.push(g) + } + groups.push({ repoName, perFileGroups: perFileLocations }) + } + + this.locationsCount = locationsCount + this.groups = groups + } -export const locationGroupQuality = (group: LocationGroup): LocationGroupQuality => { - if (group.locations.length === 0) { - throw new Error(`No locations in ${group.path}`) + public get first(): Location | undefined { + if (this.locationsCount > 0) { + return this.groups[0].perFileGroups[0].locations[0] + } + return undefined + } + + public get repoCount(): number { + return this.groups.length + } + + public map(callback: (arg0: LocationsGroupedByRepo, arg1: number) => T): T[] { + return this.groups.map(callback) } - // Since we don't mix precise & search-based in a single file, we know that in a - // single group all locations are either search-based or precise. - return group.locations[0].precise ? 'PRECISE' : 'SEARCH-BASED' + public static empty: LocationsGroup = new LocationsGroup([]) + + /** + * Attempt to combine the existing locations with the new set + * into a new LocationsGroup. + * + * Some of the Locations in `newLocations` may be dropped if they + * are search-based and we already had precise references for the + * same file. + */ + public combine(newLocations: Location[]): LocationsGroup { + return new LocationsGroup([...this.allLocations(), ...newLocations]) + } + + private allLocations(): Location[] { + const out: Location[] = [] + for (const group of this.groups) { + for (const locs of group.perFileGroups) { + out.push(...locs.locations) + } + } + return out + } } export const buildSearchBasedLocation = (node: Result): Location => ({ @@ -67,28 +218,3 @@ export const buildPreciseLocation = (node: LocationFields): Location => { location.lines = location.content.split(/\r?\n/) return location } - -export const buildRepoLocationGroups = (locations: Location[]): RepoLocationGroup[] => { - const byRepoAndFile: Record> = {} - for (const location of locations) { - if (byRepoAndFile[location.repo] === undefined) { - byRepoAndFile[location.repo] = {} - } - if (byRepoAndFile[location.repo][location.file] === undefined) { - byRepoAndFile[location.repo][location.file] = [] - } - byRepoAndFile[location.repo][location.file].push(location) - } - - return Object.keys(byRepoAndFile).map(repoName => { - const byFile = byRepoAndFile[repoName] - - const referenceGroups: LocationGroup[] = Object.keys(byFile).map(path => ({ - path, - locations: byFile[path], - repoName, - })) - - return { repoName, referenceGroups } - }) -} diff --git a/client/web/src/codeintel/useCodeIntel.ts b/client/web/src/codeintel/useCodeIntel.ts index 470fdae9dd410..f7c35bfff7afb 100644 --- a/client/web/src/codeintel/useCodeIntel.ts +++ b/client/web/src/codeintel/useCodeIntel.ts @@ -4,25 +4,25 @@ import type { LanguageSpec } from '@sourcegraph/shared/src/codeintel/legacy-exte import type { ConnectionQueryArguments } from '../components/FilteredConnection' import type { UsePreciseCodeIntelForPositionVariables } from '../graphql-operations' -import type { Location } from './location' +import type { LocationsGroup } from './location' import type { SettingsGetter } from './settings' export interface CodeIntelData { references: { endCursor: string | null - nodes: Location[] + nodes: LocationsGroup } implementations: { endCursor: string | null - nodes: Location[] + nodes: LocationsGroup } prototypes: { endCursor: string | null - nodes: Location[] + nodes: LocationsGroup } definitions: { endCursor: string | null - nodes: Location[] + nodes: LocationsGroup } } diff --git a/client/web/src/enterprise/codeintel/useCodeIntel.ts b/client/web/src/enterprise/codeintel/useCodeIntel.ts index f60ad3128daa0..7d7548dedde47 100644 --- a/client/web/src/enterprise/codeintel/useCodeIntel.ts +++ b/client/web/src/enterprise/codeintel/useCodeIntel.ts @@ -4,7 +4,7 @@ import type { QueryResult } from '@apollo/client' import { dataOrThrowErrors, useLazyQuery, useQuery } from '@sourcegraph/http-client' -import { type Location, buildPreciseLocation } from '../../codeintel/location' +import { type Location, buildPreciseLocation, LocationsGroup } from '../../codeintel/location' import { LOAD_ADDITIONAL_IMPLEMENTATIONS_QUERY, LOAD_ADDITIONAL_PROTOTYPES_QUERY, @@ -27,11 +27,11 @@ import type { import { useSearchBasedCodeIntel } from './useSearchBasedCodeIntel' -const EMPTY_CODE_INTEL_DATA = { - implementations: { endCursor: null, nodes: [] }, - prototypes: { endCursor: null, nodes: [] }, - definitions: { endCursor: null, nodes: [] }, - references: { endCursor: null, nodes: [] }, +const EMPTY_CODE_INTEL_DATA: CodeIntelData = { + implementations: { endCursor: null, nodes: LocationsGroup.empty }, + prototypes: { endCursor: null, nodes: LocationsGroup.empty }, + definitions: { endCursor: null, nodes: LocationsGroup.empty }, + references: { endCursor: null, nodes: LocationsGroup.empty }, } export const useCodeIntel = ({ @@ -53,7 +53,7 @@ export const useCodeIntel = ({ ...(previousData || EMPTY_CODE_INTEL_DATA), references: { endCursor: null, - nodes: references, + nodes: new LocationsGroup(references), }, })) } @@ -62,21 +62,11 @@ export const useCodeIntel = ({ setCodeIntelData(previousData => { const previous = previousData || EMPTY_CODE_INTEL_DATA - const lsifFiles = new Set(previous.references.nodes.map(location => location.file)) - - // Filter out any search results that occur in the same file as LSIF results. These - // results are definitely incorrect and will pollute the ordering of precise and fuzzy - // results in the references pane. - const searchResults = searchBasedReferences.filter(location => !lsifFiles.has(location.file)) - if (searchResults.length === 0) { - return previous - } - return { ...previous, references: { endCursor: previous.references.endCursor, - nodes: [...previous.references.nodes, ...searchResults], + nodes: previous.references.nodes.combine(searchBasedReferences), }, } }) @@ -87,7 +77,7 @@ export const useCodeIntel = ({ ...(previousData || EMPTY_CODE_INTEL_DATA), definitions: { endCursor: null, - nodes: definitions, + nodes: new LocationsGroup(definitions), }, })) } @@ -154,7 +144,7 @@ export const useCodeIntel = ({ // When no definitions are found, the hover tooltip falls back to a search based // search, regardless of the mixPreciseAndSearchBasedReferences setting. - if (lsifData.definitions.nodes.length === 0) { + if (lsifData.definitions.nodes.locationsCount === 0) { fetchSearchBasedDefinitions(setDefinitions) } } else { @@ -186,10 +176,7 @@ export const useCodeIntel = ({ definitions: previousData.definitions, references: { endCursor: newReferenceData.pageInfo.endCursor, - nodes: dedupeLocations([ - ...previousData.references.nodes, - ...newReferenceData.nodes.map(buildPreciseLocation), - ]), + nodes: previousData.references.nodes.combine(newReferenceData.nodes.map(buildPreciseLocation)), }, }) @@ -220,10 +207,7 @@ export const useCodeIntel = ({ implementations: previousData.implementations, prototypes: { endCursor: newPrototypesData.pageInfo.endCursor, - nodes: dedupeLocations([ - ...previousData.prototypes.nodes, - ...newPrototypesData.nodes.map(buildPreciseLocation), - ]), + nodes: previousData.prototypes.nodes.combine(newPrototypesData.nodes.map(buildPreciseLocation)), }, }) }, @@ -249,10 +233,9 @@ export const useCodeIntel = ({ prototypes: previousData.prototypes, implementations: { endCursor: newImplementationsData.pageInfo.endCursor, - nodes: dedupeLocations([ - ...previousData.implementations.nodes, - ...newImplementationsData.nodes.map(buildPreciseLocation), - ]), + nodes: previousData.implementations.nodes.combine( + newImplementationsData.nodes.map(buildPreciseLocation) + ), }, }) }, @@ -342,31 +325,19 @@ const getLsifData = ({ return { implementations: { endCursor: lsif.implementations.pageInfo.endCursor, - nodes: dedupeLocations(lsif.implementations.nodes).map(buildPreciseLocation), + nodes: new LocationsGroup(lsif.implementations.nodes.map(buildPreciseLocation)), }, prototypes: { endCursor: lsif.prototypes.pageInfo.endCursor, - nodes: dedupeLocations(lsif.prototypes.nodes).map(buildPreciseLocation), + nodes: new LocationsGroup(lsif.prototypes.nodes.map(buildPreciseLocation)), }, references: { endCursor: lsif.references.pageInfo.endCursor, - nodes: dedupeLocations(lsif.references.nodes).map(buildPreciseLocation), + nodes: new LocationsGroup(lsif.references.nodes.map(buildPreciseLocation)), }, definitions: { endCursor: lsif.definitions.pageInfo.endCursor, - nodes: lsif.definitions.nodes.map(buildPreciseLocation), + nodes: new LocationsGroup(lsif.definitions.nodes.map(buildPreciseLocation)), }, } } - -const dedupeLocations = (locations: L[]): L[] => { - const deduped = [] - const seenURLs = new Set() - for (const location of locations) { - if (!seenURLs.has(location.url)) { - deduped.push(location) - seenURLs.add(location.url) - } - } - return deduped -} From ace2f28348eb8927aecc13e0b5ca12a86dcea111 Mon Sep 17 00:00:00 2001 From: Naman Kumar Date: Wed, 15 Nov 2023 11:59:34 +0530 Subject: [PATCH 023/222] [Cody] fix cody install event typo (#58324) --- cmd/frontend/graphqlbackend/user_usage_stats.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/frontend/graphqlbackend/user_usage_stats.go b/cmd/frontend/graphqlbackend/user_usage_stats.go index ac3d237bea769..9b84533cf99dc 100644 --- a/cmd/frontend/graphqlbackend/user_usage_stats.go +++ b/cmd/frontend/graphqlbackend/user_usage_stats.go @@ -165,7 +165,7 @@ func (r *schemaResolver) LogEvents(ctx context.Context, args *EventBatch) (*Empt ide := getIdeFromEvent(&args) - if ide == "vscode" { + if strings.ToLower(ide) == "vscode" { if ffs := featureflag.FromContext(ctx); ffs != nil { emailsEnabled = ffs.GetBoolOr("vscodeCodyEmailsEnabled", false) } From d6147e670b6ec070b807fab00a382b7955bcf163 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Wed, 15 Nov 2023 09:14:41 +0000 Subject: [PATCH 024/222] bazel: fix vitest_test in Bazel in sandbox mode (#58274) Co-authored-by: Jean-Hadrien Chabran --- client/branded/BUILD.bazel | 1 + client/browser/BUILD.bazel | 1 + client/shared/BUILD.bazel | 1 + client/web/BUILD.bazel | 1 + .../CreateCodeMonitorPage.test.tsx | 4 +- .../components/FormTriggerArea.test.tsx | 4 +- client/web/vitest.config.ts | 1 + client/wildcard/BUILD.bazel | 1 + dev/defs.bzl | 4 +- package.json | 2 +- pnpm-lock.yaml | 133 ++++++++---------- vitest.shared.ts | 17 ++- 12 files changed, 90 insertions(+), 80 deletions(-) diff --git a/client/branded/BUILD.bazel b/client/branded/BUILD.bazel index 92672052ddfff..78cf130345611 100644 --- a/client/branded/BUILD.bazel +++ b/client/branded/BUILD.bazel @@ -279,6 +279,7 @@ vitest_test( timeout = "long", data = [ ":branded_tests", + ":module_styles", ":snapshots", ], ) diff --git a/client/browser/BUILD.bazel b/client/browser/BUILD.bazel index 635297bfd794c..e82df65f0ed2b 100644 --- a/client/browser/BUILD.bazel +++ b/client/browser/BUILD.bazel @@ -342,6 +342,7 @@ vitest_test( timeout = "moderate", data = [ ":browser_tests", + ":module_styles", ":snapshots", ], ) diff --git a/client/shared/BUILD.bazel b/client/shared/BUILD.bazel index f41c3fa1eef27..7f2b3069681e3 100644 --- a/client/shared/BUILD.bazel +++ b/client/shared/BUILD.bazel @@ -519,6 +519,7 @@ filegroup( vitest_test( name = "test", data = [ + ":module_styles", ":shared_tests", ":snapshots", ], diff --git a/client/web/BUILD.bazel b/client/web/BUILD.bazel index 6872d43940349..a0ca3178ea976 100644 --- a/client/web/BUILD.bazel +++ b/client/web/BUILD.bazel @@ -2070,6 +2070,7 @@ vitest_test( size = "enormous", # make sure bazel reserves enough RAM for this. timeout = "moderate", data = [ + ":module_styles", ":snapshots", ":web_tests", ], diff --git a/client/web/src/enterprise/code-monitoring/CreateCodeMonitorPage.test.tsx b/client/web/src/enterprise/code-monitoring/CreateCodeMonitorPage.test.tsx index a55de78f5fbc4..0d32eac9ef72d 100644 --- a/client/web/src/enterprise/code-monitoring/CreateCodeMonitorPage.test.tsx +++ b/client/web/src/enterprise/code-monitoring/CreateCodeMonitorPage.test.tsx @@ -15,7 +15,9 @@ import type { CreateCodeMonitorVariables } from '../../graphql-operations' import { CreateCodeMonitorPage } from './CreateCodeMonitorPage' import { mockCodeMonitor } from './testing/util' -describe('CreateCodeMonitorPage', () => { +// TODO: these tests trigger an error with CodeMirror, complaining about being +// loaded twice, see https://github.com/uiwjs/react-codemirror/issues/506 +describe.skip('CreateCodeMonitorPage', () => { const mockUser = { id: 'userID', username: 'username', diff --git a/client/web/src/enterprise/code-monitoring/components/FormTriggerArea.test.tsx b/client/web/src/enterprise/code-monitoring/components/FormTriggerArea.test.tsx index 50d75938e5116..3c5bdc15c6f7d 100644 --- a/client/web/src/enterprise/code-monitoring/components/FormTriggerArea.test.tsx +++ b/client/web/src/enterprise/code-monitoring/components/FormTriggerArea.test.tsx @@ -8,7 +8,9 @@ import { renderWithBrandedContext } from '@sourcegraph/wildcard/src/testing' import { FormTriggerArea } from './FormTriggerArea' -describe('FormTriggerArea', () => { +// TODO: these tests trigger an error with CodeMirror, complaining about being +// loaded twice, see https://github.com/uiwjs/react-codemirror/issues/506 +describe.skip('FormTriggerArea', () => { let clock: sinon.SinonFakeTimers beforeAll(() => { diff --git a/client/web/vitest.config.ts b/client/web/vitest.config.ts index a63483899d231..8bb22e887a236 100644 --- a/client/web/vitest.config.ts +++ b/client/web/vitest.config.ts @@ -6,6 +6,7 @@ export default defineProjectWithDefaults(__dirname, { environmentMatchGlobs: [ ['src/enterprise/code-monitoring/ManageCodeMonitorPage.test.tsx', 'jsdom'], // needs window.confirm, Request ['src/enterprise/code-monitoring/CreateCodeMonitorPage.test.tsx', 'jsdom'], // 'Error: Should not already be working.' + ['src/enterprise/code-monitoring/components/FormTriggerArea.test.tsx', 'jsdom'], // 'Error: Should not already be working.' ['src/hooks/useScrollManager/useScrollManager.test.tsx', 'jsdom'], // for correct scroll counting ['src/components/KeyboardShortcutsHelp/KeyboardShortcutsHelp.test.tsx', 'jsdom'], // event.getModifierState ], diff --git a/client/wildcard/BUILD.bazel b/client/wildcard/BUILD.bazel index 75589b5bd516c..2f78cf769a144 100644 --- a/client/wildcard/BUILD.bazel +++ b/client/wildcard/BUILD.bazel @@ -585,6 +585,7 @@ filegroup( vitest_test( name = "test", data = [ + ":module_styles", ":snapshots", ":wildcard_tests", ], diff --git a/dev/defs.bzl b/dev/defs.bzl index 62cdedbc0d2f0..4c77a7dfe95fa 100644 --- a/dev/defs.bzl +++ b/dev/defs.bzl @@ -153,8 +153,8 @@ def vitest_test(name, data = [], **kwargs): "//:node_modules/jsdom", ], env = {"BAZEL": "1", "CI": "1"}, - patch_node_fs = False, - tags = kwargs.pop("tags", []) + ["no-sandbox"], + patch_node_fs = True, + tags = kwargs.pop("tags", []), timeout = kwargs.pop("timeout", "short"), **kwargs ) diff --git a/package.json b/package.json index 951b226572c26..fa6dc8d63d589 100644 --- a/package.json +++ b/package.json @@ -261,7 +261,7 @@ "utc-version": "^2.0.2", "vite": "^4.1.4", "vite-plugin-turbosnap": "^1.0.3", - "vitest": "^0.34.6", + "vitest": "1.0.0-beta.4", "vitest-fetch-mock": "^0.2.2", "vsce": "^2.7.0", "wildcard-mock-link": "^2.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 03da40822d9c4..2d3c0326424ac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -598,7 +598,7 @@ importers: version: 8.13.0 '@testing-library/jest-dom': specifier: ^6.1.4 - version: 6.1.4(vitest@0.34.6) + version: 6.1.4(vitest@1.0.0-beta.4) '@testing-library/react-hooks': specifier: ^8.0.0 version: 8.0.0(@types/react@18.0.8)(react-dom@18.1.0)(react@18.1.0) @@ -1038,11 +1038,11 @@ importers: specifier: ^1.0.3 version: 1.0.3 vitest: - specifier: ^0.34.6 - version: 0.34.6(happy-dom@12.10.1)(jsdom@22.1.0)(sass@1.32.4) + specifier: 1.0.0-beta.4 + version: 1.0.0-beta.4(@types/node@20.8.0)(happy-dom@12.10.1)(jsdom@22.1.0)(sass@1.32.4) vitest-fetch-mock: specifier: ^0.2.2 - version: 0.2.2(vitest@0.34.6) + version: 0.2.2(vitest@1.0.0-beta.4) vsce: specifier: ^2.7.0 version: 2.7.0 @@ -8429,7 +8429,7 @@ packages: '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.1.1)(vite@4.4.7) dedent: 1.5.1 fs-extra: 11.1.1 - magic-string: 0.30.4 + magic-string: 0.30.5 svelte: 4.1.1 vite: 4.4.7(@types/node@20.8.0)(sass@1.32.4) transitivePeerDependencies: @@ -8761,7 +8761,7 @@ packages: express: 4.18.2 find-cache-dir: 3.3.2 fs-extra: 11.1.1 - magic-string: 0.30.4 + magic-string: 0.30.5 remark-external-links: 8.0.0 remark-slug: 6.1.0 rollup: 3.26.3 @@ -8802,7 +8802,7 @@ packages: express: 4.18.2 find-cache-dir: 3.3.2 fs-extra: 11.1.1 - magic-string: 0.30.4 + magic-string: 0.30.5 remark-external-links: 8.0.0 remark-slug: 6.1.0 rollup: 3.26.3 @@ -9547,7 +9547,7 @@ packages: '@storybook/react': 7.4.6(react-dom@18.1.0)(react@18.1.0)(typescript@5.2.2) '@vitejs/plugin-react': 3.1.0(vite@4.4.7) ast-types: 0.14.2 - magic-string: 0.30.4 + magic-string: 0.30.5 react: 18.1.0 react-docgen: 6.0.0-alpha.3 react-dom: 18.1.0(react@18.1.0) @@ -9666,7 +9666,7 @@ packages: '@storybook/node-logger': 7.2.0 '@storybook/svelte': 7.2.0(svelte@4.1.1) '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.1.1)(vite@4.4.7) - magic-string: 0.30.4 + magic-string: 0.30.5 svelte: 4.1.1 sveltedoc-parser: 4.2.1 ts-dedent: 2.2.0 @@ -9852,7 +9852,7 @@ packages: devalue: 4.3.2 esm-env: 1.0.0 kleur: 4.1.5 - magic-string: 0.30.4 + magic-string: 0.30.5 mime: 3.0.0 sade: 1.8.1 set-cookie-parser: 2.6.0 @@ -9891,7 +9891,7 @@ packages: debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.4 + magic-string: 0.30.5 svelte: 4.1.1 svelte-hmr: 0.15.2(svelte@4.1.1) vite: 4.4.7(@types/node@20.8.0)(sass@1.32.4) @@ -10043,7 +10043,7 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/jest-dom@6.1.4(vitest@0.34.6): + /@testing-library/jest-dom@6.1.4(vitest@1.0.0-beta.4): resolution: {integrity: sha512-wpoYrCYwSZ5/AxcrjLxJmCU6I5QAJXslEeSiMQqaWmP2Kzpd1LvF/qxmAIW2qposULGWq2gw30GgVNFLSc2Jnw==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} peerDependencies: @@ -10069,7 +10069,7 @@ packages: dom-accessibility-api: 0.5.13 lodash: 4.17.21 redent: 3.0.0 - vitest: 0.34.6(happy-dom@12.10.1)(jsdom@22.1.0)(sass@1.32.4) + vitest: 1.0.0-beta.4(@types/node@20.8.0)(happy-dom@12.10.1)(jsdom@22.1.0)(sass@1.32.4) dev: true /@testing-library/react-hooks@8.0.0(@types/react@18.0.8)(react-dom@18.1.0)(react@18.1.0): @@ -11473,11 +11473,11 @@ packages: chai: 4.3.10 dev: true - /@vitest/expect@0.34.6: - resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} + /@vitest/expect@1.0.0-beta.4: + resolution: {integrity: sha512-JOpNEva2AFxfySH3F+X+hT52Kq/ZdIrGtzWYbj6yRuBuxFqM55n/7/jV4XtQG+XkmehP3OUZGx5zISOU8KHPQw==} dependencies: - '@vitest/spy': 0.34.6 - '@vitest/utils': 0.34.6 + '@vitest/spy': 1.0.0-beta.4 + '@vitest/utils': 1.0.0-beta.4 chai: 4.3.10 dev: true @@ -11489,10 +11489,10 @@ packages: pathe: 1.1.1 dev: true - /@vitest/runner@0.34.6: - resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} + /@vitest/runner@1.0.0-beta.4: + resolution: {integrity: sha512-rlXCMp5MxMVVVN5hdhzPL9NpIkfZC0EXwAtN5gwBbCBoVRv9dBQiZ5qTw+LaNmugPl8gm76U4e4/nMZS9s6wyw==} dependencies: - '@vitest/utils': 0.34.6 + '@vitest/utils': 1.0.0-beta.4 p-limit: 4.0.0 pathe: 1.1.1 dev: true @@ -11500,15 +11500,15 @@ packages: /@vitest/snapshot@0.33.0: resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==} dependencies: - magic-string: 0.30.4 + magic-string: 0.30.5 pathe: 1.1.1 pretty-format: 29.7.0 dev: true - /@vitest/snapshot@0.34.6: - resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} + /@vitest/snapshot@1.0.0-beta.4: + resolution: {integrity: sha512-CzmHLGo4RNEQUojYtuEz8wWKp9/p3hvXskejRRJB1iCRH48uWROmoyb2iEQUhgpQw/+WwI4wRP7jek5lp48pRA==} dependencies: - magic-string: 0.30.4 + magic-string: 0.30.5 pathe: 1.1.1 pretty-format: 29.7.0 dev: true @@ -11516,28 +11516,28 @@ packages: /@vitest/spy@0.33.0: resolution: {integrity: sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==} dependencies: - tinyspy: 2.1.1 + tinyspy: 2.2.0 dev: true - /@vitest/spy@0.34.6: - resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} + /@vitest/spy@1.0.0-beta.4: + resolution: {integrity: sha512-YvKUUl7KucKzLJb8+RTd8H3G24EVPGk+CVMFawwtD/KuYjBzM8RCh3oJTTba6ktLpB8JLVy8NVTNL4Oeigqs8A==} dependencies: - tinyspy: 2.1.1 + tinyspy: 2.2.0 dev: true /@vitest/utils@0.33.0: resolution: {integrity: sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==} dependencies: diff-sequences: 29.6.3 - loupe: 2.3.6 + loupe: 2.3.7 pretty-format: 29.7.0 dev: true - /@vitest/utils@0.34.6: - resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} + /@vitest/utils@1.0.0-beta.4: + resolution: {integrity: sha512-YY4bhhVqyTxuNwuZJXiCM4/D0Z7Z3H3JDHNM8gXty7EyRUf4iPDQtXzIWe1r4zdTtoFnzFAeMr+891pWlv4SPA==} dependencies: diff-sequences: 29.6.3 - loupe: 2.3.6 + loupe: 2.3.7 pretty-format: 29.7.0 dev: true @@ -12788,7 +12788,7 @@ packages: check-error: 1.0.3 deep-eql: 4.1.3 get-func-name: 2.0.2 - loupe: 2.3.6 + loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.0.8 dev: true @@ -18404,8 +18404,8 @@ packages: signal-exit: 3.0.7 dev: true - /loupe@2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: get-func-name: 2.0.2 dev: true @@ -18493,8 +18493,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magic-string@0.30.4: - resolution: {integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==} + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -23414,7 +23414,7 @@ packages: estree-walker: 3.0.3 is-reference: 3.0.2 locate-character: 3.0.0 - magic-string: 0.30.4 + magic-string: 0.30.5 periscopic: 3.1.0 /sveltedoc-parser@4.2.1: @@ -23669,13 +23669,13 @@ packages: engines: {node: '>=14.0.0'} dev: true - /tinypool@0.7.0: - resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} + /tinypool@0.8.1: + resolution: {integrity: sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==} engines: {node: '>=14.0.0'} dev: true - /tinyspy@2.1.1: - resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==} + /tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} engines: {node: '>=14.0.0'} dev: true @@ -23793,7 +23793,6 @@ packages: /trim@0.0.1: resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==} - deprecated: Use String.prototype.trim() instead dev: true /ts-api-utils@1.0.3(typescript@5.2.2): @@ -24557,9 +24556,9 @@ packages: - terser dev: true - /vite-node@0.34.6(@types/node@20.8.0)(sass@1.32.4): - resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} - engines: {node: '>=v14.18.0'} + /vite-node@1.0.0-beta.4(@types/node@20.8.0)(sass@1.32.4): + resolution: {integrity: sha512-YODjVvHd2Jih+TGMG3B99ktSyvET9w2cMevorAjcuQ3KKiPhDxEf2bRia2KsDHfnUGIfSpwoUdbcDdJ5xR7epg==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: cac: 6.7.14 @@ -24666,14 +24665,14 @@ packages: vite: 4.4.7(@types/node@20.8.0)(sass@1.32.4) dev: true - /vitest-fetch-mock@0.2.2(vitest@0.34.6): + /vitest-fetch-mock@0.2.2(vitest@1.0.0-beta.4): resolution: {integrity: sha512-XmH6QgTSjCWrqXoPREIdbj40T7i1xnGmAsTAgfckoO75W1IEHKR8hcPCQ7SO16RsdW1t85oUm6pcQRLeBgjVYQ==} engines: {node: '>=14.14.0'} peerDependencies: vitest: '>=0.16.0' dependencies: cross-fetch: 3.1.6 - vitest: 0.34.6(happy-dom@12.10.1)(jsdom@22.1.0)(sass@1.32.4) + vitest: 1.0.0-beta.4(@types/node@20.8.0)(happy-dom@12.10.1)(jsdom@22.1.0)(sass@1.32.4) transitivePeerDependencies: - encoding dev: true @@ -24725,7 +24724,7 @@ packages: happy-dom: 12.10.1 jsdom: 22.1.0 local-pkg: 0.4.3 - magic-string: 0.30.4 + magic-string: 0.30.5 pathe: 1.1.1 picocolors: 1.0.0 std-env: 3.3.3 @@ -24745,22 +24744,22 @@ packages: - terser dev: true - /vitest@0.34.6(happy-dom@12.10.1)(jsdom@22.1.0)(sass@1.32.4): - resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} - engines: {node: '>=v14.18.0'} + /vitest@1.0.0-beta.4(@types/node@20.8.0)(happy-dom@12.10.1)(jsdom@22.1.0)(sass@1.32.4): + resolution: {integrity: sha512-WOJTqxY3hWqn4yy26SK+cx+BlPBeK/KtY9ALWkD6FLWLhSGY0QFEmarc8sdb/UGZQ8xs5pOvcQQS9JJSV8HH8g==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 '@vitest/browser': '*' '@vitest/ui': '*' happy-dom: '*' jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true + '@types/node': + optional: true '@vitest/browser': optional: true '@vitest/ui': @@ -24769,21 +24768,13 @@ packages: optional: true jsdom: optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true dependencies: - '@types/chai': 4.3.5 - '@types/chai-subset': 1.3.3 '@types/node': 20.8.0 - '@vitest/expect': 0.34.6 - '@vitest/runner': 0.34.6 - '@vitest/snapshot': 0.34.6 - '@vitest/spy': 0.34.6 - '@vitest/utils': 0.34.6 + '@vitest/expect': 1.0.0-beta.4 + '@vitest/runner': 1.0.0-beta.4 + '@vitest/snapshot': 1.0.0-beta.4 + '@vitest/spy': 1.0.0-beta.4 + '@vitest/utils': 1.0.0-beta.4 acorn: 8.10.0 acorn-walk: 8.2.0 cac: 6.7.14 @@ -24792,15 +24783,15 @@ packages: happy-dom: 12.10.1 jsdom: 22.1.0 local-pkg: 0.4.3 - magic-string: 0.30.4 + magic-string: 0.30.5 pathe: 1.1.1 picocolors: 1.0.0 std-env: 3.3.3 strip-literal: 1.0.1 tinybench: 2.5.0 - tinypool: 0.7.0 + tinypool: 0.8.1 vite: 4.4.7(@types/node@20.8.0)(sass@1.32.4) - vite-node: 0.34.6(@types/node@20.8.0)(sass@1.32.4) + vite-node: 1.0.0-beta.4(@types/node@20.8.0)(sass@1.32.4) why-is-node-running: 2.2.2 transitivePeerDependencies: - less diff --git a/vitest.shared.ts b/vitest.shared.ts index d993ef5eac88d..d1b0dbe552264 100644 --- a/vitest.shared.ts +++ b/vitest.shared.ts @@ -17,7 +17,7 @@ export const defaultProjectConfig: UserWorkspaceConfig = { test: { testTimeout: 10000, hookTimeout: 1000, - experimentalVmThreads: true, + pool: 'vmThreads', include: [`**/*.test.${TS_EXT}?(x)`], exclude: [ '**/integration-test', @@ -34,7 +34,7 @@ export const defaultProjectConfig: UserWorkspaceConfig = { ], css: { modules: { classNameStrategy: 'non-scoped' } }, hideSkippedTests: true, - globalSetup: [path.join(__dirname, `client/testing/src/globalTestSetup.${TS_EXT}`)], + globalSetup: [path.join(process.cwd(), `client/testing/src/globalTestSetup.${TS_EXT}`)], }, plugins: BAZEL ? [ @@ -61,8 +61,12 @@ const userConfig: UserConfig = { test: { cache: BAZEL ? false : undefined, // don't cache in Bazel - minThreads: 1, // otherwise it's slow when there are many CPU cores - maxThreads: 16, + poolOptions: { + vmThreads: { + minThreads: 1, // Otherwise it's slow when there are many CPU cores + maxThreads: 8, // Warning: setting this value to 16 leads to "Error: Failed to terminate worker" + }, + }, teardownTimeout: 1000, // For compatibility with Jest's defaults; can be changed to the Vitest defaults. @@ -86,6 +90,11 @@ export function defineProjectWithDefaults(dir: string, config: UserWorkspaceConf config.test.name = name } if (!config.test.root) { + // Reorient the dir around process.cwd() if we're running in Bazel and we got a __dirname-relative path. + // https://medium.com/@Jakeherringbone/running-tools-under-bazel-8aa416e7090c + if (BAZEL && dir.startsWith(__dirname)) { + dir = path.join(process.cwd(), dir.slice(__dirname.length)) + } config.test.root = dir } From e0c22ccd870e41a21fc45d2badb28adad06ab99b Mon Sep 17 00:00:00 2001 From: Stefan Hengl Date: Wed, 15 Nov 2023 11:08:18 +0100 Subject: [PATCH 025/222] update changelog (#58327) This moves the changelog entry from 5.3 to 5.2.x because in the meantime https://github.com/sourcegraph/sourcegraph/pull/58262 has been backported. --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30f856de5c62c..5893ddf4dde8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,7 +34,6 @@ All notable changes to Sourcegraph are documented in this file. - Fixed a bug where typing in the GraphQL editor in the Site Admin API console could cause the cursor to jump to the start of the editor. [#57862](https://github.com/sourcegraph/sourcegraph/pull/57862) - The blame column no longer ignores whitespace-only changes by default. [#58134](https://github.com/sourcegraph/sourcegraph/pull/58134) - Long lines now wrap correctly in the diff view. [#58138](https://github.com/sourcegraph/sourcegraph/pull/58138) -- Defining file filters for embeddings jobs no longer causes all files to be skipped if `MaxFileSizeBytes` isn't defined. [#58262](https://github.com/sourcegraph/sourcegraph/pull/58262) ### Removed @@ -60,7 +59,7 @@ All notable changes to Sourcegraph are documented in this file. ### Fixed -- +- Defining file filters for embeddings jobs no longer causes all files to be skipped if `MaxFileSizeBytes` isn't defined. [#58262](https://github.com/sourcegraph/sourcegraph/pull/58262) ### Removed From b61895983970bdc113b9454034437a5114870f64 Mon Sep 17 00:00:00 2001 From: Keegan Carruthers-Smith Date: Wed, 15 Nov 2023 12:17:17 +0200 Subject: [PATCH 026/222] gomod: update zoekt to allow custom doer (#58325) https://github.com/sourcegraph/zoekt/compare/5e2620e0cf64...137eb8f22610 - 334e30f230 client: Allow custom Doer - 137eb8f226 build: ignore out of bound lines from ctags Test Plan: CI --- deps.bzl | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deps.bzl b/deps.bzl index abf1e84e13ac7..b78c8ba6edecc 100644 --- a/deps.bzl +++ b/deps.bzl @@ -5963,8 +5963,8 @@ def go_dependencies(): name = "com_github_sourcegraph_zoekt", build_file_proto_mode = "disable_global", importpath = "github.com/sourcegraph/zoekt", - sum = "h1:p+ejFr9s/9PfldOMF1+lsbsaMOy3nOpnJeQf/rxoei4=", - version = "v0.0.0-20231114160819-5e2620e0cf64", + sum = "h1:Px4kf1DfoJIlQR1oog0+GJoDEm7lHw9qKDdT90xaaH0=", + version = "v0.0.0-20231115091004-137eb8f22610", ) go_repository( diff --git a/go.mod b/go.mod index aeab13a27207d..18712b7b6bc90 100644 --- a/go.mod +++ b/go.mod @@ -547,7 +547,7 @@ require ( github.com/sourcegraph/conc v0.2.0 github.com/sourcegraph/mountinfo v0.0.0-20231018142932-e00da332dac5 github.com/sourcegraph/sourcegraph/monitoring v0.0.0-20230124144931-b2d81b1accb6 - github.com/sourcegraph/zoekt v0.0.0-20231114160819-5e2620e0cf64 + github.com/sourcegraph/zoekt v0.0.0-20231115091004-137eb8f22610 github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/objx v0.5.0 // indirect diff --git a/go.sum b/go.sum index 29cb9678d7532..f44bfc967f0e2 100644 --- a/go.sum +++ b/go.sum @@ -1599,8 +1599,8 @@ github.com/sourcegraph/tiktoken-go v0.0.0-20230905173153-caab340cf008 h1:Wu8W50q github.com/sourcegraph/tiktoken-go v0.0.0-20230905173153-caab340cf008/go.mod h1:9NiV+i9mJKGj1rYOT+njbv+ZwA/zJxYdewGl6qVatpg= github.com/sourcegraph/yaml v1.0.1-0.20200714132230-56936252f152 h1:z/MpntplPaW6QW95pzcAR/72Z5TWDyDnSo0EOcyij9o= github.com/sourcegraph/yaml v1.0.1-0.20200714132230-56936252f152/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= -github.com/sourcegraph/zoekt v0.0.0-20231114160819-5e2620e0cf64 h1:p+ejFr9s/9PfldOMF1+lsbsaMOy3nOpnJeQf/rxoei4= -github.com/sourcegraph/zoekt v0.0.0-20231114160819-5e2620e0cf64/go.mod h1:WVDDy51tFgeKy8zXtujTSbqzgyJrqhrLC9sjWiEfAII= +github.com/sourcegraph/zoekt v0.0.0-20231115091004-137eb8f22610 h1:Px4kf1DfoJIlQR1oog0+GJoDEm7lHw9qKDdT90xaaH0= +github.com/sourcegraph/zoekt v0.0.0-20231115091004-137eb8f22610/go.mod h1:WVDDy51tFgeKy8zXtujTSbqzgyJrqhrLC9sjWiEfAII= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v0.0.0-20170901052352-ee1bd8ee15a1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= From eae9cd5423f831268cce8cb1e4666238e12252c2 Mon Sep 17 00:00:00 2001 From: Felix Kling Date: Wed, 15 Nov 2023 12:15:49 +0100 Subject: [PATCH 027/222] search: Fix suggestion being selected after applying one (#58186) This issue occurred when a suggestion was applied while the extension was waiting for additional suggestions from the server. There are various ways to fix this but the most robust one is to identify when a state update pertains to the current completion request and when it does not. This commit adds a new field to the `Query` object to make this possible. Whenever a new request is issues this field is assigned a new value, making it easy to identify when we should preserve the current suggestion selection. --- CHANGELOG.md | 1 + .../experimental/suggestionsExtension.ts | 52 ++++++++++++++----- 2 files changed, 39 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5893ddf4dde8d..70d4d3e8f18fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ All notable changes to Sourcegraph are documented in this file. - Fixed a bug where typing in the GraphQL editor in the Site Admin API console could cause the cursor to jump to the start of the editor. [#57862](https://github.com/sourcegraph/sourcegraph/pull/57862) - The blame column no longer ignores whitespace-only changes by default. [#58134](https://github.com/sourcegraph/sourcegraph/pull/58134) - Long lines now wrap correctly in the diff view. [#58138](https://github.com/sourcegraph/sourcegraph/pull/58138) +- Fixed an issue in the search input where pressing Enter after selecting a suggestion would sometimes insert another suggestions instead of submitting the query. [#58186](https://github.com/sourcegraph/sourcegraph/pull/58186) ### Removed diff --git a/client/branded/src/search-ui/input/experimental/suggestionsExtension.ts b/client/branded/src/search-ui/input/experimental/suggestionsExtension.ts index 9dffabf44282b..975ae6320a09a 100644 --- a/client/branded/src/search-ui/input/experimental/suggestionsExtension.ts +++ b/client/branded/src/search-ui/input/experimental/suggestionsExtension.ts @@ -245,6 +245,16 @@ enum QueryState { Complete, } +/** + * Used to identify whether two queries refer to the same + * completion request. A new completion request is triggered + * by e.g. typing into the query input or moving the cursor. + * This is used to properly reset internal state. + * + * Because objects are always unique we can use them as IDs. + */ +interface CompletionID {} + /** * Wrapper around the configered sources. Keeps track of the state and results. */ @@ -252,7 +262,8 @@ class Query { constructor( public readonly sources: readonly Source[], public readonly state: QueryState, - public readonly result: Result + public readonly result: Result, + private readonly completionID: CompletionID ) {} public update(transaction: Transaction): Query { @@ -276,7 +287,7 @@ class Query { // Only "apply" the effect if the results are for the curent query. This prevents // overwriting the results from stale requests. if (effect.is(updateResultEffect) && effect.value.query === query) { - query = query.updateWithSuggestionResult(effect.value.result) + query = query.updateWithSuggestionResult(effect.value.result, query.completionID) } else if (effect.is(startCompletionEffect)) { query = query.run(transaction.state) } else if (effect.is(hideCompletionEffect)) { @@ -287,23 +298,28 @@ class Query { return query } + private createNewCompletionID(): CompletionID { + // We use an object as completion ID because objects are always unique. + return {} + } + private run(state: EditorState): Query { const selectedMode = getSelectedMode(state) const activeSources = this.sources.filter(source => source.mode === selectedMode?.name) const result = combineResults( activeSources.map(source => source.query(state, state.selection.main.head, selectedMode?.name)) ) - return this.updateWithSuggestionResult(result) + return this.updateWithSuggestionResult(result, this.createNewCompletionID()) } - private updateWithSuggestionResult(result: SuggestionResult): Query { + private updateWithSuggestionResult(result: SuggestionResult, completionID: CompletionID): Query { return result.next - ? new PendingQuery(this.sources, Result.fromSuggestionResult(result), result.next) - : new Query(this.sources, QueryState.Complete, Result.fromSuggestionResult(result)) + ? new PendingQuery(this.sources, Result.fromSuggestionResult(result), result.next, completionID) + : new Query(this.sources, QueryState.Complete, Result.fromSuggestionResult(result), completionID) } private updateWithState(state: QueryState.Inactive | QueryState.Complete): Query { - return state !== this.state ? new Query(this.sources, state, this.result) : this + return state !== this.state ? new Query(this.sources, state, this.result, this.completionID) : this } public isInactive(): boolean { @@ -313,15 +329,22 @@ class Query { public isPending(): this is PendingQuery { return this.state === QueryState.Pending } + + public isSameRequest(query: Query): boolean { + return this.completionID === query.completionID + } } class PendingQuery extends Query { constructor( public readonly sources: readonly Source[], public readonly result: Result, - public readonly fetch: () => Promise + public readonly fetch: () => Promise, + // Used to identify whether two queries refer to the same + // completion request. + completionID: CompletionID ) { - super(sources, QueryState.Pending, result) + super(sources, QueryState.Pending, result, completionID) } } @@ -378,15 +401,16 @@ class SuggestionsState { let state: SuggestionsState = this const sources = transaction.state.facet(suggestionSources) - let query = sources === state.query.sources ? state.query : new Query(sources, QueryState.Inactive, emptyResult) + let query = + sources === state.query.sources ? state.query : new Query(sources, QueryState.Inactive, emptyResult, {}) query = query.update(transaction) if (query !== state.query) { state = new SuggestionsState( query, !query.isInactive(), - // Preserve the currently selected option if the query was pending - // (ensures that the selected option doesn't change when new options become available) - state.query.isPending() ? state.selectedOption : -1 + // Preserve the currently selected option if the query _was_ pending and refers to the same request. + // This ensures that the selected option doesn't change as new options become available. + state.query.isPending() && state.query.isSameRequest(query) ? state.selectedOption : -1 ) } @@ -436,7 +460,7 @@ const hideCompletionEffect = StateEffect.define() const updateResultEffect = StateEffect.define<{ query: Query; result: SuggestionResult }>() const suggestionsStateField = StateField.define({ create() { - return new SuggestionsState(new Query([], QueryState.Inactive, emptyResult), false, -1) + return new SuggestionsState(new Query([], QueryState.Inactive, emptyResult, {}), false, -1) }, update(state, transaction) { From 0236f9e2403ba42c0824d219880024c1bd7c183b Mon Sep 17 00:00:00 2001 From: Erik Seliger Date: Wed, 15 Nov 2023 14:20:06 +0100 Subject: [PATCH 028/222] Remove global lock around GitHub.com requests (#58190) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Looks like GitHub.com has become more lenient, or transparent on their docs page: https://docs.github.com/en/rest/overview/rate-limits-for-the-rest-api?apiVersion=2022-11-28#about-secondary-rate-limits. The paragraph about single request per token is gone from this page! Instead, they describe secondary rate limits quite well now: ``` You may encounter a secondary rate limit if you: Make too many concurrent requests. No more than 100 concurrent requests are allowed. This limit is shared across the REST API and GraphQL API. Make too many requests to a single endpoint per minute. No more than 900 points per minute are allowed for REST API endpoints, and no more than 2,000 points per minute are allowed for the GraphQL API endpoint. For more information about points, see "Calculating points for the secondary rate limit." Make too many requests per minute. No more than 90 seconds of CPU time per 60 seconds of real time is allowed. No more than 60 seconds of this CPU time may be for the GraphQL API. You can roughly estimate the CPU time by measuring the total response time for your API requests. Create too much content on GitHub in a short amount of time. In general, no more than 80 content-generating requests per minute and no more than 500 content-generating requests per hour are allowed. Some endpoints have lower content creation limits. Content creation limits include actions taken on the GitHub web interface as well as via the REST API and GraphQL API. ``` So the limit is no longer 1, it is roughly 100. Well, that depends on what APIs youā€™re calling, but whatever. Strangely, in the best practices section they still say that 1 request is advised, I followed up with a support ticket with GitHub to clarify. ### Outcome They said 100 is the limit but for certain requests the number can be lower. This doesn't convince us (team source) that it's worth keeping it. Besides, they also document that they return a Retry-After header in this event and we already handle that with retries (if the retry is not in the too distant future). So.. I want to say that this is ā€œno different than any other APIā€ at this point. Sure, there are some limits that they enforce, but thatā€™s true for all the APIs. The 1-concurrency only one was quite gnarly which totally justified the GitHub-Proxy and now the redis-based replacement IMO, but I donā€™t think with the recent changes here it does warrant a github.com-only special casing (pending talking to GitHub about that docs weirdness), and instead of investing into moving the concurrency lock into the transport layer, I think we should be fine dropping it altogether. --- .../internal/authz/integration_test.go | 2 - doc/admin/observability/alerts.md | 97 -------- doc/admin/observability/dashboards.md | 107 --------- internal/batches/sources/github_test.go | 2 - internal/extsvc/azuredevops/client.go | 8 +- internal/extsvc/bitbucketcloud/client.go | 4 +- internal/extsvc/github/BUILD.bazel | 6 - internal/extsvc/github/common.go | 10 +- internal/extsvc/github/globallock.go | 210 ------------------ internal/extsvc/github/v3_test.go | 3 - internal/extsvc/gitlab/client.go | 4 +- internal/oauthutil/oauth2.go | 8 +- internal/oauthutil/oauth2_test.go | 4 +- internal/repos/BUILD.bazel | 2 - internal/repos/github_test.go | 22 -- internal/repos/sources_test.go | 38 ---- monitoring/BUILD.bazel | 2 - monitoring/definitions/BUILD.bazel | 1 - monitoring/definitions/dashboards.go | 1 - monitoring/definitions/github.go | 80 ------- 20 files changed, 10 insertions(+), 601 deletions(-) delete mode 100644 internal/extsvc/github/globallock.go delete mode 100644 monitoring/definitions/github.go diff --git a/cmd/repo-updater/internal/authz/integration_test.go b/cmd/repo-updater/internal/authz/integration_test.go index 8664248f4b131..4ba30ccfdf2fe 100644 --- a/cmd/repo-updater/internal/authz/integration_test.go +++ b/cmd/repo-updater/internal/authz/integration_test.go @@ -111,7 +111,6 @@ func TestIntegration_GitHubPermissions(t *testing.T) { t.Skip() } - github.SetupForTest(t) ratelimit.SetupForTest(t) logger := logtest.Scoped(t) @@ -288,7 +287,6 @@ func TestIntegration_GitHubInternalRepositories(t *testing.T) { t.Skip() } - github.SetupForTest(t) ratelimit.SetupForTest(t) rcache.SetupForTest(t) diff --git a/doc/admin/observability/alerts.md b/doc/admin/observability/alerts.md index f10e5f7bbadd4..4c1d5fa94408c 100644 --- a/doc/admin/observability/alerts.md +++ b/doc/admin/observability/alerts.md @@ -1927,103 +1927,6 @@ Generated query for critical alert: `min((sum by (app) (up{app=~".*gitserver"})
    -## github: src_githubcom_concurrency_lock_waiting_requests - -

    number of requests waiting on the global mutex

    - -**Descriptions** - -- warning github: 100+ number of requests waiting on the global mutex for 5m0s - -**Next steps** - -- - **Check container logs for network connection issues and log entries from the githubcom-concurrency-limiter logger. - - **Check redis-store health. - - **Check GitHub status. -- Learn more about the related dashboard panel in the [dashboards reference](./dashboards.md#github-src-githubcom-concurrency-lock-waiting-requests). -- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: - -```json -"observability.silenceAlerts": [ - "warning_github_src_githubcom_concurrency_lock_waiting_requests" -] -``` - -*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).* - -
    -Technical details - -Generated query for warning alert: `max((max(src_githubcom_concurrency_lock_waiting_requests)) >= 100)` - -
    - -
    - -## github: src_githubcom_concurrency_lock_failed_lock_requests - -

    number of lock failures

    - -**Descriptions** - -- warning github: 100+ number of lock failures for 5m0s - -**Next steps** - -- - **Check container logs for network connection issues and log entries from the githubcom-concurrency-limiter logger. - - **Check redis-store health. -- Learn more about the related dashboard panel in the [dashboards reference](./dashboards.md#github-src-githubcom-concurrency-lock-failed-lock-requests). -- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: - -```json -"observability.silenceAlerts": [ - "warning_github_src_githubcom_concurrency_lock_failed_lock_requests" -] -``` - -*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).* - -
    -Technical details - -Generated query for warning alert: `max((sum(rate(src_githubcom_concurrency_lock_failed_lock_requests[5m]))) >= 100)` - -
    - -
    - -## github: src_githubcom_concurrency_lock_failed_unlock_requests - -

    number of unlock failures

    - -**Descriptions** - -- warning github: 100+ number of unlock failures for 5m0s - -**Next steps** - -- - **Check container logs for network connection issues and log entries from the githubcom-concurrency-limiter logger. - - **Check redis-store health. -- Learn more about the related dashboard panel in the [dashboards reference](./dashboards.md#github-src-githubcom-concurrency-lock-failed-unlock-requests). -- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: - -```json -"observability.silenceAlerts": [ - "warning_github_src_githubcom_concurrency_lock_failed_unlock_requests" -] -``` - -*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).* - -
    -Technical details - -Generated query for warning alert: `max((sum(rate(src_githubcom_concurrency_lock_failed_unlock_requests[5m]))) >= 100)` - -
    - -
    - ## postgres: connections

    active connections

    diff --git a/doc/admin/observability/dashboards.md b/doc/admin/observability/dashboards.md index 40278baaeb50f..3bfccae0257de 100644 --- a/doc/admin/observability/dashboards.md +++ b/doc/admin/observability/dashboards.md @@ -8031,113 +8031,6 @@ Query: `sum by(app) (up{app=~".*gitserver"}) / count by (app) (up{app=~".*gitser
    -## GitHub - -

    Dashboard to track requests and global concurrency locks for talking to github.com.

    - -To see this dashboard, visit `/-/debug/grafana/d/github/github` on your Sourcegraph instance. - -### GitHub: GitHub API monitoring - -#### github: src_githubcom_concurrency_lock_waiting_requests - -

    Number of requests waiting on the global mutex

    - -Refer to the [alerts reference](./alerts.md#github-src-githubcom-concurrency-lock-waiting-requests) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/github/github?viewPanel=100000` on your Sourcegraph instance. - -*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).* - -
    -Technical details - -Query: `max(src_githubcom_concurrency_lock_waiting_requests)` - -
    - -
    - -#### github: src_githubcom_concurrency_lock_failed_lock_requests - -

    Number of lock failures

    - -Refer to the [alerts reference](./alerts.md#github-src-githubcom-concurrency-lock-failed-lock-requests) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/github/github?viewPanel=100010` on your Sourcegraph instance. - -*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).* - -
    -Technical details - -Query: `sum(rate(src_githubcom_concurrency_lock_failed_lock_requests[5m]))` - -
    - -
    - -#### github: src_githubcom_concurrency_lock_failed_unlock_requests - -

    Number of unlock failures

    - -Refer to the [alerts reference](./alerts.md#github-src-githubcom-concurrency-lock-failed-unlock-requests) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/github/github?viewPanel=100011` on your Sourcegraph instance. - -*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).* - -
    -Technical details - -Query: `sum(rate(src_githubcom_concurrency_lock_failed_unlock_requests[5m]))` - -
    - -
    - -#### github: src_githubcom_concurrency_lock_requests - -

    Number of locks taken global mutex

    - -A high number of locks indicates heavy usage of the GitHub API. This might not be a problem, but you should check if request counts are expected. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/github/github?viewPanel=100020` on your Sourcegraph instance. - -*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).* - -
    -Technical details - -Query: `sum(rate(src_githubcom_concurrency_lock_requests[5m]))` - -
    - -
    - -#### github: src_githubcom_concurrency_lock_acquire_duration_seconds_latency_p75 - -

    75 percentile latency of src_githubcom_concurrency_lock_acquire_duration_seconds

    - -99 percentile latency of acquiring the global GitHub concurrency lock. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/github/github?viewPanel=100021` on your Sourcegraph instance. - -*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).* - -
    -Technical details - -Query: `histogram_quantile(0.75, sum(rate(src_githubcom_concurrency_lock_acquire_duration_seconds_bucket[5m])) by (le))` - -
    - -
    - ## Postgres

    Postgres metrics, exported from postgres_exporter (not available on server).

    diff --git a/internal/batches/sources/github_test.go b/internal/batches/sources/github_test.go index 6fed97c11f8ec..9a239e5362957 100644 --- a/internal/batches/sources/github_test.go +++ b/internal/batches/sources/github_test.go @@ -115,7 +115,6 @@ func TestGithubSource_CreateChangeset(t *testing.T) { } func TestGithubSource_CreateChangeset_CreationLimit(t *testing.T) { - github.SetupForTest(t) cli := new(mockDoer) // Version lookup versionMatchedBy := func(req *http.Request) bool { @@ -888,7 +887,6 @@ func setup(t *testing.T, ctx context.Context, tName string) (src *GitHubSource, // The GithubSource uses the github.Client under the hood, which uses rcache, a // caching layer that uses Redis. We need to clear the cache before we run the tests rcache.SetupForTest(t) - github.SetupForTest(t) cf, save := newClientFactory(t, tName) diff --git a/internal/extsvc/azuredevops/client.go b/internal/extsvc/azuredevops/client.go index 407f2e05c38db..e7e15398576b4 100644 --- a/internal/extsvc/azuredevops/client.go +++ b/internal/extsvc/azuredevops/client.go @@ -134,9 +134,7 @@ func (c *client) do(ctx context.Context, req *http.Request, urlOverride string, } logger := log.Scoped("azuredevops.Client") - resp, err := oauthutil.DoRequest(ctx, logger, c.httpClient, req, c.auth, func(r *http.Request) (*http.Response, error) { - return c.httpClient.Do(r) - }) + resp, err := oauthutil.DoRequest(ctx, logger, c.httpClient, req, c.auth) if err != nil { return "", err } @@ -151,9 +149,7 @@ func (c *client) do(ctx context.Context, req *http.Request, urlOverride string, _ = c.externalRateLimiter.WaitForRateLimit(ctx, 1) req.Body = io.NopCloser(bytes.NewReader(reqBody)) - resp, err = oauthutil.DoRequest(ctx, logger, c.httpClient, req, c.auth, func(r *http.Request) (*http.Response, error) { - return c.httpClient.Do(r) - }) + resp, err = oauthutil.DoRequest(ctx, logger, c.httpClient, req, c.auth) numRetries++ } diff --git a/internal/extsvc/bitbucketcloud/client.go b/internal/extsvc/bitbucketcloud/client.go index ec857fc5b0fc7..b14e1f9134eff 100644 --- a/internal/extsvc/bitbucketcloud/client.go +++ b/internal/extsvc/bitbucketcloud/client.go @@ -241,9 +241,7 @@ func (c *client) do(ctx context.Context, req *http.Request, result any) (code in var resp *http.Response sleepTime := 10 * time.Second for { - resp, err = oauthutil.DoRequest(ctx, nil, c.httpClient, req, c.Auth, func(r *http.Request) (*http.Response, error) { - return c.httpClient.Do(r) - }) + resp, err = oauthutil.DoRequest(ctx, nil, c.httpClient, req, c.Auth) if resp != nil { code = resp.StatusCode } diff --git a/internal/extsvc/github/BUILD.bazel b/internal/extsvc/github/BUILD.bazel index 18990454c214a..1518a3cddb91d 100644 --- a/internal/extsvc/github/BUILD.bazel +++ b/internal/extsvc/github/BUILD.bazel @@ -6,7 +6,6 @@ go_library( srcs = [ "common.go", "doc.go", - "globallock.go", "v3.go", "v4.go", ], @@ -23,18 +22,13 @@ go_library( "//internal/metrics", "//internal/oauthutil", "//internal/ratelimit", - "//internal/redispool", "//internal/trace", "//lib/errors", - "@com_github_go_redsync_redsync_v4//:redsync", - "@com_github_go_redsync_redsync_v4//redis/redigo", "@com_github_google_go_github_v55//github", "@com_github_graphql_go_graphql//language/ast", "@com_github_graphql_go_graphql//language/parser", "@com_github_graphql_go_graphql//language/visitor", "@com_github_masterminds_semver//:semver", - "@com_github_prometheus_client_golang//prometheus", - "@com_github_prometheus_client_golang//prometheus/promauto", "@com_github_segmentio_fasthash//fnv1", "@com_github_sourcegraph_log//:log", "@io_opentelemetry_go_otel//attribute", diff --git a/internal/extsvc/github/common.go b/internal/extsvc/github/common.go index 06ffcb34455f8..651a3123f95da 100644 --- a/internal/extsvc/github/common.go +++ b/internal/extsvc/github/common.go @@ -1582,15 +1582,7 @@ func doRequest(ctx context.Context, logger log.Logger, apiURL *url.URL, auther a }() req = req.WithContext(ctx) - resp, err = oauthutil.DoRequest(ctx, logger, httpClient, req, auther, func(r *http.Request) (*http.Response, error) { - // For GitHub.com, to avoid running into rate limits we're limiting concurrency - // per auth token to 1 globally. - if URLIsGitHubDotCom(r.URL) { - return restrictGitHubDotComConcurrency(logger, httpClient, r) - } - - return httpClient.Do(r) - }) + resp, err = oauthutil.DoRequest(ctx, logger, httpClient, req, auther) if err != nil { return nil, errors.Wrap(err, "request failed") } diff --git a/internal/extsvc/github/globallock.go b/internal/extsvc/github/globallock.go deleted file mode 100644 index 127eb392a19c5..0000000000000 --- a/internal/extsvc/github/globallock.go +++ /dev/null @@ -1,210 +0,0 @@ -package github - -import ( - "context" - "crypto/sha256" - "fmt" - "math/rand" - "net/http" - "strings" - "sync" - "time" - - "github.com/go-redsync/redsync/v4" - "github.com/go-redsync/redsync/v4/redis/redigo" - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promauto" - "github.com/sourcegraph/log" - - "github.com/sourcegraph/sourcegraph/internal/httpcli" - "github.com/sourcegraph/sourcegraph/internal/redispool" - "github.com/sourcegraph/sourcegraph/lib/errors" -) - -var metricWaitingRequestsGauge = promauto.NewGauge(prometheus.GaugeOpts{ - Name: "src_githubcom_concurrency_lock_waiting_requests", - Help: "Number of requests to GitHub.com waiting on the mutex", -}) - -var metricLockRequestsGauge = promauto.NewGauge(prometheus.GaugeOpts{ - Name: "src_githubcom_concurrency_lock_requests", - Help: "Number of requests to GitHub.com that require a the mutex", -}) - -var metricFailedLockRequestsGauge = promauto.NewGauge(prometheus.GaugeOpts{ - Name: "src_githubcom_concurrency_lock_failed_lock_requests", - Help: "Number of requests to GitHub.com that failed acquiring a the mutex", -}) - -var metricFailedUnlockRequestsGauge = promauto.NewGauge(prometheus.GaugeOpts{ - Name: "src_githubcom_concurrency_lock_failed_unlock_requests", - Help: "Number of requests to GitHub.com that failed unlocking a the mutex", -}) - -var metricLockRequestDurationGauge = promauto.NewHistogram(prometheus.HistogramOpts{ - Name: "src_githubcom_concurrency_lock_acquire_duration_seconds", - Help: "Current number of requests to GitHub.com running for a method.", - Buckets: prometheus.ExponentialBuckets(1, 2, 10), -}) - -func restrictGitHubDotComConcurrency(logger log.Logger, doer httpcli.Doer, r *http.Request) (*http.Response, error) { - logger = logger.Scoped("githubcom-concurrency-limiter") - var token string - if v := r.Header["Authorization"]; len(v) > 0 { - fields := strings.Fields(v[0]) - token = fields[len(fields)-1] - } - - lock := lockForToken(logger, token) - - metricLockRequestsGauge.Inc() - metricWaitingRequestsGauge.Inc() - start := time.Now() - didGetLock := false - if err := lock.LockContext(r.Context()); err != nil { - metricFailedLockRequestsGauge.Inc() - // Note that we do NOT fail the request here, this lock is considered best - // effort. - // - // We log a warning if the error is ErrTaken, since this can happen from time to time. - // Otherwise we log an error. It means that we didn't get the global lock in the permitted - // number of tries. Instead of blocking indefinitely, we let the request pass. - if errors.HasType(err, &redsync.ErrTaken{}) { - logger.Warn("could not acquire mutex to talk to GitHub.com in time, trying to make request concurrently") - } else { - logger.Error("failed to get mutex for GitHub.com, concurrent requests may occur and rate limits can happen", log.Error(err)) - } - } else { - didGetLock = true - } - metricLockRequestDurationGauge.Observe(float64(time.Since(start) / time.Second)) - metricWaitingRequestsGauge.Dec() - - resp, err := doer.Do(r) - - // We use a background context to still successfully unlock the mutex - // in case the request has been canceled. - if didGetLock { - if _, err := lock.UnlockContext(context.Background()); err != nil { - metricFailedUnlockRequestsGauge.Inc() - if errors.HasType(err, &redsync.ErrTaken{}) { - logger.Warn("failed to unlock mutex, GitHub.com requests may be delayed briefly", log.Error(err)) - } else { - logger.Error("failed to unlock mutex, GitHub.com requests may be delayed briefly", log.Error(err)) - } - } - } - - return resp, err -} - -type lock interface { - LockContext(context.Context) error - UnlockContext(context.Context) (bool, error) -} - -var testLock *mockLock - -// TB is a subset of testing.TB -type TB interface { - Name() string - Skip(args ...any) - Helper() - Fatalf(string, ...any) -} - -func SetupForTest(t TB) { - t.Helper() - - testLock = &mockLock{} -} - -type mockLock struct{} - -func (m *mockLock) LockContext(_ context.Context) error { - return nil -} - -func (m *mockLock) UnlockContext(_ context.Context) (bool, error) { - return false, nil -} - -// With a default number of retries of 32, this will average to 8 seconds. -const ( - minRetryDelayMilliSec = 200 - maxRetryDelayMilliSec = 300 -) - -// From https://github.com/go-redsync/redsync/blob/master/redsync.go -func retryDelay(tries int) time.Duration { - return time.Duration(rand.Intn(maxRetryDelayMilliSec-minRetryDelayMilliSec)+minRetryDelayMilliSec) * time.Millisecond -} - -func lockForToken(logger log.Logger, token string) lock { - if testLock != nil { - return testLock - } - // We hash the token so we don't store it as plain-text in redis. - hash := sha256.New() - hashedToken := "hash-failed" - if _, err := hash.Write([]byte(token)); err != nil { - logger.Error("failed to hash token", log.Error(err)) - } else { - hashedToken = string(hash.Sum(nil)) - } - - pool, ok := redispool.Store.Pool() - if !ok { - return globalLockMap.get(hashedToken) - } - - locker := redsync.New(redigo.NewPool(pool)) - return locker.NewMutex(fmt.Sprintf("github-concurrency:%s", hashedToken), redsync.WithRetryDelayFunc(retryDelay)) -} - -type inMemoryLock struct{ mu *sync.Mutex } - -func (l *inMemoryLock) LockContext(ctx context.Context) error { - l.mu.Lock() - return nil -} - -func (l *inMemoryLock) UnlockContext(ctx context.Context) (bool, error) { - l.mu.Unlock() - return true, nil -} - -var globalLockMap = lockMap{ - locks: make(map[string]*sync.Mutex), -} - -// lockMap is a map of strings to mutexes. It's used to serialize github.com API -// requests of each access token in order to prevent abuse rate limiting due -// to concurrency in App mode, where redis is not available. -type lockMap struct { - init sync.Once - mu sync.RWMutex - locks map[string]*sync.Mutex -} - -func (m *lockMap) get(k string) lock { - m.init.Do(func() { m.locks = make(map[string]*sync.Mutex) }) - - m.mu.RLock() - lock, ok := m.locks[k] - m.mu.RUnlock() - - if ok { - return &inMemoryLock{mu: lock} - } - - m.mu.Lock() - lock, ok = m.locks[k] - if !ok { - lock = &sync.Mutex{} - m.locks[k] = lock - } - m.mu.Unlock() - - return &inMemoryLock{mu: lock} -} diff --git a/internal/extsvc/github/v3_test.go b/internal/extsvc/github/v3_test.go index 5e75dc481f4c7..4bd55df462bd1 100644 --- a/internal/extsvc/github/v3_test.go +++ b/internal/extsvc/github/v3_test.go @@ -36,7 +36,6 @@ func newTestClient(t *testing.T, cli httpcli.Doer) *V3Client { } func newTestClientWithAuthenticator(t *testing.T, auth auth.Authenticator, cli httpcli.Doer) *V3Client { - SetupForTest(t) rcache.SetupForTest(t) ratelimit.SetupForTest(t) @@ -968,7 +967,6 @@ func TestV3Client_UpdateRef(t *testing.T) { func newV3TestClient(t testing.TB, name string) (*V3Client, func()) { t.Helper() - SetupForTest(t) cf, save := httptestutil.NewGitHubRecorderFactory(t, update(name), name) uri, err := url.Parse("https://github.com") @@ -989,7 +987,6 @@ func newV3TestClient(t testing.TB, name string) (*V3Client, func()) { func newV3TestEnterpriseClient(t testing.TB, name string) (*V3Client, func()) { t.Helper() - SetupForTest(t) cf, save := httptestutil.NewGitHubRecorderFactory(t, update(name), name) uri, err := url.Parse("https://ghe.sgdev.org/api/v3") diff --git a/internal/extsvc/gitlab/client.go b/internal/extsvc/gitlab/client.go index bb05d82af97ae..14c5110f1c421 100644 --- a/internal/extsvc/gitlab/client.go +++ b/internal/extsvc/gitlab/client.go @@ -268,9 +268,7 @@ func (c *Client) doWithBaseURL(ctx context.Context, req *http.Request, result an // to cache server-side req.Header.Set("Cache-Control", "max-age=0") - resp, err = oauthutil.DoRequest(ctx, log.Scoped("gitlab client"), c.httpClient, req, c.Auth, func(r *http.Request) (*http.Response, error) { - return c.httpClient.Do(r) - }) + resp, err = oauthutil.DoRequest(ctx, log.Scoped("gitlab client"), c.httpClient, req, c.Auth) if resp != nil { c.externalRateLimiter.Update(resp.Header) } diff --git a/internal/oauthutil/oauth2.go b/internal/oauthutil/oauth2.go index bb4f7a3778ddc..f9dc1d20a709c 100644 --- a/internal/oauthutil/oauth2.go +++ b/internal/oauthutil/oauth2.go @@ -43,9 +43,9 @@ type TokenRefresher func(ctx context.Context, doer httpcli.Doer, oauthCtx OAuthC // If the Authenticator implements the AuthenticatorWithRefresh interface, // it will also attempt to refresh the token in case of a 401 response. // If the token is updated successfully, the same request will be retried exactly once. -func DoRequest(ctx context.Context, logger log.Logger, doer httpcli.Doer, req *http.Request, auther auth.Authenticator, doRequest func(*http.Request) (*http.Response, error)) (*http.Response, error) { +func DoRequest(ctx context.Context, logger log.Logger, doer httpcli.Doer, req *http.Request, auther auth.Authenticator) (*http.Response, error) { if auther == nil { - return doRequest(req.WithContext(ctx)) + return doer.Do(req.WithContext(ctx)) } // Try a pre-emptive token refresh in case we know it is definitely expired @@ -71,7 +71,7 @@ func DoRequest(ctx context.Context, logger log.Logger, doer httpcli.Doer, req *h } req.Body = io.NopCloser(bytes.NewBuffer(reqBody)) // Do first request - resp, err := doRequest(req.WithContext(ctx)) + resp, err := doer.Do(req.WithContext(ctx)) if err != nil { return resp, err } @@ -88,7 +88,7 @@ func DoRequest(ctx context.Context, logger log.Logger, doer httpcli.Doer, req *h } // We need to reset the body before retrying the request req.Body = io.NopCloser(bytes.NewBuffer(reqBody)) - resp, err = doRequest(req.WithContext(ctx)) + resp, err = doer.Do(req.WithContext(ctx)) } return resp, err diff --git a/internal/oauthutil/oauth2_test.go b/internal/oauthutil/oauth2_test.go index 000e900a969f4..0e20fc33baadc 100644 --- a/internal/oauthutil/oauth2_test.go +++ b/internal/oauthutil/oauth2_test.go @@ -95,9 +95,7 @@ func TestDoRequest(t *testing.T) { } } - resp, err := DoRequest(ctx, logger, http.DefaultClient, req, auther, func(r *http.Request) (*http.Response, error) { - return http.DefaultClient.Do(r) - }) + resp, err := DoRequest(ctx, logger, http.DefaultClient, req, auther) if err != nil { t.Fatal(err) } diff --git a/internal/repos/BUILD.bazel b/internal/repos/BUILD.bazel index 9484417b7a627..a5f2c8d500d5b 100644 --- a/internal/repos/BUILD.bazel +++ b/internal/repos/BUILD.bazel @@ -191,8 +191,6 @@ go_test( "//lib/errors", "//lib/pointers", "//schema", - "@com_github_dnaeon_go_vcr//cassette", - "@com_github_dnaeon_go_vcr//recorder", "@com_github_google_go_cmp//cmp", "@com_github_google_go_cmp//cmp/cmpopts", "@com_github_google_uuid//:uuid", diff --git a/internal/repos/github_test.go b/internal/repos/github_test.go index 78d38bf95b1ac..c461b2d4a7aef 100644 --- a/internal/repos/github_test.go +++ b/internal/repos/github_test.go @@ -136,7 +136,6 @@ func TestPublicRepos_PaginationTerminatesGracefully(t *testing.T) { // We need to clear the cache before we run the tests rcache.SetupForTest(t) ratelimit.SetupForTest(t) - github.SetupForTest(t) fixtureName := "GITHUB-ENTERPRISE/list-public-repos" gheToken := prepareGheToken(t, fixtureName) @@ -194,7 +193,6 @@ func prepareGheToken(t *testing.T, fixtureName string) string { } func TestGithubSource_GetRepo(t *testing.T) { - github.SetupForTest(t) testCases := []struct { name string nameWithOwner string @@ -295,7 +293,6 @@ func TestGithubSource_GetRepo(t *testing.T) { } func TestGithubSource_GetRepo_Enterprise(t *testing.T) { - github.SetupForTest(t) testCases := []struct { name string nameWithOwner string @@ -442,7 +439,6 @@ func TestMakeRepo_NullCharacter(t *testing.T) { // uses rcache, a caching layer that uses Redis. // We need to clear the cache before we run the tests rcache.SetupForTest(t) - github.SetupForTest(t) r := &github.Repository{ Description: "Fun nulls \x00\x00\x00", @@ -464,7 +460,6 @@ func TestMakeRepo_NullCharacter(t *testing.T) { } func TestGithubSource_makeRepo(t *testing.T) { - github.SetupForTest(t) b, err := os.ReadFile(filepath.Join("testdata", "github-repos.json")) if err != nil { t.Fatal(err) @@ -559,7 +554,6 @@ func TestMatchOrg(t *testing.T) { } func TestGitHubSource_doRecursively(t *testing.T) { - github.SetupForTest(t) ctx := context.Background() testCases := map[string]struct { @@ -643,7 +637,6 @@ func TestGitHubSource_doRecursively(t *testing.T) { } func TestGithubSource_ListRepos(t *testing.T) { - github.SetupForTest(t) assertAllReposListed := func(want []string) typestest.ReposAssertion { return func(t testing.TB, rs types.Repos) { t.Helper() @@ -831,7 +824,6 @@ func TestGithubSource_WithAuthenticator(t *testing.T) { // uses rcache, a caching layer that uses Redis. // We need to clear the cache before we run the tests rcache.SetupForTest(t) - github.SetupForTest(t) svc := &types.ExternalService{ Kind: extsvc.KindGitHub, @@ -866,7 +858,6 @@ func TestGithubSource_excludes_disabledAndLocked(t *testing.T) { // uses rcache, a caching layer that uses Redis. // We need to clear the cache before we run the tests rcache.SetupForTest(t) - github.SetupForTest(t) svc := &types.ExternalService{ Kind: extsvc.KindGitHub, @@ -894,7 +885,6 @@ func TestGithubSource_excludes_disabledAndLocked(t *testing.T) { } func TestGithubSource_GetVersion(t *testing.T) { - github.SetupForTest(t) logger := logtest.Scoped(t) t.Run("github.com", func(t *testing.T) { // The GitHubSource uses the github.Client under the hood, which @@ -966,7 +956,6 @@ func TestGithubSource_GetVersion(t *testing.T) { } func TestRepositoryQuery_DoWithRefinedWindow(t *testing.T) { - github.SetupForTest(t) for _, tc := range []struct { name string query string @@ -1034,7 +1023,6 @@ func TestRepositoryQuery_DoWithRefinedWindow(t *testing.T) { } func TestRepositoryQuery_DoSingleRequest(t *testing.T) { - github.SetupForTest(t) for _, tc := range []struct { name string query string @@ -1107,7 +1095,6 @@ func TestRepositoryQuery_DoSingleRequest(t *testing.T) { } func TestGithubSource_SearchRepositories(t *testing.T) { - github.SetupForTest(t) assertReposSearched := func(want []string) typestest.ReposAssertion { return func(t testing.TB, rs types.Repos) { t.Helper() @@ -1300,20 +1287,11 @@ func TestGithubSource_SearchRepositories(t *testing.T) { } } -type mockDoer struct { - do func(*http.Request) (*http.Response, error) -} - -func (c *mockDoer) Do(r *http.Request) (*http.Response, error) { - return c.do(r) -} - // TestGithubSource_ListRepos_GitHubApp tests the ListRepos function for GitHub // Apps specifically. We have a separate test case for this so that the VCR // tests for GitHub App and non-GitHub App connections can be updated separately, // as setting up credentials for a GitHub App VCR test is significantly more effort. func TestGithubSource_ListRepos_GitHubApp(t *testing.T) { - github.SetupForTest(t) // This private key is no longer valid. If this VCR test needs to be updated, // a new GitHub App with new keys and secrets will have to be created // and deleted afterwards. diff --git a/internal/repos/sources_test.go b/internal/repos/sources_test.go index db3df6d98b34d..757cb7c92748f 100644 --- a/internal/repos/sources_test.go +++ b/internal/repos/sources_test.go @@ -10,8 +10,6 @@ import ( "strings" "testing" - "github.com/dnaeon/go-vcr/cassette" - "github.com/dnaeon/go-vcr/recorder" "github.com/google/go-cmp/cmp" "github.com/grafana/regexp" @@ -652,42 +650,6 @@ func newClientFactoryWithOpt(t testing.TB, name string, opt httpcli.Opt) (*httpc func(t testing.TB) { Save(t, rec) } } -func newRecorder(t testing.TB, file string, record bool) *recorder.Recorder { - rec, err := httptestutil.NewRecorder(file, record, func(i *cassette.Interaction) error { - // The ratelimit.Monitor type resets its internal timestamp if it's - // updated with a timestamp in the past. This makes tests ran with - // recorded interations just wait for a very long time. Removing - // these headers from the casseste effectively disables rate-limiting - // in tests which replay HTTP interactions, which is desired behaviour. - for _, name := range [...]string{ - "RateLimit-Limit", - "RateLimit-Observed", - "RateLimit-Remaining", - "RateLimit-Reset", - "RateLimit-Resettime", - "X-RateLimit-Limit", - "X-RateLimit-Remaining", - "X-RateLimit-Reset", - } { - i.Response.Headers.Del(name) - } - - // Phabricator requests include a token in the form and body. - ua := i.Request.Headers.Get("User-Agent") - if strings.Contains(strings.ToLower(ua), extsvc.TypePhabricator) { - i.Request.Body = "" - i.Request.Form = nil - } - - return nil - }) - if err != nil { - t.Fatal(err) - } - - return rec -} - func getAWSEnv(envVar string) string { s := os.Getenv(envVar) if s == "" { diff --git a/monitoring/BUILD.bazel b/monitoring/BUILD.bazel index cc7431a01e6c0..e4eb1fdff1d7c 100644 --- a/monitoring/BUILD.bazel +++ b/monitoring/BUILD.bazel @@ -79,7 +79,6 @@ genrule( "outputs/grafana/embeddings.json", "outputs/grafana/executor.json", "outputs/grafana/frontend.json", - "outputs/grafana/github.json", "outputs/grafana/gitserver.json", "outputs/grafana/home.json", "outputs/grafana/otel-collector.json", @@ -103,7 +102,6 @@ genrule( "outputs/prometheus/embeddings_alert_rules.yml", "outputs/prometheus/executor_alert_rules.yml", "outputs/prometheus/frontend_alert_rules.yml", - "outputs/prometheus/github_alert_rules.yml", "outputs/prometheus/gitserver_alert_rules.yml", "outputs/prometheus/otel_collector_alert_rules.yml", "outputs/prometheus/postgres_alert_rules.yml", diff --git a/monitoring/definitions/BUILD.bazel b/monitoring/definitions/BUILD.bazel index 43692f7805e34..8e9db0b9b7a99 100644 --- a/monitoring/definitions/BUILD.bazel +++ b/monitoring/definitions/BUILD.bazel @@ -14,7 +14,6 @@ go_library( "executor.go", "frontend.go", "git_server.go", - "github.go", "otel_collector.go", "postgres.go", "precise_code_intel_worker.go", diff --git a/monitoring/definitions/dashboards.go b/monitoring/definitions/dashboards.go index bc5d0680e1947..38a1a58ee2df7 100644 --- a/monitoring/definitions/dashboards.go +++ b/monitoring/definitions/dashboards.go @@ -12,7 +12,6 @@ func Default() Dashboards { return []*monitoring.Dashboard{ Frontend(), GitServer(), - GitHub(), Postgres(), PreciseCodeIntelWorker(), Redis(), diff --git a/monitoring/definitions/github.go b/monitoring/definitions/github.go deleted file mode 100644 index f437bc9417ed1..0000000000000 --- a/monitoring/definitions/github.go +++ /dev/null @@ -1,80 +0,0 @@ -package definitions - -import ( - "time" - - "github.com/sourcegraph/sourcegraph/monitoring/monitoring" -) - -func GitHub() *monitoring.Dashboard { - return &monitoring.Dashboard{ - Name: "github", - Title: "GitHub", - Description: "Dashboard to track requests and global concurrency locks for talking to github.com.", - Groups: []monitoring.Group{ - { - Title: "GitHub API monitoring", - Rows: []monitoring.Row{ - { - { - Name: "src_githubcom_concurrency_lock_waiting_requests", - Description: "number of requests waiting on the global mutex", - Query: `max(src_githubcom_concurrency_lock_waiting_requests)`, - Warning: monitoring.Alert().GreaterOrEqual(100).For(5 * time.Minute), - Panel: monitoring.Panel().LegendFormat("requests waiting"), - Owner: monitoring.ObservableOwnerSource, - NextSteps: ` - - **Check container logs for network connection issues and log entries from the githubcom-concurrency-limiter logger. - - **Check redis-store health. - - **Check GitHub status.`, - }, - }, - { - { - Name: "src_githubcom_concurrency_lock_failed_lock_requests", - Description: "number of lock failures", - Query: `sum(rate(src_githubcom_concurrency_lock_failed_lock_requests[5m]))`, - Warning: monitoring.Alert().GreaterOrEqual(100).For(5 * time.Minute), - Panel: monitoring.Panel().LegendFormat("failed lock requests"), - Owner: monitoring.ObservableOwnerSource, - NextSteps: ` - - **Check container logs for network connection issues and log entries from the githubcom-concurrency-limiter logger. - - **Check redis-store health.`, - }, - { - Name: "src_githubcom_concurrency_lock_failed_unlock_requests", - Description: "number of unlock failures", - Query: `sum(rate(src_githubcom_concurrency_lock_failed_unlock_requests[5m]))`, - Warning: monitoring.Alert().GreaterOrEqual(100).For(5 * time.Minute), - Panel: monitoring.Panel().LegendFormat("failed unlock requests"), - Owner: monitoring.ObservableOwnerSource, - NextSteps: ` - - **Check container logs for network connection issues and log entries from the githubcom-concurrency-limiter logger. - - **Check redis-store health.`, - }, - }, - { - { - Name: "src_githubcom_concurrency_lock_requests", - Description: "number of locks taken global mutex", - Query: `sum(rate(src_githubcom_concurrency_lock_requests[5m]))`, - NoAlert: true, - Panel: monitoring.Panel().LegendFormat("number of requests"), - Owner: monitoring.ObservableOwnerSource, - Interpretation: "A high number of locks indicates heavy usage of the GitHub API. This might not be a problem, but you should check if request counts are expected.", - }, - { - Name: "src_githubcom_concurrency_lock_acquire_duration_seconds_latency_p75", - Description: "75 percentile latency of src_githubcom_concurrency_lock_acquire_duration_seconds", - Query: `histogram_quantile(0.75, sum(rate(src_githubcom_concurrency_lock_acquire_duration_seconds_bucket[5m])) by (le))`, - NoAlert: true, - Panel: monitoring.Panel().LegendFormat("lock acquire latency").Unit(monitoring.Milliseconds), - Owner: monitoring.ObservableOwnerSource, - Interpretation: `99 percentile latency of acquiring the global GitHub concurrency lock.`, - }, - }, - }, - }, - }, - } -} From 017ff36f91b504c0dd7e552da838108bd6e1a995 Mon Sep 17 00:00:00 2001 From: Thorsten Ball Date: Wed, 15 Nov 2023 14:49:26 +0100 Subject: [PATCH 029/222] github repos: do not log "exclude forks" (#58334) Seems like this was a debug leftover. --- internal/repos/github.go | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/internal/repos/github.go b/internal/repos/github.go index 13c98f3fd4372..b574db13724ac 100644 --- a/internal/repos/github.go +++ b/internal/repos/github.go @@ -121,10 +121,7 @@ func newGitHubSource( return nil, err } - var ( - eb excludeBuilder - excludeForks bool - ) + var eb excludeBuilder excludeArchived := func(repo any) bool { if githubRepo, ok := repo.(github.Repository); ok { return githubRepo.IsArchived @@ -142,7 +139,6 @@ func newGitHubSource( eb.Generic(excludeArchived) } if r.Forks { - excludeForks = true eb.Generic(excludeFork) } eb.Exact(r.Name) @@ -202,7 +198,6 @@ func newGitHubSource( markInternalReposAsPublic: (c.Authorization != nil) && c.Authorization.MarkInternalReposAsPublic, logger: logger.With( log.Object("GitHubSource", - log.Bool("excludeForks", excludeForks), log.Bool("githubDotCom", githubDotCom), log.String("originalHostname", originalHostname), ), From 4ec486eb5e05826ba282d8cfc9563eedf4398f99 Mon Sep 17 00:00:00 2001 From: Thorsten Ball Date: Wed, 15 Nov 2023 15:13:00 +0100 Subject: [PATCH 030/222] repos: fix slow TestSources_ListRepos test (#58338) This test requires Redis under the hood. I do have Redis running, but since `redis-cache` and `redis-store` aren't valid hostnames on my local machine, the tests couldn't connect and would timeout, leading to a long test run time. Before: $ time go test -run 'TestSources_ListRepos$' ./internal/repos -count=1 [...] 5.90s user 2.04s system 19% cpu 39.877 total After: $ time go test -run 'TestSources_ListRepos$' ./internal/repos -count=1 [...] 3.78s user 1.64s system 135% cpu 3.993 total --- internal/repos/sources_test.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/internal/repos/sources_test.go b/internal/repos/sources_test.go index 757cb7c92748f..a7674a9e9b463 100644 --- a/internal/repos/sources_test.go +++ b/internal/repos/sources_test.go @@ -23,6 +23,8 @@ import ( "github.com/sourcegraph/sourcegraph/internal/extsvc/phabricator" "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/httptestutil" + "github.com/sourcegraph/sourcegraph/internal/ratelimit" + "github.com/sourcegraph/sourcegraph/internal/rcache" "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/internal/types/typestest" "github.com/sourcegraph/sourcegraph/schema" @@ -40,6 +42,9 @@ func TestSources_ListRepos(t *testing.T) { }) defer conf.Mock(nil) + rcache.SetupForTest(t) + ratelimit.SetupForTest(t) + type testCase struct { name string ctx context.Context From 734b0ef26fb29484e9886b0197ac881d2c4ba372 Mon Sep 17 00:00:00 2001 From: Vincent Date: Wed, 15 Nov 2023 17:14:53 +0100 Subject: [PATCH 031/222] sec: updata grafana base image (#58332) This resolves some detected CVE in the Grafana base image. --- dev/oci_deps.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/oci_deps.bzl b/dev/oci_deps.bzl index ce60f4543c3ea..53c833460b30b 100644 --- a/dev/oci_deps.bzl +++ b/dev/oci_deps.bzl @@ -71,7 +71,7 @@ def oci_deps(): oci_pull( name = "wolfi_grafana_base", - digest = "sha256:07a31e9c49300872deeb162910207611261475634bd7bc92e4dcf9a285c98f16", + digest = "sha256:461ef0c0233c20716398a0ad1a38dc2df955e26ec091400f64a18fa7de9d2621", image = "us.gcr.io/sourcegraph-dev/wolfi-grafana", ) From 79e1550735bd81c2b1b66ca478e517b565855f6a Mon Sep 17 00:00:00 2001 From: Louis Jarvis <31862633+loujar@users.noreply.github.com> Date: Wed, 15 Nov 2023 09:51:17 -0800 Subject: [PATCH 032/222] Github commit signing feature page link (#58318) added link to Github commit signing feature page --- doc/admin/config/batch_changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/admin/config/batch_changes.md b/doc/admin/config/batch_changes.md index f104e001804e8..b5c411f6e8e70 100644 --- a/doc/admin/config/batch_changes.md +++ b/doc/admin/config/batch_changes.md @@ -190,7 +190,7 @@ Gerrit | API call | āœ— | āœ“ | Requires ["delete own changes" permission](https Sourcegraph 5.1+ -Sourcegraph can be configured to sign commits pushed to GitHub using a GitHub App. Commit signing prevents tampering by unauthorized parties and provides a way to ensure that commits pushed to branches created by Batch Changes actually do come from Sourcegraph. Enabling commit signing for Batch Changes can also help pass checks in build systems or CI/CD pipelines that require that all commits are signed and verified before they can be merged. +Sourcegraph can be configured to [sign commits pushed to GitHub](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) using a GitHub App. Commit signing prevents tampering by unauthorized parties and provides a way to ensure that commits pushed to branches created by Batch Changes actually do come from Sourcegraph. Enabling commit signing for Batch Changes can also help pass checks in build systems or CI/CD pipelines that require that all commits are signed and verified before they can be merged. At present, only GitHub code hosts (both Cloud and Enterprise) are supported, and only GitHub App signing is supported. Support for other code hosts and signing methods may be added in the future. From 2443a0c1d9885a4630ccc3cf5c420aa102294635 Mon Sep 17 00:00:00 2001 From: Chris Warwick Date: Wed, 15 Nov 2023 14:04:10 -0500 Subject: [PATCH 033/222] Replace default httpclient for cody requests (#58343) switch completions & embeddings requests to an uncached client --- internal/completions/client/client.go | 12 ++++++------ internal/embeddings/embed/embed.go | 6 +++--- internal/httpcli/client.go | 12 +++++++++++- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/internal/completions/client/client.go b/internal/completions/client/client.go index 98fa0b2c652d2..60cc8b1db9af4 100644 --- a/internal/completions/client/client.go +++ b/internal/completions/client/client.go @@ -33,17 +33,17 @@ func Get( func getBasic(endpoint string, provider conftypes.CompletionsProviderName, accessToken string) (types.CompletionsClient, error) { switch provider { case conftypes.CompletionsProviderNameAnthropic: - return anthropic.NewClient(httpcli.ExternalDoer, endpoint, accessToken), nil + return anthropic.NewClient(httpcli.UncachedExternalDoer, endpoint, accessToken), nil case conftypes.CompletionsProviderNameOpenAI: - return openai.NewClient(httpcli.ExternalDoer, endpoint, accessToken), nil + return openai.NewClient(httpcli.UncachedExternalDoer, endpoint, accessToken), nil case conftypes.CompletionsProviderNameAzureOpenAI: - return azureopenai.NewClient(httpcli.ExternalDoer, endpoint, accessToken), nil + return azureopenai.NewClient(httpcli.UncachedExternalDoer, endpoint, accessToken), nil case conftypes.CompletionsProviderNameSourcegraph: - return codygateway.NewClient(httpcli.ExternalDoer, endpoint, accessToken) + return codygateway.NewClient(httpcli.UncachedExternalDoer, endpoint, accessToken) case conftypes.CompletionsProviderNameFireworks: - return fireworks.NewClient(httpcli.ExternalDoer, endpoint, accessToken), nil + return fireworks.NewClient(httpcli.UncachedExternalDoer, endpoint, accessToken), nil case conftypes.CompletionsProviderNameAWSBedrock: - return awsbedrock.NewClient(httpcli.ExternalDoer, endpoint, accessToken), nil + return awsbedrock.NewClient(httpcli.UncachedExternalDoer, endpoint, accessToken), nil default: return nil, errors.Newf("unknown completion stream provider: %s", provider) } diff --git a/internal/embeddings/embed/embed.go b/internal/embeddings/embed/embed.go index b27b152f66bfe..b8956dff115b8 100644 --- a/internal/embeddings/embed/embed.go +++ b/internal/embeddings/embed/embed.go @@ -25,11 +25,11 @@ import ( func NewEmbeddingsClient(config *conftypes.EmbeddingsConfig) (client.EmbeddingsClient, error) { switch config.Provider { case conftypes.EmbeddingsProviderNameSourcegraph: - return sourcegraph.NewClient(httpcli.ExternalClient, config), nil + return sourcegraph.NewClient(httpcli.UncachedExternalClient, config), nil case conftypes.EmbeddingsProviderNameOpenAI: - return openai.NewClient(httpcli.ExternalClient, config), nil + return openai.NewClient(httpcli.UncachedExternalClient, config), nil case conftypes.EmbeddingsProviderNameAzureOpenAI: - return azureopenai.NewClient(httpcli.ExternalClient, config), nil + return azureopenai.NewClient(httpcli.UncachedExternalClient, config), nil default: return nil, errors.Newf("invalid provider %q", config.Provider) } diff --git a/internal/httpcli/client.go b/internal/httpcli/client.go index e5be80bfcf885..6d194c2e8c43c 100644 --- a/internal/httpcli/client.go +++ b/internal/httpcli/client.go @@ -160,9 +160,14 @@ func newExternalClientFactory(cache bool, middleware ...Middleware) *Factory { // convenience for existing uses of http.DefaultClient. // WARN: This client caches entire responses for etag matching. Do not use it for // one-off requests if possible, and definitely not for larger payloads, like -// downloading arbitrarily sized files! See UncachedExternalClient instead. +// downloading arbitrarily sized files! See UncachedExternalDoer instead. var ExternalDoer, _ = ExternalClientFactory.Doer() +// UncachedExternalDoer is a shared client for external communication. This is a +// convenience for existing uses of http.DefaultClient. +// This client does not cache responses. To cache responses see ExternalDoer instead. +var UncachedExternalDoer, _ = UncachedExternalClientFactory.Doer() + // ExternalClient returns a shared client for external communication. This is // a convenience for existing uses of http.DefaultClient. // WARN: This client caches entire responses for etag matching. Do not use it for @@ -170,6 +175,11 @@ var ExternalDoer, _ = ExternalClientFactory.Doer() // downloading arbitrarily sized files! See UncachedExternalClient instead. var ExternalClient, _ = ExternalClientFactory.Client() +// UncachedExternalClient returns a shared client for external communication. This is +// a convenience for existing uses of http.DefaultClient. +// WARN: This client does not cache responses. To cache responses see ExternalClient instead. +var UncachedExternalClient, _ = UncachedExternalClientFactory.Client() + // InternalClientFactory is a httpcli.Factory with common options // and middleware pre-set for communicating with internal services. var InternalClientFactory = NewInternalClientFactory("internal") From cb882048f1a5a91aceaebf12d0015dd3adcaa49a Mon Sep 17 00:00:00 2001 From: Mohammad Alam Date: Wed, 15 Nov 2023 14:42:17 -0500 Subject: [PATCH 034/222] release 5.2.3 in progress (#58349) --- dev/release/release-config.jsonc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/dev/release/release-config.jsonc b/dev/release/release-config.jsonc index 4c09e4cdfd9da..007914fe2f57b 100644 --- a/dev/release/release-config.jsonc +++ b/dev/release/release-config.jsonc @@ -22,6 +22,14 @@ "current": "5.2.0", "captainGitHubUsername": "unknwon", "captainSlackUsername": "joe" + }, + "5.2.3": { + "codeFreezeDate": "2023-11-08T10:00:00.000-08:00", + "securityApprovalDate": "2023-11-08T10:00:00.000-08:00", + "releaseDate": "2023-11-15T10:00:00.000-08:00", + "current": "5.2.3", + "captainGitHubUsername": "mohammadualam", + "captainSlackUsername": "mohammad.alam" } }, "dryRun": { @@ -30,5 +38,15 @@ "trackingIssues": false, "calendar": false, "slack": false + }, + "in_progress": { + "captainGitHubUsername": "mohammadualam", + "captainSlackUsername": "mohammad.alam", + "releases": [ + { + "version": "5.2.3", + "previous": "5.2.2" + } + ] } } \ No newline at end of file From 8ac56cacf3ecf6c4ca5f706265edae8d85a7145a Mon Sep 17 00:00:00 2001 From: Vincent Date: Wed, 15 Nov 2023 21:18:23 +0100 Subject: [PATCH 035/222] sec: Make GraphQL cost limits configurable (#58346) * add ratelimit configuration to site-admin --- CHANGELOG.md | 2 +- cmd/frontend/graphqlbackend/graphqlbackend.go | 2 +- cmd/frontend/graphqlbackend/rate_limit.go | 4 ---- cmd/frontend/graphqlbackend/search_test.go | 2 +- cmd/frontend/graphqlbackend/testing.go | 3 ++- cmd/frontend/internal/httpapi/graphql.go | 6 +++-- internal/conf/computed.go | 23 +++++++++++++++++++ schema/schema.go | 12 +++++++++- schema/site.schema.json | 21 +++++++++++++++++ 9 files changed, 64 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70d4d3e8f18fd..6094aa200d283 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,7 +52,7 @@ All notable changes to Sourcegraph are documented in this file. ### Added -- +- Added configurable GraphQL query cost limitations to prevent unintended resource exhaustion. Default values are now provided and enforced, replacing the previously unlimited behaviour. For more information, please refer to: [GraphQL Cost Limits Documentation](https://docs.sourcegraph.com/api/graphql#cost-limits). See details at [#58346](https://github.com/sourcegraph/sourcegraph/pull/58346). ### Changed diff --git a/cmd/frontend/graphqlbackend/graphqlbackend.go b/cmd/frontend/graphqlbackend/graphqlbackend.go index b74d0906c1406..f7378b8c7bc86 100644 --- a/cmd/frontend/graphqlbackend/graphqlbackend.go +++ b/cmd/frontend/graphqlbackend/graphqlbackend.go @@ -633,7 +633,7 @@ func NewSchema( opts := []graphql.SchemaOpt{ graphql.Tracer(newRequestTracer(log.Scoped("GraphQL"), db)), graphql.UseStringDescriptions(), - graphql.MaxDepth(maxDepth), + graphql.MaxDepth(conf.RateLimits().GraphQLMaxDepth), } opts = append(opts, graphqlOpts...) return graphql.ParseSchema( diff --git a/cmd/frontend/graphqlbackend/rate_limit.go b/cmd/frontend/graphqlbackend/rate_limit.go index 70f7c7c1e2fd8..529e71d7db10d 100644 --- a/cmd/frontend/graphqlbackend/rate_limit.go +++ b/cmd/frontend/graphqlbackend/rate_limit.go @@ -22,10 +22,6 @@ import ( // the algorithm const costEstimateVersion = 2 -const MaxAliasCount = 500 // SECURITY: prevent too many aliased queries -const MaxFieldCount = 500 * 1000 // SECURITY: prevent deeply nested or overly broad queries -const maxDepth = 30 // SECURITY: prevent deep queries that consume too many resources - type QueryCost struct { FieldCount int MaxDepth int diff --git a/cmd/frontend/graphqlbackend/search_test.go b/cmd/frontend/graphqlbackend/search_test.go index 5580c2d832695..278a29cc93cbf 100644 --- a/cmd/frontend/graphqlbackend/search_test.go +++ b/cmd/frontend/graphqlbackend/search_test.go @@ -122,7 +122,7 @@ func TestSearch(t *testing.T) { sr := newSchemaResolver(db, gsClient) gqlSchema, err := graphql.ParseSchema(mainSchema, sr, graphql.Tracer(newRequestTracer(logtest.Scoped(t), db)), - graphql.MaxDepth(maxDepth)) + graphql.MaxDepth(conf.RateLimits().GraphQLMaxDepth)) if err != nil { t.Fatal(err) } diff --git a/cmd/frontend/graphqlbackend/testing.go b/cmd/frontend/graphqlbackend/testing.go index c32465631b562..957319793d751 100644 --- a/cmd/frontend/graphqlbackend/testing.go +++ b/cmd/frontend/graphqlbackend/testing.go @@ -15,6 +15,7 @@ import ( gqlerrors "github.com/graph-gophers/graphql-go/errors" "github.com/stretchr/testify/require" + "github.com/sourcegraph/sourcegraph/internal/conf" "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/gitserver" ) @@ -31,7 +32,7 @@ func mustParseGraphQLSchemaWithClient(t *testing.T, db database.DB, gitserverCli gitserverClient, []OptionalResolver{}, graphql.PanicHandler(printStackTrace{&gqlerrors.DefaultPanicHandler{}}), - graphql.MaxDepth(maxDepth), + graphql.MaxDepth(conf.RateLimits().GraphQLMaxDepth), ) if parseSchemaErr != nil { t.Fatal(parseSchemaErr) diff --git a/cmd/frontend/internal/httpapi/graphql.go b/cmd/frontend/internal/httpapi/graphql.go index 90902cfa53614..cf8e4190a791d 100644 --- a/cmd/frontend/internal/httpapi/graphql.go +++ b/cmd/frontend/internal/httpapi/graphql.go @@ -131,11 +131,13 @@ func serveGraphQL(logger log.Logger, schema *graphql.Schema, rlw graphqlbackend. // Track the cost distribution of requests in a histogram. costHistogram.WithLabelValues(actorTypeLabel(isInternal, anonymous, requestSource)).Observe(float64(cost.FieldCount)) - if !isInternal && (cost.AliasCount > graphqlbackend.MaxAliasCount) { + rl := conf.RateLimits() + + if !isInternal && (cost.AliasCount > rl.GraphQLMaxAliases) { return writeViolationError(w, "query exceeds maximum query cost") } - if !isInternal && (cost.FieldCount > graphqlbackend.MaxFieldCount) { + if !isInternal && (cost.FieldCount > rl.GraphQLMaxFieldCount) { if envvar.SourcegraphDotComMode() { // temporarily logging queries that exceed field count limit on Sourcegraph.com logger.Warn("GQL cost limit exceeded", log.String("query", params.Query)) } diff --git a/internal/conf/computed.go b/internal/conf/computed.go index 699389c62987e..a05715731adb4 100644 --- a/internal/conf/computed.go +++ b/internal/conf/computed.go @@ -460,6 +460,29 @@ func PasswordPolicyEnabled() bool { return pc.Enabled } +func RateLimits() schema.RateLimits { + rl := schema.RateLimits{ + GraphQLMaxAliases: 500, + GraphQLMaxFieldCount: 500_000, + GraphQLMaxDepth: 30, + } + + configured := Get().RateLimits + + if configured != nil { + if configured.GraphQLMaxAliases <= 0 { + rl.GraphQLMaxAliases = configured.GraphQLMaxAliases + } + if configured.GraphQLMaxFieldCount <= 0 { + rl.GraphQLMaxFieldCount = configured.GraphQLMaxFieldCount + } + if configured.GraphQLMaxDepth <= 0 { + rl.GraphQLMaxDepth = configured.GraphQLMaxDepth + } + } + return rl +} + // By default, password reset links are valid for 4 hours. const defaultPasswordLinkExpiry = 14400 diff --git a/schema/schema.go b/schema/schema.go index de4699c6136be..b5f54a7a85f33 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -1983,6 +1983,14 @@ type Ranking struct { // RepoScores description: a map of URI directories to numeric scores for specifying search result importance, like {"github.com": 500, "github.com/sourcegraph": 300, "github.com/sourcegraph/sourcegraph": 100}. Would rank "github.com/sourcegraph/sourcegraph" as 500+300+100=900, and "github.com/other/foo" as 500. RepoScores map[string]float64 `json:"repoScores,omitempty"` } +type RateLimits struct { + // GraphQLMaxAliases description: Maximum number of aliases allowed in a GraphQL query + GraphQLMaxAliases int `json:"graphQLMaxAliases,omitempty"` + // GraphQLMaxDepth description: Maximum depth of nested objects allowed for GraphQL queries. Changes to this setting require a restart. + GraphQLMaxDepth int `json:"graphQLMaxDepth,omitempty"` + // GraphQLMaxFieldCount description: Maximum number of estimated fields allowed in a GraphQL response + GraphQLMaxFieldCount int `json:"graphQLMaxFieldCount,omitempty"` +} // RepoPurgeWorker description: Configuration for repository purge worker. type RepoPurgeWorker struct { @@ -2731,7 +2739,8 @@ type SiteConfiguration struct { // PermissionsUserMapping description: Settings for Sourcegraph explicit permissions, which allow the site admin to explicitly manage repository permissions via the GraphQL API. This will mark repositories as restricted by default. PermissionsUserMapping *PermissionsUserMapping `json:"permissions.userMapping,omitempty"` // ProductResearchPageEnabled description: Enables users access to the product research page in their settings. - ProductResearchPageEnabled *bool `json:"productResearchPage.enabled,omitempty"` + ProductResearchPageEnabled *bool `json:"productResearchPage.enabled,omitempty"` + RateLimits *RateLimits `json:"rateLimits,omitempty"` // RedactOutboundRequestHeaders description: Enables redacting sensitive information from outbound requests. Important: We only respect this setting in development environments. In production, we always redact outbound requests. RedactOutboundRequestHeaders *bool `json:"redactOutboundRequestHeaders,omitempty"` // RepoConcurrentExternalServiceSyncers description: The number of concurrent external service syncers that can run. @@ -2906,6 +2915,7 @@ func (v *SiteConfiguration) UnmarshalJSON(data []byte) error { delete(m, "permissions.syncUsersMaxConcurrency") delete(m, "permissions.userMapping") delete(m, "productResearchPage.enabled") + delete(m, "rateLimits") delete(m, "redactOutboundRequestHeaders") delete(m, "repoConcurrentExternalServiceSyncers") delete(m, "repoListUpdateInterval") diff --git a/schema/site.schema.json b/schema/site.schema.json index 2a9d8f48e112e..2dcd401f98a31 100644 --- a/schema/site.schema.json +++ b/schema/site.schema.json @@ -49,6 +49,27 @@ "type": "boolean", "default": false }, + "rateLimits": { + "type": "object", + "additionalProperties": false, + "properties": { + "graphQLMaxDepth": { + "description": "Maximum depth of nested objects allowed for GraphQL queries. Changes to this setting require a restart.", + "type": "integer", + "default": 30 + }, + "graphQLMaxAliases": { + "description": "Maximum number of aliases allowed in a GraphQL query", + "type": "integer", + "default": 500 + }, + "graphQLMaxFieldCount": { + "description": "Maximum number of estimated fields allowed in a GraphQL response", + "type": "integer", + "default": 500000 + } + } + }, "exportUsageTelemetry": { "type": "object", "additionalProperties": false, From 78740e2dcc61839630d5103a3ed33eff7f1cce7f Mon Sep 17 00:00:00 2001 From: Maedah Batool Date: Wed, 15 Nov 2023 14:14:48 -0800 Subject: [PATCH 036/222] Remove duplicated table item from Feature Reference (#58355) --- doc/cody/feature-reference.md | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/cody/feature-reference.md b/doc/cody/feature-reference.md index 331a332903b0d..60939a349c61c 100644 --- a/doc/cody/feature-reference.md +++ b/doc/cody/feature-reference.md @@ -42,7 +42,6 @@ Here's a feature parity matrix that compares the capabilities of Cody Clients ac | Slash (`/`) commands | āœ“ | x | x | | Chat predictions | āœ“ | x | x | | Show context files | āœ“ | āœ“ | āœ“ | -| Show context files | āœ“ | āœ“ | āœ“ | | Custom commands | āœ“ | x | x | | Clear chat history | āœ“ | āœ“ | x | From e7e166ed8a3fbc46a981a8bff87412141340f08d Mon Sep 17 00:00:00 2001 From: Mohammad Alam Date: Wed, 15 Nov 2023 17:40:58 -0500 Subject: [PATCH 037/222] Update CHANGELOG.md (#58357) --- CHANGELOG.md | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6094aa200d283..2c43c42868f79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,24 +48,16 @@ All notable changes to Sourcegraph are documented in this file. - The feature flag `search-ranking` is now completely removed. [#58156](https://github.com/sourcegraph/sourcegraph/pull/58156) - The notepad UI, notebook creation feature. [#58217](https://github.com/sourcegraph/sourcegraph/pull/58217) -## Unreleased 5.2.3 +## 5.2.3 ### Added - Added configurable GraphQL query cost limitations to prevent unintended resource exhaustion. Default values are now provided and enforced, replacing the previously unlimited behaviour. For more information, please refer to: [GraphQL Cost Limits Documentation](https://docs.sourcegraph.com/api/graphql#cost-limits). See details at [#58346](https://github.com/sourcegraph/sourcegraph/pull/58346). -### Changed - -- - ### Fixed - Defining file filters for embeddings jobs no longer causes all files to be skipped if `MaxFileSizeBytes` isn't defined. [#58262](https://github.com/sourcegraph/sourcegraph/pull/58262) -### Removed - -- - ## 5.2.2 ### Added From babd8f74e5114df65184f8908c96b06b57ac420b Mon Sep 17 00:00:00 2001 From: Maedah Batool Date: Wed, 15 Nov 2023 15:41:09 -0800 Subject: [PATCH 038/222] [Cody GA Docs] Improve and Update Cody with Sourcegraph Search (#58213) * Improve and Update Cody with Sourcegraph Search * Rmv more benefits section * Rmv code graph configure with VS Code docs * Add small tweaks * Add limits * Add feedback from Taylor * Add feedback from Ryan --- doc/cody/overview/cody-with-sourcegraph.md | 60 +++++++++++++--------- doc/cody/overview/index.md | 4 ++ doc/cody/overview/install-vscode.md | 12 +++-- doc/sidebar.md | 2 +- 4 files changed, 48 insertions(+), 30 deletions(-) diff --git a/doc/cody/overview/cody-with-sourcegraph.md b/doc/cody/overview/cody-with-sourcegraph.md index d46b6c54f4550..5bba7f275809b 100644 --- a/doc/cody/overview/cody-with-sourcegraph.md +++ b/doc/cody/overview/cody-with-sourcegraph.md @@ -97,51 +97,61 @@ -# Enabling Cody with Sourcegraph.com +# Cody for Web -

    Learn how to connect and use Cody with the Sourcegraph instance.

    +

    Learn how to use Cody in the web interface with Sourcegraph.com

    -Cody uses Sourcegraph to provide contextually relevant answers and code. To install and use Cody with your [code editor](./../overview/install-vscode.md) or [desktop app](./../overview/app/index.md), you must connect it to your Sourcegraph.com account. For more advanced and customized usage, it's recommended to [enable Cody for Enterprise](enable-cody-enterprise.md). +In addition to the Cody extensions for [VS Code](./install-vscode.md), [JetBrains](./install-jetbrains.md) IDEs, and [Neovim](./install-neovim.md), Cody is also available in the Sourcegraph web app. Community users can use Cody for free by logging into their accounts on Sourcegraph.com, and enterprise users can use Cody within their Sourcegraph instance. ## Initial setup -- [Create a Sourcegraph.com account](https://sourcegraph.com/sign-up) -- Install [the Cody VS Code extension](https://marketplace.visualstudio.com/items?itemName=sourcegraph.cody-ai) -- Open the Cody extension -- Click on **Other Sign In Options...** and select Sign in to Sourcegraph.com -- Follow the prompts to authorize Cody to access your Sourcegraph.com account +Create a [Sourcegraph.com account](https://sourcegraph.com/sign-up) by logging in through codehosts like GitHub and GitLab or via traditional Google sign-in. This takes you to Sourcegraph's Code Search interface, where you can chat with and get help from Cody in the web. -You've now successfully connected Cody to your Sourcegraph.com instance. +Enterprise users can also log in to their Sourcegraph.com Enterprise instance and use Cody in the web interface. -## Configure code graph context for code-aware answers +## Using Cody chat -After connecting Cody to Sourcegraph.com, you can optionally use [code graph context](./../core-concepts/code-graph.md) to improve Cody's context of existing code. Note that code graph context is only available for public repositories on sourcegraph.com, which have embeddings. +To view how Cody works in the web, let's try running a global Sourcegraph search query on a repository of your choice. -You can view the [list of repositories with embeddings here](../embedded-repos.md). To add any of these to your dev environment, contact a Sourcegraph team member via [Discord](https://discord.gg/8wJF5EdAyA) to get help with the access and setup. + -To use Cody with code graph on private code, it's recommended to download the [Cody App](./../overview/app/index.md) or [enable Cody for Enterprise](enable-cody-enterprise.md). +You can view the default **Ask Cody** chat interface on the right sidebar. Once connected, Cody automatically gains context to your connected codebase to help you provide contextually-aware and accurate answers to your questions. There are also example questions that you can use to get started. -### Enable code graph context +When using Cody chat in the web, you can select up to 10 repositories to use as context for your question. If you're logged in to Sourcegraph.com, these can be any **ten** open source repositories that Sourcegraph indexes. If you're an enterprise customer logged in to your company's Sourcegraph instance, these can be any ten repositories indexed by your site admin. -The `Cody: Codebase` setting in VS Code enables codebase-aware answers for the Cody extension. Enter the repository's name with embeddings, and Cody can provide more accurate and relevant answers to your coding questions based on that repository's content. To configure this setting in VS Code: +Let's **Ask Cody** to explain the tech stack of a repository. -- Open the **Cody Extension Settings** -- Search for the `Cody: Codebase` -- Enter the repository name -- For example: `github.com/sourcegraph/sourcegraph` without the `https` protocol + -## More benefits +## Run Commands -Read more about [Cody capabilities](./../capabilities.md) to learn about all the features it provides to boost your development productivity. +You can also run predefined, reusable prompts [Cody Commands](./../capabilities.md#commands) on your Code Search results. These help you generate contextually aware answers for a selected code snippet or the entire codebase. You can run the following commands: + +- Explain code +- Generate a docstring +- Smell code for bugs +- Generate a unit test +- Improve variable names +- Transpile code to a programming language of your choice + +Let's run a command to generate a unit test for a selected function. + + ## More resources @@ -150,4 +160,4 @@ For more information on what to do next, we recommend the following resources: +
  • + +

    Cody for WebCody for Web

    +

    Use Cody in the Sourcegraph web app.

    +

    Cody AppCody for Desktop

    Free desktop app to try Cody with your local codebase.

    diff --git a/doc/cody/overview/install-vscode.md b/doc/cody/overview/install-vscode.md index 7b5983385fcc7..b044e4e006914 100644 --- a/doc/cody/overview/install-vscode.md +++ b/doc/cody/overview/install-vscode.md @@ -166,12 +166,11 @@ In addition, to support customization and advanced use cases, you can create Cus ## Enable code graph context for context-aware answers (Optional) -After connecting Cody with VS Code, you can optionally use and configure [Code Graph Context](./../core-concepts/code-graph.md) to improve Cody's context of existing code. +After connecting Cody extension to Sourcegraph.com, you can optionally use [Code Graph Context](./../core-concepts/code-graph.md) to improve Cody's context of existing code. Note that Code Graph Context is only available for public repositories on Sourcegraph.com, which have embeddings. -Learn more about how to: +You can view the [list of repositories with embeddings here](../embedded-repos.md). To add any of these to your dev environment, contact a Sourcegraph team member via [Discord](https://discord.gg/8wJF5EdAyA) to get help with the access and setup. -- [Configure code graph context for Sourcegraph.com][cody-with-sourcegraph-config-graph] -- [Configure code graph context for Sourcegraph Enterprise][enable-cody-enterprise-config-graph] +To use Cody with code graph on private code, it's recommended to [enable Cody for Enterprise](enable-cody-enterprise.md). ### Configure Code Graph Context @@ -182,6 +181,11 @@ The `Cody: Codebase` setting in VS Code enables codebase-aware answers for the C - Enter the repository name - For example: `github.com/sourcegraph/sourcegraph` without the `https` protocol +Learn more about how to: + +- [Configure code graph context for Sourcegraph.com][cody-with-sourcegraph-config-graph] +- [Configure code graph context for Sourcegraph Enterprise][enable-cody-enterprise-config-graph] + ## Updating the extension VS Code will typically notify you when updates are available for installed extensions. Follow the prompts to update the Cody AI extension to the latest version. diff --git a/doc/sidebar.md b/doc/sidebar.md index 26b6ed83452f9..2374e0291eb89 100644 --- a/doc/sidebar.md +++ b/doc/sidebar.md @@ -31,8 +31,8 @@ Keep it as a single list with at most 2 levels. (Anything else may not render co - [Cody for VS Code](cody/overview/install-vscode.md) - [Cody for JetBrains](cody/overview/install-jetbrains.md) - [Cody for Neovim](cody/overview/install-neovim.md) + - [Cody for Web](cody/overview/cody-with-sourcegraph.md) - [Cody Desktop App](cody/overview/app/index.md) - - [Cody with Sourcegraph](cody/overview/cody-with-sourcegraph.md) - [Cody Enterprise](cody/overview/enable-cody-enterprise.md) - [Quickstart](cody/quickstart.md) - [Capabilities](cody/capabilities.md) From 20eeb998b7c02a8d65bb71890443ea977146a704 Mon Sep 17 00:00:00 2001 From: Vincent Date: Thu, 16 Nov 2023 01:20:36 +0100 Subject: [PATCH 039/222] docs: Add section about GraphQL cost limts (#58354) * add cost section * add default rate limit sample Co-authored-by: Erik Seliger --- doc/api/graphql/index.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/doc/api/graphql/index.md b/doc/api/graphql/index.md index 169b8ef165167..b30763ed157f3 100644 --- a/doc/api/graphql/index.md +++ b/doc/api/graphql/index.md @@ -9,7 +9,7 @@ The Sourcegraph GraphQL API supports the following types of queries: - Repository and user metadata > NOTE: The API is under active development. Backwards compatibility will be maintained in most -> cases, and backwards-incompatible changes will be documented in the +> cases, and backwards-incompatible changes will be documented in the > [changelog](https://sourcegraph.com/github.com/sourcegraph/sourcegraph/-/blob/CHANGELOG.md). ## Quickstart @@ -93,3 +93,27 @@ i.e. you just need to send the `Authorization` header and a JSON object like `{" ## Examples See "[Sourcegraph GraphQL API examples](examples.md)". + +## Cost Limits + +To ensure system performance and stability, configurable GraphQL query cost limitations have been implemented. This feature is crucial for preventing resource exhaustion due to extensive or overly complex queries. The default configuration looks as follows, and can be modified in site configuration: + +``` + "rateLimits": { + "graphQLMaxAliases": 500, + "graphQLMaxDepth": 30, + "graphQLMaxFieldCount": 500000 + }, +``` + +### GraphQLMaxDepth +- **Default Value**: 30 +- Limits the maximum depth of nested objects in GraphQL queries, preventing deep queries that consume excessive resources. + +### GraphQLMaxFieldCount +- **Default Value**: 500,000 +- Restricts the number of fields in a GraphQL response to avoid overly broad queries. Use pagination where available to manage large data sets effectively. + +### GraphQLMaxAliases +- **Default Value**: 500 +- Sets a cap on the number of aliases in a single GraphQL query, mitigating the risk of resource-intensive queries due to excessive aliasing. From 3d7d0ff7b3ae39af4516d75a8714ffd56b820adf Mon Sep 17 00:00:00 2001 From: William Bezuidenhout Date: Thu, 16 Nov 2023 09:01:38 +0000 Subject: [PATCH 040/222] buildtracker: replace "Is this a flake" with "View test analytics" (#58297) replace "Is this a flake" with "View test analytics" --- dev/build-tracker/notify/slack.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/build-tracker/notify/slack.go b/dev/build-tracker/notify/slack.go index fc826cd2c09b7..1c927f0dd833a 100644 --- a/dev/build-tracker/notify/slack.go +++ b/dev/build-tracker/notify/slack.go @@ -285,8 +285,8 @@ func (c *Client) createMessageBlocks(info *BuildNotification, author string) []s }, &slack.ButtonBlockElement{ Type: slack.METButton, - URL: "https://www.loom.com/share/58cedf44d44c45a292f650ddd3547337", - Text: &slack.TextBlockObject{Type: slack.PlainTextType, Text: "Is this a flake?"}, + URL: "https://buildkite.com/organizations/sourcegraph/analytics/suites/sourcegraph-bazel?branch=main", + Text: &slack.TextBlockObject{Type: slack.PlainTextType, Text: "View test analytics"}, }, }..., ), From c0550d263ffc562859b3a30781fdd51493a10f81 Mon Sep 17 00:00:00 2001 From: Natik Gadzhi Date: Thu, 16 Nov 2023 01:59:34 -0800 Subject: [PATCH 041/222] docs: Fixed a couple links in contributor docs (#58364) - Removed a broken link in `CONTRIBUTING.md`. The handbook article must have been moved. - Added the Discord link into `CONTRIBUTING.md`. - Reworded Slack link to Discord link in the good first issue GH issue template. Co-authored-by: Valery Bugakov --- .github/ISSUE_TEMPLATE/good_first_issue.md | 2 +- CONTRIBUTING.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/good_first_issue.md b/.github/ISSUE_TEMPLATE/good_first_issue.md index 6a0a4b0c5fe1e..dac97a9a4ae22 100644 --- a/.github/ISSUE_TEMPLATE/good_first_issue.md +++ b/.github/ISSUE_TEMPLATE/good_first_issue.md @@ -37,5 +37,5 @@ T-shirt size estimate: **S**. ## Contributors 1. Check out [contributing guidelines](https://github.com/sourcegraph/sourcegraph/blob/main/CONTRIBUTING.md). -2. Join the Sourcegraph [Community Space](https://srcgr.ph/join-community-space) on Slack and join the `#help` channel where the Sourcegraph team can help you! +2. Join the Sourcegraph [Community Space](https://srcgr.ph/join-community-space) on Discord where the Sourcegraph team can help you! 3. Check out [the good first issues board](https://github.com/orgs/sourcegraph/projects/210) to find more curated issues. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 86395a9b50e1f..9dd61c27544ae 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -26,6 +26,7 @@ All interactions with the Sourcegraph open source project are governed by the 6. Once you've chosen an issue, **comment on it to announce that you will be working on it**, making it visible for others that this issue is being tackled. If you end up not creating a pull request for this issue, please delete your comment. 7. If you have any questions, please [refer to the docs first](https://docs.sourcegraph.com/). If you donā€™t find any relevant information, mention the issue author. 8. The issue author will try to provide guidance. Sourcegraph always works in async mode. We will try to answer as soon as possible, but please keep time zones differences in mind. +9. Join the [Sourcegraph Community Space](https://srcgr.ph/join-community-space) on Discord where the Sourcegraph team can help you! ## Can I pick up this issue? @@ -47,7 +48,6 @@ All open issues are not yet solved. If the task is interesting to you, take it a ### Pull Requests - [How to structure](https://docs.sourcegraph.com/dev/background-information/pull_request_reviews#what-makes-an-effective-pull-request-pr) -- [PR guidelines](https://handbook.sourcegraph.com/departments/engineering/dev/onboarding/pr-checklist/) - Git branch name convention: `[developer-initials]/short-feature-description` - [Examples on Github](https://github.com/sourcegraph/sourcegraph/pulls?q=is%3Apr+label%3Ateam%2Ffrontend-platform) - (For Sourcegraph team) [How to accept contributions](https://docs.sourcegraph.com/dev/contributing/accepting_contribution) From 68fb4653b9a709019f7aa0719096975a187ba347 Mon Sep 17 00:00:00 2001 From: Stefan Hengl Date: Thu, 16 Nov 2023 11:12:24 +0100 Subject: [PATCH 042/222] search: add pattern type for new keyword search (#58260) This adds a new pattern type "newStandardRC1" which replaces "standard" if the feature flag "search-new-keyword" is set. Instead of calling Zoekt's parser, we concatenate literals with an AND operator, which should automatically provide 100% compatibility with our current search syntax. Previously we didn't support Sourcegraph specific parts of the query language, such as inline regexp, in our prototype. To switch back and forth between "standard" and "newStandardRC1", I adapted the smart search selector. --- client/branded/BUILD.bazel | 1 + .../toggles/SmartSearchToggleExtended.tsx | 171 ++++++++++++++++++ .../src/search-ui/input/toggles/Toggles.tsx | 75 +++++++- client/shared/src/search/query/scanner.ts | 1 + client/web/src/search/index.ts | 1 + .../web/src/search/input/SearchNavbarItem.tsx | 8 + .../pages/SearchPage/SearchPageInput.tsx | 1 + cmd/frontend/graphqlbackend/schema.graphql | 1 + .../query/querybuilder/regexp_test.go | 42 +++++ internal/search/client/client.go | 9 +- internal/search/client/client_test.go | 5 +- internal/search/job/jobutil/job.go | 4 +- internal/search/job/jobutil/job_test.go | 22 ++- ...rch_file_content_when_type_not_set.golden} | 0 ...rn_searches_repo_path_file_content.golden} | 0 ...arch_file_content_when_type_not_set.golden | 1 + ...ern_searches_repo_path_file_content.golden | 1 + internal/search/query/parser.go | 4 +- internal/search/query/parser_test.go | 23 +++ internal/search/query/query.go | 2 + .../query/testdata/TestConcat/#09.golden | 74 ++++++++ .../query/testdata/TestConcat/#10.golden | 57 ++++++ .../query/testdata/TestConcat/#11.golden | 108 +++++++++++ .../query/testdata/TestConcat/#12.golden | 70 +++++++ .../query/testdata/TestConcat/#13.golden | 41 +++++ .../parens_around_slash...slash.golden | 40 ++++ ...d_patterns_slash...slash_are_regexp.golden | 40 ++++ .../quoted_patterns_are_still_literal.golden | 19 ++ internal/search/query/transformer.go | 9 + internal/search/query/transformer_test.go | 26 +++ internal/search/query/types.go | 3 + internal/search/types.go | 13 +- internal/search/types_test.go | 3 +- internal/search/zoekt/query.go | 31 +--- 34 files changed, 849 insertions(+), 57 deletions(-) create mode 100644 client/branded/src/search-ui/input/toggles/SmartSearchToggleExtended.tsx rename internal/search/job/jobutil/testdata/Test_computeResultTypes/{only_search_file_content_when_type_not_set.golden => newStandardRC1,_only_search_file_content_when_type_not_set.golden} (100%) rename internal/search/job/jobutil/testdata/Test_computeResultTypes/{plain_pattern_searches_repo_path_file_content.golden => newStandardRC1,_plain_pattern_searches_repo_path_file_content.golden} (100%) create mode 100644 internal/search/job/jobutil/testdata/Test_computeResultTypes/standard,_only_search_file_content_when_type_not_set.golden create mode 100644 internal/search/job/jobutil/testdata/Test_computeResultTypes/standard,_plain_pattern_searches_repo_path_file_content.golden create mode 100644 internal/search/query/testdata/TestConcat/#09.golden create mode 100644 internal/search/query/testdata/TestConcat/#10.golden create mode 100644 internal/search/query/testdata/TestConcat/#11.golden create mode 100644 internal/search/query/testdata/TestConcat/#12.golden create mode 100644 internal/search/query/testdata/TestConcat/#13.golden create mode 100644 internal/search/query/testdata/TestParseNewStandard/parens_around_slash...slash.golden create mode 100644 internal/search/query/testdata/TestParseNewStandard/patterns_are_literal_and_slash-delimited_patterns_slash...slash_are_regexp.golden create mode 100644 internal/search/query/testdata/TestParseNewStandard/quoted_patterns_are_still_literal.golden diff --git a/client/branded/BUILD.bazel b/client/branded/BUILD.bazel index 78cf130345611..a573d8c024272 100644 --- a/client/branded/BUILD.bazel +++ b/client/branded/BUILD.bazel @@ -135,6 +135,7 @@ ts_project( "src/search-ui/input/experimental/utils.ts", "src/search-ui/input/toggles/QueryInputToggle.tsx", "src/search-ui/input/toggles/SmartSearchToggle.tsx", + "src/search-ui/input/toggles/SmartSearchToggleExtended.tsx", "src/search-ui/input/toggles/Toggles.tsx", "src/search-ui/input/toggles/index.ts", "src/search-ui/results/AnnotatedSearchExample.tsx", diff --git a/client/branded/src/search-ui/input/toggles/SmartSearchToggleExtended.tsx b/client/branded/src/search-ui/input/toggles/SmartSearchToggleExtended.tsx new file mode 100644 index 0000000000000..f0eb473ee7fed --- /dev/null +++ b/client/branded/src/search-ui/input/toggles/SmartSearchToggleExtended.tsx @@ -0,0 +1,171 @@ +import React, { useCallback, useEffect, useState } from 'react' + +import { mdiClose, mdiRadioboxBlank, mdiRadioboxMarked, mdiHeart } from '@mdi/js' +import classNames from 'classnames' + +import { + Button, + Icon, + Input, + Label, + Popover, + PopoverContent, + PopoverTrigger, + Position, + Tooltip, + H4, + H2, +} from '@sourcegraph/wildcard' + +import type { ToggleProps } from './QueryInputToggle' + +import smartStyles from './SmartSearchToggle.module.scss' +import styles from './Toggles.module.scss' + +export const smartSearchIconSvgPath = + 'M11.3956 20H10.2961L11.3956 13.7778H7.54754C6.58003 13.7778 7.18473 13.1111 7.20671 13.0844C8.62499 11.0578 10.7579 8.03556 13.6054 4H14.7049L13.6054 10.2222H17.4645C17.9042 10.2222 18.1461 10.3911 17.9042 10.8089C13.5615 16.9333 11.3956 20 11.3956 20Z' + +export enum SearchModes { + Smart = 'Smart', + PreciseNew = 'Precise (NEW) šŸ’–', + Precise = 'Precise (legacy)', +} + +interface SmartSearchToggleProps extends Omit { + onSelect: (mode: SearchModes) => void + mode: SearchModes +} + +/** + * A toggle displayed in the QueryInput. + */ +export const SmartSearchToggleExtended: React.FunctionComponent = ({ + onSelect, + interactive = true, + mode, + className, +}) => { + const tooltipValue = mode.toString() + + const interactiveProps = interactive ? {} : { tabIndex: -1, 'aria-hidden': true } + + const [isPopoverOpen, setIsPopoverOpen] = useState(false) + + return ( + setIsPopoverOpen(event.isOpen)}> + + + + + + + setIsPopoverOpen(false)} /> + + ) +} + +const SmartSearchToggleMenu: React.FunctionComponent< + Pick & { closeMenu: () => void } +> = ({ onSelect, mode, closeMenu }) => { + const [getMode, setMode] = useState(mode) + useEffect(() => { + setMode(mode) + }, [mode]) + + const onChange = useCallback( + (value: SearchModes) => { + setMode(value) + // Wait a tiny bit for user to see the selection change before closing the popover + setTimeout(() => { + onSelect(value) + closeMenu() + }, 100) + }, + [onSelect, closeMenu] + ) + + return ( + +
    +

    + Search Mode Picker +

    + +
    + + + +
    + ) +} + +const RadioItem: React.FunctionComponent<{ + value: SearchModes + isChecked: boolean + onSelect: (value: SearchModes) => void + header: string + description: string +}> = ({ value, isChecked, onSelect, header, description }) => ( + +) diff --git a/client/branded/src/search-ui/input/toggles/Toggles.tsx b/client/branded/src/search-ui/input/toggles/Toggles.tsx index 48e5cea2bab9e..82f2960680756 100644 --- a/client/branded/src/search-ui/input/toggles/Toggles.tsx +++ b/client/branded/src/search-ui/input/toggles/Toggles.tsx @@ -5,17 +5,18 @@ import classNames from 'classnames' import { SearchPatternType } from '@sourcegraph/shared/src/graphql-operations' import { - type SearchPatternTypeProps, type CaseSensitivityProps, type SearchPatternTypeMutationProps, type SubmitSearchProps, SearchMode, type SearchModeProps, + type SearchPatternTypeProps, } from '@sourcegraph/shared/src/search' import { findFilter, FilterKind } from '@sourcegraph/shared/src/search/query/query' import { QueryInputToggle } from './QueryInputToggle' import { SmartSearchToggle } from './SmartSearchToggle' +import { SmartSearchToggleExtended, SearchModes } from './SmartSearchToggleExtended' import styles from './Toggles.module.scss' @@ -28,6 +29,11 @@ export interface TogglesProps navbarSearchQuery: string className?: string showSmartSearchButton?: boolean + /** + * If set to true, the search mode picker will let the user select the new + * pattern type as a new alternative + */ + showExtendedPicker?: boolean /** * If set to false makes all buttons non-actionable. The main use case for * this prop is showing the toggles in examples. This is different from @@ -53,6 +59,7 @@ export const Toggles: React.FunctionComponent { + const newPatternType = + patternType !== SearchPatternType.newStandardRC1 + ? SearchPatternType.newStandardRC1 + : SearchPatternType.standard + + setPatternType(newPatternType) + + // We always want precise mode when switching to the experimental pattern type. + setSearchMode(SearchMode.Precise) + + submitOnToggle({ newPatternType }) + }, [patternType, setPatternType, submitOnToggle, setSearchMode]) + const toggleStructuralSearch = useCallback((): void => { const newPatternType: SearchPatternType = patternType !== SearchPatternType.structural ? SearchPatternType.structural : SearchPatternType.standard @@ -100,10 +121,30 @@ export const Toggles: React.FunctionComponent { const newSearchMode: SearchMode = enabled ? SearchMode.SmartSearch : SearchMode.Precise + // Disable the experimental pattern type the user activates smart search + if (patternType === SearchPatternType.newStandardRC1) { + setPatternType(SearchPatternType.standard) + } + setSearchMode(newSearchMode) submitOnToggle({ newSearchMode }) }, - [setSearchMode, submitOnToggle] + [setSearchMode, submitOnToggle, patternType, setPatternType] + ) + + // This is hacky and is just for demo purposes. Once we have made the new + // pattern type the default we can revert this. + const onSelectSearchMode = useCallback( + (mode: SearchModes): void => { + if (mode === SearchModes.Smart) { + onSelectSmartSearch(true) + } else if (mode === SearchModes.PreciseNew) { + toggleNewStandard() + } else { + onSelectSmartSearch(false) + } + }, + [onSelectSmartSearch, toggleNewStandard] ) return ( @@ -168,14 +209,28 @@ export const Toggles: React.FunctionComponent {showSmartSearchButton &&
    } - {showSmartSearchButton && ( - - )} + {showSmartSearchButton && + (showExtendedPicker ? ( + + ) : ( + + ))}
    ) diff --git a/client/shared/src/search/query/scanner.ts b/client/shared/src/search/query/scanner.ts index a4a559972708c..c060824137513 100644 --- a/client/shared/src/search/query/scanner.ts +++ b/client/shared/src/search/query/scanner.ts @@ -538,6 +538,7 @@ export const scanSearchQuery = ( switch (patternType) { case SearchPatternType.standard: case SearchPatternType.lucky: + case SearchPatternType.newStandardRC1: case SearchPatternType.keyword: { return scanStandard(query) } diff --git a/client/web/src/search/index.ts b/client/web/src/search/index.ts index fe1bb615a948c..7ff6b8d4d4550 100644 --- a/client/web/src/search/index.ts +++ b/client/web/src/search/index.ts @@ -42,6 +42,7 @@ export function parseSearchURLPatternType(query: string): SearchPatternType | un case SearchPatternType.regexp: case SearchPatternType.structural: case SearchPatternType.lucky: + case SearchPatternType.newStandardRC1: case SearchPatternType.keyword: { return patternType } diff --git a/client/web/src/search/input/SearchNavbarItem.tsx b/client/web/src/search/input/SearchNavbarItem.tsx index d72dd742b37d9..24d931d9d84fb 100644 --- a/client/web/src/search/input/SearchNavbarItem.tsx +++ b/client/web/src/search/input/SearchNavbarItem.tsx @@ -11,6 +11,7 @@ import type { TelemetryProps } from '@sourcegraph/shared/src/telemetry/telemetry import { Form } from '@sourcegraph/wildcard' import type { AuthenticatedUser } from '../../auth' +import { useFeatureFlag } from '../../featureFlags/useFeatureFlag' import { useNavbarQueryState, setSearchCaseSensitivity } from '../../stores' import { type NavbarQueryState, setSearchMode, setSearchPatternType } from '../../stores/navbarSearchQueryState' import { useV2QueryInput } from '../useV2QueryInput' @@ -77,6 +78,12 @@ export const SearchNavbarItem: React.FunctionComponent diff --git a/client/web/src/storm/pages/SearchPage/SearchPageInput.tsx b/client/web/src/storm/pages/SearchPage/SearchPageInput.tsx index 8efc35277d980..7412234e9afd4 100644 --- a/client/web/src/storm/pages/SearchPage/SearchPageInput.tsx +++ b/client/web/src/storm/pages/SearchPage/SearchPageInput.tsx @@ -150,6 +150,7 @@ export const SearchPageInput: FC = props => { setSearchMode={setSearchMode} navbarSearchQuery={queryState.query} showSmartSearchButton={false} + showExtendedPicker={false} structuralSearchDisabled={window.context?.experimentalFeatures?.structuralSearch === 'disabled'} /> diff --git a/cmd/frontend/graphqlbackend/schema.graphql b/cmd/frontend/graphqlbackend/schema.graphql index 1e35ee67bf4e6..b06b3c6a5cd20 100755 --- a/cmd/frontend/graphqlbackend/schema.graphql +++ b/cmd/frontend/graphqlbackend/schema.graphql @@ -2676,6 +2676,7 @@ enum SearchPatternType { structural lucky keyword + newStandardRC1 } """ diff --git a/internal/insights/query/querybuilder/regexp_test.go b/internal/insights/query/querybuilder/regexp_test.go index d782ab9ab6b2c..acea4e43fc610 100644 --- a/internal/insights/query/querybuilder/regexp_test.go +++ b/internal/insights/query/querybuilder/regexp_test.go @@ -167,6 +167,18 @@ func TestReplace_Valid(t *testing.T) { want: autogold.Expect(BasicQuery("/replace(?:you)/")), searchType: query.SearchTypeStandard, }, + { + query: "/replaceme/", + replacement: "replace", + want: autogold.Expect(BasicQuery("/replace/")), + searchType: query.SearchTypeNewStandardRC1, + }, + { + query: "/replace(me)/", + replacement: "you", + want: autogold.Expect(BasicQuery("/replace(?:you)/")), + searchType: query.SearchTypeNewStandardRC1, + }, { query: "/replaceme/", replacement: "replace", @@ -191,6 +203,18 @@ func TestReplace_Valid(t *testing.T) { want: autogold.Expect(BasicQuery("/b(?:u)(?:dd)(er)/")), searchType: query.SearchTypeStandard, }, + { + query: "/b(u)tt(er)/", + replacement: "e", + want: autogold.Expect(BasicQuery("/b(?:e)tt(er)/")), + searchType: query.SearchTypeNewStandardRC1, + }, + { + query: "/b(?:u)(tt)(er)/", + replacement: "dd", + want: autogold.Expect(BasicQuery("/b(?:u)(?:dd)(er)/")), + searchType: query.SearchTypeNewStandardRC1, + }, { query: "replaceme", replacement: "replace", @@ -233,6 +257,12 @@ func TestReplace_Valid(t *testing.T) { want: autogold.Expect(BasicQuery("/(?:findme)<\\/title>/")), searchType: query.SearchTypeStandard, }, + { + query: `/<title>(.*)<\/title>/`, + replacement: "findme", + want: autogold.Expect(BasicQuery("/<title>(?:findme)<\\/title>/")), + searchType: query.SearchTypeNewStandardRC1, + }, } for _, test := range tests { t.Run(test.query, func(t *testing.T) { @@ -263,4 +293,16 @@ func TestReplace_Invalid(t *testing.T) { _, err := NewPatternReplacer("repo:repoA rev:3.40.0", query.SearchTypeStandard) require.ErrorIs(t, err, UnsupportedPatternTypeErr) }) + t.Run("multiple patterns", func(t *testing.T) { + _, err := NewPatternReplacer("/replace(me)/ or asdf", query.SearchTypeNewStandardRC1) + require.ErrorIs(t, err, MultiplePatternErr) + }) + t.Run("literal pattern", func(t *testing.T) { + _, err := NewPatternReplacer("asdf", query.SearchTypeNewStandardRC1) + require.ErrorIs(t, err, UnsupportedPatternTypeErr) + }) + t.Run("filters with no pattern", func(t *testing.T) { + _, err := NewPatternReplacer("repo:repoA rev:3.40.0", query.SearchTypeNewStandardRC1) + require.ErrorIs(t, err, UnsupportedPatternTypeErr) + }) } diff --git a/internal/search/client/client.go b/internal/search/client/client.go index 30ad715a09d64..6a97c466613b1 100644 --- a/internal/search/client/client.go +++ b/internal/search/client/client.go @@ -231,6 +231,8 @@ func SearchTypeFromString(patternType string) (query.SearchType, error) { return query.SearchTypeLucky, nil case "keyword": return query.SearchTypeKeyword, nil + case "newStandardRC1": + return query.SearchTypeNewStandardRC1, nil default: return -1, errors.Errorf("unrecognized patternType %q", patternType) } @@ -252,8 +254,10 @@ func detectSearchType(version string, patternType *string) (query.SearchType, er searchType = query.SearchTypeLiteral case "V3": searchType = query.SearchTypeStandard + case "V4-rc1": + searchType = query.SearchTypeNewStandardRC1 default: - return -1, errors.Errorf("unrecognized version: want \"V1\", \"V2\", or \"V3\", got %q", version) + return -1, errors.Errorf("unrecognized version: want \"V1\", \"V2\", \"V3\", or \"V4-rc1\", got %q", version) } } return searchType, nil @@ -281,6 +285,8 @@ func overrideSearchType(input string, searchType query.SearchType) query.SearchT searchType = query.SearchTypeLucky case "keyword": searchType = query.SearchTypeKeyword + case "newStandardRC1": + searchType = query.SearchTypeNewStandardRC1 } }) return searchType @@ -297,7 +303,6 @@ func ToFeatures(flagSet *featureflag.FlagSet, logger log.Logger) *search.Feature // client/web/src/featureFlags/featureFlags.ts to allow overriding. return &search.Features{ ContentBasedLangFilters: flagSet.GetBoolOr("search-content-based-lang-detection", false), - UseZoektParser: flagSet.GetBoolOr("search-new-keyword", false), Debug: flagSet.GetBoolOr("search-debug", false), } } diff --git a/internal/search/client/client_test.go b/internal/search/client/client_test.go index 2b42d41314eb7..b8483e84c5a37 100644 --- a/internal/search/client/client_test.go +++ b/internal/search/client/client_test.go @@ -30,6 +30,7 @@ func TestDetectSearchType(t *testing.T) { {"V1, no pattern type", "V1", nil, "", query.SearchTypeRegex}, {"V2, no pattern type", "V2", nil, "", query.SearchTypeLiteral}, {"V3, no pattern type", "V3", nil, "", query.SearchTypeStandard}, + {"V4-rc1, no pattern type", "V4-rc1", nil, "", query.SearchTypeNewStandardRC1}, {"V2, no pattern type, input does not produce parse error", "V2", nil, "/-/godoc", query.SearchTypeLiteral}, {"V1, regexp pattern type", "V1", &typeRegexp, "", query.SearchTypeRegex}, {"V2, regexp pattern type", "V2", &typeRegexp, "", query.SearchTypeRegex}, @@ -67,9 +68,9 @@ func TestDetectSearchType(t *testing.T) { patternType: &typeInvalid, errorString: `unrecognized patternType "invalid"`, }, { - version: "V4", + version: "V99", patternType: nil, - errorString: "unrecognized version: want \"V1\", \"V2\", or \"V3\", got \"V4\"", + errorString: "unrecognized version: want \"V1\", \"V2\", \"V3\", or \"V4-rc1\", got \"V99\"", }} for _, tc := range cases { diff --git a/internal/search/job/jobutil/job.go b/internal/search/job/jobutil/job.go index d679bb8ba6151..aaa9b688fb66f 100644 --- a/internal/search/job/jobutil/job.go +++ b/internal/search/job/jobutil/job.go @@ -809,7 +809,7 @@ func (b *jobBuilder) newZoektGlobalSearch(typ search.IndexedRequestType) (job.Jo FileMatchLimit: b.fileMatchLimit, Select: b.selector, Features: *b.features, - KeywordScoring: b.patternType == query.SearchTypeKeyword, + PatternType: b.patternType, } switch typ { @@ -840,7 +840,7 @@ func (b *jobBuilder) newZoektSearch(typ search.IndexedRequestType) (job.Job, err FileMatchLimit: b.fileMatchLimit, Select: b.selector, Features: *b.features, - KeywordScoring: b.patternType == query.SearchTypeKeyword, + PatternType: b.patternType, } switch typ { diff --git a/internal/search/job/jobutil/job_test.go b/internal/search/job/jobutil/job_test.go index 4efb25ecc4371..09f90be0e134c 100644 --- a/internal/search/job/jobutil/job_test.go +++ b/internal/search/job/jobutil/job_test.go @@ -1029,19 +1029,27 @@ func overrideSearchType(input string, searchType query.SearchType) query.SearchT } func Test_computeResultTypes(t *testing.T) { - test := func(input string) string { - plan, _ := query.Pipeline(query.Init(input, query.SearchTypeStandard)) + test := func(input string, searchType query.SearchType) string { + plan, _ := query.Pipeline(query.Init(input, searchType)) b := plan[0] - resultTypes := computeResultTypes(b, query.SearchTypeStandard) + resultTypes := computeResultTypes(b, searchType) return resultTypes.String() } - t.Run("only search file content when type not set", func(t *testing.T) { - autogold.ExpectFile(t, autogold.Raw(test("path:foo content:bar"))) + t.Run("standard, only search file content when type not set", func(t *testing.T) { + autogold.ExpectFile(t, autogold.Raw(test("path:foo content:bar", query.SearchTypeStandard))) + }) + + t.Run("standard, plain pattern searches repo path file content", func(t *testing.T) { + autogold.ExpectFile(t, autogold.Raw(test("path:foo bar", query.SearchTypeStandard))) + }) + + t.Run("newStandardRC1, only search file content when type not set", func(t *testing.T) { + autogold.ExpectFile(t, autogold.Raw(test("path:foo content:bar", query.SearchTypeNewStandardRC1))) }) - t.Run("plain pattern searches repo path file content", func(t *testing.T) { - autogold.ExpectFile(t, autogold.Raw(test("path:foo bar"))) + t.Run("newStandardRC1, plain pattern searches repo path file content", func(t *testing.T) { + autogold.ExpectFile(t, autogold.Raw(test("path:foo bar", query.SearchTypeNewStandardRC1))) }) } diff --git a/internal/search/job/jobutil/testdata/Test_computeResultTypes/only_search_file_content_when_type_not_set.golden b/internal/search/job/jobutil/testdata/Test_computeResultTypes/newStandardRC1,_only_search_file_content_when_type_not_set.golden similarity index 100% rename from internal/search/job/jobutil/testdata/Test_computeResultTypes/only_search_file_content_when_type_not_set.golden rename to internal/search/job/jobutil/testdata/Test_computeResultTypes/newStandardRC1,_only_search_file_content_when_type_not_set.golden diff --git a/internal/search/job/jobutil/testdata/Test_computeResultTypes/plain_pattern_searches_repo_path_file_content.golden b/internal/search/job/jobutil/testdata/Test_computeResultTypes/newStandardRC1,_plain_pattern_searches_repo_path_file_content.golden similarity index 100% rename from internal/search/job/jobutil/testdata/Test_computeResultTypes/plain_pattern_searches_repo_path_file_content.golden rename to internal/search/job/jobutil/testdata/Test_computeResultTypes/newStandardRC1,_plain_pattern_searches_repo_path_file_content.golden diff --git a/internal/search/job/jobutil/testdata/Test_computeResultTypes/standard,_only_search_file_content_when_type_not_set.golden b/internal/search/job/jobutil/testdata/Test_computeResultTypes/standard,_only_search_file_content_when_type_not_set.golden new file mode 100644 index 0000000000000..1a010b1c0f081 --- /dev/null +++ b/internal/search/job/jobutil/testdata/Test_computeResultTypes/standard,_only_search_file_content_when_type_not_set.golden @@ -0,0 +1 @@ +file \ No newline at end of file diff --git a/internal/search/job/jobutil/testdata/Test_computeResultTypes/standard,_plain_pattern_searches_repo_path_file_content.golden b/internal/search/job/jobutil/testdata/Test_computeResultTypes/standard,_plain_pattern_searches_repo_path_file_content.golden new file mode 100644 index 0000000000000..b806262a3ba6b --- /dev/null +++ b/internal/search/job/jobutil/testdata/Test_computeResultTypes/standard,_plain_pattern_searches_repo_path_file_content.golden @@ -0,0 +1 @@ +file|path|repo \ No newline at end of file diff --git a/internal/search/query/parser.go b/internal/search/query/parser.go index 6b4dec939556e..e956ebb7b9d34 100644 --- a/internal/search/query/parser.go +++ b/internal/search/query/parser.go @@ -1094,7 +1094,7 @@ func (p *parser) parseAnd() ([]Node, error) { left, err = p.parseLeaves(Regexp) case SearchTypeLiteral, SearchTypeStructural: left, err = p.parseLeaves(Literal) - case SearchTypeStandard, SearchTypeLucky: + case SearchTypeStandard, SearchTypeLucky, SearchTypeNewStandardRC1: left, err = p.parseLeaves(Literal | Standard) default: left, err = p.parseLeaves(Literal | Standard) @@ -1190,7 +1190,7 @@ func Parse(in string, searchType SearchType) ([]Node, error) { nodes = hoistedNodes } } - if searchType == SearchTypeLiteral || searchType == SearchTypeStandard { + if searchType == SearchTypeLiteral || searchType == SearchTypeStandard || searchType == SearchTypeNewStandardRC1 { err = validatePureLiteralPattern(nodes, parser.balanced == 0) if err != nil { return nil, err diff --git a/internal/search/query/parser_test.go b/internal/search/query/parser_test.go index 4ed55af7fbbb6..42788e16f22df 100644 --- a/internal/search/query/parser_test.go +++ b/internal/search/query/parser_test.go @@ -817,3 +817,26 @@ func TestParseStandard(t *testing.T) { autogold.ExpectFile(t, autogold.Raw(test("(sancerre and /pouilly-fume/)"))) }) } + +func TestParseNewStandard(t *testing.T) { + test := func(input string) string { + result, err := Parse(input, SearchTypeNewStandardRC1) + if err != nil { + return err.Error() + } + jsonStr, _ := PrettyJSON(result) + return jsonStr + } + + t.Run("patterns are literal and slash-delimited patterns slash...slash are regexp", func(t *testing.T) { + autogold.ExpectFile(t, autogold.Raw(test("anjou /saumur/"))) + }) + + t.Run("quoted patterns are still literal", func(t *testing.T) { + autogold.ExpectFile(t, autogold.Raw(test(`"veneto"`))) + }) + + t.Run("parens around slash...slash", func(t *testing.T) { + autogold.ExpectFile(t, autogold.Raw(test("(sancerre and /pouilly-fume/)"))) + }) +} diff --git a/internal/search/query/query.go b/internal/search/query/query.go index 44aff85801899..527d08f54c5b5 100644 --- a/internal/search/query/query.go +++ b/internal/search/query/query.go @@ -101,6 +101,8 @@ func For(searchType SearchType) step { processType = succeeds(escapeParensHeuristic, substituteConcat(fuzzyRegexp)) case SearchTypeStructural: processType = succeeds(labelStructural, ellipsesForHoles, substituteConcat(space)) + case SearchTypeNewStandardRC1: + processType = succeeds(substituteConcat(and)) } normalize := succeeds(LowercaseFieldNames, SubstituteAliases(searchType), SubstituteCountAll) return Sequence(normalize, processType) diff --git a/internal/search/query/testdata/TestConcat/#09.golden b/internal/search/query/testdata/TestConcat/#09.golden new file mode 100644 index 0000000000000..2c46f482a5cea --- /dev/null +++ b/internal/search/query/testdata/TestConcat/#09.golden @@ -0,0 +1,74 @@ +[ + { + "and": [ + { + "value": "alsace", + "negated": false, + "labels": [ + "Regexp" + ], + "range": { + "start": { + "line": 0, + "column": 0 + }, + "end": { + "line": 0, + "column": 8 + } + } + }, + { + "value": "bourgogne", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 9 + }, + "end": { + "line": 0, + "column": 18 + } + } + }, + { + "value": "bordeaux", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 19 + }, + "end": { + "line": 0, + "column": 27 + } + } + }, + { + "value": "champagne", + "negated": false, + "labels": [ + "Regexp" + ], + "range": { + "start": { + "line": 0, + "column": 28 + }, + "end": { + "line": 0, + "column": 39 + } + } + } + ] + } +] \ No newline at end of file diff --git a/internal/search/query/testdata/TestConcat/#10.golden b/internal/search/query/testdata/TestConcat/#10.golden new file mode 100644 index 0000000000000..22fd6b3958528 --- /dev/null +++ b/internal/search/query/testdata/TestConcat/#10.golden @@ -0,0 +1,57 @@ +[ + { + "and": [ + { + "value": "alsace", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 0 + }, + "end": { + "line": 0, + "column": 6 + } + } + }, + { + "value": "bourgogne", + "negated": false, + "labels": [ + "Regexp" + ], + "range": { + "start": { + "line": 0, + "column": 7 + }, + "end": { + "line": 0, + "column": 18 + } + } + }, + { + "value": "bordeaux", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 19 + }, + "end": { + "line": 0, + "column": 27 + } + } + } + ] + } +] \ No newline at end of file diff --git a/internal/search/query/testdata/TestConcat/#11.golden b/internal/search/query/testdata/TestConcat/#11.golden new file mode 100644 index 0000000000000..c94f18d79bbae --- /dev/null +++ b/internal/search/query/testdata/TestConcat/#11.golden @@ -0,0 +1,108 @@ +[ + { + "and": [ + { + "value": "a", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 0 + }, + "end": { + "line": 0, + "column": 1 + } + } + }, + { + "value": "b", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 2 + }, + "end": { + "line": 0, + "column": 3 + } + } + }, + { + "value": "c", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 4 + }, + "end": { + "line": 0, + "column": 5 + } + } + }, + { + "value": "d", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 6 + }, + "end": { + "line": 0, + "column": 7 + } + } + }, + { + "value": "e", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 8 + }, + "end": { + "line": 0, + "column": 9 + } + } + }, + { + "value": "f", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 10 + }, + "end": { + "line": 0, + "column": 11 + } + } + } + ] + } +] \ No newline at end of file diff --git a/internal/search/query/testdata/TestConcat/#12.golden b/internal/search/query/testdata/TestConcat/#12.golden new file mode 100644 index 0000000000000..57bef12f0ad99 --- /dev/null +++ b/internal/search/query/testdata/TestConcat/#12.golden @@ -0,0 +1,70 @@ +[ + { + "value": "a", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 1 + }, + "end": { + "line": 0, + "column": 2 + } + } + }, + { + "value": "b", + "negated": true, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 3 + }, + "end": { + "line": 0, + "column": 8 + } + } + }, + { + "value": "c", + "negated": true, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 9 + }, + "end": { + "line": 0, + "column": 14 + } + } + }, + { + "value": "d", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 15 + }, + "end": { + "line": 0, + "column": 16 + } + } + } +] \ No newline at end of file diff --git a/internal/search/query/testdata/TestConcat/#13.golden b/internal/search/query/testdata/TestConcat/#13.golden new file mode 100644 index 0000000000000..2e28afc32ce32 --- /dev/null +++ b/internal/search/query/testdata/TestConcat/#13.golden @@ -0,0 +1,41 @@ +[ + { + "and": [ + { + "value": "(((a b c)))", + "negated": false, + "labels": [ + "HeuristicParensAsPatterns", + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 0 + }, + "end": { + "line": 0, + "column": 11 + } + } + }, + { + "value": "d", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 16 + }, + "end": { + "line": 0, + "column": 17 + } + } + } + ] + } +] \ No newline at end of file diff --git a/internal/search/query/testdata/TestParseNewStandard/parens_around_slash...slash.golden b/internal/search/query/testdata/TestParseNewStandard/parens_around_slash...slash.golden new file mode 100644 index 0000000000000..85b67ba814533 --- /dev/null +++ b/internal/search/query/testdata/TestParseNewStandard/parens_around_slash...slash.golden @@ -0,0 +1,40 @@ +[ + { + "and": [ + { + "value": "sancerre", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 1 + }, + "end": { + "line": 0, + "column": 9 + } + } + }, + { + "value": "pouilly-fume", + "negated": false, + "labels": [ + "Regexp" + ], + "range": { + "start": { + "line": 0, + "column": 14 + }, + "end": { + "line": 0, + "column": 28 + } + } + } + ] + } +] \ No newline at end of file diff --git a/internal/search/query/testdata/TestParseNewStandard/patterns_are_literal_and_slash-delimited_patterns_slash...slash_are_regexp.golden b/internal/search/query/testdata/TestParseNewStandard/patterns_are_literal_and_slash-delimited_patterns_slash...slash_are_regexp.golden new file mode 100644 index 0000000000000..1a906b5a87bbb --- /dev/null +++ b/internal/search/query/testdata/TestParseNewStandard/patterns_are_literal_and_slash-delimited_patterns_slash...slash_are_regexp.golden @@ -0,0 +1,40 @@ +[ + { + "concat": [ + { + "value": "anjou", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 0 + }, + "end": { + "line": 0, + "column": 5 + } + } + }, + { + "value": "saumur", + "negated": false, + "labels": [ + "Regexp" + ], + "range": { + "start": { + "line": 0, + "column": 6 + }, + "end": { + "line": 0, + "column": 14 + } + } + } + ] + } +] \ No newline at end of file diff --git a/internal/search/query/testdata/TestParseNewStandard/quoted_patterns_are_still_literal.golden b/internal/search/query/testdata/TestParseNewStandard/quoted_patterns_are_still_literal.golden new file mode 100644 index 0000000000000..8d4b12b14c594 --- /dev/null +++ b/internal/search/query/testdata/TestParseNewStandard/quoted_patterns_are_still_literal.golden @@ -0,0 +1,19 @@ +[ + { + "value": "\"veneto\"", + "negated": false, + "labels": [ + "Literal" + ], + "range": { + "start": { + "line": 0, + "column": 0 + }, + "end": { + "line": 0, + "column": 8 + } + } + } +] \ No newline at end of file diff --git a/internal/search/query/transformer.go b/internal/search/query/transformer.go index d0c79946a1553..8f647a96f43f4 100644 --- a/internal/search/query/transformer.go +++ b/internal/search/query/transformer.go @@ -376,6 +376,15 @@ func space(patterns []Pattern) []Node { } } +// and concatenates patterns with AND. +func and(patterns []Pattern) []Node { + p := make([]Node, 0, len(patterns)) + for _, pattern := range patterns { + p = append(p, pattern) + } + return NewOperator(p, And) +} + // substituteConcat returns a function that concatenates all contiguous patterns // in the tree, rooted by a concat operator. Concat operators containing negated // patterns are lifted out: (concat "a" (not "b")) -> ("a" (not "b")) diff --git a/internal/search/query/transformer_test.go b/internal/search/query/transformer_test.go index 8a930b9088a01..82caf2e5014cf 100644 --- a/internal/search/query/transformer_test.go +++ b/internal/search/query/transformer_test.go @@ -27,6 +27,12 @@ func TestSubstituteAliases(t *testing.T) { autogold.Expect(`[{"field":"file","value":"foo","negated":false,"labels":["IsAlias"],"range":{"start":{"line":0,"column":0},"end":{"line":0,"column":8}}}]`). Equal(t, test("path:foo", SearchTypeLiteral)) + + autogold.Expect(`[{"and":[{"field":"repo","value":"repo","negated":false,"labels":["IsAlias"],"range":{"start":{"line":0,"column":0},"end":{"line":0,"column":6}}},{"value":"foo","negated":false,"labels":["Literal"],"range":{"start":{"line":0,"column":7},"end":{"line":0,"column":10}}},{"value":"bar","negated":false,"labels":["Literal"],"range":{"start":{"line":0,"column":11},"end":{"line":0,"column":14}}}]}]`). + Equal(t, test("r:repo foo bar", SearchTypeNewStandardRC1)) + + autogold.Expect(`[{"and":[{"value":"foo","negated":false,"labels":["Literal"],"range":{"start":{"line":0,"column":0},"end":{"line":0,"column":3}}},{"value":"bar","negated":false,"labels":["Literal"],"range":{"start":{"line":0,"column":4},"end":{"line":0,"column":7}}},{"value":"bas","negated":false,"labels":["Regexp"],"range":{"start":{"line":0,"column":8},"end":{"line":0,"column":13}}}]}]`). + Equal(t, test("foo bar /bas/", SearchTypeNewStandardRC1)) } func TestLowercaseFieldNames(t *testing.T) { @@ -186,6 +192,26 @@ func TestConcat(t *testing.T) { t.Run("", func(t *testing.T) { autogold.ExpectFile(t, autogold.Raw(test(`alsace /bourgogne/ bordeaux`, SearchTypeLucky))) }) + + t.Run("", func(t *testing.T) { + autogold.ExpectFile(t, autogold.Raw(test(`/alsace/ bourgogne bordeaux /champagne/`, SearchTypeNewStandardRC1))) + }) + + t.Run("", func(t *testing.T) { + autogold.ExpectFile(t, autogold.Raw(test(`alsace /bourgogne/ bordeaux`, SearchTypeNewStandardRC1))) + }) + + t.Run("", func(t *testing.T) { + autogold.ExpectFile(t, autogold.Raw(test("a b c d e f", SearchTypeNewStandardRC1))) + }) + + t.Run("", func(t *testing.T) { + autogold.ExpectFile(t, autogold.Raw(test("(a not b not c d)", SearchTypeNewStandardRC1))) + }) + + t.Run("", func(t *testing.T) { + autogold.ExpectFile(t, autogold.Raw(test("(((a b c))) and d", SearchTypeNewStandardRC1))) + }) } func TestEllipsesForHoles(t *testing.T) { diff --git a/internal/search/query/types.go b/internal/search/query/types.go index d6f7b260be490..7654f120cc4a6 100644 --- a/internal/search/query/types.go +++ b/internal/search/query/types.go @@ -36,6 +36,7 @@ const ( SearchTypeLucky SearchTypeStandard SearchTypeKeyword + SearchTypeNewStandardRC1 ) func (s SearchType) String() string { @@ -52,6 +53,8 @@ func (s SearchType) String() string { return "lucky" case SearchTypeKeyword: return "keyword" + case SearchTypeNewStandardRC1: + return "newStandardRC1" default: return fmt.Sprintf("unknown{%d}", s) } diff --git a/internal/search/types.go b/internal/search/types.go index 8f3b304cab8b8..6a5ca13c31526 100644 --- a/internal/search/types.go +++ b/internal/search/types.go @@ -197,8 +197,7 @@ type ZoektParameters struct { // Features are feature flags that can affect behaviour of searcher. Features Features - // EXPERIMENTAL: If true, use keyword-style scoring instead of Zoekt's default scoring formula. - KeywordScoring bool + PatternType query.SearchType } // ToSearchOptions converts the parameters to options for the Zoekt search API. @@ -218,7 +217,7 @@ func (o *ZoektParameters) ToSearchOptions(ctx context.Context) (searchOpts *zoek Trace: policy.ShouldTrace(ctx), MaxWallTime: defaultTimeout, ChunkMatches: true, - UseKeywordScoring: o.KeywordScoring, + UseKeywordScoring: o.PatternType == query.SearchTypeKeyword, } // These are reasonable default amounts of work to do per shard and @@ -229,7 +228,7 @@ func (o *ZoektParameters) ToSearchOptions(ctx context.Context) (searchOpts *zoek // are evaluating to deliver a better keyword-based search experience. For now // these are separate, but we might combine them in the future. Both profit from // higher defaults. - if o.KeywordScoring || o.Features.UseZoektParser { + if searchOpts.UseKeywordScoring || o.PatternType == query.SearchTypeNewStandardRC1 { // Keyword searches tends to match much more broadly than code searches, so we need to // consider more candidates to ensure we don't miss highly-ranked documents searchOpts.ShardMaxMatchCount *= 10 @@ -261,7 +260,7 @@ func (o *ZoektParameters) ToSearchOptions(ctx context.Context) (searchOpts *zoek // This enables our stream based ranking, where we wait a certain amount // of time to collect results before ranking. - searchOpts.FlushWallTime = conf.SearchFlushWallTime(o.KeywordScoring) + searchOpts.FlushWallTime = conf.SearchFlushWallTime(searchOpts.UseKeywordScoring) // Only use document ranks if the jobs to calculate the ranks are enabled. This // is to make sure we don't use outdated ranks for scoring in Zoekt. @@ -431,10 +430,6 @@ type Features struct { // currently just supported by Zoekt. ContentBasedLangFilters bool `json:"search-content-based-lang-detection"` - // UseZoektParser when true will use a new way to interpret queries optimized for - // keyword search. This is currently just supported by Zoekt. - UseZoektParser bool `json:"search-new-keyword"` - // Debug when true will set the Debug field on FileMatches. This may grow // from here. For now we treat this like a feature flag for convenience. Debug bool `json:"debug"` diff --git a/internal/search/types_test.go b/internal/search/types_test.go index af8a9bf7e998a..b7ed6482daec8 100644 --- a/internal/search/types_test.go +++ b/internal/search/types_test.go @@ -10,6 +10,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/conf" "github.com/sourcegraph/sourcegraph/internal/search/filter" "github.com/sourcegraph/sourcegraph/internal/search/limits" + "github.com/sourcegraph/sourcegraph/internal/search/query" "github.com/sourcegraph/sourcegraph/schema" ) @@ -154,7 +155,7 @@ func TestZoektParameters(t *testing.T) { context: context.Background(), params: &ZoektParameters{ FileMatchLimit: limits.DefaultMaxSearchResultsStreaming, - KeywordScoring: true, + PatternType: query.SearchTypeKeyword, }, want: &zoekt.SearchOptions{ ShardMaxMatchCount: 100000, diff --git a/internal/search/zoekt/query.go b/internal/search/zoekt/query.go index e42815e25e62a..384179802f0e3 100644 --- a/internal/search/zoekt/query.go +++ b/internal/search/zoekt/query.go @@ -18,28 +18,15 @@ func QueryToZoektQuery(b query.Basic, resultTypes result.Types, feat *search.Fea isCaseSensitive := b.IsCaseSensitive() if b.Pattern != nil { - if feat.UseZoektParser { - q, err = toZoektPatternNew( - b.Pattern, - isCaseSensitive, - resultTypes.Has(result.TypeFile), - resultTypes.Has(result.TypePath), - typ, - ) - if err != nil { - return nil, err - } - } else { - q, err = toZoektPattern( - b.Pattern, - isCaseSensitive, - resultTypes.Has(result.TypeFile), - resultTypes.Has(result.TypePath), - typ, - ) - if err != nil { - return nil, err - } + q, err = toZoektPattern( + b.Pattern, + isCaseSensitive, + resultTypes.Has(result.TypeFile), + resultTypes.Has(result.TypePath), + typ, + ) + if err != nil { + return nil, err } } From a71f903ebc35e857f51ab359783f84bb1a048a5f Mon Sep 17 00:00:00 2001 From: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> Date: Thu, 16 Nov 2023 11:54:56 +0000 Subject: [PATCH 043/222] sg: improve PG_UTILS_PATH error msg (#58367) --- dev/sg/dependencies/helpers.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/sg/dependencies/helpers.go b/dev/sg/dependencies/helpers.go index d482adb41635c..773ebaa1b5213 100644 --- a/dev/sg/dependencies/helpers.go +++ b/dev/sg/dependencies/helpers.go @@ -489,7 +489,7 @@ func checkPGUtilsPath(ctx context.Context, out *std.Output, args CheckArgs) erro // If the file exists, but doesn't reference PG_UTILS_PATH, that's an error as well. if pgUtilsPath == "" { - return errors.Newf("%s doesn't define PG_UTILS_PATH", userBazelRcPath) + return errors.Newf("none on the content in %s matched %q", userBazelRcPath, pgUtilsPathRe.String()) } // Check that this path contains createdb as expected. From d0b5b5847b90579c91bb12e3f219bc0ed745a69c Mon Sep 17 00:00:00 2001 From: Jean-Hadrien Chabran <jean-hadrien.chabran@sourcegraph.com> Date: Thu, 16 Nov 2023 13:34:04 +0100 Subject: [PATCH 044/222] dev: add FAQ entry about `bazel configure` warning (#58374) Co-authored-by: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> --- doc/dev/background-information/bazel/faq.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc/dev/background-information/bazel/faq.md b/doc/dev/background-information/bazel/faq.md index 5bcc9245d4196..132e75fb75072 100644 --- a/doc/dev/background-information/bazel/faq.md +++ b/doc/dev/background-information/bazel/faq.md @@ -2,6 +2,18 @@ ## General +### `bazel configure` prints out a warning about TSConfig + +Everytime you run `bazel configure`, you'll see a warning: + +``` +$ bazel configure +Updating BUILD files for protobuf, go, javascript +2023/11/16 12:32:52 Failed to load base tsconfig file @sourcegraph/tsconfig: open /Users/thorstenball/work/sourcegraph/@sourcegraph/tsconfig: no such file or directory +``` + +The warning can be ignored, and [is a known bug](https://github.com/aspect-build/aspect-cli/issues/524). + ### The analysis cache is being busted because of `--action_env` Typically you'll see this (in CI or locally): From e90643484c67be7b79c5d9ea31b1de0faba8b8f9 Mon Sep 17 00:00:00 2001 From: Thorsten Ball <mrnugget@gmail.com> Date: Thu, 16 Nov 2023 13:52:42 +0100 Subject: [PATCH 045/222] typestest: remove dead code (#58373) I randomly came across this file and noticed that most of these aren't used (anymore?). Let's remove them. --- .../internal/repoupdater/server_test.go | 14 +-- internal/repos/syncer_test.go | 2 +- internal/types/typestest/typestest.go | 107 +++--------------- 3 files changed, 25 insertions(+), 98 deletions(-) diff --git a/cmd/repo-updater/internal/repoupdater/server_test.go b/cmd/repo-updater/internal/repoupdater/server_test.go index 967431c5e6ea0..9a30b01afef2a 100644 --- a/cmd/repo-updater/internal/repoupdater/server_test.go +++ b/cmd/repo-updater/internal/repoupdater/server_test.go @@ -461,7 +461,7 @@ func TestServer_RepoLookup(t *testing.T) { Name: npmRepository.Name, VCS: protocol.VCSInfo{URL: string(npmRepository.Name)}, }}, - assert: typestest.Assert.ReposEqual(npmRepository), + assert: typestest.AssertReposEqual(npmRepository), }, { name: "synced - github.com cloud default", @@ -486,7 +486,7 @@ func TestServer_RepoLookup(t *testing.T) { Commit: "github.com/foo/bar/commit/{commit}", }, }}, - assert: typestest.Assert.ReposEqual(githubRepository), + assert: typestest.AssertReposEqual(githubRepository), }, { name: "found - github.com already exists", @@ -520,7 +520,7 @@ func TestServer_RepoLookup(t *testing.T) { src: repos.NewFakeSource(&githubSource, github.ErrRepoNotFound), result: &protocol.RepoLookupResult{ErrorNotFound: true}, err: fmt.Sprintf("repository not found (name=%s notfound=%v)", api.RepoName("github.com/foo/bar"), true), - assert: typestest.Assert.ReposEqual(), + assert: typestest.AssertReposEqual(), }, { name: "unauthorized - github.com", @@ -530,7 +530,7 @@ func TestServer_RepoLookup(t *testing.T) { src: repos.NewFakeSource(&githubSource, &github.APIError{Code: http.StatusUnauthorized}), result: &protocol.RepoLookupResult{ErrorUnauthorized: true}, err: fmt.Sprintf("not authorized (name=%s noauthz=%v)", api.RepoName("github.com/foo/bar"), true), - assert: typestest.Assert.ReposEqual(), + assert: typestest.AssertReposEqual(), }, { name: "temporarily unavailable - github.com", @@ -544,7 +544,7 @@ func TestServer_RepoLookup(t *testing.T) { api.RepoName("github.com/foo/bar"), true, ), - assert: typestest.Assert.ReposEqual(), + assert: typestest.AssertReposEqual(), }, { name: "synced - gitlab.com", @@ -567,7 +567,7 @@ func TestServer_RepoLookup(t *testing.T) { }, ExternalRepo: gitlabRepository.ExternalRepo, }}, - assert: typestest.Assert.ReposEqual(gitlabRepository), + assert: typestest.AssertReposEqual(gitlabRepository), }, { name: "found - gitlab.com", @@ -628,7 +628,7 @@ func TestServer_RepoLookup(t *testing.T) { }, }}, assertDelay: time.Second, - assert: typestest.Assert.ReposEqual(), + assert: typestest.AssertReposEqual(), }, } diff --git a/internal/repos/syncer_test.go b/internal/repos/syncer_test.go index 3b0b43aa7b74e..3d2ad8a68e9dc 100644 --- a/internal/repos/syncer_test.go +++ b/internal/repos/syncer_test.go @@ -677,7 +677,7 @@ func TestSyncerSync(t *testing.T) { sort.Sort(want) sort.Sort(have) - typestest.Assert.ReposEqual(want...)(t, have) + typestest.AssertReposEqual(want...)(t, have) })) } } diff --git a/internal/types/typestest/typestest.go b/internal/types/typestest/typestest.go index d64f6837b256b..8cdf75e434e04 100644 --- a/internal/types/typestest/typestest.go +++ b/internal/types/typestest/typestest.go @@ -1,7 +1,6 @@ package typestest import ( - "sort" "strconv" "testing" "time" @@ -218,36 +217,15 @@ func ExternalServicesToMap(es types.ExternalServices) map[string]*types.External // Opt contains functional options to be used in tests. var Opt = struct { - ExternalServiceID func(int64) func(*types.ExternalService) - ExternalServiceModifiedAt func(time.Time) func(*types.ExternalService) - ExternalServiceDeletedAt func(time.Time) func(*types.ExternalService) - RepoID func(api.RepoID) func(*types.Repo) - RepoName func(api.RepoName) func(*types.Repo) - RepoCreatedAt func(time.Time) func(*types.Repo) - RepoModifiedAt func(time.Time) func(*types.Repo) - RepoDeletedAt func(time.Time) func(*types.Repo) - RepoSources func(...string) func(*types.Repo) - RepoMetadata func(any) func(*types.Repo) - RepoArchived func(bool) func(*types.Repo) - RepoExternalID func(string) func(*types.Repo) + RepoID func(api.RepoID) func(*types.Repo) + RepoName func(api.RepoName) func(*types.Repo) + RepoCreatedAt func(time.Time) func(*types.Repo) + RepoModifiedAt func(time.Time) func(*types.Repo) + RepoDeletedAt func(time.Time) func(*types.Repo) + RepoSources func(...string) func(*types.Repo) + RepoArchived func(bool) func(*types.Repo) + RepoExternalID func(string) func(*types.Repo) }{ - ExternalServiceID: func(n int64) func(*types.ExternalService) { - return func(e *types.ExternalService) { - e.ID = n - } - }, - ExternalServiceModifiedAt: func(ts time.Time) func(*types.ExternalService) { - return func(e *types.ExternalService) { - e.UpdatedAt = ts - e.DeletedAt = time.Time{} - } - }, - ExternalServiceDeletedAt: func(ts time.Time) func(*types.ExternalService) { - return func(e *types.ExternalService) { - e.UpdatedAt = ts - e.DeletedAt = ts - } - }, RepoID: func(n api.RepoID) func(*types.Repo) { return func(r *types.Repo) { r.ID = n @@ -286,11 +264,6 @@ var Opt = struct { } } }, - RepoMetadata: func(md any) func(*types.Repo) { - return func(r *types.Repo) { - r.Metadata = md - } - }, RepoArchived: func(b bool) func(*types.Repo) { return func(r *types.Repo) { r.Archived = b @@ -310,60 +283,14 @@ var Opt = struct { // A ReposAssertion performs an assertion on the given Repos. type ReposAssertion func(testing.TB, types.Repos) -// An ExternalServicesAssertion performs an assertion on the given -// types.ExternalServices. -type ExternalServicesAssertion func(testing.TB, types.ExternalServices) - -// Assert contains assertion functions to be used in tests. -var Assert = struct { - ReposEqual func(...*types.Repo) ReposAssertion - ReposOrderedBy func(func(a, b *types.Repo) bool) ReposAssertion - ExternalServicesEqual func(...*types.ExternalService) ExternalServicesAssertion - ExternalServicesOrderedBy func(func(a, b *types.ExternalService) bool) ExternalServicesAssertion -}{ - ReposEqual: func(rs ...*types.Repo) ReposAssertion { - want := types.Repos(rs) - return func(t testing.TB, have types.Repos) { - t.Helper() - // Exclude auto-generated IDs from equality tests - opts := cmpopts.IgnoreFields(types.Repo{}, "ID", "CreatedAt", "UpdatedAt") - if diff := cmp.Diff(want, have, opts); diff != "" { - t.Errorf("repos (-want +got): %s", diff) - } +func AssertReposEqual(rs ...*types.Repo) ReposAssertion { + want := types.Repos(rs) + return func(t testing.TB, have types.Repos) { + t.Helper() + // Exclude auto-generated IDs from equality tests + opts := cmpopts.IgnoreFields(types.Repo{}, "ID", "CreatedAt", "UpdatedAt") + if diff := cmp.Diff(want, have, opts); diff != "" { + t.Errorf("repos (-want +got): %s", diff) } - }, - ReposOrderedBy: func(ord func(a, b *types.Repo) bool) ReposAssertion { - return func(t testing.TB, have types.Repos) { - t.Helper() - want := have.Clone() - sort.Slice(want, func(i, j int) bool { - return ord(want[i], want[j]) - }) - if diff := cmp.Diff(want, have); diff != "" { - t.Errorf("repos (-want +got): %s", cmp.Diff(want, have)) - } - } - }, - ExternalServicesEqual: func(es ...*types.ExternalService) ExternalServicesAssertion { - want := types.ExternalServices(es) - return func(t testing.TB, have types.ExternalServices) { - t.Helper() - opts := cmpopts.IgnoreFields(types.ExternalService{}, "ID", "CreatedAt", "UpdatedAt") - if diff := cmp.Diff(want, have, opts); diff != "" { - t.Errorf("external services (-want +got): %s", diff) - } - } - }, - ExternalServicesOrderedBy: func(ord func(a, b *types.ExternalService) bool) ExternalServicesAssertion { - return func(t testing.TB, have types.ExternalServices) { - t.Helper() - want := have.Clone() - sort.Slice(want, func(i, j int) bool { - return ord(want[i], want[j]) - }) - if diff := cmp.Diff(want, have); diff != "" { - t.Errorf("external services (-want +got): %s", cmp.Diff(want, have)) - } - } - }, + } } From 18d3e1dc74adbae81565cf2cea1f6dd4ae0c50fb Mon Sep 17 00:00:00 2001 From: Thorsten Ball <mrnugget@gmail.com> Date: Thu, 16 Nov 2023 13:53:15 +0100 Subject: [PATCH 046/222] repos: refactor and clean-up the `Source.ListRepos` tests (#58372) --- internal/repos/BUILD.bazel | 1 - internal/repos/sources_test.go | 874 ++++++++++++++++----------------- 2 files changed, 414 insertions(+), 461 deletions(-) diff --git a/internal/repos/BUILD.bazel b/internal/repos/BUILD.bazel index a5f2c8d500d5b..f1e20b4452f9b 100644 --- a/internal/repos/BUILD.bazel +++ b/internal/repos/BUILD.bazel @@ -194,7 +194,6 @@ go_test( "@com_github_google_go_cmp//cmp", "@com_github_google_go_cmp//cmp/cmpopts", "@com_github_google_uuid//:uuid", - "@com_github_grafana_regexp//:regexp", "@com_github_hexops_autogold_v2//:autogold", "@com_github_keegancsmith_sqlf//:sqlf", "@com_github_sourcegraph_log//:log", diff --git a/internal/repos/sources_test.go b/internal/repos/sources_test.go index a7674a9e9b463..ea78c6f8e2206 100644 --- a/internal/repos/sources_test.go +++ b/internal/repos/sources_test.go @@ -6,12 +6,9 @@ import ( "os" "reflect" "sort" - "strconv" - "strings" "testing" "github.com/google/go-cmp/cmp" - "github.com/grafana/regexp" "github.com/sourcegraph/log/logtest" @@ -26,11 +23,134 @@ import ( "github.com/sourcegraph/sourcegraph/internal/ratelimit" "github.com/sourcegraph/sourcegraph/internal/rcache" "github.com/sourcegraph/sourcegraph/internal/types" - "github.com/sourcegraph/sourcegraph/internal/types/typestest" "github.com/sourcegraph/sourcegraph/schema" ) -func TestSources_ListRepos(t *testing.T) { +// TestSources_ListRepos_YieldExistingRepos is the main, happy-path test for +// listing repositories. +func TestSources_ListRepos_YieldExistingRepos(t *testing.T) { + ratelimit.SetupForTest(t) + rcache.SetupForTest(t) + + tests := []struct { + svc *types.ExternalService + wantNames []string + }{ + { + svc: &types.ExternalService{ + Kind: extsvc.KindGitHub, + Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitHubConnection{ + Url: "https://github.com", + Token: os.Getenv("GITHUB_ACCESS_TOKEN"), + Repos: []string{ + "sourcegraph/Sourcegraph", + "tsenart/Vegeta", + "tsenart/vegeta-missing", + }, + })), + }, + wantNames: []string{ + "github.com/sourcegraph/sourcegraph", + "github.com/tsenart/vegeta", + }, + }, + { + svc: &types.ExternalService{ + Kind: extsvc.KindGitLab, + Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitLabConnection{ + Url: "https://gitlab.com", + Token: os.Getenv("GITLAB_ACCESS_TOKEN"), + ProjectQuery: []string{"none"}, + Projects: []*schema.GitLabProject{ + {Name: "gnachman/iterm2"}, + {Name: "gnachman/iterm2-missing"}, + {Id: 13083}, // https://gitlab.com/gitlab-org/gitlab-ce + }, + })), + }, + wantNames: []string{ + "gitlab.com/gitlab-org/gitlab-ce", + "gitlab.com/gnachman/iterm2", + }, + }, + { + svc: &types.ExternalService{ + Kind: extsvc.KindBitbucketServer, + Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.BitbucketServerConnection{ + Url: "https://bitbucket.sgdev.org", + Token: os.Getenv("BITBUCKET_SERVER_TOKEN"), + RepositoryQuery: []string{"none"}, + Repos: []string{ + "Sour/vegetA", + "sour/sourcegraph", + }, + })), + }, + wantNames: []string{ + "bitbucket.sgdev.org/SOUR/sourcegraph", + "bitbucket.sgdev.org/SOUR/vegeta", + }, + }, + { + svc: &types.ExternalService{ + Kind: extsvc.KindAWSCodeCommit, + Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.AWSCodeCommitConnection{ + AccessKeyID: getAWSEnv("AWS_ACCESS_KEY_ID"), + SecretAccessKey: getAWSEnv("AWS_SECRET_ACCESS_KEY"), + Region: "us-west-1", + GitCredentials: schema.AWSCodeCommitGitCredentials{ + Username: "git-username", + Password: "git-password", + }, + })), + }, + wantNames: []string{ + "__WARNING_DO_NOT_PUT_ANY_PRIVATE_CODE_IN_HERE", + "empty-repo", + "stripe-go", + "test", + "test2", + }, + }, + { + svc: &types.ExternalService{ + Kind: extsvc.KindOther, + Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.OtherExternalServiceConnection{ + Url: "https://github.com", + Repos: []string{ + "google/go-cmp", + }, + })), + }, + wantNames: []string{ + "github.com/google/go-cmp", + }, + }, + } + + for _, tc := range tests { + t.Run(tc.svc.Kind, func(t *testing.T) { + name := tc.svc.Kind + "/included-repos-that-exist-are-yielded" + + cf, save := NewClientFactory(t, name) + defer save(t) + + repos := listRepos(t, cf, tc.svc) + + var haveNames []string + for _, r := range repos { + haveNames = append(haveNames, string(r.Name)) + } + sort.Strings(haveNames) + + if !reflect.DeepEqual(haveNames, tc.wantNames) { + t.Error(cmp.Diff(haveNames, tc.wantNames)) + } + }) + } +} + +func TestSources_ListRepos_Excluded(t *testing.T) { conf.Mock(&conf.Unified{ ServiceConnectionConfig: conftypes.ServiceConnections{ GitServers: []string{"127.0.0.1:3178"}, @@ -45,28 +165,21 @@ func TestSources_ListRepos(t *testing.T) { rcache.SetupForTest(t) ratelimit.SetupForTest(t) - type testCase struct { - name string - ctx context.Context - svcs types.ExternalServices - assert func(*types.ExternalService) typestest.ReposAssertion - err string - } - - var testCases []testCase - - { - svcs := types.ExternalServices{ - { + tests := []struct { + svc *types.ExternalService + wantNames []string + }{ + { + svc: &types.ExternalService{ Kind: extsvc.KindGitHub, Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitHubConnection{ Url: "https://github.com", Token: os.Getenv("GITHUB_ACCESS_TOKEN"), RepositoryQuery: []string{ - "user:tsenart in:name patrol", + "user:tsenart in:name patrol", // yields only the tsenart/patrol repo }, Repos: []string{ - "sourcegraph/Sourcegraph", + "sourcegraph/sourcegraph", "keegancsmith/sqlf", "tsenart/VEGETA", "tsenart/go-tsz", // fork @@ -79,7 +192,12 @@ func TestSources_ListRepos(t *testing.T) { }, })), }, - { + wantNames: []string{ + "github.com/sourcegraph/sourcegraph", + }, + }, + { + svc: &types.ExternalService{ Kind: extsvc.KindGitLab, Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitLabConnection{ Url: "https://gitlab.com", @@ -94,7 +212,12 @@ func TestSources_ListRepos(t *testing.T) { }, })), }, - { + wantNames: []string{ + "gitlab.com/guld/dotfiles-vegetableman", + }, + }, + { + svc: &types.ExternalService{ Kind: extsvc.KindBitbucketServer, Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.BitbucketServerConnection{ Url: "https://bitbucket.sgdev.org", @@ -110,10 +233,23 @@ func TestSources_ListRepos(t *testing.T) { {Name: "SOUR/Vegeta"}, // test case insensitivity {Id: 10067}, // sourcegraph repo id {Pattern: ".*/automation"}, // only matches automation-testing repo + {Pattern: ".*public-repo.*"}, + {Pattern: ".*secret-repo.*"}, + {Pattern: ".*private-repo.*"}, + {Pattern: `.*SGDEMO.*`}, }, })), }, - { + wantNames: []string{ + "bitbucket.sgdev.org/IJ/ijt-repo-testing-sg-3.6", + "bitbucket.sgdev.org/K8S/zoekt", + "bitbucket.sgdev.org/PUBLIC/archived-repo", + "bitbucket.sgdev.org/SOUR/sd", + "bitbucket.sgdev.org/SOURCEGRAPH/jsonrpc2", + }, + }, + { + svc: &types.ExternalService{ Kind: extsvc.KindAWSCodeCommit, Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.AWSCodeCommitConnection{ AccessKeyID: getAWSEnv("AWS_ACCESS_KEY_ID"), @@ -130,218 +266,76 @@ func TestSources_ListRepos(t *testing.T) { }, })), }, - { + wantNames: []string{ + "__WARNING_DO_NOT_PUT_ANY_PRIVATE_CODE_IN_HERE", + "empty-repo", + }, + }, + { + svc: &types.ExternalService{ Kind: extsvc.KindGitolite, Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitoliteConnection{ Prefix: "gitolite.mycorp.com/", Host: "ssh://git@127.0.0.1:2222", Exclude: []*schema.ExcludedGitoliteRepo{ {Name: "bar"}, + {Pattern: "gitolite-ad.*"}, }, })), }, - } + wantNames: []string{ + "gitolite.mycorp.com/baz", + "gitolite.mycorp.com/foo", + "gitolite.mycorp.com/testing", + }, + }, + } + + for _, tc := range tests { + t.Run(tc.svc.Kind, func(t *testing.T) { + name := tc.svc.Kind + "/excluded-repos-are-never-yielded" + + cf, save := NewClientFactory(t, name) + defer save(t) + + repos := listRepos(t, cf, tc.svc) - testCases = append(testCases, testCase{ - name: "excluded repos are never yielded", - svcs: svcs, - assert: func(s *types.ExternalService) typestest.ReposAssertion { - return func(t testing.TB, rs types.Repos) { - t.Helper() - - set := make(map[string]bool) - var patterns []*regexp.Regexp - - ctx := context.Background() - c, err := s.Configuration(ctx) - if err != nil { - t.Fatal(err) - } - - type excluded struct { - name, id, pattern string - } - - var ex []excluded - switch cfg := c.(type) { - case *schema.GitHubConnection: - for _, e := range cfg.Exclude { - ex = append(ex, excluded{name: e.Name, id: e.Id, pattern: e.Pattern}) - } - case *schema.GitLabConnection: - for _, e := range cfg.Exclude { - ex = append(ex, excluded{name: e.Name, id: strconv.Itoa(e.Id)}) - } - case *schema.BitbucketServerConnection: - for _, e := range cfg.Exclude { - ex = append(ex, excluded{name: e.Name, id: strconv.Itoa(e.Id), pattern: e.Pattern}) - } - case *schema.AWSCodeCommitConnection: - for _, e := range cfg.Exclude { - ex = append(ex, excluded{name: e.Name, id: e.Id}) - } - case *schema.GitoliteConnection: - for _, e := range cfg.Exclude { - ex = append(ex, excluded{name: e.Name, pattern: e.Pattern}) - } - } - - if len(ex) == 0 { - t.Fatal("exclude list must not be empty") - } - - for _, e := range ex { - name := e.name - switch s.Kind { - case extsvc.KindGitHub, extsvc.KindBitbucketServer: - name = strings.ToLower(name) - } - set[name], set[e.id] = true, true - if e.pattern != "" { - re, err := regexp.Compile(e.pattern) - if err != nil { - t.Fatal(err) - } - patterns = append(patterns, re) - } - } - - for _, r := range rs { - if r.Fork { - t.Errorf("excluded fork was yielded: %s", r.Name) - } - - if set[string(r.Name)] || set[r.ExternalRepo.ID] { - t.Errorf("excluded repo{name=%s, id=%s} was yielded", r.Name, r.ExternalRepo.ID) - } - - for _, re := range patterns { - if re.MatchString(string(r.Name)) { - t.Errorf("excluded repo{name=%s} matching %q was yielded", r.Name, re.String()) - } - } - } - } - }, - err: "<nil>", + var haveNames []string + for _, r := range repos { + haveNames = append(haveNames, string(r.Name)) + } + sort.Strings(haveNames) + + if !reflect.DeepEqual(haveNames, tc.wantNames) { + t.Error(cmp.Diff(haveNames, tc.wantNames)) + } }) } +} - { - svcs := types.ExternalServices{ - { - Kind: extsvc.KindGitHub, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitHubConnection{ - Url: "https://github.com", - Token: os.Getenv("GITHUB_ACCESS_TOKEN"), - Repos: []string{ - "sourcegraph/Sourcegraph", - "tsenart/Vegeta", - "tsenart/vegeta-missing", - }, - })), - }, - { - Kind: extsvc.KindGitLab, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitLabConnection{ - Url: "https://gitlab.com", - Token: os.Getenv("GITLAB_ACCESS_TOKEN"), - ProjectQuery: []string{"none"}, - Projects: []*schema.GitLabProject{ - {Name: "gnachman/iterm2"}, - {Name: "gnachman/iterm2-missing"}, - {Id: 13083}, // https://gitlab.com/gitlab-org/gitlab-ce - }, - })), - }, - { - Kind: extsvc.KindBitbucketServer, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.BitbucketServerConnection{ - Url: "https://bitbucket.sgdev.org", - Token: os.Getenv("BITBUCKET_SERVER_TOKEN"), - RepositoryQuery: []string{"none"}, - Repos: []string{ - "Sour/vegetA", - "sour/sourcegraph", - }, - })), - }, - { - Kind: extsvc.KindOther, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.OtherExternalServiceConnection{ - Url: "https://github.com", - Repos: []string{ - "google/go-cmp", - }, - })), - }, - { - Kind: extsvc.KindAWSCodeCommit, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.AWSCodeCommitConnection{ - AccessKeyID: getAWSEnv("AWS_ACCESS_KEY_ID"), - SecretAccessKey: getAWSEnv("AWS_SECRET_ACCESS_KEY"), - Region: "us-west-1", - GitCredentials: schema.AWSCodeCommitGitCredentials{ - Username: "git-username", - Password: "git-password", - }, - })), +func TestSources_ListRepos_RepositoryPathPattern(t *testing.T) { + // conf mock is required for gitolite + conf.Mock(&conf.Unified{ + ServiceConnectionConfig: conftypes.ServiceConnections{ + GitServers: []string{"127.0.0.1:3178"}, + }, SiteConfiguration: schema.SiteConfiguration{ + ExperimentalFeatures: &schema.ExperimentalFeatures{ + EnableGRPC: boolPointer(false), }, - } + }, + }) + defer conf.Mock(nil) - testCases = append(testCases, testCase{ - name: "included repos that exist are yielded", - svcs: svcs, - assert: func(s *types.ExternalService) typestest.ReposAssertion { - return func(t testing.TB, rs types.Repos) { - t.Helper() - - have := rs.Names() - sort.Strings(have) - - var want []string - switch s.Kind { - case extsvc.KindGitHub: - want = []string{ - "github.com/sourcegraph/sourcegraph", - "github.com/tsenart/vegeta", - } - case extsvc.KindBitbucketServer: - want = []string{ - "bitbucket.sgdev.org/SOUR/sourcegraph", - "bitbucket.sgdev.org/SOUR/vegeta", - } - case extsvc.KindGitLab: - want = []string{ - "gitlab.com/gitlab-org/gitlab-ce", - "gitlab.com/gnachman/iterm2", - } - case extsvc.KindAWSCodeCommit: - want = []string{ - "__WARNING_DO_NOT_PUT_ANY_PRIVATE_CODE_IN_HERE", - "empty-repo", - "stripe-go", - "test", - "test2", - } - case extsvc.KindOther: - want = []string{ - "github.com/google/go-cmp", - } - } - - if !reflect.DeepEqual(have, want) { - t.Error(cmp.Diff(have, want)) - } - } - }, - err: "<nil>", - }) - } + ratelimit.SetupForTest(t) + rcache.SetupForTest(t) - { - svcs := types.ExternalServices{ - { + tests := []struct { + svc *types.ExternalService + wantNames []string + wantURIs []string + }{ + { + svc: &types.ExternalService{ Kind: extsvc.KindGitHub, Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitHubConnection{ Url: "https://github.com", @@ -351,7 +345,11 @@ func TestSources_ListRepos(t *testing.T) { Repos: []string{"tsenart/vegeta"}, })), }, - { + wantNames: []string{"github.com/a/b/c/tsenart/vegeta"}, + wantURIs: []string{"github.com/tsenart/vegeta"}, + }, + { + svc: &types.ExternalService{ Kind: extsvc.KindGitLab, Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitLabConnection{ Url: "https://gitlab.com", @@ -363,7 +361,11 @@ func TestSources_ListRepos(t *testing.T) { }, })), }, - { + wantNames: []string{"gitlab.com/a/b/c/gnachman/iterm2"}, + wantURIs: []string{"gitlab.com/gnachman/iterm2"}, + }, + { + svc: &types.ExternalService{ Kind: extsvc.KindBitbucketServer, Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.BitbucketServerConnection{ Url: "https://bitbucket.sgdev.org", @@ -373,7 +375,11 @@ func TestSources_ListRepos(t *testing.T) { Repos: []string{"sour/vegeta"}, })), }, - { + wantNames: []string{"bitbucket.sgdev.org/a/b/c/SOUR/vegeta"}, + wantURIs: []string{"bitbucket.sgdev.org/SOUR/vegeta"}, + }, + { + svc: &types.ExternalService{ Kind: extsvc.KindAWSCodeCommit, Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.AWSCodeCommitConnection{ AccessKeyID: getAWSEnv("AWS_ACCESS_KEY_ID"), @@ -386,7 +392,23 @@ func TestSources_ListRepos(t *testing.T) { RepositoryPathPattern: "a/b/c/{name}", })), }, - { + wantNames: []string{ + "a/b/c/empty-repo", + "a/b/c/stripe-go", + "a/b/c/test2", + "a/b/c/__WARNING_DO_NOT_PUT_ANY_PRIVATE_CODE_IN_HERE", + "a/b/c/test", + }, + wantURIs: []string{ + "empty-repo", + "stripe-go", + "test2", + "__WARNING_DO_NOT_PUT_ANY_PRIVATE_CODE_IN_HERE", + "test", + }, + }, + { + svc: &types.ExternalService{ Kind: extsvc.KindGitolite, Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitoliteConnection{ // Prefix serves as a sort of repositoryPathPattern for Gitolite @@ -394,259 +416,191 @@ func TestSources_ListRepos(t *testing.T) { Host: "ssh://git@127.0.0.1:2222", })), }, - } + wantNames: []string{ + "gitolite.mycorp.com/bar", + "gitolite.mycorp.com/baz", + "gitolite.mycorp.com/foo", + "gitolite.mycorp.com/gitolite-admin", + "gitolite.mycorp.com/testing", + }, + wantURIs: []string{ + "gitolite.mycorp.com/bar", + "gitolite.mycorp.com/baz", + "gitolite.mycorp.com/foo", + "gitolite.mycorp.com/gitolite-admin", + "gitolite.mycorp.com/testing", + }, + }, + } + + for _, tc := range tests { + t.Run(tc.svc.Kind, func(t *testing.T) { + name := tc.svc.Kind + "/repositoryPathPattern-determines-the-repo-name" - testCases = append(testCases, testCase{ - name: "repositoryPathPattern determines the repo name", - svcs: svcs, - assert: func(s *types.ExternalService) typestest.ReposAssertion { - return func(t testing.TB, rs types.Repos) { - t.Helper() - - haveNames := rs.Names() - var haveURIs []string - for _, r := range rs { - haveURIs = append(haveURIs, r.URI) - } - - var wantNames, wantURIs []string - switch s.Kind { - case extsvc.KindGitHub: - wantNames = []string{ - "github.com/a/b/c/tsenart/vegeta", - } - wantURIs = []string{ - "github.com/tsenart/vegeta", - } - case extsvc.KindGitLab: - wantNames = []string{ - "gitlab.com/a/b/c/gnachman/iterm2", - } - wantURIs = []string{ - "gitlab.com/gnachman/iterm2", - } - case extsvc.KindBitbucketServer: - wantNames = []string{ - "bitbucket.sgdev.org/a/b/c/SOUR/vegeta", - } - wantURIs = []string{ - "bitbucket.sgdev.org/SOUR/vegeta", - } - case extsvc.KindAWSCodeCommit: - wantNames = []string{ - "a/b/c/empty-repo", - "a/b/c/stripe-go", - "a/b/c/test2", - "a/b/c/__WARNING_DO_NOT_PUT_ANY_PRIVATE_CODE_IN_HERE", - "a/b/c/test", - } - wantURIs = []string{ - "empty-repo", - "stripe-go", - "test2", - "__WARNING_DO_NOT_PUT_ANY_PRIVATE_CODE_IN_HERE", - "test", - } - case extsvc.KindGitolite: - wantNames = []string{ - "gitolite.mycorp.com/bar", - "gitolite.mycorp.com/baz", - "gitolite.mycorp.com/foo", - "gitolite.mycorp.com/gitolite-admin", - "gitolite.mycorp.com/testing", - } - wantURIs = wantNames - } - - if !reflect.DeepEqual(haveNames, wantNames) { - t.Error(cmp.Diff(haveNames, wantNames)) - } - if !reflect.DeepEqual(haveURIs, wantURIs) { - t.Error(cmp.Diff(haveURIs, wantURIs)) - } - } - }, - err: "<nil>", + cf, save := NewClientFactory(t, name) + defer save(t) + + repos := listRepos(t, cf, tc.svc) + + var haveURIs, haveNames []string + for _, r := range repos { + haveURIs = append(haveURIs, r.URI) + haveNames = append(haveNames, string(r.Name)) + } + + if !reflect.DeepEqual(haveNames, tc.wantNames) { + t.Error(cmp.Diff(haveNames, tc.wantNames)) + } + if !reflect.DeepEqual(haveURIs, tc.wantURIs) { + t.Error(cmp.Diff(haveURIs, tc.wantURIs)) + } }) } +} - { - svcs := types.ExternalServices{ - { - Kind: extsvc.KindGitLab, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitLabConnection{ - Url: "https://gitlab.com", - Token: os.Getenv("GITLAB_ACCESS_TOKEN"), - RepositoryPathPattern: "{host}/{pathWithNamespace}", - ProjectQuery: []string{"none"}, - Projects: []*schema.GitLabProject{ - {Name: "sg-test.d/repo-git"}, - {Name: "sg-test.d/repo-gitrepo"}, - }, - NameTransformations: []*schema.GitLabNameTransformation{ - { - Regex: "\\.d/", - Replacement: "/", - }, - { - Regex: "-git$", - Replacement: "", - }, - }, - })), - }, - } +func TestSources_Phabricator(t *testing.T) { + cf, save := NewClientFactory(t, "PHABRICATOR/phabricator") + defer save(t) - testCases = append(testCases, testCase{ - name: "nameTransformations updates the repo name", - svcs: svcs, - assert: func(s *types.ExternalService) typestest.ReposAssertion { - return func(t testing.TB, rs types.Repos) { - t.Helper() - - have := rs.Names() - sort.Strings(have) - - var want []string - switch s.Kind { - case extsvc.KindGitLab: - want = []string{ - "gitlab.com/sg-test/repo", - "gitlab.com/sg-test/repo-gitrepo", - } - } - - if !reflect.DeepEqual(have, want) { - t.Error(cmp.Diff(have, want)) - } - } - }, - err: "<nil>", - }) + svc := &types.ExternalService{ + Kind: extsvc.KindPhabricator, + Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.PhabricatorConnection{ + Url: "https://secure.phabricator.com", + Token: os.Getenv("PHABRICATOR_TOKEN"), + })), } - { - svcs := types.ExternalServices{ - { - Kind: extsvc.KindPhabricator, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.PhabricatorConnection{ - Url: "https://secure.phabricator.com", - Token: os.Getenv("PHABRICATOR_TOKEN"), - })), - }, + repos := listRepos(t, cf, svc) + + if len(repos) == 0 { + t.Fatalf("no repos yielded") + } + + for _, r := range repos { + repo := r.Metadata.(*phabricator.Repo) + if repo.VCS != "git" { + t.Fatalf("non git repo yielded: %+v", repo) } - testCases = append(testCases, testCase{ - name: "phabricator", - svcs: svcs, - assert: func(*types.ExternalService) typestest.ReposAssertion { - return func(t testing.TB, rs types.Repos) { - t.Helper() - - if len(rs) == 0 { - t.Fatalf("no repos yielded") - } - - for _, r := range rs { - repo := r.Metadata.(*phabricator.Repo) - if repo.VCS != "git" { - t.Fatalf("non git repo yielded: %+v", repo) - } - - if repo.Status == "inactive" { - t.Fatalf("inactive repo yielded: %+v", repo) - } - - if repo.Name == "" { - t.Fatalf("empty repo name: %+v", repo) - } - - ext := api.ExternalRepoSpec{ - ID: repo.PHID, - ServiceType: extsvc.TypePhabricator, - ServiceID: "https://secure.phabricator.com", - } - - if have, want := r.ExternalRepo, ext; have != want { - t.Fatal(cmp.Diff(have, want)) - } - } - } - }, - err: "<nil>", - }) + if repo.Status == "inactive" { + t.Fatalf("inactive repo yielded: %+v", repo) + } + + if repo.Name == "" { + t.Fatalf("empty repo name: %+v", repo) + } + + ext := api.ExternalRepoSpec{ + ID: repo.PHID, + ServiceType: extsvc.TypePhabricator, + ServiceID: "https://secure.phabricator.com", + } + + if have, want := r.ExternalRepo, ext; have != want { + t.Fatal(cmp.Diff(have, want)) + } } +} - { - svcs := types.ExternalServices{ - { - Kind: extsvc.KindBitbucketServer, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.BitbucketServerConnection{ - Url: "https://bitbucket.sgdev.org", - Token: os.Getenv("BITBUCKET_SERVER_TOKEN"), - RepositoryPathPattern: "{repositorySlug}", - RepositoryQuery: []string{"none"}, - Repos: []string{"sour/vegeta", "PUBLIC/archived-repo"}, - })), +func TestSources_ListRepos_GitLab_NameTransformations(t *testing.T) { + ratelimit.SetupForTest(t) + rcache.SetupForTest(t) + + cf, save := NewClientFactory(t, "GITLAB/nameTransformations-updates-the-repo-name") + defer save(t) + + svc := &types.ExternalService{ + Kind: extsvc.KindGitLab, + Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitLabConnection{ + Url: "https://gitlab.com", + Token: os.Getenv("GITLAB_ACCESS_TOKEN"), + RepositoryPathPattern: "{host}/{pathWithNamespace}", + ProjectQuery: []string{"none"}, + Projects: []*schema.GitLabProject{ + {Name: "sg-test.d/repo-git"}, + {Name: "sg-test.d/repo-gitrepo"}, }, - } + NameTransformations: []*schema.GitLabNameTransformation{ + { + Regex: "\\.d/", + Replacement: "/", + }, + { + Regex: "-git$", + Replacement: "", + }, + }, + })), + } - testCases = append(testCases, testCase{ - name: "bitbucketserver archived", - svcs: svcs, - assert: func(s *types.ExternalService) typestest.ReposAssertion { - return func(t testing.TB, rs types.Repos) { - t.Helper() - - want := map[string]bool{ - "vegeta": false, - "archived-repo": true, - } - got := map[string]bool{} - for _, r := range rs { - got[string(r.Name)] = r.Archived - } - - if !reflect.DeepEqual(got, want) { - t.Error("mismatch archived state (-want +got):\n", cmp.Diff(want, got)) - } - } - }, - err: "<nil>", - }) + repos := listRepos(t, cf, svc) + haveNames := types.Repos(repos).Names() + sort.Strings(haveNames) + + wantNames := []string{ + "gitlab.com/sg-test/repo", + "gitlab.com/sg-test/repo-gitrepo", } - for _, tc := range testCases { - tc := tc - for _, svc := range tc.svcs { - name := svc.Kind + "/" + tc.name - t.Run(name, func(t *testing.T) { - cf, save := NewClientFactory(t, name) - defer save(t) - - logger := logtest.Scoped(t) - obs := ObservedSource(logger, NewSourceMetrics()) - src, err := NewSourcer(logtest.Scoped(t), dbmocks.NewMockDB(), cf, obs)(tc.ctx, svc) - if err != nil { - t.Fatal(err) - } - - ctx := tc.ctx - if ctx == nil { - ctx = context.Background() - } - - repos, err := ListAll(ctx, src) - if have, want := fmt.Sprint(err), tc.err; have != want { - t.Errorf("error:\nhave: %q\nwant: %q", have, want) - } - - if tc.assert != nil { - tc.assert(svc)(t, repos) - } - }) - } + if !reflect.DeepEqual(haveNames, wantNames) { + t.Error(cmp.Diff(haveNames, wantNames)) + } +} + +func TestSources_ListRepos_BitbucketServer_Archived(t *testing.T) { + ratelimit.SetupForTest(t) + rcache.SetupForTest(t) + + cf, save := NewClientFactory(t, "BITBUCKETSERVER/bitbucketserver-archived") + defer save(t) + + svc := &types.ExternalService{ + Kind: extsvc.KindBitbucketServer, + Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.BitbucketServerConnection{ + Url: "https://bitbucket.sgdev.org", + Token: os.Getenv("BITBUCKET_SERVER_TOKEN"), + RepositoryPathPattern: "{repositorySlug}", + RepositoryQuery: []string{"none"}, + Repos: []string{"sour/vegeta", "PUBLIC/archived-repo"}, + })), + } + + repos := listRepos(t, cf, svc) + + wantArchived := map[string]bool{ + "vegeta": false, + "archived-repo": true, + } + + got := map[string]bool{} + for _, r := range repos { + got[string(r.Name)] = r.Archived } + + if !reflect.DeepEqual(got, wantArchived) { + t.Error("mismatch archived state (-want +got):\n", cmp.Diff(wantArchived, got)) + } +} + +func listRepos(t *testing.T, cf *httpcli.Factory, svc *types.ExternalService) []*types.Repo { + t.Helper() + + ctx := context.Background() + + logger := logtest.NoOp(t) + sourcer := NewSourcer(logger, dbmocks.NewMockDB(), cf) + + src, err := sourcer(ctx, svc) + if err != nil { + t.Fatal(err) + } + + repos, err := ListAll(ctx, src) + if err != nil { + t.Errorf("error listing repos: %s", err) + } + + return repos } func newClientFactoryWithOpt(t testing.TB, name string, opt httpcli.Opt) (*httpcli.Factory, func(testing.TB)) { From c367efdaeecb35ad481e6b2498807e1686be29b8 Mon Sep 17 00:00:00 2001 From: Cezary Bartoszuk <cezary.bartoszuk@sourcegraph.com> Date: Thu, 16 Nov 2023 14:15:14 +0100 Subject: [PATCH 047/222] Repo embedding jobs ordered by a qualified column (#58370) * Repo embedding jobs ordered by a qualified column * bazel configure * add requires-network BUILD go_test tag --- .../internal/embeddings/resolvers/BUILD.bazel | 8 +- .../resolvers/repo_embedding_jobs.go | 7 +- .../resolvers/repo_embedding_jobs_test.go | 87 +++++++++++++++++++ 3 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 cmd/frontend/internal/embeddings/resolvers/repo_embedding_jobs_test.go diff --git a/cmd/frontend/internal/embeddings/resolvers/BUILD.bazel b/cmd/frontend/internal/embeddings/resolvers/BUILD.bazel index 9b30703d402d8..ecc4aa9225ced 100644 --- a/cmd/frontend/internal/embeddings/resolvers/BUILD.bazel +++ b/cmd/frontend/internal/embeddings/resolvers/BUILD.bazel @@ -33,14 +33,20 @@ go_library( go_test( name = "resolvers_test", - srcs = ["resolvers_test.go"], + srcs = [ + "repo_embedding_jobs_test.go", + "resolvers_test.go", + ], embed = [":resolvers"], + tags = ["requires-network"], deps = [ "//cmd/frontend/graphqlbackend", "//internal/actor", "//internal/api", "//internal/conf", + "//internal/database", "//internal/database/dbmocks", + "//internal/database/dbtest", "//internal/embeddings", "//internal/embeddings/background/repo", "//internal/featureflag", diff --git a/cmd/frontend/internal/embeddings/resolvers/repo_embedding_jobs.go b/cmd/frontend/internal/embeddings/resolvers/repo_embedding_jobs.go index efc45484c38bd..6aaa1d291524c 100644 --- a/cmd/frontend/internal/embeddings/resolvers/repo_embedding_jobs.go +++ b/cmd/frontend/internal/embeddings/resolvers/repo_embedding_jobs.go @@ -32,7 +32,12 @@ func NewRepoEmbeddingJobsResolver( store: repoEmbeddingJobsStore, args: args, } - return graphqlutil.NewConnectionResolver[graphqlbackend.RepoEmbeddingJobResolver](store, &args.ConnectionResolverArgs, nil) + opts := &graphqlutil.ConnectionResolverOptions{ + OrderBy: database.OrderBy{ + {Field: "repo_embedding_jobs.id"}, + }, + } + return graphqlutil.NewConnectionResolver[graphqlbackend.RepoEmbeddingJobResolver](store, &args.ConnectionResolverArgs, opts) } type repoEmbeddingJobsConnectionStore struct { diff --git a/cmd/frontend/internal/embeddings/resolvers/repo_embedding_jobs_test.go b/cmd/frontend/internal/embeddings/resolvers/repo_embedding_jobs_test.go new file mode 100644 index 0000000000000..37b70029370b2 --- /dev/null +++ b/cmd/frontend/internal/embeddings/resolvers/repo_embedding_jobs_test.go @@ -0,0 +1,87 @@ +package resolvers + +import ( + "context" + "testing" + + "github.com/sourcegraph/log/logtest" + "github.com/stretchr/testify/require" + + "github.com/sourcegraph/sourcegraph/cmd/frontend/graphqlbackend" + "github.com/sourcegraph/sourcegraph/internal/actor" + "github.com/sourcegraph/sourcegraph/internal/conf" + "github.com/sourcegraph/sourcegraph/internal/database" + "github.com/sourcegraph/sourcegraph/internal/database/dbtest" + "github.com/sourcegraph/sourcegraph/internal/embeddings/background/repo" + "github.com/sourcegraph/sourcegraph/internal/types" + "github.com/sourcegraph/sourcegraph/lib/pointers" + "github.com/sourcegraph/sourcegraph/schema" +) + +// TestDBPaginationWithRepoFilter exercises a bug filed in #58313 where +// a unscoped default ordering column from graphqlutil.ConnectionResolver ("id") +// makes into a query joining two tables (both having an id column), +// causing ambiguous SQL. +func TestDBPaginationWithRepoFilter(t *testing.T) { + logger := logtest.Scoped(t) + db := database.NewDB(logger, dbtest.NewDB(t)) + ctx := context.Background() + + // Make a repo and an embedding job: + err := db.Repos().Create(ctx, &types.Repo{ + Name: "testrepo", + }) + require.NoError(t, err) + r, err := db.Repos().GetByName(ctx, "testrepo") + require.NoError(t, err) + jobs := repo.NewRepoEmbeddingJobsStore(db) + jobID, err := jobs.CreateRepoEmbeddingJob(ctx, r.ID, "commitID") + require.NoError(t, err) + + // Enable embeddings, so that resolvers work: + conf.Mock(&conf.Unified{ + SiteConfiguration: schema.SiteConfiguration{ + CodyEnabled: pointers.Ptr(true), + LicenseKey: "foobar", + Embeddings: &schema.Embeddings{ + Provider: "sourcegraph", + }, + }, + }) + t.Cleanup(func() { conf.Mock(nil) }) + require.True(t, conf.EmbeddingsEnabled()) + + // Authenticate with a site-admin. + user, err := db.Users().Create(ctx, database.NewUser{Username: "admin"}) + require.NoError(t, err) + require.NoError(t, db.Users().SetIsSiteAdmin(ctx, user.ID, true)) + a := actor.FromUser(user.ID) + ctx = actor.WithActor(ctx, a) + + // Exercise pagination and filtering via graphQL: + schema, err := graphqlbackend.NewSchema(db, nil, []graphqlbackend.OptionalResolver{{EmbeddingsResolver: NewResolver(db, logger, nil, nil, jobs)}}) + require.NoError(t, err) + graphqlbackend.RunTest(t, &graphqlbackend.Test{ + Schema: schema, + Context: ctx, + Query: `query RepoEmbeddingJobsList($first: Int, $after: String, $query: String) { + repoEmbeddingJobs(first: $first, after: $after, query: $query) { + nodes { + id + } + } + }`, + // Want no error: + ExpectedResult: `{ + "repoEmbeddingJobs": { + "nodes": [] + } + }`, + Variables: map[string]any{ + "first": 1, + "after": marshalRepoEmbeddingJobID(jobID), + "query": r.Name, + }, + }) + +} From 18c3c6fcef741ef59c2e5869b2f6f8fc524c3041 Mon Sep 17 00:00:00 2001 From: Jason Hawk Harris <jasonhawkharris@gmail.com> Date: Thu, 16 Nov 2023 07:28:09 -0600 Subject: [PATCH 048/222] Code Navigation: fix double line highlight in Firefox (#58347) fix double highlight line in firefox --- .../repo/blob/codemirror/codeintel/README.md | 2 +- .../blob/codemirror/codeintel/decorations.ts | 2 +- .../src/repo/blob/codemirror/linenumbers.ts | 19 ++++++++++++++----- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/client/web/src/repo/blob/codemirror/codeintel/README.md b/client/web/src/repo/blob/codemirror/codeintel/README.md index 1e2ca625ac663..a197d8471d122 100644 --- a/client/web/src/repo/blob/codemirror/codeintel/README.md +++ b/client/web/src/repo/blob/codemirror/codeintel/README.md @@ -9,7 +9,7 @@ The code intel extensions provide the following functionality: keyboard - Code intel tooltips: Information about a specific token (if available) - Document highlights: Highlight all occurrences of a specific token -- Got to definition: The ability to navigate to the definition for a specific +- Go to definition: The ability to navigate to the definition for a specific token The main entry point for the whole set of extensions is the diff --git a/client/web/src/repo/blob/codemirror/codeintel/decorations.ts b/client/web/src/repo/blob/codemirror/codeintel/decorations.ts index 6b86dc2a5edd0..4c13a747dc5e4 100644 --- a/client/web/src/repo/blob/codemirror/codeintel/decorations.ts +++ b/client/web/src/repo/blob/codemirror/codeintel/decorations.ts @@ -17,7 +17,7 @@ export const ignoreDecorations = Facet.define<{ from: number; to: number } | nul /** * We can't add/remove any decorations inside the selected token, because - * that causes the node to be recreated and loosing focus, which breaks + * that causes the node to be recreated and lose focus, which breaks * token keyboard navigation. * This facet should be used by all codeIntel extensions to ensure that any * conflicting decoration is removed. diff --git a/client/web/src/repo/blob/codemirror/linenumbers.ts b/client/web/src/repo/blob/codemirror/linenumbers.ts index 513f06d070394..63321e8262882 100644 --- a/client/web/src/repo/blob/codemirror/linenumbers.ts +++ b/client/web/src/repo/blob/codemirror/linenumbers.ts @@ -21,6 +21,8 @@ import { type ViewUpdate, } from '@codemirror/view' +import { isFirefox } from '@sourcegraph/common' + import { isValidLineRange, MOUSE_MAIN_BUTTON } from './utils' const selectedLinesTheme = EditorView.theme({ @@ -30,14 +32,21 @@ const selectedLinesTheme = EditorView.theme({ * are visible) more in its `top` value breaking alignment wih the line. * We compensate this spacing by setting negative margin-top. * + * Line highlighting breaks (highlights two lines instead of 1) in firefox if minHeight is set, so we + * add a conditional to check for the current browser, and set the css accordingly. + * * todo(fkling): Revisit this, styling is not correct for empty lines */ - '.selected-lines-layer .selected-line': { - marginTop: '-1px', + '.selected-lines-layer .selected-line': isFirefox() + ? { + marginTop: '-1px', + } + : { + marginTop: '-1px', + // Ensure selection marker height matches line height. + minHeight: '1.0rem', + }, - // Ensure selection marker height matches line height. - minHeight: '1rem', - }, '.selected-lines-layer .selected-line.blame-visible': { marginTop: '-5px', From 50cb8a02b405e1672c5dba88e385b617f3a737c4 Mon Sep 17 00:00:00 2001 From: Varun Gandhi <varun.gandhi@sourcegraph.com> Date: Thu, 16 Nov 2023 22:53:33 +0800 Subject: [PATCH 049/222] client: Simplify some code in useCodeIntel.ts (#58296) Instead of having calls to setCodeIntelData scattered in different places, this patch makes things a bit simpler -- we only call it at the end of having processed the result of a query. --- client/web/src/codeintel/ReferencesPanel.tsx | 4 - .../src/enterprise/codeintel/useCodeIntel.ts | 129 +++++++----------- 2 files changed, 49 insertions(+), 84 deletions(-) diff --git a/client/web/src/codeintel/ReferencesPanel.tsx b/client/web/src/codeintel/ReferencesPanel.tsx index 1c0fa76e52a8f..1eb3ce3762383 100644 --- a/client/web/src/codeintel/ReferencesPanel.tsx +++ b/client/web/src/codeintel/ReferencesPanel.tsx @@ -263,12 +263,8 @@ const SearchTokenFindingReferencesList: React.FunctionComponent< // change. This way we avoid showing stale results. key={shouldMixPreciseAndSearchBasedReferences.toString()} {...props} - token={props.token} searchToken={tokenResult?.searchToken} spec={spec} - fileContent={props.fileContent} - isFork={props.isFork} - isArchived={props.isArchived} /> ) } diff --git a/client/web/src/enterprise/codeintel/useCodeIntel.ts b/client/web/src/enterprise/codeintel/useCodeIntel.ts index 7d7548dedde47..774d1e31f5e1b 100644 --- a/client/web/src/enterprise/codeintel/useCodeIntel.ts +++ b/client/web/src/enterprise/codeintel/useCodeIntel.ts @@ -48,40 +48,6 @@ export const useCodeIntel = ({ const [codeIntelData, setCodeIntelData] = useState<CodeIntelData>() - const setReferences = (references: Location[]): void => { - setCodeIntelData(previousData => ({ - ...(previousData || EMPTY_CODE_INTEL_DATA), - references: { - endCursor: null, - nodes: new LocationsGroup(references), - }, - })) - } - - const deduplicateAndAddReferences = (searchBasedReferences: Location[]): void => { - setCodeIntelData(previousData => { - const previous = previousData || EMPTY_CODE_INTEL_DATA - - return { - ...previous, - references: { - endCursor: previous.references.endCursor, - nodes: previous.references.nodes.combine(searchBasedReferences), - }, - } - }) - } - - const setDefinitions = (definitions: Location[]): void => { - setCodeIntelData(previousData => ({ - ...(previousData || EMPTY_CODE_INTEL_DATA), - definitions: { - endCursor: null, - nodes: new LocationsGroup(definitions), - }, - })) - } - const fellBackToSearchBased = useRef(false) const shouldFetchPrecise = useRef(true) useEffect(() => { @@ -130,29 +96,42 @@ export const useCodeIntel = ({ notifyOnNetworkStatusChange: false, fetchPolicy: 'no-cache', onCompleted: result => { - if (shouldFetchPrecise.current) { - shouldFetchPrecise.current = false - - const lsifData = result ? getLsifData({ data: result }) : undefined - if (lsifData) { - setCodeIntelData(lsifData) - - // If we've exhausted LSIF data and the flag is enabled, we add search-based data. - if (lsifData.references.endCursor === null && shouldMixPreciseAndSearchBasedReferences()) { - fetchSearchBasedReferences(deduplicateAndAddReferences) - } - - // When no definitions are found, the hover tooltip falls back to a search based - // search, regardless of the mixPreciseAndSearchBasedReferences setting. - if (lsifData.definitions.nodes.locationsCount === 0) { - fetchSearchBasedDefinitions(setDefinitions) - } - } else { - fellBackToSearchBased.current = true - - fetchSearchBasedCodeIntel(setReferences, setDefinitions) + if (!shouldFetchPrecise.current) { + return + } + shouldFetchPrecise.current = false + + let refs: CodeIntelData['references'] = { endCursor: null, nodes: LocationsGroup.empty } + let defs: CodeIntelData['definitions'] = { endCursor: null, nodes: LocationsGroup.empty } + const addRefs = (newRefs: Location[]): void => { + refs.nodes = refs.nodes.combine(newRefs) + } + const addDefs = (newDefs: Location[]): void => { + defs.nodes = defs.nodes.combine(newDefs) + } + + const lsifData = result ? getLsifData({ data: result }) : undefined + if (lsifData) { + refs = lsifData.references + defs = lsifData.definitions + // If we've exhausted LSIF data and the flag is enabled, we add search-based data. + if (refs.endCursor === null && shouldMixPreciseAndSearchBasedReferences()) { + fetchSearchBasedReferences(addRefs) } + // When no definitions are found, the hover tooltip falls back to a search based + // search, regardless of the mixPreciseAndSearchBasedReferences setting. + if (defs.nodes.locationsCount === 0) { + fetchSearchBasedDefinitions(addDefs) + } + } else { + fellBackToSearchBased.current = true + fetchSearchBasedCodeIntel(addRefs, addDefs) } + setCodeIntelData({ + ...(lsifData || EMPTY_CODE_INTEL_DATA), + definitions: defs, + references: refs, + }) }, }) @@ -163,27 +142,27 @@ export const useCodeIntel = ({ fetchPolicy: 'no-cache', onCompleted: result => { const previousData = codeIntelData - const newReferenceData = result.repository?.commit?.blob?.lsif?.references - if (!previousData || !newReferenceData) { return } - + let references: LocationsGroup = previousData.references.nodes.combine( + newReferenceData.nodes.map(buildPreciseLocation) + ) + const endCursor = newReferenceData.pageInfo.endCursor + if (endCursor === null && shouldMixPreciseAndSearchBasedReferences()) { + // If we've exhausted LSIF data and the flag is enabled, we add search-based data. + fetchSearchBasedReferences((refs: Location[]) => { + references = references.combine(refs) + }) + } setCodeIntelData({ - implementations: previousData.implementations, - prototypes: previousData.prototypes, - definitions: previousData.definitions, + ...previousData, references: { - endCursor: newReferenceData.pageInfo.endCursor, - nodes: previousData.references.nodes.combine(newReferenceData.nodes.map(buildPreciseLocation)), + endCursor, + nodes: references, }, }) - - // If we've exhausted LSIF data and the flag is enabled, we add search-based data. - if (newReferenceData.pageInfo.endCursor === null && shouldMixPreciseAndSearchBasedReferences()) { - fetchSearchBasedReferences(deduplicateAndAddReferences) - } }, }) @@ -194,17 +173,12 @@ export const useCodeIntel = ({ fetchPolicy: 'no-cache', onCompleted: result => { const previousData = codeIntelData - const newPrototypesData = result.repository?.commit?.blob?.lsif?.prototypes - if (!previousData || !newPrototypesData) { return } - setCodeIntelData({ - references: previousData.references, - definitions: previousData.definitions, - implementations: previousData.implementations, + ...previousData, prototypes: { endCursor: newPrototypesData.pageInfo.endCursor, nodes: previousData.prototypes.nodes.combine(newPrototypesData.nodes.map(buildPreciseLocation)), @@ -220,17 +194,12 @@ export const useCodeIntel = ({ fetchPolicy: 'no-cache', onCompleted: result => { const previousData = codeIntelData - const newImplementationsData = result.repository?.commit?.blob?.lsif?.implementations - if (!previousData || !newImplementationsData) { return } - setCodeIntelData({ - references: previousData.references, - definitions: previousData.definitions, - prototypes: previousData.prototypes, + ...previousData, implementations: { endCursor: newImplementationsData.pageInfo.endCursor, nodes: previousData.implementations.nodes.combine( From fcc502b3a1ed969065210c663a06a0dc12de3190 Mon Sep 17 00:00:00 2001 From: Thorsten Ball <mrnugget@gmail.com> Date: Thu, 16 Nov 2023 16:10:43 +0100 Subject: [PATCH 050/222] github: fetch & persist disk usage of repositories (#58376) This changes the V3/V4 clients to populate the new `DiskUsageKibibytes` field on `github.Repository`. I've tried to follow existing conventions wrt to naming and JSON tags, but not 100% sure here. Any direction appreciated. It's part of a larger effort, but thought I'd split this out, because the testdata makes this always a lot to review. ===== Kibibytes vs. Kilobytes ======= A few words on the kibibytes/kilobytes thing: as far as I can tell (and JH is my witness) GitHub's API returns kibibytes (multiples of 1024) and not kilobytes (multiples of 1000). Look at src-cli in the API: https://api.github.com/repos/sourcegraph/src-cli That includes: "size": 21236 Now when you do a bare clone and get the size in _kilobytes_ you get this: - `du -k src-cli.git` prints `22532 src-cli.git` - `du -h src-cli.git` prints `22M src-cli.git` Since GitHub's value is lower, it means its multiples are higher (1024 instead of 1000). And if we convert their value we get a lower value too: `echo '21236' | numfmt --to=iec --from-unit=1024` -> `21M` ===== Accuracy of this value ======= I couldn't reproduce GitHub's size/diskUsage on my machines. I think it has to do with filesystem, bare clones, etc. But I think treating it as kibibytes is good enough for now. --- internal/extsvc/github/common.go | 40 ++-- .../testdata/golden/ListOrgRepositories | 6 +- .../testdata/golden/ListRepositoriesForSearch | 7 +- .../testdata/golden/ListTeamRepositories | 3 +- .../testdata/golden/SearchRepos-huge-query | 175 ++++++------------ .../testdata/golden/SearchRepos-narrow-query | 5 +- .../cached-response/first_run | 11 +- .../cached-response/second_run | 11 +- .../golden/TestGetRepository/forked_repo | 7 +- ...tV3Client_Fork_success_sourcegraph-testing | 7 +- .../golden/TestV3Client_Fork_success_user | 7 +- .../github/testdata/vcr/GetRepository.yaml | 68 ++++--- .../vcr/ListRepositoriesForSearch.yaml | 6 +- .../github/testdata/vcr/SearchRepos.yaml | 39 ++-- internal/extsvc/github/v3_test.go | 140 +++++++------- internal/extsvc/github/v4.go | 2 + internal/repos/github_test.go | 15 +- 17 files changed, 267 insertions(+), 282 deletions(-) diff --git a/internal/extsvc/github/common.go b/internal/extsvc/github/common.go index 651a3123f95da..6f10238f9e1c9 100644 --- a/internal/extsvc/github/common.go +++ b/internal/extsvc/github/common.go @@ -1806,6 +1806,11 @@ type Repository struct { // Parent is non-nil for forks and contains details of the parent repository. Parent *ParentRepository `json:",omitempty"` + + // DiskUsageKibibytes is, according to GitHub's docs, in kilobytes, but + // empirically it's in kibibytes (meaning: multiples of 1024 bytes, not + // 1000). + DiskUsageKibibytes int `json:"DiskUsage,omitempty"` } // ParentRepository is the parent of a GitHub repository. @@ -1854,6 +1859,10 @@ type restRepository struct { Visibility string `json:"visibility"` Topics []string `json:"topics"` Parent *restParentRepository `json:"parent,omitempty"` + // DiskUsageKibibytes uses the "size" field which is, according to GitHub's + // docs, in kilobytes, but empirically it's in kibibytes (meaning: + // multiples of 1024 bytes, not 1000). + DiskUsageKibibytes int `json:"size"` } // getRepositoryFromAPI attempts to fetch a repository from the GitHub API without use of the redis cache. @@ -1881,21 +1890,22 @@ func convertRestRepo(restRepo restRepository) *Repository { } repo := Repository{ - ID: restRepo.ID, - DatabaseID: restRepo.DatabaseID, - NameWithOwner: restRepo.FullName, - Description: restRepo.Description, - URL: restRepo.HTMLURL, - IsPrivate: restRepo.Private, - IsFork: restRepo.Fork, - IsArchived: restRepo.Archived, - IsLocked: restRepo.Locked, - IsDisabled: restRepo.Disabled, - ViewerPermission: convertRestRepoPermissions(restRepo.Permissions), - StargazerCount: restRepo.Stars, - ForkCount: restRepo.Forks, - RepositoryTopics: RepositoryTopics{topics}, - Visibility: Visibility(restRepo.Visibility), + ID: restRepo.ID, + DatabaseID: restRepo.DatabaseID, + NameWithOwner: restRepo.FullName, + Description: restRepo.Description, + URL: restRepo.HTMLURL, + IsPrivate: restRepo.Private, + IsFork: restRepo.Fork, + IsArchived: restRepo.Archived, + IsLocked: restRepo.Locked, + IsDisabled: restRepo.Disabled, + ViewerPermission: convertRestRepoPermissions(restRepo.Permissions), + StargazerCount: restRepo.Stars, + ForkCount: restRepo.Forks, + RepositoryTopics: RepositoryTopics{topics}, + Visibility: Visibility(restRepo.Visibility), + DiskUsageKibibytes: restRepo.DiskUsageKibibytes, } if restRepo.Parent != nil { diff --git a/internal/extsvc/github/testdata/golden/ListOrgRepositories b/internal/extsvc/github/testdata/golden/ListOrgRepositories index d7d682f8ff29c..37bdf8a72cb6d 100644 --- a/internal/extsvc/github/testdata/golden/ListOrgRepositories +++ b/internal/extsvc/github/testdata/golden/ListOrgRepositories @@ -13,7 +13,8 @@ "ViewerPermission": "ADMIN", "RepositoryTopics": { "Nodes": [] - } + }, + "DiskUsage": 1 }, { "ID": "MDEwOlJlcG9zaXRvcnkyNjMwMzM3NjE=", @@ -29,6 +30,7 @@ "ViewerPermission": "ADMIN", "RepositoryTopics": { "Nodes": [] - } + }, + "DiskUsage": 1 } ] \ No newline at end of file diff --git a/internal/extsvc/github/testdata/golden/ListRepositoriesForSearch b/internal/extsvc/github/testdata/golden/ListRepositoriesForSearch index 218da09b4c2f7..ff18b62abf91a 100644 --- a/internal/extsvc/github/testdata/golden/ListRepositoriesForSearch +++ b/internal/extsvc/github/testdata/golden/ListRepositoriesForSearch @@ -11,9 +11,10 @@ "IsLocked": false, "IsDisabled": false, "ViewerPermission": "READ", - "visibility": "public", "RepositoryTopics": { "Nodes": [] - } + }, + "visibility": "public", + "DiskUsage": 1 } - ] + ] \ No newline at end of file diff --git a/internal/extsvc/github/testdata/golden/ListTeamRepositories b/internal/extsvc/github/testdata/golden/ListTeamRepositories index 8f62460f090af..963936f3468eb 100644 --- a/internal/extsvc/github/testdata/golden/ListTeamRepositories +++ b/internal/extsvc/github/testdata/golden/ListTeamRepositories @@ -13,6 +13,7 @@ "ViewerPermission": "READ", "RepositoryTopics": { "Nodes": [] - } + }, + "DiskUsage": 1 } ] \ No newline at end of file diff --git a/internal/extsvc/github/testdata/golden/SearchRepos-huge-query b/internal/extsvc/github/testdata/golden/SearchRepos-huge-query index cfb8249f5f238..a985ecce91eeb 100644 --- a/internal/extsvc/github/testdata/golden/SearchRepos-huge-query +++ b/internal/extsvc/github/testdata/golden/SearchRepos-huge-query @@ -96,33 +96,16 @@ } ] }, - "StargazerCount": 361294, - "ForkCount": 31019 + "StargazerCount": 378065, + "ForkCount": 34811, + "DiskUsage": 398421 }, { - "ID": "MDEwOlJlcG9zaXRvcnkxNzc3MzY1MzM=", - "DatabaseID": 177736533, - "NameWithOwner": "996icu/996.ICU", - "Description": "Repo for counting stars and contributing. Press F to pay respect to glorious developers.", - "URL": "https://github.com/996icu/996.ICU", - "IsPrivate": false, - "IsFork": false, - "IsArchived": false, - "IsLocked": false, - "IsDisabled": false, - "ViewerPermission": "READ", - "RepositoryTopics": { - "Nodes": [] - }, - "StargazerCount": 265043, - "ForkCount": 21462 - }, - { - "ID": "MDEwOlJlcG9zaXRvcnk2MDQ5MzEwMQ==", - "DatabaseID": 60493101, - "NameWithOwner": "jwasham/coding-interview-university", - "Description": "A complete computer science study plan to become a software engineer.", - "URL": "https://github.com/jwasham/coding-interview-university", + "ID": "MDEwOlJlcG9zaXRvcnkxMzQ5MTg5NQ==", + "DatabaseID": 13491895, + "NameWithOwner": "EbookFoundation/free-programming-books", + "Description": ":books: Freely available programming books", + "URL": "https://github.com/EbookFoundation/free-programming-books", "IsPrivate": false, "IsFork": false, "IsArchived": false, @@ -133,68 +116,34 @@ "Nodes": [ { "Topic": { - "Name": "computer-science" - } - }, - { - "Topic": { - "Name": "interview" - } - }, - { - "Topic": { - "Name": "programming-interviews" - } - }, - { - "Topic": { - "Name": "study-plan" - } - }, - { - "Topic": { - "Name": "data-structures" - } - }, - { - "Topic": { - "Name": "algorithms" - } - }, - { - "Topic": { - "Name": "software-engineering" - } - }, - { - "Topic": { - "Name": "algorithm" + "Name": "education" } }, { "Topic": { - "Name": "coding-interviews" + "Name": "books" } }, { "Topic": { - "Name": "interview-prep" + "Name": "list" } }, { "Topic": { - "Name": "coding-interview" + "Name": "resource" } }, { "Topic": { - "Name": "interview-preparation" + "Name": "hacktoberfest" } } ] }, - "StargazerCount": 246973, - "ForkCount": 65490 + "StargazerCount": 303257, + "ForkCount": 58520, + "DiskUsage": 17796 }, { "ID": "MDEwOlJlcG9zaXRvcnkyMTczNzQ2NQ==", @@ -237,15 +186,16 @@ } ] }, - "StargazerCount": 238837, - "ForkCount": 24935 + "StargazerCount": 277707, + "ForkCount": 26720, + "DiskUsage": 1475 }, { - "ID": "MDEwOlJlcG9zaXRvcnk4NTA3NzU1OA==", - "DatabaseID": 85077558, - "NameWithOwner": "kamranahmedse/developer-roadmap", - "Description": "Interactive roadmaps, guides and other educational content to help developers grow in their careers.", - "URL": "https://github.com/kamranahmedse/developer-roadmap", + "ID": "MDEwOlJlcG9zaXRvcnk1NDM0Njc5OQ==", + "DatabaseID": 54346799, + "NameWithOwner": "public-apis/public-apis", + "Description": "A collective list of free APIs", + "URL": "https://github.com/public-apis/public-apis", "IsPrivate": false, "IsFork": false, "IsArchived": false, @@ -256,100 +206,95 @@ "Nodes": [ { "Topic": { - "Name": "computer-science" - } - }, - { - "Topic": { - "Name": "roadmap" - } - }, - { - "Topic": { - "Name": "developer-roadmap" - } - }, - { - "Topic": { - "Name": "frontend-roadmap" - } - }, - { - "Topic": { - "Name": "devops-roadmap" - } - }, - { - "Topic": { - "Name": "backend-roadmap" + "Name": "api" } }, { "Topic": { - "Name": "react-roadmap" + "Name": "public-apis" } }, { "Topic": { - "Name": "angular-roadmap" + "Name": "free" } }, { "Topic": { - "Name": "python-roadmap" + "Name": "apis" } }, { "Topic": { - "Name": "go-roadmap" + "Name": "list" } }, { "Topic": { - "Name": "java-roadmap" + "Name": "development" } }, { "Topic": { - "Name": "dba-roadmap" + "Name": "software" } }, { "Topic": { - "Name": "vue-roadmap" + "Name": "public" } }, { "Topic": { - "Name": "blockchain-roadmap" + "Name": "resources" } }, { "Topic": { - "Name": "javascript-roadmap" + "Name": "dataset" } }, { "Topic": { - "Name": "nodejs-roadmap" + "Name": "open-source" } }, { "Topic": { - "Name": "qa-roadmap" + "Name": "public-api" } }, { "Topic": { - "Name": "software-architect-roadmap" + "Name": "lists" } } ] }, - "StargazerCount": 229269, - "ForkCount": 32902 + "StargazerCount": 268744, + "ForkCount": 30233, + "DiskUsage": 5088 + }, + { + "ID": "MDEwOlJlcG9zaXRvcnkxNzc3MzY1MzM=", + "DatabaseID": 177736533, + "NameWithOwner": "996icu/996.ICU", + "Description": "Repo for counting stars and contributing. Press F to pay respect to glorious developers.", + "URL": "https://github.com/996icu/996.ICU", + "IsPrivate": false, + "IsFork": false, + "IsArchived": false, + "IsLocked": false, + "IsDisabled": false, + "ViewerPermission": "READ", + "RepositoryTopics": { + "Nodes": [] + }, + "StargazerCount": 268154, + "ForkCount": 21476, + "DiskUsage": 187836 } ], - "TotalCount": 2848396, + "TotalCount": 3396424, "EndCursor": "Y3Vyc29yOjU=" } \ No newline at end of file diff --git a/internal/extsvc/github/testdata/golden/SearchRepos-narrow-query b/internal/extsvc/github/testdata/golden/SearchRepos-narrow-query index 2f082d18d9097..2ca158b8ada71 100644 --- a/internal/extsvc/github/testdata/golden/SearchRepos-narrow-query +++ b/internal/extsvc/github/testdata/golden/SearchRepos-narrow-query @@ -36,8 +36,9 @@ } ] }, - "StargazerCount": 20789, - "ForkCount": 1280 + "StargazerCount": 22111, + "ForkCount": 1363, + "DiskUsage": 2553 } ], "TotalCount": 1, diff --git a/internal/extsvc/github/testdata/golden/TestGetRepository/cached-response/first_run b/internal/extsvc/github/testdata/golden/TestGetRepository/cached-response/first_run index b68f66f4a7dfc..990f99507dab4 100644 --- a/internal/extsvc/github/testdata/golden/TestGetRepository/cached-response/first_run +++ b/internal/extsvc/github/testdata/golden/TestGetRepository/cached-response/first_run @@ -9,8 +9,7 @@ "IsArchived": false, "IsLocked": false, "IsDisabled": false, - "ViewerPermission": "WRITE", - "visibility": "public", + "ViewerPermission": "ADMIN", "RepositoryTopics": { "Nodes": [ { @@ -45,6 +44,8 @@ } ] }, - "StargazerCount": 8662, - "ForkCount": 1116 - } + "StargazerCount": 9145, + "ForkCount": 1191, + "visibility": "public", + "DiskUsage": 1162483 + } \ No newline at end of file diff --git a/internal/extsvc/github/testdata/golden/TestGetRepository/cached-response/second_run b/internal/extsvc/github/testdata/golden/TestGetRepository/cached-response/second_run index b68f66f4a7dfc..990f99507dab4 100644 --- a/internal/extsvc/github/testdata/golden/TestGetRepository/cached-response/second_run +++ b/internal/extsvc/github/testdata/golden/TestGetRepository/cached-response/second_run @@ -9,8 +9,7 @@ "IsArchived": false, "IsLocked": false, "IsDisabled": false, - "ViewerPermission": "WRITE", - "visibility": "public", + "ViewerPermission": "ADMIN", "RepositoryTopics": { "Nodes": [ { @@ -45,6 +44,8 @@ } ] }, - "StargazerCount": 8662, - "ForkCount": 1116 - } + "StargazerCount": 9145, + "ForkCount": 1191, + "visibility": "public", + "DiskUsage": 1162483 + } \ No newline at end of file diff --git a/internal/extsvc/github/testdata/golden/TestGetRepository/forked_repo b/internal/extsvc/github/testdata/golden/TestGetRepository/forked_repo index 4f8b0cca5b067..770352164fbc1 100644 --- a/internal/extsvc/github/testdata/golden/TestGetRepository/forked_repo +++ b/internal/extsvc/github/testdata/golden/TestGetRepository/forked_repo @@ -10,12 +10,13 @@ "IsLocked": false, "IsDisabled": false, "ViewerPermission": "READ", - "visibility": "public", "RepositoryTopics": { "Nodes": [] }, + "visibility": "public", "Parent": { "NameWithOwner": "sourcegraph/sourcegraph", "IsFork": false - } - } + }, + "DiskUsage": 1073588 + } \ No newline at end of file diff --git a/internal/extsvc/github/testdata/golden/TestV3Client_Fork_success_sourcegraph-testing b/internal/extsvc/github/testdata/golden/TestV3Client_Fork_success_sourcegraph-testing index 78d8d43124d8f..321dacfcc886a 100644 --- a/internal/extsvc/github/testdata/golden/TestV3Client_Fork_success_sourcegraph-testing +++ b/internal/extsvc/github/testdata/golden/TestV3Client_Fork_success_sourcegraph-testing @@ -10,12 +10,13 @@ "IsLocked": false, "IsDisabled": false, "ViewerPermission": "ADMIN", - "visibility": "public", "RepositoryTopics": { "Nodes": [] }, + "visibility": "public", "Parent": { "NameWithOwner": "sourcegraph/automation-testing", "IsFork": false - } - } + }, + "DiskUsage": 705 + } \ No newline at end of file diff --git a/internal/extsvc/github/testdata/golden/TestV3Client_Fork_success_user b/internal/extsvc/github/testdata/golden/TestV3Client_Fork_success_user index 5633c9d50e9a0..1adda4e94bb43 100644 --- a/internal/extsvc/github/testdata/golden/TestV3Client_Fork_success_user +++ b/internal/extsvc/github/testdata/golden/TestV3Client_Fork_success_user @@ -10,12 +10,13 @@ "IsLocked": false, "IsDisabled": false, "ViewerPermission": "ADMIN", - "visibility": "public", "RepositoryTopics": { "Nodes": [] }, + "visibility": "public", "Parent": { "NameWithOwner": "sourcegraph/automation-testing", "IsFork": false - } - } + }, + "DiskUsage": 703 + } \ No newline at end of file diff --git a/internal/extsvc/github/testdata/vcr/GetRepository.yaml b/internal/extsvc/github/testdata/vcr/GetRepository.yaml index 56177af7567ca..819b93645f9fc 100644 --- a/internal/extsvc/github/testdata/vcr/GetRepository.yaml +++ b/internal/extsvc/github/testdata/vcr/GetRepository.yaml @@ -16,7 +16,7 @@ interactions: method: GET response: body: '{"id":41288708,"node_id":"MDEwOlJlcG9zaXRvcnk0MTI4ODcwOA==","name":"sourcegraph","full_name":"sourcegraph/sourcegraph","private":false,"owner":{"login":"sourcegraph","id":3979584,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5Nzk1ODQ=","avatar_url":"https://avatars.githubusercontent.com/u/3979584?v=4","gravatar_id":"","url":"https://api.github.com/users/sourcegraph","html_url":"https://github.com/sourcegraph","followers_url":"https://api.github.com/users/sourcegraph/followers","following_url":"https://api.github.com/users/sourcegraph/following{/other_user}","gists_url":"https://api.github.com/users/sourcegraph/gists{/gist_id}","starred_url":"https://api.github.com/users/sourcegraph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sourcegraph/subscriptions","organizations_url":"https://api.github.com/users/sourcegraph/orgs","repos_url":"https://api.github.com/users/sourcegraph/repos","events_url":"https://api.github.com/users/sourcegraph/events{/privacy}","received_events_url":"https://api.github.com/users/sourcegraph/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/sourcegraph/sourcegraph","description":"Code - AI platform with Code Search & Cody","fork":false,"url":"https://api.github.com/repos/sourcegraph/sourcegraph","forks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/forks","keys_url":"https://api.github.com/repos/sourcegraph/sourcegraph/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sourcegraph/sourcegraph/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sourcegraph/sourcegraph/teams","hooks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/hooks","issue_events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/events{/number}","events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/events","assignees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/assignees{/user}","branches_url":"https://api.github.com/repos/sourcegraph/sourcegraph/branches{/branch}","tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/tags","blobs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/refs{/sha}","trees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sourcegraph/sourcegraph/statuses/{sha}","languages_url":"https://api.github.com/repos/sourcegraph/sourcegraph/languages","stargazers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/stargazers","contributors_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contributors","subscribers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscribers","subscription_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscription","commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/commits{/sha}","git_commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/commits{/sha}","comments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/comments{/number}","issue_comment_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/comments{/number}","contents_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contents/{+path}","compare_url":"https://api.github.com/repos/sourcegraph/sourcegraph/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sourcegraph/sourcegraph/merges","archive_url":"https://api.github.com/repos/sourcegraph/sourcegraph/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sourcegraph/sourcegraph/downloads","issues_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues{/number}","pulls_url":"https://api.github.com/repos/sourcegraph/sourcegraph/pulls{/number}","milestones_url":"https://api.github.com/repos/sourcegraph/sourcegraph/milestones{/number}","notifications_url":"https://api.github.com/repos/sourcegraph/sourcegraph/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sourcegraph/sourcegraph/labels{/name}","releases_url":"https://api.github.com/repos/sourcegraph/sourcegraph/releases{/id}","deployments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/deployments","created_at":"2015-08-24T07:27:28Z","updated_at":"2023-08-02T17:19:10Z","pushed_at":"2023-08-02T18:25:53Z","git_url":"git://github.com/sourcegraph/sourcegraph.git","ssh_url":"git@github.com:sourcegraph/sourcegraph.git","clone_url":"https://github.com/sourcegraph/sourcegraph.git","svn_url":"https://github.com/sourcegraph/sourcegraph","homepage":"https://sourcegraph.com","size":1127953,"stargazers_count":8662,"watchers_count":8662,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1116,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":5529,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["code-intelligence","code-search","lsif-enabled","open-source","repo-type-main","sourcegraph"],"visibility":"public","forks":1116,"open_issues":5529,"watchers":8662,"default_branch":"main","permissions":{"admin":false,"maintain":false,"push":true,"triage":true,"pull":true},"temp_clone_token":"","allow_squash_merge":true,"allow_merge_commit":false,"allow_rebase_merge":true,"allow_auto_merge":true,"delete_branch_on_merge":true,"allow_update_branch":true,"use_squash_pr_title_as_default":true,"squash_merge_commit_message":"PR_BODY","squash_merge_commit_title":"PR_TITLE","merge_commit_message":"PR_TITLE","merge_commit_title":"MERGE_MESSAGE","organization":{"login":"sourcegraph","id":3979584,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5Nzk1ODQ=","avatar_url":"https://avatars.githubusercontent.com/u/3979584?v=4","gravatar_id":"","url":"https://api.github.com/users/sourcegraph","html_url":"https://github.com/sourcegraph","followers_url":"https://api.github.com/users/sourcegraph/followers","following_url":"https://api.github.com/users/sourcegraph/following{/other_user}","gists_url":"https://api.github.com/users/sourcegraph/gists{/gist_id}","starred_url":"https://api.github.com/users/sourcegraph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sourcegraph/subscriptions","organizations_url":"https://api.github.com/users/sourcegraph/orgs","repos_url":"https://api.github.com/users/sourcegraph/repos","events_url":"https://api.github.com/users/sourcegraph/events{/privacy}","received_events_url":"https://api.github.com/users/sourcegraph/received_events","type":"Organization","site_admin":false},"network_count":1116,"subscribers_count":172}' + AI platform with Code Search & Cody","fork":false,"url":"https://api.github.com/repos/sourcegraph/sourcegraph","forks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/forks","keys_url":"https://api.github.com/repos/sourcegraph/sourcegraph/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sourcegraph/sourcegraph/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sourcegraph/sourcegraph/teams","hooks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/hooks","issue_events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/events{/number}","events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/events","assignees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/assignees{/user}","branches_url":"https://api.github.com/repos/sourcegraph/sourcegraph/branches{/branch}","tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/tags","blobs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/refs{/sha}","trees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sourcegraph/sourcegraph/statuses/{sha}","languages_url":"https://api.github.com/repos/sourcegraph/sourcegraph/languages","stargazers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/stargazers","contributors_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contributors","subscribers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscribers","subscription_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscription","commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/commits{/sha}","git_commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/commits{/sha}","comments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/comments{/number}","issue_comment_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/comments{/number}","contents_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contents/{+path}","compare_url":"https://api.github.com/repos/sourcegraph/sourcegraph/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sourcegraph/sourcegraph/merges","archive_url":"https://api.github.com/repos/sourcegraph/sourcegraph/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sourcegraph/sourcegraph/downloads","issues_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues{/number}","pulls_url":"https://api.github.com/repos/sourcegraph/sourcegraph/pulls{/number}","milestones_url":"https://api.github.com/repos/sourcegraph/sourcegraph/milestones{/number}","notifications_url":"https://api.github.com/repos/sourcegraph/sourcegraph/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sourcegraph/sourcegraph/labels{/name}","releases_url":"https://api.github.com/repos/sourcegraph/sourcegraph/releases{/id}","deployments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/deployments","created_at":"2015-08-24T07:27:28Z","updated_at":"2023-11-16T12:36:01Z","pushed_at":"2023-11-16T13:37:24Z","git_url":"git://github.com/sourcegraph/sourcegraph.git","ssh_url":"git@github.com:sourcegraph/sourcegraph.git","clone_url":"https://github.com/sourcegraph/sourcegraph.git","svn_url":"https://github.com/sourcegraph/sourcegraph","homepage":"https://sourcegraph.com","size":1162483,"stargazers_count":9145,"watchers_count":9145,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1191,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":5499,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["code-intelligence","code-search","lsif-enabled","open-source","repo-type-main","sourcegraph"],"visibility":"public","forks":1191,"open_issues":5499,"watchers":9145,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"organization":{"login":"sourcegraph","id":3979584,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5Nzk1ODQ=","avatar_url":"https://avatars.githubusercontent.com/u/3979584?v=4","gravatar_id":"","url":"https://api.github.com/users/sourcegraph","html_url":"https://github.com/sourcegraph","followers_url":"https://api.github.com/users/sourcegraph/followers","following_url":"https://api.github.com/users/sourcegraph/following{/other_user}","gists_url":"https://api.github.com/users/sourcegraph/gists{/gist_id}","starred_url":"https://api.github.com/users/sourcegraph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sourcegraph/subscriptions","organizations_url":"https://api.github.com/users/sourcegraph/orgs","repos_url":"https://api.github.com/users/sourcegraph/repos","events_url":"https://api.github.com/users/sourcegraph/events{/privacy}","received_events_url":"https://api.github.com/users/sourcegraph/received_events","type":"Organization","site_admin":false},"network_count":1191,"subscribers_count":176}' headers: Access-Control-Allow-Origin: - '*' @@ -32,11 +32,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Wed, 02 Aug 2023 18:28:48 GMT + - Thu, 16 Nov 2023 13:37:35 GMT Etag: - - W/"f8d4c2324df1f92fa0fe69ed634c7d85818b515154bbefae1f6aa762f2fd888a" + - W/"95c6c7c936c1bbcf5ab16d2d1ca93741d10bedb2516e5fc4c291342945eedfa0" Last-Modified: - - Wed, 02 Aug 2023 17:19:10 GMT + - Thu, 16 Nov 2023 12:36:01 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: @@ -46,6 +46,8 @@ interactions: Vary: - Accept, Authorization, Cookie, X-GitHub-OTP - Accept-Encoding, Accept, X-Requested-With + X-Accepted-Github-Permissions: + - metadata=read X-Content-Type-Options: - nosniff X-Frame-Options: @@ -56,17 +58,17 @@ interactions: - github.v3; param=jean-grey-preview; format=json, github.mercy-preview; param=machine-man-preview; format=json X-Github-Request-Id: - - E550:162A2F:5E9890:64897A:64CAA060 + - FFCC:C230:397CD4E9:3A2C68DA:65561B1F X-Ratelimit-Limit: - "5000" X-Ratelimit-Remaining: - - "4978" + - "4998" X-Ratelimit-Reset: - - "1691002952" + - "1700145293" X-Ratelimit-Resource: - core X-Ratelimit-Used: - - "22" + - "2" X-Varied-Accept: - application/vnd.github.jean-grey-preview+json,application/vnd.github.mercy-preview+json X-Xss-Protection: @@ -89,7 +91,7 @@ interactions: method: GET response: body: '{"id":41288708,"node_id":"MDEwOlJlcG9zaXRvcnk0MTI4ODcwOA==","name":"sourcegraph","full_name":"sourcegraph/sourcegraph","private":false,"owner":{"login":"sourcegraph","id":3979584,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5Nzk1ODQ=","avatar_url":"https://avatars.githubusercontent.com/u/3979584?v=4","gravatar_id":"","url":"https://api.github.com/users/sourcegraph","html_url":"https://github.com/sourcegraph","followers_url":"https://api.github.com/users/sourcegraph/followers","following_url":"https://api.github.com/users/sourcegraph/following{/other_user}","gists_url":"https://api.github.com/users/sourcegraph/gists{/gist_id}","starred_url":"https://api.github.com/users/sourcegraph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sourcegraph/subscriptions","organizations_url":"https://api.github.com/users/sourcegraph/orgs","repos_url":"https://api.github.com/users/sourcegraph/repos","events_url":"https://api.github.com/users/sourcegraph/events{/privacy}","received_events_url":"https://api.github.com/users/sourcegraph/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/sourcegraph/sourcegraph","description":"Code - AI platform with Code Search & Cody","fork":false,"url":"https://api.github.com/repos/sourcegraph/sourcegraph","forks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/forks","keys_url":"https://api.github.com/repos/sourcegraph/sourcegraph/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sourcegraph/sourcegraph/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sourcegraph/sourcegraph/teams","hooks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/hooks","issue_events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/events{/number}","events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/events","assignees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/assignees{/user}","branches_url":"https://api.github.com/repos/sourcegraph/sourcegraph/branches{/branch}","tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/tags","blobs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/refs{/sha}","trees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sourcegraph/sourcegraph/statuses/{sha}","languages_url":"https://api.github.com/repos/sourcegraph/sourcegraph/languages","stargazers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/stargazers","contributors_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contributors","subscribers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscribers","subscription_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscription","commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/commits{/sha}","git_commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/commits{/sha}","comments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/comments{/number}","issue_comment_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/comments{/number}","contents_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contents/{+path}","compare_url":"https://api.github.com/repos/sourcegraph/sourcegraph/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sourcegraph/sourcegraph/merges","archive_url":"https://api.github.com/repos/sourcegraph/sourcegraph/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sourcegraph/sourcegraph/downloads","issues_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues{/number}","pulls_url":"https://api.github.com/repos/sourcegraph/sourcegraph/pulls{/number}","milestones_url":"https://api.github.com/repos/sourcegraph/sourcegraph/milestones{/number}","notifications_url":"https://api.github.com/repos/sourcegraph/sourcegraph/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sourcegraph/sourcegraph/labels{/name}","releases_url":"https://api.github.com/repos/sourcegraph/sourcegraph/releases{/id}","deployments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/deployments","created_at":"2015-08-24T07:27:28Z","updated_at":"2023-08-02T17:19:10Z","pushed_at":"2023-08-02T18:25:53Z","git_url":"git://github.com/sourcegraph/sourcegraph.git","ssh_url":"git@github.com:sourcegraph/sourcegraph.git","clone_url":"https://github.com/sourcegraph/sourcegraph.git","svn_url":"https://github.com/sourcegraph/sourcegraph","homepage":"https://sourcegraph.com","size":1127953,"stargazers_count":8662,"watchers_count":8662,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1116,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":5529,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["code-intelligence","code-search","lsif-enabled","open-source","repo-type-main","sourcegraph"],"visibility":"public","forks":1116,"open_issues":5529,"watchers":8662,"default_branch":"main","permissions":{"admin":false,"maintain":false,"push":true,"triage":true,"pull":true},"temp_clone_token":"","allow_squash_merge":true,"allow_merge_commit":false,"allow_rebase_merge":true,"allow_auto_merge":true,"delete_branch_on_merge":true,"allow_update_branch":true,"use_squash_pr_title_as_default":true,"squash_merge_commit_message":"PR_BODY","squash_merge_commit_title":"PR_TITLE","merge_commit_message":"PR_TITLE","merge_commit_title":"MERGE_MESSAGE","organization":{"login":"sourcegraph","id":3979584,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5Nzk1ODQ=","avatar_url":"https://avatars.githubusercontent.com/u/3979584?v=4","gravatar_id":"","url":"https://api.github.com/users/sourcegraph","html_url":"https://github.com/sourcegraph","followers_url":"https://api.github.com/users/sourcegraph/followers","following_url":"https://api.github.com/users/sourcegraph/following{/other_user}","gists_url":"https://api.github.com/users/sourcegraph/gists{/gist_id}","starred_url":"https://api.github.com/users/sourcegraph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sourcegraph/subscriptions","organizations_url":"https://api.github.com/users/sourcegraph/orgs","repos_url":"https://api.github.com/users/sourcegraph/repos","events_url":"https://api.github.com/users/sourcegraph/events{/privacy}","received_events_url":"https://api.github.com/users/sourcegraph/received_events","type":"Organization","site_admin":false},"network_count":1116,"subscribers_count":172}' + AI platform with Code Search & Cody","fork":false,"url":"https://api.github.com/repos/sourcegraph/sourcegraph","forks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/forks","keys_url":"https://api.github.com/repos/sourcegraph/sourcegraph/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sourcegraph/sourcegraph/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sourcegraph/sourcegraph/teams","hooks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/hooks","issue_events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/events{/number}","events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/events","assignees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/assignees{/user}","branches_url":"https://api.github.com/repos/sourcegraph/sourcegraph/branches{/branch}","tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/tags","blobs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/refs{/sha}","trees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sourcegraph/sourcegraph/statuses/{sha}","languages_url":"https://api.github.com/repos/sourcegraph/sourcegraph/languages","stargazers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/stargazers","contributors_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contributors","subscribers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscribers","subscription_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscription","commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/commits{/sha}","git_commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/commits{/sha}","comments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/comments{/number}","issue_comment_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/comments{/number}","contents_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contents/{+path}","compare_url":"https://api.github.com/repos/sourcegraph/sourcegraph/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sourcegraph/sourcegraph/merges","archive_url":"https://api.github.com/repos/sourcegraph/sourcegraph/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sourcegraph/sourcegraph/downloads","issues_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues{/number}","pulls_url":"https://api.github.com/repos/sourcegraph/sourcegraph/pulls{/number}","milestones_url":"https://api.github.com/repos/sourcegraph/sourcegraph/milestones{/number}","notifications_url":"https://api.github.com/repos/sourcegraph/sourcegraph/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sourcegraph/sourcegraph/labels{/name}","releases_url":"https://api.github.com/repos/sourcegraph/sourcegraph/releases{/id}","deployments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/deployments","created_at":"2015-08-24T07:27:28Z","updated_at":"2023-11-16T12:36:01Z","pushed_at":"2023-11-16T13:37:24Z","git_url":"git://github.com/sourcegraph/sourcegraph.git","ssh_url":"git@github.com:sourcegraph/sourcegraph.git","clone_url":"https://github.com/sourcegraph/sourcegraph.git","svn_url":"https://github.com/sourcegraph/sourcegraph","homepage":"https://sourcegraph.com","size":1162483,"stargazers_count":9145,"watchers_count":9145,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1191,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":5499,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["code-intelligence","code-search","lsif-enabled","open-source","repo-type-main","sourcegraph"],"visibility":"public","forks":1191,"open_issues":5499,"watchers":9145,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"organization":{"login":"sourcegraph","id":3979584,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5Nzk1ODQ=","avatar_url":"https://avatars.githubusercontent.com/u/3979584?v=4","gravatar_id":"","url":"https://api.github.com/users/sourcegraph","html_url":"https://github.com/sourcegraph","followers_url":"https://api.github.com/users/sourcegraph/followers","following_url":"https://api.github.com/users/sourcegraph/following{/other_user}","gists_url":"https://api.github.com/users/sourcegraph/gists{/gist_id}","starred_url":"https://api.github.com/users/sourcegraph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sourcegraph/subscriptions","organizations_url":"https://api.github.com/users/sourcegraph/orgs","repos_url":"https://api.github.com/users/sourcegraph/repos","events_url":"https://api.github.com/users/sourcegraph/events{/privacy}","received_events_url":"https://api.github.com/users/sourcegraph/received_events","type":"Organization","site_admin":false},"network_count":1191,"subscribers_count":176}' headers: Access-Control-Allow-Origin: - '*' @@ -105,11 +107,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Wed, 02 Aug 2023 18:28:48 GMT + - Thu, 16 Nov 2023 13:37:36 GMT Etag: - - '"f8d4c2324df1f92fa0fe69ed634c7d85818b515154bbefae1f6aa762f2fd888a"' + - '"95c6c7c936c1bbcf5ab16d2d1ca93741d10bedb2516e5fc4c291342945eedfa0"' Last-Modified: - - Wed, 02 Aug 2023 17:19:10 GMT + - Thu, 16 Nov 2023 12:36:01 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: @@ -119,6 +121,8 @@ interactions: Vary: - Accept, Authorization, Cookie, X-GitHub-OTP - Accept-Encoding, Accept, X-Requested-With + X-Accepted-Github-Permissions: + - metadata=read X-Content-Type-Options: - nosniff X-Frame-Options: @@ -131,17 +135,17 @@ interactions: - github.v3; param=jean-grey-preview; format=json, github.mercy-preview; param=machine-man-preview; format=json X-Github-Request-Id: - - E550:162A2F:5E98A0:648993:64CAA060 + - FFCC:C230:397CD626:3A2C69F7:65561B1F X-Ratelimit-Limit: - "5000" X-Ratelimit-Remaining: - - "4978" + - "4998" X-Ratelimit-Reset: - - "1691002952" + - "1700145293" X-Ratelimit-Resource: - core X-Ratelimit-Used: - - "22" + - "2" X-Varied-Accept: - application/vnd.github.jean-grey-preview+json,application/vnd.github.mercy-preview+json X-Xss-Protection: @@ -177,7 +181,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Wed, 02 Aug 2023 18:28:49 GMT + - Thu, 16 Nov 2023 13:37:36 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: @@ -186,6 +190,8 @@ interactions: - max-age=31536000; includeSubdomains; preload Vary: - Accept-Encoding, Accept, X-Requested-With + X-Accepted-Github-Permissions: + - metadata=read X-Content-Type-Options: - nosniff X-Frame-Options: @@ -196,17 +202,17 @@ interactions: - github.v3; param=jean-grey-preview; format=json, github.mercy-preview; param=machine-man-preview; format=json X-Github-Request-Id: - - E550:162A2F:5E98B9:6489AF:64CAA060 + - FFCC:C230:397CD7D1:3A2C6BAA:65561B20 X-Ratelimit-Limit: - "5000" X-Ratelimit-Remaining: - - "4977" + - "4997" X-Ratelimit-Reset: - - "1691002952" + - "1700145293" X-Ratelimit-Resource: - core X-Ratelimit-Used: - - "23" + - "3" X-Varied-Accept: - application/vnd.github.jean-grey-preview+json,application/vnd.github.mercy-preview+json X-Xss-Protection: @@ -229,9 +235,9 @@ interactions: method: GET response: body: '{"id":662172899,"node_id":"R_kgDOJ3f04w","name":"sourcegraph","full_name":"sgtest/sourcegraph","private":false,"owner":{"login":"sgtest","id":5858054,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU4NTgwNTQ=","avatar_url":"https://avatars.githubusercontent.com/u/5858054?v=4","gravatar_id":"","url":"https://api.github.com/users/sgtest","html_url":"https://github.com/sgtest","followers_url":"https://api.github.com/users/sgtest/followers","following_url":"https://api.github.com/users/sgtest/following{/other_user}","gists_url":"https://api.github.com/users/sgtest/gists{/gist_id}","starred_url":"https://api.github.com/users/sgtest/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sgtest/subscriptions","organizations_url":"https://api.github.com/users/sgtest/orgs","repos_url":"https://api.github.com/users/sgtest/repos","events_url":"https://api.github.com/users/sgtest/events{/privacy}","received_events_url":"https://api.github.com/users/sgtest/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/sgtest/sourcegraph","description":"Code - Intelligence Platform","fork":true,"url":"https://api.github.com/repos/sgtest/sourcegraph","forks_url":"https://api.github.com/repos/sgtest/sourcegraph/forks","keys_url":"https://api.github.com/repos/sgtest/sourcegraph/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sgtest/sourcegraph/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sgtest/sourcegraph/teams","hooks_url":"https://api.github.com/repos/sgtest/sourcegraph/hooks","issue_events_url":"https://api.github.com/repos/sgtest/sourcegraph/issues/events{/number}","events_url":"https://api.github.com/repos/sgtest/sourcegraph/events","assignees_url":"https://api.github.com/repos/sgtest/sourcegraph/assignees{/user}","branches_url":"https://api.github.com/repos/sgtest/sourcegraph/branches{/branch}","tags_url":"https://api.github.com/repos/sgtest/sourcegraph/tags","blobs_url":"https://api.github.com/repos/sgtest/sourcegraph/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sgtest/sourcegraph/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sgtest/sourcegraph/git/refs{/sha}","trees_url":"https://api.github.com/repos/sgtest/sourcegraph/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sgtest/sourcegraph/statuses/{sha}","languages_url":"https://api.github.com/repos/sgtest/sourcegraph/languages","stargazers_url":"https://api.github.com/repos/sgtest/sourcegraph/stargazers","contributors_url":"https://api.github.com/repos/sgtest/sourcegraph/contributors","subscribers_url":"https://api.github.com/repos/sgtest/sourcegraph/subscribers","subscription_url":"https://api.github.com/repos/sgtest/sourcegraph/subscription","commits_url":"https://api.github.com/repos/sgtest/sourcegraph/commits{/sha}","git_commits_url":"https://api.github.com/repos/sgtest/sourcegraph/git/commits{/sha}","comments_url":"https://api.github.com/repos/sgtest/sourcegraph/comments{/number}","issue_comment_url":"https://api.github.com/repos/sgtest/sourcegraph/issues/comments{/number}","contents_url":"https://api.github.com/repos/sgtest/sourcegraph/contents/{+path}","compare_url":"https://api.github.com/repos/sgtest/sourcegraph/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sgtest/sourcegraph/merges","archive_url":"https://api.github.com/repos/sgtest/sourcegraph/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sgtest/sourcegraph/downloads","issues_url":"https://api.github.com/repos/sgtest/sourcegraph/issues{/number}","pulls_url":"https://api.github.com/repos/sgtest/sourcegraph/pulls{/number}","milestones_url":"https://api.github.com/repos/sgtest/sourcegraph/milestones{/number}","notifications_url":"https://api.github.com/repos/sgtest/sourcegraph/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sgtest/sourcegraph/labels{/name}","releases_url":"https://api.github.com/repos/sgtest/sourcegraph/releases{/id}","deployments_url":"https://api.github.com/repos/sgtest/sourcegraph/deployments","created_at":"2023-07-04T14:06:51Z","updated_at":"2023-07-04T14:06:51Z","pushed_at":"2023-07-04T14:04:45Z","git_url":"git://github.com/sgtest/sourcegraph.git","ssh_url":"git@github.com:sgtest/sourcegraph.git","clone_url":"https://github.com/sgtest/sourcegraph.git","svn_url":"https://github.com/sgtest/sourcegraph","homepage":"https://sourcegraph.com","size":1073588,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":[],"visibility":"public","forks":0,"open_issues":0,"watchers":0,"default_branch":"main","permissions":{"admin":false,"maintain":false,"push":false,"triage":false,"pull":true},"temp_clone_token":"","organization":{"login":"sgtest","id":5858054,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU4NTgwNTQ=","avatar_url":"https://avatars.githubusercontent.com/u/5858054?v=4","gravatar_id":"","url":"https://api.github.com/users/sgtest","html_url":"https://github.com/sgtest","followers_url":"https://api.github.com/users/sgtest/followers","following_url":"https://api.github.com/users/sgtest/following{/other_user}","gists_url":"https://api.github.com/users/sgtest/gists{/gist_id}","starred_url":"https://api.github.com/users/sgtest/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sgtest/subscriptions","organizations_url":"https://api.github.com/users/sgtest/orgs","repos_url":"https://api.github.com/users/sgtest/repos","events_url":"https://api.github.com/users/sgtest/events{/privacy}","received_events_url":"https://api.github.com/users/sgtest/received_events","type":"Organization","site_admin":false},"parent":{"id":41288708,"node_id":"MDEwOlJlcG9zaXRvcnk0MTI4ODcwOA==","name":"sourcegraph","full_name":"sourcegraph/sourcegraph","private":false,"owner":{"login":"sourcegraph","id":3979584,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5Nzk1ODQ=","avatar_url":"https://avatars.githubusercontent.com/u/3979584?v=4","gravatar_id":"","url":"https://api.github.com/users/sourcegraph","html_url":"https://github.com/sourcegraph","followers_url":"https://api.github.com/users/sourcegraph/followers","following_url":"https://api.github.com/users/sourcegraph/following{/other_user}","gists_url":"https://api.github.com/users/sourcegraph/gists{/gist_id}","starred_url":"https://api.github.com/users/sourcegraph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sourcegraph/subscriptions","organizations_url":"https://api.github.com/users/sourcegraph/orgs","repos_url":"https://api.github.com/users/sourcegraph/repos","events_url":"https://api.github.com/users/sourcegraph/events{/privacy}","received_events_url":"https://api.github.com/users/sourcegraph/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/sourcegraph/sourcegraph","description":"Code - AI platform with Code Search & Cody","fork":false,"url":"https://api.github.com/repos/sourcegraph/sourcegraph","forks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/forks","keys_url":"https://api.github.com/repos/sourcegraph/sourcegraph/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sourcegraph/sourcegraph/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sourcegraph/sourcegraph/teams","hooks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/hooks","issue_events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/events{/number}","events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/events","assignees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/assignees{/user}","branches_url":"https://api.github.com/repos/sourcegraph/sourcegraph/branches{/branch}","tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/tags","blobs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/refs{/sha}","trees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sourcegraph/sourcegraph/statuses/{sha}","languages_url":"https://api.github.com/repos/sourcegraph/sourcegraph/languages","stargazers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/stargazers","contributors_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contributors","subscribers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscribers","subscription_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscription","commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/commits{/sha}","git_commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/commits{/sha}","comments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/comments{/number}","issue_comment_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/comments{/number}","contents_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contents/{+path}","compare_url":"https://api.github.com/repos/sourcegraph/sourcegraph/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sourcegraph/sourcegraph/merges","archive_url":"https://api.github.com/repos/sourcegraph/sourcegraph/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sourcegraph/sourcegraph/downloads","issues_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues{/number}","pulls_url":"https://api.github.com/repos/sourcegraph/sourcegraph/pulls{/number}","milestones_url":"https://api.github.com/repos/sourcegraph/sourcegraph/milestones{/number}","notifications_url":"https://api.github.com/repos/sourcegraph/sourcegraph/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sourcegraph/sourcegraph/labels{/name}","releases_url":"https://api.github.com/repos/sourcegraph/sourcegraph/releases{/id}","deployments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/deployments","created_at":"2015-08-24T07:27:28Z","updated_at":"2023-08-02T17:19:10Z","pushed_at":"2023-08-02T18:25:53Z","git_url":"git://github.com/sourcegraph/sourcegraph.git","ssh_url":"git@github.com:sourcegraph/sourcegraph.git","clone_url":"https://github.com/sourcegraph/sourcegraph.git","svn_url":"https://github.com/sourcegraph/sourcegraph","homepage":"https://sourcegraph.com","size":1127953,"stargazers_count":8662,"watchers_count":8662,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1116,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":5529,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["code-intelligence","code-search","lsif-enabled","open-source","repo-type-main","sourcegraph"],"visibility":"public","forks":1116,"open_issues":5529,"watchers":8662,"default_branch":"main"},"source":{"id":41288708,"node_id":"MDEwOlJlcG9zaXRvcnk0MTI4ODcwOA==","name":"sourcegraph","full_name":"sourcegraph/sourcegraph","private":false,"owner":{"login":"sourcegraph","id":3979584,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5Nzk1ODQ=","avatar_url":"https://avatars.githubusercontent.com/u/3979584?v=4","gravatar_id":"","url":"https://api.github.com/users/sourcegraph","html_url":"https://github.com/sourcegraph","followers_url":"https://api.github.com/users/sourcegraph/followers","following_url":"https://api.github.com/users/sourcegraph/following{/other_user}","gists_url":"https://api.github.com/users/sourcegraph/gists{/gist_id}","starred_url":"https://api.github.com/users/sourcegraph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sourcegraph/subscriptions","organizations_url":"https://api.github.com/users/sourcegraph/orgs","repos_url":"https://api.github.com/users/sourcegraph/repos","events_url":"https://api.github.com/users/sourcegraph/events{/privacy}","received_events_url":"https://api.github.com/users/sourcegraph/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/sourcegraph/sourcegraph","description":"Code - AI platform with Code Search & Cody","fork":false,"url":"https://api.github.com/repos/sourcegraph/sourcegraph","forks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/forks","keys_url":"https://api.github.com/repos/sourcegraph/sourcegraph/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sourcegraph/sourcegraph/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sourcegraph/sourcegraph/teams","hooks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/hooks","issue_events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/events{/number}","events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/events","assignees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/assignees{/user}","branches_url":"https://api.github.com/repos/sourcegraph/sourcegraph/branches{/branch}","tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/tags","blobs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/refs{/sha}","trees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sourcegraph/sourcegraph/statuses/{sha}","languages_url":"https://api.github.com/repos/sourcegraph/sourcegraph/languages","stargazers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/stargazers","contributors_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contributors","subscribers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscribers","subscription_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscription","commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/commits{/sha}","git_commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/commits{/sha}","comments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/comments{/number}","issue_comment_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/comments{/number}","contents_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contents/{+path}","compare_url":"https://api.github.com/repos/sourcegraph/sourcegraph/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sourcegraph/sourcegraph/merges","archive_url":"https://api.github.com/repos/sourcegraph/sourcegraph/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sourcegraph/sourcegraph/downloads","issues_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues{/number}","pulls_url":"https://api.github.com/repos/sourcegraph/sourcegraph/pulls{/number}","milestones_url":"https://api.github.com/repos/sourcegraph/sourcegraph/milestones{/number}","notifications_url":"https://api.github.com/repos/sourcegraph/sourcegraph/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sourcegraph/sourcegraph/labels{/name}","releases_url":"https://api.github.com/repos/sourcegraph/sourcegraph/releases{/id}","deployments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/deployments","created_at":"2015-08-24T07:27:28Z","updated_at":"2023-08-02T17:19:10Z","pushed_at":"2023-08-02T18:25:53Z","git_url":"git://github.com/sourcegraph/sourcegraph.git","ssh_url":"git@github.com:sourcegraph/sourcegraph.git","clone_url":"https://github.com/sourcegraph/sourcegraph.git","svn_url":"https://github.com/sourcegraph/sourcegraph","homepage":"https://sourcegraph.com","size":1127953,"stargazers_count":8662,"watchers_count":8662,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1116,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":5529,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["code-intelligence","code-search","lsif-enabled","open-source","repo-type-main","sourcegraph"],"visibility":"public","forks":1116,"open_issues":5529,"watchers":8662,"default_branch":"main"},"network_count":1116,"subscribers_count":1}' + Intelligence Platform","fork":true,"url":"https://api.github.com/repos/sgtest/sourcegraph","forks_url":"https://api.github.com/repos/sgtest/sourcegraph/forks","keys_url":"https://api.github.com/repos/sgtest/sourcegraph/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sgtest/sourcegraph/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sgtest/sourcegraph/teams","hooks_url":"https://api.github.com/repos/sgtest/sourcegraph/hooks","issue_events_url":"https://api.github.com/repos/sgtest/sourcegraph/issues/events{/number}","events_url":"https://api.github.com/repos/sgtest/sourcegraph/events","assignees_url":"https://api.github.com/repos/sgtest/sourcegraph/assignees{/user}","branches_url":"https://api.github.com/repos/sgtest/sourcegraph/branches{/branch}","tags_url":"https://api.github.com/repos/sgtest/sourcegraph/tags","blobs_url":"https://api.github.com/repos/sgtest/sourcegraph/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sgtest/sourcegraph/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sgtest/sourcegraph/git/refs{/sha}","trees_url":"https://api.github.com/repos/sgtest/sourcegraph/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sgtest/sourcegraph/statuses/{sha}","languages_url":"https://api.github.com/repos/sgtest/sourcegraph/languages","stargazers_url":"https://api.github.com/repos/sgtest/sourcegraph/stargazers","contributors_url":"https://api.github.com/repos/sgtest/sourcegraph/contributors","subscribers_url":"https://api.github.com/repos/sgtest/sourcegraph/subscribers","subscription_url":"https://api.github.com/repos/sgtest/sourcegraph/subscription","commits_url":"https://api.github.com/repos/sgtest/sourcegraph/commits{/sha}","git_commits_url":"https://api.github.com/repos/sgtest/sourcegraph/git/commits{/sha}","comments_url":"https://api.github.com/repos/sgtest/sourcegraph/comments{/number}","issue_comment_url":"https://api.github.com/repos/sgtest/sourcegraph/issues/comments{/number}","contents_url":"https://api.github.com/repos/sgtest/sourcegraph/contents/{+path}","compare_url":"https://api.github.com/repos/sgtest/sourcegraph/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sgtest/sourcegraph/merges","archive_url":"https://api.github.com/repos/sgtest/sourcegraph/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sgtest/sourcegraph/downloads","issues_url":"https://api.github.com/repos/sgtest/sourcegraph/issues{/number}","pulls_url":"https://api.github.com/repos/sgtest/sourcegraph/pulls{/number}","milestones_url":"https://api.github.com/repos/sgtest/sourcegraph/milestones{/number}","notifications_url":"https://api.github.com/repos/sgtest/sourcegraph/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sgtest/sourcegraph/labels{/name}","releases_url":"https://api.github.com/repos/sgtest/sourcegraph/releases{/id}","deployments_url":"https://api.github.com/repos/sgtest/sourcegraph/deployments","created_at":"2023-07-04T14:06:51Z","updated_at":"2023-07-04T14:06:51Z","pushed_at":"2023-07-04T14:04:45Z","git_url":"git://github.com/sgtest/sourcegraph.git","ssh_url":"git@github.com:sgtest/sourcegraph.git","clone_url":"https://github.com/sgtest/sourcegraph.git","svn_url":"https://github.com/sgtest/sourcegraph","homepage":"https://sourcegraph.com","size":1073588,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":[],"visibility":"public","forks":0,"open_issues":0,"watchers":0,"default_branch":"main","permissions":{"admin":false,"maintain":false,"push":false,"triage":false,"pull":true},"organization":{"login":"sgtest","id":5858054,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU4NTgwNTQ=","avatar_url":"https://avatars.githubusercontent.com/u/5858054?v=4","gravatar_id":"","url":"https://api.github.com/users/sgtest","html_url":"https://github.com/sgtest","followers_url":"https://api.github.com/users/sgtest/followers","following_url":"https://api.github.com/users/sgtest/following{/other_user}","gists_url":"https://api.github.com/users/sgtest/gists{/gist_id}","starred_url":"https://api.github.com/users/sgtest/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sgtest/subscriptions","organizations_url":"https://api.github.com/users/sgtest/orgs","repos_url":"https://api.github.com/users/sgtest/repos","events_url":"https://api.github.com/users/sgtest/events{/privacy}","received_events_url":"https://api.github.com/users/sgtest/received_events","type":"Organization","site_admin":false},"parent":{"id":41288708,"node_id":"MDEwOlJlcG9zaXRvcnk0MTI4ODcwOA==","name":"sourcegraph","full_name":"sourcegraph/sourcegraph","private":false,"owner":{"login":"sourcegraph","id":3979584,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5Nzk1ODQ=","avatar_url":"https://avatars.githubusercontent.com/u/3979584?v=4","gravatar_id":"","url":"https://api.github.com/users/sourcegraph","html_url":"https://github.com/sourcegraph","followers_url":"https://api.github.com/users/sourcegraph/followers","following_url":"https://api.github.com/users/sourcegraph/following{/other_user}","gists_url":"https://api.github.com/users/sourcegraph/gists{/gist_id}","starred_url":"https://api.github.com/users/sourcegraph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sourcegraph/subscriptions","organizations_url":"https://api.github.com/users/sourcegraph/orgs","repos_url":"https://api.github.com/users/sourcegraph/repos","events_url":"https://api.github.com/users/sourcegraph/events{/privacy}","received_events_url":"https://api.github.com/users/sourcegraph/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/sourcegraph/sourcegraph","description":"Code + AI platform with Code Search & Cody","fork":false,"url":"https://api.github.com/repos/sourcegraph/sourcegraph","forks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/forks","keys_url":"https://api.github.com/repos/sourcegraph/sourcegraph/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sourcegraph/sourcegraph/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sourcegraph/sourcegraph/teams","hooks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/hooks","issue_events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/events{/number}","events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/events","assignees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/assignees{/user}","branches_url":"https://api.github.com/repos/sourcegraph/sourcegraph/branches{/branch}","tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/tags","blobs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/refs{/sha}","trees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sourcegraph/sourcegraph/statuses/{sha}","languages_url":"https://api.github.com/repos/sourcegraph/sourcegraph/languages","stargazers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/stargazers","contributors_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contributors","subscribers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscribers","subscription_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscription","commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/commits{/sha}","git_commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/commits{/sha}","comments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/comments{/number}","issue_comment_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/comments{/number}","contents_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contents/{+path}","compare_url":"https://api.github.com/repos/sourcegraph/sourcegraph/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sourcegraph/sourcegraph/merges","archive_url":"https://api.github.com/repos/sourcegraph/sourcegraph/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sourcegraph/sourcegraph/downloads","issues_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues{/number}","pulls_url":"https://api.github.com/repos/sourcegraph/sourcegraph/pulls{/number}","milestones_url":"https://api.github.com/repos/sourcegraph/sourcegraph/milestones{/number}","notifications_url":"https://api.github.com/repos/sourcegraph/sourcegraph/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sourcegraph/sourcegraph/labels{/name}","releases_url":"https://api.github.com/repos/sourcegraph/sourcegraph/releases{/id}","deployments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/deployments","created_at":"2015-08-24T07:27:28Z","updated_at":"2023-11-16T12:36:01Z","pushed_at":"2023-11-16T13:37:24Z","git_url":"git://github.com/sourcegraph/sourcegraph.git","ssh_url":"git@github.com:sourcegraph/sourcegraph.git","clone_url":"https://github.com/sourcegraph/sourcegraph.git","svn_url":"https://github.com/sourcegraph/sourcegraph","homepage":"https://sourcegraph.com","size":1162483,"stargazers_count":9145,"watchers_count":9145,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1191,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":5499,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["code-intelligence","code-search","lsif-enabled","open-source","repo-type-main","sourcegraph"],"visibility":"public","forks":1191,"open_issues":5499,"watchers":9145,"default_branch":"main"},"source":{"id":41288708,"node_id":"MDEwOlJlcG9zaXRvcnk0MTI4ODcwOA==","name":"sourcegraph","full_name":"sourcegraph/sourcegraph","private":false,"owner":{"login":"sourcegraph","id":3979584,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5Nzk1ODQ=","avatar_url":"https://avatars.githubusercontent.com/u/3979584?v=4","gravatar_id":"","url":"https://api.github.com/users/sourcegraph","html_url":"https://github.com/sourcegraph","followers_url":"https://api.github.com/users/sourcegraph/followers","following_url":"https://api.github.com/users/sourcegraph/following{/other_user}","gists_url":"https://api.github.com/users/sourcegraph/gists{/gist_id}","starred_url":"https://api.github.com/users/sourcegraph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sourcegraph/subscriptions","organizations_url":"https://api.github.com/users/sourcegraph/orgs","repos_url":"https://api.github.com/users/sourcegraph/repos","events_url":"https://api.github.com/users/sourcegraph/events{/privacy}","received_events_url":"https://api.github.com/users/sourcegraph/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/sourcegraph/sourcegraph","description":"Code + AI platform with Code Search & Cody","fork":false,"url":"https://api.github.com/repos/sourcegraph/sourcegraph","forks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/forks","keys_url":"https://api.github.com/repos/sourcegraph/sourcegraph/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sourcegraph/sourcegraph/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sourcegraph/sourcegraph/teams","hooks_url":"https://api.github.com/repos/sourcegraph/sourcegraph/hooks","issue_events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/events{/number}","events_url":"https://api.github.com/repos/sourcegraph/sourcegraph/events","assignees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/assignees{/user}","branches_url":"https://api.github.com/repos/sourcegraph/sourcegraph/branches{/branch}","tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/tags","blobs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/refs{/sha}","trees_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sourcegraph/sourcegraph/statuses/{sha}","languages_url":"https://api.github.com/repos/sourcegraph/sourcegraph/languages","stargazers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/stargazers","contributors_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contributors","subscribers_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscribers","subscription_url":"https://api.github.com/repos/sourcegraph/sourcegraph/subscription","commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/commits{/sha}","git_commits_url":"https://api.github.com/repos/sourcegraph/sourcegraph/git/commits{/sha}","comments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/comments{/number}","issue_comment_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues/comments{/number}","contents_url":"https://api.github.com/repos/sourcegraph/sourcegraph/contents/{+path}","compare_url":"https://api.github.com/repos/sourcegraph/sourcegraph/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sourcegraph/sourcegraph/merges","archive_url":"https://api.github.com/repos/sourcegraph/sourcegraph/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sourcegraph/sourcegraph/downloads","issues_url":"https://api.github.com/repos/sourcegraph/sourcegraph/issues{/number}","pulls_url":"https://api.github.com/repos/sourcegraph/sourcegraph/pulls{/number}","milestones_url":"https://api.github.com/repos/sourcegraph/sourcegraph/milestones{/number}","notifications_url":"https://api.github.com/repos/sourcegraph/sourcegraph/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sourcegraph/sourcegraph/labels{/name}","releases_url":"https://api.github.com/repos/sourcegraph/sourcegraph/releases{/id}","deployments_url":"https://api.github.com/repos/sourcegraph/sourcegraph/deployments","created_at":"2015-08-24T07:27:28Z","updated_at":"2023-11-16T12:36:01Z","pushed_at":"2023-11-16T13:37:24Z","git_url":"git://github.com/sourcegraph/sourcegraph.git","ssh_url":"git@github.com:sourcegraph/sourcegraph.git","clone_url":"https://github.com/sourcegraph/sourcegraph.git","svn_url":"https://github.com/sourcegraph/sourcegraph","homepage":"https://sourcegraph.com","size":1162483,"stargazers_count":9145,"watchers_count":9145,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1191,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":5499,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["code-intelligence","code-search","lsif-enabled","open-source","repo-type-main","sourcegraph"],"visibility":"public","forks":1191,"open_issues":5499,"watchers":9145,"default_branch":"main"},"network_count":1191,"subscribers_count":1}' headers: Access-Control-Allow-Origin: - '*' @@ -247,9 +253,9 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Wed, 02 Aug 2023 18:28:49 GMT + - Thu, 16 Nov 2023 13:37:36 GMT Etag: - - W/"b3b42308a28ca22d0c19011006b03353bf6076fc59f35033fee00d7886903c43" + - W/"58b6438270350b04db8cdc75927d947098d3464ed413448da73d075c2908925c" Last-Modified: - Tue, 04 Jul 2023 14:06:51 GMT Referrer-Policy: @@ -261,6 +267,8 @@ interactions: Vary: - Accept, Authorization, Cookie, X-GitHub-OTP - Accept-Encoding, Accept, X-Requested-With + X-Accepted-Github-Permissions: + - metadata=read X-Content-Type-Options: - nosniff X-Frame-Options: @@ -271,17 +279,17 @@ interactions: - github.v3; param=jean-grey-preview; format=json, github.mercy-preview; param=machine-man-preview; format=json X-Github-Request-Id: - - E550:162A2F:5E98D6:6489CB:64CAA061 + - FFCC:C230:397CD8A0:3A2C6C81:65561B20 X-Ratelimit-Limit: - "5000" X-Ratelimit-Remaining: - - "4976" + - "4996" X-Ratelimit-Reset: - - "1691002952" + - "1700145293" X-Ratelimit-Resource: - core X-Ratelimit-Used: - - "24" + - "4" X-Varied-Accept: - application/vnd.github.jean-grey-preview+json,application/vnd.github.mercy-preview+json X-Xss-Protection: diff --git a/internal/extsvc/github/testdata/vcr/ListRepositoriesForSearch.yaml b/internal/extsvc/github/testdata/vcr/ListRepositoriesForSearch.yaml index 9549c804c68f5..fb05315afde95 100644 --- a/internal/extsvc/github/testdata/vcr/ListRepositoriesForSearch.yaml +++ b/internal/extsvc/github/testdata/vcr/ListRepositoriesForSearch.yaml @@ -32,7 +32,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Wed, 15 Feb 2023 23:40:37 GMT + - Thu, 16 Nov 2023 13:32:58 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: @@ -52,13 +52,13 @@ interactions: - github.v3; param=jean-grey-preview; format=json, github.mercy-preview; param=machine-man-preview; format=json X-Github-Request-Id: - - 1A54:2217:246F9F5:4AAA415:63ED6D74 + - FF00:A2C4:37E6EB3D:38977480:65561A0A X-Ratelimit-Limit: - "30" X-Ratelimit-Remaining: - "29" X-Ratelimit-Reset: - - "1676504497" + - "1700141638" X-Ratelimit-Resource: - search X-Ratelimit-Used: diff --git a/internal/extsvc/github/testdata/vcr/SearchRepos.yaml b/internal/extsvc/github/testdata/vcr/SearchRepos.yaml index 0df2995bab132..2ff39b50c6462 100644 --- a/internal/extsvc/github/testdata/vcr/SearchRepos.yaml +++ b/internal/extsvc/github/testdata/vcr/SearchRepos.yaml @@ -2,7 +2,7 @@ version: 1 interactions: - request: - body: '{"query":"\nfragment RepositoryFields on Repository {\n\tid\n\tdatabaseId\n\tnameWithOwner\n\tdescription\n\turl\n\tisPrivate\n\tisFork\n\tisArchived\n\tisLocked\n\tisDisabled\n\tviewerPermission\n\tstargazerCount\n\tforkCount\n\trepositoryTopics(first:100) + body: '{"query":"\nfragment RepositoryFields on Repository {\n\tid\n\tdatabaseId\n\tnameWithOwner\n\tdescription\n\turl\n\tisPrivate\n\tisFork\n\tisArchived\n\tisLocked\n\tisDisabled\n\tviewerPermission\n\tstargazerCount\n\tforkCount\n\tdiskUsage\n\trepositoryTopics(first:100) {\n\t\tnodes {\n\t\t\ttopic {\n\t\t\t\tname\n\t\t\t}\n\t\t}\n\t}\n}\n\t\nquery($query: String!, $type: SearchType!, $after: String, $first: Int!) {\n\tsearch(query: $query, type: $type, after: $after, first: $first) {\n\t\trepositoryCount\n\t\tpageInfo @@ -20,7 +20,7 @@ interactions: method: POST response: body: '{"data":{"search":{"repositoryCount":1,"pageInfo":{"hasNextPage":false,"endCursor":"Y3Vyc29yOjE="},"nodes":[{"id":"MDEwOlJlcG9zaXRvcnkxMjA4MDU1MQ==","databaseId":12080551,"nameWithOwner":"tsenart/vegeta","description":"HTTP - load testing tool and library. It''s over 9000!","url":"https://github.com/tsenart/vegeta","isPrivate":false,"isFork":false,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"READ","stargazerCount":20789,"forkCount":1280,"repositoryTopics":{"nodes":[{"topic":{"name":"load-testing"}},{"topic":{"name":"go"}},{"topic":{"name":"benchmarking"}},{"topic":{"name":"http"}}]}}]}}}' + load testing tool and library. It''s over 9000!","url":"https://github.com/tsenart/vegeta","isPrivate":false,"isFork":false,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"READ","stargazerCount":22111,"forkCount":1363,"diskUsage":2553,"repositoryTopics":{"nodes":[{"topic":{"name":"load-testing"}},{"topic":{"name":"go"}},{"topic":{"name":"benchmarking"}},{"topic":{"name":"http"}}]}}]}}}' headers: Access-Control-Allow-Origin: - '*' @@ -34,7 +34,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Wed, 15 Feb 2023 23:39:51 GMT + - Thu, 16 Nov 2023 13:26:42 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: @@ -50,24 +50,24 @@ interactions: X-Github-Media-Type: - github.v4; param=antiope-preview; format=json X-Github-Request-Id: - - C349:27E9:245189C:4A653D8:63ED6D47 + - FDFF:C346:388C4DBB:393A9134:65561892 X-Ratelimit-Limit: - "5000" X-Ratelimit-Remaining: - - "4955" + - "4991" X-Ratelimit-Reset: - - "1676505052" + - "1700143529" X-Ratelimit-Resource: - graphql X-Ratelimit-Used: - - "45" + - "9" X-Xss-Protection: - "0" status: 200 OK code: 200 duration: "" - request: - body: '{"query":"\nfragment RepositoryFields on Repository {\n\tid\n\tdatabaseId\n\tnameWithOwner\n\tdescription\n\turl\n\tisPrivate\n\tisFork\n\tisArchived\n\tisLocked\n\tisDisabled\n\tviewerPermission\n\tstargazerCount\n\tforkCount\n\trepositoryTopics(first:100) + body: '{"query":"\nfragment RepositoryFields on Repository {\n\tid\n\tdatabaseId\n\tnameWithOwner\n\tdescription\n\turl\n\tisPrivate\n\tisFork\n\tisArchived\n\tisLocked\n\tisDisabled\n\tviewerPermission\n\tstargazerCount\n\tforkCount\n\tdiskUsage\n\trepositoryTopics(first:100) {\n\t\tnodes {\n\t\t\ttopic {\n\t\t\t\tname\n\t\t\t}\n\t\t}\n\t}\n}\n\t\nquery($query: String!, $type: SearchType!, $after: String, $first: Int!) {\n\tsearch(query: $query, type: $type, after: $after, first: $first) {\n\t\trepositoryCount\n\t\tpageInfo @@ -84,13 +84,12 @@ interactions: url: https://api.github.com/graphql method: POST response: - body: "{\"data\":{\"search\":{\"repositoryCount\":2848396,\"pageInfo\":{\"hasNextPage\":true,\"endCursor\":\"Y3Vyc29yOjU=\"},\"nodes\":[{\"id\":\"MDEwOlJlcG9zaXRvcnkyODQ1NzgyMw==\",\"databaseId\":28457823,\"nameWithOwner\":\"freeCodeCamp/freeCodeCamp\",\"description\":\"freeCodeCamp.org's - open-source codebase and curriculum. Learn to code for free.\",\"url\":\"https://github.com/freeCodeCamp/freeCodeCamp\",\"isPrivate\":false,\"isFork\":false,\"isArchived\":false,\"isLocked\":false,\"isDisabled\":false,\"viewerPermission\":\"READ\",\"stargazerCount\":361294,\"forkCount\":31019,\"repositoryTopics\":{\"nodes\":[{\"topic\":{\"name\":\"learn-to-code\"}},{\"topic\":{\"name\":\"nonprofits\"}},{\"topic\":{\"name\":\"programming\"}},{\"topic\":{\"name\":\"nodejs\"}},{\"topic\":{\"name\":\"react\"}},{\"topic\":{\"name\":\"d3\"}},{\"topic\":{\"name\":\"careers\"}},{\"topic\":{\"name\":\"education\"}},{\"topic\":{\"name\":\"teachers\"}},{\"topic\":{\"name\":\"javascript\"}},{\"topic\":{\"name\":\"certification\"}},{\"topic\":{\"name\":\"curriculum\"}},{\"topic\":{\"name\":\"math\"}},{\"topic\":{\"name\":\"community\"}},{\"topic\":{\"name\":\"freecodecamp\"}},{\"topic\":{\"name\":\"hacktoberfest\"}}]}},{\"id\":\"MDEwOlJlcG9zaXRvcnkxNzc3MzY1MzM=\",\"databaseId\":177736533,\"nameWithOwner\":\"996icu/996.ICU\",\"description\":\"Repo - for counting stars and contributing. Press F to pay respect to glorious developers.\",\"url\":\"https://github.com/996icu/996.ICU\",\"isPrivate\":false,\"isFork\":false,\"isArchived\":false,\"isLocked\":false,\"isDisabled\":false,\"viewerPermission\":\"READ\",\"stargazerCount\":265043,\"forkCount\":21462,\"repositoryTopics\":{\"nodes\":[]}},{\"id\":\"MDEwOlJlcG9zaXRvcnk2MDQ5MzEwMQ==\",\"databaseId\":60493101,\"nameWithOwner\":\"jwasham/coding-interview-university\",\"description\":\"A - complete computer science study plan to become a software engineer.\",\"url\":\"https://github.com/jwasham/coding-interview-university\",\"isPrivate\":false,\"isFork\":false,\"isArchived\":false,\"isLocked\":false,\"isDisabled\":false,\"viewerPermission\":\"READ\",\"stargazerCount\":246973,\"forkCount\":65490,\"repositoryTopics\":{\"nodes\":[{\"topic\":{\"name\":\"computer-science\"}},{\"topic\":{\"name\":\"interview\"}},{\"topic\":{\"name\":\"programming-interviews\"}},{\"topic\":{\"name\":\"study-plan\"}},{\"topic\":{\"name\":\"data-structures\"}},{\"topic\":{\"name\":\"algorithms\"}},{\"topic\":{\"name\":\"software-engineering\"}},{\"topic\":{\"name\":\"algorithm\"}},{\"topic\":{\"name\":\"coding-interviews\"}},{\"topic\":{\"name\":\"interview-prep\"}},{\"topic\":{\"name\":\"coding-interview\"}},{\"topic\":{\"name\":\"interview-preparation\"}}]}},{\"id\":\"MDEwOlJlcG9zaXRvcnkyMTczNzQ2NQ==\",\"databaseId\":21737465,\"nameWithOwner\":\"sindresorhus/awesome\",\"description\":\"\U0001F60E - Awesome lists about all kinds of interesting topics\",\"url\":\"https://github.com/sindresorhus/awesome\",\"isPrivate\":false,\"isFork\":false,\"isArchived\":false,\"isLocked\":false,\"isDisabled\":false,\"viewerPermission\":\"READ\",\"stargazerCount\":238837,\"forkCount\":24935,\"repositoryTopics\":{\"nodes\":[{\"topic\":{\"name\":\"awesome\"}},{\"topic\":{\"name\":\"awesome-list\"}},{\"topic\":{\"name\":\"unicorns\"}},{\"topic\":{\"name\":\"lists\"}},{\"topic\":{\"name\":\"resources\"}}]}},{\"id\":\"MDEwOlJlcG9zaXRvcnk4NTA3NzU1OA==\",\"databaseId\":85077558,\"nameWithOwner\":\"kamranahmedse/developer-roadmap\",\"description\":\"Interactive - roadmaps, guides and other educational content to help developers grow in their - careers.\",\"url\":\"https://github.com/kamranahmedse/developer-roadmap\",\"isPrivate\":false,\"isFork\":false,\"isArchived\":false,\"isLocked\":false,\"isDisabled\":false,\"viewerPermission\":\"READ\",\"stargazerCount\":229269,\"forkCount\":32902,\"repositoryTopics\":{\"nodes\":[{\"topic\":{\"name\":\"computer-science\"}},{\"topic\":{\"name\":\"roadmap\"}},{\"topic\":{\"name\":\"developer-roadmap\"}},{\"topic\":{\"name\":\"frontend-roadmap\"}},{\"topic\":{\"name\":\"devops-roadmap\"}},{\"topic\":{\"name\":\"backend-roadmap\"}},{\"topic\":{\"name\":\"react-roadmap\"}},{\"topic\":{\"name\":\"angular-roadmap\"}},{\"topic\":{\"name\":\"python-roadmap\"}},{\"topic\":{\"name\":\"go-roadmap\"}},{\"topic\":{\"name\":\"java-roadmap\"}},{\"topic\":{\"name\":\"dba-roadmap\"}},{\"topic\":{\"name\":\"vue-roadmap\"}},{\"topic\":{\"name\":\"blockchain-roadmap\"}},{\"topic\":{\"name\":\"javascript-roadmap\"}},{\"topic\":{\"name\":\"nodejs-roadmap\"}},{\"topic\":{\"name\":\"qa-roadmap\"}},{\"topic\":{\"name\":\"software-architect-roadmap\"}}]}}]}}}" + body: "{\"data\":{\"search\":{\"repositoryCount\":3396424,\"pageInfo\":{\"hasNextPage\":true,\"endCursor\":\"Y3Vyc29yOjU=\"},\"nodes\":[{\"id\":\"MDEwOlJlcG9zaXRvcnkyODQ1NzgyMw==\",\"databaseId\":28457823,\"nameWithOwner\":\"freeCodeCamp/freeCodeCamp\",\"description\":\"freeCodeCamp.org's + open-source codebase and curriculum. Learn to code for free.\",\"url\":\"https://github.com/freeCodeCamp/freeCodeCamp\",\"isPrivate\":false,\"isFork\":false,\"isArchived\":false,\"isLocked\":false,\"isDisabled\":false,\"viewerPermission\":\"READ\",\"stargazerCount\":378065,\"forkCount\":34811,\"diskUsage\":398421,\"repositoryTopics\":{\"nodes\":[{\"topic\":{\"name\":\"learn-to-code\"}},{\"topic\":{\"name\":\"nonprofits\"}},{\"topic\":{\"name\":\"programming\"}},{\"topic\":{\"name\":\"nodejs\"}},{\"topic\":{\"name\":\"react\"}},{\"topic\":{\"name\":\"d3\"}},{\"topic\":{\"name\":\"careers\"}},{\"topic\":{\"name\":\"education\"}},{\"topic\":{\"name\":\"teachers\"}},{\"topic\":{\"name\":\"javascript\"}},{\"topic\":{\"name\":\"certification\"}},{\"topic\":{\"name\":\"curriculum\"}},{\"topic\":{\"name\":\"math\"}},{\"topic\":{\"name\":\"community\"}},{\"topic\":{\"name\":\"freecodecamp\"}},{\"topic\":{\"name\":\"hacktoberfest\"}}]}},{\"id\":\"MDEwOlJlcG9zaXRvcnkxMzQ5MTg5NQ==\",\"databaseId\":13491895,\"nameWithOwner\":\"EbookFoundation/free-programming-books\",\"description\":\":books: + Freely available programming books\",\"url\":\"https://github.com/EbookFoundation/free-programming-books\",\"isPrivate\":false,\"isFork\":false,\"isArchived\":false,\"isLocked\":false,\"isDisabled\":false,\"viewerPermission\":\"READ\",\"stargazerCount\":303257,\"forkCount\":58520,\"diskUsage\":17796,\"repositoryTopics\":{\"nodes\":[{\"topic\":{\"name\":\"education\"}},{\"topic\":{\"name\":\"books\"}},{\"topic\":{\"name\":\"list\"}},{\"topic\":{\"name\":\"resource\"}},{\"topic\":{\"name\":\"hacktoberfest\"}}]}},{\"id\":\"MDEwOlJlcG9zaXRvcnkyMTczNzQ2NQ==\",\"databaseId\":21737465,\"nameWithOwner\":\"sindresorhus/awesome\",\"description\":\"\U0001F60E + Awesome lists about all kinds of interesting topics\",\"url\":\"https://github.com/sindresorhus/awesome\",\"isPrivate\":false,\"isFork\":false,\"isArchived\":false,\"isLocked\":false,\"isDisabled\":false,\"viewerPermission\":\"READ\",\"stargazerCount\":277707,\"forkCount\":26720,\"diskUsage\":1475,\"repositoryTopics\":{\"nodes\":[{\"topic\":{\"name\":\"awesome\"}},{\"topic\":{\"name\":\"awesome-list\"}},{\"topic\":{\"name\":\"unicorns\"}},{\"topic\":{\"name\":\"lists\"}},{\"topic\":{\"name\":\"resources\"}}]}},{\"id\":\"MDEwOlJlcG9zaXRvcnk1NDM0Njc5OQ==\",\"databaseId\":54346799,\"nameWithOwner\":\"public-apis/public-apis\",\"description\":\"A + collective list of free APIs\",\"url\":\"https://github.com/public-apis/public-apis\",\"isPrivate\":false,\"isFork\":false,\"isArchived\":false,\"isLocked\":false,\"isDisabled\":false,\"viewerPermission\":\"READ\",\"stargazerCount\":268744,\"forkCount\":30233,\"diskUsage\":5088,\"repositoryTopics\":{\"nodes\":[{\"topic\":{\"name\":\"api\"}},{\"topic\":{\"name\":\"public-apis\"}},{\"topic\":{\"name\":\"free\"}},{\"topic\":{\"name\":\"apis\"}},{\"topic\":{\"name\":\"list\"}},{\"topic\":{\"name\":\"development\"}},{\"topic\":{\"name\":\"software\"}},{\"topic\":{\"name\":\"public\"}},{\"topic\":{\"name\":\"resources\"}},{\"topic\":{\"name\":\"dataset\"}},{\"topic\":{\"name\":\"open-source\"}},{\"topic\":{\"name\":\"public-api\"}},{\"topic\":{\"name\":\"lists\"}}]}},{\"id\":\"MDEwOlJlcG9zaXRvcnkxNzc3MzY1MzM=\",\"databaseId\":177736533,\"nameWithOwner\":\"996icu/996.ICU\",\"description\":\"Repo + for counting stars and contributing. Press F to pay respect to glorious developers.\",\"url\":\"https://github.com/996icu/996.ICU\",\"isPrivate\":false,\"isFork\":false,\"isArchived\":false,\"isLocked\":false,\"isDisabled\":false,\"viewerPermission\":\"READ\",\"stargazerCount\":268154,\"forkCount\":21476,\"diskUsage\":187836,\"repositoryTopics\":{\"nodes\":[]}}]}}}" headers: Access-Control-Allow-Origin: - '*' @@ -104,7 +103,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Wed, 15 Feb 2023 23:39:52 GMT + - Thu, 16 Nov 2023 13:26:44 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: @@ -120,17 +119,17 @@ interactions: X-Github-Media-Type: - github.v4; param=antiope-preview; format=json X-Github-Request-Id: - - C349:27E9:24518E2:4A6546D:63ED6D47 + - FDFF:C346:388C4FD3:393A9340:65561892 X-Ratelimit-Limit: - "5000" X-Ratelimit-Remaining: - - "4954" + - "4990" X-Ratelimit-Reset: - - "1676505052" + - "1700143529" X-Ratelimit-Resource: - graphql X-Ratelimit-Used: - - "46" + - "10" X-Xss-Protection: - "0" status: 200 OK diff --git a/internal/extsvc/github/v3_test.go b/internal/extsvc/github/v3_test.go index 4bd55df462bd1..912cf9f2bdb25 100644 --- a/internal/extsvc/github/v3_test.go +++ b/internal/extsvc/github/v3_test.go @@ -57,35 +57,39 @@ func TestListAffiliatedRepositories(t *testing.T) { visibility: VisibilityAll, wantRepos: []*Repository{ { - ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzQxNTE=", - DatabaseID: 263034151, - NameWithOwner: "sourcegraph-vcr-repos/private-org-repo-1", - URL: "https://github.com/sourcegraph-vcr-repos/private-org-repo-1", - IsPrivate: true, - ViewerPermission: "ADMIN", - RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzQxNTE=", + DatabaseID: 263034151, + NameWithOwner: "sourcegraph-vcr-repos/private-org-repo-1", + URL: "https://github.com/sourcegraph-vcr-repos/private-org-repo-1", + IsPrivate: true, + ViewerPermission: "ADMIN", + RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + DiskUsageKibibytes: 1, }, { - ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzQwNzM=", - DatabaseID: 263034073, - NameWithOwner: "sourcegraph-vcr/private-user-repo-1", - URL: "https://github.com/sourcegraph-vcr/private-user-repo-1", - IsPrivate: true, - ViewerPermission: "ADMIN", - RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzQwNzM=", + DatabaseID: 263034073, + NameWithOwner: "sourcegraph-vcr/private-user-repo-1", + URL: "https://github.com/sourcegraph-vcr/private-user-repo-1", + IsPrivate: true, + ViewerPermission: "ADMIN", + RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + DiskUsageKibibytes: 14, }, { - ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzM5NDk=", - DatabaseID: 263033949, - NameWithOwner: "sourcegraph-vcr/public-user-repo-1", - URL: "https://github.com/sourcegraph-vcr/public-user-repo-1", - ViewerPermission: "ADMIN", - RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzM5NDk=", + DatabaseID: 263033949, + NameWithOwner: "sourcegraph-vcr/public-user-repo-1", + URL: "https://github.com/sourcegraph-vcr/public-user-repo-1", + ViewerPermission: "ADMIN", + RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + DiskUsageKibibytes: 5, }, { - ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzM3NjE=", - DatabaseID: 263033761, - NameWithOwner: "sourcegraph-vcr-repos/public-org-repo-1", - URL: "https://github.com/sourcegraph-vcr-repos/public-org-repo-1", - ViewerPermission: "ADMIN", - RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzM3NjE=", + DatabaseID: 263033761, + NameWithOwner: "sourcegraph-vcr-repos/public-org-repo-1", + URL: "https://github.com/sourcegraph-vcr-repos/public-org-repo-1", + ViewerPermission: "ADMIN", + RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + DiskUsageKibibytes: 1, }, }, }, @@ -94,19 +98,21 @@ func TestListAffiliatedRepositories(t *testing.T) { visibility: VisibilityPublic, wantRepos: []*Repository{ { - ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzM5NDk=", - DatabaseID: 263033949, - NameWithOwner: "sourcegraph-vcr/public-user-repo-1", - URL: "https://github.com/sourcegraph-vcr/public-user-repo-1", - ViewerPermission: "ADMIN", - RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzM5NDk=", + DatabaseID: 263033949, + NameWithOwner: "sourcegraph-vcr/public-user-repo-1", + URL: "https://github.com/sourcegraph-vcr/public-user-repo-1", + ViewerPermission: "ADMIN", + RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + DiskUsageKibibytes: 5, }, { - ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzM3NjE=", - DatabaseID: 263033761, - NameWithOwner: "sourcegraph-vcr-repos/public-org-repo-1", - URL: "https://github.com/sourcegraph-vcr-repos/public-org-repo-1", - ViewerPermission: "ADMIN", - RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzM3NjE=", + DatabaseID: 263033761, + NameWithOwner: "sourcegraph-vcr-repos/public-org-repo-1", + URL: "https://github.com/sourcegraph-vcr-repos/public-org-repo-1", + ViewerPermission: "ADMIN", + RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + DiskUsageKibibytes: 1, }, }, }, @@ -115,21 +121,23 @@ func TestListAffiliatedRepositories(t *testing.T) { visibility: VisibilityPrivate, wantRepos: []*Repository{ { - ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzQxNTE=", - DatabaseID: 263034151, - NameWithOwner: "sourcegraph-vcr-repos/private-org-repo-1", - URL: "https://github.com/sourcegraph-vcr-repos/private-org-repo-1", - IsPrivate: true, - ViewerPermission: "ADMIN", - RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzQxNTE=", + DatabaseID: 263034151, + NameWithOwner: "sourcegraph-vcr-repos/private-org-repo-1", + URL: "https://github.com/sourcegraph-vcr-repos/private-org-repo-1", + IsPrivate: true, + ViewerPermission: "ADMIN", + RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + DiskUsageKibibytes: 1, }, { - ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzQwNzM=", - DatabaseID: 263034073, - NameWithOwner: "sourcegraph-vcr/private-user-repo-1", - URL: "https://github.com/sourcegraph-vcr/private-user-repo-1", - IsPrivate: true, - ViewerPermission: "ADMIN", - RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzQwNzM=", + DatabaseID: 263034073, + NameWithOwner: "sourcegraph-vcr/private-user-repo-1", + URL: "https://github.com/sourcegraph-vcr/private-user-repo-1", + IsPrivate: true, + ViewerPermission: "ADMIN", + RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + DiskUsageKibibytes: 14, }, }, }, @@ -138,20 +146,22 @@ func TestListAffiliatedRepositories(t *testing.T) { affiliations: []RepositoryAffiliation{AffiliationCollaborator, AffiliationOwner}, wantRepos: []*Repository{ { - ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzQwNzM=", - DatabaseID: 263034073, - NameWithOwner: "sourcegraph-vcr/private-user-repo-1", - URL: "https://github.com/sourcegraph-vcr/private-user-repo-1", - IsPrivate: true, - ViewerPermission: "ADMIN", - RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzQwNzM=", + DatabaseID: 263034073, + NameWithOwner: "sourcegraph-vcr/private-user-repo-1", + URL: "https://github.com/sourcegraph-vcr/private-user-repo-1", + IsPrivate: true, + ViewerPermission: "ADMIN", + RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + DiskUsageKibibytes: 14, }, { - ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzM5NDk=", - DatabaseID: 263033949, - NameWithOwner: "sourcegraph-vcr/public-user-repo-1", - URL: "https://github.com/sourcegraph-vcr/public-user-repo-1", - ViewerPermission: "ADMIN", - RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + ID: "MDEwOlJlcG9zaXRvcnkyNjMwMzM5NDk=", + DatabaseID: 263033949, + NameWithOwner: "sourcegraph-vcr/public-user-repo-1", + URL: "https://github.com/sourcegraph-vcr/public-user-repo-1", + ViewerPermission: "ADMIN", + RepositoryTopics: RepositoryTopics{Nodes: []RepositoryTopic{}}, + DiskUsageKibibytes: 5, }, }, }, diff --git a/internal/extsvc/github/v4.go b/internal/extsvc/github/v4.go index 8ab7d092f4321..f545de718d50a 100644 --- a/internal/extsvc/github/v4.go +++ b/internal/extsvc/github/v4.go @@ -599,6 +599,7 @@ fragment RepositoryFields on Repository { viewerPermission stargazerCount forkCount + diskUsage repositoryTopics(first:100) { nodes { topic { @@ -636,6 +637,7 @@ fragment RepositoryFields on Repository { isLocked isDisabled forkCount + diskUsage repositoryTopics(first:100) { nodes { topic { diff --git a/internal/repos/github_test.go b/internal/repos/github_test.go index c461b2d4a7aef..c99a5a718f339 100644 --- a/internal/repos/github_test.go +++ b/internal/repos/github_test.go @@ -232,13 +232,14 @@ func TestGithubSource_GetRepo(t *testing.T) { }, }, Metadata: &github.Repository{ - ID: "MDEwOlJlcG9zaXRvcnk0MTI4ODcwOA==", - DatabaseID: 41288708, - NameWithOwner: "sourcegraph/sourcegraph", - Description: "Code search and navigation tool (self-hosted)", - URL: "https://github.com/sourcegraph/sourcegraph", - StargazerCount: 2220, - ForkCount: 164, + ID: "MDEwOlJlcG9zaXRvcnk0MTI4ODcwOA==", + DatabaseID: 41288708, + NameWithOwner: "sourcegraph/sourcegraph", + Description: "Code search and navigation tool (self-hosted)", + URL: "https://github.com/sourcegraph/sourcegraph", + StargazerCount: 2220, + ForkCount: 164, + DiskUsageKibibytes: 302301, // We're hitting github.com here, so visibility will be empty irrespective // of repository type. This is a GitHub enterprise only feature. Visibility: "", From ff5a92b59887e218c534897c4688b7136e3a1df9 Mon Sep 17 00:00:00 2001 From: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> Date: Thu, 16 Nov 2023 15:41:37 +0000 Subject: [PATCH 051/222] nix: add typescript language server (#58379) --- shell.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/shell.nix b/shell.nix index 5f56bbf490df5..7e625ac0a7383 100644 --- a/shell.nix +++ b/shell.nix @@ -100,6 +100,7 @@ mkShell { nodejs-20_x nodejs-20_x.pkgs.pnpm nodejs-20_x.pkgs.typescript + nodejs-20_x.pkgs.typescript-language-server # Rust utils for syntax-highlighter service, currently not pinned to the same versions. cargo From 124bec6b90b3873b26b3ebe9570565601b67963e Mon Sep 17 00:00:00 2001 From: Michael Lin <mlzc@hey.com> Date: Thu, 16 Nov 2023 07:58:45 -0800 Subject: [PATCH 052/222] dev/sg: build sg-msp with bazel (#58276) --- BUILD.bazel | 15 +++++++++++++++ dev/sg/BUILD.bazel | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/BUILD.bazel b/BUILD.bazel index c1b1cd0e19e40..f4d61f64c1b94 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -301,3 +301,18 @@ exports_files([ "CONTRIBUTING.md", ".swcrc", ]) + +# sg msp settings + +bool_flag( + name = "sg_msp", + build_setting_default = False, + visibility = ["//visibility:public"], +) + +config_setting( + name = "sg_msp_flag", + flag_values = { + "//:sg_msp": "True", + }, +) diff --git a/dev/sg/BUILD.bazel b/dev/sg/BUILD.bazel index ba6d9e4de5bf5..0dd06afb780c7 100644 --- a/dev/sg/BUILD.bazel +++ b/dev/sg/BUILD.bazel @@ -127,6 +127,11 @@ go_library( go_binary( name = "sg", embed = [":sg_lib"], + # keep + gotags = select({ + "//:sg_msp_flag": ["msp"], + "//conditions:default": [], + }), visibility = ["//visibility:public"], x_defs = { "github.com/sourcegraph/sourcegraph/internal/version.version": "{STABLE_VERSION}", From b714d56338779410064ccf2b1e37a45c317f912f Mon Sep 17 00:00:00 2001 From: Jason Hawk Harris <jasonhawkharris@gmail.com> Date: Thu, 16 Nov 2023 10:37:56 -0600 Subject: [PATCH 053/222] Code Navigation: add close button to blobview search (#58353) Adds a close link to the blob search container. --- .../repo/blob/codemirror/search.module.scss | 13 ++++++++++++ .../web/src/repo/blob/codemirror/search.tsx | 20 ++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/client/web/src/repo/blob/codemirror/search.module.scss b/client/web/src/repo/blob/codemirror/search.module.scss index d7c24375ce970..710978e1bdf79 100644 --- a/client/web/src/repo/blob/codemirror/search.module.scss +++ b/client/web/src/repo/blob/codemirror/search.module.scss @@ -8,3 +8,16 @@ border-bottom-left-radius: 0; border-left: none; } + +.close-button { + border-radius: 100%; + padding: 0.2rem; +} + +.close-button:hover { + background-color: var(--subtle-bg); +} + +.x { + color: var(--text-muted); +} diff --git a/client/web/src/repo/blob/codemirror/search.tsx b/client/web/src/repo/blob/codemirror/search.tsx index 1b9744c9aa76a..e9454a03f7498 100644 --- a/client/web/src/repo/blob/codemirror/search.tsx +++ b/client/web/src/repo/blob/codemirror/search.tsx @@ -8,6 +8,7 @@ import { findPrevious, getSearchQuery, openSearchPanel, + closeSearchPanel, search as codemirrorSearch, searchKeymap, SearchQuery, @@ -30,7 +31,14 @@ import { ViewPlugin, type ViewUpdate, } from '@codemirror/view' -import { mdiChevronLeft, mdiChevronRight, mdiFormatLetterCase, mdiInformationOutline, mdiRegex } from '@mdi/js' +import { + mdiChevronLeft, + mdiChevronRight, + mdiClose, + mdiFormatLetterCase, + mdiInformationOutline, + mdiRegex, +} from '@mdi/js' import classNames from 'classnames' import { createRoot, type Root } from 'react-dom/client' import type { NavigateFunction } from 'react-router-dom' @@ -275,6 +283,16 @@ class SearchPanel implements Panel { {searchKeybinding} </Label> {searchKeybindingTooltip} + <span className={classNames(styles.closeButton, 'ml-4')}> + <Icon + className={classNames(styles.x)} + onClick={() => closeSearchPanel(this.view)} + size="sm" + svgPath={mdiClose} + aria-hidden={false} + aria-label="close search" + /> + </span> </div> </CodeMirrorContainer> ) From 8f0c04090cdf830862fb7dfa38b4559f4c385eaa Mon Sep 17 00:00:00 2001 From: Thorsten Ball <mrnugget@gmail.com> Date: Thu, 16 Nov 2023 19:03:24 +0100 Subject: [PATCH 054/222] github: add ability to exclude repositories based on size & stars (#58377) --- internal/bytesize/BUILD.bazel | 16 +++ internal/bytesize/bytesize.go | 90 +++++++++++++ internal/bytesize/bytesize_test.go | 121 +++++++++++++++++ internal/extsvc/github/BUILD.bazel | 1 + internal/extsvc/github/common.go | 5 + internal/repos/BUILD.bazel | 2 + internal/repos/exclude.go | 122 ++++++++++++++++++ internal/repos/exclude_test.go | 119 +++++++++++++++++ internal/repos/github.go | 13 ++ internal/repos/github_test.go | 1 + internal/repos/sources_test.go | 10 +- .../excluded-repos-are-never-yielded.yaml | 80 ++++++------ schema/github.schema.json | 19 ++- schema/schema.go | 4 + 14 files changed, 563 insertions(+), 40 deletions(-) create mode 100644 internal/bytesize/BUILD.bazel create mode 100644 internal/bytesize/bytesize.go create mode 100644 internal/bytesize/bytesize_test.go create mode 100644 internal/repos/exclude_test.go diff --git a/internal/bytesize/BUILD.bazel b/internal/bytesize/BUILD.bazel new file mode 100644 index 0000000000000..ec6648c2b4de9 --- /dev/null +++ b/internal/bytesize/BUILD.bazel @@ -0,0 +1,16 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("//dev:go_defs.bzl", "go_test") + +go_library( + name = "bytesize", + srcs = ["bytesize.go"], + importpath = "github.com/sourcegraph/sourcegraph/internal/bytesize", + visibility = ["//:__subpackages__"], + deps = ["//lib/errors"], +) + +go_test( + name = "bytesize_test", + srcs = ["bytesize_test.go"], + embed = [":bytesize"], +) diff --git a/internal/bytesize/bytesize.go b/internal/bytesize/bytesize.go new file mode 100644 index 0000000000000..57930a7a8e752 --- /dev/null +++ b/internal/bytesize/bytesize.go @@ -0,0 +1,90 @@ +// package bytesize provides utilities to work with bytes in human-readable +// form. +package bytesize + +import ( + "strconv" + "strings" + "unicode" + + "github.com/sourcegraph/sourcegraph/lib/errors" +) + +// Bytes represents an amount of bytes. +type Bytes int64 + +const ( + maxSize Bytes = 1<<63 - 1 +) + +const ( + B Bytes = 1 + KB = 1_000 * B + KiB = 1_024 * B + MB = 1_000 * KB + MiB = 1_024 * KiB + GB = 1_000 * MB + GiB = 1_024 * MiB +) + +// Parse parses string that represents an amount of bytes and returns the +// amount in Bytes. +// +// Only positive amounts are supported. +// +// Bytes are represented as int64. If the value overflows, an error is +// returned. +// +// Example inputs: "3 MB", "4 GiB", "172 KiB". See the tests for more examples. +func Parse(str string) (Bytes, error) { + str = strings.TrimSpace(str) + + num, unitIndex := readNumber(str) + if unitIndex == 0 { + return 0, errors.Newf("missing number at start of string: %s", str) + } + + unit, err := parseUnit(str[unitIndex:]) + if err != nil { + return 0, err + } + + result := Bytes(num) * unit + if result < 0 { + return 0, errors.Newf("value overflows max size of %d bytes", maxSize) + } + + return result, nil +} + +func readNumber(str string) (int, int) { + for i, c := range str { + if unicode.IsDigit(c) { + continue + } + number, _ := strconv.Atoi(str[0:i]) + return number, i + } + return 0, 0 +} + +func parseUnit(unit string) (Bytes, error) { + switch strings.TrimSpace(unit) { + case "B", "b": + return B, nil + case "kB", "KB": + return KB, nil + case "kiB", "KiB": + return KiB, nil + case "MiB": + return MiB, nil + case "MB": + return MB, nil + case "GiB": + return GiB, nil + case "GB": + return GB, nil + default: + return 0, errors.Newf("unknown unit: %s", unit) + } +} diff --git a/internal/bytesize/bytesize_test.go b/internal/bytesize/bytesize_test.go new file mode 100644 index 0000000000000..01e1e51781f52 --- /dev/null +++ b/internal/bytesize/bytesize_test.go @@ -0,0 +1,121 @@ +package bytesize + +import ( + "fmt" + "testing" +) + +func TestParse(t *testing.T) { + tests := []struct { + input string + want Bytes + }{ + // Happy paths + {"1 B", 1}, + + {"1 KB", 1000}, + {"1 KiB", 1024}, + + {"1 MB", 1_000_000}, + {"1 MiB", 1024 * 1024}, + + {"1 GB", 1_000_000_000}, + {"1 GiB", 1024 * 1024 * 1024}, + + // Whitespace + {" 1 B", 1}, + {" 100 KB", 100_000}, + + // Various + {"100 B", 100}, + {"1024 B", 1024}, + + {"12 KB", 12_000}, + {"72 KiB", 73_728}, + + {"3 MB", 3000000}, + {"3 MiB", 3145728}, + + {"7 GB", 7_000_000_000}, + {"7 GiB", 7_516_192_768}, + } + + for _, tt := range tests { + got, err := Parse(tt.input) + if err != nil { + t.Errorf("FromString(%q), got error: %s", tt.input, err) + } + + if got != tt.want { + t.Errorf("FromString(%q) = %d, want %d", tt.input, got, tt.want) + } + } + + invalid := []string{ + " ", + "aaa", + "1", + "1 count", + "1 megabyte", + "10 horses", + "1324 k b", + } + for _, tt := range invalid { + _, err := Parse(tt) + if err == nil { + t.Errorf("Parse(%q) expected error but got nil", tt) + } + } +} + +func TestParseOverflow(t *testing.T) { + input := fmt.Sprintf("%d KB", (maxSize / 2)) + _, err := Parse(input) + if err == nil { + t.Errorf("Parse(%q) expected error, but got none", input) + } +} + +func TestReadNumber(t *testing.T) { + tests := []struct { + input string + want int + len int + }{ + {"1234 foobar", 1234, 4}, + {"1234foobar", 1234, 4}, + {"12 34", 12, 2}, + {"1f", 1, 1}, + {"foobar", 0, 0}, + } + + for _, tt := range tests { + num, numLen := readNumber(tt.input) + + if num != tt.want { + t.Errorf("readNumber(%q) = %d, want %d", tt.input, num, tt.want) + } + if numLen != tt.len { + t.Errorf("readNumber(%q) length = %d, want %d", tt.input, numLen, tt.len) + } + } +} + +func TestMultiplication(t *testing.T) { + tests := []struct { + inputNumber int + inputUnit Bytes + want Bytes + }{ + {10, B, 10}, + {25, KB, 25_000}, + {25_000, KB, 25_000_000}, + } + + for _, tt := range tests { + got := Bytes(tt.inputNumber) * tt.inputUnit + if got != tt.want { + t.Errorf("FromUnit(%d, %v) = %d, want %d", tt.inputNumber, tt.inputUnit, got, tt.want) + } + } +} diff --git a/internal/extsvc/github/BUILD.bazel b/internal/extsvc/github/BUILD.bazel index 1518a3cddb91d..011524aeb6298 100644 --- a/internal/extsvc/github/BUILD.bazel +++ b/internal/extsvc/github/BUILD.bazel @@ -13,6 +13,7 @@ go_library( visibility = ["//:__subpackages__"], deps = [ "//internal/api", + "//internal/bytesize", "//internal/conf", "//internal/encryption", "//internal/env", diff --git a/internal/extsvc/github/common.go b/internal/extsvc/github/common.go index 6f10238f9e1c9..d44202a0a445d 100644 --- a/internal/extsvc/github/common.go +++ b/internal/extsvc/github/common.go @@ -22,6 +22,7 @@ import ( "github.com/sourcegraph/log" "github.com/sourcegraph/sourcegraph/internal/api" + "github.com/sourcegraph/sourcegraph/internal/bytesize" "github.com/sourcegraph/sourcegraph/internal/conf" "github.com/sourcegraph/sourcegraph/internal/encryption" "github.com/sourcegraph/sourcegraph/internal/env" @@ -1813,6 +1814,10 @@ type Repository struct { DiskUsageKibibytes int `json:"DiskUsage,omitempty"` } +func (r *Repository) SizeBytes() bytesize.Bytes { + return bytesize.Bytes(r.DiskUsageKibibytes) * bytesize.KiB +} + // ParentRepository is the parent of a GitHub repository. type ParentRepository struct { NameWithOwner string diff --git a/internal/repos/BUILD.bazel b/internal/repos/BUILD.bazel index f1e20b4452f9b..def64c3eb151e 100644 --- a/internal/repos/BUILD.bazel +++ b/internal/repos/BUILD.bazel @@ -47,6 +47,7 @@ go_library( "//cmd/frontend/envvar", "//internal/actor", "//internal/api", + "//internal/bytesize", "//internal/codeintel/dependencies", "//internal/conf", "//internal/conf/conftypes", @@ -128,6 +129,7 @@ go_test( "azuredevops_test.go", "bitbucketcloud_test.go", "bitbucketserver_test.go", + "exclude_test.go", "gerrit_test.go", "github_test.go", "gitlab_test.go", diff --git a/internal/repos/exclude.go b/internal/repos/exclude.go index c22cefe462d34..d351c697e0f2d 100644 --- a/internal/repos/exclude.go +++ b/internal/repos/exclude.go @@ -1,9 +1,15 @@ package repos import ( + "strconv" "strings" "github.com/grafana/regexp" + + "github.com/sourcegraph/sourcegraph/internal/bytesize" + "github.com/sourcegraph/sourcegraph/internal/extsvc/github" + "github.com/sourcegraph/sourcegraph/lib/errors" + "github.com/sourcegraph/sourcegraph/schema" ) // excludeFunc takes either a generic object and returns true if the repo should be excluded. In @@ -77,3 +83,119 @@ func (e *excludeBuilder) Build() (excludeFunc, error) { return false }, e.err } + +func buildGitHubExcludeRule(rule *schema.ExcludedGitHubRepo) (excludeFunc, error) { + var fns []gitHubExcludeFunc + if rule.Stars != "" { + fn, err := buildStarsConstraintsExcludeFn(rule.Stars) + if err != nil { + return nil, err + } + fns = append(fns, fn) + } + + if rule.Size != "" { + fn, err := buildSizeConstraintsExcludeFn(rule.Size) + if err != nil { + return nil, err + } + fns = append(fns, fn) + } + + return func(repo any) bool { + githubRepo, ok := repo.(github.Repository) + if !ok { + return false + } + + // We're AND'ing the functions together. If one of them does NOT exclude + // the repository, then we don't exclude it. + for _, fn := range fns { + excluded := fn(githubRepo) + if !excluded { + return false + } + } + + return true + }, nil +} + +type gitHubExcludeFunc func(github.Repository) bool + +var starsConstraintRegex = regexp.MustCompile(`([<>=]{1,2})\s*(\d+)`) +var sizeConstraintRegex = regexp.MustCompile(`([<>=]{1,2})\s*(\d+\s*\w+)`) + +func buildStarsConstraintsExcludeFn(constraint string) (gitHubExcludeFunc, error) { + matches := starsConstraintRegex.FindStringSubmatch(constraint) + if matches == nil { + return nil, errors.Newf("invalid stars constraint format: %q", constraint) + } + + operator, err := newOperator(matches[1]) + if err != nil { + return nil, errors.Wrapf(err, "failed to evaluate stars constraint") + } + + count, err := strconv.Atoi(matches[2]) + if err != nil { + return nil, err + } + + return func(r github.Repository) bool { + return operator.Eval(r.StargazerCount, count) + }, nil +} + +func buildSizeConstraintsExcludeFn(constraint string) (gitHubExcludeFunc, error) { + sizeMatch := sizeConstraintRegex.FindStringSubmatch(constraint) + if sizeMatch == nil { + return nil, errors.Newf("invalid size constraint format: %q", constraint) + } + + operator, err := newOperator(sizeMatch[1]) + if err != nil { + return nil, errors.Wrapf(err, "failed to evaluate size constraint") + } + + size, err := bytesize.Parse(sizeMatch[2]) + if err != nil { + return nil, err + } + + return func(r github.Repository) bool { + return operator.Eval(int(r.SizeBytes()), int(size)) + }, nil +} + +type operator string + +const ( + opLess operator = "<" + opLessOrEqual operator = "<=" + opGreater operator = ">" + opGreaterOrEqual operator = ">=" +) + +func newOperator(input string) (operator, error) { + if input != "<" && input != "<=" && input != ">" && input != ">=" { + return "", errors.Newf("invalid operator %q", input) + } + return operator(input), nil +} + +func (o operator) Eval(left, right int) bool { + switch o { + case "<": + return left < right + case ">": + return left > right + case "<=": + return left <= right + case ">=": + return left >= right + default: + // I wish Go had enums + panic(errors.Newf("unknown operator: %q", o)) + } +} diff --git a/internal/repos/exclude_test.go b/internal/repos/exclude_test.go new file mode 100644 index 0000000000000..dd80caa1bac45 --- /dev/null +++ b/internal/repos/exclude_test.go @@ -0,0 +1,119 @@ +package repos + +import ( + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/sourcegraph/sourcegraph/internal/extsvc/github" + "github.com/sourcegraph/sourcegraph/schema" +) + +func TestBuildGitHubExcludeRule(t *testing.T) { + assertExcluded := func(t *testing.T, rule *schema.ExcludedGitHubRepo, repo github.Repository, wantExcluded bool) { + t.Helper() + fn, err := buildGitHubExcludeRule(rule) + assert.Nil(t, err) + assert.Equal( + t, + wantExcluded, + fn(repo), + "rule.Stars=%q, rule.Size=%q, repo.StarGazerCount=%d, repo.DiskUsageKibibytes=%d", + rule.Stars, + rule.Size, + repo.StargazerCount, + repo.DiskUsageKibibytes, + ) + } + + t.Run("stars", func(t *testing.T) { + tests := []struct { + rule string + stars int + wantExcluded bool + }{ + {"< 100", 99, true}, + {"< 100", 100, false}, + + {"<= 100", 100, true}, + {"<= 100", 99, true}, + {"<= 100", 101, false}, + + {"> 100", 101, true}, + {"> 100", 100, false}, + + {">= 100", 100, true}, + {">= 100", 101, true}, + {">= 100", 99, false}, + } + for _, tt := range tests { + excludeRule := &schema.ExcludedGitHubRepo{Stars: tt.rule} + repo := github.Repository{StargazerCount: tt.stars} + assertExcluded(t, excludeRule, repo, tt.wantExcluded) + } + }) + + t.Run("size", func(t *testing.T) { + tests := []struct { + rule string + sizeKibibytes int + wantExcluded bool + }{ + {"< 100 KiB", 99, true}, + {"< 100 KiB", 100, false}, + + {"<= 100 KiB", 100, true}, + {"<= 100 KiB", 99, true}, + {"<= 100 KiB", 101, false}, + + {"> 100 KiB", 101, true}, + {"> 100 KiB", 100, false}, + + {">= 100 KiB", 100, true}, + {">= 100 KiB", 101, true}, + {">= 100 KiB", 99, false}, + + {"< 1025 B", 1, true}, + {"< 1024 B", 1, false}, + {"< 1025 B", 2, false}, + + {"< 100 KiB", 99, true}, + {"< 100 KiB", 100, false}, + {"< 100 KB", 99, false}, + {"< 102 KB", 99, true}, + + {"< 100 MiB", 99, true}, + {"< 100 MiB", 102400, false}, + {"< 101 MiB", 102400, true}, + {"< 100 MB", 102400, false}, + {"< 105 MB", 102400, true}, + + {"< 1 GiB", 1024*1024 - 1, true}, + {"< 1 GiB", 1024 * 1024, false}, + + {"< 1 GB", 1024*1024 - 1, false}, + {"< 2 GB", 1024 * 1024, true}, + } + + for _, tt := range tests { + excludeRule := &schema.ExcludedGitHubRepo{Size: tt.rule} + repo := github.Repository{DiskUsageKibibytes: tt.sizeKibibytes} + assertExcluded(t, excludeRule, repo, tt.wantExcluded) + } + }) + + t.Run("stars and size", func(t *testing.T) { + rule := &schema.ExcludedGitHubRepo{Stars: "< 100", Size: ">= 1GB"} + + // Less than 100 stars, equal or greater than 1GB in size + assertExcluded(t, rule, github.Repository{StargazerCount: 99, DiskUsageKibibytes: 976563}, true) + assertExcluded(t, rule, github.Repository{StargazerCount: 99, DiskUsageKibibytes: 976563 + 1}, true) + + // Equal or greater than 100 stars, greater than 1GB in size + assertExcluded(t, rule, github.Repository{StargazerCount: 100, DiskUsageKibibytes: 976563 + 1}, false) + assertExcluded(t, rule, github.Repository{StargazerCount: 101, DiskUsageKibibytes: 976563 + 1}, false) + + // Greater than 100 stars, less than 1 GB + assertExcluded(t, rule, github.Repository{StargazerCount: 101, DiskUsageKibibytes: 500}, false) + }) +} diff --git a/internal/repos/github.go b/internal/repos/github.go index b574db13724ac..61073fa3b8c61 100644 --- a/internal/repos/github.go +++ b/internal/repos/github.go @@ -134,7 +134,20 @@ func newGitHubSource( } return false } + for _, r := range c.Exclude { + // TODO: Size/Stars are special-case'd here and are AND'ed if both set. + // This condition here should be replace with something that builds an + // exclude-function for all possible values a schema.ExcludedGitHubRepo + // could have. + if r.Size != "" || r.Stars != "" { + fn, err := buildGitHubExcludeRule(r) + if err != nil { + return nil, err + } + eb.Generic(fn) + } + if r.Archived { eb.Generic(excludeArchived) } diff --git a/internal/repos/github_test.go b/internal/repos/github_test.go index c99a5a718f339..24fb3b6685dfa 100644 --- a/internal/repos/github_test.go +++ b/internal/repos/github_test.go @@ -775,6 +775,7 @@ func TestGithubSource_ListRepos(t *testing.T) { // uses rcache, a caching layer that uses Redis. // We need to clear the cache before we run the tests rcache.SetupForTest(t) + ratelimit.SetupForTest(t) var ( cf *httpcli.Factory diff --git a/internal/repos/sources_test.go b/internal/repos/sources_test.go index ea78c6f8e2206..c15b69d7df27d 100644 --- a/internal/repos/sources_test.go +++ b/internal/repos/sources_test.go @@ -182,13 +182,21 @@ func TestSources_ListRepos_Excluded(t *testing.T) { "sourcegraph/sourcegraph", "keegancsmith/sqlf", "tsenart/VEGETA", - "tsenart/go-tsz", // fork + "tsenart/go-tsz", // fork + "sourcegraph/about", // has >500MB and < 200 stars + "facebook/react", // has 215k stars as of now + "torvalds/linux", // has ~4GB + "avelino/awesome-go", // has < 20 MB and > 100k stars }, Exclude: []*schema.ExcludedGitHubRepo{ {Name: "tsenart/Vegeta"}, {Id: "MDEwOlJlcG9zaXRvcnkxNTM2NTcyNDU="}, // tsenart/patrol ID {Pattern: "^keegancsmith/.*"}, {Forks: true}, + {Stars: "> 215000"}, // exclude facebook/react + {Size: "> 3GB"}, // exclude torvalds/linux + {Size: ">= 500MB", Stars: "< 200"}, // exclude about repo + {Size: "<= 20MB", Stars: "> 100000"}, // exclude awesome-go }, })), }, diff --git a/internal/repos/testdata/sources/GITHUB/excluded-repos-are-never-yielded.yaml b/internal/repos/testdata/sources/GITHUB/excluded-repos-are-never-yielded.yaml index 1dba6e2b67f53..e5752c27a795f 100644 --- a/internal/repos/testdata/sources/GITHUB/excluded-repos-are-never-yielded.yaml +++ b/internal/repos/testdata/sources/GITHUB/excluded-repos-are-never-yielded.yaml @@ -2,43 +2,56 @@ version: 1 interactions: - request: - body: '{"query":"\nfragment RepositoryFields on Repository {\n\tid\n\tdatabaseId\n\tnameWithOwner\n\tdescription\n\turl\n\tisPrivate\n\tisFork\n\tisArchived\n\tisLocked\n\tisDisabled\n\tviewerPermission\n\tstargazerCount\n\tforkCount\n}\n\tquery - {\nrepo0: repository(owner: \"sourcegraph\", name: \"Sourcegraph\") { ... on - Repository { ...RepositoryFields } }\nrepo1: repository(owner: \"keegancsmith\", - name: \"sqlf\") { ... on Repository { ...RepositoryFields } }\nrepo2: repository(owner: - \"tsenart\", name: \"VEGETA\") { ... on Repository { ...RepositoryFields } }\nrepo3: - repository(owner: \"tsenart\", name: \"go-tsz\") { ... on Repository { ...RepositoryFields - } }\n}","variables":{}}' + body: '{"query":"\nfragment RepositoryFields on Repository {\n\tid\n\tdatabaseId\n\tnameWithOwner\n\tdescription\n\turl\n\tisPrivate\n\tisFork\n\tisArchived\n\tisLocked\n\tisDisabled\n\tviewerPermission\n\tstargazerCount\n\tforkCount\n\tdiskUsage\n\trepositoryTopics(first:100) + {\n\t\tnodes {\n\t\t\ttopic {\n\t\t\t\tname\n\t\t\t}\n\t\t}\n\t}\n}\n\tquery + {\nrepo0: repository(owner: \"sourcegraph\", name: \"sourcegraph\") { ... on + Repository { ...RepositoryFields parent { nameWithOwner, isFork } } }\nrepo1: + repository(owner: \"keegancsmith\", name: \"sqlf\") { ... on Repository { ...RepositoryFields + parent { nameWithOwner, isFork } } }\nrepo2: repository(owner: \"tsenart\", + name: \"VEGETA\") { ... on Repository { ...RepositoryFields parent { nameWithOwner, + isFork } } }\nrepo3: repository(owner: \"tsenart\", name: \"go-tsz\") { ... + on Repository { ...RepositoryFields parent { nameWithOwner, isFork } } }\nrepo4: + repository(owner: \"sourcegraph\", name: \"about\") { ... on Repository { ...RepositoryFields + parent { nameWithOwner, isFork } } }\nrepo5: repository(owner: \"facebook\", + name: \"react\") { ... on Repository { ...RepositoryFields parent { nameWithOwner, + isFork } } }\nrepo6: repository(owner: \"torvalds\", name: \"linux\") { ... + on Repository { ...RepositoryFields parent { nameWithOwner, isFork } } }\nrepo7: + repository(owner: \"avelino\", name: \"awesome-go\") { ... on Repository { ...RepositoryFields + parent { nameWithOwner, isFork } } }\n}","variables":{}}' form: {} headers: Accept: - application/vnd.github.antiope-preview+json + Cache-Control: + - max-age=0 Content-Type: - application/json; charset=utf-8 url: https://api.github.com/graphql method: POST response: - body: '{"data":{"repo0":{"id":"MDEwOlJlcG9zaXRvcnk0MTI4ODcwOA==","databaseId":41288708,"nameWithOwner":"sourcegraph/sourcegraph","description":"Universal - code search (self-hosted)","url":"https://github.com/sourcegraph/sourcegraph","isPrivate":false,"isFork":false,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"ADMIN","stargazerCount":4888,"forkCount":579},"repo1":{"id":"MDEwOlJlcG9zaXRvcnk1ODk1ODk0Mg==","databaseId":58958942,"nameWithOwner":"keegancsmith/sqlf","description":"sqlf - generates parameterized SQL statements in Go, sprintf style","url":"https://github.com/keegancsmith/sqlf","isPrivate":false,"isFork":false,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"READ","stargazerCount":54,"forkCount":3},"repo2":{"id":"MDEwOlJlcG9zaXRvcnkxMjA4MDU1MQ==","databaseId":12080551,"nameWithOwner":"tsenart/vegeta","description":"HTTP - load testing tool and library. It''s over 9000!","url":"https://github.com/tsenart/vegeta","isPrivate":false,"isFork":false,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"ADMIN","stargazerCount":17729,"forkCount":1101},"repo3":{"id":"MDEwOlJlcG9zaXRvcnkxNDE3OTgwNzU=","databaseId":141798075,"nameWithOwner":"tsenart/go-tsz","description":"Time - series compression algorithm from Facebook''s Gorilla paper","url":"https://github.com/tsenart/go-tsz","isPrivate":false,"isFork":true,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"ADMIN","stargazerCount":4,"forkCount":5}}}' + body: '{"data":{"repo0":{"id":"MDEwOlJlcG9zaXRvcnk0MTI4ODcwOA==","databaseId":41288708,"nameWithOwner":"sourcegraph/sourcegraph","description":"Code + AI platform with Code Search & Cody","url":"https://github.com/sourcegraph/sourcegraph","isPrivate":false,"isFork":false,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"ADMIN","stargazerCount":9145,"forkCount":1192,"diskUsage":1162487,"repositoryTopics":{"nodes":[{"topic":{"name":"sourcegraph"}},{"topic":{"name":"open-source"}},{"topic":{"name":"code-search"}},{"topic":{"name":"code-intelligence"}},{"topic":{"name":"repo-type-main"}},{"topic":{"name":"lsif-enabled"}}]},"parent":null},"repo1":{"id":"MDEwOlJlcG9zaXRvcnk1ODk1ODk0Mg==","databaseId":58958942,"nameWithOwner":"keegancsmith/sqlf","description":"sqlf + generates parameterized SQL statements in Go, sprintf style","url":"https://github.com/keegancsmith/sqlf","isPrivate":false,"isFork":false,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"READ","stargazerCount":123,"forkCount":8,"diskUsage":17,"repositoryTopics":{"nodes":[{"topic":{"name":"golang"}},{"topic":{"name":"go"}},{"topic":{"name":"sql"}},{"topic":{"name":"sprintf-style"}}]},"parent":null},"repo2":{"id":"MDEwOlJlcG9zaXRvcnkxMjA4MDU1MQ==","databaseId":12080551,"nameWithOwner":"tsenart/vegeta","description":"HTTP + load testing tool and library. It''s over 9000!","url":"https://github.com/tsenart/vegeta","isPrivate":false,"isFork":false,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"READ","stargazerCount":22112,"forkCount":1364,"diskUsage":2553,"repositoryTopics":{"nodes":[{"topic":{"name":"load-testing"}},{"topic":{"name":"go"}},{"topic":{"name":"benchmarking"}},{"topic":{"name":"http"}}]},"parent":null},"repo3":{"id":"MDEwOlJlcG9zaXRvcnkxNDE3OTgwNzU=","databaseId":141798075,"nameWithOwner":"tsenart/go-tsz","description":"Time + series compression algorithm from Facebook''s Gorilla paper","url":"https://github.com/tsenart/go-tsz","isPrivate":false,"isFork":true,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"READ","stargazerCount":5,"forkCount":4,"diskUsage":326,"repositoryTopics":{"nodes":[]},"parent":{"nameWithOwner":"dgryski/go-tsz","isFork":false}},"repo4":{"id":"MDEwOlJlcG9zaXRvcnkxNDk1MTg3ODM=","databaseId":149518783,"nameWithOwner":"sourcegraph/about","description":"Sourcegraph + blog, feature announcements, and website (about.sourcegraph.com)","url":"https://github.com/sourcegraph/about","isPrivate":false,"isFork":false,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"ADMIN","stargazerCount":89,"forkCount":168,"diskUsage":524322,"repositoryTopics":{"nodes":[{"topic":{"name":"team"}}]},"parent":null},"repo5":{"id":"MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==","databaseId":10270250,"nameWithOwner":"facebook/react","description":"The + library for web and native user interfaces.","url":"https://github.com/facebook/react","isPrivate":false,"isFork":false,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"READ","stargazerCount":215295,"forkCount":45372,"diskUsage":364386,"repositoryTopics":{"nodes":[{"topic":{"name":"javascript"}},{"topic":{"name":"react"}},{"topic":{"name":"frontend"}},{"topic":{"name":"declarative"}},{"topic":{"name":"ui"}},{"topic":{"name":"library"}}]},"parent":null},"repo6":{"id":"MDEwOlJlcG9zaXRvcnkyMzI1Mjk4","databaseId":2325298,"nameWithOwner":"torvalds/linux","description":"Linux + kernel source tree","url":"https://github.com/torvalds/linux","isPrivate":false,"isFork":false,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"READ","stargazerCount":161083,"forkCount":51069,"diskUsage":4786194,"repositoryTopics":{"nodes":[]},"parent":null},"repo7":{"id":"MDEwOlJlcG9zaXRvcnkyMTU0MDc1OQ==","databaseId":21540759,"nameWithOwner":"avelino/awesome-go","description":"A + curated list of awesome Go frameworks, libraries and software","url":"https://github.com/avelino/awesome-go","isPrivate":false,"isFork":false,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"READ","stargazerCount":111633,"forkCount":11434,"diskUsage":10576,"repositoryTopics":{"nodes":[{"topic":{"name":"golang"}},{"topic":{"name":"golang-library"}},{"topic":{"name":"go"}},{"topic":{"name":"awesome"}},{"topic":{"name":"awesome-list"}},{"topic":{"name":"hacktoberfest"}}]},"parent":null}}}' headers: Access-Control-Allow-Origin: - '*' Access-Control-Expose-Headers: - ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, - X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, - Sunset - Cache-Control: - - no-cache + X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, + X-GitHub-Request-Id, Deprecation, Sunset Content-Security-Policy: - default-src 'none' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 20 Jul 2021 18:51:56 GMT + - Thu, 16 Nov 2023 14:56:51 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: @@ -47,8 +60,6 @@ interactions: - max-age=31536000; includeSubdomains; preload Vary: - Accept-Encoding, Accept, X-Requested-With - X-Accepted-Oauth-Scopes: - - repo X-Content-Type-Options: - nosniff X-Frame-Options: @@ -56,28 +67,29 @@ interactions: X-Github-Media-Type: - github.v4; param=antiope-preview; format=json X-Github-Request-Id: - - B8E2:9885:4A73C8:4C0935:60F71B4C - X-Oauth-Scopes: - - "" + - F7AF:56FE:3B280F2C:3BD93ED2:65562DB3 X-Ratelimit-Resource: - graphql X-Ratelimit-Used: - - "1" + - "13" X-Xss-Protection: - "0" status: 200 OK code: 200 duration: "" - request: - body: '{"query":"\nfragment RepositoryFields on Repository {\n\tid\n\tdatabaseId\n\tnameWithOwner\n\tdescription\n\turl\n\tisPrivate\n\tisFork\n\tisArchived\n\tisLocked\n\tisDisabled\n\tviewerPermission\n\tstargazerCount\n\tforkCount\n}\n\t\nquery($query: + body: '{"query":"\nfragment RepositoryFields on Repository {\n\tid\n\tdatabaseId\n\tnameWithOwner\n\tdescription\n\turl\n\tisPrivate\n\tisFork\n\tisArchived\n\tisLocked\n\tisDisabled\n\tviewerPermission\n\tstargazerCount\n\tforkCount\n\tdiskUsage\n\trepositoryTopics(first:100) + {\n\t\tnodes {\n\t\t\ttopic {\n\t\t\t\tname\n\t\t\t}\n\t\t}\n\t}\n}\n\t\nquery($query: String!, $type: SearchType!, $after: String, $first: Int!) {\n\tsearch(query: $query, type: $type, after: $after, first: $first) {\n\t\trepositoryCount\n\t\tpageInfo { hasNextPage, endCursor }\n\t\tnodes { ... on Repository { ...RepositoryFields - } }\n\t}\n}","variables":{"first":100,"query":"user:tsenart in:name patrol","type":"REPOSITORY"}}' + } }\n\t}\n}","variables":{"first":100,"query":"user:tsenart in:name patrol created:2007-06-01T00:00:00+00:00..2023-11-16T14:56:51+00:00","type":"REPOSITORY"}}' form: {} headers: Accept: - application/vnd.github.antiope-preview+json + Cache-Control: + - max-age=0 Content-Type: - application/json; charset=utf-8 url: https://api.github.com/graphql @@ -85,23 +97,21 @@ interactions: response: body: '{"data":{"search":{"repositoryCount":1,"pageInfo":{"hasNextPage":false,"endCursor":"Y3Vyc29yOjE="},"nodes":[{"id":"MDEwOlJlcG9zaXRvcnkxNTM2NTcyNDU=","databaseId":153657245,"nameWithOwner":"tsenart/patrol","description":"Patrol is an operator friendly distributed rate limiting HTTP API with strong eventually - consistent CvRDT based replication.","url":"https://github.com/tsenart/patrol","isPrivate":false,"isFork":false,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"ADMIN","stargazerCount":33,"forkCount":3}]}}}' + consistent CvRDT based replication.","url":"https://github.com/tsenart/patrol","isPrivate":false,"isFork":false,"isArchived":false,"isLocked":false,"isDisabled":false,"viewerPermission":"READ","stargazerCount":35,"forkCount":3,"diskUsage":95,"repositoryTopics":{"nodes":[]}}]}}}' headers: Access-Control-Allow-Origin: - '*' Access-Control-Expose-Headers: - ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, - X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, - Sunset - Cache-Control: - - no-cache + X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, + X-GitHub-Request-Id, Deprecation, Sunset Content-Security-Policy: - default-src 'none' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 20 Jul 2021 18:51:56 GMT + - Thu, 16 Nov 2023 14:56:52 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: @@ -110,8 +120,6 @@ interactions: - max-age=31536000; includeSubdomains; preload Vary: - Accept-Encoding, Accept, X-Requested-With - X-Accepted-Oauth-Scopes: - - repo X-Content-Type-Options: - nosniff X-Frame-Options: @@ -119,13 +127,11 @@ interactions: X-Github-Media-Type: - github.v4; param=antiope-preview; format=json X-Github-Request-Id: - - B8E2:9885:4A740B:4C0981:60F71B4C - X-Oauth-Scopes: - - "" + - F7AF:56FE:3B2812A4:3BD94230:65562DB3 X-Ratelimit-Resource: - graphql X-Ratelimit-Used: - - "2" + - "14" X-Xss-Protection: - "0" status: 200 OK diff --git a/schema/github.schema.json b/schema/github.schema.json index 4880d69a40ed0..293b8533cbdf0 100644 --- a/schema/github.schema.json +++ b/schema/github.schema.json @@ -107,7 +107,9 @@ { "required": ["id"] }, { "required": ["pattern"] }, { "required": ["forks"] }, - { "required": ["archived"] } + { "required": ["archived"] }, + { "required": ["stars"] }, + { "required": ["size"] } ], "properties": { "archived": { @@ -132,13 +134,26 @@ "description": "Regular expression which matches against the name of a GitHub repository (\"owner/name\").", "type": "string", "format": "regex" + }, + "size": { + "description": "If set, repositories with a size above the specified one will be excluded. Specify in kb.", + "type": "string", + "minLength": 2, + "pattern": "^[<>]{1}[=]{0,1}\\s*\\d+\\s*\\w+$" + }, + "stars": { + "description": "If set, repositories stars less than the specified number will be.", + "type": "string", + "minLength": 2, + "pattern": "^[<>]{1}[=]{0,1}\\s*\\d+$" } } }, "examples": [ [{ "forks": true }], [{ "name": "owner/name" }, { "id": "MDEwOlJlcG9zaXRvcnkxMTczMDM0Mg==" }], - [{ "name": "vuejs/vue" }, { "name": "php/php-src" }, { "pattern": "^topsecretorg/.*" }] + [{ "name": "vuejs/vue" }, { "name": "php/php-src" }, { "pattern": "^topsecretorg/.*" }], + [{ "size": ">= 1GB", "stars": "< 100" }] ] }, "repositoryQuery": { diff --git a/schema/schema.go b/schema/schema.go index b5f54a7a85f33..f9e61869547da 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -787,6 +787,10 @@ type ExcludedGitHubRepo struct { Name string `json:"name,omitempty"` // Pattern description: Regular expression which matches against the name of a GitHub repository ("owner/name"). Pattern string `json:"pattern,omitempty"` + // Size description: If set, repositories with a size above the specified one will be excluded. Specify in kb. + Size string `json:"size,omitempty"` + // Stars description: If set, repositories stars less than the specified number will be. + Stars string `json:"stars,omitempty"` } type ExcludedGitLabProject struct { // EmptyRepos description: Whether to exclude empty repositories. From be9cd32b3af5e434d00fe719afe73f710ea39930 Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Thu, 16 Nov 2023 19:17:50 +0100 Subject: [PATCH 055/222] fireworks: Fix struct tag (#58359) This fixes JSON unmarshalling of a reported linter issue. --- internal/completions/client/fireworks/fireworks.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/completions/client/fireworks/fireworks.go b/internal/completions/client/fireworks/fireworks.go index c307c75f36e8f..d16665c48c31b 100644 --- a/internal/completions/client/fireworks/fireworks.go +++ b/internal/completions/client/fireworks/fireworks.go @@ -187,7 +187,7 @@ type fireworksResponse struct { Text string `json:"text"` Index int `json:"index"` FinishReason string `json:"finish_reason"` - Logprobs *types.Logprobs `json:logprobs"` + Logprobs *types.Logprobs `json:"logprobs"` } `json:"choices"` Usage struct { PromptTokens int `json:"prompt_tokens"` From 1f2cd593d0269d54b64defc929c301d860ad0fd3 Mon Sep 17 00:00:00 2001 From: Jason Hawk Harris <jasonhawkharris@gmail.com> Date: Thu, 16 Nov 2023 14:40:02 -0600 Subject: [PATCH 056/222] Code Navigation: tokens highlight immediately on hover (#58384) Before, when a user hovered over a token with a tooltip, the immediate lack of highlighting created a state of uncertainty. No indication precedes the appearance of a tooltip, as they take several seconds to fully load upon the initial page load, and highlighting will not appear until they are fully loaded. This behavior contributed to a sluggish and somewhat frustrating user experience. Now, highlighting occurs instantly upon hover, signaling to the user that an interaction is imminent. --- .../search-ui/input/codemirror/token-info.ts | 2 +- .../wildcard/src/global-styles/highlight.scss | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/client/branded/src/search-ui/input/codemirror/token-info.ts b/client/branded/src/search-ui/input/codemirror/token-info.ts index 265fc6acae1ca..d28be2b88704e 100644 --- a/client/branded/src/search-ui/input/codemirror/token-info.ts +++ b/client/branded/src/search-ui/input/codemirror/token-info.ts @@ -86,7 +86,7 @@ export function tokenInfo(): Extension { effect.is(setHighlighedTokenPosition) ) if (effect) { - position = effect?.value + position = effect.value } if (position !== null) { // Mapping the position might not be necessary since we clear diff --git a/client/wildcard/src/global-styles/highlight.scss b/client/wildcard/src/global-styles/highlight.scss index 9480a319d38bc..fdfd8892e0b0f 100644 --- a/client/wildcard/src/global-styles/highlight.scss +++ b/client/wildcard/src/global-styles/highlight.scss @@ -556,6 +556,21 @@ color: var(--hl-pink); } + // The following hl-typed-* that have associated tooltips. + // This ensures that tokens highlight before tooltip is available. + .hl-typed-Identifier:hover, + .hl-typed-IdentifierParameter:hover, + .hl-typed-IdentifierAttribute:hover, + .hl-typed-IdentifierType:hover, + .hl-typed-IdentifierFunction:hover, + .hl-typed-IdentifierModule:hover, + .hl-typed-IdentifierFunctionDefinition:hover, + .hl-typed-IdentifierNamespace:hover, + .hl-typed-IdentifierConstant:hover, + .hl-typed-IdentifierBuiltin:hover { + background-color: var(--mark-bg); + } + // TODO: Followup for https://github.com/sourcegraph/sourcegraph/issues/30995 // .hl-typed-RegexEscape { // } @@ -978,6 +993,21 @@ color: var(--hl-purple); } + // The following hl-typed-* that have associated tooltips. + // This ensures that tokens highlight before tooltip is available. + .hl-typed-Identifier:hover, + .hl-typed-IdentifierAttribute:hover, + .hl-typed-IdentifierBuiltin:hover, + .hl-typed-IdentifierConstant:hover, + .hl-typed-IdentifierFunction:hover, + .hl-typed-IdentifierFunctionDefinition:hover, + .hl-typed-IdentifierModule:hover, + .hl-typed-IdentifierNamespace:hover, + .hl-typed-IdentifierParameter:hover, + .hl-typed-IdentifierType:hover { + background-color: var(--mark-bg); + } + // TODO: Followup for https://github.com/sourcegraph/sourcegraph/issues/30995 // .hl-typed-RegexEscape { // } From 6fcbbdf9149fc5069c2a66df68e2cdd8081531e5 Mon Sep 17 00:00:00 2001 From: Mohammad Alam <mohammad.alam@sourcegraph.com> Date: Thu, 16 Nov 2023 16:35:19 -0500 Subject: [PATCH 057/222] release: sourcegraph@5.2.3 (#58362) * release: sourcegraph@5.2.3 * configure * fix migrator genrule * update schemas --------- Co-authored-by: Robert Lin <robert@bobheadxi.dev> Co-authored-by: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> --- doc/admin/deploy/docker-compose/aws.md | 2 +- doc/admin/deploy/docker-compose/azure.md | 2 +- doc/admin/deploy/docker-compose/digitalocean.md | 2 +- doc/admin/deploy/docker-compose/google_cloud.md | 2 +- doc/admin/deploy/docker-compose/index.md | 2 +- doc/admin/deploy/docker-single-container/aws.md | 2 +- .../docker-single-container/digitalocean.md | 2 +- .../docker-single-container/google_cloud.md | 2 +- .../deploy/docker-single-container/index.md | 10 +++++----- doc/admin/deploy/kubernetes/helm.md | 16 ++++++++-------- doc/admin/deploy/machine-images/gce.md | 2 +- .../executors/deploy_executors_kubernetes.md | 4 ++-- doc/admin/external_services/postgres.md | 4 ++-- doc/admin/external_services/redis.md | 2 +- doc/admin/http_https_configuration.md | 2 +- doc/admin/ssl_https_self_signed_cert_nginx.md | 2 +- doc/admin/updates/docker_compose.md | 4 ++++ doc/admin/updates/pure_docker.md | 9 +++++++++ doc/admin/updates/server.md | 4 ++++ internal/updatecheck/handler.go | 6 +++--- tools/release/schema_deps.bzl | 4 ++-- 21 files changed, 51 insertions(+), 34 deletions(-) diff --git a/doc/admin/deploy/docker-compose/aws.md b/doc/admin/deploy/docker-compose/aws.md index e5e77425aa28e..ef10a94ca6a19 100644 --- a/doc/admin/deploy/docker-compose/aws.md +++ b/doc/admin/deploy/docker-compose/aws.md @@ -69,7 +69,7 @@ set -euxo pipefail ############################################################################### # Please read the notes below the script if you are cloning a private repository DEPLOY_SOURCEGRAPH_DOCKER_FORK_CLONE_URL='https://github.com/sourcegraph/deploy-sourcegraph-docker.git' -DEPLOY_SOURCEGRAPH_DOCKER_FORK_REVISION='v5.2.2' +DEPLOY_SOURCEGRAPH_DOCKER_FORK_REVISION='v5.2.3' ##################### NO CHANGES REQUIRED BELOW THIS LINE ##################### DEPLOY_SOURCEGRAPH_DOCKER_CHECKOUT='/home/ec2-user/deploy-sourcegraph-docker' DOCKER_COMPOSE_VERSION='1.29.2' diff --git a/doc/admin/deploy/docker-compose/azure.md b/doc/admin/deploy/docker-compose/azure.md index f2ff34f3407ac..1670991098922 100644 --- a/doc/admin/deploy/docker-compose/azure.md +++ b/doc/admin/deploy/docker-compose/azure.md @@ -77,7 +77,7 @@ set -euxo pipefail ############################################################################### # Please read the notes below the script if you are cloning a private repository DEPLOY_SOURCEGRAPH_DOCKER_FORK_CLONE_URL='https://github.com/sourcegraph/deploy-sourcegraph-docker.git' -DEPLOY_SOURCEGRAPH_DOCKER_FORK_REVISION='v5.2.2' +DEPLOY_SOURCEGRAPH_DOCKER_FORK_REVISION='v5.2.3' ##################### NO CHANGES REQUIRED BELOW THIS LINE ##################### DEPLOY_SOURCEGRAPH_DOCKER_CHECKOUT='/root/deploy-sourcegraph-docker' DOCKER_COMPOSE_VERSION='1.29.2' diff --git a/doc/admin/deploy/docker-compose/digitalocean.md b/doc/admin/deploy/docker-compose/digitalocean.md index 2681ed6af15a8..b247c7527571a 100644 --- a/doc/admin/deploy/docker-compose/digitalocean.md +++ b/doc/admin/deploy/docker-compose/digitalocean.md @@ -60,7 +60,7 @@ set -euxo pipefail ############################################################################### # Please read the notes below the script if you are cloning a private repository DEPLOY_SOURCEGRAPH_DOCKER_FORK_CLONE_URL='https://github.com/sourcegraph/deploy-sourcegraph-docker.git' -DEPLOY_SOURCEGRAPH_DOCKER_FORK_REVISION='v5.2.2' +DEPLOY_SOURCEGRAPH_DOCKER_FORK_REVISION='v5.2.3' ##################### NO CHANGES REQUIRED BELOW THIS LINE ##################### DEPLOY_SOURCEGRAPH_DOCKER_CHECKOUT='/root/deploy-sourcegraph-docker' DOCKER_DATA_ROOT='/mnt/docker-data' diff --git a/doc/admin/deploy/docker-compose/google_cloud.md b/doc/admin/deploy/docker-compose/google_cloud.md index 88b2a11682117..80c24386f8123 100644 --- a/doc/admin/deploy/docker-compose/google_cloud.md +++ b/doc/admin/deploy/docker-compose/google_cloud.md @@ -56,7 +56,7 @@ set -euxo pipefail ############################################################################### # Please read the notes below the script if you are cloning a private repository DEPLOY_SOURCEGRAPH_DOCKER_FORK_CLONE_URL='https://github.com/sourcegraph/deploy-sourcegraph-docker.git' -DEPLOY_SOURCEGRAPH_DOCKER_FORK_REVISION='v5.2.2' +DEPLOY_SOURCEGRAPH_DOCKER_FORK_REVISION='v5.2.3' ##################### NO CHANGES REQUIRED BELOW THIS LINE ##################### # IMPORTANT: DO NOT MAKE ANY CHANGES FROM THIS POINT ONWARD DEPLOY_SOURCEGRAPH_DOCKER_CHECKOUT='/root/deploy-sourcegraph-docker' diff --git a/doc/admin/deploy/docker-compose/index.md b/doc/admin/deploy/docker-compose/index.md index 37b56d8d54296..72d36a5fe72bb 100644 --- a/doc/admin/deploy/docker-compose/index.md +++ b/doc/admin/deploy/docker-compose/index.md @@ -118,7 +118,7 @@ Continue with the following steps *after* you have created a public or private c ```bash # Specify the version you want to install - export SOURCEGRAPH_VERSION="v5.2.2" + export SOURCEGRAPH_VERSION="v5.2.3" # Check out the selected version for use, in a new branch called "release" git checkout $SOURCEGRAPH_VERSION -b release ``` diff --git a/doc/admin/deploy/docker-single-container/aws.md b/doc/admin/deploy/docker-single-container/aws.md index da176f77f706a..dfd2d5a51b5b1 100644 --- a/doc/admin/deploy/docker-single-container/aws.md +++ b/doc/admin/deploy/docker-single-container/aws.md @@ -33,7 +33,7 @@ This tutorial shows you how to deploy [single-container Sourcegraph with Docker] - usermod -a -G docker ec2-user # Install and run Sourcegraph. Restart the container upon subsequent reboots - - [ sh, -c, 'docker run -d --publish 80:7080 --publish 443:7080 --publish 127.0.0.1:3370:3370 --restart unless-stopped --volume /home/ec2-user/.sourcegraph/config:/etc/sourcegraph --volume /home/ec2-user/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:5.2.2' ] + - [ sh, -c, 'docker run -d --publish 80:7080 --publish 443:7080 --publish 127.0.0.1:3370:3370 --restart unless-stopped --volume /home/ec2-user/.sourcegraph/config:/etc/sourcegraph --volume /home/ec2-user/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:5.2.3' ] ``` - Select **Next: ...** until you get to the **Configure Security Group** page. Then add the following rules: diff --git a/doc/admin/deploy/docker-single-container/digitalocean.md b/doc/admin/deploy/docker-single-container/digitalocean.md index a65e506a22f29..76659af778156 100644 --- a/doc/admin/deploy/docker-single-container/digitalocean.md +++ b/doc/admin/deploy/docker-single-container/digitalocean.md @@ -17,7 +17,7 @@ This tutorial shows you how to deploy [single-container Sourcegraph with Docker] 1. Run the Sourcegraph Docker image as a daemon: ``` - docker run -d --publish 80:7080 --publish 443:7443 --restart unless-stopped --volume /root/.sourcegraph/config:/etc/sourcegraph --volume /root/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:5.2.2 + docker run -d --publish 80:7080 --publish 443:7443 --restart unless-stopped --volume /root/.sourcegraph/config:/etc/sourcegraph --volume /root/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:5.2.3 ``` 1. Navigate to the droplet's IP address to finish initializing Sourcegraph. If you have configured a DNS entry for the IP, configure `externalURL` to reflect that. diff --git a/doc/admin/deploy/docker-single-container/google_cloud.md b/doc/admin/deploy/docker-single-container/google_cloud.md index cf6c8783942fd..47a9eda48743c 100644 --- a/doc/admin/deploy/docker-single-container/google_cloud.md +++ b/doc/admin/deploy/docker-single-container/google_cloud.md @@ -23,7 +23,7 @@ This tutorial shows you how to deploy [single-container Sourcegraph with Docker] sudo apt-get install -y docker-ce mkdir -p /root/.sourcegraph/config mkdir -p /root/.sourcegraph/data - docker run -d --publish 80:7080 --publish 443:7443 --restart unless-stopped --volume /root/.sourcegraph/config:/etc/sourcegraph --volume /root/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:5.2.2 + docker run -d --publish 80:7080 --publish 443:7443 --restart unless-stopped --volume /root/.sourcegraph/config:/etc/sourcegraph --volume /root/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:5.2.3 ``` - Create your VM, then navigate to its public IP address. diff --git a/doc/admin/deploy/docker-single-container/index.md b/doc/admin/deploy/docker-single-container/index.md index 8bc7c9bb51601..353c15748b519 100644 --- a/doc/admin/deploy/docker-single-container/index.md +++ b/doc/admin/deploy/docker-single-container/index.md @@ -14,7 +14,7 @@ It takes less than a minute to run and install Sourcegraph using Docker: This uses line breaks that are rendered but not copy-pasted to the clipboard. --> -<pre class="pre-wrap start-sourcegraph-command"><code>docker run<span class="virtual-br"></span> --publish 7080:7080 --publish 127.0.0.1:3370:3370 --rm<span class="virtual-br"></span> --volume ~/.sourcegraph/config:/etc/sourcegraph<span class="virtual-br"></span> --volume ~/.sourcegraph/data:/var/opt/sourcegraph<span class="virtual-br"></span> sourcegraph/server:5.2.2</code></pre> +<pre class="pre-wrap start-sourcegraph-command"><code>docker run<span class="virtual-br"></span> --publish 7080:7080 --publish 127.0.0.1:3370:3370 --rm<span class="virtual-br"></span> --volume ~/.sourcegraph/config:/etc/sourcegraph<span class="virtual-br"></span> --volume ~/.sourcegraph/data:/var/opt/sourcegraph<span class="virtual-br"></span> sourcegraph/server:5.2.3</code></pre> Once the server is ready (logo is displayed in the terminal), navigate to the hostname or IP address on port `7080`. Create the admin account, then you'll be guided through setting up Sourcegraph for code searching and navigation. @@ -46,7 +46,7 @@ For example, to mount a `.gitconfig`, create a file `/mnt/sourcegraph/config/git Alternatively you can create a new Docker image which inherits from Sourcegraph and then mutates the environment: ```dockerfile -FROM sourcegraph/server:5.2.2 +FROM sourcegraph/server:5.2.3 COPY gitconfig /etc/gitconfig COPY ssh /root/.ssh @@ -87,7 +87,7 @@ This is required to [collect debug data](../../pprof.md). The docker run command for single-container Sourcegraph needs an additional publish flag to expose the debug port: ```sh -$ docker run --publish 7080:7080 --publish 127.0.0.1:3370:3370 --publish 127.0.0.1:6060:6060 --rm --volume ~/.sourcegraph/config:/etc/sourcegraph --volume ~/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:5.2.2 +$ docker run --publish 7080:7080 --publish 127.0.0.1:3370:3370 --publish 127.0.0.1:6060:6060 --rm --volume ~/.sourcegraph/config:/etc/sourcegraph --volume ~/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:5.2.3 ``` If Sourcegraph is deployed to a remote server, then access via an SSH tunnel using a tool @@ -105,7 +105,7 @@ Add the following to your docker run command: ```sh $ docker run [...] -e (YOUR CODE) -sourcegraph/server:5.2.2 +sourcegraph/server:5.2.3 ``` ## Operation @@ -254,7 +254,7 @@ Sourcegraph can be **tested** on Windows 10 using roughly the same steps provide 1. [Install Docker for Windows](https://docs.docker.com/docker-for-windows/install/) 2. Using a command prompt, follow the same [installation steps provided above](#install-sourcegraph-with-docker) but remove the `--volume` arguments. For example by pasting this: -<pre class="pre-wrap"><code>docker run<span class="virtual-br"></span> --publish 7080:7080 --publish 127.0.0.1:3370:3370 --rm<span class="virtual-br"></span> sourcegraph/server:5.2.2</code></pre> +<pre class="pre-wrap"><code>docker run<span class="virtual-br"></span> --publish 7080:7080 --publish 127.0.0.1:3370:3370 --rm<span class="virtual-br"></span> sourcegraph/server:5.2.3</code></pre> ### Low resource environments diff --git a/doc/admin/deploy/kubernetes/helm.md b/doc/admin/deploy/kubernetes/helm.md index 1dded821d8112..c425687154a41 100644 --- a/doc/admin/deploy/kubernetes/helm.md +++ b/doc/admin/deploy/kubernetes/helm.md @@ -54,7 +54,7 @@ $ helm repo add sourcegraph https://helm.sourcegraph.com/release Install the Sourcegraph chart using default values: ```sh -$ helm install --version 5.2.2 sourcegraph sourcegraph/sourcegraph +$ helm install --version 5.2.3 sourcegraph sourcegraph/sourcegraph ``` Sourcegraph should now be available via the address set. Browsing to the url should now provide access to the Sourcegraph UI to create the initial administrator account. @@ -81,7 +81,7 @@ Example overrides can be found in the [examples](https://github.com/sourcegraph/ Providing the override file to Helm is done with the inclusion of the values flag and the name of the file: ```sh -$ helm upgrade --install --values ./override.yaml --version 5.2.2 sourcegraph sourcegraph/sourcegraph +$ helm upgrade --install --values ./override.yaml --version 5.2.3 sourcegraph sourcegraph/sourcegraph ``` When making configuration changes, it's recommended to review the changes that will be appliedā€”see [Reviewing Changes](#reviewing-changes). @@ -575,7 +575,7 @@ The override file includes a [BackendConfig] CRD. This is necessary to instruct **2** ā€“ Install the chart ```sh -$ helm upgrade --install --values ./override.yaml --version 5.2.2 sourcegraph sourcegraph/sourcegraph +$ helm upgrade --install --values ./override.yaml --version 5.2.3 sourcegraph sourcegraph/sourcegraph ``` It will take around 10 minutes for the load balancer to be fully ready, you may check on the status and obtain the load balancer IP using the following command: @@ -694,7 +694,7 @@ storageClass: **2** ā€“ Install the chart ```sh -$ helm upgrade --install --values ./override.yaml --version 5.2.2 sourcegraph sourcegraph/sourcegraph +$ helm upgrade --install --values ./override.yaml --version 5.2.3 sourcegraph sourcegraph/sourcegraph ``` It will take some time for the load balancer to be fully ready, use the following to check on the status and obtain the load balancer address (once available): @@ -779,7 +779,7 @@ storageClass: **2** ā€“ Install the chart ```sh -$ helm upgrade --install --values ./override.yaml --version 5.2.2 sourcegraph sourcegraph/sourcegraph +$ helm upgrade --install --values ./override.yaml --version 5.2.3 sourcegraph sourcegraph/sourcegraph ``` It will take some time for the load balancer to be fully ready, you can check on the status and obtain the load balancer address (when ready) using: @@ -865,7 +865,7 @@ storageClass: **2** ā€“ Install the chart ```sh -$ helm upgrade --install --values ./override.yaml --version 5.2.2 sourcegraph sourcegraph/sourcegraph +$ helm upgrade --install --values ./override.yaml --version 5.2.3 sourcegraph sourcegraph/sourcegraph ``` It may take some time before your ingress is up and ready to proceed. Depending on how your Ingress Controller works, you may be able to check on its status and obtain the public address of your Ingress using: @@ -965,7 +965,7 @@ $ helm repo update sourcegraph 4. Install the new version: ```sh -$ helm upgrade --install -f override.yaml --version 5.2.2 sourcegraph sourcegraph/sourcegraph +$ helm upgrade --install -f override.yaml --version 5.2.3 sourcegraph sourcegraph/sourcegraph ``` 5. Verify the installation has started: @@ -1025,7 +1025,7 @@ If you are upgrading to **Sourcegraph 5.1 or later**, we encourage you to perfor **Example:** ```sh - $ helm upgrade --install -n sourcegraph --set "migrator.args={upgrade,--from=3.41.0,--to=4.5.1}" sourcegraph-migrator sourcegraph/sourcegraph-migrator --version 5.2.2 + $ helm upgrade --install -n sourcegraph --set "migrator.args={upgrade,--from=3.41.0,--to=4.5.1}" sourcegraph-migrator sourcegraph/sourcegraph-migrator --version 5.2.3 Release "sourcegraph-migrator" has been upgraded. Happy Helming! NAME: sourcegraph-migrator LAST DEPLOYED: Tue Mar 7 18:23:56 2023 diff --git a/doc/admin/deploy/machine-images/gce.md b/doc/admin/deploy/machine-images/gce.md index bd4c36b9f713a..c2a27411dc005 100644 --- a/doc/admin/deploy/machine-images/gce.md +++ b/doc/admin/deploy/machine-images/gce.md @@ -147,7 +147,7 @@ SSH into the VM as user `sourcegraph` and run the following command: ```bash # Please update the version number according to the upgrade notes -helm upgrade -i -f /home/sourcegraph/deploy/install/override.yaml --version 5.2.2 sourcegraph sourcegraph/sourcegraph +helm upgrade -i -f /home/sourcegraph/deploy/install/override.yaml --version 5.2.3 sourcegraph sourcegraph/sourcegraph # Note: /home/sourcegraph/deploy/install/override.yaml is the override file for your instance size ``` diff --git a/doc/admin/executors/deploy_executors_kubernetes.md b/doc/admin/executors/deploy_executors_kubernetes.md index afae5b9ebab58..d881c444a2218 100644 --- a/doc/admin/executors/deploy_executors_kubernetes.md +++ b/doc/admin/executors/deploy_executors_kubernetes.md @@ -8,7 +8,7 @@ <p><b>We're very much looking for input and feedback on this feature.</b> You can either <a href="https://about.sourcegraph.com/contact">contact us directly</a>, <a href="https://github.com/sourcegraph/sourcegraph">file an issue</a>, or <a href="https://twitter.com/sourcegraph">tweet at us</a>.</p> </aside> -> NOTE: This feature is available in Sourcegraph 5.2.2 and later. +> NOTE: This feature is available in Sourcegraph 5.2.3 and later. [Kubernetes manifests](https://github.com/sourcegraph/deploy-sourcegraph-k8s) are provided to deploy Sourcegraph Executors on a running Kubernetes cluster. If you are deploying Sourcegraph with helm, charts are available [here](https://github.com/sourcegraph/deploy-sourcegraph-helm). @@ -134,7 +134,7 @@ The following are Firewall rules that are _highly recommended_ when running Exec Environment. - Disable access to internal resources. -- Disable access to `5.2.2.254` (AWS / GCP Instance Metadata Service). +- Disable access to `5.2.3.254` (AWS / GCP Instance Metadata Service). ### Batch Changes diff --git a/doc/admin/external_services/postgres.md b/doc/admin/external_services/postgres.md index c7210559729de..d60471555499a 100644 --- a/doc/admin/external_services/postgres.md +++ b/doc/admin/external_services/postgres.md @@ -48,7 +48,7 @@ Add the following to your `docker run` command: This uses line breaks that are rendered but not copy-pasted to the clipboard. --> -<pre class="pre-wrap start-sourcegraph-command"><code>docker run [...]<span class="virtual-br"></span> -e PGHOST=psql1.mycompany.org<span class="virtual-br"></span> -e PGUSER=sourcegraph<span class="virtual-br"></span> -e PGPASSWORD=secret<span class="virtual-br"></span> -e PGDATABASE=sourcegraph<span class="virtual-br"></span> -e PGSSLMODE=require<span class="virtual-br"> -e CODEINTEL_PGHOST=psql2.mycompany.org<span class="virtual-br"></span> -e CODEINTEL_PGUSER=sourcegraph<span class="virtual-br"></span> -e CODEINTEL_PGPASSWORD=secret<span class="virtual-br"></span> -e CODEINTEL_PGDATABASE=sourcegraph-codeintel<span class="virtual-br"></span> -e CODEINTEL_PGSSLMODE=require<span class="virtual-br"></span> sourcegraph/server:5.2.2</code></pre> +<pre class="pre-wrap start-sourcegraph-command"><code>docker run [...]<span class="virtual-br"></span> -e PGHOST=psql1.mycompany.org<span class="virtual-br"></span> -e PGUSER=sourcegraph<span class="virtual-br"></span> -e PGPASSWORD=secret<span class="virtual-br"></span> -e PGDATABASE=sourcegraph<span class="virtual-br"></span> -e PGSSLMODE=require<span class="virtual-br"> -e CODEINTEL_PGHOST=psql2.mycompany.org<span class="virtual-br"></span> -e CODEINTEL_PGUSER=sourcegraph<span class="virtual-br"></span> -e CODEINTEL_PGPASSWORD=secret<span class="virtual-br"></span> -e CODEINTEL_PGDATABASE=sourcegraph-codeintel<span class="virtual-br"></span> -e CODEINTEL_PGSSLMODE=require<span class="virtual-br"></span> sourcegraph/server:5.2.3</code></pre> ### Docker Compose @@ -193,7 +193,7 @@ When [PgBouncer] is used, we need to include `statement_cache_mode=describe` in Add the following to your `docker run` command: -<pre class="pre-wrap start-sourcegraph-command"><code>docker run [...]<span class="virtual-br"></span> -e PGDATASOURCE="postgres://username:password@sourcegraph-pgbouncer.mycompany.com:5432/sg?statement_cache_mode=describe"<span class="virtual-br"></span> -e CODEINSIGHTS_PGDATASOURCE="postgres://username:password@sourcegraph-codeintel-pgbouncer.mycompany.com:5432/sg?statement_cache_mode=describe"<span class="virtual-br"></span> sourcegraph/server:5.2.2</code></pre> +<pre class="pre-wrap start-sourcegraph-command"><code>docker run [...]<span class="virtual-br"></span> -e PGDATASOURCE="postgres://username:password@sourcegraph-pgbouncer.mycompany.com:5432/sg?statement_cache_mode=describe"<span class="virtual-br"></span> -e CODEINSIGHTS_PGDATASOURCE="postgres://username:password@sourcegraph-codeintel-pgbouncer.mycompany.com:5432/sg?statement_cache_mode=describe"<span class="virtual-br"></span> sourcegraph/server:5.2.3</code></pre> ### Docker Compose diff --git a/doc/admin/external_services/redis.md b/doc/admin/external_services/redis.md index 0eff04f7b2178..7638bde8e2c90 100644 --- a/doc/admin/external_services/redis.md +++ b/doc/admin/external_services/redis.md @@ -13,7 +13,7 @@ or follow the [IANA specification for Redis URLs](https://www.iana.org/assignmen We want line breaks for readability, but backslashes to escape them do not work cross-platform. This uses line breaks that are rendered but not copy-pasted to the clipboard. --> -<pre class="pre-wrap"><code>docker run [...]<span class="virtual-br"></span> -e REDIS_ENDPOINT=redis.mycompany.org:6379<span class="virtual-br"></span> sourcegraph/server:5.2.2</code></pre> +<pre class="pre-wrap"><code>docker run [...]<span class="virtual-br"></span> -e REDIS_ENDPOINT=redis.mycompany.org:6379<span class="virtual-br"></span> sourcegraph/server:5.2.3</code></pre> > NOTE: On Mac/Windows, if trying to connect to a Redis server on the same host machine, remember that Sourcegraph is running inside a Docker container inside of the Docker virtual machine. You may need to specify your actual machine IP address and not `localhost` or `127.0.0.1` as that refers to the Docker VM itself. diff --git a/doc/admin/http_https_configuration.md b/doc/admin/http_https_configuration.md index 39ad106fdc5f2..ac3d2f955ffba 100644 --- a/doc/admin/http_https_configuration.md +++ b/doc/admin/http_https_configuration.md @@ -37,7 +37,7 @@ docker container run \ \ --volume ~/.sourcegraph/config:/etc/sourcegraph \ --volume ~/.sourcegraph/data:/var/opt/sourcegraph \ - sourcegraph/server:5.2.2 + sourcegraph/server:5.2.3 ``` ### Sourcegraph Cluster (Kubernetes) diff --git a/doc/admin/ssl_https_self_signed_cert_nginx.md b/doc/admin/ssl_https_self_signed_cert_nginx.md index 52c0001aaa1f8..c55a9698c786e 100644 --- a/doc/admin/ssl_https_self_signed_cert_nginx.md +++ b/doc/admin/ssl_https_self_signed_cert_nginx.md @@ -91,7 +91,7 @@ docker container run \ \ --volume ~/.sourcegraph/config:/etc/sourcegraph \ --volume ~/.sourcegraph/data:/var/opt/sourcegraph \ - sourcegraph/server:5.2.2 + sourcegraph/server:5.2.3 ``` > NOTE: We recommend removing `--publish 7080:7080` as it's not needed and traffic sent to that port is un-encrypted. diff --git a/doc/admin/updates/docker_compose.md b/doc/admin/updates/docker_compose.md index ce2e8362fc509..a2241056b99ac 100644 --- a/doc/admin/updates/docker_compose.md +++ b/doc/admin/updates/docker_compose.md @@ -17,6 +17,10 @@ For upgrade procedures or general info about sourcegraph versioning see the link <!-- Add changes changes to this section before release. --> +## v5.2.2 āž” v5.2.3 + +#### Notes: + ## v5.2.1 āž” v5.2.2 #### Notes: diff --git a/doc/admin/updates/pure_docker.md b/doc/admin/updates/pure_docker.md index 69223e17e7de0..0b140243b6fa2 100644 --- a/doc/admin/updates/pure_docker.md +++ b/doc/admin/updates/pure_docker.md @@ -12,6 +12,15 @@ Each section comprehensively describes the changes needed in Docker images, envi <!-- Add changes changes to this section before release. --> +## v5.2.2 āž” v5.2.3 + +As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.2.3`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.2.2...v5.2.3) + +For non-standard replica builds: +- [`Customer Replica 1: āž” v5.2.3`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.2.2...v5.2.3) + +#### Notes: + ## v5.2.1 āž” v5.2.2 As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.2.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.2.1...v5.2.2) diff --git a/doc/admin/updates/server.md b/doc/admin/updates/server.md index 069bc64d70235..d3b8cbb09f430 100644 --- a/doc/admin/updates/server.md +++ b/doc/admin/updates/server.md @@ -17,6 +17,10 @@ For upgrade procedures or general info about sourcegraph versioning see the link <!-- Add changes changes to this section before release. --> +## v5.2.2 āž” v5.2.3 + +#### Notes: + ## v5.2.1 āž” v5.2.2 #### Notes: diff --git a/internal/updatecheck/handler.go b/internal/updatecheck/handler.go index 6fe4e7cd41be6..1086e72644e20 100644 --- a/internal/updatecheck/handler.go +++ b/internal/updatecheck/handler.go @@ -36,17 +36,17 @@ var ( // non-cluster, non-docker-compose, and non-pure-docker installations what the latest // version is. The version here _must_ be available at https://hub.docker.com/r/sourcegraph/server/tags/ // before landing in master. - latestReleaseDockerServerImageBuild = newPingResponse("5.2.2") + latestReleaseDockerServerImageBuild = newPingResponse("5.2.3") // latestReleaseKubernetesBuild is only used by sourcegraph.com to tell existing Sourcegraph // cluster deployments what the latest version is. The version here _must_ be available in // a tag at https://github.com/sourcegraph/deploy-sourcegraph before landing in master. - latestReleaseKubernetesBuild = newPingResponse("5.2.2") + latestReleaseKubernetesBuild = newPingResponse("5.2.3") // latestReleaseDockerComposeOrPureDocker is only used by sourcegraph.com to tell existing Sourcegraph // Docker Compose or Pure Docker deployments what the latest version is. The version here _must_ be // available in a tag at https://github.com/sourcegraph/deploy-sourcegraph-docker before landing in master. - latestReleaseDockerComposeOrPureDocker = newPingResponse("5.2.2") + latestReleaseDockerComposeOrPureDocker = newPingResponse("5.2.3") // latestReleaseApp is only used by sourcegraph.com to tell existing Sourcegraph // App instances what the latest version is. The version here _must_ be available for download/released diff --git a/tools/release/schema_deps.bzl b/tools/release/schema_deps.bzl index 0d51e56e0335a..bdacb9492981c 100644 --- a/tools/release/schema_deps.bzl +++ b/tools/release/schema_deps.bzl @@ -8,6 +8,6 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file") def schema_deps(): http_file( name = "schemas_archive", - urls = ["https://storage.googleapis.com/schemas-migrations/dist/schemas-v5.2.2.tar.gz"], - sha256 = "a60fb3311e164eb4b3061e56f5049c4b6324ccb1a301065b1c773b3dd04d2334", + urls = ["https://storage.googleapis.com/schemas-migrations/dist/schemas-v5.2.3.tar.gz"], + sha256 = "c5aec72d528c0b3803070ccba58049c42f9b2618c9dba367dffe106d30f8f6fe", ) From cb068f3c98d7115014ff6ae6860dea560942a7db Mon Sep 17 00:00:00 2001 From: Varun Gandhi <varun.gandhi@sourcegraph.com> Date: Fri, 17 Nov 2023 14:50:04 +0800 Subject: [PATCH 058/222] build: Point to /search URL in help text (#58396) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Recently, the plain URL became the marketing site, so the previous message: ``` [web-standal...p] =================================================== [web-standal...p] [web-standal...p] āœ± Sourcegraph is really ready now! [web-standal...p] [web-standal...p] Click here: https://sourcegraph.test:3443 [web-standal...p] [web-standal...p] =================================================== ``` Would take you to an empty page, potentially leading one to the incorrect conclusion that something was wrong. --- client/web/dev/esbuild/server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/web/dev/esbuild/server.ts b/client/web/dev/esbuild/server.ts index b074f0ed92a7d..644e23aace287 100644 --- a/client/web/dev/esbuild/server.ts +++ b/client/web/dev/esbuild/server.ts @@ -68,7 +68,7 @@ export const esbuildDevelopmentServer = async ( return await new Promise<void>((_resolve, reject) => { proxyServer.once('listening', () => { signale.success(`esbuild server is ready after ${Math.round(performance.now() - start)}ms`) - printSuccessBanner(['āœ± Sourcegraph is really ready now!', `Click here: ${HTTPS_WEB_SERVER_URL}`]) + printSuccessBanner(['āœ± Sourcegraph is really ready now!', `Click here: ${HTTPS_WEB_SERVER_URL}/search`]) }) proxyServer.once('error', error => reject(error)) }) From 9b9bd4387ccd28453a695dfe3c84afd0e0909a75 Mon Sep 17 00:00:00 2001 From: Felix Kling <felix@felix-kling.de> Date: Fri, 17 Nov 2023 09:22:46 +0100 Subject: [PATCH 059/222] vitest: Fix workspace config wrt client/web/ (#58397) It appears that the workspace configuration is somehow broken because it doesn't include any tests defined in `client/web/src/`. This can be tested by filtering for a test inside this subtree, for example pnpm exec vitest RepoRevisionSidebar vitest will error saying it didn't find any tests. The list of projects it prints also doesn't include `web`. I don't know what exactly it is that makes it exclude `client/web/` but with the simpler version in this PR `client/web/` will be included. I removed `client/web/dev/` from the list because it will be included by `client/web/` too and seems to "just work" even though it has it's own configuration file. --- vitest.workspace.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/vitest.workspace.ts b/vitest.workspace.ts index 38bd39beb1dae..733c5ee5a7e06 100644 --- a/vitest.workspace.ts +++ b/vitest.workspace.ts @@ -1,18 +1,16 @@ -import { readFileSync, existsSync } from 'fs' +import { readFileSync } from 'fs' import path from 'path' -import glob from 'glob' import { load } from 'js-yaml' -import { defineWorkspace } from 'vitest/config' interface PnpmWorkspaceFile { packages: string[] } -const workspaceFile = load(readFileSync(path.join(__dirname, 'pnpm-workspace.yaml'), 'utf8')) as PnpmWorkspaceFile -workspaceFile.packages.push('client/web/dev') // is a tsconfig project but not a pnpm workspace package -const projectRoots = workspaceFile.packages - .flatMap(p => glob.sync(`${p}/`, { cwd: __dirname })) - .map(p => p.replace(/\/$/, '')) - .filter(dir => existsSync(path.join(dir, 'vitest.config.ts'))) -export default defineWorkspace(projectRoots) +function fromPnpmWorkspaceFile(filePath: string): string[] { + return (load(readFileSync(filePath, 'utf8')) as PnpmWorkspaceFile).packages.map(p => `${p}/vitest.config.ts`, { + cwd: __dirname, + }) +} + +export default fromPnpmWorkspaceFile(path.join(__dirname, 'pnpm-workspace.yaml')) From 80dfe159f349582ffbfce64cee9dec53bbd973a6 Mon Sep 17 00:00:00 2001 From: Thorsten Ball <mrnugget@gmail.com> Date: Fri, 17 Nov 2023 10:21:24 +0100 Subject: [PATCH 060/222] github star/size exclusion: incorporate feedback from code review (#58398) --- internal/bytesize/BUILD.bazel | 1 + internal/bytesize/bytesize.go | 22 +++++++++++++++------- internal/bytesize/bytesize_test.go | 5 ++++- internal/repos/exclude.go | 9 ++++++++- internal/repos/exclude_test.go | 3 +++ schema/github.schema.json | 2 +- schema/schema.go | 2 +- 7 files changed, 33 insertions(+), 11 deletions(-) diff --git a/internal/bytesize/BUILD.bazel b/internal/bytesize/BUILD.bazel index ec6648c2b4de9..a638a601eaca8 100644 --- a/internal/bytesize/BUILD.bazel +++ b/internal/bytesize/BUILD.bazel @@ -13,4 +13,5 @@ go_test( name = "bytesize_test", srcs = ["bytesize_test.go"], embed = [":bytesize"], + deps = ["@com_github_stretchr_testify//require"], ) diff --git a/internal/bytesize/bytesize.go b/internal/bytesize/bytesize.go index 57930a7a8e752..e9eb112036cf2 100644 --- a/internal/bytesize/bytesize.go +++ b/internal/bytesize/bytesize.go @@ -5,7 +5,6 @@ package bytesize import ( "strconv" "strings" - "unicode" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -39,7 +38,11 @@ const ( func Parse(str string) (Bytes, error) { str = strings.TrimSpace(str) - num, unitIndex := readNumber(str) + num, unitIndex, err := readNumber(str) + if err != nil { + return 0, errors.Newf("failed to parse %q into number: %s", str[:unitIndex], err) + } + if unitIndex == 0 { return 0, errors.Newf("missing number at start of string: %s", str) } @@ -57,17 +60,22 @@ func Parse(str string) (Bytes, error) { return result, nil } -func readNumber(str string) (int, int) { +func readNumber(str string) (int, int, error) { for i, c := range str { - if unicode.IsDigit(c) { + if isDigit(c) { continue } - number, _ := strconv.Atoi(str[0:i]) - return number, i + if i == 0 { + return 0, 0, nil + } + number, err := strconv.Atoi(str[0:i]) + return number, i, err } - return 0, 0 + return 0, 0, nil } +func isDigit(ch rune) bool { return '0' <= ch && ch <= '9' } + func parseUnit(unit string) (Bytes, error) { switch strings.TrimSpace(unit) { case "B", "b": diff --git a/internal/bytesize/bytesize_test.go b/internal/bytesize/bytesize_test.go index 01e1e51781f52..b0df5aa56577a 100644 --- a/internal/bytesize/bytesize_test.go +++ b/internal/bytesize/bytesize_test.go @@ -3,6 +3,8 @@ package bytesize import ( "fmt" "testing" + + "github.com/stretchr/testify/require" ) func TestParse(t *testing.T) { @@ -90,7 +92,8 @@ func TestReadNumber(t *testing.T) { } for _, tt := range tests { - num, numLen := readNumber(tt.input) + num, numLen, err := readNumber(tt.input) + require.NoError(t, err) if num != tt.want { t.Errorf("readNumber(%q) = %d, want %d", tt.input, num, tt.want) diff --git a/internal/repos/exclude.go b/internal/repos/exclude.go index d351c697e0f2d..299ea34805f10 100644 --- a/internal/repos/exclude.go +++ b/internal/repos/exclude.go @@ -164,7 +164,14 @@ func buildSizeConstraintsExcludeFn(constraint string) (gitHubExcludeFunc, error) } return func(r github.Repository) bool { - return operator.Eval(int(r.SizeBytes()), int(size)) + repoSize := int(r.SizeBytes()) + + // If we don't have a repository size, we don't exclude + if repoSize == 0 { + return false + } + + return operator.Eval(repoSize, int(size)) }, nil } diff --git a/internal/repos/exclude_test.go b/internal/repos/exclude_test.go index dd80caa1bac45..35c04e29244dc 100644 --- a/internal/repos/exclude_test.go +++ b/internal/repos/exclude_test.go @@ -93,6 +93,9 @@ func TestBuildGitHubExcludeRule(t *testing.T) { {"< 1 GB", 1024*1024 - 1, false}, {"< 2 GB", 1024 * 1024, true}, + + // Ignore repositories with 0 size + {"< 1 MB", 0, false}, } for _, tt := range tests { diff --git a/schema/github.schema.json b/schema/github.schema.json index 293b8533cbdf0..488ec90ba0d0a 100644 --- a/schema/github.schema.json +++ b/schema/github.schema.json @@ -136,7 +136,7 @@ "format": "regex" }, "size": { - "description": "If set, repositories with a size above the specified one will be excluded. Specify in kb.", + "description": "If set, repositories with a size above the specified one will be excluded.", "type": "string", "minLength": 2, "pattern": "^[<>]{1}[=]{0,1}\\s*\\d+\\s*\\w+$" diff --git a/schema/schema.go b/schema/schema.go index f9e61869547da..2b1503ab62f82 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -787,7 +787,7 @@ type ExcludedGitHubRepo struct { Name string `json:"name,omitempty"` // Pattern description: Regular expression which matches against the name of a GitHub repository ("owner/name"). Pattern string `json:"pattern,omitempty"` - // Size description: If set, repositories with a size above the specified one will be excluded. Specify in kb. + // Size description: If set, repositories with a size above the specified one will be excluded. Size string `json:"size,omitempty"` // Stars description: If set, repositories stars less than the specified number will be. Stars string `json:"stars,omitempty"` From 7b65b10d0758b4d0fa2b05defc87339287d5bcdb Mon Sep 17 00:00:00 2001 From: Mohammad Alam <mohammad.alam@sourcegraph.com> Date: Fri, 17 Nov 2023 06:08:26 -0500 Subject: [PATCH 061/222] finalizing release 5.2.3 (#58387) finalizing release --- CHANGELOG.md | 10 ++++++++++ dev/release/release-config.jsonc | 18 ------------------ 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c43c42868f79..b63c0f1c4443b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,16 @@ All notable changes to Sourcegraph are documented in this file. - The feature flag `search-ranking` is now completely removed. [#58156](https://github.com/sourcegraph/sourcegraph/pull/58156) - The notepad UI, notebook creation feature. [#58217](https://github.com/sourcegraph/sourcegraph/pull/58217) +## Unreleased 5.2.4 + +### Added + +### Fixed + +### Changed + +### Removed + ## 5.2.3 ### Added diff --git a/dev/release/release-config.jsonc b/dev/release/release-config.jsonc index 007914fe2f57b..4c09e4cdfd9da 100644 --- a/dev/release/release-config.jsonc +++ b/dev/release/release-config.jsonc @@ -22,14 +22,6 @@ "current": "5.2.0", "captainGitHubUsername": "unknwon", "captainSlackUsername": "joe" - }, - "5.2.3": { - "codeFreezeDate": "2023-11-08T10:00:00.000-08:00", - "securityApprovalDate": "2023-11-08T10:00:00.000-08:00", - "releaseDate": "2023-11-15T10:00:00.000-08:00", - "current": "5.2.3", - "captainGitHubUsername": "mohammadualam", - "captainSlackUsername": "mohammad.alam" } }, "dryRun": { @@ -38,15 +30,5 @@ "trackingIssues": false, "calendar": false, "slack": false - }, - "in_progress": { - "captainGitHubUsername": "mohammadualam", - "captainSlackUsername": "mohammad.alam", - "releases": [ - { - "version": "5.2.3", - "previous": "5.2.2" - } - ] } } \ No newline at end of file From 90992a1fa966afacd9dbeff29ec8f492c969a8be Mon Sep 17 00:00:00 2001 From: Felix Kling <felix@felix-kling.de> Date: Fri, 17 Nov 2023 13:20:23 +0100 Subject: [PATCH 062/222] repo: Show last commit information in file list (#58328) This commit changes the files panel to show the last commit message and date that changed the respective file. The commits panel is removed to avoid confusion and unnecessarily duplicating information. --- CHANGELOG.md | 1 + client/shared/src/backend/apolloCache.ts | 2 + client/web/src/integration/repository.test.ts | 244 +++---------- client/web/src/repo/tree/TreePage.tsx | 33 +- .../src/repo/tree/TreePageContent.module.scss | 15 +- client/web/src/repo/tree/TreePageContent.tsx | 276 +-------------- .../src/repo/tree/TreePagePanels.module.scss | 94 +++-- client/web/src/repo/tree/TreePagePanels.tsx | 320 +++++------------- 8 files changed, 225 insertions(+), 760 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b63c0f1c4443b..f6de8481d3b10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ All notable changes to Sourcegraph are documented in this file. - The setting `experimentalFeatures.searchQueryInput` now refers to the new query input as `v2` (not `experimental`). <!-- NOTE: If v2 becomes the default before this release is cut, then update this entry to mention that instead of adding a separate entry. --> - Search-based code intel doesn't include the currently selected search context anymore. It was possible to get into a situation where search-based code intel wouldn't find any information due to being restricted by the current search context. [#58010](https://github.com/sourcegraph/sourcegraph/pull/58010) +- The last commit which changed a file/directory is now shown in the files panel on the repo and file pages. To avoid duplicating information and confusion, the commits panel was removed. [58328](https://github.com/sourcegraph/sourcegraph/pull/58328) ### Fixed diff --git a/client/shared/src/backend/apolloCache.ts b/client/shared/src/backend/apolloCache.ts index dc6396126190a..3861fedbf484e 100644 --- a/client/shared/src/backend/apolloCache.ts +++ b/client/shared/src/backend/apolloCache.ts @@ -35,6 +35,8 @@ export const generateCache = (): InMemoryCache => Changeset: ['ExternalChangeset', 'HiddenExternalChangeset'], TeamMember: ['User'], Owner: ['Person', 'Team'], + TreeEntry: ['GitBlob', 'GitTree'], + File2: ['GitBlob', 'VirtualFile'], }, }) diff --git a/client/web/src/integration/repository.test.ts b/client/web/src/integration/repository.test.ts index 1170f959a8778..dfa3a5d8ae3c1 100644 --- a/client/web/src/integration/repository.test.ts +++ b/client/web/src/integration/repository.test.ts @@ -43,20 +43,6 @@ export const getCommonRepositoryGraphQlResults = ( FileExternalLinks: ({ filePath }) => createFileExternalLinksResult(filePath), TreeEntries: () => createTreeEntriesResult(repositoryUrl, fileEntries), FileTreeEntries: () => createFileTreeEntriesResult(repositoryUrl, fileEntries), - TreeCommits: () => ({ - node: { - __typename: 'Repository', - sourceType: RepositoryType.GIT_REPOSITORY, - externalURLs: [ - { - __typename: 'ExternalLink', - serviceKind: ExternalServiceKind.GITHUB, - url: 'https://' + repositoryName, - }, - ], - commit: { ancestors: { nodes: [], pageInfo: { hasNextPage: false, endCursor: null } } }, - }, - }), Blob: ({ filePath }) => createBlobContentResult(`content for: ${filePath}\nsecond line\nthird line`), }) @@ -101,196 +87,66 @@ describe('Repository', () => { testContext.overrideGraphQL({ ...commonWebGraphQlResults, ...getCommonRepositoryGraphQlResults(repositoryName, repositorySourcegraphUrl, fileEntries), - TreeCommits: () => ({ - node: { + FileCommits: () => ({ + repository: { __typename: 'Repository', - sourceType: RepositoryType.GIT_REPOSITORY, - externalURLs: [ - { - __typename: 'ExternalLink', - serviceKind: ExternalServiceKind.GITHUB, - url: 'https://' + repositoryName, - }, - ], + id: repositoryName, commit: { - ancestors: { - nodes: [ - { - __typename: 'GitCommit', - id: 'CommitID1', - oid: '15c2290dcb37731cc4ee5a2a1c1e5a25b4c28f81', - abbreviatedOID: '15c2290', - perforceChangelist: null, - message: 'update LSIF indexing CI workflow\n', - subject: 'update LSIF indexing CI workflow', - body: null, - author: { - __typename: 'Signature', - person: { - avatarURL: '', - name: 'garo (they/them)', - email: 'gbrik@users.noreply.github.com', - displayName: 'garo (they/them)', - user: null, - }, - date: '2020-04-29T18:40:54Z', - }, - committer: { - __typename: 'Signature', - person: { - avatarURL: '', - name: 'GitHub', - email: 'noreply@github.com', - displayName: 'GitHub', - user: null, - }, - date: '2020-04-29T18:40:54Z', - }, - parents: [ - { - oid: '96c4efab7ee28f3d1cf1d248a0139cea37368b18', - abbreviatedOID: '96c4efa', - perforceChangelist: null, - url: '/github.com/sourcegraph/jsonrpc2/-/commit/96c4efab7ee28f3d1cf1d248a0139cea37368b18', - }, - { - oid: '9e615b1c32cc519130575e8d10d0d0fee8a5eb6c', - abbreviatedOID: '9e615b1', - perforceChangelist: null, - url: '/github.com/sourcegraph/jsonrpc2/-/commit/9e615b1c32cc519130575e8d10d0d0fee8a5eb6c', - }, - ], - url: commitUrl, - canonicalURL: commitUrl, - externalURLs: [ - { - url: 'https://github.com/sourcegraph/jsonrpc2/commit/15c2290dcb37731cc4ee5a2a1c1e5a25b4c28f81', - serviceKind: ExternalServiceKind.GITHUB, - }, - ], - tree: { - canonicalURL: - '/github.com/sourcegraph/jsonrpc2@15c2290dcb37731cc4ee5a2a1c1e5a25b4c28f81', - }, - }, - { - __typename: 'GitCommit', - id: 'CommitID2', - oid: '9e615b1c32cc519130575e8d10d0d0fee8a5eb6c', - abbreviatedOID: '9e615b1', - perforceChangelist: null, - message: 'LSIF Indexing Campaign', - subject: 'LSIF Indexing Campaign', - body: null, - author: { - __typename: 'Signature', - person: { - avatarURL: '', - name: 'Sourcegraph Bot', - email: 'batch-changes@sourcegraph.com', - displayName: 'Sourcegraph Bot', - user: null, - }, - date: '2020-04-29T16:57:20Z', - }, - committer: { - __typename: 'Signature', - person: { - avatarURL: '', - name: 'Sourcegraph Bot', - email: 'batch-changes@sourcegraph.com', - displayName: 'Sourcegraph Bot', - user: null, - }, - date: '2020-04-29T16:57:20Z', - }, - parents: [ - { - oid: '96c4efab7ee28f3d1cf1d248a0139cea37368b18', - abbreviatedOID: '96c4efa', - perforceChangelist: null, - url: '/github.com/sourcegraph/jsonrpc2/-/commit/96c4efab7ee28f3d1cf1d248a0139cea37368b18', - }, - ], - url: '/github.com/sourcegraph/jsonrpc2/-/commit/9e615b1c32cc519130575e8d10d0d0fee8a5eb6c', - canonicalURL: - '/github.com/sourcegraph/jsonrpc2/-/commit/9e615b1c32cc519130575e8d10d0d0fee8a5eb6c', - externalURLs: [ + __typename: 'GitCommit', + id: '1', + tree: { + __typename: 'GitTree', + entries: fileEntries.map((fileName, index) => ({ + __typename: 'GitBlob', + path: fileName, + history: { + __typename: 'TreeEntryConnection', + nodes: [ { - url: 'https://github.com/sourcegraph/jsonrpc2/commit/9e615b1c32cc519130575e8d10d0d0fee8a5eb6c', - serviceKind: ExternalServiceKind.GITHUB, - }, - ], - tree: { - canonicalURL: - '/github.com/sourcegraph/jsonrpc2@9e615b1c32cc519130575e8d10d0d0fee8a5eb6c', - }, - }, - { - __typename: 'GitCommit', - id: 'CommitID3', - oid: '96c4efab7ee28f3d1cf1d248a0139cea37368b18', - abbreviatedOID: '96c4efa', - perforceChangelist: null, - message: - 'Produce LSIF data for each commit for fast/precise code nav (#35)\n\n* Produce LSIF data for each commit for fast/precise code nav\r\n\r\n* Update lsif.yml\r', - subject: 'Produce LSIF data for each commit for fast/precise code nav (#35)', - body: '* Produce LSIF data for each commit for fast/precise code nav\r\n\r\n* Update lsif.yml', - author: { - __typename: 'Signature', - person: { - avatarURL: '', - name: 'Quinn Slack', - email: 'qslack@qslack.com', - displayName: 'Quinn Slack', - user: { - id: 'VXNlcjo2', - username: 'sqs', - url: '/users/sqs', - displayName: 'sqs', + __typename: 'GitBlob', + commit: { + __typename: 'GitCommit', + id: '1', + author: { + __typename: 'Signature', + person: { + avatarURL: '', + name: 'Sourcegraph Bot', + email: 'batch-changes@sourcegraph.com', + displayName: 'Sourcegraph Bot', + user: null, + }, + date: '2020-04-29T16:57:20Z', + }, + committer: { + __typename: 'Signature', + person: { + avatarURL: '', + name: 'Sourcegraph Bot', + email: 'batch-changes@sourcegraph.com', + displayName: 'Sourcegraph Bot', + user: null, + }, + date: '2020-04-29T16:57:20Z', + }, + subject: 'update LSIF indexing CI workflow', + canonicalURL: commitUrl, + externalURLs: [ + { + url: 'https://github.com/sourcegraph/jsonrpc2/commit/15c2290dcb37731cc4ee5a2a1c1e5a25b4c28f81', + serviceKind: ExternalServiceKind.GITHUB, + }, + ], }, }, - date: '2019-12-22T04:34:38Z', - }, - committer: { - __typename: 'Signature', - person: { - avatarURL: '', - name: 'GitHub', - email: 'noreply@github.com', - displayName: 'GitHub', - user: null, - }, - date: '2019-12-22T04:34:38Z', - }, - parents: [ - { - oid: 'cee7209801bf50cee868f8e0696ba0b76ae21792', - abbreviatedOID: 'cee7209', - perforceChangelist: null, - url: '/github.com/sourcegraph/jsonrpc2/-/commit/cee7209801bf50cee868f8e0696ba0b76ae21792', - }, ], - url: '/github.com/sourcegraph/jsonrpc2/-/commit/96c4efab7ee28f3d1cf1d248a0139cea37368b18', - canonicalURL: - '/github.com/sourcegraph/jsonrpc2/-/commit/96c4efab7ee28f3d1cf1d248a0139cea37368b18', - externalURLs: [ - { - url: 'https://github.com/sourcegraph/jsonrpc2/commit/96c4efab7ee28f3d1cf1d248a0139cea37368b18', - serviceKind: ExternalServiceKind.GITHUB, - }, - ], - tree: { - canonicalURL: - '/github.com/sourcegraph/jsonrpc2@96c4efab7ee28f3d1cf1d248a0139cea37368b18', - }, }, - ], - pageInfo: { __typename: 'PageInfo', hasNextPage: false, endCursor: 'abc' }, + })), }, }, }, }), + RepositoryCommit: () => ({ node: { __typename: 'Repository', @@ -462,7 +318,7 @@ describe('Repository', () => { await driver.assertWindowLocation(repositorySourcegraphUrl) await driver.findElementWithText(clickedCommit, { - selector: '[data-testid="git-commit-node-oid"]', + selector: '[data-testid="git-commit-message-with-links"] a', action: 'click', }) await driver.page.waitForSelector('[data-testid="repository-commit-page"]') diff --git a/client/web/src/repo/tree/TreePage.tsx b/client/web/src/repo/tree/TreePage.tsx index 0a48653e2cd0c..c4c32d6b5f68f 100644 --- a/client/web/src/repo/tree/TreePage.tsx +++ b/client/web/src/repo/tree/TreePage.tsx @@ -18,7 +18,7 @@ import { Navigate } from 'react-router-dom' import { catchError } from 'rxjs/operators' import { asError, encodeURIPathComponent, type ErrorLike, isErrorLike, logger, basename } from '@sourcegraph/common' -import { gql } from '@sourcegraph/http-client' +import { gql, useQuery } from '@sourcegraph/http-client' import { fetchTreeEntries } from '@sourcegraph/shared/src/backend/repo' import { displayRepoName } from '@sourcegraph/shared/src/components/RepoLink' import type { ExtensionsControllerProps } from '@sourcegraph/shared/src/extensions/controller' @@ -49,7 +49,7 @@ import type { CodeIntelligenceProps } from '../../codeintel' import { isCodyEnabled } from '../../cody/isCodyEnabled' import type { BreadcrumbSetters } from '../../components/Breadcrumbs' import { PageTitle } from '../../components/PageTitle' -import type { RepositoryFields } from '../../graphql-operations' +import type { FileCommitsResult, FileCommitsVariables, RepositoryFields } from '../../graphql-operations' import type { SourcegraphContext } from '../../jscontext' import type { OwnConfigProps } from '../../own/OwnConfigProps' import { TryCodyWidget } from '../components/TryCodyWidget/TryCodyWidget' @@ -57,9 +57,26 @@ import { FilePathBreadcrumbs } from '../FilePathBreadcrumbs' import { isPackageServiceType } from '../packages/isPackageServiceType' import { TreePageContent } from './TreePageContent' +import { treeHistoryFragment } from './TreePagePanels' import styles from './TreePage.module.scss' +const FILE_COMMITS_QUERY = gql` + ${treeHistoryFragment} + query FileCommits($repoName: String!, $revision: String!, $filePath: String!, $first: Int) { + repository(name: $repoName) { + id + commit(rev: $revision) { + id + tree(path: $filePath) { + entries(first: $first) { + ...TreeHistoryFields + } + } + } + } + } +` export interface Props extends SettingsCascadeProps<Settings>, ExtensionsControllerProps, @@ -119,7 +136,6 @@ export const TreePage: FC<Props> = ({ () => isPackageServiceType(repo?.externalRepository.serviceType), [repo?.externalRepository.serviceType] ) - useEffect(() => { if (isRoot) { props.telemetryService.logViewEvent('Repository') @@ -166,6 +182,16 @@ export const TreePage: FC<Props> = ({ ) ) + const { data: fileCommitData } = useQuery<FileCommitsResult, FileCommitsVariables>(FILE_COMMITS_QUERY, { + variables: { + repoName, + revision, + filePath, + first: 2500, + }, + }) + const treeWithHistory = fileCommitData?.repository?.commit?.tree?.entries + const showCodeInsights = !isErrorLike(settingsCascade.final) && !!settingsCascade.final?.experimentalFeatures?.codeInsights && @@ -402,6 +428,7 @@ export const TreePage: FC<Props> = ({ <TreePageContent filePath={filePath} tree={treeOrError} + treeWithHistory={treeWithHistory} repo={repo} revision={revision} commitID={commitID} diff --git a/client/web/src/repo/tree/TreePageContent.module.scss b/client/web/src/repo/tree/TreePageContent.module.scss index 1c138db68cf7f..495fee0b4aa1f 100644 --- a/client/web/src/repo/tree/TreePageContent.module.scss +++ b/client/web/src/repo/tree/TreePageContent.module.scss @@ -14,8 +14,7 @@ @media (--md-breakpoint-down) { grid-template-areas: 'files files files' - 'contributors contributors contributors' - 'commits commits commits'; + 'contributors contributors contributors'; } } @@ -23,10 +22,6 @@ grid-area: files; } -.commits { - grid-area: commits; -} - .contributors { grid-area: contributors; align-self: start; @@ -42,14 +37,6 @@ border-top: 1px solid var(--border-color); } -.git-commit-node { - padding: 0.25rem 0; - - &-message-subject { - font-weight: normal; - } -} - .table { table-layout: fixed; } diff --git a/client/web/src/repo/tree/TreePageContent.tsx b/client/web/src/repo/tree/TreePageContent.tsx index 98b87d99dd793..bd442f744c957 100644 --- a/client/web/src/repo/tree/TreePageContent.tsx +++ b/client/web/src/repo/tree/TreePageContent.tsx @@ -1,26 +1,22 @@ -import React, { useEffect, useMemo, useState } from 'react' +import React, { useMemo } from 'react' import { mdiCog, mdiFileOutline, mdiGlasses, mdiInformationOutline } from '@mdi/js' import classNames from 'classnames' -import { formatISO, subYears } from 'date-fns' -import { capitalize, escapeRegExp } from 'lodash' -import type { Observable } from 'rxjs' -import { catchError, map, switchMap } from 'rxjs/operators' +import { escapeRegExp } from 'lodash' import { RepoMetadata } from '@sourcegraph/branded' import { encodeURIPathComponent, numberWithCommas, pluralize } from '@sourcegraph/common' -import { dataOrThrowErrors, gql, useQuery } from '@sourcegraph/http-client' +import { gql, useQuery } from '@sourcegraph/http-client' import { TeamAvatar } from '@sourcegraph/shared/src/components/TeamAvatar' import { UserAvatar } from '@sourcegraph/shared/src/components/UserAvatar' import type { ExtensionsControllerProps } from '@sourcegraph/shared/src/extensions/controller' -import { RepositoryType, SearchPatternType, type TreeFields } from '@sourcegraph/shared/src/graphql-operations' +import { SearchPatternType, type TreeFields } from '@sourcegraph/shared/src/graphql-operations' import type { PlatformContextProps } from '@sourcegraph/shared/src/platform/context' import type { TelemetryProps } from '@sourcegraph/shared/src/telemetry/telemetryService' import { buildSearchURLQuery } from '@sourcegraph/shared/src/util/url' import { Badge, ButtonLink, Card, CardHeader, Icon, Link, Text, Tooltip } from '@sourcegraph/wildcard' import type { AuthenticatedUser } from '../../auth' -import { requestGraphQL } from '../../backend/graphql' import { ConnectionContainer, ConnectionError, @@ -31,14 +27,7 @@ import { } from '../../components/FilteredConnection/ui' import { useFeatureFlag } from '../../featureFlags/useFeatureFlag' import type { - CommitAtTimeResult, - CommitAtTimeVariables, - DiffSinceResult, - DiffSinceVariables, - GitCommitFields, - Scalars, - TreeCommitsResult, - TreeCommitsVariables, + TreeHistoryFields, TreePageOwnershipNodeFields, TreePageOwnershipResult, TreePageOwnershipVariables, @@ -52,11 +41,9 @@ import { quoteIfNeeded, searchQueryForRepoRevision } from '../../search' import { buildSearchURLQueryFromQueryState, useNavbarQueryState } from '../../stores' import { canWriteRepoMetadata } from '../../util/rbac' import { OWNER_FIELDS, RECENT_CONTRIBUTOR_FIELDS, RECENT_VIEW_FIELDS } from '../blob/own/grapqlQueries' -import { GitCommitNodeTableRow } from '../commits/GitCommitNodeTableRow' -import { gitCommitFragment } from '../commits/RepositoryCommitsPage' -import { getRefType, isPerforceChangelistMappingEnabled } from '../utils' +import { getRefType } from '../utils' -import { type DiffStat, FilesCard, ReadmePreviewCard } from './TreePagePanels' +import { FilesCard, ReadmePreviewCard } from './TreePagePanels' import styles from './TreePageContent.module.scss' import contributorsStyles from './TreePageContentContributors.module.scss' @@ -64,123 +51,6 @@ import panelStyles from './TreePagePanels.module.scss' const COUNT = 20 -export interface TreeCommitsResponse { - ancestors: NonNullable<Extract<TreeCommitsResult['node'], { __typename: 'Repository' }>['commit']>['ancestors'] - externalURLs: Extract<TreeCommitsResult['node'], { __typename: 'Repository' }>['externalURLs'] -} - -export const fetchCommit = (args: { - repo: Scalars['String'] - revspec: Scalars['String'] - beforespec: Scalars['String'] | null -}): Observable<GitCommitFields> => - requestGraphQL<CommitAtTimeResult, CommitAtTimeVariables>( - gql` - query CommitAtTime($repo: String!, $revspec: String!, $beforespec: String) { - repository(name: $repo) { - commit(rev: $revspec) { - ancestors(first: 1, before: $beforespec) { - nodes { - ...GitCommitFields - } - } - } - } - } - ${gitCommitFragment} - `, - args - ).pipe( - map(dataOrThrowErrors), - map(data => { - const nodes = data.repository?.commit?.ancestors.nodes - if (!nodes || nodes.length === 0) { - throw new Error(`no commit found before ${args.beforespec} from revspec ${args.revspec}`) - } - return nodes[0] - }) - ) - -export const fetchDiffStats = (args: { - repo: Scalars['String'] - revspec: Scalars['String'] - beforespec: Scalars['String'] - filePath: Scalars['String'] -}): Observable<DiffStat[]> => - fetchCommit({ - repo: args.repo, - revspec: args.revspec, - beforespec: null, - }).pipe( - switchMap(headCommit => { - const headDate = new Date(Date.parse(headCommit.author.date)) - const absBeforespec = `${headDate.getUTCFullYear()}-${ - headDate.getUTCMonth() + 1 - }-${headDate.getUTCDate()} ${args.beforespec}` - return fetchCommit({ - repo: args.repo, - revspec: args.revspec, - beforespec: absBeforespec, - }) - }), - switchMap((base: GitCommitFields) => - requestGraphQL<DiffSinceResult, DiffSinceVariables>( - gql` - query DiffSince($repo: String!, $basespec: String!, $headspec: String!, $filePath: String!) { - repository(name: $repo) { - comparison(base: $basespec, head: $headspec) { - fileDiffs(paths: [$filePath]) { - nodes { - newPath - stat { - added - deleted - } - } - } - } - } - } - `, - { - repo: args.repo, - basespec: base.oid, - headspec: args.revspec, - filePath: args.filePath, - } - ) - ), - map(dataOrThrowErrors), - map( - (data): DiffStat[] => - data.repository?.comparison.fileDiffs.nodes - ?.filter(node => node.newPath) - .map(node => ({ - path: node.newPath!, - ...node.stat, - })) || [] - ), - map((fileDiffStats: DiffStat[]) => { - const aggregatedDiffStats: { [path: string]: DiffStat } = {} - for (const diffStat of fileDiffStats) { - // strip filePath prefix from fileDiffStat.path - const strippedPath = - args.filePath === '.' ? diffStat.path : diffStat.path.slice(args.filePath.length + 1) - let subdirName = strippedPath - if (subdirName.includes('/')) { - subdirName = subdirName.slice(0, subdirName.indexOf('/')) - } - if (!aggregatedDiffStats[subdirName]) { - aggregatedDiffStats[subdirName] = { path: subdirName, added: 0, deleted: 0 } - } - aggregatedDiffStats[subdirName].added += diffStat.added - aggregatedDiffStats[subdirName].deleted += diffStat.deleted - } - return Array.from(Object.values(aggregatedDiffStats)) - }), - catchError(() => []) // ignore errors - ) - const ExtraInfoSectionItem: React.FunctionComponent<React.PropsWithChildren<{}>> = ({ children }) => ( <div className={styles.extraInfoSectionItem}>{children}</div> ) @@ -271,6 +141,7 @@ const ExtraInfoSection: React.FC<{ interface TreePageContentProps extends ExtensionsControllerProps, TelemetryProps, PlatformContextProps { filePath: string tree: TreeFields + treeWithHistory?: TreeHistoryFields[] repo: TreePageRepositoryFields commitID: string revision: string @@ -279,7 +150,7 @@ interface TreePageContentProps extends ExtensionsControllerProps, TelemetryProps } export const TreePageContent: React.FunctionComponent<React.PropsWithChildren<TreePageContentProps>> = props => { - const { filePath, tree, repo, revision, isPackage } = props + const { filePath, tree, treeWithHistory, repo, revision, isPackage } = props const isRoot = filePath === '' @@ -293,19 +164,6 @@ export const TreePageContent: React.FunctionComponent<React.PropsWithChildren<Tr return null }, [tree.entries]) - const [diffStats, setDiffStats] = useState<DiffStat[]>() - useEffect(() => { - const subscription = fetchDiffStats({ - repo: repo.name, - revspec: revision, - beforespec: '1 month', - filePath: filePath || '.', - }).subscribe(results => { - setDiffStats(results) - }) - return () => subscription.unsubscribe() - }, [repo.name, revision, filePath]) - const [enableOwnershipPanels] = useFeatureFlag('enable-ownership-panels', true) const hasRepoMetaWritePermissions = canWriteRepoMetadata(props.authenticatedUser) @@ -331,16 +189,7 @@ export const TreePageContent: React.FunctionComponent<React.PropsWithChildren<Tr </section> )} <section className={classNames('test-tree-entries container mb-3 px-0', styles.section)}> - <FilesCard diffStats={diffStats} entries={tree.entries} className={styles.files} filePath={filePath} /> - - {!isPackage && ( - <Card className={styles.commits}> - <CardHeader className={panelStyles.cardColHeaderWrapper}> - {capitalize(pluralize(getRefType(repo.sourceType), 0))} - </CardHeader> - <Commits {...props} /> - </Card> - )} + <FilesCard historyEntries={treeWithHistory} entries={tree.entries} className={styles.files} /> {!isPackage && ( <div className={styles.contributors}> @@ -702,108 +551,3 @@ const RepositoryContributorNode: React.FC<RepositoryContributorNodeProps> = ({ </tr> ) } - -const COMMITS_QUERY = gql` - query TreeCommits($repo: ID!, $revspec: String!, $first: Int, $filePath: String, $after: String) { - node(id: $repo) { - __typename - ... on Repository { - sourceType - externalURLs { - url - serviceKind - } - commit(rev: $revspec) { - ancestors(first: $first, path: $filePath, after: $after) { - nodes { - ...GitCommitFields - } - pageInfo { - hasNextPage - } - } - } - } - } - } - ${gitCommitFragment} -` - -interface CommitsProps extends TreePageContentProps {} - -const Commits: React.FC<CommitsProps> = ({ repo, revision, filePath, tree }) => { - const after: string = useMemo(() => formatISO(subYears(Date.now(), 1)), []) - const { data, error, loading } = useQuery<TreeCommitsResult, TreeCommitsVariables>(COMMITS_QUERY, { - variables: { - first: COUNT, - repo: repo.id, - revspec: revision || '', - after, - filePath, - }, - errorPolicy: 'all', - }) - - const node = data?.node && data?.node.__typename === 'Repository' ? data.node : null - const connection = node?.commit?.ancestors - - const revisionType = - isPerforceChangelistMappingEnabled() && node?.sourceType === RepositoryType.PERFORCE_DEPOT - ? '/-/changelists' - : '/-/commits' - - let revisionURL = tree.url - if (tree.url.includes('/-/tree')) { - revisionURL = revisionURL.replace('/-/tree', revisionType) - } else { - revisionURL = revisionURL + revisionType - } - - return ( - <ConnectionContainer> - {error && <ConnectionError errors={[error.message]} />} - {connection && connection.nodes.length > 0 && ( - <ConnectionList className={classNames('test-commits-connection', styles.table)} as="table"> - <tbody> - {connection.nodes.map(node => ( - <GitCommitNodeTableRow - key={node.id} - node={node} - className={styles.gitCommitNode} - messageSubjectClassName={styles.gitCommitNodeMessageSubject} - compact={true} - /> - ))} - </tbody> - </ConnectionList> - )} - {loading && ( - <div className={contributorsStyles.filteredConnectionLoading}> - <ConnectionLoading /> - </div> - )} - <SummaryContainer className={styles.tableSummary}> - {connection && ( - <> - <small className="text-muted"> - <span> - {connection.nodes.length > 0 ? ( - <> - Showing last {connection.nodes.length}{' '} - {pluralize(getRefType(node.sourceType), connection.nodes.length)} of the past - year - </> - ) : ( - <>No {pluralize(getRefType(node.sourceType), 0)} in the past year</> - )} - </span> - </small> - <small> - <Link to={revisionURL}>Show {connection.pageInfo.hasNextPage ? 'more' : 'all'}</Link> - </small> - </> - )} - </SummaryContainer> - </ConnectionContainer> - ) -} diff --git a/client/web/src/repo/tree/TreePagePanels.module.scss b/client/web/src/repo/tree/TreePagePanels.module.scss index 51ed930ef1364..30240b5f504e2 100644 --- a/client/web/src/repo/tree/TreePagePanels.module.scss +++ b/client/web/src/repo/tree/TreePagePanels.module.scss @@ -48,69 +48,51 @@ } } -.file-item { - border-bottom: 1px solid var(--border-color); - - &:last-child { - border-bottom: none; +table.files { + width: 100%; + table-layout: fixed; + border-collapse: separate; + border-spacing: 0; + margin-bottom: 0; + // This is necessary to override the 'display:' property set by + // the Card component. + display: table; + + th { + padding: 0.5rem; + font-weight: normal; + box-sizing: content-box; } -} - -.card-col-header { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.bar-svg { - border-radius: 5px; -} - -.diff-stat-added { - fill: var(--diff-add-fg); -} -.diff-stat-deleted { - fill: var(--diff-remove-fg); -} - -.meter-container { - padding-top: 0.125rem; -} - -.tree-entry { - display: block; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - - margin-left: -0.25rem; - margin-right: -0.25rem; - padding: 0.125rem 0.25rem; - - break-inside: avoid-column; + td { + padding: 0.5rem; + } - &:hover { - background-color: var(--color-bg-1); + .file-name-column { + width: 30%; } - &--no-columns { - max-width: 18rem; + .commit-date-column { + /* stylelint-disable-next-line declaration-property-unit-allowed-list */ + width: 120px; } -} -.sort-dsc-icon { - padding: 0; - margin: -0.125rem 0 0 0; - color: var(--icon-muted); -} + th, + .file-name, + .commit-message, + .commit-date { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + max-width: 100%; + } -.sort-asc-icon { - padding: 0; - margin: -0.625rem 0 0 0; - color: var(--icon-muted); -} + .commit-date, + .commit-date-column { + text-align: right; + } -.sort-selected-icon { - color: var(--icon-color); + tbody td { + border-top: 1px solid var(--border-color); + } } diff --git a/client/web/src/repo/tree/TreePagePanels.tsx b/client/web/src/repo/tree/TreePagePanels.tsx index baeb54f0902ed..741b9b91c952f 100644 --- a/client/web/src/repo/tree/TreePagePanels.tsx +++ b/client/web/src/repo/tree/TreePagePanels.tsx @@ -1,10 +1,12 @@ -import React, { type FC, useCallback, useRef, useState, useEffect } from 'react' +import React, { type FC, useRef, useState, useEffect, useMemo } from 'react' -import { mdiFileDocumentOutline, mdiFolderOutline, mdiMenuDown, mdiMenuUp } from '@mdi/js' +import { mdiFileDocumentOutline, mdiFolderOutline } from '@mdi/js' import classNames from 'classnames' +import { Timestamp } from '@sourcegraph/branded/src/components/Timestamp' import { NoopEditor } from '@sourcegraph/cody-shared/dist/editor' import { basename } from '@sourcegraph/common' +import { gql } from '@sourcegraph/http-client' import type { TreeFields } from '@sourcegraph/shared/src/graphql-operations' import { Card, @@ -14,20 +16,43 @@ import { Link, LinkOrSpan, LoadingSpinner, - ParentSize, - StackedMeter, - Tooltip, useElementObscuredArea, } from '@sourcegraph/wildcard' import { FileContentEditor } from '../../cody/components/FileContentEditor' import { useCodySidebar } from '../../cody/sidebar/Provider' -import type { BlobFileFields } from '../../graphql-operations' +import type { BlobFileFields, TreeHistoryFields } from '../../graphql-operations' import { fetchBlob } from '../blob/backend' import { RenderedFile } from '../blob/RenderedFile' +import { CommitMessageWithLinks } from '../commit/CommitMessageWithLinks' import styles from './TreePagePanels.module.scss' +export const treeHistoryFragment = gql` + fragment TreeHistoryFields on TreeEntry { + path + history(first: 1) { + nodes { + commit { + id + canonicalURL + subject + author { + date + } + committer { + date + } + externalURLs { + url + serviceKind + } + } + } + } + } +` + interface ReadmePreviewCardProps { entry: TreeFields['entries'][number] repoName: string @@ -123,246 +148,87 @@ export interface DiffStat { export interface FilePanelProps { entries: Pick<TreeFields['entries'][number], 'name' | 'url' | 'isDirectory' | 'path'>[] - diffStats?: DiffStat[] + historyEntries?: TreeHistoryFields[] className?: string - filePath: string } -export const FilesCard: FC<FilePanelProps> = props => { - const { entries, diffStats, className } = props - - const [sortColumn, setSortColumn] = useState<{ - column: 'Files' | 'Activity' - direction: 'asc' | 'desc' - }>({ column: 'Files', direction: 'asc' }) - - const diffStatsByPath: { [path: string]: DiffStat } = {} - let maxLinesChanged = 1 - if (diffStats) { - for (const diffStat of diffStats) { - if (diffStat.added + diffStat.deleted > maxLinesChanged) { - maxLinesChanged = diffStat.added + diffStat.deleted - } - diffStatsByPath[diffStat.path] = diffStat +export const FilesCard: FC<FilePanelProps> = ({ entries, historyEntries, className }) => { + const hasHistoryEntries = historyEntries && historyEntries.length > 0 + const fileHistoryByPath = useMemo(() => { + const fileHistoryByPath: Record<string, TreeHistoryFields['history']['nodes'][number]['commit']> = {} + for (const entry of historyEntries || []) { + fileHistoryByPath[entry.path] = entry.history.nodes[0].commit } - } - - let sortedEntries = [...entries] - const { column, direction } = sortColumn - switch (column) { - case 'Files': { - if (direction === 'desc') { - entries.reverse() - } - break - } - case 'Activity': { - sortedEntries = [...entries] - if (diffStats) { - sortedEntries.sort((entry1, entry2) => { - const stats1: DiffStat = diffStatsByPath[entry1.name] - const stats2: DiffStat = diffStatsByPath[entry2.name] - let difference = - (stats2 ? stats2.added + stats2.deleted : 0) - (stats1 ? stats1.added + stats1.deleted : 0) - if (direction === 'desc') { - difference *= -1 - } - return difference - }) - } - break - } - } - - const sortCallback = useCallback( - (column: 'Files' | 'Activity'): void => { - if (sortColumn.column === column && sortColumn.direction === 'asc') { - setSortColumn({ column, direction: 'desc' }) - } else { - setSortColumn({ column, direction: 'asc' }) - } - }, - [sortColumn] - ) - const clickFiles = useCallback(() => sortCallback('Files'), [sortCallback]) - const keydownFiles = useCallback( - ({ key }: React.KeyboardEvent<HTMLDivElement>) => key === 'Enter' && sortCallback('Files'), - [sortCallback] - ) - const clickActivity = useCallback(() => sortCallback('Activity'), [sortCallback]) - const keydownActivity = useCallback( - ({ key }: React.KeyboardEvent<HTMLDivElement>) => key === 'Enter' && sortCallback('Activity'), - [sortCallback] - ) - - interface Datum { - name: 'deleted' | 'added' - value: number - className: string - } - - const getDatumValue = useCallback((datum: Datum) => datum.value, []) - const getDatumName = useCallback((datum: Datum) => datum.name, []) - const getDatumClassName = useCallback((datum: Datum) => datum.className, []) + return fileHistoryByPath + }, [historyEntries]) return ( - <Card className={className}> - <CardHeader className={styles.cardColHeaderWrapper}> - <div className="container-fluid px-2"> - <div className="row"> - <div - role="button" - tabIndex={0} - onClick={clickFiles} - onKeyDown={keydownFiles} - className={classNames('d-flex flex-row align-items-start col-9 px-2', styles.cardColHeader)} - > - Files - <div className="flex-shrink-1 d-flex flex-column"> - <Icon - aria-label="Sort ascending" - svgPath={mdiMenuUp} - className={classNames( - styles.sortDscIcon, - sortColumn.column === 'Files' && - sortColumn.direction === 'desc' && - styles.sortSelectedIcon - )} - /> - <Icon - aria-label="Sort descending" - svgPath={mdiMenuDown} - className={classNames( - styles.sortAscIcon, - sortColumn.column === 'Files' && - sortColumn.direction === 'asc' && - styles.sortSelectedIcon - )} - /> - </div> - </div> - <div - title="1 month activity" - role="button" - tabIndex={0} - onClick={clickActivity} - onKeyDown={keydownActivity} - className={classNames( - 'd-flex flex-row-reverse align-items-start col-3 px-2 text-right', - styles.cardColHeader - )} - > - <div className="flex-shrink-1 d-flex flex-column"> - <Icon - aria-label="Sort ascending" - svgPath={mdiMenuUp} - className={classNames( - styles.sortDscIcon, - sortColumn.column === 'Activity' && - sortColumn.direction === 'desc' && - styles.sortSelectedIcon - )} - /> - <Icon - aria-label="Sort descending" - svgPath={mdiMenuDown} - className={classNames( - styles.sortAscIcon, - sortColumn.column === 'Activity' && - sortColumn.direction === 'asc' && - styles.sortSelectedIcon - )} - /> - </div> - Recent activity - </div> - </div> - </div> - </CardHeader> - <div className="container-fluid"> - {sortedEntries.map(entry => ( - <div key={entry.name} className={classNames('row', styles.fileItem)}> - <div className="list-group list-group-flush px-2 py-1 col-9"> + <Card as="table" className={classNames(className, styles.files)}> + <thead> + <CardHeader as="tr"> + <th className={styles.fileNameColumn}>File</th> + {hasHistoryEntries && ( + <> + <th>Last commit message</th> + <th className={styles.commitDateColumn}>Last commit date</th> + </> + )} + </CardHeader> + </thead> + <tbody> + {entries.map(entry => ( + <tr key={entry.name}> + <td className={styles.fileName}> <LinkOrSpan to={entry.url} className={classNames( 'test-page-file-decorable', - styles.treeEntry, entry.isDirectory && 'font-weight-bold', `test-tree-entry-${entry.isDirectory ? 'directory' : 'file'}` )} title={entry.path} data-testid="tree-entry" > - <div - className={classNames( - 'd-flex align-items-center justify-content-between test-file-decorable-name overflow-hidden' - )} - > - <span> - <Icon - className="mr-1" - svgPath={entry.isDirectory ? mdiFolderOutline : mdiFileDocumentOutline} - aria-hidden={true} + <Icon + className="mr-1" + svgPath={entry.isDirectory ? mdiFolderOutline : mdiFileDocumentOutline} + aria-hidden={true} + /> + {entry.name} + {entry.isDirectory && '/'} + </LinkOrSpan> + </td> + {fileHistoryByPath[entry.path] && ( + <> + <td className={styles.commitMessage}> + <span + title={fileHistoryByPath[entry.path].subject} + data-testid="git-commit-message-with-links" + > + <CommitMessageWithLinks + to={fileHistoryByPath[entry.path].canonicalURL} + message={fileHistoryByPath[entry.path].subject} + className="text-muted" + externalURLs={fileHistoryByPath[entry.path].externalURLs} /> - { - // In case of single child expansion, we need to get the name relative to - // the start of the directory (to include subdirectories) - } - {entry.name} - {entry.isDirectory && '/'} </span> - </div> - </LinkOrSpan> - </div> - <div className="list-group list-group-flush px-2 py-1 col-3"> - {diffStatsByPath[entry.name] && ( - <Tooltip - placement="topEnd" - content={`${Intl.NumberFormat('en', { - notation: 'compact', - }).format(diffStatsByPath[entry.name].added)} lines added,\n${Intl.NumberFormat( - 'en', - { - notation: 'compact', - } - ).format(diffStatsByPath[entry.name].deleted)} lines removed in the past 30 days`} - > - <div className={styles.meterContainer}> - <ParentSize> - {({ width }) => ( - <StackedMeter - width={width} - height={10} - viewMinMax={[0, maxLinesChanged]} - data={[ - { - name: 'deleted', - value: diffStatsByPath[entry.name].deleted, - className: styles.diffStatDeleted, - }, - { - name: 'added', - value: diffStatsByPath[entry.name].added, - className: styles.diffStatAdded, - }, - ]} - getDatumValue={getDatumValue} - getDatumName={getDatumName} - getDatumClassName={getDatumClassName} - minBarWidth={10} - className={styles.barSvg} - rightToLeft={true} - /> - )} - </ParentSize> - </div> - </Tooltip> - )} - </div> - </div> + </td> + <td className={classNames(styles.commitDate, 'text-muted')}> + <Timestamp + noAbout={true} + noAgo={true} + date={getCommitDate(fileHistoryByPath[entry.path])} + /> + </td> + </> + )} + </tr> ))} - </div> + </tbody> </Card> ) } + +function getCommitDate(commit: { author: { date: string }; committer?: { date: string } | null }): string { + return commit.committer ? commit.committer.date : commit.author.date +} From 332cc7ef98c3f3262ce23feaa2d47dd5df84bee1 Mon Sep 17 00:00:00 2001 From: Thorsten Ball <mrnugget@gmail.com> Date: Fri, 17 Nov 2023 14:12:02 +0100 Subject: [PATCH 063/222] tests: add typestest.MakeExternalService helper and use it (#58401) I noticed that we've started to copy&paste this types.ExternalService{ Kind: FOO Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, conf)), } into a lot of places, including the `MarshalJSON` and `NewUnencryptedConfig` calls. Started to abstract these away and then noticed I can create a helper for the whole thing. So here we are. --- internal/repos/azuredevops_test.go | 16 +- internal/repos/bitbucketcloud_test.go | 6 +- internal/repos/bitbucketserver_test.go | 10 +- internal/repos/gerrit_test.go | 30 +- internal/repos/github_test.go | 105 ++---- internal/repos/gitlab_test.go | 15 +- internal/repos/gitolite_test.go | 7 +- internal/repos/go_packages_test.go | 29 +- internal/repos/localgit_test.go | 13 +- internal/repos/npm_packages_test.go | 15 +- internal/repos/pagure_test.go | 7 +- internal/repos/perforce_test.go | 5 +- internal/repos/python_packages_test.go | 13 +- internal/repos/sources_test.go | 437 +++++++++++-------------- internal/repos/sources_test_utils.go | 12 - internal/types/typestest/typestest.go | 15 + 16 files changed, 306 insertions(+), 429 deletions(-) diff --git a/internal/repos/azuredevops_test.go b/internal/repos/azuredevops_test.go index 5d77360f495c3..06c9bec148462 100644 --- a/internal/repos/azuredevops_test.go +++ b/internal/repos/azuredevops_test.go @@ -8,7 +8,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/extsvc" "github.com/sourcegraph/sourcegraph/internal/ratelimit" "github.com/sourcegraph/sourcegraph/internal/testutil" - "github.com/sourcegraph/sourcegraph/internal/types" + "github.com/sourcegraph/sourcegraph/internal/types/typestest" "github.com/sourcegraph/sourcegraph/schema" ) @@ -19,7 +19,10 @@ import ( func TestAzureDevOpsSource_ListRepos(t *testing.T) { ratelimit.SetupForTest(t) - conf := &schema.AzureDevOpsConnection{ + cf, save := NewClientFactory(t, t.Name()) + defer save(t) + + svc := typestest.MakeExternalService(t, extsvc.VariantAzureDevOps, &schema.AzureDevOpsConnection{ Url: "https://dev.azure.com", Username: os.Getenv("AZURE_DEV_OPS_USERNAME"), Token: os.Getenv("AZURE_DEV_OPS_TOKEN"), @@ -32,14 +35,7 @@ func TestAzureDevOpsSource_ListRepos(t *testing.T) { Pattern: "^sgtestazure/sgtestazure/sgtestazure[3-9]", }, }, - } - cf, save := NewClientFactory(t, t.Name()) - defer save(t) - - svc := &types.ExternalService{ - Kind: extsvc.KindAzureDevOps, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, conf)), - } + }) ctx := context.Background() src, err := NewAzureDevOpsSource(ctx, nil, svc, cf) diff --git a/internal/repos/bitbucketcloud_test.go b/internal/repos/bitbucketcloud_test.go index f0630809bdc4b..5d1176e4af8fe 100644 --- a/internal/repos/bitbucketcloud_test.go +++ b/internal/repos/bitbucketcloud_test.go @@ -88,11 +88,7 @@ func TestBitbucketCloudSource_ListRepos(t *testing.T) { cf, save := NewClientFactory(t, tc.name) defer save(t) - svc := &types.ExternalService{ - Kind: extsvc.KindBitbucketCloud, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, tc.conf)), - } - + svc := typestest.MakeExternalService(t, extsvc.VariantBitbucketCloud, tc.conf) bbcSrc, err := newBitbucketCloudSource(logtest.Scoped(t), svc, tc.conf, cf) if err != nil { t.Fatal(err) diff --git a/internal/repos/bitbucketserver_test.go b/internal/repos/bitbucketserver_test.go index 05de5676c9997..8b6b0c41eb0d8 100644 --- a/internal/repos/bitbucketserver_test.go +++ b/internal/repos/bitbucketserver_test.go @@ -21,6 +21,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/rcache" "github.com/sourcegraph/sourcegraph/internal/testutil" "github.com/sourcegraph/sourcegraph/internal/types" + "github.com/sourcegraph/sourcegraph/internal/types/typestest" "github.com/sourcegraph/sourcegraph/lib/errors" "github.com/sourcegraph/sourcegraph/schema" ) @@ -178,13 +179,12 @@ func TestBitbucketServerSource_WithAuthenticator(t *testing.T) { rcache.SetupForTest(t) ratelimit.SetupForTest(t) - svc := &types.ExternalService{ - Kind: extsvc.KindBitbucketServer, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.BitbucketServerConnection{ + svc := typestest.MakeExternalService(t, + extsvc.VariantBitbucketServer, + &schema.BitbucketServerConnection{ Url: "https://bitbucket.sgdev.org", Token: os.Getenv("BITBUCKET_SERVER_TOKEN"), - })), - } + }) ctx := context.Background() bbsSrc, err := NewBitbucketServerSource(ctx, logtest.Scoped(t), svc, nil) diff --git a/internal/repos/gerrit_test.go b/internal/repos/gerrit_test.go index 6763ff975e7e1..3a63c5d1bb5df 100644 --- a/internal/repos/gerrit_test.go +++ b/internal/repos/gerrit_test.go @@ -11,7 +11,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/extsvc" "github.com/sourcegraph/sourcegraph/internal/ratelimit" "github.com/sourcegraph/sourcegraph/internal/testutil" - "github.com/sourcegraph/sourcegraph/internal/types" + "github.com/sourcegraph/sourcegraph/internal/types/typestest" "github.com/sourcegraph/sourcegraph/schema" ) @@ -20,18 +20,14 @@ func TestGerritSource_ListRepos(t *testing.T) { cfName := t.Name() t.Run("no filtering", func(t *testing.T) { - conf := &schema.GerritConnection{ - Url: "https://gerrit.sgdev.org", - Username: os.Getenv("GERRIT_USERNAME"), - Password: os.Getenv("GERRIT_PASSWORD"), - } cf, save := NewClientFactory(t, cfName) defer save(t) - svc := &types.ExternalService{ - Kind: extsvc.KindGerrit, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, conf)), - } + svc := typestest.MakeExternalService(t, extsvc.VariantGerrit, &schema.GerritConnection{ + Url: "https://gerrit.sgdev.org", + Username: os.Getenv("GERRIT_USERNAME"), + Password: os.Getenv("GERRIT_PASSWORD"), + }) ctx := context.Background() src, err := NewGerritSource(ctx, svc, cf) @@ -46,21 +42,17 @@ func TestGerritSource_ListRepos(t *testing.T) { }) t.Run("with filtering", func(t *testing.T) { - conf := &schema.GerritConnection{ + cf, save := NewClientFactory(t, cfName) + defer save(t) + + svc := typestest.MakeExternalService(t, extsvc.VariantGerrit, &schema.GerritConnection{ Projects: []string{ "src-cli", }, Url: "https://gerrit.sgdev.org", Username: os.Getenv("GERRIT_USERNAME"), Password: os.Getenv("GERRIT_PASSWORD"), - } - cf, save := NewClientFactory(t, cfName) - defer save(t) - - svc := &types.ExternalService{ - Kind: extsvc.KindGerrit, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, conf)), - } + }) ctx := context.Background() src, err := NewGerritSource(ctx, svc, cf) diff --git a/internal/repos/github_test.go b/internal/repos/github_test.go index 24fb3b6685dfa..504a9736c0bbe 100644 --- a/internal/repos/github_test.go +++ b/internal/repos/github_test.go @@ -140,13 +140,10 @@ func TestPublicRepos_PaginationTerminatesGracefully(t *testing.T) { fixtureName := "GITHUB-ENTERPRISE/list-public-repos" gheToken := prepareGheToken(t, fixtureName) - service := &types.ExternalService{ - Kind: extsvc.KindGitHub, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitHubConnection{ - Url: "https://ghe.sgdev.org", - Token: gheToken, - })), - } + service := typestest.MakeExternalService(t, extsvc.VariantGitHub, &schema.GitHubConnection{ + Url: "https://ghe.sgdev.org", + Token: gheToken, + }) factory, save := NewClientFactory(t, fixtureName) defer save(t) @@ -268,12 +265,9 @@ func TestGithubSource_GetRepo(t *testing.T) { cf, save := NewClientFactory(t, tc.name) defer save(t) - svc := &types.ExternalService{ - Kind: extsvc.KindGitHub, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitHubConnection{ - Url: "https://github.com", - })), - } + svc := typestest.MakeExternalService(t, extsvc.VariantGitHub, &schema.GitHubConnection{ + Url: "https://github.com", + }) ctx := context.Background() githubSrc, err := NewGitHubSource(ctx, logtest.Scoped(t), dbmocks.NewMockDB(), svc, cf) @@ -371,13 +365,10 @@ func TestGithubSource_GetRepo_Enterprise(t *testing.T) { t.Fatalf("GHE_TOKEN needs to be set to a token that can access ghe.sgdev.org to update this test fixture") } - svc := &types.ExternalService{ - Kind: extsvc.KindGitHub, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitHubConnection{ - Url: "https://ghe.sgdev.org", - Token: gheToken, - })), - } + svc := typestest.MakeExternalService(t, extsvc.VariantGitHub, &schema.GitHubConnection{ + Url: "https://ghe.sgdev.org", + Token: gheToken, + }) cf, save := NewClientFactory(t, tc.name) defer save(t) @@ -403,16 +394,13 @@ func TestGithubSource_GetRepo_Enterprise(t *testing.T) { // Configure external service to mark internal repositories as public // and sync again - svc = &types.ExternalService{ - Kind: extsvc.KindGitHub, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitHubConnection{ - Url: "https://ghe.sgdev.org", - Token: gheToken, - Authorization: &schema.GitHubAuthorization{ - MarkInternalReposAsPublic: true, - }, - })), - } + svc = typestest.MakeExternalService(t, extsvc.VariantGitHub, &schema.GitHubConnection{ + Url: "https://ghe.sgdev.org", + Token: gheToken, + Authorization: &schema.GitHubAuthorization{ + MarkInternalReposAsPublic: true, + }, + }) githubSrc, err = NewGitHubSource(ctx, logtest.Scoped(t), dbmocks.NewMockDB(), svc, cf) if err != nil { @@ -789,10 +777,7 @@ func TestGithubSource_ListRepos(t *testing.T) { defer save(t) - svc := &types.ExternalService{ - Kind: extsvc.KindGitHub, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, tc.conf)), - } + svc := typestest.MakeExternalService(t, extsvc.VariantGitHub, tc.conf) ctx := context.Background() githubSrc, err := NewGitHubSource(ctx, logtest.Scoped(t), dbmocks.NewMockDB(), svc, cf) @@ -827,13 +812,10 @@ func TestGithubSource_WithAuthenticator(t *testing.T) { // We need to clear the cache before we run the tests rcache.SetupForTest(t) - svc := &types.ExternalService{ - Kind: extsvc.KindGitHub, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitHubConnection{ - Url: "https://github.com", - Token: os.Getenv("GITHUB_TOKEN"), - })), - } + svc := typestest.MakeExternalService(t, extsvc.VariantGitHub, &schema.GitHubConnection{ + Url: "https://github.com", + Token: os.Getenv("GITHUB_TOKEN"), + }) ctx := context.Background() githubSrc, err := NewGitHubSource(ctx, logtest.Scoped(t), dbmocks.NewMockDB(), svc, nil) @@ -861,13 +843,10 @@ func TestGithubSource_excludes_disabledAndLocked(t *testing.T) { // We need to clear the cache before we run the tests rcache.SetupForTest(t) - svc := &types.ExternalService{ - Kind: extsvc.KindGitHub, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitHubConnection{ - Url: "https://github.com", - Token: os.Getenv("GITHUB_TOKEN"), - })), - } + svc := typestest.MakeExternalService(t, extsvc.VariantGitHub, &schema.GitHubConnection{ + Url: "https://github.com", + Token: os.Getenv("GITHUB_TOKEN"), + }) ctx := context.Background() githubSrc, err := NewGitHubSource(ctx, logtest.Scoped(t), dbmocks.NewMockDB(), svc, nil) @@ -894,12 +873,9 @@ func TestGithubSource_GetVersion(t *testing.T) { // We need to clear the cache before we run the tests rcache.SetupForTest(t) - svc := &types.ExternalService{ - Kind: extsvc.KindGitHub, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitHubConnection{ - Url: "https://github.com", - })), - } + svc := typestest.MakeExternalService(t, extsvc.VariantGitHub, &schema.GitHubConnection{ + Url: "https://github.com", + }) ctx := context.Background() githubSrc, err := NewGitHubSource(ctx, logger, dbmocks.NewMockDB(), svc, nil) @@ -932,13 +908,10 @@ func TestGithubSource_GetVersion(t *testing.T) { cf, save := NewClientFactory(t, fixtureName) defer save(t) - svc := &types.ExternalService{ - Kind: extsvc.KindGitHub, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitHubConnection{ - Url: "https://ghe.sgdev.org", - Token: gheToken, - })), - } + svc := typestest.MakeExternalService(t, extsvc.VariantGitHub, &schema.GitHubConnection{ + Url: "https://ghe.sgdev.org", + Token: gheToken, + }) ctx := context.Background() githubSrc, err := NewGitHubSource(ctx, logger, dbmocks.NewMockDB(), svc, cf) @@ -1266,10 +1239,7 @@ func TestGithubSource_SearchRepositories(t *testing.T) { defer save(t) - svc := &types.ExternalService{ - Kind: extsvc.KindGitHub, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, tc.conf)), - } + svc := typestest.MakeExternalService(t, extsvc.VariantGitHub, tc.conf) ctx := context.Background() githubSrc, err := NewGitHubSource(ctx, logtest.Scoped(t), dbmocks.NewMockDB(), svc, cf) @@ -1402,10 +1372,7 @@ EyAO2RYQG7mSE6w6CtTFiCjjmELpvdD2s1ygvPdCO1MJlCX264E3og== defer save(t) - svc := &types.ExternalService{ - Kind: extsvc.KindGitHub, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, tc.conf)), - } + svc := typestest.MakeExternalService(t, extsvc.VariantGitHub, tc.conf) ctx := context.Background() githubSrc, err := NewGitHubSource(ctx, logtest.Scoped(t), db, svc, cf) diff --git a/internal/repos/gitlab_test.go b/internal/repos/gitlab_test.go index edf9308de29ac..b5c64c1fd7781 100644 --- a/internal/repos/gitlab_test.go +++ b/internal/repos/gitlab_test.go @@ -20,6 +20,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/rcache" "github.com/sourcegraph/sourcegraph/internal/testutil" "github.com/sourcegraph/sourcegraph/internal/types" + "github.com/sourcegraph/sourcegraph/internal/types/typestest" "github.com/sourcegraph/sourcegraph/lib/errors" "github.com/sourcegraph/sourcegraph/schema" ) @@ -141,12 +142,9 @@ func TestGitLabSource_GetRepo(t *testing.T) { cf, save := NewClientFactory(t, tc.name) defer save(t) - svc := &types.ExternalService{ - Kind: extsvc.KindGitLab, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitLabConnection{ - Url: "https://gitlab.com", - })), - } + svc := typestest.MakeExternalService(t, extsvc.VariantGitLab, &schema.GitLabConnection{ + Url: "https://gitlab.com", + }) ctx := context.Background() gitlabSrc, err := NewGitLabSource(ctx, logtest.Scoped(t), svc, cf) @@ -311,10 +309,7 @@ func TestGitlabSource_ListRepos(t *testing.T) { cf, save := NewClientFactory(t, t.Name()) defer save(t) - svc := &types.ExternalService{ - Kind: extsvc.KindGitLab, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, conf)), - } + svc := typestest.MakeExternalService(t, extsvc.VariantGitLab, conf) ctx := context.Background() src, err := NewGitLabSource(ctx, nil, svc, cf) diff --git a/internal/repos/gitolite_test.go b/internal/repos/gitolite_test.go index d8ab33b6b4fda..c2d1fd5c2ecc7 100644 --- a/internal/repos/gitolite_test.go +++ b/internal/repos/gitolite_test.go @@ -6,7 +6,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/extsvc" "github.com/sourcegraph/sourcegraph/internal/httpcli" - "github.com/sourcegraph/sourcegraph/internal/types" + "github.com/sourcegraph/sourcegraph/internal/types/typestest" "github.com/sourcegraph/sourcegraph/schema" ) @@ -14,10 +14,7 @@ func TestGitoliteSource(t *testing.T) { cf, save := newClientFactoryWithOpt(t, "basic", httpcli.ExternalTransportOpt) defer save(t) - svc := &types.ExternalService{ - Kind: extsvc.KindGitolite, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitoliteConnection{})), - } + svc := typestest.MakeExternalService(t, extsvc.VariantGitolite, &schema.GitoliteConnection{}) ctx := context.Background() _, err := NewGitoliteSource(ctx, svc, cf) diff --git a/internal/repos/go_packages_test.go b/internal/repos/go_packages_test.go index 143f07a3c4bbe..99540c0ccfbe2 100644 --- a/internal/repos/go_packages_test.go +++ b/internal/repos/go_packages_test.go @@ -8,7 +8,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/codeintel/dependencies" "github.com/sourcegraph/sourcegraph/internal/extsvc" "github.com/sourcegraph/sourcegraph/internal/testutil" - "github.com/sourcegraph/sourcegraph/internal/types" + "github.com/sourcegraph/sourcegraph/internal/types/typestest" "github.com/sourcegraph/sourcegraph/schema" ) @@ -37,25 +37,22 @@ func TestGoPackagesSource_ListRepos(t *testing.T) { }, }) - svc := types.ExternalService{ - Kind: extsvc.KindGoPackages, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GoModulesConnection{ - Urls: []string{ - "https://proxy.golang.org", - }, - Dependencies: []string{ - "github.com/tsenart/vegeta/v12@v12.8.4", - "github.com/coreos/go-oidc@v2.2.1+incompatible", - "github.com/google/zoekt@v0.0.0-20211108135652-f8e8ada171c7", - "github.com/gorilla/mux@v1.8.0", - }, - })), - } + svc := typestest.MakeExternalService(t, extsvc.VariantGoPackages, &schema.GoModulesConnection{ + Urls: []string{ + "https://proxy.golang.org", + }, + Dependencies: []string{ + "github.com/tsenart/vegeta/v12@v12.8.4", + "github.com/coreos/go-oidc@v2.2.1+incompatible", + "github.com/google/zoekt@v0.0.0-20211108135652-f8e8ada171c7", + "github.com/gorilla/mux@v1.8.0", + }, + }) cf, save := NewClientFactory(t, t.Name()) t.Cleanup(func() { save(t) }) - src, err := NewGoPackagesSource(ctx, &svc, cf) + src, err := NewGoPackagesSource(ctx, svc, cf) if err != nil { t.Fatal(err) } diff --git a/internal/repos/localgit_test.go b/internal/repos/localgit_test.go index 1da6a1cba3d1b..930e5fe9b60ba 100644 --- a/internal/repos/localgit_test.go +++ b/internal/repos/localgit_test.go @@ -14,7 +14,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/extsvc" "github.com/sourcegraph/sourcegraph/internal/testutil" - "github.com/sourcegraph/sourcegraph/internal/types" + "github.com/sourcegraph/sourcegraph/internal/types/typestest" "github.com/sourcegraph/sourcegraph/schema" ) @@ -74,14 +74,11 @@ func TestLocalGitSource_ListRepos(t *testing.T) { ctx := context.Background() - svc := types.ExternalService{ - Kind: extsvc.VariantLocalGit.AsKind(), - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.LocalGitExternalService{ - Repos: repoPatterns, - })), - } + svc := typestest.MakeExternalService(t, extsvc.VariantLocalGit, &schema.LocalGitExternalService{ + Repos: repoPatterns, + }) - src, err := NewLocalGitSource(ctx, logtest.Scoped(t), &svc) + src, err := NewLocalGitSource(ctx, logtest.Scoped(t), svc) if err != nil { t.Fatal(err) } diff --git a/internal/repos/npm_packages_test.go b/internal/repos/npm_packages_test.go index 7edf42650e12e..9b07bb44da775 100644 --- a/internal/repos/npm_packages_test.go +++ b/internal/repos/npm_packages_test.go @@ -14,7 +14,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/database/dbtest" "github.com/sourcegraph/sourcegraph/internal/extsvc" "github.com/sourcegraph/sourcegraph/internal/testutil" - "github.com/sourcegraph/sourcegraph/internal/types" + "github.com/sourcegraph/sourcegraph/internal/types/typestest" "github.com/sourcegraph/sourcegraph/schema" ) @@ -162,18 +162,15 @@ func TestNPMPackagesSource_ListRepos(t *testing.T) { }, }) - svc := types.ExternalService{ - Kind: extsvc.KindNpmPackages, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.NpmPackagesConnection{ - Registry: "https://registry.npmjs.org", - Dependencies: []string{"@sourcegraph/prettierrc@2.2.0"}, - })), - } + svc := typestest.MakeExternalService(t, extsvc.VariantNpmPackages, &schema.NpmPackagesConnection{ + Registry: "https://registry.npmjs.org", + Dependencies: []string{"@sourcegraph/prettierrc@2.2.0"}, + }) cf, save := NewClientFactory(t, t.Name()) t.Cleanup(func() { save(t) }) - src, err := NewNpmPackagesSource(ctx, &svc, cf) + src, err := NewNpmPackagesSource(ctx, svc, cf) if err != nil { t.Fatal(err) } diff --git a/internal/repos/pagure_test.go b/internal/repos/pagure_test.go index 3c05955bdfc26..fed663aa41907 100644 --- a/internal/repos/pagure_test.go +++ b/internal/repos/pagure_test.go @@ -5,9 +5,9 @@ import ( "testing" "github.com/sourcegraph/sourcegraph/internal/testutil" + "github.com/sourcegraph/sourcegraph/internal/types/typestest" "github.com/sourcegraph/sourcegraph/internal/extsvc" - "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/schema" ) @@ -19,10 +19,7 @@ func TestPagureSource_ListRepos(t *testing.T) { cf, save := NewClientFactory(t, t.Name()) defer save(t) - svc := &types.ExternalService{ - Kind: extsvc.KindPagure, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, conf)), - } + svc := typestest.MakeExternalService(t, extsvc.VariantPagure, conf) ctx := context.Background() src, err := NewPagureSource(ctx, svc, cf) diff --git a/internal/repos/perforce_test.go b/internal/repos/perforce_test.go index 6d6e86b254f9e..6982794c57da0 100644 --- a/internal/repos/perforce_test.go +++ b/internal/repos/perforce_test.go @@ -78,10 +78,7 @@ func TestPerforceSource_ListRepos(t *testing.T) { tc := tc tc.name = "PERFORCE-LIST-REPOS/" + tc.name t.Run(tc.name, func(t *testing.T) { - svc := &types.ExternalService{ - Kind: extsvc.KindPerforce, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, tc.conf)), - } + svc := typestest.MakeExternalService(t, extsvc.VariantPerforce, tc.conf) gc := gitserver.NewMockClient() gc.IsPerforcePathCloneableFunc.SetDefaultHook(func(ctx context.Context, _ protocol.PerforceConnectionDetails, depotPath string) error { diff --git a/internal/repos/python_packages_test.go b/internal/repos/python_packages_test.go index 1e497d601a3e5..beb8088054d48 100644 --- a/internal/repos/python_packages_test.go +++ b/internal/repos/python_packages_test.go @@ -8,7 +8,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/codeintel/dependencies" "github.com/sourcegraph/sourcegraph/internal/extsvc" "github.com/sourcegraph/sourcegraph/internal/testutil" - "github.com/sourcegraph/sourcegraph/internal/types" + "github.com/sourcegraph/sourcegraph/internal/types/typestest" "github.com/sourcegraph/sourcegraph/schema" ) @@ -35,9 +35,9 @@ func TestPythonPackagesSource_ListRepos(t *testing.T) { }, }) - svc := types.ExternalService{ - Kind: extsvc.KindPythonPackages, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.PythonPackagesConnection{ + svc := typestest.MakeExternalService(t, + extsvc.VariantPythonPackages, + &schema.PythonPackagesConnection{ Urls: []string{ "https://pypi.org/simple", }, @@ -47,13 +47,12 @@ func TestPythonPackagesSource_ListRepos(t *testing.T) { "randio==0.1.1", "pytimeparse==1.1.8", }, - })), - } + }) cf, save := NewClientFactory(t, t.Name()) t.Cleanup(func() { save(t) }) - src, err := NewPythonPackagesSource(ctx, &svc, cf) + src, err := NewPythonPackagesSource(ctx, svc, cf) if err != nil { t.Fatal(err) } diff --git a/internal/repos/sources_test.go b/internal/repos/sources_test.go index c15b69d7df27d..32b245a954aa3 100644 --- a/internal/repos/sources_test.go +++ b/internal/repos/sources_test.go @@ -23,6 +23,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/ratelimit" "github.com/sourcegraph/sourcegraph/internal/rcache" "github.com/sourcegraph/sourcegraph/internal/types" + "github.com/sourcegraph/sourcegraph/internal/types/typestest" "github.com/sourcegraph/sourcegraph/schema" ) @@ -37,73 +38,61 @@ func TestSources_ListRepos_YieldExistingRepos(t *testing.T) { wantNames []string }{ { - svc: &types.ExternalService{ - Kind: extsvc.KindGitHub, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitHubConnection{ - Url: "https://github.com", - Token: os.Getenv("GITHUB_ACCESS_TOKEN"), - Repos: []string{ - "sourcegraph/Sourcegraph", - "tsenart/Vegeta", - "tsenart/vegeta-missing", - }, - })), - }, + svc: typestest.MakeExternalService(t, extsvc.VariantGitHub, &schema.GitHubConnection{ + Url: "https://github.com", + Token: os.Getenv("GITHUB_ACCESS_TOKEN"), + Repos: []string{ + "sourcegraph/Sourcegraph", + "tsenart/Vegeta", + "tsenart/vegeta-missing", + }, + }), wantNames: []string{ "github.com/sourcegraph/sourcegraph", "github.com/tsenart/vegeta", }, }, { - svc: &types.ExternalService{ - Kind: extsvc.KindGitLab, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitLabConnection{ - Url: "https://gitlab.com", - Token: os.Getenv("GITLAB_ACCESS_TOKEN"), - ProjectQuery: []string{"none"}, - Projects: []*schema.GitLabProject{ - {Name: "gnachman/iterm2"}, - {Name: "gnachman/iterm2-missing"}, - {Id: 13083}, // https://gitlab.com/gitlab-org/gitlab-ce - }, - })), - }, + svc: typestest.MakeExternalService(t, extsvc.VariantGitLab, &schema.GitLabConnection{ + Url: "https://gitlab.com", + Token: os.Getenv("GITLAB_ACCESS_TOKEN"), + ProjectQuery: []string{"none"}, + Projects: []*schema.GitLabProject{ + {Name: "gnachman/iterm2"}, + {Name: "gnachman/iterm2-missing"}, + {Id: 13083}, // https://gitlab.com/gitlab-org/gitlab-ce + }, + }), wantNames: []string{ "gitlab.com/gitlab-org/gitlab-ce", "gitlab.com/gnachman/iterm2", }, }, { - svc: &types.ExternalService{ - Kind: extsvc.KindBitbucketServer, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.BitbucketServerConnection{ - Url: "https://bitbucket.sgdev.org", - Token: os.Getenv("BITBUCKET_SERVER_TOKEN"), - RepositoryQuery: []string{"none"}, - Repos: []string{ - "Sour/vegetA", - "sour/sourcegraph", - }, - })), - }, + svc: typestest.MakeExternalService(t, extsvc.VariantBitbucketServer, &schema.BitbucketServerConnection{ + Url: "https://bitbucket.sgdev.org", + Token: os.Getenv("BITBUCKET_SERVER_TOKEN"), + RepositoryQuery: []string{"none"}, + Repos: []string{ + "Sour/vegetA", + "sour/sourcegraph", + }, + }), wantNames: []string{ "bitbucket.sgdev.org/SOUR/sourcegraph", "bitbucket.sgdev.org/SOUR/vegeta", }, }, { - svc: &types.ExternalService{ - Kind: extsvc.KindAWSCodeCommit, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.AWSCodeCommitConnection{ - AccessKeyID: getAWSEnv("AWS_ACCESS_KEY_ID"), - SecretAccessKey: getAWSEnv("AWS_SECRET_ACCESS_KEY"), - Region: "us-west-1", - GitCredentials: schema.AWSCodeCommitGitCredentials{ - Username: "git-username", - Password: "git-password", - }, - })), - }, + svc: typestest.MakeExternalService(t, extsvc.VariantAWSCodeCommit, &schema.AWSCodeCommitConnection{ + AccessKeyID: getAWSEnv("AWS_ACCESS_KEY_ID"), + SecretAccessKey: getAWSEnv("AWS_SECRET_ACCESS_KEY"), + Region: "us-west-1", + GitCredentials: schema.AWSCodeCommitGitCredentials{ + Username: "git-username", + Password: "git-password", + }, + }), wantNames: []string{ "__WARNING_DO_NOT_PUT_ANY_PRIVATE_CODE_IN_HERE", "empty-repo", @@ -113,15 +102,12 @@ func TestSources_ListRepos_YieldExistingRepos(t *testing.T) { }, }, { - svc: &types.ExternalService{ - Kind: extsvc.KindOther, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.OtherExternalServiceConnection{ - Url: "https://github.com", - Repos: []string{ - "google/go-cmp", - }, - })), - }, + svc: typestest.MakeExternalService(t, extsvc.VariantOther, &schema.OtherExternalServiceConnection{ + Url: "https://github.com", + Repos: []string{ + "google/go-cmp", + }, + }), wantNames: []string{ "github.com/google/go-cmp", }, @@ -170,84 +156,75 @@ func TestSources_ListRepos_Excluded(t *testing.T) { wantNames []string }{ { - svc: &types.ExternalService{ - Kind: extsvc.KindGitHub, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitHubConnection{ - Url: "https://github.com", - Token: os.Getenv("GITHUB_ACCESS_TOKEN"), - RepositoryQuery: []string{ - "user:tsenart in:name patrol", // yields only the tsenart/patrol repo - }, - Repos: []string{ - "sourcegraph/sourcegraph", - "keegancsmith/sqlf", - "tsenart/VEGETA", - "tsenart/go-tsz", // fork - "sourcegraph/about", // has >500MB and < 200 stars - "facebook/react", // has 215k stars as of now - "torvalds/linux", // has ~4GB - "avelino/awesome-go", // has < 20 MB and > 100k stars - }, - Exclude: []*schema.ExcludedGitHubRepo{ - {Name: "tsenart/Vegeta"}, - {Id: "MDEwOlJlcG9zaXRvcnkxNTM2NTcyNDU="}, // tsenart/patrol ID - {Pattern: "^keegancsmith/.*"}, - {Forks: true}, - {Stars: "> 215000"}, // exclude facebook/react - {Size: "> 3GB"}, // exclude torvalds/linux - {Size: ">= 500MB", Stars: "< 200"}, // exclude about repo - {Size: "<= 20MB", Stars: "> 100000"}, // exclude awesome-go - }, - })), - }, + svc: typestest.MakeExternalService(t, extsvc.VariantGitHub, &schema.GitHubConnection{ + Url: "https://github.com", + Token: os.Getenv("GITHUB_ACCESS_TOKEN"), + RepositoryQuery: []string{ + "user:tsenart in:name patrol", // yields only the tsenart/patrol repo + }, + Repos: []string{ + "sourcegraph/sourcegraph", + "keegancsmith/sqlf", + "tsenart/VEGETA", + "tsenart/go-tsz", // fork + "sourcegraph/about", // has >500MB and < 200 stars + "facebook/react", // has 215k stars as of now + "torvalds/linux", // has ~4GB + "avelino/awesome-go", // has < 20 MB and > 100k stars + }, + Exclude: []*schema.ExcludedGitHubRepo{ + {Name: "tsenart/Vegeta"}, + {Id: "MDEwOlJlcG9zaXRvcnkxNTM2NTcyNDU="}, // tsenart/patrol ID + {Pattern: "^keegancsmith/.*"}, + {Forks: true}, + {Stars: "> 215000"}, // exclude facebook/react + {Size: "> 3GB"}, // exclude torvalds/linux + {Size: ">= 500MB", Stars: "< 200"}, // exclude about repo + {Size: "<= 20MB", Stars: "> 100000"}, // exclude awesome-go + }, + }), wantNames: []string{ "github.com/sourcegraph/sourcegraph", }, }, { - svc: &types.ExternalService{ - Kind: extsvc.KindGitLab, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitLabConnection{ - Url: "https://gitlab.com", - Token: os.Getenv("GITLAB_ACCESS_TOKEN"), - ProjectQuery: []string{ - "?search=gokulkarthick", - "?search=dotfiles-vegetableman", - }, - Exclude: []*schema.ExcludedGitLabProject{ - {Name: "gokulkarthick/gokulkarthick"}, - {Id: 7789240}, - }, - })), - }, + svc: typestest.MakeExternalService(t, extsvc.VariantGitLab, &schema.GitLabConnection{ + Url: "https://gitlab.com", + Token: os.Getenv("GITLAB_ACCESS_TOKEN"), + ProjectQuery: []string{ + "?search=gokulkarthick", + "?search=dotfiles-vegetableman", + }, + Exclude: []*schema.ExcludedGitLabProject{ + {Name: "gokulkarthick/gokulkarthick"}, + {Id: 7789240}, + }, + }), wantNames: []string{ "gitlab.com/guld/dotfiles-vegetableman", }, }, { - svc: &types.ExternalService{ - Kind: extsvc.KindBitbucketServer, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.BitbucketServerConnection{ - Url: "https://bitbucket.sgdev.org", - Token: os.Getenv("BITBUCKET_SERVER_TOKEN"), - Repos: []string{ - "SOUR/vegeta", - "sour/sourcegraph", - }, - RepositoryQuery: []string{ - "?visibility=private", - }, - Exclude: []*schema.ExcludedBitbucketServerRepo{ - {Name: "SOUR/Vegeta"}, // test case insensitivity - {Id: 10067}, // sourcegraph repo id - {Pattern: ".*/automation"}, // only matches automation-testing repo - {Pattern: ".*public-repo.*"}, - {Pattern: ".*secret-repo.*"}, - {Pattern: ".*private-repo.*"}, - {Pattern: `.*SGDEMO.*`}, - }, - })), - }, + svc: typestest.MakeExternalService(t, extsvc.VariantBitbucketServer, &schema.BitbucketServerConnection{ + Url: "https://bitbucket.sgdev.org", + Token: os.Getenv("BITBUCKET_SERVER_TOKEN"), + Repos: []string{ + "SOUR/vegeta", + "sour/sourcegraph", + }, + RepositoryQuery: []string{ + "?visibility=private", + }, + Exclude: []*schema.ExcludedBitbucketServerRepo{ + {Name: "SOUR/Vegeta"}, // test case insensitivity + {Id: 10067}, // sourcegraph repo id + {Pattern: ".*/automation"}, // only matches automation-testing repo + {Pattern: ".*public-repo.*"}, + {Pattern: ".*secret-repo.*"}, + {Pattern: ".*private-repo.*"}, + {Pattern: `.*SGDEMO.*`}, + }, + }), wantNames: []string{ "bitbucket.sgdev.org/IJ/ijt-repo-testing-sg-3.6", "bitbucket.sgdev.org/K8S/zoekt", @@ -257,40 +234,34 @@ func TestSources_ListRepos_Excluded(t *testing.T) { }, }, { - svc: &types.ExternalService{ - Kind: extsvc.KindAWSCodeCommit, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.AWSCodeCommitConnection{ - AccessKeyID: getAWSEnv("AWS_ACCESS_KEY_ID"), - SecretAccessKey: getAWSEnv("AWS_SECRET_ACCESS_KEY"), - Region: "us-west-1", - GitCredentials: schema.AWSCodeCommitGitCredentials{ - Username: "git-username", - Password: "git-password", - }, - Exclude: []*schema.ExcludedAWSCodeCommitRepo{ - {Name: "stRIPE-gO"}, - {Id: "020a4751-0f46-4e19-82bf-07d0989b67dd"}, // ID of `test` - {Name: "test2", Id: "2686d63d-bff4-4a3e-a94f-3e6df904238d"}, // ID of `test2` - }, - })), - }, + svc: typestest.MakeExternalService(t, extsvc.VariantAWSCodeCommit, &schema.AWSCodeCommitConnection{ + AccessKeyID: getAWSEnv("AWS_ACCESS_KEY_ID"), + SecretAccessKey: getAWSEnv("AWS_SECRET_ACCESS_KEY"), + Region: "us-west-1", + GitCredentials: schema.AWSCodeCommitGitCredentials{ + Username: "git-username", + Password: "git-password", + }, + Exclude: []*schema.ExcludedAWSCodeCommitRepo{ + {Name: "stRIPE-gO"}, + {Id: "020a4751-0f46-4e19-82bf-07d0989b67dd"}, // ID of `test` + {Name: "test2", Id: "2686d63d-bff4-4a3e-a94f-3e6df904238d"}, // ID of `test2` + }, + }), wantNames: []string{ "__WARNING_DO_NOT_PUT_ANY_PRIVATE_CODE_IN_HERE", "empty-repo", }, }, { - svc: &types.ExternalService{ - Kind: extsvc.KindGitolite, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitoliteConnection{ - Prefix: "gitolite.mycorp.com/", - Host: "ssh://git@127.0.0.1:2222", - Exclude: []*schema.ExcludedGitoliteRepo{ - {Name: "bar"}, - {Pattern: "gitolite-ad.*"}, - }, - })), - }, + svc: typestest.MakeExternalService(t, extsvc.VariantGitolite, &schema.GitoliteConnection{ + Prefix: "gitolite.mycorp.com/", + Host: "ssh://git@127.0.0.1:2222", + Exclude: []*schema.ExcludedGitoliteRepo{ + {Name: "bar"}, + {Pattern: "gitolite-ad.*"}, + }, + }), wantNames: []string{ "gitolite.mycorp.com/baz", "gitolite.mycorp.com/foo", @@ -343,63 +314,51 @@ func TestSources_ListRepos_RepositoryPathPattern(t *testing.T) { wantURIs []string }{ { - svc: &types.ExternalService{ - Kind: extsvc.KindGitHub, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitHubConnection{ - Url: "https://github.com", - Token: os.Getenv("GITHUB_ACCESS_TOKEN"), - RepositoryPathPattern: "{host}/a/b/c/{nameWithOwner}", - RepositoryQuery: []string{"none"}, - Repos: []string{"tsenart/vegeta"}, - })), - }, + svc: typestest.MakeExternalService(t, extsvc.VariantGitHub, &schema.GitHubConnection{ + Url: "https://github.com", + Token: os.Getenv("GITHUB_ACCESS_TOKEN"), + RepositoryPathPattern: "{host}/a/b/c/{nameWithOwner}", + RepositoryQuery: []string{"none"}, + Repos: []string{"tsenart/vegeta"}, + }), wantNames: []string{"github.com/a/b/c/tsenart/vegeta"}, wantURIs: []string{"github.com/tsenart/vegeta"}, }, { - svc: &types.ExternalService{ - Kind: extsvc.KindGitLab, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitLabConnection{ - Url: "https://gitlab.com", - Token: os.Getenv("GITLAB_ACCESS_TOKEN"), - RepositoryPathPattern: "{host}/a/b/c/{pathWithNamespace}", - ProjectQuery: []string{"none"}, - Projects: []*schema.GitLabProject{ - {Name: "gnachman/iterm2"}, - }, - })), - }, + svc: typestest.MakeExternalService(t, extsvc.VariantGitLab, &schema.GitLabConnection{ + Url: "https://gitlab.com", + Token: os.Getenv("GITLAB_ACCESS_TOKEN"), + RepositoryPathPattern: "{host}/a/b/c/{pathWithNamespace}", + ProjectQuery: []string{"none"}, + Projects: []*schema.GitLabProject{ + {Name: "gnachman/iterm2"}, + }, + }), wantNames: []string{"gitlab.com/a/b/c/gnachman/iterm2"}, wantURIs: []string{"gitlab.com/gnachman/iterm2"}, }, { - svc: &types.ExternalService{ - Kind: extsvc.KindBitbucketServer, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.BitbucketServerConnection{ - Url: "https://bitbucket.sgdev.org", - Token: os.Getenv("BITBUCKET_SERVER_TOKEN"), - RepositoryPathPattern: "{host}/a/b/c/{projectKey}/{repositorySlug}", - RepositoryQuery: []string{"none"}, - Repos: []string{"sour/vegeta"}, - })), - }, + svc: typestest.MakeExternalService(t, extsvc.VariantBitbucketServer, &schema.BitbucketServerConnection{ + Url: "https://bitbucket.sgdev.org", + Token: os.Getenv("BITBUCKET_SERVER_TOKEN"), + RepositoryPathPattern: "{host}/a/b/c/{projectKey}/{repositorySlug}", + RepositoryQuery: []string{"none"}, + Repos: []string{"sour/vegeta"}, + }), wantNames: []string{"bitbucket.sgdev.org/a/b/c/SOUR/vegeta"}, wantURIs: []string{"bitbucket.sgdev.org/SOUR/vegeta"}, }, { - svc: &types.ExternalService{ - Kind: extsvc.KindAWSCodeCommit, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.AWSCodeCommitConnection{ - AccessKeyID: getAWSEnv("AWS_ACCESS_KEY_ID"), - SecretAccessKey: getAWSEnv("AWS_SECRET_ACCESS_KEY"), - Region: "us-west-1", - GitCredentials: schema.AWSCodeCommitGitCredentials{ - Username: "git-username", - Password: "git-password", - }, - RepositoryPathPattern: "a/b/c/{name}", - })), - }, + svc: typestest.MakeExternalService(t, extsvc.VariantAWSCodeCommit, &schema.AWSCodeCommitConnection{ + AccessKeyID: getAWSEnv("AWS_ACCESS_KEY_ID"), + SecretAccessKey: getAWSEnv("AWS_SECRET_ACCESS_KEY"), + Region: "us-west-1", + GitCredentials: schema.AWSCodeCommitGitCredentials{ + Username: "git-username", + Password: "git-password", + }, + RepositoryPathPattern: "a/b/c/{name}", + }), wantNames: []string{ "a/b/c/empty-repo", "a/b/c/stripe-go", @@ -416,14 +375,11 @@ func TestSources_ListRepos_RepositoryPathPattern(t *testing.T) { }, }, { - svc: &types.ExternalService{ - Kind: extsvc.KindGitolite, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitoliteConnection{ - // Prefix serves as a sort of repositoryPathPattern for Gitolite - Prefix: "gitolite.mycorp.com/", - Host: "ssh://git@127.0.0.1:2222", - })), - }, + svc: typestest.MakeExternalService(t, extsvc.VariantGitolite, &schema.GitoliteConnection{ + // Prefix serves as a sort of repositoryPathPattern for Gitolite + Prefix: "gitolite.mycorp.com/", + Host: "ssh://git@127.0.0.1:2222", + }), wantNames: []string{ "gitolite.mycorp.com/bar", "gitolite.mycorp.com/baz", @@ -470,13 +426,10 @@ func TestSources_Phabricator(t *testing.T) { cf, save := NewClientFactory(t, "PHABRICATOR/phabricator") defer save(t) - svc := &types.ExternalService{ - Kind: extsvc.KindPhabricator, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.PhabricatorConnection{ - Url: "https://secure.phabricator.com", - Token: os.Getenv("PHABRICATOR_TOKEN"), - })), - } + svc := typestest.MakeExternalService(t, extsvc.VariantPhabricator, &schema.PhabricatorConnection{ + Url: "https://secure.phabricator.com", + Token: os.Getenv("PHABRICATOR_TOKEN"), + }) repos := listRepos(t, cf, svc) @@ -517,29 +470,26 @@ func TestSources_ListRepos_GitLab_NameTransformations(t *testing.T) { cf, save := NewClientFactory(t, "GITLAB/nameTransformations-updates-the-repo-name") defer save(t) - svc := &types.ExternalService{ - Kind: extsvc.KindGitLab, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.GitLabConnection{ - Url: "https://gitlab.com", - Token: os.Getenv("GITLAB_ACCESS_TOKEN"), - RepositoryPathPattern: "{host}/{pathWithNamespace}", - ProjectQuery: []string{"none"}, - Projects: []*schema.GitLabProject{ - {Name: "sg-test.d/repo-git"}, - {Name: "sg-test.d/repo-gitrepo"}, + svc := typestest.MakeExternalService(t, extsvc.VariantGitLab, &schema.GitLabConnection{ + Url: "https://gitlab.com", + Token: os.Getenv("GITLAB_ACCESS_TOKEN"), + RepositoryPathPattern: "{host}/{pathWithNamespace}", + ProjectQuery: []string{"none"}, + Projects: []*schema.GitLabProject{ + {Name: "sg-test.d/repo-git"}, + {Name: "sg-test.d/repo-gitrepo"}, + }, + NameTransformations: []*schema.GitLabNameTransformation{ + { + Regex: "\\.d/", + Replacement: "/", }, - NameTransformations: []*schema.GitLabNameTransformation{ - { - Regex: "\\.d/", - Replacement: "/", - }, - { - Regex: "-git$", - Replacement: "", - }, + { + Regex: "-git$", + Replacement: "", }, - })), - } + }, + }) repos := listRepos(t, cf, svc) haveNames := types.Repos(repos).Names() @@ -562,16 +512,13 @@ func TestSources_ListRepos_BitbucketServer_Archived(t *testing.T) { cf, save := NewClientFactory(t, "BITBUCKETSERVER/bitbucketserver-archived") defer save(t) - svc := &types.ExternalService{ - Kind: extsvc.KindBitbucketServer, - Config: extsvc.NewUnencryptedConfig(MarshalJSON(t, &schema.BitbucketServerConnection{ - Url: "https://bitbucket.sgdev.org", - Token: os.Getenv("BITBUCKET_SERVER_TOKEN"), - RepositoryPathPattern: "{repositorySlug}", - RepositoryQuery: []string{"none"}, - Repos: []string{"sour/vegeta", "PUBLIC/archived-repo"}, - })), - } + svc := typestest.MakeExternalService(t, extsvc.VariantBitbucketServer, &schema.BitbucketServerConnection{ + Url: "https://bitbucket.sgdev.org", + Token: os.Getenv("BITBUCKET_SERVER_TOKEN"), + RepositoryPathPattern: "{repositorySlug}", + RepositoryQuery: []string{"none"}, + Repos: []string{"sour/vegeta", "PUBLIC/archived-repo"}, + }) repos := listRepos(t, cf, svc) diff --git a/internal/repos/sources_test_utils.go b/internal/repos/sources_test_utils.go index 9ff0013607735..f5257de2f282e 100644 --- a/internal/repos/sources_test_utils.go +++ b/internal/repos/sources_test_utils.go @@ -1,7 +1,6 @@ package repos import ( - "encoding/json" "net/http" "path/filepath" "strings" @@ -92,14 +91,3 @@ func NewRecorder(t testing.TB, file string, record bool) *recorder.Recorder { return rec } - -func MarshalJSON(t testing.TB, v any) string { - t.Helper() - - bs, err := json.Marshal(v) - if err != nil { - t.Fatal(err) - } - - return string(bs) -} diff --git a/internal/types/typestest/typestest.go b/internal/types/typestest/typestest.go index 8cdf75e434e04..a506a8c9de5b5 100644 --- a/internal/types/typestest/typestest.go +++ b/internal/types/typestest/typestest.go @@ -1,6 +1,7 @@ package typestest import ( + "encoding/json" "strconv" "testing" "time" @@ -116,6 +117,20 @@ func MakeGitLabExternalService() *types.ExternalService { } } +func MakeExternalService(t *testing.T, variant extsvc.Variant, config any) *types.ExternalService { + t.Helper() + + bs, err := json.Marshal(config) + if err != nil { + t.Fatal(err) + } + + return &types.ExternalService{ + Kind: variant.AsKind(), + Config: extsvc.NewUnencryptedConfig(string(bs)), + } +} + // MakeExternalServices creates one configured external service per kind and returns the list. func MakeExternalServices() types.ExternalServices { clock := timeutil.NewFakeClock(time.Now(), 0) From ff65375ea3355d65981846d62a98518283d9e6a7 Mon Sep 17 00:00:00 2001 From: Varun Gandhi <varun.gandhi@sourcegraph.com> Date: Fri, 17 Nov 2023 21:33:48 +0800 Subject: [PATCH 064/222] syntax-highlighter: Delete Theme and CSS fields (#58368) In the code, the CSS field was always set to be true, which meant that the Theme field would be ignored in the query to syntect server. This patch removes both fields, keeping only the q.css == true code path, and deleting all the mentions of themes. --- docker-images/syntax-highlighter/README.md | 13 +--- .../crates/sg-syntax/src/lib.rs | 65 +++---------------- .../crates/sg-syntax/src/sg_sciptect.rs | 2 - .../crates/sg-syntax/src/sg_syntect.rs | 10 --- .../crates/sg-syntax/src/sg_treesitter.rs | 4 -- docker-images/syntax-highlighter/docs/api.md | 1 - .../src/bin/scip-dump-response.rs | 2 - internal/gosyntect/gosyntect.go | 23 +------ internal/highlight/highlight.go | 1 - 9 files changed, 13 insertions(+), 108 deletions(-) diff --git a/docker-images/syntax-highlighter/README.md b/docker-images/syntax-highlighter/README.md index 7dc470ea2bbc9..f424df0e3d11d 100644 --- a/docker-images/syntax-highlighter/README.md +++ b/docker-images/syntax-highlighter/README.md @@ -40,7 +40,7 @@ See [API](./docs/api.md) ## Configuration -By default on startup, `syntect_server` will list all features (themes + file types) it supports. This can be disabled by setting `QUIET=true` in the environment. +By default on startup, `syntect_server` will list all file types it supports. This can be disabled by setting `QUIET=true` in the environment. ## Development @@ -64,15 +64,6 @@ Once published, the image version will need to be updated in the following locat Additionally, it's worth doing a [search](https://sourcegraph.com/search?q=repo:%5Egithub%5C.com/sourcegraph/sourcegraph%24+sourcegraph/syntect_server:&patternType=literal) for other uses in case this list is stale. -## Adding themes - -TODO: Maybe we can just remove themes entirely. I think they are u - -- Copy a `.tmTheme` file anywhere under `./syntect/testdata` (make a new dir if needed) [in our fork](https://github.com/slimsag/syntect). -- `cd syntect && make assets` -- In this repo, `cargo update -p syntect`. -- Build a new binary. - ## Adding languages (tree-sitter): See [scip-treesitter-languages](./crates/scip-treesitter-languages/README.md) @@ -100,4 +91,4 @@ $ cargo update -p syntect ## Supported languages: -Run: `cargo run --bin syntect_server` to see supported languages and themes. +Run: `cargo run --bin syntect_server` to see supported languages. diff --git a/docker-images/syntax-highlighter/crates/sg-syntax/src/lib.rs b/docker-images/syntax-highlighter/crates/sg-syntax/src/lib.rs index 8e4ad0f743ef0..135ba2fbdb1a6 100644 --- a/docker-images/syntax-highlighter/crates/sg-syntax/src/lib.rs +++ b/docker-images/syntax-highlighter/crates/sg-syntax/src/lib.rs @@ -5,8 +5,7 @@ use rocket::serde::json::{json, Value as JsonValue}; use serde::Deserialize; use sg_treesitter::jsonify_err; use syntect::{ - highlighting::ThemeSet, - html::{highlighted_html_for_string, ClassStyle}, + html::ClassStyle, parsing::{SyntaxReference, SyntaxSet}, }; @@ -28,9 +27,6 @@ thread_local! { pub(crate) static SYNTAX_SET: SyntaxSet = SyntaxSet::load_defaults_newlines(); } -lazy_static::lazy_static! { - static ref THEME_SET: ThemeSet = ThemeSet::load_defaults(); -} /// Struct from: internal/gosyntect/gosyntect.go /// @@ -56,16 +52,8 @@ pub struct SourcegraphQuery { // default empty string value for backwards compat with clients who do not specify this field. pub filetype: Option<String>, - // If css is set, the highlighted code will be returned as a HTML table with CSS classes - // annotating the highlighted types. - #[serde(default)] - pub css: bool, - // line_length_limit is ignored if css is false pub line_length_limit: Option<usize>, - - // theme is ignored if css is true - pub theme: String, } // NOTE: Keep in sync: internal/gosyntect/gosyntect.go @@ -223,14 +211,6 @@ pub fn determine_language<'a>( } pub fn list_features() { - // List embedded themes. - println!("## Embedded themes:"); - println!(); - for t in THEME_SET.themes.keys() { - println!("- `{}`", t); - } - println!(); - // List supported file extensions. SYNTAX_SET.with(|syntax_set| { println!("## Supported file extensions:"); @@ -250,35 +230,16 @@ pub fn syntect_highlight(q: SourcegraphQuery) -> JsonValue { Err(e) => return e, }; - if q.css { - let output = ClassedTableGenerator::new( - syntax_set, - syntax_def, - &q.code, - q.line_length_limit, - ClassStyle::SpacedPrefixed { prefix: "hl-" }, - ) - .generate(); + let output = ClassedTableGenerator::new( + syntax_set, + syntax_def, + &q.code, + q.line_length_limit, + ClassStyle::SpacedPrefixed { prefix: "hl-" }, + ) + .generate(); - json!({ "data": output, "plaintext": syntax_def.name == "Plain Text", }) - } else { - // TODO(slimsag): return the theme's background color (and other info??) to caller? - // https://github.com/trishume/syntect/blob/c8b47758a3872d478c7fc740782cd468b2c0a96b/examples/synhtml.rs#L24 - - // Determine theme to use. - // - // TODO(slimsag): We could let the query specify the theme file's actual - // bytes? e.g. via `load_from_reader`. - let theme = match THEME_SET.themes.get(&q.theme) { - Some(v) => v, - None => return json!({"error": "invalid theme", "code": "invalid_theme"}), - }; - - json!({ - "data": highlighted_html_for_string(&q.code, syntax_set, syntax_def, theme), - "plaintext": syntax_def.name == "Plain Text", - }) - } + json!({ "data": output, "plaintext": syntax_def.name == "Plain Text", }) }) } @@ -289,9 +250,7 @@ pub fn scip_highlight(q: ScipHighlightQuery) -> Result<JsonValue, JsonValue> { extension: "".to_string(), filepath: q.filepath.clone(), filetype: q.filetype.clone(), - css: true, line_length_limit: None, - theme: Default::default(), code: q.code.clone(), }; @@ -342,10 +301,8 @@ mod tests { filepath: "foo.cls".to_string(), filetype: None, code: "%".to_string(), - css: false, line_length_limit: None, extension: String::new(), - theme: String::new(), }; let result = determine_language(&query, &syntax_set); assert_eq!(result.unwrap().name, "TeX"); @@ -358,10 +315,8 @@ mod tests { filepath: "foo.cls".to_string(), filetype: None, code: "/**".to_string(), - css: false, line_length_limit: None, extension: String::new(), - theme: String::new(), }; let result = determine_language(&query, &syntax_set); assert_eq!(result.unwrap().name, "Apex"); diff --git a/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_sciptect.rs b/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_sciptect.rs index ef8f44be7b6c6..8f1aa313a82a7 100644 --- a/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_sciptect.rs +++ b/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_sciptect.rs @@ -604,9 +604,7 @@ mod test { extension: filepath.extension().unwrap().to_str().unwrap().to_string(), filepath: filepath.to_str().unwrap().to_string(), filetype: None, - css: false, line_length_limit: None, - theme: "".to_string(), code: contents.clone(), }; let syntax_def = determine_language(&q, &ss).unwrap(); diff --git a/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_syntect.rs b/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_syntect.rs index a974732c6cc26..76590d8566fca 100644 --- a/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_syntect.rs +++ b/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_syntect.rs @@ -250,8 +250,6 @@ mod tests { code: "package main\n".to_string(), line_length_limit: None, extension: String::new(), - theme: String::new(), - css: true, }; let expected = "<table>\ <tbody>\ @@ -280,8 +278,6 @@ mod tests { code: "<div>test</div>".to_string(), line_length_limit: Some(10), extension: String::new(), - theme: String::new(), - css: true, }; let expected = "<table>\ <tbody>\ @@ -304,8 +300,6 @@ mod tests { code: "package main\n".to_string(), line_length_limit: Some(5), extension: String::new(), - theme: String::new(), - css: true, }; let expected = "<table>\ <tbody>\ @@ -329,8 +323,6 @@ mod tests { .to_string(), line_length_limit: None, extension: String::new(), - theme: String::new(), - css: true, }; let expected = "<table>\ <tbody>\ @@ -411,8 +403,6 @@ mod tests { .to_string(), line_length_limit: None, extension: String::new(), - theme: String::new(), - css: true, }; let expected = "<table><tbody><tr><td class=\"line\" data-line=\"1\"/><td class=\"code\"><div><span class=\"hl-source hl-matlab\"><span class=\"hl-keyword hl-other hl-matlab\">function</span><span class=\"hl-meta hl-function hl-parameters hl-matlab\"> <span class=\"hl-entity hl-name hl-function hl-matlab\">setupPythonIfNeeded</span><span class=\"hl-punctuation hl-section hl-parens hl-begin hl-matlab\">(</span><span class=\"hl-punctuation hl-section hl-parens hl-end hl-matlab\">)</span></span>\n</span></div></td></tr><tr><td class=\"line\" data-line=\"2\"/><td class=\"code\"><div><span class=\"hl-source hl-matlab\">\n</span></div></td></tr><tr><td class=\"line\" data-line=\"3\"/><td class=\"code\"><div><span class=\"hl-source hl-matlab\"> <span class=\"hl-comment hl-line hl-percentage hl-matlab\"><span class=\"hl-punctuation hl-definition hl-comment hl-matlab\">%</span> Python setup is only supported in R2019a (ver 9.6) and later\n</span></span></div></td></tr><tr><td class=\"line\" data-line=\"4\"/><td class=\"code\"><div><span class=\"hl-source hl-matlab\">\n</span></div></td></tr><tr><td class=\"line\" data-line=\"5\"/><td class=\"code\"><div><span class=\"hl-source hl-matlab\"> <span class=\"hl-keyword hl-control hl-matlab\">if</span> <span class=\"hl-keyword hl-desktop hl-matlab\">verLessThan</span><span class=\"hl-meta hl-parens hl-matlab\"><span class=\"hl-punctuation hl-section hl-parens hl-begin hl-matlab\">(</span><span class=\"hl-string hl-quoted hl-single hl-matlab\"><span class=\"hl-punctuation hl-definition hl-string hl-begin hl-matlab\">'</span>matlab<span class=\"hl-punctuation hl-definition hl-string hl-end hl-matlab\">'</span></span>,<span class=\"hl-string hl-quoted hl-single hl-matlab\"><span class=\"hl-punctuation hl-definition hl-string hl-begin hl-matlab\">'</span>9.6<span class=\"hl-punctuation hl-definition hl-string hl-end hl-matlab\">'</span></span><span class=\"hl-punctuation hl-section hl-parens hl-end hl-matlab\">)</span></span>\n</span></div></td></tr><tr><td class=\"line\" data-line=\"6\"/><td class=\"code\"><div><span class=\"hl-source hl-matlab\">\n</span></div></td></tr><tr><td class=\"line\" data-line=\"7\"/><td class=\"code\"><div><span class=\"hl-source hl-matlab\"> <span class=\"hl-keyword hl-other hl-matlab\">error</span><span class=\"hl-meta hl-parens hl-matlab\"><span class=\"hl-punctuation hl-section hl-parens hl-begin hl-matlab\">(</span><span class=\"hl-string hl-quoted hl-double hl-matlab\"><span class=\"hl-punctuation hl-definition hl-string hl-begin hl-matlab\">"</span>setupPythonIfNeeded:unsupportedVersion<span class=\"hl-punctuation hl-definition hl-string hl-end hl-matlab\">"</span></span>,<span class=\"hl-string hl-quoted hl-double hl-matlab\"><span class=\"hl-punctuation hl-definition hl-string hl-begin hl-matlab\">"</span>Only version R2019a and later are supported<span class=\"hl-punctuation hl-definition hl-string hl-end hl-matlab\">"</span></span><span class=\"hl-punctuation hl-section hl-parens hl-end hl-matlab\">)</span></span>\n</span></div></td></tr><tr><td class=\"line\" data-line=\"8\"/><td class=\"code\"><div><span class=\"hl-source hl-matlab\">\n</span></div></td></tr><tr><td class=\"line\" data-line=\"9\"/><td class=\"code\"><div><span class=\"hl-source hl-matlab\"> <span class=\"hl-keyword hl-control hl-matlab\">end</span>\n</span></div></td></tr><tr><td class=\"line\" data-line=\"10\"/><td class=\"code\"><div><span class=\"hl-source hl-matlab\">\n</span></div></td></tr><tr><td class=\"line\" data-line=\"11\"/><td class=\"code\"><div><span class=\"hl-source hl-matlab\"> <span class=\"hl-keyword hl-control hl-matlab\">end</span></span></div></td></tr></tbody></table>"; diff --git a/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_treesitter.rs b/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_treesitter.rs index ed22daa81df76..1746b241ba8ba 100644 --- a/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_treesitter.rs +++ b/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_treesitter.rs @@ -343,9 +343,7 @@ SELECT * FROM my_table extension: filepath.extension().unwrap().to_str().unwrap().to_string(), filepath: filepath.to_str().unwrap().to_string(), filetype: None, - css: false, line_length_limit: None, - theme: "".to_string(), code: contents.clone(), }); @@ -400,9 +398,7 @@ SELECT * FROM my_table extension: filepath.extension().unwrap().to_str().unwrap().to_string(), filepath: filepath.to_str().unwrap().to_string(), filetype: None, - css: false, line_length_limit: None, - theme: "".to_string(), code: contents.clone(), }); diff --git a/docker-images/syntax-highlighter/docs/api.md b/docker-images/syntax-highlighter/docs/api.md index 77a03388c5bfb..0b769f8655595 100644 --- a/docker-images/syntax-highlighter/docs/api.md +++ b/docker-images/syntax-highlighter/docs/api.md @@ -11,7 +11,6 @@ - `data` string with syntax highlighted response. The input `code` string [is properly escaped](https://github.com/sourcegraph/syntect_server/blob/ee3810f70e5701b961b7249393dbac8914c162ce/syntect/src/html.rs#L6) and as such can be directly rendered in the browser safely. - `plaintext` boolean indicating whether a syntax could not be found for the file and instead it was rendered as plain text. - An error response (`error` field), one of: - - `{"error": "invalid theme", "code": "invalid_theme"}` - `{"error": "resource not found", "code": "resource_not_found"}` - `GET` to `/health` to receive an `OK` health check response / ensure the service is alive. diff --git a/docker-images/syntax-highlighter/src/bin/scip-dump-response.rs b/docker-images/syntax-highlighter/src/bin/scip-dump-response.rs index bfd5d315dbaf0..bb82fe5719189 100644 --- a/docker-images/syntax-highlighter/src/bin/scip-dump-response.rs +++ b/docker-images/syntax-highlighter/src/bin/scip-dump-response.rs @@ -46,9 +46,7 @@ fn main() -> Result<(), std::io::Error> { code: contents.clone(), filepath: "".to_string(), filetype: None, - css: false, line_length_limit: None, - theme: "".to_string(), }); println!(" filetype: {:?}", filetype); diff --git a/internal/gosyntect/gosyntect.go b/internal/gosyntect/gosyntect.go index 622cc981920de..66a6396085aa8 100644 --- a/internal/gosyntect/gosyntect.go +++ b/internal/gosyntect/gosyntect.go @@ -84,23 +84,9 @@ type Query struct { // Filetype is the language name. Filetype string `json:"filetype"` - // Theme is the color theme to use for highlighting. - // If CSS is true, theme is ignored. - // - // See https://github.com/sourcegraph/syntect_server#embedded-themes - Theme string `json:"theme"` - // Code is the literal code to highlight. Code string `json:"code"` - // CSS causes results to be returned in HTML table format with CSS class - // names annotating the spans rather than inline styles. - // - // TODO: I think we can just delete this? And theme? We don't use these. - // Then we could remove themes from syntect as well. I don't think we - // have any use case for these anymore (and haven't for awhile). - CSS bool `json:"css"` - // LineLengthLimit is the maximum length of line that will be highlighted if set. // Defaults to no max if zero. // If CSS is false, LineLengthLimit is ignored. @@ -129,9 +115,6 @@ type Response struct { } var ( - // ErrInvalidTheme is returned when the Query.Theme is not a valid theme. - ErrInvalidTheme = errors.New("invalid theme") - // ErrRequestTooLarge is returned when the request is too large for syntect_server to handle (e.g. file is too large to highlight). ErrRequestTooLarge = errors.New("request too large") @@ -177,9 +160,7 @@ func (c *Client) Highlight(ctx context.Context, q *Query, format HighlightRespon q.Filetype = languages.NormalizeLanguage(q.Filetype) tr, ctx := trace.New(ctx, "gosyntect.Highlight", - attribute.String("filepath", q.Filepath), - attribute.String("theme", q.Theme), - attribute.Bool("css", q.CSS)) + attribute.String("filepath", q.Filepath)) defer tr.EndWithErr(&err) if isTreesitterBased(q.Engine) && !IsTreesitterSupported(q.Filetype) { @@ -231,8 +212,6 @@ func (c *Client) Highlight(ctx context.Context, q *Query, format HighlightRespon if r.Error != "" { var err error switch r.Code { - case "invalid_theme": - err = ErrInvalidTheme case "resource_not_found": // resource_not_found is returned in the event of a 404, indicating a bug // in gosyntect. diff --git a/internal/highlight/highlight.go b/internal/highlight/highlight.go index adcb8041c7e79..dae54430c3071 100644 --- a/internal/highlight/highlight.go +++ b/internal/highlight/highlight.go @@ -417,7 +417,6 @@ func Code(ctx context.Context, p Params) (response *HighlightedCode, aborted boo Filepath: p.Filepath, StabilizeTimeout: stabilizeTimeout, LineLengthLimit: maxLineLength, - CSS: true, Engine: getEngineParameter(filetypeQuery.Engine), } From 98444420a80d9281d9460b5e1717455bb62110b8 Mon Sep 17 00:00:00 2001 From: Petri-Johan Last <petri.last@sourcegraph.com> Date: Fri, 17 Nov 2023 15:54:10 +0200 Subject: [PATCH 065/222] [Gerrit] Have each ListRepos unit test use its own client factory (#58402) --- internal/repos/gerrit_test.go | 5 +- .../no_filtering.yaml} | 0 .../with_filtering.yaml | 146 ++++++++++++++++++ 3 files changed, 148 insertions(+), 3 deletions(-) rename internal/repos/testdata/sources/{TestGerritSource_ListRepos.yaml => TestGerritSource_ListRepos/no_filtering.yaml} (100%) create mode 100644 internal/repos/testdata/sources/TestGerritSource_ListRepos/with_filtering.yaml diff --git a/internal/repos/gerrit_test.go b/internal/repos/gerrit_test.go index 3a63c5d1bb5df..908aedbe1386f 100644 --- a/internal/repos/gerrit_test.go +++ b/internal/repos/gerrit_test.go @@ -18,9 +18,8 @@ import ( func TestGerritSource_ListRepos(t *testing.T) { ratelimit.SetupForTest(t) - cfName := t.Name() t.Run("no filtering", func(t *testing.T) { - cf, save := NewClientFactory(t, cfName) + cf, save := NewClientFactory(t, t.Name()) defer save(t) svc := typestest.MakeExternalService(t, extsvc.VariantGerrit, &schema.GerritConnection{ @@ -42,7 +41,7 @@ func TestGerritSource_ListRepos(t *testing.T) { }) t.Run("with filtering", func(t *testing.T) { - cf, save := NewClientFactory(t, cfName) + cf, save := NewClientFactory(t, t.Name()) defer save(t) svc := typestest.MakeExternalService(t, extsvc.VariantGerrit, &schema.GerritConnection{ diff --git a/internal/repos/testdata/sources/TestGerritSource_ListRepos.yaml b/internal/repos/testdata/sources/TestGerritSource_ListRepos/no_filtering.yaml similarity index 100% rename from internal/repos/testdata/sources/TestGerritSource_ListRepos.yaml rename to internal/repos/testdata/sources/TestGerritSource_ListRepos/no_filtering.yaml diff --git a/internal/repos/testdata/sources/TestGerritSource_ListRepos/with_filtering.yaml b/internal/repos/testdata/sources/TestGerritSource_ListRepos/with_filtering.yaml new file mode 100644 index 0000000000000..627a76c950c43 --- /dev/null +++ b/internal/repos/testdata/sources/TestGerritSource_ListRepos/with_filtering.yaml @@ -0,0 +1,146 @@ +--- +version: 1 +interactions: +- request: + body: "" + form: {} + headers: {} + url: https://gerrit.sgdev.org/a/projects/?S=0&n=25&type=CODE + method: GET + response: + body: | + )]}' + { + "beatrix": { + "id": "beatrix", + "state": "ACTIVE" + }, + "idan-temp": { + "id": "idan-temp", + "state": "ACTIVE" + }, + "k8s-gerrit": { + "id": "k8s-gerrit", + "state": "ACTIVE" + }, + "sourcegraph": { + "id": "sourcegraph", + "state": "ACTIVE" + }, + "sourcegraph/create": { + "id": "sourcegraph%2Fcreate", + "state": "ACTIVE" + }, + "src-cli": { + "id": "src-cli", + "state": "ACTIVE" + } + } + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Cf-Cache-Status: + - DYNAMIC + Cf-Ray: + - 7c872c876c9ca214-YYZ + Content-Disposition: + - attachment + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 16 May 2023 22:49:27 GMT + Expires: + - Mon, 01 Jan 1990 00:00:00 GMT + Pragma: + - no-cache + Server: + - cloudflare + Strict-Transport-Security: + - max-age=15724800; includeSubDomains + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + status: 200 OK + code: 200 + duration: "" +- request: + body: "" + form: {} + headers: {} + url: https://gerrit.sgdev.org/a/projects/?S=25&n=25&type=CODE + method: GET + response: + body: | + )]}' + {} + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Cf-Cache-Status: + - DYNAMIC + Cf-Ray: + - 7c872c88aedba214-YYZ + Content-Disposition: + - attachment + Content-Length: + - "8" + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 16 May 2023 22:49:27 GMT + Expires: + - Mon, 01 Jan 1990 00:00:00 GMT + Pragma: + - no-cache + Server: + - cloudflare + Strict-Transport-Security: + - max-age=15724800; includeSubDomains + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + status: 200 OK + code: 200 + duration: "" +- request: + body: "" + form: {} + headers: {} + url: https://gerrit.sgdev.org/a/projects/?S=50&n=1 + method: GET + response: + body: | + )]}' + {} + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Cf-Cache-Status: + - DYNAMIC + Cf-Ray: + - 7c872c891ff8a214-YYZ + Content-Disposition: + - attachment + Content-Length: + - "8" + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 16 May 2023 22:49:27 GMT + Expires: + - Mon, 01 Jan 1990 00:00:00 GMT + Pragma: + - no-cache + Server: + - cloudflare + Strict-Transport-Security: + - max-age=15724800; includeSubDomains + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + status: 200 OK + code: 200 + duration: "" From 0f6e9a8e63c5ca76447ecd1bf87eca65f0cc3760 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Gajdulewicz?= <rafax@users.noreply.github.com> Date: Fri, 17 Nov 2023 15:15:36 +0100 Subject: [PATCH 066/222] Instrument buffer length for BigQuery events (#58380) * Instrument buffer length for BigQuery events * Remove prints * Update cmd/cody-gateway/internal/events/buffered.go Co-authored-by: Robert Lin <robert@bobheadxi.dev> * Remove sleep --------- Co-authored-by: Robert Lin <robert@bobheadxi.dev> --- cmd/cody-gateway/internal/events/BUILD.bazel | 1 + cmd/cody-gateway/internal/events/buffered.go | 18 ++++++++++++++++-- .../internal/events/buffered_test.go | 6 +++--- cmd/cody-gateway/shared/main.go | 10 ++++++++-- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/cmd/cody-gateway/internal/events/BUILD.bazel b/cmd/cody-gateway/internal/events/BUILD.bazel index 96dd93163368f..65913e65f8430 100644 --- a/cmd/cody-gateway/internal/events/BUILD.bazel +++ b/cmd/cody-gateway/internal/events/BUILD.bazel @@ -23,6 +23,7 @@ go_library( "@io_opentelemetry_go_otel//:otel", "@io_opentelemetry_go_otel//attribute", "@io_opentelemetry_go_otel//codes", + "@io_opentelemetry_go_otel_metric//:metric", "@io_opentelemetry_go_otel_trace//:trace", ], ) diff --git a/cmd/cody-gateway/internal/events/buffered.go b/cmd/cody-gateway/internal/events/buffered.go index 9230aaa0adea3..534c0abdfe755 100644 --- a/cmd/cody-gateway/internal/events/buffered.go +++ b/cmd/cody-gateway/internal/events/buffered.go @@ -7,6 +7,9 @@ import ( "time" "github.com/sourcegraph/log" + otelmetric "go.opentelemetry.io/otel/metric" + + "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" @@ -60,11 +63,13 @@ func defaultWorkers(bufferSize, workerCount int) int { return bufferSize / 10 } +var meter = otel.GetMeterProvider().Meter("cody-gateway/internal/events") + // NewBufferedLogger wraps handler with a buffered logger that submits events // in the background instead of in the hot-path of a request. It implements // goroutine.BackgroundRoutine that must be started. -func NewBufferedLogger(logger log.Logger, handler Logger, bufferSize, workerCount int) *BufferedLogger { - return &BufferedLogger{ +func NewBufferedLogger(logger log.Logger, handler Logger, bufferSize, workerCount int) (*BufferedLogger, error) { + res := BufferedLogger{ log: logger.Scoped("bufferedLogger"), handler: handler, @@ -76,6 +81,15 @@ func NewBufferedLogger(logger log.Logger, handler Logger, bufferSize, workerCoun bufferClosed: &atomic.Bool{}, flushedC: make(chan struct{}), } + _, err := meter.Int64ObservableGauge("cody-gateway.buffered_logger_buffer_size", + otelmetric.WithDescription("number of events in buffered logger buffer"), otelmetric.WithInt64Callback(func(ctx context.Context, observer otelmetric.Int64Observer) error { + observer.Observe(int64(len(res.bufferC))) + return nil + })) + if err != nil { + return nil, err + } + return &res, nil } // LogEvent implements event.Logger by submitting the event to a buffer for processing. diff --git a/cmd/cody-gateway/internal/events/buffered_test.go b/cmd/cody-gateway/internal/events/buffered_test.go index 231427ec7b012..ff76bc9230bb3 100644 --- a/cmd/cody-gateway/internal/events/buffered_test.go +++ b/cmd/cody-gateway/internal/events/buffered_test.go @@ -33,7 +33,7 @@ func TestBufferedLogger(t *testing.T) { handler := &mockLogger{} // Test with a buffer size of 0, which should immediately submit events - b := events.NewBufferedLogger(logtest.Scoped(t), handler, 0, 3) + b, _ := events.NewBufferedLogger(logtest.Scoped(t), handler, 0, 3) wg := conc.NewWaitGroup() wg.Go(b.Start) @@ -79,7 +79,7 @@ func TestBufferedLogger(t *testing.T) { // Set up a buffered logger we can fill up bufferSize := 3 workerCount := 3 - b := events.NewBufferedLogger(l, handler, bufferSize, workerCount) + b, _ := events.NewBufferedLogger(l, handler, bufferSize, workerCount) wg := conc.NewWaitGroup() wg.Go(b.Start) @@ -126,7 +126,7 @@ func TestBufferedLogger(t *testing.T) { handler := &mockLogger{} l, exportLogs := logtest.Captured(t) - b := events.NewBufferedLogger(l, handler, 10, 3) + b, _ := events.NewBufferedLogger(l, handler, 10, 3) wg := conc.NewWaitGroup() wg.Go(b.Start) diff --git a/cmd/cody-gateway/shared/main.go b/cmd/cody-gateway/shared/main.go index cc7095fc273c4..a4f947cd34f7e 100644 --- a/cmd/cody-gateway/shared/main.go +++ b/cmd/cody-gateway/shared/main.go @@ -61,8 +61,11 @@ func Main(ctx context.Context, obctx *observation.Context, ready service.ReadyFu // If a buffer is configured, wrap in events.BufferedLogger if config.BigQuery.EventBufferSize > 0 { - eventLogger = events.NewBufferedLogger(obctx.Logger, eventLogger, + eventLogger, err = events.NewBufferedLogger(obctx.Logger, eventLogger, config.BigQuery.EventBufferSize, config.BigQuery.EventBufferWorkers) + if err != nil { + return errors.Wrap(err, "create buffered logger") + } } } else { eventLogger = events.NewStdoutLogger(obctx.Logger) @@ -70,11 +73,14 @@ func Main(ctx context.Context, obctx *observation.Context, ready service.ReadyFu // Useful for testing event logging in a way that has latency that is // somewhat similar to BigQuery. if os.Getenv("CODY_GATEWAY_BUFFERED_LAGGY_EVENT_LOGGING_FUN_TIMES_MODE") == "true" { - eventLogger = events.NewBufferedLogger( + eventLogger, err = events.NewBufferedLogger( obctx.Logger, events.NewDelayedLogger(eventLogger), config.BigQuery.EventBufferSize, config.BigQuery.EventBufferWorkers) + if err != nil { + return errors.Wrap(err, "create buffered logger") + } } } From 4dea94fc556e536f7a290e5df8ab62506c42a0f2 Mon Sep 17 00:00:00 2001 From: Joe Chen <joe@sourcegraph.com> Date: Fri, 17 Nov 2023 10:41:33 -0500 Subject: [PATCH 067/222] oidc: redirect to `/search` page after auth flow by default (#58406) --- cmd/frontend/internal/auth/openidconnect/middleware.go | 7 +++++++ .../internal/auth/openidconnect/middleware_test.go | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/cmd/frontend/internal/auth/openidconnect/middleware.go b/cmd/frontend/internal/auth/openidconnect/middleware.go index acd552d6a07b1..d0811cb38c2aa 100644 --- a/cmd/frontend/internal/auth/openidconnect/middleware.go +++ b/cmd/frontend/internal/auth/openidconnect/middleware.go @@ -398,6 +398,13 @@ const stateCookieTimeout = time.Minute * 15 // RedirectToAuthRequest redirects the user to the authentication endpoint on the // external authentication provider. func RedirectToAuthRequest(w http.ResponseWriter, r *http.Request, p *Provider, cookieName, returnToURL string) { + // NOTE: We do not have a valid screen at the root path (always gets redirected + // to "/search"), and it is a marketing page on Sourcegraph.com, so redirecting to + // "/search" is a safe default. + if returnToURL == "" || returnToURL == "/" { + returnToURL = "/search" + } + // The state parameter is an opaque value used to maintain state between the // original Authentication Request and the callback. We generate a random unique // value as the OIDC state parameter. diff --git a/cmd/frontend/internal/auth/openidconnect/middleware_test.go b/cmd/frontend/internal/auth/openidconnect/middleware_test.go index 99e3f0dd9a1e8..1ac0f15a7e888 100644 --- a/cmd/frontend/internal/auth/openidconnect/middleware_test.go +++ b/cmd/frontend/internal/auth/openidconnect/middleware_test.go @@ -221,7 +221,7 @@ func TestMiddleware(t *testing.T) { if got, want := resp.Header.Get("Location"), "/oauth2/v1/authorize?"; !strings.Contains(got, want) { t.Errorf("got redirect URL %v, want contains %v", got, want) } - if state, want := state(t, resp.Header.Get("Location")), "/"; state.Redirect != want { + if state, want := state(t, resp.Header.Get("Location")), "/search"; state.Redirect != want { t.Errorf("got redirect destination %q, want %q", state.Redirect, want) } }) From cf2b73363846ba85bdeda3486111fe08e51146e3 Mon Sep 17 00:00:00 2001 From: Ryan <ryphil@sourcegraph.com> Date: Fri, 17 Nov 2023 10:05:50 -0800 Subject: [PATCH 068/222] Add required Sourcegraph version for Bedrock (#58414) Add required Sourcegraph version --- doc/cody/overview/enable-cody-enterprise.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/cody/overview/enable-cody-enterprise.md b/doc/cody/overview/enable-cody-enterprise.md index 7b1d7db5abb2c..5dd90bbca388a 100644 --- a/doc/cody/overview/enable-cody-enterprise.md +++ b/doc/cody/overview/enable-cody-enterprise.md @@ -304,13 +304,13 @@ Once done, go to **Site admin > Site configuration** (`/site-admin/configuration <aside class="experimental"> <p> -<span style="margin-right:0.25rem;" class="badge badge-experimental">Experimental</span> AWS Bedrock support is in the experimental stage. +<span style="margin-right:0.25rem;" class="badge badge-experimental">Experimental</span> AWS Bedrock support is in the experimental stage. You must have Sourcegraph 5.2.2 or higher. <br /> For any feedback, you can <a href="https://about.sourcegraph.com/contact">contact us</a> directly, file an <a href="https://github.com/sourcegraph/cody/issues">issue</a>, join our <a href="https://discord.com/servers/sourcegraph-969688426372825169">Discord</a>, or <a href="https://twitter.com/sourcegraphcody">tweet</a>. </p> </aside> -First, make sure you can access AWS Bedrock (currently in beta). Then, request access to the Anthropic Claude models in Bedrock. +First, make sure you can access AWS Bedrock. Then, request access to the Anthropic Claude models in Bedrock. This may take some time to provision. Next, create an IAM user with programmatic access in your AWS account. Depending on your AWS setup, different ways may be required to provide access. All completion requests are made from the `frontend` service, so this service needs to be able to access AWS. You can use instance role bindings or directly configure the IAM user credentials in the configuration. From 57322ab028bcb1d35f3eed8cc09da9606639292e Mon Sep 17 00:00:00 2001 From: Ryan <ryphil@sourcegraph.com> Date: Fri, 17 Nov 2023 10:19:53 -0800 Subject: [PATCH 069/222] Add note about non-programming questions (#58412) --- doc/cody/faq.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/cody/faq.md b/doc/cody/faq.md index dda3b42facb15..cd538260fc639 100644 --- a/doc/cody/faq.md +++ b/doc/cody/faq.md @@ -115,6 +115,11 @@ Cody supports a wide range of programming languages, including: JavaScript, TypeScript, PHP, Python, Java, C/C++, C#, Ruby, Go, SQL, Swift, Objective-C, Perl, Rust, Kotlin, Scala, Groovy, R, MATLAB, Dart, Lua, Julia, Cobol and Shell scripting languages (like Bash, PowerShell). +### Can Cody answer non-programming questions? + +Cody is an expert in answering a wide range of coding-related questions on topics including questions about your codebase, general programming concepts, test cases, debugging, and more. Cody Chat is not designed to answer non-coding questions or provide general information on topics outside of coding or your codebase. + + ## Embeddings ### What are embeddings for? From f2f2afae1b820b03d4ff1dd5c48e2f091b8ba684 Mon Sep 17 00:00:00 2001 From: Felix Kling <felix@felix-kling.de> Date: Fri, 17 Nov 2023 19:32:46 +0100 Subject: [PATCH 070/222] code intel: Don't rely on URL polyfill to correctly parse git: URIs (#58258) --- client/shared/BUILD.bazel | 2 + .../extensionHost.documentHighlights.test.ts | 2 +- .../test/extensionHost.hover.test.ts | 2 +- .../test/extensionHost.providers.test.ts | 27 +++++++------ .../codeintel/legacy-extensions/lsif/api.ts | 2 +- .../legacy-extensions/lsif/locations.ts | 2 +- .../codeintel/legacy-extensions/providers.ts | 14 +++---- .../legacy-extensions/search/providers.ts | 6 +-- .../legacy-extensions/search/queries.ts | 2 +- .../legacy-extensions/search/squirrel.ts | 8 ++-- .../codeintel/legacy-extensions/util/api.ts | 4 +- .../legacy-extensions/util/uri.test.ts | 8 +--- .../codeintel/legacy-extensions/util/uri.ts | 13 ++++--- client/shared/src/util/url.ts | 20 +++++++--- client/testing/BUILD.bazel | 2 + client/testing/src/perTestSetup.ts | 9 +++++ package.json | 2 + pnpm-lock.yaml | 39 ++++++++++++++++--- vitest.shared.ts | 1 + 19 files changed, 110 insertions(+), 55 deletions(-) create mode 100644 client/testing/src/perTestSetup.ts diff --git a/client/shared/BUILD.bazel b/client/shared/BUILD.bazel index 7f2b3069681e3..3676c9e7e3ce8 100644 --- a/client/shared/BUILD.bazel +++ b/client/shared/BUILD.bazel @@ -353,6 +353,7 @@ ts_project( "//:node_modules/@types/minimatch", "//:node_modules/@types/node", "//:node_modules/@types/react", + "//:node_modules/@types/whatwg-url", "//:node_modules/classnames", "//:node_modules/comlink", "//:node_modules/core-js", @@ -372,6 +373,7 @@ ts_project( "//:node_modules/use-deep-compare-effect", "//:node_modules/util", "//:node_modules/utility-types", + "//:node_modules/whatwg-url", "//:node_modules/zustand", "//schema:settings", #keep ], diff --git a/client/shared/src/api/extension/test/extensionHost.documentHighlights.test.ts b/client/shared/src/api/extension/test/extensionHost.documentHighlights.test.ts index 6d1e9ec821728..fe722decf79a0 100644 --- a/client/shared/src/api/extension/test/extensionHost.documentHighlights.test.ts +++ b/client/shared/src/api/extension/test/extensionHost.documentHighlights.test.ts @@ -37,7 +37,7 @@ describe('getDocumentHighlights from ExtensionHost API, it aims to have more e2e }) it('restarts document highlights call if a provider was added or removed', () => { - const typescriptFileUri = 'file:///f.ts' + const typescriptFileUri = 'git://repo#src/f.ts' const { extensionHostAPI, extensionAPI } = initializeExtensionHostTest( { initialSettings, clientApplication: 'sourcegraph', sourcegraphURL: 'https://example.com/' }, diff --git a/client/shared/src/api/extension/test/extensionHost.hover.test.ts b/client/shared/src/api/extension/test/extensionHost.hover.test.ts index ef8c3d7a77934..4de966aac1442 100644 --- a/client/shared/src/api/extension/test/extensionHost.hover.test.ts +++ b/client/shared/src/api/extension/test/extensionHost.hover.test.ts @@ -38,7 +38,7 @@ describe('getHover from ExtensionHost API, it aims to have more e2e feel', () => }) it('restarts hover call if a provider was added or removed', () => { - const typescriptFileUri = 'file:///f.ts' + const typescriptFileUri = 'git://repo#src/f.ts' const { extensionHostAPI, extensionAPI } = initializeExtensionHostTest( { initialSettings, clientApplication: 'sourcegraph', sourcegraphURL: 'https://example.com/' }, diff --git a/client/shared/src/api/extension/test/extensionHost.providers.test.ts b/client/shared/src/api/extension/test/extensionHost.providers.test.ts index 51244bbe0447f..9363670947d0b 100644 --- a/client/shared/src/api/extension/test/extensionHost.providers.test.ts +++ b/client/shared/src/api/extension/test/extensionHost.providers.test.ts @@ -13,6 +13,8 @@ const scheduler = (): TestScheduler => new TestScheduler((a, b) => expect(a).toE type Provider = RegisteredProvider<number | Observable<number>> +const documentURI = 'git://repo#src/f.ts' + const getResultsFromProviders = (providersObservable: Observable<Provider[]>, document: TextDocumentIdentifier) => callProviders( providersObservable, @@ -31,18 +33,19 @@ describe('callProviders()', () => { describe('1 provider', () => { it('returns empty non loading result with no providers', () => { scheduler().run(({ cold, expectObservable }) => - expectObservable( - getResultsFromProviders(cold<Provider[]>('-a', { a: [] }), { uri: 'file:///f.ts' }) - ).toBe('-a', { - a: { isLoading: false, result: [] }, - }) + expectObservable(getResultsFromProviders(cold<Provider[]>('-a', { a: [] }), { uri: documentURI })).toBe( + '-a', + { + a: { isLoading: false, result: [] }, + } + ) ) }) it('returns a result from a provider synchronously with raw values', () => { scheduler().run(({ cold, expectObservable }) => expectObservable( - getResultsFromProviders(cold<Provider[]>('-a', { a: [provide(1)] }), { uri: 'file:///f.ts' }) + getResultsFromProviders(cold<Provider[]>('-a', { a: [provide(1)] }), { uri: documentURI }) ).toBe('-(lr)', { l: { isLoading: true, result: [LOADING] }, r: { isLoading: false, result: [1] }, @@ -54,7 +57,7 @@ describe('callProviders()', () => { scheduler().run(({ cold, expectObservable }) => expectObservable( getResultsFromProviders(cold<Provider[]>('-a', { a: [provide(cold('--a', { a: 1 }))] }), { - uri: 'file:///f.ts', + uri: documentURI, }) ).toBe('-l-r', { l: { isLoading: true, result: [LOADING] }, @@ -69,7 +72,7 @@ describe('callProviders()', () => { scheduler().run(({ cold, expectObservable }) => expectObservable( getResultsFromProviders(cold<Provider[]>('-a', { a: [provide(1), provide(2)] }), { - uri: 'file:///f.ts', + uri: documentURI, }) ).toBe('-(lr)', { l: { isLoading: true, result: [1, LOADING] }, @@ -85,7 +88,7 @@ describe('callProviders()', () => { cold<Provider[]>('-a', { a: [provide(cold('-a', { a: 1 })), provide(cold('-a', { a: 2 }))], }), - { uri: 'file:///f.ts' } + { uri: documentURI } ) ).toBe('-lr', { l: { isLoading: true, result: [LOADING, LOADING] }, @@ -101,7 +104,7 @@ describe('callProviders()', () => { cold<Provider[]>('-a', { a: [provide(cold('-a', { a: 1 })), provide(cold('-#', {}, new Error('boom!')))], }), - { uri: 'file:///f.ts' } + { uri: documentURI } ) ).toBe('-lr', { l: { isLoading: true, result: [LOADING, LOADING] }, @@ -116,7 +119,7 @@ describe('callProviders()', () => { scheduler().run(({ cold, expectObservable }) => expectObservable( getResultsFromProviders(cold<Provider[]>('-a', { a: [provide(1, '*.ts'), provide(2, '*.js')] }), { - uri: 'file:///f.ts', + uri: documentURI, }) ).toBe('-(lr)', { l: { isLoading: true, result: [LOADING] }, @@ -135,7 +138,7 @@ describe('callProviders()', () => { a: [provide(cold('-a', { a: 1 })), provide(cold('-a', { a: 2 }))], b: [provide(cold('-a', { a: 3 }))], }), - { uri: 'file:///f.ts' } + { uri: documentURI } ) ).toBe('-abcd', { a: { isLoading: true, result: [LOADING, LOADING] }, diff --git a/client/shared/src/codeintel/legacy-extensions/lsif/api.ts b/client/shared/src/codeintel/legacy-extensions/lsif/api.ts index ef92ee84efb47..b9e6c2ac87013 100644 --- a/client/shared/src/codeintel/legacy-extensions/lsif/api.ts +++ b/client/shared/src/codeintel/legacy-extensions/lsif/api.ts @@ -23,7 +23,7 @@ export async function queryLSIF<P extends { query: string; uri: string }, R>( }: P, queryGraphQL: QueryGraphQLFn<GenericLSIFResponse<R>> ): Promise<R | null> { - const { repo, commit, path } = parseGitURI(new URL(uri)) + const { repo, commit, path } = parseGitURI(uri) const queryArguments = { repository: repo, commit, path, ...rest } const data = await queryGraphQL(query, queryArguments) return data.repository?.commit?.blob?.lsif || null diff --git a/client/shared/src/codeintel/legacy-extensions/lsif/locations.ts b/client/shared/src/codeintel/legacy-extensions/lsif/locations.ts index 803a385772079..620470a6e4a7f 100644 --- a/client/shared/src/codeintel/legacy-extensions/lsif/locations.ts +++ b/client/shared/src/codeintel/legacy-extensions/lsif/locations.ts @@ -23,7 +23,7 @@ export function nodeToLocation( textDocument: sourcegraph.TextDocument, { resource: { repository, commit, path }, range }: LocationConnectionNode ): sourcegraph.Location { - const { repo: currentRepo, commit: currentCommit } = parseGitURI(new URL(textDocument.uri)) + const { repo: currentRepo, commit: currentCommit } = parseGitURI(textDocument.uri) return { uri: new URL(`git://${repository?.name || currentRepo}?${commit?.oid || currentCommit}#${path}`), diff --git a/client/shared/src/codeintel/legacy-extensions/providers.ts b/client/shared/src/codeintel/legacy-extensions/providers.ts index 43b9207d55074..916c57253e5b6 100644 --- a/client/shared/src/codeintel/legacy-extensions/providers.ts +++ b/client/shared/src/codeintel/legacy-extensions/providers.ts @@ -233,7 +233,7 @@ export function createDefinitionProvider( textDocument: sourcegraph.TextDocument, position: sourcegraph.Position ): AsyncGenerator<sourcegraph.Definition | undefined, void, undefined> { - const { repo } = parseGitURI(new URL(textDocument.uri)) + const { repo } = parseGitURI(textDocument.uri) const repoId = (await api.resolveRepo(repo)).id const emitter = new TelemetryEmitter(languageID, repoId, !quiet) const commonFields = { provider: 'definition', repo, textDocument, position, emitter, logger } @@ -324,7 +324,7 @@ export function createReferencesProvider( position: sourcegraph.Position, context: sourcegraph.ReferenceContext ): AsyncGenerator<sourcegraph.Location[] | null, void, undefined> { - const { repo } = parseGitURI(new URL(textDocument.uri)) + const { repo } = parseGitURI(textDocument.uri) const repoId = (await api.resolveRepo(repo)).id const emitter = new TelemetryEmitter(languageID, repoId) const commonFields = { repo, textDocument, position, emitter, logger, provider: 'references' } @@ -432,7 +432,7 @@ export function createImplementationsProvider( textDocument: sourcegraph.TextDocument, position: sourcegraph.Position ): AsyncGenerator<sourcegraph.Location[] | null, void, undefined> { - const { repo } = parseGitURI(new URL(textDocument.uri)) + const { repo } = parseGitURI(textDocument.uri) const repoId = (await api.resolveRepo(repo)).id const emitter = new TelemetryEmitter(languageID, repoId) const commonFields = { repo, textDocument, position, emitter, logger, provider: 'implementations' } @@ -476,7 +476,7 @@ function logLocationResults<T extends sourcegraph.Badged<sourcegraph.Location>, emitter?.emitOnce(action) // Emit xrepo event if we contain a result from another repository - if (asArray(results).some(location => parseGitURI(location.uri).repo !== repo)) { + if (asArray(results).some(location => parseGitURI(location.uri.toString()).repo !== repo)) { emitter?.emitOnce(action + '.xrepo') } @@ -492,7 +492,7 @@ function logLocationResults<T extends sourcegraph.Badged<sourcegraph.Location>, arrayResults = arrayResults.slice(0, 500) } - const { path } = parseGitURI(new URL(textDocument.uri)) + const { path } = parseGitURI(textDocument.uri) const { line, character } = position logger.log({ @@ -533,7 +533,7 @@ export function createHoverProvider( textDocument: sourcegraph.TextDocument, position: sourcegraph.Position ): AsyncGenerator<sourcegraph.Badged<sourcegraph.Hover> | null | undefined, void, undefined> { - const { repo, path } = parseGitURI(new URL(textDocument.uri)) + const { repo, path } = parseGitURI(textDocument.uri) const repoId = (await api.resolveRepo(repo)).id const emitter = new TelemetryEmitter(languageID, repoId) const commonLogFields = { path, line: position.line, character: position.character } @@ -626,7 +626,7 @@ export function createDocumentHighlightProvider( textDocument: sourcegraph.TextDocument, position: sourcegraph.Position ): AsyncGenerator<sourcegraph.DocumentHighlight[] | null | undefined, void, undefined> { - const { repo } = parseGitURI(new URL(textDocument.uri)) + const { repo } = parseGitURI(textDocument.uri) const repoId = (await api.resolveRepo(repo)).id const emitter = new TelemetryEmitter(languageID, repoId) diff --git a/client/shared/src/codeintel/legacy-extensions/search/providers.ts b/client/shared/src/codeintel/legacy-extensions/search/providers.ts index 5ffd2c13280b4..20d5908a58ed6 100644 --- a/client/shared/src/codeintel/legacy-extensions/search/providers.ts +++ b/client/shared/src/codeintel/legacy-extensions/search/providers.ts @@ -60,7 +60,7 @@ export function createProviders( cachedFileContents.delete(Array.from(cachedFileContents.keys())[index]) } - const { repo, commit, path } = parseGitURI(new URL(uri)) + const { repo, commit, path } = parseGitURI(uri) const fileContent = api.getFileContent(repo, commit, path) cachedFileContents.set(uri, fileContent) return fileContent @@ -119,7 +119,7 @@ export function createProviders( return null } const { text, searchToken } = contentAndToken - const { repo, commit, path } = parseGitURI(new URL(textDocument.uri)) + const { repo, commit, path } = parseGitURI(textDocument.uri) const { isFork, isArchived } = await api.resolveRepo(repo) // Construct base definition query without scoping terms @@ -173,7 +173,7 @@ export function createProviders( return [] } const { searchToken } = contentAndToken - const { repo, commit } = parseGitURI(new URL(textDocument.uri)) + const { repo, commit } = parseGitURI(textDocument.uri) const { isFork, isArchived } = await api.resolveRepo(repo) // Construct base references query without scoping terms diff --git a/client/shared/src/codeintel/legacy-extensions/search/queries.ts b/client/shared/src/codeintel/legacy-extensions/search/queries.ts index a88452a9a30ae..60d7124b1a471 100644 --- a/client/shared/src/codeintel/legacy-extensions/search/queries.ts +++ b/client/shared/src/codeintel/legacy-extensions/search/queries.ts @@ -72,7 +72,7 @@ const excludelist = new Set(['thrift', 'proto', 'graphql']) * @param includelist The file extensions for the current language. */ function fileExtensionTerm(textDocument: sourcegraph.TextDocument, includelist: string[]): string { - const { path } = parseGitURI(new URL(textDocument.uri)) + const { path } = parseGitURI(textDocument.uri) const extension = extname(path).slice(1) if (!extension || excludelist.has(extension) || !includelist.includes(extension)) { return '' diff --git a/client/shared/src/codeintel/legacy-extensions/search/squirrel.ts b/client/shared/src/codeintel/legacy-extensions/search/squirrel.ts index f6044f985f06b..b410662dcac79 100644 --- a/client/shared/src/codeintel/legacy-extensions/search/squirrel.ts +++ b/client/shared/src/codeintel/legacy-extensions/search/squirrel.ts @@ -12,7 +12,7 @@ export const mkSquirrel = (api: API): PromiseProviders => ({ const local = await api.findLocalSymbol(document, position) if (local?.def) { - return mkSourcegraphLocation({ ...parseGitURI(new URL(document.uri)), range: local.def }) + return mkSourcegraphLocation({ ...parseGitURI(document.uri), range: local.def }) } const symbolInfo = await api.fetchSymbolInfo(document, position) @@ -30,7 +30,7 @@ export const mkSquirrel = (api: API): PromiseProviders => ({ length: symbolInfo.definition.range.length, }, } - return mkSourcegraphLocation({ ...parseGitURI(new URL(document.uri)), ...location }) + return mkSourcegraphLocation({ ...parseGitURI(document.uri), ...location }) }, async references(document, position) { const symbol = await api.findLocalSymbol(document, position) @@ -40,9 +40,7 @@ export const mkSquirrel = (api: API): PromiseProviders => ({ symbol.refs = sortBy(symbol.refs, reference => reference.row) - return symbol.refs.map(reference => - mkSourcegraphLocation({ ...parseGitURI(new URL(document.uri)), range: reference }) - ) + return symbol.refs.map(reference => mkSourcegraphLocation({ ...parseGitURI(document.uri), range: reference })) }, async hover(document, position) { const symbol = await api.findLocalSymbol(document, position) diff --git a/client/shared/src/codeintel/legacy-extensions/util/api.ts b/client/shared/src/codeintel/legacy-extensions/util/api.ts index bc2d042d65acf..7975a195ab9b7 100644 --- a/client/shared/src/codeintel/legacy-extensions/util/api.ts +++ b/client/shared/src/codeintel/legacy-extensions/util/api.ts @@ -264,7 +264,7 @@ export class API { return } - const { repo, commit, path } = parseGitURI(new URL(document.uri)) + const { repo, commit, path } = parseGitURI(document.uri) const payload = await this.fetchLocalCodeIntelPayload({ repo, commit, path }) if (!payload) { @@ -299,7 +299,7 @@ export class API { ? symbolInfoDefinitionQueryWithRange : symbolInfoDefinitionQueryWithoutRange - const { repo, commit, path } = parseGitURI(new URL(document.uri)) + const { repo, commit, path } = parseGitURI(document.uri) const vars = { repository: repo, commit, path, line: position.line, character: position.character } const response = await (async (): Promise<SymbolInfoResponse> => { diff --git a/client/shared/src/codeintel/legacy-extensions/util/uri.test.ts b/client/shared/src/codeintel/legacy-extensions/util/uri.test.ts index 217626fd7048d..a19a0e3a8734f 100644 --- a/client/shared/src/codeintel/legacy-extensions/util/uri.test.ts +++ b/client/shared/src/codeintel/legacy-extensions/util/uri.test.ts @@ -7,9 +7,7 @@ import { parseGitURI } from './uri' describe('parseGitURI', () => { it('returns components', () => { assert.deepStrictEqual( - parseGitURI( - new URL('git://github.com/microsoft/vscode?dbd76d987cf1a412401bdbd3fb785217ac94197e#src/vs/css.js') - ), + parseGitURI('git://github.com/microsoft/vscode?dbd76d987cf1a412401bdbd3fb785217ac94197e#src/vs/css.js'), { repo: 'github.com/microsoft/vscode', commit: 'dbd76d987cf1a412401bdbd3fb785217ac94197e', @@ -21,9 +19,7 @@ describe('parseGitURI', () => { it('decodes repos with spaces', () => { assert.deepStrictEqual( parseGitURI( - new URL( - 'git://sourcegraph.visualstudio.com/Test%20Repo?dbd76d987cf1a412401bdbd3fb785217ac94197e#src/vs/css.js' - ) + 'git://sourcegraph.visualstudio.com/Test%20Repo?dbd76d987cf1a412401bdbd3fb785217ac94197e#src/vs/css.js' ), { repo: 'sourcegraph.visualstudio.com/Test Repo', diff --git a/client/shared/src/codeintel/legacy-extensions/util/uri.ts b/client/shared/src/codeintel/legacy-extensions/util/uri.ts index a57994d0e9d67..c9ac6ee943cc1 100644 --- a/client/shared/src/codeintel/legacy-extensions/util/uri.ts +++ b/client/shared/src/codeintel/legacy-extensions/util/uri.ts @@ -1,12 +1,15 @@ +import { parseRepoURI } from '../../../util/url' + /** * Extracts the components of a text document URI. * - * @param url The text document URL. + * @param uri The text document URL. */ -export function parseGitURI({ hostname, pathname, search, hash }: URL): { repo: string; commit: string; path: string } { +export function parseGitURI(uri: string): { repo: string; commit: string; path: string } { + const result = parseRepoURI(uri) return { - repo: hostname + decodeURIComponent(pathname), - commit: decodeURIComponent(search.slice(1)), - path: decodeURIComponent(hash.slice(1)), + repo: result.repoName, + commit: result.revision ?? '', + path: result.filePath ?? '', } } diff --git a/client/shared/src/util/url.ts b/client/shared/src/util/url.ts index d95ad0622fe37..f02673f05ae32 100644 --- a/client/shared/src/util/url.ts +++ b/client/shared/src/util/url.ts @@ -1,3 +1,5 @@ +import { parseURL } from 'whatwg-url' + import { addLineRangeQueryParameter, encodeURIPathComponent, @@ -177,14 +179,22 @@ const parsePosition = (string: string): Position => { * @deprecated Migrate to using URLs to the Sourcegraph raw API (or other concrete URLs) instead. */ export function parseRepoURI(uri: RepoURI): ParsedRepoURI { - const parsed = new URL(uri) - const repoName = parsed.hostname + decodeURIComponent(parsed.pathname) - const revision = decodeURIComponent(parsed.search.slice('?'.length)) || undefined + // We are not using the environments URL constructor because Chrome and Firefox do + // not correctly parse out the hostname for URLs . We have a polyfill for the main web app + // (see client/shared/src/polyfills/configure-core-js.ts) but that might not be used in all apps. + const parsed = parseURL(uri) + if (!parsed?.host) { + throw new Error('Unable to parse repo URI: ' + uri) + } + const pathname = + typeof parsed.path === 'string' ? parsed.path : parsed.path.length === 0 ? '' : '/' + parsed.path.join('/') + const repoName = String(parsed.host) + decodeURIComponent(pathname) + const revision = parsed.query ? decodeURIComponent(parsed.query) : undefined let commitID: string | undefined if (revision?.match(/[\dA-f]{40}/)) { commitID = revision } - const fragmentSplit = parsed.hash.slice('#'.length).split(':').map(decodeURIComponent) + const fragmentSplit = parsed.fragment ? parsed.fragment.split(':').map(decodeURIComponent) : [] let filePath: string | undefined let position: UIPosition | undefined let range: UIRange | undefined @@ -207,7 +217,7 @@ export function parseRepoURI(uri: RepoURI): ParsedRepoURI { } } if (fragmentSplit.length > 2) { - throw new Error('unexpected fragment: ' + parsed.hash) + throw new Error('unexpected fragment: ' + parsed.fragment) } return { repoName, revision, commitID, filePath: filePath || undefined, position, range } diff --git a/client/testing/BUILD.bazel b/client/testing/BUILD.bazel index 8c3e05d4a1304..a7d81adcd200c 100644 --- a/client/testing/BUILD.bazel +++ b/client/testing/BUILD.bazel @@ -31,6 +31,7 @@ ts_project( "src/mockMatchMedia.ts", "src/mockResizeObserver.ts", "src/mockUniqueId.ts", + "src/perTestSetup.ts", "src/reactCleanup.ts", ], tsconfig = ":tsconfig", @@ -40,6 +41,7 @@ ts_project( "//:node_modules/@testing-library/react", "//:node_modules/@types/lodash", "//:node_modules/@types/mockdate", + "//:node_modules/@types/node", "//:node_modules/lodash", "//:node_modules/mockdate", "//:node_modules/resize-observer-polyfill", diff --git a/client/testing/src/perTestSetup.ts b/client/testing/src/perTestSetup.ts new file mode 100644 index 0000000000000..45686d09cb7f5 --- /dev/null +++ b/client/testing/src/perTestSetup.ts @@ -0,0 +1,9 @@ +import { TextEncoder, TextDecoder } from 'node:util' + +// TextEncoder and TextDecoder are not available in a jsdom environment but +// required in various contexts. +if (!global.TextEncoder) { + global.TextEncoder = TextEncoder + // @ts-expect-error The interface of TextDecoder is not compatible with whatever TS thinks gobal.TextDecoder is. + global.TextDecoder = TextDecoder +} diff --git a/package.json b/package.json index fa6dc8d63d589..a3ba00318e226 100644 --- a/package.json +++ b/package.json @@ -174,6 +174,7 @@ "@types/stream-json": "^1.7.3", "@types/svgo": "2.6.0", "@types/uuid": "8.0.1", + "@types/whatwg-url": "^11.0.3", "@types/yauzl": "^2.9.2", "@vitejs/plugin-react": "^3.1.0", "abort-controller": "^3.0.0", @@ -411,6 +412,7 @@ "uuid": "^8.3.0", "webext-domain-permission-toggle": "^1.0.1", "webextension-polyfill": "^0.6.0", + "whatwg-url": "^14.0.0", "yaml-ast-parser": "^0.0.43", "zustand": "^3.6.9" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2d3c0326424ac..07a8abd9e87d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -442,6 +442,9 @@ importers: webextension-polyfill: specifier: ^0.6.0 version: 0.6.0 + whatwg-url: + specifier: ^14.0.0 + version: 14.0.0 yaml-ast-parser: specifier: ^0.0.43 version: 0.0.43 @@ -779,6 +782,9 @@ importers: '@types/uuid': specifier: 8.0.1 version: 8.0.1 + '@types/whatwg-url': + specifier: ^11.0.3 + version: 11.0.3 '@types/yauzl': specifier: ^2.9.2 version: 2.10.0 @@ -10899,6 +10905,16 @@ packages: resolution: {integrity: sha512-2kE8rEFgJpbBAPw5JghccEevQb0XVU0tewF/8h7wPQTeCtoJ6h8qmBIwuzUVm2MutmzC/cpCkwxudixoNYDp1A==} dev: true + /@types/webidl-conversions@7.0.3: + resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} + dev: true + + /@types/whatwg-url@11.0.3: + resolution: {integrity: sha512-z1ELvMijRL1QmU7QuzDkeYXSF2+dXI0ITKoQsIoVKcNBOiK5RMmWy+pYYxJTHFt8vkpZe7UsvRErQwcxZkjoUw==} + dependencies: + '@types/webidl-conversions': 7.0.3 + dev: true + /@types/ws@8.5.3: resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} dependencies: @@ -20858,10 +20874,9 @@ packages: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - dev: true /puppeteer-core@2.1.1: resolution: {integrity: sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==} @@ -23764,9 +23779,16 @@ packages: resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} engines: {node: '>=14'} dependencies: - punycode: 2.3.0 + punycode: 2.3.1 dev: true + /tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} + dependencies: + punycode: 2.3.1 + dev: false + /tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -24945,7 +24967,6 @@ packages: /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} - dev: true /webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} @@ -25018,6 +25039,14 @@ packages: webidl-conversions: 7.0.0 dev: true + /whatwg-url@14.0.0: + resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + engines: {node: '>=18'} + dependencies: + tr46: 5.0.0 + webidl-conversions: 7.0.0 + dev: false + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: diff --git a/vitest.shared.ts b/vitest.shared.ts index d1b0dbe552264..7d0bc69fac600 100644 --- a/vitest.shared.ts +++ b/vitest.shared.ts @@ -34,6 +34,7 @@ export const defaultProjectConfig: UserWorkspaceConfig = { ], css: { modules: { classNameStrategy: 'non-scoped' } }, hideSkippedTests: true, + setupFiles: [path.join(process.cwd(), `client/testing/src/perTestSetup.${TS_EXT}`)], globalSetup: [path.join(process.cwd(), `client/testing/src/globalTestSetup.${TS_EXT}`)], }, plugins: BAZEL From afee4a18d7172034a6fdec576c900e497b2f9441 Mon Sep 17 00:00:00 2001 From: Jean-Hadrien Chabran <jean-hadrien.chabran@sourcegraph.com> Date: Fri, 17 Nov 2023 19:43:34 +0100 Subject: [PATCH 071/222] sg: ease scip-ctags-dev installation (#58410) --- sg.config.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sg.config.yaml b/sg.config.yaml index 2fd8c7d1cae38..6c7516ea8574a 100644 --- a/sg.config.yaml +++ b/sg.config.yaml @@ -235,6 +235,12 @@ commands: export GCFLAGS='all=-N -l' fi + # Ensure scip-ctags-dev is installed to avoid prompting the user to + # install it manually. + if [ ! -f $(./dev/scip-ctags-install.sh which) ]; then + ./dev/scip-ctags-install.sh + fi + go build -gcflags="$GCFLAGS" -o .bin/symbols github.com/sourcegraph/sourcegraph/cmd/symbols checkBinary: .bin/symbols env: From 8e104767953547d087df813e6581e1fa6dfc79f5 Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Mon, 20 Nov 2023 06:12:30 +0100 Subject: [PATCH 072/222] Stop running deprecated code monitors on dotcom (#58425) This executes on the deprecation plan of monitors on dotcom. See Slack here: https://sourcegraph.slack.com/archives/C05EA9KQUTA/p1698878170295189 This only stops them from running, but doesn't hide them from the UI and prunes the DBs yet, which is scheduled for November 29. --- cmd/worker/internal/codemonitors/BUILD.bazel | 1 + cmd/worker/internal/codemonitors/codemonitor_job.go | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/cmd/worker/internal/codemonitors/BUILD.bazel b/cmd/worker/internal/codemonitors/BUILD.bazel index 07296b1d32634..f7269ddb625b4 100644 --- a/cmd/worker/internal/codemonitors/BUILD.bazel +++ b/cmd/worker/internal/codemonitors/BUILD.bazel @@ -6,6 +6,7 @@ go_library( importpath = "github.com/sourcegraph/sourcegraph/cmd/worker/internal/codemonitors", visibility = ["//cmd/worker:__subpackages__"], deps = [ + "//cmd/frontend/envvar", "//cmd/worker/job", "//cmd/worker/shared/init/db", "//internal/codemonitors/background", diff --git a/cmd/worker/internal/codemonitors/codemonitor_job.go b/cmd/worker/internal/codemonitors/codemonitor_job.go index efdd1317f0e26..973707e20cd33 100644 --- a/cmd/worker/internal/codemonitors/codemonitor_job.go +++ b/cmd/worker/internal/codemonitors/codemonitor_job.go @@ -3,6 +3,7 @@ package codemonitors import ( "context" + "github.com/sourcegraph/sourcegraph/cmd/frontend/envvar" "github.com/sourcegraph/sourcegraph/cmd/worker/job" workerdb "github.com/sourcegraph/sourcegraph/cmd/worker/shared/init/db" "github.com/sourcegraph/sourcegraph/internal/codemonitors/background" @@ -26,6 +27,14 @@ func (j *codeMonitorJob) Config() []env.Config { } func (j *codeMonitorJob) Routines(_ context.Context, observationCtx *observation.Context) ([]goroutine.BackgroundRoutine, error) { + // Code monitors have been deprecated on dotcom and are set to be fully disabled + // after November 29th 2023. + // This is a temporary line to disable the background workers that execute them, + // before we simply turn off the feature via a feature gate or similar. + if envvar.SourcegraphDotComMode() { + return nil, nil + } + db, err := workerdb.InitDB(observationCtx) if err != nil { return nil, err From 3cc291b17bb403cdc4b9cfee373744f1e4f62b07 Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Mon, 20 Nov 2023 07:34:24 +0100 Subject: [PATCH 073/222] gitserver: Fix removal of old clone during reclones (#58424) In a recent change, I accidentally broke this logic, which is causing a bunch of errors on sourcegraph.com. The stay filepath.Dir I forgot to remove around tmpDir made it so that all repos are renamed to the same path, and never actually deleted, causing ErrExists errors. --- cmd/gitserver/internal/server.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/gitserver/internal/server.go b/cmd/gitserver/internal/server.go index 7706b3beb7c5d..2fe62340fc592 100644 --- a/cmd/gitserver/internal/server.go +++ b/cmd/gitserver/internal/server.go @@ -1514,8 +1514,8 @@ func (s *Server) doClone( } if opts.Overwrite { - // remove the current repo by putting it into our temporary directory - err := fileutil.RenameAndSync(dstPath, filepath.Join(filepath.Dir(tmpDir), "old")) + // remove the current repo by putting it into our temporary directory, outside of the git repo. + err := fileutil.RenameAndSync(dstPath, filepath.Join(tmpDir, "old")) if err != nil && !os.IsNotExist(err) { return errors.Wrapf(err, "failed to remove old clone") } From 206a9971c5b29ffef88cf0eda01b201c065dcd73 Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Mon, 20 Nov 2023 10:04:39 +0100 Subject: [PATCH 074/222] Prevent error log and sentry spam from HTTP client errors (#58426) We log a ton of events to Sentry about 404 routes and the likes. I don't think 4xx errors should cause error logs, so I'm downgrading these to warning level instead. --- cmd/frontend/internal/app/ui/router.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/cmd/frontend/internal/app/ui/router.go b/cmd/frontend/internal/app/ui/router.go index 75581362cc9d3..0e057bcc22406 100644 --- a/cmd/frontend/internal/app/ui/router.go +++ b/cmd/frontend/internal/app/ui/router.go @@ -428,15 +428,25 @@ func serveErrorNoDebug(w http.ResponseWriter, r *http.Request, db database.DB, e tr.SetAttributes(attribute.String("error-id", errorID)) traceURL = trace.URL(trace.ID(r.Context()), conf.DefaultClient()) } - logger.Error( - "ui HTTP handler error response", + logFields := []log.Field{ log.String("method", r.Method), log.String("request_uri", r.URL.RequestURI()), log.Int("status_code", statusCode), log.Error(err), log.String("error_id", errorID), log.String("trace", traceURL), - ) + } + if statusCode >= 400 && statusCode < 500 { + logger.Warn( + "ui HTTP handler error response", + logFields..., + ) + } else { + logger.Error( + "ui HTTP handler error response", + logFields..., + ) + } // In the case of recovering from a panic, we nicely include the stack // trace in the error that is shown on the page. Additionally, we log it From 0bf29246bde14470dd03e9e9996f8b23e52dcc95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Gajdulewicz?= <rafax@users.noreply.github.com> Date: Mon, 20 Nov 2023 11:21:05 +0100 Subject: [PATCH 075/222] Don't remove the URL number / line selection when user clicks again (#58330) --- client/web/src/repo/blob/codemirror/linenumbers.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/client/web/src/repo/blob/codemirror/linenumbers.ts b/client/web/src/repo/blob/codemirror/linenumbers.ts index 63321e8262882..ad8ef420bf129 100644 --- a/client/web/src/repo/blob/codemirror/linenumbers.ts +++ b/client/web/src/repo/blob/codemirror/linenumbers.ts @@ -335,11 +335,8 @@ export function selectableLineNumbers(config: SelectableLineNumbersConfig): Exte } const line = view.state.doc.lineAt(block.from).number - const range = view.state.field(selectedLines) view.dispatch({ - effects: mouseEvent.shiftKey - ? setEndLine.of(line) - : setSelectedLines.of(isSingleLine(range) && range?.line === line ? null : { line }), + effects: mouseEvent.shiftKey ? setEndLine.of(line) : setSelectedLines.of({ line }), annotations: lineSelectionSource.of('gutter'), // Collapse/reset text selection selection: { anchor: view.state.selection.main.anchor }, @@ -435,7 +432,3 @@ export function shouldScrollIntoView(view: EditorView, range: SelectedLineRange) to.top <= view.scrollDOM.scrollTop ) } - -function isSingleLine(range: SelectedLineRange): boolean { - return !!range && (!range.endLine || range.line === range.endLine) -} From 5027c6a9693143b3f18c7dacf151a7035ca4169c Mon Sep 17 00:00:00 2001 From: Jean-Hadrien Chabran <jean-hadrien.chabran@sourcegraph.com> Date: Mon, 20 Nov 2023 12:18:40 +0100 Subject: [PATCH 076/222] sg: install gnu-parallel during setup on Mac (#58416) --- dev/sg/dependencies/mac.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dev/sg/dependencies/mac.go b/dev/sg/dependencies/mac.go index d4ac1f938d34c..4e3d38774b453 100644 --- a/dev/sg/dependencies/mac.go +++ b/dev/sg/dependencies/mac.go @@ -158,6 +158,12 @@ var Mac = []category{ Check: checkAction(check.Combine(check.InPath("src"), checkSrcCliVersion(">= 4.2.0"))), Fix: cmdFix(`brew upgrade sourcegraph/src-cli/src-cli || brew install sourcegraph/src-cli/src-cli`), }, + // gnu-parallel is never available by default on MacOs. + &dependency{ + Name: "gnu-parallel", + Check: checkAction(check.InPath("parallel")), + Fix: cmdFix(`brew install parallel`), + }, ), { Name: "Postgres database", From e45c2edb557b34e1b6ef773ffc5d228f631894e8 Mon Sep 17 00:00:00 2001 From: Stefan Hengl <stefan@sourcegraph.com> Date: Mon, 20 Nov 2023 13:05:36 +0100 Subject: [PATCH 077/222] web: navigate to file@commit instead of file@branch (#58381) With this change we always jump to blob@commit instead of blob@head if a user clicks on a search result. This avoids inconsistencies in line numbers if indexing lags behind repo syncing. We keep the old logic, for displaying commit SHAs or branches on the search results page. As a consequence - file URLs will contain the commit hash (see updated tests) - we will always display the commit hash (instead of the branch) at the top of the blob view, even if commit = HEAD. While touching the code, I also refactored `getRevision`. I think the code is more readable now. Test plan: - manual testing - for a couple of searches, I checked the commit returned by the Stream API and verified that it matches the commit ID of the blob we display. - updated test --- CHANGELOG.md | 1 + client/shared/src/search/stream.ts | 20 +++++++++---------- .../export/searchResultsExport.test.ts | 9 ++++----- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f6de8481d3b10..f19d2500c8a87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ All notable changes to Sourcegraph are documented in this file. - The setting `experimentalFeatures.searchQueryInput` now refers to the new query input as `v2` (not `experimental`). <!-- NOTE: If v2 becomes the default before this release is cut, then update this entry to mention that instead of adding a separate entry. --> - Search-based code intel doesn't include the currently selected search context anymore. It was possible to get into a situation where search-based code intel wouldn't find any information due to being restricted by the current search context. [#58010](https://github.com/sourcegraph/sourcegraph/pull/58010) - The last commit which changed a file/directory is now shown in the files panel on the repo and file pages. To avoid duplicating information and confusion, the commits panel was removed. [58328](https://github.com/sourcegraph/sourcegraph/pull/58328) +- Clicking on a search result now opens the blob view at the same commit as the search result. Before, blob views were opened at the tip of the default branch, which sometimes caused inconsistencies in line numbers if the index was out of date. [#58381](https://github.com/sourcegraph/sourcegraph/pull/58381) ### Fixed diff --git a/client/shared/src/search/stream.ts b/client/shared/src/search/stream.ts index 1017f5e6fff76..00b47b536ad24 100644 --- a/client/shared/src/search/stream.ts +++ b/client/shared/src/search/stream.ts @@ -579,21 +579,19 @@ export function getRepositoryUrl(repository: string, branches?: string[]): strin } export function getRevision(branches?: string[], version?: string): string { - let revision = '' - if (branches) { - const branch = branches[0] - if (branch !== '') { - revision = branch - } - } else if (version) { - revision = version + if (branches && branches.length > 0) { + return branches[0] } - - return revision + if (version) { + return version + } + return '' } export function getFileMatchUrl(fileMatch: ContentMatch | SymbolMatch | PathMatch): string { - const revision = getRevision(fileMatch.branches, fileMatch.commit) + // We are not using getRevision here, because we want to flip the logic from + // "branches first" to "revsion first" + const revision = fileMatch.commit ?? fileMatch.branches?.[0] const encodedFilePath = fileMatch.path.split('/').map(encodeURIComponent).join('/') return `/${fileMatch.repository}${revision ? '@' + revision : ''}/-/blob/${encodedFilePath}` } diff --git a/client/web/src/search/results/export/searchResultsExport.test.ts b/client/web/src/search/results/export/searchResultsExport.test.ts index 0334e475368d9..ef13c4dbcf85a 100644 --- a/client/web/src/search/results/export/searchResultsExport.test.ts +++ b/client/web/src/search/results/export/searchResultsExport.test.ts @@ -465,8 +465,7 @@ describe('searchResultsToFileContent', () => { ], }, ], - - 'Match type,Repository,Repository external URL,File path,File URL,Path matches [path [start end]],Chunk matches [line [start end]]\ncontent,github.com/salesagility/SuiteCRM,http://localhost:3443/github.com/salesagility/SuiteCRM,jssource/src_files/include/javascript/sugar_3.js,http://localhost:3443/github.com/salesagility/SuiteCRM/-/blob/jssource/src_files/include/javascript/sugar_3.js,,"[191, [[4, 10] [27, 33]]]; [233, [[6, 12] [59, 65]]]; [209, [[23, 29] [36, 42]]]; [210, [[37, 43]]]; [3496, [[24, 30]]]; [3515, [[38, 44]]]; [3516, [[86, 92]]]"\ncontent,github.com/salesagility/SuiteCRM,http://localhost:3443/github.com/salesagility/SuiteCRM,include/javascript/sugar_3.js,http://localhost:3443/github.com/salesagility/SuiteCRM/-/blob/include/javascript/sugar_3.js,,"[44, [[79, 85]]]; [53, [[33, 39] [84, 90]]]; [47, [[18, 24] [55, 61]]]"\ncontent,github.com/pokeclicker/pokeclicker,http://localhost:3443/github.com/pokeclicker/pokeclicker,src/scripts/safari/Safari.ts,http://localhost:3443/github.com/pokeclicker/pokeclicker/-/blob/src/scripts/safari/Safari.ts,"[src/scripts/safari/Safari.ts, [[12, 18] [19, 25]]]","[0, [[6, 12]]]; [2, [[48, 54]]]; [17, [[51, 57]]]; [25, [[8, 14]]]; [26, [[8, 14]]]"', + 'Match type,Repository,Repository external URL,File path,File URL,Path matches [path [start end]],Chunk matches [line [start end]]\ncontent,github.com/salesagility/SuiteCRM,http://localhost:3443/github.com/salesagility/SuiteCRM,jssource/src_files/include/javascript/sugar_3.js,http://localhost:3443/github.com/salesagility/SuiteCRM@cea3e00eb4990d143c91935013058488c0964ee6/-/blob/jssource/src_files/include/javascript/sugar_3.js,,"[191, [[4, 10] [27, 33]]]; [233, [[6, 12] [59, 65]]]; [209, [[23, 29] [36, 42]]]; [210, [[37, 43]]]; [3496, [[24, 30]]]; [3515, [[38, 44]]]; [3516, [[86, 92]]]"\ncontent,github.com/salesagility/SuiteCRM,http://localhost:3443/github.com/salesagility/SuiteCRM,include/javascript/sugar_3.js,http://localhost:3443/github.com/salesagility/SuiteCRM@cea3e00eb4990d143c91935013058488c0964ee6/-/blob/include/javascript/sugar_3.js,,"[44, [[79, 85]]]; [53, [[33, 39] [84, 90]]]; [47, [[18, 24] [55, 61]]]"\ncontent,github.com/pokeclicker/pokeclicker,http://localhost:3443/github.com/pokeclicker/pokeclicker,src/scripts/safari/Safari.ts,http://localhost:3443/github.com/pokeclicker/pokeclicker@8cd76ead3182b39647ae1c7af2dc9b912f7d6e9e/-/blob/src/scripts/safari/Safari.ts,"[src/scripts/safari/Safari.ts, [[12, 18] [19, 25]]]","[0, [[6, 12]]]; [2, [[48, 54]]]; [17, [[51, 57]]]; [25, [[8, 14]]]; [26, [[8, 14]]]"', ], [ 'file', @@ -899,7 +898,7 @@ describe('searchResultsToFileContent', () => { }, ], - 'Match type,Repository,Repository external URL,File path,File URL,Path matches [path [start end]],Chunk matches [line [start end]]\ncontent,github.com/servo/servo,http://localhost:3443/github.com/servo/servo,tests/wpt/web-platform-tests/tools/wpt/run.py,http://localhost:3443/github.com/servo/servo/-/blob/tests/wpt/web-platform-tests/tools/wpt/run.py,,"[623, [[6, 12]]]; [624, [[12, 18]]]; [625, [[26, 32]]]; [751, [[5, 11] [14, 20]]]; [635, [[52, 58]]]"\ncontent,github.com/salesagility/SuiteCRM,http://localhost:3443/github.com/salesagility/SuiteCRM,jssource/src_files/include/javascript/sugar_3.js,http://localhost:3443/github.com/salesagility/SuiteCRM/-/blob/jssource/src_files/include/javascript/sugar_3.js,,"[191, [[4, 10] [27, 33]]]; [233, [[6, 12] [59, 65]]]; [209, [[23, 29] [36, 42]]]; [210, [[37, 43]]]; [3496, [[24, 30]]]; [3515, [[38, 44]]]; [3516, [[86, 92]]]"\ncontent,github.com/salesagility/SuiteCRM,http://localhost:3443/github.com/salesagility/SuiteCRM,include/javascript/sugar_3.js,http://localhost:3443/github.com/salesagility/SuiteCRM/-/blob/include/javascript/sugar_3.js,,"[44, [[79, 85]]]; [53, [[33, 39] [84, 90]]]; [47, [[18, 24]]]"', + 'Match type,Repository,Repository external URL,File path,File URL,Path matches [path [start end]],Chunk matches [line [start end]]\ncontent,github.com/servo/servo,http://localhost:3443/github.com/servo/servo,tests/wpt/web-platform-tests/tools/wpt/run.py,http://localhost:3443/github.com/servo/servo@2a45f247c44117e4a13603a87a3b6304905f8d1f/-/blob/tests/wpt/web-platform-tests/tools/wpt/run.py,,"[623, [[6, 12]]]; [624, [[12, 18]]]; [625, [[26, 32]]]; [751, [[5, 11] [14, 20]]]; [635, [[52, 58]]]"\ncontent,github.com/salesagility/SuiteCRM,http://localhost:3443/github.com/salesagility/SuiteCRM,jssource/src_files/include/javascript/sugar_3.js,http://localhost:3443/github.com/salesagility/SuiteCRM@cea3e00eb4990d143c91935013058488c0964ee6/-/blob/jssource/src_files/include/javascript/sugar_3.js,,"[191, [[4, 10] [27, 33]]]; [233, [[6, 12] [59, 65]]]; [209, [[23, 29] [36, 42]]]; [210, [[37, 43]]]; [3496, [[24, 30]]]; [3515, [[38, 44]]]; [3516, [[86, 92]]]"\ncontent,github.com/salesagility/SuiteCRM,http://localhost:3443/github.com/salesagility/SuiteCRM,include/javascript/sugar_3.js,http://localhost:3443/github.com/salesagility/SuiteCRM@cea3e00eb4990d143c91935013058488c0964ee6/-/blob/include/javascript/sugar_3.js,,"[44, [[79, 85]]]; [53, [[33, 39] [84, 90]]]; [47, [[18, 24]]]"', ], [ 'repo', @@ -1141,7 +1140,7 @@ describe('searchResultsToFileContent', () => { }, ], - 'Match type,Repository,Repository external URL,File path,File URL,Path matches [path [start end]],Chunk matches [line [start end]]\npath,github.com/zzzeyez/dots,http://localhost:3443/github.com/zzzeyez/dots,bin/safari,http://localhost:3443/github.com/zzzeyez/dots/-/blob/bin/safari,"[bin/safari, [[4, 10]]]",\npath,github.com/rockyzhang24/dotfiles,http://localhost:3443/github.com/rockyzhang24/dotfiles,.config/bin/safari,http://localhost:3443/github.com/rockyzhang24/dotfiles/-/blob/.config/bin/safari,"[.config/bin/safari, [[12, 18]]]",\npath,github.com/DavidsFiddle/Sonic-Pi-Code-Bits,http://localhost:3443/github.com/DavidsFiddle/Sonic-Pi-Code-Bits,Beats/Safari,http://localhost:3443/github.com/DavidsFiddle/Sonic-Pi-Code-Bits/-/blob/Beats/Safari,"[Beats/Safari, [[6, 12]]]",\npath,github.com/unixorn/tumult.plugin.zsh,http://localhost:3443/github.com/unixorn/tumult.plugin.zsh,bin/safari,http://localhost:3443/github.com/unixorn/tumult.plugin.zsh/-/blob/bin/safari,"[bin/safari, [[4, 10]]]",\npath,github.com/jaymcgavren/dotfiles,http://localhost:3443/github.com/jaymcgavren/dotfiles,bin/osx/safari,http://localhost:3443/github.com/jaymcgavren/dotfiles/-/blob/bin/osx/safari,"[bin/osx/safari, [[8, 14]]]",', + 'Match type,Repository,Repository external URL,File path,File URL,Path matches [path [start end]],Chunk matches [line [start end]]\npath,github.com/zzzeyez/dots,http://localhost:3443/github.com/zzzeyez/dots,bin/safari,http://localhost:3443/github.com/zzzeyez/dots@b69d3d3e6fb0473d6d25d28bd3446772904ff579/-/blob/bin/safari,"[bin/safari, [[4, 10]]]",\npath,github.com/rockyzhang24/dotfiles,http://localhost:3443/github.com/rockyzhang24/dotfiles,.config/bin/safari,http://localhost:3443/github.com/rockyzhang24/dotfiles@58517770e9fcdd08ba6a2971aaf33a2fcec1b49c/-/blob/.config/bin/safari,"[.config/bin/safari, [[12, 18]]]",\npath,github.com/DavidsFiddle/Sonic-Pi-Code-Bits,http://localhost:3443/github.com/DavidsFiddle/Sonic-Pi-Code-Bits,Beats/Safari,http://localhost:3443/github.com/DavidsFiddle/Sonic-Pi-Code-Bits@6a1adbe8a5a556042dd20b7c064635b0b5475d0e/-/blob/Beats/Safari,"[Beats/Safari, [[6, 12]]]",\npath,github.com/unixorn/tumult.plugin.zsh,http://localhost:3443/github.com/unixorn/tumult.plugin.zsh,bin/safari,http://localhost:3443/github.com/unixorn/tumult.plugin.zsh@cd1ac844ba533c463d105330cc2ffaf4421ab42e/-/blob/bin/safari,"[bin/safari, [[4, 10]]]",\npath,github.com/jaymcgavren/dotfiles,http://localhost:3443/github.com/jaymcgavren/dotfiles,bin/osx/safari,http://localhost:3443/github.com/jaymcgavren/dotfiles@67beb23333f82d3d35a1698a13f7ee574a7b2c43/-/blob/bin/osx/safari,"[bin/osx/safari, [[8, 14]]]",', ], [ 'symbol', @@ -1228,7 +1227,7 @@ describe('searchResultsToFileContent', () => { }, ] as SymbolMatch[], - 'Match type,Repository,Repository external URL,File path,File URL,Symbols [kind name url]\nsymbol,github.com/sourcegraph/sourcegraph,http://localhost:3443/github.com/sourcegraph/sourcegraph,enterprise/internal/batches/types/code_host.go,http://localhost:3443/github.com/sourcegraph/sourcegraph/-/blob/enterprise/internal/batches/types/code_host.go,"[STRUCT, CodeHost, http://localhost:3443/github.com/sourcegraph/sourcegraph/-/blob/enterprise/internal/batches/types/code_host.go?L6:6-6:14]"\nsymbol,github.com/sourcegraph/sourcegraph,http://localhost:3443/github.com/sourcegraph/sourcegraph,internal/database/external_services.go,http://localhost:3443/github.com/sourcegraph/sourcegraph/-/blob/internal/database/external_services.go,"[FIELD, CodeHost, http://localhost:3443/github.com/sourcegraph/sourcegraph/-/blob/internal/database/external_services.go?L225:2-225:10]"\nsymbol,github.com/koderover/zadig,http://localhost:3443/github.com/koderover/zadig,pkg/cli/upgradeassistant/internal/repository/models/codehost.go,http://localhost:3443/github.com/koderover/zadig/-/blob/pkg/cli/upgradeassistant/internal/repository/models/codehost.go,"[STRUCT, CodeHost, http://localhost:3443/github.com/koderover/zadig/-/blob/pkg/cli/upgradeassistant/internal/repository/models/codehost.go?L19:6-19:14]"\nsymbol,github.com/sourcegraph/sourcegraph,http://localhost:3443/github.com/sourcegraph/sourcegraph,internal/extsvc/codehost.go,http://localhost:3443/github.com/sourcegraph/sourcegraph/-/blob/internal/extsvc/codehost.go,"[STRUCT, CodeHost, http://localhost:3443/github.com/sourcegraph/sourcegraph/-/blob/internal/extsvc/codehost.go?L10:6-10:14]; [FUNCTION, NewCodeHost, http://localhost:3443/github.com/sourcegraph/sourcegraph/-/blob/internal/extsvc/codehost.go?L64:9-64:20]"', + 'Match type,Repository,Repository external URL,File path,File URL,Symbols [kind name url]\nsymbol,github.com/sourcegraph/sourcegraph,http://localhost:3443/github.com/sourcegraph/sourcegraph,enterprise/internal/batches/types/code_host.go,http://localhost:3443/github.com/sourcegraph/sourcegraph@6c09a2246d9c9ddf6efa2d0cdf095ea8b86b0c9a/-/blob/enterprise/internal/batches/types/code_host.go,"[STRUCT, CodeHost, http://localhost:3443/github.com/sourcegraph/sourcegraph/-/blob/enterprise/internal/batches/types/code_host.go?L6:6-6:14]"\nsymbol,github.com/sourcegraph/sourcegraph,http://localhost:3443/github.com/sourcegraph/sourcegraph,internal/database/external_services.go,http://localhost:3443/github.com/sourcegraph/sourcegraph@6c09a2246d9c9ddf6efa2d0cdf095ea8b86b0c9a/-/blob/internal/database/external_services.go,"[FIELD, CodeHost, http://localhost:3443/github.com/sourcegraph/sourcegraph/-/blob/internal/database/external_services.go?L225:2-225:10]"\nsymbol,github.com/koderover/zadig,http://localhost:3443/github.com/koderover/zadig,pkg/cli/upgradeassistant/internal/repository/models/codehost.go,http://localhost:3443/github.com/koderover/zadig@039158ab468a062c9f36dcb1d1b9d259083fba0a/-/blob/pkg/cli/upgradeassistant/internal/repository/models/codehost.go,"[STRUCT, CodeHost, http://localhost:3443/github.com/koderover/zadig/-/blob/pkg/cli/upgradeassistant/internal/repository/models/codehost.go?L19:6-19:14]"\nsymbol,github.com/sourcegraph/sourcegraph,http://localhost:3443/github.com/sourcegraph/sourcegraph,internal/extsvc/codehost.go,http://localhost:3443/github.com/sourcegraph/sourcegraph@6c09a2246d9c9ddf6efa2d0cdf095ea8b86b0c9a/-/blob/internal/extsvc/codehost.go,"[STRUCT, CodeHost, http://localhost:3443/github.com/sourcegraph/sourcegraph/-/blob/internal/extsvc/codehost.go?L10:6-10:14]; [FUNCTION, NewCodeHost, http://localhost:3443/github.com/sourcegraph/sourcegraph/-/blob/internal/extsvc/codehost.go?L64:9-64:20]"', ], [ 'diff', From 57b839bd55290c93f31478e1fbcd4e3674ad7383 Mon Sep 17 00:00:00 2001 From: Keegan Carruthers-Smith <keegan.csmith@gmail.com> Date: Mon, 20 Nov 2023 14:42:38 +0200 Subject: [PATCH 078/222] searcher: warn log deadline errors in hybrid search (#58429) Currently we are spamming sentry. This likely happens when a low search timeout is set or possibly transiently during a rollout of zoekt. Test Plan: unit tests will cover if this regresses functionality. --- cmd/searcher/internal/search/hybrid.go | 6 +++++- cmd/searcher/internal/search/search.go | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/cmd/searcher/internal/search/hybrid.go b/cmd/searcher/internal/search/hybrid.go index efb90fc665dba..5f0636d39d6c9 100644 --- a/cmd/searcher/internal/search/hybrid.go +++ b/cmd/searcher/internal/search/hybrid.go @@ -53,6 +53,9 @@ func (s *Service) hybrid(ctx context.Context, rootLogger log.Logger, p *protocol // request. As such we centralize our observability to always take into // account the state of the ctx. defer func() { + // We can downgrade error logs to rootLogger.Warn + errorLogger := rootLogger.Error + if err != nil { switch ctx.Err() { case context.Canceled: @@ -66,11 +69,12 @@ func (s *Service) hybrid(ctx context.Context, rootLogger log.Logger, p *protocol // path in this case. recordHybridFinalState("search-timeout") unsearched, ok = nil, true + errorLogger = rootLogger.Warn } } if err != nil { - rootLogger.Error("hybrid search failed", log.String("state", finalState), log.Error(err)) + errorLogger("hybrid search failed", log.String("state", finalState), log.Error(err)) } else { rootLogger.Debug("hybrid search done", log.String("state", finalState), log.Bool("ok", ok), log.Int("unsearched.len", len(unsearched))) } diff --git a/cmd/searcher/internal/search/search.go b/cmd/searcher/internal/search/search.go index af1041c7c0bf3..9a3fc7a6f95c0 100644 --- a/cmd/searcher/internal/search/search.go +++ b/cmd/searcher/internal/search/search.go @@ -238,7 +238,8 @@ func (s *Service) search(ctx context.Context, p *protocol.Request, sender matchS unsearched, ok, err := s.hybrid(ctx, logger, p, sender) if err != nil { - logger.Error("hybrid search failed", log.Error(err)) + // error logging is done inside of s.hybrid so we just return + // error here. return errors.Wrap(err, "hybrid search failed") } if !ok { From 000a43eec1fdaebed803215a02a9c068cead30a1 Mon Sep 17 00:00:00 2001 From: Varun Gandhi <varun.gandhi@sourcegraph.com> Date: Mon, 20 Nov 2023 20:43:41 +0800 Subject: [PATCH 079/222] bzl: Bump Rust version (#58223) There are a bunch of improvements since Rust 1.68.0 such as nicer panic messages, and sparse-by-default crates.io usage when using cargo directly. --- .tool-versions | 2 +- WORKSPACE | 2 +- cmd/symbols/Dockerfile | 2 +- docker-images/syntax-highlighter/.cargo/config.toml | 9 --------- docker-images/syntax-highlighter/Cargo.Bazel.lock | 2 +- .../syntax-highlighter/crates/scip-syntax/src/locals.rs | 2 +- .../crates/scip-treesitter-cli/src/index.rs | 2 +- .../crates/scip-treesitter-languages/src/parsers.rs | 2 +- .../crates/scip-treesitter/src/types.rs | 6 +----- .../crates/sg-syntax/src/sg_treesitter.rs | 2 +- src-tauri/README.md | 2 +- 11 files changed, 10 insertions(+), 23 deletions(-) diff --git a/.tool-versions b/.tool-versions index 02599e3a4c30b..8f6a13deae8c7 100644 --- a/.tool-versions +++ b/.tool-versions @@ -10,6 +10,6 @@ trivy 0.30.3 kustomize 4.5.7 awscli 2.4.7 python 3.11.3 system -rust 1.68.0 +rust 1.73.0 ruby 3.1.3 pnpm 8.9.2 diff --git a/WORKSPACE b/WORKSPACE index 17712c0947c39..d5a6450ccfcf0 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -305,7 +305,7 @@ load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_regi rules_rust_dependencies() -rust_version = "1.68.0" +rust_version = "1.73.0" rust_register_toolchains( edition = "2021", diff --git a/cmd/symbols/Dockerfile b/cmd/symbols/Dockerfile index b053ad941ed74..a72a5306bc04e 100644 --- a/cmd/symbols/Dockerfile +++ b/cmd/symbols/Dockerfile @@ -4,7 +4,7 @@ FROM sourcegraph/alpine-3.14:213466_2023-04-17_5.0-bdda34a71619@sha256:6354a4ff5 COPY cmd/symbols/ctags-install-alpine.sh /ctags-install-alpine.sh RUN /ctags-install-alpine.sh -FROM rust:1.68.0-alpine3.17@sha256:d119a621ae12f84ec0c5fed77c24795120ed1c7874b2428b5a6ccc0f294dbe18 as scip-ctags +FROM rust:1.73.0-alpine3.18@sha256:200be646c656b180aa9cf6cee1766f05fcf5bb0b94cf2900beeedca3bdf4016d as scip-ctags # hadolint ignore=DL3002 USER root RUN apk add --no-cache musl-dev>=1.1.24-r10 build-base diff --git a/docker-images/syntax-highlighter/.cargo/config.toml b/docker-images/syntax-highlighter/.cargo/config.toml index 7169f4d8e2562..cbbeb32c5299e 100644 --- a/docker-images/syntax-highlighter/.cargo/config.toml +++ b/docker-images/syntax-highlighter/.cargo/config.toml @@ -3,12 +3,3 @@ rustflags = ["-Clink-arg=-Wl,--dynamic-linker=/lib/ld-musl-aarch64.so.1"] [target.x86_64-unknown-linux-musl] rustflags = ["-Ctarget-feature=-crt-static"] - -[registry] -default = "crates-io" - -[registries.crates-io] -index = "https://crates.io" -protocol = "sparse" -# The sparse protocol cuts down on registry + crate fetching -# time from about 1m30s to 21s. diff --git a/docker-images/syntax-highlighter/Cargo.Bazel.lock b/docker-images/syntax-highlighter/Cargo.Bazel.lock index 3d1236e1f217b..991c1e084d0ad 100644 --- a/docker-images/syntax-highlighter/Cargo.Bazel.lock +++ b/docker-images/syntax-highlighter/Cargo.Bazel.lock @@ -1,5 +1,5 @@ { - "checksum": "b813eddd1263bbce3f460a00f5935f2831d593422814c1ba4f5f49fd5fb340d9", + "checksum": "11f7d9a0b9555b34f58c199ad41741442c4c6c493eb30b0cdb798b46612bff41", "crates": { "addr2line 0.20.0": { "name": "addr2line", diff --git a/docker-images/syntax-highlighter/crates/scip-syntax/src/locals.rs b/docker-images/syntax-highlighter/crates/scip-syntax/src/locals.rs index 03ef5b1bc9f2f..b26659f431078 100644 --- a/docker-images/syntax-highlighter/crates/scip-syntax/src/locals.rs +++ b/docker-images/syntax-highlighter/crates/scip-syntax/src/locals.rs @@ -29,7 +29,7 @@ impl<'a> PartialEq for Scope<'a> { impl<'a> PartialOrd for Scope<'a> { fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> { - self.range.partial_cmp(&other.range) + Some(self.cmp(other)) } } diff --git a/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/index.rs b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/index.rs index a814562bcb25e..6365a9b9ed227 100644 --- a/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/index.rs +++ b/docker-images/syntax-highlighter/crates/scip-treesitter-cli/src/index.rs @@ -137,7 +137,7 @@ pub fn index_command( for entry in walkdir::WalkDir::new(location) .into_iter() - .filter_entry(|e| is_valid(e)) + .filter_entry(is_valid) { let entry = entry.unwrap(); if !entry.file_type().is_dir() { diff --git a/docker-images/syntax-highlighter/crates/scip-treesitter-languages/src/parsers.rs b/docker-images/syntax-highlighter/crates/scip-treesitter-languages/src/parsers.rs index 440e51c2d8f66..de0f91556cc4b 100644 --- a/docker-images/syntax-highlighter/crates/scip-treesitter-languages/src/parsers.rs +++ b/docker-images/syntax-highlighter/crates/scip-treesitter-languages/src/parsers.rs @@ -122,7 +122,7 @@ impl BundledParser { } }; - HashSet::from_iter(ar.into_iter()) + HashSet::from_iter(ar) } // TODO(SuperAuguste): language detection library diff --git a/docker-images/syntax-highlighter/crates/scip-treesitter/src/types.rs b/docker-images/syntax-highlighter/crates/scip-treesitter/src/types.rs index 7febfa8602fd0..23155c7d4442c 100644 --- a/docker-images/syntax-highlighter/crates/scip-treesitter/src/types.rs +++ b/docker-images/syntax-highlighter/crates/scip-treesitter/src/types.rs @@ -69,11 +69,7 @@ impl PackedRange { impl PartialOrd for PackedRange { fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> { - (self.start_line, self.end_line, self.start_col).partial_cmp(&( - other.start_line, - other.end_line, - other.start_col, - )) + Some(self.cmp(other)) } } diff --git a/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_treesitter.rs b/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_treesitter.rs index 1746b241ba8ba..89766be041f3f 100644 --- a/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_treesitter.rs +++ b/docker-images/syntax-highlighter/crates/sg-syntax/src/sg_treesitter.rs @@ -85,7 +85,7 @@ pub fn index_language_with_config( // TODO: Could probably write this in a much better way. let mut local_occs = scip_syntax::get_locals(parser, code.as_bytes()) .unwrap_or(Ok(vec![])) - .unwrap_or(vec![]); + .unwrap_or_default(); // Get ranges in reverse order, because we're going to pop off the back of the list. // (that's why we're sorting the opposite way of the document occurrences above). diff --git a/src-tauri/README.md b/src-tauri/README.md index 02cd51b8e596a..21447d146cbf2 100644 --- a/src-tauri/README.md +++ b/src-tauri/README.md @@ -4,7 +4,7 @@ This contains all the Tauri code for the Cody App. Currently it consists of star ## Required software -- Rust 1.68.0 +- Rust 1.73.0 - pnpm ## Getting started From 8fa7514a9e060f091fb8be75c60199649ef96c17 Mon Sep 17 00:00:00 2001 From: sourcegraph-bot-devx <127119266+sourcegraph-bot-devx@users.noreply.github.com> Date: Mon, 20 Nov 2023 16:00:42 +0200 Subject: [PATCH 080/222] chore: update third-party licenses (#58423) Co-authored-by: bobheadxi <bobheadxi@users.noreply.github.com> Co-authored-by: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> --- third-party-licenses/ThirdPartyLicenses.csv | 58 +++++++++++---------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/third-party-licenses/ThirdPartyLicenses.csv b/third-party-licenses/ThirdPartyLicenses.csv index d71927ec134f3..d5f0a1344b344 100644 --- a/third-party-licenses/ThirdPartyLicenses.csv +++ b/third-party-licenses/ThirdPartyLicenses.csv @@ -187,7 +187,7 @@ PNPM,@graphql-codegen/schema-ast,2.6.0,MIT,"",Approved PNPM,@graphql-codegen/typescript,2.8.5,MIT,"",Approved PNPM,@graphql-codegen/typescript-apollo-client-helpers,2.2.6,MIT,"",Approved PNPM,@graphql-codegen/typescript-operations,2.5.10,MIT,"",Approved -PNPM,@graphql-codegen/visitor-plugin-common,2.13.5,MIT,"",Approved +PNPM,@graphql-codegen/visitor-plugin-common,2.13.1,MIT,"",Approved PNPM,@graphql-tools/apollo-engine-loader,7.3.21,MIT,"",Approved PNPM,@graphql-tools/batch-execute,8.5.14,MIT,"",Approved PNPM,@graphql-tools/code-file-loader,7.3.15,MIT,"",Approved @@ -661,6 +661,8 @@ PNPM,@types/tough-cookie,2.3.5,MIT,"",Approved PNPM,@types/trusted-types,2.0.3,MIT,"",Approved PNPM,@types/unist,2.0.3,MIT,"",Approved PNPM,@types/uuid,8.0.1,MIT,"",Approved +PNPM,@types/webidl-conversions,7.0.3,MIT,"",Approved +PNPM,@types/whatwg-url,11.0.3,MIT,"",Approved PNPM,@types/ws,8.5.3,MIT,"",Approved PNPM,@types/yargs,15.0.3,MIT,"",Approved PNPM,@types/yargs-parser,21.0.0,MIT,"",Approved @@ -795,7 +797,7 @@ PNPM,babel-plugin-syntax-trailing-function-commas,7.0.0-beta.0,MIT,"",Approved PNPM,babel-plugin-transform-flow-enums,0.0.2,MIT,"",Approved PNPM,babel-preset-fbjs,3.4.0,MIT,"",Approved PNPM,backbone,1.1.2,MIT,"",Approved -PNPM,balanced-match,1.0.0,MIT,"",Approved +PNPM,balanced-match,0.4.2,MIT,"",Approved PNPM,base64-js,1.5.1,MIT,"",Approved PNPM,basic-auth,2.0.1,MIT,"",Approved PNPM,before-after-hook,2.2.2,Apache 2.0,"",Approved @@ -860,7 +862,7 @@ PNPM,chardet,0.7.0,MIT,"",Approved PNPM,check-error,1.0.3,MIT,"",Approved PNPM,cheerio,1.0.0-rc.12,MIT,"",Approved PNPM,cheerio-select,2.1.0,Simplified BSD,"",Approved -PNPM,chokidar,3.5.3,MIT,"",Approved +PNPM,chokidar,3.5.1,MIT,"",Approved PNPM,chokidar-cli,2.1.0,MIT,"",Approved PNPM,chownr,1.1.4,ISC,"",Approved PNPM,chromatic,7.2.3,MIT,"",Approved @@ -927,7 +929,7 @@ PNPM,console-control-strings,1.1.0,ISC,"",Approved PNPM,constant-case,3.0.4,MIT,"",Approved PNPM,content-disposition,0.5.4,MIT,"",Approved PNPM,content-type,1.0.4,MIT,"",Approved -PNPM,convert-source-map,1.7.0,MIT,"",Approved +PNPM,convert-source-map,2.0.0,MIT,"",Approved PNPM,cookie,0.5.0,MIT,"",Approved PNPM,cookie-signature,1.0.6,MIT,"",Approved PNPM,cookiejar,2.1.3,MIT,"",Approved @@ -937,7 +939,7 @@ PNPM,core-js-compat,3.32.0,MIT,"",Approved PNPM,core-js-pure,3.26.1,MIT,"",Approved PNPM,core-util-is,1.0.3,MIT,"",Approved PNPM,cors,2.8.5,MIT,"",Approved -PNPM,cosmiconfig,7.0.1,MIT,"",Approved +PNPM,cosmiconfig,5.2.1,MIT,"",Approved PNPM,cosmiconfig-toml-loader,1.0.0,MIT,"",Approved PNPM,cosmiconfig-typescript-loader,4.3.0,MIT,"",Approved PNPM,create-error-class,3.0.2,MIT,"",Approved @@ -978,7 +980,7 @@ PNPM,dataloader,2.1.0,MIT,"",Approved PNPM,date-fns,2.29.3,MIT,"",Approved PNPM,dayjs,1.11.10,MIT,"",Approved PNPM,debounce,1.2.1,MIT,"",Approved -PNPM,debug,4.3.4,MIT,"",Approved +PNPM,debug,4.3.1,MIT,"",Approved PNPM,debuglog,1.0.1,MIT,"",Approved PNPM,decamelize,1.2.0,MIT,"",Approved PNPM,decamelize-keys,1.1.0,MIT,"",Approved @@ -1050,7 +1052,7 @@ PNPM,encodeurl,1.0.2,MIT,"",Approved PNPM,end-of-stream,1.4.4,MIT,"",Approved PNPM,enhanced-resolve,5.15.0,MIT,"",Approved PNPM,enquirer,2.3.6,MIT,"",Approved -PNPM,entities,2.2.0,Simplified BSD,"",Approved +PNPM,entities,2.1.0,Simplified BSD,"",Approved PNPM,envalid,7.3.1,MIT,"",Approved PNPM,envinfo,7.10.0,MIT,"",Approved PNPM,error-ex,1.3.2,MIT,"",Approved @@ -1075,7 +1077,7 @@ PNPM,esbuild-plugin-alias,0.2.1,MIT,"",Approved PNPM,esbuild-register,3.4.2,MIT,"",Approved PNPM,escalade,3.1.1,MIT,"",Approved PNPM,escape-html,1.0.3,MIT,"",Approved -PNPM,escape-string-regexp,1.0.5,MIT,"",Approved +PNPM,escape-string-regexp,2.0.0,MIT,"",Approved PNPM,escodegen,1.14.3,Simplified BSD,"",Approved PNPM,eslint,8.4.1,MIT,"",Approved PNPM,eslint-config-prettier,9.0.0,MIT,"",Approved @@ -1154,7 +1156,7 @@ PNPM,fill-range,7.0.1,MIT,"",Approved PNPM,finalhandler,1.1.2,MIT,"",Approved PNPM,find-cache-dir,2.1.0,MIT,"",Approved PNPM,find-parent-dir,0.3.1,MIT,"",Approved -PNPM,find-up,4.1.0,MIT,"",Approved +PNPM,find-up,2.1.0,MIT,"",Approved PNPM,flat,5.0.2,New BSD,"",Approved PNPM,flat-cache,3.0.4,MIT,"",Approved PNPM,flatted,3.2.1,ISC,"",Approved @@ -1190,7 +1192,7 @@ PNPM,gaxios,2.1.0,Apache 2.0,"",Approved PNPM,gcp-metadata,3.2.0,Apache 2.0,"",Approved PNPM,generic-names,4.0.0,MIT,"",Approved PNPM,gensync,1.0.0-beta.2,MIT,"",Approved -PNPM,get-caller-file,2.0.5,ISC,"",Approved +PNPM,get-caller-file,1.0.3,ISC,"",Approved PNPM,get-func-name,2.0.2,MIT,"",Approved PNPM,get-intrinsic,1.2.2,MIT,"",Approved PNPM,get-monorepo-packages,1.2.0,MIT,"",Approved @@ -1530,7 +1532,7 @@ Go,github.com/sourcegraph/run,v0.12.0,Apache 2.0,github.com/sourcegraph/run,Appr Go,github.com/sourcegraph/scip,v0.3.1-0.20230627154934-45df7f6d33fc,Apache 2.0,github.com/sourcegraph/scip,Approved Go,github.com/sourcegraph/tiktoken-go,v0.0.0-20230905173153-caab340cf008,MIT,github.com/sourcegraph/tiktoken-go,Approved Go,github.com/sourcegraph/yaml,v1.0.1-0.20200714132230-56936252f152,MIT,github.com/sourcegraph/yaml,Approved -Go,github.com/sourcegraph/zoekt,v0.0.0-20231110161813-2355607d5ff8,Apache 2.0,github.com/sourcegraph/zoekt,Approved +Go,github.com/sourcegraph/zoekt,v0.0.0-20231115091004-137eb8f22610,Apache 2.0,github.com/sourcegraph/zoekt,Approved Go,github.com/spf13/pflag,v1.0.5,New BSD,github.com/spf13/pflag,Approved Go,github.com/stretchr/testify,v1.8.4,MIT,github.com/stretchr/testify,Approved Go,github.com/throttled/throttled/v2,v2.12.0,New BSD,github.com/throttled/throttled,Approved @@ -1563,7 +1565,7 @@ Go,github.com/yuin/goldmark-highlighting/v2,v2.0.0-20220924101305-151362477c87,M Go,github.com/yuin/gopher-lua,v0.0.0-20210529063254-f4c35e4016d9,MIT,github.com/yuin/gopher-lua,Approved Go,github.com/zeebo/xxh3,v1.0.2,Simplified BSD,github.com/zeebo/xxh3,Approved PNPM,glob,7.1.6,ISC,"",Approved -PNPM,glob-parent,5.1.2,ISC,"",Approved +PNPM,glob-parent,6.0.2,ISC,"",Approved PNPM,glob-promise,3.4.0,ISC,"",Approved PNPM,glob-to-regexp,0.4.1,Simplified BSD,"",Approved PNPM,global-modules,2.0.0,MIT,"",Approved @@ -1855,7 +1857,7 @@ PNPM,json-stable-stringify,1.0.1,MIT,"",Approved PNPM,json-stable-stringify-without-jsonify,1.0.1,MIT,"",Approved PNPM,json-stringify-safe,5.0.1,ISC,"",Approved PNPM,json-to-pretty-yaml,1.2.2,Apache 2.0,"",Approved -PNPM,json5,1.0.1,MIT,"",Approved +PNPM,json5,2.2.3,MIT,"",Approved PNPM,jsonc-parser,3.2.0,MIT,"",Approved PNPM,jsonfile,4.0.0,MIT,"",Approved PNPM,jsonify,0.0.0,Public Domain,"",Approved @@ -1899,7 +1901,7 @@ PNPM,loader-runner,4.3.0,MIT,"",Approved PNPM,loader-utils,3.2.1,MIT,"",Approved PNPM,local-pkg,0.4.3,MIT,"",Approved PNPM,locate-character,3.0.0,MIT,"",Approved -PNPM,locate-path,5.0.0,MIT,"",Approved +PNPM,locate-path,2.0.0,MIT,"",Approved PNPM,lodash,4.17.21,MIT,"",Approved PNPM,lodash-es,4.17.21,MIT,"",Approved PNPM,lodash.camelcase,4.3.0,MIT,"",Approved @@ -1930,7 +1932,7 @@ PNPM,log-update,4.0.0,MIT,"",Approved PNPM,logkitty,0.7.1,MIT,"",Approved PNPM,loose-envify,1.4.0,MIT,"",Approved PNPM,loud-rejection,1.6.0,MIT,"",Approved -PNPM,loupe,2.3.6,MIT,"",Approved +PNPM,loupe,2.3.7,MIT,"",Approved PNPM,lower-case,2.0.2,MIT,"",Approved PNPM,lower-case-first,2.0.2,MIT,"",Approved PNPM,lowercase-keys,2.0.0,MIT,"",Approved @@ -1942,7 +1944,7 @@ PNPM,lunr,2.3.9,MIT,"",Approved PNPM,luxon,3.2.1,MIT,"",Approved PNPM,lz-string,1.5.0,MIT,"",Approved PNPM,macos-release,2.3.0,MIT,"",Approved -PNPM,magic-string,0.30.4,MIT,"",Approved +PNPM,magic-string,0.30.5,MIT,"",Approved PNPM,make-dir,2.1.0,MIT,"",Approved PNPM,make-error,1.3.6,ISC,"",Approved PNPM,makeerror,1.0.12,New BSD,"",Approved @@ -2092,12 +2094,12 @@ PNPM,p-defer,1.0.0,MIT,"",Approved PNPM,p-finally,1.0.0,MIT,"",Approved PNPM,p-is-promise,2.1.0,MIT,"",Approved PNPM,p-limit,4.0.0,MIT,"",Approved -PNPM,p-locate,4.1.0,MIT,"",Approved +PNPM,p-locate,2.0.0,MIT,"",Approved PNPM,p-map,4.0.0,MIT,"",Approved PNPM,p-queue,6.6.2,MIT,"",Approved PNPM,p-retry,4.6.0,MIT,"",Approved PNPM,p-timeout,4.1.0,MIT,"",Approved -PNPM,p-try,2.2.0,MIT,"",Approved +PNPM,p-try,1.0.0,MIT,"",Approved PNPM,pac-proxy-agent,5.0.0,MIT,"",Approved PNPM,pac-resolver,5.0.1,MIT,"",Approved PNPM,package-json,6.5.0,MIT,"",Approved @@ -2105,7 +2107,7 @@ PNPM,param-case,3.0.4,MIT,"",Approved PNPM,parent-module,1.0.1,MIT,"",Approved PNPM,parse-entities,2.0.0,MIT,"",Approved PNPM,parse-filepath,1.0.2,MIT,"",Approved -PNPM,parse-json,5.2.0,MIT,"",Approved +PNPM,parse-json,2.2.0,MIT,"",Approved PNPM,parse-package-name,0.1.0,MIT,"",Approved PNPM,parse-semver,1.1.1,MIT,"",Approved PNPM,parse5,7.1.2,MIT,"",Approved @@ -2124,7 +2126,7 @@ PNPM,path-root,0.1.1,MIT,"",Approved PNPM,path-root-regex,0.1.2,MIT,"",Approved PNPM,path-scurry,1.10.1,BlueOak-1.0.0,"",Approved PNPM,path-to-regexp,6.2.0,MIT,"",Approved -PNPM,path-type,4.0.0,MIT,"",Approved +PNPM,path-type,3.0.0,MIT,"",Approved PNPM,pathe,1.1.1,MIT,"",Approved PNPM,pathval,1.1.1,MIT,"",Approved PNPM,peek-stream,1.1.3,MIT,"",Approved @@ -2185,7 +2187,7 @@ PNPM,psl,1.8.0,MIT,"",Approved PNPM,pstree.remy,1.1.8,MIT,"",Approved PNPM,pump,3.0.0,MIT,"",Approved PNPM,pumpify,1.5.1,MIT,"",Approved -PNPM,punycode,1.3.2,MIT,"",Approved +PNPM,punycode,2.3.1,MIT,"",Approved PNPM,puppeteer,13.7.0,Apache 2.0,"",Approved PNPM,puppeteer-core,2.1.1,Apache 2.0,"",Approved PNPM,pvtsutils,1.3.2,MIT,"",Approved @@ -2246,7 +2248,7 @@ PNPM,read-pkg,1.1.0,MIT,"",Approved PNPM,read-pkg-up,1.0.1,MIT,"",Approved PNPM,readable-stream,3.6.2,MIT,"",Approved PNPM,readdir-scoped-modules,1.1.0,ISC,"",Approved -PNPM,readdirp,3.6.0,MIT,"",Approved +PNPM,readdirp,3.5.0,MIT,"",Approved PNPM,readline,1.3.0,BSD,"",Approved PNPM,recast,0.21.5,MIT,"",Approved PNPM,recharts,1.8.5,MIT,"",Approved @@ -2260,7 +2262,7 @@ PNPM,reflect.getprototypeof,1.0.4,MIT,"",Approved PNPM,refractor,3.6.0,MIT,"",Approved PNPM,regenerate,1.4.2,MIT,"",Approved PNPM,regenerate-unicode-properties,10.1.0,MIT,"",Approved -PNPM,regenerator-runtime,0.13.11,MIT,"",Approved +PNPM,regenerator-runtime,0.14.0,MIT,"",Approved PNPM,regenerator-transform,0.15.1,MIT,"",Approved PNPM,regexp-tree,0.1.27,MIT,"",Approved PNPM,regexp.prototype.flags,1.5.1,MIT,"",Approved @@ -2473,7 +2475,7 @@ PNPM,tiny-invariant,1.3.1,MIT,"",Approved PNPM,tiny-warning,1.0.3,MIT,"",Approved PNPM,tinybench,2.5.0,MIT,"",Approved PNPM,tinypool,0.6.0,MIT,"",Approved -PNPM,tinyspy,2.1.1,MIT,"",Approved +PNPM,tinyspy,2.2.0,MIT,"",Approved PNPM,title-case,3.0.3,MIT,"",Approved PNPM,titleize,3.0.0,MIT,"",Approved PNPM,tmp,0.2.1,MIT,"",Approved @@ -2487,7 +2489,7 @@ PNPM,toidentifier,1.0.1,MIT,"",Approved PNPM,totalist,3.0.0,MIT,"",Approved PNPM,touch,3.1.0,ISC,"",Approved PNPM,tough-cookie,4.1.2,New BSD,"",Approved -PNPM,tr46,0.0.3,MIT,"",Approved +PNPM,tr46,5.0.0,MIT,"",Approved PNPM,tree-kill,1.2.2,MIT,"",Approved PNPM,treeify,1.1.0,MIT,"",Approved PNPM,trim-extra-html-whitespace,1.3.0,Apache 2.0,"",Approved @@ -2528,7 +2530,7 @@ PNPM,unbox-primitive,1.0.2,MIT,"",Approved PNPM,unbzip2-stream,1.4.3,MIT,"",Approved PNPM,unc-path-regex,0.1.2,MIT,"",Approved PNPM,undefsafe,2.0.5,MIT,"",Approved -PNPM,underscore,1.13.6,MIT,"",Approved +PNPM,underscore,1.13.1,MIT,"",Approved PNPM,undici,5.22.1,MIT,"",Approved PNPM,unicode-canonical-property-names-ecmascript,2.0.0,MIT,"",Approved PNPM,unicode-match-property-ecmascript,2.0.0,MIT,"",Approved @@ -2611,7 +2613,7 @@ PNPM,webpack-virtual-modules,0.5.0,MIT,"",Approved PNPM,whatwg-encoding,2.0.0,MIT,"",Approved PNPM,whatwg-fetch,3.6.19,MIT,"",Approved PNPM,whatwg-mimetype,3.0.0,MIT,"",Approved -PNPM,whatwg-url,5.0.0,MIT,"",Approved +PNPM,whatwg-url,14.0.0,MIT,"",Approved PNPM,which,1.3.1,ISC,"",Approved PNPM,which-boxed-primitive,1.0.2,MIT,"",Approved PNPM,which-builtin-type,1.1.3,MIT,"",Approved @@ -2625,7 +2627,7 @@ PNPM,windows-release,3.2.0,MIT,"",Approved PNPM,word-wrap,1.2.3,MIT,"",Approved PNPM,wordwrap,1.0.0,MIT,"",Approved PNPM,workerpool,6.1.0,Apache 2.0,"",Approved -PNPM,wrap-ansi,6.2.0,MIT,"",Approved +PNPM,wrap-ansi,5.1.0,MIT,"",Approved PNPM,wrappy,1.0.2,ISC,"",Approved PNPM,write-file-atomic,4.0.2,ISC,"",Approved PNPM,write-json-file,2.3.0,MIT,"",Approved From 4e450ae5ffa17a1952e76093358e409e67347c52 Mon Sep 17 00:00:00 2001 From: Jean-Hadrien Chabran <jean-hadrien.chabran@sourcegraph.com> Date: Mon, 20 Nov 2023 15:24:18 +0100 Subject: [PATCH 081/222] bzl: containerize scip-ctags (#58407) --- docker-images/syntax-highlighter/BUILD.bazel | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docker-images/syntax-highlighter/BUILD.bazel b/docker-images/syntax-highlighter/BUILD.bazel index 65fca2251e7b9..85e05ed236c3f 100644 --- a/docker-images/syntax-highlighter/BUILD.bazel +++ b/docker-images/syntax-highlighter/BUILD.bazel @@ -53,6 +53,27 @@ rust_binary( ], ) +pkg_tar( + name = "tar_scip-ctags", + srcs = [":scip-ctags"], +) + +# We are shipping a minimal scip-ctags container, which is used for testing purposes +# in the zoekt repository, so we can test it against it instead of scip-ctags, +# reflecting better real production usage. +oci_image( + name = "scip-ctags_image", + base = "@wolfi_base", + entrypoint = ["/scip-ctags"], + tars = [":tar_scip-ctags"], +) + +oci_tarball( + name = "scip-ctags_image_tarball", + image = ":scip-ctags_image", + repo_tags = ["scip-ctags:candidate"], +) + pkg_tar( name = "tar_syntect_server", srcs = [":syntect_server"], From a614957c49e56e417e405188ac68f42a0742e3c2 Mon Sep 17 00:00:00 2001 From: Thorsten Ball <mrnugget@gmail.com> Date: Mon, 20 Nov 2023 15:49:11 +0100 Subject: [PATCH 082/222] repo exclusion: switch to dynamic rule builder (#58405) --- internal/repos/awscodecommit.go | 22 ++-- internal/repos/azuredevops.go | 19 ++-- internal/repos/bitbucketcloud.go | 34 +++--- internal/repos/bitbucketserver.go | 40 +++---- internal/repos/exclude.go | 172 ++++++++++++++++-------------- internal/repos/exclude_test.go | 102 ++++++++++++++++-- internal/repos/github.go | 57 +++++----- internal/repos/gitlab.go | 35 +++--- internal/repos/gitolite.go | 26 ++--- internal/repos/other.go | 32 +++--- internal/repos/sources_test.go | 2 +- 11 files changed, 327 insertions(+), 214 deletions(-) diff --git a/internal/repos/awscodecommit.go b/internal/repos/awscodecommit.go index 135cdff679a9b..477c44a4360d8 100644 --- a/internal/repos/awscodecommit.go +++ b/internal/repos/awscodecommit.go @@ -33,7 +33,7 @@ type AWSCodeCommitSource struct { awsRegion string client *awscodecommit.Client - exclude excludeFunc + excluder repoExcluder } // NewAWSCodeCommitSource returns a new AWSCodeCommitSource from the given external service. @@ -85,21 +85,21 @@ func newAWSCodeCommitSource(svc *types.ExternalService, c *schema.AWSCodeCommitC return nil, err } - var eb excludeBuilder + var ex repoExcluder for _, r := range c.Exclude { - eb.Exact(r.Name) - eb.Exact(r.Id) + ex.AddRule(). + Exact(r.Name). + Exact(r.Id) } - exclude, err := eb.Build() - if err != nil { + if err := ex.RuleErrors(); err != nil { return nil, err } s := &AWSCodeCommitSource{ - svc: svc, - config: c, - exclude: exclude, - client: awscodecommit.NewClient(awsConfig), + svc: svc, + config: c, + excluder: ex, + client: awscodecommit.NewClient(awsConfig), } endpoint, err := codecommit.NewDefaultEndpointResolver().ResolveEndpoint(c.Region, codecommit.EndpointResolverOptions{}) @@ -176,7 +176,7 @@ func (s *AWSCodeCommitSource) listAllRepositories(ctx context.Context, results c } func (s *AWSCodeCommitSource) excludes(r *awscodecommit.Repository) bool { - return s.exclude(r.Name) || s.exclude(r.ID) + return s.excluder.ShouldExclude(r.Name) || s.excluder.ShouldExclude(r.ID) } // The code below is copied from diff --git a/internal/repos/azuredevops.go b/internal/repos/azuredevops.go index 1d4974ba0eb70..262eec33e4459 100644 --- a/internal/repos/azuredevops.go +++ b/internal/repos/azuredevops.go @@ -7,6 +7,7 @@ import ( "github.com/goware/urlx" "github.com/sourcegraph/log" + "github.com/sourcegraph/sourcegraph/internal/api" "github.com/sourcegraph/sourcegraph/internal/extsvc" "github.com/sourcegraph/sourcegraph/internal/extsvc/auth" @@ -26,7 +27,7 @@ type AzureDevOpsSource struct { serviceID string config schema.AzureDevOpsConnection logger log.Logger - exclude excludeFunc + excluder repoExcluder } // NewAzureDevOpsSource returns a new AzureDevOpsSource from the given external service. @@ -54,14 +55,13 @@ func NewAzureDevOpsSource(ctx context.Context, logger log.Logger, svc *types.Ext return nil, err } - var eb excludeBuilder + var ex repoExcluder for _, r := range c.Exclude { - eb.Exact(r.Name) - eb.Pattern(r.Pattern) + ex.AddRule(). + Exact(r.Name). + Pattern(r.Pattern) } - - exclude, err := eb.Build() - if err != nil { + if err := ex.RuleErrors(); err != nil { return nil, err } @@ -71,7 +71,7 @@ func NewAzureDevOpsSource(ctx context.Context, logger log.Logger, svc *types.Ext serviceID: extsvc.NormalizeBaseURL(cli.GetURL()).String(), config: c, logger: logger, - exclude: exclude, + excluder: ex, }, nil } @@ -115,7 +115,8 @@ func (s *AzureDevOpsSource) processReposFromProjectOrOrg(ctx context.Context, na results <- SourceResult{Source: s, Err: err} continue } - if s.exclude(fmt.Sprintf("%s/%s/%s", org, repo.Project.Name, repo.Name)) { + fullName := fmt.Sprintf("%s/%s/%s", org, repo.Project.Name, repo.Name) + if s.excluder.ShouldExclude(fullName) { continue } repo, err := s.makeRepo(repo) diff --git a/internal/repos/bitbucketcloud.go b/internal/repos/bitbucketcloud.go index 0360e85a40137..897ebf42c5490 100644 --- a/internal/repos/bitbucketcloud.go +++ b/internal/repos/bitbucketcloud.go @@ -23,11 +23,11 @@ import ( // A BitbucketCloudSource yields repositories from a single BitbucketCloud connection configured // in Sourcegraph via the external services configuration. type BitbucketCloudSource struct { - svc *types.ExternalService - config *schema.BitbucketCloudConnection - exclude excludeFunc - client bitbucketcloud.Client - logger log.Logger + svc *types.ExternalService + config *schema.BitbucketCloudConnection + excluder repoExcluder + client bitbucketcloud.Client + logger log.Logger } var _ UserSource = &BitbucketCloudSource{} @@ -55,14 +55,14 @@ func newBitbucketCloudSource(logger log.Logger, svc *types.ExternalService, c *s return nil, err } - var eb excludeBuilder + var ex repoExcluder for _, r := range c.Exclude { - eb.Exact(r.Name) - eb.Exact(r.Uuid) - eb.Pattern(r.Pattern) + ex.AddRule(). + Exact(r.Name). + Exact(r.Uuid). + Pattern(r.Pattern) } - exclude, err := eb.Build() - if err != nil { + if err := ex.RuleErrors(); err != nil { return nil, err } @@ -72,11 +72,11 @@ func newBitbucketCloudSource(logger log.Logger, svc *types.ExternalService, c *s } return &BitbucketCloudSource{ - svc: svc, - config: c, - exclude: exclude, - client: client, - logger: logger, + svc: svc, + config: c, + excluder: ex, + client: client, + logger: logger, }, nil } @@ -161,7 +161,7 @@ func (s *BitbucketCloudSource) remoteURL(repo *bitbucketcloud.Repo) string { } func (s *BitbucketCloudSource) excludes(r *bitbucketcloud.Repo) bool { - return s.exclude(r.FullName) || s.exclude(r.UUID) + return s.excluder.ShouldExclude(r.FullName) || s.excluder.ShouldExclude(r.UUID) } func (s *BitbucketCloudSource) listAllRepos(ctx context.Context, results chan SourceResult) { diff --git a/internal/repos/bitbucketserver.go b/internal/repos/bitbucketserver.go index 9887b197b0fe5..2876278877986 100644 --- a/internal/repos/bitbucketserver.go +++ b/internal/repos/bitbucketserver.go @@ -24,11 +24,11 @@ import ( // A BitbucketServerSource yields repositories from a single BitbucketServer connection configured // in Sourcegraph via the external services configuration. type BitbucketServerSource struct { - svc *types.ExternalService - config *schema.BitbucketServerConnection - exclude excludeFunc - client *bitbucketserver.Client - logger log.Logger + svc *types.ExternalService + config *schema.BitbucketServerConnection + excluder repoExcluder + client *bitbucketserver.Client + logger log.Logger } var _ Source = &BitbucketServerSource{} @@ -64,14 +64,18 @@ func newBitbucketServerSource(logger log.Logger, svc *types.ExternalService, c * return nil, err } - var eb excludeBuilder + var ex repoExcluder for _, r := range c.Exclude { - eb.Exact(r.Name) - eb.Exact(strconv.Itoa(r.Id)) - eb.Pattern(r.Pattern) + rule := ex.AddRule() + rule. + Exact(r.Name). + Pattern(r.Pattern) + + if r.Id != 0 { + rule.Exact(strconv.Itoa(r.Id)) + } } - exclude, err := eb.Build() - if err != nil { + if err := ex.RuleErrors(); err != nil { return nil, err } @@ -81,11 +85,11 @@ func newBitbucketServerSource(logger log.Logger, svc *types.ExternalService, c * } return &BitbucketServerSource{ - svc: svc, - config: c, - exclude: exclude, - client: client, - logger: logger, + svc: svc, + config: c, + excluder: ex, + client: client, + logger: logger, }, nil } @@ -203,8 +207,8 @@ func (s *BitbucketServerSource) excludes(r *bitbucketserver.Repo) bool { name = r.Project.Key + "/" + name } if r.State != "AVAILABLE" || - s.exclude(name) || - s.exclude(strconv.Itoa(r.ID)) || + s.excluder.ShouldExclude(name) || + s.excluder.ShouldExclude(strconv.Itoa(r.ID)) || (s.config.ExcludePersonalRepositories && r.IsPersonalRepository()) { return true } diff --git a/internal/repos/exclude.go b/internal/repos/exclude.go index 299ea34805f10..3cd423d5aeec3 100644 --- a/internal/repos/exclude.go +++ b/internal/repos/exclude.go @@ -9,124 +9,127 @@ import ( "github.com/sourcegraph/sourcegraph/internal/bytesize" "github.com/sourcegraph/sourcegraph/internal/extsvc/github" "github.com/sourcegraph/sourcegraph/lib/errors" - "github.com/sourcegraph/sourcegraph/schema" ) // excludeFunc takes either a generic object and returns true if the repo should be excluded. In // the case of repo sourcing it will take a repository name, ID, or the repo itself as input. type excludeFunc func(input any) bool -// excludeBuilder builds an excludeFunc. -type excludeBuilder struct { - exact map[string]struct{} +// repoExcluder is made up of several rules that can be chained together to +// exclude a repository. +// +// Rules can be added by calling `repoExcluder.AddRule()`. +// +// After rules have been added, the caller uses `ShouldExclude` to check if a +// repo should be excluded. In that call, all the rules are OR'd together. If +// one rule excludes, the repo is excluded. +type repoExcluder struct { + rules []*rule +} + +func (e *repoExcluder) ShouldExclude(input any) bool { + for _, r := range e.rules { + if r.Excludes(input) { + return true + } + } + + return false +} + +func (e *repoExcluder) AddRule() *rule { + r := &rule{} + e.rules = append(e.rules, r) + return r +} + +func (e *repoExcluder) RuleErrors() error { + var err errors.MultiError + for _, r := range e.rules { + err = errors.Append(err, r.err) + } + return err +} + +// rule represents a single exclusion, whose conditions must all be bet in +// order to exclude a repository. +type rule struct { + exact string patterns []*regexp.Regexp generic []excludeFunc - err error + + // err can be set during construction if any patterns failed to compile. + err error } -// Exact will case-insensitively exclude the string name. -func (e *excludeBuilder) Exact(name string) { - if e.exact == nil { - e.exact = map[string]struct{}{} - } +// Exact will keep track of the exact value passed in and then match it against +// the input of the `Excludes` method. +// +// If the input is an empty string, it will be ignored. +func (r *rule) Exact(name string) *rule { if name == "" { - return + return r } - e.exact[strings.ToLower(name)] = struct{}{} + r.exact = strings.ToLower(name) + return r } // Pattern will exclude strings matching the regex pattern. -func (e *excludeBuilder) Pattern(pattern string) { +func (r *rule) Pattern(pattern string) *rule { if pattern == "" { - return + return r } re, err := regexp.Compile(pattern) if err != nil { - e.err = err - return + r.err = err + return r } - e.patterns = append(e.patterns, re) + r.patterns = append(r.patterns, re) + return r } // Generic registers the passed in exclude function that will be used to determine whether a repo // should be excluded. -func (e *excludeBuilder) Generic(ef excludeFunc) { +func (r *rule) Generic(ef excludeFunc) *rule { if ef == nil { - return + return r } - e.generic = append(e.generic, ef) + r.generic = append(r.generic, ef) + return r } -// Build will return an excludeFunc based on the previous calls to Exact, Pattern, and -// Generic. -func (e *excludeBuilder) Build() (excludeFunc, error) { - return func(input any) bool { - if inputString, ok := input.(string); ok { - if _, ok := e.exact[strings.ToLower(inputString)]; ok { - return true - } +// Excludes returns true if the input matches ALL of the previously set +// attributes of the rule. +func (r *rule) Excludes(input any) bool { + exclude := false - for _, re := range e.patterns { - if re.MatchString(inputString) { - return true - } - } - } else { - for _, ef := range e.generic { - if ef(input) { - return true - } - } + if inputString, ok := input.(string); ok { + if r.exact == strings.ToLower(inputString) { + exclude = true } - return false - }, e.err -} - -func buildGitHubExcludeRule(rule *schema.ExcludedGitHubRepo) (excludeFunc, error) { - var fns []gitHubExcludeFunc - if rule.Stars != "" { - fn, err := buildStarsConstraintsExcludeFn(rule.Stars) - if err != nil { - return nil, err - } - fns = append(fns, fn) - } - - if rule.Size != "" { - fn, err := buildSizeConstraintsExcludeFn(rule.Size) - if err != nil { - return nil, err + for _, re := range r.patterns { + exclude = re.MatchString(inputString) + if !exclude { + return false + } } - fns = append(fns, fn) } - return func(repo any) bool { - githubRepo, ok := repo.(github.Repository) - if !ok { + for _, ef := range r.generic { + exclude = ef(input) + if !exclude { return false } + } - // We're AND'ing the functions together. If one of them does NOT exclude - // the repository, then we don't exclude it. - for _, fn := range fns { - excluded := fn(githubRepo) - if !excluded { - return false - } - } - - return true - }, nil + return exclude } -type gitHubExcludeFunc func(github.Repository) bool - var starsConstraintRegex = regexp.MustCompile(`([<>=]{1,2})\s*(\d+)`) -var sizeConstraintRegex = regexp.MustCompile(`([<>=]{1,2})\s*(\d+\s*\w+)`) -func buildStarsConstraintsExcludeFn(constraint string) (gitHubExcludeFunc, error) { +func buildStarsConstraintsExcludeFn(constraint string) (excludeFunc, error) { matches := starsConstraintRegex.FindStringSubmatch(constraint) if matches == nil { return nil, errors.Newf("invalid stars constraint format: %q", constraint) @@ -142,12 +145,18 @@ func buildStarsConstraintsExcludeFn(constraint string) (gitHubExcludeFunc, error return nil, err } - return func(r github.Repository) bool { + return func(input any) bool { + r, ok := input.(github.Repository) + if !ok { + return false + } return operator.Eval(r.StargazerCount, count) }, nil } -func buildSizeConstraintsExcludeFn(constraint string) (gitHubExcludeFunc, error) { +var sizeConstraintRegex = regexp.MustCompile(`([<>=]{1,2})\s*(\d+\s*\w+)`) + +func buildSizeConstraintsExcludeFn(constraint string) (excludeFunc, error) { sizeMatch := sizeConstraintRegex.FindStringSubmatch(constraint) if sizeMatch == nil { return nil, errors.Newf("invalid size constraint format: %q", constraint) @@ -163,7 +172,12 @@ func buildSizeConstraintsExcludeFn(constraint string) (gitHubExcludeFunc, error) return nil, err } - return func(r github.Repository) bool { + return func(input any) bool { + r, ok := input.(github.Repository) + if !ok { + return false + } + repoSize := int(r.SizeBytes()) // If we don't have a repository size, we don't exclude diff --git a/internal/repos/exclude_test.go b/internal/repos/exclude_test.go index 35c04e29244dc..9eabd5502df0a 100644 --- a/internal/repos/exclude_test.go +++ b/internal/repos/exclude_test.go @@ -1,26 +1,114 @@ package repos import ( + "strings" "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/sourcegraph/sourcegraph/internal/extsvc/github" "github.com/sourcegraph/sourcegraph/schema" ) -func TestBuildGitHubExcludeRule(t *testing.T) { - assertExcluded := func(t *testing.T, rule *schema.ExcludedGitHubRepo, repo github.Repository, wantExcluded bool) { +func TestRepoExcluderRuleErrors(t *testing.T) { + var ex repoExcluder + + ex.AddRule().Pattern("valid") + require.NoError(t, ex.RuleErrors()) + + ex.AddRule().Pattern("[\\\\") + require.Error(t, ex.RuleErrors()) +} + +func TestRuleExcludes(t *testing.T) { + startsWithFoo := func(input any) bool { + if s, ok := input.(string); ok { + return strings.HasPrefix(s, "foo") + } + return false + } + + t.Run("ExactName", func(t *testing.T) { + r := &rule{} + r.Exact("foobar") + + assert.Equal(t, true, r.Excludes("foobar")) + assert.Equal(t, false, r.Excludes("barfoo")) + + // Only one exact value can exist + r.Exact("barfoo") + assert.Equal(t, false, r.Excludes("foobar")) + assert.Equal(t, true, r.Excludes("barfoo")) + }) + + t.Run("Pattern", func(t *testing.T) { + r := &rule{} + r.Pattern("^foo.*") + + assert.Equal(t, true, r.Excludes("foobar")) + assert.Equal(t, false, r.Excludes("barfoo")) + }) + + t.Run("Generic", func(t *testing.T) { + r := &rule{} + r.Generic(startsWithFoo) + + assert.Equal(t, true, r.Excludes("foobar")) + assert.Equal(t, false, r.Excludes("barfoo")) + }) + + t.Run("multiple conditions", func(t *testing.T) { + r := &rule{} + r.Exact("foobar") + r.Pattern("^foo.*") + + assert.Equal(t, true, r.Excludes("foobar")) + assert.Equal(t, false, r.Excludes("barfoo")) + + r.Generic(startsWithFoo) + + assert.Equal(t, true, r.Excludes("foobar")) + assert.Equal(t, false, r.Excludes("barfoo")) + + endsWithFoo := func(input any) bool { + if s, ok := input.(string); ok { + return strings.HasSuffix(s, "foo") + } + return false + } + + r.Generic(endsWithFoo) + // All conditions have to be true and no argument here fulfills all of them + assert.Equal(t, false, r.Excludes("foobar")) + assert.Equal(t, false, r.Excludes("barfoo")) + }) +} + +func TestGitHubStarsAndSize(t *testing.T) { + assertExcluded := func(t *testing.T, githubRule *schema.ExcludedGitHubRepo, repo github.Repository, wantExcluded bool) { t.Helper() - fn, err := buildGitHubExcludeRule(rule) - assert.Nil(t, err) + rule := &rule{} + + if githubRule.Stars != "" { + fn, err := buildStarsConstraintsExcludeFn(githubRule.Stars) + require.NoError(t, err) + rule.Generic(fn) + } + + if githubRule.Size != "" { + fn, err := buildSizeConstraintsExcludeFn(githubRule.Size) + require.NoError(t, err) + rule.Generic(fn) + } + assert.Equal( t, wantExcluded, - fn(repo), + rule.Excludes(repo), "rule.Stars=%q, rule.Size=%q, repo.StarGazerCount=%d, repo.DiskUsageKibibytes=%d", - rule.Stars, - rule.Size, + githubRule.Stars, + githubRule.Size, repo.StargazerCount, repo.DiskUsageKibibytes, ) diff --git a/internal/repos/github.go b/internal/repos/github.go index 61073fa3b8c61..c119be8331c7e 100644 --- a/internal/repos/github.go +++ b/internal/repos/github.go @@ -36,7 +36,7 @@ import ( type GitHubSource struct { svc *types.ExternalService config *schema.GitHubConnection - exclude excludeFunc + excluder repoExcluder githubDotCom bool baseURL *url.URL v3Client *github.V3Client @@ -121,7 +121,7 @@ func newGitHubSource( return nil, err } - var eb excludeBuilder + var ex repoExcluder excludeArchived := func(repo any) bool { if githubRepo, ok := repo.(github.Repository); ok { return githubRepo.IsArchived @@ -136,33 +136,37 @@ func newGitHubSource( } for _, r := range c.Exclude { - // TODO: Size/Stars are special-case'd here and are AND'ed if both set. - // This condition here should be replace with something that builds an - // exclude-function for all possible values a schema.ExcludedGitHubRepo - // could have. - if r.Size != "" || r.Stars != "" { - fn, err := buildGitHubExcludeRule(r) + rule := ex.AddRule(). + Exact(r.Name). + Exact(r.Id). + Pattern(r.Pattern) + + if r.Size != "" { + fn, err := buildSizeConstraintsExcludeFn(r.Size) + if err != nil { + return nil, err + } + rule.Generic(fn) + } + if r.Stars != "" { + fn, err := buildStarsConstraintsExcludeFn(r.Stars) if err != nil { return nil, err } - eb.Generic(fn) + rule.Generic(fn) } if r.Archived { - eb.Generic(excludeArchived) + rule.Generic(excludeArchived) } if r.Forks { - eb.Generic(excludeFork) + rule.Generic(excludeFork) } - eb.Exact(r.Name) - eb.Exact(r.Id) - eb.Pattern(r.Pattern) } - - exclude, err := eb.Build() - if err != nil { + if err := ex.RuleErrors(); err != nil { return nil, err } + auther, err := ghauth.FromConnection(ctx, c, db.GitHubApps(), keyring.Default().GitHubAppKey) if err != nil { return nil, err @@ -201,7 +205,7 @@ func newGitHubSource( return &GitHubSource{ svc: svc, config: c, - exclude: exclude, + excluder: ex, baseURL: baseURL, githubDotCom: githubDotCom, v3Client: v3Client, @@ -327,16 +331,11 @@ func (s *GitHubSource) fetchReposAffiliated(ctx context.Context, first int, excl close(unfiltered) }() - var eb excludeBuilder - // Only exclude on exact nameWithOwner match + set := make(map[string]struct{}) for _, r := range excludedRepos { - eb.Exact(r) - } - exclude, err := eb.Build() - if err != nil { - results <- SourceResult{Source: s, Err: err} - return + set[r] = struct{}{} } + excluded := func(name string) bool { _, ok := set[name]; return ok } s.logger.Debug("fetch github repos by affiliation", log.Int("excluded repos count", len(excludedRepos))) for res := range unfiltered { @@ -348,7 +347,7 @@ func (s *GitHubSource) fetchReposAffiliated(ctx context.Context, first int, excl continue } s.logger.Debug("unfiltered", log.String("repo", res.repo.NameWithOwner)) - if !exclude(res.repo.NameWithOwner) { + if !excluded(res.repo.NameWithOwner) { results <- SourceResult{Source: s, Repo: s.makeRepo(res.repo)} s.logger.Debug("sent to result", log.String("repo", res.repo.NameWithOwner)) first-- @@ -457,7 +456,9 @@ func (s *GitHubSource) excludes(r *github.Repository) bool { return true } - if s.exclude(r.NameWithOwner) || s.exclude(r.ID) || s.exclude(*r) { + if s.excluder.ShouldExclude(r.NameWithOwner) || + s.excluder.ShouldExclude(r.ID) || + s.excluder.ShouldExclude(*r) { return true } diff --git a/internal/repos/gitlab.go b/internal/repos/gitlab.go index fc6c1b5243f0e..9b78bbddbb49c 100644 --- a/internal/repos/gitlab.go +++ b/internal/repos/gitlab.go @@ -30,7 +30,7 @@ import ( type GitLabSource struct { svc *types.ExternalService config *schema.GitLabConnection - exclude excludeFunc + excluder repoExcluder baseURL *url.URL // URL with path /api/v4 (no trailing slash) nameTransformations reposource.NameTransformations provider *gitlab.ClientProvider @@ -90,23 +90,26 @@ func newGitLabSource(logger log.Logger, svc *types.ExternalService, c *schema.Gi return nil, err } - var eb excludeBuilder + var ex repoExcluder for _, r := range c.Exclude { - eb.Exact(r.Name) - eb.Exact(strconv.Itoa(r.Id)) - eb.Pattern(r.Pattern) - excludeFunc := func(repo any) bool { - if project, ok := repo.(gitlab.Project); ok { - return project.EmptyRepo - } - return false + rule := ex.AddRule(). + Exact(r.Name). + Pattern(r.Pattern) + + if r.Id != 0 { + rule.Exact(strconv.Itoa(r.Id)) } + if r.EmptyRepos { - eb.Generic(excludeFunc) + rule.Generic(func(repo any) bool { + if project, ok := repo.(gitlab.Project); ok { + return project.EmptyRepo + } + return false + }) } } - exclude, err := eb.Build() - if err != nil { + if err := ex.RuleErrors(); err != nil { return nil, err } @@ -140,7 +143,7 @@ func newGitLabSource(logger log.Logger, svc *types.ExternalService, c *schema.Gi return &GitLabSource{ svc: svc, config: c, - exclude: exclude, + excluder: ex, baseURL: baseURL, nameTransformations: nts, provider: provider, @@ -255,7 +258,9 @@ func (s *GitLabSource) remoteURL(proj *gitlab.Project) string { } func (s *GitLabSource) excludes(p *gitlab.Project) bool { - return s.exclude(p.PathWithNamespace) || s.exclude(strconv.Itoa(p.ID)) || s.exclude(*p) + return s.excluder.ShouldExclude(p.PathWithNamespace) || + s.excluder.ShouldExclude(strconv.Itoa(p.ID)) || + s.excluder.ShouldExclude(*p) } func (s *GitLabSource) listAllProjects(ctx context.Context, results chan SourceResult) { diff --git a/internal/repos/gitolite.go b/internal/repos/gitolite.go index b195221d32e28..2e0693ffbe81f 100644 --- a/internal/repos/gitolite.go +++ b/internal/repos/gitolite.go @@ -18,9 +18,9 @@ import ( // A GitoliteSource yields repositories from a single Gitolite connection configured // in Sourcegraph via the external services configuration. type GitoliteSource struct { - svc *types.ExternalService - conn *schema.GitoliteConnection - exclude excludeFunc + svc *types.ExternalService + conn *schema.GitoliteConnection + excluder repoExcluder // gitoliteLister allows us to list Gitlolite repos. In practice, we ask // gitserver to talk to gitolite because it holds the ssh keys required for @@ -50,23 +50,23 @@ func NewGitoliteSource(ctx context.Context, svc *types.ExternalService, cf *http return nil, err } - var eb excludeBuilder + var ex repoExcluder for _, r := range c.Exclude { - eb.Exact(r.Name) - eb.Pattern(r.Pattern) + ex.AddRule(). + Exact(r.Name). + Pattern(r.Pattern) } - exclude, err := eb.Build() - if err != nil { + if err := ex.RuleErrors(); err != nil { return nil, err } lister := gitserver.NewGitoliteLister(gitoliteDoer) return &GitoliteSource{ - svc: svc, - conn: &c, - lister: lister, - exclude: exclude, + svc: svc, + conn: &c, + lister: lister, + excluder: ex, }, nil } @@ -105,7 +105,7 @@ func (s GitoliteSource) ExternalServices() types.ExternalServices { } func (s GitoliteSource) excludes(gr *gitolite.Repo, r *types.Repo) bool { - return s.exclude(gr.Name) || + return s.excluder.ShouldExclude(gr.Name) || strings.ContainsAny(string(r.Name), "\\^$|()[]*?{},") } diff --git a/internal/repos/other.go b/internal/repos/other.go index 9f7da6332f585..ed18f791b58df 100644 --- a/internal/repos/other.go +++ b/internal/repos/other.go @@ -26,11 +26,11 @@ type ( // A OtherSource yields repositories from a single Other connection configured // in Sourcegraph via the external services configuration. OtherSource struct { - svc *types.ExternalService - conn *schema.OtherExternalServiceConnection - exclude excludeFunc - client httpcli.Doer - logger log.Logger + svc *types.ExternalService + conn *schema.OtherExternalServiceConnection + excluder repoExcluder + client httpcli.Doer + logger log.Logger } // A srcExposeItem is the object model returned by src-cli when serving git repos @@ -62,13 +62,13 @@ func NewOtherSource(ctx context.Context, svc *types.ExternalService, cf *httpcli return nil, err } - var eb excludeBuilder + var ex repoExcluder for _, r := range c.Exclude { - eb.Exact(r.Name) - eb.Pattern(r.Pattern) + ex.AddRule(). + Exact(r.Name). + Pattern(r.Pattern) } - exclude, err := eb.Build() - if err != nil { + if err := ex.RuleErrors(); err != nil { return nil, err } @@ -77,11 +77,11 @@ func NewOtherSource(ctx context.Context, svc *types.ExternalService, cf *httpcli } return &OtherSource{ - svc: svc, - conn: &c, - exclude: exclude, - client: cli, - logger: logger, + svc: svc, + conn: &c, + excluder: ex, + client: cli, + logger: logger, }, nil } @@ -137,7 +137,7 @@ func (s OtherSource) ExternalServices() types.ExternalServices { } func (s OtherSource) excludes(r *types.Repo) bool { - return s.exclude(string(r.Name)) + return s.excluder.ShouldExclude(string(r.Name)) } func (s OtherSource) cloneURLs() ([]*url.URL, error) { diff --git a/internal/repos/sources_test.go b/internal/repos/sources_test.go index 32b245a954aa3..3aff794dda26c 100644 --- a/internal/repos/sources_test.go +++ b/internal/repos/sources_test.go @@ -222,7 +222,7 @@ func TestSources_ListRepos_Excluded(t *testing.T) { {Pattern: ".*public-repo.*"}, {Pattern: ".*secret-repo.*"}, {Pattern: ".*private-repo.*"}, - {Pattern: `.*SGDEMO.*`}, + {Pattern: ".*SGDEMO.*"}, }, }), wantNames: []string{ From d959ece22952fdf2e02e379f7de1f6c9eda411ad Mon Sep 17 00:00:00 2001 From: Thorsten Ball <mrnugget@gmail.com> Date: Mon, 20 Nov 2023 16:11:08 +0100 Subject: [PATCH 083/222] changelog: document exclude rules and size/stars rules (#58436) --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f19d2500c8a87..bba6b95a8c591 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,11 @@ All notable changes to Sourcegraph are documented in this file. - Search-based code intel doesn't include the currently selected search context anymore. It was possible to get into a situation where search-based code intel wouldn't find any information due to being restricted by the current search context. [#58010](https://github.com/sourcegraph/sourcegraph/pull/58010) - The last commit which changed a file/directory is now shown in the files panel on the repo and file pages. To avoid duplicating information and confusion, the commits panel was removed. [58328](https://github.com/sourcegraph/sourcegraph/pull/58328) - Clicking on a search result now opens the blob view at the same commit as the search result. Before, blob views were opened at the tip of the default branch, which sometimes caused inconsistencies in line numbers if the index was out of date. [#58381](https://github.com/sourcegraph/sourcegraph/pull/58381) +- The `exclude` configuration for code host configuration has been updated to allow chaining multiple conditions together and filtering GitHub repositories based on their size or number of GitHub stars. [#58377](https://github.com/sourcegraph/sourcegraph/pull/58377) and [#58405](https://github.com/sourcegraph/sourcegraph/pull/58405) + - Multiple attributes on _a single_ `exclude` entry now have to be all true for a repository to be excluded. Example: `{"exclude": [{"name": "github.com/example/example"}, {"id": "my-id"}]}` will _only_ exclude repositories that have the name _and_ the id mentioned. + - GitHub code host connections can exclude by size and stars now: `{"exclude": [{"name": "github.com/example/example"}, {"stars": "< 100", "size": ">= 1GB"}]}` + - For `size` and `stars` the supported operators are `<`, `>`, `<=`, `>=`. + - For `size` the supported units are `B`, `b`, `kB`, `KB`, `kiB`, `KiB`, `MiB`, `MB`, `GiB`, `GB`. No decimals points are supported. ### Fixed From 7d6324e637a0ca88db602f3740ac8632ec4f0544 Mon Sep 17 00:00:00 2001 From: Petri-Johan Last <petri.last@sourcegraph.com> Date: Mon, 20 Nov 2023 17:22:01 +0200 Subject: [PATCH 084/222] Don't disable features when license disabled (#58326) --- .../src/auth/UsernamePasswordSignInForm.tsx | 66 ++++++------- cmd/frontend/external/session/session.go | 1 + cmd/frontend/internal/auth/oauth/session.go | 24 ++--- .../internal/auth/openidconnect/middleware.go | 2 +- cmd/frontend/internal/auth/saml/middleware.go | 2 +- cmd/frontend/internal/httpapi/BUILD.bazel | 1 + cmd/frontend/internal/httpapi/auth.go | 15 ++- cmd/frontend/internal/httpapi/auth_test.go | 42 ++++---- internal/apptoken/apptoken.go | 5 +- internal/auth/userpasswd/app.go | 7 +- internal/auth/userpasswd/handlers.go | 23 ++--- internal/database/BUILD.bazel | 1 - internal/database/access_tokens.go | 48 +++++++--- internal/database/access_tokens_test.go | 69 +++++++++++-- internal/database/dbmocks/mocks_temp.go | 22 ++--- internal/licensing/features.go | 10 +- internal/licensing/plans.go | 23 ++--- internal/licensing/telemetryexport.go | 12 +-- internal/session/BUILD.bazel | 4 + internal/session/session.go | 31 ++++++ internal/session/session_test.go | 96 ++++++++++++++++++- 21 files changed, 338 insertions(+), 166 deletions(-) diff --git a/client/web/src/auth/UsernamePasswordSignInForm.tsx b/client/web/src/auth/UsernamePasswordSignInForm.tsx index 7ff3b9ab71e5b..af9dda79f5510 100644 --- a/client/web/src/auth/UsernamePasswordSignInForm.tsx +++ b/client/web/src/auth/UsernamePasswordSignInForm.tsx @@ -42,7 +42,7 @@ export const UsernamePasswordSignInForm: React.FunctionComponent<React.PropsWith }, []) const handleSubmit = useCallback( - (event: React.FormEvent<HTMLFormElement>): void => { + async (event: React.FormEvent<HTMLFormElement>): Promise<void> => { event.preventDefault() if (loading) { return @@ -50,40 +50,40 @@ export const UsernamePasswordSignInForm: React.FunctionComponent<React.PropsWith setLoading(true) eventLogger.log('InitiateSignIn') - fetch('/-/sign-in', { - credentials: 'same-origin', - method: 'POST', - headers: { - ...context.xhrHeaders, - Accept: 'application/json', - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - email: usernameOrEmail, - password, - }), - }) - .then(response => { - if (response.status === 200) { - if (new URLSearchParams(location.search).get('close') === 'true') { - window.close() - } else { - const returnTo = getReturnTo(location) - window.location.replace(returnTo) - } - } else if (response.status === 401) { - throw new Error('User or password was incorrect') - } else if (response.status === 422) { - throw new Error('The account has been locked out') + try { + const response = await fetch('/-/sign-in', { + credentials: 'same-origin', + method: 'POST', + headers: { + ...context.xhrHeaders, + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + email: usernameOrEmail, + password, + }), + }) + if (response.status === 200) { + if (new URLSearchParams(location.search).get('close') === 'true') { + window.close() } else { - throw new Error('Unknown Error') + const returnTo = getReturnTo(location) + window.location.replace(returnTo) } - }) - .catch(error => { - logger.error('Auth error:', error) - setLoading(false) - onAuthError(asError(error)) - }) + } else if (response.status === 401) { + throw new Error('User or password was incorrect') + } else if (response.status === 422) { + throw new Error('The account has been locked out') + } else { + const text = await response.text() + throw new Error(text === '' ? 'Unknown error' : text) + } + } catch (error) { + logger.error('Auth error:', error) + setLoading(false) + onAuthError(asError(error)) + } }, [usernameOrEmail, loading, location, password, onAuthError, context] ) diff --git a/cmd/frontend/external/session/session.go b/cmd/frontend/external/session/session.go index 37da50b18bc33..8d3560994cff9 100644 --- a/cmd/frontend/external/session/session.go +++ b/cmd/frontend/external/session/session.go @@ -7,6 +7,7 @@ import "github.com/sourcegraph/sourcegraph/internal/session" var ( ResetMockSessionStore = session.ResetMockSessionStore SetActor = session.SetActor + SetActorFromUser = session.SetActorFromUser SetData = session.SetData GetData = session.GetData InvalidateSessionsByIDs = session.InvalidateSessionsByIDs diff --git a/cmd/frontend/internal/auth/oauth/session.go b/cmd/frontend/internal/auth/oauth/session.go index 7d2e7fc60495a..7a751b621f52d 100644 --- a/cmd/frontend/internal/auth/oauth/session.go +++ b/cmd/frontend/internal/auth/oauth/session.go @@ -2,6 +2,7 @@ package oauth import ( "context" + "fmt" "net/http" "time" @@ -123,7 +124,14 @@ func SessionIssuer(logger log.Logger, db database.DB, s SessionIssuerHelper, ses } // Since we obtained a valid user from the OAuth token, we consider the GitHub login successful at this point - ctx = actor.WithActor(ctx, actr) + ctx, err = session.SetActorFromUser(ctx, w, r, user, expiryDuration) + if err != nil { + span.SetError(err) + logger.Error("OAuth failed: could not initiate session.", log.Error(err)) + http.Error(w, fmt.Sprintf("Authentication failed. Try signing in again (and clearing cookies for the current site). The error was: %s", err.Error()), http.StatusInternalServerError) + return + } + db.SecurityEventLogs().LogEvent(ctx, &database.SecurityEvent{ Name: s.AuthSucceededEventName(), URL: r.URL.Path, // don't log query params w/ OAuth data @@ -132,20 +140,6 @@ func SessionIssuer(logger log.Logger, db database.DB, s SessionIssuerHelper, ses Timestamp: time.Now(), }) - if err := session.SetActor(w, r, actr, expiryDuration, user.CreatedAt); err != nil { // TODO: test session expiration - span.SetError(err) - logger.Error("OAuth failed: could not initiate session.", log.Error(err)) - http.Error(w, "Authentication failed. Try signing in again (and clearing cookies for the current site). The error was: could not initiate session.", http.StatusInternalServerError) - return - } - - if err := session.SetData(w, r, sessionKey, s.SessionData(token)); err != nil { - // It's not fatal if this fails. It just means we won't be able to sign the user out of - // the OP. - span.AddEvent(err.Error()) // do not set error - logger.Warn("Failed to set OAuth session data. The session is still secure, but Sourcegraph will be unable to revoke the user's token or redirect the user to the end-session endpoint after the user signs out of Sourcegraph.", log.Error(err)) - } - redirectURL := auth.AddPostAuthRedirectParametersToString(state.Redirect, newUserCreated, "OAuth::"+s.GetServiceID()) http.Redirect(w, r, auth.SafeRedirectURL(redirectURL), http.StatusFound) }) diff --git a/cmd/frontend/internal/auth/openidconnect/middleware.go b/cmd/frontend/internal/auth/openidconnect/middleware.go index d0811cb38c2aa..e05b76c293bd8 100644 --- a/cmd/frontend/internal/auth/openidconnect/middleware.go +++ b/cmd/frontend/internal/auth/openidconnect/middleware.go @@ -177,7 +177,7 @@ func authHandler(db database.DB) func(w http.ResponseWriter, r *http.Request) { // if !idToken.Expiry.IsZero() { // exp = time.Until(idToken.Expiry) // } - if err = session.SetActor(w, r, sgactor.FromUser(result.User.ID), exp, result.User.CreatedAt); err != nil { + if _, err = session.SetActorFromUser(r.Context(), w, r, result.User, exp); err != nil { log15.Error("Failed to authenticate with OpenID connect: could not initiate session.", "error", err) http.Error(w, "Authentication failed. Try signing in again (and clearing cookies for the current site). The error was: could not initiate session.", http.StatusInternalServerError) return diff --git a/cmd/frontend/internal/auth/saml/middleware.go b/cmd/frontend/internal/auth/saml/middleware.go index 81fa53fd208a5..07304f9ff1b9e 100644 --- a/cmd/frontend/internal/auth/saml/middleware.go +++ b/cmd/frontend/internal/auth/saml/middleware.go @@ -174,7 +174,7 @@ func samlSPHandler(db database.DB) func(w http.ResponseWriter, r *http.Request) // if info.SessionNotOnOrAfter != nil { // exp = time.Until(*info.SessionNotOnOrAfter) // } - if err := session.SetActor(w, r, actor, exp, user.CreatedAt); err != nil { + if _, err := session.SetActorFromUser(r.Context(), w, r, user, exp); err != nil { log15.Error("Error setting SAML-authenticated actor in session.", "err", err) http.Error(w, "Error starting SAML-authenticated session. Try signing in again.", http.StatusInternalServerError) return diff --git a/cmd/frontend/internal/httpapi/BUILD.bazel b/cmd/frontend/internal/httpapi/BUILD.bazel index 04c3256e1fc12..4da278f15ddee 100644 --- a/cmd/frontend/internal/httpapi/BUILD.bazel +++ b/cmd/frontend/internal/httpapi/BUILD.bazel @@ -48,6 +48,7 @@ go_library( "//internal/gitserver", "//internal/gitserver/gitdomain", "//internal/httpcli", + "//internal/licensing", "//internal/search", "//internal/search/backend", "//internal/search/searchcontexts", diff --git a/cmd/frontend/internal/httpapi/auth.go b/cmd/frontend/internal/httpapi/auth.go index c05dc5485cbdc..0183af6e097a3 100644 --- a/cmd/frontend/internal/httpapi/auth.go +++ b/cmd/frontend/internal/httpapi/auth.go @@ -20,6 +20,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/cookie" "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/errcode" + "github.com/sourcegraph/sourcegraph/internal/licensing" "github.com/sourcegraph/sourcegraph/internal/trace" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -118,7 +119,19 @@ func AccessTokenAuthMiddleware(db database.DB, baseLogger log.Logger, next http. } else { requiredScope = authz.ScopeSiteAdminSudo } - subjectUserID, err := db.AccessTokens().Lookup(r.Context(), token, requiredScope) + + info, err := licensing.GetConfiguredProductLicenseInfo() + if err != nil { + http.Error(w, "Could not check license for access token authorization.", http.StatusInternalServerError) + return + } + + opts := database.TokenLookupOpts{ + RequiredScope: requiredScope, + OnlyAdmin: info.IsExpired(), + } + + subjectUserID, err := db.AccessTokens().Lookup(r.Context(), token, opts) if err != nil { if err == database.ErrAccessTokenNotFound || errors.HasType(err, database.InvalidTokenError{}) { anonymousId, anonCookieSet := cookie.AnonymousUID(r) diff --git a/cmd/frontend/internal/httpapi/auth_test.go b/cmd/frontend/internal/httpapi/auth_test.go index 2c550bdca70df..4970355428ec8 100644 --- a/cmd/frontend/internal/httpapi/auth_test.go +++ b/cmd/frontend/internal/httpapi/auth_test.go @@ -104,12 +104,12 @@ func TestAccessTokenAuthMiddleware(t *testing.T) { req.Header.Set("Authorization", headerValue) accessTokens := dbmocks.NewMockAccessTokenStore() - accessTokens.LookupFunc.SetDefaultHook(func(_ context.Context, tokenHexEncoded, requiredScope string) (subjectUserID int32, err error) { + accessTokens.LookupFunc.SetDefaultHook(func(_ context.Context, tokenHexEncoded string, opts database.TokenLookupOpts) (subjectUserID int32, err error) { if want := "abcdef"; tokenHexEncoded != want { t.Errorf("got %q, want %q", tokenHexEncoded, want) } - if want := authz.ScopeUserAll; requiredScope != want { - t.Errorf("got %q, want %q", requiredScope, want) + if want := authz.ScopeUserAll; opts.RequiredScope != want { + t.Errorf("got %q, want %q", opts.RequiredScope, want) } return 123, nil }) @@ -127,12 +127,12 @@ func TestAccessTokenAuthMiddleware(t *testing.T) { req = req.WithContext(sgactor.WithActor(context.Background(), &sgactor.Actor{UID: 456})) accessTokens := dbmocks.NewMockAccessTokenStore() - accessTokens.LookupFunc.SetDefaultHook(func(_ context.Context, tokenHexEncoded, requiredScope string) (subjectUserID int32, err error) { + accessTokens.LookupFunc.SetDefaultHook(func(_ context.Context, tokenHexEncoded string, opts database.TokenLookupOpts) (subjectUserID int32, err error) { if want := "abcdef"; tokenHexEncoded != want { t.Errorf("got %q, want %q", tokenHexEncoded, want) } - if want := authz.ScopeUserAll; requiredScope != want { - t.Errorf("got %q, want %q", requiredScope, want) + if want := authz.ScopeUserAll; opts.RequiredScope != want { + t.Errorf("got %q, want %q", opts.RequiredScope, want) } return 123, nil }) @@ -160,12 +160,12 @@ func TestAccessTokenAuthMiddleware(t *testing.T) { req = req.WithContext(sgactor.WithActor(context.Background(), &sgactor.Actor{UID: 456})) accessTokens := dbmocks.NewMockAccessTokenStore() - accessTokens.LookupFunc.SetDefaultHook(func(_ context.Context, tokenHexEncoded, requiredScope string) (subjectUserID int32, err error) { + accessTokens.LookupFunc.SetDefaultHook(func(_ context.Context, tokenHexEncoded string, opts database.TokenLookupOpts) (subjectUserID int32, err error) { if want := "abcdef"; tokenHexEncoded != want { t.Errorf("got %q, want %q", tokenHexEncoded, want) } - if want := authz.ScopeUserAll; requiredScope != want { - t.Errorf("got %q, want %q", requiredScope, want) + if want := authz.ScopeUserAll; opts.RequiredScope != want { + t.Errorf("got %q, want %q", opts.RequiredScope, want) } return 123, nil }) @@ -181,12 +181,12 @@ func TestAccessTokenAuthMiddleware(t *testing.T) { req.Header.Set("Authorization", `token-sudo token="abcdef",user="alice"`) accessTokens := dbmocks.NewMockAccessTokenStore() - accessTokens.LookupFunc.SetDefaultHook(func(_ context.Context, tokenHexEncoded, requiredScope string) (subjectUserID int32, err error) { + accessTokens.LookupFunc.SetDefaultHook(func(_ context.Context, tokenHexEncoded string, opts database.TokenLookupOpts) (subjectUserID int32, err error) { if want := "abcdef"; tokenHexEncoded != want { t.Errorf("got %q, want %q", tokenHexEncoded, want) } - if want := authz.ScopeSiteAdminSudo; requiredScope != want { - t.Errorf("got %q, want %q", requiredScope, want) + if want := authz.ScopeSiteAdminSudo; opts.RequiredScope != want { + t.Errorf("got %q, want %q", opts.RequiredScope, want) } return 123, nil }) @@ -228,12 +228,12 @@ func TestAccessTokenAuthMiddleware(t *testing.T) { req.Header.Set("Authorization", `token-sudo token="abcdef",user="alice"`) accessTokens := dbmocks.NewMockAccessTokenStore() - accessTokens.LookupFunc.SetDefaultHook(func(_ context.Context, tokenHexEncoded, requiredScope string) (subjectUserID int32, err error) { + accessTokens.LookupFunc.SetDefaultHook(func(_ context.Context, tokenHexEncoded string, opts database.TokenLookupOpts) (subjectUserID int32, err error) { if want := "abcdef"; tokenHexEncoded != want { t.Errorf("got %q, want %q", tokenHexEncoded, want) } - if want := authz.ScopeSiteAdminSudo; requiredScope != want { - t.Errorf("got %q, want %q", requiredScope, want) + if want := authz.ScopeSiteAdminSudo; opts.RequiredScope != want { + t.Errorf("got %q, want %q", opts.RequiredScope, want) } return 123, nil }) @@ -279,12 +279,12 @@ func TestAccessTokenAuthMiddleware(t *testing.T) { req.Header.Set("Authorization", `token-sudo token="abcdef",user="alice"`) accessTokens := dbmocks.NewMockAccessTokenStore() - accessTokens.LookupFunc.SetDefaultHook(func(_ context.Context, tokenHexEncoded, requiredScope string) (subjectUserID int32, err error) { + accessTokens.LookupFunc.SetDefaultHook(func(_ context.Context, tokenHexEncoded string, opts database.TokenLookupOpts) (subjectUserID int32, err error) { if want := "abcdef"; tokenHexEncoded != want { t.Errorf("got %q, want %q", tokenHexEncoded, want) } - if want := authz.ScopeSiteAdminSudo; requiredScope != want { - t.Errorf("got %q, want %q", requiredScope, want) + if want := authz.ScopeSiteAdminSudo; opts.RequiredScope != want { + t.Errorf("got %q, want %q", opts.RequiredScope, want) } return 123, nil }) @@ -319,12 +319,12 @@ func TestAccessTokenAuthMiddleware(t *testing.T) { req.Header.Set("Authorization", `token-sudo token="abcdef",user="doesntexist"`) accessTokens := dbmocks.NewMockAccessTokenStore() - accessTokens.LookupFunc.SetDefaultHook(func(_ context.Context, tokenHexEncoded, requiredScope string) (subjectUserID int32, err error) { + accessTokens.LookupFunc.SetDefaultHook(func(_ context.Context, tokenHexEncoded string, opts database.TokenLookupOpts) (subjectUserID int32, err error) { if want := "abcdef"; tokenHexEncoded != want { t.Errorf("got %q, want %q", tokenHexEncoded, want) } - if want := authz.ScopeSiteAdminSudo; requiredScope != want { - t.Errorf("got %q, want %q", requiredScope, want) + if want := authz.ScopeSiteAdminSudo; opts.RequiredScope != want { + t.Errorf("got %q, want %q", opts.RequiredScope, want) } return 123, nil }) diff --git a/internal/apptoken/apptoken.go b/internal/apptoken/apptoken.go index 91adce7e2189c..88640a884f742 100644 --- a/internal/apptoken/apptoken.go +++ b/internal/apptoken/apptoken.go @@ -73,7 +73,8 @@ func isExistingAppTokenPresent(ctx context.Context, db database.DB, appTokenFile } // Validate the token to confirm that it will be accepted by the API. - subjectUserId, err := db.AccessTokens().Lookup(ctx, payload.Token, appTokenScope) + subjectUserId, err := db.AccessTokens().Lookup(ctx, payload.Token, + database.TokenLookupOpts{RequiredScope: appTokenScope}) if err != nil { return false } @@ -103,7 +104,7 @@ func createAppTokenFile(ctx context.Context, db database.DB, appTokenFilePath st return err } - err = os.WriteFile(appTokenFilePath, appTokenFileBody, 0644) + err = os.WriteFile(appTokenFilePath, appTokenFileBody, 0o644) if err != nil { return err } diff --git a/internal/auth/userpasswd/app.go b/internal/auth/userpasswd/app.go index 9cee619fb1041..55285624f9756 100644 --- a/internal/auth/userpasswd/app.go +++ b/internal/auth/userpasswd/app.go @@ -13,7 +13,6 @@ import ( "github.com/sourcegraph/log" "github.com/sourcegraph/sourcegraph/cmd/frontend/globals" - sgactor "github.com/sourcegraph/sourcegraph/internal/actor" "github.com/sourcegraph/sourcegraph/internal/apptoken" "github.com/sourcegraph/sourcegraph/internal/conf/deploy" "github.com/sourcegraph/sourcegraph/internal/database" @@ -97,11 +96,7 @@ func AppSignInMiddleware(db database.DB, handler func(w http.ResponseWriter, r * return errors.Wrap(err, "Failed to find admin account") } - // Write the session cookie - actor := sgactor.Actor{ - UID: user.ID, - } - if err := session.SetActor(w, r, &actor, 0, user.CreatedAt); err != nil { + if _, err := session.SetActorFromUser(r.Context(), w, r, user, 0); err != nil { return errors.Wrap(err, "Could not create new user session") } diff --git a/internal/auth/userpasswd/handlers.go b/internal/auth/userpasswd/handlers.go index 4a26626b24962..901990aabfdda 100644 --- a/internal/auth/userpasswd/handlers.go +++ b/internal/auth/userpasswd/handlers.go @@ -12,7 +12,6 @@ import ( "github.com/gorilla/mux" "github.com/sourcegraph/log" - "github.com/sourcegraph/sourcegraph/internal/actor" "github.com/sourcegraph/sourcegraph/internal/conf/deploy" "github.com/sourcegraph/sourcegraph/internal/lazyregexp" "github.com/sourcegraph/sourcegraph/internal/security" @@ -109,7 +108,8 @@ func checkEmailAbuse(ctx context.Context, db database.DB, addr string) (abused b // šŸšØ SECURITY: Any change to this function could introduce security exploits // and/or break sign up / initial admin account creation. Be careful. func handleSignUp(logger log.Logger, db database.DB, eventRecorder *telemetry.EventRecorder, - w http.ResponseWriter, r *http.Request, failIfNewUserIsNotInitialSiteAdmin bool) { + w http.ResponseWriter, r *http.Request, failIfNewUserIsNotInitialSiteAdmin bool, +) { if r.Method != "POST" { http.Error(w, fmt.Sprintf("unsupported method %s", r.Method), http.StatusBadRequest) return @@ -125,10 +125,8 @@ func handleSignUp(logger log.Logger, db database.DB, eventRecorder *telemetry.Ev return } - // Write the session cookie - a := &sgactor.Actor{UID: usr.ID} - if err := session.SetActor(w, r, a, 0, usr.CreatedAt); err != nil { - httpLogError(logger.Error, w, "Could not create new user session", http.StatusInternalServerError, log.Error(err)) + if _, err := session.SetActorFromUser(r.Context(), w, r, usr, 0); err != nil { + httpLogError(logger.Error, w, fmt.Sprintf("Could not create new user session: %s", err.Error()), http.StatusInternalServerError, log.Error(err)) } // Track user data @@ -373,17 +371,10 @@ func HandleSignIn(logger log.Logger, db database.DB, store LockoutStore, recorde return } - // We are now an authenticated actor - act := sgactor.Actor{ - UID: user.ID, - } - - // Make sure we're in the context of our newly signed in user - ctx = actor.WithActor(ctx, &act) - // Write the session cookie - if err := session.SetActor(w, r, &act, 0, user.CreatedAt); err != nil { - httpLogError(logger.Error, w, "Could not create new user session", http.StatusInternalServerError, log.Error(err)) + ctx, err = session.SetActorFromUser(ctx, w, r, &user, 0) + if err != nil { + httpLogError(logger.Error, w, fmt.Sprintf("Could not create new user session: %s", err.Error()), http.StatusInternalServerError, log.Error(err)) return } diff --git a/internal/database/BUILD.bazel b/internal/database/BUILD.bazel index 6a50455dd58ae..923abc5b2f553 100644 --- a/internal/database/BUILD.bazel +++ b/internal/database/BUILD.bazel @@ -1,7 +1,6 @@ load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") load("//dev:migrations.bzl", "generate_schemas") -load("@bazel_skylib//rules:build_test.bzl", "build_test") load("//dev:write_generated_to_source_files.bzl", "write_generated_to_source_files") go_library( diff --git a/internal/database/access_tokens.go b/internal/database/access_tokens.go index 28477690e7e6f..d5f71f6cf5065 100644 --- a/internal/database/access_tokens.go +++ b/internal/database/access_tokens.go @@ -124,7 +124,7 @@ type AccessTokenStore interface { // // šŸšØ SECURITY: This returns a user ID if and only if the token corresponds to a valid, // non-deleted access token. - Lookup(ctx context.Context, token, requiredScope string) (subjectUserID int32, err error) + Lookup(ctx context.Context, token string, opts TokenLookupOpts) (subjectUserID int32, err error) WithTransact(context.Context, func(AccessTokenStore) error) error With(basestore.ShareableStore) AccessTokenStore @@ -239,8 +239,36 @@ INSERT INTO access_tokens(subject_user_id, scopes, value_sha256, note, creator_u return id, token, nil } -func (s *accessTokenStore) Lookup(ctx context.Context, token, requiredScope string) (subjectUserID int32, err error) { - if requiredScope == "" { +type TokenLookupOpts struct { + OnlyAdmin bool + RequiredScope string +} + +func (o TokenLookupOpts) ToQuery() string { + query := ` +UPDATE access_tokens t SET last_used_at=now() +WHERE t.id IN ( + SELECT t2.id FROM access_tokens t2 + JOIN users subject_user ON t2.subject_user_id=subject_user.id AND subject_user.deleted_at IS NULL + JOIN users creator_user ON t2.creator_user_id=creator_user.id AND creator_user.deleted_at IS NULL + WHERE t2.value_sha256=$1 AND t2.deleted_at IS NULL AND + $2 = ANY (t2.scopes) + ` + + if o.OnlyAdmin { + query += "AND subject_user.site_admin" + } + + query += ` + ) +RETURNING t.subject_user_id +` + + return query +} + +func (s *accessTokenStore) Lookup(ctx context.Context, token string, opts TokenLookupOpts) (subjectUserID int32, err error) { + if opts.RequiredScope == "" { return 0, errors.New("no scope provided in access token lookup") } @@ -251,18 +279,8 @@ func (s *accessTokenStore) Lookup(ctx context.Context, token, requiredScope stri if err := s.Handle().QueryRowContext(ctx, // Ensure that subject and creator users still exist. - ` -UPDATE access_tokens t SET last_used_at=now() -WHERE t.id IN ( - SELECT t2.id FROM access_tokens t2 - JOIN users subject_user ON t2.subject_user_id=subject_user.id AND subject_user.deleted_at IS NULL - JOIN users creator_user ON t2.creator_user_id=creator_user.id AND creator_user.deleted_at IS NULL - WHERE t2.value_sha256=$1 AND t2.deleted_at IS NULL AND - $2 = ANY (t2.scopes) -) -RETURNING t.subject_user_id -`, - tokenHash, requiredScope, + opts.ToQuery(), + tokenHash, opts.RequiredScope, ).Scan(&subjectUserID); err != nil { if err == sql.ErrNoRows { return 0, ErrAccessTokenNotFound diff --git a/internal/database/access_tokens_test.go b/internal/database/access_tokens_test.go index 39d3e87d6d862..c7c674b94ff40 100644 --- a/internal/database/access_tokens_test.go +++ b/internal/database/access_tokens_test.go @@ -8,6 +8,7 @@ import ( "github.com/sourcegraph/log/logtest" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/sourcegraph/sourcegraph/internal/actor" "github.com/sourcegraph/sourcegraph/internal/conf" @@ -37,6 +38,8 @@ func TestAccessTokens(t *testing.T) { t.Run("testAccessTokens_tokenSHA256Hash", testAccessTokens_tokenSHA256Hash) }) + // Don't run parallel as it's mocking an expired license + t.Run("testAccessToken_Lookup_expiredLicense", testAccessTokens_Lookup_expiredLicense) } // šŸšØ SECURITY: This tests the routine that creates access tokens and returns the token secret value @@ -95,7 +98,7 @@ func testAccessTokens_Create(t *testing.T) { t.Errorf("got %q, want %q", got.Note, want) } - gotSubjectUserID, err := db.AccessTokens().Lookup(ctx, tv0, "a") + gotSubjectUserID, err := db.AccessTokens().Lookup(ctx, tv0, TokenLookupOpts{RequiredScope: "a"}) if err != nil { t.Fatal(err) } @@ -233,7 +236,6 @@ func testAccessTokens_CreateInternal_DoesNotCaptureSecurityEvent(t *testing.T) { t.Fatal(err) } assertSecurityEventCount(t, db, SecurityEventAccessTokenCreated, 0) - } // This test is run in TestAccessTokens @@ -353,7 +355,7 @@ func testAccessTokens_Lookup(t *testing.T) { } for _, scope := range []string{"a", "b"} { - gotSubjectUserID, err := db.AccessTokens().Lookup(ctx, tv0, scope) + gotSubjectUserID, err := db.AccessTokens().Lookup(ctx, tv0, TokenLookupOpts{RequiredScope: scope}) if err != nil { t.Fatal(err) } @@ -363,12 +365,12 @@ func testAccessTokens_Lookup(t *testing.T) { } // Lookup with a nonexistent scope and ensure it fails. - if _, err := db.AccessTokens().Lookup(ctx, tv0, "x"); err == nil { + if _, err := db.AccessTokens().Lookup(ctx, tv0, TokenLookupOpts{RequiredScope: "x"}); err == nil { t.Fatal(err) } // Lookup with an empty scope and ensure it fails. - if _, err := db.AccessTokens().Lookup(ctx, tv0, ""); err == nil { + if _, err := db.AccessTokens().Lookup(ctx, tv0, TokenLookupOpts{RequiredScope: ""}); err == nil { t.Fatal(err) } @@ -376,12 +378,12 @@ func testAccessTokens_Lookup(t *testing.T) { if err := db.AccessTokens().DeleteByID(ctx, tid0); err != nil { t.Fatal(err) } - if _, err := db.AccessTokens().Lookup(ctx, tv0, "a"); err == nil { + if _, err := db.AccessTokens().Lookup(ctx, tv0, TokenLookupOpts{RequiredScope: "a"}); err == nil { t.Fatal(err) } // Try to Lookup a token that was never created. - if _, err := db.AccessTokens().Lookup(ctx, "abcdefg" /* this token value was never created */, "a"); err == nil { + if _, err := db.AccessTokens().Lookup(ctx, "abcdefg" /* this token value was never created */, TokenLookupOpts{RequiredScope: "a"}); err == nil { t.Fatal(err) } } @@ -425,7 +427,7 @@ func testAccessTokens_Lookup_deletedUser(t *testing.T) { if err := db.Users().Delete(ctx, subject.ID); err != nil { t.Fatal(err) } - if _, err := db.AccessTokens().Lookup(ctx, tv0, "a"); err == nil { + if _, err := db.AccessTokens().Lookup(ctx, tv0, TokenLookupOpts{RequiredScope: "a"}); err == nil { t.Fatal("Lookup: want error looking up token for deleted subject user") } @@ -461,7 +463,7 @@ func testAccessTokens_Lookup_deletedUser(t *testing.T) { if err := db.Users().Delete(ctx, creator.ID); err != nil { t.Fatal(err) } - if _, err := db.AccessTokens().Lookup(ctx, tv0, "a"); err == nil { + if _, err := db.AccessTokens().Lookup(ctx, tv0, TokenLookupOpts{RequiredScope: "a"}); err == nil { t.Fatal("Lookup: want error looking up token for deleted creator user") } @@ -471,6 +473,55 @@ func testAccessTokens_Lookup_deletedUser(t *testing.T) { }) } +// šŸšØ SECURITY: This tests that deleting the subject or creator user of an access token invalidates +// the token, and that no new access tokens may be created for deleted users. +// This test is run in TestAccessTokens +func testAccessTokens_Lookup_expiredLicense(t *testing.T) { + if testing.Short() { + t.Skip() + } + logger := logtest.Scoped(t) + db := NewDB(logger, dbtest.NewDB(t)) + ctx := context.Background() + + adminUser, err := db.Users().Create(ctx, NewUser{ + Email: "u1@example.com", + Username: "u1", + Password: "p1", + EmailVerificationCode: "c1", + }) + if err != nil { + t.Fatal(err) + } + require.NoError(t, db.Users().SetIsSiteAdmin(ctx, adminUser.ID, true)) + + regularUser, err := db.Users().Create(ctx, NewUser{ + Email: "u2@example.com", + Username: "u2", + Password: "p2", + EmailVerificationCode: "c2", + }) + if err != nil { + t.Fatal(err) + } + + _, adminToken, err := db.AccessTokens().Create(ctx, adminUser.ID, []string{"a"}, "n0", adminUser.ID) + if err != nil { + t.Fatal(err) + } + _, regularToken, err := db.AccessTokens().Create(ctx, regularUser.ID, []string{"a"}, "n0", regularUser.ID) + if err != nil { + t.Fatal(err) + } + + if _, err := db.AccessTokens().Lookup(ctx, adminToken, TokenLookupOpts{RequiredScope: "a", OnlyAdmin: true}); err != nil { + t.Fatal("Lookup: lookup should not fail for admin user") + } + if _, err := db.AccessTokens().Lookup(ctx, regularToken, TokenLookupOpts{RequiredScope: "a", OnlyAdmin: true}); err == nil { + t.Fatal("Lookup: lookup should fail for regular user") + } +} + // This test is run in TestAccessTokens func testAccessTokens_tokenSHA256Hash(t *testing.T) { testCases := []struct { diff --git a/internal/database/dbmocks/mocks_temp.go b/internal/database/dbmocks/mocks_temp.go index 95a10027c0479..9e68152becdd2 100644 --- a/internal/database/dbmocks/mocks_temp.go +++ b/internal/database/dbmocks/mocks_temp.go @@ -1269,7 +1269,7 @@ func NewMockAccessTokenStore() *MockAccessTokenStore { }, }, LookupFunc: &AccessTokenStoreLookupFunc{ - defaultHook: func(context.Context, string, string) (r0 int32, r1 error) { + defaultHook: func(context.Context, string, database.TokenLookupOpts) (r0 int32, r1 error) { return }, }, @@ -1341,7 +1341,7 @@ func NewStrictMockAccessTokenStore() *MockAccessTokenStore { }, }, LookupFunc: &AccessTokenStoreLookupFunc{ - defaultHook: func(context.Context, string, string) (int32, error) { + defaultHook: func(context.Context, string, database.TokenLookupOpts) (int32, error) { panic("unexpected invocation of MockAccessTokenStore.Lookup") }, }, @@ -2500,15 +2500,15 @@ func (c AccessTokenStoreListFuncCall) Results() []interface{} { // AccessTokenStoreLookupFunc describes the behavior when the Lookup method // of the parent MockAccessTokenStore instance is invoked. type AccessTokenStoreLookupFunc struct { - defaultHook func(context.Context, string, string) (int32, error) - hooks []func(context.Context, string, string) (int32, error) + defaultHook func(context.Context, string, database.TokenLookupOpts) (int32, error) + hooks []func(context.Context, string, database.TokenLookupOpts) (int32, error) history []AccessTokenStoreLookupFuncCall mutex sync.Mutex } // Lookup delegates to the next hook function in the queue and stores the // parameter and result values of this invocation. -func (m *MockAccessTokenStore) Lookup(v0 context.Context, v1 string, v2 string) (int32, error) { +func (m *MockAccessTokenStore) Lookup(v0 context.Context, v1 string, v2 database.TokenLookupOpts) (int32, error) { r0, r1 := m.LookupFunc.nextHook()(v0, v1, v2) m.LookupFunc.appendCall(AccessTokenStoreLookupFuncCall{v0, v1, v2, r0, r1}) return r0, r1 @@ -2517,7 +2517,7 @@ func (m *MockAccessTokenStore) Lookup(v0 context.Context, v1 string, v2 string) // SetDefaultHook sets function that is called when the Lookup method of the // parent MockAccessTokenStore instance is invoked and the hook queue is // empty. -func (f *AccessTokenStoreLookupFunc) SetDefaultHook(hook func(context.Context, string, string) (int32, error)) { +func (f *AccessTokenStoreLookupFunc) SetDefaultHook(hook func(context.Context, string, database.TokenLookupOpts) (int32, error)) { f.defaultHook = hook } @@ -2525,7 +2525,7 @@ func (f *AccessTokenStoreLookupFunc) SetDefaultHook(hook func(context.Context, s // Lookup method of the parent MockAccessTokenStore instance invokes the // hook at the front of the queue and discards it. After the queue is empty, // the default hook function is invoked for any future action. -func (f *AccessTokenStoreLookupFunc) PushHook(hook func(context.Context, string, string) (int32, error)) { +func (f *AccessTokenStoreLookupFunc) PushHook(hook func(context.Context, string, database.TokenLookupOpts) (int32, error)) { f.mutex.Lock() f.hooks = append(f.hooks, hook) f.mutex.Unlock() @@ -2534,19 +2534,19 @@ func (f *AccessTokenStoreLookupFunc) PushHook(hook func(context.Context, string, // SetDefaultReturn calls SetDefaultHook with a function that returns the // given values. func (f *AccessTokenStoreLookupFunc) SetDefaultReturn(r0 int32, r1 error) { - f.SetDefaultHook(func(context.Context, string, string) (int32, error) { + f.SetDefaultHook(func(context.Context, string, database.TokenLookupOpts) (int32, error) { return r0, r1 }) } // PushReturn calls PushHook with a function that returns the given values. func (f *AccessTokenStoreLookupFunc) PushReturn(r0 int32, r1 error) { - f.PushHook(func(context.Context, string, string) (int32, error) { + f.PushHook(func(context.Context, string, database.TokenLookupOpts) (int32, error) { return r0, r1 }) } -func (f *AccessTokenStoreLookupFunc) nextHook() func(context.Context, string, string) (int32, error) { +func (f *AccessTokenStoreLookupFunc) nextHook() func(context.Context, string, database.TokenLookupOpts) (int32, error) { f.mutex.Lock() defer f.mutex.Unlock() @@ -2587,7 +2587,7 @@ type AccessTokenStoreLookupFuncCall struct { Arg1 string // Arg2 is the value of the 3rd argument passed to this method // invocation. - Arg2 string + Arg2 database.TokenLookupOpts // Result0 is the value of the 1st result returned from this method // invocation. Result0 int32 diff --git a/internal/licensing/features.go b/internal/licensing/features.go index 8162a69f0a12f..99080f08e9ea1 100644 --- a/internal/licensing/features.go +++ b/internal/licensing/features.go @@ -33,10 +33,6 @@ func (f BasicFeature) Check(info *Info) error { // Check if the feature is explicitly allowed via license tag. hasFeature := func(want Feature) bool { - // If license is expired, do not look at tags anymore. - if info.IsExpired() { - return false - } for _, t := range info.Tags { // We have been issuing licenses with trailing spaces in the tags for a while. // Eventually we should be able to remove these `TrimSpace` calls again, @@ -48,7 +44,7 @@ func (f BasicFeature) Check(info *Info) error { } return false } - if !(info.Plan().HasFeature(featureTrimmed, info.IsExpired()) || hasFeature(featureTrimmed)) { + if !(info.Plan().HasFeature(featureTrimmed) || hasFeature(featureTrimmed)) { return newFeatureRequiresUpgradeError(f.FeatureName()) } return nil @@ -86,7 +82,7 @@ func (f *FeatureBatchChanges) Check(info *Info) error { } // Otherwise, check the default batch changes feature. - if info.Plan().HasFeature(f, info.IsExpired()) { + if info.Plan().HasFeature(f) { return nil } @@ -119,7 +115,7 @@ func (f *FeaturePrivateRepositories) Check(info *Info) error { } // Otherwise, check the default private repositories feature. - if info.Plan().HasFeature(f, info.IsExpired()) { + if info.Plan().HasFeature(f) { return nil } diff --git a/internal/licensing/plans.go b/internal/licensing/plans.go index a0c8337fbcd4e..0a80e283c4d38 100644 --- a/internal/licensing/plans.go +++ b/internal/licensing/plans.go @@ -13,7 +13,7 @@ type Plan string // HasFeature returns whether the plan has the given feature. // If the target is a pointer, the plan's feature configuration will be // set to the target. -func (p Plan) HasFeature(target Feature, isExpired bool) bool { +func (p Plan) HasFeature(target Feature) bool { if target == nil { panic("licensing: target cannot be nil") } @@ -23,23 +23,12 @@ func (p Plan) HasFeature(target Feature, isExpired bool) bool { panic("licensing: target cannot be a nil pointer") } - if isExpired { - for _, f := range planDetails[p].ExpiredFeatures { - if target.FeatureName() == f.FeatureName() { - if val.Kind() == reflect.Ptr { - val.Elem().Set(reflect.ValueOf(f).Elem()) - } - return true - } - } - } else { - for _, f := range planDetails[p].Features { - if target.FeatureName() == f.FeatureName() { - if val.Kind() == reflect.Ptr { - val.Elem().Set(reflect.ValueOf(f).Elem()) - } - return true + for _, f := range planDetails[p].Features { + if target.FeatureName() == f.FeatureName() { + if val.Kind() == reflect.Ptr { + val.Elem().Set(reflect.ValueOf(f).Elem()) } + return true } } return false diff --git a/internal/licensing/telemetryexport.go b/internal/licensing/telemetryexport.go index fdc8b3879ce9a..02130b3bf6f6c 100644 --- a/internal/licensing/telemetryexport.go +++ b/internal/licensing/telemetryexport.go @@ -65,12 +65,10 @@ const ( TelemetryEventsExportCodyOnly ) -var ( - // legacyExportUsageDataEnabled is the legacy 'EXPORT_USAGE_DATA_ENABLED' - // env var is set. Typically used in Cloud, if the legacy export is enabled, - // we can assume exports are enabled as well. - legacyExportUsageDataEnabled = os.Getenv("EXPORT_USAGE_DATA_ENABLED") == "true" -) +// legacyExportUsageDataEnabled is the legacy 'EXPORT_USAGE_DATA_ENABLED' +// env var is set. Typically used in Cloud, if the legacy export is enabled, +// we can assume exports are enabled as well. +var legacyExportUsageDataEnabled = os.Getenv("EXPORT_USAGE_DATA_ENABLED") == "true" func newTelemetryEventsExportMode(licenseKey string, pk ssh.PublicKey) TelemetryEventsExportMode { if licenseKey == "" { @@ -87,7 +85,7 @@ func newTelemetryEventsExportMode(licenseKey string, pk ssh.PublicKey) Telemetry return TelemetryEventsExportAll // without a valid license key } - if p := (&Info{Info: *key}).Plan(); p.isKnown() && p.HasFeature(FeatureAllowAirGapped, false) { + if p := (&Info{Info: *key}).Plan(); p.isKnown() && p.HasFeature(FeatureAllowAirGapped) { return TelemetryEventsExportDisabled // this is the only way to disable export entirely } diff --git a/internal/session/BUILD.bazel b/internal/session/BUILD.bazel index 054ef23373c6c..1c1fc52a44695 100644 --- a/internal/session/BUILD.bazel +++ b/internal/session/BUILD.bazel @@ -16,8 +16,10 @@ go_library( "//internal/database", "//internal/env", "//internal/errcode", + "//internal/licensing", "//internal/redispool", "//internal/trace", + "//internal/types", "//lib/errors", "@com_github_boj_redistore//:redistore", "@com_github_gorilla_securecookie//:securecookie", @@ -38,6 +40,8 @@ go_test( "//internal/database", "//internal/database/dbmocks", "//internal/errcode", + "//internal/license", + "//internal/licensing", "//internal/types", "//lib/errors", "@com_github_sourcegraph_log//logtest", diff --git a/internal/session/session.go b/internal/session/session.go index 0e34fa9e2ba18..262b3ae52d0c1 100644 --- a/internal/session/session.go +++ b/internal/session/session.go @@ -15,13 +15,16 @@ import ( "go.opentelemetry.io/otel/attribute" "github.com/sourcegraph/sourcegraph/internal/actor" + sgactor "github.com/sourcegraph/sourcegraph/internal/actor" "github.com/sourcegraph/sourcegraph/internal/conf" "github.com/sourcegraph/sourcegraph/internal/conf/conftypes" "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/env" "github.com/sourcegraph/sourcegraph/internal/errcode" + "github.com/sourcegraph/sourcegraph/internal/licensing" "github.com/sourcegraph/sourcegraph/internal/redispool" "github.com/sourcegraph/sourcegraph/internal/trace" + "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/lib/errors" "github.com/inconshreveable/log15" @@ -241,6 +244,24 @@ func GetData(r *http.Request, key string, value any) error { return nil } +func SetActorFromUser(ctx context.Context, w http.ResponseWriter, r *http.Request, user *types.User, expiryPeriod time.Duration) (context.Context, error) { + info, err := licensing.GetConfiguredProductLicenseInfo() + if err != nil { + return ctx, err + } + + if info.IsExpired() && !user.SiteAdmin { + return ctx, errors.New("Sourcegraph license is expired. Only admins are allowed to sign in.") + } + + // Write the session cookie + actor := sgactor.Actor{ + UID: user.ID, + } + + return ctx, SetActor(w, r, &actor, expiryPeriod, user.CreatedAt) +} + // SetActor sets the actor in the session, or removes it if actor == nil. If no session exists, a // new session is created. // @@ -439,6 +460,16 @@ func authenticateByCookie(logger log.Logger, db database.DB, r *http.Request, w return ctx // not authenticated } + licenseInfo, err := licensing.GetConfiguredProductLicenseInfo() + if err != nil { + return ctx + } + + if licenseInfo.IsExpired() && !usr.SiteAdmin { + _ = deleteSession(w, r) // Delete session since only admins are allowed + return ctx + } + // Check that the session is still valid if info.LastActive.Before(usr.InvalidatedSessionsAt) { span.SetAttributes(attribute.Bool("expired", true)) diff --git a/internal/session/session_test.go b/internal/session/session_test.go index 151e7b95749e6..0454ca09a886d 100644 --- a/internal/session/session_test.go +++ b/internal/session/session_test.go @@ -16,6 +16,8 @@ import ( "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/database/dbmocks" "github.com/sourcegraph/sourcegraph/internal/errcode" + "github.com/sourcegraph/sourcegraph/internal/license" + "github.com/sourcegraph/sourcegraph/internal/licensing" "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -278,10 +280,12 @@ func TestCookieMiddleware(t *testing.T) { { req: httptest.NewRequest("GET", "/", nil), expActor: &actor.Actor{}, - }, { + }, + { req: authedReqs[0], expActor: actors[0], - }, { + }, + { req: authedReqs[1], expActor: &actor.Actor{}, deleted: true, @@ -305,7 +309,6 @@ func TestCookieMiddleware(t *testing.T) { t.Errorf("got deleted %v, want %v", deleted, testcase.deleted) } }) - } } @@ -475,3 +478,90 @@ func TestOldUserSessionSucceeds(t *testing.T) { t.Fatal("user creation date was not set") } } + +func TestExpiredLicenseOnlyAllowsAdmins(t *testing.T) { + licensing.MockGetConfiguredProductLicenseInfo = func() (*license.Info, string, error) { + return &license.Info{ + ExpiresAt: time.Now().Add(-1 * time.Hour), + }, "", nil + } + + logger := logtest.Scoped(t) + + cleanup := ResetMockSessionStore(t) + defer cleanup() + + userCreatedAt := time.Now() + + var adminUID, regularUID int32 = 123, 456 + + users := dbmocks.NewStrictMockUserStore() + users.GetByIDFunc.SetDefaultHook(func(ctx context.Context, id int32) (*types.User, error) { + user := &types.User{ID: id, CreatedAt: userCreatedAt} + if id == adminUID { + user.SiteAdmin = true + } + return user, nil + }) + + db := dbmocks.NewStrictMockDB() + db.UsersFunc.SetDefaultReturn(users) + + testcases := map[string]struct { + UID int32 + WantActor bool + }{ + "admin user is allowed": { + UID: adminUID, + WantActor: true, + }, + "regular user is not allowed": { + UID: regularUID, + WantActor: false, + }, + } + + for name, tc := range testcases { + t.Run(name, func(t *testing.T) { + // Start new session for the admin user + w := httptest.NewRecorder() + actr := &actor.Actor{UID: tc.UID, FromSessionCookie: true} + if err := SetActor(w, httptest.NewRequest("GET", "/", nil), actr, time.Second, userCreatedAt); err != nil { + t.Fatal(err) + } + var authCookies []*http.Cookie + for _, cookie := range w.Result().Cookies() { + if cookie.Expires.After(time.Now()) || cookie.MaxAge > 0 { + authCookies = append(authCookies, cookie) + } + } + + // Create authed request with session cookie + authedReq := httptest.NewRequest("GET", "/", nil) + for _, cookie := range authCookies { + authedReq.AddCookie(cookie) + } + if len(authedReq.Cookies()) != 1 { + t.Fatal("expected exactly 1 authed cookie") + } + + httpRec := httptest.NewRecorder() + gotActor := actor.FromContext(authenticateByCookie(logger, db, authedReq, httpRec)) + + if tc.WantActor && !reflect.DeepEqual(gotActor, actr) { + t.Errorf("didn't find actor %v != %v", gotActor, actr) + } else if !tc.WantActor && reflect.DeepEqual(gotActor, actr) { + t.Errorf("found actor %v == %v", gotActor, actr) + } + + if !tc.WantActor && len(httpRec.Result().Cookies()) != 1 { + t.Errorf("should have received remove cookie instruction") + } else if !tc.WantActor && httpRec.Result().Cookies()[0].Expires.After(time.Now()) { + t.Errorf("cookie expiration should be in the past") + } + if tc.WantActor && len(httpRec.Result().Cookies()) == 1 { + t.Errorf("should not have received remove cookie instruction") + } + }) + } +} From 86913ac953cfd6b753f96500cd4bfac25ba50b50 Mon Sep 17 00:00:00 2001 From: Julie Tibshirani <julietibs@apache.org> Date: Mon, 20 Nov 2023 07:51:19 -0800 Subject: [PATCH 085/222] Admin: improve search indexing icon (#58415) In #58061 we added 'Search indexing' to the repo dropdown menu, in place of having two Embeddings items. However, I forgot to update the icon, so it was using the old Embeddings icon. --- client/web/src/site-admin/RepositoryNode.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/web/src/site-admin/RepositoryNode.tsx b/client/web/src/site-admin/RepositoryNode.tsx index 8d6cdca079ccb..215adabbb8bc6 100644 --- a/client/web/src/site-admin/RepositoryNode.tsx +++ b/client/web/src/site-admin/RepositoryNode.tsx @@ -12,6 +12,7 @@ import { mdiSecurity, mdiVectorPolyline, mdiListStatus, + mdiSearchWeb, } from '@mdi/js' import classNames from 'classnames' import { useNavigate } from 'react-router-dom' @@ -227,7 +228,7 @@ export const RepositoryNode: React.FunctionComponent<React.PropsWithChildren<Rep onSelect={() => navigate(`/${node.name}/-/settings/index`)} className="p-2" > - <Icon aria-hidden={true} svgPath={mdiVectorPolyline} className="mr-1" /> + <Icon aria-hidden={true} svgPath={mdiSearchWeb} className="mr-1" /> Search indexing </MenuItem> <MenuItem From 9ae05966cd9a649925aa0c4a272d4af6cb34e15e Mon Sep 17 00:00:00 2001 From: Stompy <45337015+airamare01@users.noreply.github.com> Date: Mon, 20 Nov 2023 19:37:46 +0300 Subject: [PATCH 086/222] Update cAdvisor documentation (#58440) Adding a known issue where cAdvisor doesn't scrape metrics in a non-privileged overlay Kustomize deployment --- doc/dev/background-information/observability/cadvisor.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/dev/background-information/observability/cadvisor.md b/doc/dev/background-information/observability/cadvisor.md index fa9614ddbfa82..6f122f95ae220 100644 --- a/doc/dev/background-information/observability/cadvisor.md +++ b/doc/dev/background-information/observability/cadvisor.md @@ -35,3 +35,4 @@ Support is generally poorly documented, but a search through the [cAdvisor repos - Metrics issues - `disk` metrics are not available in `containerd`: [cadvisor#2785](https://github.com/google/cadvisor/issues/2785) - `diskIO` metrics do not seem to be available in Kubernetes: [sourcegraph#12163](https://github.com/sourcegraph/sourcegraph/issues/12163) +- When using a Kustomize non-privileged overlay in a deployment, cAdvisor is disabled by default and hence cannot scrape container metrics for visualization in Grafana. cAdvisor requires elevated privileges to collect this data and hence will not work with this overlay. From 24e90366e647ddc167947e1072f80de04057de2a Mon Sep 17 00:00:00 2001 From: Dan Adler <dadlerj@users.noreply.github.com> Date: Mon, 20 Nov 2023 09:19:50 -0800 Subject: [PATCH 087/222] use logPageView function instead of log (#57957) --- client/web/src/get-cody/GetCodyPage.tsx | 4 +++- client/web/src/util/constants.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/client/web/src/get-cody/GetCodyPage.tsx b/client/web/src/get-cody/GetCodyPage.tsx index 864fe3251c523..db14f26607178 100644 --- a/client/web/src/get-cody/GetCodyPage.tsx +++ b/client/web/src/get-cody/GetCodyPage.tsx @@ -42,9 +42,11 @@ const onClickCTAButton = (type: string): void => const logEvent = (eventName: string, type?: string, source?: string): void => eventLogger.log(eventName, { type, source }) +const logPageView = (pageTitle: string): void => eventLogger.logPageView(pageTitle) + export const GetCodyPage: React.FunctionComponent<GetCodyPageProps> = ({ authenticatedUser, context }) => { useEffect(() => { - logEvent(EventName.VIEW_GET_CODY) + logPageView(EventName.VIEW_GET_CODY) }, []) return ( diff --git a/client/web/src/util/constants.ts b/client/web/src/util/constants.ts index e6e180fac9656..0ad92a97f161c 100644 --- a/client/web/src/util/constants.ts +++ b/client/web/src/util/constants.ts @@ -15,7 +15,7 @@ export const enum EventName { CODY_CHAT_SCOPE_INFERRED_REPO_DISABLED = 'web:codyChat:inferredRepoDisabled', CODY_CHAT_SCOPE_INFERRED_FILE_ENABLED = 'web:codyChat:inferredFileEnabled', CODY_CHAT_SCOPE_INFERRED_FILE_DISABLED = 'web:codyChat:inferredFileDisabled', - VIEW_GET_CODY = 'ViewGetCody', + VIEW_GET_CODY = 'GetCody', CODY_EDITOR_WIDGET_VIEWED = 'web:codyEditorWidget:viewed', CODY_SIDEBAR_CHAT_OPENED = 'web:codySidebar:chatOpened', From 749dde7aa0a38b2c855ee5376397182b6c13513f Mon Sep 17 00:00:00 2001 From: Joe Chen <joe@sourcegraph.com> Date: Mon, 20 Nov 2023 13:01:17 -0500 Subject: [PATCH 088/222] graphqlbackend: better disallow unlinking account feature flag check (#58441) --- cmd/frontend/graphqlbackend/external_accounts.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cmd/frontend/graphqlbackend/external_accounts.go b/cmd/frontend/graphqlbackend/external_accounts.go index 877cf0d0a5dfc..e81d84efa956f 100644 --- a/cmd/frontend/graphqlbackend/external_accounts.go +++ b/cmd/frontend/graphqlbackend/external_accounts.go @@ -2,7 +2,6 @@ package graphqlbackend import ( "context" - "database/sql" "sync" "github.com/graph-gophers/graphql-go" @@ -14,6 +13,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/extsvc" gext "github.com/sourcegraph/sourcegraph/internal/extsvc/gerrit/externalaccount" + "github.com/sourcegraph/sourcegraph/internal/featureflag" "github.com/sourcegraph/sourcegraph/internal/sourcegraphoperator" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -126,11 +126,11 @@ func (r *schemaResolver) DeleteExternalAccount(ctx context.Context, args *struct ExternalAccount graphql.ID }, ) (*EmptyResponse, error) { - ff, err := r.db.FeatureFlags().GetFeatureFlag(ctx, "disallow-user-external-account-deletion") - if err != nil && err != sql.ErrNoRows { - return nil, err - } else if ff != nil && ff.Bool != nil && ff.Bool.Value { - return nil, errors.New("unlinking external account is not allowed") + disallow := featureflag.FromContext(ctx).GetBoolOr("disallow-user-external-account-deletion", false) + if disallow { + // NOTE: The error message will be directly shown to the user, so we need to make + // it read like a sentence. + return nil, errors.New("Self-serve unlinking external account is not allowed, please contact Sourcegraph support.") } id, err := unmarshalExternalAccountID(args.ExternalAccount) From 87c2250b707e3e97b85f178786040576e01fe906 Mon Sep 17 00:00:00 2001 From: Jean-Hadrien Chabran <jean-hadrien.chabran@sourcegraph.com> Date: Mon, 20 Nov 2023 19:01:34 +0100 Subject: [PATCH 089/222] bzl: add missing oci_push rule for scip-ctags (#58435) --- dev/ci/push_all.sh | 5 +++++ docker-images/syntax-highlighter/BUILD.bazel | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/dev/ci/push_all.sh b/dev/ci/push_all.sh index ff0acecefd2e2..ff7a503160ea0 100755 --- a/dev/ci/push_all.sh +++ b/dev/ci/push_all.sh @@ -19,6 +19,11 @@ function create_push_command() { target="$3" tags_args="$4" + # TODO(JH): https://github.com/sourcegraph/sourcegraph/issues/58442 + if [[ "$target" == "//docker-images/syntax-highlighter:scip-ctags_candidate_push" ]]; then + repository="scip-ctags" + fi + repositories_args="" for registry in "${registries[@]}"; do repositories_args="$repositories_args --repository ${registry}/${repository}" diff --git a/docker-images/syntax-highlighter/BUILD.bazel b/docker-images/syntax-highlighter/BUILD.bazel index 85e05ed236c3f..9d5c6dce8e329 100644 --- a/docker-images/syntax-highlighter/BUILD.bazel +++ b/docker-images/syntax-highlighter/BUILD.bazel @@ -139,3 +139,9 @@ oci_push( image = ":image", repository = image_repository("syntax-highlighter"), ) + +oci_push( + name = "scip-ctags_candidate_push", + image = ":scip-ctags_image", + repository = image_repository("scip-ctags"), +) From 32ed8bba55d6353b634ca902809272c6f8d476b3 Mon Sep 17 00:00:00 2001 From: Jacob Pleiness <jdpleiness@users.noreply.github.com> Date: Mon, 20 Nov 2023 14:28:23 -0500 Subject: [PATCH 090/222] docs: update grammar and fix broken links (#58445) * docs: fix spelling and grammar on k8s configure page. * docs: fix broken links --- doc/admin/deploy/kubernetes/configure.md | 30 ++++++++++++------------ 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/doc/admin/deploy/kubernetes/configure.md b/doc/admin/deploy/kubernetes/configure.md index ea2abdc043163..7f864ef58e4f5 100644 --- a/doc/admin/deploy/kubernetes/configure.md +++ b/doc/admin/deploy/kubernetes/configure.md @@ -106,7 +106,7 @@ RBAC must be enabled in your cluster for the frontend to communicate with other This will allow the frontend service to discover endpoints for each service replica and communicate with them through the Kubernetes API. Note that this component should only be added if RBAC is enabled in your cluster. ### Embeddings Service -By default the Embeddings service which is used to handle embeddings searches is disabled. To enable it the following must be commented out. By default the Embeddings service stores indexes in `blobstore`. Use the [embeddings-backend](./configure.md#external-embeddings-object-storage) patch to configure an external object store. +By default, the Embeddings service which is used to handle embeddings searches is disabled. To enable it the following must be commented out. By default, the Embeddings service stores indexes in `blobstore`. Use the [embeddings-backend](./configure.md#external-embeddings-object-storage) patch to configure an external object store. ```yaml # instances/$INSTANCE_NAME/kustomization.yaml components: @@ -117,7 +117,7 @@ components: ## Monitoring stack -The monitoring stack for Sourcegraph, similar to the main stack, does not include RBAC (Role-Based Access Control) resources by default. As a result, some dashboards may not display any data unless cAdvisor is deployed seperately with privileged access. +The monitoring stack for Sourcegraph, similar to the main stack, does not include RBAC (Role-Based Access Control) resources by default. As a result, some dashboards may not display any data unless cAdvisor is deployed separately with privileged access. To deploy the monitoring stack, add the monitoring resources to the resources-list: @@ -290,7 +290,7 @@ Some resources and components (e.g. [Prometheus](#prometheus-targets)) are pre-c ### Set namespace -To set a namespace for all your Sourcegraph resources, update the `namespace` field to an exisiting namespace in your cluster: +To set a namespace for all your Sourcegraph resources, update the `namespace` field to an existing namespace in your cluster: ```yaml # instances/$INSTANCE_NAME/kustomization.yaml @@ -377,7 +377,7 @@ Here is an example on how to adjust the storage sizes for different services: > WARNING: Only available in version 4.5.0 or above -In cases where adjusting resource allocation (e.g. replica count, resource limits, etc) is necessary, it is important to follow the instructions provided below. +In cases where adjusting resource allocation (e.g. replica count, resource limits, etc.) is necessary, it is important to follow the instructions provided below. > NOTE: The built-in [replica transformer](https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/replicas/) is currently not supported unless being used as a component. @@ -503,7 +503,7 @@ The component takes care of creating a new storage class named `sourcegraph` wit - Provisioner: pd.csi.storage.gke.io - SSD: types: pd-ssd -It also update the storage class name for all resources to `sourcegraph`. +It also updates the storage class name for all resources to `sourcegraph`. [Additional documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/gce-pd-csi-driver) for more information. @@ -530,7 +530,7 @@ It also update the storage class name for all resources to `sourcegraph`. ### Azure -> WARNING: If you are deploying on Azure, you **must** ensure that your cluster is created with support for CSI storage drivers [(link)](https://docs.microsoft.com/en-us/azure/aks/csi-storage-drivers)). This **can not** be enabled after the fact +> WARNING: If you are deploying on Azure, you **must** ensure that your cluster is created with support for CSI storage drivers [(link)](https://docs.microsoft.com/en-us/azure/aks/csi-storage-drivers). This **can not** be enabled after the fact **Step 1**: Follow the [official instructions](https://docs.microsoft.com/en-us/azure/aks/csi-storage-drivers) to deploy the [Container Storage Interface (CSI) drivers](https://learn.microsoft.com/en-us/azure/aks/csi-storage-drivers). @@ -894,7 +894,7 @@ $ cp components/patches/frontend-ingress-annotations.yaml instances/$INSTANCE_NA - patch: patches/frontend-ingress.annotations.yaml ``` -This will add the annotations specified in your copy of the [frontend-ingress-annotations.yaml](https://github.com/sourcegraph/deploy-sourcegraph-k8s/blob/master/base/frontend/sourcegraph-frontend.Ingress.yaml) file to the sourcegraph-frontend ingress resource. For more information on [ingress-nginx annotations](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/), refer to the [NGINX Configuration documentation](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/). +This will add the annotations specified in your copy of the [frontend-ingress-annotations.yaml](https://github.com/sourcegraph/deploy-sourcegraph-k8s/blob/master/base/sourcegraph/frontend/sourcegraph-frontend.Ingress.yaml) file to the sourcegraph-frontend ingress resource. For more information on [ingress-nginx annotations](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/), refer to the [NGINX Configuration documentation](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/). ### NetworkPolicy @@ -1010,7 +1010,7 @@ configMapGenerator: These values will be automatically merged with the environment variables currently listed in the ConfigMap for frontend. -> WARNING: You must restart frontend for the updated values to be activiated +> WARNING: You must restart frontend for the updated values to be activated ### Gitserver @@ -1102,7 +1102,7 @@ To connect Sourcegraph to an existing PostgreSQL instance, add the relevant envi - PGPORT=NEW_PGPORT ``` -> WARNING: You must restart frontend for the updated values to be activiated +> WARNING: You must restart frontend for the updated values to be activated ### External Redis @@ -1142,7 +1142,7 @@ This adds the new environment variables for redis to the services listed above. REDIS_STORE_ENDPOINT: REDIS_STORE_DSN ``` -> WARNING: You must restart frontend for the updated values to be activiated +> WARNING: You must restart frontend for the updated values to be activated ### External Embeddings Object Storage @@ -1195,14 +1195,14 @@ To mount the files through Kustomize: - configs/known_hosts ``` -**Step 3:** Include the following component to mount the [secret as a volume](https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-files-from-a-pod) in [gitserver.StatefulSet.yaml](https://github.com/sourcegraph/deploy-sourcegraph-k8s/blob/master/base/gitserver/gitserver.StatefulSet.yaml). +**Step 3:** Include the following component to mount the [secret as a volume](https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-files-from-a-pod) in [gitserver.StatefulSet.yaml](https://github.com/sourcegraph/deploy-sourcegraph-k8s/blob/master/base/sourcegraph/gitserver/gitserver.StatefulSet.yaml). ```yaml # instances/$INSTANCE_NAME/kustomization.yaml components: - # Enable SSH to clon repositories as non-root user (default) + # Enable SSH to clone repositories as non-root user (default) - ../../components/enable/ssh/non-root - # Enable SSH to clon repositories as root user + # Enable SSH to clone repositories as root user - ../../components/enable/ssh/root ``` @@ -1281,7 +1281,7 @@ This will cause Prometheus to drop all metrics *from cAdvisor* that are not serv ## Private registry -**Step 1:** To update all image names with your private registry, eg. `index.docker.io/sourcegraph/service_name` to `your.private.registry.com/sourcegraph/service_name`, include the `private-registry` component: +**Step 1:** To update all image names with your private registry, e.g. `index.docker.io/sourcegraph/service_name` to `your.private.registry.com/sourcegraph/service_name`, include the `private-registry` component: ```yaml # instances/$INSTANCE_NAME/kustomization.yaml @@ -1367,7 +1367,7 @@ After transferring ownerships, you can redeploy the instance with non-privileged ## Outbound Traffic -When working with an [Internet Gateway](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html) or VPC it may be necessary to expose ports for outbound network traffic. Sourcegraph must open port 443 for outbound traffic to codehosts, and to enable [telemetry](https://docs.sourcegraph.com/admin/pings) with Sourcegraph.com. Port 22 must also be opened to enable git SSH cloning by Sourcegraph. In addition, please make sure to apply other required changes to secure your cluster in a manner that meets your organization's security requirements. +When working with an [Internet Gateway](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html) or VPC it may be necessary to expose ports for outbound network traffic. Sourcegraph must open port 443 for outbound traffic to code hosts, and to enable [telemetry](https://docs.sourcegraph.com/admin/pings) with Sourcegraph.com. Port 22 must also be opened to enable git SSH cloning by Sourcegraph. In addition, please make sure to apply other required changes to secure your cluster in a manner that meets your organization's security requirements. --- From e7c3dbb18ed6c3d5c3d1f472c6391e2bf0c61a97 Mon Sep 17 00:00:00 2001 From: Bolaji Olajide <25608335+BolajiOlajide@users.noreply.github.com> Date: Mon, 20 Nov 2023 23:02:28 +0100 Subject: [PATCH 091/222] code-search: update batch changes permissions doc (#58437) update batch changes doc --- .../explanations/permissions_in_batch_changes.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/batch_changes/explanations/permissions_in_batch_changes.md b/doc/batch_changes/explanations/permissions_in_batch_changes.md index 84a5811531eea..dfbf16dff83c5 100644 --- a/doc/batch_changes/explanations/permissions_in_batch_changes.md +++ b/doc/batch_changes/explanations/permissions_in_batch_changes.md @@ -17,7 +17,14 @@ Users have admin permissions on the batch changes they created and read access t ### Namespaces -Batch changes can be created either under the user's or an organization's namespace. If placed under an organization namespace, all users of the organization have admin access on the batch change. +A batch change can be created under either a user or organization namespace: + +- User namespace: Only the user who created the batch change has admin access. Other users have read access. + +- Organization namespace: + - By default, all members of the organization have read access. + - If the `orgs.allMembersBatchChangesAdmin` setting is enabled, all organization members also have admin access. + - If that setting is disabled, only the user who created the batch change has admin access. Other organization members have read access. ### Batch Change access for each permission level @@ -28,7 +35,7 @@ View burndown chart (aggregate changeset statuses over time) | ā¬¤ | ā¬¤ View list of patches and changesets | ā¬¤ | ā¬¤ View diffstat (aggregate count of added/changed/deleted lines) | ā¬¤ | ā¬¤ View error messages (related to creating or syncing changesets) | | ā¬¤ -Edit batch change name, description, and branch name | | ā¬¤ +Edit batch spec | | ā¬¤ Update batch change patches (and changesets on code hosts) | | ā¬¤ Publish changesets to code host | | ā¬¤ Add/remove existing changesets to/from batch change | | ā¬¤ From b4ed3cc50a1a548f3c8bbe30fd65782f685a2605 Mon Sep 17 00:00:00 2001 From: Chris Warwick <christopher.warwick@sourcegraph.com> Date: Mon, 20 Nov 2023 17:25:21 -0500 Subject: [PATCH 092/222] Cody: Update Azure OpenAI provider to use azure go client and support additional auth methods (#58289) --- deps.bzl | 36 +- go.mod | 7 + go.sum | 13 + .../client/azureopenai/BUILD.bazel | 8 +- .../completions/client/azureopenai/openai.go | 473 ++++++++++-------- .../client/azureopenai/openai_test.go | 107 +++- internal/completions/client/client.go | 2 +- internal/conf/computed.go | 10 - .../embed/client/azureopenai/BUILD.bazel | 4 + .../embed/client/azureopenai/client.go | 130 ++--- .../embed/client/azureopenai/client_test.go | 214 ++++---- internal/embeddings/embed/embed.go | 2 +- 12 files changed, 556 insertions(+), 450 deletions(-) diff --git a/deps.bzl b/deps.bzl index b78c8ba6edecc..57a0f1b7a0d20 100644 --- a/deps.bzl +++ b/deps.bzl @@ -560,26 +560,34 @@ def go_dependencies(): sum = "h1:HzKLt3kIwMm4KeJYTdx9EbjRYTySD/t8i1Ee/W5EGXw=", version = "v65.0.0+incompatible", ) + go_repository( + name = "com_github_azure_azure_sdk_for_go_sdk_ai_azopenai", + build_file_proto_mode = "disable_global", + importpath = "github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai", + sum = "h1:x7fb22Q43h2DRFCvp9rAua8PoV3gwtl1bK5+pihnihA=", + version = "v0.3.0", + ) + go_repository( name = "com_github_azure_azure_sdk_for_go_sdk_azcore", build_file_proto_mode = "disable_global", importpath = "github.com/Azure/azure-sdk-for-go/sdk/azcore", - sum = "h1:Ut0ZGdOwJDw0npYEg+TLlPls3Pq6JiZaP2/aGKir7Zw=", - version = "v1.1.0", + sum = "h1:9kDVnTz3vbfweTqAUmk/a/pH5pWFCHtvRpHYC0G/dcA=", + version = "v1.8.0", ) go_repository( name = "com_github_azure_azure_sdk_for_go_sdk_azidentity", build_file_proto_mode = "disable_global", importpath = "github.com/Azure/azure-sdk-for-go/sdk/azidentity", - sum = "h1:QkAcEIAKbNL4KoFr4SathZPhDhF4mVwpBMFlYjyAqy8=", - version = "v1.1.0", + sum = "h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI=", + version = "v1.4.0", ) go_repository( name = "com_github_azure_azure_sdk_for_go_sdk_internal", build_file_proto_mode = "disable_global", importpath = "github.com/Azure/azure-sdk-for-go/sdk/internal", - sum = "h1:jp0dGvZ7ZK0mgqnTSClMxa5xuRL7NZgHameVYF6BurY=", - version = "v1.0.0", + sum = "h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY=", + version = "v1.3.0", ) go_repository( name = "com_github_azure_azure_sdk_for_go_sdk_storage_azblob", @@ -672,8 +680,8 @@ def go_dependencies(): name = "com_github_azuread_microsoft_authentication_library_for_go", build_file_proto_mode = "disable_global", importpath = "github.com/AzureAD/microsoft-authentication-library-for-go", - sum = "h1:XMEdVDFxgulDDl0lQmAZS6j8gRQ/0pJ+ZpXH2FHVtDc=", - version = "v0.6.0", + sum = "h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk=", + version = "v1.1.1", ) go_repository( @@ -2717,6 +2725,14 @@ def go_dependencies(): sum = "h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=", version = "v4.5.0", ) + go_repository( + name = "com_github_golang_jwt_jwt_v5", + build_file_proto_mode = "disable_global", + importpath = "github.com/golang-jwt/jwt/v5", + sum = "h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE=", + version = "v5.0.0", + ) + go_repository( name = "com_github_golang_lint", build_file_proto_mode = "disable_global", @@ -4739,8 +4755,8 @@ def go_dependencies(): name = "com_github_montanaflynn_stats", build_file_proto_mode = "disable_global", importpath = "github.com/montanaflynn/stats", - sum = "h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=", - version = "v0.0.0-20171201202039-1bf9dbcd8cbe", + sum = "h1:r3y12KyNxj/Sb/iOE46ws+3mS1+MZca1wlHQFPsY/JU=", + version = "v0.7.0", ) go_repository( diff --git a/go.mod b/go.mod index 18712b7b6bc90..aabbc38512891 100644 --- a/go.mod +++ b/go.mod @@ -249,6 +249,9 @@ require ( ) require ( + github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai v0.3.0 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.8.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 github.com/aws/constructs-go/constructs/v10 v10.2.69 github.com/aws/jsii-runtime-go v1.84.0 github.com/dghubble/gologin/v2 v2.4.0 @@ -283,6 +286,8 @@ require ( require ( cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 // indirect cloud.google.com/go/trace v1.10.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.16.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.41.0 // indirect github.com/Masterminds/semver/v3 v3.2.1 // indirect @@ -309,6 +314,7 @@ require ( github.com/fullstorydev/grpcurl v1.8.6 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/goccy/go-json v0.9.11 // indirect + github.com/golang-jwt/jwt/v5 v5.0.0 // indirect github.com/google/flatbuffers v2.0.8+incompatible // indirect github.com/google/gnostic v0.5.7-v3refs // indirect github.com/google/s2a-go v0.1.4 // indirect @@ -328,6 +334,7 @@ require ( github.com/jackc/pgproto3/v2 v2.3.0 // indirect github.com/klauspost/asmfmt v1.3.2 // indirect github.com/knadh/koanf/v2 v2.0.1 // indirect + github.com/kylelemons/godebug v1.1.0 // indirect github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 // indirect github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 // indirect github.com/moby/sys/mountinfo v0.6.2 // indirect diff --git a/go.sum b/go.sum index f44bfc967f0e2..52387c11377e9 100644 --- a/go.sum +++ b/go.sum @@ -75,6 +75,14 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7 github.com/99designs/gqlgen v0.17.2/go.mod h1:K5fzLKwtph+FFgh9j7nFbRUdBKvTcGnsta51fsMTn3o= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/Azure/azure-sdk-for-go v56.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai v0.3.0 h1:x7fb22Q43h2DRFCvp9rAua8PoV3gwtl1bK5+pihnihA= +github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai v0.3.0/go.mod h1:zPJgGMjMheJJrYgrQ4W8NrNCWtWXAkjI3KWYFnTtwdA= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.8.0 h1:9kDVnTz3vbfweTqAUmk/a/pH5pWFCHtvRpHYC0G/dcA= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.8.0/go.mod h1:3Ug6Qzto9anB6mGlEdgYMDF5zHQ+wwhEaYR4s17PHMw= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= @@ -86,6 +94,8 @@ github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935 github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= @@ -759,6 +769,8 @@ github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzw github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f h1:16RtHeWGkJMc80Etb8RPCcKevXGldr57+LOyZt8zOlg= github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f/go.mod h1:ijRvpgDJDI262hYq/IQVYgf8hd8IHUs93Ol0kvMBAx4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -1190,6 +1202,7 @@ github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= diff --git a/internal/completions/client/azureopenai/BUILD.bazel b/internal/completions/client/azureopenai/BUILD.bazel index f1a98b1924085..df50f53417880 100644 --- a/internal/completions/client/azureopenai/BUILD.bazel +++ b/internal/completions/client/azureopenai/BUILD.bazel @@ -7,10 +7,11 @@ go_library( importpath = "github.com/sourcegraph/sourcegraph/internal/completions/client/azureopenai", visibility = ["//:__subpackages__"], deps = [ - "//internal/completions/client/openai", "//internal/completions/types", - "//internal/httpcli", "//lib/errors", + "@com_github_azure_azure_sdk_for_go_sdk_ai_azopenai//:azopenai", + "@com_github_azure_azure_sdk_for_go_sdk_azcore//:azcore", + "@com_github_azure_azure_sdk_for_go_sdk_azidentity//:azidentity", ], ) @@ -20,6 +21,9 @@ go_test( embed = [":azureopenai"], deps = [ "//internal/completions/types", + "//lib/errors", + "@com_github_azure_azure_sdk_for_go_sdk_ai_azopenai//:azopenai", + "@com_github_azure_azure_sdk_for_go_sdk_azcore//:azcore", "@com_github_hexops_autogold_v2//:autogold", "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//require", diff --git a/internal/completions/client/azureopenai/openai.go b/internal/completions/client/azureopenai/openai.go index d569a3c8e91c7..b989012139707 100644 --- a/internal/completions/client/azureopenai/openai.go +++ b/internal/completions/client/azureopenai/openai.go @@ -1,32 +1,81 @@ package azureopenai import ( - "bytes" "context" - "encoding/json" - "fmt" + "io" "net/http" - "net/url" - "strings" + "sync" + + "github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azidentity" - "github.com/sourcegraph/sourcegraph/internal/completions/client/openai" "github.com/sourcegraph/sourcegraph/internal/completions/types" - "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/lib/errors" ) -func NewClient(cli httpcli.Doer, endpoint, accessToken string) types.CompletionsClient { - return &azureCompletionClient{ - cli: cli, - accessToken: accessToken, - endpoint: endpoint, +// We want to reuse the client because when using the DefaultAzureCredential +// it will acquire a short lived token and reusing the client +// prevents acquiring a new token on every request. +// The client will refresh the token as needed. + +var apiClient completionsClient + +type completionsClient struct { + mu sync.RWMutex + accessToken string + endpoint string + client *azopenai.Client +} + +type CompletionsClient interface { + GetCompletionsStream(ctx context.Context, body azopenai.CompletionsOptions, options *azopenai.GetCompletionsStreamOptions) (azopenai.GetCompletionsStreamResponse, error) + GetCompletions(ctx context.Context, body azopenai.CompletionsOptions, options *azopenai.GetCompletionsOptions) (azopenai.GetCompletionsResponse, error) + GetChatCompletions(ctx context.Context, body azopenai.ChatCompletionsOptions, options *azopenai.GetChatCompletionsOptions) (azopenai.GetChatCompletionsResponse, error) + GetChatCompletionsStream(ctx context.Context, body azopenai.ChatCompletionsOptions, options *azopenai.GetChatCompletionsStreamOptions) (azopenai.GetChatCompletionsStreamResponse, error) +} + +func GetAPIClient(endpoint, accessToken string) (CompletionsClient, error) { + apiClient.mu.RLock() + if apiClient.client != nil && apiClient.endpoint == endpoint && apiClient.accessToken == accessToken { + apiClient.mu.RUnlock() + return apiClient.client, nil + } + apiClient.mu.RUnlock() + apiClient.mu.Lock() + defer apiClient.mu.Unlock() + var err error + if accessToken != "" { + credential, credErr := azopenai.NewKeyCredential(accessToken) + if credErr != nil { + return nil, credErr + } + apiClient.client, err = azopenai.NewClientWithKeyCredential(endpoint, credential, nil) + } else { + credential, credErr := azidentity.NewDefaultAzureCredential(nil) + if credErr != nil { + return nil, credErr + } + apiClient.client, err = azopenai.NewClient(endpoint, credential, nil) + } + return apiClient.client, err + +} + +type GetCompletionsAPIClientFunc func(accessToken, endpoint string) (CompletionsClient, error) + +func NewClient(getClient GetCompletionsAPIClientFunc, accessToken, endpoint string) (types.CompletionsClient, error) { + client, err := getClient(accessToken, endpoint) + if err != nil { + return nil, err } + return &azureCompletionClient{ + client: client, + }, nil } type azureCompletionClient struct { - cli httpcli.Doer - accessToken string - endpoint string + client CompletionsClient } func (c *azureCompletionClient) Complete( @@ -34,35 +83,56 @@ func (c *azureCompletionClient) Complete( feature types.CompletionsFeature, requestParams types.CompletionRequestParameters, ) (*types.CompletionResponse, error) { - var resp *http.Response - var err error - defer (func() { - if resp != nil { - resp.Body.Close() - } - })() - if feature == types.CompletionsFeatureCode { - resp, err = c.makeCompletionRequest(ctx, requestParams, false) - } else { - resp, err = c.makeRequest(ctx, requestParams, false) + + switch feature { + case types.CompletionsFeatureCode: + return completeAutocomplete(ctx, c.client, requestParams) + case types.CompletionsFeatureChat: + return completeChat(ctx, c.client, requestParams) + default: + return nil, errors.New("invalid completions feature") } +} + +func completeAutocomplete( + ctx context.Context, + client CompletionsClient, + requestParams types.CompletionRequestParameters, +) (*types.CompletionResponse, error) { + options, err := getCompletionsOptions(requestParams) if err != nil { return nil, err } - - var response openaiResponse - if err := json.NewDecoder(resp.Body).Decode(&response); err != nil { - return nil, err + response, err := client.GetCompletions(ctx, options, nil) + if err != nil { + return nil, toStatusCodeError(err) } - if len(response.Choices) == 0 { - // Empty response. + // Text and FinishReason are documented as REQUIRED but checking just to be safe + if !hasValidFirstCompletionsChoice(response.Choices) { return &types.CompletionResponse{}, nil } + return &types.CompletionResponse{ + Completion: *response.Choices[0].Text, + StopReason: string(*response.Choices[0].FinishReason), + }, nil +} +func completeChat( + ctx context.Context, + client CompletionsClient, + requestParams types.CompletionRequestParameters, +) (*types.CompletionResponse, error) { + response, err := client.GetChatCompletions(ctx, getChatOptions(requestParams), nil) + if err != nil { + return nil, toStatusCodeError(err) + } + if !hasValidFirstChatChoice(response.Choices) { + return &types.CompletionResponse{}, nil + } return &types.CompletionResponse{ - Completion: response.Choices[0].Text, - StopReason: response.Choices[0].FinishReason, + Completion: *response.Choices[0].Delta.Content, + StopReason: string(*response.Choices[0].FinishReason), }, nil } @@ -72,239 +142,184 @@ func (c *azureCompletionClient) Stream( requestParams types.CompletionRequestParameters, sendEvent types.SendCompletionEvent, ) error { - var resp *http.Response - var err error - - defer (func() { - if resp != nil { - resp.Body.Close() - } - })() - if feature == types.CompletionsFeatureCode { - resp, err = c.makeCompletionRequest(ctx, requestParams, true) - } else { - resp, err = c.makeRequest(ctx, requestParams, true) + switch feature { + case types.CompletionsFeatureCode: + return streamAutocomplete(ctx, c.client, requestParams, sendEvent) + case types.CompletionsFeatureChat: + return streamChat(ctx, c.client, requestParams, sendEvent) + default: + return errors.New("invalid completions feature") } +} + +func streamAutocomplete( + ctx context.Context, + client CompletionsClient, + requestParams types.CompletionRequestParameters, + sendEvent types.SendCompletionEvent, +) error { + options, err := getCompletionsOptions(requestParams) if err != nil { return err } + resp, err := client.GetCompletionsStream(ctx, options, nil) + if err != nil { + return toStatusCodeError(err) + } + defer resp.CompletionsStream.Close() - dec := openai.NewDecoder(resp.Body) + // Azure sends incremental deltas for each message in a chat stream + // build up the full message content over multiple responses var content string - for dec.Scan() { - if ctx.Err() != nil && ctx.Err() == context.Canceled { + for { + entry, err := resp.CompletionsStream.Read() + // stream is done + if errors.Is(err, io.EOF) { return nil } + // some other error has occured + if err != nil { + return err + } - data := dec.Data() - // Gracefully skip over any data that isn't JSON-like. - if !bytes.HasPrefix(data, []byte("{")) { - continue + // hasValidFirstCompletionsChoice checks for a valid 1st choice which has text + if hasValidFirstCompletionsChoice(entry.Choices) { + content += *entry.Choices[0].Text + finish := "" + if entry.Choices[0].FinishReason != nil { + finish = string(*entry.Choices[0].FinishReason) + } + ev := types.CompletionResponse{ + Completion: content, + StopReason: finish, + } + err := sendEvent(ev) + if err != nil { + return err + } } + } +} - var event openaiResponse - if err := json.Unmarshal(data, &event); err != nil { - return errors.Errorf("failed to decode event payload: %w - body: %s", err, string(data)) +func streamChat( + ctx context.Context, + client CompletionsClient, + requestParams types.CompletionRequestParameters, + sendEvent types.SendCompletionEvent, +) error { + + resp, err := client.GetChatCompletionsStream(ctx, getChatOptions(requestParams), nil) + if err != nil { + return toStatusCodeError(err) + } + defer resp.ChatCompletionsStream.Close() + + // Azure sends incremental deltas for each message in a chat stream + // build up the full message content over multiple responses + var content string + for { + entry, err := resp.ChatCompletionsStream.Read() + // stream is done + if errors.Is(err, io.EOF) { + return nil + } + // some other error has occurred + if err != nil { + return err } - if len(event.Choices) > 0 { - if feature == types.CompletionsFeatureCode { - content += event.Choices[0].Text - } else { - content += event.Choices[0].Delta.Content + if hasValidFirstChatChoice(entry.Choices) { + // hasValidFirstChatChoice checks that Delta.Content isn't null + // it is marked as REQUIRED in docs despite being a pointer + content += *entry.Choices[0].Delta.Content + + finish := "" + // FinishReason is marked as REQUIRED but it's nil until the end + if entry.Choices[0].FinishReason != nil { + finish = string(*entry.Choices[0].FinishReason) } ev := types.CompletionResponse{ Completion: content, - StopReason: event.Choices[0].FinishReason, + StopReason: finish, } - err = sendEvent(ev) + err := sendEvent(ev) if err != nil { return err } } } +} - return dec.Err() +// hasValidChatChoice checks to ensure there is a choice and the first one contains non-nil values +func hasValidFirstChatChoice(choices []azopenai.ChatChoice) bool { + return len(choices) > 0 && + choices[0].Delta != nil && + choices[0].Delta.Content != nil } -func (c *azureCompletionClient) makeRequest(ctx context.Context, requestParams types.CompletionRequestParameters, stream bool) (*http.Response, error) { - if requestParams.TopK < 0 { - requestParams.TopK = 0 - } - if requestParams.TopP < 0 { - requestParams.TopP = 0 - } +// hasValidChatChoice checks to ensure there is a choice and the first one contains non-nil values +func hasValidFirstCompletionsChoice(choices []azopenai.Choice) bool { + return len(choices) > 0 && + choices[0].Text != nil +} - payload := azureChatCompletionsRequestParameters{ - Temperature: requestParams.Temperature, - TopP: requestParams.TopP, - N: 1, - Stream: stream, - MaxTokens: requestParams.MaxTokensToSample, - Stop: requestParams.StopSequences, - } - for _, m := range requestParams.Messages { - var role string +func getChatMessages(messages []types.Message) []azopenai.ChatMessage { + azureMessages := make([]azopenai.ChatMessage, len(messages)) + for i, m := range messages { + var role azopenai.ChatRole + message := m.Text switch m.Speaker { case types.HUMAN_MESSAGE_SPEAKER: - role = "user" + role = azopenai.ChatRoleUser case types.ASISSTANT_MESSAGE_SPEAKER: - role = "assistant" - default: - role = strings.ToLower(role) + role = azopenai.ChatRoleAssistant + } + azureMessages[i] = azopenai.ChatMessage{ + Content: &message, + Role: &role, } - payload.Messages = append(payload.Messages, message{ - Role: role, - Content: m.Text, - }) - } - - reqBody, err := json.Marshal(payload) - if err != nil { - return nil, err - } - - url, err := url.Parse(c.endpoint) - if err != nil { - return nil, errors.Wrap(err, "failed to parse configured endpoint") } - q := url.Query() - q.Add("api-version", "2023-05-15") - url.RawQuery = q.Encode() - url.Path = fmt.Sprintf("/openai/deployments/%s/chat/completions", requestParams.Model) + return azureMessages +} - req, err := http.NewRequestWithContext(ctx, "POST", url.String(), bytes.NewReader(reqBody)) - if err != nil { - return nil, err +func getChatOptions(requestParams types.CompletionRequestParameters) azopenai.ChatCompletionsOptions { + if requestParams.TopK < 0 { + requestParams.TopK = 0 } - - req.Header.Set("Content-Type", "application/json") - req.Header.Set("api-key", c.accessToken) - - resp, err := c.cli.Do(req) - if err != nil { - return nil, err + if requestParams.TopP < 0 { + requestParams.TopP = 0 } - - if resp.StatusCode != http.StatusOK { - return nil, types.NewErrStatusNotOK("AzureOpenAI", resp) + return azopenai.ChatCompletionsOptions{ + Messages: getChatMessages(requestParams.Messages), + Temperature: &requestParams.Temperature, + TopP: &requestParams.TopP, + N: intToInt32Ptr(1), + Stop: requestParams.StopSequences, + MaxTokens: intToInt32Ptr(requestParams.MaxTokensToSample), + Deployment: requestParams.Model, } - - return resp, nil } -func (c *azureCompletionClient) makeCompletionRequest(ctx context.Context, requestParams types.CompletionRequestParameters, stream bool) (*http.Response, error) { +func getCompletionsOptions(requestParams types.CompletionRequestParameters) (azopenai.CompletionsOptions, error) { if requestParams.TopK < 0 { requestParams.TopK = 0 } if requestParams.TopP < 0 { requestParams.TopP = 0 } - prompt, err := getPrompt(requestParams.Messages) if err != nil { - return nil, err + return azopenai.CompletionsOptions{}, err } - - payload := azureCompletionsRequestParameters{ - Temperature: requestParams.Temperature, - TopP: requestParams.TopP, - N: 1, - Stream: stream, - MaxTokens: requestParams.MaxTokensToSample, + return azopenai.CompletionsOptions{ + Prompt: []string{prompt}, + Temperature: &requestParams.Temperature, + TopP: &requestParams.TopP, + N: intToInt32Ptr(1), Stop: requestParams.StopSequences, - Prompt: prompt, - } - - reqBody, err := json.Marshal(payload) - if err != nil { - return nil, err - } - url, err := url.Parse(c.endpoint) - if err != nil { - return nil, errors.Wrap(err, "failed to parse configured endpoint") - } - q := url.Query() - q.Add("api-version", "2023-05-15") - url.RawQuery = q.Encode() - url.Path = fmt.Sprintf("/openai/deployments/%s/completions", requestParams.Model) - - req, err := http.NewRequestWithContext(ctx, "POST", url.String(), bytes.NewReader(reqBody)) - if err != nil { - return nil, err - } - - req.Header.Set("Content-Type", "application/json") - req.Header.Set("api-key", c.accessToken) - - resp, err := c.cli.Do(req) - if err != nil { - return nil, err - } - - if resp.StatusCode != http.StatusOK { - return nil, types.NewErrStatusNotOK("AzureOpenAI", resp) - } - - return resp, nil -} - -type azureChatCompletionsRequestParameters struct { - Messages []message `json:"messages"` - Temperature float32 `json:"temperature,omitempty"` - TopP float32 `json:"top_p,omitempty"` - N int `json:"n,omitempty"` - Stream bool `json:"stream,omitempty"` - Stop []string `json:"stop,omitempty"` - MaxTokens int `json:"max_tokens,omitempty"` - PresencePenalty float32 `json:"presence_penalty,omitempty"` - FrequencyPenalty float32 `json:"frequency_penalty,omitempty"` - LogitBias map[string]float32 `json:"logit_bias,omitempty"` - User string `json:"user,omitempty"` -} - -type azureCompletionsRequestParameters struct { - Prompt string `json:"prompt"` - Temperature float32 `json:"temperature,omitempty"` - TopP float32 `json:"top_p,omitempty"` - N int `json:"n,omitempty"` - Stream bool `json:"stream,omitempty"` - Stop []string `json:"stop,omitempty"` - MaxTokens int `json:"max_tokens,omitempty"` - PresencePenalty float32 `json:"presence_penalty,omitempty"` - FrequencyPenalty float32 `json:"frequency_penalty,omitempty"` - LogitBias map[string]float32 `json:"logit_bias,omitempty"` - Suffix string `json:"suffix,omitempty"` - User string `json:"user,omitempty"` -} - -type message struct { - Role string `json:"role"` - Content string `json:"content"` -} - -type azure struct { - PromptTokens int `json:"prompt_tokens"` - CompletionTokens int `json:"completion_tokens"` - TotalTokens int `json:"total_tokens"` -} - -type openaiChoiceDelta struct { - Content string `json:"content"` -} - -type openaiChoice struct { - Delta openaiChoiceDelta `json:"delta"` - Role string `json:"role"` - Text string `json:"text"` - FinishReason string `json:"finish_reason"` -} - -type openaiResponse struct { - // Usage is only available for non-streaming requests. - Usage azure `json:"usage"` - Model string `json:"model"` - Choices []openaiChoice `json:"choices"` + MaxTokens: intToInt32Ptr(requestParams.MaxTokensToSample), + Deployment: requestParams.Model, + }, nil } func getPrompt(messages []types.Message) (string, error) { @@ -314,3 +329,21 @@ func getPrompt(messages []types.Message) (string, error) { return messages[0].Text, nil } + +func intToInt32Ptr(i int) *int32 { + v := int32(i) + return &v +} + +// toStatusCodeError converts Azure SDK ResponseError to a ErrStatusNotOK error +// when the status code is not OK. This allows the request handler to return the +// appropriate status code to the calling client which is especially important for rate limits. +func toStatusCodeError(err error) error { + var responseError *azcore.ResponseError + if errors.As(err, &responseError) { + if responseError.StatusCode != http.StatusOK { + return types.NewErrStatusNotOK("AzureOpenAI", responseError.RawResponse) + } + } + return err +} diff --git a/internal/completions/client/azureopenai/openai_test.go b/internal/completions/client/azureopenai/openai_test.go index ed842fa1d5313..1f4c850490507 100644 --- a/internal/completions/client/azureopenai/openai_test.go +++ b/internal/completions/client/azureopenai/openai_test.go @@ -5,39 +5,83 @@ import ( "context" "io" "net/http" + "net/url" "testing" + "github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/hexops/autogold/v2" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/sourcegraph/sourcegraph/internal/completions/types" + "github.com/sourcegraph/sourcegraph/lib/errors" ) -type mockDoer struct { - do func(*http.Request) (*http.Response, error) +type mockAzureClient struct { + getCompletionsStream func(ctx context.Context, body azopenai.CompletionsOptions, options *azopenai.GetCompletionsStreamOptions) (azopenai.GetCompletionsStreamResponse, error) + getCompletions func(ctx context.Context, body azopenai.CompletionsOptions, options *azopenai.GetCompletionsOptions) (azopenai.GetCompletionsResponse, error) + getChatCompletions func(ctx context.Context, body azopenai.ChatCompletionsOptions, options *azopenai.GetChatCompletionsOptions) (azopenai.GetChatCompletionsResponse, error) + getChatCompletionsStream func(ctx context.Context, body azopenai.ChatCompletionsOptions, options *azopenai.GetChatCompletionsStreamOptions) (azopenai.GetChatCompletionsStreamResponse, error) } -func (c *mockDoer) Do(r *http.Request) (*http.Response, error) { - return c.do(r) +func (c *mockAzureClient) GetCompletionsStream(ctx context.Context, body azopenai.CompletionsOptions, options *azopenai.GetCompletionsStreamOptions) (azopenai.GetCompletionsStreamResponse, error) { + return c.getCompletionsStream(ctx, body, options) +} + +func (c *mockAzureClient) GetCompletions(ctx context.Context, body azopenai.CompletionsOptions, options *azopenai.GetCompletionsOptions) (azopenai.GetCompletionsResponse, error) { + return c.getCompletions(ctx, body, options) +} + +func (c *mockAzureClient) GetChatCompletions(ctx context.Context, body azopenai.ChatCompletionsOptions, options *azopenai.GetChatCompletionsOptions) (azopenai.GetChatCompletionsResponse, error) { + return c.getChatCompletions(ctx, body, options) +} + +func (c *mockAzureClient) GetChatCompletionsStream(ctx context.Context, body azopenai.ChatCompletionsOptions, options *azopenai.GetChatCompletionsStreamOptions) (azopenai.GetChatCompletionsStreamResponse, error) { + return c.getChatCompletionsStream(ctx, body, options) +} + +func getNewMockAzureAPIClient(mock *mockAzureClient) func(accessToken, endpoint string) (CompletionsClient, error) { + return func(accessToken, endpoint string) (CompletionsClient, error) { + return mock, nil + } +} + +func azure429ResponseError() *azcore.ResponseError { + return &azcore.ResponseError{ + StatusCode: http.StatusTooManyRequests, + ErrorCode: "429", + RawResponse: &http.Response{ + Request: &http.Request{Method: "GET", URL: &url.URL{}, Header: http.Header(map[string][]string{})}, + StatusCode: http.StatusTooManyRequests, + Body: io.NopCloser(bytes.NewReader([]byte("too many requests"))), + }, + } } func TestErrStatusNotOK(t *testing.T) { - mockClient := NewClient(&mockDoer{ - func(r *http.Request) (*http.Response, error) { - return &http.Response{ - StatusCode: http.StatusTooManyRequests, - Body: io.NopCloser(bytes.NewReader([]byte("oh no, please slow down!"))), - }, nil + getAzureAPIClient := getNewMockAzureAPIClient(&mockAzureClient{ + getCompletionsStream: func(ctx context.Context, body azopenai.CompletionsOptions, options *azopenai.GetCompletionsStreamOptions) (azopenai.GetCompletionsStreamResponse, error) { + return azopenai.GetCompletionsStreamResponse{}, azure429ResponseError() + }, + getCompletions: func(ctx context.Context, body azopenai.CompletionsOptions, options *azopenai.GetCompletionsOptions) (azopenai.GetCompletionsResponse, error) { + return azopenai.GetCompletionsResponse{}, azure429ResponseError() + }, + getChatCompletions: func(ctx context.Context, body azopenai.ChatCompletionsOptions, options *azopenai.GetChatCompletionsOptions) (azopenai.GetChatCompletionsResponse, error) { + return azopenai.GetChatCompletionsResponse{}, azure429ResponseError() }, - }, "", "") + getChatCompletionsStream: func(ctx context.Context, body azopenai.ChatCompletionsOptions, options *azopenai.GetChatCompletionsStreamOptions) (azopenai.GetChatCompletionsStreamResponse, error) { + return azopenai.GetChatCompletionsStreamResponse{}, azure429ResponseError() + }, + }) + mockClient, _ := NewClient(getAzureAPIClient, "", "") t.Run("Complete", func(t *testing.T) { resp, err := mockClient.Complete(context.Background(), types.CompletionsFeatureChat, types.CompletionRequestParameters{}) require.Error(t, err) assert.Nil(t, resp) - autogold.Expect("AzureOpenAI: unexpected status code 429: oh no, please slow down!").Equal(t, err.Error()) + autogold.Expect("AzureOpenAI: unexpected status code 429: too many requests").Equal(t, err.Error()) _, ok := types.IsErrStatusNotOK(err) assert.True(t, ok) }) @@ -46,8 +90,45 @@ func TestErrStatusNotOK(t *testing.T) { err := mockClient.Stream(context.Background(), types.CompletionsFeatureChat, types.CompletionRequestParameters{}, func(event types.CompletionResponse) error { return nil }) require.Error(t, err) - autogold.Expect("AzureOpenAI: unexpected status code 429: oh no, please slow down!").Equal(t, err.Error()) + autogold.Expect("AzureOpenAI: unexpected status code 429: too many requests").Equal(t, err.Error()) _, ok := types.IsErrStatusNotOK(err) assert.True(t, ok) }) } + +func TestGenericErr(t *testing.T) { + getAzureAPIClient := getNewMockAzureAPIClient(&mockAzureClient{ + getCompletionsStream: func(ctx context.Context, body azopenai.CompletionsOptions, options *azopenai.GetCompletionsStreamOptions) (azopenai.GetCompletionsStreamResponse, error) { + return azopenai.GetCompletionsStreamResponse{}, errors.New("error") + }, + getCompletions: func(ctx context.Context, body azopenai.CompletionsOptions, options *azopenai.GetCompletionsOptions) (azopenai.GetCompletionsResponse, error) { + return azopenai.GetCompletionsResponse{}, errors.New("error") + }, + getChatCompletions: func(ctx context.Context, body azopenai.ChatCompletionsOptions, options *azopenai.GetChatCompletionsOptions) (azopenai.GetChatCompletionsResponse, error) { + return azopenai.GetChatCompletionsResponse{}, errors.New("error") + }, + getChatCompletionsStream: func(ctx context.Context, body azopenai.ChatCompletionsOptions, options *azopenai.GetChatCompletionsStreamOptions) (azopenai.GetChatCompletionsStreamResponse, error) { + return azopenai.GetChatCompletionsStreamResponse{}, errors.New("error") + }, + }) + + mockClient, _ := NewClient(getAzureAPIClient, "", "") + t.Run("Complete", func(t *testing.T) { + resp, err := mockClient.Complete(context.Background(), types.CompletionsFeatureChat, types.CompletionRequestParameters{}) + require.Error(t, err) + assert.Nil(t, resp) + + autogold.Expect("error").Equal(t, err.Error()) + _, ok := types.IsErrStatusNotOK(err) + assert.False(t, ok) + }) + + t.Run("Stream", func(t *testing.T) { + err := mockClient.Stream(context.Background(), types.CompletionsFeatureChat, types.CompletionRequestParameters{}, func(event types.CompletionResponse) error { return nil }) + require.Error(t, err) + + autogold.Expect("error").Equal(t, err.Error()) + _, ok := types.IsErrStatusNotOK(err) + assert.False(t, ok) + }) +} diff --git a/internal/completions/client/client.go b/internal/completions/client/client.go index 60cc8b1db9af4..ad392e7ad2649 100644 --- a/internal/completions/client/client.go +++ b/internal/completions/client/client.go @@ -37,7 +37,7 @@ func getBasic(endpoint string, provider conftypes.CompletionsProviderName, acces case conftypes.CompletionsProviderNameOpenAI: return openai.NewClient(httpcli.UncachedExternalDoer, endpoint, accessToken), nil case conftypes.CompletionsProviderNameAzureOpenAI: - return azureopenai.NewClient(httpcli.UncachedExternalDoer, endpoint, accessToken), nil + return azureopenai.NewClient(azureopenai.GetAPIClient, endpoint, accessToken) case conftypes.CompletionsProviderNameSourcegraph: return codygateway.NewClient(httpcli.UncachedExternalDoer, endpoint, accessToken) case conftypes.CompletionsProviderNameFireworks: diff --git a/internal/conf/computed.go b/internal/conf/computed.go index a05715731adb4..b68ab6ff03565 100644 --- a/internal/conf/computed.go +++ b/internal/conf/computed.go @@ -700,11 +700,6 @@ func GetCompletionsConfig(siteConfig schema.SiteConfiguration) (c *conftypes.Com return nil } - // If not access token is set, we cannot talk to Azure OpenAI. Bail. - if completionsConfig.AccessToken == "" { - return nil - } - // If not chat model is set, we cannot talk to Azure OpenAI. Bail. if completionsConfig.ChatModel == "" { return nil @@ -934,11 +929,6 @@ func GetEmbeddingsConfig(siteConfig schema.SiteConfiguration) *conftypes.Embeddi return nil } - // If not access token is set, we cannot talk to OpenAI. Bail. - if embeddingsConfig.AccessToken == "" { - return nil - } - // If no model is set, we cannot do anything here. if embeddingsConfig.Model == "" { return nil diff --git a/internal/embeddings/embed/client/azureopenai/BUILD.bazel b/internal/embeddings/embed/client/azureopenai/BUILD.bazel index 029530306b216..16dec53555393 100644 --- a/internal/embeddings/embed/client/azureopenai/BUILD.bazel +++ b/internal/embeddings/embed/client/azureopenai/BUILD.bazel @@ -11,6 +11,8 @@ go_library( "//internal/embeddings/embed/client", "//internal/embeddings/embed/client/modeltransformations", "//lib/errors", + "@com_github_azure_azure_sdk_for_go_sdk_ai_azopenai//:azopenai", + "@com_github_azure_azure_sdk_for_go_sdk_azidentity//:azidentity", ], ) @@ -20,6 +22,8 @@ go_test( embed = [":azureopenai"], deps = [ "//internal/conf/conftypes", + "//lib/errors", + "@com_github_azure_azure_sdk_for_go_sdk_ai_azopenai//:azopenai", "@com_github_stretchr_testify//require", ], ) diff --git a/internal/embeddings/embed/client/azureopenai/client.go b/internal/embeddings/embed/client/azureopenai/client.go index 7cd49fa585f8b..b84284390ddd4 100644 --- a/internal/embeddings/embed/client/azureopenai/client.go +++ b/internal/embeddings/embed/client/azureopenai/client.go @@ -1,14 +1,13 @@ package azureopenai import ( - "bytes" "context" - "encoding/json" "fmt" - "io" - "net/http" - "net/url" "strings" + "sync" + + "github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai" + "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/sourcegraph/sourcegraph/internal/conf/conftypes" "github.com/sourcegraph/sourcegraph/internal/embeddings/embed/client" @@ -16,18 +15,68 @@ import ( "github.com/sourcegraph/sourcegraph/lib/errors" ) -func NewClient(httpClient *http.Client, config *conftypes.EmbeddingsConfig) *azureOpenaiEmbeddingsClient { +// We want to reuse the client because when using the DefaultAzureCredential +// it will acquire a short lived token and reusing the client +// prevents acquiring a new token on every request. +// The client will refresh the token as needed. +var apiClient embeddingsClient + +type embeddingsClient struct { + mu sync.RWMutex + accessToken string + endpoint string + client *azopenai.Client +} + +type EmbeddingsClient interface { + GetEmbeddings(ctx context.Context, body azopenai.EmbeddingsOptions, options *azopenai.GetEmbeddingsOptions) (azopenai.GetEmbeddingsResponse, error) +} + +type GetEmbeddingsAPIClientFunc func(endpoint, accessToken string) (EmbeddingsClient, error) + +func GetAPIClient(endpoint, accessToken string) (EmbeddingsClient, error) { + apiClient.mu.RLock() + if apiClient.client != nil && apiClient.endpoint == endpoint && apiClient.accessToken == accessToken { + apiClient.mu.RUnlock() + return apiClient.client, nil + } + apiClient.mu.RUnlock() + apiClient.mu.Lock() + defer apiClient.mu.Unlock() + var err error + if accessToken != "" { + credential, credErr := azopenai.NewKeyCredential(accessToken) + if credErr != nil { + return nil, credErr + } + apiClient.client, err = azopenai.NewClientWithKeyCredential(endpoint, credential, nil) + } else { + credential, credErr := azidentity.NewDefaultAzureCredential(nil) + if credErr != nil { + return nil, credErr + } + apiClient.client, err = azopenai.NewClient(endpoint, credential, nil) + } + return apiClient.client, err + +} + +func NewClient(getClient GetEmbeddingsAPIClientFunc, config *conftypes.EmbeddingsConfig) (*azureOpenaiEmbeddingsClient, error) { + client, err := getClient(config.Endpoint, config.AccessToken) + if err != nil { + return nil, err + } return &azureOpenaiEmbeddingsClient{ - httpClient: httpClient, + client: client, dimensions: config.Dimensions, accessToken: config.AccessToken, model: config.Model, endpoint: config.Endpoint, - } + }, nil } type azureOpenaiEmbeddingsClient struct { - httpClient *http.Client + client EmbeddingsClient model string dimensions int endpoint string @@ -90,69 +139,20 @@ func (c *azureOpenaiEmbeddingsClient) getEmbeddings(ctx context.Context, texts [ return &client.EmbeddingsResults{Embeddings: embeddings, Failed: failed, Dimensions: c.dimensions}, nil } -func (c *azureOpenaiEmbeddingsClient) requestSingleEmbeddingWithRetryOnNull(ctx context.Context, input string, retries int) (*openaiEmbeddingAPIResponse, error) { +func (c *azureOpenaiEmbeddingsClient) requestSingleEmbeddingWithRetryOnNull(ctx context.Context, input string, retries int) (*azopenai.GetEmbeddingsResponse, error) { for i := 0; i < retries; i++ { - response, err := c.do(ctx, c.model, openaiEmbeddingAPIRequest{Input: input}) + response, err := c.client.GetEmbeddings(ctx, azopenai.EmbeddingsOptions{ + Input: []string{input}, + Deployment: c.model, + }, nil) + if err != nil { return nil, err } if len(response.Data) != 1 || len(response.Data[0].Embedding) == 0 { continue } - return response, nil + return &response, nil } return nil, errors.Newf("null response for embedding after %d retries", retries) } - -func (c *azureOpenaiEmbeddingsClient) do(ctx context.Context, model string, request openaiEmbeddingAPIRequest) (*openaiEmbeddingAPIResponse, error) { - bodyBytes, err := json.Marshal(request) - if err != nil { - return nil, err - } - - url, err := url.Parse(c.endpoint) - if err != nil { - return nil, errors.Wrap(err, "failed to parse configured endpoint") - } - q := url.Query() - q.Add("api-version", "2023-05-15") - url.RawQuery = q.Encode() - url.Path = fmt.Sprintf("/openai/deployments/%s/embeddings", model) - - req, err := http.NewRequestWithContext(ctx, http.MethodPost, url.String(), bytes.NewReader(bodyBytes)) - if err != nil { - return nil, err - } - req.Header.Set("Content-Type", "application/json") - req.Header.Set("api-key", c.accessToken) - - resp, err := c.httpClient.Do(req) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - if resp.StatusCode != http.StatusOK { - respBody, _ := io.ReadAll(io.LimitReader(resp.Body, 1024)) - return nil, errors.Errorf("embeddings: %s %q: failed with status %d: %s", req.Method, req.URL.String(), resp.StatusCode, string(respBody)) - } - - var response openaiEmbeddingAPIResponse - if err := json.NewDecoder(resp.Body).Decode(&response); err != nil { - return nil, err - } - return &response, nil -} - -type openaiEmbeddingAPIRequest struct { - Input string `json:"input"` -} - -type openaiEmbeddingAPIResponse struct { - Data []openaiEmbeddingAPIResponseData `json:"data"` -} - -type openaiEmbeddingAPIResponseData struct { - Index int `json:"index"` - Embedding []float32 `json:"embedding"` -} diff --git a/internal/embeddings/embed/client/azureopenai/client_test.go b/internal/embeddings/embed/client/azureopenai/client_test.go index 66193cf57980b..de44d32685e6e 100644 --- a/internal/embeddings/embed/client/azureopenai/client_test.go +++ b/internal/embeddings/embed/client/azureopenai/client_test.go @@ -2,120 +2,113 @@ package azureopenai import ( "context" - "encoding/json" - "net/http" - "net/http/httptest" - "net/url" "testing" + "github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai" "github.com/stretchr/testify/require" "github.com/sourcegraph/sourcegraph/internal/conf/conftypes" + "github.com/sourcegraph/sourcegraph/lib/errors" ) +type mockResponse struct { + resp azopenai.GetEmbeddingsResponse + err error +} + +type mockAzureClient struct { + current int + responses []mockResponse +} + +func (c *mockAzureClient) GetEmbeddings(ctx context.Context, body azopenai.EmbeddingsOptions, options *azopenai.GetEmbeddingsOptions) (azopenai.GetEmbeddingsResponse, error) { + if c.current < len(c.responses) { + i := c.current + c.current++ + return c.responses[i].resp, c.responses[i].err + } + + return azopenai.GetEmbeddingsResponse{}, errors.New("no more mock responses") + +} + +func newMockAPIClient(responses []mockResponse) GetEmbeddingsAPIClientFunc { + return func(accessToken, endpoint string) (EmbeddingsClient, error) { + return &mockAzureClient{ + responses: responses, + }, nil + } +} + func TestAzureOpenAI(t *testing.T) { t.Run("errors on empty embedding string", func(t *testing.T) { - client := NewClient(http.DefaultClient, &conftypes.EmbeddingsConfig{}) + client, _ := NewClient( + newMockAPIClient([]mockResponse{{resp: azopenai.GetEmbeddingsResponse{}, err: nil}}), + &conftypes.EmbeddingsConfig{}, + ) invalidTexts := []string{"a", ""} // empty string is invalid _, err := client.GetDocumentEmbeddings(context.Background(), invalidTexts) require.ErrorContains(t, err, "empty string") }) t.Run("retry on empty embedding", func(t *testing.T) { - gotRequest1 := false - gotRequest2 := false - s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { - // On the first request, respond with a null embedding - if !gotRequest1 { - resp := openaiEmbeddingAPIResponse{ - Data: []openaiEmbeddingAPIResponseData{{ - Index: 0, - Embedding: nil, - }}, - } - json.NewEncoder(w).Encode(resp) - gotRequest1 = true - return - } - - // The client should try that embedding once more. This time, actually return a value. - if !gotRequest2 { - resp := openaiEmbeddingAPIResponse{ - Data: []openaiEmbeddingAPIResponseData{{ - Index: 0, - Embedding: append(make([]float32, 1535), 1), - }}, - } - json.NewEncoder(w).Encode(resp) - gotRequest2 = true - return - } - - panic("only expected 2 responses") - })) - defer s.Close() - - httpClient := s.Client() - - // HACK: override the URL to always go to the test server - oldTransport := httpClient.Transport - httpClient.Transport = roundTripFunc(func(r *http.Request) (*http.Response, error) { - r.URL, _ = url.Parse(s.URL) - return oldTransport.RoundTrip(r) - }) - - client := NewClient(s.Client(), &conftypes.EmbeddingsConfig{Dimensions: 1536}) - resp, err := client.GetQueryEmbedding(context.Background(), "a") + client, _ := NewClient( + newMockAPIClient( + []mockResponse{ + {resp: azopenai.GetEmbeddingsResponse{Embeddings: azopenai.Embeddings{Data: []azopenai.EmbeddingItem{ + {Embedding: append(make([]float32, 1535), 1), Index: int32Ptr(0)}, + }}}, err: nil}, + {resp: azopenai.GetEmbeddingsResponse{Embeddings: azopenai.Embeddings{Data: []azopenai.EmbeddingItem{ + {Embedding: nil, Index: int32Ptr(1)}, + }}}, err: nil}, + {resp: azopenai.GetEmbeddingsResponse{Embeddings: azopenai.Embeddings{Data: []azopenai.EmbeddingItem{ + {Embedding: append(make([]float32, 1535), 2), Index: int32Ptr(0)}, + }}}, err: nil}, + }), + &conftypes.EmbeddingsConfig{Dimensions: 1536}, + ) + resp, err := client.GetDocumentEmbeddings(context.Background(), []string{"a", "b"}) require.NoError(t, err) var expected []float32 { expected = append(expected, make([]float32, 1535)...) expected = append(expected, 1) + expected = append(expected, make([]float32, 1535)...) + expected = append(expected, 2) } require.Equal(t, expected, resp.Embeddings) require.Empty(t, resp.Failed) - require.Equal(t, 1536, resp.Dimensions) - require.True(t, gotRequest1) - require.True(t, gotRequest2) }) t.Run("retry on empty embedding fails and returns failed indices no error", func(t *testing.T) { - gotRequest1 := false - s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { - // On the first request, respond with a successful embedding - if !gotRequest1 { - resp := openaiEmbeddingAPIResponse{ - Data: []openaiEmbeddingAPIResponseData{{ - Index: 0, - Embedding: append(make([]float32, 1535), 1), - }}, - } - json.NewEncoder(w).Encode(resp) - gotRequest1 = true - return - } - - // Always return an invalid response to all the requests after the first - resp := openaiEmbeddingAPIResponse{ - Data: []openaiEmbeddingAPIResponseData{{ - Index: 0, - Embedding: nil, - }}, - } - json.NewEncoder(w).Encode(resp) - })) - defer s.Close() - - httpClient := s.Client() - oldTransport := httpClient.Transport - httpClient.Transport = roundTripFunc(func(r *http.Request) (*http.Response, error) { - r.URL, _ = url.Parse(s.URL) - return oldTransport.RoundTrip(r) - }) - - client := NewClient(s.Client(), &conftypes.EmbeddingsConfig{Dimensions: 1536, ExcludeChunkOnError: true}) - resp, err := client.GetDocumentEmbeddings(context.Background(), []string{"a", "b"}) - require.NoError(t, err, "expected request to succeed") + client, _ := NewClient( + newMockAPIClient( + []mockResponse{ + // First success + {resp: azopenai.GetEmbeddingsResponse{Embeddings: azopenai.Embeddings{Data: []azopenai.EmbeddingItem{ + {Embedding: append(make([]float32, 1535), 1), Index: int32Ptr(0)}, + }}}, err: nil}, + // Initial Failure + {resp: azopenai.GetEmbeddingsResponse{Embeddings: azopenai.Embeddings{Data: []azopenai.EmbeddingItem{ + {Embedding: nil, Index: int32Ptr(1)}, + }}}, err: nil}, + // Retry 1 + {resp: azopenai.GetEmbeddingsResponse{Embeddings: azopenai.Embeddings{Data: []azopenai.EmbeddingItem{ + {Embedding: nil, Index: int32Ptr(1)}, + }}}, err: nil}, + // Retry 2 + {resp: azopenai.GetEmbeddingsResponse{Embeddings: azopenai.Embeddings{Data: []azopenai.EmbeddingItem{ + {Embedding: nil, Index: int32Ptr(1)}, + }}}, err: nil}, + // Final success + {resp: azopenai.GetEmbeddingsResponse{Embeddings: azopenai.Embeddings{Data: []azopenai.EmbeddingItem{ + {Embedding: append(make([]float32, 1535), 2), Index: int32Ptr(2)}, + }}}, err: nil}, + }), + &conftypes.EmbeddingsConfig{Dimensions: 1536}, + ) + resp, err := client.GetDocumentEmbeddings(context.Background(), []string{"a", "b", "c"}) + require.NoError(t, err) var expected []float32 { expected = append(expected, make([]float32, 1535)...) @@ -123,52 +116,17 @@ func TestAzureOpenAI(t *testing.T) { // zero value embedding when chunk fails to generate embeddings expected = append(expected, make([]float32, 1536)...) + + expected = append(expected, make([]float32, 1535)...) + expected = append(expected, 2) } failed := []int{1} - require.Equal(t, expected, resp.Embeddings) require.Equal(t, failed, resp.Failed) - require.Equal(t, 1536, resp.Dimensions) - }) - t.Run("success", func(t *testing.T) { - requestCount := 0 - s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { - requestCount++ - resp := openaiEmbeddingAPIResponse{ - Data: []openaiEmbeddingAPIResponseData{{ - Index: 0, - Embedding: append(make([]float32, 1535), float32(requestCount)), - }}, - } - json.NewEncoder(w).Encode(resp) - })) - defer s.Close() - - httpClient := s.Client() - oldTransport := httpClient.Transport - httpClient.Transport = roundTripFunc(func(r *http.Request) (*http.Response, error) { - r.URL, _ = url.Parse(s.URL) - return oldTransport.RoundTrip(r) - }) - - client := NewClient(s.Client(), &conftypes.EmbeddingsConfig{Dimensions: 1536}) - resp, err := client.GetDocumentEmbeddings(context.Background(), []string{"a", "b"}) - require.NoError(t, err, "expected request to succeed") - var expected []float32 - { - expected = append(expected, make([]float32, 1535)...) - expected = append(expected, 1) - expected = append(expected, make([]float32, 1535)...) - expected = append(expected, 2) - } - require.Equal(t, expected, resp.Embeddings) - require.Empty(t, resp.Failed) - require.Equal(t, 1536, resp.Dimensions) }) -} -type roundTripFunc func(r *http.Request) (*http.Response, error) +} -func (f roundTripFunc) RoundTrip(r *http.Request) (*http.Response, error) { return f(r) } +func int32Ptr(i int32) *int32 { return &i } diff --git a/internal/embeddings/embed/embed.go b/internal/embeddings/embed/embed.go index b8956dff115b8..2d6db057e4e4b 100644 --- a/internal/embeddings/embed/embed.go +++ b/internal/embeddings/embed/embed.go @@ -29,7 +29,7 @@ func NewEmbeddingsClient(config *conftypes.EmbeddingsConfig) (client.EmbeddingsC case conftypes.EmbeddingsProviderNameOpenAI: return openai.NewClient(httpcli.UncachedExternalClient, config), nil case conftypes.EmbeddingsProviderNameAzureOpenAI: - return azureopenai.NewClient(httpcli.UncachedExternalClient, config), nil + return azureopenai.NewClient(azureopenai.GetAPIClient, config) default: return nil, errors.Newf("invalid provider %q", config.Provider) } From be468410147cb42a16bb15c03c2d4cfa95534e52 Mon Sep 17 00:00:00 2001 From: Bolaji Olajide <25608335+BolajiOlajide@users.noreply.github.com> Date: Tue, 21 Nov 2023 08:54:20 +0100 Subject: [PATCH 093/222] remove CODEOWNERS (#58452) --- .github/CODEOWNERS | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 7cc5bb26eec45..0000000000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,14 +0,0 @@ -# Lines starting with '#' are comments. -# Each line is a file pattern followed by one or more owners. -# https://help.github.com/articles/about-codeowners/ -# -# Order is important; the last matching pattern takes the most -# precedence. - -# We prefer to use Codenotify (https://github.com/sourcegraph/codenotify) instead of CODEOWNERS. -# More context is in this blog post: https://about.sourcegraph.com/blog/a-different-way-to-think-about-code-ownership/ -# If you are tempted to add an entry to CODEOWNERS, please try using Codenotify first for some amount of time. -# If Codenotify does not satisfy your needs, then you can open a PR to propose adding a new entry to CODEOWNERS and Nick will review. -# The PR description should describe why using Codenotify was insufficient. Thanks! -CODEOWNERS @nicksnyder -.github/CODEOWNERS @nicksnyder From 4b2e494ca2a1f4108d10df96a89dddbb50dba795 Mon Sep 17 00:00:00 2001 From: Philipp Spiess <hello@philippspiess.com> Date: Tue, 21 Nov 2023 09:34:41 +0100 Subject: [PATCH 094/222] Route StarCoder traffic on the server to avoid downtime (#58404) * Route StarCoder traffic on the server to avoid downtime * Use the same FF as we already do * Fix issues * Wow I did not miss this * Update internal/completions/httpapi/chat.go Co-authored-by: Erik Seliger <erikseliger@me.com> --------- Co-authored-by: Erik Seliger <erikseliger@me.com> --- internal/completions/httpapi/BUILD.bazel | 1 + internal/completions/httpapi/chat.go | 3 +- .../completions/httpapi/codecompletion.go | 43 +++++++++++++------ internal/completions/httpapi/handler.go | 4 +- 4 files changed, 35 insertions(+), 16 deletions(-) diff --git a/internal/completions/httpapi/BUILD.bazel b/internal/completions/httpapi/BUILD.bazel index 5ba6e69f323ce..e55207d486b62 100644 --- a/internal/completions/httpapi/BUILD.bazel +++ b/internal/completions/httpapi/BUILD.bazel @@ -21,6 +21,7 @@ go_library( "//internal/conf", "//internal/conf/conftypes", "//internal/database", + "//internal/featureflag", "//internal/honey", "//internal/redispool", "//internal/requestclient", diff --git a/internal/completions/httpapi/chat.go b/internal/completions/httpapi/chat.go index d33e88829fd30..3ce186a5cffdf 100644 --- a/internal/completions/httpapi/chat.go +++ b/internal/completions/httpapi/chat.go @@ -1,6 +1,7 @@ package httpapi import ( + "context" "net/http" "github.com/sourcegraph/log" @@ -24,7 +25,7 @@ func NewChatCompletionsStreamHandler(logger log.Logger, db database.DB) http.Han types.CompletionsFeatureChat, rl, "chat", - func(requestParams types.CodyCompletionRequestParameters, c *conftypes.CompletionsConfig) (string, error) { + func(_ context.Context, requestParams types.CodyCompletionRequestParameters, c *conftypes.CompletionsConfig) (string, error) { if isAllowedCustomChatModel(requestParams.Model) { return requestParams.Model, nil } diff --git a/internal/completions/httpapi/codecompletion.go b/internal/completions/httpapi/codecompletion.go index f0581cb787289..a1f73a09ae428 100644 --- a/internal/completions/httpapi/codecompletion.go +++ b/internal/completions/httpapi/codecompletion.go @@ -1,14 +1,15 @@ package httpapi import ( + "context" "net/http" "github.com/sourcegraph/log" - "github.com/sourcegraph/sourcegraph/cmd/frontend/envvar" "github.com/sourcegraph/sourcegraph/internal/completions/types" "github.com/sourcegraph/sourcegraph/internal/conf/conftypes" "github.com/sourcegraph/sourcegraph/internal/database" + "github.com/sourcegraph/sourcegraph/internal/featureflag" "github.com/sourcegraph/sourcegraph/internal/redispool" "github.com/sourcegraph/sourcegraph/internal/telemetry/telemetryrecorder" "github.com/sourcegraph/sourcegraph/lib/errors" @@ -24,9 +25,10 @@ func NewCodeCompletionsHandler(logger log.Logger, db database.DB) http.Handler { types.CompletionsFeatureCode, rl, "code", - func(requestParams types.CodyCompletionRequestParameters, c *conftypes.CompletionsConfig) (string, error) { - if isAllowedCustomModel(requestParams.Model) { - return requestParams.Model, nil + func(ctx context.Context, requestParams types.CodyCompletionRequestParameters, c *conftypes.CompletionsConfig) (string, error) { + customModel := allowedCustomModel(ctx, requestParams.Model) + if customModel != "" { + return customModel, nil } if requestParams.Model != "" { return "", errors.New("Unsupported chat model") @@ -36,14 +38,29 @@ func NewCodeCompletionsHandler(logger log.Logger, db database.DB) http.Handler { ) } -// We only allow dotcom clients to select a custom code model and maintain an allowlist for which -// custom values we support -func isAllowedCustomModel(model string) bool { - if !(envvar.SourcegraphDotComMode()) { - return false - } - +func allowedCustomModel(ctx context.Context, model string) string { switch model { + // These special model strings allow the server to choose the model. This allows us to instantly + // route traffic from Fireworks multi-tenant cluster to our single-tenant cluster and + // vice-versa, without the client having to know about it + case "fireworks/starcoder-16b", + "fireworks/starcoder-7b": + + flags := featureflag.FromContext(ctx) + singleTenant := flags.GetBoolOr("cody-autocomplete-default-starcoder-hybrid-sourcegraph", false) + + if model == "fireworks/starcoder-16b" { + if singleTenant { + return "fireworks/accounts/sourcegraph/models/starcoder-16b" + } + return "fireworks/accounts/fireworks/models/starcoder-16b-w8a16" + } + + if singleTenant { + return "fireworks/accounts/sourcegraph/models/starcoder-7b" + } + return "fireworks/accounts/fireworks/models/starcoder-7b-w8a16" + case "fireworks/accounts/fireworks/models/starcoder-16b-w8a16", "fireworks/accounts/fireworks/models/starcoder-7b-w8a16", "fireworks/accounts/fireworks/models/starcoder-3b-w8a16", @@ -57,8 +74,8 @@ func isAllowedCustomModel(model string) bool { "fireworks/accounts/fireworks/models/mistral-7b-instruct-4k", "fireworks/accounts/fireworks/models/wizardcoder-15b", "anthropic/claude-instant-1.2-cyan": - return true + return model } - return false + return "" } diff --git a/internal/completions/httpapi/handler.go b/internal/completions/httpapi/handler.go index c709b7c276149..9019a1416707c 100644 --- a/internal/completions/httpapi/handler.go +++ b/internal/completions/httpapi/handler.go @@ -30,7 +30,7 @@ func newCompletionsHandler( feature types.CompletionsFeature, rl RateLimiter, traceFamily string, - getModel func(types.CodyCompletionRequestParameters, *conftypes.CompletionsConfig) (string, error), + getModel func(context.Context, types.CodyCompletionRequestParameters, *conftypes.CompletionsConfig) (string, error), ) http.Handler { responseHandler := newSwitchingResponseHandler(logger, feature) @@ -61,7 +61,7 @@ func newCompletionsHandler( // TODO: Model is not configurable but technically allowed in the request body right now. var err error - requestParams.Model, err = getModel(requestParams, completionsConfig) + requestParams.Model, err = getModel(ctx, requestParams, completionsConfig) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return From dd29aab51d64de31fa265ac04c0536af47f4451c Mon Sep 17 00:00:00 2001 From: Jean-Hadrien Chabran <jean-hadrien.chabran@sourcegraph.com> Date: Tue, 21 Nov 2023 11:13:49 +0100 Subject: [PATCH 095/222] sg: add --sgtail to start command (#58434) --- dev/sg/internal/run/command.go | 53 +++++++++++++++++++++++++++------- dev/sg/sg_start.go | 13 +++++++++ 2 files changed, 56 insertions(+), 10 deletions(-) diff --git a/dev/sg/internal/run/command.go b/dev/sg/internal/run/command.go index 724a4ff558f7c..6926631aab992 100644 --- a/dev/sg/internal/run/command.go +++ b/dev/sg/internal/run/command.go @@ -2,7 +2,9 @@ package run import ( "context" + "fmt" "io" + "net" "os/exec" "github.com/sourcegraph/conc/pool" @@ -160,6 +162,14 @@ func getSecrets(ctx context.Context, name string, extSecrets map[string]secrets. return secretsEnv, errs } +var sgConn net.Conn + +func OpenUnixSocket() error { + var err error + sgConn, err = net.Dial("unix", "/tmp/sg.sock") + return err +} + func startCmd(ctx context.Context, dir string, cmd Command, parentEnv map[string]string) (*startedCmd, error) { sc := &startedCmd{ stdoutBuf: &prefixSuffixSaver{N: 32 << 10}, @@ -182,17 +192,40 @@ func startCmd(ctx context.Context, dir string, cmd Command, parentEnv map[string var stdoutWriter, stderrWriter io.Writer logger := newCmdLogger(commandCtx, cmd.Name, std.Out.Output) - if cmd.IgnoreStdout { - std.Out.WriteLine(output.Styledf(output.StyleSuggestion, "Ignoring stdout of %s", cmd.Name)) - stdoutWriter = sc.stdoutBuf - } else { - stdoutWriter = io.MultiWriter(logger, sc.stdoutBuf) - } - if cmd.IgnoreStderr { - std.Out.WriteLine(output.Styledf(output.StyleSuggestion, "Ignoring stderr of %s", cmd.Name)) - stderrWriter = sc.stderrBuf + + // TODO(JH) sgtail experiment going on, this is a bit ugly, that will do it + // for the demo day. + if sgConn != nil { + sink := func(data string) { + sgConn.Write([]byte(fmt.Sprintf("%s: %s\n", cmd.Name, data))) + } + sgConnLog := process.NewLogger(ctx, sink) + + if cmd.IgnoreStdout { + std.Out.WriteLine(output.Styledf(output.StyleSuggestion, "Ignoring stdout of %s", cmd.Name)) + stdoutWriter = sc.stdoutBuf + } else { + stdoutWriter = io.MultiWriter(logger, sc.stdoutBuf, sgConnLog) + } + if cmd.IgnoreStderr { + std.Out.WriteLine(output.Styledf(output.StyleSuggestion, "Ignoring stderr of %s", cmd.Name)) + stderrWriter = sc.stderrBuf + } else { + stderrWriter = io.MultiWriter(logger, sc.stderrBuf, sgConnLog) + } } else { - stderrWriter = io.MultiWriter(logger, sc.stderrBuf) + if cmd.IgnoreStdout { + std.Out.WriteLine(output.Styledf(output.StyleSuggestion, "Ignoring stdout of %s", cmd.Name)) + stdoutWriter = sc.stdoutBuf + } else { + stdoutWriter = io.MultiWriter(logger, sc.stdoutBuf) + } + if cmd.IgnoreStderr { + std.Out.WriteLine(output.Styledf(output.StyleSuggestion, "Ignoring stderr of %s", cmd.Name)) + stderrWriter = sc.stderrBuf + } else { + stderrWriter = io.MultiWriter(logger, sc.stderrBuf) + } } if cmd.Preamble != "" { diff --git a/dev/sg/sg_start.go b/dev/sg/sg_start.go index 7a70e0c3d2d07..eacf959082474 100644 --- a/dev/sg/sg_start.go +++ b/dev/sg/sg_start.go @@ -8,6 +8,7 @@ import ( "path/filepath" "sort" "strings" + "sync" "time" "github.com/sourcegraph/conc/pool" @@ -85,6 +86,10 @@ sg start -describe single-program Name: "describe", Usage: "Print details about the selected commandset", }, + &cli.BoolFlag{ + Name: "sgtail", + Usage: "Connects to running sgtail instance", + }, &cli.StringSliceFlag{ Name: "debug", @@ -173,6 +178,8 @@ func constructStartCmdLongHelp() string { return out.String() } +var sgOnce sync.Once + func startExec(ctx *cli.Context) error { config, err := getConfig() if err != nil { @@ -204,6 +211,12 @@ func startExec(ctx *cli.Context) error { return errors.New("no concurrent sg start with same arguments allowed") } + if ctx.Bool("sgtail") { + if err := run.OpenUnixSocket(); err != nil { + return errors.Wrapf(err, "Did you forget to run sgtail first?") + } + } + commandset := args[0] set, ok := config.Commandsets[commandset] if !ok { From e07193c3f846420aa683c5b61780b9c5a7911595 Mon Sep 17 00:00:00 2001 From: Keegan Carruthers-Smith <keegan.csmith@gmail.com> Date: Tue, 21 Nov 2023 14:39:52 +0200 Subject: [PATCH 096/222] symbols: minor update last bumped comment (#58455) This is so when users read the downloaded script they have the proper context. This is done outside of git so we can't just use blame. I got this date by looking at blame. Test Plan: n/a --- cmd/symbols/ctags-install-alpine.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/symbols/ctags-install-alpine.sh b/cmd/symbols/ctags-install-alpine.sh index 279a1f10829e9..661f1f4ca6801 100755 --- a/cmd/symbols/ctags-install-alpine.sh +++ b/cmd/symbols/ctags-install-alpine.sh @@ -3,7 +3,7 @@ # This script installs universal-ctags within an alpine container. # Commit hash of github.com/universal-ctags/ctags. -# Last bumped 2022-04-04. +# Last bumped 2023-10-24. # When bumping please remember to also update Zoekt: https://github.com/sourcegraph/zoekt/blob/d3a8fbd8385f0201dd54ab24114ebd588dfcf0d8/install-ctags-alpine.sh CTAGS_VERSION=v6.0.0 CTAGS_ARCHIVE_TOP_LEVEL_DIR=ctags-6.0.0 From 5899d6f42b044acc218d58098d928e47034d9c07 Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Tue, 21 Nov 2023 13:40:28 +0100 Subject: [PATCH 097/222] Log error when perms check fails (#58459) More logging never hurts. --- internal/search/job/jobutil/sub_repo_perms_job.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/search/job/jobutil/sub_repo_perms_job.go b/internal/search/job/jobutil/sub_repo_perms_job.go index a28a4f71766f2..b5b310270b59c 100644 --- a/internal/search/job/jobutil/sub_repo_perms_job.go +++ b/internal/search/job/jobutil/sub_repo_perms_job.go @@ -103,7 +103,7 @@ func applySubRepoFiltering(ctx context.Context, checker authz.SubRepoPermissionC enabled, err := authz.SubRepoEnabledForRepo(ctx, checker, m.RepoName().Name) if err != nil { // If an error occurs while checking sub-repo perms, we omit it from the results - logger.Error("Could not determine if sub-repo permissions are enabled for repo, skipping", log.String("repoName", string(m.RepoName().Name))) + logger.Error("Could not determine if sub-repo permissions are enabled for repo, skipping", log.Error(err), log.String("repoName", string(m.RepoName().Name))) errCache[m.RepoName().Name] = struct{}{} continue } From 0f8d37bc1a81fc7888185e2f97ef38f2bdb5e55d Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Tue, 21 Nov 2023 14:55:00 +0100 Subject: [PATCH 098/222] Add additional logging for rename failures (#58458) To investigate an issue on dotcom. --- internal/fileutil/BUILD.bazel | 42 +++++++++++++++++++++++++++++ internal/fileutil/fileutil_posix.go | 4 ++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/internal/fileutil/BUILD.bazel b/internal/fileutil/BUILD.bazel index f53f83a8e2c84..5c72443a39446 100644 --- a/internal/fileutil/BUILD.bazel +++ b/internal/fileutil/BUILD.bazel @@ -11,6 +11,48 @@ go_library( ], importpath = "github.com/sourcegraph/sourcegraph/internal/fileutil", visibility = ["//:__subpackages__"], + deps = select({ + "@io_bazel_rules_go//go/platform:aix": [ + "//lib/errors", + ], + "@io_bazel_rules_go//go/platform:android": [ + "//lib/errors", + ], + "@io_bazel_rules_go//go/platform:darwin": [ + "//lib/errors", + ], + "@io_bazel_rules_go//go/platform:dragonfly": [ + "//lib/errors", + ], + "@io_bazel_rules_go//go/platform:freebsd": [ + "//lib/errors", + ], + "@io_bazel_rules_go//go/platform:illumos": [ + "//lib/errors", + ], + "@io_bazel_rules_go//go/platform:ios": [ + "//lib/errors", + ], + "@io_bazel_rules_go//go/platform:js": [ + "//lib/errors", + ], + "@io_bazel_rules_go//go/platform:linux": [ + "//lib/errors", + ], + "@io_bazel_rules_go//go/platform:netbsd": [ + "//lib/errors", + ], + "@io_bazel_rules_go//go/platform:openbsd": [ + "//lib/errors", + ], + "@io_bazel_rules_go//go/platform:plan9": [ + "//lib/errors", + ], + "@io_bazel_rules_go//go/platform:solaris": [ + "//lib/errors", + ], + "//conditions:default": [], + }), ) go_test( diff --git a/internal/fileutil/fileutil_posix.go b/internal/fileutil/fileutil_posix.go index 942446699eb36..1a7756174824b 100644 --- a/internal/fileutil/fileutil_posix.go +++ b/internal/fileutil/fileutil_posix.go @@ -6,6 +6,8 @@ package fileutil import ( "os" "path/filepath" + + "github.com/sourcegraph/sourcegraph/lib/errors" ) // RenameAndSync will do an os.Rename followed by fsync to ensure the rename @@ -13,7 +15,7 @@ import ( func RenameAndSync(oldpath, newpath string) error { err := os.Rename(oldpath, newpath) if err != nil { - return err + return errors.Wrapf(err, "failed to rename %q to %q", errors.Safe(oldpath), errors.Safe(newpath)) } oldparent, newparent := filepath.Dir(oldpath), filepath.Dir(newpath) From e095e91551ced8cbcb7164ab46ba22b0b4045dc1 Mon Sep 17 00:00:00 2001 From: Thorsten Ball <mrnugget@gmail.com> Date: Tue, 21 Nov 2023 17:13:07 +0100 Subject: [PATCH 099/222] gitserver: do not hold connection when reading repos for purging (#58464) We noticed this while investigating DB performance issues on dotcom. This code would do the following: 1. Send query to database 2. Read first row of response 3. Delete repository on disk 4. Possibly wait for rate limiter 5. If more rows, repeat 2-4 Means the connection was held while the repositories were being deleted. With large repositories this can be a substantial amount of time. Since we already have a `Limit` option and load & purge repositories in batches of 5000, we can instead load all repo names into memory at once and hand the DB connection back to the pool and _then_ delete them on disk. A repository name might have 50 bytes, which means we'd load 5000*50 bytes into memory, which is 500kb, which is _fine_, I think, in cases where we have 5000+ repos to delete. It's definitely better than having to hold the connection open. So what we do now: 1. Send query to database 2. Read all rows into memory (and free up DB connection) 3. Iterate over repo names in memory, for each repo 3. Delete repository on disk 4. Possibly wait for rate limiter --- internal/database/dbmocks/mocks_temp.go | 208 +++++++++++----------- internal/database/gitserver_repos.go | 32 +--- internal/database/gitserver_repos_test.go | 21 +-- internal/repos/purge.go | 22 ++- 4 files changed, 132 insertions(+), 151 deletions(-) diff --git a/internal/database/dbmocks/mocks_temp.go b/internal/database/dbmocks/mocks_temp.go index 9e68152becdd2..5966c68f679e9 100644 --- a/internal/database/dbmocks/mocks_temp.go +++ b/internal/database/dbmocks/mocks_temp.go @@ -37096,13 +37096,13 @@ type MockGitserverRepoStore struct { // HandleFunc is an instance of a mock function object controlling the // behavior of the method Handle. HandleFunc *GitserverRepoStoreHandleFunc - // IteratePurgeableReposFunc is an instance of a mock function object - // controlling the behavior of the method IteratePurgeableRepos. - IteratePurgeableReposFunc *GitserverRepoStoreIteratePurgeableReposFunc // IterateRepoGitserverStatusFunc is an instance of a mock function // object controlling the behavior of the method // IterateRepoGitserverStatus. IterateRepoGitserverStatusFunc *GitserverRepoStoreIterateRepoGitserverStatusFunc + // ListPurgeableReposFunc is an instance of a mock function object + // controlling the behavior of the method ListPurgeableRepos. + ListPurgeableReposFunc *GitserverRepoStoreListPurgeableReposFunc // ListReposWithLastErrorFunc is an instance of a mock function object // controlling the behavior of the method ListReposWithLastError. ListReposWithLastErrorFunc *GitserverRepoStoreListReposWithLastErrorFunc @@ -37177,13 +37177,13 @@ func NewMockGitserverRepoStore() *MockGitserverRepoStore { return }, }, - IteratePurgeableReposFunc: &GitserverRepoStoreIteratePurgeableReposFunc{ - defaultHook: func(context.Context, database.IteratePurgableReposOptions, func(repo api.RepoName) error) (r0 error) { + IterateRepoGitserverStatusFunc: &GitserverRepoStoreIterateRepoGitserverStatusFunc{ + defaultHook: func(context.Context, database.IterateRepoGitserverStatusOptions) (r0 []types.RepoGitserverStatus, r1 int, r2 error) { return }, }, - IterateRepoGitserverStatusFunc: &GitserverRepoStoreIterateRepoGitserverStatusFunc{ - defaultHook: func(context.Context, database.IterateRepoGitserverStatusOptions) (r0 []types.RepoGitserverStatus, r1 int, r2 error) { + ListPurgeableReposFunc: &GitserverRepoStoreListPurgeableReposFunc{ + defaultHook: func(context.Context, database.ListPurgableReposOptions) (r0 []api.RepoName, r1 error) { return }, }, @@ -37285,16 +37285,16 @@ func NewStrictMockGitserverRepoStore() *MockGitserverRepoStore { panic("unexpected invocation of MockGitserverRepoStore.Handle") }, }, - IteratePurgeableReposFunc: &GitserverRepoStoreIteratePurgeableReposFunc{ - defaultHook: func(context.Context, database.IteratePurgableReposOptions, func(repo api.RepoName) error) error { - panic("unexpected invocation of MockGitserverRepoStore.IteratePurgeableRepos") - }, - }, IterateRepoGitserverStatusFunc: &GitserverRepoStoreIterateRepoGitserverStatusFunc{ defaultHook: func(context.Context, database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error) { panic("unexpected invocation of MockGitserverRepoStore.IterateRepoGitserverStatus") }, }, + ListPurgeableReposFunc: &GitserverRepoStoreListPurgeableReposFunc{ + defaultHook: func(context.Context, database.ListPurgableReposOptions) ([]api.RepoName, error) { + panic("unexpected invocation of MockGitserverRepoStore.ListPurgeableRepos") + }, + }, ListReposWithLastErrorFunc: &GitserverRepoStoreListReposWithLastErrorFunc{ defaultHook: func(context.Context) ([]api.RepoName, error) { panic("unexpected invocation of MockGitserverRepoStore.ListReposWithLastError") @@ -37381,12 +37381,12 @@ func NewMockGitserverRepoStoreFrom(i database.GitserverRepoStore) *MockGitserver HandleFunc: &GitserverRepoStoreHandleFunc{ defaultHook: i.Handle, }, - IteratePurgeableReposFunc: &GitserverRepoStoreIteratePurgeableReposFunc{ - defaultHook: i.IteratePurgeableRepos, - }, IterateRepoGitserverStatusFunc: &GitserverRepoStoreIterateRepoGitserverStatusFunc{ defaultHook: i.IterateRepoGitserverStatus, }, + ListPurgeableReposFunc: &GitserverRepoStoreListPurgeableReposFunc{ + defaultHook: i.ListPurgeableRepos, + }, ListReposWithLastErrorFunc: &GitserverRepoStoreListReposWithLastErrorFunc{ defaultHook: i.ListReposWithLastError, }, @@ -38080,37 +38080,37 @@ func (c GitserverRepoStoreHandleFuncCall) Results() []interface{} { return []interface{}{c.Result0} } -// GitserverRepoStoreIteratePurgeableReposFunc describes the behavior when -// the IteratePurgeableRepos method of the parent MockGitserverRepoStore -// instance is invoked. -type GitserverRepoStoreIteratePurgeableReposFunc struct { - defaultHook func(context.Context, database.IteratePurgableReposOptions, func(repo api.RepoName) error) error - hooks []func(context.Context, database.IteratePurgableReposOptions, func(repo api.RepoName) error) error - history []GitserverRepoStoreIteratePurgeableReposFuncCall +// GitserverRepoStoreIterateRepoGitserverStatusFunc describes the behavior +// when the IterateRepoGitserverStatus method of the parent +// MockGitserverRepoStore instance is invoked. +type GitserverRepoStoreIterateRepoGitserverStatusFunc struct { + defaultHook func(context.Context, database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error) + hooks []func(context.Context, database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error) + history []GitserverRepoStoreIterateRepoGitserverStatusFuncCall mutex sync.Mutex } -// IteratePurgeableRepos delegates to the next hook function in the queue -// and stores the parameter and result values of this invocation. -func (m *MockGitserverRepoStore) IteratePurgeableRepos(v0 context.Context, v1 database.IteratePurgableReposOptions, v2 func(repo api.RepoName) error) error { - r0 := m.IteratePurgeableReposFunc.nextHook()(v0, v1, v2) - m.IteratePurgeableReposFunc.appendCall(GitserverRepoStoreIteratePurgeableReposFuncCall{v0, v1, v2, r0}) - return r0 +// IterateRepoGitserverStatus delegates to the next hook function in the +// queue and stores the parameter and result values of this invocation. +func (m *MockGitserverRepoStore) IterateRepoGitserverStatus(v0 context.Context, v1 database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error) { + r0, r1, r2 := m.IterateRepoGitserverStatusFunc.nextHook()(v0, v1) + m.IterateRepoGitserverStatusFunc.appendCall(GitserverRepoStoreIterateRepoGitserverStatusFuncCall{v0, v1, r0, r1, r2}) + return r0, r1, r2 } // SetDefaultHook sets function that is called when the -// IteratePurgeableRepos method of the parent MockGitserverRepoStore +// IterateRepoGitserverStatus method of the parent MockGitserverRepoStore // instance is invoked and the hook queue is empty. -func (f *GitserverRepoStoreIteratePurgeableReposFunc) SetDefaultHook(hook func(context.Context, database.IteratePurgableReposOptions, func(repo api.RepoName) error) error) { +func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) SetDefaultHook(hook func(context.Context, database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error)) { f.defaultHook = hook } // PushHook adds a function to the end of hook queue. Each invocation of the -// IteratePurgeableRepos method of the parent MockGitserverRepoStore +// IterateRepoGitserverStatus method of the parent MockGitserverRepoStore // instance invokes the hook at the front of the queue and discards it. // After the queue is empty, the default hook function is invoked for any // future action. -func (f *GitserverRepoStoreIteratePurgeableReposFunc) PushHook(hook func(context.Context, database.IteratePurgableReposOptions, func(repo api.RepoName) error) error) { +func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) PushHook(hook func(context.Context, database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error)) { f.mutex.Lock() f.hooks = append(f.hooks, hook) f.mutex.Unlock() @@ -38118,20 +38118,20 @@ func (f *GitserverRepoStoreIteratePurgeableReposFunc) PushHook(hook func(context // SetDefaultReturn calls SetDefaultHook with a function that returns the // given values. -func (f *GitserverRepoStoreIteratePurgeableReposFunc) SetDefaultReturn(r0 error) { - f.SetDefaultHook(func(context.Context, database.IteratePurgableReposOptions, func(repo api.RepoName) error) error { - return r0 +func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) SetDefaultReturn(r0 []types.RepoGitserverStatus, r1 int, r2 error) { + f.SetDefaultHook(func(context.Context, database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error) { + return r0, r1, r2 }) } // PushReturn calls PushHook with a function that returns the given values. -func (f *GitserverRepoStoreIteratePurgeableReposFunc) PushReturn(r0 error) { - f.PushHook(func(context.Context, database.IteratePurgableReposOptions, func(repo api.RepoName) error) error { - return r0 +func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) PushReturn(r0 []types.RepoGitserverStatus, r1 int, r2 error) { + f.PushHook(func(context.Context, database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error) { + return r0, r1, r2 }) } -func (f *GitserverRepoStoreIteratePurgeableReposFunc) nextHook() func(context.Context, database.IteratePurgableReposOptions, func(repo api.RepoName) error) error { +func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) nextHook() func(context.Context, database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error) { f.mutex.Lock() defer f.mutex.Unlock() @@ -38144,85 +38144,88 @@ func (f *GitserverRepoStoreIteratePurgeableReposFunc) nextHook() func(context.Co return hook } -func (f *GitserverRepoStoreIteratePurgeableReposFunc) appendCall(r0 GitserverRepoStoreIteratePurgeableReposFuncCall) { +func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) appendCall(r0 GitserverRepoStoreIterateRepoGitserverStatusFuncCall) { f.mutex.Lock() f.history = append(f.history, r0) f.mutex.Unlock() } // History returns a sequence of -// GitserverRepoStoreIteratePurgeableReposFuncCall objects describing the -// invocations of this function. -func (f *GitserverRepoStoreIteratePurgeableReposFunc) History() []GitserverRepoStoreIteratePurgeableReposFuncCall { +// GitserverRepoStoreIterateRepoGitserverStatusFuncCall objects describing +// the invocations of this function. +func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) History() []GitserverRepoStoreIterateRepoGitserverStatusFuncCall { f.mutex.Lock() - history := make([]GitserverRepoStoreIteratePurgeableReposFuncCall, len(f.history)) + history := make([]GitserverRepoStoreIterateRepoGitserverStatusFuncCall, len(f.history)) copy(history, f.history) f.mutex.Unlock() return history } -// GitserverRepoStoreIteratePurgeableReposFuncCall is an object that -// describes an invocation of method IteratePurgeableRepos on an instance of -// MockGitserverRepoStore. -type GitserverRepoStoreIteratePurgeableReposFuncCall struct { +// GitserverRepoStoreIterateRepoGitserverStatusFuncCall is an object that +// describes an invocation of method IterateRepoGitserverStatus on an +// instance of MockGitserverRepoStore. +type GitserverRepoStoreIterateRepoGitserverStatusFuncCall struct { // Arg0 is the value of the 1st argument passed to this method // invocation. Arg0 context.Context // Arg1 is the value of the 2nd argument passed to this method // invocation. - Arg1 database.IteratePurgableReposOptions - // Arg2 is the value of the 3rd argument passed to this method - // invocation. - Arg2 func(repo api.RepoName) error + Arg1 database.IterateRepoGitserverStatusOptions // Result0 is the value of the 1st result returned from this method // invocation. - Result0 error + Result0 []types.RepoGitserverStatus + // Result1 is the value of the 2nd result returned from this method + // invocation. + Result1 int + // Result2 is the value of the 3rd result returned from this method + // invocation. + Result2 error } // Args returns an interface slice containing the arguments of this // invocation. -func (c GitserverRepoStoreIteratePurgeableReposFuncCall) Args() []interface{} { - return []interface{}{c.Arg0, c.Arg1, c.Arg2} +func (c GitserverRepoStoreIterateRepoGitserverStatusFuncCall) Args() []interface{} { + return []interface{}{c.Arg0, c.Arg1} } // Results returns an interface slice containing the results of this // invocation. -func (c GitserverRepoStoreIteratePurgeableReposFuncCall) Results() []interface{} { - return []interface{}{c.Result0} +func (c GitserverRepoStoreIterateRepoGitserverStatusFuncCall) Results() []interface{} { + return []interface{}{c.Result0, c.Result1, c.Result2} } -// GitserverRepoStoreIterateRepoGitserverStatusFunc describes the behavior -// when the IterateRepoGitserverStatus method of the parent -// MockGitserverRepoStore instance is invoked. -type GitserverRepoStoreIterateRepoGitserverStatusFunc struct { - defaultHook func(context.Context, database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error) - hooks []func(context.Context, database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error) - history []GitserverRepoStoreIterateRepoGitserverStatusFuncCall +// GitserverRepoStoreListPurgeableReposFunc describes the behavior when the +// ListPurgeableRepos method of the parent MockGitserverRepoStore instance +// is invoked. +type GitserverRepoStoreListPurgeableReposFunc struct { + defaultHook func(context.Context, database.ListPurgableReposOptions) ([]api.RepoName, error) + hooks []func(context.Context, database.ListPurgableReposOptions) ([]api.RepoName, error) + history []GitserverRepoStoreListPurgeableReposFuncCall mutex sync.Mutex } -// IterateRepoGitserverStatus delegates to the next hook function in the -// queue and stores the parameter and result values of this invocation. -func (m *MockGitserverRepoStore) IterateRepoGitserverStatus(v0 context.Context, v1 database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error) { - r0, r1, r2 := m.IterateRepoGitserverStatusFunc.nextHook()(v0, v1) - m.IterateRepoGitserverStatusFunc.appendCall(GitserverRepoStoreIterateRepoGitserverStatusFuncCall{v0, v1, r0, r1, r2}) - return r0, r1, r2 +// ListPurgeableRepos delegates to the next hook function in the queue and +// stores the parameter and result values of this invocation. +func (m *MockGitserverRepoStore) ListPurgeableRepos(v0 context.Context, v1 database.ListPurgableReposOptions) ([]api.RepoName, error) { + r0, r1 := m.ListPurgeableReposFunc.nextHook()(v0, v1) + m.ListPurgeableReposFunc.appendCall(GitserverRepoStoreListPurgeableReposFuncCall{v0, v1, r0, r1}) + return r0, r1 } -// SetDefaultHook sets function that is called when the -// IterateRepoGitserverStatus method of the parent MockGitserverRepoStore -// instance is invoked and the hook queue is empty. -func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) SetDefaultHook(hook func(context.Context, database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error)) { +// SetDefaultHook sets function that is called when the ListPurgeableRepos +// method of the parent MockGitserverRepoStore instance is invoked and the +// hook queue is empty. +func (f *GitserverRepoStoreListPurgeableReposFunc) SetDefaultHook(hook func(context.Context, database.ListPurgableReposOptions) ([]api.RepoName, error)) { f.defaultHook = hook } // PushHook adds a function to the end of hook queue. Each invocation of the -// IterateRepoGitserverStatus method of the parent MockGitserverRepoStore -// instance invokes the hook at the front of the queue and discards it. -// After the queue is empty, the default hook function is invoked for any -// future action. -func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) PushHook(hook func(context.Context, database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error)) { +// ListPurgeableRepos method of the parent MockGitserverRepoStore instance +// invokes the hook at the front of the queue and discards it. After the +// queue is empty, the default hook function is invoked for any future +// action. +func (f *GitserverRepoStoreListPurgeableReposFunc) PushHook(hook func(context.Context, database.ListPurgableReposOptions) ([]api.RepoName, error)) { f.mutex.Lock() f.hooks = append(f.hooks, hook) f.mutex.Unlock() @@ -38230,20 +38233,20 @@ func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) PushHook(hook func(co // SetDefaultReturn calls SetDefaultHook with a function that returns the // given values. -func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) SetDefaultReturn(r0 []types.RepoGitserverStatus, r1 int, r2 error) { - f.SetDefaultHook(func(context.Context, database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error) { - return r0, r1, r2 +func (f *GitserverRepoStoreListPurgeableReposFunc) SetDefaultReturn(r0 []api.RepoName, r1 error) { + f.SetDefaultHook(func(context.Context, database.ListPurgableReposOptions) ([]api.RepoName, error) { + return r0, r1 }) } // PushReturn calls PushHook with a function that returns the given values. -func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) PushReturn(r0 []types.RepoGitserverStatus, r1 int, r2 error) { - f.PushHook(func(context.Context, database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error) { - return r0, r1, r2 +func (f *GitserverRepoStoreListPurgeableReposFunc) PushReturn(r0 []api.RepoName, r1 error) { + f.PushHook(func(context.Context, database.ListPurgableReposOptions) ([]api.RepoName, error) { + return r0, r1 }) } -func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) nextHook() func(context.Context, database.IterateRepoGitserverStatusOptions) ([]types.RepoGitserverStatus, int, error) { +func (f *GitserverRepoStoreListPurgeableReposFunc) nextHook() func(context.Context, database.ListPurgableReposOptions) ([]api.RepoName, error) { f.mutex.Lock() defer f.mutex.Unlock() @@ -38256,55 +38259,52 @@ func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) nextHook() func(conte return hook } -func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) appendCall(r0 GitserverRepoStoreIterateRepoGitserverStatusFuncCall) { +func (f *GitserverRepoStoreListPurgeableReposFunc) appendCall(r0 GitserverRepoStoreListPurgeableReposFuncCall) { f.mutex.Lock() f.history = append(f.history, r0) f.mutex.Unlock() } // History returns a sequence of -// GitserverRepoStoreIterateRepoGitserverStatusFuncCall objects describing -// the invocations of this function. -func (f *GitserverRepoStoreIterateRepoGitserverStatusFunc) History() []GitserverRepoStoreIterateRepoGitserverStatusFuncCall { +// GitserverRepoStoreListPurgeableReposFuncCall objects describing the +// invocations of this function. +func (f *GitserverRepoStoreListPurgeableReposFunc) History() []GitserverRepoStoreListPurgeableReposFuncCall { f.mutex.Lock() - history := make([]GitserverRepoStoreIterateRepoGitserverStatusFuncCall, len(f.history)) + history := make([]GitserverRepoStoreListPurgeableReposFuncCall, len(f.history)) copy(history, f.history) f.mutex.Unlock() return history } -// GitserverRepoStoreIterateRepoGitserverStatusFuncCall is an object that -// describes an invocation of method IterateRepoGitserverStatus on an -// instance of MockGitserverRepoStore. -type GitserverRepoStoreIterateRepoGitserverStatusFuncCall struct { +// GitserverRepoStoreListPurgeableReposFuncCall is an object that describes +// an invocation of method ListPurgeableRepos on an instance of +// MockGitserverRepoStore. +type GitserverRepoStoreListPurgeableReposFuncCall struct { // Arg0 is the value of the 1st argument passed to this method // invocation. Arg0 context.Context // Arg1 is the value of the 2nd argument passed to this method // invocation. - Arg1 database.IterateRepoGitserverStatusOptions + Arg1 database.ListPurgableReposOptions // Result0 is the value of the 1st result returned from this method // invocation. - Result0 []types.RepoGitserverStatus + Result0 []api.RepoName // Result1 is the value of the 2nd result returned from this method // invocation. - Result1 int - // Result2 is the value of the 3rd result returned from this method - // invocation. - Result2 error + Result1 error } // Args returns an interface slice containing the arguments of this // invocation. -func (c GitserverRepoStoreIterateRepoGitserverStatusFuncCall) Args() []interface{} { +func (c GitserverRepoStoreListPurgeableReposFuncCall) Args() []interface{} { return []interface{}{c.Arg0, c.Arg1} } // Results returns an interface slice containing the results of this // invocation. -func (c GitserverRepoStoreIterateRepoGitserverStatusFuncCall) Results() []interface{} { - return []interface{}{c.Result0, c.Result1, c.Result2} +func (c GitserverRepoStoreListPurgeableReposFuncCall) Results() []interface{} { + return []interface{}{c.Result0, c.Result1} } // GitserverRepoStoreListReposWithLastErrorFunc describes the behavior when diff --git a/internal/database/gitserver_repos.go b/internal/database/gitserver_repos.go index 2a746c426fa6a..3f2faa8ea52bf 100644 --- a/internal/database/gitserver_repos.go +++ b/internal/database/gitserver_repos.go @@ -58,9 +58,9 @@ type GitserverRepoStore interface { // ListReposWithLastError iterates over repos w/ non-empty last_error field and calls the repoFn for these repos. // note that this currently filters out any repos which do not have an associated external service where cloud_default = true. ListReposWithLastError(ctx context.Context) ([]api.RepoName, error) - // IteratePurgeableRepos iterates over all purgeable repos. These are repos that + // ListPurgeableRepos returns all purgeable repos. These are repos that // are cloned on disk but have been deleted or blocked. - IteratePurgeableRepos(ctx context.Context, options IteratePurgableReposOptions, repoFn func(repo api.RepoName) error) error + ListPurgeableRepos(ctx context.Context, options ListPurgableReposOptions) ([]api.RepoName, error) // TotalErroredCloudDefaultRepos returns the total number of repos which have a non-empty last_error field. Note that this is only // counting repos with an associated cloud_default external service. TotalErroredCloudDefaultRepos(ctx context.Context) (int, error) @@ -183,7 +183,7 @@ func scanLastErroredRepoRow(scanner dbutil.Scanner) (name api.RepoName, err erro var scanLastErroredRepos = basestore.NewSliceScanner(scanLastErroredRepoRow) -type IteratePurgableReposOptions struct { +type ListPurgableReposOptions struct { // DeletedBefore will filter the deleted repos to only those that were deleted // before the given time. The zero value will not apply filtering. DeletedBefore time.Time @@ -195,7 +195,9 @@ type IteratePurgableReposOptions struct { Limiter *ratelimit.InstrumentedLimiter } -func (s *gitserverRepoStore) IteratePurgeableRepos(ctx context.Context, options IteratePurgableReposOptions, repoFn func(repo api.RepoName) error) (err error) { +var scanRepoNames = basestore.NewSliceScanner(basestore.ScanAny[api.RepoName]) + +func (s *gitserverRepoStore) ListPurgeableRepos(ctx context.Context, options ListPurgableReposOptions) (repos []api.RepoName, err error) { deletedAtClause := sqlf.Sprintf("deleted_at IS NOT NULL") if !options.DeletedBefore.IsZero() { deletedAtClause = sqlf.Sprintf("(deleted_at IS NOT NULL AND deleted_at < %s)", options.DeletedBefore) @@ -204,27 +206,7 @@ func (s *gitserverRepoStore) IteratePurgeableRepos(ctx context.Context, options if options.Limit > 0 { query = query + fmt.Sprintf(" LIMIT %d", options.Limit) } - rows, err := s.Query(ctx, sqlf.Sprintf(query, deletedAtClause, types.CloneStatusCloned)) - if err != nil { - return errors.Wrap(err, "fetching repos with nonempty last_error") - } - defer func() { - err = basestore.CloseRows(rows, err) - }() - - for rows.Next() { - var name api.RepoName - if err := rows.Scan(&name); err != nil { - return errors.Wrap(err, "scanning row") - } - err := repoFn(name) - if err != nil { - // Abort - return errors.Wrap(err, "calling repoFn") - } - } - - return nil + return scanRepoNames(s.Query(ctx, sqlf.Sprintf(query, deletedAtClause, types.CloneStatusCloned))) } const purgableReposQuery = ` diff --git a/internal/database/gitserver_repos_test.go b/internal/database/gitserver_repos_test.go index ffe232219fc25..04fe3d00094c2 100644 --- a/internal/database/gitserver_repos_test.go +++ b/internal/database/gitserver_repos_test.go @@ -108,7 +108,7 @@ func TestIterateRepoGitserverStatus(t *testing.T) { }) } -func TestIteratePurgeableRepos(t *testing.T) { +func TestListPurgeableRepos(t *testing.T) { ctx := context.Background() logger := logtest.Scoped(t) db := NewDB(logger, dbtest.NewDB(t)) @@ -145,12 +145,12 @@ func TestIteratePurgeableRepos(t *testing.T) { for _, tt := range []struct { name string - options IteratePurgableReposOptions + options ListPurgableReposOptions wantRepos []api.RepoName }{ { name: "zero deletedBefore", - options: IteratePurgableReposOptions{ + options: ListPurgableReposOptions{ DeletedBefore: time.Time{}, Limit: 0, }, @@ -158,7 +158,7 @@ func TestIteratePurgeableRepos(t *testing.T) { }, { name: "deletedBefore now", - options: IteratePurgableReposOptions{ + options: ListPurgableReposOptions{ DeletedBefore: time.Now(), Limit: 0, }, @@ -167,7 +167,7 @@ func TestIteratePurgeableRepos(t *testing.T) { }, { name: "deletedBefore 5 minutes ago", - options: IteratePurgableReposOptions{ + options: ListPurgableReposOptions{ DeletedBefore: time.Now().Add(-5 * time.Minute), Limit: 0, }, @@ -175,7 +175,7 @@ func TestIteratePurgeableRepos(t *testing.T) { }, { name: "test limit", - options: IteratePurgableReposOptions{ + options: ListPurgableReposOptions{ DeletedBefore: time.Time{}, Limit: 1, }, @@ -183,13 +183,8 @@ func TestIteratePurgeableRepos(t *testing.T) { }, } { t.Run(tt.name, func(t *testing.T) { - var have []api.RepoName - if err := db.GitserverRepos().IteratePurgeableRepos(ctx, tt.options, func(repo api.RepoName) error { - have = append(have, repo) - return nil - }); err != nil { - t.Fatal(err) - } + have, err := db.GitserverRepos().ListPurgeableRepos(ctx, tt.options) + require.NoError(t, err) sort.Slice(have, func(i, j int) bool { return have[i] < have[j] }) diff --git a/internal/repos/purge.go b/internal/repos/purge.go index 723aa55d6b51d..4c232a619c11c 100644 --- a/internal/repos/purge.go +++ b/internal/repos/purge.go @@ -10,7 +10,6 @@ import ( "github.com/sourcegraph/log" "github.com/sourcegraph/sourcegraph/internal/actor" - "github.com/sourcegraph/sourcegraph/internal/api" "github.com/sourcegraph/sourcegraph/internal/conf/conftypes" "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/gitserver" @@ -49,7 +48,7 @@ func NewRepositoryPurgeWorker(ctx context.Context, logger log.Logger, db databas timeToNextPurge = time.Duration(purgeConfig.IntervalMinutes) * time.Minute purgeLogger.Debug("running repository purge", log.Duration("timeToNextPurge", timeToNextPurge)) - if err := purge(ctx, purgeLogger, db, database.IteratePurgableReposOptions{ + if err := purge(ctx, purgeLogger, db, database.ListPurgableReposOptions{ Limit: 5000, Limiter: limiter, DeletedBefore: deletedBefore, @@ -79,7 +78,7 @@ func PurgeOldestRepos(logger log.Logger, db database.DB, limit int, perSecond fl go func() { limiter := ratelimit.NewInstrumentedLimiter("PurgeOldestRepos", rate.NewLimiter(rate.Limit(perSecond), 1)) // Use a background routine so that we don't time out based on the http context. - if err := purge(context.Background(), logger, db, database.IteratePurgableReposOptions{ + if err := purge(context.Background(), logger, db, database.ListPurgableReposOptions{ Limit: limit, Limiter: limiter, }); err != nil { @@ -90,7 +89,7 @@ func PurgeOldestRepos(logger log.Logger, db database.DB, limit int, perSecond fl } // purge purges repos, returning the number of repos that were successfully purged -func purge(ctx context.Context, logger log.Logger, db database.DB, options database.IteratePurgableReposOptions) error { +func purge(ctx context.Context, logger log.Logger, db database.DB, options database.ListPurgableReposOptions) error { start := time.Now() gitserverClient := gitserver.NewClient("repos.purgeworker") var ( @@ -99,7 +98,12 @@ func purge(ctx context.Context, logger log.Logger, db database.DB, options datab failed int ) - err := db.GitserverRepos().IteratePurgeableRepos(ctx, options, func(repo api.RepoName) error { + repos, err := db.GitserverRepos().ListPurgeableRepos(ctx, options) + if err != nil { + return errors.Wrap(err, "listing purgeable repos") + } + + for _, repo := range repos { if options.Limiter != nil { if err := options.Limiter.Wait(ctx); err != nil { // A rate limit failure is fatal @@ -112,19 +116,19 @@ func purge(ctx context.Context, logger log.Logger, db database.DB, options datab logger.Warn("failed to remove repository", log.String("repo", string(repo)), log.Error(err)) purgeFailed.Inc() failed++ - return nil + continue } success++ purgeSuccess.Inc() - return nil - }) + } + // If we did something we log with a higher level. statusLogger := logger.Debug if failed > 0 { statusLogger = logger.Warn } statusLogger("repository purge finished", log.Int("total", total), log.Int("removed", success), log.Int("failed", failed), log.Duration("duration", time.Since(start))) - return errors.Wrap(err, "iterating purgeable repos") + return nil } // randSleepDuration will sleep for an expected d duration with a jitter in [-jitter / From b2500f64755f9cbf38c716393df8ef1e4fced294 Mon Sep 17 00:00:00 2001 From: Julie Tibshirani <julietibs@apache.org> Date: Tue, 21 Nov 2023 08:58:18 -0800 Subject: [PATCH 100/222] gomod: update changelog for Zoekt bump (#58448) Add 5.2 search indexing improvements to changelog. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bba6b95a8c591..aa3752bde2109 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,6 +61,8 @@ All notable changes to Sourcegraph are documented in this file. ### Fixed +- Fixed two issues in Zoekt that could cause out of memory errors during search indexing. [sourcegraph/zoekt#686](https://github.com/sourcegraph/zoekt/pull/686), [sourcegraph/zoekt#689](https://github.com/sourcegraph/zoekt/pull/689) + ### Changed ### Removed From aba7651f428a1d5b0266ef9a9fd0c07163c07cc6 Mon Sep 17 00:00:00 2001 From: Stomzy <45337015+airamare01@users.noreply.github.com> Date: Tue, 21 Nov 2023 21:01:40 +0300 Subject: [PATCH 101/222] Update FAQ with team namespaces (#58469) This change explains how to create and use a team namespace in a batch change. --- doc/batch_changes/references/faq.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc/batch_changes/references/faq.md b/doc/batch_changes/references/faq.md index eeb6659aab2b3..c31ae053f366d 100644 --- a/doc/batch_changes/references/faq.md +++ b/doc/batch_changes/references/faq.md @@ -134,3 +134,15 @@ Sourcegraph search shows you results on any repositories that you have read acce ### Why is my batch change preview hanging? When working with `src`, there are occurences where applying your batch spec might get stuck on a particular step. More so in the `Determining workspace type` step. The `Determining workspace type` is a simple step that decides if bind or volume modes should be used based on the command line flags, and the OS and architecture. If volume mode is used (which is default on Mac OS), then `src` will attempt to pull the `sourcegraph/src-batch-change-volume-workspace` Docker image from docker hub since that's required for the batch spec to be executed. The "hanging" is typically is caused by the local machine's CLI state. Restarting your computer and applying the batch spec again should fix this. + +### Can I create a batch change and use a team's namespace so that the team owns the batch change? + +Yes, you can create a batch change under a team's namespace so that the team owns and manages the batch change. Here are the steps to achieve this: + +1. Create an [organization](../../admin/organizations.md) on Sourcegraph for your team. +1. Add all members of your team to the organization. +1. When creating the batch change, select the organization's namespace instead of your personal namespace. This can be done via the UI or using the `-namespace` flag with `src batch preview/apply`. +1. The batch change will now be created under the organization's namespace. +1. All members of the organization (your team) will have admin permissions to manage the batch change. + +So by using an organization's namespace, you can create a batch change that is owned and editable by the entire team, not just yourself. \ No newline at end of file From bab4c86d18ba1e6160cc2ed94fcbc6edecfbb7db Mon Sep 17 00:00:00 2001 From: Maedah Batool <me@MaedahBatool.com> Date: Tue, 21 Nov 2023 10:25:30 -0800 Subject: [PATCH 102/222] Remove broken screenshot in Cody Quickstart (#58471) --- doc/cody/quickstart.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/cody/quickstart.md b/doc/cody/quickstart.md index d2abf50eb3809..ef5f6df35d3d1 100644 --- a/doc/cody/quickstart.md +++ b/doc/cody/quickstart.md @@ -16,8 +16,6 @@ After installing the extension, the side activity bar will display an icon for **Cody**. Click this icon, and Cody's `Chat` panel will open. This interface is used to ask Cody questions and paste in code snippets. -![Cody icon in side activity bar ](https://storage.googleapis.com/sourcegraph-assets/Docs/cody-quickstart/cody-icon.png) - Cody also supports `Commands` with VS Code. These are quick, ready-to-use prompt actions that you can apply to any code or text-based snippet you've highlighted. You can run a command in 3 ways: 1. Type `/` in the chat bar, and Cody will suggest a list of commands From db520b0871863a8f7b376c4bb7373a061b1ac9a6 Mon Sep 17 00:00:00 2001 From: Bolaji Olajide <25608335+BolajiOlajide@users.noreply.github.com> Date: Tue, 21 Nov 2023 21:29:16 +0100 Subject: [PATCH 103/222] code-search: properly display disabled bulk operations (#58461) * properly display disabled menu items * prettier --- .../enterprise/batches/DropdownButton.module.scss | 12 +++++++++++- client/web/src/enterprise/batches/DropdownButton.tsx | 7 ++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/client/web/src/enterprise/batches/DropdownButton.module.scss b/client/web/src/enterprise/batches/DropdownButton.module.scss index c57c795d01f22..77f2b9e0d1f58 100644 --- a/client/web/src/enterprise/batches/DropdownButton.module.scss +++ b/client/web/src/enterprise/batches/DropdownButton.module.scss @@ -12,8 +12,18 @@ .menu-list-item { padding: 0.5rem 1rem; + cursor: pointer; - &[data-reach-menu-item]:active { + &[data-reach-menu-item][aria-disabled='false']:active { --text-muted: var(--white); } + + &[data-reach-menu-item][aria-disabled='true']:hover { + background-color: transparent; + } + + &[data-reach-menu-item][aria-disabled='true'] { + cursor: not-allowed; + opacity: 0.7; + } } diff --git a/client/web/src/enterprise/batches/DropdownButton.tsx b/client/web/src/enterprise/batches/DropdownButton.tsx index fe81562b813eb..d5a1ed64b73d1 100644 --- a/client/web/src/enterprise/batches/DropdownButton.tsx +++ b/client/web/src/enterprise/batches/DropdownButton.tsx @@ -2,6 +2,7 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react' import { mdiChevronDown } from '@mdi/js' import { VisuallyHidden } from '@reach/visually-hidden' +import classNames from 'classnames' import { ProductStatusBadge, @@ -179,7 +180,11 @@ const DropdownItem: React.FunctionComponent<React.PropsWithChildren<DropdownItem return ( <MenuItem className={styles.menuListItem} onSelect={onSelect} disabled={action.disabled}> - <H4 className="mb-1"> + <H4 + className={classNames('mb-1', { + 'text-muted': action.disabled, + })} + > {action.dropdownTitle} {action.experimental && ( <> From 3691ebc2020812fe91d9cfec56b25b9f4e48e5e6 Mon Sep 17 00:00:00 2001 From: Julie Tibshirani <julietibs@apache.org> Date: Tue, 21 Nov 2023 13:04:25 -0800 Subject: [PATCH 104/222] gomod: bump Zoekt for index concurrency change (#58477) This bumps the Zoekt version to pull in a fix to limit shard parallelism when `SRC_INDEX_CONCURRENCY` is set. It's super are to set this environment variable, so this should only really affect dot com once we roll it out there. This commit was generated by running `./dev/zoekt/update`. Notable changes: https://github.com/sourcegraph/zoekt/compare/137eb8f22610...0959170c1623 - https://github.com/sourcegraph/zoekt/commit/c02b6e0f52 matchtree: always use evalMatchTree - https://github.com/sourcegraph/zoekt/commit/7c14b93bdf ctags: require scip-ctags to be present - https://github.com/sourcegraph/zoekt/commit/ef907c2371 Indexing: limit shard parallelism when index concurrency is set - https://github.com/sourcegraph/zoekt/commit/2a4f4a4265 Indexing: improve doc content checks --- deps.bzl | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deps.bzl b/deps.bzl index 57a0f1b7a0d20..c495f18fac8ea 100644 --- a/deps.bzl +++ b/deps.bzl @@ -5979,8 +5979,8 @@ def go_dependencies(): name = "com_github_sourcegraph_zoekt", build_file_proto_mode = "disable_global", importpath = "github.com/sourcegraph/zoekt", - sum = "h1:Px4kf1DfoJIlQR1oog0+GJoDEm7lHw9qKDdT90xaaH0=", - version = "v0.0.0-20231115091004-137eb8f22610", + sum = "h1:Pn9dVnAOZ7z8p+4BH32G1U9XtMCBVATy8vAq0ObHFdo=", + version = "v0.0.0-20231121165958-0959170c1623", ) go_repository( diff --git a/go.mod b/go.mod index aabbc38512891..86f0c384c15e4 100644 --- a/go.mod +++ b/go.mod @@ -554,7 +554,7 @@ require ( github.com/sourcegraph/conc v0.2.0 github.com/sourcegraph/mountinfo v0.0.0-20231018142932-e00da332dac5 github.com/sourcegraph/sourcegraph/monitoring v0.0.0-20230124144931-b2d81b1accb6 - github.com/sourcegraph/zoekt v0.0.0-20231115091004-137eb8f22610 + github.com/sourcegraph/zoekt v0.0.0-20231121165958-0959170c1623 github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/objx v0.5.0 // indirect diff --git a/go.sum b/go.sum index 52387c11377e9..cf5a38ec87d69 100644 --- a/go.sum +++ b/go.sum @@ -1612,8 +1612,8 @@ github.com/sourcegraph/tiktoken-go v0.0.0-20230905173153-caab340cf008 h1:Wu8W50q github.com/sourcegraph/tiktoken-go v0.0.0-20230905173153-caab340cf008/go.mod h1:9NiV+i9mJKGj1rYOT+njbv+ZwA/zJxYdewGl6qVatpg= github.com/sourcegraph/yaml v1.0.1-0.20200714132230-56936252f152 h1:z/MpntplPaW6QW95pzcAR/72Z5TWDyDnSo0EOcyij9o= github.com/sourcegraph/yaml v1.0.1-0.20200714132230-56936252f152/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= -github.com/sourcegraph/zoekt v0.0.0-20231115091004-137eb8f22610 h1:Px4kf1DfoJIlQR1oog0+GJoDEm7lHw9qKDdT90xaaH0= -github.com/sourcegraph/zoekt v0.0.0-20231115091004-137eb8f22610/go.mod h1:WVDDy51tFgeKy8zXtujTSbqzgyJrqhrLC9sjWiEfAII= +github.com/sourcegraph/zoekt v0.0.0-20231121165958-0959170c1623 h1:Pn9dVnAOZ7z8p+4BH32G1U9XtMCBVATy8vAq0ObHFdo= +github.com/sourcegraph/zoekt v0.0.0-20231121165958-0959170c1623/go.mod h1:WVDDy51tFgeKy8zXtujTSbqzgyJrqhrLC9sjWiEfAII= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v0.0.0-20170901052352-ee1bd8ee15a1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= From 79b274b9f1f560ac72b15e533fcb6980f341cdcb Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Wed, 22 Nov 2023 00:07:25 +0100 Subject: [PATCH 105/222] gitserver: Add debug endpoint to inspect repository locker (#58479) There's little insight into what's currently being done by the syncer, so adding this endpoint as a stopgap until we have a DB backed queue and more insight for free through that. --- .../internal/integration_tests/mocks.go | 116 ++++++++++++++++++ cmd/gitserver/internal/lock.go | 14 +++ cmd/gitserver/shared/debug.go | 20 ++- cmd/gitserver/shared/service.go | 28 +++-- cmd/gitserver/shared/shared.go | 13 +- 5 files changed, 177 insertions(+), 14 deletions(-) diff --git a/cmd/gitserver/internal/integration_tests/mocks.go b/cmd/gitserver/internal/integration_tests/mocks.go index 641278b15b986..10c84a434994b 100644 --- a/cmd/gitserver/internal/integration_tests/mocks.go +++ b/cmd/gitserver/internal/integration_tests/mocks.go @@ -273,6 +273,9 @@ func (c RepositoryLockSetStatusFuncCall) Results() []interface{} { // github.com/sourcegraph/sourcegraph/cmd/gitserver/internal) used for unit // testing. type MockRepositoryLocker struct { + // AllStatusesFunc is an instance of a mock function object controlling + // the behavior of the method AllStatuses. + AllStatusesFunc *RepositoryLockerAllStatusesFunc // StatusFunc is an instance of a mock function object controlling the // behavior of the method Status. StatusFunc *RepositoryLockerStatusFunc @@ -286,6 +289,11 @@ type MockRepositoryLocker struct { // overwritten. func NewMockRepositoryLocker() *MockRepositoryLocker { return &MockRepositoryLocker{ + AllStatusesFunc: &RepositoryLockerAllStatusesFunc{ + defaultHook: func() (r0 map[common.GitDir]string) { + return + }, + }, StatusFunc: &RepositoryLockerStatusFunc{ defaultHook: func(common.GitDir) (r0 string, r1 bool) { return @@ -303,6 +311,11 @@ func NewMockRepositoryLocker() *MockRepositoryLocker { // interface. All methods panic on invocation, unless overwritten. func NewStrictMockRepositoryLocker() *MockRepositoryLocker { return &MockRepositoryLocker{ + AllStatusesFunc: &RepositoryLockerAllStatusesFunc{ + defaultHook: func() map[common.GitDir]string { + panic("unexpected invocation of MockRepositoryLocker.AllStatuses") + }, + }, StatusFunc: &RepositoryLockerStatusFunc{ defaultHook: func(common.GitDir) (string, bool) { panic("unexpected invocation of MockRepositoryLocker.Status") @@ -321,6 +334,9 @@ func NewStrictMockRepositoryLocker() *MockRepositoryLocker { // implementation, unless overwritten. func NewMockRepositoryLockerFrom(i internal.RepositoryLocker) *MockRepositoryLocker { return &MockRepositoryLocker{ + AllStatusesFunc: &RepositoryLockerAllStatusesFunc{ + defaultHook: i.AllStatuses, + }, StatusFunc: &RepositoryLockerStatusFunc{ defaultHook: i.Status, }, @@ -330,6 +346,106 @@ func NewMockRepositoryLockerFrom(i internal.RepositoryLocker) *MockRepositoryLoc } } +// RepositoryLockerAllStatusesFunc describes the behavior when the +// AllStatuses method of the parent MockRepositoryLocker instance is +// invoked. +type RepositoryLockerAllStatusesFunc struct { + defaultHook func() map[common.GitDir]string + hooks []func() map[common.GitDir]string + history []RepositoryLockerAllStatusesFuncCall + mutex sync.Mutex +} + +// AllStatuses delegates to the next hook function in the queue and stores +// the parameter and result values of this invocation. +func (m *MockRepositoryLocker) AllStatuses() map[common.GitDir]string { + r0 := m.AllStatusesFunc.nextHook()() + m.AllStatusesFunc.appendCall(RepositoryLockerAllStatusesFuncCall{r0}) + return r0 +} + +// SetDefaultHook sets function that is called when the AllStatuses method +// of the parent MockRepositoryLocker instance is invoked and the hook queue +// is empty. +func (f *RepositoryLockerAllStatusesFunc) SetDefaultHook(hook func() map[common.GitDir]string) { + f.defaultHook = hook +} + +// PushHook adds a function to the end of hook queue. Each invocation of the +// AllStatuses method of the parent MockRepositoryLocker instance invokes +// the hook at the front of the queue and discards it. After the queue is +// empty, the default hook function is invoked for any future action. +func (f *RepositoryLockerAllStatusesFunc) PushHook(hook func() map[common.GitDir]string) { + f.mutex.Lock() + f.hooks = append(f.hooks, hook) + f.mutex.Unlock() +} + +// SetDefaultReturn calls SetDefaultHook with a function that returns the +// given values. +func (f *RepositoryLockerAllStatusesFunc) SetDefaultReturn(r0 map[common.GitDir]string) { + f.SetDefaultHook(func() map[common.GitDir]string { + return r0 + }) +} + +// PushReturn calls PushHook with a function that returns the given values. +func (f *RepositoryLockerAllStatusesFunc) PushReturn(r0 map[common.GitDir]string) { + f.PushHook(func() map[common.GitDir]string { + return r0 + }) +} + +func (f *RepositoryLockerAllStatusesFunc) nextHook() func() map[common.GitDir]string { + f.mutex.Lock() + defer f.mutex.Unlock() + + if len(f.hooks) == 0 { + return f.defaultHook + } + + hook := f.hooks[0] + f.hooks = f.hooks[1:] + return hook +} + +func (f *RepositoryLockerAllStatusesFunc) appendCall(r0 RepositoryLockerAllStatusesFuncCall) { + f.mutex.Lock() + f.history = append(f.history, r0) + f.mutex.Unlock() +} + +// History returns a sequence of RepositoryLockerAllStatusesFuncCall objects +// describing the invocations of this function. +func (f *RepositoryLockerAllStatusesFunc) History() []RepositoryLockerAllStatusesFuncCall { + f.mutex.Lock() + history := make([]RepositoryLockerAllStatusesFuncCall, len(f.history)) + copy(history, f.history) + f.mutex.Unlock() + + return history +} + +// RepositoryLockerAllStatusesFuncCall is an object that describes an +// invocation of method AllStatuses on an instance of MockRepositoryLocker. +type RepositoryLockerAllStatusesFuncCall struct { + // Result0 is the value of the 1st result returned from this method + // invocation. + Result0 map[common.GitDir]string +} + +// Args returns an interface slice containing the arguments of this +// invocation. +func (c RepositoryLockerAllStatusesFuncCall) Args() []interface{} { + return []interface{}{} +} + +// Results returns an interface slice containing the results of this +// invocation. +func (c RepositoryLockerAllStatusesFuncCall) Results() []interface{} { + return []interface{}{c.Result0} +} + // RepositoryLockerStatusFunc describes the behavior when the Status method // of the parent MockRepositoryLocker instance is invoked. type RepositoryLockerStatusFunc struct { diff --git a/cmd/gitserver/internal/lock.go b/cmd/gitserver/internal/lock.go index 5fff624c1a23d..8e9388a6d00e2 100644 --- a/cmd/gitserver/internal/lock.go +++ b/cmd/gitserver/internal/lock.go @@ -35,6 +35,8 @@ type RepositoryLocker interface { // Status returns the status of the locked directory dir. If dir is not // locked, then locked is false. Status(dir common.GitDir) (status string, locked bool) + // AllStatuses returns the status of all locked directories. + AllStatuses() map[common.GitDir]string } func NewRepositoryLocker() RepositoryLocker { @@ -88,6 +90,18 @@ func (rl *repositoryLocker) Status(dir common.GitDir) (status string, locked boo return } +func (rl *repositoryLocker) AllStatuses() map[common.GitDir]string { + rl.mu.RLock() + defer rl.mu.RUnlock() + + statuses := make(map[common.GitDir]string, len(rl.status)) + for dir, status := range rl.status { + statuses[dir] = status + } + + return statuses +} + type repositoryLock struct { unlock func() setStatus func(status string) diff --git a/cmd/gitserver/shared/debug.go b/cmd/gitserver/shared/debug.go index 3dff0b7bf6359..ae8d49f21cbfd 100644 --- a/cmd/gitserver/shared/debug.go +++ b/cmd/gitserver/shared/debug.go @@ -1,11 +1,23 @@ package shared import ( + "net/http" + "github.com/sourcegraph/sourcegraph/internal/debugserver" ) -// GRPCWebUIDebugEndpoint returns a debug endpoint that serves the GRPCWebUI that targets -// this gitserver instance. -func GRPCWebUIDebugEndpoint(addr string) debugserver.Endpoint { - return debugserver.NewGRPCWebUIEndpoint("gitserver", addr) +func createDebugServerEndpoints(ready chan struct{}, addr string, debugserverEndpoints *LazyDebugserverEndpoint) []debugserver.Endpoint { + return []debugserver.Endpoint{ + debugserver.NewGRPCWebUIEndpoint("gitserver", addr), + { + Name: "Repository Locker State", + Path: "/repository-locker-state", + Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // wait until we're healthy to respond + <-ready + // lockerStatusEndpoint is guaranteed to be assigned now + debugserverEndpoints.lockerStatusEndpoint(w, r) + }), + }, + } } diff --git a/cmd/gitserver/shared/service.go b/cmd/gitserver/shared/service.go index 13dec8ac5116f..b1d3cf9cdceae 100644 --- a/cmd/gitserver/shared/service.go +++ b/cmd/gitserver/shared/service.go @@ -9,21 +9,31 @@ import ( "github.com/sourcegraph/sourcegraph/internal/service" ) -type svc struct{} +type svc struct { + ready chan struct{} + debugServerEndpoints LazyDebugserverEndpoint +} func (svc) Name() string { return "gitserver" } -func (svc) Configure() (env.Config, []debugserver.Endpoint) { +func (s *svc) Configure() (env.Config, []debugserver.Endpoint) { + s.ready = make(chan struct{}) + c := LoadConfig() - endpoints := []debugserver.Endpoint{ - GRPCWebUIDebugEndpoint(c.ListenAddress), - } - return c, endpoints + return c, createDebugServerEndpoints(s.ready, c.ListenAddress, &s.debugServerEndpoints) } -func (svc) Start(ctx context.Context, observationCtx *observation.Context, ready service.ReadyFunc, config env.Config) error { - return Main(ctx, observationCtx, ready, config.(*Config)) +func (s *svc) Start(ctx context.Context, observationCtx *observation.Context, signalReadyToParent service.ReadyFunc, config env.Config) error { + // This service's debugserver endpoints should start responding when this service is ready (and + // not ewait for *all* services to be ready). Therefore, we need to track whether we are ready + // separately. + ready := service.ReadyFunc(func() { + close(s.ready) + signalReadyToParent() + }) + + return Main(ctx, observationCtx, ready, &s.debugServerEndpoints, config.(*Config)) } -var Service service.Service = svc{} +var Service service.Service = &svc{} diff --git a/cmd/gitserver/shared/shared.go b/cmd/gitserver/shared/shared.go index 10209ca4eeccd..079fed34b989c 100644 --- a/cmd/gitserver/shared/shared.go +++ b/cmd/gitserver/shared/shared.go @@ -5,6 +5,7 @@ import ( "container/list" "context" "database/sql" + "encoding/json" "fmt" "net/http" "os/exec" @@ -50,7 +51,11 @@ import ( "github.com/sourcegraph/sourcegraph/lib/errors" ) -func Main(ctx context.Context, observationCtx *observation.Context, ready service.ReadyFunc, config *Config) error { +type LazyDebugserverEndpoint struct { + lockerStatusEndpoint http.HandlerFunc +} + +func Main(ctx context.Context, observationCtx *observation.Context, ready service.ReadyFunc, debugserverEndpoints *LazyDebugserverEndpoint, config *Config) error { logger := observationCtx.Logger // Load and validate configuration. @@ -194,6 +199,12 @@ func Main(ctx context.Context, observationCtx *observation.Context, ready servic } rec.RegistrationDone() + debugserverEndpoints.lockerStatusEndpoint = func(w http.ResponseWriter, r *http.Request) { + if err := json.NewEncoder(w).Encode(locker.AllStatuses()); err != nil { + logger.Error("failed to encode locker statuses", log.Error(err)) + } + } + logger.Info("git-server: listening", log.String("addr", config.ListenAddress)) // We're ready! From 130c9f3385e6a373c0ff1bc1c228ddf98d0954eb Mon Sep 17 00:00:00 2001 From: Varun Gandhi <varun.gandhi@sourcegraph.com> Date: Wed, 22 Nov 2023 09:05:38 +0800 Subject: [PATCH 106/222] docs: Fix wrong example in site config (#58481) The patterns key for syntaxHighlighting matches against the file path, not the file contents. --- schema/site.schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/schema/site.schema.json b/schema/site.schema.json index 2dcd401f98a31..bf3b426dcb351 100644 --- a/schema/site.schema.json +++ b/schema/site.schema.json @@ -986,8 +986,8 @@ }, "patterns": [ { - "match": "^package main$", - "language": "go" + "match": "cobol_.*\\.txt", + "language": "cobol" } ] } From 95b47b7a975cc0f38f72d5d33d9e8bb0711a5eec Mon Sep 17 00:00:00 2001 From: Robert Lin <robert@bobheadxi.dev> Date: Tue, 21 Nov 2023 17:06:53 -0800 Subject: [PATCH 107/222] monitoring: assign obvious owners to DatabaseConnectionsMonitoringGroup (#58474) updates `DatabaseConnectionsMonitoringGroup` to accept an owner - before it was just hardcoded to `ObservableOwnerDevOps`, which is not very helpful. This assigns some of the obvious service owners: 1. Source: gitserver, repo-updater 2. Cody: embeddings (but should eventually be @sourcegraph/search-platform, along with all embeddings alerts: https://github.com/sourcegraph/sourcegraph/pull/58474#issuecomment-1821505062) Source is an active owner based on [thread](https://sourcegraph.slack.com/archives/C0652SSUA20/p1700592165408089?thread_ts=1700549423.860019&cid=C0652SSUA20), and Cody is a fairly recent addition so hopefully it's valid. I'm not sure the Search one is still up-to-date, so I didn't change some of the obvious search services - for now, these still point to DevOps as they did before. If it becomes problematic we can revisit later. --- doc/admin/observability/alerts.md | 8 +-- doc/admin/observability/dashboards.md | 50 +++++++++---------- monitoring/definitions/embeddings.go | 2 +- monitoring/definitions/frontend.go | 2 +- monitoring/definitions/git_server.go | 2 +- .../definitions/precise_code_intel_worker.go | 2 +- monitoring/definitions/repo_updater.go | 2 +- monitoring/definitions/searcher.go | 2 +- monitoring/definitions/shared/dbconns.go | 22 ++++---- monitoring/definitions/symbols.go | 2 +- monitoring/definitions/worker.go | 2 +- monitoring/monitoring/documentation.go | 4 +- 12 files changed, 50 insertions(+), 50 deletions(-) diff --git a/doc/admin/observability/alerts.md b/doc/admin/observability/alerts.md index 4c1d5fa94408c..9642fcb851005 100644 --- a/doc/admin/observability/alerts.md +++ b/doc/admin/observability/alerts.md @@ -1,6 +1,6 @@ # Alerts reference -<!-- DO NOT EDIT: generated via: bazel run //dev:write_all_generated --> +<!-- DO NOT EDIT: generated via: bazel run //doc/admin/observability:write_monitoring_docs --> This document contains a complete reference of all alerts in Sourcegraph's monitoring, and next steps for when you find alerts that are firing. If your alert isn't mentioned here, or if the next steps don't help, [contact us](mailto:support@sourcegraph.com) for assistance. @@ -1662,7 +1662,7 @@ Generated query for critical alert: `max((max(max_over_time(src_conf_client_time ] ``` -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -4700,7 +4700,7 @@ Generated query for warning alert: `max((sum by (category) (increase(src_fronten ] ``` -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -7984,7 +7984,7 @@ Generated query for critical alert: `max((max(max_over_time(src_conf_client_time ] ``` -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Cody team](https://handbook.sourcegraph.com/departments/engineering/teams/cody).*</sub> <details> <summary>Technical details</summary> diff --git a/doc/admin/observability/dashboards.md b/doc/admin/observability/dashboards.md index 3bfccae0257de..235a93ef89023 100644 --- a/doc/admin/observability/dashboards.md +++ b/doc/admin/observability/dashboards.md @@ -1,6 +1,6 @@ # Dashboards reference -<!-- DO NOT EDIT: generated via: bazel run //dev:write_all_generated --> +<!-- DO NOT EDIT: generated via: bazel run //doc/admin/observability:write_monitoring_docs --> This document contains a complete reference on Sourcegraph's available dashboards, as well as details on how to interpret the panels and metrics. @@ -7629,7 +7629,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=101400` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -7648,7 +7648,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=101401` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -7667,7 +7667,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=101410` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -7686,7 +7686,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=101411` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -7705,7 +7705,7 @@ Refer to the [alerts reference](./alerts.md#gitserver-mean-blocked-seconds-per-c To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=101420` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -7724,7 +7724,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=101430` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -7743,7 +7743,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=101431` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -7762,7 +7762,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=101432` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -15838,7 +15838,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/repo-updater/repo-updater?viewPanel=101300` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -15857,7 +15857,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/repo-updater/repo-updater?viewPanel=101301` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -15876,7 +15876,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/repo-updater/repo-updater?viewPanel=101310` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -15895,7 +15895,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/repo-updater/repo-updater?viewPanel=101311` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -15914,7 +15914,7 @@ Refer to the [alerts reference](./alerts.md#repo-updater-mean-blocked-seconds-pe To see this panel, visit `/-/debug/grafana/d/repo-updater/repo-updater?viewPanel=101320` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -15933,7 +15933,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/repo-updater/repo-updater?viewPanel=101330` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -15952,7 +15952,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/repo-updater/repo-updater?viewPanel=101331` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -15971,7 +15971,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/repo-updater/repo-updater?viewPanel=101332` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Source team](https://handbook.sourcegraph.com/departments/engineering/teams/source).*</sub> <details> <summary>Technical details</summary> @@ -31793,7 +31793,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/embeddings/embeddings?viewPanel=100100` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Cody team](https://handbook.sourcegraph.com/departments/engineering/teams/cody).*</sub> <details> <summary>Technical details</summary> @@ -31812,7 +31812,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/embeddings/embeddings?viewPanel=100101` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Cody team](https://handbook.sourcegraph.com/departments/engineering/teams/cody).*</sub> <details> <summary>Technical details</summary> @@ -31831,7 +31831,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/embeddings/embeddings?viewPanel=100110` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Cody team](https://handbook.sourcegraph.com/departments/engineering/teams/cody).*</sub> <details> <summary>Technical details</summary> @@ -31850,7 +31850,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/embeddings/embeddings?viewPanel=100111` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Cody team](https://handbook.sourcegraph.com/departments/engineering/teams/cody).*</sub> <details> <summary>Technical details</summary> @@ -31869,7 +31869,7 @@ Refer to the [alerts reference](./alerts.md#embeddings-mean-blocked-seconds-per- To see this panel, visit `/-/debug/grafana/d/embeddings/embeddings?viewPanel=100120` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Cody team](https://handbook.sourcegraph.com/departments/engineering/teams/cody).*</sub> <details> <summary>Technical details</summary> @@ -31888,7 +31888,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/embeddings/embeddings?viewPanel=100130` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Cody team](https://handbook.sourcegraph.com/departments/engineering/teams/cody).*</sub> <details> <summary>Technical details</summary> @@ -31907,7 +31907,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/embeddings/embeddings?viewPanel=100131` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Cody team](https://handbook.sourcegraph.com/departments/engineering/teams/cody).*</sub> <details> <summary>Technical details</summary> @@ -31926,7 +31926,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/embeddings/embeddings?viewPanel=100132` on your Sourcegraph instance. -<sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> +<sub>*Managed by the [Sourcegraph Cody team](https://handbook.sourcegraph.com/departments/engineering/teams/cody).*</sub> <details> <summary>Technical details</summary> diff --git a/monitoring/definitions/embeddings.go b/monitoring/definitions/embeddings.go index ed320859f08b4..1db19c32bf0f7 100644 --- a/monitoring/definitions/embeddings.go +++ b/monitoring/definitions/embeddings.go @@ -29,7 +29,7 @@ func Embeddings() *monitoring.Dashboard { HumanServiceName: "embeddings", InstanceFilterRegex: `${instance:regex}`, }, monitoring.ObservableOwnerDevOps), - shared.NewDatabaseConnectionsMonitoringGroup(containerName), + shared.NewDatabaseConnectionsMonitoringGroup(containerName, monitoring.ObservableOwnerCody), shared.NewFrontendInternalAPIErrorResponseMonitoringGroup(containerName, monitoring.ObservableOwnerCody, nil), shared.NewContainerMonitoringGroup(containerName, monitoring.ObservableOwnerCody, nil), shared.NewProvisioningIndicatorsGroup(containerName, monitoring.ObservableOwnerCody, nil), diff --git a/monitoring/definitions/frontend.go b/monitoring/definitions/frontend.go index e603fbd71c6e2..a79fa7c544d25 100644 --- a/monitoring/definitions/frontend.go +++ b/monitoring/definitions/frontend.go @@ -694,7 +694,7 @@ func Frontend() *monitoring.Dashboard { }, // Resource monitoring - shared.NewDatabaseConnectionsMonitoringGroup("frontend"), + shared.NewDatabaseConnectionsMonitoringGroup("frontend", monitoring.ObservableOwnerDevOps), shared.NewContainerMonitoringGroup(containerName, monitoring.ObservableOwnerDevOps, nil), shared.NewProvisioningIndicatorsGroup(containerName, monitoring.ObservableOwnerDevOps, nil), shared.NewGolangMonitoringGroup(containerName, monitoring.ObservableOwnerDevOps, nil), diff --git a/monitoring/definitions/git_server.go b/monitoring/definitions/git_server.go index ad681aff25ce3..6a6799245c66c 100644 --- a/monitoring/definitions/git_server.go +++ b/monitoring/definitions/git_server.go @@ -566,7 +566,7 @@ func GitServer() *monitoring.Dashboard { shared.CodeIntelligence.NewNpmGroup(containerName), shared.HTTP.NewHandlersGroup(containerName), - shared.NewDatabaseConnectionsMonitoringGroup(containerName), + shared.NewDatabaseConnectionsMonitoringGroup(containerName, monitoring.ObservableOwnerSource), shared.NewContainerMonitoringGroup(containerName, monitoring.ObservableOwnerSource, nil), shared.NewProvisioningIndicatorsGroup(containerName, monitoring.ObservableOwnerSource, provisioningIndicatorsOptions), shared.NewGolangMonitoringGroup(containerName, monitoring.ObservableOwnerSource, nil), diff --git a/monitoring/definitions/precise_code_intel_worker.go b/monitoring/definitions/precise_code_intel_worker.go index 7453d33a83b90..13e7f51d219db 100644 --- a/monitoring/definitions/precise_code_intel_worker.go +++ b/monitoring/definitions/precise_code_intel_worker.go @@ -23,7 +23,7 @@ func PreciseCodeIntelWorker() *monitoring.Dashboard { // Resource monitoring shared.NewFrontendInternalAPIErrorResponseMonitoringGroup(containerName, monitoring.ObservableOwnerCodeIntel, nil), - shared.NewDatabaseConnectionsMonitoringGroup(containerName), + shared.NewDatabaseConnectionsMonitoringGroup(containerName, monitoring.ObservableOwnerDevOps), shared.NewContainerMonitoringGroup(containerName, monitoring.ObservableOwnerCodeIntel, nil), shared.NewProvisioningIndicatorsGroup(containerName, monitoring.ObservableOwnerCodeIntel, nil), shared.NewGolangMonitoringGroup(containerName, monitoring.ObservableOwnerCodeIntel, nil), diff --git a/monitoring/definitions/repo_updater.go b/monitoring/definitions/repo_updater.go index 00b4ed55e8875..71de356b4e526 100644 --- a/monitoring/definitions/repo_updater.go +++ b/monitoring/definitions/repo_updater.go @@ -602,7 +602,7 @@ func RepoUpdater() *monitoring.Dashboard { }, monitoring.ObservableOwnerDevOps), shared.HTTP.NewHandlersGroup(containerName), shared.NewFrontendInternalAPIErrorResponseMonitoringGroup(containerName, monitoring.ObservableOwnerSource, nil), - shared.NewDatabaseConnectionsMonitoringGroup(containerName), + shared.NewDatabaseConnectionsMonitoringGroup(containerName, monitoring.ObservableOwnerSource), shared.NewContainerMonitoringGroup(containerName, monitoring.ObservableOwnerSource, containerMonitoringOptions), shared.NewProvisioningIndicatorsGroup(containerName, monitoring.ObservableOwnerSource, nil), shared.NewGolangMonitoringGroup(containerName, monitoring.ObservableOwnerSource, nil), diff --git a/monitoring/definitions/searcher.go b/monitoring/definitions/searcher.go index c62bcbd3183f3..1265d4f700b24 100644 --- a/monitoring/definitions/searcher.go +++ b/monitoring/definitions/searcher.go @@ -244,7 +244,7 @@ regularly above 0 it is a sign for further investigation.`, HumanServiceName: "searcher", InstanceFilterRegex: `${instance:regex}`, }, monitoring.ObservableOwnerDevOps), - shared.NewDatabaseConnectionsMonitoringGroup(containerName), + shared.NewDatabaseConnectionsMonitoringGroup(containerName, monitoring.ObservableOwnerDevOps), shared.NewFrontendInternalAPIErrorResponseMonitoringGroup(containerName, monitoring.ObservableOwnerSearchCore, nil), shared.NewContainerMonitoringGroup(containerName, monitoring.ObservableOwnerSearchCore, nil), shared.NewProvisioningIndicatorsGroup(containerName, monitoring.ObservableOwnerSearchCore, nil), diff --git a/monitoring/definitions/shared/dbconns.go b/monitoring/definitions/shared/dbconns.go index ec3e6f2e8d7a4..97f71d500cb86 100644 --- a/monitoring/definitions/shared/dbconns.go +++ b/monitoring/definitions/shared/dbconns.go @@ -10,7 +10,7 @@ import ( // Database connections monitoring overview. const TitleDatabaseConnectionsMonitoring = "Database connections" -func DatabaseConnectionsMonitoring(app string) []monitoring.Row { +func DatabaseConnectionsMonitoring(app string, owner monitoring.ObservableOwner) []monitoring.Row { return []monitoring.Row{ { { @@ -19,7 +19,7 @@ func DatabaseConnectionsMonitoring(app string) []monitoring.Row { Query: fmt.Sprintf(`sum by (app_name, db_name) (src_pgsql_conns_max_open{app_name=%q})`, app), Panel: monitoring.Panel().LegendFormat("dbname={{db_name}}"), NoAlert: true, - Owner: monitoring.ObservableOwnerDevOps, + Owner: owner, Interpretation: "none", }, { @@ -28,7 +28,7 @@ func DatabaseConnectionsMonitoring(app string) []monitoring.Row { Query: fmt.Sprintf(`sum by (app_name, db_name) (src_pgsql_conns_open{app_name=%q})`, app), Panel: monitoring.Panel().LegendFormat("dbname={{db_name}}"), NoAlert: true, - Owner: monitoring.ObservableOwnerDevOps, + Owner: owner, Interpretation: "none", }, }, @@ -39,7 +39,7 @@ func DatabaseConnectionsMonitoring(app string) []monitoring.Row { Query: fmt.Sprintf(`sum by (app_name, db_name) (src_pgsql_conns_in_use{app_name=%q})`, app), Panel: monitoring.Panel().LegendFormat("dbname={{db_name}}"), NoAlert: true, - Owner: monitoring.ObservableOwnerDevOps, + Owner: owner, Interpretation: "none", }, { @@ -48,7 +48,7 @@ func DatabaseConnectionsMonitoring(app string) []monitoring.Row { Query: fmt.Sprintf(`sum by (app_name, db_name) (src_pgsql_conns_idle{app_name=%q})`, app), Panel: monitoring.Panel().LegendFormat("dbname={{db_name}}"), NoAlert: true, - Owner: monitoring.ObservableOwnerDevOps, + Owner: owner, Interpretation: "none", }, }, @@ -65,7 +65,7 @@ func DatabaseConnectionsMonitoring(app string) []monitoring.Row { Panel: monitoring.Panel().LegendFormat("dbname={{db_name}}").Unit(monitoring.Seconds), Warning: monitoring.Alert().GreaterOrEqual(0.05).For(10 * time.Minute), Critical: monitoring.Alert().GreaterOrEqual(0.10).For(15 * time.Minute), - Owner: monitoring.ObservableOwnerDevOps, + Owner: owner, NextSteps: ` - Increase SRC_PGSQL_MAX_OPEN together with giving more memory to the database if needed - Scale up Postgres memory / cpus [See our scaling guide](https://docs.sourcegraph.com/admin/config/postgres-conf) @@ -79,7 +79,7 @@ func DatabaseConnectionsMonitoring(app string) []monitoring.Row { Query: fmt.Sprintf(`sum by (app_name, db_name) (increase(src_pgsql_conns_closed_max_idle{app_name=%q}[5m]))`, app), Panel: monitoring.Panel().LegendFormat("dbname={{db_name}}"), NoAlert: true, - Owner: monitoring.ObservableOwnerDevOps, + Owner: owner, Interpretation: "none", }, { @@ -88,7 +88,7 @@ func DatabaseConnectionsMonitoring(app string) []monitoring.Row { Query: fmt.Sprintf(`sum by (app_name, db_name) (increase(src_pgsql_conns_closed_max_lifetime{app_name=%q}[5m]))`, app), Panel: monitoring.Panel().LegendFormat("dbname={{db_name}}"), NoAlert: true, - Owner: monitoring.ObservableOwnerDevOps, + Owner: owner, Interpretation: "none", }, { @@ -97,7 +97,7 @@ func DatabaseConnectionsMonitoring(app string) []monitoring.Row { Query: fmt.Sprintf(`sum by (app_name, db_name) (increase(src_pgsql_conns_closed_max_idle_time{app_name=%q}[5m]))`, app), Panel: monitoring.Panel().LegendFormat("dbname={{db_name}}"), NoAlert: true, - Owner: monitoring.ObservableOwnerDevOps, + Owner: owner, Interpretation: "none", }, }, @@ -106,10 +106,10 @@ func DatabaseConnectionsMonitoring(app string) []monitoring.Row { // NewDatabaseConnectionsMonitoringGroup creates a group containing panels displaying // database monitoring metrics for the given container. -func NewDatabaseConnectionsMonitoringGroup(containerName string) monitoring.Group { +func NewDatabaseConnectionsMonitoringGroup(containerName string, owner monitoring.ObservableOwner) monitoring.Group { return monitoring.Group{ Title: TitleDatabaseConnectionsMonitoring, Hidden: true, - Rows: DatabaseConnectionsMonitoring(containerName), + Rows: DatabaseConnectionsMonitoring(containerName, owner), } } diff --git a/monitoring/definitions/symbols.go b/monitoring/definitions/symbols.go index 17b87ceba1ad5..62ae728c35475 100644 --- a/monitoring/definitions/symbols.go +++ b/monitoring/definitions/symbols.go @@ -62,7 +62,7 @@ func Symbols() *monitoring.Dashboard { HumanServiceName: "symbols", InstanceFilterRegex: `${instance:regex}`, }, monitoring.ObservableOwnerDevOps), - shared.NewDatabaseConnectionsMonitoringGroup(containerName), + shared.NewDatabaseConnectionsMonitoringGroup(containerName, monitoring.ObservableOwnerDevOps), shared.NewFrontendInternalAPIErrorResponseMonitoringGroup(containerName, monitoring.ObservableOwnerCodeIntel, nil), shared.NewContainerMonitoringGroup(containerName, monitoring.ObservableOwnerCodeIntel, nil), shared.NewProvisioningIndicatorsGroup(containerName, monitoring.ObservableOwnerCodeIntel, nil), diff --git a/monitoring/definitions/worker.go b/monitoring/definitions/worker.go index 8cf09a2d0da43..35c48d99e4f19 100644 --- a/monitoring/definitions/worker.go +++ b/monitoring/definitions/worker.go @@ -254,7 +254,7 @@ func Worker() *monitoring.Dashboard { // Resource monitoring shared.NewFrontendInternalAPIErrorResponseMonitoringGroup(containerName, monitoring.ObservableOwnerCodeIntel, nil), - shared.NewDatabaseConnectionsMonitoringGroup(containerName), + shared.NewDatabaseConnectionsMonitoringGroup(containerName, monitoring.ObservableOwnerDevOps), shared.NewContainerMonitoringGroup(containerName, monitoring.ObservableOwnerCodeIntel, nil), shared.NewProvisioningIndicatorsGroup(containerName, monitoring.ObservableOwnerCodeIntel, nil), shared.NewGolangMonitoringGroup(containerName, monitoring.ObservableOwnerCodeIntel, nil), diff --git a/monitoring/monitoring/documentation.go b/monitoring/monitoring/documentation.go index 576a171ed9675..7c4aecefa88bc 100644 --- a/monitoring/monitoring/documentation.go +++ b/monitoring/monitoring/documentation.go @@ -21,7 +21,7 @@ const ( const alertsReferenceHeader = `# Alerts reference -<!-- DO NOT EDIT: generated via: bazel run //dev:write_all_generated --> +<!-- DO NOT EDIT: generated via: bazel run //doc/admin/observability:write_monitoring_docs --> This document contains a complete reference of all alerts in Sourcegraph's monitoring, and next steps for when you find alerts that are firing. If your alert isn't mentioned here, or if the next steps don't help, [contact us](mailto:support@sourcegraph.com) for assistance. @@ -32,7 +32,7 @@ To learn more about Sourcegraph's alerting and how to set up alerts, see [our al const dashboardsHeader = `# Dashboards reference -<!-- DO NOT EDIT: generated via: bazel run //dev:write_all_generated --> +<!-- DO NOT EDIT: generated via: bazel run //doc/admin/observability:write_monitoring_docs --> This document contains a complete reference on Sourcegraph's available dashboards, as well as details on how to interpret the panels and metrics. From 8014a1fd2b8ec263e091bb53f16b788e06a9f28c Mon Sep 17 00:00:00 2001 From: Christoph Hegemann <christoph.hegemann1337@gmail.com> Date: Wed, 22 Nov 2023 07:07:25 +0100 Subject: [PATCH 108/222] syntax-highlighter: Enable tree-sitter locals for Java (#58468) --- internal/highlight/language.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/highlight/language.go b/internal/highlight/language.go index 32d62633eb3e4..d483c6d23b8ac 100644 --- a/internal/highlight/language.go +++ b/internal/highlight/language.go @@ -135,6 +135,7 @@ var baseEngineConfig = syntaxEngineConfig{ // Languages enabled for advanced syntax features "perl": EngineScipSyntax, "matlab": EngineScipSyntax, + "java": EngineScipSyntax, }, } From f3d72e18142182039a45e38c9bc3d2bf8eb07a2d Mon Sep 17 00:00:00 2001 From: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> Date: Wed, 22 Nov 2023 08:19:10 +0000 Subject: [PATCH 109/222] resolver context tests: sort results before comparing (#58460) sort results before comparing --- cmd/frontend/internal/context/resolvers/context_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmd/frontend/internal/context/resolvers/context_test.go b/cmd/frontend/internal/context/resolvers/context_test.go index b709681fad70f..bb47a37dcc755 100644 --- a/cmd/frontend/internal/context/resolvers/context_test.go +++ b/cmd/frontend/internal/context/resolvers/context_test.go @@ -4,6 +4,7 @@ import ( "context" "io/fs" "os" + "sort" "strings" "testing" @@ -163,6 +164,8 @@ func TestContextResolver(t *testing.T) { } // One code result and text result from each repo expected := []string{"testcode1.go", "testtext1.md", "testcode2.go", "testtext2.md"} + sort.Strings(expected) + sort.Strings(paths) require.Equal(t, expected, paths) } From 5000a78abdb0c2b75c4ae60b6fab22ac49356fdf Mon Sep 17 00:00:00 2001 From: Stefan Hengl <stefan@sourcegraph.com> Date: Wed, 22 Nov 2023 09:44:34 +0100 Subject: [PATCH 110/222] search jobs: allow repo predicates (#58454) We allow repo predicates for Search Jobs by removing the corresponding validation checks. At the same time we improve the checks against file predicates. We now support the following **repo** predicates: - .has.meta - .has.file - .has.content - .has.path - .has.commit.after - .has.description Notes: - Why don't we allow file predicates? `file:has.content()` is translated to an AND query in our (query parsing) job layer. In Search Jobs we don't call this code path. A quick copy&paste hack let to Search Jobs breaking in unexpected ways. Hence I want to leave file predicates to a separate investigation and PR. - The validation in the client and backend are not 100% identical which is a trade-off we accepted for the EAP. The plan is to remove the client validation soon and instead call out to the backend for validation. Test plan: - updated unit tests for client and backend - manual testing - I ran searches with various repo predicates and compared match counts of search jobs with the match counts we display in the Search UI. Repo predicates worked without any issue. This is to be expected because repo predicates are translated to `RepoListOptions` which fits in nicely with our design of Search Jobs. --- .../exhaustive-search-validation.test.ts | 40 ++++++++++--- .../exhaustive-search-validation.ts | 22 +++---- doc/code_search/how-to/search-jobs.md | 2 +- internal/search/job/jobutil/exhaustive_job.go | 15 ++--- .../search/job/jobutil/exhaustive_job_test.go | 59 +++++++++++++++++-- 5 files changed, 101 insertions(+), 37 deletions(-) diff --git a/client/branded/src/search-ui/results/progress/exhaustive-search/exhaustive-search-validation.test.ts b/client/branded/src/search-ui/results/progress/exhaustive-search/exhaustive-search-validation.test.ts index 5242ea42589d7..c0eb3e589af3a 100644 --- a/client/branded/src/search-ui/results/progress/exhaustive-search/exhaustive-search-validation.test.ts +++ b/client/branded/src/search-ui/results/progress/exhaustive-search/exhaustive-search-validation.test.ts @@ -11,25 +11,49 @@ describe('exhaustive search validation', () => { expect(validateQueryForExhaustiveSearch('context:global rev:* insights')).toStrictEqual([]) }) + test('[repo:has.content() predicate]', () => { + expect(validateQueryForExhaustiveSearch('context:global repo:has.content(insights) foo').length).toStrictEqual( + 0 + ) + }) + + test('[repo:has.meta() predicate]', () => { + expect(validateQueryForExhaustiveSearch('context:global repo:has.meta(insights) foo').length).toStrictEqual(0) + }) + describe('works properly with invalid query', () => { test('[multiple rev operator case]', () => { expect(validateQueryForExhaustiveSearch('context:global rev:* insights rev:vk').length).toStrictEqual(1) }) - test('[has regexp generic patter]', () => { + test('[has regexp generic pattern]', () => { expect(validateQueryForExhaustiveSearch('context:global .* patterntype:regexp').length).toStrictEqual(1) }) - test('[repo:has.file() operator]', () => { - expect(validateQueryForExhaustiveSearch('context:global repo:has.file(insights)').length).toStrictEqual(1) - }) - - test('[file:has.content() operator]', () => { + test('[file:has.content() predicate]', () => { expect(validateQueryForExhaustiveSearch('context:global file:has.content(insights)').length).toStrictEqual( 1 ) }) + test('[file:has.owner() predicate]', () => { + expect( + validateQueryForExhaustiveSearch('context:global file:has.owner(insights) foo').length + ).toStrictEqual(1) + }) + + test('[f:has.contributor() predicate]', () => { + expect( + validateQueryForExhaustiveSearch('context:global f:has.contributor(insights) foo').length + ).toStrictEqual(1) + }) + + test('[f:contains.content() predicate]', () => { + expect( + validateQueryForExhaustiveSearch('context:global f:contains.content(insights) foo').length + ).toStrictEqual(1) + }) + test('[or operator]', () => { expect(validateQueryForExhaustiveSearch('insights or batch-changes').length).toStrictEqual(1) }) @@ -49,9 +73,9 @@ describe('exhaustive search validation', () => { test('[all cases combined]', () => { expect( validateQueryForExhaustiveSearch( - 'context:global (repo:has.file(insights) rev:* ) or (file:has.content(batch-changes) rev:vk batch) or (patterntype:regexp .*)' + 'context:global (file:has.content(batch-changes) rev:vk batch) or (patterntype:regexp .* rev:foo)' ).length - ).toStrictEqual(5) + ).toStrictEqual(4) }) }) }) diff --git a/client/branded/src/search-ui/results/progress/exhaustive-search/exhaustive-search-validation.ts b/client/branded/src/search-ui/results/progress/exhaustive-search/exhaustive-search-validation.ts index d3a3c2f7736df..96e0bbaba67a8 100644 --- a/client/branded/src/search-ui/results/progress/exhaustive-search/exhaustive-search-validation.ts +++ b/client/branded/src/search-ui/results/progress/exhaustive-search/exhaustive-search-validation.ts @@ -7,7 +7,6 @@ enum ValidationErrorType { INVALID_QUERY = 'invalid_query', GENERIC_REGEXP = 'generic_regexp', HAS_CONTENT_PREDICATE = 'has_content_predicate', - HAS_FILE_PREDICATE = 'has_file_predicate', OR_OPERATOR = 'or_operator', AND_OPERATOR = 'and_operator', } @@ -68,21 +67,16 @@ export function validateQueryForExhaustiveSearch(query: string): ValidationError }) } - const repoHasContentFilter = filters.some(filter => filter.value?.value.startsWith('has.content(')) - - if (repoHasContentFilter) { + const filePredicates = ['has.content', 'has.owner', 'has.contributor', 'contains.content'] + const fileHasContentFilter = filters.some( + filter => + filePredicates.some(startString => filter.value?.value.startsWith(startString)) && + filter.field.value?.startsWith('f') + ) + if (fileHasContentFilter) { validationErrors.push({ type: ValidationErrorType.HAS_CONTENT_PREDICATE, - reason: 'repo.has.content predicate is not compatible', - }) - } - - const repoHasFileFilter = filters.some(filter => filter.value?.value.startsWith('has.file(')) - - if (repoHasFileFilter) { - validationErrors.push({ - type: ValidationErrorType.HAS_FILE_PREDICATE, - reason: 'repo.has.file predicate is not compatible', + reason: 'file: predicate is not compatible', }) } diff --git a/doc/code_search/how-to/search-jobs.md b/doc/code_search/how-to/search-jobs.md index 1b82a13949207..372d967e9539a 100644 --- a/doc/code_search/how-to/search-jobs.md +++ b/doc/code_search/how-to/search-jobs.md @@ -79,7 +79,7 @@ To use Search Jobs, you need to: Search Jobs supports queries of `type:file` and it automatically appends this to the search query. Other result types (like `diff`, `commit`, `path`, and `repo`) will be ignored. However, there are some limitations on the supported query syntax. These include: - `OR`, `AND` operators -- `has.content` or `has.file` predicates +- file predicates, such as `file:has.content`, `file:has.owner`, `file:has.contributor`, `file:contains.content` - `.*` regexp search - Multiple `rev` filters - Queries with `index: filter` diff --git a/internal/search/job/jobutil/exhaustive_job.go b/internal/search/job/jobutil/exhaustive_job.go index 54bac14f55e5a..f90f011ccb016 100644 --- a/internal/search/job/jobutil/exhaustive_job.go +++ b/internal/search/job/jobutil/exhaustive_job.go @@ -23,8 +23,6 @@ type Exhaustive struct { // // It will return an error if the input query is not supported by Exhaustive. func NewExhaustive(inputs *search.Inputs) (Exhaustive, error) { - // TODO(keegan) a bunch of tests around this after branch cut pls - if inputs.Protocol != search.Exhaustive { return Exhaustive{}, errors.New("only works for exhaustive search inputs") } @@ -46,15 +44,12 @@ func NewExhaustive(inputs *search.Inputs) (Exhaustive, error) { return Exhaustive{}, errors.Errorf("expected a simple expression (no and/or/etc). Got %v", b.Pattern) } - // no predicates - if inputs.Query.Exists(query.FieldRepoHasFile) { - return Exhaustive{}, errors.Errorf("repoHasFile is not supported") - } - if pred, ok := hasPredicates(query.FieldRepo, inputs.Query); ok { - return Exhaustive{}, errors.Errorf("repo: predicates are not supported. Got %v", pred) - } + // We don't support file: predicates, such as file:has.content(), because the + // search breaks in unexpected ways. For example, for interactive search + // file:has.content() is translated to an AND query which we don't support in + // Search Jobs yet. if pred, ok := hasPredicates(query.FieldFile, inputs.Query); ok { - return Exhaustive{}, errors.Errorf("field: predicates are not supported. Got %v", pred) + return Exhaustive{}, errors.Errorf("file: predicates are not supported. Got %v", pred) } // This is a very weak protection but should be enough to catch simple misuse. diff --git a/internal/search/job/jobutil/exhaustive_job_test.go b/internal/search/job/jobutil/exhaustive_job_test.go index 2b273186c0339..d674fbe528f2f 100644 --- a/internal/search/job/jobutil/exhaustive_job_test.go +++ b/internal/search/job/jobutil/exhaustive_job_test.go @@ -106,6 +106,56 @@ func TestNewExhaustive(t *testing.T) { (numRepos . 1) (pathRegexps . []) (indexed . false)) +`), + }, + { + Name: "repo:has.file predicate", + Query: "type:file index:no foo repo:has.file(go.mod)", + WantPager: autogold.Expect(` +(REPOPAGER + (containsRefGlobs . false) + (repoOpts.useIndex . no) + (repoOpts.hasFileContent[0].path . go.mod) + (PARTIALREPOS + (SEARCHERTEXTSEARCH + (useFullDeadline . true) + (patternInfo . TextPatternInfo{"foo",re,nopath,filematchlimit:1000000}) + (numRepos . 0) + (pathRegexps . []) + (indexed . false)))) +`), + WantJob: autogold.Expect(` +(SEARCHERTEXTSEARCH + (useFullDeadline . true) + (patternInfo . TextPatternInfo{"foo",re,nopath,filematchlimit:1000000}) + (numRepos . 1) + (pathRegexps . []) + (indexed . false)) +`), + }, + { + Name: "repo:has.meta predicate", + Query: "type:file index:no foo repo:has.meta(cognition)", + WantPager: autogold.Expect(` +(REPOPAGER + (containsRefGlobs . false) + (repoOpts.useIndex . no) + (repoOpts.hasKVPs[0].key . cognition) + (PARTIALREPOS + (SEARCHERTEXTSEARCH + (useFullDeadline . true) + (patternInfo . TextPatternInfo{"foo",re,nopath,filematchlimit:1000000}) + (numRepos . 0) + (pathRegexps . []) + (indexed . false)))) +`), + WantJob: autogold.Expect(` +(SEARCHERTEXTSEARCH + (useFullDeadline . true) + (patternInfo . TextPatternInfo{"foo",re,nopath,filematchlimit:1000000}) + (numRepos . 1) + (pathRegexps . []) + (indexed . false)) `), }, } @@ -157,10 +207,11 @@ func TestNewExhaustive_negative(t *testing.T) { // catch-all regex {query: `type:file index:no r:.* .*`, isPatterntypeRegex: true}, {query: `type:file index:no r:repo .*`, isPatterntypeRegex: true}, - // predicates - {query: `type:file index:no repohasfile:foo.bar content`}, - {query: `type:file index:no file:has.content("content")`}, - {query: `type:file index:no repo:has.path("src") content`}, + // file predicates + {query: `type:file index:no file:has.content(content)`}, + {query: `type:file index:no file:has.owner(owner)`}, + {query: `type:file index:no file:contains.content(content)`}, + {query: `type:file index:no file:has.contributor(contributor)`}, } for _, c := range tc { From d93f004dff5060552946ed9b84e9a1567a05c075 Mon Sep 17 00:00:00 2001 From: "gitstart-app[bot]" <57568882+gitstart-app[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 10:32:00 +0100 Subject: [PATCH 111/222] SG-58136 - Run experiment on "Cody for personal/work" form after a user signs up (#58400) * chore: support cody for personal and work experiment --------- Co-authored-by: gitstart-sourcegraph <sourcegraph@gitstart.com> Co-authored-by: GitStart-SourceGraph <89894075+gitstart-sourcegraph@users.noreply.github.com> --- client/web/BUILD.bazel | 1 + client/web/src/auth/PostSignUpPage.tsx | 15 +- client/web/src/featureFlags/featureFlags.ts | 1 + .../components/HubSpotForm.module.scss | 224 +++++++++++++++ .../src/marketing/components/HubSpotForm.tsx | 259 ++++++++++++++++++ .../src/marketing/toast/CodySurveyToast.tsx | 98 ++++++- 6 files changed, 594 insertions(+), 4 deletions(-) create mode 100644 client/web/src/marketing/components/HubSpotForm.module.scss create mode 100644 client/web/src/marketing/components/HubSpotForm.tsx diff --git a/client/web/BUILD.bazel b/client/web/BUILD.bazel index a0ca3178ea976..7d8d2f9337911 100644 --- a/client/web/BUILD.bazel +++ b/client/web/BUILD.bazel @@ -1112,6 +1112,7 @@ ts_project( "src/insights/utils/use-series-toggle.ts", "src/jscontext.ts", "src/marketing/backend.ts", + "src/marketing/components/HubSpotForm.tsx", "src/marketing/components/SurveyRatingRadio.tsx", "src/marketing/components/SurveyUseCaseForm.tsx", "src/marketing/components/TweetFeedback.tsx", diff --git a/client/web/src/auth/PostSignUpPage.tsx b/client/web/src/auth/PostSignUpPage.tsx index 87756cb736137..f21e198f631e7 100644 --- a/client/web/src/auth/PostSignUpPage.tsx +++ b/client/web/src/auth/PostSignUpPage.tsx @@ -19,9 +19,14 @@ interface PostSignUpPageProps { const PostSignUp: React.FunctionComponent<PostSignUpPageProps> = ({ authenticatedUser }) => { const location = useLocation() + const searchParameters = new URLSearchParams(location.search) + const isExperimentEnabled = searchParameters.get('experiment_flag')?.toLowerCase() === 'true' - // Redirect if user has already completed post signup flow - if (authenticatedUser.completedPostSignup) { + const containsExperimentFlagParam = searchParameters.has('experiment_flag') + const shouldRedirect = !containsExperimentFlagParam && authenticatedUser.completedPostSignup + + // Redirects if the experiment flag is not provided and if the user has completed the post-signup flow. + if (shouldRedirect) { const returnTo = getReturnTo(location) return <Navigate to={returnTo} replace={true} /> } @@ -32,7 +37,11 @@ const PostSignUp: React.FunctionComponent<PostSignUpPageProps> = ({ authenticate <Page className={styles.page}> <img src="/.assets/img/sourcegraph-mark.svg?v2" alt="Sourcegraph logo" className={styles.logo} /> - <CodySurveyToast telemetryService={eventLogger} authenticatedUser={authenticatedUser} /> + <CodySurveyToast + telemetryService={eventLogger} + authenticatedUser={authenticatedUser} + isExperimentEnabled={isExperimentEnabled} + /> </Page> </div> ) diff --git a/client/web/src/featureFlags/featureFlags.ts b/client/web/src/featureFlags/featureFlags.ts index 8b91b4e0ae098..e048cfb148803 100644 --- a/client/web/src/featureFlags/featureFlags.ts +++ b/client/web/src/featureFlags/featureFlags.ts @@ -32,6 +32,7 @@ export const FEATURE_FLAGS = [ 'search-content-based-lang-detection', 'search-new-keyword', 'search-debug', + 'signup-survey-enabled', ] as const export type FeatureFlagName = typeof FEATURE_FLAGS[number] diff --git a/client/web/src/marketing/components/HubSpotForm.module.scss b/client/web/src/marketing/components/HubSpotForm.module.scss new file mode 100644 index 0000000000000..886a1bbb6afa5 --- /dev/null +++ b/client/web/src/marketing/components/HubSpotForm.module.scss @@ -0,0 +1,224 @@ +.container { + :global(.hs-button) { + margin: 0; + cursor: pointer; + display: inline-block; + font-weight: 700; + line-height: 0.75rem; + position: relative; + text-align: center; + transition: all 0.15s linear; + background-color: var(--violet-04) !important; + border-color: var(--violet-04) !important; + color: var(--white); + border-radius: 0.3125rem; + border-style: solid; + border-width: 1px; + font-size: 0.875rem; + padding: 0.75rem 1.5rem; + + &:hover, + &:focus { + background-color: var(--violet-05) !important; + border-color: var(--violet-05) !important; + } + + &:active { + background-color: var(--violet-05) !important; + border-color: var(--violet-05) !important; + } + } + + p { + margin-bottom: 0.625rem !important; + } + + label { + font-size: 0.875rem; + color: #33475b; + display: block; + float: none; + width: auto; + font-weight: 500 !important; + line-height: 1.25rem; + padding-top: 0; + margin-bottom: 0.25rem; + margin-top: 0.25rem; + } + + input:global(.hs-input):global(.error), + div:global(.field):global(.error) input, + div:global(.field):global(.error) textarea, + div:global(.field):global(.error) :global(.chzn-choices), + textarea:global(.hs-input):global(.error), + select:global(.hs-input):global(.error) { + border-color: var(--danger-text) !important; + } + + input:global(.hs-input):global(.error):focus, + div:global(.field):global(.error) input:focus, + div:global(.field):global(.error) textarea:focus, + div:global(.field):global(.error) :global(.chzn-choices):focus, + textarea:global(.hs-input):global(.error):focus, + select:global(.hs-input):global(.error):focus { + border-color: var(--danger-text) !important; + } + :global(.hs-error-msgs) label { + color: var(--danger-text) !important; + } + + :global(.hs-input) { + display: inline-block; + width: 100%; + height: 2.5rem; + padding: 0.563rem 0.625rem; + font-size: 1rem; + font-weight: normal; + line-height: 1.375rem; + color: #313131; + border: 1px solid var(--gray-04); + box-sizing: border-box; + -webkit-border-radius: 0.188rem; + -moz-border-radius: 0.188rem; + -ms-border-radius: 0.188rem; + border-radius: 0.188rem; + transition: border 0.2s linear; + + &:not([type='file']) { + background-color: #f5f8fa; + } + + &:-moz-placeholder { + color: #bfbfbf; + } + + &:-webkit-input-placeholder { + color: #bfbfbf; + } + + &:focus { + outline: none; + border-color: var(--violet-04); + } + } + + :global(.hs-input)[type='checkbox'], + :global(.hs-input)[type='radio'] { + cursor: pointer; + width: auto; + height: auto; + padding: 0; + margin: 0.188rem 0.313rem 0.188rem 0; + line-height: normal; + border: none; + } + + :global(.hs-input)[type='checkbox']:checked, + :global(.hs-input)[type='radio']:checked { + accent-color: var(--violet-04); + } + + :global(.actions) { + margin-top: 1.125rem; + margin-bottom: 0; + padding-top: 1.063rem; + } + + :global(.inputs-list) { + margin: 0 0 0.313rem; + width: 100%; + padding-left: 0.313rem; + } + :global(.inputs-list) :global(.hs-error-msgs) { + padding-left: 0; + } + + :global(.inputs-list) > li { + display: block; + padding: 0; + width: 100%; + padding-top: 0; + } + + :global(.inputs-list) label { + float: none; + width: auto; + padding: 0; + line-height: 1.125rem; + white-space: normal; + font-weight: normal; + } + + :global(.inputs-list):first-child { + padding-top: 0.375rem; + } + + :global(.inputs-list) > li + li { + padding-top: 0.125rem; + } + + ul:global(.no-list) { + list-style: none; + } + + :global(.field) { + margin-bottom: 1.125rem; + } + + :global(.hs-field-desc) { + color: #7c98b6; + margin: 0 0 0.375rem; + font-size: 0.688rem; + } + + :global(.hs-form-required) { + color: var(--danger-text); + margin-left: 0.188rem; + } + + :global(.hs-custom-style) + :global(.hs-dependent-field) + > div + input:global(.hs-input):not([type='checkbox']):not([type='radio']) { + width: 90%; + } + + :global(.hs-button), + :global(.hs-form-field) input[type='text'], + :global(.hs-form-field) input[type='email'], + :global(.hs-form-field) input[type='phone'], + :global(.hs-form-field) input[type='number'], + :global(.hs-form-field) input[type='tel'], + :global(.hs-form-field) input[type='date'], + :global(.hs-form-field) textarea { + -webkit-appearance: none; + -moz-appearance: none; + } + + :global(.hs-fieldtype-intl-phone):global(.hs-input) { + padding: 0; + background: none; + border: none; + height: auto; + + &::after { + clear: both; + content: ' '; + display: table; + } + + &:global(.hs-input) { + margin-bottom: 0; + } + } + + :global(.hs-default-font-element), + :global(.hs-main-font-element) { + line-height: normal; + } + + // stylelint-disable-next-line selector-id-pattern + :global(#hsForm_85548efc-a879-4553-9ef0-a8da8fdcf541) :global(.hs-email) { + display: none; + } +} diff --git a/client/web/src/marketing/components/HubSpotForm.tsx b/client/web/src/marketing/components/HubSpotForm.tsx new file mode 100644 index 0000000000000..ae1d6b19a85ee --- /dev/null +++ b/client/web/src/marketing/components/HubSpotForm.tsx @@ -0,0 +1,259 @@ +import { FunctionComponent, useEffect, useState } from 'react' + +import classNames from 'classnames' + +import styles from './HubSpotForm.module.scss' + +declare global { + interface Window { + hbspt?: { + forms: { + create: ({ + region, + portalId, + formId, + target, + formInstanceId, + onFormSubmit, + onFormSubmitted, + onFormReady, + }: HubSpotAPIProps) => CreateHubSpotFormProps + } + } + jQuery: () => void + ClearbitForHubspot: { + forms: [] + addForm: () => void + } + } +} + +interface HubSpotAPIProps { + region?: string + portalId: string + formId: string + target: string + formInstanceId?: string + onFormSubmit?: (object: { data: { name: string; value: string }[] }) => void + onFormReady?: ($form: CreateHubSpotFormProps) => void + onFormSubmitted?: () => void + inlineMessage?: string +} + +interface CreateHubSpotFormProps { + [index: number]: HTMLFormElement + formId: string + onFormReady?: ($form: HTMLFormElement) => void + onFormSubmitted?: () => void + inlineMessage?: string +} + +export interface HubSpotFormProps { + formId?: string + masterFormName?: 'qualificationSurvey' + onFormSubmitted?: () => void + onFormReady?: ($form: HTMLFormElement) => void + inlineMessage?: string + overrideFormShorten?: boolean + userId?: string +} + +/** + * These are our Master Forms that are used throughout our codebase. Each + * masterFormName is used as an identifier to map to a specific master form id. + */ +const masterForms: { [key: string]: string } = { + // Customer qualification survey + qualificationSurvey: '85548efc-a879-4553-9ef0-a8da8fdcf541', +} + +// HubSpot script integration +const hubSpotScript = 'https://js.hsforms.net/forms/v2.js' + +// Third party script integrations +const jQueryScript = 'https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js' +const clearbitScript = + '!function(e){var o=document.getElementsByTagName("script")[0];if("object"==typeof e.ClearbitForHubspot)return console.log("Clearbit For HubSpot included more than once"),!1;e.ClearbitForHubspot={},e.ClearbitForHubspot.forms=[],e.ClearbitForHubspot.addForm=function(o){var t=o[0];"function"==typeof e.ClearbitForHubspot.onFormReady?e.ClearbitForHubspot.onFormReady(t):e.ClearbitForHubspot.forms.push(t)};var t=document.createElement("script");t.async=!0,t.src="https://hubspot.clearbit.com/v1/forms/pk_a66b9ed76e62c713c06aab39bfae7234/forms.js",o.parentNode.insertBefore(t,o),e.addEventListener("message",function(o){if("hsFormCallback"===o.data.type&&"onFormReady"===o.data.eventName)if(document.querySelectorAll(\'form[data-form-id="\'+o.data.id+\'"]\').length>0)e.ClearbitForHubspot.addForm(document.querySelectorAll(\'form[data-form-id="\'+o.data.id+\'"]\'));else if(document.querySelectorAll("iframe.hs-form-iframe").length>0){document.querySelectorAll("iframe.hs-form-iframe").forEach(function(t){t.contentWindow.document.querySelectorAll(\'form[data-form-id="\'+o.data.id+\'"]\').length>0&&e.ClearbitForHubspot.addForm(t.contentWindow.document.querySelectorAll(\'form[data-form-id="\'+o.data.id+\'"]\'))})}})}(window);' + +// Gets a script element by its id +const getScriptElement = (id: string): HTMLScriptElement | Element | null => document.querySelector(`#${id}`) + +/** + * This loads a script element and appends it to the document head + * + * @param id - a unique identifier for the script element + * @param script - the script src (whether it's used for the script tag's src or innerHTML) + * @param innerHTML - whether or not to assign the script to the script tag's src attribute or append to it's innerHTML + * @returns - an HTML Script Element + */ +const loadScriptElement = ( + id: string, + script: string, + innerHTML?: boolean +): Promise<HTMLScriptElement | Element | null> => + new Promise(resolve => { + const scriptElement = getScriptElement(id) + + if (!scriptElement) { + const newScriptElement = document.createElement('script') + newScriptElement.setAttribute('id', id) + newScriptElement.setAttribute('async', '') + if (innerHTML) { + newScriptElement.innerHTML = script + } else { + newScriptElement.src = script + } + document.head.append(newScriptElement) + resolve(newScriptElement) + } + + resolve(scriptElement) + }) + +/** + * This loads all necessary scripts and third party integrations + */ +const loadAllScripts = async (): Promise<void> => { + const loadingScripts: Promise<HTMLScriptElement | Element | null>[] = [] + + if (!window.hbspt) { + loadingScripts.push(loadScriptElement('hubspot', hubSpotScript)) + } + if (!window.jQuery) { + loadingScripts.push(loadScriptElement('jquery', jQueryScript)) + } + if (!window.ClearbitForHubspot) { + loadingScripts.push(loadScriptElement('clearbit', clearbitScript, true)) + } + + try { + await Promise.all(loadingScripts) + } catch (error) { + // eslint-disable-next-line no-console + console.error('Error loading scripts:', error) + } +} + +/** + * This creates the HubSpot form with the configuration options. + * See: https://legacydocs.hubspot.com/docs/methods/forms/advanced_form_options + * + * @param CreateHubSpotFormProps - object props passed to createHubSpotForm + * @param CreateHubSpotFormProps.formId - the form's id + * @param CreateHubSpotFormProps.onFormReady - callback after form is built + * @param CreateHubSpotFormProps.onFormSubmitted - callback after data is sent + * @param CreateHubSpotFormProps.inlineMessage - form submission message + */ +function createHubSpotForm({ formId, onFormReady, onFormSubmitted, inlineMessage }: CreateHubSpotFormProps): void { + const hbsptCreateForm = (): void => { + window.hbspt?.forms.create({ + region: 'na1', + portalId: '2762526', + formId, + target: '#form-target', + onFormReady: (form: CreateHubSpotFormProps) => { + if (onFormReady) { + onFormReady(form[0]) + } + }, + onFormSubmitted, + inlineMessage, + }) + } + + if (window.hbspt) { + hbsptCreateForm() + + return + } + + // When the HubSpot script is loaded, create the form with the config + getScriptElement('hubspot')?.addEventListener('load', hbsptCreateForm) +} + +// This gets called when the HubSpot form is ready +const onHubsportFormReady = (form: HTMLFormElement, userId?: string): void => { + /** + * This allows you to populate hidden form fields with values + * + * @param formField - the form field name + * @param value - the value to populate + */ + const populateHiddenFormField = (formField: string, value: string): void => { + const input = form.querySelector(`input[name="${formField}"]`) as HTMLInputElement + if (input && !input.value) { + input.value = value || '' + } + } + + /** + * If the form is ready and visible in the DOM, gather all cookie and + * session data and populate hidden form fields. + */ + if (form) { + const getAllCookies: { [index: string]: string } = document.cookie + .split(';') + .reduce((key, string) => Object.assign(key, { [string.split('=')[0].trim()]: string.split('=')[1] }), {}) + const { sourcegraphAnonymousUid, sourcegraphSourceUrl } = getAllCookies + const landingSource: string = sessionStorage.getItem('landingSource') || '' + const firstSourceURL: string = + sourcegraphSourceUrl?.includes('redacted') || !sourcegraphSourceUrl ? landingSource : sourcegraphSourceUrl + + if (userId) { + populateHiddenFormField('user_id', userId) + } else { + populateHiddenFormField('anonymous_user_id', sourcegraphAnonymousUid) + } + populateHiddenFormField('first_source_url', firstSourceURL) + populateHiddenFormField('form_submission_source', window.location.href) + } +} + +/** + * The HubSpot form component. + * + * @param options - option props + * @param options.formId - an optional form id + * @param options.onFormSubmitted - a callback that runs after a form submission + * @param options.inlineMessage - a message to display after a form submission + * @param options.userId - authenticated user's id + * @returns - a div element with an id where the HubSpot form renders + */ +export const HubSpotForm: FunctionComponent<HubSpotFormProps> = ({ + formId, + masterFormName, + onFormSubmitted, + onFormReady, + inlineMessage = 'Thank you for your feedback!', + userId, +}) => { + const [formCreated, setFormCreated] = useState<boolean>(false) + + useEffect(() => { + // Set the master form id if it's provided + let masterFormId = '' + if (masterFormName) { + masterFormId = masterForms[masterFormName] + } + + // Load all scripts + // eslint-disable-next-line @typescript-eslint/no-floating-promises + loadAllScripts() + + if (!formCreated) { + createHubSpotForm({ + formId: formId || masterFormId, + onFormReady: form => { + onFormReady?.(form) + onHubsportFormReady(form, userId) + }, + onFormSubmitted, + inlineMessage, + }) + + setFormCreated(true) + } + }, [formId, onFormSubmitted, inlineMessage, formCreated, masterFormName, onFormReady, userId]) + + return <div id="form-target" data-testid="hubspot-form-container" className={classNames(styles.container)} /> +} diff --git a/client/web/src/marketing/toast/CodySurveyToast.tsx b/client/web/src/marketing/toast/CodySurveyToast.tsx index 249f0b79373a1..05040d0686331 100644 --- a/client/web/src/marketing/toast/CodySurveyToast.tsx +++ b/client/web/src/marketing/toast/CodySurveyToast.tsx @@ -13,6 +13,7 @@ import type { AuthenticatedUser } from '../../auth' import { getReturnTo } from '../../auth/SignInSignUpCommon' import { CodyColorIcon } from '../../cody/chat/CodyPageIcon' import { LoaderButton } from '../../components/LoaderButton' +import { useFeatureFlag } from '../../featureFlags/useFeatureFlag' import type { SubmitCodySurveyResult, SubmitCodySurveyVariables, @@ -21,6 +22,7 @@ import type { } from '../../graphql-operations' import { PageRoutes } from '../../routes.constants' import { resendVerificationEmail } from '../../user/settings/emails/UserEmail' +import { HubSpotForm } from '../components/HubSpotForm' import styles from './CodySurveyToast.module.scss' @@ -160,6 +162,83 @@ const CodySurveyToastInner: React.FC< ) } +const CodyQualificationSurveryToastInner: React.FC< + { onSubmitEnd: () => void; userId: string; hasVerifiedEmail: boolean } & TelemetryProps +> = ({ onSubmitEnd, telemetryService, userId, hasVerifiedEmail }) => { + const [updatePostSignupCompletion, { error: setPostSignupError }] = useMutation< + SetCompletedPostSignupResult, + SetCompletedPostSignupVariables + >(SET_COMPLETED_POST_SIGNUP, { + variables: { + userID: userId, + }, + }) + + const handleFormReady = useCallback( + (form: HTMLFormElement) => { + const input = form.querySelector('input[name="using_cody_for_work"]') + + // Trigger telemetry event whenever the cody for work is selected. + const handleChange = (e: Event): void => { + const target = e.target as HTMLInputElement + const isChecked = target.checked + + if (isChecked) { + telemetryService.log('ViewCodyWorkQuestionnarie') + } + } + + input?.addEventListener('change', handleChange) + + return () => { + input?.removeEventListener('change', handleChange) + } + }, + [telemetryService] + ) + + const handleSubmit = useCallback(async () => { + try { + if (hasVerifiedEmail) { + await updatePostSignupCompletion() + } + + onSubmitEnd() + } catch (error) { + /* eslint-disable no-console */ + console.error(error) + } + }, [hasVerifiedEmail, onSubmitEnd, updatePostSignupCompletion]) + + useEffect(() => { + telemetryService.log('ViewCodyforWorkorPersonalForm') + }, [telemetryService]) + + return ( + <Modal + className={styles.codySurveyToastModal} + position="center" + aria-label="View cody for work or personal form" + data-testid="cody-qualification-survey-form" + containerClassName={styles.modalOverlay} + > + <HubSpotForm + onFormSubmitted={handleSubmit} + userId={userId} + onFormReady={handleFormReady} + masterFormName="qualificationSurvey" + /> + + {!!setPostSignupError && ( + <Text size="small" className="text-danger mt-3 mb-2"> + An error occurred. Please reload the page and try again. If this persists, contact support at + support@sourcegraph.com + </Text> + )} + </Modal> + ) +} + const CodyVerifyEmailToast: React.FC<{ onNext: () => void; authenticatedUser: AuthenticatedUser } & TelemetryProps> = ({ onNext, authenticatedUser, @@ -238,8 +317,10 @@ const CodyVerifyEmailToast: React.FC<{ onNext: () => void; authenticatedUser: Au export const CodySurveyToast: React.FC< { authenticatedUser: AuthenticatedUser + isExperimentEnabled?: boolean } & TelemetryProps -> = ({ authenticatedUser, telemetryService }) => { +> = ({ authenticatedUser, telemetryService, isExperimentEnabled }) => { + const [showQualificationSurvey] = useFeatureFlag('signup-survey-enabled', false) const [showVerifyEmail, setShowVerifyEmail] = useState(!authenticatedUser.hasVerifiedEmail) const location = useLocation() @@ -255,6 +336,10 @@ export const CodySurveyToast: React.FC< setShowVerifyEmail(false) }, [telemetryService]) + useEffect(() => { + telemetryService.log('CustomerQualificationSurveyExperiment001Enrolled') + }, [telemetryService]) + if (showVerifyEmail) { return ( <CodyVerifyEmailToast @@ -265,6 +350,17 @@ export const CodySurveyToast: React.FC< ) } + if (isExperimentEnabled || showQualificationSurvey) { + return ( + <CodyQualificationSurveryToastInner + telemetryService={telemetryService} + onSubmitEnd={handleSubmitEnd} + userId={authenticatedUser.id} + hasVerifiedEmail={authenticatedUser.hasVerifiedEmail} + /> + ) + } + return ( <CodySurveyToastInner telemetryService={telemetryService} From bfc081aadffeb2386a4593a6b806d1bfa66fe7b4 Mon Sep 17 00:00:00 2001 From: Beatrix <68532117+abeatrix@users.noreply.github.com> Date: Wed, 22 Nov 2023 02:00:47 -0800 Subject: [PATCH 112/222] new: add claude-2.0 and claude-2.1 models (#58451) * fix: switch to pinned version for claude * Add claude 2.1 to allow list * add claude-2.0 and claude-2.1 models * upgrade default Claude model and add new models * revert * fix test --- .../dotcom/productSubscriptions/ModelBadges.tsx | 2 ++ cmd/cody-gateway/internal/actor/anonymous/anonymous.go | 2 +- .../internal/httpapi/completions/anthropic.go | 2 +- cmd/cody-gateway/shared/config.go | 2 ++ .../dotcom/productsubscription/codygateway_dotcom_user.go | 2 +- internal/completions/httpapi/chat.go | 2 ++ internal/conf/computed.go | 2 +- internal/licensing/codygateway.go | 2 +- internal/licensing/codygateway_test.go | 8 ++++---- 9 files changed, 15 insertions(+), 9 deletions(-) diff --git a/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/ModelBadges.tsx b/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/ModelBadges.tsx index a008c0c09d57b..0f4280408080a 100644 --- a/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/ModelBadges.tsx +++ b/client/web/src/enterprise/site-admin/dotcom/productSubscriptions/ModelBadges.tsx @@ -30,6 +30,8 @@ function modelBadgeVariant(model: string, mode: 'completions' | 'embeddings'): ' case 'anthropic/claude-v1.3': case 'anthropic/claude-v1.3-100k': case 'anthropic/claude-2': + case 'anthropic/claude-2.0': + case 'anthropic/claude-2.1': case 'anthropic/claude-instant-v1': case 'anthropic/claude-instant-1': case 'anthropic/claude-instant-v1-100k': diff --git a/cmd/cody-gateway/internal/actor/anonymous/anonymous.go b/cmd/cody-gateway/internal/actor/anonymous/anonymous.go index 6df175d8a612a..cb523d12d41e2 100644 --- a/cmd/cody-gateway/internal/actor/anonymous/anonymous.go +++ b/cmd/cody-gateway/internal/actor/anonymous/anonymous.go @@ -37,7 +37,7 @@ func (s *Source) Get(ctx context.Context, token string) (*actor.Actor, error) { codygateway.FeatureChatCompletions: actor.NewRateLimitWithPercentageConcurrency( 50, 24*time.Hour, - []string{"anthropic/claude-v1", "anthropic/claude-2"}, + []string{"anthropic/claude-v1", "anthropic/claude-2", "anthropic/claude-2.0", "anthropic/claude-2.1"}, s.concurrencyConfig, ), codygateway.FeatureCodeCompletions: actor.NewRateLimitWithPercentageConcurrency( diff --git a/cmd/cody-gateway/internal/httpapi/completions/anthropic.go b/cmd/cody-gateway/internal/httpapi/completions/anthropic.go index d2ed288c31f50..7430f497302c2 100644 --- a/cmd/cody-gateway/internal/httpapi/completions/anthropic.go +++ b/cmd/cody-gateway/internal/httpapi/completions/anthropic.go @@ -37,7 +37,7 @@ const ( func isFlaggedAnthropicRequest(tk *tokenizer.Tokenizer, ar anthropicRequest, promptRegexps []*regexp.Regexp) (*flaggingResult, error) { // Only usage of chat models us currently flagged, so if the request // is using another model, we skip other checks. - if ar.Model != "claude-2" && ar.Model != "claude-v1" { + if ar.Model != "claude-2" && ar.Model != "claude-2.0" && ar.Model != "claude-2.1" && ar.Model != "claude-v1" { return nil, nil } reasons := []string{} diff --git a/cmd/cody-gateway/shared/config.go b/cmd/cody-gateway/shared/config.go index 3cec715d131a3..1ca2f542411e3 100644 --- a/cmd/cody-gateway/shared/config.go +++ b/cmd/cody-gateway/shared/config.go @@ -99,6 +99,8 @@ func (c *Config) Load() { "claude-v1.3", "claude-v1.3-100k", "claude-2", + "claude-2.0", + "claude-2.1", "claude-2-100k", "claude-instant-v1", "claude-instant-1", diff --git a/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go b/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go index ef60a8d0a9f58..5ea3965fd2513 100644 --- a/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go +++ b/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go @@ -228,7 +228,7 @@ func getCompletionsRateLimit(ctx context.Context, db database.DB, userID int32, func allowedModels(scope types.CompletionsFeature) []string { switch scope { case types.CompletionsFeatureChat: - return []string{"anthropic/claude-v1", "anthropic/claude-2", "anthropic/claude-instant-v1", "anthropic/claude-instant-1"} + return []string{"anthropic/claude-v1", "anthropic/claude-2", "anthropic/claude-2.0", "anthropic/claude-2.1", "anthropic/claude-instant-v1", "anthropic/claude-instant-1"} case types.CompletionsFeatureCode: return []string{"anthropic/claude-instant-v1", "anthropic/claude-instant-1"} default: diff --git a/internal/completions/httpapi/chat.go b/internal/completions/httpapi/chat.go index 3ce186a5cffdf..ff15cb4f39a66 100644 --- a/internal/completions/httpapi/chat.go +++ b/internal/completions/httpapi/chat.go @@ -47,6 +47,8 @@ func isAllowedCustomChatModel(model string) bool { switch model { case "anthropic/claude-2", + "anthropic/claude-2.0", + "anthropic/claude-2.1", "anthropic/claude-instant-1.2-cyan", "openai/gpt-3.5-turbo", "openai/gpt-4-1106-preview": diff --git a/internal/conf/computed.go b/internal/conf/computed.go index b68ab6ff03565..6cd3bba722bb3 100644 --- a/internal/conf/computed.go +++ b/internal/conf/computed.go @@ -1119,7 +1119,7 @@ func anthropicDefaultMaxPromptTokens(model string) int { return 100_000 } - if model == "claude-2" || model == "claude-v2" { + if model == "claude-2" || model == "claude-2.0" || model == "claude-2.1" || model == "claude-v2" { // TODO: Technically, v2 also uses a 100k window, but we should validate // that returning 100k here is the right thing to do. return 12_000 diff --git a/internal/licensing/codygateway.go b/internal/licensing/codygateway.go index 53016dbcc4951..90aea8448576c 100644 --- a/internal/licensing/codygateway.go +++ b/internal/licensing/codygateway.go @@ -24,7 +24,7 @@ func NewCodyGatewayChatRateLimit(plan Plan, userCount *int, licenseTags []string uc = 1 } // Switch on GPT models by default if the customer license has the GPT tag. - models := []string{"anthropic/claude-v1", "anthropic/claude-2", "anthropic/claude-instant-v1", "anthropic/claude-instant-1"} + models := []string{"anthropic/claude-v1", "anthropic/claude-2", "anthropic/claude-2.0", "anthropic/claude-2.1", "anthropic/claude-instant-v1", "anthropic/claude-instant-1"} if slices.Contains(licenseTags, GPTLLMAccessTag) { models = append(models, "openai/gpt-4", "openai/gpt-3.5-turbo") } diff --git a/internal/licensing/codygateway_test.go b/internal/licensing/codygateway_test.go index 58720105e3b5b..32ec28cd4ab41 100644 --- a/internal/licensing/codygateway_test.go +++ b/internal/licensing/codygateway_test.go @@ -22,7 +22,7 @@ func TestNewCodyGatewayChatRateLimit(t *testing.T) { userCount: pointers.Ptr(50), licenseTags: []string{GPTLLMAccessTag}, want: CodyGatewayRateLimit{ - AllowedModels: []string{"anthropic/claude-v1", "anthropic/claude-2", "anthropic/claude-instant-v1", "anthropic/claude-instant-1", "openai/gpt-4", "openai/gpt-3.5-turbo"}, + AllowedModels: []string{"anthropic/claude-v1", "anthropic/claude-2", "anthropic/claude-2.0", "anthropic/claude-2.1", "anthropic/claude-instant-v1", "anthropic/claude-instant-1", "openai/gpt-4", "openai/gpt-3.5-turbo"}, Limit: 2500, IntervalSeconds: 60 * 60 * 24, }, @@ -32,7 +32,7 @@ func TestNewCodyGatewayChatRateLimit(t *testing.T) { plan: PlanEnterprise1, userCount: pointers.Ptr(50), want: CodyGatewayRateLimit{ - AllowedModels: []string{"anthropic/claude-v1", "anthropic/claude-2", "anthropic/claude-instant-v1", "anthropic/claude-instant-1"}, + AllowedModels: []string{"anthropic/claude-v1", "anthropic/claude-2", "anthropic/claude-2.0", "anthropic/claude-2.1", "anthropic/claude-instant-v1", "anthropic/claude-instant-1"}, Limit: 2500, IntervalSeconds: 60 * 60 * 24, }, @@ -41,7 +41,7 @@ func TestNewCodyGatewayChatRateLimit(t *testing.T) { name: "Enterprise plan with no user count", plan: PlanEnterprise1, want: CodyGatewayRateLimit{ - AllowedModels: []string{"anthropic/claude-v1", "anthropic/claude-2", "anthropic/claude-instant-v1", "anthropic/claude-instant-1"}, + AllowedModels: []string{"anthropic/claude-v1", "anthropic/claude-2", "anthropic/claude-2.0", "anthropic/claude-2.1", "anthropic/claude-instant-v1", "anthropic/claude-instant-1"}, Limit: 50, IntervalSeconds: 60 * 60 * 24, }, @@ -50,7 +50,7 @@ func TestNewCodyGatewayChatRateLimit(t *testing.T) { name: "Non-enterprise plan with no GPT tag and no user count", plan: "unknown", want: CodyGatewayRateLimit{ - AllowedModels: []string{"anthropic/claude-v1", "anthropic/claude-2", "anthropic/claude-instant-v1", "anthropic/claude-instant-1"}, + AllowedModels: []string{"anthropic/claude-v1", "anthropic/claude-2", "anthropic/claude-2.0", "anthropic/claude-2.1", "anthropic/claude-instant-v1", "anthropic/claude-instant-1"}, Limit: 10, IntervalSeconds: 60 * 60 * 24, }, From 30e0533137ef514f8396c60d727eb3741e898281 Mon Sep 17 00:00:00 2001 From: Eric Fritz <eric@eric-fritz.com> Date: Wed, 22 Nov 2023 04:47:08 -0600 Subject: [PATCH 113/222] codeintel: Improve GetIndexers method (#56801) Fix the slow "list indexers" GraphQL endpoint, which is especially problematic on the upload/index list view when not scoped to a particular repository. --- .../uploads/internal/store/summary.go | 43 +++++++++++++------ internal/database/schema.json | 20 +++++++++ internal/database/schema.md | 2 + .../down.sql | 1 + .../metadata.yaml | 3 ++ .../up.sql | 1 + .../down.sql | 1 + .../metadata.yaml | 3 ++ .../up.sql | 1 + migrations/frontend/squashed.sql | 4 ++ 10 files changed, 65 insertions(+), 14 deletions(-) create mode 100644 migrations/frontend/1695152835_add_index_for_upload_indexers/down.sql create mode 100644 migrations/frontend/1695152835_add_index_for_upload_indexers/metadata.yaml create mode 100644 migrations/frontend/1695152835_add_index_for_upload_indexers/up.sql create mode 100644 migrations/frontend/1695152902_add_index_for_index_indexers/down.sql create mode 100644 migrations/frontend/1695152902_add_index_for_index_indexers/metadata.yaml create mode 100644 migrations/frontend/1695152902_add_index_for_index_indexers/up.sql diff --git a/internal/codeintel/uploads/internal/store/summary.go b/internal/codeintel/uploads/internal/store/summary.go index 3cf6e8a62d977..b0392814d411f 100644 --- a/internal/codeintel/uploads/internal/store/summary.go +++ b/internal/codeintel/uploads/internal/store/summary.go @@ -20,34 +20,49 @@ func (s *store) GetIndexers(ctx context.Context, opts shared.GetIndexersOptions) }}) defer endObservation(1, observation.Args{}) - var conds []*sqlf.Query - if opts.RepositoryID != 0 { - conds = append(conds, sqlf.Sprintf("u.repository_id = %s", opts.RepositoryID)) + if opts.RepositoryID == 0 { + return basestore.ScanStrings(s.db.Query(ctx, sqlf.Sprintf(getGlobalIndexersQuery))) } authzConds, err := database.AuthzQueryConds(ctx, database.NewDBWith(s.logger, s.db)) if err != nil { return nil, err } - conds = append(conds, authzConds) - return basestore.ScanStrings(s.db.Query(ctx, sqlf.Sprintf(getIndexersQuery, sqlf.Join(conds, "AND")))) + return basestore.ScanStrings(s.db.Query(ctx, sqlf.Sprintf(getIndexersForRepositoryQuery, opts.RepositoryID, authzConds))) } -const getIndexersQuery = ` +const getGlobalIndexersQuery = ` WITH combined_indexers AS ( - SELECT u.indexer, u.repository_id FROM lsif_uploads u - UNION - SELECT u.indexer, u.repository_id FROM lsif_indexes u + SELECT DISTINCT u.indexer FROM lsif_uploads u + UNION ALL + SELECT DISTINCT u.indexer FROM lsif_indexes u ) SELECT DISTINCT u.indexer FROM combined_indexers u -JOIN repo ON repo.id = u.repository_id -WHERE - %s AND - repo.deleted_at IS NULL AND - repo.blocked IS NULL +ORDER BY u.indexer +` + +const getIndexersForRepositoryQuery = ` +WITH +repo_candidate AS ( + SELECT repo.id + FROM repo + WHERE + repo.id = %s AND + %s AND + repo.deleted_at IS NULL AND + repo.blocked IS NULL +), +combined_indexers AS ( + SELECT DISTINCT u.indexer FROM lsif_uploads u JOIN repo_candidate r ON r.id = u.repository_id + UNION ALL + SELECT DISTINCT u.indexer FROM lsif_indexes u JOIN repo_candidate r ON r.id = u.repository_id +) +SELECT DISTINCT u.indexer +FROM combined_indexers u +ORDER BY u.indexer ` // GetRecentUploadsSummary returns a set of "interesting" uploads for the repository with the given identifeir. diff --git a/internal/database/schema.json b/internal/database/schema.json index 526b10df9b6ba..4ad6fdada6024 100644 --- a/internal/database/schema.json +++ b/internal/database/schema.json @@ -16913,6 +16913,16 @@ "ConstraintType": "", "ConstraintDefinition": "" }, + { + "Name": "lsif_indexes_repository_id_indexer", + "IsPrimaryKey": false, + "IsUnique": false, + "IsExclusion": false, + "IsDeferrable": false, + "IndexDefinition": "CREATE INDEX lsif_indexes_repository_id_indexer ON lsif_indexes USING btree (repository_id, indexer)", + "ConstraintType": "", + "ConstraintDefinition": "" + }, { "Name": "lsif_indexes_state", "IsPrimaryKey": false, @@ -18051,6 +18061,16 @@ "ConstraintType": "", "ConstraintDefinition": "" }, + { + "Name": "lsif_uploads_repository_id_indexer", + "IsPrimaryKey": false, + "IsUnique": false, + "IsExclusion": false, + "IsDeferrable": false, + "IndexDefinition": "CREATE INDEX lsif_uploads_repository_id_indexer ON lsif_uploads USING btree (repository_id, indexer)", + "ConstraintType": "", + "ConstraintDefinition": "" + }, { "Name": "lsif_uploads_state", "IsPrimaryKey": false, diff --git a/internal/database/schema.md b/internal/database/schema.md index d18b71e918770..fe0d134c6928a 100644 --- a/internal/database/schema.md +++ b/internal/database/schema.md @@ -2345,6 +2345,7 @@ Indexes: "lsif_indexes_dequeue_order_idx" btree ((enqueuer_user_id > 0) DESC, queued_at DESC, id) WHERE state = 'queued'::text OR state = 'errored'::text "lsif_indexes_queued_at_id" btree (queued_at DESC, id) "lsif_indexes_repository_id_commit" btree (repository_id, commit) + "lsif_indexes_repository_id_indexer" btree (repository_id, indexer) "lsif_indexes_state" btree (state) Check constraints: "lsif_uploads_commit_valid_chars" CHECK (commit ~ '^[a-z0-9]{40}$'::text) @@ -2573,6 +2574,7 @@ Indexes: "lsif_uploads_committed_at" btree (committed_at) WHERE state = 'completed'::text "lsif_uploads_last_reconcile_at" btree (last_reconcile_at, id) WHERE state = 'completed'::text "lsif_uploads_repository_id_commit" btree (repository_id, commit) + "lsif_uploads_repository_id_indexer" btree (repository_id, indexer) "lsif_uploads_state" btree (state) "lsif_uploads_uploaded_at_id" btree (uploaded_at DESC, id) WHERE state <> 'deleted'::text Check constraints: diff --git a/migrations/frontend/1695152835_add_index_for_upload_indexers/down.sql b/migrations/frontend/1695152835_add_index_for_upload_indexers/down.sql new file mode 100644 index 0000000000000..89dad4d606cbe --- /dev/null +++ b/migrations/frontend/1695152835_add_index_for_upload_indexers/down.sql @@ -0,0 +1 @@ +DROP INDEX IF EXISTS lsif_uploads_repository_id_indexer; diff --git a/migrations/frontend/1695152835_add_index_for_upload_indexers/metadata.yaml b/migrations/frontend/1695152835_add_index_for_upload_indexers/metadata.yaml new file mode 100644 index 0000000000000..60434ff45d2e0 --- /dev/null +++ b/migrations/frontend/1695152835_add_index_for_upload_indexers/metadata.yaml @@ -0,0 +1,3 @@ +name: Add index for indexers +parents: [1691759644, 1693825517] +createIndexConcurrently: true diff --git a/migrations/frontend/1695152835_add_index_for_upload_indexers/up.sql b/migrations/frontend/1695152835_add_index_for_upload_indexers/up.sql new file mode 100644 index 0000000000000..79aafa9945e71 --- /dev/null +++ b/migrations/frontend/1695152835_add_index_for_upload_indexers/up.sql @@ -0,0 +1 @@ +CREATE INDEX CONCURRENTLY IF NOT EXISTS lsif_uploads_repository_id_indexer ON lsif_uploads(repository_id, indexer); diff --git a/migrations/frontend/1695152902_add_index_for_index_indexers/down.sql b/migrations/frontend/1695152902_add_index_for_index_indexers/down.sql new file mode 100644 index 0000000000000..d313dc3a33ebf --- /dev/null +++ b/migrations/frontend/1695152902_add_index_for_index_indexers/down.sql @@ -0,0 +1 @@ +DROP INDEX IF EXISTS lsif_indexes_repository_id_indexer; diff --git a/migrations/frontend/1695152902_add_index_for_index_indexers/metadata.yaml b/migrations/frontend/1695152902_add_index_for_index_indexers/metadata.yaml new file mode 100644 index 0000000000000..232955dfc7a8a --- /dev/null +++ b/migrations/frontend/1695152902_add_index_for_index_indexers/metadata.yaml @@ -0,0 +1,3 @@ +name: Add index for index indexers +parents: [1695152835] +createIndexConcurrently: true diff --git a/migrations/frontend/1695152902_add_index_for_index_indexers/up.sql b/migrations/frontend/1695152902_add_index_for_index_indexers/up.sql new file mode 100644 index 0000000000000..b2638bd9229e7 --- /dev/null +++ b/migrations/frontend/1695152902_add_index_for_index_indexers/up.sql @@ -0,0 +1 @@ +CREATE INDEX CONCURRENTLY IF NOT EXISTS lsif_indexes_repository_id_indexer ON lsif_indexes(repository_id, indexer); diff --git a/migrations/frontend/squashed.sql b/migrations/frontend/squashed.sql index 46e613159c538..28ea7ffa891a8 100644 --- a/migrations/frontend/squashed.sql +++ b/migrations/frontend/squashed.sql @@ -6140,6 +6140,8 @@ CREATE INDEX lsif_indexes_queued_at_id ON lsif_indexes USING btree (queued_at DE CREATE INDEX lsif_indexes_repository_id_commit ON lsif_indexes USING btree (repository_id, commit); +CREATE INDEX lsif_indexes_repository_id_indexer ON lsif_indexes USING btree (repository_id, indexer); + CREATE INDEX lsif_indexes_state ON lsif_indexes USING btree (state); CREATE INDEX lsif_nearest_uploads_links_repository_id_ancestor_commit_bytea ON lsif_nearest_uploads_links USING btree (repository_id, ancestor_commit_bytea); @@ -6174,6 +6176,8 @@ CREATE INDEX lsif_uploads_repository_id_commit ON lsif_uploads USING btree (repo CREATE UNIQUE INDEX lsif_uploads_repository_id_commit_root_indexer ON lsif_uploads USING btree (repository_id, commit, root, indexer) WHERE (state = 'completed'::text); +CREATE INDEX lsif_uploads_repository_id_indexer ON lsif_uploads USING btree (repository_id, indexer); + CREATE INDEX lsif_uploads_state ON lsif_uploads USING btree (state); CREATE INDEX lsif_uploads_uploaded_at_id ON lsif_uploads USING btree (uploaded_at DESC, id) WHERE (state <> 'deleted'::text); From 6d30f1ed1bda51696cc9e533e67685d6f9b609e9 Mon Sep 17 00:00:00 2001 From: Bolaji Olajide <25608335+BolajiOlajide@users.noreply.github.com> Date: Wed, 22 Nov 2023 12:12:17 +0100 Subject: [PATCH 114/222] code-search: update button text for stopping search jobs (#58478) update button text --- .../search-jobs/SearchJobModal/SearchJobModal.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/client/web/src/enterprise/search-jobs/SearchJobModal/SearchJobModal.tsx b/client/web/src/enterprise/search-jobs/SearchJobModal/SearchJobModal.tsx index d83fd427b7a3a..ce287fb44c0a1 100644 --- a/client/web/src/enterprise/search-jobs/SearchJobModal/SearchJobModal.tsx +++ b/client/web/src/enterprise/search-jobs/SearchJobModal/SearchJobModal.tsx @@ -177,8 +177,8 @@ export const CancelSearchJobModal: FC<SearchJobModalProps> = props => { }) return ( - <Modal position="center" aria-label="Delete search job" onDismiss={onDismiss}> - <H2>Do you want to cancel this search job?</H2> + <Modal position="center" aria-label="Stop search job" onDismiss={onDismiss}> + <H2>Do you want to stop this search job?</H2> <Text className="mt-4"> <b>Note:</b> All query runs across all repositories and revisions will be stopped. You can re-run this @@ -191,7 +191,7 @@ export const CancelSearchJobModal: FC<SearchJobModalProps> = props => { <footer className={styles.footer}> <Button variant="secondary" outline={true} onClick={onDismiss}> - Cancel + Close </Button> <Button variant="danger" @@ -201,10 +201,10 @@ export const CancelSearchJobModal: FC<SearchJobModalProps> = props => { > {loading ? ( <> - <LoadingSpinner /> Canceling + <LoadingSpinner /> Stopping </> ) : ( - <>Cancel</> + <>Yes - stop this search job.</> )} </Button> </footer> From add5b18339a0eaedb39ba811e9da14b9ee0f11e9 Mon Sep 17 00:00:00 2001 From: Rok Novosel <rok@sourcegraph.com> Date: Wed, 22 Nov 2023 12:17:34 +0100 Subject: [PATCH 115/222] cody web: evaluate the mock feature flag (#58486) --- client/web/src/cody/chat/CodyChatPage.tsx | 4 ++++ client/web/src/featureFlags/featureFlags.ts | 1 + 2 files changed, 5 insertions(+) diff --git a/client/web/src/cody/chat/CodyChatPage.tsx b/client/web/src/cody/chat/CodyChatPage.tsx index 1a2bbfc179a43..80a3b6f4d6a5e 100644 --- a/client/web/src/cody/chat/CodyChatPage.tsx +++ b/client/web/src/cody/chat/CodyChatPage.tsx @@ -39,6 +39,7 @@ import { import { MarketingBlock } from '../../components/MarketingBlock' import { Page } from '../../components/Page' import { PageTitle } from '../../components/PageTitle' +import { useFeatureFlag } from '../../featureFlags/useFeatureFlag' import type { SourcegraphContext } from '../../jscontext' import { EventName } from '../../util/constants' import { ChatUI } from '../components/ChatUI' @@ -98,6 +99,9 @@ export const CodyChatPage: React.FunctionComponent<CodyChatPageProps> = ({ const { pathname } = useLocation() const navigate = useNavigate() + // Evaluate a mock feature flag for the purpose of an A/A test. No functionality is affected by this flag. + const [_codyChatMockTestValue] = useFeatureFlag('cody-chat-mock-test') + const codyChatStore = useCodyChat({ userID: authenticatedUser?.id, onTranscriptHistoryLoad, diff --git a/client/web/src/featureFlags/featureFlags.ts b/client/web/src/featureFlags/featureFlags.ts index e048cfb148803..90e0b96ab5791 100644 --- a/client/web/src/featureFlags/featureFlags.ts +++ b/client/web/src/featureFlags/featureFlags.ts @@ -32,6 +32,7 @@ export const FEATURE_FLAGS = [ 'search-content-based-lang-detection', 'search-new-keyword', 'search-debug', + 'cody-chat-mock-test', 'signup-survey-enabled', ] as const From b44b8a2a60d556c28cc6d9a07bff2faba230a3f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Gajdulewicz?= <rafax@users.noreply.github.com> Date: Wed, 22 Nov 2023 12:58:15 +0100 Subject: [PATCH 116/222] Propagate retry-after for upstream 503 (#58467) * Propagate retry-after for upstream 503 * Update cmd/cody-gateway/internal/httpapi/completions/upstream.go Co-authored-by: Robert Lin <robert@bobheadxi.dev> --------- Co-authored-by: Robert Lin <robert@bobheadxi.dev> --- cmd/cody-gateway/internal/httpapi/completions/upstream.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cmd/cody-gateway/internal/httpapi/completions/upstream.go b/cmd/cody-gateway/internal/httpapi/completions/upstream.go index c6e181ea2d2c0..40e2c55d3e3e6 100644 --- a/cmd/cody-gateway/internal/httpapi/completions/upstream.go +++ b/cmd/cody-gateway/internal/httpapi/completions/upstream.go @@ -352,6 +352,11 @@ func makeUpstreamHandler[ReqT UpstreamRequest]( log.Error(errors.New(resp.Status)), // real error needed for Sentry reporting log.String("resp.headers", headers.String())) resolvedStatusCode = http.StatusServiceUnavailable + } + + // This handles upstream 429 responses as well, since they get + // resolved to http.StatusServiceUnavailable. + if resolvedStatusCode == http.StatusServiceUnavailable { // Propagate retry-after in case it is handle-able by the client, // or write our default. 503 errors can have retry-after as well. if upstreamRetryAfter := resp.Header.Get("retry-after"); upstreamRetryAfter != "" { From 7aa9394961cea17e967d5e23e70ea0f73d7a102a Mon Sep 17 00:00:00 2001 From: Peter Guy <peter.guy@sourcegraph.com> Date: Wed, 22 Nov 2023 07:55:21 -0800 Subject: [PATCH 117/222] clarify wording for error message (#58501) clarify wording for error message. There is another error message with the sme wording, so debugging can be confusing. --- internal/database/sub_repo_perms_store.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/database/sub_repo_perms_store.go b/internal/database/sub_repo_perms_store.go index 1b02aa6834323..b1d2891355513 100644 --- a/internal/database/sub_repo_perms_store.go +++ b/internal/database/sub_repo_perms_store.go @@ -199,7 +199,7 @@ WHERE user_id = %s rows, err := s.Query(ctx, q) if err != nil { - return nil, errors.Wrap(err, "getting sub repo permissions by user") + return nil, errors.Wrap(err, "getting sub repo permissions by user and service") } result := make(map[api.ExternalRepoSpec]authz.SubRepoPermissions) From f8050c0f6b67f8f372124bbc18186bcdd759b650 Mon Sep 17 00:00:00 2001 From: Alex Isken <alex.isken@sourcegraph.com> Date: Wed, 22 Nov 2023 11:24:53 -0600 Subject: [PATCH 118/222] Update marketing homepage links from PCS (#58473) Update links in the dotcom app. --- client/web/src/nav/GlobalNavbar.tsx | 2 +- client/web/src/nav/UserNavItem.tsx | 7 +------ .../web/src/storm/pages/SearchPage/SearchPageFooter.tsx | 8 ++++---- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/client/web/src/nav/GlobalNavbar.tsx b/client/web/src/nav/GlobalNavbar.tsx index 42123e36a8bbf..4123e6048dfbb 100644 --- a/client/web/src/nav/GlobalNavbar.tsx +++ b/client/web/src/nav/GlobalNavbar.tsx @@ -428,7 +428,7 @@ export const InlineNavigationPanel: FC<InlineNavigationPanelProps> = props => { )} {isSourcegraphDotCom && ( <NavItem> - <NavLink variant={navLinkVariant} to="https://about.sourcegraph.com" external={true}> + <NavLink variant={navLinkVariant} to="https://sourcegraph.com" external={true}> About Sourcegraph </NavLink> </NavItem> diff --git a/client/web/src/nav/UserNavItem.tsx b/client/web/src/nav/UserNavItem.tsx index d62a67cbc553b..9a3c4f2306e38 100644 --- a/client/web/src/nav/UserNavItem.tsx +++ b/client/web/src/nav/UserNavItem.tsx @@ -252,12 +252,7 @@ export const UserNavItem: FC<UserNavItemProps> = props => { {isSourcegraphDotCom && <MenuDivider className={styles.dropdownDivider} />} {isSourcegraphDotCom && ( - <MenuLink - as={AnchorLink} - to="https://about.sourcegraph.com" - target="_blank" - rel="noopener" - > + <MenuLink as={AnchorLink} to="https://sourcegraph.com" target="_blank" rel="noopener"> About Sourcegraph <Icon aria-hidden={true} svgPath={mdiOpenInNew} /> </MenuLink> )} diff --git a/client/web/src/storm/pages/SearchPage/SearchPageFooter.tsx b/client/web/src/storm/pages/SearchPage/SearchPageFooter.tsx index ceecbf9d6d57a..8d747f4f6abb4 100644 --- a/client/web/src/storm/pages/SearchPage/SearchPageFooter.tsx +++ b/client/web/src/storm/pages/SearchPage/SearchPageFooter.tsx @@ -23,18 +23,18 @@ export const SearchPageFooter: FC = () => { name: 'Docs', href: 'https://docs.sourcegraph.com/', }, - { name: 'About', href: 'https://about.sourcegraph.com' }, + { name: 'About', href: 'https://sourcegraph.com' }, { name: 'Cody', - href: 'https://about.sourcegraph.com/cody', + href: 'https://sourcegraph.com/cody', }, { name: 'Enterprise', - href: 'https://about.sourcegraph.com/get-started?t=enterprise', + href: 'https://sourcegraph.com/get-started?t=enterprise', }, { name: 'Security', - href: 'https://about.sourcegraph.com/security', + href: 'https://sourcegraph.com/security', }, { name: 'Discord', href: 'https://srcgr.ph/discord-server' }, ] From 352ec2c2f02ab70d5f2661652a8aec6d6728bfd6 Mon Sep 17 00:00:00 2001 From: Robert Lin <robert@bobheadxi.dev> Date: Wed, 22 Nov 2023 12:09:39 -0800 Subject: [PATCH 119/222] requestinteraction: add X-Sourcegraph-Interaction-ID propagation (#58016) This change allows clients to provide an interaction ID, essentially a trace but maybe simpler for some scenarios, and have that be propagated throughout Sourcegraph systems implicitly. We can automatically add this to events (telemetry V2 and Cody Gateway). The implementation closely follows the patterns we have for `internal/requestclient` and `internal/actor` If we land this mechanism, I'll follow up with an change that automatically injects these IDs into telemetry events within a context as well. If clients send a bunch of completion requests to the backend with this header, the interaction ID will automatically be added to the completion events recorded by the backend, like [these ones](https://sourcegraph.com/search?q=context:global+repo:sourcegraph/sourcegraph+.Record(...,+%22cody.completions%22,+...)&patternType=structural&sm=1&groupBy=repo), and any future events. Similarly, if clients set this header on outbound requests when recording events in the new telemetry (go/telemetry-v2), they'll get added as well - we can also consider adding an interaction ID as an explicit argument in the `recordEvent` GraphQL mutation to take precedence over the context interaction ID. --- cmd/cody-gateway/shared/BUILD.bazel | 1 + cmd/cody-gateway/shared/main.go | 2 + cmd/frontend/internal/cli/BUILD.bazel | 1 + cmd/frontend/internal/cli/http.go | 3 ++ cmd/gitserver/shared/BUILD.bazel | 1 + cmd/gitserver/shared/shared.go | 2 + internal/actor/http.go | 6 +++ internal/grpc/defaults/BUILD.bazel | 1 + internal/grpc/defaults/defaults.go | 5 ++ internal/httpcli/BUILD.bazel | 1 + internal/httpcli/client.go | 16 +++++++ internal/requestclient/http.go | 3 ++ internal/requestinteraction/BUILD.bazel | 17 +++++++ internal/requestinteraction/client.go | 38 +++++++++++++++ internal/requestinteraction/grpc.go | 35 ++++++++++++++ internal/requestinteraction/http.go | 48 +++++++++++++++++++ .../v1/telemetrygateway.proto | 2 + 17 files changed, 182 insertions(+) create mode 100644 internal/requestinteraction/BUILD.bazel create mode 100644 internal/requestinteraction/client.go create mode 100644 internal/requestinteraction/grpc.go create mode 100644 internal/requestinteraction/http.go diff --git a/cmd/cody-gateway/shared/BUILD.bazel b/cmd/cody-gateway/shared/BUILD.bazel index db238427a38ed..867c2f51ebc0d 100644 --- a/cmd/cody-gateway/shared/BUILD.bazel +++ b/cmd/cody-gateway/shared/BUILD.bazel @@ -34,6 +34,7 @@ go_library( "//internal/rcache", "//internal/redispool", "//internal/requestclient", + "//internal/requestinteraction", "//internal/service", "//internal/trace", "//internal/trace/policy", diff --git a/cmd/cody-gateway/shared/main.go b/cmd/cody-gateway/shared/main.go index a4f947cd34f7e..41294e465f04d 100644 --- a/cmd/cody-gateway/shared/main.go +++ b/cmd/cody-gateway/shared/main.go @@ -32,6 +32,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/rcache" "github.com/sourcegraph/sourcegraph/internal/redispool" "github.com/sourcegraph/sourcegraph/internal/requestclient" + "github.com/sourcegraph/sourcegraph/internal/requestinteraction" "github.com/sourcegraph/sourcegraph/internal/service" "github.com/sourcegraph/sourcegraph/internal/trace" "github.com/sourcegraph/sourcegraph/internal/version" @@ -179,6 +180,7 @@ func Main(ctx context.Context, obctx *observation.Context, ready service.ReadyFu // Cloudflare in from of Cody Gateway. This comes first. hasCloudflare := !config.InsecureDev handler = requestclient.ExternalHTTPMiddleware(handler, hasCloudflare) + handler = requestinteraction.HTTPMiddleware(handler) // Initialize our server address := fmt.Sprintf(":%d", config.Port) diff --git a/cmd/frontend/internal/cli/BUILD.bazel b/cmd/frontend/internal/cli/BUILD.bazel index bbf521acbc01b..cbb9dd24f804f 100644 --- a/cmd/frontend/internal/cli/BUILD.bazel +++ b/cmd/frontend/internal/cli/BUILD.bazel @@ -69,6 +69,7 @@ go_library( "//internal/oobmigration/migrations/register", "//internal/redispool", "//internal/requestclient", + "//internal/requestinteraction", "//internal/service", "//internal/session", "//internal/symbols", diff --git a/cmd/frontend/internal/cli/http.go b/cmd/frontend/internal/cli/http.go index dc366471b581c..795657c2141e9 100644 --- a/cmd/frontend/internal/cli/http.go +++ b/cmd/frontend/internal/cli/http.go @@ -30,6 +30,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/featureflag" "github.com/sourcegraph/sourcegraph/internal/instrumentation" "github.com/sourcegraph/sourcegraph/internal/requestclient" + "github.com/sourcegraph/sourcegraph/internal/requestinteraction" "github.com/sourcegraph/sourcegraph/internal/session" tracepkg "github.com/sourcegraph/sourcegraph/internal/trace" "github.com/sourcegraph/sourcegraph/internal/version" @@ -69,6 +70,7 @@ func newExternalHTTPHandler( apiHandler = session.CookieMiddlewareWithCSRFSafety(logger, db, apiHandler, corsAllowHeader, isTrustedOrigin) // API accepts cookies with special header apiHandler = httpapi.AccessTokenAuthMiddleware(db, logger, apiHandler) // API accepts access tokens apiHandler = requestclient.ExternalHTTPMiddleware(apiHandler, envvar.SourcegraphDotComMode()) + apiHandler = requestinteraction.HTTPMiddleware(apiHandler) apiHandler = gziphandler.GzipHandler(apiHandler) if envvar.SourcegraphDotComMode() { apiHandler = deviceid.Middleware(apiHandler) @@ -92,6 +94,7 @@ func newExternalHTTPHandler( appHandler = session.CookieMiddleware(logger, db, appHandler) // app accepts cookies appHandler = httpapi.AccessTokenAuthMiddleware(db, logger, appHandler) // app accepts access tokens appHandler = requestclient.ExternalHTTPMiddleware(appHandler, envvar.SourcegraphDotComMode()) + appHandler = requestinteraction.HTTPMiddleware(appHandler) if envvar.SourcegraphDotComMode() { appHandler = deviceid.Middleware(appHandler) } diff --git a/cmd/gitserver/shared/BUILD.bazel b/cmd/gitserver/shared/BUILD.bazel index 9d7275e269c27..d5eaf39542f7b 100644 --- a/cmd/gitserver/shared/BUILD.bazel +++ b/cmd/gitserver/shared/BUILD.bazel @@ -42,6 +42,7 @@ go_library( "//internal/observation", "//internal/ratelimit", "//internal/requestclient", + "//internal/requestinteraction", "//internal/service", "//internal/trace", "//internal/wrexec", diff --git a/cmd/gitserver/shared/shared.go b/cmd/gitserver/shared/shared.go index 079fed34b989c..11555067da0b7 100644 --- a/cmd/gitserver/shared/shared.go +++ b/cmd/gitserver/shared/shared.go @@ -45,6 +45,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/observation" "github.com/sourcegraph/sourcegraph/internal/ratelimit" "github.com/sourcegraph/sourcegraph/internal/requestclient" + "github.com/sourcegraph/sourcegraph/internal/requestinteraction" "github.com/sourcegraph/sourcegraph/internal/service" "github.com/sourcegraph/sourcegraph/internal/trace" "github.com/sourcegraph/sourcegraph/internal/wrexec" @@ -138,6 +139,7 @@ func Main(ctx context.Context, observationCtx *observation.Context, ready servic handler := gitserver.Handler() handler = actor.HTTPMiddleware(logger, handler) handler = requestclient.InternalHTTPMiddleware(handler) + handler = requestinteraction.HTTPMiddleware(handler) handler = trace.HTTPMiddleware(logger, handler, conf.DefaultClient()) handler = instrumentation.HTTPMiddleware("", handler) handler = internalgrpc.MultiplexHandlers(makeGRPCServer(logger, &gitserver), handler) diff --git a/internal/actor/http.go b/internal/actor/http.go index a008fc64df464..fc301947bba4e 100644 --- a/internal/actor/http.go +++ b/internal/actor/http.go @@ -60,6 +60,8 @@ var ( // // šŸšØ SECURITY: Wherever possible, prefer to act in the context of a specific user rather // than as an internal actor, which can grant a lot of access in some cases. +// +// TODO(@bobheadxi): Migrate to httpcli.Doer and httpcli.Middleware type HTTPTransport struct { RoundTripper http.RoundTripper } @@ -72,6 +74,10 @@ func (t *HTTPTransport) RoundTrip(req *http.Request) (*http.Response, error) { t.RoundTripper = http.DefaultTransport } + // RoundTripper should not modify original request. All the code paths + // below set a header, so we clone the request immediately. + req = req.Clone(req.Context()) + actor := FromContext(req.Context()) path := getCondensedURLPath(req.URL.Path) switch { diff --git a/internal/grpc/defaults/BUILD.bazel b/internal/grpc/defaults/BUILD.bazel index 852e0d88dbd54..154e721c4048f 100644 --- a/internal/grpc/defaults/BUILD.bazel +++ b/internal/grpc/defaults/BUILD.bazel @@ -17,6 +17,7 @@ go_library( "//internal/grpc/messagesize", "//internal/grpc/propagator", "//internal/requestclient", + "//internal/requestinteraction", "//internal/trace/policy", "//internal/ttlcache", "//lib/errors", diff --git a/internal/grpc/defaults/defaults.go b/internal/grpc/defaults/defaults.go index c1ee943539cb3..eb9d1a56012f3 100644 --- a/internal/grpc/defaults/defaults.go +++ b/internal/grpc/defaults/defaults.go @@ -20,6 +20,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/grpc/contextconv" "github.com/sourcegraph/sourcegraph/internal/grpc/messagesize" + "github.com/sourcegraph/sourcegraph/internal/requestinteraction" "github.com/sourcegraph/sourcegraph/internal/actor" internalgrpc "github.com/sourcegraph/sourcegraph/internal/grpc" @@ -80,6 +81,7 @@ func defaultDialOptions(logger log.Logger, creds credentials.TransportCredential propagator.StreamClientPropagator(actor.ActorPropagator{}), propagator.StreamClientPropagator(policy.ShouldTracePropagator{}), propagator.StreamClientPropagator(requestclient.Propagator{}), + propagator.StreamClientPropagator(requestinteraction.Propagator{}), otelgrpc.StreamClientInterceptor(), internalerrs.PrometheusStreamClientInterceptor, internalerrs.LoggingStreamClientInterceptor(logger), @@ -91,6 +93,7 @@ func defaultDialOptions(logger log.Logger, creds credentials.TransportCredential propagator.UnaryClientPropagator(actor.ActorPropagator{}), propagator.UnaryClientPropagator(policy.ShouldTracePropagator{}), propagator.UnaryClientPropagator(requestclient.Propagator{}), + propagator.UnaryClientPropagator(requestinteraction.Propagator{}), otelgrpc.UnaryClientInterceptor(), internalerrs.PrometheusUnaryClientInterceptor, internalerrs.LoggingUnaryClientInterceptor(logger), @@ -137,6 +140,7 @@ func ServerOptions(logger log.Logger, additionalOptions ...grpc.ServerOption) [] metrics.StreamServerInterceptor(), messagesize.StreamServerInterceptor, propagator.StreamServerPropagator(requestclient.Propagator{}), + propagator.StreamServerPropagator(requestinteraction.Propagator{}), propagator.StreamServerPropagator(actor.ActorPropagator{}), propagator.StreamServerPropagator(policy.ShouldTracePropagator{}), otelgrpc.StreamServerInterceptor(), @@ -148,6 +152,7 @@ func ServerOptions(logger log.Logger, additionalOptions ...grpc.ServerOption) [] metrics.UnaryServerInterceptor(), messagesize.UnaryServerInterceptor, propagator.UnaryServerPropagator(requestclient.Propagator{}), + propagator.UnaryServerPropagator(requestinteraction.Propagator{}), propagator.UnaryServerPropagator(actor.ActorPropagator{}), propagator.UnaryServerPropagator(policy.ShouldTracePropagator{}), otelgrpc.UnaryServerInterceptor(), diff --git a/internal/httpcli/BUILD.bazel b/internal/httpcli/BUILD.bazel index a8f9d84c49d87..b418b5d72b6fb 100644 --- a/internal/httpcli/BUILD.bazel +++ b/internal/httpcli/BUILD.bazel @@ -22,6 +22,7 @@ go_library( "//internal/metrics", "//internal/rcache", "//internal/requestclient", + "//internal/requestinteraction", "//internal/trace", "//internal/trace/policy", "//internal/types", diff --git a/internal/httpcli/client.go b/internal/httpcli/client.go index 6d194c2e8c43c..104568a53d0d7 100644 --- a/internal/httpcli/client.go +++ b/internal/httpcli/client.go @@ -29,6 +29,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/metrics" "github.com/sourcegraph/sourcegraph/internal/rcache" "github.com/sourcegraph/sourcegraph/internal/requestclient" + "github.com/sourcegraph/sourcegraph/internal/requestinteraction" "github.com/sourcegraph/sourcegraph/internal/trace" "github.com/sourcegraph/sourcegraph/internal/trace/policy" "github.com/sourcegraph/sourcegraph/lib/errors" @@ -144,6 +145,7 @@ func newExternalClientFactory(cache bool, middleware ...Middleware) *Factory { NewRetryPolicy(MaxRetries(externalRetryMaxAttempts), externalRetryAfterMaxDuration), ExpJitterDelayOrRetryAfterDelay(externalRetryDelayBase, externalRetryDelayMax), ), + RequestInteractionTransportOpt, TracedTransportOpt, } if cache { @@ -212,6 +214,7 @@ func NewInternalClientFactory(subsystem string, middleware ...Middleware) *Facto MeteredTransportOpt(subsystem), ActorTransportOpt, RequestClientTransportOpt, + RequestInteractionTransportOpt, TracedTransportOpt, ) } @@ -840,6 +843,19 @@ func RequestClientTransportOpt(cli *http.Client) error { return nil } +func RequestInteractionTransportOpt(cli *http.Client) error { + if cli.Transport == nil { + cli.Transport = http.DefaultTransport + } + + cli.Transport = &wrappedTransport{ + RoundTripper: &requestinteraction.HTTPTransport{RoundTripper: cli.Transport}, + Wrapped: cli.Transport, + } + + return nil +} + // IsRiskyHeader returns true if the request or response header is likely to contain private data. func IsRiskyHeader(name string, values []string) bool { return isRiskyHeaderName(name) || containsRiskyHeaderValue(values) diff --git a/internal/requestclient/http.go b/internal/requestclient/http.go index d8a1123d00053..a06b6036a7cd6 100644 --- a/internal/requestclient/http.go +++ b/internal/requestclient/http.go @@ -20,6 +20,8 @@ const ( // HTTPTransport is a roundtripper that sets client IP information within request context as // headers on outgoing requests. The attached headers can be picked up and attached to // incoming request contexts with client.HTTPMiddleware. +// +// TODO(@bobheadxi): Migrate to httpcli.Doer and httpcli.Middleware type HTTPTransport struct { RoundTripper http.RoundTripper } @@ -33,6 +35,7 @@ func (t *HTTPTransport) RoundTrip(req *http.Request) (*http.Response, error) { client := FromContext(req.Context()) if client != nil { + req = req.Clone(req.Context()) // RoundTripper should not modify original request req.Header.Set(headerKeyClientIP, client.IP) req.Header.Set(headerKeyForwardedFor, client.ForwardedFor) } diff --git a/internal/requestinteraction/BUILD.bazel b/internal/requestinteraction/BUILD.bazel new file mode 100644 index 0000000000000..d6aee25f6a3ee --- /dev/null +++ b/internal/requestinteraction/BUILD.bazel @@ -0,0 +1,17 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "requestinteraction", + srcs = [ + "client.go", + "grpc.go", + "http.go", + ], + importpath = "github.com/sourcegraph/sourcegraph/internal/requestinteraction", + visibility = ["//:__subpackages__"], + deps = [ + "//internal/grpc/propagator", + "@com_github_sourcegraph_log//:log", + "@org_golang_google_grpc//metadata", + ], +) diff --git a/internal/requestinteraction/client.go b/internal/requestinteraction/client.go new file mode 100644 index 0000000000000..df2c5bb830944 --- /dev/null +++ b/internal/requestinteraction/client.go @@ -0,0 +1,38 @@ +package requestinteraction + +import ( + "context" + + "github.com/sourcegraph/log" +) + +type requestInteractionKey struct{} + +// Interaction carries information about the interaction associated with a +// request - a sort of manually instrumented trace. +type Interaction struct { + // ID identifies the interaction + ID string +} + +func FromContext(ctx context.Context) *Interaction { + ip, ok := ctx.Value(requestInteractionKey{}).(*Interaction) + if !ok || ip == nil { + return nil + } + return ip +} + +// WithClient adds client IP information to context for propagation. +func WithClient(ctx context.Context, client *Interaction) context.Context { + return context.WithValue(ctx, requestInteractionKey{}, client) +} + +func (c *Interaction) LogFields() []log.Field { + if c == nil { + return []log.Field{log.String("requestInteraction", "<nil>")} + } + return []log.Field{ + log.String("requestInteraction.id", c.ID), + } +} diff --git a/internal/requestinteraction/grpc.go b/internal/requestinteraction/grpc.go new file mode 100644 index 0000000000000..7b05214d97d18 --- /dev/null +++ b/internal/requestinteraction/grpc.go @@ -0,0 +1,35 @@ +package requestinteraction + +import ( + "context" + + "google.golang.org/grpc/metadata" + + internalgrpc "github.com/sourcegraph/sourcegraph/internal/grpc/propagator" +) + +type Propagator struct{} + +func (Propagator) FromContext(ctx context.Context) metadata.MD { + interaction := FromContext(ctx) + if interaction == nil { + return metadata.New(nil) + } + + return metadata.Pairs( + headerKeyInteractionID, interaction.ID, + ) +} + +func (Propagator) InjectContext(ctx context.Context, md metadata.MD) context.Context { + if vals := md.Get(headerKeyInteractionID); len(vals) > 0 { + id := vals[0] + return WithClient(ctx, &Interaction{ + ID: id, + }) + } + + return ctx +} + +var _ internalgrpc.Propagator = Propagator{} diff --git a/internal/requestinteraction/http.go b/internal/requestinteraction/http.go new file mode 100644 index 0000000000000..32f947bfd2581 --- /dev/null +++ b/internal/requestinteraction/http.go @@ -0,0 +1,48 @@ +package requestinteraction + +import ( + "net/http" +) + +const ( + // Sourcegraph-specific header key for propagating an interaction ID. + headerKeyInteractionID = "X-Sourcegraph-Interaction-ID" +) + +// TODO(@bobheadxi): Migrate to httpcli.Doer and httpcli.Middleware +type HTTPTransport struct { + RoundTripper http.RoundTripper +} + +var _ http.RoundTripper = &HTTPTransport{} + +func (t *HTTPTransport) RoundTrip(req *http.Request) (*http.Response, error) { + if t.RoundTripper == nil { + t.RoundTripper = http.DefaultTransport + } + + interaction := FromContext(req.Context()) + if interaction != nil { + req = req.Clone(req.Context()) // RoundTripper should not modify original request + req.Header.Set(headerKeyInteractionID, interaction.ID) + } + + return t.RoundTripper.RoundTrip(req) +} + +func HTTPMiddleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { + interactionID := req.Header.Get(headerKeyInteractionID) + + // If empty, nothing to do, just pass through + if interactionID == "" { + next.ServeHTTP(rw, req) + return + } + + ctxWithClient := WithClient(req.Context(), &Interaction{ + ID: interactionID, + }) + next.ServeHTTP(rw, req.WithContext(ctxWithClient)) + }) +} diff --git a/internal/telemetrygateway/v1/telemetrygateway.proto b/internal/telemetrygateway/v1/telemetrygateway.proto index 73ae796841b84..5a9364733d7af 100644 --- a/internal/telemetrygateway/v1/telemetrygateway.proto +++ b/internal/telemetrygateway/v1/telemetrygateway.proto @@ -204,4 +204,6 @@ message EventMarketingTracking { message EventInteraction { // OpenTelemetry trace ID representing the interaction associated with the event. optional string trace_id = 1; + // Reserve entry for client-provided interaction ID in follow-up change. + reserved 2; } From c7f7460061f3d058a5d9c28ab422c425ffa8ade8 Mon Sep 17 00:00:00 2001 From: Dax McDonald <dax@sourcegraph.com> Date: Wed, 22 Nov 2023 15:08:30 -0700 Subject: [PATCH 120/222] Remove centralized observability deps (#58484) * Remove centralized observability deps * Update generated file --- doc/admin/observability/dashboards.md | 78 +++----------------- docker-images/prometheus-gcp/BUILD.bazel | 56 -------------- docker-images/prometheus-gcp/Dockerfile | 74 ------------------- docker-images/prometheus-gcp/README.md | 9 --- docker-images/prometheus-gcp/build.sh | 39 ---------- docker-images/prometheus-gcp/image_test.yaml | 67 ----------------- monitoring/definitions/prometheus.go | 49 ------------ 7 files changed, 10 insertions(+), 362 deletions(-) delete mode 100644 docker-images/prometheus-gcp/BUILD.bazel delete mode 100644 docker-images/prometheus-gcp/Dockerfile delete mode 100644 docker-images/prometheus-gcp/README.md delete mode 100755 docker-images/prometheus-gcp/build.sh delete mode 100644 docker-images/prometheus-gcp/image_test.yaml diff --git a/doc/admin/observability/dashboards.md b/doc/admin/observability/dashboards.md index 235a93ef89023..75a970936d3bc 100644 --- a/doc/admin/observability/dashboards.md +++ b/doc/admin/observability/dashboards.md @@ -22566,64 +22566,6 @@ Query: `increase(prometheus_target_scrapes_sample_duplicate_timestamp_total[10m] <br /> -### Prometheus: Google Managed Prometheus (only available for `sourcegraph/prometheus-gcp`) - -#### prometheus: samples_exported - -<p class="subtitle">Samples exported to GMP every 5m</p> - -A high value indicates that large numbers of samples are being exported, potentially impacting costs. -In [Sourcegraph Cloud centralized observability](https://handbook.sourcegraph.com/departments/cloud/technical-docs/observability/), high values can be investigated by: - -- going to per-instance self-hosted dashboards for Prometheus in (Internals -> Metrics cardinality). -- querying for `monitoring_googleapis_com:billing_samples_ingested`, for example: - -``` -topk(10, sum by(metric_type, project_id) (rate(monitoring_googleapis_com:billing_samples_ingested[1h]))) -``` - -This is required because GMP does not allow queries aggregating on `__name__` - -See [Anthos metrics](https://cloud.google.com/monitoring/api/metrics_anthos) for more details about `gcm_export_samples_sent_total`. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100300` on your Sourcegraph instance. - -<sub>*Managed by the [Sourcegraph Cloud team](https://handbook.sourcegraph.com/departments/cloud).*</sub> - -<details> -<summary>Technical details</summary> - -Query: `rate(gcm_export_samples_sent_total[5m])` - -</details> - -<br /> - -#### prometheus: pending_exports - -<p class="subtitle">Samples pending export to GMP per minute</p> - -A high value indicates exports are taking a long time. - -See [`gmc_*` Anthos metrics](https://cloud.google.com/monitoring/api/metrics_anthos) for more details about `gcm_export_pending_requests`. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100301` on your Sourcegraph instance. - -<sub>*Managed by the [Sourcegraph Cloud team](https://handbook.sourcegraph.com/departments/cloud).*</sub> - -<details> -<summary>Technical details</summary> - -Query: `sum_over_time(gcm_export_pending_requests[1m])` - -</details> - -<br /> - ### Prometheus: Container monitoring (not available on server) #### prometheus: container_missing @@ -22642,7 +22584,7 @@ value change independent of deployment events (such as an upgrade), it could ind This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100400` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100300` on your Sourcegraph instance. <sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> @@ -22661,7 +22603,7 @@ Query: `count by(name) ((time() - container_last_seen{name=~"^prometheus.*"}) > Refer to the [alerts reference](./alerts.md#prometheus-container-cpu-usage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100401` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100301` on your Sourcegraph instance. <sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> @@ -22680,7 +22622,7 @@ Query: `cadvisor_container_cpu_usage_percentage_total{name=~"^prometheus.*"}` Refer to the [alerts reference](./alerts.md#prometheus-container-memory-usage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100402` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100302` on your Sourcegraph instance. <sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> @@ -22702,7 +22644,7 @@ When extremely high, this can indicate a resource usage problem, or can cause pr This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100403` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100303` on your Sourcegraph instance. <sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> @@ -22723,7 +22665,7 @@ Query: `sum by(name) (rate(container_fs_reads_total{name=~"^prometheus.*"}[1h]) Refer to the [alerts reference](./alerts.md#prometheus-provisioning-container-cpu-usage-long-term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100500` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100400` on your Sourcegraph instance. <sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> @@ -22742,7 +22684,7 @@ Query: `quantile_over_time(0.9, cadvisor_container_cpu_usage_percentage_total{na Refer to the [alerts reference](./alerts.md#prometheus-provisioning-container-memory-usage-long-term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100501` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100401` on your Sourcegraph instance. <sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> @@ -22761,7 +22703,7 @@ Query: `max_over_time(cadvisor_container_memory_usage_percentage_total{name=~"^p Refer to the [alerts reference](./alerts.md#prometheus-provisioning-container-cpu-usage-short-term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100510` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100410` on your Sourcegraph instance. <sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> @@ -22780,7 +22722,7 @@ Query: `max_over_time(cadvisor_container_cpu_usage_percentage_total{name=~"^prom Refer to the [alerts reference](./alerts.md#prometheus-provisioning-container-memory-usage-short-term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100511` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100411` on your Sourcegraph instance. <sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> @@ -22802,7 +22744,7 @@ When it occurs frequently, it is an indicator of underprovisioning. Refer to the [alerts reference](./alerts.md#prometheus-container-oomkill-events-total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100512` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100412` on your Sourcegraph instance. <sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> @@ -22823,7 +22765,7 @@ Query: `max by (name) (container_oom_events_total{name=~"^prometheus.*"})` Refer to the [alerts reference](./alerts.md#prometheus-pods-available-percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100600` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/prometheus/prometheus?viewPanel=100500` on your Sourcegraph instance. <sub>*Managed by the [Sourcegraph Cloud DevOps team](https://handbook.sourcegraph.com/departments/engineering/teams/devops).*</sub> diff --git a/docker-images/prometheus-gcp/BUILD.bazel b/docker-images/prometheus-gcp/BUILD.bazel deleted file mode 100644 index 18f92ce4c2d52..0000000000000 --- a/docker-images/prometheus-gcp/BUILD.bazel +++ /dev/null @@ -1,56 +0,0 @@ -load("@rules_oci//oci:defs.bzl", "oci_image", "oci_push", "oci_tarball") -load("@rules_pkg//:pkg.bzl", "pkg_tar") -load("//dev:oci_defs.bzl", "image_repository") -load("@container_structure_test//:defs.bzl", "container_structure_test") - -pkg_tar( - name = "config_tar", - srcs = [ - "//dev/prometheus:prometheus_targets_linux", - "//docker-images/prometheus:startup_scripts", - "//docker-images/prometheus/cmd/prom-wrapper", - "//docker-images/prometheus/config:base_config", - "//monitoring:generate_config", - ], - remap_paths = { - # TODO: This underscore is required - fix - "docker-images/prometheus/cmd/prom-wrapper/prom-wrapper_/prom-wrapper": "/bin/prom-wrapper", - "monitoring/outputs/prometheus": "/sg_config_prometheus", - "/dev/prometheus/linux": "/sg_prometheus_add_ons", - "docker-images/prometheus/alertmanager.sh": "/alertmanager.sh", - "docker-images/prometheus/prometheus.sh": "/prometheus.sh", - }, - strip_prefix = ".", -) - -oci_image( - name = "image", - base = "@wolfi_prometheus_gcp_base", - entrypoint = ["/bin/prom-wrapper"], - tars = [":config_tar"], - user = "sourcegraph", -) - -oci_tarball( - name = "image_tarball", - image = ":image", - repo_tags = ["prometheus-gcp:candidate"], -) - -container_structure_test( - name = "image_test", - timeout = "short", - configs = ["image_test.yaml"], - driver = "docker", - image = ":image", - tags = [ - "exclusive", - "requires-network", - ], -) - -oci_push( - name = "candidate_push", - image = ":image", - repository = image_repository("prometheus-gcp"), -) diff --git a/docker-images/prometheus-gcp/Dockerfile b/docker-images/prometheus-gcp/Dockerfile deleted file mode 100644 index c4a3d0fe43b05..0000000000000 --- a/docker-images/prometheus-gcp/Dockerfile +++ /dev/null @@ -1,74 +0,0 @@ -# sourcegraph/prometheus-gcp - learn more about this image in https://docs.sourcegraph.com/dev/background-information/observability/prometheus - -FROM gke.gcr.io/prometheus-engine/prometheus:v2.35.0-gmp.2-gke.0 AS prom_upstream -FROM prom/alertmanager:v0.25.0@sha256:db8303fa05341f5dc6b19b36a97325cd1b8307254ed9042a2c554af71f3c0284 AS am_upstream - -# Prepare final image -# hadolint ignore=DL3007 -FROM quay.io/prometheus/busybox-linux-amd64:latest - -# Should reflect versions above -LABEL com.sourcegraph.prometheus.version=v2.38.0 -LABEL com.sourcegraph.alertmanager.version=v0.24.0 - -ARG COMMIT_SHA="unknown" -ARG DATE="unknown" -ARG VERSION="unknown" - -LABEL org.opencontainers.image.revision=${COMMIT_SHA} -LABEL org.opencontainers.image.created=${DATE} -LABEL org.opencontainers.image.version=${VERSION} -LABEL org.opencontainers.image.url=https://sourcegraph.com/ -LABEL org.opencontainers.image.source=https://github.com/sourcegraph/sourcegraph/ -LABEL org.opencontainers.image.documentation=https://docs.sourcegraph.com/ - -# Prometheus - extended from https://github.com/prometheus/prometheus/blob/VERSION/Dockerfile -# Check the upstream image (replacing VERSION with the appropriate Prometheus version) when upgrading -COPY --from=prom_upstream /bin/prometheus /bin/prometheus -COPY --from=prom_upstream /bin/promtool /bin/promtool -COPY --from=prom_upstream /etc/prometheus/prometheus.yml /etc/prometheus/prometheus.yml -COPY --from=prom_upstream /usr/share/prometheus/console_libraries/ /usr/share/prometheus/console_libraries/ -COPY --from=prom_upstream /usr/share/prometheus/consoles/ /usr/share/prometheus/consoles/ -COPY --from=prom_upstream /LICENSE /LICENSE -COPY --from=prom_upstream /NOTICE /NOTICE -# hadolint ignore=DL3010 -COPY --from=prom_upstream /npm_licenses.tar.bz2 /npm_licenses.tar.bz2 - -# Alertmanager - extended from https://github.com/prometheus/alertmanager/blob/VERSION/Dockerfile -# Check the upstream image (replacing VERSION with the appropriate Prometheus version) when upgrading -COPY --from=am_upstream /bin/alertmanager /bin/alertmanager - -RUN ln -s /usr/share/prometheus/console_libraries /usr/share/prometheus/consoles/ /etc/prometheus/ - -# TODO(uwe): remove "USER root" line once https://github.com/prometheus/prometheus/issues/3441 is resolved -# -# This is needed currently because the upstream image has us running as "nobody" -# which cannot create the sourcegraph user below. -USER root -# Add the sourcegraph group, user, and create the home directory. -# -# We use a static GID/UID assignment to ensure files can be chown'd to this -# user on the host machine (where this user does not exist). -# See https://github.com/sourcegraph/sourcegraph/issues/1884 -# -# Note: This mirrors what we do in e.g. our base alpine image: https://github.com/sourcegraph/sourcegraph/blob/main/docker-images/alpine/Dockerfile#L10-L15 -RUN addgroup -g 101 -S sourcegraph && adduser -u 100 -S -G sourcegraph -h /home/sourcegraph sourcegraph -RUN mkdir -p /prometheus && chown -R sourcegraph:sourcegraph /prometheus -RUN mkdir -p /alertmanager && chown -R sourcegraph:sourcegraph /alertmanager - -COPY ./prom-wrapper /bin/prom-wrapper -COPY ./prometheus.sh /prometheus.sh -COPY ./alertmanager.sh /alertmanager.sh - -# Copy config -COPY sg_config_prometheus /sg_config_prometheus/ -RUN chmod -R 0777 /sg_config_prometheus/ - -USER sourcegraph - -ENTRYPOINT ["/bin/prom-wrapper"] -# Note that upstream's 'VOLUME' directive was deliberately removed. Including it makes it impossible -# to chmod the directory to our 'sourcegraph' user. -WORKDIR /prometheus -# Prometheus is reverse-proxied from 9092 to 9090 -EXPOSE 9090 diff --git a/docker-images/prometheus-gcp/README.md b/docker-images/prometheus-gcp/README.md deleted file mode 100644 index 42dcbb3a25e97..0000000000000 --- a/docker-images/prometheus-gcp/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# `prometheus-gcp` - -This is a patched version of Sourcegraoh's Prometheus image using an alternative base image provided by GCP to allow automatically shipping metrics to the Google Cloud Managed Prometheus Service. - -Please note: using this image will automatically begin shipping Prometheus metrics to the Google Cloud Managed Prometheus Service and may incur additional cloud hosting costs. - -This image is built by calling the [`build.sh` script in `prometheus`](../prometheus/build.sh) with some additional parameters. - -For more details about Google's forked Prometheus server, see: https://cloud.google.com/stackdriver/docs/managed-prometheus/setup-unmanaged#run-gmp diff --git a/docker-images/prometheus-gcp/build.sh b/docker-images/prometheus-gcp/build.sh deleted file mode 100755 index dfc35f6a75794..0000000000000 --- a/docker-images/prometheus-gcp/build.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash - -# This a legacy build script /!\ - -set -ex - -cd "$(dirname "${BASH_SOURCE[0]}")/../.." - -BUILDDIR=$(mktemp -d -t sgdockerbuild_XXXXXXX) -TMP=$(mktemp -d -t sgprom_tmp_XXXXXXX) - -cleanup() { - rm -rf "$BUILDDIR" - rm -rf "$TMP" -} -trap cleanup EXIT - -./dev/ci/bazel.sh build //docker-images/prometheus/cmd/prom-wrapper //monitoring:generate_config_zip -out=$(./dev/ci/bazel.sh cquery //docker-images/prometheus/cmd/prom-wrapper --output=files) -cp "$out" "$BUILDDIR" -monitoring_cfg=$(./dev/ci/bazel.sh cquery //monitoring:generate_config_zip --output=files) -cp "$monitoring_cfg" "$TMP/" -pushd "$TMP" -unzip "monitoring.zip" -popd - -cp -r docker-images/prometheus/config "$BUILDDIR/sg_config_prometheus" -cp docker-images/prometheus/*.sh "$BUILDDIR/" -cp -r "$TMP/monitoring/prometheus"/* "$BUILDDIR/sg_config_prometheus" -mkdir "$BUILDDIR/sg_prometheus_add_ons" -cp dev/prometheus/linux/prometheus_targets.yml "$BUILDDIR/sg_prometheus_add_ons" - -docker build -f docker-images/prometheus-gcp/Dockerfile -t "${IMAGE:-sourcegraph/prometheus-gcp}" "$BUILDDIR" \ - --platform linux/amd64 \ - --progress=plain \ - --build-arg BASE_IMAGE \ - --build-arg COMMIT_SHA \ - --build-arg DATE \ - --build-arg VERSION diff --git a/docker-images/prometheus-gcp/image_test.yaml b/docker-images/prometheus-gcp/image_test.yaml deleted file mode 100644 index 8f7061d0c3d8d..0000000000000 --- a/docker-images/prometheus-gcp/image_test.yaml +++ /dev/null @@ -1,67 +0,0 @@ -schemaVersion: "2.0.0" - -commandTests: - - name: "prometheus is runnable" - command: "prometheus" - args: - - --version - - name: "promtool is runnable" - command: "promtool" - args: - - --version - - name: "alertmanager is runnable" - command: "alertmanager" - args: - - --version - - - name: "not running as root" - command: "/usr/bin/id" - args: - - -u - excludedOutput: ["^0"] - exitCode: 0 - -fileExistenceTests: -- name: '/prometheus' - path: '/prometheus' - shouldExist: true - uid: 100 - gid: 101 - permissions: 'drwxr-xr-x' -- name: '/alertmanager' - path: '/alertmanager' - shouldExist: true - uid: 100 - gid: 101 - permissions: 'drwxr-xr-x' -- name: '/prometheus.sh' - path: '/prometheus.sh' - shouldExist: true - uid: 0 - gid: 0 - permissions: '-r-xr-xr-x' -- name: '/alertmanager.sh' - path: '/alertmanager.sh' - shouldExist: true - uid: 0 - gid: 0 - permissions: '-r-xr-xr-x' -# /sg_config_prometheus configuration -- name: '/sg_config_prometheus/prometheus.yml' - path: '/sg_config_prometheus/prometheus.yml' - shouldExist: true - uid: 0 - gid: 0 - permissions: '-rwxrwxrwx' -- name: '/sg_config_prometheus/alertmanager.yml' - path: '/sg_config_prometheus/alertmanager.yml' - shouldExist: true - uid: 0 - gid: 0 - permissions: '-rwxrwxrwx' -- name: '/sg_config_prometheus/prometheus_alert_rules.yml' - path: '/sg_config_prometheus/prometheus_alert_rules.yml' - shouldExist: true - uid: 0 - gid: 0 - permissions: '-r-xr-xr-x' diff --git a/monitoring/definitions/prometheus.go b/monitoring/definitions/prometheus.go index 6addc53caa1f0..f87932ad5f468 100644 --- a/monitoring/definitions/prometheus.go +++ b/monitoring/definitions/prometheus.go @@ -173,55 +173,6 @@ func Prometheus() *monitoring.Dashboard { }, }, }, - { - // Google Managed Prometheus must be in the name here - Cloud attaches - // additional rows here for Centralized Observability: - // - // https://handbook.sourcegraph.com/departments/cloud/technical-docs/observability/ - Title: "Google Managed Prometheus (only available for `sourcegraph/prometheus-gcp`)", - Hidden: true, - Rows: []monitoring.Row{ - { - { - Name: "samples_exported", - Description: "samples exported to GMP every 5m", - Query: `rate(gcm_export_samples_sent_total[5m])`, - Panel: monitoring.Panel().LegendFormat("samples"), - MultiInstance: true, - NoAlert: true, - Owner: monitoring.ObservableOwnerCloud, - Interpretation: ` - A high value indicates that large numbers of samples are being exported, potentially impacting costs. - In [Sourcegraph Cloud centralized observability](https://handbook.sourcegraph.com/departments/cloud/technical-docs/observability/), high values can be investigated by: - - - going to per-instance self-hosted dashboards for Prometheus in (Internals -> Metrics cardinality). - - querying for 'monitoring_googleapis_com:billing_samples_ingested', for example: - - ''' - topk(10, sum by(metric_type, project_id) (rate(monitoring_googleapis_com:billing_samples_ingested[1h]))) - ''' - - This is required because GMP does not allow queries aggregating on '__name__' - - See [Anthos metrics](https://cloud.google.com/monitoring/api/metrics_anthos) for more details about 'gcm_export_samples_sent_total'. - `, - }, - { - Name: "pending_exports", - Description: "samples pending export to GMP per minute", - Query: `sum_over_time(gcm_export_pending_requests[1m])`, - Panel: monitoring.Panel().LegendFormat("pending exports"), - NoAlert: true, - Owner: monitoring.ObservableOwnerCloud, - Interpretation: ` - A high value indicates exports are taking a long time. - - See ['gmc_*' Anthos metrics](https://cloud.google.com/monitoring/api/metrics_anthos) for more details about 'gcm_export_pending_requests'. - `, - }, - }, - }, - }, shared.NewContainerMonitoringGroup(containerName, monitoring.ObservableOwnerDevOps, nil), shared.NewProvisioningIndicatorsGroup(containerName, monitoring.ObservableOwnerDevOps, nil), From c820b239f0df601497e08f31d6e41537943fc3ef Mon Sep 17 00:00:00 2001 From: Robert Lin <robert@bobheadxi.dev> Date: Wed, 22 Nov 2023 14:51:48 -0800 Subject: [PATCH 121/222] requestclient: add country-level geolocation data (#58386) This change adds country-level geolocation data to `requestclient` as discussed [here](https://sourcegraph.slack.com/archives/C01PQEVJ5A9/p1700078374822459?thread_ts=1694717740.084639&cid=C01PQEVJ5A9), provided as a 2- or 3-character ISO 3166-1 country code that seems pretty widely used. The inference strategy goes: 1. If we are behind Cloudflare, we trust [Cloudflare's originating country data](https://developers.cloudflare.com/fundamentals/reference/http-request-headers/#cf-ipcountry) and use it as-is 2. If a `Forwarded-For` exists, we look up the first `(*requestclient.Client).Forwarded-For` address in the embedded IP geolocation database 3. Otherwise, we look up `(*requestclient.Client).IP` in the embedded IP geolocation database WE use [DB-IP.com](https://db-ip.com/)'s ["IP to Country Lite" database](https://db-ip.com/db/download/ip-to-country-lite) which includes only country-level data, is free, and allows redistribution with attribution (see docs included in PR). It clocks in at ~8MB, which seems manageable for embedding. Lookup performance looks okay with a trivial benchmark, and we cache the inferred country code in `*requestclient.Client` so that it only gets evaluated once: ``` goos: darwin goarch: arm64 pkg: github.com/sourcegraph/sourcegraph/internal/requestclient/geolocation BenchmarkInferCountryCode-10 2359490 906.9 ns/op 34 B/op 3 allocs/op ``` This change also adds this new data to request client `LogFields`. https://github.com/sourcegraph/sourcegraph/pull/58388 adds this to telemetry events as well. ## Test plan Unit tests --- deps.bzl | 23 ++++-- go.mod | 8 +- go.sum | 19 +++-- internal/requestclient/BUILD.bazel | 11 ++- internal/requestclient/client.go | 63 ++++++++++++++- internal/requestclient/client_test.go | 62 +++++++++++++++ .../requestclient/geolocation/BUILD.bazel | 26 +++++++ .../requestclient/geolocation/data/README.md | 14 ++++ .../data/dbip-country-lite-2023-11.mmdb | Bin 0 -> 7936929 bytes .../requestclient/geolocation/geolocation.go | 54 +++++++++++++ .../geolocation/geolocation_test.go | 72 ++++++++++++++++++ internal/requestclient/grpc_test.go | 14 +++- internal/requestclient/http.go | 23 ++++++ 13 files changed, 363 insertions(+), 26 deletions(-) create mode 100644 internal/requestclient/client_test.go create mode 100644 internal/requestclient/geolocation/BUILD.bazel create mode 100644 internal/requestclient/geolocation/data/README.md create mode 100644 internal/requestclient/geolocation/data/dbip-country-lite-2023-11.mmdb create mode 100644 internal/requestclient/geolocation/geolocation.go create mode 100644 internal/requestclient/geolocation/geolocation_test.go diff --git a/deps.bzl b/deps.bzl index c495f18fac8ea..ab1d845f588b9 100644 --- a/deps.bzl +++ b/deps.bzl @@ -2607,8 +2607,8 @@ def go_dependencies(): name = "com_github_goccy_go_json", build_file_proto_mode = "disable_global", importpath = "github.com/goccy/go-json", - sum = "h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk=", - version = "v0.9.11", + sum = "h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=", + version = "v0.10.2", ) go_repository( @@ -3305,8 +3305,8 @@ def go_dependencies(): name = "com_github_hashicorp_go_hclog", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/go-hclog", - sum = "h1:K4ev2ib4LdQETX5cSZBG0DVLk1jwGqSPXBjdah3veNs=", - version = "v0.16.2", + sum = "h1:La19f8d7WIlm4ogzNHB0JGqs5AUDAZ2UfCY4sJXcJdM=", + version = "v1.2.0", ) go_repository( name = "com_github_hashicorp_go_immutable_radix", @@ -5084,6 +5084,13 @@ def go_dependencies(): sum = "h1:nV98dkBpqaYbDnhefmOQ+Rn4hE+jD6AtjYHXaU5WyJI=", version = "v1.2.13", ) + go_repository( + name = "com_github_oschwald_maxminddb_golang", + build_file_proto_mode = "disable_global", + importpath = "github.com/oschwald/maxminddb-golang", + sum = "h1:9FnTOD0YOhP7DGxGsq4glzpGy5+w7pq50AS6wALUMYs=", + version = "v1.12.0", + ) go_repository( name = "com_github_ovh_go_ovh", @@ -5637,8 +5644,8 @@ def go_dependencies(): name = "com_github_schollz_progressbar_v3", build_file_proto_mode = "disable_global", importpath = "github.com/schollz/progressbar/v3", - sum = "h1:VcmmNRO+eFN3B0m5dta6FXYXY+MEJmXdWoIS+jjssQM=", - version = "v3.8.5", + sum = "h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE=", + version = "v3.13.1", ) go_repository( name = "com_github_scim2_filter_parser_v2", @@ -5796,8 +5803,8 @@ def go_dependencies(): name = "com_github_sirupsen_logrus", build_file_proto_mode = "disable_global", importpath = "github.com/sirupsen/logrus", - sum = "h1:Ou41VVR3nMWWmTiEUnj0OlsgOSCUFgsPAOl6jRIcVtQ=", - version = "v1.9.1", + sum = "h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=", + version = "v1.9.3", ) go_repository( name = "com_github_skeema_knownhosts", diff --git a/go.mod b/go.mod index 86f0c384c15e4..81128167e300f 100644 --- a/go.mod +++ b/go.mod @@ -164,7 +164,7 @@ require ( github.com/rjeczalik/notify v0.9.3 github.com/russellhaering/gosaml2 v0.9.1 github.com/russellhaering/goxmldsig v1.3.0 - github.com/schollz/progressbar/v3 v3.8.5 + github.com/schollz/progressbar/v3 v3.13.1 github.com/segmentio/fasthash v1.0.3 github.com/segmentio/ksuid v1.0.4 github.com/sergi/go-diff v1.3.1 @@ -268,6 +268,7 @@ require ( github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa github.com/mitchellh/go-homedir v1.1.0 github.com/mroth/weightedrand/v2 v2.0.1 + github.com/oschwald/maxminddb-golang v1.12.0 github.com/pkoukk/tiktoken-go v0.1.5 github.com/prometheus/statsd_exporter v0.22.7 github.com/qdrant/go-client v1.4.1 @@ -313,7 +314,7 @@ require ( github.com/emicklei/go-restful/v3 v3.8.0 // indirect github.com/fullstorydev/grpcurl v1.8.6 // indirect github.com/go-ole/go-ole v1.2.6 // indirect - github.com/goccy/go-json v0.9.11 // indirect + github.com/goccy/go-json v0.10.2 // indirect github.com/golang-jwt/jwt/v5 v5.0.0 // indirect github.com/google/flatbuffers v2.0.8+incompatible // indirect github.com/google/gnostic v0.5.7-v3refs // indirect @@ -324,6 +325,7 @@ require ( github.com/grafana-tools/sdk v0.0.0-20220919052116-6562121319fc // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-hclog v1.2.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-slug v0.12.1 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect @@ -348,7 +350,7 @@ require ( github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect github.com/prometheus/prometheus v0.40.5 // indirect github.com/shirou/gopsutil/v3 v3.23.5 // indirect - github.com/sirupsen/logrus v1.9.1 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect github.com/skeema/knownhosts v1.1.1 // indirect github.com/smartystreets/assertions v1.13.0 // indirect github.com/vbatts/tar-split v0.11.3 // indirect diff --git a/go.sum b/go.sum index cf5a38ec87d69..15054b863ebea 100644 --- a/go.sum +++ b/go.sum @@ -747,8 +747,8 @@ github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.1.0-rc.5/go.mod h1:nzvNcVha5eUziGrbxFCo6qFIojQHjJV5cLYIbezhfL0= github.com/gobwas/ws v1.1.0 h1:7RFti/xnNkMJnrK7D1yQ/iCIB5OrrY/54/H930kIbHA= -github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= -github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.6 h1:mkgN1ofwASrYnJ5W6U/BxG15eXXXjirgZc7CLqkcaro= @@ -964,7 +964,8 @@ github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9 github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.16.2 h1:K4ev2ib4LdQETX5cSZBG0DVLk1jwGqSPXBjdah3veNs= +github.com/hashicorp/go-hclog v1.2.0 h1:La19f8d7WIlm4ogzNHB0JGqs5AUDAZ2UfCY4sJXcJdM= +github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= @@ -1257,6 +1258,7 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= @@ -1398,6 +1400,8 @@ github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+ github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/opsgenie/opsgenie-go-sdk-v2 v1.2.13 h1:nV98dkBpqaYbDnhefmOQ+Rn4hE+jD6AtjYHXaU5WyJI= github.com/opsgenie/opsgenie-go-sdk-v2 v1.2.13/go.mod h1:4OjcxgwdXzezqytxN534MooNmrxRD50geWZxTD7845s= +github.com/oschwald/maxminddb-golang v1.12.0 h1:9FnTOD0YOhP7DGxGsq4glzpGy5+w7pq50AS6wALUMYs= +github.com/oschwald/maxminddb-golang v1.12.0/go.mod h1:q0Nob5lTCqyQ8WT6FYgS1L7PXKVVbgiymefNwIjPzgY= github.com/pandatix/go-cvss v0.5.2 h1:9441i+Sn/P/TP9kNBl3kI7mwYtNYFr1eN8JdsiybiMM= github.com/pandatix/go-cvss v0.5.2/go.mod h1:u4HcNBqA9IY6PZHuH8Pac4VaGv5iAMyiXMex/FIfxcg= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -1525,8 +1529,8 @@ github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIH github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/schollz/progressbar/v3 v3.8.5 h1:VcmmNRO+eFN3B0m5dta6FXYXY+MEJmXdWoIS+jjssQM= -github.com/schollz/progressbar/v3 v3.8.5/go.mod h1:ewO25kD7ZlaJFTvMeOItkOZa8kXu1UvFs379htE8HMQ= +github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE= +github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ= github.com/scim2/filter-parser/v2 v2.2.0 h1:QGadEcsmypxg8gYChRSM2j1edLyE/2j72j+hdmI4BJM= github.com/scim2/filter-parser/v2 v2.2.0/go.mod h1:jWnkDToqX/Y0ugz0P5VvpVEUKcWcyHHj+X+je9ce5JA= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= @@ -1556,8 +1560,8 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sirupsen/logrus v1.9.1 h1:Ou41VVR3nMWWmTiEUnj0OlsgOSCUFgsPAOl6jRIcVtQ= -github.com/sirupsen/logrus v1.9.1/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skeema/knownhosts v1.1.1 h1:MTk78x9FPgDFVFkDLTrsnnfCJl7g1C/nnKvePgrIngE= github.com/skeema/knownhosts v1.1.1/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= github.com/slack-go/slack v0.10.1 h1:BGbxa0kMsGEvLOEoZmYs8T1wWfoZXwmQFBb6FgYCXUA= @@ -1939,7 +1943,6 @@ golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220128200615-198e4374d7ed/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= diff --git a/internal/requestclient/BUILD.bazel b/internal/requestclient/BUILD.bazel index 6958038c545f7..45ca8c959b2ec 100644 --- a/internal/requestclient/BUILD.bazel +++ b/internal/requestclient/BUILD.bazel @@ -12,6 +12,8 @@ go_library( visibility = ["//:__subpackages__"], deps = [ "//internal/grpc/propagator", + "//internal/requestclient/geolocation", + "//lib/errors", "@com_github_sourcegraph_log//:log", "@org_golang_google_grpc//metadata", "@org_golang_google_grpc//peer", @@ -20,10 +22,15 @@ go_library( go_test( name = "requestclient_test", - srcs = ["grpc_test.go"], + srcs = [ + "client_test.go", + "grpc_test.go", + ], embed = [":requestclient"], deps = [ - "@com_github_google_go_cmp//cmp", + "@com_github_hexops_autogold_v2//:autogold", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", "@org_golang_google_grpc//peer", ], ) diff --git a/internal/requestclient/client.go b/internal/requestclient/client.go index 76711d9db3cf5..60bce37230ce6 100644 --- a/internal/requestclient/client.go +++ b/internal/requestclient/client.go @@ -2,8 +2,13 @@ package requestclient import ( "context" + "strings" + "sync" "github.com/sourcegraph/log" + + "github.com/sourcegraph/sourcegraph/internal/requestclient/geolocation" + "github.com/sourcegraph/sourcegraph/lib/errors" ) type clientKey struct{} @@ -12,7 +17,8 @@ type clientKey struct{} type Client struct { // IP identifies the IP of the client. IP string - // ForwardedFor identifies the originating IP address of a client. + // ForwardedFor identifies the originating IP address of a client. It can + // be a comma-separated list of IP addresses. // // Note: This header can be spoofed and relies on trusted clients/proxies. // For sourcegraph.com we use cloudflare headers to avoid spoofing. @@ -20,6 +26,17 @@ type Client struct { // UserAgent is value of the User-Agent header: // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent UserAgent string + + // wafIPCountryCode is a ISO 3166-1 alpha-2 country code for the + // request client as provided by a WAF (typically Cloudlfare) behind which + // Sourcegraph is hosted. + wafIPCountryCode string + + // countryCode and friends are lazily hydrated once by + // (*Client).OriginCountryCode(). + countryCode string + countryCodeError error + countryCodeOnce sync.Once } // FromContext retrieves the client IP, if available, from context. @@ -40,9 +57,53 @@ func (c *Client) LogFields() []log.Field { if c == nil { return []log.Field{log.String("requestClient", "<nil>")} } + + var ccField log.Field + if cc, err := c.OriginCountryCode(); err != nil { + ccField = log.NamedError("requestClient.countryCode.error", err) + } else { + ccField = log.String("requestClient.countryCode", cc) + } + return []log.Field{ log.String("requestClient.ip", c.IP), log.String("requestClient.forwardedFor", c.ForwardedFor), log.String("requestClient.userAgent", c.UserAgent), + ccField, + } +} + +// OriginCountryCode returns a best-effort inference of the ISO 3166-1 alpha-2 +// country code indicating the geolocation of the request client. +func (c *Client) OriginCountryCode() (string, error) { + c.countryCodeOnce.Do(func() { + c.countryCode, c.countryCodeError = inferOriginCountryCode(c) + }) + return c.countryCode, c.countryCodeError +} + +func inferOriginCountryCode(c *Client) (string, error) { + // If we have a trusted value already, use that directly. + if c.wafIPCountryCode != "" { + return c.wafIPCountryCode, nil + } + + // If we're able to infer a country code from the forwarded-for header, + // use that. We're not too worried about spoofing here because country codes + // are purely for reference and analytics. + if c.ForwardedFor != "" { + // Forwarded-for is a comma-separated list of IP addresses, we only + // want the first one. + ips := strings.Split(c.ForwardedFor, ",") + if cc, err := geolocation.InferCountryCode(ips[0]); err == nil { + return cc, nil + } + } + + // Otherwise, we must infer a country code from the IP address. + cc, err := geolocation.InferCountryCode(c.IP) + if err != nil { + return "", errors.Wrap(err, "geolocation.InferCountryCode") } + return cc, nil } diff --git a/internal/requestclient/client_test.go b/internal/requestclient/client_test.go new file mode 100644 index 0000000000000..e62e505dd9138 --- /dev/null +++ b/internal/requestclient/client_test.go @@ -0,0 +1,62 @@ +package requestclient + +import ( + "strings" + "testing" + + "github.com/hexops/autogold/v2" + "github.com/stretchr/testify/assert" +) + +func TestClientOriginCountryCode(t *testing.T) { + for _, tc := range []struct { + name string + client *Client + wantCode autogold.Value + }{ + { + name: "have trusted geolocation", + client: &Client{ + wafIPCountryCode: "CA", + }, + wantCode: autogold.Expect("CA"), + }, + { + name: "infer from single ForwardedFor", + client: &Client{ + ForwardedFor: "93.184.216.34", // ping -c1 example.net + }, + wantCode: autogold.Expect("GB"), + }, + { + name: "infer from multiple ForwardedFor", + client: &Client{ + ForwardedFor: strings.Join([]string{ + "61.144.235.160", // example from OSS datasets with country code 'CN' + "93.184.216.34", // ping -c1 example.net + }, ","), + }, + wantCode: autogold.Expect("CN"), + }, + { + name: "infer from IP address", + client: &Client{ + IP: "93.184.216.34", // ping -c1 example.net + }, + wantCode: autogold.Expect("GB"), + }, + } { + t.Run(tc.name, func(t *testing.T) { + code, err := tc.client.OriginCountryCode() + assert.NoError(t, err) + tc.wantCode.Equal(t, code) + + // Check cached state + tc.client.countryCodeOnce.Do(func() { + t.Error("countryCodeOnce should have been called already") + }) + assert.Equal(t, code, tc.client.countryCode) + assert.NoError(t, tc.client.countryCodeError) + }) + } +} diff --git a/internal/requestclient/geolocation/BUILD.bazel b/internal/requestclient/geolocation/BUILD.bazel new file mode 100644 index 0000000000000..a7f40db097544 --- /dev/null +++ b/internal/requestclient/geolocation/BUILD.bazel @@ -0,0 +1,26 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("//dev:go_defs.bzl", "go_test") + +go_library( + name = "geolocation", + srcs = ["geolocation.go"], + embedsrcs = ["data/dbip-country-lite-2023-11.mmdb"], + importpath = "github.com/sourcegraph/sourcegraph/internal/requestclient/geolocation", + visibility = ["//:__subpackages__"], + deps = [ + "//internal/syncx", + "//lib/errors", + "@com_github_oschwald_maxminddb_golang//:maxminddb-golang", + ], +) + +go_test( + name = "geolocation_test", + srcs = ["geolocation_test.go"], + embed = [":geolocation"], + deps = [ + "@com_github_hexops_autogold_v2//:autogold", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + ], +) diff --git a/internal/requestclient/geolocation/data/README.md b/internal/requestclient/geolocation/data/README.md new file mode 100644 index 0000000000000..e887977bad4be --- /dev/null +++ b/internal/requestclient/geolocation/data/README.md @@ -0,0 +1,14 @@ +# Geolocation data + +This package contains a small geolocation database that gets embedded in the `internal/requestclient/geolocation` package. +We currently use the [DB-IP.com](https://db-ip.com/)'s ["IP to Country Lite" database](https://db-ip.com/db/download/ip-to-country-lite) in MMDB format, which only includes country-level data. + +The free DB-IP Lite database by DB-IP is licensed under a Creative Commons Attribution 4.0 International License. + +The full licensing terms are available [here](https://db-ip.com/db/lite.php). + +## Updating the database + +This database was last updated 11/16/2023. We should aim to update this yearly to stay in sync with any changes. + +The database should be downloaded in MMDB format the ["IP to Country Lite" database page](https://db-ip.com/db/download/ip-to-country-lite). diff --git a/internal/requestclient/geolocation/data/dbip-country-lite-2023-11.mmdb b/internal/requestclient/geolocation/data/dbip-country-lite-2023-11.mmdb new file mode 100644 index 0000000000000000000000000000000000000000..ffe510e12ebca162573916cb2149d71878ec11f5 GIT binary patch literal 7936929 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�X!ioT7s`khwd@kN7t_65U0e4Ox|UvM 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®zsy^ejxlX+N#N}bX)8b@t+df*?}EY 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⪼zNu%xUzX@5haxP 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�P1^F-%q>yP*?uX+kBM3{hhRO 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ɨF3fM-aWXVE+- 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%0A4gVYu-X_}o(KkOI%}=G zBCm8E1{*N&_&-=rzi}L_Z%|bT_lG|R8)@mQZrPZ@CONMAN`uW99L->J2D>uYg2C1d zwq&rCblr!cC)+UCmcjN6{QvL9&EH5G`1*gaqlq!t$>GipwFTtW?Z#k#2D>xxs6N<( z!Jc{$Xt0-3kNnx2!9GJ=@n3kpsu>)>;7|ry|1&tqg%5Ukh{SUDWZ^Idhr5i{|1NN( z!=rLB2FEb4Gv!zY|6_2Rh|)Tqfi?fcT*lQ;a(MF4$SDj?74B;Q2B$GN-37D-#Nf<a z%<;1soX5Z#b#8IjGS9Gs^BG*s;DVtWz6CV6s8H1Wxy02kb$FRWzXTXu!QjfmF}Zp* zBl9u1hQX%{u4V8#gX<VP$iOC~1%w+I+$dq|w8B*z^t%|`VnhbFy4l+tDg`jO!=V=c zL&p^S8QkMD{9cFmIlSND0|q6j`Tr1uXBj-q;Bf|zh$zKJ89Y{m7hA6m>_@-`pY&+( z)X*ip0><DOsVGW3$KYkBJkQ{T+!F>bI^`wF6yvB}AO^2Gd`%6MkvAB;?Z}%B-zusW z>m3H~GWdjnKL|ANTL7Ye;F2FQ_{itp$N79KW|{;(WAHPB&l%`Z9|m7A_>zGh{*fm| zMEZt-*8B_<{~h_B!A}f+aQw%dC}@YRlLx;rGAV;!85x(sZw&r)vELc|k@tz9hT|^= ze>>|R!4XAiM#griIF_4bWIRSDVPt%#qdpv&z@dKr&d5X#CpIV*x9pOWF)||~lQS}k zktv)qB_mTaqD>)5y0?r>Gpxl|!XwjJk&)>g&XBVl{|_T`xRIF{nc0zH{2x*LXJj@; zX8+d*Q9S;S%;ns<8JS1FofX|vfc>L<WPV0AV`KqF5=Iteq|V4fj4Z*(!i+4U>mb`7 zll-ELcw!w{%stWmkI@}pl98&*lo$y#RYuAVE5(Ev2_>0No{`Ab|BTce#>KV3NQ05) z&{|7~9XpycDI+T~(q_bZxWmYB<v*hMξA5e0uQ4j3td|B$jYBmV!Fk!2ZKo{{DL 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%0DNa0^_!#12%Ov9Ch);I<@j74}pWyIB;*-Q+3ps-> zg!okA^NCL*KG*qACqAQ0B|g(BXUX}*XFIg`|Hwzh=Sly=tW#Y;d@=Eb#1{?MmewvR z)a~qTq$Op18S&-Brn8NjD)AM>x7%$M#8(nuMSMN+)x_88Q=s^o;S3d9pK;G`laYBI zTMx(9Pi`SL|9_MI>CBo^#G9qC&BF1m#J6cuHh%MU8lI-c<HUCm-%ore@jb+M5#OyK zs?B=FX47kYFY$fiw?nozSfuI$#72LR_+jto52@C+V75|h_K6=QeoPX|f;14GAbyef zN#bXTpCW#SSbzRIRKrS<lFt#pK>WNimg<>hl=mg#SBYOHeq~5EO{BwX#1)k|cAT=< z%pTW>16jtD)c6XC>%<XpgV-*A^P^=JSFss3j)@boSwRkoQ<8&;+axypJH)>cXT+Zp zcZuI3?h(K4O7<P*4hx3^gWe6^5Tc5_IikEx{4w!6#2>gmHU+$A#Sy<>YFI+z4~ake zokIMHx^6ko#-9=Yhxl{iZ-~E8&({F|lGrDa_-j?)hlA6<CH~Gk;rDL0(I)`1q4s}? ze<J>s_-Duet0F}F#bAl67Rh)dGn0%@GC9cvBomWNNaB%yucj)P=q~_BCK=W@nbe8) z7ch4_eF~BpNTwv2N@8uIw4(*d)DEX1asMxh&f}3xKlCTb7}eTTO=cvSN!GAOvsE$+ zi4Mz=%&MA-VK$PvNM;}Q?c`4+bEqPT`G2d(-Hy*qvVd1-EXh0)rK-(KGM`JBzoa<s z>;J_4kAyEgVqTPFOOnM%RwY@SWGNDV#YlYrHyQ2!CQFK6r7umg0?9HibL9V%<w%y- z<Ze9nN}jCfslNG}tSk?ZtRh!qslrzy*@R?uk_|}KAX%4WP3O1ZkJ-V3Ke7qQI^rMV z>yfPg2l>AFE1r!=Hdco>PFo2ln|j90NVXu^TtxesR@QmMY?j%BWGj*#Nw$_`6}Jt^ zwj+EylI`7qJ_Q(qjJXrZZX`RC{FP*vl2g--^6pCFMZ1zt(G=jw-$@Q2vG|X%?M1RL ziN$})6890}gO_AK62Je!C^p?l$pal8B+X^*LrAVAIh5oglEX+&BC)=7G|Ay4M+|4l z<VcdE%5q1F9Yb=wTt{*&$#Ek7?t7CHNKX92<H;mvkes4Erplh`P@jO2oGzIf1!t0+ z=Y9Ar5*-I}{2Y>V<>c+rpp1V$$pxyH@C$`lcFDPz#0Jroj$i8VGLp+3F@tClA-Te! za1FPsNUpX4MRJX_8Y=cLlBY?oBQbrhC%Kj61`^x$H51)95^^)iEyAtE?R<qrbd%di z?jX6H<ll-s+mP|jKyoL^UFwiV8IGfSNFE`%m*hc``&{h(4j&jQCM6#td03K7h*eod zKT7fh$zvps%LAB^Emb}INs^~*LR2GK1VGLD3`v9JS(4ZM@i~&`NnVh)!-js*1-?Y` zvK!<Thp+yj^okp&Ix>j<1%M<V3B8Yvwt%f8smb&TKoXI}B&p*GiPrxTs1nP*-J$&k zNk)1KNtbjBk{&JdhkcSyNOF>oNeYs;NCvL9um6)bBteyWQ;5yB$=f9Fk-S6lu1=?1 zc8p4qecmVeh{Qetuu<SwK-=+v@=e)nWqIvvQt~Ou&m^DOv`+Fli7xph`GVw2lCMd= z(sXP;>rOU>*@7zhmPD7Wk$gw;J;@Ja>^~G{IaHIfg=JLek0d|IuvU;k75!h5U%b=) zN^2sL-)K!hYdl)xOL94z+vhf|3H4!}QA~l>#Iz=*1ugqh;7@YM)=vy7X)^Jc*wz%Z zuBA04t&M3-MeEPBrlvIqt!Ze@Ae*<Qr8ONb%d6K|L9<nB46WH6nNgj*H509w{c#qD z`u{IlZq?RohL3V-f1!M&H7BhFY0X7zEG>`!SdxmHht>kL=5?|2Ih?=DE;uZGAzF*M z@(a^iMDfYiq7rNBsocefrC8&(mY}r;t#P!LrL`ojrLB9@T1rM37Ux^QDt9?rE7Dq? z)(T4UWwW|ROTi!e(OQ|-D#ER2wpMj$y8wo-E~|=RO<L>GT8q}YwAQBOp5OS(MzpRX zp7m+z+GkoDNR$u{{)^4pViQ^i(At#NuCz9zwKc8HX>I97*kV+7Q`HWC`fW&3#*DuW ztzBqsOUt{Z8dn!?)7rsH+|l7q4tG|ewoo*vs(El#TK$dIp0swOwFj-;WyW$fs3gr1 zo_8-=`_S53MVI5HwJ)vxY3(OUsgFZi2huv5)<LumrFF2%lAJ?I9$JUdI>vBXc0kDB z;k1r$h9ku(%25ve|6i2xSXw91I?jp5JJesm&^poJD2pBbln%5`ad@i3(;S}eP+tMi zI@94<2ED{{XkA3>Tw3Ql{k#$V0$LZAxZv1vv@WJ~6|GBXT`I>Vt$hEtb-BD*%fAR~ zUE%nZC4=KvOFc386rf!HqV*B2>u9|~>v~!b(z=0`b)g$+-9hUnTK~45N$X}>w<xdh zTWR?#fbiRg{dSmiCoSLn^+(t09$NR)x|h~{W%ePz@@oIrc^;zm9Ic0GJ)t?S^@tN6 zrS+IUJ}w_+0v*zNlGamtl=3#po*B`fEqQ1?PwPeROD~Li#Y?naR;qUrm-#BKjMi(k z5?U2n5v?jM_wB73tw4%t0EV>chSO@4lp$2nu>@LMh^<Ad?MON*v15<=iL*=V9a`r9 z3tD|z`B05viw|hMP3v{%wDrGri8md-CE;Ze4r#qh>jPTv(R%;?r++BUp|p=lXQlNC z>G-rhrS%i7&uD$^!asLE^98Lh{qZXa8G3+kX#MD^-_rW7q|^G|DL**;Psv$AT0hhJ zjn;o@{pzW|{4rIObi5&FIsxfqq!W@tIuWTK2lBzIA#Cm?orH8!l~|7GbaK+^Nv9y4 zQl=gfry`x&nWu3$twZ<xWk$)F!HHu?XO!<vXL2~RL8p8CNA&+AU50cv(#1(<C!I(0 zTKXqaU;n3b$};I(u8+~@CLLSiPM?=_G1B=+7bKnEDGU4|bs-nEu){?hE^6?12B(<t zB}tbc9ryp!mm*zy$gCP!(aVyqO}ZTE>ZHq)uI9z9K)Ryhz3EC0SJu2Ng;yb6wZw<e z9BHa!qV^+Qlhn`ulpZo&hjcU2bxAiM)!|Rl^`%TXH1xP3sp9{hv@xm2|I<Ij|HY&D zzcXw}dN}D{NcSM!igfGY>1egcHl*8<?n=5H=?<jZt4mlZ>K;3i?(E1;C6RO&(!XlF z7=x`R4H27Ow@G&+-Cb;+ozy7*Al*~5NxB#50i=7A?nk;0>AuQaP7}6_NfrFpZ=G{U z4<tQ=^dQoMMcFtKo5knTLrD*_9x~)K#3tEt;hG-d4RIvtQKZK^el+PZY9=+1Z2=oR zPIeelPH@VJ4o`A;vXaz5r_!EEZYMpB^mNh&=^3Q=k)BC<73o=|7m=P#dLF5%>WBYJ zP0Y8X=aXI_tz^;*g_wzKj!rKoHOeKV{&`fYPXP3v3o7n%;WkI4`W(QSuM}bngY;_B zTS%`Vy^-`<((6dI;__OUwChQ45N^z_0O?Jh{boHn8|kg2cah#kdI#z4r2igfw=ABK z^iDZsX=ugW>&QJ4Xoq{9hxC5Z=Sd$ReVp_`(uYYO`dtX=Bcy)*Gkvt=ALV+2^l8IM zpCo-s#G$ljNS`BpwtO7YWvdrRE2J-yzHCI&my{&>E2OWM%%rcCh%@N$KWU9LBn?U< zJEg9Al{QgxG)W`UFGyq3H%SxH9%+lTLz<Gdwdl15vJR~NY3u*4);9KNYh6+Lqyy5N zv`~MxqpD_An~u}hN#D>kZ4~RD_I+IX7U_qiZ<D@9`VQ&4r3CTYT0MQA^n)R@NtRFe zi1bs^k4ZlninSA}>fxV}`o~}Px@386hdTX|^jFfaNdH6nHR*Sx-;jQ*b2z4_<&vJ? zlm4K<i)AtWHJW}T{h9P9sb>|GWGnO+JsOWeY4sazXpcvGLfYfgo?w{WDrGX;6VbNo zc72RnO>OwJC!sw#?MZ1*rjcTDOaW`G_7t?IRJqn<R+d?#ZGUiMa2nbt(w>&~PPC_^ zy#np&X)i{52HLaG9z%O3lR$e$$+6aK599wPg!Zho=ccWup*@>Je_3ez`d`F3Xv_b5 z(p)16V`(o+dmbm60t?cfZ^Sb{ZTJ6PmKV1W?S)4f7b)3BkBie@%7vI#ONgiv$I)JL z$R=%<ro9~PWjtwF@whVnxO|DzUXk`Dv{$0NI_;HdE9_6(Ujc?PHB&fIp;X#y(q5PL zT88`M+O*dZ{y)j<(O%z^6#u8~+W~FG|BZ*Xwt$5zX;a#p(cYT2g8xq0!r_**OXjVH z%*wdUh-X{p+0Nniw0-^G*7{!zLsfUCy$fv*^|!5`>^jQpfey9Z?z9i2t@yvo`8(}B zNBCY&*_-x0wD+UE@BbuAjs5MB_5q`U4x)XC^ZPD<k`AS<2oLSUXv>4qK77P{1Z`jc z|4+}OX&>V}$2xT9ue`_8KB3Iz^pj|xP5b1LhNsY0@W)H>_)lB$AKGWo_WM7DpCtyB zeh%#$J@s7L=h42D_W4Q@&jqwEbmSuEytpipw&F`8{4&~?)4tl-{z>}^@A+3cyh=mK zIAzak$}F_6by5GKecgz1y;FP^P@y-`zR#uIO#2qv+RUYWEA89FFZ_1e!<`P=chJ7m ziFeUfKwDb<um9Xz;<WFl{Tl5DXg@*wLE4Yge#mn@>_z+Hzx}A=j}5br<j{VS_6xM1 zqWv80r=91Sl85%QWr?((9~Le3UUbPXIj3F$Xusm{)iRgk71}B7Ds4r6N;>U;c1XKP z+x@>pX$x4X5)wI#X(uI-c59STF9P<XZ6TnHc22wN%sq$wl1)%@3fco_e!Z0A_?u*Z zqWu<~A8Ef$XHVMi&@tcjE**2K@6rC6_WQIyrTqczk7)b)-#oB=-`)P0b{YJ?TSpVk zZ?`|A{Uz<sX@4OvZMs=E5dAATSX0A1dHWmMKhge{_7Akbqy4=CakdIF_iJ9g{U6$P z^N%0JG#71~N9~_!|4RG6w0{wsPY{-c_HT5w;1RP=3Unr*GXtFo=}b;%B07`OnV8Nb zbkI!>wpyEWS20_k>`bN!uAIv{Q_z`)&Xjcg{x_RaZL;WS3NW#Brlm7I9Y4xzD-FA6 zQpFj=7&<0rMmjS~?aoZYns#QPGpp{>w@R5-whZgcMrRH>v(xcCEYsiU(qT?Ib4i+A zNotyyl{#bTtU+fUI^*cfOJ`v^^U+y=j^F=p86|B&Iv)IY<+bkWEJ9~-I*Za-OvbUI zZLYT&u=8g+O9=NW>%FqGB%KxLEJbHoI!n`$^VhUHcAQpgo#p5(KQymts7kF!XH_~Y z(OFpwDrvZi(ZwSRtVU;b3AabPNzXc1XH7a=(OHYmhIH1Zvp$`5=&UOq@!RG9zCyO1 z)7d}^0DH8q+u4ZD=5#iuvnd^||H}&i>1?JCJ?sNaX|e?!|Ksw`mSQlqO+$<Ib+)Fn zGo5Yd>_BH*I@_B}IvxeGDc<^?z2SCtq_dNhw3k*<tfsrr*^Q2w$oqp?(*C-l<KO0} z7Q54t(dhWUz*~6P^c?pFoxSM1OlNO8kI>nN&ZTtrrE@%;{pcLw4Z1&_1Lzz^$AkZ! zgWM(uJ3K^ctI-dY4l2dB2|Diohm<4f9OFDkIm6MTEPno{bDS~`IZvQ-8XYbEo&O{{ zCp&V=D2ty0QYoj?InR^MaCoM}v*?^X;ylMG=Nj}v&!=+<oeLbl(3385cyY-fXg{^) zWpu8gbGfJ5Fp=~3T=M@;yo%1%WhqX-md-tN%&Irjxo*VcXM{R8IRA|fZyLUNb#9?^ z>!^aadD884?sP;uP;~AvXv}o(^2fW&N5}7_b3dK?M6sXxzym@wd>*9pkn=n&%5Wq; z>XgUmJnzWkbe?eJNrz7vbmVD=&(Kluht6|<sND-A9*+feUK(ls3Z0D3t8`+|`x>1J z9WD6jR2|lo(Z-Z0p+mp_q0^w#^it&f#iJ4vA>wQ~OzHUL51md)w?BxX)1~tko!*GE zPe&mjI)y`z|92Gs@kea|(0S9K%YU2BCv@I%qJRI}d5_MAbl!K$2Y=8+2Z5aUu@LF@ zDV^`>d`9Ohr+-f83rD{EL$0sItP;PW^Q|^ngnuXE5dVSBfBwM#6PdZqpUKRH{+Dcg zYcD##(D~I%{7o?PDZr{@eKMPXY$~z|$)>RJPBszQ#3~{~MF^RMY*I%ib2z!^=KYj3 zrEqiFb_OGxnrue0X~?E0o0e=kC7B<v8A@VjARD8%PID<nH}90qL^ccA%xZLtBiYVT zHY=G*l<O!RrXkkZ?978XmTV5P-7J-CPKR@m%}usC*;ukA$mStim~39M1<2+jbLVe) z%|t4FK{CHF)x4I~T9ie|79(3!W!caCTedjapA{Q19@D{$mW?A@fow^#WyqEyTUwl^ zziUOdEZK5$k2adJ<u%D#M(MdC*(zi!k*!?TUHtaOl&wm(+Hhtuip}ZS8f2T1tx2{4 z*;-`llC4d)j&hl_p$_YjtuG^3xkLFIl5OmTZX}AmS7w`#ZK@WrS<L5pvdzi1Bin*( zYqBlLw$hZ5*-0DikCe3_+lFjgwVh4z7Niox_GCMg?Lg*-KV^ZP%F23iyO8Zl=6_!7 zb|AA4UR;{;?oMWP--GNLGBd~(W46DZY)`Vi$c`o3o9saEc>6fqmux>Zgu0@y|1)3z z+iaU1L}s><|JUT39YS`fvmI7a96y}w81Dl|kZJu-Cg<;zqh&Y8oqinI8Dz(kokVs5 z*@?d=IkN?SJi?isLUyY2pXTs%v00KNpGkHB*;%6K@ochlJg=NT*?A7nHz)>CE+o51 zxU6@v!%IBlr4BE1c)7!2NXKwzyOPY;|8^87yIOm!HYm&qXV(t9oP{8=>&VQieX<+K zo+Z1H?0&MF$nGG!nd~;QTgcr1TW=|+x$Jf_?GC6N)uYBEyOZo5vb)H1kVDn9Rf>A! zy=3=kgnGGNmj}omCwq|0RC<W)VQFFm)3S*FQ8IlarcPx`3sIgRdy33I0X8;`i>Jw+ zQJ=StYD+}%JVzFgJx}%u*$ZSZk-ex+YeMXlSN8I7;EVHBvMSkYWEIuLiuNHu=C1%Y zM#LYIwaDsZ5m|$*DIQbCO1D@<7Lz49ALTB{`Z-xjmXWo|IzwM%{A#r>Sx<S(aEcl_ zC;OPJAbW>wK;}L_dtDY&Z-0~QZL+siuNj`uw(rm;?~=Vw_MWV5EvQ<2K=zS6lKB>} znQO@T3E9_VpOSq+_8FPQf5ubkrnwsZOR}#d+*Golki5q?WZ$YHD*ZdM?^R73yjGBW z>3`@=MD`=yi^+bXyBOKebmu1fFWouGexYma{wvvUGPNmSxlB%Xe7bYc^>>i&gmkB+ zI}zQ<=uS)*4Q;bScM`gC{?f!cs{MaNcXGN@(Vc?sl;t@_?^pk%J2l;Dq`wI->)4%+ z?#y(jr#mCv8R(8tTbL00(#pEo*l~1c60<EZy0g%ojqa>;)kU?GHBM<bJKaA?npM_* zb_0NEWzNcupLOSwHLUHrW9cqLcOJU))18;@eC2%MYK%vB0lEtgDJIAIe|KRitc;7$ zT~xS9*5l%IFQRKzKAr9oboZxg8k!DE(p}S)T#D|}bamR3?lS7$-DQ<s$ntbor@I2( z)#&QuFS;vfPVBDia21EEYBI91P(lguIHXZzfwkyvN_TC#8_`{d?s|0B9qOjk_33UP zI|$!UbTgnq3E9};CMAXLX8t%l|3h~Rx?75Ktk2iot?2GTcWdX_Ms!KomhN_rZ0~Rf zhdVml$>GihNAmwlcTXqo>QHLX-Hq<<j_hI35#L9UwtM;G-Xr=x{<tsQ{Y3Fv&^>_e zVNUl~fbKz#AMEfDhra%ow13b&hVJ1`Ji_6T1|2!d;nA{^RPyzISL=Ve$2&a1;fZul zp?i|XRQKev3puXEKi$&|4vFe2XV5)U9a8vNbk82)I{!)cT!-g5JfH3bF5yB+uq>{X zx~s%qLibX-0o}{!DilNaa);{Jbg!U$CEe>Czslj&bQS-htNR}u`4`>mG<NJ!qw<Ck z-6K)mo9Ny=qTE9F){>L1LO^u&Er92`gYF}A75{PiU3C3SW7p6Bi}PN(3MF~!{d6A~ z$$8Kz57AZpM+^?>K1%m7x-WR@;|`yo`=ldJiA^$}raOxNbf2ZG^*`O`f0sko<3HV( zoLT389PuMST^#|U`x@QKsKhE=ZJ>xvazd>eyLGze=o)lCq1&W8pc~O`(~ar+YPp*X z{gT=uRqNR7-0jfq)6M91)#7pvM(jzl#Ywt3-9oO$=n6_$bH7gaJ-TnueVgu^bl)mH zj2c>A@g2JFYANM|)RO4FPxnJ}n{+=Arz-LhUHuD;_YgT@x}Vbh(R;{ebU&x7RXyD= z=zb|4;a@q_D*)YZ9DZw1K17u7>Ha|XKcZMqGfyJoPr_{y>Ha+Ge!tM0&?&#t{f*uP zV(X1ZZ+vC6pV{-KPlRZ8F#5#w|3VLX9eR_{+mGI)W6WLmCZjin=bgM<QP7)`-oBb@ zdsESynx64YLvK!c)6$!j-gNYQzLQMb{53d6M(+9f|K3cF+xp)qzWH0WOV4zhO)9BH zEX(XRz0&)W!#T>Smfl?Sj5s&F1w8v$dh?h{^yYOqpTp4=pg!l)TacbYK=c-NxQN3= z9WG{2#VPgA^p;TR_BUPzWvC_TZB1_}dTY~Ln%*)xb7i}DQhQl?%h6kv-tw;M3JzCv zxRS$_4Lav4k}uq9w3@@!9eUiXw<f){Mhqr)9eSI1u660Hr@g1%`VKd6xS_+19Byn- z86DEwl%D(lp8P+(EgZ`K)BB6Vtqh7^lx^tkN^e_wwpO%4x1+bcRhixn4i*2Wx0A!2 z9qwXKc@6G6z5eg4_cwaG>Hk&DR+6wgy*-@s?+*8LxR=Ad9cuAEl(6xd>i@m{>Agtr z0D4c*JCNQ<^bXQp=)HsK9YyaDdjFtzD80jcZT2rM43z6|dPfLXq3-{!`BbB$=^aP! z7<$L*#nY@^E=6SX<LRA1??jDI)4}*H4%R!F-tF{Gp?4X*Q|X;e?=<BS|LOGX7<`GJ zNzd2+_9&a2L+@gG?)-al{?32C!wVc<NUwYaDEX~{N}fxFNW$gxZlG6o?<?qCL+?t@ zc$M47O22x<d9Bm`HKJcf@A?vVIX8N$4uU#zGre1!F8@#Owm)$Go8Eo&?x1%!y*ugM zB`;)6Ikek7^zN0dEV}64fZqM|9-;RDy@%*o<GLm79l7_g*nEvg?@@Y>Nse0Nab-0B zqcLdB_dLC)<obF~i@}z`y=NRgOYb>RtXzY(OzLUw(0%Vc1%K$hOt0a{EA(D<<TaJ9 zqzb*NBR2F(O5lwiI#m2;L~qiwPpU0T>@XS8TmC5jPp>VaWs#B@y)J$0&prAx(CgFt zl3q^l6M6-`H|Y(eq@2U+^xhC|8TI%Uy$|TUP47K=@6dZ!N#>btRimoCuOrH~dbjtE z-iP!)cH&2}lF^OFpgQoU4nL!3uK?C1jPivL$^VL;O+cpY*Yv)j_w9)8!5?vcPwxlM zqVpK^esuVg!=DX~_<x~quKQQ|6Vm&Q{`hL9zDHfmxAZ5_G+`wQpNPIz{`75gK}7nK z(4SPPR^_qdB)LC1{i*0rA;tPrYRa&mrP_k3@2@KTX`F3Z`Yu*krZ1JDKZgE%^k<~+ zF`WKPmXZF<^k<>3X_5Y{4h@;j1<pQPjFn6M{v47cwz&*CGPlFA4(D;`_rIww^V46R z{sQ!uq`x5jMd&X?e_`2QRU6N%xhVZV(_f7K;=>lPB>M=fzXbhpqF5l^-djakivBWg zqNU|*%Y|!yS^CQjJCdxi0{u1VuSkD2`YX|2S!^=qD)d)1-Tqg!47)o0HAGaSTi&(k zuTOt%`s;ed*HMycv7Rj8#W{Tgvo`$=Wph)*hIwE6zw|euuk%0jH`AyWvN`=NM);O0 zMZ~S>KR|zL`rF6|YMO27UrB#E`g_sep8gKHSw$As<)8F-qQ5)+o$2pN-_HM=o*r0m z1JeJSQ+AUD%ypEbvcHFxPyN5s-%~`V)8Cu^74-L^e<J;T=^sUZKl+Ez-=F?L-pvl6 zf1sPf=cfL_!reIZeeo}g9p;?Y&3ygeKVrmiWXVkbX!^&|Kc<vJ-_HO1F64O6t5*O= zPNIJS{gdgROaB!5XVX8`>E{2fpwo38yMKnmGaa6#S4fj)P{vUR$T`jb8^1aK-wV2s z{$=zpqHor__;<RqU8-43{Fgh_VE1|IpJT?3lNaq@MgLa%SJS_NzJ32|4SlUcMGNIW z``0<VUXNyNb25FK0!-jdwn;}{w?NasMX7dgN&hzbcR0`O^!*A5+sG5co%H>xg#KM> zYxRM9=-;P6V&C_F?VnTn_e+R%BwO|MAEf^S{fFqkNB?2^mimYn`l!Rl=s!pQan(hd zJmK(3hfmSh{;%WDIDFRNi1NHsUT|pV|1Gag0R~^D{|bF``-a;T;E_-B(*25jb-y~Y zVL-p<JR$u${n&AvJ1kd|zBktNyZWQ~e<PanFEvc*oAWR64*hJ@lwA>r&Dy7*k9Z10 z=nv?>KBBzglsD<WMgLv;Z@Xgel!^%sTlszZpV9xonLl*+(MZC_{`iSQ`G0rFBmdu* z|EK?@!>{On?Z`I{H3iW3*M$D}rM3p?|A*Wh-H+rm(f^5jGWtI|r%fNm|BJ(4$tQB; zH*%Xm-2(aeqU1USL_VR2<|T69gcU`Hi^wM-_YlzU_Q@wFH~(Ksn9_NsayT{lG>%M5 z?o0h#Qvmt&<TJQ`uq;;ec;qvdkK{9x&rLpyv(4(zM^-+Y<Fgxd<WJ;tsHV9l4yVke zBvHot<2(+1_c@<WNh()IKpk1o;X>p~JF>9DMI0_lzL+77FHT<a>lJ`}oWmtYLY5Mn z=*x`wmnAp<U*=t&+}8gkz9RWbBYb7@RSYLzwWPSttMh?1)*8Gu2l<-3@elH~DDEd; zo5CpTkbgtIF8Sr;>yd9uzCQVu<QtH0PQD@eCgdBDZ!Cd-Uqf@Exq^IC^361CjcCvY zOTL9xYrZ2d_mcmGd@J&8$nEk6y9N4R;<Uc1r0vL0C*Pj@aPl3<_aWbrd^hr)$W6}9 z<hy7dw1RByXWPE{uH=3Xj0v%KWR<l$`JUu^kZbWT;nqy%ZSuXy_f{#Ey&M<$zT^j! z??-+h`TpbwNUSZ(O(k`VgM^6F@I%NCbM+1t#e7lj_dlE3()kGT6UdJwKbHI`@?+%6 z@}niq6tI^*+kMWDBR^i%EM?jfB|nk;RPvL^Ptn3GKY7S+^37<Hpe+C?uj0-iKa>1I z^0Ua#BR`w`9M#uSRpoOv1*?wdlV2cDZqs79P{}VMzl8i^*}>*+F<(l4nTl|;7?Hf} zDp!yP<X4j4Lw*(ct>jme-$Z_msZD+@xqJBB>U*87Ey=HUc!SoNRxg8AUqi&K5D@t- zqG(*)Mt&#x?d0|<H1ce@UjZlPyPU@sZ_~+E;=h;tIr96+A0fA{_#pWMrDS=h{2_Ax z{>!RtRS@M-@~6okBY#p$h5T`HIe*zi@}Cm!N|HZA?w()E24839&y&AoMU%fkF6S>R zDc8&7uaUpv@?TX!mL%OO<o?E;SBJ!*oRItt@;Z5kyg{CjH(gFd9;;r)W`#;UGo9Q% zdFpgu{pv9zACPy+bMhW}e`wgUXf>Stzq*8&eF{+B-z5Kt{4MhL$luo2-}yV_?@Dr6 zNAbK*{z0h&x%|I=qJK>OnIrE1bNB!9DxZ^oMg9f3Jijt}%aY6g>!-&3)_eYU<o_lA zUSaV32m5C?H<6-1<Q`4Re{%fivL}=OLjJ4TMWx#oz;qPjQA|TIKE<RI6HrV{F(Ji7 z8YU}kqM<4tC??TObT%}MZlxEKQA|lOImHxeFLMR9@nP||Vk(NM#be6}gEn%DX(?u= zFd<_orl*)env_0arA;Viq$tJu?xEGan1y0CidiXq^Vd6=MpiL9#h->IwTVMI%t>*y z7cm#b+!T9LjHTFuVjhZBDCVUwY4cGmL@__bf)op=T(h1*M<^DiSd?NBJ(`8hlN5_l zEUuaw#msJNzhViBWhur{Eaipz6kzV6Sen9}zg5SNxKJ!du_DFt6z=>jyPfGWI~OZa ztgKp(9XD*dVpWRuDORIchhlXKbNFjeC=4R+=S5SjEtTwp2y;G#jsQ`tCyMDWD{Vlr zu@g6R=-=zv!mlusYVq%yZ${yVKg-(LKjjr$YIZ2hbURUOMX|M1lH_eDwx`&ZV!NS| zr2{N>pzuHcGK1URmdf3kVt0yNDE>zASBhQLB}^rgV};tdD0Z_JahZEi>`CFLr>rNK z4$7|cpK`XvJ`@K~>}&ey@A-=TDE1%LU42HE|4<x6aRkM|6#t+_eTXcj2TvR+4V zxFigPA4%bxza_=aP8Y{eTuyN;#qku!X;00%lf9A@Cs3T?O>-i}NfakbXH(1utj%bJ z@BbF3QJh0@I)&f=X0<a9P@G9|7RA|OHi|=vb15#NIFI5&=Q*F^0-0r)<syoUHR9~i zeuh{Kv$&MvGB=%eGbzk&R^KbUGhaz@EyYz*Nv62k;WetJQyek=>nN_LxRc@rid!je zq_~CRCQU1{^UW%&tdT5v8^!IayBW$RzCyDA#T{i^Q`|*y55@nM0TlOA+$Uy}X60HG zu6Tffwbz3bzfn9y;US&kVTwmo3svD!hmTP_KB8y}pm<W<!+6Xi6;D$<LoqNrQ#?!Y z97TiTd5YI4UZ8lH;zf#=^bayF)3d)qF*^KdPDXy9LJ?3@DMrD6AJG&cg+Bh$7Pehm zp>fxw=up@YZc)S(i7a4;I&5BEbta0GqOG#bs@8jDmW-lL(WU5#XmvLz>*W;Y`F-En zFT|jDo#JzfHz?kxc$4BCinl1<7LN%x<yG-_DSY$S<k;LNIUi7bOz|PbM<tK=<;Omu zaL=#WeWpd4wVl0!6<<*NK=CETw-jGdxbrt@c5h7aO}Un%_>SUxS9SO;422CY%ljk6 z&u%V-fYj?Oqnha#ieFW(J=*HUN*s)*5iuB_0SqQ!Frng9W>O_h#9(46V~0tsQw=6z zum*!kJ!vuq^Dvm4!T&Lsg2BuTrevTESq4)v(6`=>Ps3o^5?2QpOz*@Q9FB1~qr;gD zj<U?cK#`w6P-bH=7lYYd2S4R9u=_u+WnlMzUMn`?b2AwGdlu)Mm%(xj=3}rJgZUXO z@OvtQ1r2Ag5QBxCQ-}W<ENW0Z!WU<-wDTCgglj&|;gSxQ`v28ihQYFb$h$m)6&b7` zQC=wqD=}D|!OEU@6^9-Ik`AktJc25BO$NI%Sc}1y4Ay3_5rcIYtj}Ow2J2~(wN|s% zlqEM{u%TvWGnBf7wcy4KHe;{}gH6@DEXi8gM!{fn23rU>P8-qI2L^v(umgjw7;MX6 zYX;khzx0_(-HyTbD#Z>hSc#IbBZHk8?4*Khd`Zt;7-(5OocgV|5B|nrH~oXB_4C2* z4EE9x80^8oyq2#>2YU*Uw7nVZ$6y}@`-);iuiQWx?5{^tQW+0qa211t7+m0w2QxT? z!AT4bWpFfu!x$XF;2#VQm*zI&%9Y08NCro#j;5H`h{6A(>MWpOCz8Dn3;b|fF1Gl^ z_2KUBwzw?|Ebc7s?hX%qxVyW%yTf=U$z&!oNnmmL>R*|;%XiM4I+g0`>gww5>h9`J z<`^o+Q#qE(aZ=tc8yK|pcI5;rCkhv{yc3m^shmaS6e_1vIhD$3s=kdxTid8cXHYqF zsGeyk{<Eo^YZ9oOGm>x~mGfmc6MOxFRxc_SdVTf%XGbn}cnOtD9l2~o_wWB#tk&lL z4O;x)mwdvnrgArxYpC30%22Vt05)j)TqoUxUr*%*N9_N9wc&OAW-7N+xkVK5-0JW) zJ=z+ea>s~%CzZQO-0AmF-Gj=#RIM-FN2N#Qek!k0d4S3@RLuWBO64Ic56fs~1a(5c z0;>M-7!_Uer1H4KC#Yz(;J8AF!o6{+JWJ&jD$h}QnTpPTo#zEAFM8d5{qKEXm}|)J z8kG;JyiVl<DsNDEpNcR3RpMJN!Q=mxcc^&qU-b8e5=v>q(m$for1CM9uc>_E89$}+ z1(nad^v_Er1!a7j1q^;w5~+OS{1qxyNw$VI*Im&O0F^qG#*k=9D!oO;?|)X>R1zwo zj~d<oq!K&qlyw&rv0FY;NvZrqrBCI1Dg!E+=++4()6ah^1(k1IF^~UL{!^;wlpm=4 zsLpR$tO^qQGnGH6{6gh7f0UDP&fhg^47XXYIv&-(P#s_T+s|@UC!ji^Qmu{-sY2E0 z6H}d*>LgUBpgJkl$&_kKl<MRf!uB&It5Z^)n(9<avY#mK|A+Wrsm@7tI;ut=<Ehgd z8`T-)f5bc^)tL;ZI&(>Jd={#HMo^vAd1j-k_|LH7j!>P8sv`fYUDbpC)p@8cM0H-z zGM~fw9WLN-L4&0Psvi8QE;4#tl<Hzb;gYsE)eWgGL3JgnOHy5$s{4PdkqxfuGF099 zmt(xT9M$Dr{t6CPR4JCEs;x|QEvl<fU6ZQfKU7!qy07j~-~SY|LGP>1u(oGhhw8c| zk?ML>*Y_m90yM1eMpU<_x-r$wsczy~Hg&j}1eQI&x&_s(JmZ#BHG`CNr)*7i8|UA) zq*L8)lxqj7yHVBsALrbO>dwx&%ZTz1s=GQxU36FlHQ(;Sh1l<Is(VsBhw5Hbt-tL} z^$@E2P~DH}zGCx=Q{7(@WT*qE9_YwH4i6T+w28Uy>Y+|NY?SM8s;5&ug6gSMb^c5B zD2GQ=J%Q>m#zxiO|EeD6`0-^%K_#8&@Fc1yd#+OqmJC!!!5^Ems%KC=%Ncb4-%a87 z|4oS6@m#7`Q$3IB6;#isdZBY_=5pjBhZifO)VqZ0r6c?@s+T*_C%&N_uB7URzc%`O zEK|LP>Wx&drFuQp|D$@Hvj4Y}+#q~d)=gAz@f!L1U&Y-@^|q3qs<r@B?{Ijhh_b+4 zqx#-MZF;KrQf*SbkLsIL@2C0<)d#3PO7%g{^^j+I*rDJ5847vKQ}zBA)h8VKZn655 z;hv<~!RgOZeTnLGPJDi(_6t<y|HUJFzU-;5jPkzfkFQaE-6i<_pP{t3sD4QGZL05# zM7jT$8t*yt`&2)W*r6I9QT>MM$1d;_s-II;Ajls-6PsI->KCqt`~T`!RKFf3$$AxM z_TY~mJ>F8SQ*D%TJY$RMA5;UX8Pzt`F4eG<K-G@`stN&7)e!*Iq|8XQ=aSRWW1s4v z#GNgt`UBO%dA=Q0=R2zY-ca@XlHyfX@W<JHqWUw{U-W3zmrZ<;S^bUb??a+hp*9}1 zNvO&HQ}gRUwF$&r(-c5W>wjuEoY-KQk=mrx{N|5x`9+}G6x61nrr^Jenu^-g<MdY* zYKr(#`zy8SoI(D7#5@DFjj7E@Z8mB%QFHxkz6((4vrwB=MVIrDN}QeAQq<<4wg9y` zsp*`T+FaDedJ&5Mm%^#J|F60KugU+9N|gVnwh*<&sQLQ8ru9FyMaR|AAKh*>KLV)v z5kSr3Kgzo_wN<GtBbj<!mfCXER;0H4s0d8~!c}V>0Z?1n;VL33%W4i+r?#FWYdBof z;aU#e|JT-`w(dBssI6~FuG<C<H*~mB$v|xrYCBTfl-dr|HlwyRwavw^(rp)Da7%}Z zBT>_g;00|X9;vh~H93E3+m}g#L!O<e?MH2AYI{<1|1bW3P}`N-Zq)wyXMSqC+at9- z9QqbO%zJqedyfR}L(R7UL-qEjc7W6v7Iz@EgGQCo6hQ3|YKMAdhtA*e!>M0O?Fec= zQah4bMC~Xq^k`~dP&<a&=hTj+b``bbsGUpgcxtCnJAvBC)J~*!l8Unht(>hXd<wNw z%jK4c=J{)<Q#*^=8Pv{{Znmv(w@mG9YUk+D)@HWgSKjleT|(`AY8O)TKYzDylPwNw z7g4*|PXzpGgsqoqmr^tS%cxzhfURZseH^tbsOit&%c5Q8)zluNb`7<gsa-qVFVsrK zu5<OSr*^}L?*AQA^S^*mPrikkzU@QpR%*A6cy6b5hpZ~P;{Vj{Qj+-Zq4p@Xd!2Y6 zwTGzPKjM7AiNo*zII~XyHJ<`JyE8ma?RjdW|9`3Z|G(6p@}#F7K11zUN1ih{68-|U zSE;?|^p_mI>_xc$AL{lRwGXMiPVF6P?*FCvo7CPK3Gq(=sTThIpPIh^L+yQs9~d05 zeI#5-A3Ie1pW3I?J`>%|qELzL-D+P_`${b?hOgBkwhgR(L#^USm6~EZ)M^gv4s{EZ zTGL^RS|EXz(IK_4#Hq#JnLE^SY6-QBT35G5YdytmYx@41BYkQE;ns@;{V%y|76Ka2 zQ@^F=>;Ias|JD7z_YU)eL6`p%^-FCJOYLWBzffP!iN8|&jk*n`->FYY?GNfuACLM3 z)W@g(7xm}z@`eq!`h?Uc62**QebRyz^@*uZMtu_MlPWS`bSuklCe$aVK80{&wrzze zQ=f|Z80u3~cb{LMMyaMu{jb#J{I%<JXHI>3>N8QFf%=TYo^Pqr!Gz4LabbJy`YhBJ zpgt@0xv9@aeNO7LQ=daosj^Tp&qaN#6tMAVMCm^db-npTeO^hnzESu1zu}v1Pklk^ zi&I~S`l8eqroM=HY!714TD-m(buI7pXfkaS*O#EaH1#E^FICDHwB=}h8S2Z5$2d)M zm9jkbbE&UD{b=edQs0UCO4K)@zB2W-sITHYt2)&B-;vd+`}hCr{{4R=O7hy&*QLHr z$>Wsugez%%hZ|6L=U<oer>@ICMt6Ku>RVCYjQSSTH~$lTOHcj#pD0^X-==(|zAg0~ zsBh;y+y9A2_diFHcc#8C^<Aj{W0Y%G>i?o%maFgoQ`h33`W}DEwWn|kBiHwGxHomb z|7nLr;@pqA-ua@wf0>2)fz%J9eh~FTs2^Mso#D`NxIgMP6!pU$9zor|{~*dyBW;hN zeu8rzOWoK1bzlDv&3Gd9v#6g${S4|SOR{u0h5D(EoF<B-oj#IwX2~;pJe&GCC6Du; zNBv^z=TpCk`UM)W_6J7w3x!zsu&!l6Ds|>dgjl#w_+`{D7lV4K_2DZVxzgcPBl^|; zc#U4=7MuNkqkbLrpQ&F@{Q>XlH#oe};Z4+UcH|c7ez04=)gN!8e!C-gjM>84>rR9I zc$Yz^XnLZ4uO5Zm=kR_#+F5h`LF(^Qe~9|C)E}n)gr_S0L;X>Qk2!pN%(mKlI{u`? zryOeiPyLxPmAbG0>(5j7rGEVd>Mt6D^Sm_1?&=KjSDfPO|N3jxU-!p1MyYR7_n1Td zZR+n*f2XXGpep!Y`AGc(>Vaqc(BVhatvVIz9{;I-I+FGo_0Oq)={#SEIF$31OZ%F- z;y<NK=c!Wn#eco-j}2#QmJHNeB{TK5r-szKjzkW93aED+PYinA9`*02r+SpF`VI%w zv(g~cbLzzi|5j{nDC+-l&hM%JAfkHgkJNuEaY0*h)PJG=s~nnjX^UFaf2aP3BAixG z!{h&r@o7vz<1Y%~T2C|QW=^#+A&rS>Ohp44Q_z^0#w7CF?(1kwN@Fq_lj{b!iCs=( zSp%Ulr3$sa+L)Tg3^b;pF&&L*Y50qWHWsYIn~!abp)tL1n@Y;nS7SyRrq4_?W;UHQ zl^ETINn;iov(cDU%yu@R$hOvOH0GdnI*mDL{+-5LG#;lhmc{`z=BBX`jd^Iyr@A-v z3V<W?(^$@t1!yctV{sY_(O8tm!ZbYiW13hIc0-`C7!8lZn1iyiq{9+4mZq^JjiogF ztrqsP`MR+T4fp@5g2&q%%hRySJS)&xg~p0BR;J<ie`F#p6b;f?mBwmg?6lDgWs^%| z_0p;|)}*mMjkRd3EsvolSck@XG}cwSSauVlCjODe1~fJt9hmxkfQBCjH#VWMts7@k z8k?y)GSucYwiw}C()hc+J<`}p(v-Tj!)?T%=Ch=K(b%4bUihW41C8PTzl`{IcKR+f z{Jv0QS7j9EKWWJSJHETaJ(M)0?CF%f9PaIKABX$W*w4##=RefpKpI!jIEcpOG!CY5 zHjP7QoJiwP8b{GMjK&c({!QcXvMZMT!KEn#<h47R#&I-`p>eEQ%A<?Ua6F9@M6q)~ z;~aLRlRW8U8mBmNs>9P9o<7q541YY+;aLV<=W|R5jdN*OpE-}lg*48mae=h5b9^5u zG%liXu^hhjB`a5kx|D|B|FL61<Fsy|;V`-_)3}nxZ8WZ;aXpQzHJls%@qZ!L(y$u> z{$=ULb>0(7{015~I_FIeZ+56Ze|JRw-;vuL-a+F&8h4IT@1k+H)Ac7fH0~AMdh#%@ z{67t!Wf~9Cc*q|gmO#-T(W0(lKRN%AKY4=2*H%*+Pttgb#v9J_G>vB*dDh``G+uS& zc^WS`@}faUUUK*{jaN#FG*Kz9(Rf`Hv#K87r18EZZ#jIM#ygI@YtWJRgjh3)*~aOI zj(jAdC?C`CzknD1DUHu)eBt!Z#UML;IYPb~Dew(Vb3_%IGtsEh$Z6DQxO;E-6wqk6 zO_~nn|7mF6QU4Jh(uinuX~_9Ir9;D=zdgzcc>Jf4(#SluPs8Fr<B7S1>Ldk?KWNDL z)A)|Y4>a8QH@<f^t$RJ`M;h+`#rCsP6a}L3D~;buw?o52Kz0z{9FOLNG{+Z1Q}G{1 zCJ<sJHYcJv1x;v9N^@eGlgJu2YTS3xoNUBD`LLSJDQQkmb1Ir+XihC(+MLFiY5FHm zRfNf$uFO7!wz_D}KyyZkGRe9pW-850Q<|s+w>xIcHRe4`hgoUPMsqEiv(sFL<{au~ zP4oZr(VWYeX^tJ~GdE2;4l_CP{@I2!=cl;<%_V61{zX|9qPZ~5|DkD9fbrY?PlFc! zA6lN~;;xt;X)ft-DUJQ+(q)we^|&le-()qHr@4x=t>AD)hbz%s`M>-UwJJ@I|1?)O z2A8k~O$C2SHkxbGTt{lyEYMt+=0>jAdNeKm?>9r58_?Xa#GPkjnw!$}@Bi3)SSn&O znp@D^TvxN~XV+|+TMDsdgIz&sZbj21Z%uO>Z7{6|Hn*jDKF#fD9zb(@nmcIkY4*1* zUUNs9JJH;O=FVQ$E@~+$=2sn>yVCrpm$;k5-Bk-?kPaUF5vR_7Y3@Z+@gJJ|c<R0m z_j9<v!BH;%^Di5l&4XwjO!GvVhtNEV=AkqXr+FAn|MOp)ugw&;n`<6H^GM<59L&?I zE=SWmj^;5mkJXyNI+fkgvim~K<7u8CHY>}jrXGG0%`<79O!G9Fr_elA7f5W4VRCGy zZk|r_3~fj^)d#V)q;H-@^IV!|(>zBqt(vy1GLO+bPYm`Geu3BMLX{#TTtrjxf0~z! zD3{W_%=OgEzlu3X=PPJg3ts7*SJ8Zh=G8PGrg;s`JDqqf&Hr=cI+`~-a=pVFXx`{u z=%)X_kKIC3&Y$LOo_f1OkN=or>a=%Rsx$abq3K(I=Djq1@!!1Pc^+{1ph4%<6fnXc zp=oXOjMFs*(0ttC6EvR`n<!7we7fX!InR#h&(VC|8D1DsUZnYw^C<o!qBMM!=65t- zqxmsSt^YmC8#Lc^#JcqRj=W9t9p`_y%uDk<F%NbAz<EBT`B6!6&QEB5LvytLZ+=Ge zb7hgvTL07h(&1M$J^nuwW&S^;S@onE&AK6@Qr!PHn>6M8ogtv931Y+$(ezb)Gp5-Y z@n{O5>AQobPXSHe0;ui-PttVYNbaz3`0YsMe`w81^LttoI{gQSKhpe(mie)t{n3vA zREo#{o4?U?=dU9EDCLN)H9jr*e_9g^iN?^Hh}LvYgx18gw6>=;39U(uht^~c<@{+) zF)o+$Ohs#Ir%zMTX-!MZcM5J0T7Lf9nx59|&OZaK8EMVp_)N5B_Pj&WNrH;dDFCg} zGFY0-;rw$t^eLdFDS+18w0yHOENebmtI(RC)-tpfptY#;Ea-3{hYQnMM5T;ttkz;q zx8fG}LOuB3TC(J!wG^%Y`hQx>I<x%0Bg@lT!E>!R;$O+>D~mx@Se4egPFaoC>a^CO zwT3^g>8WcuT)WIGSoXcvdbBonw)GuuK+EGlEyaI~VvyD*LLApdueBMi&1vmPYYTte z(&67}?c~T-w6=C+8;9FE+)hDh<=x)l4zzYGDF$in?8IFh+P`4?4U^Wcv=skw;%>Bd zAK`mA#Xp=Y-S(n&j8pcewa+N;zO?qEb(qulcX$A;1IMiQ7OjIE9_;WChld(eMu)Wi zP3!QHoFi!Y_kUV`1yuSUt)!t=$GYU>93D^W1V>I3gE&uec(TJ&9G*(+G(+^0=4TKZ zJd@yTT4xcgLCX-2Z@12&buO)YXq~6oq;)>6YiM0S%P(NG{0dO(B3gd=r*(--yVT)j z4)y&X%jmfI|EpZcl_inZ)k2(s*0r>*qop}(#D6_4ckHbjXu1DyDfmz8W{3L!cUrfW z%q66CJ1zNtS|0pwDfmz8zkdNhOYwgv-skXsS_=L<uJ}K#hiE-a>v39-xSU5v>OCel zN%r{vQ0J!z=A!j9!8Ej<q4gcDXK8h4Jx5C?wzQt7^#ZNeX}#!=FVT9Hmi#}hS0ve{ zSGNGI*UCp)Z#d_h4&QRlx5shPdY9JcwBGa7_my3xd_e0%M?RwUDXot^*C*q0`QvBh zBdsrJHE8+aZ|f^s3Nq9B+M(|M)2h&_{{MOFqr7$nv@EejE1(t9YLDZjrNdu)q!o|& zb@)q5m;W8<(bD-Zt-iwnt%6oIV$Q`jw1)eCahm`CmDcyp@4<f&fAq(nysV#T{W8p` zq~8e4d)pOI!~YNrw8C^`e1g9?BL7b?;jr9bA_AP^=f7nYf=QiIks^Z04LYJz0D>tA zrW#Q+1vqh9g1-^`m0)^;=?KPXrDSf(_P^$?gBb{B)GEk`c4;J-Nn<e36yV4#1hW&& zN}!95;<1(6T;mbUK`^H_5hlba237i4g1HHnBrpjJ6U<An0Kt3&^Q$;xv+TB@4HhI= zNJ^I9O;T}-5Lm4jC0I<NjLp}R1d9_ap+{Q~S{T9Bguzk-D-bMAupGfM1j{OfWs)tf zD>=)TnrN^DD-x_iuoA(_B9_Ze+Y<$=68Oze%cAP9u3Fd`P_QP!;RI_D>`AaT!Bzz8 zXw4a{ORy=ydITF0tWU6kG`A9M(HLx~#jS*FOt4A0YE_cm><Ts`*n(hlJ=#y2Z%Lrn z9NY+Qx3NnQY)!BY!9NJLCD?&rJA&;Mtg!l8DYj+~b|i4OAMB(v7q2YAE@Ni(B}cF; z!R`eAB-l+BD-C7e;|l!nH_(?<RdHEnF9OqQZ>^AneFzRB*q2~GwXzw<wj{y+1P2ft zXv{-%*=|K@AMEfDf<p-oQ#%^J{l<Kux=7j)1SfdwA4zZ&!Lg1X?eLgU4?NBvk5_j4 zS=H2AP9!*q;0%J3{qYon(+N%;v+gWz+tbu1jngz-*E*rc|7|lHjQ;;6IEUb6f^!M( zCpeGbVuJHs&IJS)Dx=!vqH!e>SkvD@a4Eq}1eXz9MQ}NR%a<}&c-|}38SE#@)dbf$ zat*<?1RhMAZ6j^sOeG1wp5O)oIe!)BsuJ8xaLWk4)wADLrV`vPM5exz;2wgzJoWBj zc8&Ub#USLqAyM7(0fGk!p3ybq;30yCO+A7~2%aE#l;E*3WBu(9>7&1Z@ge*qftLLQ zPn81I2UMeH37%7E#j@Co$-(p5z6CERlp4I~8DA2=oWLuzZGgW@+x*FEv?m~VouEzd z2Ek_pZxUFRw+P-Pc$?rI^#?D)x&*;{1n<l2ri=|Sb)gRlJ|XysK!Zhn(tgtCQz15U zsl?9-ssvvUd`<8r!B>)LUE1`qI79FaL8Tl=qKi@^XcE*38f6bxSsIcpf<T<6k9iDx zqa+9kz9WbTQi7NuA@ElKj7K_j33|hDw|&V(BezeG6ATD4sb?e6Mua361m6w^rhSgU z4%7l`onHyQC-{lr2LgG1Wf|)HGr=!<v<j+IS&RQhdpv^Q3FQ3C|65T<YL8D_&cD2h zpbA>Mv?ruJ5p6^l&%}n%o`kl${kEn6r%z6M3R%@2hm@&kPb~{5m&bqF)6$-a_FrjF zujXh^=c2}l-|E$#fwud9E7vS$wr$T$dsf<(eHJ+!Q{JF?!nWm|UAD4H+1NB6+n$s5 z?X>5jy&LVZv^S(ZH|=F;&qI5D+ViT`ZTtT(HI3s7&|Z@Eg0vSgv9uSWt^1!U!XfQN zY5U^8?L(~X@gH$6As*FeDcVa5H-T1bB`r&PRoctZUV--VvbH5jw-tp8S;^tbv{zA| zG@^N}_G+}(p}o51vbMibD`ZW7T+89w>V76l^mQGs=Wu=6J_UH^q`eVsYpjiFZ%um> z+FR1zl(q-|hYXw3-eTB5(%%fOuYi`-(V%W`<MrB>_I9G%*GS5UM0*F?JJa6LQ+FCC z!5?>_?K8Lp?&=hUfb@Ng_U^PVro9L46KMa7_QACGq`e>Qy=eRUzc%M8*FLoOmCe29 z(B5B&=m*d~aAfL(L>!v^5ZZ^*KFWCxqdoi-2JORXAK~^qQnodIhqRBTeT>tOb$Fb^ z<I7aXPo#Z5?UQJqPWxnKROzQUJk{Z8BC5}yLHkTadxkt`dFt7;&++Cs*Wq~vo!=Vk z0@@eKl0$x<0@Tkhp?x#$OI_w=w6CLmIqj?c(Mr*uKhnO^;Z@2$93B4sxAwKpCXX>p zl494>zQO4?s?|ifNepTQp8`a=mG;p8yW~4)|492z+TYN=i}s7O@234IZ5t*J(7u=U z{myou1ey-sA80@5G9PmIuov`5S&-w8(SDNl<FubB`8A3yuG@Z!_6u^Y?Wbu!<6@t6 zsE_~CeqPMRshY~o(te5dN3>t2{Q+(B|L-{4tF+DkzeQW|AKGs?RQyL7hZcT&_$aaO z(tgkNe1BL4S>wa9OB<wZihW7@6WX6jg8AF_XL2b*KBxVK>Q&xjX?yTrL-lKQ8_B8A zZqv5E2KEWMUGs5Wr`^z?)<|#CR{V#y2mg&IJft1dj-=$UO*^y)p5*bLc9(X~E1Q;; zqOC}gQ!?5f<ZtJ+3oqhZl_jy?iD!s^?-a#<+>$>Ln!o*-&|L8^gcH;LmG<wnf0IqD zE^3`W2qz>QPZX<KI6k3G0pk%)pyp6_vJd0jLulXsF=*cc(i`H0lMqhflu13;WQ3Ee zP~&$<IHgpwh6tx7bUnjq2<17;s!6?YI>Ir8)5{v>YOGPh83<?8YTO>pBZV^)&Q16? z!r44^7Q$J@?ACJ$vlGtY$ebmea4y2JD%yCgA;NhG7bKjQaDGDb|0DMvE+E`~(r_Wd zMF|&HE@fH7vzrALD=E&iIN`N~OAwwy=ogd1r3lw0T$*qh`2_1W;j#{wBV3JedBT+l zS0G$b^|f0BW^J4D!j%bEQE!(GSJmWb=9Lbs6Rt(L2H~3Jx<XT%=xY<MQ{t|b8Erkn z%?Q`GLJ9r*Z{dc78x!jLZ!+)DlAE~2HZ3WHn;Sy71>xR=TM}+hXu`K9+)BmS&or?m zQ@D*Qxh>&#qBxy!2f|$lcO=}|Q~eb%=l92d5bi~|E8*^h{+?90+qk^Wu!qBc5$f>Q za6v~1_aQX9?Mrwd;eJYziS{QvU>qmmL4*g7_z!W0L+z2!UjZI!csSv4ghvn_O?ag9 z_$y$evIvjyEXR)I96u`S1ZUP;V1y?*JbA=(s#YN3X@utzp6(sP-zN>vbo{KcZxEhM zc#d$hygJW$gqIMW@Aw5Ho(l=}{uiO*Kl)jt>+w>;%LuO|)XQH^vG%p~zf!gE7LUh* z!mAy>W>m`m5l!k1dL7~Qgs&3bK=>fxjfB=KZX&#u@MgkW#*DS)ik804d>i5Is-1O6 z>y38$AKpo5gZeJQyVb|63I=7{dkG&Pyibo}yI;BNtlUn5WT=M-pCo*k@G-(i2p^Tg zmTKosve@H<PiS>&dF`iR{uJShgijN`K=_Qym;d+f?NdPLQ-GbV3|sRh!dD3O{ZHv> zcCgabdtW2$5WY_MCE*){?-RaB_zvM)gl}vAYwp@~kpAxyzNcKaT=XM&!Vd^PA^ec= zW5SPQUaPF78e)6f@KeIi^+s*@nMxEz!GAH>v=x3u*dY9xuuAw1VMRP<ilzNfEUXdM z<!#K)mPPe#5{85=!Zu+b<M=jB`poxF!iX@I2QZ?^k^F@4C&DgaLD(Z45T=BEX>JOb zP2_kpLjV4=jc(J~-gOPXCH$W7JHr1+ntjU2&ZpEmKM?w@11rvKB5V9iG(O=kgufI1 zO8A>v$HdxC?ezzdU$e1CtA+7Le<6Zs0-_1UbHLt26A5v15lu{_mw(ItDK8yOMsyU> z<V4#LO+mCE(Udx<jiw@+g=lJ`8HlDKnvQ5%B3~7I$1uwfjUk#|H8Lyd_rF9l64}ik zLuS&))`lv1(8lZ#%}O*k(QHI>63tFDhs<u$tm*AOOf(nKSnZO`v0Gb+G7r)GMDr5O zH)Jz@mAinlSO>Eq7A@qpUYN)}!m|j`vQ{;sMTr(8T8hXI9iqjhiReoZ$^WbRLyC?7 zh?Wt>dTF#A(TYUN>rr$a0jR4-D-o?c%CgERbycF(r0Ov58bq6Vt~H6)BHDmRi+`eZ zye{iHT+iY929-;7+|YRx|0mkmp`ZVH$0OQ|XbYmv#cV$rc1!2^dr2YMifHRUrEW`f zB++(mneB<J^>-lpC(({XyAbU}w6jcSXQQ@DRg3(C$S?m`XSOe9Nd9g_|03F*Xb*2e zHLK!U(Vj$m$s;+N=iP_sV4{7A4j|f(Xn)BxW*_)O2NE5mN0V$n+3*mee-j-_beMXe z8eP{^hz=(@!Vo>0Vm@r0|7fD8h>jt;is)FPbBK;3I+f^nqLYYDAUaWHSrIl^Y=<75 zOmvF+i9MQp)#WszGl@<oIzyaBAJ*k8qO(gLjWUgbbBQh?I*;f=qVtLT@}~_n7e#at z(Z!{IP#w*~M3)ko{L6?g*Z4IyYf$x{D~PTXrzzlGl;~=rJBh9#x{2soq8o^8kX}!8 zo!Bg6Sq0_2u`JH5eKXN*M7Izr_#?Ux3ZmPI{J(g7xLFZIcM&~IbT`ohMAo496WvR6 zpDbw$8_R3zEm3pb9wd55idng4e6{`~M2{0aO7z%J4O_fflrMUM=t)s5$m33o=xL&_ ziJl>Phv-?NSBRb?dXeaPq8HS5rlI=*qL+wX9#+IA1zTA~uM)jU^cv9{M6VAytst|H zdc|8rZ>ua<(o%`uCHjQuJ)#eZ-Y4>Z4z*@=a}j++<ae&*g;Xxlr$k>6eMa=Tj`*#D z-Uo=jB>GCYNjBZY`3+H*s6rGFRf!rzHKMvy@($zrG>KYzw61PHY1k%;i9(`CoTi3# zRP)tQhbWPS%XYLCUDPA`mMA4Ei26kS&9`WvTy`Nr47qA*{6h`DBl>~J2G{qchNBw! z=d*@9Khr;p=ogZ|5dBJLMWWy6EJ~#FU!p&V?JCYa#N!c<Pwe5HSWzHi+X5Jzka!{~ zDI6bhhD<^{nNudUypBvxZ2y<~Bk>gK8#XHAsfeeRo))o*ry=%lVOf8W9CP>{-;2i( zA5A<x@kYcm5HC(VBk}yiGZD{CJTviJ#D62!iLfee#*Akr_VrBcN5=6SWfJk6L(7O~ zY>5-kLp<*YpYKl$3#jh#g2W3G>+pA&B;q2Tq)$K-FXqr+I#bdT#H$i7NxU-gQp8%@ z6E97?j3di>MxFl>FJH<eUcr)ti@1{9?64NAj2KoUUWa&f;<bp^AYOAE|A^B+0i^8f z60h%a)*I#BfOx|pzn4P1G4Wo+n-FhHyeYA%w;Ayk#zU+vfFoO$h@ix7MZ7ifHbdf2 z&UVDR5pPetEAb8^O?D(!{D*kwl9_lHVjosz9aV}Pwe##wyvGRt7xA9|zx=(44<+7* z_(0-)iT5Yg|2vHM{S$CQZ58|>)}KETAMz)j!-$V?qULep!<975a->s^Dk;Rr5Z^_7 zEb&Fe#}S`Nd_3{V#3vA+ILdO;pR%7qe40y8{Kt{giO(qUk<7D*&m-0+fQZi_KDVTg zQqL#8U>ra3g(Eo^6aOFaCB#<{UrKyAvF`tj%S-I8Kr*i+zS`)-SB>&sLwxN}=1{Ba zh;Jmm-q}V`8rkY5r`$|@%bz6QN_?ATC%)a`9V4-KmOR9F6aPSLe&9pmdx>8pzK{4Z z;`@mo7%@NSk{@yj4?FbB|FQ0nkK{Z~`~vY4#Lp1x{txj}4xb*!<3gS#ey*et`}*G` z4D0n0@ms_%6TeCPiZj3J5?*uY@t;`npR&YJuD6LlAXc!*v%E|Ep7X!|Urz5K#2*ny z#2*uXMf?fzm(Kqw@n_Ee`AFawL;1s8UlS|BPy7vWWyDi;N{zVw=TeB9#2){N75^dD z{U73R91n3!oD+A52QDEY_RBwU&pG|_kIL$g(}6fEapHpbJJ0p)pHlxr{QaNg|43&> z;-BbDN&GXNiHLt8Hdp_v%l~a8N>hMvE2}deo$;00@%ulW2^`ny-jKNiok^W@Vmg!j zi9T70)0x~;rx@{1MQ041sp(AT^l2PU>(F-rCfWTVo$2Y!FixN|%;a!pI`hymmFA?Q z!#F3->TotXvs-pLa}1rT@VPw6FaLDr9w(5_ymS_!GasG#CB)06vj81k{&67-Ib2wx zjAB0-WHCA`*nCIF4xk^Uv$(@094_f_DThnbS;i2@m!-3uBg?BGBO0{1-X`wON^~Be zvof8_>8wKMbULfj*^<s`bXHf1HZ6A6(7f4Mlg@^8)}pf>owez#qqT%2Sn%IwVc#Wn z)~B<9BoA+}Tds}hY)WTiI-7{i$~9=~%+6+XHrFg{>y6G9S_JNA8LfL*1-J5YE$`NJ z{!M2aI{%`xEuCHHY)5BDI@{CPL2_)j>qXPqiO$Z_r`+w@{;^}f-RSH}$JgGrKeZxk zrPSG-j@|sX1;dXjUA5bj&H;4xqO&iZz3J>zu2o8#)7g*C{^hDhP_20&okQpxM91Sl zR&iT{sW}d%bC~LGl=4KZb2y#j=^R1lXgWvIIZ8n=TQV7g`tvb#j&lPZJLb6A^k>$V zr1m|5&dGF6q;rz?@>W5sm+h=Or_j;me?2Z_efTt0*6m5>3_54JDXcnYd8N*FXh#4> zu_FM3b_8JXd^#6+Pq@(GMd}QqUrgtc5q_ytE;HynzQpQWLFaxtSJJtvZ0j+Le@y3U zI@i##K49wk!M*Hrof(SG^>p-qE_807bE6rb&P@()c6f`!TOHnJP!%bmB;4r|?xJ&# z8{Ch8ZAaX>m(G1-#`=W^>zURZW&zP3r1Ox%vnuyt1sFSz&}q@J(eVPE$7D1q@Hm|( zREqE?>DWgg4S9M*dBz`~rSsf~^1KlH|A@|ubUvr^5}o(xyiDhHI`02FuhMx<@r^RP ztjfNjiU@g=&RcYR{V#pw|LMG|RO<u6-xn_A13Dkl`PlJ~L^QLD{)xj+>3k-l)9HLc zr)IUL^Cg|H=v3%@P3If+Rc%sy?b<2t|BR;%jto+#({MyD|B7fkmrg)uK&MSd>wG#P zoyd_`LevBu$yAd2|Bn2>ciNPW2mejZkdo2K>HI>cpz}SQZ|VGpj=ujX2K&gQ?bjsm z2Rc9bVE<9Q-S%RgpVgCXq-a$BN-`du-{}0|kH4$FCZTM&WPBkuvew>+WCD8gl1xbQ zG|5CH>ybdR5Xr<Ovye<eGKOSQk||02oy25v2~4IKO0!DoaVnCjNqp;+xc^T)0&kxQ zQtEWl+)F3XTVNzJkjzLjv*R-<sjPeAKG}R@;_rWnb2gIMN#=6SIY{OdvyFEpjU}0% zWNwmq{c#=-T^fBp@tDK(Dw8Zg;x~4TXx$)Lm}E)kU&P^}B#SxX;YW#G+#i=vcAE~8 zrAXEwS(;=Ol4VF%AX(NJoM$<b<%Qdjw~mplIHIrQsVnQzT0}BeC0Wgp)kU<QjWyBN zBw5RmwH>abB+=JZZxOOS$)O}0kQ_p?A;~@@)?_=9Y)rBh$tEP5lWa<|nfX2CwO(X> zEZKs@YPzNRp8d+=#x6m!HOY1)+mLLl?rqyQOES-yY)`U-R5E6N{hVYclHEymCfSu_ z7ZMMZ7=!g0@&A)#H;rX$2-DL-$H^WfdwS7+0wSKhNcNTujiJnF&LP>CWIqyL>L>fV zr~^n2EL-1gc(8EGQg)d2&GLtlTtV`0lCwz;Cpm%S2$G{ojwCs%G^3z-t>hRIyZNd2 zfJlyWc)VsMtE0_>$%!PVlAJ_xvb>ylPEm+v*g&U|oJDf_7+L8I62JUo*09Kf{UMzp zHmfG*kX%f1F3ANX=aHOWN*;By3rQ{##RYoRE+M&`<Wdq{{#25ul6Z?4ZeupNlH@Lu zt4OXRxtio!l52(%%+xB>1=`(@<a(0ZNp2vyjpRm>n@t*te*#p<EhHBI(SKX06tkWM zbCmrKk~`JV_L`?V2a>x<9wxbm<UW^hujcNdV)r}c0g?wv9ul#18X7f^kUU1>?^szJ zOp+fbc|tN(`jaE%sj}fno}p_+JnMFNj;{6C=jmD-y+G0>d6DERl9x!{B6(R^)L~vB z@%4Y=fBu!cZl#mB|5xhp2$<w;l8;E<A$eCBO+%%=M<V}E@`1w-OS<D9kK}(s;zz*Z z|BU4Gl859A5^W7iX(V5hL?qvk1SAy_t^AdwVO1lkyG(5moYHjIQV&t-ZIZCWN0ivr z>yYT=w;Vp!MkGCw?@3aUoTN{pH9v{=2%2`S58IrQ6i)nBM5TU5@*fRbdsJ`#f$k(E zKhm9m<R_9pNPc#<Uv$8c{Hmpna{cDe{lC$><0-q*yW`XSi|}&x>`pjBCZdaG{O-gh z#qmk$PEB_*x>M2B;$P}@75||-rFxgklqtH?&~?vm6dPq0b?i<@cV)U`=q^Zidb)Gc zoq_I5bZ1nq(r#TH1bFtp(e?GeMCk~a?rd~tFFEPXG2)+V#6Onq+#`G*x(Wf&_4tqS z&hHWy80A`s?$UG@rn{)q7a585;7|8|=q^cj@ey%}QLd#*ic4OG?s9aO{S#$*x+{6o z3UpU2vy6juSE0K(-Bsx-+Cz6Wx~tQ*#lL!se%2GZYtdcbMlRj8>8|6*y3V|w7;Ho< z;|6p$EOBSpi0;Nt-^AgjB`4j@M*LgQ-G=U#bho1G1$nojyR|s&XZ@$UE!`dHZbx@} zIgL?Sqtu<~o<(<Ox(CtSh3=ko|3P;*b>{A_x=zsj=kPtU?(TH=C~>dOzcdqxZ7;g} z)7@L$URBt~;l2*{Qz;hb6kQ=8x(AA4o}_y)-J|FpLf5+1p&}~vFx5*k52t%1-6N#1 z`L|MSJ6Y=<P4_su$H=g1_hXeR<aoMg&^>|f>2yyNzlbL}Jelq(k}t}sbQK6P{J&7; z+7`ffVcoOoUQPELy2gAi-HYg+NB07{=c{&OwN#*cq4L^Tuo<L#G2P4P+90}AL}RdN z$PlqzF2n}7aK8f7z0&ckL|5Kx=-y0MAt1VD5ZwrM29N)AJ^o{xqwbC7Oz7$rU}cmv zMS<wvO7}Lpw`=qb>37h*(++6p-lbz2@!YK>QSS92d>`F6=-yBFIk(0G4j-iZ5Z#AW zx~(?5kI;RRu5WF+k2%BR4xcC)9DmB;(+;0;_^d(AeKPX%UZWRW+KY5`;h*kHbanrK z$R^6GbYG+U`j9v*{Y`o^(0z+;LHBLC4Z82p{erH&|LgB`bl;=<zUI^J2XsHB`=OQu zdbC%74Sr1blaeB6OSSH24nH3f#q%ZIuSU|o_FUi4t+>urwX%3>bUprKg{pO$bURLO z(G47F8+0V3>+Aonum6o`6_JF5Zg<4fqno;A{QiG;;J6<Ibn}wmDc{nYg6?<pCU6P= zq5D1EU+DfYlJg_opIo1xOFbReB~rS-l@+A>JKaB2<(_|myf?n%{s|z{P4o%H-}5t_ z9*$33>OgN2dXtXu$>>c!PB&+plHOE~Ozm(QgN{r~&o@vKI~_e;{-ihkxV-dcq&GXg zndr@|#e<!!_5Mb0HZ3iBv(TGWL|cm*G}DPV2R$?6c=YC^Hy1ts+sB??0UE91G+J%O z>CH!KaDIBX(OZDt9`qKZw+Ow3=q)T0*^n`Rs9G;dZy9>_7XVMu`yYBs(p#L~67n9l z__1<T+*0(G7G5slR<F@pmfkw_mZP@{z2)hxL~jLp=KQrQk$lzEUjeX3^YFb@>8(L; zHF~QLSLqUNlGmi?%l_V4TDO}@R*FS(dh62Ln%;W!Hl?>dy^ZK?K+og<rh^&8ymxP7 zdVc@khWX#e$QAT9qqil!&FSgoFCA}{KCt(9dRys+|JG}WBKh0U+nL_B^md@P9lh=4 zpj;(+;NFh(cG9CUo0l-}+S`Sm$v1QDIvkZYh%8Rk+l}7t@@%#tHHvC&%%{`aQ$4V^ z7ri6s$^X;a$Kk#X_cQ3o{`3x@cZlQK0?_k)L2tALFmKR1)Jmjxn8SZNJX|`6`ACC~ z97XSFdM7x3483DV^yBCqUov|}9RbigX_R_0y;DY_PNjF+I8J9fgWj3+E~IysKc4OI zoKfC${qa0{?*AqB0wqb+i#+LKdRNlBWW;|dy~{@U<<4NXx}v0buB+(X;Pk8M>GBV~ zYe%}NN71{E-u2@&q<3SPm)=dDdNaLST+Xe3;<=sP<MgbV?xuGqy}Ps^G$n27vFW?# zJD{E|{;kEe5pd*wdJl~72c7Z|y@w@JY>&{>`(N}PD=CgYL28ZuB&m(rr|4DbJx%X@ zde6{%k>0cP-0k=L2ta-51?gb@N|kzv-rMxF{-^hf!&hCVzx*ZQ>-7BlZ^E_yr}vgY zl`i}pdfEcedry7U=#u{dz0c`===6^qYW+{|6R-8BI>gtbjsTqU1--B7eM#>tQEW8X zC{`W6p;sBRj<>i87o|pOp^`eij9!CYO0P*TacM1j?*Du8|MWtKk%pnlis@;Zko+N~ zORrbf!X@|V4dj%pUiQ;C%Ev7K5xs(Re0LPz(lh^WFLs&J_>aTy9sWS?N9X*>;m-z* zE~xCkI{eMy@AUpqmekfW&R|fFx&kVObVAa}Nhczmj1<yINhg-Vrc64C{F38>_MZr5 z=X46vX&jl7bSg)t7Mt11pmI%1Du+fo9q9~?j3J%gE$nxwEasNZXpf{bIh>hP#gz=C zvy!euIveQ{q_dMQKspDhIrce8eeqxRfpjeC+_GUhkHdLoKvS|bV>-WZyOEMENV+KL zLZlw~H_x9gB2}$3xWc51k@_{BRPX;v4ar=RbS2WINLMg9q)U@7<H)j}x|~D5|KlZ+ z+7#f1Qr?wGS0i18bXE2CkyfOulde%}NV=xi*9^55sonpvy88k(U6*ug()CC;C0(C% zLoaj#scHpDlZ{9>cEs=h3`^fkrKn9eC*8s>$dT&)k5m3mx>boAB;AJepQPK8?m)U7 zsm~N9#N^wNff{#57rqne&i=TILw{K>-BoPPOu8HC?!s-3OZO;=o^emor%CrBy^M5k z(o;zHAw7<CU(!QJ_ai-+bbp21Q(ye2TKtn9RJw(sxok#D4<$WpSe#9H>Ay)2_v#$s z@JNS8IkcC*{HA4k45_^i<|ha;#qp#klAbW!qN?sEk)Ax1IjqI0r00{KMykP1db%rf z2C0XDq}W-cXUlrtj-=<3D)KKOL&^oD7n5E{dXYSag|CN_FCo2DoR-&^Wu?nW?;y27 zaUJOuq}P&ONqUVp%2lLSE2A+RG|AQ(q>ta{u{%rY^`y6x-XI25<VMn)NN***+1YLx zmzVUmp^#FP>~JUP{iJu1+HkvDoI~OFlHND0iyVR}_5kT4qz{tn@K+zxP<Gn|jOXq3 zDCuLG>n+I^TIu7YPq?|Bboi9iF7N83&yWVB&ys#X`W)$Nq|cMSO!@-pOO~DVMF}zE zSQb6LLaN}83}t0m5vt?sq;HVE?+kB}`uo4>+n)4}!_oI2()X0Nw6kjQA?Y_>osURA zCjHtad_wxE=laay=i*n<Uyy$3l&?yPpjX@_R7k6i)Ew58sv;Vs%@OYLA1T}>?UCyI zmoy?xNMq8@utruj3$|EjCGD!3@<J);ccgvNoOD2{#lM&hN<u;UtvIb}T3=a1=+yvE z`rhFWq`DkP>M#GMKRf=5v?{HkEWeTd?tSkM`bW|qkN!dQ$EUv*{lCy(jQ#}lr=dR~ z{fX&ML?2z-v&m=#=}$s`Qa#$===3L}KY5u-e+s8eNq;J>Kl@XU%SC@$`g73#EB%?A zXFB@6M(s~O%3DgCQDVI;`ZLq_mAOip#dFO{f3{KT>?J4tIqA<we=cVj>u_#|^EjN> z;3&)dPFcVn=`ZMTp;6Mp^cQi;q9w)g|DnG!{l)1oM}G<WOOBZB&AU?DrCs1M&b;g> zb$KVQ;BZAxTB%HOd=>g@&|j7Q>dvs5L8aOnY$$V0J(`p0uT6hj`s>i&P#<3CuS<VD zeTPB#`t&zYo7$tbb$=uJTR44VhnvvfRLw2U&FF7l;v>qI^zE$#OVSZA{jEpzZH(xY z?dbo*8Mb%0gF}4+g8okQcOLQYVif1!mHxi;&7^xe&u$KPcen?A@2k$~l)W78O<(JO z!(GCDLL`5GhX*)3P(<U|>N5HV(?5j%zv&-J|1ceRS?9O?k*!+$htoeok8+QG-QCuu z{iEoc|Nme5$2j!Yf&0h#P%`52PCSABiS$pUuk}CulO3L-63emHKh4=rcX)<F3;qn3 zJ@n5eU!DFr47&8sWnk)^NB<A{=hJ_H{sr{!q<<m(%js+V@4|Hpl>R03FLh+N{`VF% zt!|*N^*?=G0j2Mke}r63-`D^BYln`pZxy_5gkNvW-djfN|GuyP`!~~<|EGVe!`qxk zhsFM=aNG#Li@y9n{d+_da<9Yt9Nu5L4*Cz$|C;_o^k3G-y#Fx$N9aFI|55r+(0`2n z<Jzv8d}|9e!ISiL_&eOj+G$Jw8Tv2Kf0q99+PwFl(<afT2HU-=55GwNC2cgyZLj!W zq5mHJSLwe&|26u${3GFGbv8}^P5STBe@na9{@e85k(0D@84H!$xUiU;c;2V~Dg6)V ze?njJfBGNM|5&9MkEv=3TP|t)8U3&5f3AIW{|owGN-K*-me6WpQ(ONV`hEHp`Vsvq z{U-ey{RaK|s8{$TC4E}-L$6~%zpYd&%b@*KR!raeOox6VP0atBd>N!i-~RmTQB5@F z0n`u!`rp&f=zmK;r?23@glvARJb(W?`nK}-w|&hrHi`6qpl^Db>3$l?{8<a>{x7=4 zY9SGo{u}+@hq=s{R<D82@`LdiOu#^wKV=pxeJ~+|4H-;i6b3L@kio<Z=43DlgJ~E{ z%3$g-+x~~aWDF+P_e%#;IGobqRC@1e+y9J%45no;vnTzP!E}y{VK4)O>Bq4#n6cz% zFw>AIv8Kr^<s*YxJ>zT+XLmTqD9c<7=5xwe26G!fgLxdzI}~Ngh&Vrk1<EX5$AuUy z&R}5%i!xYbNLQhYG5DWhMz08iB^a#CU`Yl`m2?J6dvVLS*kv6q=Wuz4D>z)y;YtQe z;S5$`umOWr8LYuzHBViAT&h2=$zUy)ytc!29Ioro{J*TqVEzAQk+vH#*q6b^40dF& z34^T|Y|3B@2AeV1Tz%L&nDsR434<*eSg6@!kJkEjSTop~!FCL`VX&>5-a3-?K<g)i z?HTN#T=umA8<IAf20Jm>ox#owc4e>&1OJ4kG1wO&)LZ_^U^j7EaR#k_4)$QM7XwpI zr@$JvcB*KjW3V@aeSFH(wFGs`-OpgKpTqqb9H8x_C<ih)$dQA!em0`5cn60vxQW4G z3@&BxZ$+F2hdVri!8r_$WMCPOVsI*hqZL>a!!Znwb>uiN{dk8bNJ*uh=<p<mCp$dF zp!1w2L_DVpF;692Zvitni^16<nj6uh`Tq+YIgi2lqKoMN0zAxh5d;4V0MRcIgY0nG znE5T^<qrSX;S~(7V{j#dYyI&m23Iq<#_%yqo+T)={9lO(D*N>eZWtxqC@YD0GlPV| zEezgba4Unm8QA?FKYAP7&cN%Ufq$nD|GQMRVWV3QxtGB+4DMs_D1-YMJjCDu1`n!P zt)(o4sJ`(qgGb~gtoi(U7=y<cJjvj322aSL8K>3JcG-ic7%2EJPV-&L`z(W37(B<| zMF!6^ctJ_l6^+My;NT?&FAH}U<djz#yv{)PKgDLJ|ARLeys08gCF4{@-e%z6e^3v9 z*LpjH_Z+^@;8O-4sQ-)jA%l+``PktnqFW0p=`)9)GpIB8LUa+obodp6uNmltUk2Ye ztQge9p-ygF0G+TiXgF*-Y%vHO2^_W!dW%ORB=*OSK~e0dk=P@9mqALlB7;8JTnq+e ze`Am__=Q2v;ClvzkF{?de&^8F|7Hh`!5_>Z4E$Y^fye&`KO0?EQtGc{7N|F!e`D}F z*(419ARC`-Jn@WU%l<+(f%vlt$rSJ*o5&&Jv34nEhip<kD%Jl5#>&m6AR9wACD}Ai zpNed1@yJk?IxX3BWSUu|j}xU#HoY^?KsJ*jGnU#qKC?Ql^OMcuLj3$UQ@fMR?r;u= za~d==l8q%>oNR8g1<2gXiF01E`NSaH<3B=lE5<1ckuB`VA`W#B?8stdzG<?@p$<!s zElIYVr!Gb2M*tGFj8m3X#v$kOWGm>=qDf*{$+m1{E0di}whGz)WUG>GO12u=x@4=9 ztwpwmdV98}hJ$6?{8qBH$^8A_(qgt}$<`y=kZgUj4Kx<aI0o&^F58G~V~sm=FWDyQ zRF*~3HY3}GY;&@0$+jTdifl_VKi{_^^fUW!O}34i<G(Gt9odd#+mn^|f7H({m24-n zomHq6WE6|lWd9(udhJTKJDI7so5~%#ge2RFF55$zSaob=lI=;h57}O1`tq}!zsZqJ z_9fd-MQe}$zq&P)9YA&z*@0vSlO3cnZmFuvA!Pq1J5<g}z3wo@u5DJz4ktT8zQu}G z2RKrrNeoAmoj`UB+3{q@syK5#*>TEl3|5w{2D1~%^yaVfZa;(PI)&_cvQx=!Bs-1F zG(Vl}T(UFB&azx&XG(uN8_LcmJ4bm<lr7j6eU$7xvJ1)1C%Ztza&fCH7m;18T-I2n zo6RmIyPE7WvMb0gC;MNW#h6vgeP4DZ*;PZyZYZ*A$gU&1mdyKxxh#`r9wWP+%nyI9 zc7B>nb`#kHWH*!DNp=g_?PS)GZqs_$Ok_o<9q*8}rOZ5Jcahyob~l-Aot~1;CRt{@ zkL-RmpXGA<kUdED1ldDmR?~;c-2WSc*OcrrGGG6j1SgU`N%jnx8R}`3Yr+l6=FgHn zC!Vq_n<KIp$X+LVk?a++m&n}zyP?L6U4raYve%?lX=?R^H^|;5dz0)f^$k<N8g$qz zd>3G4sX5*wd!Kw}vJc3*WFL}!BpuWuACoo7J|X*>>{GHY$UY<cTpMsRi&a_u>Pxb( zRIWV^+vOXw8d-(RKmK4<utF`>rt++A>X9|ZthR&hvSux^kSrjx#lN2bZnTN?7f(bM zlO?)-mRS_YJ%-JyD$)G^cVsD9U$c_*H2+_aWn{THO*i`uhxWI^CD07`8`<|>Wjp`% zyXct-|H&yoJN!kVhRnV|K7$y9|4wf1`VaDn$j2ksvY%Wh3(_Q?fP6y9FO|18$|0YW zd}8uRq<|@7`z-4x`DEmi54AF)4Y7Pm^6AK@BA<qQYONk^rnd2z8}om+hguutW5{PD zpPqaMjUW?i);5on&m@Bz#rkS)8RsXTMM)AqEBS2Xb2~me`5cbS=}^}}9T_Xc{7>%7 zOXZrE-0y$dCP<G9kS|F-y#Gn=uK?!@ll$e*d{O7o{ZB{yoGbVHpSi7Ieca_sk^6nl zd}-%d#^JK$%Q>R^pXC1XuMoci>SLCCW%5-#)xZCs)Ya_KwOxba5%M+3{r!%7E%LR= zJLKz--$1@D`RQuPd_D5@$@eDTfP6>t4av7KbCGXEzOf^U|C9Tx#JR`+mAbi1YB~tt zl3ZPyd@J&8$^HFbJ#JI-kZ(6aws%oGj56*-z9;$4<aWYq{JW4VB<uLD<dRRmTS*zw z_wZD||2gE`OPxpA_aQ%;d|&c|$oC`Pf0X3_Pd#v)9P)$74<kRs={o#1#31><$&V!0 z;V=0S<LLf)RQX7L4Eagq$C4jc=5is&lj~1m96xa+?PT&(M);{N#Ls_+Wt~BODfyY? z=aZjBelGdh<o^F(<-oMwYtvbNo?=rPN*9pp<|nzn|LOhzV)9E$-#8q(`DNr+kzY<e zj1Q1sL4Kv|V~)i}pLxstYH|~D4Y|MnWj<s`zmEKRd37t-D7FU9ZzTVa{3h~;$!{jV zi~JVy+sSVwzfC;GY<1D-zJvVE;S^xHNy)p(?<c>9-0y$p_iEtVlw`uq!{iT;KSchZ z9!)p%c!rqM%dNY<L~ecZY4XR&pCo^rT)}_&I^#6q8p0L@y2owu4Egiq&yw5a|9kXb z%;j~j`~~tCOV6xX%+~Pv%j9p7ze4^x`K#owNq=()_LDwukiRJn&F$N55Y^~y^7qK! zA-Bc<Jtff~`TOJ_X!B?lH+|$=J|b_Be@y-v`6uL`$}Gm<3X^|M{tfvT<X@40sm8M3 zU#)NJus}amr$S!Un3X0q@_H$`Gz)o?Jn+i4q_g~9n>;2DB}$Kx<d}&phGPusD*kpr z-gUf3uKPcZ`xT&kK<@W{a!mo`h4;*F)q9OiJ^w!x$B=(dF$4Jz6y|t;q%bG^6U8Lt zKU0iP{tLM|eCs5?DVHf=`fCjSLE(P{Z$z7e%<{!wC?=wqfMP<isp0I+dJ_o6#LDHB zQt7sMC?<6{8O7uZDTp$K5T!mUZHuWXrYYAp6k2pq{MA0@PcfZ7=`UoALu~;ZnUP{8 zXPb#)W{QO<{zfsDVit-yC}ySbHGko~%Ua)*v3aDJlVUFQXDin<w01A%rkJ0?^qE(Z zt*;j4`hPrq#j#j`LLc|g;@m1|{ij%%VkwG6DE#7jv8d&u@UMVc@VQu=!e5866^l%< zq^40ZEKRW-#WEDjszI%EQ^|Tou{^~J>QPp-HBhmllFW>@U@lgsScPIIid88#p;(P# zU5eEy)}k=~?}xwEA#LcX7Hd<iBgxk7O<TLETdYU1A;tO>zWz7)<@-3rMid*%8dm+G z1vaJFnqo7GEh#pq*h0&#u}i48+juYjPO;U{0~o(_-iBg(ift*j6Q_w%jM3U_2Z|ll zb?wy&Z+eQIDfXk-h2mcnX1d)dcBPPGDUIpfV0Vf=H2lkZ^5(~iJt_8~*o(r~|2Ax` zQnLKMQrPNfBdge-;xLK>C=RALkm4W>Ta(~IC=Q`GRLs^_jbHZvH^q?@hf^G(x>%BF zuC_jk;%FJa^g^~jDvtGrIF8~%isLCx5T~sYRp^NnCsCY5aWche6sJ&}DnnTjw!gUa z4vNz${QLhVUxl8jB-!w6it{MWp*Xi(*^cPvQ(Pd;jo*H%<3$u#P+Tm{CE*f>mpZiG zbvcDxlRcJ@;!28JDXyZpf#PZkUyv963Ao}~wV;JoB<DJZ9{)GVwiqjJr11B@ikm5J zQHz)bOb6NjHi~;GZl}15!YXyAQcDlNlJDSV`twpB;HkK#d!`zapKWMmznoGFTj zC?1wfqZqU7@F?G!%^#!4C>}TUD4wABisDI%r&J?(m8V_RXDHsLc$VT7isvX^q<Eg< z1*u`u>?)f2+e;KLt97ghGl=BBO7RB8YZR|bXL+R3jBipX`0p(>ks%cCP<%}BF2x5F z?@_$30d8{sA6M4_ZAJ0(ckk~0Vn_5MVnwhZC{h#~D%cD5-h08WsMrO2!Get<!e7LO z9TBl&?-j+as9?qVw)Zc|-urm>JLjI9OeT}bWM(q6nc2Pk6Um>TZLTo01olp1lh4rh z1={AJ?Q@aLVtJm*koXd9UrBo_>+v&n+c#*Fvtykp-=Xa%w8{NXv}xqC?FYqw6ovUW z=X<m*K-(W^TZpz_(e^Xi<Sam{U~PGm(DobJeiyA4_s$};>9x<cKZP!1=5Mt9qnb<b zL@EDqs10pxa92W`3%3i}JhW-Rr_D!OAj)&?;&39k%o)Qq(3YSrM_Y<Ee(cqUMD|f) zjRI|DLn~H{+vu8bZMZeKmh_r-w=l3lT&J=IT!OnC+$G>H4R=YnONnl3UWRa&fvaDB z<7To<wy@g?E*D=OZs!JDHACGM;nrnb>4ro)g?Hxsr3kkx+;!l}0Wr@(xZM=40(Vuo zYbd@N+~&76xUs^sCfx3fD881$9&mfg9zb%}mMr$Au73ZGgNN>VJi6fW5x{&!dc!>f zZXdWi!QB9^9{!3Zec@`H$K42SKe(HSVcq^>I(Govfp9l&e1n(G&d)ePA0*b`q;Sd= zAh?^u73U9EKmH)dU`=kNaBGFzz#Rg2JGes|-RH_*05A@Bdu7<6ncT6-z^?{yb-Tbl z81Alc_tE5TaEHO&Q}Nvu?!izxPMG&nxOYW?%UyFI-2Ifezrq8mEX5BJoI6Dd9s>6m zMGl2~7~I3FEVxI&Jxb|E)>nL1h{CM9ENSMknmi8fN!o<t;hq5Z#CqoiB9=Rj|B1#O z4);{JC&N8O8puw*`ZGKCG`Oehw+GdjBKAy~up;&>xM#z?4ekiISHL|7?!|D=g?j<q z^WcuuHOqi|zDzV8?d%iW3*pM)uM9}8g=dy~3EWX|FNJ%V8pn{egI7RzG~COjAanAM z_loY7aL2&C3hs4quZGKqzcLx&UMp-oHF(40UJv&M@yQ%`uhwGsM!2`Yy$SBkB8MBx zKc4mOSh)Im^J-?XS9EW$v(t9(;DT`Vfm)DpaL0=%!6(3-2={Kq?@~BPvUt|;PZ*{U z{R{Vh<h%v<9uz!^rlR2CeJ>&x?lky6!@Un4&+hx-?G5(<cvihX_dZh|g8MDp>2P0$ z`!L++;Ic~3z<m_%Ot_E1eG=~DaG$7;KR~+pw14FM#hn57DSj(irZaDwIjhhA;6ANz zmh{@h9~GYs_u2Y{TZGc!c^>Wyk`(?I;l3pF@dv=2BglYj;l2X*J-DyJeFyGqaNpAE zUWfYz+&6_sPldF|+aia1vmxzWL5}zy?)z}(!TkX4$C~^Qu73aXi0`%1PvCya4S_pX znzK_+xSt8al7;wreHeR*FW`O+_e;26)t_4^x%^|{{1&$RO}+QM{4Z2+zpGCg4411* z;LeBpC)^+4{sQ+$xC^wRpPEG$!u?rn#W(1<mghM6E8O4V{#L(ewET|ZA^iv3MbZ{F zFT+i_7yeQqf5Y_^`3LU5B2eu1pTahUu0oF?%TYXl8%k0*BZaXfr>qY*WgXyVa7(y( zeGGST!LUAhNd4;m@C>1NCcIkx@)=B#-{>LmY<R1}bKrG@2Y8*}k%;w{fVVWfCF=t( zg11ziLtEUIs$Opyc*`o!autQg0KDau(z$-ah45B@w-US+;dOym7qg68r5(cS%1L-D zFD6QLypem3dEl)EZ##Ia!|MZY4R}4^tyzESFs>b5cQzorwZx3f%)Y|w32$w9z2L0_ zZ#|`~D;BQiqcE&5Ht~8(2kBUXw*kB@;cW<S6L@{$4S=_ioThpG;Psc@XKi`R3uPex z<t4n0<&Q5%^sbM(Uz3C2Z3=I5#W$;OaF#eU(SHk>2%_X*u?csFw-vmt;SGhi4ZI-@ z>#-<d-d1?{C+*!H-d^x_fVVrm9pUW^Z>RdjuSo92ufSvFcde4}cGI%MB#Xzbb_cvY z;O*HE&i|gq-7WI>fp-c#`NA{2{oox3Z-01)Xp(C@uxW~elyWdbHQk|_JPh7Z@D6Vh zk6>fMQ@<+Gj#i#y6do%)+_MZN>v)AHC_GW&NeYK6Jegtrf2YDbRg<T|yA<B(@XmpE zhEmQ{c$UJm6^>vie+k!+e=fZ9;PL1h*`%DWY!^t9XP@Z6WA$Q1E)gOR5+Pm&?^;Dh zDdax79NtxG{43yHDLu|V;k;T$%QaO}=Balbyb18Ghc^};4~d(!)EIGP-i=&DlQ(Or zTV#x>w(xF+cZUkRP2ugr$?nCw6W%ycl|76%z9K5aM0nHS-39L+c$45wR^r{FhEy~K zo;Hx>tDc%W72drfLEEU5`xM@<@Bzu1_#?cB;2#5TI=nC8JuF0N<|FXf70ibB7`&&H z^0>k$;OY0Dy%`m!_%3f|g~NLqo;ZJa&j^KQir~+}`v@KzN=7Wa=i$8o?<K`w<XND| z9C$BR{LNCY!g~kaYw+HL_d2{cm`$w5KN0d4Jazs&q4*~jco*IW@ZN*>J|}q;)sHXh zN6P*I-iM9F$op86pTL_3Z?58O@Xy3;Hv3nJpTqlt5&4Paui&%8`5Imh?;Ci(!}}H< z+wD7L)-}bOulNsAWbtVH3El#Dzrb54bkXEzL9{M-zry>ik(8`I;QgaKixmDTf6d_i z1@CX+Y51jo;RW#2`Fm~fJb13;@=wO0EE84l!wcahoP?+T-&6n3%e|K>F%u;lBfo&p zzPc2;Z@`BlCj1(F8@_B3m?ERmcLdSV1z-KYzXbfHlwZF8EVlBO7NqJ^e_8nI%KYWv zcdFm=qH^jI;CB|b-uJ>^5&p{X>yi`&y1-uve%D5&OswXt-wnR54#KmlFpEB`!`}-2 z8t~WCvTG{ru5c~*J>ajccu$71n)vI$U$?OpIYEb?-wS?!`0K;pP&s?U?<34o%LamQ zV<)`@zb|}QSY>+p{Tk!b9{_)I_yge&QvQt<ZX#^Fy7`-Gax+P46EwMn!Y$#e|E~t8 zzcu{5;BNzeC-_6)Zx4T{loB0e34p(yBzdv$cWBag6ol6We`omO>fx(r^LJHzH_7Gk zFZA8T?f84Z-?N%HGT;5Z;qMQBA7K+7>0kK!Nm6=*#U2j-K=_9!{UC+v|3#Gef2AB& z%_+r?fPW<Xqa>>_JY)&b@o+5s58)pN{{r~O!#@@N39{qzPn5luFV0`qYkxTWlk4LP z#ZQqw;_>XCrj|TiiD$qcQNQ~g_-DdDOOdk~$~a*t^m7!RtMEMdBNgHO|EG*-$8o1j zfPWGE(eTy(`{MuMU#jpjg`-5D#r<_T{43z!4F5{_x;pq*!M_^*HNwV&oEs}Pxeopq z_}9a~L7KqMr(uK};ornf5JRzt5zbrS-v)oI)^%%pUGQ&*KMwvK@b45N>&)$vzEJ<q z6zS`U@Mplk3;tC2lT^ap@T<O<41bCg<e$vJdm2Kdbu8o&_|xD&0RKKMCC*=dqR)fy zr^A0pl8w>$a5cQE(E|Tb_>aMVLJK}FP1CaQWeLzZ_!Rut;Ln8rf-3wp{8{k1XP<#T zTX@(M+#J!LJM{U+m|@Q|m8af|@Lz^s&BQsvJd8ilsqWo>g_H1K72?2)6n`E58}Q$S z|0evmmGYMKl#J(hgpFl3e8qe4--rK!G^ASi8ZtkE|1tb8;D4gU=gMP+FAoBm{0#m) zMLw^(uY&NuRN`0gzh*@7Z{UC1#B~YqzlT2`{!j3KU^Bx1u`;GWNiI;hup+|$1reL{ zS48K){|#YJ_`f5#1pXfg*fT6b!2a-01Qz_i;79QPhTjJNADu7%!v9a6VOeK|@Ll*m zd`}jL>Y3CJ;7cs1vA^Y~R6mAaz)#?(6&-#CKX33TC;SqDDZ99!3O{OKEsz5&CE5r& zA#e~Zi9jy@ARq+IH@|oz&9wweAy^i{(g>F6C|Q~HNLP54M^H!58NrH5Z@&Um)zSq) zSEaAiQ38T)2sS{#m9C9oRRn8lb*mv*9l;vRFU$=+yCYajOu;8LK@S8yTji{Spcew! z{3B>w{?Y2zS4wXLeOje$h+q>0eGv>qz(x9rh50!>=#OAPLvo|-8%yM;x>FGhLa;dk zdH+j=Z`RI<V2h@ngAp8yU@HXsBG?+i&Iq<aumgf22)08o6oJP7t0xq(+xDVZv!w`j zM6gpMDSfdEf;|xIieMOm-P$=3Nbsj(L$D`;y%|TKuK=jU5bV>;-4DT`2=-To0}vdH z;6MZiRk=-_50RwmfZ#9$M<X~K0o(Zq1R64})NAsnD7^(F`X7hj90bQB7>?is1Se_k zi6Tv{r1n1<!I=n7L2w!Z`S?$>-qR7B(VlD)&q8oEf)SGB2n;jxC*Rp)1m_|+55a|s zk3?`jf(xW;c;;5qJWyv6i2tu|FEbj!r3gMoa2bM!5sX5>+KxtWErQDtT*Z<RT!G+9 zsbaB8S0m_f|3A16!7T``M{py88xV}Cl&ts>+=Srf2Bk4d$0E25fdv1XJhvmbqg_5T zBN&I^UIgP2+>KxYg1Zn*Z0BbL!K6wig2@Q}r$weTDfb|lTH#H~Gz1SKxDUYt2=4DF zM+-iraC*A}2p&Q35`sq&JcZyf1W&LH5j@_MCjbA7U`D$f1Tzsli{NPl&mfr9PG<zc z>`E+x=McPrK;r+E9L;^P3IigTgWw$mFC%yz!7B(}L-49_R?H2%y@B8@2~Y=bwhKY< zc7-E&7r}dii*D~D_z;1-|J&60Bf&L^;1dKPg1HD5A@~%*_Xs{i@FjwI%z)r?1Ya}? zHtPKf!8ZuLZV-j%TLj;=^2|r@GlCxw{Dk1g4x9@RENoAzoqs{_JAz*k{MM1qI0AWJ zSb6?L@E?M|5d4ea?<Vn|hTV8P3v-)77lDsJ?teC08g#%Tgq;w?2!S9$Xdp-t6bLc| zd4sLd#!`w`cxWQD5Y~jD(kHYLI`!p`liAAih%Fov!le-|!3+qOM7UH(Y2tpvWe_fl zu;KYdG7q6}d4$a08DUq1D<G_E@fGFI`?miYVHbqz`8mn_JUvCY-USW2Rq_$8icow$ z!qpJ2F2sh0Ya(0=VRxDAOsPy1_Gsp=jqpQ+>ma-Y;kpR-Mz|ir%@OuOxFN#z5pJOB z^+wpIU1qavUxWh?a+CWtDgE1d5Dr8*2;s&EH>q-)Hry29V$aV+gj*oo5#g2yw?#M@ z;Wh}jLb!Fs-z+r*;n0ShM!U8{xC27<|JplE9d<&<_S_laE)5A{6aEU2uB72GgnJ^~ z9ic}4RaB)jLW%z~j&L7@CnDSz;SmV;LwE?n{Sh97@BoAdw##fXAKa|>P%V2H!ow>{ zli^5&$06i?KL+8^jV!KLDv~1rp$IN_I}z$z0Fpcj;RuAo5uT3lWQ3<7JO$yY?feZy zikyM)ED4^6XSU}eJiEdXo`Z0t%0E}(c}@EH2roi-0m2JqZ^>#XM0m02)3C#(2>*xh zGK4oH9EI?DgrgB&gYa^MS0TItp*sJn38Kl>?PayDYY|>oiDHQG1|^O`cw@ze@FqdD zI)t|%oPcmF!rKw5|Cb_i{;Os0K&Y>Mg^iggha=&5$>lSGa3aFH5#H4t+YSG(lW{Wh zAk_0;K5Gl_LHIPnsR$oJcrQY6_z0&Vyidw5?u!R_Mk9Psb~Q4irz3nE;ll{^ov*NQ zx~gR#t4bk!0^w5#pF}vLDkbL{9NU!QGZ``w;Vgu&A$$hmiwI{Ud>-Mm2%nRxd5z}U z#Sgq7NmT~nO9)><I0xa&4c!|3()9nr|2o2V5Wa!%E!F4EraleluSB-h`v~7-yqT;1 zzhT>t5OqiRF~S7lCkTH;I2YkJ2tP&m6~fODey&31HOqd1@JksjTwEmRaZmVlB^=?m z%KRO|@0<Md5z66jm1KzUCxrhZT!8R*gbNY=g7D{d286#N{H>i?rTu~MFNBK_{@I{6 zH2)jnKkWro@_z_Jgl!0Ygf2p_l|PVV!-kO*l-`$D0JLn1XnBMgB0`uWGBvkASR#@( zR%}9yYKUw^a{s>}EpiZ{k*wrLOCVYXk=*}Bv=pMHTXUC1v|O`nC&{XGh&m%;{uL0d zglI)XU9`BY1;X5r+!c|0`GJ#&x^<whib($XU6^@bM5`lO1JRm|o@$g`3lV4aK(ra6 zo`^O?v^Jvk5a|^l5x8zslU|7Qo6nIv0;n2&5N*&H+YN2|BH9?yMu-L=>W4_3|6)A{ zil_$XCaTgPM4MKWCVg{6J0RKu(GWyiBH9Yk;0~p>Mzl>U|4>BRA=*}m%@K&Gu>>I6 z5z)?CQR5K+(JqxVM7vgU5Di0gG@{)R9gJuXMEfGz6Or!!qsIOp(LU|+5$%WQ08S#> zzbWBBL<dzfx?1-U9fIgE<vCR7JH3nOa70HUlHh-{*N*DYQ^z1W5s`cX0+H+-5FL-` zgvLoI`wgL-gy?ic!x5dLY$uB->DE&bohFWjlPVn18HmnCbS9#+s*ORj#t|KO&P8-P zqVr@|AB~ilLv()qp369zgy;f97b3a_(M5<xA-WjRrHC$(_yGTe^D=qf=O4$NqS1)1 zM07c#D=JEp=PE>3S9p{2T0}P?x(?9|TJZWNeGH--TRCq=bSom(WNb$|^CP;gSxS!s zqB{{yMKn%ZF&@!9h$bjL5z%Bt?m{#P(cO%TC=Pls<Zx&-MWy|(J_jO@b2(-hX#_r+ zhUg(g_bG!0|Dy+lK@9bv6z9NZG`&fASm}=_d{lZt*d9mp7NRE*J%dPsKZs^9ROBf{ z68}f^w8B|J*JzR^XCr!6Voebn_Dw|3BYFkV3o?Xc0KBO1B}8)&y(~mtBNQTfRkP&# zZ-`!3_(qi_kQ>Mm-ADsL(L0EKK*R&`J4EkkrSBv94ABRQe~3r}KG8>-lp_EM$V77m z5w-PLwu%u&^ALS5@y6&2g<mpM<SRs9OTCiy4We%=T%bt!Ug3NR336O3`VrCJh<-x! ztI`)BT8QWuRrqHaklbZeB#jU6qTjSrepmPhqD6@Ql-6<dFZ!!OG>hx~m!-*xbMzmg zHi@Kh48J;Ii994c<$c7fAquq8P+_DnM#SztL6jp(<-{<`M6w<Z*4LPUs1V7wyolI9 zyaZxXBy&sSnnFvVjo48H3Q0~p**JXq883-=CB#c1US7g+@zRKwLA;!(9WN^tP3wiY zQ-uiRh<e-^F&C^$fHz)IVx;^<nz&1aD6uQzRS~Z&`p4Z6uOdd{K4QgKRka@C)e*mj zcn!ptAYK#kCWyNu?vHpa#Ou{}eGqXEg*_3kt;jkG*JUWTCWL_%>xX!Kp-8ef;y#LO z(4=gLxGys!)~n`KK~{igRy;sPbvzL9#*L1s!jJJF#1|pn6!BrI{AP$ZM|?2iEfDV} z;n{dg#DfuUhj=SZZY>^6=-Vh9f><8`gt9GDI2ZBuf(T^?#5*G1S@E5!TxF0Y0I~Xi zVH<{cKjqmS@g9oo*{o$R#Ig`5aUX^IGHg=zN37?G@qsGvpo*^eA;KoY50#fp1vy+B zcm(285g&>8c*I8`)??rJXz6HC=~%@4@|R9Awwnxz6A%wad?MnLq$}0^vH=mFjQA9( zf(Lek^EAZgAU+-OS%}X-e5Q;6&Eiss&qh3=LE%#D!QyifpO5%F#3SXznJc}MqeD!; z0I>$)StXV*ri-erA)tFMLwqUXQHa(5^LUo=HX8BOid?SEyh3Jfe5Jyx<ZOb4^HExS z4PrLJeTc6^JPz^oh{qzn0r5?U#~{8@6yO@G85-Y=_!hyrbxah2w<5j+@ok827m7Mz zt(0FP(+dWo`FO;W5l=vTmu5|r;zFN<m@i&RsJuS0kB-ABh^HcE<?j(`JWW(4;(HNK z6HYb}Q)GJHkN9cC4<LRF@q>sTM*I-s>5|L!^0|Zb#UqFxl~Pj|NkOs6<A`S<egg56 zVndeCzD~yfQ;28Ew5|G4ben~kJ;^hOxsPTeezrb&Z((lO;d#U_G$e@pUWi{p{0ibZ zh+mc(`P_;%5y`JMbe7s*M_eL)1M#nj-$eWc;<pe>*dMVh0iuuK?;?H=@kfZ?=jss4 z5dh*3rD`7Vf`5$oQ$;>eI9IZGFDF@_A)bf$bD=0R2c{5ziTG#4Um;#7yNLK}#NWsO z5d2%j-zoBalQLhEKPdcB;ZF(|Nb|WATarhP==qE2%!gL-Z-_m_za#z^@gIm6H5>A$ zTHr4(g7|NR|44D2w%S4eshl>%u9&M~F&}ZN%mLyMag12}zl<3^3YU5l5i;p5#WTct zvpV(v+;@qAWJ@F_lGTyakaR|3iEwsziH*cTvNRGPSpo?Oo%@SNOR^-ArKC@}A|3`@ zQL+q@PDqwTvRqX~L&HQ4f5jB+2a*+#)RC+x2CtOl#wJ~mtb}AWBweMTu&s=wn<9Gt z%a;w3RU7B^+?MeLk~NU@L$W544Uu$5vX-<_bm)Pkr)b5uxstV!tczqFxoUp*FoE~p zk7PY0y%gcr^=3r6Nm|+m$p(!i6Gc>Cg?a=m<D4t)k7NLnfui}8dD2<Q#z;0nvKf*= zNH&%B@<Pu)X~O16wrEh4j$|;B-H>dBM2>WkY^`t`87;{Wg+mo?i$o89g}%MmO_+C- zMhRsng*z*(D7y*|S5ZxeWOrmsA=v}z9Z2>>dJU4jkg_TEM)Dz&eURLYWM3p_BH0hg zF-Z1Dawrm3_+TUlA~{H&KKS-5|9GFn+py#i!Fe@I4nuMzlEaZ4A=m%(MMA#3jpQgK zdjFs26o=(GT$3D&<YXkrAvqBVCpq$?f7ikzndet>5|ZIEs`+|0{}}}D0g_XYoQ6bS z0n@D@lGBl#A$I21QuqchKfWbrAsL0_Y$O*T8G+<HB<CPGw|?24@>dsZ^Rb^J8Hwb4 z8IV`B@eYSC6(hM2$t6fGLUOU}Y5CETzl?hAG$fZIxlF#yc3fw<8O3jTB%_h=P`n(; zRY<Nta;2Q?+_|ERoa3HFay61`>Syu?M&`@3;-{75IwWI|T#w|2`td{MGV|14aw9Ie z5y?&UmCu$7VBD5FxV_wKk0Tk2g!}PUBomO_hJ;(hmEOVIr24~G*9T4K%dtqtAsJua zWWV~0Psmne$Ur0$k=%{sE+muWW*5IO#b?TV$3B^iWJ-OySHEs&*^-?z9LYUM9z-$~ z$$d!fMKY~^3ST>au0D2y`h!D}@W_9l{?gI1MW1z3{k#>BJcQ&CB-4>RtiyhuOi8|B zo;-@=F}cz<YH3+X=P>07By*5FiDWjC8AzT+@)VMp_2=i;pFgyI=`0D(C$o?|Q{QrT z2^4b(m*2`s*k~^x;o<ST{Oyjs*wtD6#*0W^l3gg@`0X3Y8{f&xNZvy73X<26yo%&C z@i4QWs6V?Khlr89f#glO{JH<o`bksj!?s28Hj?*{yo2OjSvbbck$1QE;#R+p<O6wY zgBM43clC{te1vp4Bp)OB2gxT$en2u8$yZ1|MZ%-yGbHos2h5Z^D%<s`&-@d~7f8OW zPah<+Y3P*tS-&Fr8p(G^zCrS>eCOoWW9lP5<Tuxle2-+ltbpu2c20CM{)pr^BtIef z83}jg!ulh5{rsKfjo=Ge$S+8Kt^e;onZ<j`C0-=IBjFnVK(dHmN|I}Yvp1F3i;};P z{LO#7Ti<0&ecxD~xRZa8lt}(V!ntio*tRYbufCcsK8-)@IeBj+0g_PeJn#k1Yrc?M zok@%&Ly{m#>(4x2pE0xk!f-kJPI4p#-;b3S6?vvlU4+y?N=QwlHqshWOWwaYw`aY& zEt5J(QNQGGxh8%7oAM-*E`fAuq)Q@Qsy;(s4B;!FD~&+94AN!!l^Joxd}?stc%+@g zccsfCT@z_%q$?v`0cjVcD<ZAeN6wY&i~PRWjk_aV32E2*$h~DN!Z)k=j%C^n>1s$< zLAt6qqU#sP-&O2*JJQvWu2J9On)<0%)K`1De()5e-L;mr6!t*cQ|@E%nmhOfrK}^~ zI9(U%aY)xgx+BtFNH;~gKGJ?jdn4TtX&<B;i2r1-&c2jqaoQK@MlxBrE$mNt)lT~( z-5BWrqyxn#@Cf1A$E!@b3DQBz)<<R#ZxPeYkZyx?bEIsmEs$<0LzLGP9#_2cNw-3} zweYh99_OOl5Tx579g1{Y@hwc}K_c|+k?v68P0CJ4_eZ)jQg-jVARUHuSERc&cz7ss zSt+=?I3GdS|L=p8{r}!FmpPaFUFfXje%wJqVM7Upe}^MI5a}UE4?=pdObX6bJ&_)Y z^st7`4ayNnk4AbV(xYUj$DBM`M9witk8MyItvDX(rASXedKS_Xk)De5B&4Sx9gg(m zhE|gXiv+!ohx9b0XCgfv=@~MMna+N7aqihj&qvCG?Od(y92qcD?|Dc^R;{i!rARM8 zdNI-qkzOR@fh9EbxkPYwxl&43>U5Oiqmf>T^m3$Eu+tVE_LIVM6;gRF5DL$Cp<FA= zVtO4?9*x)Q7`uV{7wH(Jw;;VyE}y42Np&*#Z<d0BjFsWRkK5_3NN*D**^)c}xYs22 zPNeLt#vy$I>3F1%Af14eWllso8R=ajM5>;IR4;$>>M2Pc{PNU*lqKjRfZ$VEV3U8E z=E@ZyMIKQ2pu&e3Dk4t-NFSCJS&&DOK92M;$>n+1gh-!6`Zm%TNS{Uelyc6LTq*K2 z(pic;gLHOlsppWshV*%)bClr)g)+2|>MH<R1=5$1zM{leWd&ied`~QW9qF4$-;iXb ziImbI!Oxf}PstCEzN@9)L;C(=wua0PD+<z&k^YPH6QsW&os0Abq@N=F2I*%=zeGAu zC48>%3n`-2A^obtk$x>m!#LkEj`TZ)+{^PNt6|$8kuF5~lTd_bfgqyi&lN@SUy=TW z^f#o7kZSNJ{iBg9BT7R+4dwq<A^%8jgYq9T6KNaL6sfDZo<bjKgftLNsW%ivq{W&{ zDtc4@3~8?P0-2$RIvj2tuTxw+t0A)$(MN!)>dZkV(M4ps{}*HlWJ@xop<A{z@;8w! zgS;oQWs&`XY&m2%AnSx|7_#M&ZHTNhvNe&dfNW)CD<WG7SshuI|G(SJx;A#3SvO>> zAzKBRe*B?*x0$VuYz=)wr@7nAx+7Z;*;>ffM%Duv-~Z{b+sxKMrjh^l-DcJcS#M+- z{I7PKSs!G2^Rs=one|1s6|#+x4MNrr*+69dkqv0sZDt!I+oWZ;nQe+}3uK!i+q`AB znQe(|aLaBp+Zx#p$hJYYEwUlVhPLcBv+a;=-?H1xc0{%dvYn9a+_Kxuc15;Z%WgB{ z{r{=R_CR(xvOSS;XYGY-Uu1hD+oxr>neB&c|CZfmb|A7tkR62V;FjHHb||vLT6UY+ z5y*~5b|kW6kR65W=$74Pb}X{vT6UY+3CM;cI}zDQExXO^WMrqb>^8I0kX?-IbY$lu zI|JF-$j(G|R?BWP8-eVcmfdD{9<mFNjYM{S%WgBf5ZOg7yUpwpWLF})6xnEGmmwR~ zvfIoqM|MTaZZo?I*|o^7Ms`ihZZo?M+4U{E&1?*^_mJI)>=9%)A-fyd&B*RVb_=rG zkc~xlYs+pkyB*mbExXNZ9I}bX#v_~1vfIq=LN=*ox0y{wb|11S$fhFuAF_K|cAMF~ z$fmXIHnaPYJ%sE5WDmCNHnZu-9&XufW{)C!0oh~7o<{aKvKh#pK=x$IZZmrd+02&R zW;P4iv&f!7HoIlFnLUT>`Ig;g_9C*^k-dcM6=ZXez1*_f%w9$ITFY)Tdjr|q$lgTu zR?BWPdk5LOExXO^ePll(`vBRu$Ua0i57|e^<|6wT*(WW#&FoWTpSA2Zv(J%zh3pGt zUy4s_-)&}JBm1Uhx0&hX&rE~=*?eR_wCpyspOF26Y=JBaysT#nk^L+<JJ<$APY1H! zH1~HQ@^ebI2>Eiz{zR4{`wLkcGP(bcOd^wt$SDA_|3o)ITx1&R&pb`~$Rz$><timY zrkDSPIjORcWyqIAmLoTnN8&%oO5}zxXmR8<<PdspA-9q1$5a>Rl4dPYF)J=F0w}^u zz%osISwVOW$~z%n9r^Oe>&QDdi7OyqvBDW5?}EIWGOvWZt0F5)L$sxu)XQD@s>t;S zxFK2o|5uBziM+cay8q96bdbC@@?(*&gM54B>mslC*F)Y*`PWCj0rK9$FKXz&00<&4 z1t>-0KdL}K<b#p-N4^>I0m$`T;C!HF$^Cyt1}W70pNlo$9QhVZ*Q_loPL;eB@~x2% zReT%dLnNyqXImv|{HM{t9gy#<#2u0EgnXFdJ1g7;`L4+IqT}L9cSpXL=I()fPew!m zm5+RH<a+<VA$dRK2P5BKnRSnvAE@|2i%Ur-9)kQ(<VPVt4EYh-mctt|CAazhSAMh* zg`%GT5=$P3{0`*DBfk*&3CPbuej@TSk)MS86s>4D@{^@5j_?TosmM=9e%j*Ng?L6) z7xJ@|=WK-|gs0gw<mW2!Jme#hUx57l_N)p)ei8B;kzb5lKkSoVg8WkCqmf^ReAHrQ zQU3A{O}i4gZuRr4kY9~lKmNbC((91lpzXcBso@ww7F+u!<ToR~Rdv%KUOu)%?rloH zy{X}y$Y&xShx~rz<B?BAJ^{I$_9CB%{4V5^+RHM6d@^#e0P-mn9r-;XYO#6}UqwDm z;eAb>2arF4{6Qr?gnW9tOymzYc^*an1oFo?iTrUPYKxFRsikHhe~OU~^rw+)_&1-0 z{29rTdS@e-3-%Q!^5>Dig8T*Ka^WBOiwa+=aut8M1O6)V*Od4=ay|TA+^Dxu@Z5PD zMNj1K$c{9B7kL}<_mF>qTpj_Ce}Mc`<R2pc1o=nEKW=%}&gaTQV)c|QntX<Q9`ett zC-KJfc>X2wg~-1`uKWD_YvkV`|F*%S&(X-gNB$%7`N)5$o~f&+Y2-g4Ur;?$S5MH$ ze@6Z%@?Vhuj{H~TzqLF^=YJsA(-z)KS5MISU&#MO{x|Y}TArix|75?-zdL!TxF|Xy z_fVL~edH<f0C|i&L>@Kb<W+1TSLffrGvx9hj682V$>t>rqviR!sG(RAg@pnrY!v)q zjZdZ0>M6S*6ic)`Wfx1KSccbY6iZ7Kj)fP?qFAn>gFbhoSRO?;6rEA5h++ki#vLl0 zbrfAubV0FFBZ8q%<(jo}Q`#yhx}#VX#TqD9L$P|}*}Q5|v8G6?p3{r9v|taRG~}<1 zq92NNQ1n5uE{a|#)~m9l3;6V>SRX~h|8p}@$Rhv>@&73LqR{I`EQ;e2e1cZ=M<F+S zPz+EgSAbA#tZ)+)gBXz?M}&&aP;7}}a}?_QSsxy6d{|HnmfHEp$KS=)qNf;P8x%vN zASZdEN!GSvb3wL8aVQ50Q0#zWM-)3N|4uT}M0pmts~l@`*lG;ha5ogg#1yk`La{rF zJ(~EQDE4aNd!yK=iSLVIKV{y(NnvFUlrL|Hgo98VEZ+$%4yh=LA4att#o<)zgyIM? zZ$@z>ifd6Eg<=$nqgB0QP+WxKSQICtI1a^dB_7X#N)#t>+ziEuik~E*OAe!Ps8+0f z3W{@4oQmQ!u>&6o6{n*(LvYDGv$7kCvrwr2FXa9YigUznY)`cwit|v6L~*{9;&3G& zQ56@UxKQlF_LStss>~%S^HLddLcB~ExQO({XcU(#as`U3P+TcdS<V{K8->J+6uG7% zqPPy_4=Aoj$<yQp6rZCQgJLF%8&UA57}$mrQLu^bL~#p>+fa-}ajSgmrro0!x1+d2 zl6)<Jf7}puxy3jX<55g#dBQF3LNQr$WfeeixA1d8F@oIxMDahN2*TfgcoYQ>kNZ(f z;|F0B{2eF0<Huj|IvT|TD5j%$5XD0+&!@%1C?08fJ}n+YF$2Zpa=ueMf#OLqay5E| z@{~mHxh<W!<DN$GJc?N;o~dqUsfM#r=#BBBV|!mf!4CXI6tALq3B}8DkWtK$fDeB_ zL)3dk8YReUDBe)yb*Y6vK~uabAM0q~Z=?7K#XBh8NAWI-_oRQ@&kKqVP<+_(1Xu8s z<k|fRin%RMaK&dR=CwS*6<?t6QGAJ_4aHX|enas!iXTyYgW`J>-=g@g-toMkn2+Lz zmM6I4Clo)USb$<-%M)Dj3yNRG>$aa46u+bR2gM&K{z9<`#h)!taD~R(tMdXe$iFE5 zlMn&-GJj3Ca8Y=2p28IV9*7Ky07Z%-L=nlc8h<FVh;_~;V$z0HGn5vJ93_v6LPYV= zTT#j>6<1N36(`D?WN8r@QKf_Oa+E;19ZEvEHp(SXu7q+)l$}s6g>qSxOQY1yf5&sf za=At%r(7Q8iYPmy)DMQYM{>$K$}TPAyzGi{4U{XRToq+ElzhXmLnNnM4W(ZGZ;#}Z zYoc5WWp~lGisY0%Q1+C8+8)U%*Fm{4%5_n0h;luYy;1f;xqeF|r|g4rgO*56*%xJh zlpCS!*D_Pe0VoHy%#?Byl!H+YLb*B0O;K*v63HpIK)Gd0B&Xa8<q(uxquiz?l2Z;v zxot}%r`#Upu_$*yxgW|MQSOd%CzQLQ+!^IAEs>mZH<ZI#B01$ADECIWC(6BAB01$g zDEDoN<dplPJPhRlC=W(?Aj*SUB01$DC=YFk<dlb_JPPFzD35H3<di&wj%kVHl*geQ zf%15ir=mOo<#3cIqCBZ3l2e|H@|2cHPI(&2Gf|$7@{E>9PI(r}vs)rL<vA!XLU}IA z^HH9Ma%77iC@(;HVT&IqFGhJ8%1cmQ+TsVwQ7A{Z_<`~Yl&_+^66L)puR?h{%BxY{ zi1Heg*Q2}^<#jE7pu7R)m=-@!-h^^2%9~N%(&7ioTT$ND;s?q*P)<U5C&~#Z$DthG z;s?r!DDP^C<dk=#{2$86D5tbUa>{#9PHl<gl+#c?h4Ma>kD$CC<wGbRK>6U}NDhB$ zpq!5K;g(2F`6$XKP(Ft8@s>zV`6S92Es>mZCd%hgK8<oV%2_C%X^G^N&!T*;C6ZIV zfN~DX7g4^{63HoFM)^uhB&U20<yR<QNBJqrH&DKh@=cWQpnMDE+bxlt@?DhgwM25t z4^V!L@<Ws#iCbuo<dmPFoZAw~DL+H`CCYiSA1FUZ$-)2Txgp;ZU?0LC5G%h%`5nq{ zP<|^ExdE<Uv@5?yIbT+;b>taM?gNxRlEK#aiHsvrE+C^j%7tW@D1S!jqWlHrpD2Gt z`3K71P-^6-#ak|Fddt61{)_T&l=}U*#oqEilx?lv(nFb|^if7A1C;#!Z%1z#qfBJg zUhFM1lm*JXgSRZnFhu{Rw<M!RMrSfCGL|C4CWFXu$UsMLNyZXnEZNaplCd-y%aO4R z8OwI`mSl7yWBHEWl8hC|=tjnhWUNF+os2FWy(Jl4$ym9gw<Kc~GFB&JRWerV=q<@u zgN!vhdP_3aB4Y>{J;>-!Mo%(&ld(1#>yfbz8SBbDljbc8GJ280-|k*~%YuwPWb`Ft z12Q)3=q<_Eh>U(6y(Jj~$k?2Wfn*FKV`DNl>F6!V*p!UTI(kbowjg6GGPWdRa7S-R z#@1wP)6rX!F_etG$k>*QUC7vuj2+3?o{SwjdP_2PB4g){-ja-6$=IEY-N+c$(OZ(S z2O0YDpXMzKGWI6pATstLV}COCC1byax9r-NZ&{FW02v2%^p<2COvYhk974vS9la$P zhm&zcM{h~SQDjUZ<7hHQk#P(eXOVF%87Gr*92qB)aXc9(EcTXN-X-HCGKP2bmSmhl z#_437O2%m&y(JlEka1>5Z%M}4WL!YT2r|wi;~X;1?dUDZ7)i$Y9la$P7m{%a85fap zaYt`S#-(Ij*3ny%F`A59$he%0>&Uo*jH}7Gl8mbsd&|jez-!33wxhQs<9ae~B;y7$ z#&q<SWZXo?%^kfZ8Dq&9PsXie+(E`|WZd4-Tas}n8RI&7OEM;qF^P<cWZc!!Tas}% z8IwDDOETo4l8k%Ec!G?nWIRO1y=2@^#xyeS>*y`Xcz}!tJ9<kprjzj~84r{3NJno; z#$#kW-qBl<@gy0u$(TXL(_}nF1|R+|_LgMKB13~e{8+~qMLMlOhQxo!kkC-|wl5hk zkjZoBMKTgHULxZgGUkx+0U0lo@g^CsknuVhuaY6bA905KV+Xzp&%rk;-$=$=WbpWT zn~ZnF@iu)U8Sjzten;O(#)o9gBjY17=92L-8J~3YjbwaE#%CRUBN?BQ!L#6tcHc<G zS7dxGnk@E>-;%M2jPJ-;NXGYM{7A-pGJa_FjX#mGpw&12OvZ0y{6faBQe*Q58X3Qn z@kgs~{F4lqjK9eEmyEy3_@~u3{zpbzt8etk2+8ot2wHt(L`K}|8&fh@AtNJmX)<y$ zZ88cnO)^R{jgC7>GHYa7Exyro$XtR<kV!4R(Oi<urCNNWxeS>rlDRCI%agernVnjE zquH6v6<U0wStqkAnO(?Ssl_*%E0fu+#W$L(lG&Tg)yV8g=IUg2Cvy!l*KF~P=2~R- zXz`8a+GMUr<~n4q+u|F|USzJ{aVJS;A2J7!xdE9Qk+~t6eLL<X$?QjF{}$h94kU9B znH!V2NsDhZHzjkk7T;)YLFNTyZb{}LWDX{CH!`;(b9*wkCUYp6+mJbAv2UFDCz;!l zxm}BIG<P6#XEJvrbEg*HXzoJht}VXN97g88WbRJpUS#e;=AJFS(cGKNeOi2@xgVJa zlDR*b2ekM`^B^)0Zt;!gp=6#+=3!(WOXlHZ9z`a{e~xVNjpos09@F9*&Ev>Ck<8=C zJfX!mnkSJtyu~+~r;vFznWvI@2AQXkd3uX)G|wdStQOyBjv(_qGS4CN+!o(xjwJK^ z7T;)IC|=0Ch|KHByqL@@$h?HiQDk09=4CCu(Hu?Y<t@I^ypqgo$h?Zot6O}dc`cdO zwfIK!2CZd`!W+rti$hJ{D7D{0W<=&#GQT79Rx%$V^ENW?BlC7L?;`UKGVc^W)9+I< z$4Sswknv<rkU=Q;L_zxROXegp@0PF?^Ss2?o=oNxGN&?yOs?e~$>J+U422>HnS2XW zi8owG=KW+oK<0xI&*YF7hd_lmoy^%}K1}8_WIn>h$$XT|S!6y&=2K)oPUZ|UpCI!| zDZ*F9SU%reVkqsJDa1?uCi7|0kYjGlz`0D6+-J#rpG--T`8=5~ktz4_$dur}{Kl<9 z<{UC#C-Y@8UnTPuA+ok>-ASe{0i2w`rh9|Tx3%D#WXdIW`5ndc^c^zat?npl?t4O? z##8$PGCv{nLs4nEN9IQgKNe4Q0_!lB%x}s3RG7uKpOHCFI0gTlOu7F<=9dcP{tuaQ z`G?GJ7z!IhZ6KN7OXzje=g6E-<_~24LZ-Z<LFP|<Lz2t|3KuH;nW6l6|0xW=lKC5% z|B?AS2hz#>gUo-(Ttw!dq7us&6a7V|-2bU4WXj=hGpmivkbMrBE}5P<AHjVx1G!{a z-G*gmzOpE~#oEOQnJLvQGBXxJW=>`yb{1vy@(<TolcxZxnN+JuUHs#fml<j{&r_;7 zRD&X<a0!J=GE`(Kg-cUy8AX;=xEw=?@iG+2%Tuj0)n-y{1*$znHF^1qYIUleMYS$e zJC<rIQEfG<b*0*>R9l%Z{!y))4B(nZ9oZDD4{OE7=OIyBooZ`PZAYrDNwtlr)}3m- zsJ517_29Nst*64Z6|N)JkW%YXZM_Oty1tzu^xm4=M~qY3K;ec8`!dw5epK6vYW)=- zK()=NHc%yOtWd82iJU=H+q7N2W^Jx;3x!)M9L!MVY|T&+x&Kc!x&Kc!x&KeKZMF98 z6mG9@ho&YwQEhLk$>o2l$>o2l?Mk&hsJ5H34QsOP&RK#>i}qBwS2JrLsvSzTeYNa< zR6AIa{i!C*iXTX|gDPC0NRW$RB2cR1BLMvbgy2Ug<w&aO8@oa|S}Df}bGKEfcAR$o z@l+eGW9bB{ohYJYT%9C{42+Yhb_Uf>q1tKU;%cW>49atQlle?eHu1Bmb`{k|Q0)S$ zokO*eR6Cby=LthKZh3^ru+bynF+8+*m|ae_i>P)P)h<@`E}`0`vghHBU>|sVNwrZ` zS*nc|g#A_R3aVWxXI|{+*qgCetX)mDJE?XJ)o!BNwN$%amA|e!7t<PVpxPL!-B@|Q z=0LrfYPV@F8)q!lZf%^MRUWc-JJs$GZ_H}&D_3Hcaa6mTYU8PP7u6<EZK8NoRY0qo zB<gWX2e1N@sm5AOp_)z#DSHpqrV2ANun~l38rAOCQK$Dm#Vij{P2c?G>Cc=(nNGFG z#aGlGRw(}hMzu#3KE_b4=nLfuh5Rp&jL%T`6hqFX+S62fiE6Wy_zcyUVK&v|<zLa3 zA^Z8-^HkIKzof@s6e9n40Ehx}sP;0|{-N3{RQro+uTt$hs=Y?FPpI}f)!w7p8&rFn zYHw0aZ+>#G@!C3&JM<l@y(_I?>+w$%d!K3_s-Zp*drCikM757)Pa>tN@iv!gUr>$B zHBXCtCSz4R#^<6fdug%cmsI<PYF|<9Yw@T&47e8YNE!m-{u*CUt#WJgsrC!iexTX{ zs<Dut<iwUE{CbU?Y743MGpj1s$a(d-_kODVO0_?z_8ZlHZybK{qA=`Zsx6}0pW?vz zia6KB7oNpXas^1|(Z5vlsP-S#T&1^(d{tGpf5Pc245-H4k#Kvd7Evvhp~Y=yC_E|E z_<tNe6^G1FrUtj7B<BXQ46<J)%Orb!vT9`AM3zO?4rJM6^(4z7YiY8;9+)g5Ye_|x zXgFjcE+zP8JCU^vS#`}_maOH->P%KAvX+;p9{%b(AK!F8o~#wfT2c7<QviH&vCSc5 zbs=jtvQ{Fi8(Ce+T3Pnb{0|rWt@ss=B5M`0^!`7ebnxkqRJS@=-N{;mtTpA>sEWu5 zeJ!$jNJNf>bF^pm-N;&-tiEKeqovj*OD=qpwH{f$<n)T!I-f#TZ?ZNZOE3RaMB&*` za-~I#%atCo`jOS2tc}SUK$d>|VR4H#A#0GlEmF0J{hqZMS=*4cIa!0r+JdYtTU)dh zS@Pw7dAMWPgT)RZYg@90ayJQu_dnKlWNj}=e#qsvaQ9g|k~N$xR%suyb|!0gvUVYh z+qkO~sS1jo!z3x1??KkyWbMgGvi7Qo0{PdEdwE~74kK$nvi6rZwuI*ZvJNKeK(h4Z z-^H!t4mwoU@x}dhI9bP%bp%;QlXWCnM>Sf<aU|)lV?-JLZFDPH$B}g+S={L-NWIOT z;yxnlBx#q_doo!g$>NR}LDs2cokiAZWSv3Q>0(kYHFOGDXI6+nDWZP?CT%=NljkZt zPjdAPh^+I;x=e`|kaZzh7n607<nlO_;+K$hsR(B!_3VtSQDj|1)@ZV>B<pgru4rx1 zRb=V@zZ!wkU)Pd#16kLRb$w$5s{P3tL)MLrm~f-lZYJv|vTh;kC9=kn^(a|v7Vgd4 z$eKXb?PT4_@4t|B2fu*EkpZ&Cku_dkis4t)xa-$t3r{5LZnEwoYm%Jzar8j{yP2%X zWK9u@hNHO%S@)3jAX!t%x{s`T$(klNx>*QEV`Ti?Pu2rc3(qWmRZS{=h%BygI#~}_ zJPlD?MPKgL$H;nytjEckLDmywJt+f#%kod^dWx*4$(kvz>aez(u1?l05zEO<GO}iq z^*mY6>g;|_+QL~3rP3EzC9+-=#bl<;A?p*eUMA~pvRLdJWW7q(>zehN^p}j8JJoNz zN!DAUCs)D0o}I~hhpZ3DdY7#C$>Jkm{Uco&+aE|nIJuTV)<@bF{{LV8q>RMv$(l>n zH)MTE*5}+7vOXhgo+!gs6~(?F>npOpl&TvVek}^9CS-j})_0W-WPMN84{F%?GLX1B zshS@Fs(KfYy#!ec$qLB&nXEs_`h~3Dc+8Xat7x(xcm3~V{n70AMPlBD<^Lk9jjX@P z`j@PK#NcXqvi=iOH|+0{<*TVZu`MgW=9OL!$>vr^WaVVVWTn~#iHrnppx9r!URzp_ zRaR|mw9aP#Z;@S-HKnq-ZIcbM9Wl6Co@}}QDM_x&UXtvtWG_W_C$g6&dznVt?PbYc zu4-4KMfUP!*U9co_6m)**efn>i`|8lCwnDn2se<&kG(S4YmwcJ?A1hnoBxq~ZL(Kw zXl}1g_L|ZJdyRJe$?h(#;Pu7sLH0Ui_auAmmeFFbOZIv)U$~p>UW-SF-J9%t$?ik; zDP(Uz_FiOfNcK>&`;xsS*&C6)3EBO~9w4s6mTQVKuIzzi>!1H}vWF1K9z^!$WN%8g zp8qy`M6<RK`wP!t6|xoC+h}rY(NO3^#5-{jo)Px8WXrcu$lgxj_GIrs_KuQU@vz^s zcP4un*}IUv8`&-XUoE*i*?Y)%V1AJ!OMuq0H`#2TeaJq7?0v~Ti0u8yK7eew|5>dv z%66dinrL+}*@u!Xn#*_)%3)+5E=gu!`CZvWN0KcLpKKj|wq9c4*sp!8R;^zS<fVkW zMl?Br>=PA{KZPNCIN2vNA_CcOi;z>vzMkyU$i9;7)5*Sw>@&zdm+Uji7N1YHTmh9y zWRD<Q{>V&{4Q<aO`+TxT3Z<d#1!T+asG+UMznJXH$-ac_QDk3A_GOaGn+<^uL$XIV zdql2@3cX>&tH_omfNZ$}O7^v6U)Nx0Xnq6P6UZJz_MK$kNcJsc-&7SR`({Bz=donp zrnTHEV`l5;$iAKIJ7gQc3~Eo!9Y^-~hVVx16Un}dY*ud)*^|k>yISUyS(iw@vbFu! zWZxqbMAVxq#bwG&Bl`)m?<4yWvhOGRA+jGJ`$6gJl}5<F7xDhbp008p79FbgiX9#$ z`!S_I-b#Ox>=|S~r&&*tJ(KKb$bOpaS&g!l(L};*vY(Z0IaBya#D1Ram&n%mkNu)B zbC$5pX%rOv6>@kuy-LmoWWPqXPxk9%|48;5WX~h}O|m~G`z^BHC;M%(b@O1qQ}w=z zdapSXKhWfdWPh~Swj%!%HO^eJKT`&MVB}4ywwmnE$^Kdy<OqQ5FUkI@8kU;;hV1Xj z{#Nnt7&f{<IOi+z2O;vF)BcI<f5=`y_U~jb)QWy4`&Y7mk&4*zI%vuMO_JhC{vi7= zvKJ|*hJe_^i?;d~z^a?d|CemJ{7-h9LYHj)_%ky!Mqoe=JJ^t%CCHA*VP_tbU67rS zooSJ@p@0a_o3o~rEXR;6{;huwIW=<RLJ>KZsNvW`=Nawj{@)?as!ns1XGwCFB4;^r zme%Al<SZ);O|6vJN#XKB-0*2~Sk$`YtVqsk<kZROMot%Ux@wmGH*vLba#j|8UMNKq z^&ZZuLSdidtWHi(a@HVcEppZ*r@O3)oTWaN5psG+Qgqho;K=@8D3up-)+48viq(Cu z)0-UK{4+ykNoPZHHYbNGl6(H-s26qmk<*_XSp{U3aRxFoIU7q6_Thrd{eN=wVZqr< z*f>ilTaYu1oGr;2O3q+%Wam%LR>Hs$FlQTbh6rArcJbQeY)j5A<ZMUIj^u3LI5=~5 z5C+!&$kWN;x^|Z4RBMN`D>=Kh?9ZLu$vJ?WJ;>RcoIT0et7SLq>_d+J1s?Cuo&99W zNT=*CZ{Z1YAUTJSa}YTP3xyqNwQF(?CFd~N*@}jT%R<i%%{fBGGvgd1a*iVBXmVIR zx%^MgvE-<ecVr15=Xizk6hMwF0oqN&$&sfpa!!^j3WA*4G}>vxBUU|woC`GTOmfa5 z=R9)GCPyxRvSr9QNBiPjd9-BvNRN*s=loV{u#rcTa}hb0l5;URm$X{rGIB=ATxj3h zJC~DlEjd?^bB#`iE6KTvoU6qYtP=k!o2+*OIoFYM{o>s|&wWSZ|IUr%jMWC-M9$6R z$j$%C-ASCmVY5F(&TZsOR-W6*xr3a$$hni83FM3;XS_VKa~OetjNCV#oQV}8L2qXg zId@BlfU`Kh;Y=at9+ji<;c;`wnM%(6<lIY+#C*t^Rs~??k)PEN$^#1J6<{^&baG}Z z<zaFjA&1AnqvXsa=P`1gB<Jx)sNZ=)igPrKLt)Mgg-=PcisXn`Spvv;rcn_`QJiPV zd5IiZEHvwRa$X=uPB)}#zWU3j7*d3FewmzCM3f|7CFeE%V1?qZtA=lo^JdlKOjHl> zHaS0&^A0)hHiGcZd*m$8BJY#)0Xbiiqk$mjBPD*U@Dqh|6^b>;(S^W~`#+leoSZKz zTs*V$Rg?ZTIo~LQ#DB>7PNBws9NGMn^8-UgxPN~VoX2N_vQWNE!m%mm7s3c~ekB}3 z&Tr%_BIkE<{*cW!htb$3_wZ2slc0fd=Pz>p)>8kFlaTW-Igt*Y|Hx_6A>oq4uHNH7 z5IGY3(b|JXy=+O2cTMa=PAo%3x-2CptG*dUPR?%-ki%E`*<JI6&KkiWm~uS9%slFN zT)`qNEiz$Cy>JLnnT!)*3F$1MFG*;A0*EPGoLvEyB`i-^j?hUIV<Pva$m~p5p)nCS zB*mdW)Cn6Ax)4?pI-6qFO@yw5l?iKW?cE4sNy4gx?u6CEP&~A-y23RGYgQB)Q9@r! zVGlx2p(~Mx8DSm5x`g#4nkSm{BJ?G!FOf;~CTu|HBY{@_@eUjtw&S9_)ZUM<C!s%K zW5NK!Kxr4>wC5_M6`K$?mDn`~37y?0$KS9SVROO|!WM+B2wM^cOC+$0LrT3{6Sipt z=&F&Ap@i)T+Y%)5FT$%BCUzj`{-0kD5#@K{J|gT)*roCkgk6=go5EoVcPH#2!nrru zX<#n`tH-7Gk>Dg>xo7ztb;N#zBMJKx4v@ICwDds2!P+Q20uYJ@|HZcaFTe~BBOFdR zLi&p}R7f~V6+2o!Fv3282Of?koJu%OW%4uoa|HS0A;O6=+66gD;c$f~6Hck<@~(l@ zavI@u!Wm*u-aX<>5zFTbI7^#zw)CUub`BvVoJ%-Qit`M@NWx=;^9gryfRu27w&g;? zMT9#D7ZZ4ZT|(ghdE{CyC0wS+D21aL%8z|Jt{_}bxRP)U;VKrQa(ERm6uGuZ;ZHzU zlpC6qF@zfhSGp>BvxJUui^8!AZ&i4k!rK{2GkFc-;m3hxj3bOE+)tPw-S@x$2oni+ z5vK7xB1|IOEuZ?F1Hxp&lqSyBxQ7=$!c>LqsF#y0hB8EDEs()HbrInK!h?i|<oz14 z;dH{I+GX+xKwvfI$jD)4vHatNZwXKEupvB2_>3?^C;n3kXA<5ZJgxXF!pnqb2rm(4 z%QzSR@GL<;0WJ9R1pWTA;4caTub7xqA<Fy;;Wb5G72@5)2(Js$;Cz$tK7lPM!F<Bo z6<zUn3GcDACg%r)PY53pKGrHeYGgI!%vIv2?ffcXp2E)wUuf=^3cphLwZd;0Hsyb( zgZ6s@cg=jluY?~6dMd$2<0EGLL|9ObCBj02`~@U||Np&xbp0k1kk4)LyEte3LEwJ* zoA9S5|B}(pD~M$MBe)>{RzyM@@&6`DPq{)7#3uxDNTHL3M-d?+;;9i6t<Dt@5@kze z!-<TLlicGk<jM^nH?SJSw>+04GKu3mR3ozFe1SD&fxM$2hiF-mAg*8HKSWC?TvFju za_%ogT`y=E#)ZO-<*KO@(Mm+i6Rk+pnP>%h6N(wwmGR0&b)qg(5!;RZlGN3eXceNB ziMk0<hp1dIpjC-h6N(=Fh!dbSh)yS3lc>AY#m<4&l2J-Mh>j!bNi=|HZK8F=A&YwJ z%0!^`8uOHT5y_VfiFzySL$o2$2K58F2*Uwgi25pB*D30!c>gL(@qt7`i8dzMl4uh- zLJ|cA5pAl-W(qe~sDJ**Y74_)g<BEnX)nnuU_{%9LD&fV6P|5}{*S7&fSQ~5-ar1? z>}EaLY<4#<QlR(`Em|mr;-z?TcPsAh1xj&uic4{KDDp*$OL2FKyZq-qNnYOnIeVUS z=ef_^nb@7lB)hwYj1`3T`)@D;R&s{yl|j#c(eq#I$KPOe^JWo7!j`ZmYy_iVJy=Vc zwN2x$9o7-9Yv;4oU0;~CK3evMsZ#dFxoi{ApMP1E&0zDK-y#*mR<I3hZM-69L2T!5 z2iwDrIuJY9IpD5tb^>?q?F{<;Pj_(LesEU`yV-$uwi`wn1AC;rJ+Wd>*bDZyvt7@~ zoD%kh`(Qt~8}^3-r98l%xY@=Y1b4x~a1$H?*V$t@4u!+u81?6HI0BA>BeRCA!$+I# zJ}w7xEL;x9!D(<joD3(Z;#lE{c2i(gPBOi_i(#CKTK_SAJe+E-%zHYV4`)boCY%HI z6)@2Kg)}Oj3+JU(q`W|QAzT6%Nnl?GO9jv${IZk;Wd<gwmTm;NO138dTqFBhtM0BH z>*V!zZkurf+-SV}xaUwzgxla|xW#gUBkdBq)t;W)se3!z33u4>(t3^=E{?l5v6JK; zxYy?Au9h2}UGm|6coH6f2d!Oq$=mLASH1lOBs^lzG~KApqwtuF$8%<qiceT#F~L*t zz6^JU{7;deQG{o8Z9WID!Sk{wTYu~_e?j=7@Fk%;(_V4E83?aBbd2oR%`p8N@TQC@ z!nf>(m$&VP*Szn*ySe?IW8`%wo27mD(B>!B&yV2~^V-&Z3SYoy@VR}1)$J3<yNMiM z!dJF$UGV|8pTCB0z%r_1V5;%%K-)?CJ+r#g_y<}pA^%9zho7h<@H3?k;TJr2A^eKx zj>~TpKG8|yhJZgPOap&f5IfEOg1_M(E4sNZ`tp|>Yn-bvt=(}KrlYVkh3P3QN?`^H zeH3P-;8U210`^SSlm(&ZiWG{%QtFajrqHBNk)|r9Cak9#3JvEH6HtgLgtA+?H&R9Y z1cb#;`(}@TDfEO%T3z<c6b4h6g~FT^W)(A=q74$xE}SEcY?$?bE(&h((*>WK!aS;F zOF$In6YAk_rqoU=EGY3p!i9y4ICNs!i&5B+!Vn58QdpeAG8An6hr*KbE+t%gfPN^2 z<tQvWfUzYY3d;+J3s-QM3Mh=AFp9!T6jr0KvZAe$yL4{YhODky_VAa&$h0nnHFMco z6xOA%w(72vlCsy6etn@<0}7+lx?(n>uq}m+DQrPu6ET~r)@Er03Y({53R}v%mAqRE zw@Ed!x1+EV1ugy*>@VOc?AY&34GOzZxSGPQ6i%eD8->Fu>`vi83S%hjLtziq+Ecif zaPPFDY(4)i?595LFFYXanCydu2TOTKT8qM=6b>5@;Rp)HP&iV`qoh1~fcIF7W;^yc z3dhTPf^h5r%}Er_r*JZbGbxOta4LmUq!~XzV?X{t;dJ2{7Bf4?l>ZB7OMi~=T;X}C zK=uU`E|YN~1?B&O<$nsc{!hWiom5Ogi~mMmA=d;7SDM$Dt8&dX6ed%+mcqRhuA^`> zh3h4_K~3B!yh%7Qts?st3U^YtRkr*7uRD&n3-54fO&D{R;@mCNn;6+P-bY~)h5IQy zOyL139~3?`pzb58^{DVMp{@U<0t!!1c!t80s`Zrc>D*<{0>nJ4TF(ieA5ixN3hz*O zk;2;)UZU_ig_os&C6Dkbh1XJB{2Pk!rf`bzt^R0vm3Jw;m)q}4^MUGqD6~{V;p0>w z`%`H?qwpn#&y{Jvu$b;M<T|;&qVP4I%O2n0bt!y{=Th-h3V%`fj>0br@;wDx|CjwE z1$zWQ;pdc*{VN5R@PCuwcZa!H`9C`re^dBZf`9%Kc+(i;O`9@!)8iHKX26?qfMzB< zt^b>{AiWI%)~;8=3-ElrDqdNxN`FNaH3WEdJWKv~dIcz}8{)O`EdS$0{k8C7DJ}n} zBwi2C)lKjQ<MrXqhBvb`v#9Q@{dH9wgs1g?Zw_hZ91v$Ny!r5K{a?y?g!A@S$D1E- zfdTpj@s_|_2ycj#3*#-4*Ig8Ev3{kzi>Gn$l>a^De{Vqk_lDxFj<+n{N_flR4aXa% zipyI??GqJO5Uwa3k@9$!|HZ6=w`y*$mV4L0TMKVw&aa6#Dz)?8u8p@2-ujNjTNlsr ze_FTSz#EOXA>Oul8#xkhV{@6Y3Erl7TjFh|q9uR4EzIk_hLdTw61g?rHYsE0xwoCj z?eX@(+W~J^74>w$+e!A$c=jN`K5p5>!rJ;j-tNLNczXZGm_5bpg|~O$e%{&XQ*<*K zZ$G>z@%G2N5YO^I-hp_>%Qy({U=tg82;QN1O7-4hc!%R1VJ<zau^Ewf6y7m-M;n>W zi@am;jx&LK${;1)33zAYjm0|^&*uMlC*h5gak5Pdv$jsb8*jFY<L1(y^1pXF-kEsH z|5<#?|9M;ID9E{ag!Ayu7juCz|3$tC?_#_w@Ra{O%l~+n36=kcFD!cko^p$4Ljc}Y z!mIJFu~l^MT6+ZS!V2*;1b8>#-H7)P-c5M7<4rVy)x8<-mSE-o;oa&`%x&h%Y&!w) z?iAjIcQ@XBc=zPqdo!g~zaQ@b$sWweEdIkHH3WE%;ytFe9v4o^<2;d8!F!70GI&o@ zoE9(b%rkhF{N4G0_Z;32c+ca#hc_ATbwz#w??o9e317CyXV&Le@LtXB*BoO{l)N|a z-ojJ<_ok$W#vz`b|9bDFXA9oDrgu*Yy!Y|G#`^&86UF>c=q|C3v-2u_6zF}5_nB3( zc0b4aB9HSW-dFufyl*7<RyZ}+f2ZR2R?MRPDCQ@;pYi^}`z2SpTY%s4E&5%WKk)uc znVkO{?;p8r{!ek5|5`6jCuVwzGgv^q5=n7JiZfB1hawaQQ7ll5DS8x}6pI$8SfW^! z;S0+YEB0v2MR4fe_bb+fbz#Fus}-2Qj8NF380Abm)rjv<?8@j-oS9;xAbpu2i$9CV zS%vvqpcZ*{igT#0^1m^IRn#Nk;@oKvit|!jRQ!At=XZu|yE-Vk&w>;erfBnjbEO%$ znBM}JW-*FGC@x8HaaCF3Kc#t>qBtP`7l%?@p5n4nE+-sjVco}_OU2<7ccQog#Ss)& z%wFSh??)9^qPPV`cd#~~xQc46O3_~Iq_~<;w*bX8WRDcCX-k*IQMPoMZPD5k*O6=8 zoUtK*;`&x}muGRbiW}zMja1y2;wB2Usc<vl=2=*4V#{2=6~(PpCCmR5w^eaFirdTB zAy-=dSDc+Gx#PPF#V084O7UWfyHPxb;_eg=q&SA+-m16<MVtT2-plH`A*{HMa9@#{ z{}=a{ZTUYJA4KtRkq1+>`9H-&bJt-5WJgduQeMsfi$|v#F~?Foo#Js6Z8Q;c0>yC@ z$13cJ!jpt2rvllU{};zge`*?yq74CJ&Y*anWM@)5OU&6q&Hsxw{~r+Qe2N#yd!g{6 zelNvKDBeZ!Qi|76yo}=2ig`K3E2NwtyfW2OwEUmj*HFARwWYb9;++(4pm+<#8x`ax z;Y8uh11f6%U$ptZT(?vFZ~mXkDBex+5sL1re@Gh3{}k^N-cQly|FR!+nA?{B)ssgl zPLlUAijSw>ex&#$#h)p<{Qnk3m;Ya(=uX<_rGJLvvw5`V@@SJ4^92c%|BK51#g|io z_*W?^^Jl$!o#Gp+^`>x28dLV$6u+VP4#l+p?^3i|0E+JmKS-4nE&q%8nBo@{H7FE6 zRa>74KTid+zm)PT;n!&d+22z9iQ-ggl>Cd9{3-q*wB+9}7V`_GBE?@R{zLIMihoo5 zUHl)4_NVZ#|Egpg`!6M%`J1vdEv1<#O=rr|^uig018xCINLdhi4)eMtN)<{zC7b*Y z;H#8EN;T>0xwxTX(>*ch7gK79wD~`!wlE&x?NS;;sYhv5N(rSQl=>*mOKE0Gb5NQ^ zb#4AnX|}W$r9qTt9}vOvKc&Ia%#~~Areu?U=Mq03rG+V3{-?Bnn3T8mACU{?%0*OM zRGP(7uk6Js4W+aMrKKq?DUHql^IFT8k+rofr4=bHM`?LVHviB0;m)A6LR!qp5tLRE zzp~Kse_DmoYLvF1v^u4AD6K(hZ3#wFT2uWQC0wgNep->zx|G(Zw4U+VrfooJ6H3be zCCmSml>AGY|7V&_6>T%&=4nOQTT<GA(pHqVQ^l<*Z6ki$evSC;^VWByv^%Apq}f@n zU4**|cS~i4*}mF?($$pqq;wLcy(k?-X>UsV^vfviOKCqv+h2Hq@IZ%ogo7y^;cQBW zP_q0_$<}`;9X>#FB&Fjh9VOY(!efNTI!tAhwEk1l`cG-BBAhrN!pW4*r8JJx>6DcJ zOXC&cRN-j@;+#S097<=3KTCLazc)1~okvMaJ*D$0S^k&o!rXf?rOPR4{$ILOE}Q@7 zGUfl$1ohDJKc#H(NA@+8o~CpyrTZyeN9lG-*HgNg(hZ8E{9jW3FHIZ}^A^>${4d#U zsf*Gbl<uW;r^vg6cMI=H1%|fgE&nUR1C$;U^B|>%#5^o~MEIz~R4L8llqQLPLa6nh zlCA&b(f&v2ElST&dX>_%lwPD{$)A!2h0<i%mjBZ#lwMLCt^br>84%|+@vlq&hVV_{ zl>WLZzAf21l-^bGJ>mPp4;-ceDSbqF9!ekM?@#HIpgJ9;Pw^L|^qI}BOP^EvR#m<b zekuG)_%)?(oM9h#k5-zBU!(LLzDMbMe3znsp!7Q>%m0*q68<dwMfj^j8Nb=9gPHvY zr9VafMad=nzukWrQToUJ$;b&Dx}rZ#R&=k``P1P~Z`IA70e?mrGvy5Uh19lpNc<vx z8NY<@8|eb}x9eB%t7#t`iC@Q`6~BSs#&6<>)+Jy6|Lg9#e9QlmMHaz*qr{K#XSUle zzawQAU+e#VqGF%v-N$_qz_<KwA9t7S&xSug{viB$@n^@M$0pVO9QbqEyAWm%#-A&< z?aLZwyW1SyT;tC-p#KZt=bK~wUkHD5{DtvX#9st|Df~rUqxg#nhu|-Pzj)RYy?&2x zLx7vZ<1dZBoMg-34^1`r%bJni&H2OdmzQ8T{t6kNxkliR#8>|JSH{<D-?t$E-yS@f z*zDEuZSrp)+i7d!ua7?pe;xd_B(R|&Z!SMK{PogX4Ezo7H^m=~zY+e1|J`@^8{=<c z6$jOG<z`mYJq7+2_&ejf4Rl9vE90#vx&`pJ!MDkO+M@XF@ps5IJL*{PG+=M<g1;;N zKKQ%g?<xK6_+#+*$U37&@on;tzqiH7`mnE<{fx<W`vLg3;~$8B6aGQ?C*mKBe;EED zcJ=v(n$mr;-FrCx5!MYm#77E`!arKZF~VaV$~X@Hc>EKrc;ZL+V^c#eoBz8H{>k{` z@Gr+d1^+bs@i~90iA``izB^;jz&{sX`QO+4-`D)#xB0(SaT(h`Px|xo2p8Zh`8)4i zFXLY<ukydI{O>FOJFgx6EAX$!pMZa@WLM%}CF5%0H4g2QW^(^Jvu*R0|9#8<`OcY` zD)Dc|za_VC#lJ1J)z%&OU*q42|0@1n_)j?({@wWZ;6H+YFaCr0_u=1fRqR@LzznzZ zvxD`J^bhCWNAV}&Kb99CH<@0(#eV|-N#nCPPva}e`*sQ7KO=k=-+lk<Y|~gam@Lxr zKmLpOFN=K1b=w3+zLIb0Yxr-A(GcKk2=Fxo_*3xTGJST!yo3J%zU6=EEsNs6pL;*V z{{r6~K9}%6mdob<wiQ|R&+tDt=D&bn;#=~!&yefzzrlA2-v$Wx!Jle|ZOiwROZY$F z|AGHw?)?e>XZ+vrf5HDXZDPRI{hl}aC*|oB?JxYlW&A^V8vK7VvD+c;v?<&F!e^1o z)0?b3gK$R5Gvz#D3Y5KUb*Nl4m-{YB*{5u2nR1zOg|ek|%2moW6PR5WYW`ntQVwjj ztsM5RO;L^{Xy^Kva>s1~<*u+NOwx^#Ju~G&lr8^Lo;9yEn;GfKRe5%~<`B*)94wrR z^4tUB%u8iD%JWg)pYr^accr`l<>8dmZZAlA2<3%Tabe*iloz9H`QJV+5v94Pyg22h zDKC-olr8^LUdoE;VsCjFF++ux|0yp=d06hXAwUPhh5*VdQr>{_2+AW>)DTc!S@tTF zS2eN8Ruir+)DVz$W=+bYa?M(l*Op+NoLQIhdScd38M`*iqbYAAazn}+<;smIYY4Em zHl@57Wv8_DAIe*#8!lV<-^i`=y`lVXwcJtOK99Bo<sGxkQ{IX4&X()SyQECc??!p| zTt9~L9=W|I<-I8H<BF6u1i0&>yf5Ybvhy}g6y*ab+oYZHfs_xDaWLg0WE?{IP!rqP zei-G$vx-(c(h0;LMfvDlb4)6re4MHuPx%zeC&(TvJdv`Jzx$$M`DC4w<81TYw^6JE z<0)TF`Bchh$#t6WbjoK?KGROW^!bII;ci1Nk@p<R=c?{`CNS6elrOM<yEFSj$`|GK z#U|MGXv+5070Q=UzT8!m?f&0(8p;!NT&}eKnBXeY+X1?U^2?O3rThrx>nPts`FhIw zhOEhMG?{h&CgDWNH>Zq(+)DXw%D2hBUAyZJ;hn;}Y<Icpwm<KY=3dGVQNGW<aBacw zr~H6@r@Q=M${1Sl;j~EkQOYk+evI<}C_k<$lhlnTgiksY`4r`+Q(OEqBA>PO|MGLT zSFNq*DNjyq@h?(V=2!P5c!lzJlwYO%A?4R7>$T6a<$vdu;7!U?D8EPfEt@D>%(p4O zqka2s${5<NeqZ=ON>X;Gv@P#b{+RM7+UK7NKNEiL(3;4O%a@cb|5N^2sQJIu{Z<jC zn$o;3|GT9917*welz*iBllJq^LcRR|-=_UW`FGX&L#X+G`7dXy?%#RLe>0{s4V7u_ z1wt3Wz1dY!@~_N5rA}o=D!v7&%tQql1)*nkjW1FurMC5?QWjR^stU9GpEX)(P-#+W z+mxdc2tz6@n;;ouLqKlFVmb=a752<!jrLKULS<$u*Hf8=%1A1+Qdx$|Y_@@wK~$8k zE3;FXgUUQq=2Wf0!nqvEnA;5Z%2vhY|M{uRm-4Rv@-84ul?&RDwRV;ND~nKBf{NvT zDmMR@F+^zp5g<d!zp|9<r5&ccx;K=Hl7D46Dyvf&MrDL#mj9^?r=t8{S<z}`+q;rn zZqrtku}b<I-Bc|3+b2CqDr=;ZA1Z57*@wy~Dtl5{i^>jE)~2#Cm363C!l#n%MjHZx z-7liDff>UWrZQT%A(brutGEf3ZK-TZ#gaUg&8Tcn#U^G{wy+k{8z?Jk@?Y5|?S`R| z+fmux;;Wxjc1&$5J1N@E!d<BBn)AC+$@70@jJz5G++WRF>w8gA^3S5}OXYYf`^mLG zl_RJeAp1b!K~xUaK0jE+LmcM&>M$yYTk$`}h5#x@Q8}8*u~d%9ymne1XLfcDoIvFQ zDr2dfLFGhMIf=@687B+J2~V*jZkvCqil;f0ak?4VNpdEYv#6Xy<?QVAuq(*&zbjHX zPk4SVzL3fUMR3RKVk(!)zQn|Ct)Oz5iZ%pLxgsTHUum|HS5di|%C)kuG18j2E;U5n zK-FDDHvgw`6O~V?Or-KIm7A%&K;;%HcT%}k-rKB}$!-_kVa0SlU%89Q-Bcc>au1dJ z<h?f=)+_f@d4!71|EcKxpNiIhDz^S(5gewsB$dagJV)hmD$i1xMCE@}wEk1k`cK8y zf2cg&UyI5!S@krC#ebg4<V+xv%8OLqRMRg}ahLpSR9;c>RjZrM94bowR{f2fnPOgJ z-V(k|<(-t#-qYm2^1fUj2tO3s=1}>V$|ugSJnufnd`9I*Dxb^#g37m4zNGTCieIHi z*`{HYZ_@h(DpRexyD6xAC;VRcgF{vMiR$!Jl>aNgQ2C3>uT=h|@|(QBQ~ATHD>G!l z?TG(PHBDvzxbH$z`PaS?>CV!sCjV|Mt4?R<xpP%#pjxFmBh{I*OQ!1H==Z4>s21&- zs(KdIjFJi5$HlLf#aR9~#%*=AMm45dryAg1qHtq$wP_0%?&Sf~hg2hxEvsTo+q`ZD zWw!gwOtnijQ73!ZajDvkh7%ZC6SLS>m@ymGOQ{Z`dLY%=sm?2M4&j_smH(@j|EXH? zr#g?rEXP*oqq-B-`KgYes^njFf}vCwq`DYY4Jg%x?M|m^KLJE_(X0bz523nvzP(E* z@{*~Ss)m574FObb{;#^rQeA=Saw3Nbmk)Nc!%cO#X?B}RRrx>LhbvLth^pJwBdM-J zb#<z%QeDl?@HG9p3{YJod!xf$9o03d+VVctQNp#Tt}Ufw)}gv?YCEL5zSXko8&Dl> z0nOgfNUOdv)$OTnB70M+TT$Iig3Z;{Ev&1ix1WO$v$cxb<ovcOZkKvx@1PyHW7=)1 zJ5wD)br;jyw(m-Hx7^kcVEc9ts(Z=1r@5@Ty{RhUSNEa1uLXAlP}YI{rL-YH%7dtm zr+P5elc*j-)lxduL#ZA{RoT9JxR@hM@80pQ9%Y7UbPJH#$GYp6>Ty($r#hDE3F+l5 z@<g+Bb*q;0e{~$yQ_?u@|INi~2&kS$^>nIkpPwP}%v3}5EHjQMQ9XyMyY9}-i|4st zxTShN)eEG*(0KQ|<yo&Trh19l*=chb)#oL<oaz-+AEG*es!Qp4{;yso@6}Y5{B0Yr zrFxwX$Mv=YT_`)ZZ=`w;)tji^L3JY4TU6_2^V*ee`Cp6;0aPvj+b_46t<kx9m+ZTZ zH~qa-mGG<gQN7<t@zOk)Umy=teS+#Esh8@b@;*lOaT$|RKEJr06!{d@r)B(4_>Az` zT=SeOs`bg@U!bZ~Uwx74OXjlPzMN`g+YmtYHK7dwRNoNVcwtk}>RU7pr}{Saf2h7g z%_WL=seVlLJ+-3zUse9ED*snCoTc}G)laB-R6nKqE!EGceoa;Rzxsum_)_>)n(%c! zeq)WMgK2dtRoCKoRDYA~d*KgMe>9Et^C#iYRDZGCsOqnF8|7SP|4ubME;b5K{nL0i zxK#f(BOQ;b|5BTtnhgi0sZA@K&WbKG)MlVI6SWzw=>E?=)3~p570gb1SSwQNQ7chv zQ1cy6txT=z&QfZX|E`N#jaog8V0*0Alro?eQwym@Dz<_-wVAcHDObzS(wZfCYF#6( zZbEG^HOv3hW~MefwOOdmrsAxoaT%jFC^ZaCru<)<({hd#=gN5v0W})}sM$#2zIH)v ze(Lv7TY%bb)EvJQwFPtiLN-p-7N)jH&MZo8F;yQTTwJ(>aLHg>ZL*Ns($torwg$DK z)J9NS)@_S6XF1_8YRjwEaED@65U%JjXI2v9_P{DKR#j(K6Rz&il-9kG)V89wCbjjc zjgoRL;o6G7P9AMtYRV+(_)^<|+NRV-TM*mH8&cayd(uW>F`Jkxvp1u*d2Vk(ZOhbl zNNsD0x1qL^jBTlHXS>~EZZF({nv%bZmhn4N+r`e<+OBr?I^OKvsr^cA47JOs?Lo~k zdr~`z+FsO-qP91+gQ)GJfct8@_7m<eJRsl311*{z+=HndM(q%L-OGAncLesTSnY5X zj}RW2lCqDcb^<jUEL1#}+Hp4ZsvU1rFIQJcZ7j7DQ;k|Vnc6wj#!++E&MDN+pf+CB zPZetMr*^tk&%&PRCR)_avgwv1Q#|ZWYUfh3wH<2b={h=}+65-CYwAMbMGlQ|pC#9o z^3pu!<<wrJb_KOZsZF4E8?`H`-9XJ2f2dup>h34tT&Qb>*9ot8Xwi(f^&e_CX^SQb zE%{TsC2vA!nlZOiyN}u((%&h~UBbI_rQ5^zrndO|rF_8Bf;I7=@F8js=gcFHaW=Kb zs69dLacYxNS03<5YR^)8N)?s=YnK02v?U<5@?3s&o~Jfh=h6!U&a0QGeM;?RY9CO0 zh1y%H`zp29@;I-Hc|-UnwJ9l|d*7yJ^M7jZ3g655_w&|2r1pvGek9Z@pl*A0aH)Mp z?OSS}Q~QRR7KmzJx}PqgW`F)d?Q8oP6Fa6a<YA{$`;ppr3iZA42NPsF@Fy`p>n!@E z|16^R8+CWx{Z4%@YJX6#Qu~v-JJbH6_AfPC{Gs+w+JvE=O;Def`b^ZPv+JThy&Z-6 z48j?+LtqS6w_c!LrtZmG6qba(DcvRJ(8S9Brms<NQ?FBRWc#7sRGdJvP}s6sCXO76 ziK+LfEBVyBsaJeLeGql!|N6|X|I}v@TJooE1A#>_dv*n!LpY~!aO#phH}zrE=b^q3 z^?9k!XD(d@)aSQl)%pU${}V3gP_-7OzNCyrs4r^oOx70@4iPSHH#N2uOIWnbUW)qC zmK*EK2#2QGlKQgLmrHH&%TpgkeK>Vx;Q9*GSJYOF5Zd~W#kB2Oh58!QS5-r+32oP< z0_r1kW6fN@7WK`juT6b4^>w6I(x}@dPknu%mj2R9slK7kfsO1?nqXt<n~2d*0J(<j z4B6bd)R`@WTMD-lZY|U;fK}g)`Z(&_Q$LXU4%GLfz9aQ9)HOiVcedYKaFfr$C#kJn zsqZFc_mq*nhg^FqtZoGAd&}NOX!$?y%>LAs{B<tLdl2=p)DNb9l!6>W{ZPx~^~16( zQP&VqKZ5#^DU<W=1hD*1{aB%`|4=_(c!I;c#Vr3*cUy7tfV1=z>Q_-8PyHh5r&8Al zSU-*W>56bh8iD$m)X(aVrXHR{{ak6z6P_>B{J*aGf418%rhZ9&<zAY1<}!&d7hWNp zAiUC{f?rMDZTmIUuT7b>!_=>*eh2j%q`8s$Ez~Xlt2mK*Hu*QkcEYW~+l03pX-D}^ zhcfP>p5=cD?xp@Z_4}wlO5NuF)O9;he~|h^RyUnS)*q(+h!xXsF4P~R{tWfUrJqFo zDH%@)pEQ{pr|Opf#pFXk{aNa-P=Aj4%haEz{v!3s)L-a-N5Zv5{UxjAmN-_NVjZ^r zylRYX!fQG62KBG0ze)Ww>QksI)z>vr)ZbPW8v=sWM^b-}`p4AYr~aXeA2>9Zh1D%U z*2E{&KQ&%Oc|R9^LH$ePO|M%3GrpnzGxcw&|3H1JT;JuI@6B*en(9A_x5>YKY`cD; z{s;A6Q-=C)68vt(tPeK-r>;AKx^4k%lmDerqhZqz8q?D7XiS$yXiQII2Jth}C|KRb zOqPBdm_SD@%VUkAyd|Meqih1Ve9@?gsanzE*J<oUqd{X)8ciB=x?h8!(MQ9+Ax@)3 zBc>6_){norTE=&1^knGw-yCT@Ni3#$XQnYo#w;{ub%t#H{+oN2VFLY*P-6~rS;fIL z78E}hjk#&ePs9HIm&Uv_=1Vns<OR&ID%!)QSxCi&g^Q$K)m@Cn+BAmHSb@gkG?t~Y z1dXL7Taw07rtClNjb&&IwI4>v`oA2F<!KDFrX6Xm49~h@_KGw{(ilNw6}eWTVP|Y! zcU2mzJDbL8X%!l445+)N*%oA!aIL)7I=Hi?u`Z2t|Ex!2{Q<Q`)7Y5ChSp)LyHV<* zu?daM)YhhXoXu%$kyXsLWh)xH(Ab*B4m7r*u^kQj{hw5?Xxry?cT}jIXzcu-z&2!8 z8e`<zO}KliS6%xR2panRPgCwq;~*N!|BZcV94P&MI_vhQp&>x4A{HS%{~HHOa|n$? zWgKQMd1)L$<7OI1(zt-eQ8Z4bakP6YjE3@m<5(JFRpmIl&>F|nIKe8Wmw<J~h5#BT z1xF4GPQH=GI2BK!aUPBFvQMRPwv5wgoKE9R*=N}0qdw5k5RhiV#yK=B|J%o|8q5Fr zCR|A4S{fILzu56KE)k~Z_GL7#qH#Hm3GTm*Xk1~n(uYTlEdT5Jy_&`~7Sj!pYK6vi zG_KF>8))39n3n%(OiX!ONo(9fLo3ydTWQ=z<31Xe{At`l<6at?|2OW^F0%Yj<DP66 zx$R2tyBqh@c#p;d@;*r8RT>Y`P*!g|OhftKDn2T~V>BMOdAl)_9NJ92@g$AOVxAH{ zP2+#!pAkMQd`|eh!?c!^F9=^0+7LkFW#KEC%ow``pz%75H=H5+O&U`a?X6TsL;1h) z4vlyJ|M>4q{{f8;^SU3=_&B#ep<(%-#%IFMX?#WF3q}6&zc|^(ek0AdH2#q>mBx28 zewJ<dpT-YD4FL_i1yJ!98h^<6mBw!}l>Bv$(NOYlDET-3cHX?!zou+XLvsch(+X_} zpgFxmJJXsosyGu(Plo#~pF-*~G^O%?)AGOcWrFo-R%m`svr2Om%^J;_rK}4Z!Y0kY zs#t_j*rFN9XbWS9GVC&;*`;ak|Hw{+eGb*)EHsy-IV;Wi#Lq@^5Y4$|&n}#U=A1GH z3+HlZpDfxuBImWqzcn<!(DFY`_gRGIg3eY^LqK!kU?ZKD%|%5nW@)E6ME2sjatSkR z?=3}hC7K!zn#<(gp%O1ETuwMlxIE3_GHmfj#)>pYq_(1^<SNc3@2WIc%WaJX%{6F_ zq`9V%?$D=4zquC8$u!rd`4G)@XzoIDT~%L?=7u!g!5XdN23AY$=B;l;b7PvD)3n7O znwuJL#%A`<UuJAUb32+_%C^6grm6Lx<~B69bwx`u=~UcYTK{S8KyybaZT@c=skw8i zp}8x~vuN%{^H`d@)7($J8bfmrntRLMQ@B@uKWXkGX5W;dxj)TAX&#{X2hu#4=0Vm< zx?R?XLvrO|G>@WrIL#ya1vIq;WXIj^^%VISn>|{^<7l2D<9M1U&^(FeSksux@_%mY z6`<xgD_WfKxp6AZ(`cSS^Ylz?-ZN9LLz-vPyq@McG;OJe=DEW2gy%a{v<qooM)M+? zm(tV%QB%uhdF#?#PV-9DviwhTLSFYOn%C02n&vfG2h!yx(_EJ_G;g4JyMo+E^Cp_N z(443sH(L<(LB(5X-ey(YU0c?%J80gCyDMzorRsO50cGDy^L`okr6kP<Xxhrp0L{Y^ zSpKJ}<llUZ=94NuE}TTuh6!uYJ)>zpCDP{qH2)`j#=KU1R`?vv=le$=nlI2)er~=< z^CbyhruhcVS7g8HP=@k<^K~n_yY=RqBBu!7qWLb(x6Ng(yko|-tI&KeWn_Pldu<4y z`4LUa|1>|L`58^i|LHiGjfTxH2wal<lE9_kucZ8%=5I8W|C`^^{6XYY;deAG`P(Pk z=gR-hpXB|S<}WgS?Z4_(v>|||#)ameH2-o%F@Mw4;L`jzWrCfqBT(`Wl>CF~?LY_a z=l<O<J}CbOGi7xHEJ9GQV%n3SD8}+Xflp92m;1QqCP9^8Re~CUB}M|be&p^SdIU{^ zm>>{o$zMiGjoSJTK|2p_$zR^C8ACTDNC@U8=p&dz{LBQi$e5L2kc`<(>7HK%mi)7Q zZmnww2nI_tR~~;Jf`!G*OE4cn+SdF83-li>0?Ypd3mKEnWP(M+Eb4x?kzg^|Lmb+4 z%RNC0mLOP#U`g>y5ey?x{tuQBW658}vINVe-Owg4FLJo-6$so;SW(Off|aa_OGNse zWV7?jhhQ};TK85bSc70~f{{66qX5Au0!{vJ+f>DMa__n-t`}td1}csw+>XHQ<lhK3 zB6yr&V}kJnn-J_luqnZA1e+1;=>7+eU@L+xtS5H7wzRNjY)!D8jBSM5ro8O!33hOX zeKN6@fP$UnwPZrDYw9J~-3(*K<jkG~M-l8ra45mva_vKKAi=%_`>VL0Dcx%TR?CI} zyNUzL{{#mU9AcM-V%i)vI4rdZwEhzuL69YX>5nEjQN}R@#}XVb`#7tT_51{95ZHZz zk=DdX1eW~8k0Y?b!o1dpQweS)IE~;!g3}4kAvnWa7U4|cS;Di8H2t|Mo@YhVoG-k< zMoBAPL~sqk#RL;n)Knz6l;AQ~6mvPj75&*y%$35cgjYMXo2lSh6)pJ_Tra%AT$%SK zg4+ltioaQSOX?-KHNOgOC%8whI|%NSaaX<vvLS%rUV;bZviwhQKfwdeu#fGuheRs> z2alvYfrfzKF)P}Unnds{!4m{Z`@xfWUCaOOL!cobcqZqcBbY+)Ji$u@lXJ}rQofjL zURF{0Kd}5y@EXAzGG4dy#F#f7=Js0zUlY7d@Cm^?1RqH7uJAnq8(i#T8PAfx_>Txa zHd{X%LhxzMe@5^*!I#o}k?*drQm@@-1>X?-DDStzsRZ8<DETjuo@qbiF_rv-pVPVo zzexY9Jw>&i{7yKW;19y8_&*6O{}cR8=o0%s1pj8Is5=nhG=$R<PER;pKWSmjH6x)< zI1`~qi2FBW!h-!LvimrJ6^n$W)VBYXa7~0Z1Q1q?v<NlAh_EiQVWfGR!hkRg#;zi} zWiHdVRg4J-5$5?nwER!lBTP(Yb|2x)gqHm69?IPwhO-K1OK+(NXD3wZ4(A}8lW-ow z!KyfyaPCx=i{}-oJBV<8*$WUVavI-ST!?UC!leiokzi4WG8Q8oLTF>0MYEnPAzU&I zE{%qOa2dj(DM`32;c~e>jBxo(Y}HrLepr!kb;1#<ZbJa!%GQJ#s}Qa#Bg_Bpk|bP% zaAU%egzFP3`G=zjE#VWcMYwiaSITu$n=t?WSGYmWjFx^w;YO|-GBzRHT80LZa5KWq z2`%RnZsE|fR=AZJ?qf%A8@cl2Z?f&h?2u{*cO=}2@EF3K3HKn}CFge~+)c{eb7qWP zgDww*dlDW%xL3~aO}G!?euVp`j6DSl_cuFz5hy&6@G!!I2oJT(Av~B+LxB5}6c^Bq z)Yj+23H6<?@Q94Gt{x@V(H6=y#}ZC;HsNuE#}nR8cmm<YgkuTMAv}@rWO+|Ay?bLS z97lLM;VB}=3r`iEmI`E_A?2Au`~H{6vr_@#xr7&qIgjvsY4rOKq5b|ts>zk^RJok+ zQbHyF+)H=`q0)OefiVC5hwv)GtMj(5$s=4xIFayrHD~#s@J8WHsX+G4>Vv-j8|wET z!tD1S#NR<Unea}+M+xsDykAxBCcH=9{N>Nk@_*j?1B812Gt~Q^p}zkc+V_7`4dG*i zkLUIz+?+prLSdg2Y9I)e|Fd29jM}o_e;|BL`22uqFA%;%_#)x!s{Rt8zW*EA_kRgr zO_hYNr7cSH2BCicA)F%3TSEKtZ>k}Dm+%Y1_Xs~GwERz~K_OKBx3KxUtl=lB`>F7= zGy>u0d7LlBf29at3%?P5n+jxqXSOx*J>d_8zY+dO_%os9fBV=K_Y2{#>D8KFv%eGm zN%)5qv#a<o!oN-LW|9`|A42>77p-aR<abPKTH$oU>4h^mlx8M+7t?aT&AbDx0?|se zJX+^SQ>0a*HC(n&t4wPSS`}KB&uLX@)nq9Dw;HrUT1{HPz}{v(Y(=zYq1C39IEGeC zEA3d9R<`)#Ldn%<hIM}CwDW3WR^e>42FaM+G?{)*T8q&dOlv+`mj5M~TR0D`d5uX& z>Xwp!YXMpd({lZ{5kxI6lp2P%T^a&fi{?EaLThPSi|5`Yq*+q9R50p78OsQV3YVod zOoko-XEB#|jM`d()|RwZq_r-s5wupNW%*xvCFIsBsZxv$0kl@9wT6t5v_{cd(**7_ z_79P3(X#wcOMe0H_)EX1wH~dFMXpaP&;PB_v@H3H*AQ<9Vw0Rv{%>tYYxA5@{x{85 zq@#apYg*gT+L4y>zcsoYE#?1~@_%|ZwsxYWRNvZ})-HLpUCpp)yVKgk*|f%_dsz0K zZf-+suY8~HL+b=u`_ej`)_$}OmS%ri2go>()<Mp&!>S`I@(@~w$~eqiSx=6jbquW| zjj<Mw5*}?{JHd|4`QvCEpW4nvYb>qPX`M*x6j~>#%E`iUrcq=S$J07hhVp;b;u)r~ zw$2ouMN7#)^PWrVTUzJIbv~^JX<a~TA}u?ML|#P8U5uB?w)wyMa~Z80#9S`CLO6le zmG->8b(QdH;Wff*h1UtMcW7};d7~NDHw^)9fv$Bkt-ER6lJmF9dmF9WY27LN4s&HW z#2x|UN{dPBUZLfGTK5YdaHu{%MC(H_57T;t)=RV=rS%l8$3#9(>j@jXTa#?Ow(3t> zMYToiX<9GP`X8<5Xg!lQO6ytkT9xN%O*Y#dde<>`SKfNjif#qz|J+e~nby0sUZFLG z)~mGMp!FIp8y!sSR>quR&An-cMSDxdw`sj&N7iXfW`~T{d$it{k$w5g=2xwc#C$CL zgw~g|KBe`Aik}IU|6Qmv?G&Y@{NMW8*(!dMo<Fpv63tEPJE9sbcftNm>jw#bq~$II z&Hr2Z{J-@JtzRvI>suD*cZvTH{we$`_0sxB#ea!PMAHztpWdIA$g(}rbV6GKa)#^~ ziDpV|+Z$0K=RJ9gR!mRb$R{f2-io}{+*K!<ji^Bs5jEusgdtJOs<{86av$qJn<$YH z3vF|Vy24(rvHVXovqKrP2xm>bvNZ%mHUtpOK{Tf`WDh3F^1q4Q#4?(P$nrnYe7R<R z+>KbY6p<qrBU+GXVF|2zs<H^tqUqbJ#<=-OG=xYwKhhB3=AzM(=5pto*-H}*Ct8MR zIijIN%i6aa+%GCPuS;mrFrww{1a=eGIk&QZER9xBb1M>!NbmZyu_;=a=og|@h;AiX zmFNVb)ri(7TAgTZRarwgQfNZ}(I}#|oRM8Y(K;gCL3G~^(E6=IlWjnx6djEw+K^~# zqK(9FOtcx%CKkbDo7#(}t6f91IgwrFM9Tl}z0+tb)3{fjPSnXCZ6mJ@0YuxG%jL{y z2ciRrcC@1LI}z<nv?tLnM7tC1O0=7~cCpEl{VYi|hG-A#x%(5Ph29HJm_W1_(Y{1` z6YXQK*SfncH<@uSYeoAJ?H}y6qjkVVSVnm!I*>@$S9CDZkwk|O9Y$pNKUg<C_YNmI z!iwA86KuD9FwC`h6w$FnF5of7yGv=vb<Q9<j_7z}+%ekfWiyN%OLQX9wM5GQ(a9pm z5uHnP3eo9A<B2T!yEsIrSyy#!5}iSGmc*9-bw-^{bWS=kGse!D^N21YI-lr*Jc9Cn z7U5!|D~K*3QnrsSCAut2Txt5U7AIIm>*tk3SEXK}tBJ1ZR}$IQNpn5X4Ki*dx|zt5 zKhZ?<YG@$3#q8`dzm4cEqT8jpgXmr&4Fu6$V(u2+WBRPO_YplW@_wQRh@K#NkmwOH z4-q|VO82pg@lm43#Xn|DR((?5?vq5%5IrTq(?mMf1IPF1S)%8xVis*O(aS_HNdKad z!5c&`*|la{_lodUqBmr`Ce$d9ZRVR|rZ~(y@HWvqL>~~nE7yC%_f3#>^+TesiPB5p zW1`QAJ~6K~_bHJj|Liv37>x+gmqeET?PEvno75)y))_=oiN2HZy-@i-`Z4d%Pa-u0 z*!5-kpXfK*ZKB_4yOeIpU*w-ef64e;sQe%On|a&rTg)2H+S9pzUok;@dfGF{m@(IA z2ym^m3$)8}DgU>NvP(kW#BM9v71~YORgpC#EoPl|BNeC^<b0^2jRLeIBV9&q$F!HG z?LsX|yGwg6+CAEXXeYF1rEU3NdK&_0&tk>&sI_MsV9ze^96}ocXb;ZTQQLEy%$Rv- z&r5qj+Vjy~fcE^xr}K@r3DU4qE<}4_+KU*e!)>Esdoe3ooFT%+X)lrYWJ%gfnOE!f zw3ng1HtnIbSCVpB;c~Qx(OyBe&Hrf+?_cMqy&~-qj<k>a)t9#0`D@T#MY2^>p7v@g zu0EjFNZOYC#g7uMl^@@AXm3bcv#Iuaxn_N7HV}@sEaZm2_C~a~roA!k&BSj)d(%{J z1Bdl<bKw@Wx1_yQy6R$r>_pmz_O_{>wtWSF_V&4JM>_80+=<TKw09<+o%SxYpQpVm z?bB)RM*C3OyVKsE_82v>2km`m?`hHO)Y^;o-l?6(-&eBzvQe_F`G5OBk(U2u94yol zkahkr6%VI<9PJ}$A4Oa9|1>kSkIriyBiXT5baTk|@w88(eFE*V#w_WM{)wp}*~zrW z(;g@L6yx2V%v!fmfc9xtv@7Tg+E>v&llJ+v_0tgTv&Eky)WhGlJ^an}_E1=^3u#|O z`wH3@)4q)MCA2S1H73xbcG{N@s5pVPJr2&}Tuu8v+Sky&nfA4`Z=!u&?z*1#4YY5x zqC2<KY}TGQpzbZsrhO}Iz3|_@jrQ$X)3#}Mn$o?N*}jYR-N7Dn(zg6h`(D$eZ&tML zr~L@+2TW<99;E${*(Q594MqD=+E3AbjP~OxBjqI8Ptblc73Wo+ru~e(_JBUG{;Zhi za?NDg-_w49_6M|Iq&<c9OA@>+e1-Pwv|p9|T3W@>`t}CxH~Sgddik^cHf_!St;6rq zw&b5`Xln?_>V8Q3BibM5UHXLfH?%*c{Uz<sXn#InyS^A;f2DT69?<BwVx|i1D*#SR z`v>9~Y5z$3Puf4xcGuC*68s{xB_P_rrDEAy|H;m}zr_4atQS7p|IpSWfd0J~PiumB zI^yYxXXx*nwHwbw+$45?%vF}AAoPff#3g4-<D2ncv<h)me2v)BK5^Y)zsCK?7jaK~ zNZcZhor^dUwo@hUJT$UvwbHGK6XIEj`;0M{<^SBCRm^O{K}K4mbI@6VcuwNs#Dj?! zA)bqPere_w&O<z}i7ncEW@L>nAjX0dFDP7yc;NwpMTwUZzZmfl<4w6ZvGTv!OQvGt zrE~8x(hMbDmUx)#<#NsPsUgyJ_+#P~i60^!L3|YPO2k_eyO^sJuR^>U@v8m$Ji;2p z8xW5qUf=R$ye9D|;<bs_8mJ`JR{&yt1t4B8b7h-6ns{U44OQK~|CLAHgm`med;f=c zv;JtrTS#f&|03RMfPNd|gNe5#9z(nxu}kuL`6u2%5%m5~Y!812RM~}i*OVdNjabir zvtI3?_<IuXN4%G8`wL*=eT4fu%q#A%_y^?01BnkxZSjW?AE_$#6F|g=5g#sIuK=Y% z)FtAhi6;;rLwpJGvBaknA4fcv`1rIf;uG>FPE@Fqh)*FtS<%L&E<@X0<AtXR?JHo? zpFw;f@tLyEB0iV+YzZv?r%kA6LjdvlLJa}d?Tb{j_kU6)@ukF;^NBATQ1^;dKzt?f zy~I}$-$8se@y*27sNHLcZy>%-6|e7)rs9pln}icn7x68sbu00016sK~_uff-53&9J z5Aoe5$PbEw+(&F_pZNY%FPXmoYvjYkFAzUM{0#A<#7`1GmR2WzT*^tr`U~LyHu)*y zr-^kx<w)_w&#H;%h@a1y$^G3Rev$ZX;+KfuRLqx&Um>>SucGCD;@9)y8(Bporx08I zPZ{EOh(9ELm-v0+_l(TX9O4gh%|{t&d*c&2GZ24D>{9n<#9ufU@#lF%UlM;K#(w{S z`0KPH@wdd^iJ6)+_WiHi{*m|>V*UP4Z23Ruf2A`m@o&U`5dUsueiVrRBv$^9|8{!f ze}tC*>DX|PMd(bI8(RNyUFyt8XKp$((V5l$o3Ue=-)ZQ0blP-^bm}UW==gLhbZmgg zgH&^)mXTJmL8nP4q@zaw>LHz0uC)BGfUz;Acb_huJ~}<;qLU1Wuf=~OXUS{LMrRJy z8bn7=`m$(q=FtYznak{qpNGy;bmpbAIGy=aaeg|B&{;sX&4uVJC|pSRU;bBdQ96ss z7~(MNm{nPV&XUH6q_Z@gVUjIFXDFTJ=q&r6KHXhbYk6sg=Y3m|&f3nVGlI@aMw*@C zDza?|ptBmC)pPF}bVk~!*RlCO9Zmi_Yh^>EG3(IToQ{%zXFWO_(OF+XHV}>$ZfMcc z(YCX(m`#Mr|DDYSc(<UlE1fOr>_ErXf9PyYXFEFE$lkWUT@|;tFWs2N)_>^iB(#@* z6nvK~?3`QC*-ft9g=6UKK}VDSOu1L8q_Yp5*XU^S-`S7O#dP+ka}J#Y=p0AqKsra# zIf%|-bPiS%hX@bN8p@(+2<T`CuwEUN2S1w5F=pEyJ~k(hr*o1R%l~x73hhlHb@gOA z%JZFZbZq`lXS~DQdm5cHM4q0Kbk3x6R_YaRH{e#Z$mh~g^6x15cP#nSxlnkKX|khp z37y;NTuSF=I+xM8o{k2B&J}d7p)-NbRdoKF|Ev1dX>~f+s%ZItK)W}HRQ~VWL}y~= z%9^`{&aD#M)?bUx9dsV2b0?h#=-egm-NJk5+(+l$ex=C!(;}S*={zFlAz?QEm;I>l zv3wgR(Rr566Lg-Y^Q2r)Ikb=M;s1$wCN0W-j?PPTo~QGIijy;!iC-MBrMd;^ydsT8 z0k@5&vGpH1Z_s&@&X;ti(0P~6TUOEdx9Pl-+N$^-9h>LVd7sV)xkgVkIv=I~i$v!W z2|lIsnF-Pd)*ZVGpriS}yRYon`VXD2>1aKt^9`ME>3lD8s?e5z><+Y}^`Fj<R!ncS zJ3mYCi!l~NOF*69a_=AX9Qh~R^XU9VcQl>9=`Kv?AG&>X{-x{Fordm=R<}DXT`m51 zr_Z8wbr;~0n0aTizv1l`Wfz2=$=q5&x0K!fn_Z@B3p;cxbgMFIbT$9)+DIX$X%*ew zak`Sw4e7S%+MJ(mWM64FBc|J>YkFJRaOttzqnl*4+{;?-Sygvtx?0ug&Y~)_3T^#| z?jX9e)14!2!h*Q9n(kn_^T|7xaBkr|!g(FqGDUZO72Ss9d$_xxn1xJ`o^{<t#4IXY zjP4RLwEojw++=PU-}<nma4EV=(_NYFGIUp>JCyEly35*g|L$_x`OqCkclp#7zk({R zDAf8-{^Eg{Rp_omcU8J;(zTxeqPuz?XAQdg|1Z}E<3~wv`Je9E4pW(mZg1!Zg1YNV zxk2W#S{u?mobE<+ccHs6-R-2`gzlzvx0J0Fq3-57^jqWyG2P^?CD?}Uwzh`m4tI*y zf$inmfv)9$*>(#+S3`hX`|a*ZcQ3k@{N+{t?~b9nN6zeNhE>^{?g4c7kxco&yPxd+ zO^}^qw*DjXAi4+BJyiA~serDn|CrLPG<J`mJC5#=5*#Hwn(py*k1>t){8-^}R<zbn zpnDSCvAH+P|I*ka0QZDZ_9=A7(>+u6slwCfD*0Q?GfZjG&XUWLKizYL=Q`fJ*0=NN z{zCTxx-Zeakna5wTtxR`y4TUYgzi;zFQq$y?qzaaPWK9{tDWE$#OPjW#gws&=xXPp zt6PBXwfVlfp6(rVZ=ib%-5crNO!p?b6SE+$u6tJH0@~Gat6I5@?(LRg+}gXckjOjf z-bGi-K3y9E)X=?j@3ZxG_f*1N?{*D7K=(<y530&TbS=-*wfs-_5uy7F04*?fA9qDD zlY~!L(YEL*y3f&lTBNP8(S62TW;|;~b^<&vX0q@F;fv<Aef~1tFX+BP_fzq&3SXo9 zI^DOFSl*!fCfzBv6<QKZH<Rw$bhG?V_g%X0DcbwO4}>2IKN5Z{{KR3}u3E8CfUf0# zdB3FlotUrael6o0;kPC*<y144b-VF<6@L)^Xry_6650@;Xur~P2lqF6)6xAs*Ze{E zPr5Gc|CKU2j{m6Qzx1Xxqc=^KC(~Wmo1UI8eg=9o%5d-hShlB!(DJ{v*t6k4Oet7- zkc=|DhKvfmYVNIxsaw%q>Afbs$o->x?hWN_SutIB?`bUP#l~1GU3#`sWM@<_p*M(L zpQ>o_$9gpjy;;Rr^3P6y-t6?|p*M#yrkRu8U>S4Kv&?TN<lM?3Jxl)d<`XLa_ZBdL z`&jD>(mRXZLi9GFw=lgm=`BKUS$c~~znE|cy`|_W`MW`|w}j=!-jWs}eI2p4G`(f4 zXblZD!?tBPdLzUPqqn?_;X>vAp5=f0q%VH=R-$Jo61`REtuA9#;cBLFPYio&s5sKD zH9Z8RH;UeR^wtu;w#lseIzk&{-PXxopWX&mH1BBPhV(X)v2n_4KWs|x0D7Cz+m_zu z@@^s2pwQb&w&i~r+horTd)v|5g`SdsZwI+7|I^zkSMHo$T)kcC?M=_}KRqS?-WYm& zs<?-V-N|V?&6a>f+Od<dFFniuvNZ&(?9Pw_=^aY%Ady=9?;VnA6yz{^mfq<dPVb16 zr*|Yh%m3n!HpAi^tKxC=PNH{w?mdCtSb8T~QN7CflO-NU?-Uv1g{P{;)ADYgPVWpc zw*F%kv&}i1p5=d4IhWpfGR_z35wP|4LV6dOCjHH~-X$dO(Yusn1$vj!dr0ETg;xkC z(7Te}&GfFKcLTkvMP4Jk)}f5+gx6a!J0ETobCYnQ@h)%oZlQM<J<I>%Z=-j+j5~yP zro7IRyHlIqJ#yVk?>>4D$iClPmH{mPr>T|R!}NZp_Xxc=={+jhWAvV*_qd`>67vMT zXXrgi?`d`BDN7V~GW^ftq`T4f&$CvvYxa57noRE%dN0U+QTUPxOlkiGklU|{d5zxd zGTume#hF4+3Ay(cy|?LoM(-VZAJThQ%J+otr+Rue1c>=4XFjI)Np9O%lb`CA|LJ`p z{8IRp@aqA+`c}+T;dk`DcZTdA=;isp_mh#fy}yt&>HSJFJ-y#@<?r<VP?bN0f6@C_ z#^1t!9NKqRlWDA&OiMCddR`gt@<}p-_!&vcBs0mzTqZ7%cqAp+MI+NGdgA|gERqUI zRRT-?GU`ITk!3*wk_E(sBrTFINt7#<|C3l=T_bKAlOD;OB#FpAl0hUhlPK*cvsguU zJ|wfH5p152%x<<BbJ#@1S{zI=56N7qhGg!vw<PoC%zPx4|LtQfx+=?%EJ!khWFbeA zEKH(=pDZH5qS^MQV_&j(9%l)XC8b|VxU}*8=UXzAWLfdc8E;{SktqKs!&64VS0uTa zWCY2@BrB1eOro<ZS%qXbl2u8zAX$xMeMMNEWDSy0BqQ^fYnoyEWG#|)N!BJ=CwrSn z1Bz;`XBs!pOg13dm}GQbcSCtMvLQ0-;U;1>CE1K*b0hQIMY1Kyb|lLG$<~r>lh@id zRg!E^va=f6!Ob*C++P4VbbkT1i}We(nu^8jPI4g07}<M}>`Stzd2L_qMY1=ElE3TT ze?8ofWdB@qKz?KoB2k`C4kkH-<ZzNh738o~X_LL=2$G{njx@$avpuHd-=9^IV@Zx9 z8LNuN3s2~O`-|j6F(+Adi#Cqr95JVmjF)k$xvb}>2~QW={Ga4ZlCzv4JO6fJa&FFO z2uL&pBo~len9Yuoi%j5ha&n0(UP^Ke$z`%H7b^KD6J%fMP{viltF36~w&j14>#S(T z^}-uSl>C#Ma(<#2?mH>TEfU;HVy6VjZ6vpoD8narh_NAn<SvrConaqq<zAA9N$!(N z$=@^&kUW@bNFFjn2a)6vl1E9NAbCvs$8*gjJDS;{d6MKQd7n0K`fgJ4jF@LhUY7A3 z$@Av5wk8WT1SBt#WcfcoJzgPsm1GLZYq|b)>E9rE)0p%JOf1e@;@>8DCs(?^0I(5+ z<bC>HC;5OrPsI;~9|=DuvHVZ+DaqF)pE+Aa<^SXhk}q@St328_B>$3pOY$4ZRFa=b zz9adO<a?4I+%7eJjwE^hPktf!HFKq2YxH-LKS=&2`IF?YffaRV{^@7vn})t=>6?kZ z>FArmynWNBUixPIuem<t(jx%1LSNCz=qu585q&;=%h6Y+ZxQ+`^vy$Gl|E(iz8ZaX z`kM4L?2>mMca`-8^tCJx^o3a-=!>k;G$-`M^jTJ?&ndg~Ded?5Okj2U=$qN*5AI$& z&Fy`&(l?mC+31^HwFa5eWwyRK=+iHMy7MQUiuYOmr*Cc(s4W%e70ySW<$wBYV3LvI zg7htv?g#o7Hka+9Md@3LJ{u0C975mXGM3008v@i@<$nvi41Gg$@3LlCoMH5B>1_Iz zr*AlYYtgrYiYwA*$(+6s^sOXAN8gxLR9scKns9ZY-2$jZC4W<nvR|$<V{Q7@r*9qE zn*1BNUa+HbNZ$tHM+-NkZwvZ1lCAetP5J+*It!@DiKPwW53V0}fk`G~$z+mI-1Wy7 zx5eGvby*e`cXt+dcXznBySuyF-}NT>*n3V+o$9yWs_t}>s!k`98A)k<w+=vQ1IZ0- zO~AF~q&o_BL^h#x3Z+dc?L=uaO54eNbIC0zZE0llvlXSS#oxwBA=_G2u3HMAw1ec1 zhFgm}Q#ypwE|hksw5x%}+07L9=4WXS75AjHKc&5j+Px|5qp{sr($@d2DnDrtpmbod z;|Eb1Rp<v(8lCA*QW`_)XgNQW(qV<?v6K$C8EokY$s=v|tv^Q@A=i%)a;)TWl#Unk z1j!R6Pm(;@$;^t9B1!2qnOOX%bcUn_e<^24o^3^qJf(9fxlZ0q>3m8zQM!QAb(F?Y zx}4I5lrEukk@o$6*Z)hl{!i&L^W#Rt^eZS`N$DC&S5dlp7|#?+*XD?I>3ZDTzqwWZ z2!PVfl<uH(i(F~_zohm5((T4{ht-<6Q%C$RE9S^OlpdpWFQtbl-6xJ72b3Og%~5*L z8qIoW#fK?9BF>}c(`^PmPU(3{?gD>GRrUyg(v!KB=}%L7M&PrQp3B-b+q?r>|1W9% zzhvwGl<X0(Jim&+Af?yv-1YdnkT>wAp!6oCk5zn&(%Y02=S%Mhd6&|APO;7Tx9)vF z=|d^`{C{Z4n9?UU9W8x|Hvy&3DE&(5b4uS)`hwEel)j{7&w{gnW(x?VZzz3hMHjmy zDSc1rCrUq1`Y{I`Zdc#Wl=Sfj7tkDHw!b-r((jc1qVxx)KXbl2<qZFu(m&Q)M|PX* zus0#zq*mokgg0@9<4s~Q)4<6jDe%cNZ+KJUO^-K~JWMS)jkz_4)8b8+>2|hzGvKxG zoGUH5dNbh-;mzv&;LVITi!rllfHxc7?3rF5bKv=S7X0z-5ddBZ&&xS7#4F=9@B+LV zUInlEzaHwtMZ6HNi5HEB#N+7+-a>dO-h6njxjtS8ubUC@dgCz%c=O=RZHU|4QSdDO z+YuCkH$UD2PRCm?=j2^o7;h2bi%KqLwRzPN_-@yh#QP9$DZCMQOXIDCw+!C$ct!m8 zmc_H+Z(9~~JjH)+MMK=o&{O=+RtdaS@J8dUinj&cYIq~@96>Mncx$NJdSA#}OZwW@ zfA{q>Z(SAFv!Yu~vb|ehas$Z?@f7wwdj-hu7QIdIHpAOAD~hvuc30>m-j;ZK;BAGs zJ)Yvfw+)_t9O1e3AM;<dvICx8^6_?*lbs~>3Xr!;M#I|;Z+Fv!Zh`EHcc7Si;q8sL zPvLD}BUtD6liVNgfZ^uw4k~I#sn*^Oa<zDe;N6Kg2JZ~KLsfMc-idf)@eVIIN8lZe zr}uxnqcTv;W3<1=N**V9yyOW^8qG$-)_+8{B_O<0@Z99zwR@W6>EreAOuP&6&JykH z!s;BnbHzL_W8$5UXYc>xjT_JQBD~x2F2=hK?-F^q6z?iLd;cHr^1}8Cyeo&TRCP7p zHR4}uE#^o6dc0fkZm=1b_4!7;n+pAAqdDB%-YR)pVReU9$qC+Fc#q@Vjdwquz5IiB zujGBh92FnHdl2uT%!81J@g6B0K8p8PUS-X>i|ci~C-7dxdlJv$Jl<21PfI={`K*(L zhv$XpSR^;&y@Y3P`{2Ed_sXzmA+KdtcyFlqCf>VvZ%Kb!@|}#3Nxb*)-WRU-fAVqr z2!9H^kMTZt*CyU4lAl_}@jkPw)s!#rC&&9zRbS!#iT5?$w|L(eA-l)%zQg+!?|Vbc z&kuMu`N#XIKz_#iCDZLb)cdW#f5-bH$K4Yg?=L)y{CI!ox0C(^_!#0(h_CNI`xBc7 zf0Ddue^UI(GTo%Iq^%UWp8Hec&xSu0{`B}3|K(>I{Amk)I#b*#lRpFg%=pSR{!F3` zS=G@t<-oW2k3Xv+nSU$JE>QW@pF_G*fN%E#^63fm@k9Kw^Z>sm#peI`b}yiQ)=e>_ zQ6Le%D>enjMQuyPMABXXlG4GqNj`p8vM1S>95`t)+@D89#eZYYhd)350#@sGFyF_8 z@ZZ8;82@gO7r|c?e;@qC@Yls(9DfCT7yp;R*ZkjKO0=cTiQ8<nE&k(c^6xK)zkG&g zBZj{s{%ZIuiL)~Phyq^)-`*oKa_(n!{53^eV;IL@3x93=buvz2yB_{l_#^Q*!e2l0 zfWLukH!L_C<8LNp6Z}ncbL*!j|L!k7eS7&cvvmso*7&>PZ-c)h{<iqr<8L=?B|ke@ z(S1(Soa}_ZGyX3B63oMH_<Q2-ZlH1O7NF?NUif>DSKJr>O#J=u569mhe>DC9GC2@` z6#hZOOo0av_Y?mR{4w~4;U8+C`j0=>_-YIP2>j#mkHkO5)#4u|5B3VElw<La%a{dn z0{&_EC*q%sf09+@eonzZHRI%b+oRL*ZT??y&ceSM|7`q=@Xx{5QjdQw{(1Q4=eETN z<B!9?a6DHR<6nV)3I1jHmkyKhFCWkUmH77N&v?i+_&4ESi+_Uy@vp<be%Mw>G5_~( z#=i~!7W`Yy+&Rfdzy**yosNG;hU4F5O1{_k;6LVc{Cg$u!@obP#n&x>{~-QD_>ZXe zVXM+o4F02q@;LrW`0mnsQk*A@W6eEfig|t-{~7$}r9X@RoZ;^CP%hN_FJwCYi>4Uz zGX85~x)g9K{;M`6b4wHc>jK}vf73#rKp}7A|AzmL^mp;Uk@6n?`}iL?T|LqK-*@r< zbNr9-KPg7$Q+!4KY}V)I>i!q_U&(`|fP9(4|2mr%;(x2E@9=-b|6ckJM$5<9;y?b+ zhM4jT{;!#?KKzca;BO=IrwD&ho*(~j%0u}7P@Wc-r!w2}gp?;L^oc1?LU~HcliKQE zc``{PCzqVUNh4=pyeUs5aB9hEvMS2c72c+&tmOjN!}5%jXBvMYn)1w)XQ3QXo|Ura zOeoJrS;4=o2wa|na*6Vs&WiF}|Jn|(W0!r(ivQ(+a*c9D%<3?cvf{s)+wZ?9hglWn zCgm<=i~p1@_)AGBr-knDj_KJ$*s_9u*@C~A7XK+LJCv0I%9a8s&sXplpu8L91u3sj zc_GS6QC_&PU4-(YA}i397ccN7C|mru&APfY<&`NfBc@_Yd0EOUs<<5G<%hO)<GF&9 z#y8#Ke^#VCg7TV_S24tTwW{Q5lvkIsMuw}EwS=rqc|9qX1t_m;1na}dOcA&N<&C6l zXrMc<${SPOn(`(BHx;s(<mQrFP~M92mKoWktVG_1^0rd8qr8)p?Im}hyrccl*fE`S zKQ1osOxaQZ<y~`7ekkuwc@N5aQ{K~XBkX00`yo<!p8~NZAXV*8^IggZP(PRQfm9x% zd=SASlt&SapnNdpn<<Z`d_3htC?7?6OyS{B%7+#D*r99O<#4zh9zpp?!^eG5)E-Uw z7**NgkCfv~ar2+@36#&Ed}4v0q}r1uPa%6YWS&o>e7bAGw%o&+;+#eKY|0k2DW5~x z?ZPFLhdJj{zQFh{l$FO(R{S^pA|V$$DZ@)8wfN)6cI>VYa;4dt=c_1RUFg?PzLxS$ zl&`b<!SeNzH%Q*-q|uy|LirZTA5y-R@=Nk_8|B+6KT7!y%8KXZJ1O5q`CiJJ{FJr+ zuj3;AeUkSNEi#L_wVpgE`H-Z=f6BH5B;_&6Pf2-P^1qT6|0zG|WInAeKTY`=%Fk1N zma>As8w8Dmm@h~w{@XabO!;-nuLyiq($YaOZf}@w{@<kh7UlP(zfJj_0)N*O8}RoF zM7IED@)5yIls_hzobo4>zoGo8%s-?273I&R+xbKJ%gom9-^*X;y7~N;z(wQlDF06R zd&)nlp&uy!I5e2ldN`Pr^3RlirTmLoWogA6{$}sD*xvm?`EOfFE&oaRFUv13=DWO8 z{)b>f0=+Kco~LIwEP;Lk;LL+bvOW+@N-$ZWldsPQQxHr`FlB*HMKHC~38pb5dyOZU zuBe@!poss$j79AbL62Z&g0c+l&=br`FdKpW&o9C31pgtJBjaao3Fad3R9iA!$&0|x zI0OMfhoC~xAgC6t>y99(7o3nFCWzEr(>U4H5wr*_>=PtIH|NKKz>a&-N;jX$2YrIY z2nGc66U<GZm><lOouBeBpINz)4;CO;NXUYA$K*iszc7I<{u3-}NZ$J51Pb!O5(G;U zEKRVK)#^SgKl1}S|7EzWoa_DnV0nTSj9|^JNU)M|OkdeRYh@Jz7vfeW*i6OM2o(Q= zH3&8!Sd&1}K3I!j?QHH*7+U-%SdYNsKS4hKmvaSw12<CD#*&*5Z0eN!Nmj7Az%2;& zA=r{&CxWf4)~vRc+(vR+g6#<G2VVr+6YOA|EHdQ%-&wR>2=*Yb_)oB#aZK60IHpDX z5B4J1+iEip#@ScQ{Rs9itaJ+y94P!C1GBkhaIlck1cwk<I3*ZEa45mC1cwnQ<_BYq z@2;KT2!f*sZ2iYJx5615Et6x6@NetK5gc!bc{_pNM1u1P6#N4P|KJpYGYQ;(D1Sh3 zn&jz{XAHlQtD-&u7uYA@2+ol_SMoe3^A@dY9D#**f(r>Ql5(-+C6bpqX`72G!Q}+k z6I?-XjjAjK5L_jBbup^f8rkschE8}{$_)fJ6Wk~dH)XH<+3p+X7J^#|?j^X5z`{Gh z?F4ra-05_i4!Ma$aF?Y10xau^ffoG5zhCkJf(JF84@o|pt#C?zl!}WOk5QSC;BkUa z2o(H-CkS34c#=R-J$Oofo|b%u;8`ip5j<}<m1AGA4^AHPy+Diq1TPWT-epIP;8lY6 z2wo$2o8WbVHwhH~|2?K}jdy(CAyDxD*W6M7fgKcr4+%ap&;M5;_}GRkKczn<_>ACh zg3k$lA^3ve8}Tjd5PT*1_0Y)W%+?T>0=^^onc#bZ9|?ZQaCevpZ2mv|9MkzH_*Evq z5op36{I233M$23OE7J-7p)v)P38+kBoXUif6H%Gi2w4oTOiBfFTTu$gJX9t(f;)>U zQ&O2mR#Q=#I`f~mQkhoxbduAfhgN1~u4a-PqB0kinMJVRFJ)FLvq_n~KwK+xP?<A3 z%?xz+Wt9?@ifEpsPo*p+Fhbt*DwUK<jY_DhI+cdiy3P6!QE5?WQi%;2eS=AN6<3n+ zI3nA~bR0;fcm!POQ#npf22|#zvI3QPs8}$kGB1_+s4Prneku!6SztVGmI$1cXcqso zU`u5&DoYDoTyhD?B_)*ta+77Kn62<-sTAi%WqJGVjWxX@6*n>~QCXeJ$^~--l~oFT zRVu4xx{lo%RJNe9CY24StVKmxpt80R-050bm&$tirCk|G#eV!{RoTT}vG`AABPyFx zaf7x=eg?Y7Pi|GVvKbZo=igzF%9d2N$}%98thW~Y<z!n^+)a07dn#k7>_Ej$&UaMR zPLexQ*@wz5)&V<kyHeTBx?#GeH<dl8>{%dt3E$huc7E<lWk2(u+v+D^75xNk&YR`@ zAS$D%9Gr7(r$!4u#7wMsD3!yd97bhq2HJI3IYQu(RF0-{l+&}35qON`vBMyh<EflL z<t{2GQn{Ln;(z62Di?@(3Kh5eXHYp!#na7DeWr3Im2(81C3$v%pR3||lILfjN$c=9 zDi@k=yRZ3w#peH1E}?R%n;cTP%%+HjTu$W*Ay-OXmEqE_p>n;vT`PHAF&Z~exmC!G zk~dMYVU&JLHUd;`Q}K4mJ0$OP(l)!kH2<$CK~(NlZ4v(~_p4VAP<hbE`I+`GwdJTh zLUng4k5cVWaq<6i89q+M?arIhpP=$2l~<@dMdf)aPn!oDjc2GlOXWHH28Fwqoac%H ze}T%2R9>d?QikM5Hb3aEQqlb1&av0!=MAH|ykB{X$_GN;rt*#yi~m&KGlD7h2%ykE z6!H<3kEMJf`6-ppjNoYbK7K)UPAXqgosG&@RQ{y$wV2;f`AN#RRKBC~BbD!|{E&Aw zdwC%5@Xu6!6Z01;znXJBH4ySUl|Kwoi&XxiIvJI}sk%6?-~U!8$PaFHLgTnyu1;)* zRZ9vg=C1%zh3eE)C#O0k)hY6B7=NmaDXVFyPHV+gx1c&5)tRYIPjyIDGf<sz=%5i) zXL8awPG%!eorUVG_6W&=*|L&#z)}EJ8%(NmSe3Ok7u7P=5>?;XQuQ(qR;%%(8VIjY ztx^rC)@(XzO#2Bi)rQerw5di^Q>sm>Evj(_nlw&gihJr^mCx)6d$mh-J*qu*rcZS- zsspMEQJq`JJd(N*sLn@q0Tt)ZXTsG5T`~JOw(x}|Ed@}utfBo{oa)L{m!N8ao$8X3 zOHo~#>N3_J1KsW~YkU>e)#Zh+V4x9Jq`Fe3t9As{HH2FVpt`E0r2v#7vm;1#O{!~A zT|3X4RV9Mzx{hX>o1s-l%4B`2n@QO~azm;cN!i#*?ZPIKn-;~*sakBO>du5MrEFzY zhHOn$@ju_M?WpcVb$eCqV4Sh9P~Fj{YVMnF)tw8gU8oj6{;etnxS2q85327_-IMBJ zRQIBK(9n=OE_+MvLv>%LNZ*g@{!$K*JkW3#2Hg{6<ByU&SaP)FA(CSx4=re8sa{R> zaH^+MJ%Z}-RF71jE&fwIn(A><j-mQ*@VCzAyLkdtJHx4-MD<iDx&^47Vgx%UE&dnh z%o$YA6X#6Hv#2WgoB26ZE&dm7&!>7h)eER<s$U&P^+KyPrp13Ln*UcXEpYb;*gBx9 zE2v&6#U}qn>(@|qA@^FU_fox%>K#<Cr+O>Z8>rq)Rl&b{Q+ECoXHgOVtBU{C+cW>! z9DwSbYT_<QrGToXfP4y6y^resR3B9B1BTm`uJ`||51aoi%2gkw`V`g2s6IjUadGVT zzgew{Pi8vRr>VY7^%=MORG+2#0#z*m*_hb#--7lc)&GhARNaa9D%CfszDD&8_2>1h zKW5@WfpyI0|5V>DoV-hI0x{pC`aV^Q?NmRYs^DL>`9D>~|Ek4*6+bn_oP4h07gWEI z@}<D9s9OBD&1IbGw^V<m`dx-lwYNa2>K4G1pQ!#x^=GQTQT>Igf`7JyZYEa!o$4Q1 zKQl?y#s4hq+b1B*XEwIA38}@@CZaYqwTY=sPEGOOb-p$!waN0<YwllGW+?P2oI-6% zYU9QK+BDQ`GEdF20JZ5Pr>8apwIOOVQk%&k!}oNmojEH~o0Zy}LS~bkotmA!(&w<F z=H?Hzxu{jCm8g}4dy;<PAyBd6WP#L#)Tu?(8q`9oa<1HF-D~DW(_7T$rj}6asw$Oq zc*lmwZP{bono>ZmuiAl`yQ5H>huT8aEdC3hkJ|i&zJR5Y+JgDXQ(KtYGSn8KwiGoB z{?rzuwgk1sjjyYc+LFUFXAzdpdMn+vr4*1KwdJXOMQsIY=Tlozgq5frLv3YhTTmN8 zZB2oS|Fu=6EB@D3r)H_4IQnZ*TbJ6}B3S${@b!d@q-If_+WOQsuqxYSd;UvpBWgwb zuUY&TO=+UGx%tV*c}r>st7<E1TT|Pg+BVeop|&lxU8rqGZ6|7q|Fs?Rhex#?&0LcK zYDxi1UM3H_Qrpd{tUtS3daCUqxu@h_)b_U8?0HRXU(xn6B=6e+LJp*Mkb!ykMw#xu z3|t#c?J#PGP&-t#F@|fcKs!5D;Ng--P&<m6#s8sY<`8nU>3J*13OP>lcxtCpJ3+c@ z;-sR{lc}9X?G$PX#V#4S&3SN}o2A#zpmsL3Gi7yF21-B2blZ1J0n{u<h<|~K<EY(A z?LunTQM-uR6#|tPYL`&E)W~La8MVtZ-Axp!DgM_K|E>0FYS)N%Z9a`O&h<iWki1dy zCdr#6Z*el~KegMay+O^HJVoseYLDvtzmwWs)b6KtH#J3myD09Z=05&!Z-d*_YRCiB z+=Tx@Y7b?jWLJ%i#v`U=GqKuZnNIC-r%-dXPf&Z(K(`d;HUpoQe1_U9)SjjGqKeN^ zd!E`0#&kEQd5bSu(M(>pUC8xUsl6uf^$gLe^(HmFz*&1sRc}*!huZtn-<5pN$Tol< zQ2U75hgQsyk8|B3*r!gX_L=18l3!%C)V?&uJbX=kq?B){eM>!{_8s*pseMoFFKRzf z`<2>{BK#!zv*a&MW*$`hP4aiiKP3Nj(hWGZzo{eSAL<iOpUh70`h<qmC!#*Flu4*h zYJ5F|GezgNswSsy!9N43PepxZ>QhsnPPNlWPMZhJ`t;Oi$e6;lgLTUS)Q1druZYxV zp*|<|Sp_Qi*JqdhAL?@qx2sOhMZIKJ*@ag31o|SEGn{&bdXIXQx`lV@N&)pc^@b4) zu`ED6vZ9+I)MFJ}k_q)Lbp`*r<8-n-V$9-(i+Z2>O4J9`7o<Kn^?c=@y2XF$^GVK6 zeF2N-?g@qKsypKKg{ZGcePPuuVh)YGDD}mpEH1eO^<}6pS?t|X)R)e5?dJc9lgEGR zTK}&vuPQwPkWUp?roJZi5!4m)>lXj>>3w}QIays&DIkl1^|h#5{1?6s^>wMQXHB~k zQoBHXed@<i-+=nz)HkHQ2lb7pZ%KV)quKeh3H42>+rwY;W60*zw-_!8*^2ts)VHU; zjp4@GRxNIq(Wvi0eOKx`Qr}s%I~A_9{*$}it+2KApMtO_^}VQTg{QtZb$kC`9_;xq zb^QdueYv{sp8t-aejxROsUM`OQ5jR+7%e1U{K;_YhYCDQa;$-N;EvFlqxV1SdjHc- zq@$@HV}Z-`V@)yU@fN}AivRT!sh>{$B<dFPsh=#V`M(uUbH&U`_!-nK{!6zMK;3Qu zs4E3n6Xy|4O8tBqUsAt-hTExeG(74TQh%5FMbz)1uHaw4g!=W=FQtAJb*0gI9{;H; zN7Sz@dV6)z;x*K-Rdd%FlJCn6)bF5vBXtY-)NgV)bxQ$KZZ*a5+o)^)FDoH;QrG0a zes{(Z|6b~DWbPB;{tT!70QCo{KPvDc>JL+Y#H!rev+ioLk$g;5j~nQ6hs#a%C#XM9 z{Ygil{*>g?lFvv!OZ_=JhqKODhhL!n5_R|gFYdQUALMDP{xbDfsJ|iSuTp=F`s-$r zwd+>=>TgniTOD}I46P^cSRb<YGwbisaFO$U>YvNQ2h=~L{)zODsDGTDHd!C2e@gu` zv(3+?FQ|V*{Y#O*lKk3gSKUIoi~oO7ck%yw1GB~L`VZ89r2aE?i~ogN`w0N<|G!NB zmQR7|zf=Fi@>l)O43YjfjS1xZpMT987XR%eZ%j;MI;(9=Lc>x3jmc<CMFSdBsyMmi z6c!TQP`EC+qtKX|#xz4q^jwugXiRI0;nUMlFmKF2V@4V?(@^klDEMbV)tZ<^K4+D* z6yTiG&=u5}L!fRA8gp5d@k?1irs30AfQAKs8UYQ3?nZ@1m4-rkqei1n!=gQnhGb~p zB6CNu(R4+1GPdLB{?^twiGel_PPg5m(UC0H{~LW32Q=oPF}IQbPj?)~oR@~;e`9_- zxH`TfFGyn{8mrP+n8uPc7Lor&B^Q%iTyhB~&7rlv6pfW=EKOrM8p{}Npxf->Z^jX# z_}^H8#)=uo-Zp9I;ji&W&{!qMt$VA{*p!AlIwNVUK|>#WYv>bjjkSi|(pX2H*OgQj z$h)*YjSXmQq&?cO=w}iC8=Dl!W;Aw??dCMLps_8DEop2`W2?N|){|{a*Nm6OcBUJ+ zy(#YOZR|*6Um-iuu*pA-U1;n<V^<@%lew{*q|N_TyQkqs+l$8Ds@f;3GHK&r@t=mW zLqqHTMm~tfSu{q`I8wF;(-<w~kiy#-8i&$2T;O3e#%8#4CFBSz9`QSkqcWVv(KL>s zp-|sAR-EG`k2iw*UUcI`6;GmZ8Vv>i#wkK99pqPW<8&cs7-F3~v%t@$@fMA9XgopV zTveS%<2D*D{$Ebx0wLohFO<AU(&E3AOK4mwrC9vQZZ;cN(73YTTt%aZ|BY*CTub97 znOsNXdW)qE`}0Q{H#%u1PFnG18n<Lc8t(mntD<4?pT-@MchY!Jic&zsQUHy6Xx!@* z>G#pNztA5rB}+GrhiE)3f>MB4J*whkG#)Pw{eO+0p9W8=_9+@qOL<1}SsJg>cuxBB zk}o(Z<wY7V(RfAr%Lcl3^QK=D__~4CuJS_TO)KU{|7{xY(D;bPy9MVxG2fT`K=Q-< zHRgt`{|Na+@>9vrXnZc^3nz<f;VVLSdVEcoMZ#}H_?E_Zgp<+up2n|2exUKASy|tH zqVcnoUkp)1rSTi#gaY09`3H?Zt;#Nezi3#@r}1}=gq8>jeIlz0C(aPUN!-8^S_-g` z9zr++;pBwV5l%rkE#Z`e(-2No@Qd$1WC1E`F`V9Nvq1}IBpf2N_&+r2k^-EWaF+2n zvk~q>I6GmV@IQnB;T(iz!a1$~;arj>NlpGkKl5WUZ>2(*5LU&h5k^w#gpG_t7-r28 zHdPfDc*~T$+o`HFXrV0u5nB8w>}4Fn0pZ$&a}zE@I1l0Cg!2+EL^z*l^Aj$R@03|B zSXeDgsIVVe3UCBMi~pJKB%!4MLc0YZTuL&(1t4_D@`TG4J+%41Jh)@DDxt-H!j%X| z2wb_KjTisJ)d<%RZS|~H%ryzu%8M?Wo0D}2*CpJHa6Lk;^MoS_*SE|PYW*i4qKybQ zm4}T9H!%-x)8!*4n-gv&WedVB$2;6x6Iz@n+=g&l!tKoJ-(lZ@a3@*qnB&$TyBDyc zS?x-=8{wgZyAvKLWDm(b3HLIN@%JX&$8_WGOSoUYjuh@sctHMuDO*_z4-#jT<iUia zr5r*yCi@ea{AvmhBRrmPETP4GLdythNQomnitt#%qYZS)D?Fx9jx)t=njR1;FN7y% z`$Bj!;cJAa5MD=kDxqfh;c1RfcsgMb|HCu0DWCAO3C|(CkWleIJTLQ4cs}6;g+9&{ z8-$ApFPD|20K!WoFD1Op2w9X1uOPfixKe<1-r_&uH5rHS+WdeTcs=0_gbxtjNO&`$ zr3TyFy={04;a!Bc65c8E+X!#ZANPlM*nqpFke{n}6W&jFPi9MaFX4T;A2*H6IS&#( zNB9uoqlAk8VIKcAypIt+Mff=3lY|!h37@c6W!$#jxbb?c6c9e6p?KCjyHpiEPxvzK zCwSpYGJMgRc2#Ou$SdN%n&E`66aFOp4MGe4gl}1uDQ^?LL-+;ZyM!MTzDM{0;rmvb zWx()5!jJNzLu_n6A^c3XpJx3ewD_NK2)`u!R<&Ody7>Q1e%$jT^&R04gx}|U^Onc| zY(bt-DIolX@K-`b`0zJ*`<?I)DSs0FW#;qVL8##G^bM!9s>o6Rk@7_}5s}4zBAX27 z{fs7~IVBM^CnTDjC?J|boXmVGqB)4BCYpt48sXCt4M~}fXnLX<iDocw|2mxM-y;>x zY`8mPBc;4(HlqI!&2C^Zug(q-(VRp!|0gOD`9z*^a@%sIsJ2414^fq9Euxx`x@1E# zBwCs%B3gi`Ni-i(Ow_YX7qy5IqBNUMh^%8Bb)<Klv?^ovB?m-vt7;y}d2@pGaQ^Z1 z1&J0VT1cFQ4R<f7M~h_tiy=RY5iPFTB_x-WT*{c)#3ovX$TjMQXxaQ9siNhGmd|Q! zfzDc7k!WS2mCP#p$Bk$N(JI+rViBz>j(q}%Xm!aoB-hNH7``^qRz&L%tuOMrlIszT z%r6l4fA`S_M4J+AXsuYI8xd`6x*fiJ{a^TIM4K0!E!?wjqAjgx%GN}C5N$)WgP7Y& zS{5L(yfC!jN<=#nIp$78I~!uocQM5{yJj;b>AM>^(hbF)MeSZhduO_=_9c3ZXg{Kp zi1sHsis%5M!-x(f8cn3&AB`fie*v}|K({RH<~h+Jg|{(8hnk*UgV9*06It*lQX+_s z9Iy6hq7zhgjO4MB#}OTG9Ov1rZ2q4OCeg`67ZRO9bT-kcL}w6L@K?9(7Qi)1bS9DI zh5Ta4!eev}(YZw9h%EjSolkVZ@YR$n?zws7wo8aEHuK!=r9_VqS^OuuoaknvE3#T5 zi~mH*1<}>gEd>x=OLQI4jYQY0KR4w5t#3D(ZI<qhc?;34GP#ZDULyOUDA66o&fZCM zSE1i6no@vbFVTG>-!J)q<b#rW1ROo=beTMAE#~^;LjFti3egip&l5dK^sK<AbP%5= zddB$f$U12~e9n{yZSqf)$rp+A@n`Gm%T{a3t3+QDy+-st(d$I|!Ef{i(VMoj?vB;= z{cWQ6h~6Q3*Fb*@`(>F6@>%4MJ|Oyx=tH89i9X7Q$gOfmpAdbTwPK)qJ{x^b^d-?3 z24=6aM_=W-%U01hM86V!OY{@bcSJuBeV;W^H1wlI1Gk<ZS@0jS%kvj4*gD(ah-}VJ z^t+^`0GBC<{vuL#h?D|cqplmx3H0;rQ;pf2h-NYWZ%#sUQh}41xz)N9FnOU{3b4^= zPDS%@np4wUg61?d=Op`8NOL-wOiyzbnlltuGYXuErV>O`!9N?frs98dwt{IXfTr_5 zhaov<E}9DI&5~*@1<>?qmT6X`2iX~7hq75ULsJz0n+=*RnxTPa6-hQF<DvZymXgq% zk7i19UKu)?1%Fj_Y4)V_wbuj5xh3au(rB5q7U!p_fZtqz=7Lt`zFD37u@pda5t?=* zpjH;6Y4P8RR<$I}EofT&r@1uERcS6mb2$|=!m>uz4+>~5FMI`>D@s|3<_MZA8^LXE zZq{7IlzjA7qqzai)oHFH@)|VPv|6{+)?7=-+E#QcV@(VGLe`TUNz;--ewH>jq-kNF z=0*nE{%%5ZGa;K6d!hKRJrcep&8=weCVgv~+eq0~ayy#4(zM`DQ%Rw@qx79zw`uMy zxl6VSCi79+o#wtY_YiYWC#CE~b8jj8WQhGbrnw)@0|o9cS*-sw52AS(%~3Qh;L|*q zrp^D|-&YOQ&e2Yd5k6iDXpXgExBWeW<~=lzq<JaLqeMHJ<|#BS_^WuV<Z(1D{?j~x z=1Edcw1{N;b+RkwE6Gh)ynyCuG|v|2bed;KIaAWU|B&y#xjIMSxspl&&GYjU&uYif zywFvt_99730W>c$(0YCu&0A<*F7OJPH_%k@Zz}jV75tmm(7aBBYcnh9*N>;)DC8!Z zHyfCHw)ijnHp$y*-ccZT(!8tC@6LKl^In>d(X{zL&HE)EkbF?`A<2g&A8}GjkpgT- z9;fL})Mtc0A^9ZDrwZoNrWoy6ny=A(j^@iWpQrgEO$+|6s$jm9<p`Ru6o@WWvwhtm zG~bYXv#5QG=G!#ivELE6MGPkobCKaalH+N<PxBj*Kal)T@*|obOZh}nDZt!*M)Pxr z2>gQPmxcb7kgxN5&*rzpZa2Rp-a+{HG=CtTh31dM(+c^C=Fc?$r1^`Aze@fl`Maco ze?A(25xWR)!JnoQL9EGtJfTCfF(ICq7~)9`akO|+;>j}I9XR62iKh}ih2)f0m0gnY z)Iz2i51CHL^u$H{k7p#F$q43oh*<GIH=mVw5#rg1L*m)(*u}273h^AoKC#w+Vy*wg zC1Q*G)^2WFmO};q9MSquT$7(Val`m-j^{R65l6&L;y!UqY_5oH{f9V_wDq5?3E~cM zvG^Zb3J_sHtfiiKZWZStwv<uS&QEM>KEw-Th?B$%30XL!5id%-9`RztYZ5O`tVkX& zLA)gKa>Pp!>vvwUt^W|)BLL#!UbSdQZdZ_8k$5%Ym8>~yYh~gQg}w^$s#&8&)2kD& zVYS1vqj)XiwTag;&>G6)zx0vBTNAHOyeaVp#G4RrNW9UoL*o1vps?MnP&Ri8@fO5e z5^rVTcv+HIDIit~h_@rQ_@8lzcO*WRcqf_fEV&EufyBE?-;H=LDZ5K51;k1Lc7E<H za3A9Ri1!_Ckyyb$KET!Hp!Mw_;!(s$$>d<k(ZqWGYlAR`_)yzT(+?vaYqq8zPJD#O zM`nmg^LDhPeGx*+am1$)Tl`n?1j!TKT`loR#3xHR#cpy9In_N%Fx~u|PJ9OO^~7fq zUrKxy@%hAOt7%J2QqGk;&x&Sp0rAB`#t~mA<RYt5t%`a47w0l!#sByU;%kVnB)%$R z5??)RMSLysb-9PUl^clfm4_RNZz8^v_-5kUh;J#(l>%&tH2;q^|97_TxEp9GfcS3W zdxqT--$$(3eysU_Z1evt%M(9D{4nvO#E%T~<>xWU$1{-l30fP-^OM9+(ej9&CjOK7 z8R9pHpCx{U_&MSi#d%)x-xNUn67kCpv@PGwSBYN}&EkInzDfK6@ms|25x=e4cO>66 zj@y=comlHXG9gy*k3S;*S+tLdKOz2__*3Gqh(8nfxf>bcFC_KnU(VKzl`a$FZ-jqK z`~&fK(!bBDr2i-nKUve+Wo2Wl6cGPPtoR>W{1;6rz^&iLf6=n|O#C<TKeQ&NH32OP z^|UMn(3*(W#7?oz^{q9jK#Tvh$Z>ZlTT^5@EsOuOlo49_`ai8{Y0XY+I$A@trWe8D zKdl)HtC_MpVu3T$nx(*J6*8L@vt!ZvkB~Ve=cF~4Rhg@jDb_=u)>^d6v=UkYt-5M; z9kr^oY8k)q)}R&AYSM}f&zp#8wen&%@~xECVzgW<16mz9>`Gejr`6BNrq4}lAzJg$ znxEFZh8s9vc0_0?_#3idfh;V-BD5AYa(3WsFBYe@60Id@Ek|ofTFcN{$_Nj>Kx=8c zY0bWe({dxP$^UTNZt3}NOHVml_6R`!S2kN~cLc3fXsu3bRa&bV=pGNbwTRu^2&_SC zO}n3+eslXTb$1upTAS8-wDf7XmVN)t_|~_PlJ@<#45YOot+!}xMC&G68`C<R)+V%e zr?n}qt!QngrY-o(a0|&T3)`(}?L=!EakizUSxw8ezI{dzdB@CF9E<-_cA>Sal-)8! zOa=eep0viOYA;%f|E+y!ji$A)!2Pl%BU(xUElUBk4y2{;znMOYmOlQLcleO(Ha}~H z)}gcxEA+9Z*!h11t+QwyN$Vt9M+rGv@)%mj(>hlAaZYA@6;Gh0#s31Nbuz6}RCOw? zGiaUW$h1y3tBhmCGm93_rgaUib7);eOToW&9<2*#oj=T{H7?U>U1*9OyNhXE=5$*2 zxQ*7OhMU{VX<5vtb%lyo7Og1$=lgiAk&Sa5t?Q-SAbF$VIp=0t57D|sPHvUFjh3eL zt=m<+gVvq2?xuBD{`0GOuAp@ft$T-yqTMg4`G4y{r|0XOt%qqntExvNAC-Je@^M=K zb&7PC0-luelw0tm^>n`M*?PtZhCD~>Wm?Y{e2f3IUZnL>hG?u_q4hegS5;;4Kif@O zn*X=*`M*ZsZ4!6#ze6%3t#@htLF+wQpUCiiS|8B*NVE_0fwHzf&K%PEl-3ut6#rYF z8>oh8eM###T3=-dt*>c)L+b}x-#Ubr;(u$r_}{Ylud1JD{cLYhwtkWP)z+h2l_9^I zk{|IuNhT8CrGURlH0^KMEkI64EdE=!lZi<tH)f)|kSGNtlaXLdx49*w#Nt26lqAzh znTlj;DVAKM*u6>iK@XDYNi_eT`%hKPM6v|Q5Q$GRvyfRxW+$=WuMW&+t>k|GLt?>S zv^h!UBJoH{IU(zhJI|9c$vh+hNmWdX|8iB!m?U+Q21({86vt8kNs}aYkElpml8Iz$ z53QVs>?vWQ6p(aD>@k6?`XqxwpWB#j{XChMMBzP|k7Rz51&XE@B(a&l(ehp`A}5vt zNERbm++H$wKX-E55zCS+NwOBnQY5R9EKTB$$TH*EI>HE&<uZh1c{y>duW09RvXbP= zP8vayWEGNCa}RC>K3QERYmlsIVAe4^?rW2*N3u@FBw4rU|45PzWU~G+pJc;g_ctbS zJ~tuRo@7(eHY3@JMDgEta0`+x%}_auWNXt6-$rs<lI@1vQOj1y6H5oeEd`M5L{h~6 zWET>P|F$ja`nfyF5hQzL2+5u#dyy!%Cwr6ZL$aSd>}!)rx1yC;@Gl1BK$1};2W7S{ zw~}b`pNuZN9U|K?B!?Eed6<x~B!_26fgeet+lNGx|Ku3aj+H#l$?Ts3NKT;r3dxDI z-AQs1>5U{Ole#{fLUIqusU(+?oJMlC3{RIlgG9mK#^J2uSe!$0zG}~v)LClB?gEmF zgp4D(&?&YVez8CW|Kw5w59`{`>ypb!Tpz9=xlRO&|0K!?$<-v+7}Jnzi*~OskQ+=f z&o`0WCeF<yivP*2M%J>V@Y_l5Ai0a=&dk<sbCSDF7l-6t(sfDhBX!sH{UqOzJV5dW z$%7=%kUT`<j@rW{kC8k=@~9aW=c+nT%>R=oNS-3G_@8k|o*pKXJWKKt$#WzxkmT`S z=5{+!@LwiT*iY>FuLDV5BY8b<PVJJsN%AqtTO{w3xcG0=ev)?z5AS7)zz-xpB>5-@ zbDy7(d`a>t$>$`WSyk@&i=1W-i};^>UG(HzQWtx_Bl(l$dlKDEBtMY+Nb*zO!`%Nb zB)^mVO7h$IxYJ4gDBAjqbRv?!NfrN-e{!a4I-PLXigaSqNk}IhMw~e*q%)9CPC5<g z6r@uLoHF;ETKq5cX-TJ7?R5X^VMfwfNM};j5UB-!BV_$gXC<ATbhaF{7XL#!$Nzem zi*zy466t`{BW;rUq*c-~X~i)~gJE+OYosA*owV`4ZCUUy+KoxOq%Bg{VnUk!FVlj5 z!R(oC9qVTx>D;6X2$_e}=KrMgk<Op-jgy_~>4KySkuE}N38L_3@jok)E>3D8opcGw zB}tbewXjdRbir|Zx2);eC1yLjJn5RGE0C^6x+3Wa(v?V8&iIAZDx?bj#W*{hR4E`` zqu{J1aBVAE?K(vd*CXAUbR_9!q!#>1l?c)erEf&K3F*d}RUTT?P3=jCdymM-mI6q( zAhq~Ux>e4!o^M0CE9thRJCkllx+CfK;^gt)c_ZCvJpL}G=jX|8qz91hPP!lI9;Ew{ z?n$~g>0UYCMf-H0Vg9f}suZx_!K4Q|khF;Z)*lCsBOOh8EUAKjI!2sBNsk~^@K48@ zD>FRYl)N)Xk{%_{;=dG20mWz>M|wQzX~IvCJdyMyDJM&wLVBuGEJ<a_Iz65Ae9|*i zdnV~QQqGdpC!pQ4gH*vkRq+3}t^6r4sp7xw)J3EhlU_+`@!xHvmrCl6AiZ4r74}TW zs;;tbm~u7gHKaF?UQ3#<|Bx#FYnL5Iow<qhAJUsiKO?<`^g+^FN$(+5Qb=v`FWMcX zdHg56i&XJH-_v_VxKGF0KK`KM17>JP{~^-%NgpP)piTM+>7%4iNq>y=andKG>lPrJ zJfu&WZLU8}`V8r_*{z?L&snXV8!wQ)LHZ);Yosr!>Sf7SNG%IkW_O!0U$>&$+|r!& z;Z4c6NZ%%Xm-L-%D2f4jFE1MN1JVyOTT;scq#sLuBKc`y^0}KHkbXh>okK{!l>AEa zYtnB-{?^HY|2^qXr1l92(jPO>q!oWA{e|=oQs?lu%!JgsJ)ZfWPAC0K^6$)?wh}?x zCjYc2qCE%giD}PFdlK4H)1FlLWVEM{g5=~*+C#&(g1;GBE*MHTqCE}nQKuo(N=|2e zYfmpZ1ML|FTKvyiFZwVG?OAigY%K-Qo}IRx5_V#klR0U}wCAE-rCp-!)As)LWBjtL zEdJB3<fl`+MmwTi7ub*toy@0j#<W*Jg|}$WEhV9CDS)=ydbB&V^TmHNw4U^74>H|s zJvR>XSkY~6CfS~k_UW|er@amB1!ylxdqG!4d!dX&dtnt9p}nY-#UvM(wBY~mzYevR zqP;Zj6;!nh?W~_l0p@Ty+BW&mKVQ~fk+!0GdnNH#ragl8YP46etEs)J4T#&aIOAeS zdkxx~(O#4GdbHOPXKmWH_+viJWZgm;N!#t?`m{F`zCngd-zekL-lR}A%@oycPTLlL zq;E-kE86z)|MB{;t;SO?owm29eI)H2Xdgg(N7{SR-buAP)838tF4A|k0e9WY&iS_e z{)@J50diz7A$!x_hxUH7_s#h(CKz-7tVsJn+J_1`i1sMjqop65)k?QV0JO)9ha4tk ztmNUej~K2Jaun^OX`dwh7~03uK0*3%w2wEY+iP=pV%~Y}0_~G&YyGEf54CBZHXic~ z+BecZGvm`fi}u;3+i^cfQYoN)9_{mK-$46<qIMi@i~qDQqJ5>5i)mky->tMSrG1&x zX<uF-SD2w99__1Cb+zO*lGjRJM_ch<H^0`&yeBuw|IM^-q5T-`TWLQe<Tl#3)4q@P z9klNjVkv<3UD?Dy`aP1C0&H-s_I^o=|Fj<*4}Vz5BeWki&~5G<HqPU;|4aKB=}*vB z@HhM^+E3ff=I|P6`&n_GqpeiZeu4JOv|qIQp!Q34)9rjZ>F$h1T|)a+I(O23jn0O& zU#I=HY~P@*;NO1B$m#>_cj(MU`(4^!i}N1s_p@5sAJG1g_UFPsqWv-LPicRW)fW5v zS)qI(+Lw}F4RdIJL;EM%ivPA>--+<O<PWreG-f_@Khyq8_%D*bN?I16{X6YHX#bfp z3;y49vcUcioeAhnLT5tvV3f{8bS8FI_K?*57%F=s&YhW^$>_{T2Xok&oX*rzrl3>A z|Bm9n%VnKuRHfkGna-U&Do#&lhD^89sWTHD%MorKOUG^j=*&WAR_j}KYPsOknVn8d zM<+&S4mu6d=9HX^PRY#8(4*rQy5fIF@xN11t$hNTPEE3&cfhPdIyV2O(==PR2JTkB zJ1shjpPhtGN@qDbSraz@r_-gg2%R3CdFb?o4BU?g>CA0EA#_empO?;pbmo&jzvKer z)mr?gvv5Y1z9^lg=ve$$adA3JWPCbHW;8lWt7;i}`#;HLhkdGQc}cgME1HQlq4?if zS^5acRU}uHT+PX$eD~L&vnHK&>8wR(ZNoMGbk@mqI_sHYK1b47ztA@@#l0ul*+^9z z)47ArCUj1rvnidu>1;-4M>?C+*;<4x=xj-6tD(wOX6SxUX%4rcvz?S}?JKozuGQI| z&JIR!r$KgBcXpz)t2jH;*~O}|cjP*|(b<#E?sOFS|K;yxocxsAht45%_N8-xJnTnj zf2(zy_546O2h%x-&L~6N6A*b8bF?8YKX%5@IiAj;bdIE>`G04u2#3=dFZkQO93}i{ zI>*vE#?0MjSIu#mqS_Now-ftBIwzTKh9{e1OxN5cbWWplKAqE5bq1Ytq*w}|qxpa5 z?2IquTsr4jG51i!|IRqoUMP8y<i!Q&QaXy*oy+K4PUmXXUP0$dBUmdsK-QmY=v*)4 zTFL8-VE7Fx-k24o-)y?s-a_YADYq4fJp#^j+1^F>7&>>;osG^tbSD=1UOM;Dc|yA4 zf9C<|57K#vjyo$Jrt=t`N9a6iuKqpNk7p-|$^3{vN#`3nPtkdW&eL>WP@~V#c~%ae zqw~CZ&|;vF7bRaZ(E4w;06IV}{=YWdb2_ind4tZUbl#-nuJN}-e%n@wJMT!oo39dg z-c!~4<|kV>?$|8=osZ~zTp*uhwRAo+#cGu!I$uctQt~T0U*{*JTWRlnEATry|Iqnf z`VW#n()o?fPtt!b;>Is@ejSbvbbeQ@{r*?VpLG6mI-S2WB*(iG(4Ei--HDvE%^mCR zB$7%K-N`bXE_5fSI}6<@=*~oUO1d-9ol3S-7lzZwa9YXfByIjL&WxEKfl2|^=*&g! ztmD<rPIoD~|Do#$bI`5Gd``M^(e>#T@xSYtN$$KXj$Q#Ww^h1Ly0y$F-8$Wd2sZzx zYw<rHv~Db<C7Bp*1iJ-LKRa|6rrQ<RqdPa<zVv|+hUXYvy9J;-FWvd*E=YHNx(nFw zx*Y1Z+~-0=*=HxaixkMBveGR;cX8=U&{goyTVI;))^wMlJCd$DC?n`Dt6nW9xjfyK z=<4Bbcg1WRgs(iFz6#y7=&nk4O;xQXxjNl7tPkT~q20BuXor3sy6YCYQh<T$)7_Nr z1|n=&)NVv~<3iuWl)T%UiMF}q7Lr>^ZsnwQa~ry&=x$4QKf2q|-I4D0ba$}J)80uw z)uMEFC%Svl-I?wlba$b<n+$igTKBDq?(U`}H%s5s+I2-c1baJ$?mpI#b$ef{G9{1y zbPu3=pn-1s(LJc>k4^sRj;5>og6<)5HKwpt{O^vXdnDb%>Dr$^T9sSoa#vILD7r`6 zvO~I&oe%CkknXW`|4a8cy4TS?p6<Ewb^_fK>7GvaB(t@yo=o=?DOt}?Gd%k>NB4|^ zb0%E{|E>jpx|S4*KA%U|VmsaQB`=_B!C(4?k{169@+EXHrF*6D%Oo$Sd&Mw8h{b=p z$_w3Vq+e?U_ZD&Ydb)Sgy@BrSbZ=DEO_D|Y@7_XJ@xOap)}rO~?j2_C{wmJgy7>Pf z-MgjVBYCgneNIZbU-E(MI7)v=@?ptGBp;Q0jPB!3vCWS46Li0)`y|~LRr?g(r=>h2 zY4KmmbCQ+?=)Pc}OUK=p=)OnyWx8+BeMMETT9t8Lqx*WM7i0J)U5o!Z<=&QjN6dE( zbn7AA_vwBj<O9hM>3(EY=Ivus-1i1e|5Wlbx}VeimhKmHzoz>o-LH(}GMbjK#Q7#G z(*4e=+-7I#5A<fG`y;(c>Hb9b54t~RwRC@x)vt7I@-O{&Q*2NFq&G3$zY6?sy8qD2 zKZ`+cLV6R~+{~T8Za(Zf*_$L|y3hE~n~dJn^vG>{lZ!9~y(y(w{LhD|Hx0cR=}jwq zI>XJ?^pZ1J(ap4bGZpv{y_pMr7E|2b^=6}2qc=Ofx#<0;sGY+p^ybVs(o6I_dKG%U ziWdB(1bI~NRSj`-PIsC2>h${b8X|=BEXdQ-EkLhHFQ#X~--f!7^eq0<%Y1gE>)7>r z#&K7DPx0S4a~onkpO@{wq&FXntwnEs7QT_*0xWbdy#<;7R(cCD@2>O~X6`-dEkgfc zdW+JZh~8rKo}srmy^H8ALGM6%OVV47-cs~dqPH}?W$gD{)}m`-MS9E9bNX`hmLIy~ zLkkyojx>4W`a{>wZpd~Yi@dVr2+38{|5cstYU!;`Z##Nx(A$XKn)KGA=Q_MDy|wAB zV;uLF!R~h@&d-q_$b2Nd4d|_(c{XWIHZ;ZkIZJP2dRx-lgx==#Hl??jb;dby9^4$M zw}m-z(;@5sR`j-^x3v}JS%htE^o+SZJvTBt(A!yVca+Ia=E`b!p|_iqU7fTyI(oa) z+aqhmUiL7~Ui9{(w>Q0gRn#XSTsPe22=iP)Z-09F{cqm4gXo<@Zxp>_=^ae(NP45` zjgjpk){6D{P<n^cJB;2~bK<({HjNLxBZ_v9vL?*`(e#eVbPf1%^iHOCJiQYPbmrD= z_x`7oCmCX+cM82T>77dN^r2Bx(L2q)=56hsVZ(SrOPsSzH}cu0xE~Mp&Q;Ov@`X~) zr+0xHQhMWTxWqAOC+EfVZl`w%y{qV5D)MFO>gBc<?hllES4du&9ZflR*ZVc}uC=pn z|NH4(NADJT*VDU+p6kPnIWs%N)~lPXt$a+}d48K2=4b33^q!!1C%yaC=v`{-ZhH3& z-4M~cm)?Ct`@ZgW++x1__oChd^xWV)NbeDP4~hJ+d3LYGx|7X%`zXD~=sj*l*Mu8G zC*8nW)sx!0r|3Ox;Of7*CNz@I(tDfUbM)S%_dLCq=)It^deO|?X0|WWdzIcRxkEdY zuhDyh-s?H%-<^HS5O>8{|KFka1-*CaeMIj)wf?@1zd8JX-iMiPgJYwVT`Zr_`&7lx z3jA~HzY)Hq_Y=LZ=zZ_{Pw#7b-$?n^cE^zKY@keW@&88yo#*}Um+jB=TzLP5-XHXS zb*B(LegDVEzYiUFi#6f8?f3_}L-`lIzuoxI`^UWXC!jxJ&e6$3e`5Lp{YmH#(Vvw5 zjPxg?KMj58+n;|~)9!NX+h2gupOU`)`ImJ2|1axLe_9*){&WJTFKTD74w%VI)*r{b zb0qzl>6huxBCA>Hd-P|s0qoCCe-8Tp$)9z)7~Y@L1vmP0(JvXOu3BvG`$NmylBTn= z&04R}-;sWm{u1<S^cSLEr=PlWhJJ&7NI#|@*(qd5(?-UWR)Hj@SRdN-=cV7FKcL^$ z9`)$=tyU&N=C-D7XXi1+TA$BCu_5!*Ux2>*=a;RG@3wtkr@ydM=r3YqQx=t6OmcB2 z?b!8~q`wUPrEHwd&(cHJ9b!&geCYol{blKIKz}*<D+*bj{t9+txXoSf{gvpiA$(=} zBc!b2CMr@^m0XSf>KS4anEsmdM+#qy{@Oy;kz7}DJttjlCh4!A>GU_G?`$`+qV;Oy z0^d}{&FF7KfAgYt3xQioZY8;O?$&I#rN5op+Fo*pyvq8v6aD?^?@WI$`n$O7Mt@fg z)Nb^5&jwKAqwjzA_q0pi#(!`6`{{u0Lw{epK-}?i>Bhxv8_WafA4~s0`Ui`A5dBe3 zvCV~xo$K^R3wK9<4E>|&A4>ly`iBV|D|xu&5t2tbX+3e$9Xr>Ab>J9N>^wh?{+;xX zr++^E6X>5o|3r1{B<qr$awpS2MQ8P?S>mRDn()(&pj1x(O!{XDJX`V{U9;y(>PmD> zyNWNMe+~U{^e+|dLi!h(6KmyS$xE#0E)YX5qkp*-O?M~ZmDYdLuadmls%%HDRq;Cd zx6r@dK;vZ08+9OVlDygW-KuVtyshwdJN-K{y+G~~;coi(NV!+?KFRy(KPcq^CoMj> zEZKj^6!ZKDgNNxq%3vv7n2*taoc?$89p_p4Pq+v`|4AL+r!?|U+sR;u`x!ercA-5- z{{#BZ(|?ox3-n*6|Dp&lWd!N3(05nptMp&9OV90;JH2&$>Az9<d5iwL^xqcWCjYiM zrnU8+<ojl8MHj3-r~eWC&*-~d_>}%9*+7|;iK97%{ulJWrvIfC&G0L$b#E#373EyS z?th!{>3`2)Hu^s>n2i39^#7#)6a8Q5|185_GKYnq-{}8NUyDCQi}e3uFcJN~8B9q3 z9|jZTCXSGu$*w<xi5X0ix9I+2OuOT18NgsV29q<G%9<NY!C*@Jv83y^yKn|mGnkfv z{`}E_&YO$yMw_0&%nW8=FcX6r&8<7W*2<6()GmWrY#QJ$nZc~)&Be*V><m%{|6x#L zFb9J&gE<*^4CZ1`GIG{oC(V^_MQbZyP-S5M|7e?Pg}d&>3>pj~2BGB(*F8xF&5X&Q zWr~~d43a#n4%!UnXV76VH-j#NK7-zPqcq6<+sMqrU_SL^UIU$Tw^_#)V6X^-1sN<f zj5Aocs9lu7;tVYK+n8AYmte4@btCiO!sB3R1~)QThQXQ){*S>L43=fE3WMbstju6} z2HH*SEQ1x*=t|~LNr%A*)7=qtsbOIAe+K#l#K1lQVNuatU)KM%7>r@CHiPXMtixav z2J12y$zZ*_Gwxy>tj}OW=Ze7w8OUHG1{+&f-L>ZafYJ`%rVO@Zu$f)6gUuOiVcp2G zvmskC*p|W847RafTf1qAI;N9nJL{))ZwCf@GuV;A9t?J3uq%U|8SG+LnQO?kVmq=M zgWb(mznn5d8|pn7>}8-U+PLk*-~a~uGT1NgfbHh~MJop~IGDjf3`S*$Ik(nFGjOxb z|Jn{ZKW1_$gR>bN#^7WIV;LO7;BW><ihRV-sWUkmgQFN6Z64hD>^8GHmca=Oj$?3q zhFGo3?1K{-oMgH?fpwG_oWkG?2B&KDPGfMowd+m>T^bC|w4x2{S(zUO=P<aG!MO}B zU~ry|ymjDwqgnsQF}Rq)g$ypr3{AS2Z=6dC&Sea)VQ~5XQ*{<lvlB@h#vfcS?tb9{ zi+tmfOp=*o26uONhl{(rJB!QWi@V$64vVv}xV!)LRx)?_&&jD%U0qdOU0q$>=_E6Z zT+N8luaag<bVWngsA!k8UB}1`hBI=#d}0jJGu-Nr+@w@Iax)|MGja<f{@-3Bx4PhM z4sU1V4o2=Yyy)^ti!pMysbb_F52Sk?zfa2T^08y&0Y)BV<e}VJ3Cfa3C@sOrqm(9M z<S|B`VB~Q(>|e6n2aAy>8Tp)%rx<yUk*67Xm62x{d5Mu{8F_(`=NNfj{qkP8&KITJ ziW;w%hsZ0#7GGoJ4MvLnKO?UXUHv8_?=bQfBX9rDLc8-Cc~{E)u9lJic<<h4<U=>| z1BX7QwoZ+F#K@<Ne9XuvifS9{JZR;d&veJ9DfR^;-!bwfBi}Oem0S3=6J2j>@ zvt;@AlqO{42S)y2<VQw+W#lJDbmqf|9|4(vOs6d(Bfl~7yC$6#?b00ilhXKxQyNbc z6Ddug$zoPn(Kb$&)k_monwiohl%}HurO7DyEr9vW#-%j5x>lNk($tjv&wopv|7}D> zpGFpzrj<+0Il`4CylMtY%KwyR)bI(JNmb&Rh0@}bW~DSIrP(OWL233;>+4oR#@nVy zR?S6e0ZMaInwQc%MW?)Ll;-mu&95$4uS*M38tsTlEj*5s(jt_`IOn26PIpW0AM=2X zLdhJmE2SkVtxahuN-?FSDOD&fBV%kXltw6(G!`}yN@XGPVU<#wQq48gDK*_u4GpwB z=E>jknEAwRXG(z+LrNV=ks`s^Y%a(T38fV%btw(JtsbS6lK=jX$1SD4g2C>ZOG;Lh zl>8m>{BQZTv?8Tdow5?8m4~&fXne)*yOh%El-5wYqO3`2Eg9x|iWQ`^4yAP|ZAoc8 zN*g)b`VKdsv|%pjJ>8hnW|TJZs!gS#Xk~NZQohBIvK6K6DQ!J$bQ?<BQra%B6)cR| zfzpnYcBZsbuEDA(?NZ<xo!y+WyF@I6RJ$jomnn^<bS5Po{!rT6;XdxqeJLG4N#{S5 z_E$H}&-Pty=|D=SP&$axv6K#`bQC2U%|pdtv$b>>r6XPW;gpV$ZMlWkq7Ao(>1c<? zh~H{OIgZltluo2{LcU-*@gzzo%TBvDv>`5JPo;F41m&O8DV>pPFi7bvN@t6|@Wwfm z&ZT7Wd>*BXDV?tfR7Y}nf#VlCyhv5*`z4gFqjV{yt0`SZ=}JnMJN*hV*rmwP;$jyi zUj@`|k^d=OE5nM~>nZs{P_o|L<oq|PO8hs=NV}xuR!UD$x{cDqly0YVw-fdIZ<Ow& zbeBXd7*xE6(*2IyOX)t*3k?rYdN9Ym_90cd8I&HOWcmNGzc4>e>0c_kIHe~kJx}SW zoI>eoLnu8%=~+t8iD;S4S~qQS&I?}qqQjR|E8;7ZKcMs~WsBt3C@(?j-;_S0^g5+? zD81qReN!W%j=x38mjEle2PnNu={-t1_M!A24RJyLz$rE#^=Lriiq(%P{Y=RZe>7D; zrSzEsL-^+ozo7IbrSBd8iqh8>u9Ut}(2D0<O5f$U(|>T{j}Ct_IAr^UvgOiWDNl}l zdnLi&DNju45Amq@C*|?v7Q@TqJDh;>gbK*A-vSt0Q9B7`3aRp>lqXYcTdhS=c?!z2 zy6lvcr=o0>sl7POP<C1`PAC3C+YFRPc`GwIoXO$L!`fMLPRg@Up4(+-r#y#<vU5(# zbIFZXw1FtkLwO;m&r5kejjwp-r@X)rUr?L{ePOR1?Qjvwix!S5kD<KSIDg6vo5<zA zQQm~|l9V&bOHpo9UYc^*8(qfX2<4K3$BeODQLa#~QPz!shThJm%5}<3$_+8NwHmB) zOGW7qC?}Ld%8}x*+>w-wk7Y?7ljSbulyXm17CaukF59QPF69B`RVXh@c}2?0QC?n} zE&R$l{8zx+Dqmhnzh)!i%2F$jtx9<<%7&~#d380k(?V{*nrgyBl=9lnxsDWCcO<o* z!}Td|M0o=(UgZrH<hJLr6}h~zIBh#>;_8BK0i1tx%6q!OTTtGT@-9x?it^T!w~@F- zksU>rx23!t<sB(+Pk9Fs^ZqKjcA`Ao{~OV&Zd{M@u9SE4PVG*4kHRg5SI1Je$-5Wj z%PH?o`6#oW@;(l=|EIhk<^3HwfbyY~4>X%8ALQ_0hg!#t!STbK^KgepI6N}1a{Oq@ zCsRI#@(GlWb;@y+k1xbsgA-4r?2iCkE#*@vpX2mX9iHa!bjoLVi+caZDQ7wKTL4*j zF6E0UpJzm;pHKPkLr(4gDPKt0pa1@^-AgE6>Q$E&CP|M4>hqMZq<klmx`FalL!DPU z^EH&ObxW>uc>P~wi@gD5KmRG;MEPdQw^P2wId9E5Dc>fA)(bUv$B=jz<$qDWoASMs z?<p9HzT8Loe##G1e!xW@bf|~FIUD6i+^|O-KIZW8yvp$>96l+Edh`_Kr-zL`L;2Yu z{+t+O(hJV^qQjRQzD(KDzMuc+mJcE2e^Y*)@;j8@kht{g5dh`49QqMZL4VgN?>YPr z<@XKIr50^QeChNLDSt%y6URSRt<NvYpE~6;%AZsIqM&=$qWl$=2Ia4*OikGz4V1s7 z{3qq_DF5VB;Cq`#lz;Ht^5ZCb?ZMs}D%+gWU4UnyUn&1i`8UmUJ2^Kf{y#MP%(lvS zR3@b|J{2W=DictdP<K^!i)tCHGBK4&Ms2u*?6f3MA-9dnWK^coK}}_HDpOFIGUpeY zskKY0rg1nel?ACxM`d;@(^Hv+$_!LyqB4rgjFPe~w?VrNsmxs9mbEIg$_CrOS7y`x z+;9=+pfV?wxt)2gA;UaFWM1c=&*A(I7cl683sJG2E=<K*8BJwTCoWR#{3~N}4c?u_ zhuW4HTD2sVGL@yMj8Ivc$}(ce&3416lvI>?6)H6<RWTIC*K-53I#lfW?~YVjR92wU zrqZVpP|2u-RJv3;RAMTTQkjjKK^vn=qAaR0>dCQ|S1YL~R$CMY?qTi!9nmcS72p3$ zYDI-aWhE*bQCXRar}WAyK8~w8v;ke+v{6|j*GXkfDt-%K`n?q@S^}u7OU3hlWqmh8 z4}Ym_C}Rpsl>e!0LS-u|n>xOk!_CzlRc%3K%N+L}`Tk$@ZK!PP6x{+)**@o?;vpx> zPE>YQM47kUDk{5DeVNK`RQIH^J5}@K9#r0<V#U*`jHPnCcWN&xds8`#%05)gnfp>X zfXaSu`TqGV(5hECkjg>oh}kKhAFL|1>$d>8ALOFLU8g?+s2oW}=l@PQn#wU+1jTbK zmE&^UAe9rSoG3O8%1JsbI^81wWGbf&@l&00nxaKjXHa>R%9&Iyr*amRi>RDU<$NlB z_#;!#rE;FkGo1!S$>9Z5wE35R3i`!VE^&rShm^~NXqH(h-c036D%Vi)-FU?}|I&7~ zc+`<=l~^j*Q8D~_D%$*OMYeWDzmbaW0<^&}q6BZDayOM*vELT1+~$<q3lU=z!<|%o z|6lOmL**eV_fmO)%6(LHFOY9ST>pbA+Ep+=Oy!Xr*BM&nF)Ghdd7R3VR4lxoD5{*F ziuV6ho~H85Uo<?M<5Zrf@){Lw{+;bbDlbua#qpO#bjMP8Rq<Bv__=iDb?145%9}ae z?R=ZcuT<Wl@*$OXo#8!)df|b}`wso^r{ae{J~~uBqVgS;kEwh?<rCv^woe^?M&)x+ z3Nw_eseDD{>!B;YQLTvI3eoiWepvMbl^?16;<Z0H{8>CcWM2G@swLsysd(m>?4Jtw z>UdNqb7Xvn6F8iZ>O_V(J~7ovl*h!3!%0<T$+<eY7pHJIrNgNlPOUv*bsCMSq^33K zl<B=V1J#)w8AWwQsxzqz#$XfBW=eGys*6*dm8xl&jq3bVXQw(J)j2dxEP$(XI-JYl z+*CdPi$1SWirkxL=IR1gq`KfxaN)d`>S(Hqc$FXih-VDd;#kbpE<v?Q^>0+m&bA~~ z`!>YbmiF3Z9F90F8I;<h#forS7OOR?4XSk&3$vS4BNu5oY*P(}RUy?*jvJ&JyN1Ns zx(<5|Q-_(sq2Pe(22__-p06%PbyW>?b$N#?I9!qHN`^STvcpwWwD-ZPt5IEts_*}8 zQdiedNLSbNaaqe1uB~ygY*1ZSBC1`FsvrK_a--sgRJWwMk*nQUJZgOts+&5pnZwP8 z^eu#(emd2ysO~^@YpUBj!#1vJTZh|OyT#^Ts&;gSogD5=)&KLQ>PJ9o-SYn)F15R) z%v6U|$5OqC>RwbYQWCE2P1VnTs{2wsj_Q6?52dQ}AF2mXJuqLws2)Vs0`*`OZOYhG zwSY84Y===joa!-DkDz)q)g!5T^7nP^FLCRS09=ad@l?;HdIHsxT!XIyHsh)%Q}u_x z8n08So=x>Ms(Se|Ux28dLG?`a#TKBdzXGbB>Sm!>p(J=7Re%4d>KnQ01ynCo-~XrN z;-Tf2P`#AuWh!cBT`u3+Emidjs#iMV=ZDp+hV-kQcn#HSsop?U`+uigF9w-3d<0X~ zE1+I=GgV~<HDSrQdMnl2sNU<nzMZN+|CJB#q<WVV?{;{P_$?k(bsyDdsoqcZF{%$x zeaMLq{)ORTr#zx`SA8^J<ETDP)nE9jnnRut(G-f|DQDK<k0Z~Bu2_0bh?;xe;S0|E zBGs2fcX6t(VE@rmeU;i|R9~a|fq9kczp1`X^=+zexZs-_9qG~j-^1@6s(SfHQ&RNz z99rPLFBjRksC5Mu)eotSNA)ABA8Q}35%C*=>ZeqHrTQ7wAE<s#^*g<CS^a|Qm--7u z;a@rYn(8;&-iz|BstWvj;r8WP^+&2dQ~fC~I@>S8?K=3MUi^*f?~eRI^-t05hsEqN zg|+diO+sw~*;$*An!o&M`Yrrw6B|*t_QIhysfy+V+X2=lr#70}6x2pho08fz)TUB@ zYg5brc1dJfYSUAjuAtaDB8C~HLCB2MW}!9{HGlH!B2J%`+QQUkqc%6S*_|?n!#NE) zGMA9k{lQsn9%}PaTY%bpqF9ot&0o|CUyz#4H*)5@T{*wDh<A2TYGbJNbf8gNjN0PV z%G8$7g9cIl=5R@BOF6Q%23_=JsErKql2Ke?g<6|hRYmdCsMQ_O;Xk#erm*NOF^Ccf z5hZlkaTrmHhnxwuZjL*DN=?W3)btd9n$G{J`7J<Aw*b_9|6g04+6vya6&<dm@iMaw zs?k-3$ZFIMptd@-4XLdm|7bYYq_&nLYY!>wcu`9Lwe_g2Pi+GQw(&cpwh^_RsclSc zQy=b4wCF2}Hlwz^GH`8kYFmhCTY}n_4!3f+HMMPq^lhE8or)G1Hj!)E|5MvhNv5{b zFj{t@wg<IcUH@+Ch#J~m8&TVh)b^ydw^PPC+)E6${irGbJ7r&L`%%;3k0|*>t{q72 zRL%67zY$bBn3{<kPtEuL(tnuC9!||S|22RAr{?ef)Q%o%KE`>p1W-FpM01Yt6Lh*& zQ~sysYeDT~YW@h=a;6<*)lQ>!H8qRU3#px<8%ayEwKJ)mMNO~zQ#;$?In?~)uR^VV zP*C&xl-dPq%Pw`{A|)Il7gM`rh+j(WvLSxC*Iq&GO0^}<e>l8K47P8nSt>A3UP~?a z*mcydr*?ySWFv0ST}SOkYB%LYYBwuHt;#M1*ljeXqjo#>rK#OP?FVXiQu8!eyNjAX z6sX-JZHlOSsoh7-ALiEXr}lso9~{;`MD1axJmT<ChyDm)7=9jdPf&Z8+LP3tq4pHD zr;G7*gQ-1B?QLq$QM2^^yctRD1!^zK+R=u*MD1naxepCd)V=CZZvj#Jx5L+|>HOdE zH>v66e--U5wc0xpx67SC?LBH1^WRXjdHsQI2BpN@@`;;jOTb6QOzmTZpFP7>hWwP; z=Z^R*Kyu3$)V|cJYCK~2%46Vb{nd-*WQFv%)<<gJxhkFi*ein6exyDpwV$X@=Cu}h zzfhlu+OO2dr}mo@f0uJ4`-j6nsr&iA5zPZeuTMZ-=l`0Cw$C(E>l0I-#H*n0JAdn` zF_>ZX$*E84RZ~!(lKNEgiB*|}^{E|BqdwZ{M}0c#vr?a)`YhCEkWcEPT+q+|>pK7U z;>?8x(<3GJ{^wSX%&z=UpF<9@nO>iZ`eM}QroNy;qCOAxc@1%VKI)$QMfXPl1>M9K z9`cNKPJcbPz9{uE8ap$<JRqsX9WFuLvz#bPI%O$?-s@$kA5DFP`mWSV)OV&{raquv zad%azXVh!dL+W*-II%&!NxkiOOAX1ffoco9Lp^a~L_HSWtEhLK*i+GRX+2d$NwzOn z7*XcgKx{{SIqIJ9>&rWXKLRi}idjnl^_8iw;>fDh*QahnuzIe9`Wn>Np}wZ~PM-i! zFE;;<uWM3{=)G3gumN=)=1|{|`bN|@rM|J|LVXj>3+s_V6*qIZxx+0)v?@t$MSW{0 zZsSnzf96uuw|D(Js72YlBlVqx7wzt%VX~rPV>jwYIkG$TJ*Xc<eNXCR6||Oe>q`FA z_ojXz^?j)CM}6O1P*7EV3s66xAm)>|elYbTshjd6s2@uGaF06We@zFw46(Fn(9Fm~ zU150)_0OpvOZ_J5$5FqO`te$}>L*Y?&5;wSpJa&RCp$dF;i)28-^J`Nz}L^9ex?`C zqJ9DOvmHN2Y~neW`g!iL^M_J;jO&yOo#7&f7dz#WoX7FYsNYEaa_ZMp*JDuXS1Rq- z4Y}G8&;QmVP0VYkUrYTutq4wWh8yz!QunVCtWk4<m~W<jhmV5I%3EEtAO73DK>c=k z%vOZ@oz(B8ewUVMHGMaA-~Z=sRC2hF`u)^jqW%E&XI$-r)E~-Qr~WW?-~87frTzr< z#}q1R`f=)h*JDN&arLA}*HaGt5rEj99qM_G`tw8l1?n&6dYt)X>TgkhWmx+vbtQkh zsC)jezfS!P_rsfoTiiL+-=_W!^^ctMUF!bwr=<QvUHgCP{{5FIIw__8q11~0u@^sa z_^DGqGdQgMg1VpN)U^sw*Cznf{S~14H}2AJsek9l_tY)z7vFz*im?3ekKrs)m_j9u zUujHA{WlsDQvcmE#ve*$N*#X+HpZhdenDyI7GQ`^<h2t!oJ1L*fo^kbGD>PP8k5tQ z*6}H5Oi4rAej2(35Rdrv2q4G3YI+*iJADQkqiC#1V@4WtDJmK>(U_UW9M(FGSsczv zV>TMID{RappP`zMjX8_BYRpZeu0d(cLt|bVi_(~nhX3Y6V}3O%wF}Z1O~a%X79}?< zPvZ^k|J|4|G?t>V7>y-pEG{;?Y?x%fzck)ha>%(fjj|S?#xgWU46$rO!;gSORQ|V% zM%C@CiNW?%jRp;!<kM)<Xwit=ur>|le;T3I?nWoy#11vYvcbgFyDp6$jpb;hG;~l# zBXhw%je+>{yKiHb!OPRo=3lb;>}#w<<7gTyyWlD`_NTEbjrH}WYhyJUt80a|+1glx z#+r_-HKeTV#dT<`JEYiOKyIa2ZEQee2O1mF*p|jdG`4noHm0$OBbz$hOhc~@Zcbwh z@A8%ox60{`Z(|I3k;Zny)!*$k#R_~!*RT_fooS4vu?vko-GE(b?B)@*yTd&+vKH+_ zNMkP=dlwYh;734>eQE4hxJzz4K(nK9AdSPcWHb(<aj@DIzt#Hw-#$h*iX3~m!y~-8 zBOTZ3<IKl+Uyh}53XS7voZ!7UUcD%W;6xfHDS)NtWEm;sR2rAlIE}`oG)|{+E{!vW zt)J;?^$8e_vuT`@)4k*8(YT1l`7|z|;Tv)@&pIy73&mE9=EY9A#2RwsGF91SX{2!l z4VxEN78F@>6^*M^?EC#o;~E;*=Cw4g6Jja4aRbezX;>?t(zubvJv45jahG>o-+$4t z`1kzZu>Jp?-q7t1@6gW?doGm+G$rrWh}*Y6jeBW4LgPL)A;T;nAE5D&^E@bG5kC(X zM=Om-X}nG2F&eMXc$~)5-mV4A6OKG7hie?4(o|ANKjZXged;}@)-?y8clZL07iE<w zFFAbKpque34V$yC$pG`7BII=%Z_;=}MW1Cpd~fBMkcRL7)!e(@=zBCw<RcpI)A*3a z2Q>aGDH|7S&ffkqsJ?$}L>ix{m7<%U(VT(C=c33PUpV}d##c1{bo^@?-$-1w-_rPw z#?Ov_@9+nQKhpR~3XRPnjbEJpD-G@c9sk|oAOGWNjz@ERn$Vm;MAP4#(BVW5^$7sY zNes%L%}HraO>;6QPA;Nqr=U5d>8Cl>|7*QD4b5qtVLGp!{{PpG@~RnW&O~!5nlsbX zVLr`SXwFJg2mUl?b2z)aZE@I~ljd9+Un{D1ZXuSDn)A}sqg$Hu(VX8AKm2d%@So;F z&g0+zHb*<|AOAKNb$pCLXY+G)X<H(1f@V%%GH1|qRv(w4xgE_Bnk99|QdYA}Q;$t) zR@}%c%^J-<P5b`0<9*aCKs1{)_3{tRw!^@+h2wle(_aA<LrhcOf6?q3bfo7nb(o1L zO9nJors=Ddn3wZfy#+*b1)3`svD92i{CQk8SMl0aY36EISC#nn7AVa%Ra8gTrnxT7 zbtIK%V-eS*xjxOUX>LGsE1Db9+??h{G(GJ%H&#c)wkgfc^30>K7i9~FTS}W#^Z-<J z<$s#nirFrCa(kLL(%gaO@icd&xgX7)Xzna2^>-JVd(iX;0nOcL?k*|Yi+V<NRsOC~ zb1cohXzoK($3d18l&IA^zXeb{>`(JJng`H4lIDS$m39=<Jc#DOL;Mh$hdS{vE%D96 z9Uh^Z3u6}LD4NI6JX!|)uXW{5QEcmFiKTf0%@c*IkIMfvPo{YWO+5mjd8)(H9G-4a zmu2JTnKaMV>fAg_T{CSWo<s9onwQf&kLLO6jzz33Va>nOynyB<G%p-dE~0sHjteT7 zFQs|eUqoyYUE{J>($qaK&8r+<Eq>Qb)8GGTUgvDrJG^07<;#tlzRCOL$-jAvhF+cW zC7^j5&D&|-Me`0H(>wE8AHln6-lK@}iQ^jXqcuBC>+dTxAE4=<aWx<GUO(jUVVaK& z{qU$$9&`9O&3_H)PY98ppBhr0cAjTwK0Bm5=alCizToghnlI7xm;X)Nx-VD1O7k6> zuQ~3YX^8kbP0#<r-=yi^e>LAW9$kf?fB)5dkLG_|_I+B@(fokcG&IdK-)ra4{E+5H zG{2zvG0jhD7SDg(^3N1V;_)Rw$d@#~q50L2{<RPbFjeXKFU{|U#UE%*Li0zOf6)BN zwf#)<SDLzs81no^^Y<Lji8TMDH32Q{aA=LMs$6+%LR!A(Z)yKuh=>PTlNPeA$y{o3 zT2s=RLPY1JH5IL?$B7t`*0gew)tc*Cif39g(9&r?tx>dQRIPA-3T)BXn#GH=I-D)9 zReZMQptU2dIcc?N&E>UoJDi7>)z0hqe6$vIMEieQ3((S!zd61TE!_gp8cj<lKMF$2 zbw%wMuUd>&vHz#FgsN=CX)WnhOVL_-*o$RoRh&5Du;j3uhk@f&hxQW?bw~8)FSMGp zihusfe`tbMKr6Q`bT+;JNh@-w{Xeb5VV72qR-aZ%D>I5LAD0<g0~N)*9IY)KS)SGk zwETH)YelE5<ZxwLs~F<=s<g)S-A{q!;WcS(Ov}%IT5Ho<kJdWQylyV#BfdVZ4V}0_ zKFYK<`b+I5UbU%1Ujk&<=CrmDPd-gre&*TQI+vog4Xtg5_;$3m&pB!BFhq7Tgx1cq z&Zo5tt^H^z|2uIvT3P~V?Llj-2b=B=hP8Wn)!wxBp|!7wd2+UOq_zK$=Kxv<(mH|G zLC$=z=o<7xXdO!HXj+HSI+E7mw2ml#$H{&d(SIj|)=~P~0{QJ2TF22kR!!Swzn~)G z@xnFkC(=5D)=9$_Po{MWt<!0pDtpwHmH=%LE%&M~XVN;yk+U40ozopZ*P-6#^|7$Y zbv3OEXkG5~3u#^C$i-ris!M2HI>h}Jz*gAS6+_CE&hrn4S810nk!xsOPwQI8uQRBt zn7lX8`sZJYH_={@*3Gm&bmm)V-Ac<dbL%#z-0tuWTKWWx)?Ef2xtrEKv>tH$URsv_ z?^l(#GHmNXS`X2Bl-9!vb^9xm)+6##K4EPsZ$0kfdE`Gq>t!$c+R=K7mM8z#Gqj$k z^{iJZ`R98ZFM9rOy-4e&yyN+VqV)=`SDoQChsyu7UU#VcPfO2#X(|6Z@;0q^hWNWq zd5_kAhLrc6;_v^rw77d<d_;Q|S|8J%n${<@es-Qu9qRm_*5|aop!FTCFTMDcL%jk- z>l=sP8q@+>1kCreesKDaqKoY(A;qZuLhIKd{Wn^_JHsEeC!_Tz?Fnh?6JXloJDecr zRAkQhFWM8)o|yI|a*^HOv=L%s(VkRDuD?Aw?I~P#O4|QB`5D$u<5kl-oQ}5gzvDB| z9_7d||F>tNtwlkX&CvF&rh)cs4*mIW+n@io_57E%Kl~Lkw-@K3Jv{$!&qsTB{@-4} zYQ2?(2+pRxFhQU8Xxg{YUWE1;v=^m)oNE|EdokKI+J5-oUV`>Aw1?;a?Ime1MSJNY z{PKL;9+7g{P@-M-R(w%tS2Zq{BIMON?Y(F>Xs=1TNxMh8MY~J8O*^I?(C)Z~P^#>g ztlIhzK$m2barlsu(q4sjMq7hR+xnu1zpAw~(q4}CinN!ftv7#ktKyqg+AGo4n?ItM zZ*3iK`)fjNy(>t2b=v;$*EZNT(d_oQy%y~)Xs=CsGurFW-hlSHZqItO*SCh$yS@F< zVS7W`8`IuM(PH{-U)|n>_NKz^2U7e#!Ug^IUp?BA_Rh2|khZ72HSKL_ZzGe8-<V~L z9|74mvb_Usf9<EeqZrIE<FQ?Ldl%Y!(B74{AN#a-lb{)6wd&WNuEZY!7{zj3dvDqY z)82>n0krp}y`MN`Ns<3`TcP5C4z&cBLfVJWKAQHSw2yR!hdDf)whn)E**gZ3I!d@& zIfnMJl6B<<X&>+K1cxVzF5*eFPafi@IOSB@r#Yh67<Adf(LR&*bxu6Xp~dYvv@fH5 zF71nGpXbE$#Vnn6>EkcQFBD=cPW$2^<r3PS|9#=3eK~Et;Yr(~<x1LDIqvZ@G@kY~ zL)mMEsGHY2+YLjy#+vqxv@QSNJmk5>Id7E{ineYin3nb(v>&2<r;F(QPuh1&M2H>% z)4rFszW<_qze7F$b>zX^pR^yQ{TA&<XunGPQQA*>tsVi>ew?=Qzc>AaCW5SeiuQ9} z`!wxmhPBTsU#a$a+An$S3$$O%Ydzb%Jmh>u5iZWxjLkU}U9?}P?fJj$@Bb8@d7JjH zwBMoq6YY0te@6Q~+8@&X5A6?J>U}9GEcE>Evz7Ko-o(caKk*Rybd-IcrC9o$_BSs3 z1#RVj=lRNm|7*=?&9ZN4|3LdY+B*3Wk4-n(T;zWj|JmU$n)QXXzd7Z10@I-Lf7*W% zOiVDI@L+s`i3lbjn6Q}6CY8@?hXj)lKrk7>q@oY22qw>Qf+<~(F9A~M&jNyJ3Qkd` zBbc6GMrWJB;V6T$JeY}K5rUbWI19nN1hW#%NiZ9MlE3rJp`I4_Tm*9u@p(kI?USWt zwK5;U`~;&379g;Mzo2R@IRyUj&W-|HgP@3u5;O_M5G+lw7{T8N7AIIDuN}upuq44! zMMq@qG6WTZ5rR_AL!kWs7yc?iji5oG{l7-d%yR~U7C}tVCJ2VIAwfsAw(14ZI6VXj zL25h%U57mxU|S$jvZ3sNU`qlsX)S`~L{#na1S=4%M6hB`F`Wcj0ti+a^7s-Ec-9S8 zC(!%<1Z%2^d}PJEwu`Jour9%-1nYTm{h@{p2sRwz8xd?g#5c+J1_YZqzwZ;IZ3{8T zlC21|^(FA92EjH2+v?~b*pA>(g6#?RBG`doH-a4rb|%pNUsg$W7XrQfBUR>Aql>sZ z!5%|=Pp6Dk(bmLZZ-N5|_958M>H7}pp8rjc+C7lqV6XN3FT=DCAGUZH!LbB~6CC9> zA3<=WYVFF8Yl5R)_L#qj97k|G!AS%sc-4ujvP<@yOyKW-TG3}N!D$4i3%AUm062r- zOy|_$zrx1Wqu?Auop}<ROK={6zxElNF9wNRK=2X4g#^zLTtsjw!NmlZ6q&(JN7bXt z2rkz-nAvOx+JULMlHhRy6Tgk%Dgr-q4z4D+##_8r;%fRjhu0I_pxYTE+6ooi=){{; z6wl2B`u@xDTSXL)<^TH$?ilj;6M^6^g1f!efB!SM*YW#uS;rr6B@a5(^Iro0@z3Cq zoQFW~e-b=qP!x6TUj$DO_{U!=K1J{hLGk^U>wH$eHD>whd4e|yULbf;uCP6A@RIfb zmUx4g30@)aZGWI!0FT~(6KM0VJ&$5oOMu}7ZxOuf!SlA;;Ew=g*n0&3QFAslD!xzf z0fBrjqA0po@*((`a2kS72>u}Wl;9VF&j@}d_}tmPAoxZ<colr<@GF9^_3Msy+3};g z`7ObB1V0jdPw<19v%$5MOMU!F&M}G=4H4y6g5L>#6VW2d;2r+HV(=&7R5B(Uk8pg# ziFE21PT<f!0lUl)V<w!Ka1uhj`ESM(PD(fh;berK`MqC7@4_jyRWrw0Ps6E2G!KXV zf>7w^|Kaqu9udw!IFsBMjw1B^znLV>GZQMw6V5_7t1J&^Bb>eHj%RFbP{TRZ1zQKh zxe0rO^AIlX4b4k9AEEz%MmRs=0%i>1f}^heyIq6}Ib7J`Xu?GtS(I>$_UguyLt8}D z<s}IHh(7!qp&tGcE=6cR?71}Ih!>ZU4Hh<GiLm1REvw^3Ea)}DhI9HWKsFGTYQm=X zdiecs7!XE;VKH!_|Nfg?7kl3m!mfOt|ALvkkrG;MMmQkstIDj+<0|y!BV3Mfc_l{M zDu*jLT+!i5geyC;io;b6YDS1n-+xJ!`nV>mncvo8`S%IeCbRHZhs4HcUE(PT*Q4_S z;reuzA>4q_`o1BdId&t$QwcXF+>~$=`)5Y|Hu4-35pG7fFX85dI}>g}xE<k^gxe5W zNNg=0`|)JE44K|EI5MN@+@5fUoKCnS;ZDNMRO!5#a2LWo33nyjop3i1?UAL#_Ym$) z6OJX^TR*}a?&VSwIlhnn<5-;g5gtXjKcR)+0fYw;9w;`uX1LvcIhOF?949=K@Cd@g z2oKjU;^sWbzYQTg(*8i%{xyK`Xu=Z-k0Css@L0m*q-3a#@C5y{fKkMG65%O?C+nwu zjcBIYrT(6#92K5Uc%D@eo<Vpf;koX>vk1>7JVzRG19IOUf2VVvFI6(;0>V28FC@H@ z@FH^v;l)nB#F`+yl<;ydUN+>vLWt`m{0HF;uI(zqs|l}j{2Hqzyteoq-SB$x+a>2% zkladmBcYAOO$FU1jx4`LMfK%27k59{z$p^$B)m&q*nNJ&y9w_ZwZ=_0tc3RxKH|3B zM|eNsgM<%QQF_#`hX^0Gu@l8E`RY;c-D4Vbb@Oo{;(UVebHXPH-zI#D@I}I>37;c; z#%rI=14B@DK2P|96k01YSs=Yc_;07b?C=#gOg{ll_*x!#gs(gCjZu59O!%hbZy8jr zdhrh7M}+SZzEAib;eXUq?}FEUK=@x##QCAxwe!PKuM&RjO?*Q5scPkLfB$FHh||BI zGbQ1dgg+5}<-PdYrM@Bj&Wqm`T~PPGC;Wl%M^Q|bc}&`VrZX|&FCGKG68=f}o5$hr zgnt-=m>tp?kIn=V>5MPps1Z67(wS(~0V|5Z6dKW5=}bZgI+Lo`Mi>8NbS9@WMbX*3 zkDaOL%tB{s`L;8Sdfl0p&Wv=Xqca1Y={0e#8LQBe&QX%Jk?qXnoHMIA&k1y9r8AqF zwu#)CozB8^=Abh#ojK{uEf;m>k{&Zg_&hmIXFfW9B-@#PNLi51LItPu(-}=?2|A0= zS&Yu2bjC<YuBu>Id?;(0{mJh&W9ckKXX(Fk(lJLJMyEt)YdU2*37ra^m`;^WOJU!s z$@!f+orZU|sm@vu%608gx87+Noxov8r{hQ@y7fATo0-$PbT-k{>-6ZPbXKL4(OI5O zpUyyIZ6V!Rmd<jr%|}ZA?cP~|&PsGv6vG@hdy6a6Sw#b9Y0x52&R>nrx^z~jvlg8- z=&YG@ibp<Qn~qGCPKR_X|8Gdg^8W@!n3-}r4D6Vyjm2g~gQi?2ZR$;IM#mVo5M7b5 zrN&*zRvP8rsdToXvlkts>_lffvyG0v|E05o#gA*)afs|pXBSCX@|5uwUAwuRyVKdz zkv(L9rG?Je9C6~_bPl4kkBjW<p4rdg{&f78|JBn26_a+^FL-wjR&%>PP3I8z`JqFD z52y10og?Vj*d0md6gv6~06Ir&PIZo<b0QsU`grgAaq^^UPms9vU14yNj91@J7Db44 z|1vtK(K(CG>2%H*($91xpCD(`xq!|&bk3u5uIR;BoR4jXES7vI-P8-|T<pk2Ll<2_ z=h8xz1)k-c&gFFeN#_bW*U-6=&Q)4cJO7YjrdA!f+9#j|+qHDA_bGgxG^pwZcSUa1 zjdX6Ka}%9gtd`Erf9d9}vdR?RcD+~KLFX<<?i^~qo6bF&2sT)9{=IbWqjP^T@h$tw zGY`^vmd-<To}u$FoyX}s;`B#d)njVHuEMdFJ)WTRq$soOLg%Txiq6w{r^F_m&$;aL zDq8C@`$Zy~L@yCVbY3Q!oX#smmgUS*U($Jv&S!MY!vE5Foz6RS-k|d~oj2)N^7kY^ z4od&Kbl#`)9-aT_0g!pXeoJ4O?E^)Wak^XRd`RabI-k(_SUh=n$Pb?mC(h@h%e*h- z6GhHfbbhDvHJzX6d_(7ZI^X(;e3uWjpgR5oogWK|(#6koevvAx)qMPw&Tmra-KX;h z(L{9qBpOcxk<Zy^e4+`6CLA?3(`Gn_maL+QWv38`CKYb66ip^6!>#Yp6hsZ8DT(Hi z<<V3`QxnZdG>xWGG%eBeMAJF5$4@i^(I^>X!)=$D7tKU8JJHNUvl<)GEXrn5Zuo3M z)VhBBpJ+}M%{*1jO;jbChiDAZyhIBT%}2BV(fnqiMqkD(SoGSQ94$<=h@vhUEk78; zR(~g2RJcuqXfdK?h!!VWlE_T5t;@~1_gv3XL`#ce?s7L0jSy9cN<?K1t`W`ErqkQi zG8)y0>P68Q)P*Kdi>NK4{1&+8&|ybr7@KU4y*6>YOVm@9%ub2?&%dnb!9z44I+kcz z=U<NK2%_bQOv4H;yCTtQL@Rmi%I@b?h*tGbly4PX(dtA7*C1M(XicKE+%~VZR(wq% zT9;^jSGeA&%{#7b1ELLOLvD#|-k4}dqD_dlBHEN_v%HpQbET1J3nEYc<|4b)m#vAE zc8Io-CDO1R(GHGmFSYIp^D5C!MEeo#OtdG_E=0Q#`Ghhl%S+MjM85gYmp>^SOSHFl zZLgu`eTeog6v|+Woc)Qk&nG&7=s==_#F^VB;vqzbdF`R&q=*ieRfR*2^jcp6qN9n9 zDcCfo$GLxwC%TX51fo-kPIO~VB07cW<RTh#Yvupbh^`_!o#;ZMGl<S5I+N&ZH}WjC zsM&FjmM6<vviv+E3)=J5qN2zs7s&X+hZhlDPINKRr9|5QOG-VuOtaOBwk?USAo>T< zm6{_irH~fS)kL=uT|;ye(X~W35M4)fy`*wBS^H0-8%4<nNO|C9qFcn^Y(%%JN><rG z+)Z=`k?&_j(Lx}5e3}s5<81d1`R^zCkmvy-i;V|~o*{aO=y9Tli5?}=Z9>jzkm#|Y zl!eEWL{I#s>M5e9|7W3?pCx+HrJf^tp2#=<d5>h(OGMTS%m1%PiOu3-cE48iT0E~4 z8GM829go;IiQXc5TOBbUnv^{Au6O4>NfoYm-y8kF;eW;EjS_uC^b^s?M4x-rCm!UV zdUEqy0LA<lMBfm7N%YlF>T79mB}Cs6eeaEaH*D(%q91e4;fViCJR#99#N!eDO7uI? zZ(=C&hUNc1B|A=MJbuwoJVDV)JP|R56Hn}Lk|D#S#FIN^vYb<v#8XI{&Fgq7;=dD5 zO+2?ILOc!ew8Xx>kEbJ^-VHGN3|>3R;fx~M?kk>oSUZc;XLV?)-uP#CI0x~Z#B*sH znutT<d5HHQo|kwv;`y{T#q$#{M7)3-wxEpko)Rxi+$0`NyfpD5#D61Rlz4ICF~o}% zZ21_)nl<^|r6I&ix~iq5$KoMghPX;RLR=;;DF$*+s_BXZ#Zx10I8vA2jG>Ti5nE5& z#1U~o+%Y<Fs8KUL233rSyTpkmrb*=qGxk-$vO$~?uRz=<Ue;|JNWWaP9P#pUixpiP z@ruN&5U)hM@?UH)PTQXhBOzX$*p7GBAhvebBwm|%Ej5}4wr3a>Z5@x-Q=rD{6YoyE z0rA$v8xn6$Z2sAlcw=He{ITg%^wd|wVc&_jAl{OAD|JV$`|1;KL%b8QnY07(cEsCz zt@g>rK)hqYX?Z^0nOJF`*zN*yS^aBdj*EYdn~3)$K8tuP@nOW4{7voN#0L`ZL%grX z#hR9T_j9<v!vkck;`SghXsiz=K4gd=Dn!G2IPqztj=z)m2;w70ZT%18qlix=KAQMA z;$w)9)jyb+yT)8#zqUtwJn;!C+V;k_4YqHIPa-~r_+)Ke>{@&Q;!`DJm%Ms9@fo@` zvyP~hGc|(h?Ah)L>&Q98=X#IMb9lb!Mf_ht{3-E;#M;RdU*zy&;!7O4RGgw;=J0aj zD~6OSg%nDzBEFjV3F2#rZy~<copYT$ERS7Jd;{@~#Q&5-%wx9B#^&(h&fi8vuDg}^ zF6Y0^q4C@yW@)%nh<NTMeu(%U;`@p3^{V@Fo?J8W15SK!I9Lx8KSumW&O@wQfFb_4 zbNZfEO*~2b60!FG#99J~pCNvM_*vrTB%;=z7gFFa3MpdgW#ZR~U&(8UHKU1NBmQ^M zoMhi1{($&R;&;6EE#kNTQu{7(9+vM(N#Qpw0YjbtCH|23W0(C%ZdVhZs5a+Okbg$} zImraXUwG7gN&K55UlD&z{3G!<Ui_B$dq=)AC~<}84>?Z!6Y(!j`FU9N>o_*2|L*V) zhkptt<B{ZtKSOQFgd`J@OhYm;$>h#6i9<*xEz~BS|J?wRDM+R?2IrZIWa=C@PLgSd z^yx^ZCz&A^7g4n{()%~bOeFUyK9iYAW+6G3WLA>(NM<7$kjzd}CYgg|K9V^}<{IZT zlDXx^WFC@v|3aLfWMQW-K(e4C3#ryFn|H}*lE0BGLb4diq9kK9*KE8Tk}OW*r=7Fx zk`qamBw2=JDUziNPP+@RJe-V>lteMkLbgH@kyJ^V-e`@ap0`V)BOoWX9JWb9l0dcN zA|%mT;68~-QfEsXc1e1wvdc0_lI1u_f2ea=k~K({8`762S%G9#k`+l-HX_MNs*<-? z$&n%FY9y=Y_)yiFB+CCJYdiEtRb022DaraIV@Wn3@m!j0NHUD@WMh&|NH)z?Nv&Gk zoMcCmEl9R?g<Fzr<;d0~+vKxAc~4DjClMjrlkA{dt-@nFk?cmY^RRXo=h;=o6(?|f zcal9E*;B-PH=FE5ay-f2B!`gfLvjF#-vUVgek4l%x{4+aBss`69Q+sJp(IC>9Om@H zNsc5rLbd;s(*ECTeg7}b$9nO&A^ilBQ%QXPpPZD-lAP>3r>H3ZoJMk%Q%)y2W5{#n zu=Z@PIwz+)|9QHfO3o*_gyip9Ba#b9E+)CqW73kpudR7VtJd<r!OKW)BDtL8Dlc9^ zV#!~eB(`dJ_D-%Qxq;*wl51tZs;(o^F;32@=^)}iNp37Cvj1k1yGd>#xsBx3ztC?d zxzqXY5Yd#_l9Ak{HBnN&`A_au(P}lD?x!~+$pdr^K1lKz$wMShlRWH#k2rkPIUgg@ zhM(kd*RR9#p^_(^;VFY&^$f|UB+rt3K=K^P>m<*UyyQGDIDB!)`7+6?B(LN}uX+s& zB)4tI^9IQ~ByW=V`HwXrv)>*z{Vqw~k@trD@2jfl-G6nqnS4m{3CTzDhGgvs$US4K z`~=24O!7I&_at9<f4_A2l{zTzeNFNW$#*72@~w!ue!1cYx|W%B{zLK;-3ds3Ci#=( z7n0veekJkEe=bsJ`$Mb0Sz>Y99gpt#nv8at4c!UVL|6a+PIqFulZbBV+MwM(b|<Af zHQmXSuDg@dor>-h&OfEJ<vlVe*=bZ1GA-TdWU%n*9nRozl!$6^Cc3ZFotf^sbZ4Qv zq!VX#I2+yB=`Kij4!UzW#g2fs)t;?8H{JQ&jCttJ>s9j^RINd&T_7*gU5M@?bQh*O zx?pe~x{K0XjP976-&HN{(Bj8>=XV*dknU1+`*fFf`Z9FebVumcyp<B&a;|}Hg>Kb& z@>b~9>9(AwLAN=MKCBH~TSzyh>*p%n$SJYIgl;z%q1($5r`r+GIQ@em!?JXjqiY*` zGh257bXTCeq9cC()3sXwNzq+p*!pU8S057BaLzRyuH|rThqgf)*VcM;ucNy@-QDPJ zKzB>mwjte(=x$DTW9Q$*iJLm^M?i)5w#Xax+O6pB=*ZS|w{cEyLbh#3cl*3Wx;x|| zba$e=3*DVnEVS*KBL?a2PWK49d(b_Y?w)k_qdS)FUPC2&)7@t%weMe~_NRM5&f`iB zq<c_Nl<N+md+1QZVRR24SLMt{(mjjrQFKqGdo<l+3bhhEmhN$MPojIgbDrSv#Dc-? zr>i3%x~Jqsx~I`S{V$fBLHEpY&CxxZ?v-@Up?kg_ZFJ9dc%JS|rR48kynyZ{bT3p& z>|UffsH%&l-*6Exb$FS>%N<@}&}IK2Ht}CY_iAgG?lpPqbgxyFDA&_{lI{(3^$eHp zKk42`_h!fS7}t?o=-x^9R>yA}67#8jhY>|7IPa$WsI%Qe_g=b>(7n%#_bVlKA5ijC zD-Y6rXox>74NB>GTaVGr4YT||E^?k2);{IpPt$$gk!R>WOZPcx_@50g(0z^Wi*#T5 zi-wn-{}sBg7Q~`CTLtoV-=O;o-8boeK=&=W@6)y9Z~l2_)Sh~*K=)m`@6q+sX}hhn zyF7z_Mnw0&bibkdA>GgDenj_Ex|aO&B=(8M!qT8GH*`Oz`z75kM6^pj`AStvcVBCn zupMCcTe_C;zoYxTl-NC{K|8_j{z&&{=ln?`c4la5rQuh4mbZWNs^2|V|3Pm&x_=g} zSX%ClPtQ+&%=x_uMYp!>)}S{ry(#HULT@r{JbKWZRL=C3LLTc)PHzf5<FHG`spyTO zH#NQK=uM**d(&#{@&(R}=}j+_dNYWa4~lqZqPID{nd!CZ%|h>Q^k$_uH@(^D%`P9> zI$}#(Zw`8M(wi$Us&}?{_2!{Bn%=zDUwZS=Tae!T5)uCbxh%bf)FV+AmaGj{ZxMQn z(_2*Qa&L^*wVodVd0X`S7T}R9opVVST*~pK={4vrL$6A2gkG6mNloMy+M?O>^B*-- zbE$e!YopU^x`x&`etH4D73hWZmZ#Tow?qzOdKtZhUP`Y^ucts#{10~v8m~URfr!GF zrMH}7zyn5XMpqwKbZslqTaVt#^j4?0iXKe#R&}`AkbhfxYtUQUp7_vPlipgQ+hrjn zC3g5@j$Kz2`D%UFxq&rDZ$mXI#MXU-8`IlF@!8u{;US7I0itX{?*MvR(%YHdR`hnH zx3%ol&~HP}Cqi#KdOH}Ao-F~|HWW}iJINSXz6-s*=vf?&rRUFod%L@ldIUgE4}x>G zveq`(a?alL_VI@Hb>;hsL9OgBM4@;fy|d^YMDI{~2YY7^QNK)sx^Ni16I}dodPmSZ zmfn%{j;42%#I3n}8{a!d{Qh`|-f_-<ye6QmI+5O~-r`C0PL`BfKShXnNfw^wY^T#Z zgWj30XCl?A>TG%zIp@&3gr5KZd+$7Y7t%YQ-Uamjo@>+Ova2xoA`j+^WsK(UrSz_* z=gGf!IlU|CU7?I&%<|_y=v`G53(7V0{z>mzde=LHKmT=pdN=$<@J6@!rkq0W7LWE@ z={-U3HhK@yGvn{1cZXbLm-=!Sz5CoVchl1&V0!l&RITv)z3Ksn59UP2AEx&xy+=gx zBuVcvdjF#LxDt-bN{RG8N$*7$dCK9_^qv`tJnNL_=siEAydYUgy+rR7dM~SJgRWpR zr@fZ54Vhmj{V%;YNNonaNjiZC##{8>ruRL)cj*1s6Vbc$bofKh4}yB{JN`i)A&!4Y z?<+?>qW3YqFX;LCk3>Fo`ezP5H|XyDQi#ocgW~y`-ZzeXJEZ7cAgBC5?>BlsI{uTx zpB?_<@K=Mn3g+LP_=m$kNyihCj{iS~bVAaEbRyDGq!W|sY@c)zhmcO{$Ye?v>Ewl! z&GB?fr%y#Xts_%AoTg|r)jhsbrYD_2cy3HOBkAI#Gm*|mIy329q_dFDPCBbGkj^Hy zf^!ZRpL3k77ybMvoyYNcHKAnc{G^MLE<oz1K&c-Ar3>k~d||_AXIo^bdCZXRZ$(PO z5~RzJ=GvAdUE2Az1c=i@rO-1%S|V+d>Jcz$g|y*Fm9%Eer1e5%*bA?1k+w<w@TV|1 zB-Qg@(#T;vPKvZkx&mpBba~R0bU>OZO4Gi=)t=Gk88}^5F_|tW+g4B}cb*kV{jqPl zk`&r8iv(A3xT+TG)L)_&aShT3NY^AipL8wK14!2<-GkIRwE?Le{+ROhTyTA@U#8#Y zPP!rKcBE$Z7Ni@KZbrHZ>88qip5-(#)v3*8q^*GImZV#gZY8=IqpEF4{pFL~Kb9EN z?MZhb-GNj&pL9oqZtBkJg5hd+SJK^zxtZ=R#HuVusYiQ~j&)=&hkHBJEdZ(S|Ap-5 z#r=yNOL`#bd87xCo=bW#=?SEVkRDBXDCrTThmjs$G?C|@^hna9WQlFUy=l^8NRJ~u zR-MWdnk+wFR;foPlAca_66q<VCrhw!%c-QNNrPE#P#!*m^lZ{INp&KW6Fp$gDf(_i z%k$<;)1cY+chbv9FCe{y)c60XAO5EoOV-E85YkJB`Y$K7;uWN~kzPr9Bk4a#uOq#R z^cvGidbKp$DxY2}k-R&iUr%}i=|45BIZ^$(iS*|D@RRhGQQ0q~cK+l0d{^R@EB}+) zL6G(CF4B8#S4?_0={?1B5XHcK>YeEK=ZM?<An8M-&yqe&`ZVbyZr-D$Pmn(5_~SBF zwiPG0j{EsfnxFspragT|o>c44k-kFuJn74%dIU`RBI!$tRa+>{Y>R3enq8lE=2uBy zv+yAOw?oVS?>h2^Lt6sg^5))l_>MuNJN}*!37UW2w=i?uUjb6!eMoi)=|^Ofl73A3 z2k9rIKaze*`aS7qq+gPL?go4zop!Kn-d1AqRU`eH^c&LeNd54~1}HxxU0_wxAMzo# zSR(yNxSI2Of%F&e?5_@gBmG@3cACQvu;lP3+4yARDX6UP25sY-O+Ypw84BHOBC?6e zCXq4YX0(RbswN{_lWcObCfO8Z^ONcPhiodcImo6ao1V<hf3_u?mMnky$C7|{DP%K{ z%_0l4QDieZGLxDR#a{s}@L9=bGosUH7h*A=%}F+o-gnC8BAZ)McA3Moc?}_(FZaLW z3y>{FwxE2HEu=Wi7IrvVomFuWvPB&kBZ@nLY;iK<H&sh{D}N(fQvNiLN&nIs5p{nV zImA}ItVC9J=U7iGWHm)^R?S7o>SPTmHw_kGs%nwNWNoqzS>XN&r94k2vMLh4byj#n z)+JkktVgEPezKG-6Th28HXvJ`Y+179a*8QbZPAw%$yOs<iEL#NrEnFpRb`3qR9)ff z>XACKhE~tpt|wcI%)-Fl|KEg6%QTrb|77ctZ9umEs9Wu*%6F&PhT1J>R^`9mX?e^p zQzGJ~YEh%VIoZ}^TaayK4UySfK%Ty=kE-2<Y<oA%@a=TQSh#lwvc1T5B-@>ACo&su z&;K@;Wr+>9=YMNr^NxFU53)TK3DP;%XSCntWqXtDPqq))eq{a#*eo}x!g~jh9Yl7Z zV#X*YZi`f=TL3rdP_n1U4kJ5<>~OME$&Mg9j_gRXqseUlzwM|q*O05#=rJA@$L7hL z?07Q0=Sg+~*@<dV_(?)+I%mH5H%rvqX=G=S=?IAI3|C_3KgI12+1awHh@5lD9ws}F z>=Lr`-O0B9H>nHAE++H*pIxMMXR&0q6@9#v>{_zR$gU*2oa_oW*qxv-{s-ALWLK#b z8Fsb&Z-VY6vg^q1AhVD#J8vMnk?f!58C}M&aJnh?8`&*nw~B7>^k%n_>7-YkwJ_GK zxs&WZvb)Ic7LOXbhs@vnF}5Nn+)wtPNs&DuK{G)59}>Ue>gFS4k7_eK@9AWZkv;A% z{TJDjqvpSw><NPsbV&9z*?-BNAu}b<lD$OsoKNTHU9E5a_pk)@;;22Qw+HUt?#p@` zFnfjURT1SJzY7rC>tt`ZRSI3QH=X}2vbV|Jb2Hu{dskhyOUsSP+Vwu!2f6VsYZS}> zUy)h<S9&M=nCug|NO|v5vd<j(Toju`BI^8qDEl?pw@&;<IyGUxBm2d};Cr$k9Qo1V zPh>wEA|*Z<UFug)o_Y#E_B+`h_AQ2#Td_YL%TGgpe3qS@{si>jr#~Tf*w~+l{!a8K zroRULN$8KE5B*W}C#64??C($J(4?ktWJ-g&e1g-T+KHxlTKdz|_pMPr_a*D+KQ^rW z8R^eSe<u2~(x2HyX8DVf*@TOKc87E1RrKegzYzVo>Cfl%dFaopcK@e;e)<d0Uoht% z2k9?Nf3%A%LVwY5bOl&{G5Rt6#p&1STZ?7-f1|%N{UyaF8<xuX=`Z8O5&Hi8H*eG- z{fbvr>DO{*FE;20j_4Br`Yng;p`$`C>iowM9RayL3H{~icj@=(_q-}~nB@$P>j;Sc zvZ4s_Qy?KL&|k$VE7D(SSnH1fRJ*EIt>$ob)fUFDNq=klYti45{@V06qQ4IP^*u<| zrN3Stib~`C4HWkM4MnlLDua8RNPlC8o6z5s{^pKvrU+Ek76x<N1-DWR+XU}#Lw|dV zL;B|b?UV{^`dA8*kvlkpo)ma-XZnZH--Z5IFZy<?znkN`JKV$Jo=OomJNkRk-`^>F z)8EIN*q8o(GS$Q0DF-;ifd(Bpi2lL!4|V(y5q)lIchNuGiAT8cN76rrzVbi)ql*M( zI+dx6avc4u=pRr29Qr5FKiLJ%1D^b?b<2MJQ|O=N2At{&Pty$T`-?#RGaNrtP1}yT zf40^{w}k$=^e?7=9{mgHd;ah1{D=Mpn(P`xKhEl3G_>Rr`d84u)VxanGWW^lT1t#l zV|OL}e~cRYh#XRk{?+uKr+*Fof6~8}{`Ic>I&F!qYqs_3-=HSs+Z*XWOaCVNkI=ta zIj4UM{rl+ON?-Yk{%smZ4XgJ5-Xp#LPya6ZS_0_b<M7_R*75u4KScil`hNIhR+*qw zJzQ8Q{89JtWAwGdr~f$pJT{(Cr$o{If7D(Uflqt!85J!8RrQ>@Y4&T3UZDRf{TJ!K z>_*yC0MWhb6|La54er0@QfBHKT5<ZXE3P~n(|?oxTlC+f|2F-1-M#O~NMFdjXe+xP z$I0^_FgTk2e;JsUK4f6&?jr_M)Bl+M*YrQ3|0VrTy{*q=txWyg;TJ>8?G@1cG}6ZU z8~We6sfPQ5;QsdvEG_>)|2H3+A07Tg|7ZKp7y7?A{8j(|Vtx?icLw$*r#ayd`hSXf zFrGs_|79?N!wDVwvxdRMhO0$`{s@@CqztBHFj-DvFuAl1rYLx%WU7MMhHT)E00z@C zn2x~=45lwO7}isJrEoAxF10QXW@0cOgP9r3%fN392D37li@|If4l&HmU=9Xz7T;D_ zim0Xvo59=;b^cStiHP$vSeU^A8jFG6|75U`%(GFp6VbtF28)Q_D4MhXVK9cl<_s2N zupWcO87$AhT3m{OA7T%dl%N@`ZZ6FrWUvf_8iNrA6$T{+Wi@RI^Gr3Ux^jIX!l2He z#h}5!KmL*@J?{<L3<61ckh|s%gN#AMpvxd;kjPQSV3*CKL61QyS#y_Na&n)+vJ3{= z>-udVgXLs^`+>m<3|3;WqC~tE1}igIlffzs)?lzI10{dg?D^kxTErSfzFLdH+QLnn znwFy&tgB6O!LYuy!e9di8#36~@nXZKrD3p%yM0pzcKDy~GfjMp|D)<GpeDC<1zi5h zxMk*U;g)gB+<{~!Gs%SWm*JL~yJco(X6C*!!!2`r%YALP%#2S`l7Ihq&Kw<CmSkDB zWyf|hG<Kk|H4VYHkv65Vtu@?s+6tn!YUS;%Mf6CE#*Q?0qH!pVokb6gUCfwWY3xJ8 zmg{QU?lg4&-?H|kv6tDucS$jPUmAy4?tV1(r*ROC1GICh?12ImS7(kjcyO7ebkV7` zK8(iUG>)cmgfSdR<0#D)Czt-&XEU?ySQ-z~IF82kG>)fniR98afyRk6&Zlt_jWcMR zY{XM&oMy<WdQ(){P8X=LMe#EYo<&2K{WQ+jEH&d?8s{l4EmH0?G%nDj@?1zm^%#D! zB2pu5#7j-^GV|o+G_Ig=9gQn#T!VZ^qH(pVGQX*a4vK4)Qni<O`vw}~q8n-4PNRDN zm&VOBZn1)HHF%rKiV`*B4sAGD{5SLp5RJRcfr8v^x%R?x<6h-g=KE;a{(s{Eow=&! zdx*wIG#;iQqvjFoLXXmTipFC!bn{1T(*b2?$Bidds;q(%pQiD)^}}aqJZlwyj>fAr zo~Q8=jTdOVsBvS3^YteiO^ugnyrQ@e#q%pj8@)#3O&YJ$ctid?R|k~jO4x7wm&RKq zuHX7o&Ua|MTlP{K@6mW)nXOCE_<+WTW~wxqO(@#UKBn;*jZe&~ak?p|4f?5$ZrQ|W zd``nQd>UU^E9fJ@sC-HqU(=k7#y2#6pz*B|wVL12_+D{|!xiO6qstWVGtCKU{9?&p zY5Zl#Z#48GsNsLm(5s|^E7TUZ`=1TF|Jj_N%92u=6VaSl>)xD1ouiaVRZ1z)oLn11 zsw}l=PNBFoXmcu>7toxVrcZMknrqUWmgcfFr=z(L&FN{*Pjd#EGt<<=UlW<h;3!Q> zmzJK>oQ3ABH0Pl?oA{IF?CMoT<}f&?!MP01EwCJ_H0Px`-*8fT1<eI$E?9*TS-CYA zrnxlDMQGZxzqzROOfg<J|7k966<mVmQZ$#;YFfXdX&u{=H1+&fYbrBKb2*x;(p;YA z$~0Fn%8I5(wt#GYQJt$)delX$(OlhZ9-{$PhDK8t|7vhKaGGn;T$^T_<~lStp}DRx zuV-+5nj6$?w*GH!MAH`kGRB9aakF7nXqp+e|1Uwf>Cn{GK22AbXHDDxw@6FVGkVYb z-&a%Bs(|J$GzT<AB&4|o&4}ivG-H|?+i4~=Q$sSEa`<cATPs^AE>)BMti@UIZ*H#M zupVxuY-w;SgIm+wMi9fdHMpGy0jZI8r0osvKyyc$I|;7JmA-TBhh1qNOH-QlV4Azr zJdoxdH20^uC(XTS?xo#Wq_orSqgz9=$=Tf3;C`yXc0Os^Q$Xd7gEVe5$7-%nWa-#E zgyx|%57!XXJWT0T)$|q+%_C_ZWqvrC<}s!Blt(-2aWrL&98dFPnkN|LM9HFQ`#)lp z;-}D*%^&S5G*8pu+&o>N{$$PBJd@_xdjG#^r@-3Z&Y^j}b+dD6o~LZ`Vz`YyBVI_W zLGvP--_yL9=2J8;q4^liOKFNdm(jeP=H)bRpm_z&YiV9d^J??wRcb>y=`^n?op1E( z3|_B3lxeYfqa|;mc?->(m00=qR+_g}Jy80gdixG@&Yd*n@{c|vsHrkb%8L@syJ<>| z9-?_K%?C{3eFk+3P);rAK}AeI&4+0|QsZ_7NG3{k@8dL|Fyu*rYQJ_2Df)AoPt$yh z<}=om&(eIJ=5uAwG0F?0wh-|bX}&`9C7Lg*auYY3U!|!xf0SR__jQ`~@rR~<{DG$a z9h)*M{x(hB`7yS4X-W&eNArCZ)Rz4~5Skw<gNUfXAJH6V%pY50ePXi0^Qng4=4a|a zVb&P+1x-EqH9cR^{8|T;w*EIXZSh~(rk{YYTK_<6Nt!>>nvLd9w4|f{O!GIIznBfb zs=*?nJ?eK_6Vv>I)&w;Fr1>|^zoZoXsfBj`M}~=5-qQ15TKXXf{gpgQnbdM8qct5Z zXiY_Ha#~Z$7ZPaMBS8J-1X@$mnwFL={>1}Aw=7!I)0&yq476raH@0Rh>84?n`pP(I z&0>^UOA4*oY0ar)ur-GoBTdtqi`F8v^ztXId1x(2YhGIO)0$6wr8a9V7Es(;M20P` zg=p#ezsxlTjsLV3qcvJvp|v=zCA2?Cca=UMJ*u@7tyO6WvNA2Pc6nOM&{~exvg0+& zbRezM(rZ_=R-|QLeikJXC`!k+R#6)?cQslY&>BN)O<H>YlhzuQF=DXRPL2S??6qmF zLu)<5<qGKk>TKIu-;|X2hO{;+{a`$@iV!I|0=DPzR+H9&v|6;brq!ku(Q>SsF0GJO zhn7c6rUNla=Wbd(ofKMqT7e<Hu6g7XsWqrVv0PnKpGy(a0TS(v>Y0?*7PK;2o72k8 z0|l*3Y1vz`(&f~#djChNS#=@l($dXZTUypuwa#s5?Luo?T07C&j@FK}?A}Fddsz`# zq4xf-baiP;oq5G+7XQ`fyVBZ+)^4gwle=5)9<=tfdhJEa7XPBh`Y^41Y3--&E1g{V z_cvI^f2rL;v~Hs{mey6Y4yJXe*?EZBDTN+J>l|8#(>j^f5wwn@btJ8$jpry`$Z6G% zp>?e47kkRpLhE>1C($~AmInW7<sb}F5%te0w9cY+DlKW>(`cQpb+krNL;`6`jsPsO zwa%{SGKyR0TGn}5gz}tk@B)J}1zcpv#k4Ln<Put!s!3IUzPv`Rpmk-58{5^iZZYp& zL+e^YuA_CMRqA>hJ2$A!<;2vw$wuzY>Q#*`;v9Vh5C&Se)1Hjh9kgDhC5wN_x{KC} zw8S}2(7Kz}W3=v}rIDPLJ_69P_}{vp)&pkAgSCYZ(R$b@kCc=O&OZSydjuF?sV8aG z=fACT*gkEVpP^;<KU>e4p65#qv|dna)pajPSEprDfLiiOO@EEn-?Uz*^$jfv3m?&X zlh!-5>?BSF-!k#HRiOs4cNJ0kd$iuC^&zbfwC7u{G1w%i3?J8=pU@gt<DZ)BXS6=2 z^@S2EuYPF`v?qer*Gg0k-_rV-)^~>M`k$5^1hjtCGjvV<Bv7AgTDtx>%C820qxE}D zktyKM8vm;lG@gGHw&e(5LPI91c-j+NauS2K{+E_*Lwj=Tv4T%Qd&=shN#a<0Djm7) zscBE6{Z^Uv{*QL2_VlzRXiM%4v}ZJACWE7lQ|L3(p2aA$)|A<3&u)}C49;nAt}<7f zOtsBJdtTaI+Vjy~lD6#s3vmI13mRNVpdkwzT!i+bhAd`qv_L}^H@Ji*)fG$8UWfL- zXs=9rY1%8&UWWGaw3ns5obt#xwNXG@<G)fgMoG~t)rLv%m+G%ddu`gQ$q1r7#we@P zUX!-n{}d^S2JN*>m93vO4v5scw41coqrHKgEz(|J8Ore6-q1?fi1x;`8?-I>OB6D1 z=qjS!qV4L6tKAkNZAZ?t)I!BOYPQ7uwnzJ9+CAEP(eBeuX#2Ed+EP|z1`Mo}Q0pa{ zH6YvGqpSqlDeX*++52(YIqhv}%i>>bmWpgads8Wb_GYv<*SIHaWdv?-NqcLnti^xj z*~S?3OB%GdqrE$AQL;1b?P>2wTfhG^>aLX)%0O%HR3>TfV#!@;?^aSO9(Cg$=46=y z?8b6?Z`vo&-iNlX`DyQ~#i^b9(>_ciTl)ao2htvE1{_pH=Jvs~4^hqPu0z#bmHmgC zLyn+*lxaIsv$Vq>P5W4*98)$T?c-=4uWJBtUAdNPpQt`mx7#Ctc9K(Qi}y~YeK+mX zXx~ixblNx3w)5ZinY1sbeHQHtX-oXKNZUTgj6aw5c{SyHqg<d#?Xeft^oxydSAg1= z(!Q*uTaB);tSf0>M_U*Fw6896X<uW>Yc*+si1zigZzz+rZ!C%GTlLH>v~Rc0b}Q}M z^k_h8s?Br<ZQJ>8-)TOv{U33ZOycVBduTsO`(9P02H!{f{u+OPw#9#?KScXsE5+9T z!mK4erj|%4ia$a7E!t1gevbB2w4b3}uG_`2Pb-glSoVKxkShK>ZRuk#SOs6Ct<j$L zOSG%_Z}eAbzd`#o+OKQNnuWq<oO%SH-9zZA?QPoc8S)P8chxEzBedUFL>WGy{h=Y6 z)Sq_0kLgL(KA}55?Qytb`KP!tOg_W8hW6(;5*EI|nS=J1wEw34745HO6k8wrhW3xN zztyCU>+cMHZ}11TO^H8QDL>Qxo%S!Zf0N!wTjReni2v1wKWP7DHTqMM+FfNrRJMO` zX2+R88^xJW8Jvl5M&V41Gqoir!I>0ia>FOXp?m<*m9wLVzlKbSGgXP#lxd7UEzWc% zIK4qT)N^$I2WO^|)9{%M>ir)aJO6cN8!n}+1<sr}b5-NinHy(5t&}s5j(TTaZ3u}Z z&ipu{VF8?laTdf`NJpa7RDQBbaTdW@0%uX2(Kw4KQCi1xaq1mNXG!hks%ojyOE^p8 ztcbG=jxGM>R)B;)XE~hZaaPdSSO+?sm2g(UvCIFWR>Fv!mpQBAtcEj2*|c-o3fWl$ z=RBM>aW=uxLt*VO&e}NZ;B1JqE{^W`;H;+$T4#NgElpM8MmTo)r|hUQik$||i8xK1 zU2s}BQqwk0gyWb$UDdCS)gxe>E{=y2;OHNe7^QE}jsVJd>kM=_J7LWb<K)JZ7))`p zGRxQsAsXE_ft^ipHnZgBO0SBr%^zngoE<D{Yn*!j$JrKVJDlxt>~yIVF)8ER5oagW zqn7Wih}L&koC9%oGve+B_b{l3zlQ9Evp3FuIQy7|_7{+~W}N+T4p7eVrPvX$GZyDy zoTE*{AvlNP9D#FK-Te+%kur8UN7`UHs?0L}V{neukmwvI&?v_nJVB+Dev&ou$vAe; z-#G>6RBcvmP(A-OJI}y5+bCxmJWFMj;T(hK3e=x`BgHu%=L(z)a4yBU5a$w{i*PP3 zFD`0Vu`L2C@iOh<>b=X$zKU}t&Q(g3xZzwqEP`__&WmR1bvW1KJcV-u&Vx8N;yi#O zF9PVZ7|zW&x8U4`bE}%Cnr}0ByTLnf><W-%DYF)B^t*BH(JeUVUW4};ykGa?gh8Nn zZ=8p4p2T?==TV$T%CTv6e+=hweGJ+7cO2dS(QPYfKB35f(xGj0iu1JD{|wHv+6wCS z=L|k?HrV=Ki7(-Nj`K3k$2c|}IIrSJG<yxl;=cq9*<RaA*xtl>3+KP;b{V|d7H{Kx zi1QB4dpPfopudk}mw$v!WR=s_PCAZ0s%!TN&Zjuz)c&fzpQ#2*;(UR-1kRVZ5{<vY zoe1Y^oS$&M!TAyATb%E4zSCOEPxb#$A{9lW_s=-LOA_Z7oL_N%s~DsRCH_%z;@BCn zBj10J$oV&pp8qQD%KpE=3Dv8@?@o+66YeCqQ{hgEixDTQ`n)nsj;otLxKpYI`H2ng z)JD<$AKYmTPG@j>gLcW#ol$UYcjeK|AKaO7XT_aGy;140kH3|cyK~^qgFB~j+V|hw zxs^?RvIcYK#a+a*=EI#IcOl#ba2M3vQd^~DVWp^ri{dVhYybb~j@If(7ZNCJ(l^{C zao5LP3U_7Pf8j2Ns|DfOCqNZhR`n?7@<!Jlh`S=Lt^6fRv?<#vxNG6Aio3ccS2H+9 zpjKR_U3U%KHLIlZuZ_EoCN*naV_r{_^3z7y0Jn#`A#MkEBit75#<&gKO_V{poN8!R z{L(kvHm-~7C`GC!uylp8b#c9lQ)Y0tkDK87xFN1x{!|`~|8)aJB8#gJaYDpRadX^E zb1TOdxSQfyXetY;T6S~XOK`WqJsx*U+<kGk!rcXTYus(EA?y)ACO&sN+?{d7jdlyj z-M%hsN8FvX6e+sgRTEro-W7K@4M*CVyW{SmK9>Qds`k|Td+uI_>n;%PKB_^U_uc() z55nCa_W%h^Dx$duYOeO8vABnt?7>Dq#IFB|Nr&Mct~}Z<N8lcZtA7E8dlc?5xJRpP z;(t-7#A8jft^7540`6(JC*s;IQ1>L<la*hzN$FasO#vdSme{=D>bs)2XX2iPD-}5# z_k7%Q%=72so~N?n<kHV7bwNc@{32u1E1-s4ihB$0Ww_VlUXFVu?iJc<QncE374CJo zS6fe(#lJ3uaIaPK)RX$aXp|dpZ^XT+q~qSKdxMqhZpFP9_cq+SaP8}|?j2SU+5fR+ zm5vM1c@OU0DkWA4)W>9@--r7w?)|t=;y!@;IPQbEkKjIJxet%f@Tk>AzyGg9gSbzq zHnS7=Dct|)<CXg~?lZOhy2DwQ^*o)Ma9^M!ee6YC=_D`VzGt<28TS?3*Y#+?ebtPA zO*Ly5dc!QS`~U8LadoMW`xfroxbLVL()~6&NQl}q<+<2>-#lqA2)K6t-})HtN4US? zevJDS?kBik;*Qgq(ft(n3tWr;n*3aQj#kPZv?T&BCboTz`=c>`BbCMd*6{Cezqh&z zMQ#Dv^M(79W&Mo%EAB5!EZb2O$^`BHPDhOY!z%bEomFuEqBFVG=x^MA=uD<~X99y0 z(wT_P#A=DuQHEQ`9;iE$YEs##dXZ@EOhIQMI#be_mCjUjWCKSSrlvCuof+v&tEG3Q zGpOr-%he-7#WiatI<o&GA~RP+$+BEJv(cHG&g_;uhe6r@v3-orT(zos=*&-NUQ;z+ zNi<yce@e~;YtDt~EJkM$I*V3p+L5H((R7xfBX569LT3r>X&rs}i_TI8ZHDUDa1(_} zUzW~_#=IPz<xPXFK;)4@wXLLmptG_-H9+xI=?u|XjgC)e44n<>tWIZb4P2cy=*XX+ ztw3ijop2>eD=w!n_Bh{Jm(F@MzP|Bqpgda2Ms(VAWb<F}P3Sb~G|DVvv&)|qr$eVh z#~qQ|wNmW;-;TcjYa(|3tEC5Y2E(0@j_m(P5fPo3PDUpwv*^eXu=P@jIUTzK+OaF3 z%DgF^E$M7VXLIGLoNOD&n!6R9ZRu=nYPYGBD1EyT`1W*mq_aa6F{Imf?B%a=G<9~N zb3C10=^RE!+`BiO-L<#N2<pfzAk2Hx*-JaW^i>IHoqgyWOlMy@W3Bo2qqDz`f{t$f z(>ajNL29Jj01+sIMf@h=w{r-cLsf~iqYX(qhtoNR&JlEurgNm0sAeCfW|unyDs?QK z<HVBT(MRV5Iv3M9k<NK^PNH)zos;RDMduVV^;9~i>6%;$l1m_+)9IW+=S<Zpqr+Oz z*v_`H&QY~ujOdqW(>b5cg;whel%j+5B4v=DcCAb3Tu<jxI@i&;jLwyGE|=+y&J~q; zYVB3lKd-j>USr<4RywxT_kZQlzzV%Vdx(1V#xk7JxtY#ibZ(*Z6`fn@+(YL!I(qGg z&h6D#VLNxy(R;9T?kbC;WA{I+7QC0v6LjvQ^C+GB={!P5?|;&H&<3WI^^h5+M*vzK zi(_;i(_C$`$Ms(WG;};kN7w3fo}wdFe#xYsrt=IPTl06GRS_M7&kHm}rhpf<j*>J; z=Vdyt)VZ%3&uf}g{r0fadD9A&Qr@TYmNDqdUxvIx=iR!9_iCvR=!~;modW1cbv~+j zKBn_YiPw}*>FD_{ozH7~zM%8vu!VHKrt>46Z|G>`H%q>wqp$ta`CdIEL@`EYRrSM9 zbbeONivMEFztZ`Q&L4Dsm!$G*z5Y}lOVat9?sV2+{-HYo-HEi(yAztv1(}%cw3^$s z{r~QybSI-bHC^c1{=YOwcM6Rs-6^%PM0s~ARW7*L(49ujv*t6k)6=zEn%x=b&PaC@ zUETjz9vP~tN~Zw2v(TND?woXIlP*VhcDj1Hp#}@Hvdu+zZtaaSy1Vlz-8^F@>W+}n z7oax@-39R)bQhv~HQj~jhIAL9yFT4T=`KxoF}jOOkEJ_W`>ibDq#?RXSP@IAhr3Hz z-SurCBQ8UCRl3X4U4`y)bXTOiJY9?1Wkbj?>8?a~Wv#L;$gAEf#;XrkqdSJ~T86J~ z(7p)NT~lxsQ68HYx?<A0bl1~nHBVaB26Q)~yP;N4e#&g|zq<+D0bQwPmu{1;F8JxT z47N3<$p%!{RYd6>U8_{MN4H1Ur`uP`c)C3Tlm`m3XWNbFo<>)^aR}Xnt}F?px$PC; zZbmn!yQLmEbql)o@@98aOKxUxbAww5)CwxwRtC4WHrmGUZ4GWGu;$sG?(TGVu+Fd} z-CgMJq<+w*xAR~1^R60owT;U7EEIhNpt~pC{pjvRcOSZYYgd$5S`O##zS_;Si|$YN zAi4+8Jy2t>@W@ZXZ+9%+gS8+@iief+P`VQ8MeSiSB<b2G;JQaBgS9x_qv#$@_e87C zF?5fmtN;8$*WL(Lho7Ln73Rw4`tAeWlj)v9_tas!iJVUNO1fw0I<{+<|GQ_=y_D|R zCUOql^XQ&iZF)$h<YGYgeEq~|*Uo>t7h0FN$l%2WFVVVG<z8k=E;ne80NQ`-6)^FM zR`43S@6x@Nt{8tE-P`D1Pxn^3H>i>7@EgtlH_^RW`?l8cmeNb=VP%k^dWSNrqh$U6 z?@_Bt@48F-m4<@5={`;O9=Z=&|GC$Q_gT^R>*UpaK!cvDeTeR3bRX7zp6(-Rzqb3M zdNV;=<Z-%BS?%opXZK01qqMJ9!5U88`wU%+|6Mr(C~bS5?hAHCDR#a{SKs!f`;x(z z4Zb4KYVjJ~x9Gl3_f1Q_QPcI*tj6D#EWzo%Q&Zlf`<YqwKHU%K+No~$L*w~hy~ox4 zi0;Sc8QK3YH-BttB;8Cef{In2<IPL=3p@$1U(%Jje?`|0dAncJ{f4d``*!ULsC2(- zIQ&4@u6lNVr27-ypOs#&B#nozo&R=!GkO_g|DgLP-h_1jqWibDp!S4+@Fq|mktzkf ziSQ=Hn;1`5{+cCDE*Zqt9(c3hO^!FUihEPwS^QUgD%B~0)SCuxM!ae9rpMDMrWD7U zp~9tUlz%3?QF!|D?}*Z8wXE6j=Ej>HPv7~)vspkj&s8y-PP}=_B;I^@%iztAXEEGc z08iroVt5PTEn*rLu4}ibij*a)=FxZ-X{);H{ZBj#{+_xTZ)s&N!-%&m-g4T{rPF%L z<E??W0^X{4E8?xJ{m@%Ud!2MzZxwY#g|B8=WAIj2iWFoJZ%sTo&lM?s3jl9zymbs& zS4&jNdIoj>A5TvN%$|+#<k(lF%41(G&XP^M)A3q(JK?qQw!m}nbkUCI;&t!>9erLG z&%^6!H<pUXp!0P7kLPPrMwvIz(v=b#j10y~l-ogGinl3VrsC3dy&SK=t5z4<TU6m@ zI`Flz><B<j-4bs*yshxI#oJn^Y%R$4e{_XedQ8}Mw2EwRvUdMRvTSz+Z)d!*c)Q^3 zjkhbFZTow>=`M{{Y7e}<^j#8fPkr~Z^suaQy?yZZGduTHJ!;ARmOKFOAUwPLFRzf4 zEv3~t81D$YL-6eIS2Z7oceuVBYDSudBk^qIuZ}$$?^rY77%NmX9EW$Ru^o?h0^Z4Z zC*tYmzt&oOXb7I}2&uz25q`M>`i5RQ_0GV%2k%V0%ka*^y9DoSyo>S9u_ibd??OD= z0#Z}Y*9DSi`#+kL^}jug)Q9zWmuhiRiZ<otcz5Alfp;t3mFC{7@UF*`^WU-^ufe+( z?>ddcqDP2=Na*%%z`GIeX1tp!ZDO-l+~U9B%5$65SB$v>PlCVg(ntrWIHf<_twgaz zTjXAP6X4y4_aff?c#q*dfcGfggJ#u3>PB_N!+4KqlgYR<Jyyiyc+ZF`yeIIU#Csag zKK|@gFT5zf^+2=GJ^}4Xmw4Vp^sG~V+VNh(`v>o3yg%?>!TSjBRlN7{Uc<9Rg7><b zAuAT|O}zK;w7Xg>zh&@kgYOu8SD@yW2N|mT1H2FM{#U>FEp(YUl=v~;cX*%ReTFv< z@6(E39y~SobG&cyzA*etojAO&YQeAZzA15qa_S*Fncnw!zv2CW_p6Egi1(9O`?JAc zbTwu6m!;tSUL}Pnt0qsT0Q>llryu{(cCn$Mh<Ls?A-#!ow(3nR$uf)Hr1Z|FHyOQ{ z9`x3yH#xl-=}kdzdU{i8%l4+yHtJ1na2k5ks<&-))0<9_vIF#N3Xn$Z%|vf@WD`RA zn>e92Gd<ltGVxjI>HU8dkv=RTr8fsXyZqmqi{7&I=B6i${CVijN6!v_rD`H8J+miQ zfJ%i6(p!w)Lbc9?=`EsuP$T6EP{}iz-ZJzSrzZw1QRgmcJWJI)x>HnUDWXLzM{oHW zUxD5l^j4&2`~PCFGOSE*l~Hn^zqhKv)dU)SjKS3f8huSglz%OHYwI}etz)o`|2>WW zM%jQ~gWiTZ93&|9HlnvNy-iB@swJ|5?KSB+^jh@V)uEpGpPoxEq}QPr(CgCcS&91n zAMFgiK0RMck%1%55fN>gfhL7PeHE#GB_{L^pqJ9ynqEe4Q+l~}4~YQ1!Z__&Ohu#@ z$u_Tu)bYQ!r52%CTM1nQbx+TK>1|7I7kb;7Ns_xGz3u7g8L`eF!YR)ny`AXotVvr0 znp&ys{`7XEw;#RT>FrH#4|;oQ5z<@Kje9Agj@_rG>|0W_Qj%5G=s<c$(mROWVf4n* zJH)#2!CJ0X>QH5qC8&DoaC%3me)Wl->(M*Pn2)BXd;au}DI+Jn<E-4{t+FT3JB{9n z^z^k~dNK>xvZr?nJ=^)0L1E*9-s$wtq<4lEAwQ|Uw(?mc@N?*$OYbhDpGWU}dRNlB zfZpZwE;OG={1=B`Oz#r4P*%ddOVxNqbp3C+w)hwQ%6S#NJLz3b?{<3E(7S=&wN|g| z#6R?|S1(B)Q2a)7m$c4J^lr9#-D2=ogBtuRm#U-g(4-h3u<Cv?c<;6$d=I@x>D^23 zA$qp>@7-^1dBEU<m2X8#_2~B>=si+BefJ)t_awc?&GIKyzjai7Oz1tOWobWon%)P- z@C-d&{L_2Rpu~T{U!W&TcR^k>_>#ew>Agbl4SKIi(kQRddtGq}p~@@|0wuj13vZbx zOUgU+>`<WhUd{7<nM?0OdVkO}C#aH-Ox4E*KcP3ykWUSMM(=xipVRx&TIvfS8uFFp zeogONOMX*p{!SSxo*(G_Oz+2%Lhq-V{)>tHO7C}}ApZ!gtzU1(_Wq<VzWR$k^!~18 z|DiuYh4&|<ZyQ1ViB-H`t_K8}l)fGlRF?E7ulc7iwkhdPRa2&>KaCNmttr#dpT5Mk zC-i5eZ|?2SMBn1S7Bn+`J3i>oT1(AFe|E)7`;})-`g7H}a|=R$9{Lvl6`zm31%JgC z&{u;MS%@tkp}#OgkJ4X+>>m1yGPs5QV)(bxAB_+F#pz#1e+l{r(O;5&M1Lvz>(Kuf z{W0{HroRIHW#})f<59*=e>p{#K83!_0=6sFUy=SQ^jA{4^xM8X3zYO#ExDS~D~bhw z<ynLNn)G$$Z#vg584O>SzC(XK`noiwzdrp946*$m@rDvNrr)B!iQx_UO+i#cRf<kG zC566A-=p6#&E1MkHT38Q^!q}g@0Wt3rkjYq9RVm&_W#RT#Ps)|pU~f#eoB8U`Wby; z$W5mN|KV~srN0IJ&FF7FT+pa7Huv?nthH@Te+T;8(3jTPmi~4nz0Tc!gti^cww=bS zQmb~MzpK%8^N0TKnp@UglY7$Ni~fG}_qN=94DLJ3V9EXI+x;KqKTw0MB4g=aM*m>? zC)3x<|MU-~e>DBW=pSB+)7L40{*m;L(#c2~qH2p{=$}CUSo+5s!*NxO#43rO{S%F7 zj{riE$)Ybk=REqS(m#v7UjCtfI{h>0pE1%EwL{LPe~$1N+qpIId`n(H|6=+U|N9q> zl%;<O{YzEKTF{s;H+Y4?D-B*{@M`+k(7#r2Wv*KMdirnEzk&Xp#&aY6o9N$8|K^g7 zzKoz-E$cR=)CJL(_+R#!yXZenUk3Z*^zWwsAblBn_tC$%;x8xY{{8ed{?}3u(SKBu z^ez7PA1Ubq=|5KUJVF1-8h@(PM&BN+RPY)4uhD;&{)_aVt8--v5DhQX?e&rs@iP5a z>AzC)lnRaQb<4F4lm46Z|Emlt{?;%j{deg9WNh!!e~<p>^xvmHj{XPqKQj7<^wkfg zTKXTCvh+Wxh^p{Y`gZ;+YXI#PU(o-S{+IM6_?JHX+Ejg0$|_N%zN7!W(SM*X!QV=$ zEd1H%zu?O#{?+i`=<BOq^na)S2mL?wAwrld{=e}ju-t!2isJr+Rjxm=B1+LyA^b@V z+Wj9*PL97D{uKDj7=23osqh!XpBjHw{AuuK#Gh6ijz1m#^rh$3e&5!0s$nMlSxk16 z!I=e?b+qJc_;caUZulGq=TrvS_*L1t@#iyS9{hQgUV6-*UvXuSBVb!S`U~MNfxj^R zXrnJ;a8dllN=`G$d{Sx9??2-&Wl$r7AsTXxb6NZpe>r>ye|h}%@mIiK9e+jqRg7~b zV_UiAUlo6hQC2G{3e_iT;M-P@zb5`#_-j|Wb!+0Ui@%-{?Ewvc1AGhh{)R%t-w1zW zQL8^qHt?(XkKe*?m-IT<#qZ;HRGTvE6oBvH>w|#)<VjyCK7N278Lm?RejWe)*pj-H zRO`&}cQ9g(U*K<Uc&UF={LMyiZh^nG<!b!LxAng&-v<BR_}k)dr?IrIi}BbLpgcR8 zpvHfE-TcSjMW7)%1sL=0_$L`<5BxpxkHX)}l6&JHjK2^5{`mVUvx@Jhh?;Q#{z3Q$ zjxSep$7)iML+}qX#CCxy;^Fv5;2&9PsP!C;Zwr3^82n?ESdK3(!sY`11bmJErDj3! zPsTq5{|fw5@h`$Z4gW0s(=AKa|M+Jrzlq?VjekD=IrzHmgMV&GABOn4|AVhnfFT!a zmOP&Lm*8KDZ!zD$Oo{U3B2ey*`d8xLfN#OyzZ(Bq{A)C;(xBf@!@qt6<wm32WYFTj zGTfpJ@*L;iMsOYe?F7<A?;w~A|4#h(@$bTa4F7*j>Tdjp@bAIDA7A4?{(UN5m8kI_ z|G^Oyz5j2-M+`n%X5l}M|1$m)_)p_MsYDgjDFDBY|Nb-hFW^6m|Gd%V5kNhoKW&s3 zOB`RP0HeHuZ=v3QRVetc;mi8pL}aDvzlr}2{(te`w%oT$DSi5=N`Ker?`cxD<NOcs zzctE-_)^>#_#feG%*VGWKy4U@{~7+LDpJ|-xgv7TSUKcN{IBr8!T(w*|IhyKOx5@J zf8qat|118F_&?+8WK@g)Qi*6;zv2Ih|2zI4%21kJDwG+=|C?Y!{C|X>V1n^d!9)a; z5KOEhrj|g1f2BWwU`c|>2{d98OhGUu!E^*uS#oNEX$hto=C9N$=kx?K5X?j{qvnoR zsPW%yn1x_|f>|X=FdM;K1hW&&NifGqe&d{*U_OF*2<9EuuZa9)#T6_-uo%ID1PdFp zYynk$fM5}VMMo5ElR{9<i3CgNldP7$6v3JV|02*OJ;Blh%MdJY__79VbI)o)u!2!m z98t>31U4N6s}ihEuo}UbQ5TNZCl}Fw;b;PT|5utr9<f#bS_EqwvJS!eI!J?c3D(m| z(^i-zB-oH(dxDLOb7KOZU=sq3`~;0^Cn0DNbO_o;bOajWj<Bsu;2E(;(68v_E<_Lz zY)&vBNR1&RhzK<Jmuv({ZAnIumvn-HU{iwe4QjI06hN>A!8Qb28gVOvtyM$mhsw5X zEo(c1f2%?n_}UwHAkeT$up_}v1P2oAOt3G(E(CiL>`JgZfv*4cXCaqhkJ`w+OvBy; z`&1piTr&h3{0Vgb-;e`p<RF402*wf|N}!uR1iJpOJg*{$5ge`*`DyNv1jm?$qX>>3 zK|hwjVtz1w{ZDX0UCK!WmlK>!a2~-aCVncx*#xH%oJnvx!5L-HQ=7#J5`2QQ%HC*& zo<mSA{%eKj6I?)WVQtk#1eX$AOkgL!Vyg9IE9kPiS6@+DOK>H@RRp&AZ}lR$hTvMw zEuUzD>lrLda07!02yP^Ji{K`L2MKN_xW{zfLU1d=UC1A926qxj{I6F2whv~99qKxZ z|H0j=dHfi(DImCy!1jLvjsGPB!9xTu5Ijuq1i>R#kOqH(#|R!TdFtvvN$|8~S^N)l z*qWoBA$U$4NMQGWq)^45SC?vJc#+^$0t^1C_GJ^XM*wZv*G%E-1aBH5hvUO>L-v2l zZu2(5X9VvMd`w`$KX{MeLxT6!0M)5`P==K7qmpg~=|o^z;|zXUt?q))34SK{g5WEH zFV)nlE?*OTNAOK8r8A4^`JUiM)9{1sQ;Fq2X}76H@h=2_5d3Nkztys`7gXBwC&6De z{<rb`Q}T>@@<0X?GMJsgL<~kTn3%y-$}pIO!K4f(XE0f%Z9t`AFoiKpsq|9+U}~dG z!(e&_(;7aV=C0o~d<F(HF|hbQVlrZ&Q;9LmqU|-9mBDPPu+ljPgT)xk$v~I)4CZ1m zw;}TwoR`6Tf~en2CxZoyz955z87!n(^0Nae28%GT_%D=7`Dg}<8~+jvq-b6LOBREr zYGi54T}G2t)^ZH?XRtg2kHHEIHe#?MgE7Xo5`&c)tY-Ks3|3W<@{pw}ZgmE0Gg!kI z)-<@5@`&XX!#WJsWw1Vj^^{%_H(;<~l{AV8Zp>g41{UfE4F;u$TO*`2{xfhHbVd-n zway-cZ5Z?!gbaM+43tep2D*EuNW`FEpi=;Ygh6IVT52#{-wQKD7`9}vDTB=!Snw|w zoGQ45FzEVITXrjhb_6Wraj-3e-56}gU`Gc3Ha*)L+(AXEy6>d8>e-pWE)49_&iLHj z8SKqqkD6ys<J3n05ofSZP2bn(`_(!RU~n1(>F|d!IH+bG%i!Re{}2;DwB|pY!EvVH z2nI(ou=qbX$|yDkXj#XWdW?8HgOd$8fx(G}oTRy>*~)whgHttG#@oT^46bBw27^l& zoXOxE24|Vn*~3x{&Sh|+5zk|AK7$K1OI##JLaOkh+EjZ4kY~)nrKK!`%S`HWgIAPn zhF`_tY6cSOuQ3hR*8JBgqB?Idwi_ATG(zg;5@&ELan9g2qA3~NPAJ{%4hBCmxRb%l z4DK@7|6%Y5gS#0#V99$J+{@s8!{rD-BhoNr@F0VSl%j3@aGAy6Q3lda9y8+O40PGg z;ECaV3<k3QZ;@^AG=t|DJYx*cj!^qN16}qrc%dRHZc~8P@f8LiGkBH3e;HW(AG|Ki z#{UL`H%nXu8N9{dLk9LBFnEW-`wZS?@SZY=0hJ9ORQy#S5~=a=-*kS$U>t+58GOp% z3!{9-;PXmJRqmHYw_P9|GT&J8TL#}V(Di>^)(?tXlEF`e3o`hba3%)75W?VB27fa6 z&18QsIT`#>%l<_;F@wJeCol$m1W+WLkZ>YpE(fo?*{#G$2qz_!&3|hz$(6-PI62|e zgc|>iN2dV7sWd6R3a25Q-YC-&PG`h_TXF`27XPafM-k3NI5Xj#gtHLNPH5}@a5j~a zpPcN3b5yv9l<Q$F%cg*E9>RGE=Qp+UDO)+9Liq$x(})WZu0*&n;o^jglzIpkC0xvM zM=PbWWC_Bh374#SmLk;1R_885xU426YK6-Y+L}MqCjzUlE&gR$tA?#ixH{n~hOcUH zHD%MRG1Uweu0gml;hKc&5w1nJj^(ahJ`NbZu8OE9*C*VNa05+N6phUKlQAA{LfF)a zJ8bABb}gbsSnvO6(y667gx3;w2@faq2zMsz5eh?}FebG49|nYjnm;6zli#|<D;Fh% zDPe8}Wo2CqFKVex3AZA&_^+jJPPhf(mSwI&dFl+eCftE=8$#XrC)~E2xC#GFSnd4O zjku$Vs2-aF<XAA=g>WCjT?uzLx`sYOH2xFrNvMl|!7aJBB3gt6|8PITg9!I0JkW9v z7$vtUjKPv)2@fSanDCHcVy*nJ8aaaS0>UE+&mugE@MOZH2~QwAhVXd8V+oJ@f3lTr z7XQOK{_EH|h46GjjsJwF4T}(}J%nc}WxQc$6P{!Aa}AzHc)rfgGVPXgbZC=8coE@c zgcp~xgqIlerJ7U^Snv<8AiSFJO2Vtk8kM=mc}>lE9pSr#*AqTXcmv@Bgf|l2L3op~ z-As5J;Vp!>4$E3JxLuPHG~~^x@J_<J2{rzkNWHKL?;*U8P#6Ehr4!y?`}RS?$8~KG zK1BF1;iH6)lp2<5EI#o6aW)pCtT`;Z^*v^*lrP8sW2+^&H{LgwGScNce(kt6HQA z{>Jl)!B<D*YWydBgYYdw-X#35=8hM)DIk2Oq!7MG_%q@Agx?W<Ksb)@LlYF6KQ_ds z0Ifo`{<rFUO87P5XM|r8eoiPSzg54r+^<ym_!7S%{B}5LI=?6U!H^#f{-okn?IiyH zX~bU%E&hkUTk;QqHP2r}6A}JR_)keBnm~D?2{mbKL=zKDMl?xDA)2(3jUbZ4-+Giq zHU&uSqN#{(Aex%UCz^(64AHbi3lL35G|H4uPh{~w()dp_Q>j^05zS0AhY@EXnw7{F z|H?DF@|5+8<|LYjXf9*Z;6K8Kd5PvD(pjJ)j#`0eL82vz79v`VXknAm_)qlz*Z<LI zqQ#BAgo>L6qNRv5+7tbYXlX;1sWeOckCr1^g=l%Am58LE6;*2ZsV!PrIrSc$)Jx;P ziLX|Q6Rl3PA<-H}T$5;BBK!V>mbJDKbuKX3^-7&Y>l=N8QiI_e5p7J=CEA3jWt4`& zW?f2~$R(<Rzh!j<*14WhdP>o9?G=Fe&manj&LtWU9YPcm?MW07Z9x<h30p#xnPJuX zpC~6P^zYYAkH&#$Q&YGZ(dL!4RoiVzv<=Z#b%|TomTXJ36VY}=I(6#Bk7#?-pzD7k zi~r@*lO}gI;w}bvCE87Az-aesvWRpFFv?!Wus6~EMEe-NFVTLQE5=mz96)ps(ShZ0 zk`Rf;66xlTvdK@j;G#o`P9!>v=vbn|iEOnW9YJ(trAkfG#XpgK|G!*#L^=f!9j`o! z)cZftNkpd;olK-Je_7V41}*+uB)6or!kI*86P+bVy~m|WH2&98=Mh~+biUCqAiB(u z3yCfwy13@Kgy>THMyUNG<SyfgEdEDV81t2?%@h({Z4?XsTF|wYyw2eDwYD3Hej~bx z=tZKNiKLZpQE}zJ)u22A+)i{S(H%-JeW)(ADL|3CiJl_5hv*Tadx;(}sr!iZL7?JS zZ4VMXMD*~m24j1a$kzPPV?>V=Ju%Eb%tmArLG(1yb41UmPSvJUfbbAKUsI~}KhaA> zLVua)4I+#Gk;Z=_UH==RQ-I07N%SGne~I2BdW%S7K9R=%vUH+%Yvg?;YHqdvQxD#c zh`uHInCMHQPl!Gv8dr0ETFRQ#=R{v9eRzEv=@dZpwZU&Rt6b1V-w}OJ^b64sL>m0f z&Yy^WF7XjMf30o%omk@7AH<`G{v@81=r7_4iT*a_It36<P>Gkdh;>jCPi)Yp0J#ww zPewcqF~n0EeR6{q|I5xFPi2&;1*%o?w8S$IPiMsGl_<ZmOUE-3&s3SJoHG;8OFRp) z%>wbP#Iu={#s5m%oW%1OaV}zu|3+7xs$o9j#fj%9UW9l7;)RTJ!Kw(Yi%tQf&X|c< z<3I6Y#G^}>DpU<i7=1~DODS_XPUEGCHy~bycokxs6yoKGS0Y~CI9DKEaX9#^lq$C= zK#^66*U+F8uV(Zy#H%Y$rFl)_^@!IZUWa&XU5=KQom6n$nn#0wDMGv<ahG@_VwZSh zVuyGW;wG^M|C+x=+^&*Rig??eN`yjeQ-I80u}2&bYy2nHBLHGw#Ve}@#Ia?C#F471 z8aFXwN}MUtm`%1I6|WAFtWCTr@vFp}5nn~TIr09)TM+L|ye09rCazNe@z%uKs1nmd zydCil#Q!cS#P#`aykoU-9q&|g?n10_o_JT{-D>{b>)btw_a@f(uRnR#h%Nrd`w~|> zKXn}sAU=ioK;k2b4<bH<cx<ih;9A?E#D@z`T&@32;SqK2QN+g+A5DBL@i8T_&a(Y~ znGNF;h)*&NC)VYjtUTozQ+z7%`NXFY+p<4CU9%1rAD&5k4)IyUXX`5BuA4^fGEV=I zEk2j{JngGz%v2Y20r9287ZP7gd{IdhNUV$hy2Q(fuOPl$lT|xf{FnQU%6T>M{lwQ0 z-)6~ciLWERk@$K`-k^F+6|op_3-Qfm(sFMdk$XGwJ;WOSiSHzqx>xJ}+KjtL2;NJ4 z-w4?Uh@T^VkoXDWhln3FB@Y{Xq?96ltmG$tyjJ)mv4#D(-v5c8Hj!tDpDm?^A@TFX zFIeu2#J2dC2aWh;;#W#-%Bh3&HR6AWUniCk@dmL)`}j@b|C+2m4j59!f8uwEKQzjF z2H!XM|KorB5%HJA9}|B{{E0D)({ND^A9dGf#Geb@vc6D6$KzMTzY>2<`~&ef#NS!& zw{`CKC1S)Mi8b;Q+arJ?zi4i`0Tus7{HNvqZqOb9$_?9CrT~rq)xJS80m)({6OznA zG7-r%BomWNPBIC}WGb6Xs?24GNGNfVDM+TW+$lAy>|lw-|7Av#OiMBYiN=59nZA~q zkz^Ff`1o(RGi$E2LNY7KJS4M`%w_c1N#-D#v+~%m-x8Yw#8=6@Bnuknd?fRe*v+5u zrY=OXh~--RFR#-iIt8eo6ESjGlEn>Qg5+PuX;VN_O#viJ8*!OZ#PH=v#*i#evXUiN zAX!m!E1fHotZMXCYRYOQVnmJqBx@L4lVq*ZX=Uw5)*-ozWL=VdN!BCDNY*FWgk%HN zpn@A3+=ygjrBuz)AnB4cNgR?^%~|aNk+>$(QF__*iANHV^hg4dK8atcs<aJALZw)1 znrC8?q%JG1nAMn^WJi*MWE&DmZb`B!$>t>X+K8D)vc)jJAS7FnY+X_0J(t8Lg=9OD z?MW>Diwz4%i|jBgMY0pg?j$>#_%0;7k?g9uroV(FdsyzCBzqfTQ-HRw#{b&#{YcIy z*`MTik^@K%BRP=dV3LDOWUO+IXFkM;hn5tQ!%2=NIfCRUk|T%NYR$)x9B2H;mXuoR z1d`K?ej>?9B&QgDaxHbLvRR2Fr<0sbViQ4fCdpaj^~f_(at_IPB<BwESBt3R0+Q=V zE+o0kG+#t=F-aBtNiJ1>nL*U;my=vWas|m%mb`LUKgozw;N)7%y{@)U<3GubB)5^= zL~;wsi1?pa{IB}V?Z$Zr$(@zvGX5n0L-Gg7-6U_2+(Ys#$-N|xliWx05Xt={50dEP zz_2|!$tDkz*esAdGE672DL~uw2`lSKlBY?YBKc3nQw{BBG+9~o9LX!j{5;7EBrlP? zI9wLV%ZgY2f3?I(UL&!^e?@<j<P#Dx={*vS|0Hi4e23&+9U$Y&dY?pW`@nK_QqZ4T z`;k#TE|Z3jBl(WxQ<ASpJ|p>p#Nxl~o>h(YWo`f0B;Tl@tl5%p6{&Q7Px6zg`hn!f z5%ix)ek1vX<kyn3=GWjqOd<J`<S){RNi6<rrT!tEKp03TB%P=%y|N*lgmh}sNl9(B zpH4<ft?l2Wy7(uZl2m7bN>Ell=`^I%lTK^7Rs5G+(iuuw(iv<0qe#CXotgAd(pgBG zq_dK)Ksp=gf~2#P&TC5MAf1zRZdw13$}0f>Yean<sPXxXGQU#Pqy@Bf<`rZi(xpfj zCS8owCW3U)QbZu>XwoH&e{mI5iU$8$=f6mowOpG5(rOEcbU7m~KZ0{b(hW&hB3+Ag zWztopDM?qUR(k1bq-&6lA=Tio$}9WV9HC)t()CR3ItJ_Yf4aUUE&iL7B{w3~_)oft z!G^$EXNz=4(l%*M>X3${E~!Uq@n2rkOS>gAX^+$=?T?TRNC%}JCCVOJs_TE!m^39# zlsLYi%y8)gvi{$iRM<8*=1oaA8|Eb4!iZavZl(Lx<LkZ+>2{<V|MjPy*Z5DmJ?Z%1 zZ}go=cPF*@pYBrflkQ5oTPbK#dywu&x+m%0r1kp0a<V-Fr2Cf4r2CVOHIV~I4<yy# zuZtz=EfQ%{UHp@3@Gqx7(!)p}Bt4w;Qqm(xPa{2&^hDC5NRK5wS~*qZm|?$>9!GjS z=?R)u*VlMXB0ZT@X910J>8TZiil0t;w(-~$ke+FHH4BiQLwdeZ&Lurh*Z&8vZ3E!~ z(u+thR6SM}>BXc~{I4mOk={;vIq7wzSCC$9dafkZiJ<1W#)umHYs&ScH<4QWPj4JS zznSz_W0qIIbPO7Pn<CnRcaYvgdS^|)i&R3v-NT&5b1&%wr1zQN{iWbABz=hV8OwUu z;3K4ul0I&D9skoONS`vwlLAfWe@LG$@v<z^XGz~8eU9`c<9y!W3#2b9TP5`}>1(7q zL0Imqwe0JpZ<4+-%xSsy3b3}++oYe6zC-#U>AR%wTkd<xT=h4d0?ev1MtwwD2mkRN z8%O#n>F1=M4GY#%Uy^l5zapE3^lP#SNWUTdO>#-UCH;={2h#6{rAU7y{e|==Qhf?2 zZLrd93aBjkom2w8E&f%{pUNq7N~-an^dC)@E5mF;vZ=`?BAbkCV$IDa(OgC9{r^nk zKiTADQ<6<l=2msjrqZPJglrnJ8H{aO4Z@jD0c6vcxrWb3Hj^Qv$Yvg<o9wJ)%aYAT zwjkN;WOEza90un!IG6I5hhNz|Wb=~EPd1+t%O=Pc7=bTDwiMaIWQ&n${FfhDH3g83 zCR@B3>Ddxwb?}$9M5XFqWJ{M%++@p?YRQ%(TZe3UvX#kJFoi4Dn)Uv_QC1-vL$+#7 zw?_ckRnAr?Ta#>!l5X`~i)`&us+L`sY$H>$9@+Y28yZ_Z1=!I%*~VmTvQ5aEWaHz% zNwsP{4w<V3l^suFPSzzmip(S1lB`EIAhY<dKJm!{WiD54Sx8opMPvz?eqXfO<5JF) zEF;S+%~gF%$8Jit1=(g~n~yKIEM0rWR%CmUZB4c#**0Vr@Uv~nwo_)alWcoI$i`0r zWIK`VPPQ}Iu4ESfs}e2#S5kYZxEQIjdyySNwl~=UWc!fqM`pp_IE`U{WtP|XvIEHu zCOe31tWrd6ZK@_!)uCjEksU#HxKb+pM^?<ra5R~QU$SG!jwL&d>^QQM$&M#GiR=Wj z6P3B{P7?Mtsr)(%keyn$)ahjBkexwx7MTWr{i(-vQmFBB$!r$L&Z{XGjL5x+>}s-$ z$u1Wnna%=amy%spGMAiWR~Y?DGCKm6`pOe`b`9BWWY?12M0Oq74P@7s{AR<ABk-Ha zEdFP=lxrK!lD(Adb}|k7WOwL|L`Ci*t51HjyGLlamtt}<i~pI%f3gS2#bXbW%RqjJ z>{qgf$=)G*gzROqN6DTfdrUQ`sgLV1Q}%==<-{s`itJfa@*lFN$!zg&oJM?(>_xKY z$zCYM%M*VxofJl`SIvNAuaLb;_Bz>XO0Rm?8)PzG-W)-Bi|p+(x8`}5>?^YO$UY`} zpX@_nCad><6qgqKXoQAO$UY|<NA?-nr%Er2D|?;te_<NFEa_xlll?^Y4VeafvTqH3 zSC{^SC4W@r@n-)__KPNEg`gt8kxM-Pom_nW2l*sqf09o~_7|CkeX_qRZTSQ$HLNF} zh+N};RbS!ECncXuMRJY*Bj`E>ApcgGTky9m@@b4XE%|KZ(~*xNpPqb1a-9_F5;gwU z_{`+9n#e2_v22BWc5;pO<a3Z~@E=j`+~o5pMSjvH^7+UE^7+ZvBwv7h8S(|mN0To^ zzL;rPn0yiPdhuVXlJO|LH(#85DdSm!+@=7_CI45cpWGhw)Qn}xS0P`Hd`0r*O+@4W z2&+~iU%8a3!bQF+`D)~=laHzBWq{3X3Xn0LuSMP_xAw}{A>WvMUGfdc*CStlShFDH z8<N`+T1s3*=Xdf=$eZLA|7$bITct_l4!K8eQ-Cse$h&1$X$g6cypI359RVoYfP7c- zkbG<Mh&(5ct*pdgN}i2ZqE;2;n~`fnkZ-D4W(oP`<Xe*K`hV1XTk7D=x6<lVExQf5 zh5CG36Vxey{NKa%CEtO3NAjJ?cTx?NPK*B%PPNr`BR_zAcN5%$d~ZYcB)9K>mXFf; zKIHq6?>nO0{YT&jk{?Ze5cy%`W62MZEb@a#*l?(ptCk;5ekA!3nlwwStfRDvmy!;4 z4EYJ<#~SfC^5d&x<;rH80<?A~m72*d_~)mRzeIi-`K{!qlV3r82Ko8qXOf>|s?H*} z_&*#U@^g)D@n6;w`32+`8|6asiv-c1R^bwI4g2Jmj#_54QFKzMVnTi;`E}%V^vka% zzlQu;{l<}<%^Cmo<TsPwKz?IsvuV4j#K~_d3o_zu<d2cxPJTc69pv|r-%0*ImUUOj zMm|3N8~t8#jsLZ_2gn~Lf6%fXQo6*h@+w{a2>GKUI3Fi}#@L=9f0Fz^hS&Fhw7yT5 zs}ypZ6!PcDUm$;8HCS=vFX|L5|97tu<7M(M$X_AX)jRpC<gbyxP5wIhf63n<f3y7h zL@8@LZ`C%xQ!BLZ|ET!;<m1S7@lXCC`N!na5Owe$--4g0V7b`NKP9*IzlwZbEBuoD z7xJ&jzp+mKbxr@4{73Td$Sv&W-<RP<bLF`;*X<zrk=s*%e7Pw9mHbbm{6_w}A%7@O zHTwRdn1uXqiV4a8p_rhgSGmPR6m{?~$5AmUg@%0!odT4ttU@sb#c32%QfR28n2KU* zLoEIm(^AYqF`bHNuCD(nbPAxD(cnxJqXaQrp8_Z}{!`4VgRaoO0HBz?tSQBuHRoIu za~s<{6bn<#OEI5jDf9eB*Y!Wef;DlWTEij~OHnLpx%U14Vzf!sj{wCI6#D(=Qm{f) zl~O2{p;(q;Yl`J4HlbLaVgrg5DAuG{kz!Sfl_)Iu%NQ(HQ6;6fi`6JrHw|NI${Lz$ z3>0fotZTVz8(gR4F?>CP<7WYi4JkG<;>H5&dNn9QiY7&uLW4g=o5D53QMRfPJEaJP zN8wZSjG>DE`Vy`R1{4Ejt89xXHm8UwGRsXU(((a8jHJjZl#`-RemT1=Hl^6Cl&x!O z@n3niG?A^U`|8Cu6bDgkOR*cpb`(2M*yBK<lR_=KBgM`XJ1M2IN8>-mt`+591;y?Z z`%&ycu{Xt@mb;hc+9YeqeJJ*=_+``=`y259g9j?TJdG{JQk+O}FvXD+hgj~R6o*qB zraV<UTKuo@qbQCswxdfW6vt8=Z<OO|{u4CI#3@d)tdk8|{4Y)|vy5^&L(;F#F#Jr0 zWLTX=@hrvJ6n9XZLva<wxfGXCoJVmn#rYH$QjA#t7Z(j{GbNW$T&gbwnYBi_oZ<>Y zt{mp1xSHZtifbsYx2$UoURT?H1I0}gH;&-Hnc|l6#IWYM%|!IiUzAPe<>F3?M=9>2 zxQ9X~0%NFlfhc7C{~*PE6uS6VCEAf5sAV6bc(}w(>XDL%;xUS+jPkg_Ck#GW+F<y9 zD4sS%CkXwi+UF=NAQ#V5yg>0L#fucLP`qTEFOT4SmEv`Z*OVf|zq0C$TF-we-Z7E4 z48C2{-?ij>6z`Xmn*JfhPZVOnmlPjSd`9sx#W;#j#<OWRuI~R(Xz-`_LUSw2zoPh_ z;%ka;ts>uysA;|aFKi+xejL_G@iRjcQv5<8;r&+%3;V@ywaz~%{v6h0YX6ojihmfI zU_4!-=+HzAP0El?0Srx2=`Ul*&}0n3(B#T5EpEMwp(z>Kh@q(%T8yEo8JeA;X&4&C z(6kI$oFAHwq3IdY$gd(MWy<R#U@d57hGt=C*76ydq1h^C&6<Ou1sIx>p?Mjai=nwS ztFmXF5p46B&iO~^Uyz}N7+S>W3)j|a{4b>#8qLsZ3@y&k@(eA(&@v1y$&k%uLrc~C z)#6{03@vM_mK&jA1%_5)sM`OLhhK(t3SejzhE}a+kjhJA7+Q~^)frmL7}j8D&0#%8 zS(~AC7}B{wiypocIJ7=P8<d<3ZCK_qv@t_nhBm3`4ThQwISg6+A8MC$-FZ-BT!t+8 zn`VYQhH{2_43)WkhJ1!Xh60A_{r~Z8H2y6Bh7!}38vH-1&H`$78)w7ir;J~jnRm;~ zv}I<TWG0!(@MNI347be8%y7%NWri(tyX9_~nc>%~Om6Rg&Kw<CmStI%Wykg;x(ljW zWR^WBSS^bD6oQ;sq!3XU#(!t?_5ZL)g~Blu5(;}MXcVdx^pZUab%zZK{z<Pw(~~WS z`u-P%4uw>^mj(akc%i2NZmuZGz!~;*I7&nt%PKOA{}lFd4SfnI>_=gL3Wqx70EY)s zILHyje@8}B@c3^@jf=x_`r#CgaE2qDepJ@c6pj{yIDH~097o|a3dcLA$Nz%I|ANQ= zg5p1gQz)FOQhBVVVDbMN3TIHbn8KM9E~Ic4h4Uz!P2pTGa*p`T_`Xn~aK4ffb-|D> z{G#ETQVN$)xRS!96t19fnX`HP&m<VMIk9k+)30{T$4H31L{vhqrEmv@>nPkp;d-as zK;b4wZWNnruK2H?+~8Kvx{bo^*)EU^^eMphY6^E!xR1hJ6z<OX@5#zixL3_ljrZpi z%>oo2%;^skS`!{2u;KP7g=Z-|W(x@lk83$0L~rP&;NSl$Jn6VT0Y>3z3jY3oTiy&g zpQG?Rh2JQ=K;cUYFH%t0r(pa4{vNr)D-_<P@G1p;=bgf9`U_IwzYbrg@P__LYCrYz zTh8z{g?FT<6*nlGyhq^!od6bmb}PIux`cd4;S&lUQTSNRbmw$ApHle3cqn{kLMVJL zmo{m(hOv*gsuf>R_?p5m?#$n~w%=0tj>1nAzW0JZQ20^*9<n0#9tm}a$+7#N*_irO zLDjNs2e|M%!JHKSAb`T31QzH2BAAF^Jc$kT{a;5WAec}i$VwTspEbdTQZR}9%H#x- z63j|48NqY}lM_r$FoiQrnQ2a-Pk>o*f@uh*mBmc*&7Vu#V0twwm_cn1MhIpmn2}(n zY?nX-L3IEAmq{44A;D~FPN4UHIx>fN>?kvs%jL|iC!k;+f`wf8ysrOz1oIOtFl=?O zplo86k><7qWYQKPSejr_g2f5+j#g=_1};Ic<jC&+Wd|kgr|*LhETv_Sv1PAp4fOs8 zf@QOU1j`frO0WXK)dVXNv<X%s*ok0ef`1XL;>@cOtVOUI!I}iCt4AbZ4H?$DNyA_M zL$J2q86K=dur9&+1nWt2v$?W1kdpROd-d{Xf{h5aB-q$<HzC-9U{l98BiLO3ku>4{ zdISj<|5gOs>1Cn8)&$$Qp|;HiyGDl?ws*J#!Hz>e7tyLK6YN3|5$q}t5B!e+!R`ds z3wsa*1pZXJ@X=m8Bq*x8&0HBY&ol+>ZH+;!r*GN6LZA-}5hPBpirH*pmx6-2!v;Z< zpyi$J?-P(F9fA`HO#cH2%!T$N=n?Eo&?gv0;PF53{U2-i_Wq%eU@wBb-J|vyT2G!Z zk<4NT+`;}buWWlD!C?f7|E`|x1(}kg9UkKFP=nsO!wK|-Ujm;3f+GozA~?p4d9;jX zjkTXOM`DljHXcuKf+$w6M#M=3XAzw2(oP{bgWyzx(+TVXup)+Z*vLO6BX>P><Plxb zAvl}h97$Hy=Mr2-a2~-$1bO@qE+Dv2Wqs0jeJ&>Omp^E@T{@&o)aBlyD+sQXR#NFI z^^|=hCKy9topKGqg9O(STqg!ahU*D#C%8djEx3{3HiDacG~G<#i+_2A;=g`Y#N0{B zo8<cm?jX2R6!F|ea1X)V;&I;~xHqrjK9v>E18Sx>gy129=LjAqc*58SYzlbPk;ha@ zl*bA5(pM#i0-toc-v2=GG{G~D_{Sf8jC=BVf)^Zl(cw!DUzUfcl)wMk=B(f~f?o)% zAzFbGX#a=c4T3ibJ|cLFz>;qhc>I@pzf16*NidhzPcEeIzYu&t@S#R=?i&Oj6MRAN z3Bl(CpAuN)_Z77@A@hM@>%NpU&m#Dm;2VN(vwkG_j=+Mye9|lWf#631#e9OFR3z(& z3{kKBMrc{T6K+EA2jQXwe-bW8@E75D*(f6%pKxBn2?(bqoRDx*!ifkcQ4_+6hXREo zKR2%kCnKDaaB{*a^eqF|S^gPLC49&;4dHBr(-O|C5f@tS^jar}Gbo0KBMxVDIFp;m zV|zFY;jEHia<Whv&Q3TN;T(i^3rN8;%O#wfaGv4&w7toM^SN&G6D}~)*5Y43n^VGt z2=&=t!u%^>ZXCkJ2v;LqoN!sfC1k*GNqKK*EnV6yNoZx4QjInNsn!1SpKOdPX^mQ* za23K82>tsnDzcIezC(WmFsD*`SCzuq%oVQga@J5J57#7Ik8mx*b-n7f3D;3Yn(RCp z*n6eI^$9m7+<<UH!hfmxS+`2bjpX(jzm(aOa2LYO2)8BN+~|b%iOp9Dw<O$#aH~uv z;npf*Ei(Tx<49rc{}X!r4|lLE!W|v%M5z7t;m`<oC9DwcM!361w2JIO7!z96fkb6v zF!WCVhebl`;%Hcr2^khC`yUgmY(nUf-_$UDq<@|8B*KPEZW4|n)c0Qq+uoKAVV^Kn zAXU}+_z_{xaBqcm+<?&cf3gRka4$mp@{7%_#;nD^3)z=&Kf*%@_a{7v@BqRCT`_+< zlNx?7;b^s2gHc4nLkW*}YaHhAaEC`YJd*Gzmw&XwV;mmq@Hm6U<M;`LCki*QS&#`& zCOn<+6vER8PxWbW_{n%z@(jXr3C|=vhwv<SjI*VT3AB%M<xzt0Ji_x`{sn{=5nec~ z(WdzDV!}&?Nwcj+<z<v?fL~7WR>CVNPDFSm;oXE+DWu31uO=Krc(dcz5ME1o1L1Xq z*GoN9-q#X@HxlY8K)qmXF|Srx^HLLgC*f^``IlcpU$BLDh}nIE@Gc=18!aM*_Yi(e zcrT&9#y`A|@P2Q*FaE;^2_GSR$oL5#Rw=8?<q+EYAD$+BY)Da;Ssy(yGUgA$Ckfvo ze2VZz!l%9LGlVZV@+{$VR)p~RVL=n<V~6l1LK`D56TYG<vR+fYuMz%toO)j;e8VO9 zCm>xV!nX<ECwzzSU6qx$yhk{EI#a+`Jo&)khlGCl-`RXrenR*y;irUO5q?Ja1))~R z>S#6UOBvj{Mx)q2{uuh^k5MG^J3?#k_dW!EApDK+N5Y>8e^L?qS(H$`{l!D;uhPwW zP>uRs_-%K(*gpyXqBx#v)R?MK9N*T-6em!rqCW!Mb|=M&DPB!+5{d^<gyIOrNhwY* zX~oG*VTzMW;o=k&r=&Oy#i=Mxty=O(MR8h+)2V4$+f~Fjf6Oz5&q#4UiZjV3#hEE? zLva?0D^Q%3;vy7hqc|@`eF(-ioP*+=IX;(D=B7ALMv?uCy8KCTe$QIKp>6*7KrSvs zQS1M__@We-@*;~-T--So|DCcVMGub>I1B|8egCJpj593jP@e#!xV*u<;EEJCrnnMC zecOxT$`n^|$+r1#=3UL<>KU`+Yf@Z~;#$t^@Bc6A{r?o#9Y^N+-Xg94DgMjhh6bI@ z<G<*eP~22S%)+W@Gm4vQ-YIV3a7%|<Io#Ty6j1KA6peX1ibaasQ{0uJfB!|jzoYxW zP7ZgbxQm3_8b-S9CR~;7?r;x><_v-7hFPxTCdcEy@!OCu#`4Kx*<r<D;;?Ga)vi<A zn_`1vk784D)RvaRw!@CY)S*p4S!eYvfKwbeaZiV%9PX7dIKB_XeKj84KCatv@jo15 z#RDlGMDa3;2Ww0fM^ikW;vp0dcMBZq@Gw0^%GLG$f2SPj@F<E$j~sD{<Ht}uHph<> z+Yy&gJb~hA6i-xAwmpgB$&Q@jxu<6Qj-O8PLW*ZlJeT5`IsaJ{&-UDN#^F3K&pqEo zU7)0N)8-Gwi}Tz}t4s4-?f+1`!Yy#6EUXUA<`grv_J1hqIKYu>9qI^x;`J17aKtx% zM7fFLaQ}y*Z#$^=+bF(G@pg)DQv5f?=PBMn@d1h!M((G07e%e}Dc()-9zCO}_IoWB zNfV0?b__iXL=UR()cX%ne3+uKJwov@ijT_k?Pu%r;^Qi%8P?dIp!h7sCn-MVqKxu1 z#b?yx#*oF~;&aOKKUz|JfucWy7hj~P%byfq&TD+d1$yW%zLraSouc3W@r8;O4Dw|E z|F5k54n=L?Q+$`=d*)FT{UZemXzx?}fa1p#Kcwj2|FY@N0=q@^;wKb8)of_ZF(oyi zKBxFA#V;s+?Lxk!XpbH>Z3Kz`8;ajrEw1f%6o;Gt6n~)ji|hO&#h=_D)*O2l@OYak zEZu%{4S%Qj2SvO2<6p<qsI>S0)F}B=fGsIY6Hq#Y(u9=Op)?Vt#VJipX;Dg(P@3F1 zp){#Pl_txKuhm6q3QAKB`%%fMC{0aieoE6&nuXG|l>Ado*^=H&SDFEP9<pyQ+Q3(G zMoKfu)WY?oU^t~&Db3}S*(l8}qH?wWLupPW&EHCMdvYEnMW2__e9~%|yMPlHbhwbi zg&i)Uab!H%m@U~SfaSoHmY}pIr6noZO-{3k$^WNDQ)wyLytFi>W#pftEbIJM<MNv3 ztWyk{{?_%S6}{|Alvbv+8l_bzt?E;uuX4@crPV2|AzO`|>q~1<T06U$Ao-@4n!hfk z^(bvYX?;o?NVpAf$=59)N*gNZl{TWZF{RBZZK42M+LY2};xx&=i<?zJX-hA%6{QZP zttk~LZ9{2SO50M}k<xZvc6&-5{LL}Ufac-05-9CN$!gTj|FD@-%=dpvyHg4%?Lo=c zX4ZUbk-9##=F7unKr>WADWc??{}Nbsu@wn4Hu+nXQj=1K*C{nrk%_XOjfhgq`P*3s zIVGiZ03~bto}Sfn*!S)jsO>5>ijuDSP}+;q-jsatpA83Vnr$kU_H+LI)lAbwU4I~@ zgWRM1B2a0xOlO)%$e~2%QaX(2NJ@tj#gvYq^aCYJ-cRW$N*7T&n$oG1j`5B=meTQ* zj*~L#3$w!sluq%i6Dip%AdGUdn(w(8Lg_S0{w2rK>6G;HPfBNsLC9H@eEl!{97^Zr zMfCm09KV2)t^XA>y~xFs?x1uDrRynOO6e*}mpR=xe@b@$)1zz2rvT}5HKj3GS!dHH zU?^Sd@H&H*Md=1g)`NceQ@J-$^7wDLW<ybKrF5H^h2KueH~&4C(w&s<ar#{j?-rY6 z-YZ1>_vMraD7`}IK}t_jdWh2Flpdz^C?)M2W<1Vs=fA@wB`f}fl1`!Y6s6}WJx%FZ zO3#d?8$!va03k0>dYRITlzivkb;yc4+pCm5qx2f3cPN>QTI9DPua8svo0Q&iHQpYl z)Vq{Eq4XZ54=Cv@z!}~jr__g(KFath=}VD0{^>aQ=ajyn^p%(WGH3Xj(l_Jqd`sy& z%cA64KrV;Uk3<Vm`iW>-N<R}>l>UX%pOk)8L0R}WFY-I3KgJRD7tzGZjm9GyUkuR% z4kvV|hl0PEBY*$DcqS#9!b?r&aPo|YXiB1~oif$1pd?R|;Y8CB%}z8u(TqehsEBe$ zva*iPL^N|wpM_{v*TEO7SsSA{h~{<9If>>Xnuloaj9*n`y&ug-v;fikq7Ny){vYBC z6RkzG2+@i}ixMqEv>1`ErK81(mT=)q<^}(e2_agFXz8&6EthCnqUDJcsB`8O#=%!2 zTAgTRQPjp&9Ii^F_5V0*YY?qDPI7IcEr`}3+LTD^f1>q>HX&M{Xd|Kxyj~0bR{Mry z<q&N=R>F{|f}0U-F1o8nv?WnMv=!0zL|f;?ZHTrtoM^j@;`k0kdpNSA!<`)N>~I&N zUA=aT|E9z4<LIE_pCySxB7aPXibDof5e*q^j*iMi6`~`E5~7wS)2QmuWY&oqn&!+( zs-h`G3~i#lh&n_)PwErEMBR*&s86(~Q}hTRqH;&&xqA~GOtcTt0Yv-ex%(0AKV()# z2NE5W@#m#R6IsANgvfXPU8bva_}EekdNu_|M-d%E<cGgDXW3K|9ZPgJ(Q!ly;6(n7 z;OGRR6NyeEI!UGw{bYxy5S^;Y&WN_gi%!?1W7A@Eh9)3MJ4+RLfOQ5x1rWn|L{}4? z??Nshx`OCJqRWXc((_AnG0|m2muM<iU6)F}8OL@8d}?;$m8w^jUL{0zjUl?3$iM%k zQr8kG_!H^-k3=^(RQxBp$)MKN!fzqEi|AIz75|BDcc?}Y-Qn;~gZf$PL{$7Ix`*gq zM-=>t?sxcrLH%q!6Fo$d5<N_LLZU~AcO-h0*aqWcL|+p<PV^p;6?~QG38JToo+Nt8 z8<@}C(KAHP%6g`%t;VD0h@K~Undk)~-}aAm1fc3N9$TVB`m(&+@HL`$h|JV)6TR;C zdBfqGDk3Al<*T*qxW~Nc-OP;cC;ub*gy?;u4~afd?J~O&Kaz0yr=J2#rB8|U>>yEU z^5;Zf5P9S`ud^j?<c|PCz9F8D=v(5+iM}JAgy?(XiHUx2$v+bPO!SjP+0Rx%(Jw?6 z-hU<fgXlM+-*v0RPB0BB_fOsWGu$j6k4HQq@%Y3Oh{2vmjBekWj3-jkewlr2q{I+U zs%Dzz@novVOkqhI2=NreQxbdR&mOqqsbz{-@t=5FF`Loi>51ntoOlM}5#re#pOJVb zM`jkAa%Ul)Rk&$l(7ZIBop=u7IaQt6(2N<+MLf3*n|W_MFY)|d#e7=ViNW`O;suEp zCtgU#jD7Q8$RfmxN_pXn39;i#6<NZB6EEpHSk^za8aMf70kvXjhszKzOS~oVa>N@D zFHgKK@d|pfh*u<Dn|LMSRXw>f@hXy#E$QRch;{9Uc(?^btoTp7mdnrA46(L=T(R|} znDkj+O_r+vBHmC2k^MI^g<YSG9d1IrDe>l>WnY1Ge~Y)stfwB2w<6xgo-&BH7E#UF zmUw$tV7rWscn2XCC8Xp|#ODz2OnfBqF2pJEuEbU1-Q>XW?!<|+?V+cV*!TltqlfYz zRacZKArZ0O{7-C80s5dDamAp1)=Ya&k=ad|HgTP}p+;FjHCFMTSaXC5$_F~$vpy-r z=5jsa{al$o@ql<Qou0>gIvkaI#oj8b=Io>K74Mq~cQy8RcmVN%#D@_dM0^PG!Nj98 z&1HO3Qe}M>5OO&25yRYJ)={p&(Zr_`ALFW8bB-lGPW7s3#}l7GY|DPbPt06b4@&XL z#HUD<4SY#HP1cZMPbWTu_-rSh>CmSD?`!YebBRA9*8UIi`NZZw7Z5*6d?B%Q?nT5m z5MN9@hWHZV%bo2~;>)C)Tax$+;;Wo)hs*hl8DE{}UXyVWUrT%)@%0%!&%KfOF5;Vr zZ#4?>%?@wLmA{SHy6JW?59_*v_|6Q^>LR|I_yOX3i0|{V_YQL<?f#tSLE?u!_n~pi z$~WX}j}bpE+~bU!=n3MtiJv5XllUp(SBRe`eu?-Q;^*A*egrHBc%Jx0;umCg+Y35y z3Pl*vUsl&xcNmnX+4y>m_zmJL`MT5?MjpQ@6u;$NsmmM0?-0L7{H}QHr?KfitZsdu z_ygh(hh<H;2H?lUpAmnO@e_Y4MDFo9@pr^uSd#cl;%|w+^45J#{Ec`_XSLcRl6bz) zCHz4AV~+ns{4?=i#J>>#PW&tJZzFSVqCX8;B)5ID_z&Vg)nC~FwDDLTPc@dur#!)s z?y~^piKv`Sd15LflqaEl2W2R)KzUNi^H83Q@{E)xr#wC7DJV}vc}nX(%2P?_^3<+y zzA;#ymhyD6nEkS-Tb=>i3ARv^?WvY$qC7X{nbjBNSu~-PXQey`<=OOrU$*_9?4z{* zqimZ$uTq{%on<}ZrgQ#zDKA9X&wtDFYiO4ju<9uL{U5WNg_QEbl$Uq)7IC;J<;5s3 zMR{?`OM2ByNFST0%EtUpS=$U{6<P0;m!`a|3tUDN^TV>f-KI`4HC(={x+3M3DBn(b zWy(I)mRE6QR&}_V!__ITVTj{vQeMlEwH>bGa9xM%8Fa*t0Lpp<@Z^S+%|07Z4k&L- z*)-XNvZ6X=zXDp`%<;_~Y6_sdrNgZZYNJWU*@p7Al((ns>wk9!$~&k=o07^qQr;=U zomn4$p}eao>KYvZP~M%gHvb*>M*#7Jl$(@`&TmdtrtJU!D#x<qkhwzH{6sH*rd%C{ zS@Q}>_V2%!8-}}t7Uhm3?Tq5M_WvE}Q9g}wpYqX^2bA}tyeH*-DUb48zg$}0+iTh9 z?^=ds_osXi<pZ4aK!b8H>3=Zg!zhpTQinJ^bZlA5hl^8fKf>XW4v)&3M)?@ZCs96@ z@`*0$ILgOsv`Xv=D(K4qA)=h@@DzuqiYT$CQ@)t;8I;eXe5Ple<?w8W=QupqU|!?- zlrK<Hmb}n&FH+KcQdL|+`Fck#rF@wqms1`?+4uj;+Wet>mBXtufsS9}oYy+M&R~{B z`3B0j`2fGs;Y|*2c6f`!TMdro_pzXrp^Xm8cT)DlU&V*JsaP1fhw?|1@1^_#<@+c< zOZk3x(FZ8|ZU6Fvl>Pj-?B~Do;YXa|QOfz@uiEItQ@Kxg?vs?Ck`AIgP5GG&&neGQ ze%`Y5Q`r|OzvY}SIeeM29|5cEtCU~MI4SECnDXnCef?j4Gb^6wzD@a^9M>r@<@YG( z@xS~&<qteoe5hDAj2j<Qv0(cN<uBaepV}Nm`7?)~Yd*5uMCC6j|4jKS%C^;G!RKqr z-%$2{ep#ropH%vu@{g2%Q0s;ieg8Mdf1&&bWfNsPKN<h;<K+HH`LAKp<X6Vaa4Hi> zNei2m2^D55HU&&9@2X6awb8RCRf{T<DPUG6SJzjjpfU}WDHS|LoXX+U@<VG{Wm+mT z=;mQXS9+*SKeFN-8dFx0s-BTbh007+mZmZ@mD#Aw;%wUgk>+O7%Ir>=L*}Z?No77N zb5WU>%G}~njdlc}r%}oDQwA#bEbugy1*j}Y<)2g*qO!1<rNAOomZY+%Yi{dg(|>V? ze*SBUiIQD>&G`NPkI_~8GE_F9vaDvz%5qfJrLsJgRb9yysH{k3C7<|ArIo#|Rb&&> zN^^vXU5(1>RMw)hh9}n)vt>!EwKY;I>!``u3cRwO8fBAFWqm3eP}zuzKMlzs{uH26 z8%wzTgl|g4`eidJ+fdou`)CUd!;0<y`&zWJ6_u^kDMR_&QrT`~F+Z$7U<)eS+f6De zJ2>3YTeOoNi)_tM*@cQWf7~T@qY``W?o{@m5>oM}iAvyY^ph|7Pmzk5D3WeAOIjPP zQgwG(xSEhqF_)-PX;ASceWjk6&TZSwm26RI%MP-h&VStlyHpOL(xWn(N}tMsRQ&#D zWlt*mP#L8f<rRBTvGu=?7o(`seW~n6#qa!A_Sa3M1GbRc$e#~#POIf$QLG}<T$LV5 z<zy;{Q8|vv;ckH=oPH#gW2qeFy>>K}V>E)ywjO(>fO_P3Dku1}n9f9~oaj27B*`+- zDVc6mPIcEZJD*PFOe$x{L_;f`rM3_8bEw=#Mf?9$&U1LaH}e82wvsp7+7W=ki@cVL zsa!(kaw>lLQ?7NHspJ)1AyrKWwfZX8^J*$L_y`@N1#RUTD%VoEp2~GuFN~wljZ|)u zOPf{I1RViTF(12C%^dpG?NmOXVl}=<<qj(MP`Oi8tGc_W+-;iY(dJ$%_bE%GN%7y2 z2dF$q<q0YeQF)BY!&Dv}xn>lVM+~Z91}y+q9;fo3u|z6QQhAojQ&gUD{-?)s3Xz`A zQF)%q3vx3LENYj!=_Rc_Dlb!c#VAzF+02ZuQF)V!g1;N>bt-ST+P?Ov=oN5O-lp;% zm3OGTt1N4XHNg;NnS}R+dt<45NHQapkEnc2#p1s&{#Es-RDA!(9tkU-Q~A<0`9h_n z@K=gvrldOM8<I(>d`smID!%_;`JT!zRDN(D_>sy_S)-_obNH)*zf$?l<G}A(FSz7C zNhZ?6NaZgjlkrH#Cz(KgYZgc*R72eB<YvjlB$JRJ`R3l)P)a5vnNmKJOfDNHQ;1&| zy#Gfs70J{jGsx$YX-KBkeaK`wlIf*@HO+o1GNK|TQ#H;+vIEJ?Bx{k(Lb3?StR!=j z%tkT?$?UR&{cJ2)PbG7b%$1o)<1v|sWPXx)rI?v9vG2e5Q-=9xvVi&`S&(F*VZS5` z>$y+FMM>5mvBTeqNERnq&JkPxTXIPfUDzh^?h~>Ui8g<ns8e8)WepmIWO+}nK;mzH zOIGycN?ESsHU${}st#9kxVl024YSpnnYJWrldR{aSVx_e=m@~FNY*FW#QSIijiBUT zBpZ@!OtO)LjQK-@&JcCtrX*XtN}G{v?uZuup0y>(RwIjFprk>G-G*dalI=;h({RW- z!g6K69Z3?BoxCfp#uCXcBq7PJuGnrQdwACF>O1wLRUODU*_bjYA1HcX8xoOJNMf(F zECn)`wiu#*uadM$+}o477ql&)+Q<f{kTgkJ>TxR~fgb#Yo6Wn_&9!<|?;`0_-HBvC z)p~7Dl8;D6k^F~bFOtzDdy^bYvQIYTN%ke#kK{m-{k6lH9H3oLQ&{*xV{xz1YB|I; zJe1^GlEX;OA~~Goc#<PXj&e1Q%s3rC+D&l`$+4dF{U7&sk`qWyCpnSCBfk-CA(5P{ zL7kl9@KlGV8T7Jekeq3VgbyA5Y?3QT&LKIU<Xn>T#F<4KS>pnd3&kn?B6qNhT^Zm1 z7x7XO5B|b0mt^(Yl_X<Gt|GZQqsZUHa82frj$cP&7QUY3R+1Y?ZYH^r<R-1^O^A7& z7103H`rouAxsBuwlG{nN+EK1?%K7h9(o2!tP4W=QJtX&&+)Hwwvb^Cg;Q^8d)ijHo z!xlYE@~H8UX#MY+KSpBvKlxFb<Uc|30m+jjFFS+Z|4*KF{27PZ{~>vf<at9J_rCxn zFOs~Zy0RL@qx=6P)~MHV&i|6U?!-4p-Y0o;<VyboPVyGX+lG_8lT+R$dCw{T%P4~O zGx>7$52e36`D3c{k$fWgGTNskpHa0~_c_%GNxmTY)rydO>F_IuUz2>}$hRavI`SRK z_dce6P=8q!8q`|<ll+_~f61~)ek1wAvwoMU#q%dst@%m*k{VXr@ap(fClGEurQ}3Z zr=&VD)yX|Mi9;Mt>Tt4*)A1=XIaH^jIt$gQsm?%k8qb>6*r-mIi=EzxIX*&lMyfN3 zV#YCRRQ(8GsL!laXLAXD|5GZ>;mJ9v&L!_MHiKr{>O55El>*rmP@P|c+M;N60U5ly zpw<=Dg{Uq}bup@oh|_wxx~P22a2t=+#i=eK9W0zGX}LR6^^U79<y9<Abp@)+xRT3K zwV|r$C(o?f6rdFm)fK7gkeBL84p*kSie!p1yahycb*dXtU4!a+RM(`s4%M}&YV${& zS&P(CkN;9~eX9SW>YG32^FzyQm^Gj3##Fbax(U@SscuSj3#ywL57o_w(*B>!tyEmf zY(sTBXVVd|BimE;%^z!#@wk1w)jLx?nCdQ6`<~pD>TXocn7d29`fCsGTtfn?MXG-P z$0EFSL>A$zkri}Kp8~37suikrH*!L?O4TEY&l=9=@!w)&wQ0Ue)usT0ZK@qFl1gDw z%%gf4?(~5?O8V^SaFjQ5FRFWMMyu{a^#H2-QuQx?$*LCrPg66enV#x_>PmUhK@w>H zgsP6FdV{y?5UPh#J=}fiFtN#cM^HVJ>XB4Wp?Vb6<Eb7^^;lO!SAa|`)#KbZw0}tT z1gd`j-?EfEiK-5NH4!VsncJM|@HB^~Q$0gnpq{d<v#4G|^=zsaP(8;f=TbeN>Um-? zAsMG3V!n{-MN}^~eAt7k?oz5(QdRt?YQf*w?Ea5Ud0BN=QN5O`O#wz9L-iWP2g`Lx z^*XB8OO(mape%eNRonbA{+k`zD7#h0x3*}Q-$wOzsviH%2P`O6@6fuXsypXC4DY74 zC)InXtwQx)YBv1uqc%C!`>8%o)$jjTACwNN;vuRJYoZbU2-QcaJ|<0kka}NO1HYsC z1l4D$J}Eub<fj}yP4$_K;%$G9>RVKwr|QSn)fcF~=xi@JeA%Vx@~4WZmtS+b4y+w{ zo$4Do{-zL(vbU*PFn=efzf1MK95;n^`G@KUIpsr7ex#%f^$FF_sD7$scE&1Zn*w}O zsQRTdf2CZ}zox1yKvcgK#k-#B_fGl2;g8hDcjPCkKU4kP@n0PN>hL#%StnBcgQ|`I zsQx8b8&6qg@T{)d1k@&^HYqiq-^DO7HC_IpM#eLgQ`7w)DPz&KHU+gQsf|#ZirUm- zFiV=Z)TW^}Ew$;CRFJGun_gZ~n?WJMR-Ouv|D!e&wMD4e{{Jo1W}!A4wONP3*%lbJ z*<I8e)aG|&PHJ;eo0r<$)aJ<~452xBO-BH(?E=&mrnaCeve8{zNOZ$Z6D1d=X3YN3 zYTZ#=+;!6y5H+0zxP*UF(|-h1MD(SpdHk>W{m<HR)K;YC2MV<nTmfIRsnsi4lG@4{ zk=m-%Hm0^3wGF7PPHjDEYfxK<+L|uen!lFwYYRvZO|^B^c3+cITVIH2ZWPJ<7qtzk zZInrto+55SZF@&HrKZh)$2X_81+{IcY4hJHTT$CO!@YIeI&nKuY`ja(4%7_pn2X&> zdqK6GsqI2-4{E#G|BtBcMs4@Zq(f-Nu^r1=K&?Y9bp4Ce>eS3DVz*nQW=ejUT9sOb zTB5%p{PQFY<e_eEItvuFhI2L@wy3qmVD4lKb%Sz-l$!pq?2>ziQ0r6E{*P)=aul`G zsO?4VRBC%u+s`@op|-CW>?a}nQ#;VB&|Z+nW9=ZPA585SYNM$gN$n77hsrW?*TbkC z?!EIgwIigqIg(m*6t$y=9prvO?O19jQ9F*>@se!A%AS#HC%BLkWmsu=GBvIIrHqv_ zQKtOR4yRK)gZebo&ZK5udRDI9+0@RVb}hAYsa-<tyqsTu0j73={?Jjo(BVbYE>>># zHqP3m)W%S|jG8Y0t2*&(3y9j44y{kGR+bIqp$<9%F!iWiN9{Ih*HhEwe`mfi=edd6 z&D4Bv(_|_*=n7DtdwV90+8xyWK(KZvwY#W&L+x&AW>1U%Pf@e@{}{FVtQ58TsriO~ z?Ez{J4waFT+W)8Ki+?2_%_ZxYz_YCCCmeY)qqv^dO)pb>hT03%o^{G|4*&lD7qu6? z)JrPmZKtOFe`@~7DdaU}scElMvqAa>wRfob{=cHZTkcnW1ys!b7ckM^Q@4upKDAG& zeIOx9YW+{`BWfSJCZA-L=2d@2?Q^fo<A2TLe@*e9+SfzF3jdbcuhhPy_7k=5sae?n zLGtsya|igD+Al+ovL2DY{YHHvYQIzaBiHTETr1!IsgEb!>f=-Q{eR&T4ms-+Q=gLh zB$87n6H9$k=bw!F<T+&u3C!Hsx~V?3if4ngJ}vcmsZU3J4(iiWpIyzb&p>^|c&N`v zeHQ97QJ>lQHSZfjeOBtTiQ-Mraz%GVj9=%!j%W*r`rOp#(UyYMZsW8*y#G(#?*i2q zpuQmWMX4|3%nMW3zknqnA90qXzBu*Gs4qd?uJOD|eMyI=gN*`9F6D4(gN`iYa9Qeh zvBz?k&*<K$6`itDMxnm4Cs(1qD)mjMuSR_X>Z?;<oBA4Vz%?DNCFMQ5dvYD>>r!7Y zBT`>~Y%X=}|5NwPe<2%D&-ed_x^0@tp}slwbE$7ZeL#In>P_lfQQw35*3@@&A=|ia z+frBjr|#27eTQ-C+DW3+K!s@PyExp{;cgE75n#w;3<343^M}-nj+Cg|8NW%eYrY0! zD`kk|_Wv)V*bbmiYIVhAr<hL|T~mM~E$Th$zW*<J$BC&!zq&7C-;(+bi|pySqp0td z(W&oEeIM#4P~VsOQPlUNKAQUe)DNP50QCdKrf?@n{b1pqq<#qX!>J!i{jjkNF8m1U zdil@Tg4B<uejIfj0Z>17Y!>z7$Kmlq;rdC`b=ph)Wa>Kn9f#SsCF`eC*ZQBjpa0g+ za@@~<>pK4(N8owX&!=ty_5$ixP}dd^^@|){EH))Cad;{9%S2H>`YfQVE2&>k{VM9$ zI?vS($56jUmi)V?uFDE~?hOuaq<)hlH&efj`YmFRz*{r*sNe2MA7#Tz@1*`Z^}DFQ zNd0c=FHpaS`Xkiub(QX;{vdTf|E+8NpVdy?r-QoUe@=On`cu>&qy8W29{-2(J^t4{ z{tqcnQ-7BFGt$l5Lj5^Is6U@21&8#Pa{XVX{z{H#EqaZ*{gGC<mwki!yM|ML)1kfp z)9|+)zB3dn%6ruRNBtwGzwc02K&gLd(B*tAM3hgcf12Z;<+)#QLYexP?7sr_uNc_K z{hH3N)W4y9E%k3{S@XZ6Vb1(L4I67e(3pt&k2J=k{uA|I++luJU)YkM{;R{^9R6<5 zkw2*a>BwKAIH!`0@o7wuQD{s!l+c)%#`ZKOp)n^7Xc*h1G-gySjmc<CPGedcQ_z^o zB}|zYpPGg?f3l=!O-Ew}NAwB^FFrC(uC{<^%&a0pW^p*Hl2S}lhCL<G(EiUz<0~3- z(O8bg+|D)+jYVn9OJiXg^U+v<#{8Nu>?ctR8bV{CaVU#Oi2X!gjK<P57N=pHOVC&{ z*X<u;b#n!l62CNACP$XdIhUv5mv$N}&{&bi>NHlOu_}#~X{?gfl4;`At(M_5)}XN# zjWv}V>bZ7?7^JZ-jg4unM`J@8>(kgEtJD?Houa(zjdElY8e7xY)Us%7Mq?`)o4cGX zyomn)J63}Bx*KN6ZO2k*Y&VvH#tt-gR8o!IiN?;3>_TG?M|P#L8;#w?@V6Si)D(Y^ z(P<QE^k|gCBb6c=u_I*~4H^~46B;!d)r==ESXWY_ni-u&i$<G9>P0%kdL>g^l+M}D zIR`ZM%<)k)_VOZo=ahYP3r+?1qiNl}KaCe?96;kL8VAxinZ`jhj-hcdjl*e-cFsdo z)-EtK4yAFJs?J(1AxF^g_rEoc%H<y|#1<qC#eW*d(KwOD@ia~tY5I*FyVoK5Nn*?H z*ELR|aW)N22cBj9e!3%P&^U{R;{UKlub0L-G%lp!(j-b-Ks3&$alwc^51#d|Z79*W zh{k13znI1)j$A4^_ESSH&u|)7(9q&PlTYJn8u!r{L*r%|*U-3*#<k;=@=HXG8}hO@ znk8x6l-u(bqtm#R#yyVQ=J0lh|8{r>jXOuyHa+h$=#;w+I^|v=L(AMRT%sPJ@gR+- zX*@*Z30M1J8jpxgO?Z^XW6t(?R+h$patTj5{VCD^?x|;JJWE5t-*bKaZww3lOyflw zf6;h}#>X^XrtvzBS5#Iyyh`IWNB)~pM&_T+lW)*?lg5XRzeVG1N8ZVJXy_D}#(OmU zoK*PxH1s++G1xgp<D-nz8}bQ_FP#5V8lO4x`8c^>()b+(I@9xO8sF3S#(BP_@tu~$ z*1%!hu=xLDW&vmTNkU|(Up)D%!{0>w+a`a|_%mZuZgV`EbI}~1=1epvpgAc`1%H}; zd#5?E<CD-tHO@cAwoHdrHz%VxIn5E8Q_!4Fl{TlOIh7+*d#Pz0PHQmJkmmG4#5scy z3+YWwC3^3-K~*|4%~@#9L37reG8@fd{Ld+K=F;Y-xggDXa{9b3VLlsiH0P(efQFur zKAH>VJPSL|A~YAxDU0ROmY}sg%_V8ALh~QA7NBYRJV|pYnupO`n&$2_m!Y{X&1Gq> zPIEb$E74ru1+HLMWoWLb3p3Ubhcs8Fxk_%URh?}$<z^k%T*E1A(p+okoK2kq(9~?A zbwYDJnp@FapQZ<{<_4bYVWhbs&5d%kHx_?3h?+hHG&gh3%^hw*^Y8dib8DK`#%(-H zQvl8F3=ZQ!a|huf?&xqQnmg0nmF6zGKWteBZQwL_%aSzrpgEvvs<vnbG|M!@Ttbm% zDHj{jjEC-LvAyZ>znRdi(X8s;h)FhR8(&R-|68-+cr(kQ+0JEl4569Q>{@$i_8j)J zwmZHj%>!wUqPZ{4z4B6fyR>~WX)eL0fc>5SfU#wreh|%rbDc-iJY;0i9?e4yN|f-! zX<knA2$~nrJd);_G>@XGWjsym{bOjJK=atV_m87_{NMf{_c+m#G*5DP@-RzfPo=44 z0L{~L-#9}xigK0^@tjTb9McW+=WIG?o=5Ziajbfwvt2~f!+!H(6`X%MnjZh<PM76w zb_GqX)oETy^D3Ix)4W>DqKt8P4b5va%h0?|S+cg`Kg}ESuD{8XH#^i6;Er({&4*~- zPV*j`{}xe2?r?Y~O<e({d3UCU<BI<@?;B}UXx{Je0f!G7RB_QCrs=_7oR5kq#HWDf z<1~H8Nt7p)CHYU${DkJyG(VvE3{8b}n$OaF&XHmKr}+ZS7l%_=^Ci!ESrTk&Yrg8q z*J!>?a~S_=zE1OvtjlP==?rg)UmdFWPxIZp@7|-S;}x3kXOx`&Ax*`9njfoRHXk)V zr8N=F&uD%_a~S_=enIm~=lsfB^mWGU__s7Q5@~+t@Ozp+xDG!${3+AW@n2~E<vhRA z{B1aYHGil1M~?dxkj-nY@o0@d?D5tFv?d%oE@(|mYdTt!(3(urTF{!*5dF-%T9eb7 zlGYSMN*0A$Q_-3_mo|-;8cqSUrl&PGtr=)3ywe(?HRG@sTK)*on%U{INMN>LYt2S$ zc6nfH4u=Z<wC2j>JD$h?mdF3rd@f;rNjPXNS_{%zhSox~7S@TI$}U37!uz7MEZ{FT z98Imo#h;C=R{j*w@@CqgYc1t6mmY^_S*I-LaCurQC`&C`(cwxCR~B)>b7`$gYZF?l z(b|C4>a^DMT*d#9e@RbTrsvwU*2x-0Yh5R<M{9lY_<WJ;X8LdFxf{{)$ZtA7_=4CZ zXH#06(c0Q^kN>SLXl?1qt;92S4ba+#*0!{^8#&AyWm&S!4z&8TcBECNwG*w~Xzi?0 zlDrG8U4;+3cy}l6L96IU!C^ql<G=0TWpiAs<n+j4Y*2f2tqQHCQxb<&S~X><mb$}+ zlEaExPHEHX&`L!&kG=0tT3v^|k%Mn^WI*dgT6@wulGZ3%htt}N*8a5i_Tu|E+?UpV zl8_le-Fkr24-`?gALQ_0TBAqy_XycK#3_e5Jj|fcX&oVCsGipUw2r2AJgs9ySMpeg z$0?~=PRI}^o<!?xS|`&w)sv^#!>l8x(K^eK(;c2c>&&c*v5?j|wC<s0?sOxq^PKH` zT36D_y!t}pq;(OkOKDwfxt_daSX^3N=0z@dcty@|l^9g;YFcAxUFY~U4)ZCXb-j2b z;fB1_O|&xmc>Hg9{8vkF6N5N!r<KS5)*Vi{)8SpT?#^uMmh|}Fy3e!jcldzA2Ms#% z5Uq#p<-oKa8GcBp<x_wtkJH|c)_<Js3EDH!dXl!qv8QNRP<@)#`?Q{+^#-kHX({Z} zdQRRVMB|0liw-^bw_Y~fldm}RDWLTlEpyk`m1SSvw4X}7N$Xul-g5Z1!*>kkR(g-t z|HdXg_XAoV()yT|;(wM!>k}cPzjcPsX#GYjkN>SN-2PwE`ij;Mw7#bGjhKhg>04Ug zxnF%hjwk;p2C4TGt)FwwUugY04$tq-@CU6w#jH;MOGqZRJwEM8Xip%X_Jj^6%CjcU z5ok|KTk)UvWVENGJ-OrmKmNC;qCK_IJ!_hwS=!U(l<A#51GcRzIWuN-tAh5-v<=Qe zdsa<ktNx&$&9Lp+X)j9K<A2-Ze|s+43(}sO_I$MGQCr&cW)%r4IlsdNG9vaaP!Sha zQph4gRO4c_SEju<?WJfh;aN*M{D(vD)6DtXOVeJS_A*Xi)}SMb|2e(_?G<xe@!uI% zp}jusRcWu`$<@pQX|JB=u1R|x+G}~%+A90Ev~``hUPh$70qsp_o8}wQ-thl(Zk+RM zN_%VCo6+8q_U5#=7_tpD+3Nq7(m%mzZ=09hp7y|Mr@aI19cdS7@8rom{<nAWq^1Dc zyV2gAc7gUDmefz80@`7=voYM?XqRXwv=#ill;S__GVMx68L_Y1x2v?<PS+GbyG~od zpSC6lM_NLLF501;I<f1p=ddq^EQ+@Gq<s$UQM3=Ey_e_iP5VIFivOP6*WrG&_s=N@ z2pP&hi1xwGFxsJlzaxtOxuFiHeFW{(Xdg-YMA}EuK9=^;Ip;AW3k6<8!Jqc=IsJs; zgxEgG=_flp#o?(LkK0he--&0?J~PM9qJ8!_Jm=EBkoI}*y~FiC?F+;pf4+$J)wD0B zeJSlrvUWNBGKZJvY*%>lO4?V6XW0BPw6Dn+a<=Pee@y#&+Aq^q@TYCwdk^iKXzM-y zv~Q+;3+>xz`^O($hg{mfY2WEQivNz>r7V^5{U0Isy3G4%KkkT60qqB9EB@1dh_<3V z?S~ycVo*ysQ69^Y|ImKcDNi_j(&1CIpEkttXH=<*Jm>KFoc;ps7oDQ`pZCryv|r6T z`Zdq}ufx}AzeoEGaY~f0|Jxq_+iyGN9om`{^i#VO|7pMP@Pmv_`$O6vWx}236FL#? zPwA{e`!hO|(^mYa{e{CX=}boZD>@U<{#p_=#Ow&*TiU<T{*Lxf&h|a+ABOAXwod`s znz{Wm?O$^GuPScOHSOQ&jOV5PaQG+fzm(;ha-wv`&ysW|q%#SfiJUmGh_>frP&_!) z6riV)EH-wgpz{wpQ%cFsRCMN{Gc}!==uG33X~m{2-y`a13y6;Pf9Q<R@%TTKGqV$C zaX72P*&O=%zcYs_RjE1Y%;jp#olzWD{HHS?odxN5@b7r=x7LZS`0vQVbQJvQESggm zqqDe6SR#`~M^k`PyhGLMrRXf}lw}+)D^AfB|LH96a0Q1eI`s8_XJx}js?*b1mCkl_ zR`aaY>8wd-4Q1KSyrr`ioh|6BO=kl->p0K4SuUORJh^_(X=-oclnv=@<VgMqFw|#L zCvHY(^Q?#`w-hctx1zJPBilIKR`hIRN4eWOaR)j(I<ga;0-c@d>_%r7`A=t8dDL9K z{oC2ydG?S5``H<KC(!e0Cv<wzVM$r`EFj@Aoqs!0rc<GFD4m2(k51KzH9BoNb@7YY zr+|*806HxZhuzU}O6pKkfcImc&H;1=boQdNr-&*wY8<cLo6bIT_8rE7&VJ6Ye^%V_ z1BI*9K@Jb5Gun|uGP?KCVRWvfb2y!|=p5mcBk7z*=O{WS(m9&WadeKMb8J?N3aV$1 zr*p#pr<_FR6gnpliQ+kR9Q<_QBA!9#%yH;v)47DsIdm?dbFS`$bk1|A_y4FaQ7&|y zFY;dS`#(lkk6fCyf{w5MJD1b(#lLIlMXsWAHJzL2jPc|(bgrj!ZC>iSObt4U|ITou z?oJHxo1JnCom=VLCZa~x?dmV@GS9t(&Yg7Lp>r3V=jq%{$F#l2v+h+9S^hpc_tSYm zNlAE+j-oxChv+=4+g3(*Nas;Hj~Px!FOD9E?(x6#q?dY%&eL>!Ug$hCG@~3?Q-FK& z3v@iNcYF%yXbPb7GM!iGXyxx+p!lD+-5&wOqbY#Sn{?h%uJE^Wo_FbdLFYX>7TEts z=R?nZ-=R+d>ei3)QXdc3NS#le;WLMyD>s|1I$zT92;cdNj-CI0?+o8K{FcslL-P*D z#Sc#R_&=ol?37;&x;=lR_ZXeu>8?-b57I2E{7FagpL9IZ85~jkC!N6IgrpOZPD<+W zU-U_wuK1tTPCA)WCMTVObb8V$Jvo)0*V3sSPUCP|htnBU*$kRB(h<_RNj?5c{!FAZ z+eAz{3+bGsvy#qE>c<?JO;V5l*~UUTS2krk|2(8ilFm!IkSj1B>HMllG8b@YuYmI? zlrHSaMMxKOWKn~%PwMeMT_Q_*);~x+lBXtQDbi(0mv*}1f8PA%NLL_L@Yl~L8t3ug zpRP>m0Y6>EiK~vxmq}PX<0oCi>1#S%i`344ts~aaMMr7AuGmCbpS0|h4IG-b8<NWN zNjD<hm~?y6O-Q#Q-PDPjk!~RePKQ$fsmK4J4L$y++mLQM^t5z4E2XL2TS2;m3)zu$ zCsBr_b|DQ&cg=ZrBi-HE6#q%R>>@AZxglxM>7|@v{t#!lX2Y~XdNgT5+IKde0@503 z-IEQ{jw4OdR#u9%EyNz3QU!m{?UME~+#5R}J%n^m()~$CIm2G0`#Q2W>2Uo&d`w6+ z1$e0goFR|@smK5HU?+~wdfD+qNe^@6aD$E<;qXX@M~%aI4C%3?ACMkLdM)Ykq!*E% zKza`8iKM5Ko<w>I>B*9l4b}8i($jPmHs9qVJ%jWtmwaYMBt3h?%xi0~MP491m-GTh z&U1LaMA?10RPkStdDvwalU_o473rm<SCC#tdbt>~TKp7`^hz;n#9d8#4e1!=npXA* zV~E{}O|K(;ob-Cqdq{5}y`9v$;1<%GNN-lz>}14Fz0+GsZyO5tDoFoLdKc*(q<4-i zH?fqr3xSrU>h2a|XMgFvqz{qaNBV%%?-zZj|AVrLyz61oN2Ix2`ccxygqx@(Z_)m9 z`XAEQNS`2mp7cr5XGotSeOlFd)2un9&yqf;ZNrT6PwN6R<IAKklD?!`%=w2pze4)z z$byq-47#?Y|0R8g^mWoVjg#~Z$&prXk-n|6CUdCpyQKf~>fXzG*4f^d9PxihcV^O$ zNG<$+O!__PC!}AIeoFc|>1PsaI!N0uNWWClv@*%+*{?~zCH+PX9|ni-gb!`<1L-fM zKay(OhxDgm_j!xF>R(BJBmG_cri}fTo0#-Zx>Jz;MRy{)<I$af?)bw+{xs9mop6Yo zKHZ7wPD*zYx_<s^4(7f}cQU$@OQx%&s=HItotExYs<b;b-Dx~Gzu(fGj_wFu6Rul8 z%2L_W=*~!YroSl*1$1YjYZ7LqyAWLyI}hF2>CP#&yK{(BTFpgw?hF@{oO$WaPj|jy zrP5&mx(iC%tS)J|Fx@5SE`pslT4?PqD&<9AeAo&Rm(2L-`h9X$x)j}2=q^ondAiHc zU3O%-bB%}Ya$fa#W-GcY&|S$jTv6UGeO4YvlU3=iO?NfAYtmhv?i$1H&iY8rSxf5y zTg7$Pp_~8ntGiydNYF^>Zb0`;y2csP)&37%o&VC^nC|v;H=(;ZU623W%~Wp|Te@51 zZP64!cPocm)7{3AZ5?i>3$a$j*6>{q{@oqvS}*KGcQ<G7xu&~|<30u0U5>8ezf*h) z=oT~{RYmAf@!ydWU7z&x9;aKTTcPV~`))$lgMZh@NViT`D}U+ZD$#Ax-IK0@KV3}< zj-+(Ejwt@q?b977%f^fSL>Wc*aJqZZ-JkB>PEq`)>(fEkgTL|1dI!)Q?O6xX_2A!C z@YipJtLPr$S%+p6x|#xX$EJG(-DBx0_&dW<4v(gLOhy^`m-XXubUl1^kEeS=&UvB` z`P<2K%|lMf>8A=AcG>BM(>)`j&^?Rpqjb-vd#lsWp?fafOX!{_25~C>)4jmqg>)}+ z<YI&Rsg0M?y@u{(8HMiUbg!U$wX<F6@G4~u4L(M=N@@L1_d18y)4j=&8|dDcF$jv` zW{0<APg`_v^W^Px@1-lJqI-uyNA7fZm&3aq-lO3op8E_sa=*g|=suWJ9-{j&U621Z zK(c#N-N)!z?>tV=yz4*oY+yb?&%)7@bl;)-6y4XbH+x9(Gjv~a<XMN$(S6=q_d;&% z7gf>F@-I8jD-K`H=yd<<$=B(=MfVNI-&EG$rQXhPy6@8c${F6H`#(qCr~4`04;=r{ z>mBa@(EXV1Ct1Bt|IB&(<v&vU3%Xy9llwK@U+8{A_dB}Z8fTV8_j|fO4B1pl>wmgG z(fxUxvcJ;(-RZyOrT(BdA>BWn_?HpsjpuNDhZAIM8KgH6y@{PZNlrlpd%pjpvXj%B zgWeSMrlmKfXL<bZP3`zJDwUbHHyyp1=}m8R&ziyEhzp<5;Y=B)(`RuwtHasoY5&J? zXPcAW;`HY7thwneN^c%|3wm;1dh<Dt@Bj3C|7TcgA$kjsBY%-hnwMH^9DE6SOVZ0U z{6|Kox0H~foMq^(O>bFxD;b5}at@bwxPn7J0#Me<^j3GuD)d%0#PQXH$Zl(Ra?PBs zBLJtYLvJg3>(Vox^_;SP&a;7#A=`%ZHlnw=Gi*$6lbpw=fZlKlptnU%-!dypZ)<wn zd8uvaZJXt~KHJmVgWeAGcA~dq#_Vi6JM`e++cmF!H+s8gxR+Jbb+*7^NUu0fZbYw1 zFV1<&&Qqb6(DSh0(-h!x>Yn9Oz_6JuddJag)7yt$hhE<qQinbT^m;05yBxiN6ZfRI zmm{Nw`|!QJ#W0k%FTEq^?MH7kz5VGO=$r>+TPXAnqUUe^G5#eN@T^1V9p;En0ZT4G z?{G=8pYOWRJCfc}^p2%>G`(Z8m7cOJmRh8;RdMfldgswQf!^u#PNa7Vy^}Ht^iCEc znWq{;@3f4rH9+qSdS}x+)9Ggo>5_JiQ_dZSay~tUdU_Yo^Yy=QO#xo}CG@WF+)L?Q zM(^^Bp0&>DS4vM=?`nGY(HleW-}J5#o8(+e?>a}W&nY+1yU{5=9rSM2Qb(M((7QFq zeG2H^t|GQ}>fPZC3jU7VMNh%s@p~NJtE63Y>?!y=<pGBe(t9YUJnWQ5=slWI+*=-} zZyod>`fJg9g8stvo}~9ay{G8?*ZF-4=siQvgMaTiCqAD^p!Whj5B}2sC3-LC^jGNR zM*zLoL>xNL>t6f~dW!$_-g5Z%$nx9Ldxze8j=XD7MMTsT;K&Eg`62xY>3u}+PkJBI z`@)HzIQ-P1PXWEpvo(xUzI14o`Pz|h=>6o#w^~B<{0O-BJ-r{C_@lvWKK10!^nP)+ zUx$-y&$fVmcgi0_wruk4{U!eXc=X4Y1mXE#0QwWrpNsy)^hfAV;#tt2+>uG?PnPkI z*uQD|Q#jG%e}5{+r=~xR7;O1%&rSVl=}+hM=^ZNgk6oG5pV5gk(Vy871%F38{`Y62 zKf8AP`g08T0Q+-_L6o_3&Uxt1>qX|HzX1LDMIXE7>@P@vp^Q^2^Zp|Amv-hw>Fe?* z{l(SGLi`B0za)J>|LuG4i@uZ?hFUE{e_1cS9R1ZDS)Tq1^jCI#MTeRl^oY@4MTo4b zDS-ZJ<7nkmK!44QLVs=gUHa?L--Q0U&g}8OzkV)Z11Fj?8|IXaoU*Z!YS*Upx1zt9 z6MbsvZ{fHHf8$X@wx(}(+s5hgRr=e}SHP#gy~7<0W{su4lW=pk{x0;Z^mnBn(cg`J zK!0~-sni}0hbKXfhxCh%lnm;Zji7$)#InPR!$i6E#Mk$Upzra&-=N>7-&B_5w}fQA z+V9X$mHfLedh~r#=ntHEPlu!E?@fO%aoW$GSS4p4`uk=VrReWRfB!6({sHt4)H@>j z2RS_0;b?<m5dBd4FVH`X{zdc;r+-A=oFnO<=8})1e>D9Q96!e4vGk8~<amR_y~qBE zPC3cp$)ZcEQygjv7(Tr8Pp5wd{j;5ZCVh|pe|xe|0sV75_dNRN)4!1Z1+q`Z^Ec<k z^e>@*JN--PU+?^vIlP>{CI!c@ba<7+s~wJUs40N{wGOW{m^b+b`Zp@6+?yQU?C=)) zw>om0LH*=u|E7OGeUJbBJpT9Za<;qa-{Z)=^zXArtzjt(n|%-d{Rcf)@t?j2|NbNN zpQb;I|MVZDZ}I<0XRs+ie-n@p)%#S2c-Aw*CFEI$&pFg1fFm!`_h8<CiT=w@dBx$Y z4qtPqsl*YF|NS>|SA2`Xdi39>{~P^x=zr`y?>c;s{{I|#pZ-Vm75_c?p%A;Mko^gw z{|Wsc>3>T9E6@Fm{^vR87f$&yuj_02-#g_S`rqa}-w9EB760|K6+-`~Jojh%zZg#c z*I}+k@$U@gr2hv4=>O@te=(R)$Y4B&ngSS1U{I0=6A2MzVuzFD^hp^^<rGZ;417iy zOyNaz1nk7A8O+RJ8U`~knAR!NF__+vjKP^l7|g^#!GA~}mR0;`Fe`)E9npqQ#=}5Y zfSfoNgMTnk{AVx^gT)xk%U~e}^D$V!iFyQZWI==DNLZM`A`JZSH?Nn$;^L90B^>7G zzXPMJ!eA)|D=_dWW3UW^<(y|(70Irh43-xzi>>Hc9{eS3<#Fm=mBDHZ)@HCegEbkf zp(0+&i>x&czK&DY&GlcOLCjzS2HP;ODmG`J_|L$D|6pSVn|g8+N!VNwo55y(pMDOu zV6dgKMBj?R)){WD#b8?}ZpR>Cuswra80^4cCkC1hY@<HoWU%wlV+Xr3@Mu5S%?s`> z1`jw4@|ysIFfZj(z@Wq+8q4OT$__pL4;23yR2g{uAJoMuN<)Y=Y_Zoj4BCu(oI!^@ z8w^qgS2E}_IGsU{!QKq|Uc}@7V9#8_C@1<9VEfpEeLT4@gV7B3b9{e?2RQTxfx$tB zd-7l*wrCj~!r&;U9LnG@M-Eq(G(5uLkxCBT>}aPP!{As){*S7&0CwDHws80hZ(zgB zoC-73A7<JxGsBfFnQhs!Bxl3S%o~OcGc#|PnVH}8k#w`K%5|#ebWhI+d}cI~Wz&Bd zqlG6jbds&(4V^4JMR=<4G>3|@(L~IdDxPIUYwK)=&XHl_FGKo2bUs5DsCc39BH_it zOBj;c4_&I_We#n8aZ~-FD;T;mFIw`e@!TnW4MX2DbS*<p)~;jd9)=|TLt|9^28N{b zLpL&XQ?b1_7l-~<hQ=~<8$)*}_;yRabatNHX?A{w+$FE+zw<J5FGEl35Z}kp{R}<K z&;u4}2mL|eLsoQGLqm@+^thNug^y)98G1rR7x2_@D`K8u=yiskW$0xUpJV8GhF+BY zg2STvOK!?!7i-qyD-6AAF0)_DNZD^NG)~5w!nYWD+ZlGe+{c37W#|)z-g7w_lK2mO zVEL`6Az<hu*&i2&_*3(`rNyDo82a4qg$;ed&{uYQbm&X_mSs=x3`zfozOnD1wep>k ze2?esAMhq(=tqYBWauY`eq+d%fEco$fHCxIc61D__&Y;?WVSN=g{P&Sp}$qs5HMs* zKvwi@{l^(r(VG}=8oWvHroglHACZ&cfj4;;GhXnN@=E``sf!HL;?0CN0#8r-cp3sc z&8aNE9{%xc@u!Hl#UDI9|KrVyH{1BF;LU+&ij6lX-duR|;pzE*W9AV*Z<Y#ge!PY8 z7QkCbe6a+i?Gj_FKzNG|=f~3}fVTwRl6X3H-coor{~s^L=KpxhW+a}8Ki&#>TjELl zt+*22%6J>%t%A26-l}+OC~P(1>e=-U-kNx8;}!bvj<2^4p1b+0J73wI1#kWQHj}r3 z-I#Fqxx9_=HpR08q2k8Mxrv>t`O(=-J=|Qlg^})xz}pIMFTAbsM&WIPw}Wcg5P-KG zp6P$S@ayepw(&dRN&n@-+XYW*@9m1WTNYzowMf%{Jo~0wH_YA}&-5Q}U%Ufl?5F<h zk9UA|$wk_3JP7X)JQM$dIaK^%7Nan{Bk<nFI}-0!yrb|g$8-8$$2&%8kHs@>$2(4_ zA;25L^NQ-G|MuPSd<B^P%cux71bDT4`1Trjr{Xp7dUz)Ocx_=v7}_s4J@@ColVm^S z#EbAo<C*y5X@Kxd{8dcxr2pOtBbQms$YmD8J5esp|GkrCpJFceaf0lfhIbC0#NQI0 zfhYa<3jO!aw#eRVc<16>glFRKK6vNjN&h|5fBU%mGM@C`yQGM@6i?#syte1Bz#D^S z`j2;25p%VQ*Wg`SFxTOk{@cg);SB|UBi>EU#=E&-Y+NYz`E7FDj&}#%Q+Ou+cw_PI zlW`ZGi9g;w4rSbHhV|-xyobd+fcIeGeW*zL2;Sp(j~4u68L#*!gm&&J&(nBrFFk|z zBHpt_{BwBE7xoL|)qP2IUlzWC_o~I@=icig-!R5HJWlwg@GT>)&+kyG;=N00HN5vI zjlg>!?^nDJ@IJ+p_<JV)s`at(6Dyu|BHm|sPR2jS`v&g|yszZ_GMl`~HvQMR@vVyA z3BNbe{aUBtz6(E!`APV*@z&2@@=?b7jndS3zf%J5kHY(>V%!k$H>Jt&B>vvNlqRM$ zL0+*mA*JFkz%<5DvcCYMG-(##P6kU-vLS%d6nW;-lqybT#XMjdO4C{~yYwziM`>|N z(^Hz4(hQX5pfn?;SygK!rI}>ROlcOYQrt}zIU6Nw@xR$@X--OW8DkxoTR4vu-C0_i zkJ3V7=BKoPj0Me=dl$}ZN{di3@u##{)?3wGg3_{-mK48~aOomGYik)Ry5nA2PTu7y ztt4Xw;fjUV=Ko?=5w2SBt5Z6Z(i)UDqO>NZ_2pelxVCT|O6yWu&*I&q3)y|l(gt#E zXk;e2CD(z?MQ%)K6XR_|HWhAWMeE@fl(wR@W#%2ZsylpJQ#ydsHk9mEFQsiMIdc0< z{VdG(-j0;^ptMuAPblq7X_WX~gu4oN6YlP?sI_NiQ`(D?z5IdFKEi#4`w91Vn8iD! zbReaJ>>0e$!ITa$UUMEXhbiE2O2<+<!dw=AB&DMY`)Eq0|M?8fyvI>Go{~>#sEF|> zl_-_1=yqd%LYn?lGVw2%nwUDJ(<n74#VR%_wJ7yuw<&cj-YSN|Zr)X6A~Agnuzg<W ze<`J8`Y-PZ!qLJLDM|lJC%bqtHUv;Q)uA$+PD!#{I)l=glrE-p*2o)NAI_$99;I^> ze69uSd0k59Q@YT8a$CBfU~K+h*rxxKF4bPWOn5n^E8J4;$W5&kF;`J?C&Sg0ZlZJz zr7@JQwGFgGbDi+|BJu`hyD=-uHvOk`i@o=+bStIXDcxpu^UQbTwtKJL+%EZ8N_SCu zh|=AZ?iqQ~lC~;dx|h-el<uQ+zbm>s=2pedAL)OV%1w_;4^w)C(qn4wQPTl8B{u$X zGu(al(vy@|qVyD{_b5HBuxEtN3ZHW*<9Xo=lwPFtCZ(4sy-w+6N+$c1UMbFs*Rpt< zJCzFkFOAE-eTsaG(%Uke{=YlSOC;Z?^cAHK<dy!HJ}PweV@f9els*-H=1|7xl)j+! zr4`+YnxCs*Q~FolZzz3B$sOYFRFwW(k{?w3k<w3;evz#q!1ms+u4tb;)$j7UV`Snl z`!7m=7q-0u$jI^p!U-uaNO>a4b5ov}@^q9Zp*%I^Nhwc3c{0kAQzkom|3i23m!<#Z zsVuD(r%|?Pg(Hlde_7enQ=Xmj43u@Zw>%^61zp4Qz4FYI_1J$|qkwqI_7ecr)${*l zE&f;&`THN#+&q+R@=tj_Ys-xJDQoe^J>-_>S%~t&l$Vfq5uttpP}Vg?+2;RhWl74* zQC^DjGL*IcU$%rr+I;eFjJ2}7a0TItM%tcSneq{oSE0NGWfOnOs|i;Zu0dInUS5;3 z#J_CfFV{Mh*DY)t1t{AXVRL}8^xv3`D62DOZ>*S2D4Y1pwr?M08y!p*%3D$%C1xwi zTg%wSTo$t}<?Sf%M0xvy*@5zoX6IY6bH?Ytfi3Ssc~{B@tL|>X-6`)ud4Jh^Qg)r( zm-60}_p$G?%Tplb{W6>K0mfVF2MTQnkYPgr<wG6HIE?b)nQh;x@{yD;6MvNOXv)V> zK9%yZl)IFV)6PF$I7GQj+2;S0OWB6V_9<6n1mlra$~DR@%5|k}2%8SG7|Lx`=?KH| zD)uO+BJC~!<-RZ$CRugL0~Jr8e3FdO!V?Rx=|AOD9NNcyXUnHiK8Nz@>cbfsPx(yB z`u(p3pIy{Fm$FUuDW4}ipR)b7CG$Fi@<qang_j5~b!Y)r>vG{0l&_?GKjo_^-$40l zg<WG|mchO<l&_<Fy^Jx&YqwCok@9Vnwf<u<H&edFyk_5;#mK&0c!%&#;aK5al<!st z?kN)9EB-!*;vb;=w3r8l4^e(t#v{T<g^xLu@i^rtRO?CMQ&~>g&rp6>G0#$dj`C}i zpI1?nf9vgwD%vAJlwVerSA;eeI8wab0;c?ia2(|~GZ*Ez#Jo-Uojf?-Iqy+^pYrGO zejxmi@<+~){V`>G{zvwwlt0VtBIg(4zoh(C5%V?WZwl|XluiH5We4#G0w>Nt;;%;e zCow<cJKg>Te{vOnrTiPd6KxZJF@I406W<B@UzGo)Z2C|6AM<7lkG}NZpD>Fr$cZh? zpTx*)^65{8j}@~~!=FL{Q{qpLKb7$oKebRpfIlt%2o<Nxs@U1?&wxJ%{*2;BIutn* z{>=EZ%9j3H<ZSr)n3z|${Bz>ZWwp$n8-E`B`SIt)w;z95m=J$~EVIHE!e2^;T>{`Q zg1@MF&0Y+@5PyFOF-w{&+tvQk_%3Ey{AEnUvfn-V%i*txzdZg5cHhdq)74E~+#PU# zCHz(F0^DEOrdaOnC2n%!uWAA2T^;{Q{59|c{593kTKNCNxA(u{uOnt%d$!PDPq;q* zhB9otkg<`&!rmDF0Q^nxcgEioe+T@{@VCX^9Dgf(Tl~S_GTRD6D{hT1{nw_6*$#jE z%xh^aW=H&;jLD0m@b|{wMXp`(_rRC<`@3fW4)OQQ;_>&&Nz1bj{=TZUpLvb3kwV6S z_{ZWOB>Q0eBk>QBeJK9nG7c*uk8nl%<Q0#S_h{iU<MA2-d<_Bq5Wa_B#+UxPx;h{5 z{VX28g5Sljx}5km{FV$20e(ZahJfoYklhyAB>;XnGQCbl5C3HRNVZM>@nfOH--;>z zz%e3E5RMj_{^OtIu;|Pw_^0AuEdDfn>A!!5if3Aw#h)cK{l`BCU-N&n&%-}oq;*w> zog4TUWe?=zUsCXw;@bc!uk_#7Re%Lwh5s%7)%aiGUxR-;{<ZkGC^FmF>+#3n-(WvI zu!DFb{>}I|*@B@v6(s_;E$({3zZL(std)G-(!T@$PW)H#$KpSYe;58E_;=&qul)Dm z--~~rU9AjXqxlcuKaBq%{zE1>j(0y4(!=&6SNseAQGDG6@E@}a<Q3c=cmn^)e38w* zcNzlR%*THQ{{{SK)v@QSSMK%l{_}S2V8)B;z)QlH@lE+{&B3*08}b_dXZWw<zlHyX zV#W!j|87CgJ<;L6jqmcjga1DMyZG<ryTUzJ@7DVK53KWA#K8Xu|KqHO_@Cf^YHjJx zh_>i+W&T3=rMdE2UrQ6D|Blpt#{UlgdwjPaH2L>`RIQ)zZNiWLGyX4@A^UN(|669` z|BnBM0yO{6y?>k6YW;)%uNlDvITP3rKroRNofZX?P(6-dQYtGDOh#}80R*QJOir*K z!4w3G5KKuh6Twsj(-BDggK3mR^Z#H(mf6mqVEW7^n1R6bUtuHjuR}01!5jo8{sglM zXDec6H^VZ_NieTma|!1rm?v|oI3K}+GUg|c{^zw8vKUKi`ma2T5-d-!7{Ss6i_2x= zFT?boV5zKEvNL`ef@M`)&Y^v*KW?|IO0c5%m4qt`SIGiouSTG$exOT$U=4yb&8rLw zSX;Ob!Mfv->k}MEumQn#1RD};O0bc_B&Wf~YJHQulh%{X2(~8JoWNwCz=i<DZ)HaI zB@MR8Y=UjGh6uJN*o|NZf?Wu9Bp5|t`cJU4MP@zB^Xxjz5bRE{H-SC>NnrX<kl*~Z z7%T2WurI;>1p8SM<smp=Jo_Mm4#B|$Wr9NpjwLvhzyzP*FajG0>|+PwNP?pYO#HJv zia911_CVqv98cg84CMiNbET|E;1g6;%jW+Cm4dGkGzsdK+4#nI`CDR4|7C;(C&=g$ z^a%O{Hu*2SF@dfK0u2Fqwm}v^Fj^H)B+#@!DD>Z2v`YYjQ^!knI>8wP7rM*@XA(&K z1Bridj>vNfB>O@B3OJD$<oaW^E)sJwL81S_rD854F!8s@Y)Lk_lHe+Wn+UE}z%{~a z3C0je{DbTBcuRYO*=F3Bkpwpr{6TOF!D|G!5<Et58^Hqvw-ek=a0kIy#oNCt+GDX! zHiNsYu5I!?1oz3f*Szi-(cpf2tE8#D>%fDm_z=M(1P@z)b2)SugTbTu)HHaU;Aw^F z5+Ha|_EVPM{aPw`hTuhlX9->)c#hzC<K09z``M`*J8VN<BG8;auzSQ}UbQgyalhpW zUMKjP;0=P02*we-OYkPaI|OeLylwLC!m?%R>^CpLdjwAQ-8Q~&E;n}#KFkb<1RoQ8 zCgT%=PxFIiF`pBBNnrY)lNS7y72TXL_=ezTf^P|aBKVHr2ZHadX}2@=OECf)0_>Ke ze&0m!3&C#$zh-yh4Bf5s!2bV5P5(({B*9-)rY88CireS^P%+sjupz+yDz`Erm5HtC ziuB+0uri6cvVq=3RwlFf3PN3LRHmRZrHWHor28vX3z&wANj;Tmsf;k*?CJ8JRJ8vq zGv*I{xm)3tnW)T3#eM=tWftMARGcmS&yG%Ijx3KI-^yH67N;^dm4&FxLuGy{^HQ15 z`l)*s%CG>H1@j~2_LzH?qp~oSMX4-edGefE|97^#yINU-ipwnVuPkLT`ZX&R*K^5! zWf>#g6IPYws4Q<sK}qZfn3WZ&jHR*?mCL9||0}Cdk=j>QrLvk;lw43*gGx$eO)7^_ zS&PcnRMw`lsSBX84i(dXD(eZ?r}9548`%0!#oqr<Wh0vrxl|6VXnz4fMgIb0wKh|& z&4pW7n2}ow?V#9&No5-<JBcy<r?MTD?agKO4per`SB5velFH6hT=G$J?IPS&8Fmxy zZc{0%wFi|wGrM5+rm~N7$-6I={iqx$+vfjNGz7SdBWvOy;lWv>RNRg|Mlpv`Ib6mO z!Xq8ZIEu>A*^-gX(<;YOX;V3lN+9p?R80S=c=DFANGfHKzQcm4P_g;H_?oazrJ?O= z7F*G>0NZ1oA~K}XRdBC}iKz4y6AP1!FT4XPCn$b2mGh`*@?VkoTPNMwcnXy>6>zHX zG@%I#l`|Y#9_zqa!n3KIBbVm?`OeosP{|I24H*i!h|0yPa*6O#hj}*3d^wdXsN6)w z?f+{Pe-)LhEx=9oD%WJQNAcHDk^Wn)F;q<dsYv{FEuiAfRBoYit5wfW@7t){Zbb{e zgUX$mt?%PqRNdF)ZYuXuxhLl%TbrVCAC>#5{7U5kDo;{*P}LvGVyHZ<;v>RGsXSJ+ z^|%<*e<gW}$~#n^7WoX77pXie`#GVl|Hyd3q2gbn@&=Wct!TY{h03eqUn?SC&m!d= zCwx=*7L~WN7{$L!<#Q_UQTaq((|;--Q2DUP^AVMghvVh_l!^@p_OZ?Xg39+)zRVaZ zUn%BmD&LH3{~-HYD&J+cLn=m!|B=d1h5a)Xd;Z6Ymh(5NP8ENrI+DsCRHgG3Hw65p zihmci{-GlAceR|ZRwtwi)rqK1Ms?ymrfNd~)k&@B)HU0U)yb(&D}D;9Q(BAFsf1G( z0n=E#@gt~CPj$Mis46oQF}eh>n3<@~Np)t6v9@Lr&Pvr5|EX$8$M`ucz?iwH&P#P} zs`D5#tohaXvH(?IK)9fAA*ycc7N)wSiZ%pLU6iUV{>xsRs@)oJcEM-}u(n*}@`^G2 zr>e1_y4-k?D`Ym+m8h;ob!97B<SJBGm0|i%b@hT@L&Y_%+s3a=brjWgsBS}bU2WZZ zR5zu%KGlt=ZXjkutLugv>yP``w4bV70vMlf!e&&rq`J9Wn*8VdR${jPFWBmCE7Fc8 z)$OV7KvmQJ>W)P#|IPoY?n3oYs=HD>fa-2k_o2EwRZaV=`UzOxF}nnyx_8zPRjvP2 zi}jzX>A$%w=0K{p{v-Qf;USrq>S0um6l0eFRJ8=8id41!Q`P!U)z*Kg9_!Fmq<TCx zcR~(PHDRafQPt$%Z0Ud1ry9tm$-j0c)f&~8sn)5UN424ZO{%9-ZBb3Awk^4}(xIyL zf3v$(dm<xcv-KYpV++o0T?<rg{!jG;s-tC`XaUBYMD^q%(&qolbDCVI3(pXqDJ<6i zt7oft4pr%YUQ7C4mHt;Rq<SaSi<IqRs@KT4M0hFH%Vg;NZ`CVIjjMY3Th(6vKvnO5 z(>_tywN$T@Vfs&X4Aonx-eA+h>W$fiit0^r-R#g9bKNSuO=xd{pn8Wxg^d;7CA^#J z{W9*MdasQ8vT@l)?dk(mAEzq)uiC?(R3Ekz(z@}8@KLIdWsJO<{8yi(`W)4##OQ(2 z>NB#R9gbA-d7(Z3Nmb8+R$s~jsM>{q^1n*;HL9P>ex2$YR6n3Pj_TWD-n1EYReu3# zYWWV;_o%*`)wL@W>!<0z%?Ya?Qq_o1{fO$vM!F5LZTvKgr}|kohot%i)qkiK`d|Hu z>eov34OJ)O-^%`us!2W7@2UQvO|Tz-St^INML!FF5&mjqzC~^b_`@DIt^O(eOZfNj z+*>*SrDg+!*|iC&O(dhx|C;o_HmOY~YLijJBC{DtZ3=2jQk#<60@S9WHa)eeRafF~ z*`}p7LX7l(ah;I08K{|(Q#1XiHj>&*GED!e%|dN9YP0_LhS*xZE%vt9+MF&%VRKQN zTZV=Jt2nQU^HG~Wizzy(A)vO9ybB8#p|+@u#e|DHl(B>v?stea6Mt$tptZ~;@vlkz zYZ8A8(6~@D{in8~)wNx;GW9*EtwK%8Q_~PoTaDW4)HYJ2^uM;I?6s(^Z51uUI@H#c zv7T^!;RX(6Y-onN`l$Vn+9A|7rnW1!O{ncG@21o?qqdFg&8cl6V@u&y4rOeee;;ex z7R+|kwwG%M;f~aHGMB#5Vnzvf$w}+vZqyE>w!1M_+(Wo0wY_BQO>I9J`<MdM_I0+5 z{Y4&-6=feJJlL2#=1?(*Wel~$RXjp?B(<Yt98K*w8OKmN)*1G36W5y4e^2~Sv5nGy zeG91h)ZG~sQ2T>gh1$K;s?<)PR-+cGR$bVj)|An5D5FiSliAveuE<{D)eunYQ;Q2G zp_ZC$T^eL_X=<aXjiGiTwezT*MD1)PIhooiGENnqCUkr3OloI1`@ea3Er0)y0?wf( z{dWPjd(WqK5w#2Cy3lHgSMg%uCDbmJaT&EMWn3=2!l5!;MeSN@S5vd`!WzxihilhS zyFQC4_U8@M#!|bH+U?39{jc3D`xfD?xYuP%@QW&UP`fivVyBAfzasAz>is{)-$(5W zYWGtcN9_S>56k-?wTCP|8$oK1P<vebqtqT7=EXcg?MZ4c$$pC3)6|}q{S38dsXg~! zupJal{;km$i_9-8_!Z%+)NIaA?KP`q@o!{?$Tz8dDB~?^HXO))NBFMrJ)!A8wGSM+ zCa8Tx?Nc!y3qL9N&s4O5rs&C+)PAP+l`)p#YijQQzrHQJ-xd7#)P5-JAF2IhcD|Q> zDfnNh{pM_HzYlv={FB;W)SV{(O?@J2{}l26nzufIaKb!WePZfUQlEr6)F;g&>+ZEk z8q@2OD|iayvx9CKrV=?db?JW|IfD8~@zV*X7tSD@vB)-)iqil3EY4PO*1|hG^>wMw zL4AJeh5py)Qq0`c=PBanr9Pk8dAkcx&+;rteIW%eEL?=T={)sCg&G3t?p;9Hb}cDV z`d>Hww~srH^<}89D%Y~qmy@x)a0TIt!j-76><q=Pk{RMx6RvKIwJZIvuStEag3&GD z`Z`v$wxs`c(|^TpAl#7pM$~tr{y!BrroJupO{j0K;-<pQ94dqKzrH2)t<j2{@$P)C z+W?WpIHbNE_3bl;`VQ20%v~0_vjRp5rT-ScEA`#P?4AjQa_&hqE%m)<-a&nD8cuBY zp?)#-eW@Q#eLuzTFFe4Zj0343B;#P}hsrp_bz8<^4h#DT>J92gia&~ah5FIvwVoV9 z{aETH*~bZwr#?j8vjEMs&2S6L^|HLKSAj9^<0eb>s>oW#P_O6LVs+_%y+!>L>TShz zikOgkm->Kuk9tf!qTbJES+3`9b+MjMPc7Ij3uog_{RHYKQ6EkHM4RckRl978SU)+- zX^d^lslwB!yF;(hp?(JSGew?dk$JXr#GGr4)jE&*`7$oZe-U55P{oTZ!2K@1ehH1) zs9#Fm-myddGU}I8zlyrV-!fcjk?ujt`qk8Lpni=NjlY)qbuw%SpgzX<ybm{0zn%I` z#+Xa`U%!R=t<-ND4pVdPWVq9qd>hA7H~pu6H}!jr*CmWy)YR{z{sr~>seeNK0qP%7 ze~`KfHFX;Ts6R~o5$amau0KlsF<VA<^YHrP)Ss{&>xyn(RDY`ApQiqdy*l1vo)tbv z{rQZsH_6vuR9X!g^_Qu?q2eplUzK6vPyKa=#a53K^QQ1E>hH<0A%OZj)Zfj*3~fKZ zPhH|~_J>6V6MyTTRk7hf#%I)}|85hE|C0JY)W4$s4fU_H7<K+zdB3CnJN55n|6pDd ziXW-}WVW@X`F~yW|GLfpspo$Ipelb*|5Jw3f4%%col*XOY0PM@#soAblra$v6LuOC z)0jj?q5qA^RD{Ol*{0<i*qBoMR5YfRF%1o=ePdc0BkX3q>!iD@(wM$5X2?lvWu&Ui zL}O+dh5k2Y&G%Sib{bpJn1hC-uQ4Z$xo9k|;JIm-{?nM(wxuzjRWW0J8Vk@^gvNrl zNZwe;&O_rDwg6|3T!F@-G#0bs$Q9&Tg2pm5mUP*aP(wgtX&P3vkK3h<WofKNW4R(` zc^WGe_KGxCD)z?8G*(gksu@%8tGi$tYtUGe#=0~L{co%-UizP1ST!^RG}foFf%0r9 z+-Nu(jg5<TH=!Z%Z<zSg*j#A(FJsH1>8)uvao&c8guSt?yxY;(zKGmG%#Jj6%9x_! zDDk_{*p<efG^GEH-R+y(*ux?-WoVd`WknkM&^VOFz8OPfKN|bfIM5Yo9AG=#4C#O4 z;3DP_Gi(nZM&lS7hZnr&|BWMQ9Hm;)|GdRx#T+L*UN}TUBSJ%?K=vp_qnzERqY=>b zXjEuiOQTBTbQ-4rH0lmzG-#Oq%WlzV)9BLZs8?aOnX-Grh{k9dHU!X!&1*(NBbA|7 zKpS&{CCt4i(m1KGPgd9|G)|SF_djd9)cP4T&ZKdf?6YW`P2*zO=g>Hp#sxIaQ_=L_ zKKU+{{x_umZk?fViMiZwJsOwVxMRlUs%835<4Rj~v9POzR|~H((z<;e4as%mdKzPB zjHPjdYTYQjiN?*DfYZ2z#_cq2rE!~Wni~qW6*TUkp*z3Q|E!0~d^gRVY1~8OFB<pK zc#g(>G#;mMKaGcJJfQp!I+S7huQTlt6(1EoW~6u(pAfpQ_ER#RHkWPSGc=yfI;jlL z(|D7{3p8Gl_eC0}|FT~$wnh5ic#VcegocIyjZ-wn6)|to_>{)mG(Mp54vqI{ylZ)~ z;mq27KP%GskcP=VjgJcEli^4jpV9b^#^*G?r16FEN<!l+XV5VHr}2$?{%xMzzH#5v z_*E_&0%-h5<0r-ZEF5qBzwsN5-?NG|{&2yHw;@20f74uw#y>QjKL1N|Vww}=G0h1r zpgB=i*J?E<p*bnd$!SXbn`Ds+(=gGTQen3KFJo%qG!|y5M$nvB%ycwO|7p%Zb55Ew z(wv3n$fDLvG-u9i)tXh2vk7Mx&f%~Ko=c4V{+H%F<JFpv=0Y^*mv;f03+7ewjx8*H z5#gf3#b_=eV{wO;#}Y1?C8W7D&Gl)z4zEme8Jf$}Tvox-|2*dkG*>L*SIU#vHm-vH z&XVS;G*_dkIe*jizX)EF=2~iQ?TnGVuJW7sXOT2Fpt&W@4aILH%yx32|IJNAZYtCe z(A=D+^j|#`zm;%nn%mGcd8fH8O<Vkzy*<qx)cTIYJt<tHXdXaw7n*K*Z_oeG+)XI` zZ|eD<rrii|c?>PU*8gelLsRSjO<Vt`xqlvDO&>^8Yx_;R1wd2l|4lst+B}rzVUDzq zMIJ#@>-^0lX=?GmX^a1v*C9<?|EGDJ@Oa^nL)9(OY|$)RyOzoqx*?!aFjX-c0-AN2 zje>9H3f64XJfCKV=1DX|nyKQuG<!CGaFdE=M6+MmG0ntm*POWq3O4blIa+w4xpa-A z;>p5OXr4;*ESjg8*Md(Mo*_K5=*ihCo+GsRKTXsB%&X!BG%uuijqHnPYOrWtLh}kS zmkKWvUhXivcB6Tvn5$@BZDhXRuBCaC`0Hre{9pDMn$rKK>A!t!x8GcNZ=rc>Vc$mc zcC)ilpm`_ln`n-u<<6qJX#Psm>HoVl@1glD&3j!W&HHF-p5MHmru4rl{nzhDXg*By zNrgQ^^HCX(2_L6v%AY^d<6fT7H2s&$h5(w+SaFowGtbd9C8znk@CD(EGz<N2zD&~w z1@RgJny*>Ww$TOx@#AQ|S=evUd|Tu@#^{+Mn(v7*@u&F#&2MFVDEx?~4Fs}3q4}wd z&xD`Tl;AhNp!sEX2-NP^@_yqmCoS!FBEP38@o)Y}^Jkhr4ad-w{^!T>H(E}$epi)0 zXw6RZPg+i6|DrW1&A(|)D3==o{<RD)e`^9W-00t$NX3Z@-Yx-bdeEAT*7UTXH8rit zX-%mx8v<-@-<m2jL{39%gp6s&Ba5E^SX(p5JEL%9el1{4%uH(*T9W<NtTr2Q$+sJ6 z->KFdwC1&cac#}1&dfz?Zu45LdCYKY@2&Z0Ek|p9TCRx&Xe~->L0SusoX1sP$f1Rq zy+~m!Mr%o0F6R=%Ugx5<6s@ImMpZ;EBeWqvNtUOj$-i}AMRjAP><0o0TZPuvv{t3H z4z1O!iltqhmIi{>nkueU@N1jVv$KxYy0q4#<#Mi1>wjW45N=4z^gsV*wF>=jN&j1$ z{&$|VHdp)>w6?T(%ej>qwtu#v<u-p?k=xPQnU>A}Y3*PEX6z{3$%^h_w$><GyNlU{ z)~+&kGnf0=d9p`l)7sOF?8IyB?QB~6(Au}~?k6T60%#pbdskWq(eh{=EY~5zLxqPq zlyNw%BMSRSF-HlHrge;6{I-r29w$6LlU7<oRz)&Pt3<0zdju_?_9V0dTKChc(7KFP zm6pp;qjdtUI<1ISqiCzCR$9U~tq!fO?9c+-V@s`GW*FL*_G!f<FLq~IB20w?hZZ2D zHCp6}v`$i$lZB@UPZdi4^WZaRxg&L^__Ks(=RcrpokQzfXVW@Qcz(vqzEF`D2`{!g zWvxr{-|n?c|HWKR>sne@SkZbe{cl}G>uP)ct#wWQq`leK(Ylq^^+n_uS~rX=ZA|M% z;Y|*e!G-`@w^*2YU88r=GX1A@$H<c8x^*Y5v6)>kcPro?TKDRlyw9O!u=Dc)S|8AQ zkk%`-9-?KEPU~UeBeWjXmOdtYT=;}Td2Ng+Z0UdN8CuWMdV$t++5ZUBGW|E({h@H{ zMd3@rmyNWBB>pXlzZGAn^#(0TeQTToYzUzBmgRBn+JSgSs8@it-lO$??y|5CY5h#= zBUSmB);BUfq4g=PFJym4>+`J7MYb=M?JHWQ|GCRjeXIEIXnn7MA2JuMA8GxRhvoa> z7h1p4`kmHqmO)8q{gK(U{-pI6ZPR&Le+&Pi_3wWf+!nPbv?kgU(U$%ztwpvcr9GJp zgp&(R{Ap_-Xit^Re`rrldz!+Y)&-b)x2L0Ra!q@B+B49eS+?}QJyP~eBM+67wP#UL z^Z&L6g7)lU=1`tFg>z;3WzR!<TiWx|UR+`G(VpKKvKOGeU|}yLW?|Zk*g<bEDqJi( z^s<+ry%FstX|F+hDcZ{`erekFEvCIp{#|aH{?lI0(q>=S_6oFDq`eyLl}2uo(q37( zibF-NYLU)1*XkK5eofki{<qhry$<d5#II}d3!P_w8Qfl9xPfp(BlGS0A8maB+u0u5 zR24U)y_F2<e|rnsTaLGNTU%Y*@NF`Z_I5=!ceqXeX`A@V*opSe`7E(LiuNx5t@gKf zqwO|iciJB9J!l_Jdr#V??X=xd-n+=K5A8z#+xr>mW>f70Xdg=ZKn2@3PR7Bs4>3FY zQH<r$5Mc49|Fn-39!2|D8AsDT#^SRXX8Smi#|tI?IbWh(7g-ki!a!INR%zFqVIOO& zLAx!!N!!FfAI{nx+I{gMZ5s$=_h?6%U34QBpBQP`2DC4xeFE*%Xphb!X`e`2`rnrR zw@)c}dj*`TpHBNi+Go%<J*2H6psgXGeKzfLM4l@=ujt<Su4uLfU%4*Ix+MD&;ia@M zlW{ri>uFy>`)U=h6kg@fM)USHw687f>&(dRR<y?`>;`Sujg~xHuWsK=Z)4iG&~=CP zR=OK0>^9oB({Unm2OY=XNoR7}V`+a#`!3qg(!QJaW3=y~{UGgotrgqS`-Jxk9~f_2 z9uo5~ZTtPNY#US5lgDXmbZ9?8`^mgY9`m#!HUGC`@f_{9X+KZ<71}RY^~Eot{i5(C z;mZz<x1PL8`!(9*Xun>x_=dT(hiSj5rtSB?Mf^Lo-Μ<a$4I(f%N-Mf)S#ztaAg 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≺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%0A&9~b|<oO_><k)xQnci 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%0DNVRiqQ|)9t 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 nS##Z&P#JYB__if5>Jr;2B)I8w#4R2;10*(zSB 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∋KG(3%ykfqgn!v-R<Wpf!ik@*l0a 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­}!AVxgP$EwM<Y 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%0D5S?S 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�LGr<c)~UsCys%D19@ zE&Gkn{f^3yLcXWsM}VdLWEIT$*)xA7N<{lNDt}Qi@u%{K?4QQe3rWkrsp$T{@-NZ& zME^%LUP^E;wrB!d`V=CKfM{Z(Nr)!53eluQll_+?{f|ullZ}X`CR&gPqFIQhQHtq5 z(R4&J5=}3EhO{N)&m?5##M;A<S&8N(`kzCHW+Sruf1){r*x!qmbIHz4G!M~yMDwbq z{+gosi6s8+;8t@Xq7}qnm}n8ArHK|LT0+QTM5h0)C88w-E;T^3Tt;?TqUDH|A2cs; zMWQu`R+7K6>?%a75v`i|_ORX4AAibUlW1MhGy<Zv<*y^MYkobV^@&XLi8e_0vg2>$ zI7FKeok_GQQAD&E(LO|*6YZ=zTgYxnv=z|~L|YSWD`XqXwSwCbZSVY{$~%g)ljrQB z<*r1M`e+o<ZbD4|T^7-v=37^L5$!#|h3reTA5oELe=QFn3WyFQGTA3e@BiiJ605HA z=2*1g5cwgI^gk+VS+P*cuM(Y16cddmswrA0>JXXu6E%rU_K8~Q8PnHxS71-p#NQrv zO~w#uB18uf9ZYn%2!{|IN_3dx_*0wy6CFu()G#ja7@}i|PLO{b(eWukyAYiy{G_xW zD{_jEQ)R~zoo0N)PbV7Df1<O9J|jAt=qaLeh^{3%m*`5O^N6JF(Kw>>i7r%b`YkY# z^ndVIA6-IpDbeLbm$_a1ajx*rRetxYRp%O8+LgJE=pLf$iEb8tgY1p6H+jx2M0XI~ zN_4yM+Z^tr_7yPET|{@gz5I^%5<NzAAJM}^_Y;}y6WK)Ygok_uiN8ht_rKBO7Bb`s zq9=z^o+f&m=oz9H6gB-P(kzIccQhjDfAkX3t3)r0@QMq`e~su(qSuMuNV`q1gXw?z z$xrkS(T7CuivOOh^xyXSz&HPq@Q-Cp|K)t@qn}evuE`fvCm{Ng=x?I0h<+jZn&^9? zZ-~AlvT<OK5e55!=qDl@2M#CtIrWoIz@kL|{~-D;L5NKM2mKTMN%YqMAu|0J?O(Ii z<S`!A@l%5POQ}vsby}(uQI)n=C#E_HRg-<HlN!@~2v)U;kZeSCN`<DP3e~AaaJcDz zdg|(QRA-_p{jbj8I8<kJ1gfV0RA-T$)kRf#HmVC!mHt=fpgNZba~i?+om<O!sLm&6 zUXRaD)$4zHqJ^j~MRj4(7NNShoJD09b6N72plbT>dtRFAid2_TXj!Vu%URA5sIFj6 z+Q~{(P4KC%EW3)wSEIUyTJ<BqIBWX)YZGrybsehjP+gbm@l@BNx+m53scu1a1C`p4 z>Lyf8{HbniWk=fERN!W^oBNtuQr(s6R#bPSx;5496x~MFW`Ua7UdtWaQoe~l)tzN` zF+63Caz54FsG9y$wV~jndr@ss-J5EK>ONGnRQIKN0M-4(+~3jUA85X%XB<d1M>V7x zP&Lh`n)i6oIRZ;m%kEtMbdm5X)jHMKn3iiJK<8?BWaxhZs<x?is2)MJOLdI+J*s`G zqg|G-d=S+`sUA!<{pF9x52I=mA^oVtUUf%OJw|noqI$GKZuesa9yf%XK=mf7CsI9| z>PZf#dNS2hsGdRfRH`QXRL5G#DxdB)m4Bu}XSpmP=TN<p>bX=eqIw?H3q%+vdw!Z| z)od1se=*g|6um_DQisdGoaz;}Oqo{+yqfCua;~9zE!Fg!Ussu`#J_suP}a><@27f; zQf{Ssr<~iU-Y(}3V-99e^)9M+Q@vNAdt8X>eFF~F2dF-y=z~-rqWU=1hp9d)L?ghi z&tpUUC#XK9=#vhl`t(rrS*ov6mH1bmr}`4r7pT5CAn5wMOm#&3g}g@fP1Sr|_6^6U z>hwRkwr_jnUE-;!zDM;ts_#=x#QX!Ld?@=7)laEP|EsC~tNv$}ZqL!@a_o7h`lakw zRKFIOAm31x{*PR}@2UPkJR#K|ss17UPgH-V`m22RE6^nIH>&^r{eSgO;_;~dMb%`V zs(t<==U-y~><o5^$0wd3iP|H%+VMohlM_#D{CE=CNr`O=xFTt(cnXE4l%2|h5HC$U z4e{K>(-O}{JRR}O#M6s519AGvzm_wl1#P2Qh-Xbe;pwNT@@FTW!{c)j+aR!q^*Imm zg5sF|6KfX4^UF_v|4F=%mJ1UvCT9^@(|=W1oY-WaIQ<rYcqtbWxD4?I#LLQGj(An# z<%w6)(nbLBii!0Hm;T4A_~mNEYZI?dyr!5o3yf@8Yq>1qb%@s^Uf1F3XMGoP2=RuA zL%fmf#<H6bZ%VwG5t4%LIgPg<zJ+*8;zNnIA`XeSCf<X18{!?6W%^IN9kJ=Z{GkyL z??k*a@hD=`f8t#oNB!*P`MdkQ_9V^{??o)BkL@i0@jkNq8rhx~(|_UvWDg`Bx${>v zCp<8+(elIvV*mTk^h71%mZD|Z3UNeSC$4H46W0>QS`uGigV>9|_0SgBAs$1l`~SEn zq)$9L%}Vz=$Vyo!2NNG+eu^JPY?4lVxa<+KM-m?;=V;<%5+@-OoBsQ(<B2aNK7sgD z(N2`L5kP#h>?w&=)>z{6iBBUwoA`9%GX<XE>WHZkVD---K2ONGE?53I=M!I`<%Pr- z6JInSs9O5@Kk;S6*AZVX<`u+O%ej*HD&wd9TqE$>0ivbmLVN?U=|AyJ#5boMrdR1! z;_r!XBmS89cH-xV?;yU1SVJMc%T*)3+Z;Q~y~Ixt-$(o~@%_XP5<lQLt}L<t{x^Pv z_%Y%~U1DO1A0IG@pCo>o_^Ba8LnMB72zj3P4dNG+`y%lxa$X{S**IzcuL^vP*p%PE z6n~TWU1HOJViSMjcTz$^v*mll?-NV*V}Ji2fAn9@C&Zr;e<l8B#GhN#a=#${^1sZl ziN8_E^q=@Ui>e>uAE?bi{3EqQNPnU>G4apD{}BH|{JY4%694ANTK+-&mz+P{SrSY9 zw<8e$OU<O7TJji=+V~DnqqPamvFJo{#>$_B+N9K=HW{@ksZCC83X2Y|Rc$J2Q>TdQ zxn}qO)TSMP)TXC43$+=9&nP>SMU6Iddd+KI|7#jmwb`i6ZXEZF)aInN47Ita&8w`r zW#{qH`KT>QZGLJJ{MrK4Y&5v2m<v-g@%Q}2s4XdcaaphbHPe4;OB*fScUfwyQ(I2> z^3<gNwH2tXm>~8@E^lpRYO9Kn>c9Ned~^+JYg4m9Al(1|54ClutuJI<+4YQI)i$8E z5j7KkkC^!Tem12sE49t2FG6i|Y7bM}g4*%awxpJ!wiUHqsBN9_scl1T2Wk@k+IB*u z|2mhJJId}PyR)yqE46*8jiR<EwcV1CqPxrPVN2_9FOTm{Z661Uu%E~Gr)K&u@IZ4c zD@(0UEk~_EEudDVmZw&xR-hJ&>8F4-@4x@8ReT-)PXH_$Q>!VZ?uyHA%4%@b+SIyQ zc7_N&f5y?&j-ob(+F{}xBzrKmL#Q2^^3!Ku;$M^a*N(K1&LaNN)Q*v3`cLh+q0kA` zE~R!NwbK+jiJHW}Ch<4&snqn3chX%>r*?suXHYwn+IiH@qIM3ov#sXHj;a1r8|QFp z=esDi3loRhMY0$B=p{aS8MT|KU9RXA)UKm;rTnX?T|>>rLHgFdcCGxui|u-9H&9DI z{HJ!4MMqvgw@|y4+WpjSqjndy+g0-pY9{_E&7SwWsp<Z|c2D|d%38fogt62fP}YO8 z4-FEjJwiPZoJXmBK<zPVZ&7=k+Vj+&5c5fD&rnPCpW4$yiO-7goPVxgp!OQI7pc7> z{3UAAf8Qas^!NYNUbiCF+Z(cP4xRLEYVQbqSN1*G^z)yDM(smt-%$IAnu$EMk7Ylh z=0E(YeU>0%eqoMrzNBWOLH^gi+i$7;MeRFkKMVh!+7EIP{ZGI7wG`X&7izyN^s8+8 zD<EorXeseeUtNDwpNQH&)W@Utucaru*V8A6`uNmsBBTw}Cv=WD6H}kW^Cxv2>XTES zi~1DQXQDo(Xj4(2mb#4q>d2b@`-0P%Z=va_&p_S8KiwiZMSW%;orU_W)MuyuKapn} z;>_VWbGlsWb9-bSk>{m8A9X2zeSYc-P+xFxio~J5uuBwqQR=5sUyOQ&`r_1AqrQaj zC8<l~>q}|5H1%cVESp$Yjr#J`b)R2fK_MFf)K_u@>Z@qEs$0rmo%+_)*Px!r^_tYz zrM{N%wT)xB>zHF5u19@i>g!YAz#|({-{`-m*u-aT>N%TxWQ)Y1zNPF|zT0i6?@4`I z>Z7P{M}24N+f$e3*LQFg#NWyDcQMfF?CKHIf9ewd`W_Z_uc-Q7!uO`WubgxQP~VUG z0o3;&Vy5CRT9$gBdX9Qk%Yb@bPJwz^PLX;@y_ER2(LiVFHUg+e4yPVdZ&8>2*Xssa zv_ZY;eBWeSc!#<MLA^JKQXftIFzRC*Lj54>2Ydez>W7-2p7e0)$0tkbM^HbK`Z4nL z7NCCgP>06~Pe%at6SO>$diu#fb<=-=8Ugl<kEQ-R_0y=|N&R%{*HAx$`UTX_q<${- zvqVnypZYneKG)9^KF(K5KmVbAA@xhCoBoS%G4)jZwY-eF1i!8kQ1_qz*RL|ZHFNdQ zS+1pi9rat3cs=zSsGIClzj5TFu=>qD@m7Uylf9k#9S-+b?=I?(DRj5&J=E`|{t)&1 zs7v<i_osZT|KLy$4^w}H`lJ7?_PB~j|Ladue}?)~LL~m_K}`Gwdi}4zK>b_lFH(Pl z`b$3gvN*3$f0g=c2HHh<-8l-qN&O4zZ&Ck1%eSe&L;XGZHUj(s-*-Os52=4j{Uhoh z`_LytG!uX7HX1zN?*FNOCHuAPH!dXqJL>;Z|DO6E)PJD<v%nvz|74tz-G34OEA`)~ z|31Kd1Ai*|m+arN|2Phf|D!P(jqzwqL}PpdlV%z=1!zp@IPxc^;q|{UX<D{1IgROQ zOhH3}-<XodR4$ZQ8qk=Q#*qFuQvLVoGtiikhRHsSnTGb7#rZUnB45#%jYgBk>@;?x zF$ay6Xv|4t2^w?JSb)adMz#v`$j(b+J{t483Vx#n6<UbKqBKnZX)KZw(%i*pEdF0) zNg7MhSdPZh;+y`<85#kN<%O&uyP^^7)GO22gvKf~))a0dfW~SxR+qDeqsd>3#(Ff? zHpDpV&{%g66|z2!4QOm6e?u3dvGIUIBf0<IiN<C$wxh8*jjd@&{2N=+NR{7Tfo&|y zcG=d~*<Q;XWOsC+{GDY@|7q-MxH+SIo!w~^gxCn6u_ukaXzWL0Z_nI^h7AIH*wxsd zMn=p7WYZBqBTFL?l5>^i=M$@}qL!hojQ|>D8Z{af8dWV*{g)s6-c0{#G!knM+r35O zHX3ajXVU1<IE6-+#?dr-G!CWFr*V){M$3-zbxi+h9O8<YwdG+n4ySP>jUybQ`X>H9 z>lhl6`o^*1A1A``K6;|dqH&U<ZUl^#e<}^<oTlaJvS%dL9(IbeXk1U@Y#Nu)IETjh zG|qKV8t2g%=V%_efX0P1B>tM4G%ogaE~RmG;?uZ{#^p3L1sYeR>9)~TzT0a=yH@r( zBcz?&AS4n0q{vOOH_P5a<5riOEY<VvG+v}}2aU&Q*joS^chPu=#@#gTr*RLBdp+|$ z=a@Cx1F}Q<-*}kDBR=ZC|7|=@;~6oZpz)-SY6LW%_NOrYr}3QZ^Rh2EraF9y#s@TB zrt!8yuh4jv#v3$Va~vA4`#Num@YWz#%Xef=|7pA@`@ZLYsO3jAKBMt*;%oVd?5DQ0 zOKtj3;|p7wV<SNL*EEyArf+C2LgQPSiRykw({aA1@dJ&&X#7ayR~kRjuvy?Y{l!=K zjm94|Mn(V)6Msib92$Sq_{R|Q|8*gn<E2P*e3~Zy7Hv*Qb0SC3auS*|$(fYqWHg~U zxt3GVoJ!7=iM3NSZ5*VHHK(CDy`s~~PUkr@m}9%7-vZFoAZX4)b3U50(wu|l|3sLL z=Im+z?oO;ZC(U_i&P8+X!MU`re*cql=BK$J%>~?cey@dSn*RIV7Nxl!&BbUgLsR;1 z{VYLqNzY%3=F&s_WofQSb2*wTB_Pe^WmllN;-Ed6D+^qO=4v!o9l}?qIr7QBx?RgE zTb;FOt|LeKul8uJPjhRU8+gu!G&iET1<j3VZYuI77P70o8O_a|?~yIdvC97bzqt*~ zU1)Agb4TIZ$!;&ZL)xVAcM`I5VpVxpntRY3WlM|hCcC?j?n!eWntS=^-a~cvbw17g zY2Hfn0Gfx>JdkFOW`<^&W|pSrNHeFJ0nNOt;}eU*H3FLc^PgsgW{YM-v#w~BW=ykY ziF(o#OS9qX&}=%KX4@m3#G%>sc;DlrX^v6oAex8LJecN?_@^(Y!+c{$(7cf5ku=Yx zc@)i4X&z1UM4HFYJWfSS|JBLyG*3tyOOcako<h@!zj{uKkELmXPxCa{(|v_AX`W5< zEVoqXoPn?9d9veZo^QBSxFCIZ(7cG|<uot$_$7*7DtnoMcCD_Ud5sXwg635;{ms8c zucdh-P1Apx*VDY=zh{yDH*cnS%YX6PXg*EzcAEDp@eZ1I+ICjtE}D0H{~nh`^FEpn z)4X2<6Ms1m%08s!Sox38e3a(n@*nfLPiXlh&8N~H((CyQ%{ORD|C`eP=JPaP64^!o z%@-4!q|khs=4&)xq4}yqJpTG%N%PIbr}-Am_vE}yQ{vxz*EngN_i27Y^8=b6iSwcF z@Z%wli9gNHXqxyB8m9Rr-Q;icE85S}{F>I6G{2#h{F!`9D-n(FXw6LXds<2E4>W&O zksoRPBu68_%KkE_N%J?Fztj9vgg+ck^DmnJ(EQt$Y0v+T_^t71O+jmXT9eT7`rn$6 z)<m=>9<=KCv?irBS>n?&{ZCKYnv&MEv@{4>Q`5qQXiYQVC}lcY)6<%f)(nP^q|fAh zTC>nvl-8`Y7NGS%T5~FEHrd%_=kUzAXw6G&Zd+P2^Q3*6KOe369ZjJHWfwBUqBa6( zEn>^$HPBj&)=EMar?mvFWoRu)YbhTc(*M@7v{s<C9IfSDbZEzP1kjTHw^mU>yZM*1 zn!ieG(AtUCngZ9NwK1)=X{}Go^k1Nj09xw}Ro;Nsh64RZK-Tjnw6>$QDXpz(ZANQL zTAS0_!io%(u(j1-Nz3m4X>DtWIJCAGV)y?^3auTTBXDP0yU^N8zP$yYHHy}5wDypn ze*Y_fPk*kxwcLl+{&GzJY3-LbV-*e%exT=PX<bPxN2^OKpcT_H{iju+RhCnv70M|k z)*kLpyHybw$yOastEOdLwn3{c$Mm08%O{%nd%s8PI9h#LM~X9=))-oc(K?8h{ql#_ z!Jc{OP}bq*Tg@X}RQ^%2N6Q{VD;0k&kEeB-oD*oBNb3~&C&?xwV62=|6D!A-2}tX7 zTIbU`gVx!?&y+pOqSn|sw9cb-t|R*<$9d-hS|<3kE~IslOVRQYT9?zhlvb+zo`1y< z=PFuv(7IauYiQjl=UQ6V8OLf~PwNKr-3!c+n`qrk>sCc?aUoi_X?eRX)1L37^#ZNC zXgx;jZdwn~x`&nozoi+`y3hCH^}qGt&@K<F;3Kpi9jf`bz$a)uL(A^}X+1?Nz4Q0g zo~8Air6dj8rF-7vFVcFO)=RWZ<Y~Pu`wFdBX}#t+X_iIbp!KFL&40_`wBDihF|BuL zeIWcj+4o&k{)e<|5Dco(`h?b}v_4n#GvCP<0}ic3|JS4SHSM`+eM9RvTHjjK_We%w zds;ux`kB^`TK;6wk>}zUfxr67ztf(A)*rM@%xV2e>o3}gWBO0)A6gQBT^U2#<H?Sn zSbHRwt39FfX-`CZV%n36FiBd!JsE8;{_27Dl(c81Jr(U4X-`di8u9V`X=zU{WI8LG zrlkJ_fc8uZ%`7{Mizb%#|Afp&+cclH>A!Fr3PR@c$UL-H5Hc_A`DmNA)3y;ndjZ-D z(q71KYU1zxMQJZXdokKein%!LB`lP-XCr|2(#B8sUDo-um!rM>5Wb?vSE9W#?X_sH zLVNWDq-`UBw%7mm8d~bdpV~#swP~-DIP%x^yRT3CblMxxuG8L-_HMK{qP;EcjcIRA zdlQj2^;w(wtSxA7MSDxb(^G6Mrs=-}X>Uh+XWH8fH~pu*Bki3;&=--0>>^y^-yUV5 zwA${pi?sKky+7?eY40Q2UbOdCda}h>+WR`6_I@sr_5rj5+6U6kil6a#&N%|p`+wSn zR2$nN?MR^#Z4HHX#rSH5c2%L+A+&40!v^hxX*X&2Xt%`CIB0h~vulpMy84Qa_V^er z5AxANXrD;?P};}PK8*H}w59)+c!cAKe-v#Kf4{rwKW)7cXdh4e1Pe*(J>et~PNsbd z?XmJtHBNeYZC<FiGiYB+`%K!G(>C#^eKze2XrDuSoR&5MXrJf!^3QiZ?F(t^ZohpI z?TcMyU;k3tmkp&{VZPP5lJ-?{O#kKB`vP@x9qmVGUr+mf+BeX?o%W5iZxQDv+BZAC zuWz3M(Z0<u@1T7b?K=k?+IQ2wSGoTFzkQ!Y)8jv&kZ%6l56L(2cLds||Fj>Y{S@uT z9ZvfRfi?nsk*9?`<Co9TxsCSobXKSR0-YIXzexLU+Aq=mjP}d4->3Zw?Kfz@s>Ii1 zZ8Z1_Z_<8;w#45WczY=HF75YhIYRz`_J_%m_D8fok>kGwXn#6H`<(Xow7(GHOWNPa z`AYU{zpvN-_IDonf%YG?f292@?Vo7>JXG+PA^$hk`Q2s7|C9D#Mo^!$|DiJ>?SCCY z=l|%8=Y1OibS6l5>`X)lArsS?gwEvhCzYKnu?daN6m+JdGiAD+Ayd1MXc`2aY2};v z)3HI|>(5AMF*-BRS%A*Wbfoj0S?J6vW>RW)IwRlz`Yf;iow?}DO=n&@^9<FTkIwvQ zGb0-<sDca0E=*?;Ig46WdWyyAn7q?jg3gi-r=t<jS(?r=L(JtwTb|C!bXM?88v%4y zvZZ@5cUGYz@$alQ1g=5n5ISqp*_+N<bhe_iHl0oBtV3r5RalqKdd9bE>klPvNM|ED z8xPJ!C;k6_=xpZso736C`&+tPI$P7(jm|c7cBZp!0@B%z&W?1pr?Z3O_=YtC)VydK z0i9jxj7n)~SGy~^hwPqo_8LU#>_ewa$Mm1hesl_S_NQZNPe=FvodX@2PL@uP>`N#8 z{GU#${{o9fv#gL#$)#vnq0^%i(Wz@$r4!4k87Fz9SH3}~NvA`nMW;Q$RXG)ZWl8@# zqg^hYF?0^1b8yNZxekZYIgHM^bPlI;2Aw1598c#+I>*pCN_9r`UrUXE&T*~|ofGJs zO6Np6C(|+Ucet3R_=d;QIbFzU4)OSzj!)+-MbDN!$4Aejb0wW|bS@HZ`cLNq*$We! z(CA!D=Q27r4uoIob1(PE6`pw&otx-fP3L+#*NA*Ao$Fk5VCmeTkpC4>=VlApzPHf1 z)%n`@cDl)5?j3YKq;n^o*XZ0uCz0Q~={!Q`9y$-u(IDvDr}X=Wavu~T{qIQs)2H=O zI?vE~Owq^bJW1z?p{%Fq`1}9#?9aL=on!<&Kg4`d6<(5kS@sndrSqzsu>xPG^9G%F z<i9EV79EMd>I->S_C4A6W&Q6zJ0H>cozBMsKcVwIolog}spV&MK2IF^Uzn2~@GClB z)A^RpH$&iej;X8qgHnE^^9!Ay<o~RwHLT^YbWHryJE+bdbSI(nCmoY|I)Bmm+cW<$ zCwYZ*mDnAR?u5qaj!$<27t(Sf*@=gcN$Ji^cQU$D(Vg6I%bJ4jltY}U>CQkGy3^5} zhOUXfJ7ap%?)2%>a%WV9nS5v#Ev5h6|H+?ikWP0Fx~tGN{iiz@U8#C^ZY^yD(4ALy zKDzVMT_EuX`_f&A?h14lrn@xVMd&U;cTu{F(_L(YmR^%3eKV&2iBH$`pYF1BmrD!U zGW}P;bXQb#CE1lNCCyru?iO@cqr0|3tJ7V>Md_|7WG&BJhwg?#)|Fk4uEgJV*}!u) zQfOn@P3Ugwo7{}<=8iM4bhi|3E4o|L-Jb3?TAKdL*)DyBba(K`j&ygTyR$8w^x3I* zr9U~{QS{cLyBpnC>F!SVGP--vJ%a9@blY_IqMM_;H{AnNc^|s_%Gr<Z{=?M-9!OW? zpqm|p=mvB{x~Bhh3x=DM{{EA0iEfQ<nQlb4;-Y#+s&r#pCf&L}pKhIQQ@IU~*!{ov zJ9Nj;HT|dClkLlnHqHp`Ai4(&KZNd~4ySt<-NRiSU+qY7j-q=y-J|KAsO2$qkEMIO zeEa@a&IyUNhh5K;=$<O@WV)v~&_(G=bGoVi(>;Uk`E<{udoJCx=$=E@#DBO4)j3ag zoZn00-@TCTC3G*M>u>(k-7j@}sguj;-lp6u=w3<pM!HwIDBY{+UPJeKy4TY6`tM#6 zcIiz2{dPC0!p*X`$Z7=GNfZ5ln(iHRAEbLH-FxZYWr<edZdrf--@VV{HUj8AU`wkY z{qH_Z_X)a>(3R|WAN5;5?y|&u(pT``0$81ARP9;1&(W3Ocb^yXf~z3^CAu%ueZ|t< z0d3#c=uJ%bb-G{EeS_|&bS3`Xx9Gm7thedDV=1=FyDpdR`*c4N@`3D!zR!=1V9ZZE z@|j0Irz`Qd=$CZAGCY0Fd_(tlWqnKcJG#Hn{hscRLVieFwXC1${ydcRs|ddhA%D>Q zm+qg27~kFk(6tdj_a6h3^Y$!cNN+rP<I~d==%x4n!Y4|*>P<p#QF@con^yQ_^i2Qh zO+jyJdQ&F8mQ#5?9+}1*ceLJg^rojbC%qZy%}Q@ZdNb3TX+Thg^dlg8Nqe&kN#6p{ zo5Pr@MsF^93(%XJ-n`<N{_8~Z(ewBJ>81<PTUZ?bDNt__Bd7eu=&eF;aS@iFw;a7C z<u65V897UP=CbA}OZf8iR-h-@@2%)L(*JbdRUMz+YV=n3zI_W!&-7o;+Vn1`w+_7~ zy>;pBL2o^JThd#f-o^=sp6Nfm4e6QwyUQqK6WL8=H>0;Xy)6b&Ro;r;F7&n*VH<io z(%Y8a_F8T?VA4y!|E0H+LK*>SZ@VUlz)`Zh(c9f2E}h<<^!B2cr?)pfQ+s;*&@=s) zzn?jF*aPTgh1mT+y^K%Kc|zcw0=+7|BE2%b&_Ls--~Y<D5kM~*>OZDe6IiF0Du1%n zzAbuE<6fIyhu-1zy7b0~+@mM`?~Qh3fd|PROwW{`o_!Z!QS%QoCw*Fvpm!v_V}u_i zoBsZjo^Jko#|@EB5aC367t%Y4-dXfcrgu8MQ|OIV=u}_!w4tms6gqPVIh)>j^v)4} z?hrnX-UT}B`DwRllNX73u`#XxOXyun@3Q}LuAuiKy({TGD9%;%uBK-SPwyJpYw2B= zIP$MI$DYj_>D@u^CVIEhllb>;aUsz(R(iJ&A$QWdkKSGM?xA<L;qC)5+vQ$Iqi5ou zJm@{(I;8iImJiE5Lho66kJ5WWOU;6w|Nq~5Ptto@_*02hhbI2M&U5Bl<>%?WFoeHE z?+bb_(=#!r_loSR^b-A-;P+k^@`kVTmX>cP)*f~p-lg|3z4z#SK=1t_{6pu{`^Ymt zNgR5gdi*nbpF3Z5zNBX|PVXyvU(@@Z-Z!54ExqpsOmTjY{gIyC|NGv4q4y^}>3`4k zpPr2mIe&Q0U-TXFxA1@H{c9ZeYUz(he<H*C<I|sj{)A~LjZRE|Qu>n&@h7vyG&%+S z2k1{pe;4{w(O-@J)btml5B>S*PeXr3`Zh9De>&OeWoIxjxsv^v=-VF}{h8^{B4<`t zT+!L+&rN@J`g1BYhtHbJIB5?i{`BV^Lgp8;fb4>@3(;SMz6}DGC2-LpUn8Ku1pOuH zFH3(Z5tf#<LE!gVj{b`DmlwW*;pr(>qQ46Lm4}$C4*9Fo-;Dkm2}0k*pZ;3(H=@5b z{q?k5M|R!BCL7UTU&{^XZ|D%eyM{vF#9sveE}*};N4B89CH)-~-HQI!^tV+({THCN z?{@UJch!8&9YvP@_jk5B=~Yec|Bs+QivB_LccWjRzdQW{=<h*)ANqUx9rvQYxAV1; z=|BDbd~|;~(z?F%zn`I>rSHYRAJESmXXM!|((lj@>BlNnqF<&T(XR}Zs=6k%V@<R= z{U-fJTFQE8(Ql`;kwbMw?$PhlADxozf{$@b`Ui_}h=r`kq4XvG<{$3(^pB)}IsK#P zkE8$p$T$lqH;$%je__rOaOe#=iGvO^Gcz+YGt&x2nvsS<8%`W%W@cvQ#9?OUf2w*~ zmd}5VPMzvox2mg0+FPU9wS9)pRA#_X$WYEu#8Apm%ur(Z{T>*~Y=wfMVTO9LG`|ZT z8mIqS?JR~w{~0=mq4OC!m!b1auCWYV&|flip)xO0doe?osdI_iOG~R)>2h(T;1w3R zilG}Ax>~_&)Lttg;atbi_2O5bgc}*UOYxf+x|yNd)W3zHTZJ=@b~{6NFmz{i-YWNQ zCEug=UWV>x=)QrJ2N-&=T2}mrsm;dFBMkk>(4!2!#n596J)`N5GbG}#{*w&JI8a}| z0?3>AEJJ#?KO`f7q30PA{b%S!hU}exwaY7tzpC~%hTdT4_0qTJ74f(J+YEi8w09VK zm!S_Bl98dv`wWd8V1B5e)&HT72ST4R^ch26DdBUqG6ER-(r_61nxXF)`bI(3f9+G3 z-!t@sq3QA`YNbT~%+No&{Dq-k)%lH~KN<R6ebxW!r1t)Q=x=+Xf0ZNpPfZS@&ID>F zlx2A(YZFtOk=i8Grc!)TYNG$tCRaNJwJA-ts%C9!#iyY*9kprIr?eGE5~rso;%`7| zD*l4cL~Uk+Q=6r9sLg6QWgDANo1NNX)bxu$ZBA<QQk%>2=cYDNQ|2*<c0QjXqo^%H zZGLJCQComob>}ZMIo-m2zLG~%ThxSfxj41;s4YQlMQTe@Q>m}X2%xsK+GPxx+H&Fu zzP#EM?A2I_no50bWooNvsJj2x-B+i!4z)F?t)-zgODl=e*xIIo;_Dipnv4Ky8wgFD z4XKI#Q`=aPVf8nqb||&YsO?T|b86cwxCON>scozNR@AnpwvD8ikCtq=U4KbU^}n_w zwOy3I6SbZDOhtC3X8-s{az+2C?MZDvYI~`_x7vNEsrZlEWq)c1Q#*j#LDUW`Ir178 zJ*1CNJ4`DauJ#DEN2)!lwDOXDkD*;&y<=(4K<zl{7g9T(`ef8jpmrX$6RG*sPNJqV zUOQRSPoZ`ywITIY|7)k4YKqj<*3~vlW7I_dskPKv{ja&yJZfD9JEaw}9)wyTOGyc- zMe4-VhN&gga$Tm>D)F~WdHzq$-v8G`|EZlx?QCji8IBUpp?0p>ML<b8pW6G>E}-^2 zwK3FgqgGyoYpGpC?MiAFQ&at~T|%uAf4k%5)UGf^EOHgKtF3SU{=aq|wVSA^{!2?Y zP`lA^boZM}pV}>IRsX9ia67e!sNJFXoz(89b{933{o388e`@zqtDgK=<N@VBSXz0> z=^m!`G_^;lJ+7fgsXaCjeS+Fk)SfitzNMxEqNZO2YR?VuU!e9DwHHf-+DmF*rlzuA zd&Tzf8nrhxRE+>?s{d6#Z)@lswePA`{jW|vmfB|uexO!IKutyfHPL@+pHTa>bgC&| z`<&V@)V`qhtwu%vsp(v(eXYKX0KE?1>GFHEKTs=W|3?!ND_K9ACAD9vsifC_qo(>_ z`-9rw)c&NV;;*f0O&J;X)c;YRNb1zJT73fQD*k5o`otQVMEJs)RGjkNsZUOQKk8FZ zUx50Q)Muiu1EM~)(x#z4y*krU7yYL`ok>)G2Jr=)k@^VZYfaIA>MH*AS*g!UeKzWI zQ!lrhgStNaF;}}jC-u2Z|B_yTBdO2RUur2G0rgST=kMdx7o@&3^@XUfO?_eN%TZs1 z`r_0_3r8AQl=@;-aXIM{)R$I#N$N`(j&>{JPkmWIss@&)zB=_4sIN?YMZ=`Nk|9u6 z{jaY|U7q}ysMcAd^r^3@cC7(?9qQXqUzhr()YqfF5%u+{tN54c(%6PV7Dx1-`X*+n z{$|v-RA+PQTL@k;w=zC;`7U7nZA*vxcGS10zN7jw0<`i@LQ^Jn9S8MYm9U%I-Kp<I zUG=}dr%6#<^}oIkb*ukXh5f0YMEwBe97z3e>IbQRu;fY)hp0VN?O}G`Bd8xsUG=|y zlw}^RoMU8J6+cdqas-^9&WQt|lc{^uPZ30RIhFcp)K%E)r&AxIURS(kQm8kmH%(bv zT=l=+R+?*Q>UXH0LA^^o)}^mDP#dbX&;RR*E>r4-I+@zs*6-<3CU~{4^m!)rv#6h^ zp|jPVL;YOgD2@90#;1OPM#otEA{u*BznI3v)Gwj_8}&=6KSupB>UUDVoch(&RsUs| zD>e5jn|lp)754hI)UTs{1NG}oNNG1xzp3A0=}^B#@ms0iW-HuI{SHyN>XS1}{VwYF zQ@>jXvg19}@3p?20)jt4{Xr!>MEwzU9yWVXe^mI@8~r%-x2Zot{Wa=OQh$N^Q`DcO z{<N+6j3HB3{g)=6H@RB#Md~k6e?|S54O4xY1tpETh(Gl=WGRk}0P1hq-QS_Es$PFr z@%N~|PyGY+$Cg$ri1=In$JD=}{t5LjsEhtn|BQO|m!Foe;$Q!Y`q%wLt@ADQAE<w) zS=Ar^DE=e$U#R~?{pX5bU725HS@rO{X8l3^U+RAvocdo1{!RTKL$mmQG&HenuQ7pe z8ZrWC$XqDjN*a^USe(YBG^U|3nT96UP|2A>ms8T1$|6&XQ(no&v^3_U0Sy)Q#&k5M zr!k}QXQ-}EV}#9`$!5($V|E&|Ds48kRxPEIIcUsHV@}2AGAZhhR67ric`MLdlg20- z3)2w&r?G&9#95HWLdLgkETZ^m8jD)aV&cdtmY}f~jU{QULSrc!%hQl?p!{XjE=yxM zMdas~#tLdzRHR&r{?k}lmQrn1U9M)MtJ4tuS8z?+%-S?IS7aR;>(UUNr?H;e_0?8W zfW}6;+?d9uG&U)HTVb;Se+wEr(Abj3HcFNeKx1n|ps}qkx3kObZG|0asMI%hQo_zO zME^}xk=<zQPGe6RqW?B)uK|A_8aLC}mqtNjKN=y8{b?LW;{X~*(m0UDp)^GQwc5cn z4(aDAau|)nZS;tKh=z;+8mj+|W7Mx60ns>~#_2Rv{~IT2=p-7a(m0vM|M&c-ahmOU zh(=S%HMMmbjna{qyk8EDE{zrqk4Bq@{r&H_BX?{a-(=AUY;IIKG;}mHRR0^P<zzH+ z<LfRx8mi$9^AS2j6VFt87LBuMi0soi$L@6=jq{B!MWoL$G_F<7g)~b2zfAp$)n1~u z`YkYx%XN7LjjL%~N#m-)IvTR~|BdT(Df&<2hSI8YquOc;(71)hH#Bag@gR-cXxu~N zb|u_l`FGN|%lg&*zY^|Md!O3-)jm*KJ<CHh-lg#{jaO+rLgP6akJ5NTIghD*+%lh} z@eGZpXgpn=LVxO&^Q=K=JWt~#8ZStS9HjdDfAwEhE3?3oU!(CljkgqkL#^n)cJ;O{ z-!V(|-=p!VI`7jMtIh{BKBn;@jp{eQhD_rV<A{|WK2!TSjW1|?rM`>+-Q{cPq|&Z$ zX_mtK9gR|-zo+phjUSZ!BaL5Z{G`5)0G+lpex>odg1?yx>i<z%t*qkT_*+5Mf9d4k zYOkg=CZXm8G*$eYM*K@;;_5p~b5fe3?KCG-J2_1efAyzSJJq;-o6{&VEln(EIz^_J zW%-G1&WPjC96|F!nlsVdfac6J=b|}_(q^?;v(Xg&r#ZVt=AbG1FE6PxH%-xMnj>k> zqt3iE7p6HM%>{Hhil*rQKyM4u9AE#Ns{hT=%3stlX)aE4MVd>{T!!Y78d^$irT><; zEKSjWn#-$Qp|tXn-d3Wyx`LwrG*?l(s@ie{$Pc^vYtUSi<~r)HrFLxzNriQFxgO2+ z`+UVWq*-3QjcD#ob7Pv@(cFaQmNYk&MA=J508O1E%`F5pAFAe7ii`f!+(zxTHncs> z-4xkD?T$2eqPdIuJC|1X-PJf^rNZuN_n^6_MXG=QOLHHZC(zuN=HWE=Q`-JC52AU1 zW!m5WHV>wGC{5M>YL~-=Q#E`9&0{qENVP|)J=#W()#Y(&k1wsf<hq?mbBN|i2BCQ} z%~NQernFOS?&%f3ysv21EVE8i^q-~-1$jxe7EKlNW?Mt9T90N&oi5FQrs}`;tYBDL z&5ddH6iL*kG&2dw7P;C&ma<FP#yK?4u+cMVo@M>BZO`Xw%6S$)pXLQL$H=nWy1HT) z;gmmC7t?&1<|Q=mrg<sN>u6r4xtFWGg67pUue5cpswzlV*U-GSzf|(|G;g4JJIxzu z-lE7&YHv0)nz!omHd&fZq|O~Q?=%R_yKHaw(0oYA_o}^*rij1#52$_6G9RY-49!Pq zK0)(Q4Lzpz@zNTOE}vBU6wRmmIL&7jd`|82G+$Kbg#p4#c9&OhCZYK%%|B?qM)ND0 zuhV>=<{LEM(X2OVzD4uxD!01A@5)ln_@1pZmgc84KcM-M;vX75&5vnX@vm|}qxl8R z&kaGW)Uo>C{F>%>ihQH?TOr72<9nLF(ENesPc(lNu)>Z08_utq@*B<H``1Tv|1^A> zf6@FKr`+xzntkQ}Z(KEJ0vwTjoCyUi_jM+gQrfxVlj2N<1J2|o3ug+PDRHL3nF?p> zifK;jOlyi*=5$(NdbKm)%-E0O%!IQc&dfNYac04p2WM8CIg~k@S{(t7J_6FS<IIUO zmxkt6JF>L$lAh;PWImh)aYh*&M@9h7xc>zXM@9h7!fLDE|KiB~Kh9z}%i}DLvoy{U ziY%#isnY68q#I`$oMqKnu78zqR=`;cXGNS<a8@#W9MOO6ZB?8#a8|>SxzN8{IBWKo zIBVmqhoj@b5&f@dvg7(V8}t#Jjd1qF*%)VAoJ|B5&Zan<;fUtrY;JOKw#3;QXDh?e zPPP$$+&jA+&i0zJ1CDCGvm?$<IHmH-Va3X|-4$ndoZSZM?9s1-vlq@uID6w9in9;S zfm(21wfo`hk8?mpu0A0LY3N`a`Bwl{s5-@AIEUjLi*p3d(KtuqjQ{`tJNm~zRh{E- zPQW={D%eBe*uVdDPS#yc!Kve%s{Uy>LpY}oZi-Vgxi}5$R8N6$TC@(qY2*Bi<KkR~ z<Kdiz)4@q`y26*M?c)SEF^-5oj*N_fD?ILhfxyXdRQw$gf1DnUJ}?pg44gB^CCW8F zTRG?8T&RwY0OvfM^KmXPOq?<Ov*28$w2LJq1uwz5)c7R_=W?9KaIV0)4d+Un>u^N; zajsT-jWC6Fttp6ez2Y~hy%FaYoSSee<u_yv-D>%_<J^yPhk~O2ICtUPgLAi#tK#?K z+-Lm0#d)CgaUR5Z2<KtTd;~|tUy4`n_2W1%;XHw(BJZgFJ5On@i~yWxY_96R^Spv0 z{x~uSZ1iQEPjFtrc^BtZoHub^!+8Veb+ggHj&Eu1+c@u3q3RUx;e1dcIPWWAtcl`$ zi1U%%<zwS0;ZvM%aX!QO5=Zr4TKd8=zf#WEINyxF%Xf-@k0Y{=^Ml>xr-~*G{6cFr zoL^~`H`Tw<Dm7WZ2snSxDpUT%`A2jA!uh*&<Rw}E8XxCB^D|Cs0$P*OnvmAS!f#E~ z?}V29`_I;78mjbP>a?a*WGY&yGc~PgN=N-_1ke)kS7drxGl*~A&DIE73(=a1)|?uh znbs_{L<(rhR{&b2{u})%{n-_n!{*LKYZR@y6&y)RWxqAgK+p4)Axl>MZ!MtY1r1JX zVOq=3T13Iow3eW?D6Pe8baCToRQ12L6s@Hzu<CzVS|aka^eaGXd0H#bT5*u0(Uobf zBA_r=HBnlt)7qNW8ni^xX{||1Z~j|r>vA1h>(Q!y`CFcX*7}k-?nE2X+DMrj)7pa8 zCbTxARo(yFQ&;-0v@L0={#TuELu(IO+tS)uqubF^{cr6+Ye$>DlWaF`$6aXcs^m)l zY3**93hqg3FIxMlzqi_bXo>jSPuKpmbRx9u6p&LNMC)MX=x4HZD6Ow)9Y!mnbvUgW zts}J5k+e=y=O|i7(-NttbquXzY01sMv{9Yw1X)Vd>VNBGi=0C1R9dHN^fUqGst%c` z`gK~aMjL9IY8|yLwf6u2X?eQrsO_rt)dsXg{0I7pY2838p>-y$R5_Utq{Ez6K}$Z~ zwB$R2_E7!tzxrp<x`Ni(v@TH2Ike8Db)I1=;e4AlhSsIDE~Irat&1u`waX=zBlrL1 zi`M1Ro;X*ky^7Yg>gWh)*%8pXPQmL-D=)cLH`02J)=jkT*U-(hZlQG-ty^i`uE=ec zc?YfW|Nf_SH?4b>bC2Puf1mB-0a}mKdQicKXgx~nVOo!vsNvI+`~N;d>j_#<(t3v0 zQ?x|+C8X!lBG1}S-Sf2GqV)o;*J!;+>t$Lm_3O}jMai%B5naBn_6@afnh>qGX?;lR z9a`_xdRIg5NvOIqV-@*e0Qrd47qmX6^{IwFvCPkCsrZlA?U%Gf|1IYm+B4AlmUj6b zeMjpTt?)gqAJq9#?N4g;{=a%Re^sQ^|G#Oe{<li~|4YF?`&XuPX#Jz0=s&IhN^7FD zC!jr<fb9v@PNY_6L3<MQCoOGxVQEiJdm2TiP&*~<sWepPPHi}fi~iHrxzL`D_Vk7$ zJ+x<}y#VbIv}dC|lhS5ZJBwNoe|edswM+i&wCB>$9BSt@QQC9Uo|pDWS;}6O{?ium zr#*`H{HBQIFGzbS+6&QMR0#{yR{d{}7J}|bdoc~E{!5W1wBaRfGfUG}&2KM5ds*5m zD0w;B%MVo05iqX*m1(a+dv#@s{?lGf$Z{RlpsljsUeh9Li&I6{rE@#&_3$>Jy*_Sv z5lZJK+8fe7m-a@qo3uBky$9`0XzxIKQ`+0m-i-E^v^O_(Xxsn)tu6Xbduvl%{cSC0 zJKEbDU%T3o_Aaz5{inUNIlHFl2x#v{TgAV6gZ89-9PPbmA5MF3+6U6!hxY!o_ocmG zKi4?453tTbv=5;@p#SYdX&)wSXxY-zK7#hqy6=%{kLpKhmwy6u?7;GP+9%UKL1`zd zm62fxv`?XZnu4cV<aF9~+C#K!)pmAY+M@ruyF)vpt>WKq(~fAnw7axb|J$Pf{ao5U z?SOXJM~p)|rk&{4>G=Gdc0v10+A99?)(k7njsQW<qJ6exiEp3(x6h+}g(BzE*3r-& zLtAv7_JwLMqJ44c*aj|DQ1qYn<pa3tfBP!Mucj?hPh0e#w%q^IzRp&-LBShKYmu92 z|4jQ9+Aq_-mG;B5Z=)?Y`Lu6WdxzRP)!sGkF0OqK?RyoxkM@JK@2CAhxin>U(}(&? z+K<qFlJ=v5Nae?9KW_ae42||vw4c}L)3l#a=ULj%nW*jd1;t-ftNO1y(pLR%ze;;7 z?bm3(rG(dMzoE{XrInXlinkSchqlN*?RO2Xq4zE41KMBF{*d;kv_GQ#i84R#Gj;hH z?JsEC5m24$OIzV<+CR`P_5V91e{1{yzA7SHtNyn|{|CTdX#a{kJ?-Ccje7r1`w!ZG zYn?yU$}G@^|G_Qm{7d^kQ@`59onTx+cOu-Wa3{u{Tyot>a3{r`Y>=<G>c2Z>RoNBs z$DIauT3Zv`=}fem$nFfvnGsi|-W`Ff`tOSV+pJlYGn*h%@P8(RI|uHQxO3wAxO3s| zggZCxD!3zYm%yC|cLCgaZPt9aqj2Xpxwi6xxQpU0gu4jt!iHIfaL4I?3F7Jqa2K~( zOX4nzyOgcGH10C$>kq8E9PWy^%L^i<WFn}uQt9BXtW1Nfin}@PYPhQT?&`Q}m?-X= zHfwF%jd0h&Ed_sF-1Q7@JJ|qt!|{=gaW^dy+)ZqS%_@R`Ti|YwyCv>6%GnBcYg5V= z+!l8`;a5HHV0>KrEx_Fw_ZZw=aQDOA6?aeE-L%y1mbr(`-AnPkard#vzQ$2}f80ZH z4^aO=+=Fos8i?v6ATv$e!*GwpJzS!4gd=RLN9nS9_+Ns!$Kp0|kHf9u9*=tp?g_Xj zDNROzO+4B7xToTtjw^$}gp@fn;MZ|g{Hv?sD4~Vx;kMOxCAW%p6zQ6!`T_3ExFPN( zxDoEzxG`?7p+s$}HY=_6U*MjBtNJg;u}^{AGld{$Kg%-D!5yQ>xoXeDJs<ais&g|g zg?}OLMUo=^#U_e-DXxmVt0Tab5rBII?v?#?+^ZG52KPqXYjLl~y-w;>@5l|}>k{{- z0sj`<yKrwc2<~mTBL3wI_YT}U2bg!`K7xA>?gJXt5#ZjZ{{2-OlJ%e>52<~)v}Fia z^dI*zwW9yHmH4aw6z<QsPvd@o`wZ@DxX&v79PUf%=yY&j&{Ea!e{o+fLmGVr_f_$$ zlfI7oj^a83+&9&K3s>~t&~Qckab*ywBl?d!R+d$f4{<-j{R;PET#<TQodxcv>VIZw zU+A(DfAzn{6{*MlM(ww_G6*dH2k|BPBkoVeFGIM$;4P2)D_$vvzu`@R`#atQxPRcP z{=0wTR^qSe|KOEH{>A-Iij+NT+tn`Kgm{zSO(aZj;{GnWoD^>|JedgnEW9c4X2P2a zZ#ulG@upSgG`1QQS*lHsHzS_t{{T3`_;@qp&4D)y-fVcH|F**a@a&U+)2Ec0vn1fn zWjQ197R8%K!Fll(P-i~8QF!C)zqcUX!gvcwecb|Y5j+)tdlB$d{Jq8Tmcd&BZz;Sb z2lz{yM1$ZhTRM39D*&yDC;E@KBHl`PYvZkqw;J9mmcObv<-6vsj<+VB>c4J{Cqu!U zNGq&^w=Q0#|9I<b1)VtFhIFRE+X(Mbyp8cr!P^AyK)g-y_Qu-`Zx_7H@wUd>LQ8F_ zxn);d*(<gU-u4>W7EkrR>R|`GofNnF@9iwPRdiPk?WT5jygk(^_1|<Q`ajUWOaVL@ z0eJhV-5*c%UtV$r4#HDO_YT(RA!-lBI}Gm#^$)lE9%)h(JX-BBcqib={XgDuYL73i z<*WEh=p+rDZ1Gd^F2Fkt&r|$#wL^F{yr%kfwK@W%LkF*o*D66%L8CeXB-+6%@Va=B z;=bAdPrm|~kCXHe<0W_*o`}D^%8;bnzyI`lcp~_C<}z0I|9EHNovZlSc<1zU@y;_o z-udE4sWEu>;$4V$8{S2D*Wz7_cO~8>c$aB~OD*$qyeo`vk*o0JZ+`G(1eo4R2k$z( zoAIv4yHS@nSpH2FP0xaN3!XmwuRbB7|9E$(y%X<lyt|~PsVt#;s-^h%;oYyy2k=z$ zJ^TA#PsLw2)l(q6$MD|4Q~mdzz<UnwNhvFwr_?^JR=)yx&kpSJJl+d<uj9Rlr#JlG zOL&$3moz-lf4tX9YqId(5MRJI@!rBy@wcbIdl&CBJgfiS`^p@P_W|C=>VJs$kyNOz z$tMbm_!|)KbG%ZtRsX#&@xI0TN;zK}4xZ@0_Vyj#j~e<OuhM^8R(=J5_p@b|`v0#o ze^XnIfIsj=_VNDIlwrKT@%}M<WAXl@GZ7s<Y-a)?cP5mO*}XF{ohj)|LT54!O=|JU z>F7WHRhr?`nMyhG6+jy6OiO1cI?yQ}VoXP8Q99GpnO!+E(3z3WEObWL+?nXiY|dpY zomuJ3rsRPSPiGD~^V6A=&O92Li_YBYjFdX&4U!|wOJ_bo#2?iU(OH1bf(kA~XAyN4 zuA<WLXuI`dbe5sBxDu8Sg4B@_KxZkn<3<3TW$7$OXDvF*(^-|y3UpRd&Wfci3({Gc z&MH-J=JU{5jm{d%S>5iqrjV7d_}X;V8Cb4IXHz<&|8zD`yP?{R)NWi_bvCipHq+(i zbhf1<`makF0d%&avo)P<1T34W`ceIt==OAWP}+_{P!64)>6}ex7dk4uon7hdM&|%J zyVKc+&K`zIXHPnN(b?N%naZV4NA<t6AD#WHkbno$IaH$usa5^&RKEqLbC`mM(>aok z41$4b)o+369789hb1WT)&T({3p>sSPRr}5fntq~5q*LAeD|jlMI-S$#4ABwsAE;cj zd=-Cb(*FLp)1uSS^fnz=9T^{%-!(oRpH5)F($b0O^ytLuCu&nVxjLD>@<q8E=wX=7 z8G=aqnRL!Feo3Hn4xMZ0oJ;32I->t{&Zl#cIv3CxW0-U<6sLMyFQ#*e5>))h;g>5Y zQ-IEuYOkVW#lPD9TE*on0G;dU+(1WUpU#c8_|0@~rE^OO%B$M(HtXDhe;A!R>E2G~ zF1qCh=5D%k)47MvM|AF`^9r5&=sZm4ep7+Y16uz<wf6si=sZH_c{-2Md5X?sbe^R1 zIGrb|9d%RV(|MZCvzq&iMV_l@()J4)dXdgcHmdq>E6{nB&TDi;=jptz_6<63(s|3A z$Y#Am=RG>_nx)d-r}Ke2V=GYJtPiU@qRz*3{-g5=oge9ZO6N;DpDFoswO>>zvgucJ zzEx2E1eDG<_DX)I;P-TXs5+@G^-pwu*U-;&exdWLDMjZuar7Ob^M?}tr1KA*zv#$! z0Vz^dkYQ2z-T$LI9o-4&PDXb^$?8r-cM`f23&&LJs`yv_<aAZ-yHn8Be*$c3cBiI0 zE!}DQSy~EPVS2j%qdNoLS?JD4cP6^3|C+1JY6Q@oRhP4wMD=xWbmvfiPP)~dzah{a zNq23!^Uz&}?!0str#m0rMd*&AyCB{9g(inu!15Q;<-%quR-&WnE~?IA1}QHN-6a%J z@$ahmcUAnW>#!`{)#xrqcO|7QuXY8xD-KjxS;18dLU&br%~w}k27x+j(p}5=y6-x4 zcc8m2-HkN5o?0CN-3{n&IKbSPu4;RC6S|wy-JI@b1JNx8{H^G2OLuF7(6v)Q&MqT> z?)J8~9W7@kx;tBc7rJu)udiXcyVE_D?jCdxrMqVd(%nn#-gNh;yN_Yg-Iwlu;*Wcm z51@M>-Gk{KWH@@>L;4)Lhtbtr`tIQ+NcRZ3N2+ra-DBt;J-|Fxd@WA*c;%@0cTY4p z-IM5^O!pMSvCPxxc9eWN-63^qbRBi-YGnk_ZI)JhYw5C0*Bv;8XQN%ZW9a&H3%UW_ zM9HDrNNsGHsV+0Slv$wldy1Er^jx}U&^?RpnI@$8*>tNX|CWCq-SY=JxxnHV(!GK1 zMRYHxd$HzTLf8J~fA=y&Q~V0L*V4U`?$vbdKLIG;Ao;*wW2;?fo$Ch@Z=`#ZR=An& zt#noYtDpVbgjSuX)c+~zmiqrO-Mi?%K)2NYC+OZo_aRNcm+pP)i2l=kfbN5mYyQ}y zD)_L59#Q)!-N)!YE*$egsyI(-^eMVe(|t~T(SN!F_y67M-+$44k?z}cUsA%$bYG|Y ziu$jreXX?m8rJ0-YTu;$mVniE?<gqxPxn2#AE@&_-Ld_y=$7JNMn5X8yyTL8LiZoK zpVIwWLplPwpVR$9mtU&=s$W5u-_ZS*?oaA}NB4WWdh;*Uek?)T&(C!Kp!*Bm-{}4- zxV%jNzZ;+KpQS_hFS>t^zs0}!6Vv_AWa0lG{shAGMgP^ANSty<e-evKia(k4Cs$7O zEdYNi{0;D@#-9aW^dEm(wWysAe@1ntS35&#wX*0x{!IAe-~9Wt;;)E58~&pBWdrl! z&yGJ5e-8Y)@aG(N5NU7jYAL1W(Sq~Z`lIj{#GhZmO8nJd2!9d$g$+%t<c>B={KfE9 z>ixwPUjkqB-|T|FH2!k<%V=m>!N-M`S8xS`;ID+QBJb-6@K?cK)$s9Gvz#^X*U_vs z@z=7^>i>VhUsprxsTJ{;mmGOR{5|kD!ruXZWBe`fH!)HCP4O%J$KQP5%4~_h75=tb zYHR#$OetNe`1{-U5e0WtyA%G-_#*rGyVxtRn=l30-6DHhWH0=^@ek7IKKT3MAAr9f z{{BL+Ke_k^8h(l3>&?F}`j3BTpN4-pL56<>{>%7B;$Mt^6uystG=3fb82l6Qk2Q7h zkHbG+D~SGAKLY+q_@^m&GQNxe{8J@rewO{ym05yA_%-8eKMiFz@!R+^6m;3LS*|Wc z{P8>ZU4z?bfIo~M;%7>T@J0Obbtw3v|MIFD$Td{pi~d)2gnS16nfRjW_-EmtjeoBC z=NKCPdHCb>zf8m*BO&2mh<}ms6~6@kG5kyM@5a9j|2F)~@o&Jt0{>e4EAg+^tg9qN z>Qv&dpz6QWyndj!8}V<#zeNc*n=JKjH9r3By1YY{l6xoqUB=h?_uxOM_`Pa%1o-#k zKQO>~$oTlG|Gw(K|EPe{;p6zv;y+<IPvSpS`uI;<<e7nPpTmFN;x8!eMYS>lwAw2K z%i_OEFa`c=_&?&mj{gC^iogFR{`>fE;lG3bwn@?Sck$n=cB$UVu@bFneu)1$zUV*x z$M~PB^NES7FZ!>$e}Vrk{+IYV7yPd(jvUk8|NGzJSO54I|A&DhKM_oV|1-e^_`l%) zjsGkDANarF|K7g>y33#Ve~sVmKlmd1`2SX&1Xc3_1{11P@t39k69920Rb2F+K*ZnF zB$$$5euAk8{zou1!OR5H5KK=nEx~jIqW|Od6U;y`f?&ozPB4@BmPRlO!K?-$sJ;Ra z%ub-%9?U^7C&An$fnY9^MKE$8eO?XCr*_l;zJMYN5-dru5W#3&$_OA>#Lx&9B~Z-| z7PF^Y!i2;MQ|CgkG{G``oM1VEy$O~l*qC4if;E-7BEd=oBKQQV|G_E)DXS5zPOwIW z7-1CVS_EqotVghpgaoPn1e9QXf(;2aFt}}RBU6E36M`KHHYM0bvo<5xoM21!x3HY8 z2*&^AZ=mBKQ2h_KC)h!l<^6;CR0lf|>`t(=f@LSW5bR1||MMSnt0o=pp}Xu!u$S3L zm-`SLL9nm-`w<*MAR~a_0D^-E#_7L;2iqN0|AlrK!Qo{{UgeKNa3sMH!BGS!5*$r% zoMs)Pw)*$K>K{*_`d{^b62YkiCrc5jS&o4I(M}_%^k3`O2t0y1fe1c9Lv2$Mt5Pk3 zHi3x0AQjjl2nebXK;WAwK}e7gL<F&6T6~=T6XXQ{5flW^5%dV|As8mOoZt+CiwMpn zP|Xj{A~?HDCs6Sp*Uxzb=M#(}xIl_4PH^FXf3fiiE+M$I^a(B-h+aW(JHeF%H)!Z8 zf~yIxB~bmZs$EBLy`<=2OG|Jg!7T(gY0Az0YPuBtC%8?(>f+o%aHruA+@;aGZAisG zxR2mTg8K;`*60Ijbvgt(0%S)O|KL%A$F+gSq@duc|J6pS|AE#2K=hxWy8kD5p5S$@ ztok3Q{s*G}1TPc3qE4y*ubIlW!#4;@fqj$U3xc-@J|K9T;5{Y3L-4MU$DQ<jg0X#s z;6nmYdxDP$J~jolrB4<7j9|R~|3Seo3BDrup5SYOZwbB`sP>)s<}Hw#KM?#l5dB%x ze<AooonHxlGf{$S3K0CMp}z?JA^6)wwVz7-B^s8mH3%mloP%&e!s!VoQhZ{<X$U7F zoSbk{MMVEiKZH{dPNm?K<2nqdHUz?H#gXC=PG>-i%s@CJ;jDxslpy*~I5Xia70tY} zp^CqR{zo`_6_Vwggd)p?a}mx>xFF$3!ubewK!l?Iw!=|`3lPrVM=ZV&;bMdf6D~@) z2%*e^>Imjimmi@}27%=-Nw^}RihsB?;c{h&P(}dZvX-;F;S;V<m6GU6gexm;6~fgB zWgJ-k>I43ogohHYMYuEJ+Ju`Bu0tqNPq;4Odg`n%{Bh|U5~}zMXJcD)Q$p4Ma5KWq z3AZBLf>5SF)smcR>;95(Tf!a6CE<2zw;u@U{eQTVK?rvt+>dZq!o3K0Q}XVFqWooL z!ac>Q{Jo7&xKHU2$_TLS?XSoIga;BHOn6YgE5+^e|L`!vHsRrf#}FPN=~CxN!lTqV zT9E1!axCEx;c<i~5gt!?f(a3xIKVlX@HE0x2v4oRD))3LQu#H)CShF&vX|(;4e3M( zTLXwo=qarupz!So2!rXy-b)xxxBs4m5trXi7<0k7gb77?xl)qf2{XcB!hFQ2Z3qjs zz0!_YA{(*nd4y*WmzVlXqO#|+h~_0coA4vTa|rJtEK6NMSkf-hea|PnfbhbyRl+gS zj5rq&R)6_pj-bp-)m}z;xzH-+m4vqtUPX94;njrK5)SBpc-;W=2Ev;NZ|ozbL#QJ_ zcD$8Pq@M6L!t%&>2u&`mowlLse|WdS3Cm0LEa82GD(~U_gbxsk<`Y)G|5ab+f}ZG6 z!Y2tIQ}A)ZapG?dNca@t(}ecUzj{xfBYcDKdBT?oUm#S?4@Lj0%Oah>Liifts{;1# zXTsO*zHbt~OZXPyJG%ATRbtiEdxT@Pz4tBu1HuoDZ;_9QO7Z-J@HfIw3BM)$jPPs1 z&k4WO+%GKit9~M3b@Q);?+AY){GQN0|Cg)uqjpk$ihd^iMg0=|b)Z7|G5eSB4?+=q zLLC9&Uv{s52AKa5O(>j5KgrPq6(<t?mj)tx{~t|CGz-yWMAH*ZPBabC6hu=gXF&fW ztN+ooMAH!=?ddyWEYS=^GZD=w^=01?RaE@yDG-s|{}atdG&fP%!<<C36U|{-GL~pA zajGUqmJX5Vzujd%qD_fL5iL(NKha`JSb%6jBDvcqT8L=jK3|d1M2q$jqQ!}pR$OOI zv?P(}zabE*_(#hcgh(brxi!%WL~E5k(TYSX5v@+NGSRAvtTJ%Y>VJVFTEkXY(^OFA z+C=LRtxvSBjjm_UwE@w_L>m%qR8=#d_Gpv-l4vuceTX(E+MQ?%qHTzD1V~p~Y5nS3 z0MWKYI}vS1v;)zA_(vlCcE_EGb|u=Sk7xxM0hX`_(VnuD`g;-WZTvDyv@g+NMEemP zq*2xX=m7QY|Njsjtjj~x9$H#?N$%l9ClVb&B!W+LB+*eC9oFSBM8^>wYsiWmPgLo@ z0f|mh{A9JK5S?mp+xF>1pAiiaT}@OYx`3!olo2(E+M3c->u58T{u8-GA(2PaB~tyb zuD?$dn98<(M3fN4)uz?;No_PIIz#IhYI|zSqnXo{`hOl#ssHB^olSI3RmA)pRoCbI z3Y3d8MtpHDB)W*`3ZjdNE+vvNVQ55`5vll(_rrLlp6)8kxrXRzqHBrnCAyC2R;_tG z(G5g56WvI3lVSExN_2}o(QQO`5#6pScMy&L@4q4uf1-P;bn)*adV=VFBGGxG2Z$ad zk|`hstE>75(W3?-dW=ZE1q@VpQWNF=-}0X!dWYy)B31k7Iilx@<j&s`UbN23L~jzk zLi9S(t3<E$IVFMUjsBA8E%Bwpw+Fy?iQXeB<^6r44~WJNggzwtNK@?ii$2k1S>aPd zBl?`U6rwMPCn5Th=og}|h`uYML|?0wuK+~f+HSum`jO}dldhqk)c!1po{s2OA`y0? z--v!EQq7P4uoeCy8vpr!^e^!QME^-jtVK+nctT<;{_(`)>c^83&rUoU@r=Zi6Hh}t z1@TnGQx0%c{Hr?C5>HPIvAy}X?;Y_BRafx{-F+tFS&3&Ro<&Oa-~D(t;_+sOlII|v zlXza@xrj$9GVuIAw*USso{xBbjgB%ki5D=Af(sF^OS~}glDb?(?P%gfiRHGRSmuRo zatZ4!MZ6;M(!`?n#5w|Ed;cFVFDZhrU~-99B3^@dW#ZL{S0R=uU`myicy;mhnh>u^ zytd}b>@Ya-I=0Sw#2XW@uLS*45N{|U*{hlY#G4RrqsXSjn-OnGygBg}LK}D4w<6xU zLaKeYCEk&EJ5Ai4c!!FtS;TttFT3n)``neJys*0wKTNzkaY4KX@#(~S5+6mp7xAIQ zdlT=k1@|G|mw3PNdpLmjVB!ObWg-mpCi-u8IZV?JS9=8UkyWVb`Do%3HFON|vBbv{ zAJ?x_I>aX!KJiJ!rx1(&+sZNmh))wlLE<6ewt_Xab>arGL)<h3v65n+|Hm$IMC=j! z#G?PiUBj_k1jL~rRkx!5#0hamoc3|;GdD}(9`Uur!^EQV#Am2IQ|(#AXB(O>&n3Q` z_&nkZiRD)S#1{~cF?$&r@kPX!5?@TL;$OC*ooM=HmU9L1)x=jSc$ERg%I?>gCGmB{ zw-aBl;0?sL5Z_3Avu--x6d;x{p|sn~Uc`6k@=jtAeB!%^tA{_DelPI@#P<>3FNvl- zIm?5@<LiI?2=VvCj}pI4{21{wTJ3RS`3gX+`X4_<{B%{Py5`Rkze@ZZ@rz1(Uag%1 zve8S#FB88aS^Y05v5WxX*NNXGenYyds;T~0{yW4U5WlO5CHXx~k^6t*v6lZK@fV7G zMEo)Fr^J>1mjvR^h(DL~s($&Ve@XlevE2U?i};%;@wdh&{;s+!h<_lNlK4lGlKB(y zZ^V`U6aPZ|>p<@B#D5Y0VJpZi(B1zg{#TuUqygDc^uO|x2}mZi{zN2`kxWc7$pB%} z$}bO+OfGejDJ*{~lG#b7CYhOJ8j=}FrX`u41QM(N_S7U+{}a*w@<lS!z%DWcNM<FO zjl_O>O}EJ$B=eBWsf4*mMv~0kPwYD+^V+UPk>n)vlk7pV0LfY;3z95NvJlDQBny)) zMzRRWXv<%;U&J^hOOy_Yj)`Qcew1Vxl2tUcEXi^tE0QcvVxRm}-L6Ekaz8~cmy7_C z)kxML8Tb50!8L6UYm;oOi0D7bx+Lq7Y)G;`iHN_@w7y0+G6=~gB-@f~O0pHnW+YpX z*kArCpJYqRlo3E8!@?rlk?c&eJxQhiBs-F*_?wO7joyW1H<DfZyOZp0(zV*2Bqx#V zMRF*~-XsT->_f6&NhaCX?xI5>k(>X4{tqHK*b?mXpX4x-qew*m%NNNJBuDnMNRB2s zPVr+%jveUdc#;zaD$9(}22LjFkeou&A~}_0h(z?C<n)1>HIfENy-Jt1n<P#}(2GDK zV?q;MwVol9i2jrKB#}CS+R#R061nFmss8^Tl5Aj?g5-IU9?4B4!z34I?inO!lANpl zStMtZ$Xt-Ds+04qbH2ez#*kb_av{mZBo|d=>FN^8ywox;C%J~?3K9|jGD>n4$<<X# zRsUL&8%VAr5%D(_#0vRFvn08h<N=afNbV%D`k&lJay!W#RZ3O=E|U95?k2gntVSXe z!Bo@b{j#i>50X4aA|rt0VUkBl9x<W5C3&3WX_6;MMEp%1lBaA}&yYMv@@$`P@fS!w zA$gJH4HEroki1-SNM0dP*-u`z%-8$5ByW<uue7&F-X;;*Cwa#ZNZuP@j@8fyBp<2s zp{@4u0OwPZuSq@=MCyD_@&$>?ej?9;2AJQF$gMt!i~y4FNUC1}mo$=6|9>I*Nkgjt z)w@>dKgn;V6v-bH<&XBCWOI`IMe;An-z5Kx7(Hgh8UGt`_UI93mOt|Ukw&EdN4gT} z1f+A3PDnZ<=|rSckWNfG8L5l_QWbx5&1E@xwM#lB>9nL%DQ9ZZX~sKC3hDG3s-^(x z3?@;*5u~$_iujYxEV$Muot1QU1!p6*a%Vn)=^Tp72#~9h&P}=)=}6KA6rYE5UeZzO z&u2OF8%MzfNf%LPA<~5f*E))fR=cR_pLB83<w%zxU0OHN5s+3RfOHupFWXPo<??D* zAYHM45lB}i-H&t?(#=U%CEb8@HPW?7S0`Ol`D;`~<Tz{D-Pa*qpLAW)>d8-^qbVDb z$^#$LjYwr!m?-I{HhnYeY(cs+>6WD1k#0r04e8brGM|}rTjP|LbbHbr)!CuH7il#G zNOvLKi*#4g-AQ+=2=cD&LAqyEWZae9n{*%2efxDvhjf3^Q%DaWJ%aQ=(nClOQoPdt z@+OD$P*S=1Hw8&`1W0d3k{(Zb6zQ>~N0S~ieq|X4Hsu7;lSnJ^*ZL<*R0*V~lD0@s zBW;kLPFhpKkcsNq?Ff*D<?sJV9h=)G^+{dQj^duhMgOY`lBN2eTK!LB(l<yG(wj(A z(lMkN>Di=tnL=8So<Z6p9qw1q;%AbcRXXEWK8N&N((_5r>*J&s^b<)hB)x|8BGM~K zFDAW=^b*obt2)&?emUtC<0Ds<6-ey}5dT`z8x*{bbYKKX$m)N3GwEZbw~*dPdMoK2 zq_=6x?b1(mweKXoTfw``j->aH-fN;3xu5hQ(g#Q%tne!LVNHC5^wFx@3V)pR1=1%- zpCx^g^l7C%WpYWM5l5MdKS%of!16`XS4m$Yec6DduZUAse$Du#)d(Pclk`{8w@AMx zeVg<X(sxMTCw<qZyk}1_mh{6CB>ljKJ|eZh{H^MLO8N!qXQZDGo=CI4RQr|9{YIDH zlIj#lzav%suin8QNq;8&$&kg$zV^2O>2GAE2>(u2iuoU;f0O=cIe(cH(tpUxlz&P8 zGf35ssh>?qHW}GOWRs9p5C4Tw{w!pZ8YbD~WcJQKo04p*s)9LbHVxTqWYdz(NCw&T zWGem|m2NY8|DTN@o0&}X-&UT5Y}Wo#H<h0PG8qTz%wd^xk<U*yH`#?`Bgyt4n}=+5 zvU$lCBNOo_8%4G-SxH+^mog)?=0e6%a1phm$tvZyoW;qOCe!=>OvGPlOWEC*AzP7b zS+eEHmNO|zSV5Wc<4m>^*{WnKli4T#)fHY%Ii`~}$hIO|lWbG6waC^dTbpcMvUP-` zd~LXz0%RMIZA`WyS@q<n;>dO~5p>_p)NW3;r8-;m>*#W8vK`2_A*;lnY&*rbFRiVx zBiU|bJCW^DB4j&P6=auP2WY!n{+?tflkG)z6xrTn2a@fhHTNakpKQN=idH+oW*tO! zIN8Buhmut{|29-j0kR_`SN1*9hK?pXUXf$S<o=&*;Q5a*PtfRz8al~lokA9qol4ds zJB_Tm`6nA9Ymn8*>ax+e3*ID?C;xqrtW6e>xnx~3kF3)V2~FDY`v_S`CSM0k1+s+f zOtO@$N0yO^_-jgG2<ppcrhJi|VWVe}olkZ)*|}ur3^4Wnzk07l|H;Of6!kA6`;zQp zvZu)|A-kFEQnD+_F4O4cYOfgJUqyBu+0|s%Y8%(|H&W*HWTN?GG7(IOta|=Kb_>~q zWVe#tLv|b4on*I@$-|$15wg3;WC{!*_mau~`9OA`!O0#FM>%8<kv&27FxjIeLiUKo zA0vC*_<c(z-vY?2{%6mSy-D^g*-K>4Y3O;f7Y6t*4)`yVy+Zbyc4F`Uv)9Sq5RUnE zur&D=*+*n=lZo1sy+ih{oTa+{?~{E%Hg=$_3<4YdnCvsMPfCRBQ!Oi%$v!te*%y}i z71_UJUz7bz_6^zhnxgmr*>{#B<Dm4(ek2=T|Fd7nekJ>h>^Cxb>_hgu$x>fOfF%Ac z6(nk(|78D>Pfz}T<dc(6Kt72?^9ji(BDdmij#H-RqW|QRRsG~skWWiKCHd5vHI)<> z!ZhNTEU5<hbbW+;2J%_SXC$AAT%Z5wl`IM5^7~)%SxheZY~*v3mxyRS`RsPzImzeh z*VoWU@_EVi;lFub^7+U|8NSV0fc#1F1<6k#Ux<8r@`cIQAYX)hdGgWZOOY>1z6AMV z<cnAJt7=R3w<BMgd|C2k1`yT%>g+3!uS&im`N}1Me5C=}D#j-l{U={t8msEBNxmuh zTI3s&uT8!l`8wq5_H#=b`TFD=7{1NgNb77&UMauDHzVJgd~@=x$hRQhvZ|wdS<W`( zD*O4i<L|Nq`2plRlJ7>YH~-S=&g8q0Tjj5M-kp43@;%7+BHy#$82R4hBL00uo7|6l ze*vqjbRhZB<Oh)-s?meV4;hFaMt&su;p9hDMQk<lqils^$WJ6cmRx5+UX1{95r2Ee zlPvjU>zqn{8To1C3Hj;dE%G7q26;^ga?)xFkT)$-O#$*Yxlitr>-~RTJ^v~9BJbKA z1M-MmZ~m*R6q`CqOUchB&&YeaS596?v|<jETjkHsBtNS!K}tS{d<^-y<QI^iM}EG^ zs;m|vzmWVA@{7pr-~Uv&eg&v@xt#nq@+-)1BEORSTJo#NuOYu$N-4)!^6SWNAisW~ z|LW$yB#_^%UEN}$<hR<a+sW@Emk~gIC;2_(cadBDH}xfSujSuQ{s{R4<oehrx8DL} zi-)DSIFFKx@{>Pi5cQw1(WfY;C4ZXyJMw49$C5uw{yO<{<S&yyPyQ153*;}F9s3ou z@+(^ERr1%y$KN1-TSIS>zf~nlC-0EIN3Qq(Rd4T0VXu2P@tcY*vP@{b2{KPCT? z{4?G6bMi07-|;K*Z^^$V|E5aOn#L#pp8Rj}AIN{vu6|T2BY^y8Q-}OlUH(S?2f2!W z^^X5Z{?}kl@_#5wdH<K9OxLdfX0NhZF#*MdQqY{Jn3!U6ib*IYqnOlyeM>O~#ncp2 zQdG)65YiD)Ua<m-Whkbjn44mHirFY;pqQy-Qp`v(!ZtQcF|&fRP}uwb{->oV> e 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%0A?dwkZg9cdC2A<n@f~)HW;$GHCU0)OE$k)=WDGC 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%0DT8q5O^V*I_)RS_LTE^PloBN_E;p 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%0AMLATzCq?| zGMCKPb(J^Ce7m*DRQrE2`Hz3(=OX;?lG#34?alYde80!ZSs#-55t(}PuV(U7vS%Rk zGqMgR^K-J6BJ&F}TVec?%)iL|ip(F#{F=;f$^1sJi7Nk-v}CF)ATqz#<NA@z-^l!l z%wNb9;;#lMvUmv)MyvmSlKIC#l=~-hDwzS9)5z?S`8S#WlBqWTT=c&lo=lfaPrj1r z3qy@1Br_*7A~Pj3CNt@!@C;{tNU{IdSru7CW=+;~WHw|uWEo_soj+L?S#}THrjRA} z|6~mrV6&ztYbH^`nt`mLWX(7jKQmdgs9F}J!3?vKH9uLik;Q^<&CX7-|7WVX$eM>N z)_*xa*1TlR*Gp&20%R@1#)4!mM3&zFD~3hMT7s;_$Wk{yvMaJ!{1s+tvNj}Z8M0O- zYgw{ZB5N2~?Ld|zYX!3O63~LhkXIaBeP!_~{Hti@)yP_tJ*)F`4FM3-vKCqEk+n8i z>uArq(qNd_{F5d0U-N84*3M*YOx8AJZ9>-O4A_(`)_=vh1zF<Ghb;A1KxC=?KRdT2 zYX`EnBWrtANPgU+(2ivF>A$rLS$mVUD_MJRmEFkNU8JZgd$Ln31iH6<$U2CueaSk2 zto_K^Uxfzv#SwseIGC(M$vUK$%T9F!AZs{TPm*;6S(lM@Bw1&XHG-^@$Qnu3abz7u z)-hy>g+SNk%OCYk7)90zWQ`_E-~S9$7iR%3bTV0|k~K!Z>Q%rxjjS`tI-M+a^P@^A z=CjGVh^%wSI-jhuWQ`;1+`b;pBWwI%`~~eRSz`aM`<%d@i^<Z;Z;6FKM=vMqZnCZ* z>lU)EB<nh|t|Ci`KUvq1rSJb$Ki89W6InNqb)#fZPf=8z0?4|RtUFpiS+|jOJ6RJ| zxq&&kldQY?dbo!yA@yY4%g_5b_kPJt)+DkXCF?=59wzIdzN|-tt>*SIvL08Rh`LYc z+^5L;maNHSy+hX1WW7w*Gh{u_Ri5SNbDH4=vXuCf^->?zD`dS+)~gz(jsRr6LDpMj z@#cSEGR0cZ=8`pqtdGcgm#p{6>NVN7|F?KWu=ol{4E$rVz9j1tvOXv4Q?fqmHNZ`N zA!*tEimY$Q`nu;~r#J$z@f}%Rvc4zlFS33h>sPXVB<p8xN!|ajt$qR~>o>B5?349- zuOeB0YPP9l3Bf088fU3f09pUC^S{0nm#m5`kF1m|pR9<ifUK~E^<iSN66I0dW@Hs) z@%~>T#nhF$dQG-XRztQ$wn4Vp&n9iM9kPY&lP#72(WE^c+0(0{$}^Pg+sK}g?0w0e ziR_igo|)|V$ex94q3vXYY$AI$wr7<*YzzHY&De92Jr~*YuzzmpCtGd)x$gXAFG2PK zWG_ngf@CjDwm1mr^hJcN`dLicWG}9xOOic|?4`(FrVWw3v_|S9fEd?uWUs)5me*M; zl0C44;?T-uZ$b7dWUov1s${Q4_G)CWLH6o0g)wVNaxS#CrdmfE>yf<)+3S<NA=#|| zs^^W!-dH8}{uSGslD!$(`u<0LruLR(?@0DmWN$~d(0{VGA$!|i1MJ}?K!o@RAdH>J z-kt27$=;Q0-v19&*-h3Zdk?brB70BOhRE8R?0wX$s=goD<H_Ei?9pT&K=yF54<!3g zvJc|A2a~Pue+E99!^l3o*B;qNkbN}SN0NOM*(1mv*$at6YBr7`dlcEnl6{=2uGv~J z*~gQ8I@u?XeKOfX{K-D42P1n7*{8Bo>%V<kuLRj=kbMqE&m{XSvc)Y>Uvw<l<2ZV* zbdoLZe<X(N^U1!PY}SAKLb5MzLu899AhIWD%q3)BMz;F#w=ee!vacumN+!RG>}$xr zx-WVy*#nz@#@s;mjhgc&vTq@K;QpWNTSZ9C)$L^eL-s_n-y!=BvY#OPPO@3;?Yqdn zo9uhZzDI)FC)xLrt(0FjK=vfEALfv_0wP<T0?2-Z?8nG{RKV1y|G3~$b)O{r6|$cq z`+2e_lPzw3$bMQ!pCw!E{I%x=vR`U#vR~AmzWu-bD%o$5{TkVCkgYcV0w(b4{)cU? z|MnEJzajfwvOgoc#e78edt`q=_WQC`-LTew`(sZ3gzQfR?ZAjWC;Kb1mHv~h?td7p zmH@K<NA|B|e@pg{?EjAJ@5%mQaG{?#^fTE?`E>)ok^Lu!ekc2nUJBWNkv)y<sclF( z#YnaO+y9a?JK6t{(<*b9?38Sm?1*fS?10($2%tU`wF;0Ow^U^7B|s2nWVa%plPxr# z?7ky_UCGj9H-gYH$kF;QX&sxKnaOd;8A?uvoaxCKLe6xmVTGANyy_v4Gb1@O^<G<p zoLR^LIYRTvp<aj_u@;DyoH@u@nw&YwS%93m$eEWMA^zlug+R^>IpPRF&iulovKAy~ zadH+SXAyE1?(;87&SEl4=PtpyOOmsc%+>y7$XT77Wyx8IoMGgwK+baHDCO5xRwPI3 zzZ&n#<g7-{D&(x%Uq$2BAZKkZw<bAj38(6I9dg!d@#Lr@06FWEvw@82em0`HZX;)7 zn)x1bHlgVwayF$QSCO+Bb&e)yb8`M7XA5$!C1*==P9SG1at<VCYjSocXB%>MBxhT4 zgzS^EonjXD4!Vb($k~;goypPS&m&^I`W1kjJ;)JiPtKm?>_yJrJsxg;Uvl;*N8JDD zo(~YV8skCaw0#~-&JpAsLeAmj97>Mb`D@JZzT6|p8A;BFJ`Z31D7ItB8AZ;qZIqnj zWI0`QG&#rjWt~XQh2)$>&RB9zCg*f=#*lL=Ij8h6-27?sm7FukIh&j_$vI2W4h%=E z3%bg=<cuR{JUM;(@0?H01uAP`_AVl40y&qHb1^xWwhZK4(#La|u6qSJSCexkIal?f zy4E$?xQ?9H$+@1Khsn8toIA+5k(^t|xru4}^xwIaoZH!Xo93U`qb27~avmV(E^_WA z=WcQa#J?>>&VA%){a3R+iK!kWM=8JV=Mi$AA?HzYo+9Tla#;KY!xQ8@*(=AKlbPXZ zk*NNqJWI|?<UB{t3*<cC1CyhU0G#zQIj@qVF8^gNIj>1DId72jEje$J^D#MZk<(7> z+vH3k=bb*bcl#>7N6rUK`@UxQkerVMVBll@gq*L*`IMY5$oY(%&j&}pB<HIhn5n+e zRC@pKd`Hf2<a|%g&*c0-j=ujFpSxHBIO`W}sQaJxm7L%C`3FD6ionRJ)LDz1Y1A1? z&fnxT<orWUOwPaL1myfjj!RBgf;rJ6$5%Zo1|k0B@J|40<`Z&qcBcHyB%YjtoQjK< ztzS6BM_DVoCFvN{F{v|zIu><0)Um1K^pL`k6+6>WX9nu<<-g`>L)4j(I*U?gChE*X zotddK8+B%(&aBh{b@=jMGpK$#vr}g->dZl%Ii*MQ3;oyjywq8cI`dIy0qP9szm6_M z9Txv~Ae}|}vKFJxO4M1LI?GaL3F-*tr_PeP?$Xo|rvOz{<PM|G3e;JSI)nAUvm$l$ zmq*TRXJzWFPMuYla8>H8rg&6TT>emJP2psI>a0zj9jLPobvC7r5P#~dN1gR`bOY*a zOq~s>vyt?ur)X&t-EFJ?TXEv%{M>>%TMC%s-<mqxXnR`*Y)75#dqZQ-j?~$oIy+Hk zZ|dw!ojs_t3w3tm(5^C<?cH_7J^6Jn5mHt5(Z;^i*-yaKcn_e?Aq+l{p9i&m>Kv@2 zhf?QA>KsO$;nX=?FetVoq#-@j89|+q)M4>wS|&M$hO}S5W2y53b&jLX)zle9owKMj znmVUZ=XmOzL>+PYPn{F{m`|pTkbUZm(LJ2n7d@RrXYljPKL6R&xrjRFQ0F}AjHM3m z|2t~`uX)B(=K|`S-^*f>3w3k?b*`Y!#nicsI+svq(B_{ymkXGhG2Z`o29^NoTtl7v zsB<lKCQ|1*>fAz|>#1`Sb#9=}jWSE;^5u`>xs^J%X}?$qw0#G4?xxP2++N@PPe&{P z)Va40c|ZL>uFe8lb{kpOp>4PMv)$$snlQd36J}=S2{SWKn3<WGnVC5+%*-%hW_(sz z>fPtvm8Dgx`s=Tfx>F^o_vDV;$jB9pTrH+6WxT2bFmeqe*E4c0Bi9Y*AQ;mHMs8x{ zc1CVyL>2!Q#>lOV+}6n^pF6~5sQ!=K&B&XK+`~wl&%KO1#>jn)Jj}@bj65hL`u#^7 zA2K|T7~xS9>u~`*(M?5ul93k~d5V!|WcqYxV&qvyo)>0y1rXr{C2092MqXt^o&Onm zWk~-TBf9vDi>d!3Z!z*MBX2YE5hL#~^1e8}%ZM)i9Rnk(1u*iVnyQ`on32yJ`Gk>A zMQ`f=$msc>kuMneN~~YDE+Tx*$TyvAG~Y4uJ0ssS@{<65VB|+-()gbl`K8sjQ$~Je zL|1-e{euxz?HN(^pAmEZANdDMo&2%J(Z1Grqny?RSW9A!U`>N%VHH?5R*cod^06E& zPkh}jijHLkSP@pJ2)leNIs9um5tkGz6QQqtRSvmfD6u9IYlT%~jS*Q|K(|<HLW7(b zYci}!uqGYi`B#f?r&yC?O^G!{Hx-hpu*R<c*0fl&U`;31>9Ja`8I1dkCdy1kGqchB z8*4tSS+VB9nhk4Ctl6=o_zyl2Yc4GP@?+fRRf5iKeysM8zW~-ktp>|<0hP9?|JI^d zi(|<XkY2dde=RSCwLR9-SZiS|gSEWyEQ__=P?Qz0R>fKoYh|pJy3hh!MJ+`0tcJA) z*6Kr=HL?CP0JnOqwXrtES_f-=taY*0>wG&5)&^J`Vd>&8_>Hl~KL1;rVQqu8Io4KK zTVQRe86*dB*}BtUZ7UgWr^xkQ?SORv){a<vV(o;rJJ!xvyJGD!N}`h7t;37^9#}*5 z-`WdnU#z`N2x$Sb16ccE?LQRjK&&IM4#GMV>tLZeWI!v^!>|q?Xt0jNI!5&JB4izH zLL7^ATnEEC9!nK}Wzu_o681}2Cu6tYfm5))$2t}30j$%ouEaVW>jJDZu+GIg6YFfO zvj!1c2CQ=o^Ld8Q{QhfQh;=E}MOYViCc&!~Ai`y>fOR?66=M@#g>@s=)mYbKU4wP4 z!CyCkVd>&83^!rjiFGs9ZCJNp>6ahlbvxGB??2XESodPxjdjm}Q1ZDC>wcZ5&hSC3 z*RdYLdK&9ttjDk(Q7$TNQ~#~Uv7W?w0!x2GOk92V7w|J!FJe85^*omO30QCb3tdF4 z_9J)&>t!|7rdP3E>)4Fu4XjVF-o$zz>n*HzvEIfq??2sVs&dmU0P6#+k0gPi^S|}6 zVf!D}7g(QSeU3F+|BdxatZ%Ts!une0p!eiktnWHZr^osMdqS)qv0bd6u>QvS8S6KR ztGWQzuZHt?tUs|vAAiKE?gAqGgFONEIN0N3kBcqEUv^soI*dJn-NUx9?bfAJ8k5s$ zus!So+s96@18lHE>`3D^PpqchitH3S$L?dRE-;8?XiIEW?XfHDddN#Pf)0;85%$d3 z6Jt+>Jqh+?*prHj6#tG>F-(p<1-AL`Kj=)R#-6T?g{^)9z@FA{PLDmKkeC)=w^m*J zO>VPb&x!qSfz66NyD-dV7^DU0HO_^-0QTJ2^J34_0mN%Q?D;!3!?_^#!q^LqDs`TV zVjqFM81^>Ui({{iy#)43*h^wBi@lVvEsed*sH0l)a@Z?iFRvnw?!$_mjJ-1Un%Jvg zua3Pcwm$g}A=fZjNefVfYZ=Wt*c-G+>~*o%6G0vRjderp&9FDZ-UNH&fnH#n8qDU{ zTVij~P1_NBE9|k)|Ms@n`(tm1y(jke*t=lwfUSP{#on=_#ol?qkG(7Q9@x8K>yy91 z4Ap;oFYNuW_r@No{Pw;&4gGl?fPE<Tfs*h+*!uAY`w#__Pee?IVN3njUPoeIiG39I zS=dKopNM@7_VL)qsx;JI9oP9{pP)(9LfZO&I`+xfr(vIheX0TvqKw8m1N%&EQdDPS zUy6MW_C?s|VxNyabpE$5z`k&p2m4|*RgSv;i+maO<sA(B3X|Ja*!N*yjeR@zHP|;{ zUyFUc;IA{78?bNe9F6<U*tcTeqNb8Rw)!E!$ai3?2OsP^vG3}X9TNK<?0bih_hUbW z{Q&l3*bibq+`_OQGCYr9>&kC3c^tb1$or3u`{aNh`)Tawgy9((pEW$s%k%~87dws7 zzf5l%>{sZu73o#%-?3lA{tEkb?Dw(Xz<w9|P3*U^-%>6*qG<v0sbTBif3ZKn{sj9& z?2oZO8m!TH{SW(d>`$>x@t5tw{sQ~U4r7pCWB-Kx4fglg-?mEZ@03YL|3NhB{m1Od z&)C0W%N1Z$sX9Un!2W|?5BpDgZMFZ4o}BsZzp?+JH_m`WQMKUSc=X2aWEG`1BBLea zXbYg{(1V^!FAy)e3-tVsjb5k(<*vH`y_jAq8g&H_m%dC*3sB&K-a_<BdNb0i=>3ac zO>aVasvQV;j7m%)C!#lr2oo!lN?Wb~+BzA%sl+-ty(#ET*<p<D)bysKHx0dM$JS3z zPgj1!+0xEQZzg)PN{E^1%|h?rV|&d;Zw|4}uJt;fx#-PLZ*F?(*iUb$1@z`KnJl1O zlyyO)Y2W|XqPGaW73eKWZz+0<(OZJv;$xF9Y4A(aTbAB39gn2396kNZZ|6d9MS82z zTZ!JP^j4;~il&miGMLrrttswn7>(3_y`O8-+lbye^wy`ht^%l>RSPg_NMGpbD*(NX z>1{!86MCD`+qA<Q<mR0hy)Ef&)hUHdcL93a(z}V?cJxl5w>`am>Fq#o4|+S&+m+r< z^wi^zxQu=N@9oy=>FF*&Pt|{Vd(zumguU9)IO;AyZ$Em6(A!@C2hcl+-hn!$HiTkR zR{#+XrFS&F!{{AJ?{IoYXg0Hl^o}yfW9S`6PuG9(Jzj%VJ}1(<klso3&S;hNPNsJX zz0>GP3(&DnAHttW?>u^E(K|<|&TdC>Ja-6lzGyBO(p*IEI(iq=yMo>&^ez*?r5%8t z`~;wRuB4}4{^?z1n6IICZ6^;AUQh1^A(0lK^Sqhf%k*xc_b|O%>D^E7HhOo{yPe)$ z^zNW%9)HX(Ng#Cvpm#4l^Z2jX9uWP5f|17`o#7+&o)pug^d6)41ii=GsrpBytv^$d zpQ86Xy{G9tOHUPlgOT&UW_y9&ORb*Xi>*rskZD{0-=p^`y|?MTM(<5}uZ#YT0Y;|M z0#w|0Wcu#FO7DGoU(@@5-lz0Fr1uHEkLZ1@0Xq8s)Kq8w8NDy*eNOL-VN5I2`^sRx zp{L&b>3vIYsQ&k){`ZFJfA43!_FwH^aHpX6D^B}0`weFidcWgLM(+<C=>3Uf)B6i& zTzY@wj3dnd=zZw2a>m1%0B3xiQk#r3f}@JRf_1BKdN>}AI{f3f%A|dL998yl0;7qB ztT9f5li*}Hsu2iMzyILmI3-S@lWCXiR5)_@AB{T(XA+zV#c?8>i3ecO$obzHJ^$lO zjwAoFI8)$Ei8DRUR5;TJc<Od+-EpSHQFj3~)f#C5Y8B@F$C(LdE}WThX2Y2UXSDv~ zsJ<YCv*V~PAo83;Y;)r*fHM!yd}30)z`)EcK*d@RXCa)0wN>*hinAHcVmPbfERM4r z&Js9Fx9&Kq{^Kmw;c=Exg5p_LGbnj^oE30Z##s?(C9T)YrUfY2YB+0)@9H>f;QR+? z%>jw%*XpJ?>)>pNvo6m15`8_h5LNsQW+R+U#Hz0VI8y(0+|6<J#MuI8XPhl@cEH&R zXIq@Dakl9g49|8r+mEf;QB76CI~mL_IJ=8xR~dIRdimoYwLhu_NHTlj9EP(u&Ve}l z;OvjHFV23Q)nE?jmLvFsa1O!I#lHpM96A8w9FB7g&Jj4O=HnbWWIDQ&agN1NWgq7_ zqd7qdI-iqpUdA~Y=Q^BIaL&g$73WNx)5PU;9Mv6EKC*A3JPYS+998yl&grZ;=MCk2 z0nSx87vfxoa}mxZvJmqMq`XZ1chvbG=L(!F2kwecDX+%4MjTBGP}_Jt&Vx8N;M|3C zBhGC&H{slZbF*^SpX{w&N<wlw&K=zp$Fu;=e>cuOIQQe+i*w&t(N!ST0wnrFI8Wg` zjPn@IBf|NpGHL7MIBlv=bkk0cqk4q+K8^DN&NDdAn%thlQNIFoNTYnQo#MP?rmx_( zb?;T2Z*X42`4H!IoOf~Fz)>|H=S_or8)xY7uT1X=;C-AAREW_%`3UE8oR4un#rXtB z|K+FQ`AmUz&R^hs)#`Ed`@hIv8|1e*zu|m`qY6HbbOh%I<NFiNFM|KsXns|KX8s*_ z9GpLJ+JgTl&R?D0F#n^cEv-9lE8~ubYl?sO$+{!B8LovJ;M%w@ZcmfDj^=Sa@zsZa zkwe@RH^NPD!HqlQ@QAC6f2+jJaVNqpa2wnbw=&Gq0%R>hI|f(PfAx>@niy9VeB4Q7 zR4qU`D$``RlXoOCof7vB+^KMP!<`y;72IiX=fRy8cUIi#a9fw@ac2~s8MLF0G867B zqMy0b<C+$rLeGXfC+_S5&@I5g=E9Yq0Q64Ii@OBwe7FnZ&W|gH|G~G#T?ltk+=X!$ z8LUD$7sHkR_`~R`m&9ETcPZRuaF^C#mB~=?cbCUq33mnD74=$l4l56)xU1rBg1Z{- ze{ffqSaSGRRJsM=u7$e+?%KHP3SgZs9PWC!>kmSk^=^o}5$?u1gx<YPad*Jo40mhX z&2hKF-2!*ZVT|G226sE$ZAWQUCfgfwRsV5!!rcXTXNA%Hs`wjucifY4_rN_E_rJIY z;O>dLFYaEr`tiR-;_hScss-Tg-%Zu1rs@iSdyt8H2=39is{Z31hI@nvhbypx9f^BX zhcx(OaF545R;*I|1u4@La8JZNsq;1XQ*bZFJr(yn+|zK+#68`R>n?zM7Vf#YXXC0{ zfOhX_RaWP>8r%zTFVt2wy~vPUf_p9QrMOq&UWR)GuB!h765K0ICRcZQ+-r>Qb-1_S zUXObd?hUwd_%{jQO8p;A<5t|;aBtVl`ulb#o{xJM?&r97<GzG@5AI{Q_u@W)d!LD@ ze+9sO5cgr+hct;=$RoH?{98iJ`8e*gxKH3dh1&vj<u^G$jVp)$(LA5Seco7Kz#aSK z@4k%tKJF{HZ{og+`+6G%_qCy&G{674Z{e!SkNdXC<Xv1<{54paKEVAS?uWSQ<d6H2 ziTjBX1d02pn1<@V`vvY_xL@M_jQbVt_qbo<evA9ffLUC=(^JL#1MZKwKXsgj`4?O% z{wkB-aR0#lU72*;Kb5=Q!@u!t+<)*!@W#O#A8%Z|@x}`0O)%=~Ssh8I!Rz5UcvAK~ zcaT*p;01WI<Ar#W<3)H49(WmEjF$=^8Q}4B3&6|qO0gC?Td%^aHL}au8-q6~-h_A) z<4rU$;i=+3#Q870$%d>`;LU_LCEj#+Q{he1n((F`xZq7|B2JGtBc4A0cMN!D$Gn+a z7~U*+vx+d(0=(G_!yI@^;?0S-Fy35v^Wx2|Ov+Ke|KQDsw*cP!ieIm5LA-@J2E(%m z-V%6=;w_H1*r=&nruJG&XqU!Y4p03AfHzeCz2)&%#9N^YA=Z@!Jb0_%AAz?jUVCj^ z4et`X)$#VjTLW(!yfyJQ#QP84dU$K$t%Ij72%S5gY6O~At!sU}4Th{6;cbq$G2W(l z>LM@z<85Xbw!qs8Pg;Op%hp4%ZSi)++YWChyzN^(-VS)G_$#)KP$^Xlz}uzM<L!p0 zPWyPf<L#l8g2&qvZ*RQ42EKUv;O*O4J2t%i@lL`!0PiTg1Mv>UI|%O(VKY|%o#$bA z?Y`;aFMuO8l?r_{o+|iw$H;hWXTm!k??k*42056xC*z%qcM9HFc&Fl>fp;37F8;>% zOeN^GoZSj|=L~7i!@E$F(gM5-I%d(R`j4m2|9F?;wbRS+?#8<u?*_ap@UF(YvSY)$ zN(t&)bPe8hBIqjs-u0bH2yeu@9q%T*Tk&qjyG5Jy{@gZ%yaVsfZi;u8PE7INgZC)j zy?77d-G^r?zxM#%gJZKj+)nY-`G06#kBRbeyeE`i=lmqz`*=^`y^QxX-g9`*;5|DC zDlX6Cy@dAy-dOd&!{EJw_ZHr(c&`gs*MGb>@ZRjA806b{@8YTVAFWqO>Mnry0p3@5 zAL4zA_Yt1@vwuAE`>!|j{^Nay_j$*F_XXaU12%E_8t;3&Z(1eZw|J)VkADAu!21zz z?E3Hhg5MU6U-AEi_Zxm&a(~CS@&3Rc5ARRBfAIdo`@36<UXeczzB>G?Y4<t$<KvIu zkJf*chOb)yeh*(Nzwe0NHC{fxy#M&>7XdLv_-N+tlkyY%3O~iq@%zf8nDt+Q;!E*Y znzHl4ukk0wZ}2C?AJgGma{P%pfVfX08ae#yD3jsOjz2m6jQCUFPlG=t{?zzW4ZJ!5 ze_H(Mg+#vs;Y<D3`L}^)GRT?nXT_fd-&B5$(Zyd#=D?p<ggIrL3x96>dAi*&domyX zLXz<O_zU1KIJR|R6;AEIA_l)0{wDZ~<FAar1pd<aOA27Afg}Dh_{)oOS^VWX1_`kO z{)%d<c5JBr`)&PSAAeQ+|KP8NzXrZK|7$`OeNE%F7XG^UYvb#aztOKZHhu&A4e>W_ zmG~QJlir_A@%O;r41Wjw&GEOAWVXOJR{)jU*7)1vZ!_S;-wuEKK|bQLBmOS<^7x~o zsQNGZUGaC9xVsJ9MgL#?1Mv66SJfVWFZ{jn^~ryL#NQ8p|DoxD_=gJqApC>zRTofc z$XbN<F#N-ZrbiOA-{+(7-@rc_|7QGS@GrtY7XJ+V<M2<$KOX-i{1fm`{QuY_&?)$* z;h(BZ<|Dw@T>$?~{PXb7!k71dU$p>9<J<urUy8qf0siRuUoaQrtE!HF3I3({SKwcU zf4Pn_x}qz)<=|h9e*^wC_}7WMssH|H{TH?y@o(x}1a=GlWB9k?--mx2{$2RD<Lkfw z!PhN79PgI#9{hU;?xMLL{~`PbIwijD0{9Q(KVp=Rwn!sCj{iLV6ZlVxyWThar|{Lu zAOGnNjQ=eDbJ|gV8(+YGSuii+zobpd<rVx_jn`}Vstc%a+UrgH-|*kU{|5hU{7>=U z!T%8dUHtc34E}o^QkXw5ULWCqg8%VQl%e|Xe}=DWKK|!2exYHC?JNAR)pT^p-{OCV z|1<vg_&?(RFtFnPq(e)#_`l%)I?&+%PGIBzK`?^<C&765e-X3=|8M+%2C$BeKz9Lx z@mmwY1PajYK%k3%izMg~K;RGr1TKN<1%menc!5bT2qI&R337sjK$U%hw9|{6X;}p= z2&DLH&YECTf`(vWf-wX$5KKrg1;IoF|00-J+$SNB;xDP1geM~ydjAQgB$$q1DgrtG z2m1U^Fs%x$W2r`9+-D@1lc3FKW`dbIWjhkgLNFV_zX@g?C?$v43C!b<W}AyZdO@JB z00idzAIwLvfKbhE;x0(A&>*y!79m)TU{Qi)2o@udf*&j{JWCiaIsXSs4;%@WC0L1I zIf4}kR68(8c>>a(<I1g)U=@N@2aXbPb%M3Tw1$kT{uBJC!w{@ZumQn31nU#5OE6UY zN53H(5^O@S5y8g8JJZPon-LsJusOkQ1X~d7M6e~nb_81yY(ucM3Z(aK+krd5_L9a9 z1UqV_#;D>?u#0io)d;&2>`Sl*!CnIRFTtM5q`meQ<!B2a*pJ{qg8db_`fv|0$b$$D z?jjPH7N8;?MsNbb;RHts)e!_o>co`$(V{$t;5cDZPe6)LIUaA=P9!*!;3R_62u>zA zWe9Vs!JOU-1ZSwJFc6$Ya6ZA=1m_YAo&N)Q|JRrc2reSHu!|@R7b{s?FD1zcE+cx8 z;Bvx;39cZVgWyVnp9!uac$(m9g8K-rA-I{~T7nx0t~2@T7C>;LFb~!L;1+_r2yP{~ zgWxuT+q;NeXacGKdjIbxxX0vk?@*ri6R7e|@BqPs1P@DyhYV7;08u_h(3P6U1us_s zwO3Ed^eM%u*ZT~?#{|z3yhiXGLA&bbh2ez`Ao5EDuMoVfG~y-7S38;Db%J*Z-XM63 zz+3@Tl5Z2dGYBLu?-6`R@IJu@W9vT}ObI?A_`IDGs1`u*sf?d>0D><Fz9IOM;47n% z`mfjWEx`{2-w}MT^VIwKBf(D{-gx~&m=pX;I03<LgyRsj_5Uw|KO|3i|LL|!ZQ9=i z|BSk~S%s?p6OJe2_?j~uAq)sDLYL4MQ;*QmnGE(V^a!Q?ce#ZjVM-Vg#)K%UF0SI& z?>~gn2trf*m8l?{im)V{n6M%oLs(11Mui)VH6h{9`%gFt;berW1rYvg5Q}hf!YM^L zh4$6CO-(op;WUIZ5>88~%08hv|A(XJf6@OR!kGwX9z+-Azh#`2aJB(6;q0xlof6JT zxF_LUgliMdO}G-_JcNr9&PynjKb((n==~>LkZ@tb(H20sh@#SLixDnExH#cbgi8>r zUZ8@G?#9vvxh&xdgv$|1@i!R46^GbXCS0wZ60RcSsvQrZI{y={LAVy-nuNOY>nJ*t zbqF^nT$fN)c*6Av*C*VNa0A6J`4Db2ByS>|o65ME(rcbA2zMpil5ji1tq8Xfwyg)T z2)8xJ?Fn}x+<|cH`XBC0sEfZr>cc<b?u2^~{#Uc<to9;2mvC>wqY3vRR0n>-eI>5? z2|$Dc2oEDXkWf{A!h<>n!b1oT?PP;IobX7(Bh*y;s&-)HV+c<sJeKf;Rzr9kp)UT4 zL@}Qz<4Fd83gH=q>ikc58lgV<8|#^bXA_>KrV>kF(gGCKd4#tUo=<oU;RS@35nf1m z3E@SA7weq$4qVzr7x&8vuOz%;i0~@HtH;J)OL#Nkb%ZyFi>d$NjfA7cUre{icq`#; znqf50I|%P2ypQlM!g~a!t^h5JP_6(vxBCenB7A`G!Lb;$^%0^a2_GfO2p=Q-p73$P zHwm90e3`J_v}XyQBz&4s>VFqqg?PrqdX7+)eZuFB=0(DnhGP-FLijqNx&jcs*1^=M zrf+mp!nX)NC48Ik1HyL*)tR60T@6;Ux(kTQhlJ|Qhfucw!cPdt{{1)njPNVM&jtSl z;g<s*(R@w#E#Wsx*{w)r@?9qr{y@|g<R1zDAXF`Y@Mpqb34a;j34bH}ec&s}{7Ez} z;a`M*n>^e9vi~@pteK<nh)m^=CLkKo4BfgSn<yme5qYhi$RTnSV31+t69oeeQACsw zK@@9@@Tg>>lt|Took^4v%}7)bO-fV}O-NL=R-&3niocS_4B;md5_SF;VG<+!i)b36 z$%v*PntXt71)?d5rXrfUi)i9bD<)O^iKZtS`<LISRnA2;6VdEMGYfJSB6ad7`nO@2 zO+^`9$Q%Nj(^%&wT99ZSqWOr_bzlfNKhXk1(}jqZAX=DcQDKl4paLyMWPblOyC;C9 zh>j#$nrH{2Wr#K;T9#-HqUDHIB2q1YXayoU{F}H$D-*3ov<i`~{5k;@NVNc2+L}b` z5&ef~ZJC<C|Bu!oTDM!5_EI6%CmO2%(MCku5N%AP3O<pvfJn6fq1v2iOQJ2*RBN^( zGL^quo$^xkpJ+Q7x9=hn?MSpA(N09Wi+*P!)dGliB~pL+*~$jF2hm<cx&;vJY4qwR zV4{79ROMHAox}b_hY-o(UlATibP$m~{}0g~N_1E|B|4nw2+bfoL`M-_MRYXLxkSeh zolbNt(TPOI5uG3|LoGltoJ4dA(aA&PrxKkuHs=}QcqY-=M5FbeXz2VOokw&r(fNYB zfaoG3^90l;rgOW5=rRFZIu!15qAQ559D5(GCc2;K8lpRht|hvO=sKbsh;;Gq+=*^9 z%r_I=N~G$)(cDI4&i^|4okVxHR-(HM<{qN^h~)e)7^8oH=t-gni5??*i0Bc?`C$|E z(V-}E_>Z0-(s2#LQ$)`ZJuQyU5Ix)J4a4(FP@DgP(Y!=F4$;fd{=4%Ev^D2dqVI`b zBl?u+b)pZ5-XMBgyxt^wt8<j;J4Ejhy{kj01xoQZD<b-k=p!O||BqBJ5HEH3H?lhX z6MatfwFqAjeM$7yfKVY7;2WZEiM|`w6a4@V(T_xb5&cB;E78wHQvBOMI@WJQy8aXW zL1Yg9k^s@)wEtbU=%4n#1lr<Zv<rYb|BG@0uv8B1f2l!h+W%!&Z>&sc|F|bb{lwe; zpHF+HS9oawT^enb*S@L+K+;V`?n5C$CS%^2paePgqgsGu(!dxUS8FDMIbmX$1tx)M zVN#e1{smLOWH9+KUihapY^nu-dI;(;FdeiSxd<==%&2|!5@r&2RsRixod1~>hR*-Y z4yyPY%v`WM%nggdJg^YV3k$$}Fn@<J$OVVI7KTLz(P2@O;o`6qECFMk|6yrZwsnVP z4BK);?km9Rup+DiE5XXzBzxG(pt=C8W_;IxwP4K-2Kp8NYr}f54y@ZD4PbrPpp%Ve zBe)tihQnbK*bO#?tzk1sa&y=cr2fm^wqCH6iM|c&1lz(6upMka%q++q4RU9h?gG1N zjI0QDhkalViS=KQS0MK6yhORTVb~WAg8kqC*nbFcpprG)!Ek6R!yy`=vQ;fWq8|Yl zz>#n=90kY1(E>h3gO%fPaDph!`wu6AKKXZ<!zpkUoC>E4t?mMF2Aru^r@x11!+CHH zoU220d#D1PZ`dw`OC{n(GF}XqXt1mcE`!VAN*Fr-bJYL?*TCy=Ej$d@!JTkD+zL0q zO~PsFKR3f@@t5RpgWENg+AH%b0C#~Z_;9z3<`szh;6b<_9?&b*d;5?kQ7(_bv+yXi z@?-FXFsK%wT=dR72~zfXYQO`}bQpLJUWDhxQHsBg@)Eq#;z6E(RIFEF=<u&hZ@@S3 zCVT*@{=?hw9=rpl_?t|?od5X{K826q6ZlxAF^bVG06v2+;dA&xTXj}nf$9i)Au5M& z;aB($er)ydJ^Y}odhI`fs{HV?cF{b)!5=Vs1%N-{Z$bXm@xwo(Jn^{12M~`(ya@65 z#FG<GKwJ`!5J$uou}^FhyTm<Wr(@6&+azOkBhV?u0kLWXW(slIPKjd~6Ql1FtC~-& z>c3Jdp2Aow;t7dWBM?kOJf@QcHW9Hr_{8c8Ks<@@((gaSlPRzwoPu~Z;wgz|Af8Gz zQxi`sUeW@T`*g(9cMOJSM&enBTlbj;dSd+wL@f0`p0x`hRI?M$E5aPaa}v)@JeP8m z&!`=V=jp)2^9gKz;)RG8AeQ29V1it@^CDi9coX8qh*u+CoOn6nC5V?HRxN;dDdMF& z&cR5mdV!EEPrRbQRxoTU5wA+TGVv-JKM1PWRwrId@N3ApCb1NM&9*l22E^+SuP0W0 z3m{%!kqZy;hGN=?SiKIlve9o!ybJMW#M={ZPP{d-s{h1W5^tqpnqeE_Z95I|b^{XP z9R#n6Kk-h)s`x9I&TUuXy@_`t{x9+Ff>HI~SXJ>SR*k^qvyW)@m2p2}Q~Y%f2NFL< zd=T-)#0L|fLVO7EvBZZGA0aM>5fA<T8y`u0H1SbG{6qCWK92ZA@j9MZHG)Cr#3vD- zJhaABiO(lKjreTh(}~X{R_FgA{8=XdbBNCq&T}<DXMTYwFO=~j1=jjYh;Jvpl=ueX z%ZRTgzMS~V)=GSZ!ASj=aKzUTUq^hcCRe+6eFqbl8-@QS;#-Js9>Uy8Y~Fu#+&hTx z6Y!nHcM;zsva0{WBkw<2zMuGE;s*rqAn`+kaH4rc#z#9xksl}ilK2VYcZl2c+GG5a z#Lp2wMXYK*vFZhiM6L1Jj*a+v;upm#EnswiUM7B%_!Z*Uh+kEXI;+=--_V(8&0B`* zZ6mx({1NecLi@gq9}s`2z4ShOO#CVFCml1fegz`_jQDfIGui@(zap7{_-o={iN7KK zj`-UFA@TRbKN0^x{Nq3=aepTMWo*rF#D5e2PW-0;{!j_14Uyun<$p-VB{7Hp)|!k* zGJc2b*hof5A`*+lBe6+T<tOP4FeI))`Xqso!%i^M_TV3rNEb+wA>V!{ljQXGA}L7c zCn-s8BB@9=B&kUjA!$h3+{TbhO)??Lzepw`nM5*C^}mfmGU*^9$z&u`h*duUkxWUV zioXJD{4^xflT0hH>4x+(bTY||200VSyd*P|%t0~>$*d%*{+p%EMl!pecAt1MC&}EB z(p-i?iocFKAIX9w^S36F1r%VEY9SI`{Kb7yl9fpoBUy@MaltPk`XyCp9cyWl6-bsL zS&n4cPAQn>hiIh{Br6SBS0Pd5on%##)kvh~C#!3K(wi$lvKGm@Bx?(J9mP4C?Rq5Z zlWZ{1NZgG`jwacdWDk-}NVX-}lw>QC%}BN&*?a&d*>Y^Qtx2{SvTjGRGs*TOJCdmS zKa~7V-IQb(67}*!Vr~ISRxLo3|0OwyWKWX)NZPN~J|ue&NCco?fk^fzIY67#+7Ikx zl7mUqX`kc}8TGFKB!`n6DGd4*h-9e#C&!SSOL8p9X(Y#yoG8A>lZ@7Xl9NbI5xr>v zD$1!Q?&&0|+LN3i<LE7b<ZRKLW02>OTuE|1$t5HgkX%F}??3vxad8{MAlu)6FDJQ7 zY4rYFF=V}p<XV!eJ1faG26G+B4J6lhdI_x$|03T^@*T-7B(IU&O7bAdZ7q`Ic9MHY z?jX5~<jx^qDgHY8y(IUOs0N|_(FyBY0LeonPm?@M@;J#OB)a&MJf@Hu`~=C9lEyH@ zQym-0GbAsPJWKLC$#a7!B&PVQJYOPtr8SY5^MCScM=rFllYBw)2Fb@HZ<4%E@)pTE zf;aU)d6z^Lf90jK`hes^tx?P$bux*n|0Mq-`AmdQ4gPZl5C)PjJDKDw!F)~f4asQn z7v=Y)1<4PjZ7Ked<ZqInNPZ*vndDcJUpj`4yd6n?C;5{^iocHXm$K??{~?`#bR5$0 zNXH%Mm18=7hY@*1MoW<^Q;#$xl}3=dq&}(FnN)^pFvx*4B30GCeIk-E?l?(PQg!Ah z?ROfHb7L(@ry#9JClq~6+K4cw9o0W7hlxZpG3mcZCn24*(;Mq#q`LAO&M8S}A)Sg; zp8C_NNv9#5R!8r4Bb}bKWuAdlSAOF=6RAG=8~%Tj&P6&asjB>>vl-+Zq;rnVIXCIN zf{_-W1I=gf3y{7=x*+LcqzjR5M7l8PilmE>E=#&7=~ASNkuD(&=2rj}QC$IA64IrO zu#6FwQ-Z>%7C^d!iM0~x8l)?eu1adI01B|0!LP0a#knTwx}^Uhm9n3%)iDU0v;c)! zk5pBDQn>;sVZ)9`7&a!|jdT;z?MXK!-I{bW(k;ZKTL9^nq+1P`#iZ&#>9(ZXDJt13 zHL7qsknTvj3+YazJ8P@n%w31#?oPTN=^mte3)O!~_axnGEH)KlAJTmXO49vF4-&lU z0;Hz?rw5a&%HL%|dT1w;9!`1#=@F#okRC~T66sN-$B-Va0D2FPB|U-kIMU-agU(j9 z14DQ+=^3P_ke)_*>X7g0157KBo=JKZ>Di-7mE^gkmyw=FdNJwwq!*H2FbYs!as^Pr zB}%V^OFIDR<)qh;UO{>l>6KkFCZ($l=33J0#p}9GV*odjwp2Hf-cNcn>0P9^kls#u zE9uzh|MU)0DgN>a3f0}D_lltI0xcowX#FRBfb<d42L<pD>BAky#C??XanjNHFYZqm z>yxA}kv>KG0_oGF&yhYu`fO*_quPPzP23lipmTVc^z~LIeTDQ@(y`uuB+46NebeCI zravv|JM=BmcS*k|eUJ1r()UR}A^m{#W6}>vKN>5#{`CJRRG)TKB7aUQ)js_~rqTk` z&U{V!t!Tc{V5R)7<0Soo^f%HUNq-^zNnk%~nEtGP?WUx^(;tWQ57NI$|0I>-Z`LlW z`$r@D?f;v`@#&AJLUh^o+y836s{8|H`ZoQVevf`k-=VL{K7H3Pw14a0{;iK(0W?EI zzx5bqNaz>zRX?Dw5C6(t@#Gzk$fb-`r=j1_pN#$(`jgV1kp9H<RsHX*f>d__leRno zwcFL7oc>hwr=UNj&OtErr|x{|Pt$qPpN{@Y^rxpkAN?8V&rW|v`v0cilFTgpGYuH% z&oU&dCm{N>8J;=lt7jkja~h3Y1p4#PS6x6k>YbUN{*v?;puZUX1?ewLf1x4kBJ}mk zzrioA+*K^q3tA=prRXm!nx*MW@z?t0=&wM3`OeX}uV}nhroS2eRp_rre^vTx(O-@J zn)Fwvzs9hOFsnO)VOX2~I`r2a#?W7%{wDM{puZ9Q(fTjG8=Hum4qWJOPJc)GThQN* z{+9H&p}!UVtp`zBB>ipGRIg?GPNu(u(d<NjcltZiS7(0uyL9CA)kVNy_GktA|D~@U ze}?pXlO0HZAF}p)zAybd>F-DXRQmhVKaBnX;&q^m2hl%-{=uW}iqM?@`-js%k^T|% zkE4Gi{bT4KMPG{lXb#6J-!8h!^LU{>VJMlC=$|agQ#4G4IF0^g^iQXM9{n@utC~;$ zO!{XjjIhx^$1M3=qdA}cMS{GbHPM$VfO5Q;{-vUk7BKqVyPW<F^sk_QE&VI$Urqn2 zj!H<b8IrG4vZA`)1ig{|ZS-%Ve+&Ja2S|x>tHIpf>FM8LguCds1@mtDPtw1K{$up- zrT;Mf`{+L){P!E*2kAdFOe@w$WPG&K(|_E6pP)bd`94MeCHha(e@^hvNLHo`s8u{q z{{{L|{6}}=W%_T>e}(>Qf`8RSQB9!>B>Fe$zeWFTt<j&wyY#=N{~rC1=)bS<D#{1+ zKOFed|Cs)#^gj`ks{b7W{m<xsLI3li5MR<)y+CQ?i$wn$`oGctmi|xlzoY+ykbK`^ z=>MpMQNo|;|3d%Qfu<#)|2utE^XdN~<DZ84Z?d-F|3fy8#!Ezn$;Rt6WD}6hOEy9_ zF_}e{li6f0nR@&oQ|EupmU(26`1)i4Svbr|23blLlj)a#<JBk2I(dkyAS=nnkX2-j zaMl{rWvD{Sy&#hopc0;hY*w;K$)+Rw7ul3#laWn9CRc#r{miB!n}%%a0U_D6L!qZ9 zo0)6|vX*nkA-xp;?i0yW@h6i%{?VG*$mSxOy~UHw(Rq>S`Y+14Wt^uAN;V(ax@7Z{ zEl0Kh+2Ujik}XWOkn)vm$rh0)i;^uiNL5Hw@h4l7Y-tgeGMvkhna3Z^usqo+f?0t~ z6@Rjo$X0Fz<)SlRm254t)yUQ)Tb*nTZPg4?{5!mIUz=>5A>Z}Lb|hP$Y%?L>fNVpu zO~^JP)0Ka~Mz(1ulWk76HQ5$qTN=$)O3)FvA={p8Te8u||ISKg>VLKq*?-A)Cfltw zk?lgJ8i8ThU6iW+n>Fr9wlCRUWNq13mx6(*1(5A0`2ERL@gL$jh<rk_gUMbbJA~|V zvO~$vAUllgc(TLEjv+gO>?k2Qa^Oog+6BmtB|C12^8~U}$xb9wZ$4xvbtbZ*`k$Sq zsMNYn?>NcMB)dQ~XOW#vb{^R|WakcO#dLlL7WqOlRqe?xBD+}WWnE;Kit@67BiR*X zcavR7c7vF%BD<RGI<jlXt{uRP`}Ib+k?fY%N_G?3%>x+Otz>tQ-9~o%Kq<6$lHH{> zI+J_I9wWP#>|wI|$Q~rSpX`CLy`%+b{3ET2Oc#IQe4OkVvM0!%Lap@4E;p0m(*r89 zXUU!?droOaza%eoGTBRHzmmO7_CK;$$lfA*Rrp^cdz0*SvNr}^id^UOHrWSc?~uJm z_U=G0j_(`h56M0j%}1S=$e$SNr)1xfeMa^L+2?~0WM7hfO=env4);yRK=vKkk7TO& zlc`2v^m6{sekS{+)0il~k-KESlaELC2if1^_@|8W6M))Pb@(SAhkV?zeDm?iN6078 zN`<k=do44$t@(3jH1pge@00uFF?m2Py&xa$0^|(%$rJKaO}ho=8F@{flb5ZAyfFHz z6GYi4Sy{()O7e-wHz1#wd_M9?$fqHnlza+ub@(Trj9iNU;B!~XDaACEjJgGoPfI=< z`E=wnkxx&q%0BrF?P!*1s%1Vi`K;u#kW2A5`5V~m<nxfvK|UAx&=Zi_F?9v#2+8L) z`1#3~C0~GiG4l5R|JTCgQvU@>zKEo;=ujGqlP@JoX#u%@{}Ij7<jW{p?YkWLTI9=< zuS&iG`AULOEuaOEuS~A`LI)PjYUFDOW_5#ElU$1bDCgROT!(x;@^uxgV^D<V{U_g$ z{J-QIk?%;pG5Hqcn;61P$u}e4eBjjz<Xe(&O}^DoCfks2PrfbrcEd;st?R!y?nJ&b z`7RxXd{^?_MXx%7fTjLxc~A1A$oC>Yn0#+?Dfsz5g5THR_a|3xKI8}JWK?<w4atX) zA4-0>cpYZEjvzm>la1zR@{`DqAwOP_$C4j63Q(LUkPp58<R_D#PJRmcY2>F4BPE$L z$knl*{LIcoem1#2{CByLpU1>&lb=sBF8KwNkCR_WaXI-#6qA!*O#UJHCFJ*$UrK%x z`DNtSk+*=W$gfbeivLQ(e>M5g;Xl8&(+lQ$8E+uJQH9puw42FqC%;9(6wj?P-lnE% zGw&e3oBU2=z02tDA=f|tlHb=U+mZYM@~6ljBv+-LT(to5hso99zl$iE$H?1dK1u!r zxr#f;r<2K_CV!3m8S<CNpCx~uT<X8h>IL!_HJe_=%jB;NLXhj90LWh_e~0`H^0&y} z90HgtfLi0b<f`VAzc=6{|G;GO5rswmG5N3LpOAk?{y*~1$v;&9wYtv?@(c2>$-g8Y zyZGndkbm1@4Dx$&b?hgX79gJm`A_6Olm9ZvK>)u|j6?pr$bXRkMXri}havx)T>kh+ zGEqw?#-$ivfeU#8Qi7`g6eFWvg-uaW^e6%`ITS91PvH%R7PgQgrHCkE3KYX2bdhv2 zMW3Re$SCrGRi{^|USQ;!qM?|SVhqK^6cbYDlfU7SKmO@H%|hybF`4q!nkgtYrI?ap z35uyG=Af9GLREN*X(*-@VLA%)_dgPsVn&L8Q?%PMGsR3p$;_f;jhU5VHY3m8g=<HO zIVl#Un2TZoin%G~qnL+6SALV#{6m}zQY=g{TK`)Ug=zu9wwMtXH@-_!tVyvH#VQm_ zQ!GcJ-+w67i;#FNPq8A!3f;6FDORFbc`#K}D%DjfR-;faKNPDgrML_JKNK5^uolJI z6zfr}Lm|a~bZ^(EP`?6nYy#d$#*LLy1vM?8*o@*xip?o@r`UpGXNoN;wxigJVjDq@ zz5-EftK3ye+f(dd<Q*w?8aqSP0w{Ksakma8@*WfiQ~Z}=Uy3~`_MzB|LJt3f1&Tni zAH@L_`zv1^@j!}$22@=*ibE(4r8t7(Fp9&6b1;CTD9)rfn&Ko$;24TyDUNTg6vr9N z2^1#|`%;`taT>)bU37|5wN)+Zbc!=Ny^x$maRJ5I6z5Us7C>=smnX&0`M+rE|0R+` z+X5~gVvzHHF?9YfuApqcmRC}IPjMB+lN47|+(U5<#cdSVQrt{&9fjNuitA0R8!2uY zdlhmWC{*$9Fp}`?6n9XllRt&D043b59QDrMOYs=ReH0J2UKICJj9vjK9-?@Z;$e!R z;y>#9xVStaqY0`=o}ze%;%SOkDW0Ktk>Xj3=P903iRsT*AO5>cC|;s?nPRm5oAh3z zc%9-ciZ>|U?3Bjzc1I=A-=+AR;ysFwDc+~}P?V<r7au94j{6CPD*F`wGdxoKwe<^% zuf_UhYo++gV7?LMw-oy2-{^m!Y$$%DbSQqJ9Eaj(ia#iRq4-T)er-nuR&2i;uRkgN zrua*nR5I%P-%TmUrJR6ryiP+ozV<3dDD75BX&Ftga}lLWnNWI^5v5P5|NcizVF#l` zrg1kFIi*xJpRzBbeg&c|DAlo_vg~5DBc*=-p&UawBjtpYQ&3Js`7g?eDJN<1Cb3C} zye6ZR{|P|%eJiJ=oJQEDlF^+1%V{ZRpq!3!dd(wvL)b>2jdCVQX=X}w@~51ovx;)o zA$fMnIVk56{hXRjtwo>zDd(l!mvTPJbtvbjT$XYHO7+4+xgh02l=AFTE<D7!=n&81 zluJ-9CHzZvddj6KrTCk)DVL*MlX7{=)hJh>T$yr3N_7iRw0bvIp<Hzk#VA)7W_1@Z zn*WGqEy}frl<QLNNVy*67L@B#Zc4cU<;Ij7QmW#we07vf2D0#M)=numH`XmFx1roh zlv@vwl-p8nPbpV`(M)zQUOQ3lMY%KOe<^pN+>KJ+e{{s%Dfj4*dQ|(rXO|VFY5|n$ z@Nd}mqr8f8f69|751>4T@<7VNC=a4Mgz{j86fotX16s<%DUYH&g7U}#Rcob`#~+P9 zmhuEjeg3CBet@J@R{%=YDa7j($_pq@r97MRG|Dr?db+WmNqN>Fw3yDJJdaX}zc7eW zw*bluDKDqIi1HF4mlmLMyOeUY_>0RGGG5t^>K}!<n(|i4Ybb9L)3ub>QQk;-J>?C< zIdpiz+$^J90Tjb+l=o8JPI(vQ9UY8P*MC9YO?l6Nit;|nM=0;7d{7d2z_>g_`S1WH zj`IGa_U*AwPx%DZla&9Ls{JxQN!6B=rzn4>e46qd%4aBFr+k+3CCcY0Ul5Y#4ZmCg z^mpcE%2z308HA&Jt%Hfn8#1c%KjmALqlbUdyi55x<$IL>qkNz8BgzjbKO9gA=3~lF zv}W}4`n1(hN()fJ7nI*oeo6T?r7r#g_=fV^VPDGcDSx8;f%3;;eJ4}?LS<9_N;NL! zZ<K#i{!aNP<sTZXm;Bejm+~K~aoRl9KW!$Js{d5uQ>kM=)dWUwDM4d;R1uX!<x{x= z^9EKS38+F9q6=3^{jXI0r%E~!k^5BBP-Rq;Q{_}+s0z`SRJ90I2c~K|Dj}bcY7#1S z1)!Q(0d!WAQvFNAlxZ@fpQ6K1O-VIXD^pF~nM9tJYEi1`sOF@ao@y4V8K~4Tm}*9o z|4dXfYZtwue^bp)H7nI@gNTyb97D`=QO!>^H`TmU^C-Q}bG{+W0#plAEl4$V_}3v+ zFKCfei&3pWwK&x>R7+4TMWu_sSeMobXz;RB%TX;q2q9UmNTp8xRAYC6YE`O3s8*xe znrd~b4Ft0W)tXeQ;8XpFYOMhk)jCw`QLQ`B2*$ksR2x!lLA4Rprc`qNS6`=124Jeq z1V8!;M75=)x0PAxHdMP&ZA-P2AXN*X+Ma3$svR|tUgpkXlJkG1&i{sCcdEU_v<KCH zMc8x5x;NDURQpiLD^RuXkZJ#pL0k@`I*3Y&e;ZCmJe2A(s>7(xq&l4Hc&a0)j-fh| zN|k*o^;^IY;jyBW`maCt6R1w5I+5yRF`4>bouV9dl+(m?I+f}IL;AC*E}}Y{>U^qm zsPxHSz~^;Hstc5$GP%&Onc`o`ji9>J=r5<bgX#*ZYXpBK)m0)~tr&DB*HYa?bsg0W zV!GbwZ&Vn8QQb^+E7dK^q`hvVx_v;>Dyi<IdYI}is{5$!7OH!wM*sL<H1|_U{jbaw zK&|2-6GdGCs2-(yg6c7<$Gcc2;_xm#MZF2t)6@yoGgMzwJxlct)pJyDP(4reGSv&h z_9E3w9lwe43e{^=^7tcb5!ma-D)qm5OO$UbrQU&esXnE8kLqKp_o+UllEc5Ye$>G_ zJk=+yK=nV9`DavLiso~wFGd%oHqD&>t8b{srTUiYcdGBGex~}K>PM;{2Fz4H4asf& z|4lf59VJvj|DgJt>Q6EKrSOuWOw|>DT3SFGx*m@@q#mETM?C?xMXefv&bd|>0V6xq zKDA429)CKMA{n{`)RFK@3#en`n^Moy{%?G#C!@}&8)~@@)CG0fg`lpe^~v98#!yd8 zJ)xPZ7SIw>PeMIuC(BfK0qV(7)+wl`X|2>#Qcp##PyWVtTIw07r=vFSKZ8%dHub-r ziF$VGnW<-`o`qW70(7`G0mZDl0QDTyb5YCtfA?=hJ@)`fJumgj)bmj<O+7#LBGd~| zFC;lHI0Rd`lc^V_UV?ft>cw?Lz1}6M)h%F<2K6%3E3_KwWvQ2=UVdOwFr{CST8h7B zScQ5W>Q$-#L%kaH8r16WKZruT=3q*_7PV>zorZc{>J6#aquzje{Q=Ba)fIqx<3R${ zn^NCFy&3iK)SFZ9NxcR2j?`OHt9Ksit*E!A-e%w;%I&DP?=;jqbmXGniF#LRRsUtG zT0je<-i=zF{Hb?0UaI~Zc`xe2srRNnka{2L{i*k*R$V{=MnCZb4E`YML#Yp@K4d^* zOotia2<l^6EA^4oM^Ve+f9Q)rEiIrv&frg=zJ&Tj>NBZNqCSKAWa?9eL0W*KI*t1D z|1V<ePJI^jc_N%meGc{5zyH?fQ>&U!EiFI^7g6it-?33&N_{=`Wz<(wUrv3c#J!@+ zO?*`g5aAl?>%@BPz$()lsBfXZk$Uv~hg$yxOns|hZlgB!Uw{Aaq<)k7F6t+#@1}l) z`X1^Bsqdw}UtI3%qEJimAN?#Il4KrkF$VA`^<&geh}Ywto?3q`McLN>7pdF&|C~&p zk@49MDf08ws{VHx>X)crrGD8=UopaKtw8-c^&6eW=-;CLp89R-#_{)qZr>h~p2 z{r*q=0rlAD|N3L<{|TY0{{sG030nS~`WxymsJ{}7>Ii1NUk}OOiuJorL;VBw@6<nv z@+azFsDD-_&G{?!Zykxz{6YOUwW|N^Kh*mCPc6m28ApTLZ%#8F6HY@jK4U7H324rw z8KGH$#-eGhHcd&>qk+bu329s!Is7YMpT<;v^DhETq?gmgG<}++ozkRADHxiJChzhT zlez+k&?Yb$O-(Z)jXwX=j4@sl(M(D+F^xR_i;HnI^}m^%W?GslXr`u_l4h#T*D$E2 zU|go7nSo~dfu<E`O#N?WqFIDyW}3NaW}%sl=HDHXW>&*6JI$OlL+Afyt^pg(JT&tQ z=e#n`XL4A8M(TgFpwTQmNRnnznq_Dfqgje(adBLNX2}6SG)uRm)~KA973Fd=F5j7G zR;1aPW+j^SX;!9Ln`RZ7)djOE&1xM?rfbmrhi1(|2%6FJzW~;eQC$IO*6Uz28_;Y^ zvmwpqG#k-uB39i3Xf~zUY(OZcEoin9L7o3a*qX-FfBoriC;IJac5E>;=KZJHNx5jR zU1$!c*_CErn%!tr!Kc|>#y#3m9QUNzTLg745MiHA5ZHb+2Z^vh%>gtAYLn(anC4I# zX#v{zFa^-^5i}>!97!WxpgD?Wv<1){OLIJp6o1Wj0?mnC=G{nhGL0Pgn^Po*Q+0H; ziqmP-|M<%w&!Tyk=4_e=XwIRzhUQ$FOKHxdxk!B5pMWo*xp2T>951H1WT2$EOu(1Z zTt#yQ&6OQ&Fw$IY9IvIho#r~4n`y46QMZ8BL~|p}O`1^FCCXc9Zl$?xz#~!apt+mo zPLc0YCcO{$(5RYEV}1p0R3k9f2Wg(6d5Gponulo~r+I|tF(G+W!!(a-1j3_z1@n}Q zPaD&-G%wRgJ7}J#QO`a!(gKt)dIg|)g+^6-npbIFqj|k!Fg$P4sFxp_w+4EecTCRj z(fmsDKFwz|9|*~ZG;-Q+)D?i{W5Xkjpiz%MM)Nt1s`E5o$oQp<suxJOZ)kp^`IhE; znVS0F{6I6-`wxw(|1`gJjw1iYn6@DQ&KPyJr}=~CPny3)mMehXM%4lo`IvDTV>4zv z#!R3vW5(~2WXuR-{vTWK04+_jwBe48XRNL+ySln+kBu|7b;h=B+qP}no`38!wr$Vc z%BalV{oQ-l`c|&Uh&SGd%<3JHmEGse1TDrOC!#ZnxJ+y?x&?^i<aDMIVG24^3Je8n z!*!;nGo2`>5zMrPQ?&p(Gtil_MH>9fbgrT^3!U}pbm%Ne$D%VEoi3f6j!h?`<IwTx zxO8;oH=F^Tu$7G_rlZO}9sL$SCmV#LQ_!jD^yrw%-)Xj`8UPfD@*SZg^<S@Ob~+2w znS;)}bmpWpH=ViKZ~~sE^=e4y%tvPd5lsE>EJ$bc<S(X0=qyI(KjORSz*nY=(^*0# zqvI|`XB9e2(^)~R%gDGao#p80%5RV>ifN^0ln^T${i<}<6w_*SR;RN@3ozET=&VCW z)qgs2{+GBiU6;;!3akk?ptB#H4e9JiXCpdW(%G2KW^|+xbT(~a;<&ktTMTKoqO+|i z)mH#?wiz;QM`wFFy7HT>cA~SJ;CB}ME_8NPCcP)S)7g`bF8%`Bi;mR)&fW&I?+|`} zIw#RNfX<P04y1Dk9cck-$*M0jNIHkoIh@X6gT#dP2xC2p&hd1PrXyXTGt>e)#~I8C zbWUuen;cH2a~_>j=$t|4R65cHI-}qJO58K)oI~d<I%g02O7wFL&-rvNp>qM9i|FXX zzW^>CxX`(j&J}bnqjUK{DVQr&dU}ml)A^dtHFTb#b1j{F>0C!gUG>npp3V&-=oTRI z&2;Xfa|@l@>D)@^wwA|abqAe0wMO{G<!(Cn43u>4qw^4*`{_I=R?`CXb9|VN)cnpP zbRMPin9f{h`vje*=sZbBJ)j{@Rs2m3&(e{4-g%DB^K@RJ^8y`H`8zMsd3j9ESLytZ z&TEQcl;m~8_9mT==)6VeT{>?!06OmskaXUoquv5U{{fvb&;Ol|>8Jxg9q9<2PYv>O zI$zTHLh)$duauzWZ?Gn(^DWj`biSkWJDu<8{6y!6HZGkXTSq!S(@|xgj%opoJDuNJ z5|RH9)1P$yrt_BqXv{x!bmi9(t+BBt!fMX{<0}_yTrAZHjCBI62?tZfY)y<ciLpxk zS6-7D%@kNOV@-)Qov?v56_(U|YiiA-NKE~=r2bno2zW-UnZ}GY3zmn~5vzq|O9I^% zgXLhkZCs=Au_D0)SVJv9Wf)^619Gg4ZiSU&-G)_QZH?8#S`n+nnjfplaCQmWU}`K? z_OV8^yUKqyv)(zd=Ej;+nG|NI1z7W7&5Jdk&ai#H)&f{dU@eHX2$pIASPN@fCI1I& zF|0A`zol=1u$IJH25Tu<;L<~0%VI5$wcKbRmEj5|!<Des#abC_ZLC$WR+pfwV#)cx z{Zv?MV5yEE%xeuXtNM?%&X8t3ELGUC*2mfaYh$bpu{Ih2ghADRos2?mhP64?mRM5% zjR|Wjli@a4Cu41kwLjK&Si4|tkF}#jG3S44Cz-0^-;!hPinS-!Zld2EOWgvsCeiGL zwT}qq{BP}xwcnVS1F(+5IuPq{tb?!)#X1=4kO4^p#*+H4cjgGJBehjO&7-kSz&Zx& zI4so&G{0K)@k8>7l8Jr`z&Zu%Qmj+4&ciwl>nyC(vChOgW0*mrpN)0SK#67QzjZ#= zMOYUolZrLe0<4R%E*WyU4C@B0%dxJ;x<bHLVqG-=NR(@^uEV-kDa{hFu5a_lQeOdM z-Gp_s(cFS{>i{X%+p&JZx&!MatUIxu#JUUXA*{Qx?!&rAF!#3ZBH!P*V?BVSy1<bB zVXVin)K|b*>i7QxE0**H>xou_)wn+=Bu~lsG}bd%&yMM$&i_L7f{ZV=R;-t?KE`?l z>kX_|v0lg0^&jhht&4Gd6YE{9x3E;%$5Jgok?5!Y9@Ym~?+;wCKE(Q{wHk&`u)e|i z6zeOj&#=D4`W)+vVV)uPuZ`EYSU)yASl?lNkEPxMl*#NB)=yYJ4>VZ6(w!XZH@f3s z{f_ky)*o2vw2$?tjDHP$g;wr=x?{CUx?>w*T)L{-(;ZJn=?L8k+URsAqB|*Fb@-<{ ziE=T!LD$s(?i6%wx>M4ffi85X74TGar=~ki%VXH4Yu)Lp79g-0>CQ}dv<1+eg|0=n zGjOCU#b4tcx-ngsZa~*-Na*^CN?SwarBYQLL97YgTr?@&thI{1pj*=I4fzgz@VYhK zd+CnQ-HGn3beE$$8{Gxz&Q5n;ai4?koOI_Fd9F5=$npxH5|~e>^Eaai3n)S97oxi) z-G%8cMt2dq>hRxYMR(DbhwkFWOI`sq!%}pY7OG|FE~~vX=kjznqPqg!wdk%$cNMzo z{7-k~mPg{QN>}~nlkRFJ${KXnY~_}X?%H(M6-Q|S-F1w9J-Qo+@A^iwVJirDW4hbW z-GuIzbT_5DIo-_$Rsl#0P@%UH5_R}*<I>%h?)IYG&S-WJ7u5)iW@oym(cOja;dFPU zyFcCC=<ZE-ce=X%)7_KqUM=2u?L&9pmW1wpO3-_C09|$3r+c7`@(Q4GJB03`0|vT> z8J;8P9z$2P0J=vh5+xk11m$%s-IM7aNB2a!$J0GQGl*3HCmG}^;&^I175Q|!SJ6F# z?nQLZq<cQyv*@bIPxtH=M)zF0=V=%Hd6xRGLSJYyyqNA~;-y*u-Aj${<ubj3?v=w? z(Y>1PEp)G;dn4Uz>0W2>*VDaWOyo_%aI*sF_1;SNPP(_zHTOR%;vKD3z<1HTo31MU zL(2QGr=xp6-S6l=K=*aJ57K>x?n88+p!+c0N5%J%)`jk4bRQp+;Yqqr(bZ`P_-O^u zd-5#Zm+3x7_XRPT7SMf>?n`6xyh8Uiy05l@1pL1NfbJV~Kcf34-S_FfMfV-LZx31D zrTd<C)NwyhR`o3OTL9gU>3%`?6T0T)-~Ej4=VN+(N%tGNU(wZ-zYRh6+o4$BV~<Vu z2fBaK{gLjkbbpd;f2RA(m~2h`mt%kT_c8T<(fyb1-;&-xin-0%*7aYp+2deOjy*2+ z#Mt9uPasNF|CN_LA@)SAm(ffjfJw1+<v02%u%{B!l-RUNnNE$Z-U3W$bN;ud$DR*+ z2J9SrMr;pzChRWu%-9`legAK~EF;K^fbC$r1J1^T?PDj{0d|Bf^?x*C-1<r~sf?Ln zE3jw7?qS#1C3YoLdY6X0MzGb3fbp6gTOIqc=V+DKb79Yetr~&Bs0Lx=`LUP7UI2S> z>;<tG!Cpw*)fWLRMyCJ4UKD#V?WmvB64*;O80;mnmm1=f%O88R1z<0ay)yO+0$#DD z#a1mqG^=2*iM=ZJ>e#yYi+&9S(3rIv0ekIsD)Kr6V6TgNDfW6eyJ4@7{TcQK*o|gG z>_f3P!rm2oW9)6PH^JTtdsFPqu{UdTkSJSVZ#kF>^VTYgj=L@P&e+>w?|{AikbXyO zb@(4RV(&7TVmHa`hrK)YUf8Au*n75M?7bT#_CDDA4%|hvKlVY`2Phr|Q1#!q9NY-l zhnVSM*r#J3j(sBb5!lCIABlaGu}bmR`5%jYys#Z-tS7YmLa2&A_Q}|%VxQ6iL~kyC zRM0c9FT_3*Th)B*vy{8ipM$L`KlZt;BX;w@|GJ>HYAR*D2wUC%V9WVm`(B3qF!trx zw_sm^eI2%H0oYezUxR(MCQ<IA=YQ<$CEN|zH(}qXFq&<s{@b@=--CS{_FdSwW8W#X zcMS4Tf(mrE@x2%OLG1g4`F`vNTKxcz{g6REg8dryqu9@4KZf1pCWn9f3G64em(J%Y z>}Rk?>wn9J{T%j-*i!t}($x81;=Y9aiexo<3xutI0*d`V?02wV$9@a@4Z**u!bvQd zzTL{$?_z(9{T}v**zaRY@i$29j|MK{^@)t18sE=xde~p!OoII-_FvdvVgG{tHTI9# z-(Y`-{jJ^>wSi6j|Nor-ZD|4a&l;xI_$&5r*neREKIHqS3M%<y|BW*i_CKu#``;FZ zGd9k6jS^=Z8OPOlXM7xa7jVq^-<b$!;?`;~lj6*TGa1fwIFsW{g)@cvf8}?kQ~-&q z$7UhU)Hu`N=*n-RtHVFe3@sjKMx&n@M}5PKGYd`!rz^6l|BkBv2I=C&I37-j<KqN_ zh=wz2H8=@Qj+5eKt?yvODGXbQvnoy#cS)QIXMUU-XD*x(oY`?^#hFd>x4Y`hfup*> z5Y^l`^O%V9;+Xp%jb8xgKR65GEP}HT&cegK#%ocW#TyxCF-@yveg4N$^&e+xoE31E z!C4MR>c8e+Ub(cNc4tMLm2q_O7q3-R2#s6~XH%Tjan`|6^&e+VoV6QYoVAAH{@1Xr zi?e~i)|1hk|D6qSHWtlBLtdL0ug!3_5$onSTi|RZ@|MkL0MY_f&~0&c5bJh0+YbSD z#MuRBC!C!%zh2$0Lzvxhr^VR==LwuWaW25w3+Gszy>Sl3*$3wUoPBZj7ykVQjtwEs zfj9@_9HhvFSulsR7@Wg!j=(uwP4&JViE}j0QG;Y~jv4sk9EWoT&ha>>;GBSS63&UO zV>9BMJcLx|f1J~BP9IQ-=1iQkan2ejan8Xx59izgkHF4vr#Khl+=_D%&NVm}<6Mq& z3C?9W`tYw{I`b=VuEM!;NHbLboojJ!z>!w~m6&P)O%6CW;;6EZqh0|-bITCJZ8#6& z+>Ub>jw=2*su8Gv%H?jH`*7~Txwq9A{rxx(XpL|R_#vE!aUR8aWB|r_3}?*qzw;!{ z_c#stn>bJ5yomEO&U3=>jEv7Vqhe6Ws1|@@>c8_6&TFE18Rr$8(Zj!h)#VS)>o}_T z59RO{&SyAp<9vYg4$gZ5d$$GPysyB5$N3QF6P%B5KGyD|nV9<TH1%Jd_Hn+z`4Z== zVI<BsIN#xX+Y$~j|A0FV&W||1<NSp4YvYBZ>OYQt3&8np2>%Dp-#EJd<NVb|!TASw zEQ$WF4$&~UV{5BBF7Cv*(hl75aVNx8F9NMqdAa&60Cy7HDRC#oom}*j4Y5tp%DCW8 zE!L@q81yX=?sT|Y;ZBdc5bg}P1@4TvKJHAoHtx*09r2yTuvxg>RyNr>xcdGdSKa>@ zeSn+dhPdj?k8A3`n+##HM#jyDG(Ft;a7*0TaT~7@+zPkWfcEq3&Wda5zt+rwJ2&o} zxO3?>YW+O8^N#5|zeHR>DOKnNO|}c;u7bM=?y|W5!IjGIE{bbj0Tg%%+@)kKOSYW2 zOXDun%7$k-+!b+`$6Y~ZGWhJdE8(uJ!HR8F-1Tu+!(AJ9b=);^*HA8!c{Aeb`j7ix z+;v5>PHV+oPYHUB8{lq=yCLqzg4xLAw#iVe&2ZJ75ANp1D#c%N!`&M9INWV;_ru*5 zcTe2yaCgGp9#{1Oq1{mlTHYCVH{4xtM~lB;n)<&-o0UQCg}Zkv3t*o{#x=J<?*6!k z;~s!}Fs>Z_l~r1R5)Q#V4EIp&J{tW9AvqHFXxyWeRcCb!?y)+$-kIZZPscq0R~3BR z6LHn~e~=-rdIi9h7T}&{c+S8*7x&C&imML)xM$;@Gt4Z?^Kj3{y$JUL+zVUZ7K3{+ z?j^%`+{^I3!@V4DW!x)pn?L_6abLx~3ip28t8s6|y$1It+-q@F&BryjK<*8=H;&0K z=YN&Cv;ZaChI<$8?YQRVM=7NRD5|@0@58+Z*VO;PCMehgxKH3di2E?^LxZ$&AHjW0 zGI`Xj>v5Ha-t8xGpTlj)pT>Pkr>9~)gFEK^zxzDyOSmuK>YIPV@G|Zz1IH!=?rXT8 z;r<WzUEJ3j6Yd+hZ;9zm<MlS~JA)(z^B%6c?ZJIt#t#hgBiv7LKUPz-UR+cE-Oq7< z!u<lbc`je#evK<FK!0++!Tom3DBt7$i2K8U%0&4Y_jg=X{BeK9mEu48xA_O|Ut;>x z;Qt=b;{J=5;f;kiJ>J-Oli`hnHxb^rcoX1_hd2HJtVp~G6-m4Q-o&Dr1ke2bzs=m6 z9B&%DDe%CXatJ>a-qd5VO)Cu3wS*$ifal@Oh}XfJ32*fG|9G>sFgy#-!RzAL1ILyY z&ovkyFUAY-LZgx5uQQkWua=V<#~g1#yaI0yydK^NUWsSwn^)o0!<jdnc(dZohBv#` zYvwue=EIu{Z(h8)@$~tB*cVULe_>d_L|+JRDZGX87Hu?mi^%vNV_ghy3Bjw5ASNmP zT3#A&IXu+@@P^L+-tu@WigE?xwNfjHauvKY@m9q<5N|cSt?^dJ+YoOJy#L~@DN)wK zQ*Qx7UhCkkhqtcM=;-U?sc!*>G#lZms~)_K@ixKRRJ-fX#^!ii;;BZ^df{y~<hu>t z9(dd0?S!`--VS)%4<U!@zqd2qu6Vl)S$D(ReK3^-_Qcx{Z!f%k@T3LkoOSVUz<B!$ z@&J{L&hQ|-<M0l~I|5G~{_#}($2$z~@G<$1#5=0h;2n*3EZ#ArfYAjWk9Pvzsdy*i z>Ee%fGTtc~tmB@BcSfVZ8}lu|I}7hoytDCc!aE1ADd6YgU4(ZY-i3JQ<6SV!V^(o7 z-lf8(y8zy08m2;Afp;z5m3Y_SU4?h`{~yD3csJl(uS}zB(Om%VX1sgwZo#_~?^e9q zWgBm6qc?cGp)TOvg?IN5$-Q_F2<AQ+?>9L=i1#p_)PLC%u|Co|;ys4<Hs0fSFX26b z_YB^Xc&hB<4fRv+X@h?j?|HoE+Nr=^z%%t<@A=Dkui>c{fH(RIfcHPVH}PJ_Gv|Me zSB=2%zk~M)-n)1o$lBkNQPqE8`w;J=7Ag9Vjn}7mU*LTvn9nspMgJ1-8@#XZ)Ej{! z(LCP{VZO(2KFL4eH#O=<{3-E%!XF3kXS~1he!=?_?^nFvCE{;};Sa?ioOr4cwE9NC z`$v%f;*W(twl=j3Y^?sc_~YSEgg-w1g!uaMN4dAT`4i($hCd1ZnDyVE9Dj;I6cxe; z-^HH_e<u8?@u$b1MkU}+i*JhmXxtgZWkwTaX8bO`D*pH#d`mOy9Ha#(lhfvp@8Re8 zK7NEBD5bK7#v0?N_)`BhL)MxER^V6oJ$!kHemQ2W8h<wY5&T()^^J@_yWyV`e>MEM z@Rz`!8-F4EdGP1QpI7+j8^n_70{HsyFC+`&FN(j2!l<0hx4=qXOf;tc`%B`lfWH*J zD){(Ii@Rz8A}lA$<=d$m6=p^JmGD==U%A1ke@eOPki0tn#`tUCuY<p)SmplTUmO3w zie%JlU3^vZ@z)dB`YoHt8{*61UuUuj{toz?;%|k&8NMp}_?x$Q{Gs!|zcv1L_}k!b zJ7AL#+pEx;ZAbjw@OQ#jWgma%Rxk3dhI4oPz3}(I-&0%lO7|WD?~DH!{(kru;O~!r zJpKXrhvFZIF9qK}NI2Cu!irWi9EN`s{^9sX4D|R%8tc*c$KsFHfBfTGQ#0b9fPXgr ziTJ1DpM-z%5QF{-0RJ@nGw`MO>xgIKtHZzI5ltiGpCjYB_~+rDKL{bp3-Ry3zX<<Y z{EP9gz`q3lGW<&i4EUE1T=1{NzZ(Clfwd9vuW14J*WurSe?9(9_&4C+s2$sUR3`cr zKtkV&e;fYojjUmc>Q4Oo@$VAA-T3$7-=nO0b*lIq`2qY#@E^o~NGp~5!^ZlkQVJOV zas1EmpTK_=|4IB8@taK4JrDj<_)p_M(|Q@-=kQ+;>+@skUlQfZGOGHo{;8m^;lC}) z|KY!m|E9>g3*f&sgnS48L;QE~<;?HD*D?sn2d#|%5&kFmy7&v#r}*Z_|2pCq_<!Sn ziQkm;ukgRa|5`}C!T(n0EJ$(xUdA6<J$_UF|G@tl|5tpu{L!4h;s4&|phvZ|KZRDe z0Q`RlCdB`jU|fQ+2z31?7-!%}Fdo4K1o8^degfNP7feJjsmdgnm|zl}WD_Eoj9_w| zTQCK|lmnB1ry|;iU~0nI38o=9yZJBl60Alr9YIYnJwZS)1A#{{BY{OQ6TvLvII~Vk zh3K?0L6<<)d;(iXQL?@T61{JbAwfo<&i@3lj0u50`I~HWf{LIZC<%Ilv<b|g-r#c^ zj1bI6Fsty)MldIV6n{lNhhdwGU>*U?-Hb}9GM~4V3FaqQf?xrHMF|!pScG69f`xU^ z_6Y`~#b0<9Baq^+txFQDK(G|SvII*L=*n;Smm?S|{wnl}1gj9NL@;{!BPp$_(^JW> zPS8A^H3+sPSd(C5g0%?NC0LuF`Px@s{<mw9l-48IkYIg+4K#`VY-}{dxe37*1e*$e zGXh=tTL8h91nOr$1X~%+HbcJK5$q(6+Y`vw0m0DuKiHXI4}x6?b|cWmU#Lc30SNXa z*qdN4m9u#YLbxx%Q3U%D97eD|!9fHED1h3812s~~2NN7ZaOglI{OT2eK(_#bBU>xM z(FCUw97Axtz>bwsw*Z0@2u>n6QGxXnJefdOexp&BKLn=}oGF5O7Z8%OT0xZO5PVK> zF2N%N=MmgQa6ZA+1Q!roMsOj)#RL~MUh1D>yM#cB|7hIH39b~=6)i2nRjnY(YY46v z;aUQ@{E-|)a|6MRL&%#6?jg8^;0}UY3G~UIV6+7g+(~fPkjvezOmHv3g9LK;5AG*; zV1O}cKSZF5zwE%H1g{f3M({kr;{;C;JVDTI&XcW+aeSKKS%PN<gapqG$uAH{*$?zv z0Kv-yuMxaLFnah`RO&PNKg0P3!8;8Jf%JkvwEzOuBLwy?!AAt|5y)FWV9x)6x(+g! zj|n~{_@teR`)5kl3||mVOYkLOQ-r@F_=VtW0;%)CHw51je5W1tGyQ?!CxRcfQg{e{ zHf+BV{7vv1!5@u=Kz9LxKM8c@H|zSxxcsX%;n;)|5UTo5I4<FMMn8Uw6#ayRlM_xv zI4R-8gp+8~V6ow3#%l_~sR*Z}`LD0E)^@#NQ~#$K5H=>l=?K*^o^X1?83<<~oRM%Q z!!z@k;0~ch*d3G8A<PL~!cYi3LZ2`g6B7}pgfXH1Uw*Z;gxP?fupq1ndxY}m6P5;} zeh6gb5yIIdig^pr>zae`HNrUwk0qRoaC5@B30EPUhj0nPc?lOHoR3i5`4G<E5)v+` zXf?yago_d`LTHMA`^3Y=2p1nD(0~b-BwUVgDZ*t5mnK|h*lO68CtQhe1w#Gf9}`hp zfR4B-;d+Ft5w1zNdYcL18irvlLRIz&^(_$LI)v-$Sejvd!c7S`Al#U6Lqb#hb>^G2 zoI<kMkh}%q9)w#GZrdmcw~}#dLaG0nc{{>g2)8HPk#GkcR3)<$;m%{`uq)wit%h*- zA>^KfhZ62ZxIf|EgzDOda37V1PH(?fCOm-fV8R0l4;r`&SiKGy%wdG8+7lj5c*Fok zcog9=ghvmMhWt3f+X;^+ypZq&!ZQd@Bs`VyB*K#or?dc_%xTI|E%0<>J(KV}!m|j^ zAv}8!QF1u9#fW@9;RQp}iwLhHyqNF`!b=D*BfL~uM^~+10SK=oyoT^9!mGz5zjiPs zyq@qD!W#&0l31n%s620OVT8Ae>9(N|cMv{Ecqie#gm)R(-Guij%xEUk0>b+n0O11$ z_7LIIgbx!wLHG#aV}y?mya*p}VdC;6;Zua8ge^1SGlVY@K1=ul;d6w~4_q1m;fq5F zyi6#Ef0cl=0LhK;e?&gv>qKJ{zCrjk;hTgX623+FE};~EMfHx!`8~o92;U#%X)^hU z@N>eC2|p#2`aimM{T4v@1>skc*q3AG`3>REgx?bWK&V;(p=t^y;*W$sX}r$)7s5XY ze<f5kpYXR9O!$X_>Cf0-g#Qx$O{i{u6rlBu#%hITBpQckTB31@CLtP+XhKn{7C<zC zhBez2O++-Yo+{I%L{kc8GNQ?e#=QTDAex$Jsv-O|IsrvB9nnnUJ3W!Q{1JJ^7EClV zkwY{KQJ1JgWDQ6RQhy6T<Pv$>s!0N(<%mL}d59vSiYO+^h!P2r4ycH7q8?G9IJIv{ zq-CS2iRL64A)1|NR-)Mk?gpUG|3W?&(cA+7(Y!>96U|4oFwy)(3lc3bunK-5L$U~w zd<zii`~OByw3x9jLA11JmLytgz(6Fg0O~<3+bW5cC)$K)1)?>HRwP<QqO2sNTmdQY zszj>n6Rp<r3-cN#)>=gC5v@(M4$*&G+IA#b*9hwqZ75zF7|ljR8xPnTCDEotI}mL~ zv^CM@L|ck-3xnTEf%TqmL$sY(x77^FeS2fwk!UxforvWAC)(LC?5YI)N#31kFQPq& z_S6iTdG8_2zQiXH?MK{v$oD6@pXdOh%ZUyoI+f@kqN9ioCOVwx5Te5xN1{Vpev`=& zEgR91t)A#;q7#XZAv#X*#~S_dL?^Ve@jXcZCli_Tzs~S9qH~E(CsGG~B6a>JI&<Jl zbhc>px4=Z_5nU*n^JUa6faoHkONcJkj*8?`qRYnIjVp+5A-a<2dZMeu{c0jr_KEcU zkI2`VoNpk~m7ho&L3Fd?*L!{|(Vaq~S^$xH1t7Y^_})dNu6>B^Zt-HhS4LI;#q<Et zdqfWsJx%lwQRDtFkt+K{j~L8jL{AV&{g)jR>yxcj<fjbs8KT#So+Wyj=sBVniJm9Y zzx-*l68uX;zON8T{nyW;ssC>hy)Ljf6iny&7STIIZz~dwe0RwDKG6?E9}s;>^dZqF zL?6lOJ|4n+O7sQMXGEXtOw3vYDUBfdn&>;CZ-~Ct7#&^ezm|U_`itl%qTh*rCi=Ar zLG;UjlStqHi~bLyKUEGo=f8=^A^L}SEFyjQ*QQwC0-5P}#LE$nPn;7^Ks+Pygv3)3 zPeeQ^@x<-Ah$m^ui6<kTf_U;)-;fYbNsJENMvtd%ro___Pft88@pRhSt}B-MuaPqm zyTmgSTg0=7S7!hw?h-qq)b+nL5qrc5u}>Tk2gK@)V8~0||CrUKN><5at&+GPUXZv) zJO^<}JS%atgjz6Fi;+c*7`$o$#IviZ&VNqgc||!F@!Z7ow0dKmk9Yy%`G=JPUWj-} z;)RJ9BVI%_{~=agU=*nWEiR@dS|#yP#LEybJq#mW)~s%M;_Zo7Al`_0MdJSwuSC2$ z@yf)j$|_dTj*59T!?_0WTEuHAlYR<v_}B6}#OsT%s{h364Kb+tPpo=@2pbb`POQ%V z#GA^fz7#grEr_=k<(9--HG=x5J}ui2OZ|`4dqE2p{SL$j5bsF5EAdX^sER-FE<>2z zi1#7hop?{;J(ON&vKR5*1DJU2D`Qjt_a9S#An{Se2N54md@!-9`NZ-HpmIBGz$tpw z0*FohkB=rkp7<DIssFLA{|%<`B9<1Q@F%triBBeJK4zy7ze;>6@lC|15noDtI`PHC zXAqxDd?vB#1;TJP@j0z*7|tWUfcX4&Dwqq2<?_dD9q}dFMTNeM_&VatiLY#w#8(*R ztB9{59`h9-Hm?8*dA;CokPxN|#5WT^N_-3P-Nd&F;5OnriEk&qqh%h9#CNqa@jb-% z3s~xZe4km%1H=yzKRD#_FtM)u2J;y4v&4@RKSlfmvHHvqoBN;9B|lC4jN;Mz_8hUQ z^Tf{+zd)>SehlZ!Et2>ZgMW==9OC~Ge@FZ}@h8M@5Wh$KCh<GOZxKuJALW<&uRm$; z6Msbf0kOIKX|qxv0BHeA_>}l-;?Ib`B>tTEi#G0HB>t++tr>~GAvP^QO}{7phxiBL z--&-D{)PA_;-3e;;_@r;Xyq5pAH+?;|C9JH&D>^XM&f@P29mL4)b*caT$1TY#v_@W zWPFl|NhTnfh-5-dGWh#SCLx)$Rgz4mgmyQQDM+RvnUZ9xMnj^z0Ew#q1~aV$ola>) zNiqXTNHQZymt-aqDf`LH#@ZpVTG=qzBp!)F;%dF-@kz}6kIp9|Nl1q3f0B~qB$=Yp zm|{ReQj#1@(q#T$l8R(elA2_0k`a>G8yLx~GR|gv=aA`~By+WzmWpH^k_AcTC7E9U z^9`&d3mD&pNERVkSh?u@<qAm4i;=8AvN*}IBukJiO|m4(QZ3Tp<@_(JXf!0tkt{y| zkgQ0uI>|~TtCFltGFthY1V~mJLasrw7Rj0ejj*lVPD$1w*@0wTlFdohBiWc_eUc4H z)Yrk<MG@*-Ad*c;HXT~8v;dXf79?AfY$@bhDS+PpZAi8w87=-K+bdeV4?B|VL$VXe z?j$>t>?-c21t{9x3~~>Wy-4;P^4+^NiOaqu2au@CACmnC7?~bOa?n6SatO&~B!`lm zMsgU*F(ikR97!^I|I=hna+LTUtsK?#Sdx=Sjw3lirpKGroj70?eA5C>Avv}6GMLjz z&L%m7<SY_%_!nAnIfvwY5zdwIJmYl%$;BiWl8jmZlS@c0Z7~LUImxXgSCHI5awW;t z!gEzKHUN@qNYt61WT^fp*Bjp(Np5P9g1MRG7Cluvc^k=nB)5~?O>zf``Q>LK#eZ}O z>I#TN)qf$m-v|$oJV^3T8_Ps|gzQn0N2i_YLz2fxcOiM4<cVo#D5q`y18~Wcq)nA* z*nT8=isT)Vr%7HVd4@!t_DP;4d5+}yX`BBu`R2Fo&8U<wlDtgvlF~Gvx@L68B6+2q zlDtOprfB|0@;b>It=?GQYF$X)Hkx-yJ|%gN<Rg;zNt!%AP?(lkMv{+(@Dt@CK}kL% z`I_W&k}pZVP+*<gS1myB-;jJy@-4}C!)#)b?|)U=KaoyE@-xZ5B)^dSMe-}j?<CR! znpiW<O!5cGpPE+Z^LINX`KJv{Iu_}8ia8ydbR5!gNAYc9>G-4*kWM(dlL|aB>2#!% zkWL}KlafwGI{B!t!c0jzH7TT1X?>ejIt}TxqnhTqq|=kmLOKKKOr$f8niPpVz9xAE z>&R%edqQfHE=}r?j*z;fDXB*qk@^h-X+SFH|90o)V?Y{<NxlV8n2fZc%}INt#b{g= zt29w630kYECYhCVLDJbs=OLY)bS~04Nat+vEeYw|12)omN#`e>Z%DJikh~D-Vx$X` z{-;rrF4CGv<rScPYU$#nONw;~lhsl>oJw^W(hW$LC0&DbInq@~mnU6`bOq8CN3&`^ z59!K^y!oeTS0!DIbakzf1(L2wx-RKjr2i#ddkDPFz?XDA!?3>DlMP9?B;AN~Q__uF zB<Uswwi)T>`tzd_-oog&BHf;JYf^RRL%NO8Z#NWo2hyFIDd~=_l62=G>#k(Yhi5m^ zM@e@lJ%@A;(j!RsBt3w1FVg)<_a@y}`1escs6hKEhUT9<P|+MndWZ-I$#}3?*P*0` znYf1!yhx8EJ(=_<(ql=FZuO+cG`@{YdK~Eqq*DAP3h9ZYC$-TH+bN`{ORQ5HJ?Uvi ze+KDUqCZoyDbv}lNtn+iy@~WZ(kn>MC%u&P0@8~~FC@K4!z2e`xI{6?N=Yvxy<AN- z=ar<_lU_x74XK>}1xb1>>2>Ye^{AF}gM_}ZWh1?r^ls8yNbe-QmGt&TPkNieE8&h7 zrbacrtDTbGL;4Wuy`&G2-bZ@B&bCQU!5-98{U`P?=_76CVttJCGt$RNUnhNn^d-_K zNuQCd{*Ux2(x(-;@zpszOZo!obEMB}T3MY?z1Xgc^kvf5gy9v^SKB0w`~O-m(l<yy zBz=?gJ<_*G-z9yU^c~IFMwI-8`F&ygKv~sO`$(oz|I<%MKW+6U`sZY0lYT+^6X}<v z-w0Tp|4F}ANF{tr`UB~Aq~Et1Ju1_WZNj8Klm1Ei3+eBqzmopeE@6Nt{X-#DK7Wz^ zOZqpduKb!IlRtzuVm1!hWMt!#O++>x*#r#_+4!Su*@Uf3HZhqx`IAl3@))+s$)+Nk zf^15oLAy6OWK)w(OE!(tv=2I)ZisvavhB!bBwLVdCbFEYaq-AzA+yOkWL+{#;U!x= zsvI0LSA}a=n)zf2SwI%HyFnI_#jVxEO&fQzOnWK0Ae)`6M^=fcBojjU<dD^5vx<Ji zaL(3JH4J2Pkj*2)oMdy6nc}Z~=Ovq8tkMG1J}jW(wx88(A+j~e7A9MsY!R}h$o@mN zIN73Pi?x_`rDRKxEjg-DJWG=;D_JdLFv}@sAtzgbY*n%q$yO#?NjvJGtC;Akk?HzR zwnj@Lglmy)Lbf*9`egqlTbE4gzpO|A(gIWt8<1@ztCRa5wUbi+_4D17Yzx6}Mz*<1 zOn=h0B-@5;E3&OsChap-Y}+bXC%HY@sbo8l9ZI$%*<NHjk?l^lGg(vicWJ2_FxhTe zR?+v6WaKLV9cyp01IhLw+mB2&f)-4+KiL6#s<S<a>|jl$9;@mI&6MmgvLi(}oJ`LD zn)xWQ<H?RDJC5uavSZuKl~=ncMREe!$z&&znfl)*plDBNVPvO~T}O60*`;J>kex?% zCYdVxWM{Sckex$zZY!It&L_Kw>;ke2wO;Sr#bl=P>-;YxyF%D5H*8musj^RYRhu)} zHDuT7{58+@WOtF>Kz1wHjbt~I-K0Xd`77UBl&tpuHZoQA$!<3*l2-t|OLvn!NOlj| zePs9QRMpb%Cwrh}Fkb2vfb3y1DgL8@9-DTmt;rr|(cj3PVAkcQo%VlZPm=u~<)36v zQG81FH2Jq=&ycT2_AL37WY3X(L-ssb1Ac+*Rk9bw@g=fXM0mLwRRU%td##npUMKsQ z><zMa$=)P;o9wLttP#lGG06AGJ|uge>;nyG2^HoegZYH)OR^@(&&fX1Fa`KR$)nM~ zYGksnTMgN_<jpR9NA^3}_hdhl{Xq8P5dJ5F{DtgStydfPo6-M4_BYv|&6Mmfr5ug* zk0|9UfX14SO+EqnIOO9ieLgPvcmr^|MdTBbPewiw`6T2M4_nFQ7DzcxPCmt$Cdg+e zpNiZipPGCY@@dFtB%hXidh+Q8U~;+tmkh~gYV_nY53DlnkXz(7d3TJbmOCaxk31*$ z$rJK`JQ6Q?3y`&w$1Ndw+PIKQ{nrr-@|wIyE+>B#y#c7hzj6_bxQvj`N<P~_(+K2q zkS{?#C;5WpbCJ(SJ~#Qi<nxUB>L~LIeu06Wd?E7xh;m`_MRd3(s7h~9^2Nv(S76Zy zY)SG}$d@8tPNqwfFGIep#^@-^ldnX+0{Mz#>gCH{SrPfF<ZF?yM!p95>H`@0nnUv1 z<m-_CS83WD)MD3dW%BjOuOZ)n{2=lT$#*2*h<t1Ejmftl--LWK@=b>vHy@I>Y*$LY zl@YdStmNC0Z%@9RLh7~bFeL9pz8Cq<<hzsaLcW{0$WK5`dZO7wMri?xb8qqk$oC=N zk6h}%-hurUv&e!!u$_`0OnwIWA>_xBA4+}%`C-O%xXJcN@}tG;sMgfz$&WFx<H%1U zKc4&qgFjKjR6Zw@pGJNP`Kbe?xSu|llAlR_5&2o<=aZjJey#w{F>L24WShK-dqE?U zUudislV3@G3HjyZmy*l(zXnf!#i+0Hx{6%R|H4LoE%^)N*O5O&em(h}<TsGtMt&pt zE#x<m-#mybL2n(fk>B3R<f<2l^)B-J$?qn=SElzE{e22Ky7Lc+^+98OnEV;?N67z= z{8949#rjz5LjDB#lcVlx`A-Sp=~1Ox*R!I0PR8e36Zwne?~%Vm{wBF9{^YNaH{+}1 zujzbr=C6~#(RvN#`4;)x<nI`^cLy%y?~{K@u37;3hvXlNVCsMViE`09{2BR|V*Ol3 zX#q`8wUDpKzb5~tMH>8f6wTk@_Y@)d4-`|7|41=5`A_8kkpE2nyYT!%{ww)!gOo)1 z2l-#*e=4P3*WZfPY(DwF6zW|=TZ?fhCZrgbVglt}j7KqkYZ}5#B&LZeCZ(8Ul&YAF zVsbrgV--_UbSR*hkzy)}X~c2r7DF*D#q<<X|J$7@W>BU<ZiTdfLbU*jSxkl&g-g*D zr7fc~<l-5aFQ%Y1QA89AP{b6oQzR4xMJj;I0CMBlqo~AGQs`}IOcXW6tP~?HUX3a% zx&PPl929d>%u6vB#oQXE9MyY)fajA@)qkT|kYYuOg(#M!SeRl_0W3nH+JV6=Cd$Pr zmS{CbzZ8Y4`4mgbxJ>IpAx)uJo??YD@hb^zWr{T@R-sspV%63~^s5iR6l+qfO|jOH zX0-lOtV?kQ#d;L`Q>;(11H}dun^SB^u?dB|2oxI+n1y^(ip>TZiY+L%rr1(xRQ{&^ z7u!&%vQM#X3#Qm!<)C+OM~dAjb`rqOGVVfQD!*(O#qJb)iD?fCUHlt&ioGfJrPyb{ zCd&N`^8pk`iPwP?2T{l^P;qdh5!j&=M^GF_ad@j~y##-xVK|!Nc+sf(PjRe_$2Frc zoIr6Z#fcOrQ=Ft+WJQ8G#W0*E)1mrboJsL0#aR^BQ=Cn48O1pi7gC%{aXy9Af4wuR z_?uW4QCuQa7aPr`L)ObFt`h4NlGv3d`qdQIQCveIH~)ssSZ|=Xo8m@_TPbd$xP{{8 z)}%(A!)+9IQru2)hc?ODCDvUglY1y0qPUmh0gC%5?jJ@{JUGZxydI`_q;-_(V-&Ab zJWlZ<#S;|IP&`Q?Wxx2pA=uL<pJypl<!`1G&r`ghF{3;G62;3DuTi{0@#=s<@UofO z_YI2o8Y{({6mL<yL-Do(YwNoMM~e3;KBAENU&vR$8Y7LM7^?rpXY_ug_?%wz7xV?a zIVrxR*Hpr<=#4}1HO21~-%vD|Zz;Z)l)f|T`e7*IPZYmW{7fOg{29&aw-zjpe^C5O z@h8RKGX2Z&{4>ha8%xQ}8hc}FYj0e7lhGTG-o*6Ar#B%z)eeSSCNjuL6m4(PftB9m z^roRV1-+^0O-YXy+4|Cx;@|E}Z`wvlZ|MBrn}J?HZ$^3!y_x7)^k$|vi;k-TbqtTH z|KhG%fJw%cWK;{F=Nn~6uc8;x>(PtpW%Lqys`x8F`|0iF^on7PFqiaH-EQ^tYI^F- zPfxV~db75Ak!P2Pa~QU{=&eI<ZhA}8n}^=w^ya0vFunQcEl6*EdUE+=(iVn=jPD}! z7Nz$eHPyMP`rpQ)w}gO~lyRw6De^M(R;9Nry_M)KM{fmDF0TP<H&!%kD~o9rWs(Hw ztwwK6QLavJjTY97^wtvP+VuWAP>N<<dOOlvkKShV)~B}-y$uZ2h9=6!^fqag;<BmH zZ%%I;dRx%jik`0j#<aB&wxzc{J=F+WjWEb7fXZqodV7dwXL`HPlk<OXR}EHx-3`y4 z^!5?tUi9|X09iG?eMP@ttE6`Tz5D4MNbf>=2hlr$-of+^r+0|J4yAY4sJjYr1ihoh zbfk=`cQiri9YgOp5so!EsHR}7C(=8E-bwUMrFXJ8o-(k?^fY=y^}lx}y>mo=mW*c` z&U5LVFPigOjmXjhR1O!>yNaGF{`4-PcR4*(|LI-UjOw5MP+dV!7ym{>?`nFt(YuD; zjr6XicRju926%cmC@<}J6TMsLN&VNFTZgQ-)4N*;@1S=lJze>Y?>+SH6YIS?6V31d zz1QeHNbebX57B#)-ox}BYcTXw3!wL?VUQPr-V@qgnN;zory79>rvCSyrS}TG=jgpC z`sXFC`d(P3FB$yHO3+H(1?V+|O>usm-iP$wp!Y7lH|eRePwy=QerMn)`uFI)Pw#`) zYA_$sQ^miT()&bUpVIqGV@BhCL9eO*-w5C<dS4Gn=zU91>VNM$!}CKc2>2(;?dknY z*_4-GD5s<ME9FG=exvsfz2E8mB`|gWPw&r`mfqh(4F6J&PdOIlI0{*g-I^%Jr5taN zhEgi)1Ts!&FcVWwNjVAS6qKs|Q%*)X`TxsHg)R~6RFu<DPCWons`}qfDW|6_C}*Jb zDQBeYQqDx#p`4j=wEhc^HRNSenwy`}rSt|Si5pO+lp&?M`KOGuRmsVaoHa6~IscbE z%9^rCu3fc!U`q8yAS5G{vkQJ!N;&+uAD(g!%DE`#Y?mX*xheI@zg1GsN4XB={FEzE zE<m|7<${#|p<IY^VZ*;j8&?<>rCfq?G0MeTtHCTuxs(p1vs#97c}jU5DAoCYfTvu6 za>ap$a%IZZC{_KZTy+SxI;9l+at$%9*_tTVmQ17t=#{QZxjE%}lp6_heHk~P+^}^~ zqaxp!QndieO)2G<KPD^6Ekv*CKjl`G+la7rGfJ#&DYt9oc8!!fP~JefBjqWSJ5e4= zxijTHl)F&wF21V%Q|@N)dr-<-K)L6DhjMRY-Iwwp%Ka!0pxj?6^|}shg=VBwhkr^{ z|Bdx9%Ht>xr#zbS2ufA?1*wa_nkpCd{V%1d|D~$`lqXQ0B*KX;o5-pK2>4XW3n)*c zJcsgh$}=g?P$q3XOE70^N6D5_?t;qmC{-h9O_Uc>UP*Zor4;<~V#-T~crK&7qM1@& zu3hx1ucEwG^jA|}GlZ8P0+rVf;!@s7`6A^_ly_6!OnJK`c8mDlD&uV?lRH`-$~!4d z3s9l&p?s9`UP^V;r@W8ye#!?FSdtOKhbSLzHI%CO8_vflpP_u5^8YBGpnP&*60fHy zb>%nsXDOeje6F3UQ9Tz^|I3#sKcjq^@-50&C|_^bC|{*~jZ*Ktc2xQ|DBm1}qkNn4 z1Il+O-xDu$1*DMgw_cPVQhq}D5v8vGtvltXLp+~Ten<I*kbFt`wFqAs<TsSxYOsD% z-%~c_{RhgQ1o@*uHue9PF_FJf{yvod9|rjswNLps)ufdF&~HA*|I(kA{#f)q`eW0d zf&Mu3C#63w{fX$0M}GqP<12T05cH+^4<1T?V)~Ql(9QDulhL1={^azhq(6mDpxO35 z^rsq38$A7K=ug*ZXo{<5o?Z!Bo{_#ye<nfBOy8nE3w?d^Z+Ym;`M=$nzG(q{*D(0> zOZtH@g!B`M7157dfap{D1^tY^uKb3%c`Y%Yx_*=4Z1h#}r(e^bRfG`@(9vh7Kd0#D zX!Z2xlIh&^=g~;LuKDP1LVtexE6`tn{u1;Tq`wILg#<4xKqLP{e=$)mI$)r$y8!(q z=`TxvDFG}^f0;J(7D->#fBMU-sb*V|{@V0cqQ9D$R;IrS{n6qto3lFoHR-G3Z@g4H zF!F!tZ$N(?`s>kOcSx^_zrk!sf8$1`udaYvrA#-azX$!z=<i5>bNbuS--7<u^tYtH zm4@k^+=l+PWBP6{3_A?iWV#dmo$2pJe;4{=-v9LV;a^s?C;bEI??rz<`g_ygSA69P zNVY|Bs%-bCe?TjX*Fp3T5xr^wqB&HihtWU0)foMe^dF{w6#et*A5H&M`p3{eh5oVh zPo#ew{o@Vt1SM!TX#{;;{D<_X(N{&D{^|73X!P{Yq<>cHWqjpzpntAd&r?dxc>(>K z=wC?xO8OVkzf=Gh%XmqP5&1Ium(y2Wpb6BD^sl0SE&ZznaLthZI{NC^Pyc#@ym8=2 z|7QC4(7%QLUG#6If4jKfW{`K#zf*(TKx#R68|%IFAE1AqxZJN{vKIQ%7y1tw<RkRI zr2i=Wmj(P7{m1D)L;nf-|0f#V1?WFT-_(D-C(qJ<f&O#!pVuMuXY57#FO8{rh5kGA zU#0&B{nv!H$yRlQq1||s{@Y@DYfRsF>3>B3J^CMrRo8!!KWvfoKc@c~{ZHtR7Ju2; z&*`h;KNRIF`v1`Xn*J~JzoGxV@O(@Ey8(>;5A=VcFU4Q4^yeY#uk`<<{~P_^TP1yU z_&2g#{-|gAx6%AdH7?ay&6H|vt*pi|!gy2@Qc3-9yef76Z`r6OqMDe>6#sT_tI4P? zr<$DVzf@CD%}q5Wl}82DOjJ`*O;0s7m8$tv)9A#MJe`R+gP3L<3N$lShe}=n+Vxfz zl}$BN|0{>e9V}BAe5xK*K$TL3RI2P#MMDww`JXDI%G+>Mg%Wg>l4^viS#{lbQ8h^q zJ*jF|syV1;qncgo^$yHQHP;}DIL<@0Jk`8Zi&D);wJ_EER0~oqFceGG{{cVMB8^NX zS3pWwjB07B#i^E}T7qgxjWmx{z{^lA+s36*_20-VP_0h2BGoEXa{pfqeg9iY3s50e z8{|y22GyEWLzn-RdIgXu>rfp)wJz26RO?Y~O0_=KhEy92McjyL69KDUpd7XDW>i~K zZBDf%)fPIO+E{4;qX}<AwJp_l8X$VA9jNxC+L3BEs-38IX{=N`8|GbyqVKL`wW2+Y zbuX&DTL9HQRO-&3O7#K*kXHcZav;^IR0mNVOLZ{S5mbjz9Y%GiLh4n>m%my*lImz- zJIYv(X$4UpM|C3A@gkovq(6!3WIa_u&HaCM8r8W}r&FCN`JZ8OK8xxcs<Q_Px4u;8 zQC&iHKGlVSzrf%xqEeM#!6Z+yN=K+JGngx=zM#62>T#;8sP3e?n(BHgb^fQiR>72@ zUI9e7f$BD@8>w!V=}ks|3)QU(JVq>eFR1P?n7gR%r;_5YIPamlmr51?7SN1T4^TZU z%u@d=Q~#?+s2&|4sUB-(swb!#swb&lr20RqXQ-YM_oo#=n5mwnQk9?TIiq=D$f{ZZ z)yq_`itx%%GO7hgR<BdNP4$KV-jq>_zqY<Z^%2#(RPT%FJ>&HOmAU-a$d9Q$qxyu( z)PKFJpSLdJ{w4KzR9{j3LG?A&FI3-9{YdpK)eltPQK?=qNYcdmNqm1En5cejF;u@% znO6X{!+%nbMfDez`W8Up)$;$L`gh=~H1*ijQv8)XuBNKTr=E^_0_rKLC#0TKkP}f) zOsy{e6+^qyda`CpJvsFht;Xn~o`!m=W=cKvs7XzyHBqLgo|#(ee?6lhXBr@>XQ8%4 z*)jMowIdq4g;BfI-oQmN2^d*{I;6grI-=fzI;LKfI-#D8I;C#1&8U0Sss&IF)&E-G z{|HY-Jwn~&Y94_C&uZe%PCXyBI{Z`5Nj(qsT-0;7d75nJRbahK^HVP@v<px#NUd-F z4N{7K{ht;roQqMfOT9StiquO`FH5~7_0qziZ-J=g6`=iG)yq-K;a^WzFw84auR*;s zwJQ76tC)ONqh7tm7|oj0Yg4bKraI^UQm@m>hHX9SEveV1-jsR+>WvyJ^@hf}G4&>z zQ>U?+05+%ILi1?mt*EyZ)7I463{2G9iE{fP&5qQkQ13*2IQ7oddr|K~y$AKK)VmGA z%qxJ(XHS#Q-qZ(C??b&m^}f`q3k<m&Kz-m~+L)*hrdDO2T74JXny3#m!V%QRP#@V$ zsgIKJ=+-3ivD7C}A1Cg|E4^OniPR@ktMh-WX_=`{rM`;#H0lefPp3YI`V8u`s8u5{ zn9=(m>T{{j7jk|7Pc6k?N4bbvs(r1x0QDt?;WBD<@~6JMrKP@di2rKpo2jp%zMk6D z|N6Qizzx(lQs1OC`kCHBeFwE_0o1oqtI9v*awoMa`_y+0yr}PKW$ODFnS%O$>My7t zpnjS9LF%WdAEJJO`eEuvsUJ~<I@V*<kB`Z34*&K48O+nv&r?4`{j5f+=+6zM^aAyZ z)Gv+6^9uF*)UQ&%P5m168`O>0>jSR_O#LSHm?!`G9qRYQWbS`-o*z(uO#Pv9SJ6Le zV^M!X{W<lg)SqeQcCYkPYwG{s)L&8mAYNZne?$Ep^|u<V*}gYyKT`ij{S);s)ITew zj{fTaPyIXfpVWU0Y5r2Oj`$BF6H@=n$heJ$k+B#Vn~`x^9*r3pkC6!&(dYkB-;s&L zWnxAqZSaifw*W>aW5nG5w^2r>WTavQMqEawVq_LZre<V%My6q8Iw8^ZU*|tE10ypr zGGm*70A^OQX6rDbsy!nXBXa&1z2so7fJQt<<g`EHGZKg?WMuT@FPemr9wR9uxlFTW z6k4hO=D9FZGGY!<YMC`73o|mp$UKb9%E%my%qH%$D|gK>CnIw+GFO}MVElimHVa_a zZKsQu8GdDE#;;9cj@gb==Ju7D;gy-0nc-h%W@ct?r_9XE?Psl}+}xQrn$_;vvnwY( zl9gLpO8;qfX+^ZcA$&}0wEnj;T76nMt&&#J(AFcZo-oLt0O?xG&|03>vZ{(Amn}fs zE6`eTsLIN;UZAxKty5^NN^1vNtI^t=*6Or2qO}ICb!n|hYi(L<(Hf%&M^>~>!!JFo zM{5Hy)>i;kbi<+O#^RBUptUKj%^HjXsQ$O0rH=Zvwxp%c|FpJlqT=6{mgv92=vyFK zV`&{oYe!o9(AtUCp0swRwHvKnXze=475?36$>HC0E}VPGxc2}_YhPOX(b~W9&^ll! zbP%m0XdO)JFj|L5qPhqgtb&%&|JISTj;D1Ltz&5&O>0E_rIX_ZS+q`|b&@zwY@D>@ z?|<|&IhEF3v`(XSC9TtG{g2iew9ck=rc^&mmDbPs9Pyk>OWphr@t;rY5?U9~x<~*Q z>X3Ti7n|HmX(`R8W&R3OMXxZ?t7zR!>uOpz(7J}!b+knPn<^^ndV{>NHfYJ=Uw3s2 zt=nncssJiv?tfZ$NVz*zGkT?W(|Ux~J+vN>(7m+e6+rRdZ!ix^=ph*&R!*J!D6MB` zJw{6jKCQ=TJ<)_33@xSqw4NR~X+0~*=V(1Y<b09#476UN^((EHX?;rT6<Y7odX?6j zv|giClfT}q#W262rmE;$GQLggoyOD9(t3~9$F$z3^&zbfnk<tdTYzfp6P=>$&uD!m zRB9KX^#!djhoWE8`jOT*w7#eHEv@ecAp!p|;HUKytzT%V^S{REXZ0KHTC{(sJszz; zXsHVyTIvdj)?W>n)<3kzp;hbue<SJ5GTY;7Oj~UV#-5P&RJ13eJvr@(X-}%y+LH|G z(w?lbX-{EN^e#YqYTD|+Pa7GhG05o@Qu(J>h9aDicANH0v=^W~Gwpe3&q8|++OyK0 z&0ys4FRe<-oV4ent=<9@tzN>sLOY*wDt@&Eh_N8;Ma7Wap}nx!i<szQw3nj2IBj+8 zr@chu7klVGxAxMsTeVaDQ$2TR=d>-_UD`HnPw<Y6uEF@qP@IABgtQadkvQWfDr~8E zvLR1FyAo$9quK%l*{8i6?PVGy?PZ6$U7q#|da62HiQre-E8}cTdljsR_NsJT+N;ri zn)d3nPo=#E?fq%5NqZ~WYti0NYK@`2HtqFjuS0v?rfx$^dwtp)Xpin^BiftOu1jnx z?QPOTX{(E%q29Kjy``G!Ph@M_yV2f;_E_56(pH*Jdpi?V=YPYqBki4O?=)bey$kJK z8>GSSPJ18Pd(hsC_MU?fZ4rOn=e`Xm?fp#F0kn^$eIV^4X&*%UFxm&xK13H%{TynL zO8jY$-2ce*DB4GhF|q~FR{Br-c-kk4aRO~E{`ItGqkS^%QyN<Ur_sKG_UW`QqJ0MK zbHsV3jAzk4TOoDgxwOw0|9Q0kH{@66f7%x|u*OgOVsTzV`%>DMOWn&fKtKO0Y2QZs zD%#i6zMA$mW~HM4iqPEuv~Qq&EA1O;-z+@({zv$4(VV)&+i5>S`wrUo(Y}-R-L&sg z03E%D_PtFN<GG*qgS6GAU_1}eez>tsKabLWiuPl)A2*mMXzRnjMr!_NX#Y+7S=!&w zevbB=w4bN_n)Lhv?OOj|q5Tr=QRn}ffwsQ?q5Zl{YmZib)5BY|Kc@XQ?e_%m4()db zrD?xU`$O@|7N9=jkA|Y3(EgnEr^=&heP%enp#7EfrndmvUk_z{OZz9<-$}~%GAjM2 ztzHls2ATd$`xn~3i~XyN<`qD-@dxccY5z5nqMZNGnTPhjbf%^KADzkQj6-KaI^)tA zUomvX)A$<PnLu~jnTXCLbS54})tR)J(wUsj)O3{o)0vXaRD%xH0y`r9ooN)f`J_72 z(V30T^mJyD6nPiu%-BRFWoA0F(3y2K&+G!8gU(!H%-P`Sm@Pn6pO?;3bmpTYI^UUJ zkPFDTpusOpX9+rs&{>SmqPm3Yb8!VQkC%?@1s$VTou!4OMW;ij-nRy8vFM2AckBU` zAU!&_(DCW)KqsKH44p0=5&2FifQU{kMlxWNX+|ff(-XUpv22*>RLW4T_Em~9mZh^H zo#p7PPG@;KwY;xDXJtAo(pjm=8jN&SF<GlMhLEp8XB|3g(iuZ%E#=qDYY!!^OJ{un zuV<noTL7Jn=xjk}V*zYJN1goXY-*63H-<#Fq_ZuZt;F7%j(Q^)s$#^yqxJ&9jHPn| zogL}yOJ^rKd(hdL&TbOgMMnJ=Kxg+Mo;~U8LuW5(WAB0AaPCLvNILt|IfTvubPf{O zfw~jb`N0NxD4iqd97gBx5faldoulX+OGoLybaITzQu;5P#~b5BIv3G7iO$({PNs93 z;7_4*ssd>6>2%Jdb4D|5{B+JToafLvpU%0ppU!!7MEvCuNudkGKcfG1E~ax0olEFk zE}=_h)aQRXSJ1hd&XshoYWVA@GW0XQmd;IduA_4Uo$FPoiK@~!4%s(1Hl17P{7vUJ zI<L~Xoz5e4?x1rYojd8=P3JCMLOs}f>J&Qnszl+Wb3dI2#rZ(vsljv}63@e?pGWCD zBc8|TJWfa60y<ALcsftf89Dh&`m=Oir1PAlJWuC^25Imw(Rqc=%WB%JORxGhI$zOw zozDAo>L%Z&^9G%_=)5`Te}Jd+4xM-Dn42HHmJjHBO6Nm5A4?lUTR`U%Q~fhKU(`08 z&&}$z_)E&ybbh4s4V~{~`mMo;{&#-R4XE^===?$FXF8(!onH+9Z*+cdvP|xuCiIu_ z{DU<Moqw^WqVpftWLV>1O^7uv*7#UP{Oc;#1S1u#iLfTYns`8trNzI-U`;Ng=)X0k z%4(j8HMRJ`nh|Rntm(0)#hR{(>aqUBEv5f8GnQ-z*34?EJ+ophi8UM6f>^U-se2x* zIk4u$noBpMk@H~9C((IL?)+Fv`4z1Bl&yuZ7Q<Q?OP~DfD3*FJFaWg$VCnNeR$a>$ z&r(=RV|B1vSnUQplw~zGmV*^wxmcbd^i@cA*sTpLCH^KFW9L{2*4<bs*6vst)@oR_ zb49EItHLtkZ>b%jPQ>bCsoNebb^njGtnn|e3{}Fs0w{YWtd)&_6|7You)tQw+74?C ztWB}j#99w)Ev$90#$b(zzaZrmKv!QMYa^@;ur_Q~(GX&7j5Yc%f2_^0wv=?W1z>H_ z;IX#C+6HTDm8dzl9kRE_+8Ilo|FOo(xFgn14YC=rl=w?X=|9$P#=i&F*;spG9gDRW z)?rwCV;z9C57vHI`|5_(LzABX^ta+btV6I4!qUn=1Uu9)AC7gD)H<S$VjXGxO8>Fs z{IAz?9M-8=$77u&p%Y|0vB8UdGS(?W)6>LxI@Xz3qW_xbtRc)fSl3{ki**Usc~}=n z4{8^{Qf~w@y%6hStcwO&#(yc6y6wSI`j2&aJ(|#!SXW_PtyA>VxEAYXtn09D6#Vrv z%KrkO%H1^J$GQdUwt9+nt0BA{>rSjYhA^W4n)x2AU$O4RdJXG7tY@+A$9hB<l>TEq zi1iTG!#Z7OJ&N@d)?-*tU_GuvvR=VI*{lWYX_=~R!gxggt>>|n)MLGX^&-|w8Zhz% zUcq`*IVBP6b*xXZYW#;-Z(zNH^(NNaSZ^s>lO=@jV!e;0UI$FY4+a1%CH`0+%P8Wn z`9H(@R-B(>eS!5g)|Xi7EkN;%P<>-Kzr*?&>wBypu}1X2j$-}P;IZWXU-SQlT?^yy z*pp)YfjutPpIHB3saF83zlTcvi}l~g)E-Ayw8z7qQ1RR2W9!4e3MtP-*b`$<GRP9= zWZ2VTPmVnmw&=et`Y$WOo*H`^Y(}R{s|f3U?CG&*!JYwIWZ%~3f9#nDc<foRXUCpx z$TNqsoAugrVK0R}H})df^I$K4t;8RDKJ57iDbnYHGA@L@@M!;{*h^wBhP}AyY6%6< z{3D+W_R`o+?Z<9mx3Mkk&Ja><6NbUX4zWG#K=6L!mj=296JaOV>ilm!DR!o(`uP;t zk7JkECu8@px5cio*TU{&uZq14wi0}7rT^G!M-XEL?3J-s#9pcKXikM$W#GYHO~9*T zuYtYh08<07$6#-Wy*BoGf>}q#bq&9I5fG31EkKNous6rv7<*IfO`53iY^H3D*#dhj zY_%O2&(_%645otL4*MYN?Xh>q-T`|j?6EZfd&dC`duMFXe0vwev)fQ~5A1!h_r%^? z64fh!82c!Ul*Zl<dw*jefPG+tG020lkHtO&`$+6Vu@A5P*oT?u5lvz}VjqQl47Sq$ zfm6Wh{EvM+w)(Rl>=R6`+722d_9@smW1otBG4^TL=VG6Ztpp$Y4D2&iigYdvXJel; zlzSfb1=u3~wif>;imhG&u=N&zeF^r}*q35oF8<3DOto}{Os~Wqb^gb`2K##KYn#&8 z*BSf`*f(LT?V#}(z%AH!VvG2zy0>B9t^mru!{pwD{V?|3*y`AitzH47hx@P}#J(SU z<m4}ahZK2JNZ}vBepLLAHHl(Bfm8p7|0MPw*iT`9fc-S~YuL|Vzl8lP_Vd_E|4pAS zV81xvG|rc?U%}QlKgRhw_S@KX-8ZGs8x0Bei2h^0gRNvA`&|=#Um1E`A7X!t{So$O z*rNaTC)l6r>as5E&#}M4{sQ~UCd*X+8e1#BVfzkS={)xL*gs&K%OB12Gxo0%)ms4e zZ`i+&uJtEQEzy7BOo;tA&N$frNXoz1M*kZ&XIz}|>s*}i1`Ie8G@XclA{=%8$C(6Y z(g8-XIg{hefHMWov^Z1ZfHM`&)T1%eD5}AS;!G!r=I?);8F6OEnF(iBoSAWE(YYgd zy#?SX{l}Sez=kt7PKYxP&JsBD;w*wQACA_4oCR<e!dY;Dm-K}P{5Xr^EY?hM7FRH} z#wBrVoZ4vPEF~#R<FuNn!6^O5vD9>=PY1`v32;0dIs7+YX2q$_{|yo+!dVt4#;I@; zoTB#Qq&OK)u6xs;OKDPirpbQ8gQL#>lDHhsnmEhjtSr+Na8|@wsYx`LRd80vSrtbq z|DXiU8iOg$S~%<BjKNt4XKm#dB#svUItyog9Ch-?G5YUpG{mq8-tjn_;%<Sn8O}R6 zo8z31Q%?`X*%D`GoUL%=@UKX=!5NFQEzb7BX|8~r9fmqo`j4~IP(Qoi?2WT4&R#gX z;p~C4`%n*i4v<66eQ@^0QOb|AU*pF)V1UFq2<K#+gK>_-IRxiuoI`Prz&Q-(@BxoB zc_hwJgZ6|_o&Rx;9f7H7{T!6|<D7^i;y?0DI0fenNjX)<({N57<l>x(qXZx4ES$3k zg>cRl=Xp3v{FPsS`WN8bj&mW-6*x-#aW0ne5}ZpLB+g|xBPV}}UWs!(&Q)SxjdQIS z*BHFM{FnZ3z_|tIMx2`kV_pH8<*0JE;@qYZ^|$2?oF{Sa#CZhgE}Z*u?#2=QcZ~i! z_YJM<0h|ZTS{}kN=YO+CoJVmU!+G3bo*1h26wWI+Pvgje-+4wleAaaGJkCovFW|h` zc!rAVUjcAl#ZjH(yoU3-g6UPff%BI5^%W4#+e6WJaTmjR4|jZ=_i=u~`2go@oDXq6 z!}$p36C9=grsq$GazDrU66cGd=vPDbH#k4ye2eov&Ub@`YXj#8JyqTQB%Ys}M4Vr7 z{;qAD-*A4%`BUsahG_pX$bWFh!TDFxWeXTQXLnrXbjQ<3cLLlQaVNx`6n7%!tohxE zWt_xdCc_1Ha@?tKr@)=E@ef8^y$j$@gF8L$w75$7^+M!3j5~v2n+bPr+?jD_$DIXt zR^u1(mn>Y-e|JvY(f2>@Jh%(t&Wo#*A6MN4iLn5#I{Ygt&9Jce7r`}`|JuJeZh^Z5 z?$WqRHhA3nfh;xX7Pp1#;kI#YT&4d)C0l?l=ZMEO)qUI;H^2>XyA8e$;YP~VDG6?d zn+{dUhoU9!nz%jO6>%%v<%GYFyA1BKgA{QtFXIX-SFdO#+*NT`#$BcHn2M|6uC6`m zS?MhRcP-ovamV1Uhr2fJItIV)09+fm>&vM1U+j%=H^!}Hf9U-0Zic)0=nl8U8xMCY z+-q^S#yuW)8{9o{x5X8acelgcUI=%<9jkNoT6V(SO+q{4?t*K6{~dXZY74;KqaN!- z+`VuQ!QC780Nj0WmFDB_YohxP8pAyhSKa*J9@Ipe5bmM4N8%oatMwmu==|><g?lXS z(YQ+dRf_&Jk5g0K!wI<O<DQ6nI_^ohCma7MwSjvo?rBYy@t=WvwuH`<@hsy%2ls!t z=i;8%c=V_%UVwWkt{nbd(SP@1+)G9?Uxs@%?&Y{w;$ETBb%#p-jjhGMp5k7ITT9&a zxKHBVfO{|QjktH<-h_KA?#;NjXnx(pZMe5LJcjK~+`EP9F6~!O_#P9z5BFi*`*9z_ zeE?VMzeeib9>IMa_fg!(Mz2NmU)OyK_jTN-abLuJ2KRZ~XK|k!-P;R_R&&0D`wH&M zL!MW0UmIPwUjAFSZ!{QOqyO&PwFmc|0T}l^-0yMU$5rx<`vLBUxF6%H`=3G2xN-%g zmj4;<H@KhUs%wATFB%N)SGZq~r0Au6i~HTciTeZY@3=qW{vx%0!qwt0(_a;p;{2^i z!TkeQ{{F}P6ZbFW)KB0aym4^<#r?0T-uUYgPwBrH<Kr!lHv!%PcoX7HgEtZ0WD*kn z_muwQO<Iqts5d#@RCrUUbTyr_;Sqak8EHIt)8fsJHyz$Ac+=y}DA5^AbSAu+8&1P4 zTY#!Ho59S1H#eR>|KrVNkn`Zphc~Z+$tr3;-uxzOLA(%eA-oRW!gx#KErPcgo@@bn z)r;dTG03eAy!u}YZz;T`hr1GH{VM>Th3AUL#&dMK%JuL9@%v3K-jM!#5nd+ISjI%g z)F5-bK3;*>6TkimKw7Gr5_ro<Xjwdc^J8*Xz}o?DMZER#R>E5oZ)LpI1iT8~stP8b znt0SMfM@jITMKU;yfNZjTfy|_Yc7Ah^-T2*@V3C)P>>tpZHl)s-X??Pi+?k`(faSz z`oE2Yw!)KF0L{OxIJd)7;;%^bCo&fA0K6UXl&a(Hgts%^Zg{)k8U5EtCH_q=-kx~- z;_ZdE_kay=pFwYU>hFK>^cH}3Al{*P2brR>7kGylw!`p_#ycGENW2mKucLTJX?|rN zgLf?6ak`3L*9rJf;hl)@<DG=}Dc;F=cjKLccNyNPcxU6ChIa<u=|fa!3b}~C<~axN z0=#qa)X5)D?*e$|t8)4YT!?oup3?t@3hxp;ef~F|%kgf;y8`c8yesjp7B<-e)B_Ry z*A=hByAkhtyc?Qa!yt!$jkyI+X+GYqc(;wfl;;k-JMr!saVq|M@Ls{Y7q5OM_u)N? zcR$`kcn{z`sF8Xt592*DI`=WWC-5FuPN`mxcuzJq-qUz5;yr`+Jl?Z-BbPts;m8)C zdU&b!;OWD^*stQfi}xDdTX?VIy@6+>TOr>Zl#_~Y<B9(3C-5HLM|kS~2k!&C4@bZ% zSDpXyMEo`WGyJLXKF9kL?+d)|1@I-_S9ssx$rhlI-{Oskzx4S7-Y<AR;{A-L4*$BA zeqz7k{f_tBupjS_27~t({see`<ByB?58i)LSG@u#!yiY%n!5gY;u(L)Ga>$D_!Hra z=KD(jRbstBU*7`ZPmVt&{uDYSZ1__de()E;p9X&}{AuxL#-9#<2K?y<c>EdhXKL_` z6Mq)`+3{z^pKSn>qI2Mj_)8CU2!C$;`SIt$pI0MQZ|3~(FMz)gzIg@EoiA*vEQ;U4 zUkraq{Kb`15iVh(HP6!cBj^9dFKx8(JNOR1g>U}yM?XUsU;qAVo<M-VFMbz)ef$uA zW&8+#Is6#E#82>Z{1iXa{LK?qofL+lhu_Dq1_1nJ@RuF*qYQ;#9)AV=mBe0gIEudt z{@VDf;w!bsUk!ic6+k>|;;)52rm1M^t|Os!6_v_bPZ{d*Zh*fd{)YHl;BSP#vGH$$ zznLI6Z9HP@T>yVe{O$3#!rw+nWD8Ji+v4k+AH%bQB#s>-*$H3H|NhPr+68}C71jOh zj<0U}@nxs*_cZ<Q-C*#w{^Re5e;NM%_{ZZPfPWbNf%r!J{e$rj6@IP%hUaknBgKD& z@f?M(PX72us}id8vG}9)-#-EWZ2VgPPs2Y6{}lX_ReJqTC7#+OihVl%nL={Lkn=2q zJO}?m{B!Zo$3G8W?E+0mQq<4EjR*fC{7Z!J;sFNV+yeQR<KK*b1^)H;R|@PZ{A+~d z>V^dWTKtjAA4Q^Cy#fD5W6Ktx)_V*71NgV%--CY}{+;-@<KLm1(a+>A{JT}+$g1xZ z!u#;=*M5zB5dU%fhwvZ4f4He7jXjG0*f4{nKOy6jrst;#R>XgXU>f{q@xQ=-4*wne z=ke81AO8h>^%DTT(tnfn3jQ1Tui~pe`^SIH`1O}c6;-)!;=hHj4*x^B@8W-g{~rE_ z_@e**2ZN|&eI(<@4X4<j;(sQ_=k=)msiI%v|BL?>{*U-y<9}oP-{OCd|6Mb!NBkd@ zt+Rf@{~iBl{9p0)<$qHhUvB~Uf8f`$|EF$1)%qL%pFuxT{Xc@q3C1CqfIuDo3C1HB zUl(n@rNM**lMqZqF!6v&^%G1=FxhC&6a-TdOsUhQTY{+x^x<FlrzKdNU^;^N2&N~P znP3KCn^9#cTD=Pp%tA0H!K?&Y{|RO%m_t`=o<lGf!8`<W4=NIvEkIGtPq2`1E<mtg z!!JE3@h4b>U@<WkRiVMRB3ObTCRmcdCa52XI{6bU)nEu(1RWtU=l{Uc=?dl$)Vo@3 zxCF8V=w}!ZgyNT10QH<Bm8Dma5GY|MNC`56f*@}~;w%Z&Tfk6<eS+mAv<!jS0#y3) z4TfL^Whl=|1eXx3Ot3G(Dg;{-tV*yU!D<9+6Rb|KCV|=x41O(wF^z3J>kuf-Cor!7 z!TJOn3{q+s!A1m|5^OB?CMu-YwHd({1S0;rpDhWt(z)8R4Z*Gi+Y;<ZupPk;LbAQ7 zKDIH$xl^4;urt9fqZxK1*pon?{|WXmxqA`pBPp^4NIBuzkKiPN{RxgBIDp__!5k=~ z*#&|_2o4jE+6xTf;l?<U;CO<g2#zH<nn3LWDx_C*oSKegoj`En(DY=2^9W8MIFsO1 zg3}338^NoGd4}ORi{M;>vkA^=Jes6gh<X(NBRHSnB7zGDF4P#^!^Hzmf=daWCAf^> zZi34RZX&pX;97z!39hbT1XpQhWy>poYU4VB8zg#t6D7D&mC*b*6Wm5{iwdc%TMg!R zf;$QBXr>anYskKb-~j^B|KL95SGjr@Ab61A34(_R9wm5~;1QjuD?Uc>_-N0Q1hwox zHL`Hk_A{o#=LkL}c%I-*f)@y0CV0_Qe5v6fc!l6~f>#M%)6DXz5!7A1F}l`U1RoH* zP4I5*CwRwHd5=JeznbbkKO|6^Pw<iPe9{=={EXlm0;T^1Ul4pH#+MBPft>#}&$k3W z5qw9W-Vr4C2ZA3pmG=CsLW;`#{u}&8vOU4?M75;+K{x}!pLFXl`CoK>g1_lbPw)@j zi3$Fd#Q*4yr;P46GO8^=jPdDCsET$csHes`QDf7cgf4U^r8_0v$>>fY$jKX+0Z%17 zQ>&B_hH1n(t&Gz(e!4TzU5M_Cbmycy6WuxJ&P;b!y0a)M-Op@vXV?6Ot)9}Ii|)L1 z=cYT4uA=et(OrP<{Mso!(3LGfWi3p%9v6`|7Nxrc-NooGKFm*d$w4mNrRZ98m!{jM z+Zyt#jiAY*Ytwb<Iw~q1()EVyfbIr#yL4Be8`AC3jp(Y|9=frNiOI_77UCJ&0=lJ% zR&<w@h4<+$GgMt&0nyd^FX=1NU4!mQbXTRjvP4%=c=Pn=t|rda8z<d0>5h@awM?zG z>8?w69W~V}T95Afjcq&|(%qi!Mszo;J#^Ju09|zpM0Znz*_`fHbhj|mEltI(>26DR zo5nAR+YQ+}(A|gbSh~B>-I4Cj0#I9kknciQ4*w(1e|Nfj(p86l!@n0@qx||?v9FNq zr!cBdbN|ylknS^d52AZM-Gk{KOZO1EN76l1V29Dw$}dxW{ulcw8IP7x?*ep>qk9J3 z<LRCx{u5->TL9gY>7GXS6uKjae_7G#HOzE=Cf)Pso<;W@x@RlDgy^0-uxo?v{|x>D zy0_82knVMKFQR(|-HYj7O81fhp6+FIFK_TB>q@%n%uiSAKizBSUfa|%nCt1@ME3@P z4e5XPX1ceE^Ogo_@VC=_nC=~P@1uJs-Ma;&w*b2L(7jjV^@{GN`yky1bWydahlcD& z=sr&OQM!+f?&=A;Pt_i}Pd0wKPY-21OZNx5&(VE@?(=k&w$puq?u&F^rYq-vUHuih zuMYPk$k$~YJo7i{enR&xy6@9{o9?@G-x;d)p0YLD2XsG@+z*EUADif>bib77XLLWO zt8e~I^eejG(*2t5H^cqV{f_SU+M~b2Khph|?oUGXGu>L=f1&$3-Cybc*02pmy5|0; z`xo6>_WvG)8cw?Z5l%`t4&elZ<0{T@Ji_sZVT2PBPE4r9Uoev>K(p#_GQw#HCnubW za0<eq!+-tN3a2JyG~2X<)7RArwf^f)!Wjv#A)JYDZNixeL&8}Imn58(a6!V^2<Il8 zop4UVIR=D;a}9Me58?cT^AhTtAJgFiL->UV7b8@E{6n}1;i64-gOn{mg_ba$+O`Ro zB5V^bT{{Uy|7Gnm?GRd;L?t?eKA|fi(f>wrRbn8{Zaqr%h;RkMn6M;N;!l_o<`T*p zjM#<2_Xw8}SVh>^0F|{Y;c^Bur2pZHgliD4M7S#9%96N>g6Zn3iD&hJN2Y5^#kFJ{ zW030*9zeJ*;dX@U5pGVnKH)}!-$0P+Z-HdGG2y0!o2W!xWwRlB3&O1hwxx{bEkG?{ z8^UdeklPdPLMZn?;aI|*2zOLbT}5pK&6IFg!o3K0Biw^<_XeOw^+D`u@Ou;PD;{(I z6YfX2zb4e22NIr6co5++ga;EIL3jw^VT6Yc)jfPrw>AimBs_{xDSuN@oW~NLNT|;L zgvS$}(Dcw?2u~tBmGET3Q%3tw8)7(v@O()>lkhCUa|zETJf~r3vIx&3)XHx>7Z6@X zcp>4%gcm8WbVYax;ibBkUg_n8R}o%8c%|lS`d1BKZL+Q<{EF~8!p8}(C%l#LhB`!e zql`BZ-mE#5^A?kJ8{vb5w-eq?cn6`<e8M|NSHFkwzS={0ugSWf@PPqaV-P+>_%Pw4 zgpV{ZH7Yj!D=^^`gs&4mN%#`sQ-seFYW*jC#xOre_=03TZ#?S$$Jj3`TXpgZ;j4uD z=Ep?qTJI97R{+8{3EvjuEuF5M=KLSNNBA+}`-C47e$b>F5_A3!KOy{_@KeIiMgzVe zR69b`No^2*O;l^?H$>wReoOc(;dg{T6Mj#qPX2^H4E3P4fM!bgOJfuMM);Q?e<%Ed zaOCnw`2QySkMJMDe+N7Y9F0SyPyU)P8lPxlq6rjj-B>gs(UAT}lMqcVes%v(q;G+U zrXZS{Xi6e=_}3*AfWee#TB5~?rX!k{XnLaAh-M&~nP^6$nKZ2Vu12#E%{oYwLbDUi zMKlM|oCES2Kr}beJfl7H5iLwKKhc5$Fk66XW}ya2v<T5+5?xeR(RG&~a)_2BY7y1= zr3_x_e}g1y6IqhmF&?`y#OV?RMEd+s<Qq(vC?cx&Kl8ywu_D)XQ{s(?GNPA=a-t)N z3ZhMjN}{!idPJ)eRYWTg^@)}vT82oy3k<O>uWTVFT9IfKqLql$;eW`#Dv=WZ(TQsi ztw}Vd_7kn8qq?hgh&B-ax<u=#kix9rV2Cy}p1N~&_&5GdiS{7cjA%!q&55=l+Jb1S zx+sx8|BJ151TnTH+JR_0qU{@x@sCw~>P~hd+J$K6W-3{`)-a;oh;|>HwI|VjM0-he zZyEO?QoDeH>5BUk9ZYlp(LqF`{ucmYK7>f_f1*R1ETY4S%*kK(a}?3lL`M^yLv#$$ zsYJ&Togn3oBRYPl)`>(Xi~l6UcFIunG@>(!<ovIeWA1;Vvn1tgh13<#CAygCJfaJT z{@3`4)P5m7UnqFde~rI{=yIY<#ebQCjZj@dbS2SM1CKCVLv%mUwM4fQT}N~?(e*?( z5-I&3Ac<~jY$A2|C%TpBwn0=pcM#n}bSKeW_0)jxHin45TB+I#YA4YHM2{0aNc0HN zL*jW@fu&obM;n{S=zsJC(X&KP5<M;Do-#-+{`HjTIieSco^L{i;YEXdnHZv1h<+w| zmFQ!l*NEOGlEZ&gr@u+`#!&M{{MCBjA^L#mU8464+xrc_H1nZxs&@hLd_wdM(WgXT z5q(DV1(CY{X~>Dp79i^-`r2fDOY|ercSK6_iOgGo<{T3L=ojMgiGC&ehv+w=KZ$-P z`lI1DRsK@6>aqN-{mTBA=s)6diN|T8s!%-MkUatM<iryaPa+|;1rSfHIpawiB(c_i ziB2Kol*CgJPpxY;pK?46u}3^D@gl_25zj?DJ@IVBGZ4>AJR|XF{f}oMo^>?C?8I{t zo1Xw`TFpE+@qEPdNa=Z1SK2>6@j}E45HF~Cnvhzi{`-I8MTwUpUW|B2;>DX>;w21& z{`Ly<(!?F&7I9m%=_(enBLKYx5W5PXqdxJn!~t<E7<K+94vC`y32{PP64&~l6K6F* z{nP11V-xp?`^4&Jf}yBf0V%@eh}R%qo_JN_6^K_NUU7gVUYS@9|07+kX86thPrN4a zy2NV{uT4B=kXswX>lpBQ#2XN=Kj>VdvIVF|x-s#$#G4RbL%b>RLByL8j}^@3#9I(= zL%b#N(8)hG`X6sgygl)Ds;*wRI{zDcN8&w+cOu@6cxU2WiFZ-a1|ay_Cf=QRkAa_f zFXH`)_a@$#c%LEveuMsr50JzIhoT1)pFw;G@iD}Q5+6x?SdAw>oY?5U)FnPjWvS57 z#yFPvL}EGr$Hx<&FeoHdP9i>)_+(-c|B=t)G~&}oBhMthfcPxpb0tx20mSDt7~=DY z|2M!BpKq#PNGwtxUqpN{@g*9go4kzpO5)3juW0Zl>ndV(3p8*NUrYQV@pZ%x6JJk! zC-Du$w-Vn-d~*#WzG=WrY|j7jZMBp5cH%n*RN}dd_yOX(iSHx6hxpz>ZetMNZ;S_3 zqT+wZcpf2sLOhSw9%7~c#E+Zklf=&wKSiu|0f9Z!FbM29VmbfE&o@znd5QQ#;#&XT zAby2d1V4UN(qB{Qs)T&CwEZUWI}&}1`0W7|@w>!I_KDv!Ssy4vXMIHcCGp3^pAmo3 z_=!JlqV-7pIk8*;>CV3r=hp`LO@k!<j$}#V?@6X6{()pX;vb2BCsz7T{4?>d#J>!6 z^_#La=O4sM_KE*AY=0Big8vWkzdEJqHW`Ox^!Yy-pJYms2}mYU49SEf6Ol~Z@M!*I zQj*C@jQH2jEtx_Agj2H2-~S|#%uO;4$t)z(*6AeEk<3UkJ;@BZlcwinCX$&)_cp6g z%|<dO$?POU;;$N;YpC2jBnu08UXuAp7LY>oH*6#ek}Raby4E5ja{f;iZTuvQ8^h>- zQn$Ji$x<ZCk}ORUle9=Yk~WD=(jifA0fQxwI3(_9k53|+p9F?HB#AUecao44Bq>QY zSUX8>@Fht_(o-Rg?~`cdAJigQuC_^*Cs{!Z(SMC!nPdZ!RY=w%SyiH|k*q<o`cV3s z1AYOFAz7Pb-P%dAP6H!Zk3^sRO(z?YY(=sW$>t;*lWa<|i2|EvLb92*70(vJwxwY+ z;-73ovMtGW4X0t=f$V;gv81Pw>_}RF{dOX`gJfrtlSy_VIh<rylKn__BiV;!captG z_8{4FP+iLHt)?UW>}#s;PjU#!0VD^L97uAI#>f*hJsjHPk{o8TjvzUn<VccZYY)j$ zBuA4RGn`AJ^xrU?Ag~i<JW2T_L~;tr<s_$)TtHGU@LZD9NzNiUgXGKxV~}T)XyrGa z^GM9$Khfe}he$3YxrF2*1yj?Dn;yizlw{=mPjUsxO(a*6Tt{*h$<-=FeL&ZcTsz1T z&-ElXG#-*0bx41yZYH^fM4kLeZZ(+O6_sYYljI|kyGULnxtruMl6y$%&-7lB`x=bN zdVu6%k_Sn&@*9RnNR;wxuqyO8$<riHkf<|1$&-Un4I_Dm<T){(HO$YGs9j({Lh=&H z+axcOyhiehki0q+eVyb@lA2jv{wTkxPGVjGRNZ$--X(dzj*`6BU`Re7`EWRk<YSWG zNIoI?n&eZGFGxOX03@GlX2tfU@O))L-;n%B@-0a%``;<2ex5%J**}r|Lh^GHYWyU> z8szUJf0O)CPf3*clgRmBe{lbhPC)W6>9{2Sk&ZLyM75EQM{4f>8+<yU2B_%7q$`n5 zLb@2~q@=TxPDVN{>ExtSlTJZ8<$#TJs-_>+K#GjhG#=9FNM|9Po^(d>>s^3!CeoQ3 zj6o{>7tCzNGY9G1q;s0-TunvNc}N!|otJce()pS!6I#H47b0DRRBaPOeJ*NXi<73L zOOQIGOOkd->m@Huy3_zq+9GWarY6xMwUx8^q*9kuG(Yu7eNwIb1{{*cHIh{C0;Gv< zMm^z-bUD(Tv`<=)D%mG3hX9qSvW$={tERf{^5PNwPlxnBU72(*(p5;eB3+eqJ<`=k z*Ct(^RLMT+8Vx_`TBKuiEzPOKpLE@(gxKqoZbG^N=|(c$aDXS>xPg&wO1e3zh`;99 zf^^FPvNlM!CLK$<jgV|hx;^Q3O}ZLYQT+-)TI>I=;@OFGXVP6XOn*OjBUQ(K(%l<B z>7E*(oO_cVEYW>P_a!|*Z1oC2y8jUDK+=PBdn$AY>2aiolBzR5>0zXYtEjGcB<azl z`us11$B-U7NEgrXq$iOo{g>&9I;vVane-IWQ&mU^>yh+yvii$;2I)JbXOcchdKT%` zq-T>}MtTnEg{0?_o=<unsX71aXM2I-(Y;+ndWlpV(*N{QT}V~Gob(FPD|K~M`l`kz zy@vF5(rZbT=96AWdc6wiDmRkeLV6SF$o;>-ZY5QRe@&=L+(CLT>7Ar^lioG(*9Pf5 z4U+Ue(g(z&&;JdK^dZt`NFOGBiu4iE$4MU**kcVqZ1qwghSq=5r-!1?lD;U>=VW|d zM!gG=zC`*u>C2?AlD;y!?bl3ib)Roamc9ZaeT&o_{`J#%mu!5}_eg&teV_De(ho>K zBmI!{W63r5Kj|l=pN=l{Iq8?AL+Afg#9uRiL#m{n^jp&JNWZV`(dj=n9@3vl{~`T_ z^iR@XNq?_lq`#Ty$Q2OjU!;F)9{oM}x1N&zM>a0mI672&vhkGNbdpU#HZ9qNWK)q% zL^c`O#AK6_sp}w}(y(QdlTArB#eipEkWEcSgC{fkpG`+LC)xC5vyja|HWS&53e(W4 zHfA;{vy#nDrp3ReC7WZ2d@i#2$mS-SS3>g)LUlUX{A3G?vA}>?rVEp8O|}SGNwz4N zOSTwUi)?WrS%R$2U2;H0wiMaYnnABuZ2@E*GMmgA38|t^GbQuLLV@{YvIVG=u8Bru z30XYIB}>V2vTUesF%<2QtxHystxVP@TTYmlAzO9`vpm@fhJQt}l{A&^c@?s?$W|p= zU2@G8P__n{+64x6B|3&|Z8ClH(}c*@Bio#8eX>o+HXz%m&LZ1TCn|emQ+-n*5&hTI zw@@(k1h$lMD>YRq+mM|>wk_F#WZRMLPPRSS&SdrZe@8)%HOQSBL!7%v?yh9JH5E<W zJ;?SY+mmc>GIjrN{QC@SN#Bobe=@ZfD1h$pAhKi04kkOC?2y_?b|{%X`8P<iBgl@D z(2*wVXtHBQ$W_*HWT%iFPj(X731lP6FNx}h0K;}F+3B@ScA93;ot#N_E!kOQ7n7Y$ zc0SoTWap8ct6?hTf6A8r$u1zfi0s0F$Mkjy*;Qnhl3h+F=YP$A1=*Di#xPu68)Vlg zr^Z}Ib{pCC;=h6HX0jW}%*~I++(LHiXr9~2?k2l~>@Ko9bx6RqO?D5NzW*V+Z_q8- z1LSX$JxD%=>>=`5$sQ*AlI#((m&hI^dzS1mvd2xgPmn!D_N3z1ojgtUOcOPj=g3|p zd%m8MiTF34wSHnRlf6s!3RxX}mF#sg5&x!Djd_Et?&?jlw?;Fo>mXC*J+hC<-Y5G| z7WlycNoMpv`-JSX+E1o;0kY4@MEpm1z9OH1>}#^$$-W``iR@dlAIQEV8>RnbKMt+> zXR=?(ei`&5J;)W1D)$H3zhr-s{Z01QP-FiLG5kk9uIeq<Zvo`vk&mwcgWmE9$)_cs zh<pn2iODAw{3Hz_`DEmiYkc!r<WrJEJ{9@Y4aOj~_^YX^I34-)<TH`aK(5{bM!L#p zCZA<=53`YX$Y&>Clza~I1<B_mpND)d!!~!rKt3<|{N!@}*Zt_jzZ6|aMs@xtUqq!y zUGl}qmlo&Z<V%qMANi6){VX+DAbCq*Bd-AD7I{u?lgpVucgS6GUtnItFLuz7kcZ?6 zc_hww2$0qQa&rZw?1Fp+@{)X6@*a6*82aSP=$3T<%aJdysr0H>Bws~JtVF)D3Tfo3 z<ZF<xMy_@NMWXR*lCL$Ib8Yfd$k!p?oqS#LZOPXo-<Vuo0g-P&u9csBBTc3Jn~-lw zzA5?U<U{BGd<#u370I_E-<o`z5vR)Cj(lhG?a9YV3HAR1C}tIsy&xaj0&>{`@?C2T z`EE@E<a>}GM7}5azLK?<ME54&M^WjO?kA!BWjuiVz{YQ)2a_L1ehB#y<cE@L{U<-X zDIr-$k{>O`Q6}pc^3mu2{CEMJKz<UrYyrBu=)bm4CBK>cH1dndPbWX0{0#E5CGkud z&#K3|1o=7S=aG--zeHsVP*HXMCs+DUeo>Pm_9f(3l3yye(tq;H$**X7ZeZkBkzY%$ z^j`qi82@$THwf+Z4W9f)^3nRA-$MQ@`K{y+k>5ssH~H=4cM8uPCTryUPks;i{p9zO z-#5C4TK^v$?Rl8|aq>sVA8q=nqvVen&L_y9CV!IrsX<g3YJqweAb*bhW%B36sq~-x zMe>&vY~-8p3i<2guNvCdnkab<ep4#GVL~HY0Qox<^>_PSidv4|BmbTJee&<gKOp~_ z{6q3j$(8t%e@y<#=!&0_e@Xs1xzT_9P54T|q&ISP`A`0>jNdg*v40@{v6+(pB%Yti ze<c_F7ar-^=zsnP#pL9FQcOVp7x}-E@;CWEibU7?k77KEaVW-ZR;tIkfkN*B6ceh% zVj>Eq`4kiDXHrZ`F<HZ-*@`JBW}ujo0zpnC<J2ZP4aIa6(>7BHO|R^xlVV1SS;RRL z#mtRUrn4HrY{r;_BA}R)VkwHbC>Eudn_?k~c_`+mn3rO{;k8gKK(U}E96Y6B;Tl6B zTYxeaqfmlRu{gyNqtiu#R7f_6qDA3Qv?(l#j;2+Q#U5l)xD;M9rBEAz>AXv^8bwIa zr-&$WikKp;qZEn351s#uf}$r;eg8wDw}2W<u?)qE6w6X9PqAE6Lcr?&$FQwLu?mIg z|H#@`HPO{6HlSF8VvHoNDdSpAI>p))>r$+vrus8lk7E5M*D!2Iu?dCJe+qs0H=#`_ zHdD6LrPzYvMv5&d4y4$MVmFGdDR!jThGKh3-<D##rjQyH;SLmIoAi35*ok6i!=|o) zD0Xd-65X9*FLBCUP_d^9sjR&z_M_OxOx3<%NcN{NuK<eeAc`|64yHJc;t+}>DGsGL zoZ_&dlp~a_nUA74hC*!w4Pk9i9BZP-Q=CF^0)_gU9}4{zKry8M#i^2V8ijfbP$c?U zok?*C#aR^RQ=Cn49>qBn=jtkgkwkq9L~#MdMN&m=0b*RN2~|s%Qd~`O8O0S8mk;@` zq_}FBlj0hR>nX0KxNfvxZ3K;n;wFlhDQ>2CnBo?SyQPy`DQ=^<lj3%YJ9MsjEEIQ{ z+<Pb<5d6Iq_fd?x`4RtvGU{IeC?27Bmf}&0rzjqyctWC&*JDjcp)Y^L`Lv88{yO@c zc%G+tQH&Q%4`vHcPv#YhFDPE6_>kf?inl3Vr+Aa14r%4Db4{YY|EG9|;yr2LT@!kr z;)BN4qay!^;$w=>C_bV1RP*T1_wxam;!BDjDZZlkj^b-+^&5(B2RyYw@xAzeP$YVF zKT#;zr}%k@>Q@1q`=8<u*4&HYPgXdV;xCrzQ2b3b1;sz~rlR<lviAQ+nNf~IIXC6F zl#^4AM>#R&_>>b-PM}JZO8-aoQ_4nA%8NiLTR_uQIR)iRlv7epOF0##>;k3Mf1#SD zp`x6Qat6xj2hFR_OZ^r=IWy%Pl(SIICVssI2*d1#VNPSr)sRrmL%F12=B1pEa$(B( zDHo(%Kp}O93k}(eP%cI(m;cS@QZ7zu#9!m<t{lpxC_9v*|7DAE<nV7wTT)kV0hBIf zMCnm>DSgVIscw1*hk8)wf69b1ZKw<;r`(#dpj@4@q+E%zN4boE)fPb6H^^lvSD;*u za(T_5*RrAl$SNdjWy)2=Sd~)W{Fvs~pxlshP0DpB*P>ioU}FZkQf^&JrTmoZnXC;4 z0LqOh)lr{vW6Dh^Hywl|Wpm0c#n7(+lv@n|l-p45OSvuOu9VwR?nt>k<qi#ia;!4+ zXR#CIE|fbDJjTBpr6_;7JLMjfdp3U4=ic>{QuJT*>_>Sx<^GfhN$3E|kyil9gDDTC zRQErI|1f3ir+NhCQIvA|qdiLhDUWHuVjoBO4CV2Z*HNB8c|PTdl&4dkM0qNu=)X!i zMVC<aX{Od0lxI_(DLiKl^>7a5|0vI;Ja3RS6up4*a>@%S)h-~p7gJs;#wCVXo&Sw} zg@mr8yoT~BO7r(W`uSYjzyxzW<?WO=P?{fqRkt@$-b|@(ekgCzU}fLd*pzorK1_Kh z<$aWQQK~&c!1qwzJHXcl<^7ZoQmReCV6^xP{t?P2DIcYLT&9odT$T7l?P;<opQ2Ry zZy27X{EG59%C{(=r+l^cQ@%j?BIV1JBl<7?S4@_=|Dk-H@(oH&r9vwAO@n!x@<YmZ z#Q84e`(miQK#UI>nAjgteopx@<)@UN4EaA(cKuJMd?Da38xQ5z^v0w7hVl=}Zz+GG z{EqSmY3zHGBKJSSK>0J}uav*2kS6?%^7qCzoPSdOOZk@+`kPWNe@qXQ|Ir&)g?i&O zc%9W7pWbBjCZIP-%|>rRdK1x`STi@ZdP@Iw-QMKNRy<S4sDA~fH#NP(=s|A<dehKr z(VLdueDtQHH#@!Q>CHlK26{8mn{hPx%zCOgmHyM4O_fm1%t3E%@u)3;-dv4eLi31c z-X@pc{PdQjw*b9G=`Bca5qb;JTX=w1hUQ$1-V*c{*F|N4LMWeXZ>a`JPyY%)uT5_m zdL4QRJ&T@C&!*=}in;&qdAg8lGN7kqpI+BgjOfL>obDl|SJKPq<pwi!|KID;>kGfq z{{gdbE-T}5GA`eQ=&eX^b9yV$Ta(_(^j4=Q`rljC0L(6+x?00H*P^!(y)pFGr?)n} zb?L36Lb}8C8lxWRiT*3Y+yeDBrniYf$`+uaas{M5wJqrFNpDMf+e*6H0_bfmqrL^A zw;jD*=xtALM|wNZ8$0^>>_kt*zh1un2JT94cY3?2qSB$T?O~#O(L0dd-t_hpzq$gV zH+25*?JxcV4E`W`2RA(Q4xx8w<2TX6={-;H2zuAiJCfeH^p2u;qA(my?-+W=iG8eL zIG)}KqZv-3cRIb3>77dNlm@0o^&E`;_s*bq7QHhEiS*8<ca8?@Ri8)iQhNWRccJ8- zFXIIbhTcW=l;+dBSd-|_?lOAU(7T-8m9?MV6-|`hRrIcIat(v%zs|az-b3_mpm#gH z8|mFl?<NJ)(Oc*#&8K&3<1w6f(7Tu3o%HUech?a99t~3|_tATR-u*+-2Zy2$(|d;A zBlOg1pWdVNMErH#C+IyT{wGaE{U@NZv}YS0de52Y3-rFF_aeRb=)FYmHF_^AjADL; z-m8r*xv$fEn_lf#norN%|Mc|XUoh{`dsn55d=KBJ_X)iZB;`YTADOxzYnY<?l-}n8 zkS#!c1YgkmN(jF+_*(zJY3wGE-goqBiT<A6&-8wf^dDvXsR4-n3%x(-{Yvk5nVR!| z?+;C-YW+p;A9{bQEd31sRng`fRgFV6k;<*cr5cZF0<p($kTr&CLY-AjETKuLCZiJl zZ`dlW{{o(p{(MwZQJqIMHPvcVP<5!Lp_-d&TB_NprlXoksHUfyfy#)#W}BI6R;pQ= z_JmW!Uq|PVL=peWh`(xn9;zj%=A~Mgs%~IGs`;tRFTb)<p<1Y+rCNk)F{(w?(u7%} zdJCXhl4@zH!6T9_Ks}0<RF_u(-H%0;P}x*n2{}|Ql@@<0pDJi7HdUx(Bd8()$Bk3$ zlxkV3jH;wkTL4ut6zx&<#aT5@s%3_v%TcXNwLH}dCb}ZkN&|o_P4vH7b>O60ooa8Y zHK?|vT9ax+s<o)rqZ&h{e)*+Zd(b)6x`uiE+MwD%P4yGlh-y<Reg8vcc7bX$L2gcE zF8?)tE2^ETwx-%n0Nco@_5~@rJ=It-c4(?o?MSuLpc4u0LbV6gu2j1X{8YOehCP*` znpE!vg5QVgB&vO>4yW3W>L9B9sSXs3*8hfw>R_tFs1Bhzw8<Ut3(pZ$$59<gb+k;) z{eN`~mAU`d6_2Mnk?I6ZBK=6p$y8@jokDfGR6mtU#9y++b4HUwb(T!ercyUQROi%V z6B7Ubs6L=NpXzq13#gQ6Q(Z`P5!K~X7gNdkzq+JJp}I_^>;K-bpt_psN~)_gq4r;+ zr;6%2s#~e9r@C2~Z=kx7O2mJJM-KlZotyK2bqCdxRCiK6Om!F4y;OHo-7~uX`=}nI zx}WNS(f)^24<nq9P(4cZIMvYMzj|VTp?Zqy6{@GHo~L?->e&GsmC^s|1*(^*UL492 z{nx90mFg|3*Qn}Mzdls@4Jx$@3=zIf^&ZtbR7U?zl<NHkM)e{6@u)tc`hn_WDy8;R zpHO`|RQ+?RZ>YYY68*2fY^qRwJ%ss|>U+uku8A7Vk5s>k|0k-S#rQ>qq!X&&sQ#w< zo$61jKL&n*{bex!&>x5DU#kBakM6ub?f_4JeEQSSpMd^kDz`r&{fX#LBDUHBOv<Fj zn4JDp^rvVT=<D;p;HQ=mgPfNBEcB<NKO?oC$#;qV3{6y!Gtr;9@ym2p`g78sjsEP0 zVUD5bT=eG=*xV*MZ#^~k{PeG)zX1Jh=r2fr1^Nro_vtT8zfFG;`b*GXl>Xwvu-G86 zPN%;l{iW&G#!?Mi6Q$o$)8?Dg@6dPXTas=oz({GAzTN^P8qhE4cj+heMgRK|{n6+D zeo8;5pXqY?$>>)A`aSx~(pTb7zfXUe5t!7aza0JLhZ<Os{<`#6qQ9o3tW19u`m50w z{g*!JuTFoBVIKNx33v>Bt^D+d&j0=O=x;`Uefk^I-+=yxO*#4-DH3@mlD-LjIscD% zHmAP@{jKP4Il7!W|JNS++tNRp{&w_t7l!TW??8Vi`ePM9EqO<S+?oEa^ml3e4IBO4 zOmq+W2h!h@{(kiLqQ4LQy%lDp6Mg=tzrV>nz~ml8{|NdA(^tw*Uta;yKkWa>Gz(zI zjizgd8J;jRV}+T~lErMxa+sN!nK{|e8)oJWbF#q=r^3w4ocx;BjIa0mtG1?kx=)|( zk-cX|<4f!41~bHStYD5axhK%Nkk*N`&Y*P?ty5{8EPzvVqF%*mv`*I~YSm}bI*-;_ zv_{c7o7Oo4{@S2*?hsPF0?@i(z((tTw5}BAMYJxabs4QoXk9u02*c&Ht{9LA_$nE% zmhqYanAUZ){-$+3t(R%tK<fcoH_{qS>n2)C^J(2I<1I}Jt=nkbN$Yl6cW8e390hZi z!Q4&jUTMSJ|F`Z_A;osT!8}N746TP~JxWWR|7nT-%jZSwF<MX1dc4U}h16qtvZ+Yx zDO%6cdRm-v{?}R0(RzW_^R&h`NP~Zo)=N!YQ~ecMpVE4j*1NP`qxBZ8*J-^WZD<V< z`%S~}woKn?(#3v{)`w!ePfMNu4e}#epV0bv;Asq6pV9h(*5|aou9399p!Fp!wF@YK zq|^F_)_1hN9puu|mp_v7Bdy<P{Y2{*T0@urEww2ahTm!ZDPY+GR3R<?HGtMXSaZ<& z7ps=y|F9;<8V_qCET#Wg6JSlK`)Qu1H8IwtSd$F+1*YzW#FzqWTC6Ftrk1H}0Xj5| zN~x<`C_|A?XR>CH>5N#jV$CG>%viJNx;kq%@z1WDns836rLpG1S{Q3?EKz=I9)TJC zx8}!Mz~C3eGUtEIxd@ihd8|dT7Q<S+wslcmLY@DymKyl6>gh6)vMko}Sfc+!Sy(I5 zUIS|-?6t90#=0A86|B9nR>kUIt%fCsd24m78nzDBnpibbo&R+eDJ^x?uK-wj3&7d{ z%f;Fd%f{LWtA(ZXziAk2<oqvLZ5bUC^{`SbA1lHNu+-sSh4eCGtfa9UKURj74?I|f zL3Xir#4542#_C~hj#Xi8iq*%``afXCGOqxZ(toTiv9=m;)&|x#;@=i)dn^(Ek>!~4 zzqJ$A9$4xp0IXfGjPhH%VeLMsr3?kwQ%0lz);?HgW9^G|9M*nVhhy!JbqLl0SO;Sr zh;@)=Fm=r`<z2u!tchYBfu%GbOZEcmC<8l20hIq(<2fEni9FT`SSMngqyTEACpQ4G zPsKU|>okF#t^gWyW@BTWWjyC#U5PacO9bCKxAtS5XKG!5bt%?`SQlgc59^{P%S103 zRFtBZVO@?juKrtBVcm#zHP#JS*I-?Tb*(1REnPn@=S^6*W8I8(E0&1Az@)3&Ox-)M z?!vlrz=Jhf*_!Yk><O{%#d;0vKCEZ3?#Frz>jA8Xh37%6hZI%wzd)^5{RDvZsNsJc zYm9iFz<P4PEV)m~sI~wxo|W-AtQWD=;U8-()(f?>0f^@%tXIT%xp88>Isjn3j`bB* z-NT1iZ(xbwTXGj<=_??tcd*{adKc@x0j*+Coqy0!VSR-4Io8KmpGvJyOs&rvq&UBj zlrM)oUt|4-^$pgKSl?nP*~j{>;S~Fa#>V;y>lZB1f4z3me{KJc^$*q`Sbt&tImG{W z(}qy}i#;CJf6CKj+2dnRFaXq9*b`wdfITtx4A_%kPk}wD_|=Pm80P$MPl>J69$V=@ zw%Q9+6?<Cj>99rrrHVwSHx*~Zo&$R(>{$goGxjVhQE~-28@A}bW}8!-b79YmJvX*e z{z1do^I^|Fm<n=1>=m#V!d?b@VeG}Q7im(k7d1UBj=dE264*<Q%eFMO`cf&Fem=_z z=W;SGuR^-36|q;xuJwPF8i~EK@vquouvaq-Yt$ZWb^aG)E#qGY`%dh2vG>Pb54*x% zAG?jc0k)03p@28Swy-zGZZ%nYY&z7PIM^|^iyhQaY!BNXfU!g2iBxsHq6E9ZPO;_K zZ)by$q<64OY&rjre0DvP+sED+dlT%fus6lt0(&#z-&~Q5l-RPdvA4$F4ttv>ioLDz zZ;!oWZDa3Xn0IPI;@kyW9rdwy#on#)WAAQ|dt&b^t?q@rH}*b*L~-t?V0xtoV4shD zAofYv2VozHeX!6Tf_*slq1cBtNK@j70TuR9*mBypWk;}&F`UO?pMZV5Ldtrv%@vS( z_$Om4smDGA`&5&1nn9j{eKxkzf9$hVRQGuf_PN-j8kiat;JjvveF666;<*s}f7q8| zUsNYzUyOZ8gE7d<8bXO)fqet^mDtx{UnQQaRa7bp+qKx&VPCI3x|18RZxQfK*f$SC z*tcTefqfhH?ZXut0QOzj-(io&ehK?->_@O`{eM8J+$-aK*!K^yJt)qHWPDipb@fNF zpT>R+`$-8sj{QV!=tT8Q#$Z1+#PbZc2)_L+_HzRy_ShPO{Q~xj1E+Xi#(od`73?># zMgJA&YuK-2k9>OtDdKOxh5Zh;+72|2qSd!R*zaS1j{O0)I`CtEi2c!^9QG&JpAJnw zYud*C0{d%ht^e3x4Pm~){&r~kJ?&Ysf1o`n_K(<qWB-Kx8}`rGzZkY(8$){j9s4ir zKd?pon-6;A+5SU&Jb~3)farho?QM@wdm`Es(4KHmTEW^A)1G8p&t$Y`pglQlb<ab4 z3ffcBo~pJLOtVcxdpg?F(nkADl=k!nGovwPqCGQh5&uD-?b&EAL3?)E3(%f}_Pn&` zq&+w7xrVC979bUCC++#9pZN{#g0vT-y%6n1XfHg-66B%=vv^~Ob4l8A)Nd~()1_t9 zy8!KFX|F_kIod1G7X2St(TWWT?UiY-Mtc?7BK{3PJ)+ecfDo>UvlZ>NXpg16Hti#6 zuS2^_dtKUX0jx)RecCPB8_?cJR<vRB3~6tyc=Qui=YQIEGZovRozQk^`!e;K5bc0= zBs`(viB(ARqyo-p7qrzzVEmmSyQIAv?H=uIXjim1r`@N$sU&XF;Kf#3fE3z-cD+XV z`%m$RQ~wG;dt2H&(%w#-+tb!3f79Dew0Duv&W%Ty&09cwciIQi-h=jjwD+XFw?y|c zb@!pIb_6xmo$POD4=|pCXdg;j>AzGt#2AOw2JORX8}Sz&+DFm8n)cDO&!l|}?NewU zOZ!CH$I(7PQe+Dl`K(V8=gAGN*r&><#Gm%*w9n8X&3_i{3u&KCTTc7!a|AZZw5`OS z_W86g7<XO&qkTE;i)dd$`(jO~keAZFY%rAtUP1dx?NMJvwFL<0HMH-ieJ$<VX<tYC zX4==&zEM(cFqoT0s1*4vv~Q)YPyPmT2km=k-${Ek?YkPMkla1UrLDwYir&{aX+J=F z4DAPLKSui@+UnYewrl~)(1(BFd7SnWnpTC>jv)T0Xg^E)X*E@TxdKv#=)W?aH^>)o zYK3``_Rq9mqWux=mubIC`xV-6(0-M64StRG>$*zwQR*sh(tew^9R5c>VtoZf`#mZB zzKkExR(C;)L_gt=X@5=o6WU+U{*?CT0{d)S%$MR6@z)i<q5U20ZwJlLuJ!-NdP@6; zCYSb4nnW%07o72E|4Lh_J?-CQ{9VRB8W`=rB>ivN|BC;g#xJ(s0&vF1nF415oQZMt z7JxI6UW+pc&SW@~jwCvh57|@VfHM`&G&oZa`KMKOvo2>koEd5x$DIEit^eYj8E0Lb zS#TD`nH6U~oY`>Z#+e;w4%5S&I3oV$2}`2d0&wQ7N3}+0ew+oxqi=!4UI=GloJAUp zK`w@~63*f{%it`5voy|<I7>CP^r)CcOce97ILiy$a;BdZaJ2Fp&XsZ2!dV4pb(~dk z^vU1g*T7j*_t1Qo6#v@7xsG924=2Z2AIHPl0H=ksA&%Mw1h%m<v~A(YosVN1kAvej zw(<Bl2~L2cj{P`cQ$_5dzyEPkoRPynPJvV5X#L0O;*>Z&ovW+&aW=!*q%MRb_y79& zZ;rEtsV;|q?cW;bTbylhF2>mw=SZCGaFlN2Y>%@8&aOB+;_NJ*opdb~ReOOrcf;8O zXZL1moO>E$Z=C&c_7UX1GVZ5HboB#pl+NQEh;tB*7Jrj_D9+)vjia^zF=PwS_E9)z z;T(;lbROpz9Q8UN_HhP(0?sKoC*mmaSG0;vZvi-`;+%nV8jgA+XrjtcY-g&eGS0>k zsdvu78P&jW&NasQg1G?ae`1XM6)4U{26G9{(>Ryn+=g=*&UHAK<6Mn%1&-E#91(x1 zC_LBTT-&6}^m?3|#kc|IMx2`lA=Bh761~+-Z^wBM=MJ2EaPGtzEz!FMSvYq$HqN~` z>e!ESpUHh-2=)-p<2VoFJc^?>f(BC?IFA{ICve7y$LPQFlnMzL=NX)LaGu3^8Rt2i z7jQ)U6~ovDBe^f)yfid@1?LT%S8<f`<ETFY6_}<~NX76b&RaNg_?J&sobTd%g7Y5E zhd84D&Ib+NkbERC^+q7%pW=Ll^BK+;IBFwkV1oH_$o^V9-<YiLaM#B99(M+uA8;qa z`4Q(YoS$&i$sb3qfK-#e;{1X08_w?|<kBt9pAA3G-?-!9{DY%*0ZAV^|GVSkn){!c z(4A0cxfA0~g*yrE<hV-zaVJyhW(l}c;7&O-of;S1X&Mafv`q+iy4t|ihkvnW#9b11 zCfxaOXU3facNW~)aA$2ws}9}ShwM3V=fRx|cW&)$R^f{HYkPiNb=1dQ0Cz#$g_`OO z9(NJk#c>zKT}=CR))H!}?WJ&6!d)6y-UVFsm5@%B#a&(uqyO#-xZ~=-yE5*YxU1l< zj=L)EYU5T}V^F0waMv=->)>vJyDn~kyB@BCyFTv5xEly;L)?uTq`|jvmFDA`Ux5{y z+6x5l8ki?j-}pn^R6G%`7JuBtfHT|@H^=SZ7Ro8B7JRp15W9z4;r4Y@SKJhLAKcAw zcfj2ocPr^l?E<*^6##c@-0g6;!QFPi))=_k8)HY@J#crz-4%Cd++D`4vK#L1+M_>_ zJ#p0zV$#*SKyBmhi+c#}ez*tX?ysEc`Iz&+dyw&%pMc#%agWA53|GlM?%@icc#gz9 zsv$R?V{nhhJr?)4VZUUZU@#{U&47C{{zJH@;9Y}zDqj7?J`MMI+|zMy!#xA{Qrt6f zM@jBkxMz!@4*v}^?zy-Z;hu+kfrQRC{tI#cr(yc}Uo3!2lv8(p8Sd5Myd3um+^cY9 z3uwr7R^8YQg1Hv=I^64<T*Gi9?#;M24V<{Q;NCiz*3IDFj{7L?9k>tT-idoJ?p?S_ z^KnP(=c8cvn9lFR)t5iG4=AVZ<RL|?vL41A(SO{>aG$|_9Cu8O#8qzrxKElarT@5c z{udsZJ}cvM^(f%6xWD4QfcpXNi@0y%zJ&W4?#sBZG(3WT)!<*3X-)fvj_MBI!hIL_ zZQ*>U0Sodylc=@;iGGOtCGJPKpW-U<$NfZwBr4O-a6iZWVo+VOzQX+;_iNm5alg?a zc|N$`HMzJy;QoyJBd$68kF5F^gZT|_BHZ6`<-qU$fvd$|s{D;NKJGub|KaK_K(*wJ z*QAR*fsFe6FZRTE)8I{lHwB*Pzc(4)<T|B!KAzHlys7Y}*8b*cc+=u3!N)^JwFRh7 zyczIjqSmKo37TYP6P*=rQ@q*mR>zwiZ%Mp4@a7YSIq~Mgn@8-q8@$-_Ha6b;c#GgI zfVU9dg338~^4`KtIlM*j7MHBWj7Riex3Lu73V2K7ErX}OqSEuSGA@Uw-U3vj#;=IC zim<ID<I2Xrs!T_=0K7HuT)Z{$Ho{vAZ+*PA@zxdCI!%_?>(ygD#S{Ja)cwEV+!(KA zq845o&sNhBfcgE`^YAh}A1}fSY5?BI;a{dPUV^7~1YKHH%<(F`0<XmD;2GtYl}bzI z{@?4%bQ6^>40xO29gDX)-rjgy;O&IBCEhjylO4g^x+#RWE#CHc+YROJfVX24HJF|8 z_Q2Z(Z?_tTx9cE^H?j-h?TIH_fbL-*yo2%f#XA6RzlI-gf5Um8P-*?Iop^`f9f5bK z_z%NVZvjn~M32NfT0$ec0Nyc%?Kr%%@s7tk6Ym7P)9_BjJ6Z52DH6qh3ZB0FH(94Q z{CH<H9>Jew@aN!Ngf|NBLcDYFl;-29_X3ly_5yL5EkHe-i}9|&y9Dntyh|0J!K>WM z4gN~JtMRVVp%KDs@z=q-4)15Y>+#0o-GKK9-i>(o;N66GJKoKBO8N0_F>JT#=2eM1 z@J8d^iDyp!<{9Fd^S^g5-h+7e3CaC<BL1caaXuuYx&QGV#d`+tF}yK&kK;XI>gvP4 zfR+A>@w9G6btwApDgDP&zX*u&0^YlLFXFw4_Y&UgcrW9<hW85ItBRzCH9c#5Lp$yk z;JqbOZ_D_OVSW$qYrOaIKE?Y0?_<0V@zlwGK!`V@|9GF_eTnxup3(oNuIl!yCJXNy zyzlY8Ra52v&eZw=?<c$;)pVS0f5D#>?^pau@qWYm2k&=D`~&YVygwUS@%%kx|BFAq zIRC>R(tm#f{E6`=#GhyY)(!ZRG#>oP@TbF{9Di#3De#r}H(lXRHORuB27g+7bN??G z{OR#$FoZMW&w@V_{y2aCZ>r3Oza;+b_zU6Bfj=+)ocMFsx%hJpRh-AL&4<4r{`~k0 z40>on2Cy*xBKV8dQT#<smBsOw7#Fq_{wnxO<1dF_*Am(H)w_U#$&<%l9)BhL74TR5 zKeg~zHq5KyuYoW6uPUx?{A=Q`jlb4NqJA>#;va{<9{%?D>*E*r8{oV68{*se8{xO` zH&$61Zw)ixx9cgsW1=2@jPK(|_yPWq_>Zh2!O!ti{7h2~f3N%w{ucOM{0hG`3-1~J zKEAs4!Iv#S8Jpp6u6cBaTjFnxzm;-|rylXQ!QU2N#NU*|-vR$n{2lT4!ruvhSNxru zEc{)XT>Rbe_rM<!e_`9xMEAx&5Pu(hCHwgMnuhns*C&7DQTmU6F#aKp$M_G!KL-DB z{G$YL1pbjKBu(P0jX?d=(_<SO|9JfC@lU`%7ym^3Gw_x8<JaeZrTqA(n3U7-Pj75J zD%hF$XW^@3KfZbekd#pa82)+qSK*(Je=+_A`2Q2Y(EX2pk;%FQ|8o3G@h@vU#(xF= zmE(G@#=oxi;9rA(?Vwg;;NO6MH~x+Iw+ZGZ{G0KO^80f6qaVWU0=NTTDL?+5hGBF) zHTFFcx>v^g@E^d}uK)_5p3j2~82@2{_wgSg2=N~!m<s<f{IBpI$A1g|3H%rFpTvI_ ze+<4l_T$SIph%u+NW}RZ{#g9yhdeI~*)QS0hW|3YQht2%7NA%3I{q8@@<Hp*;?1Gl zxA8y0e+U0V{CDx+m;T=y0({V{T9`k=|9B7*&!_mG;eUbux$<lNFNf@}@&Cd92EP{b zZ}ES|{|^5L{O>ibTIrAYKMkr#1NtXmv46u?2Y&qDW&EQarSxAi4(Y%DFTn)(|0#c< z^q)X&2O1wtNH7_}L<CCn2_|m*Voz!?lgo4p0;B)Uih`*LmLiyjU><^L31%aJU}l2p z2xcIdeyGZf1Tzhol~H#d%p&8g4UAxRf;kE17|IgyS6%7zKf$~NixSL7un@ug1Pcno zIJ*GB!qV*`Lp+NSEGf>#35K?S=7|MM6Rbl}_p=hgG6Zt-A1q6-oMO-`T|v@Ewg7^a z36$UytRmy8YEf#sI>DL*Yt**-r<S=E!P-sKVAdtD3DzUnkYIfRb@*2y&9D)HI{6dG z7N8icA+|PwCsBuB<R<_EU!3avul}j5h~ON8m|$0egkV#Gl%PwH5#$C_n4+D=BZ(zJ zk3f$7LDc~2D8VKMycxkZ;@O;F3xcf(wp8iODim_-#wOU7U?+m@2zC(s_Qt>C5LoFy zffj$UcOy8GV0Qvh_+Sr$Jqh+E*h@E~R<{qqzJsY`?N4wB!2tvZ5ga%O5ga^J>rjHj z2@V_b9HDIe#Ev33mEdTC69|qWIIi{+9IL66eSBjRoJepofgJvI?kNLK$vTbTbb>Pp z&KUR!&LYstZ+J!#+)r>W!F2@Z5nN7iKEWjf7Z9jpKf#4fI>AK*7Y{nA4T4JvjQ;Cy z&J_e#6R0hK;Hsgz*AQH*ry6-Z!EFRL5Zpp=qu_5MxOrTD(SN<V+X?O=xPxFc!JPzZ z7tml$cy}`;5d9DCQvjX&0KrQH4-z~<@DM>Q_zyQxf=32C1dkCsJ~Vxj;8}t(1fu`J zQ-j_J^cFzy9Kl$EA^i_tAb4?rtPO&f30^07rDi6OR{&+a))XSB?Y9J`UI7U77C`Ve z!Mg<SD41S_h`+W!AgsS;9}?Cg@DbtE1RoRpPVfoAw*;ROD5)p-jNo$ubN<)4UrFd| zf}zVF1^$lUM}qGq`a@Gx?4JmJA^3U7^DDt`dX4(w|3Nqb!Jh>GNXlOXL;4^5OW4T1 z+5*%v!|?~{gcA}@PB;<aq=XX_PNGACRBYj7CTj}95&b9Be+5K14dFb5(-O``2;oeG z(-F=fxn>JcMfDXB;mm}y63)`l4o1S+C1nmmCHsVPHX%YS{^FdMaB;%<2p1%rUjY<S z>p$T_go_X={a61~(M1UtYi#3Lf^b>FB?*_VJ%mdce+@P#f1SG=;fjRI6Dsi^JTb{y zshJY4Lf9c(mCzzwjc_fAt}f#mglj5T^BIL}6K+7b4&izdUDx>6Z;W~*+>mf%!i{Qx z`lmc<BQUm27!$S$144(;Cv*wDCOROgr-bqfpo~cSm7Nf#gjwSu%n6Hev$}-a6PAQq z5cUW+C9H(4PpFmO<Zh;lD$dP~XG_9u2=)1&Q0u>7wk6z7;q`OafpAa49SL_K+(`gC ztEd17cO~3ioVzt1vG*|1y$JU<_CAFB5$>yKHS_)|q<Ib`e3tMa!m9}nCOn<+5W?dK z4<$T`@GwGs|3i2L;gL;N!&BRYM-v`HIHLS@i12vAlL$``z==9Vflnqpm2h1B4^J~) zok93N!ZQiaB|M986ye!~=L~8oL-&6k;RS^1B4`jLys#-mcoE?hgclQDMtBL~r2|ZD z5MHjQ%D%F(39mB7HG~fkUQ2i@;dO*J$r7$7yn#^t6_6?+&#krzZ<gpSCigbN(S)}X z-br}J2vRNlE`zz7P-H*6r{N*IkI)?c^(XQm;S+=p5k5jF`mb00DB)wey5iJZ0O6B_ zPe~_Z45!)%q{C-S-RB5@Abg(ieZsMXuMoZ<DK8Sf)L>-#vPpcE@J+(k2<t+xYk)j$ z!Z!@&Ey8yQ-)^Ro{x0Er1Gd^Ato8pB!VeWj_52ax$Biw~PYJ&!{EYBR!p{lE)&KA- zMWxsN4dHi^qW=VlP|p84`XkYVgg+7fN%%A2AB4XU{zmw#swEhy{`<fds=tWFBmA52 zUzz?hh!XzS*hJ&2#At$%o}-C~l+F`PEaN0HPO1R)dZWpSrXiYwXe#mRU4Uq6O|CH0 z5=}?Mz#~Yl|3ovAbctpnUV><5qN|8zA?gv$O0)*iY($F@%}z8w(Hunc5Y0(6m+4mY z-z=GEUZVL1RfrZKT9{}-DYsD5uo~4`7Ljq$#!0j|(F#O$1IrLCNhJCo8U2sUe>%06 zWr>!rOAswLC?r%X60IzT(f?=_qSc93C0ebiqQ~YFjMgM-6RkzG0nyr$xDL_!MC%f* zH_Y7FL>m%qOf;nbQH#hjQG1X=<PfDqE>R$~9+9s~>(47Biix5jPoi>lR~b=<C^z83 z_`40Bs5GI9=m4TV(N0905N$=YDbeOcTL0@rqAg6;mL_X!A|?1l@{SPcUxA6X7v~N{ zBZq%s*qLY_qFsn~m+7uD?pBY2--Bo`qCK0bgk%fQE8SNx>NP<^=KeoAkmyvRgNTkH zI+*APqC<!dHJpbLY5g~eM-m;?*g|-;@gGZcqA(vvbUcv~e?=m_39|kP_++9}v|qPz z8qs+~rxTq+bOzB`!f<AjMRc}K7apQf5<S;M&nLQs=mMgPh%O{jZvg{5(Zz!)(WOL} zOAq=jfanUMD+d6fy_)D_qHBnrAi9?54x;ObZj!9)WxRpt#z6|v%|y3~|CYu{bel|X zAHv*8^a#;iME4PmCNd}g=pLeb2dzrh{X`EDJwWu}Al)o;XbXrQC3;M{74g^4@JXUq ziN+8;M<g3TBrgKdGepm7HvJ8Gp6Df_u|zLQ(HF+;LBwBu8((R%h+ZRlkLY!xcZh2L zTSRXVy{WUz=S!rw0HSvX%@e&(^byeq%A+`C3uwL!>i@zg#I;C%O7uI?XGFDte@^rb z(HBHY_KCi1st|px4Bh{?MBfvAH>e`aKQvRKpNM`T`gsr~`c<e#UIB>yARdqCPf7fX zNNGNiegz=<mq;tW=8VTDo`iS;;)xV8Hh=#Uo68^NoRoNSiB49JBh}+6iDx06ig;R8 zE}mM(X$&*OGZIfH&gqF~X#5QW@l0x}vSx1l#Iq95OFSF#oW!#e&!KBI-+_28V)ZM4 zq|DRg)>Gp7h!-NBU;GOYEAdw_ja-;`QQ}3Kso)nQUVJc>tR;!>C0>enf8wQy6XKe7 zBjRO<*C1Y&cqQWHh*uEs@(n-nin@?m!pg*}5wAkLs&+O{Nrlw;U+S(&ygu<-#On|% z{cn08UYB^i|1WC;;thu|8xuRkEt6sq+r;ewK=@tah}a_zh<%0BPaqt!<3S2>O1uqm zMl1*WI43TMOX3c(h<~#L^@QceU(MDh-keyy0uXOXEaE?c+=5ts^NqJO)wdq1xGnKs z#M=??LcBe(Qhwqc8UXQ5#B%tr*>tU4iT5Dhjd=F~i3#Z~fLQ52@jf!{ORUA;a2`N> z9`S+1ClVh-d<^ly#D@v^5aL4>On*9u6CXu<1o4qg3FALnO`8R(LdOyxM|`}Ao-l|K zpG16G?I%8&_!I?D_NfMWI`KKgXAqx7d}b4^bBWJx00uTnoJRlS^NFt^zJT~*Vs-c@ zR$Bn^MMHHjA-<CMQsT>rFB|e-p*Z#G)cp_f)y-7wYl&|szK-}NnO;wP1F<>(>*s$n z@vX$Ss4U@;-po(HitrBNJBddN!(9!A_-^8RR2xl-g55_l74iMVpAtVn{1Wkl#AApb zB7T%u#9zT4X|jkPBYuKd^nc{ZKWX@%A|6ZpH1Tu9&k!5^AL;P<q0;gS5Wi@cUnYK! z_!Z(eh+idso%po@SXMXqU->5S+r;WR$kcs@*oeP=KJOEMM6C3mSj1m?ApTgTDCZ}p z?q|gR5`Rwo6Y&?s-x7aGtYn|~tA=0fZyKBUJK`URN6!Be{n4=fO#Bz|FT}qS|4RJZ zfI*7>L9E1Ifpwoo{9}FoC;pFQLIqC7BN<<Tl|6yRClirODxQf+CQ;FbCz*_73KF#u z7|)bL(WyyRB$<X}K9XrkW+j1S1`^T#Wcndweg0RPPa<1@CZDANkjzFhH_7ZIa|%Z9 z0wi+{7{osh$-Dy($^0ZslPo~8D9M5(3)dZzEM)pzL?LA%B#V(ONwPS}5>0f7#GL<= zI(IpeWtuFKWi?W9E>E(;&~zmdi)3Yzbx2krS(9W{lGRC88&s?fk~IdkNY<)tlC>KT z$+{#PlB`Fvfgne&fMmLnj2n}*YD1;y$7PemByAF301k;u;*E<5NFu2vTfoTYn2_Wo zX#*zFw?M*EkaU_7l30>%Nzx<vfTSY1h@?+)D9I)yyOV56vIEIxB-@Z|PO=rr79?8v z4f&A%C+hG|vK@&!{0~*xkz^MM?Ib<y+=NJWmFaG3Dyx?19wd8`>`$^6$vz}|>yTpJ zm&EA5eo6<B987W`$w32##vnPw7>ALZNpd*Ji6lpm98GehYEOM?M=3)wA476H$+0BI z4fBwk&>#hK5{c-4ax%#&B&TZRNav>u=NX3cERyp{l>U>PLo&+v&m}o;xQYNSkWsdP zM85@)TukyX$t5JWkz7i0J;`MxSCU-bq?5=Np!&ax<QienTL8(mB-b?+n~~%OlAB3x z6qwo+20f76LUQY1IV87}sB=Ea9VB-O{w|Wy1H6RpA-P{d_mbQ<l=}e5L*h4Y0s51A zgyaR1M@gO~d5q*KlE+ELkUT-6m4BoqRr+bgsf=eDa+2qSR*OH$*alDXBFQ@>FOk&G z`DKz<1@?-`dX40D&8$0lgXAreH?>oL6W%s>*#gu@_8!Um0}RQBqzjXLL|SX+$0Way zd_wXK$)_Y=O2yAeJ}3F2;nAbw`HJLg#iPGz-;#V!^4$PN@&n0FBtH(-lJmdD|4O3N zo<!{eB)^mVF@*e!bOMsUN&X}GheX{1sc4g%jz>Cj`LEJbbNEjuYLKLpkj_XtDe2Ut zlaWqQ`$=UB5FS#s1(2Hi|8yGC=}4y)Cru$WDva6!NX=gXr8AMvA)c8@XCa-PbXL;Y z6u4>9jHGjt&QCfQ>Aa+Klg=~lDu(WVQg!)Hx*(}mezS^2NY^J_lyo`L#YmSF*y1uS z(NrW|inLzZ(#=#tqW@~W%Noq`q^psxK)SL3R+Moi6J13as)1Ea-PK9gAzg!XEz&g` zn8D~*0Md0O#k>Nj^bJT8(hW%+(v3*lq#Ki3q_PE==R<0b`y5=-P^dgopES_r%qLD7 zNi;USrKGjIXQUnR=cI*78R73XHffJ^Gt!E56Vkp)7fw?3hd_;8kEEN+C|5vgx)tf? zq+63-L%I#=@ub_5?nAmA=^muplkQ5o1L;nZrQQX^*qL+}-Gi>OTRkP+T|1>i(mlnw z7wO&uKk2@thmfi*fOLP-14$21QO$f1>A`i0A^f4FN0A;zdIYJt0+JPx>bC&Wqe+hy zLjCujVjpKXPar*q^hDBA#eb44;bhWN8h|)YBR!M!bg@PJr5~A|MSAuSaun&sr00_U zkMum!3rNpb4eRG{;gEfi%F^q)g!D?%OGz&mPILd0j-3C+f0c|^8@6jnpC-MI^ghz- zNpF(q4Rw@MzXg!qOnN8jEu^=T-b#8~jT!VH_&XX8>0P9Ei)Xa)+(UYAW1EWilRifJ z0O`Y|4;rW13#6zz{F6Sa{Cd5Qla3*MLTE>}0Me%#fZ(4YeVg=I(pN~IBYlzddD5{O zpuPq#82*=p=jCQ9_N$~d;5Fq@NV5wl`wh}JN#D|7-OoFuACtaIT8sR9q;l*})!za& zFwzePwh(@z{EF>U($5AV(l5wXApMeT8q%*w|0eyK^cT`^NWUlj)?|Ixq>%nV`V;Ao zLkvGFTX*#<=^v!({)hDUA-~!b#QB#&{zEnq>A%v_e`M;|Pd1*8W)qNU@i(4{$tEL{ z^S?q)YW$OviRNc&FA$Qc$fj<}H6z)yWOI>0HlqNhlW}@7E&g>P*-T`!lg&&vE7>fA zbh6nLt!9=DB2zB{4S;NJvc<{fAzPSiUa|$q<|CWG!5hqiWJdp+hmfiBKiQ&Wi!~U- zzXX{Qd@|V)vZai_Zf`lVWyrMh8~^e;U8Sr@)+bwutVOmm+4^LwkgZ9!D%t8}t0|<e zzQ&Nf7TLOFYm==rZqK6s8n0di>VIS#l5Iq`al>PJu*ecJo6IL`lQ~V4%q8>2<qXIo zGPNm~+*sMVN=hcmpJik@S)p_FlkbxCY9v`X@RL<0cN4Om$TlV0mTWV!ZOAq!Qzw5i zqyO1fWajWMoF;cWvK`5`SF{Sh!+>AP?M${i*)C%5s!~)BY6}qX9%OrwDe-Tz$o3}N zS3>(}9*x|e>N&Cl=*DCRQXE8f5c#cS2b0%dxkJcaAUl-oda}dF&LcaV>}0Yd$c`gB zlI&=yYtH}KF=WSTe*JuoCp(c$?tgSeCH|(*Q^?LFJC*Eo>Fu;8M0Und=Vy_PB0HPx zoI#=#Jy&5g=lNuplU+b|5t$tRGky3M<i%u{kzGP|sb-KYQ%mVT*_CA1kX=QlPyUAa zTC#D^|Je;>50TwSc01WkWVeysOjbX!TbdL#HvGD`JIL-KyOV4**<FJWnR+!aJ={xn zKiPeQT(SqqwD=p$!(`8rJwi5y>`}7E$sQYGdxGrA2H7~to+5juw#lB>F#U<h`9D+V zf3mSEr2Bl4>`$_n$UY-`ne0unSICswlf6nN`mY(9FWVbKxo?rZPxdz1yJYVS`QOtm zsW0#cWFM1#NcPdVeSSjr>A0TH$$lXFg6vzeFUh_p`)Y{io2KDrB>Rr+`=N?IlKn#V zQ-ddyEkG^dSF+#9ejCYE&OZ#vU*waM{Y^e0*+1mtk%|6i{|)fu`W1kD0-cplR2$?I zlTS)6`rkaCe6pdeDafZMpOSo90Z&CfHTg6HK;0)fs#|4Dr`yhF5U|=5#L#~QN<Itu zcI2~?uSY%``BLPwlP^F%2l>3@bCS<3__++vJc>bgrOyB4^AC9zBwvhtA@W5er0#+w zebFJz;^a#-ehDpUFiVrKOkNW%C;nx~msMHKcPU?<d`02ZS3u+|4MkTWUz2=Q^3}<Q z^gkE<*FCI7z7Dw@{xzpM|C{RTlgH#6kbC4ClDFy*`9|cj1!%lQ?vUH$?Lq%0-8F_U zi2->ehPnUI3<-IkJSFecc=C)qCohKC$h+hfc}Xsp|E9yHRq{>9w;<n?d~@>6bfSFL zQf^CfrTpYunSQn*-?qs$4BL~RM7{(0f#f@q?=JYA$af~+m3)_BPI9>dQiOYu??b*P zx&Gr%@}c{md|&eY$@d!+BA4^Oe)6^cA3<L0|DjUr5DimL;4twV-gwB5BtMS)DDq>( zul9nvAM#_BVIBqf@#H6vpQt^$%E{!Hlb=F9iu_b^CHUm0k)J-4cqaMT<m!juK`!|@ zjZJ<o`9<XCkzXLW=Ntcp<VO5;t&7Po70e}?O4YiovB|F>zmfb(a=H1*uOgSjzs|ju z{CaZP0`%%`P=!WTcat#REDP6L0QqecGn3y={s;LT<aN0_$)6&>i~Ird(UNjE`F-T~ zkl#D9K-Jj&L*x&VKSur#`6H6@a1$bz^S|!raq=h0pHL*tgHj}84DxAmb+#vehWuIb z=gFTNDW^WHvCWkHMe>(xoBSo?d4>Ena&-}8JZd{I_8a7%lD|p*5&2u>?@E=oWqikA z-Xs4&Jo*ZV{KEl*_&=6WUIA3;&&Yoy|D60=@-N80B3G9}hV5%|BmVl+`A*WmC;y?r z=uxfrC-R@ke<S~eT>bbv#Pj=*{U^nE<bNrT%KBTze`NfZT=ZWWpctP*i9E#wGEPV# z`d>_3Pj!dIq!iOpOhz#!#pD8;LPa&hR1`}2DW*1_X(>efM=;Yjc#0V)W~9){Z}?}S z2q|WzSe;@vibW}Ar<jjo4vM*ic}~MTH-#2|ig`ztUq9qxeu@Ps7N%H`!kqsH-<(42 z1wyqL#j+HOQ!FLZC1f=EUo1_bA1TE$O;G_XN3jaU@)UCCQ>@U0C|06aS+^liL%^%b zxSFZB2F3amYl?F%8P}#*mtvjT9^_K2*GwrkplDNUNYSF$NIBKB)o%e5mQ3x&Z%Q~6 zE`?9wDZgH6Fl0v*>OO}erbs9Xid3fc8(Qtm>v5=)PBWz_DR!agQEW|7QEX1pr`WVc zQfx9vq0n0Zg*yCGY)PS&-*mDK#r6_Xy8y*@#=ir_PU125KZU;hmlC^D>`k#7#U2#9 zH!0%R=YI;b3l#eZ$-Wc^Q0zyse?3)r{TvQdQ}Iw7Os9SwID}69Jv@}+X^O)ruBAAf z;v9-2C{Cm}l0uZfIEq4xzwjSRaXiIwLu@BBv=Tju;&h6WDNdE?DMJmP*1#yvpir_; zai;0*>>-9x6qiz*OK}0kdCISzm0STS<3fsy#G`isii;^O8KevCWfWIZTrMzm{%@ib zS5aJTY_%O2`#OrdDXyouo#F<Hn<;LrLlid+VU+k&+)8oVU`67&L&iI0yo+LVZ76_# z=J!xMOmQ#80|K~@LiArS6c371U;c>w2*u-KJSyX3hUW>2F%;$%Ks~yrYJmEu>}M#x zpm>&|?(jK^7b%`^q7-8()COUYFVzOc%M`Csyh35bU%Hjh>!#ux6z@~KN%0QFTM~M^ z9-F94-<8tuHBO2TC_bh5km6(Ue>4D7X#E%eXB3}n64m*abjGLnisCnluPJ_{_=e&; zL4IqPzo#(zuh;t%g*o{bzfc(c*U{f8{-OAT;xCFn6^Zu$J!Jn|+Z6xN8Lx>pEzy~P z&a`wUq%%34iRes1XGs4$lhT=N(7a;kOhIRAI#bfoH~%`SLen(NbWn!!Oh-rbzxi%- zW~8$botfw?OlM{~^U#@v&K!cAmCkG?Yj)GyoD!0apfk6MYMyz;Kc9^A(^*iA1%^7& zy8xX<=&V3zQ94TtW-&U8(~&!$&d^&xN9_o8Ivv?5I?K>mj?T#WUvif>)mNmm9-Wow ztWIZTI->cVRT>6Cu4dTQptCleHR-ISd(-`|LucJVw^Da~88?t|!y&4T>1;-)MJJ(S z(Q)Z0{ioBGQC|Ux?a>M8_+pFxk36nOoN@)E)|k?%=wx)dbaFaH9hJIT`~_Uf*lR*+ zR7LwTZbE0%#v@sq)7hEM7Ie0uv!wvGYNB+uR)(s$Eu9@Cv>hF}|IvOW{&dtvP{YLD zh0b1L>`G@hI=eR^I(yLBv%whT-gNe(Bl_RjSHVU|_NQ~ez(eOCIxo_x_5W%*htN5L z&Y^UUp>r6WBWf6(!<$?>M;hZO@gJ=#D$KETj-zu5o#W}8Naut>GjvX(bMjy+iRvd{ zI;YW5w?K+hdZTkDo%86NWu|A-Ifu@<bViM&>*sJjolEIlK<6Sl7d8xZ{x@Kwb1@xr z_*b<qt1)ygr*owkS2QKWzN*Qha}AwG=v+(Z9y-_2xt-4SbZ!#N4Km)?WYM{q&aHIx z;a@_xsgPd99dzyz=beUmbQ7f`S3s(hdj)VG9TEJ_{dClJp#JFvK14?!{ss9coiTJC zYcO;kr}KpPpKLsJ79Dl}Pv>bm&(nE^&U190Rng`NYud4f;RRFZCA#y{d6~|ibY7wJ zC7oC4yhrCXI&ac>U8>X#zcDV)TXf!`Bl>Sj&{6s?`1k32LgxcIAJh4e&PO`eAnPfe zPw9Lv;Liq8I$s!uuju?t=W9AY(D{bWcY-wf-}%0ts(-rNk92+-c<B5h;9u$dF2-*L z_Qw$BFS^sv`I~Mn>HpAGnos9nI{ytY%F`X6?gVrv9CTP4bSI`enM5a{JE_7qZFDE6 zJEi!|{eO2Vx>FATk~=Nk+37-eCc4wnoq_K3DqR>PSFV6mm6_?zDxO&kzt(@@nS-v# zephV)1~50>d4{I*(OsMF{B&2My8zwA=`KijVc}dz!&IR~=q^fku|W^QzXaW7=q^du z-28W!raRK7V3wu30^Q~4E<a!s@)h+|J;0Ueu1<Fq@vDtM61Dz|a}By{iXmHoev<3Z z_2{lkcS8xO^FQ77W!#`1g=8bTZMqxNwdl5#Q~Sp~|92g_?jTwlbbT2Ex?$s|8`Xs3 zOz71gVoF)}oY5UaH>Z0v-Gc6}bUSo6r`x3~I^QknivBCkN>OQ&O@vC`1-hFxe!5%G z-I4B=bho3s72R!Q2}b|B+YY76>p)j+2MwXHsV#u+&UAOtPW8d<M)zR4yVKoA*!G~i zCtY>zLsy^w8!+8{=^j9LKgFqd_BZ|mjYt0#5Zy!QDz&G3sEmgxfFe{Ifq2vwKv(I% z_>ZA`5#3|yo=5jMx@XWmp6;o1PoR5}AWt;Nlj)w))YYTnIZZHn7odBlOwXb_itgET z&l$$kJ-4A!qsl#B#tZ0*{;MYc*8u2VO!rp0m(abM?xg~|jIPprx|cVcbg!hVmEUAt zL-%^YTr1;s#(x9do9OBvf9rI*H`6uZuRrwL=srmIcDnb_y@T#(x_8o5yTD)xbnhNa z>E28CeyMVwsUrHX*&d?%C|%Ki)$=0;^B7%`{qEz&^Q7X}Sx?dZo$k|gKcxE%-8bnz zOIPVU-RI~&FXhHIiDJJ<_jS6p{=Z81WxB8Ekgy5hHN)II@Hd8X-%_^f?QOd6(0!lo zyL8{vfDwid8V}u%=zd4{W4d3_{e<r4bU!r=L;BzSg6@}^MDu@5_Zx%!w&|yy(*2(9 z4|IQ``(qQ8W&TX}SBd^&I{$4b`UmB_bpNEBg6?0GwXoOvuLPg&KQjJ1!e5T32+Q$R zx-urDoRo4R%1IQmoOpm#h5}4RIk|SK>6DZ+Q%*%W9p%)NP)<WRZNsKVc}kSiQ_e&= z1Ep5}VGQLglyg$fN;x~_Y$~MtnPXhoT$FQDj{EmN<$RP&P|i=eFr^&+RbvZEx90p` zE>iPQE-K?<l#36RAf6>DSE5{sayiPSDVL$tUp66GR`sC!QCk4z3Y05q2Jwq?Wy)13 zSEF2YfNwCAYfxT7xhCa7lxtCLLb*0&M!61Un{r*sjVafo+>mm8O0E1RcOzX$KgJfN zMQM-gbSOhgm(r*72GuD?&i|AVWg>mXhB;M8O`B8JA56WpLdK4aU0p@_)fPZmQL0VB zWNk_*GG1;*xjE%lg4sgGEgKl+)|A`Uc*<>zXS>D_*bbC?Q|?H)2jxzbyHf5<xyzug zB<@D3&;LV-ds2>wKjl7@`%~^KocpPCy{-d<;lO4p_Q8~AQyxNj9HoeVc^Ku<l!sFu zNqK}q>Rc`Us;FA~F_gzPw(uM;&J!q4qdbxFWSOeHK%%Emp4!-k?Q}|!{qhWhk@LUC zpF?>8<tP<Wwa%6CJQ?-<kJxGppj7%#c@gEswW0p0$9pN|>y(#KK1_Kz<z19lP~Jp& zCFS*$S5aO=d36Jp^lK@#@(($0kkE~dhw^61+lBlV%3CSNz5gli5U{%cF>4%6`2gkJ zl=n*Lp2jb>(tpbP4O0CCO!<%oC|ij?<)f5iDIcSJit=&FCn@Frf2711!|*hvI`&gO zV?57MD)CoS{RzH6`7-5;%BheqHBrh}C|_+b;(yKfYs_bqZ&1EV`KEHJthZ!*oAR9o zCe!yQKN9188I}H1eprvD^vB})gi`ch_wzaBZ<Jq9ek)P61yFuP`8B18zrbn+%I_$D zru?4rC(0ivMf}aWOo?A4U2O!$^E<uqDQo?&W&h71|KF5K^C^}7i}4@5@dg0p=}kay zVtVQofZjy)sQxwJ-X!!UrDyJcv~vo2U(%bB-d^;kqPGmasp-u}ZyI{D(3_Ut4D_fO z=uIc%^dsezb4GeIDUY&eZfen+Ri?Aio15P3^yZYQ-U8^&rSQ@fy?G=wukz@A=BKw9 zy#*Q%y#?tlL~jv#3lCwG{u_qH4RQ&3OVV4qp3>8A0b&o9zbrkE-g5NTptn4|l_k1D z%|mZRdMh<NGF?SNO8@DtMsM||mZ`WVy$$HCMQ>dJtS#d@0}Q?O=&e6A-H@I|ZzFme z8-`Y$Vr-k9BMc+I0@E|U|Mq-(+t3T>mGnY-8NG;Jee4(U*UvB=s+H60(ktkxUxZba zrjSPV=xsr-qPHo%KD|u_ZPZ|To6*~RT+f#D%>BQ56k9h@dfU?5h2D1b)UF}9JJ8#S z-i||^$o+rQgCgIR-fr~vpf|JyD9$|%!`}3+qPGvd)9LL??`V4a(L0FV{xyK!0rW=1 zUpxoXJA&RJ^bV5-4mCW75A`62|K5oH(>sRV$@Gq;cY=_pp8)6`-=xr!!@u&JWIU$` zK(+woKh0D*gWf25Y9kQ9S@g~}wtfqscP_n)=!y9E&Zl=Fy$hOjNm1h8OzB-r?=pIq zG#+~TuYl-XPVb5aBWt|U;IF3lEWK;!-AnIUdbiNKj^2&*u2*fVr>*qgEa4`4HxEs3 zr6+>lyN#aO6b$E`^zNp27roKiDGc=PQ2=e<NAC%G_tSfr-UIX=H2xv|?>$2AG3nt^ z)4=1(7%B85y)pEju5;<BD<Cnn_}5c<&(ZsU-t+Wcqc@h`OY~k)g%n=40G;wOy;tas z=)dH?PVa4cHS$fFnp+^1tMp%-@6c0!_CxPo<5A*Yd!&RCe|jI$`-I-djZ?s%($gn@ zdY{w#Vvr)yuc+$(TwhboOYa+c|I+)G-cR(t6SnUaSkeAK&ujtO^E16)=>0BHwFS`o z&2;hyy}!isr}6wv@1Mptp8u$(q8g8ClG;NxKGg(NO8iw~H4)V~Cx0q+|3fty)f8gr zR{*Lh>#50_nrcRgPD3><)$~+QP1i*As7PjLQmAI4nw@H9s#&RK8RD63kU}*F)m&6+ zBQRCwrkY1jb+_|Ttw}XM)v{CzP%TNdAk`vN3n`eYxUk7xlxlIR#TvhHE}_{Jaw#g= z2&(#-EHh|BNS32om1=n^CHPb;P^~zWD4RmHit>!Kx*FB$jfZND#!s~tRhw#Ustu{u zshw2oQms$5-cX`>1yIqA1hX-fMb%O*=~df9c!w$wm@A`4<qt(es*Eb4N+fE||5ZAK z$*H<j1(iDa4;D^U4%rpenN)qMeW^B~+JS0Qs%@w?quR2DQEe{c7EKD(R#HyH-*8fG zD^B$aK()O=?nt#K)lO8qiGOFRU8r`g?FJyUyUVzTa*Cg7F9Gk}c&OCvka+f^I+3dW z`_IE<dH~gdR0mTXq>vhO2-TsD-8iWZr#gn}2&$u~l>QHak2YDyQXOCWsg(ZLPAat> z82cm%olJEa)hS}1+JwYDUD+!448wL7)s0kVQ(Z!J4%LNJqo~fOlEZ(c^ncJHmEHoV z<nUizWY{ilU{se<T_gOLQC&`@G@nZE0#sK~T|Hov&aaj6I;tDQP&Yyvpw@L0)qPYq zQ;nv&g-Vpax|QlSsuA&*5_dL<RChJ$RCg<ns(ugEy^Sp;?x%W+>H(@psUD<ynChV> zSHO=9*^f~@LG}1h?vqqw1^{7`ji7p_aZ){Nsz1+W?^2Crlb5Mppnosbi}aVEdWq^c zs@nMx)hkqQQoUN|QoTl1kFO8NsoqewJPoS1sNNIU+cLgGrNzI&P`yv34*wEWTY&WT zG1WIzpHO`v{!ghs6XSCQ5R6Q}l<_O7uLn-?d`tBm)z4JlQ~gL~egamX%TFUnHT{L^ z*Jj~T_jmf!Q~g1|7V1CgPek<>)xT7KD~!UM^MCap{R!xgM}K@x*!;ifPpGDY4*L_+ zmkpvn=}49S<n*VZKSd3ruk@e(RP?9TS;8aEX=Oy!?dx5D{tWaNravS7IqA<te>VCv z)1Or^v*;31o&M|%A^kawF&F*$>Ca7nUSZa|0R8zIfH>9ppZ<dMMf{s)^wQ)CsK2NH z7L#%DrXu|%=^spgDf&76rRlFjzwUV@`peK?p8m1|UalSo9nxQc{))<@yIq<7Y64q@ z{;C?L7QQ<Dwdk)we@&gPn^}7(cU}4}{q^W?On-g)8w$?`L$%ZvP*3T%=(p)x^li<i z{f+`_W{-YIU+F)6wJDg~h<-vp9wgFF>1Tr~!e7wej(&&!CiJ`XEBdAI^oDr)LkyeJ z-$DSJ(cgRsvn72c`}DVJ!1TAFuasYxQ)}6t{@(O=pua2q9qI2(e<u}{RY)_tnB3jy z?@51m`g`c8;i0dufavc-{{Z^?(%;Wy?XL_$(m${^=nv_C{}B4;&_9&^DfADce;ob8 z=^rJqBV;_XsYU;2`o|3F(m%H06wLATPoRGieSQ9ywnu&frhlq<PNRP&ebIll@G}|) z`e&IEXB*Eb`d8CGm;UAS&!c}a{qyPnkNySpFC5er&WluT^Q_d;E}?%Z{mV3F#D7KY zp?@X)t5irojce%NM*mv+H_^Y2zB=>M*ZNQY#s((No9W+5{}$zu+-9VIJN?lDxP$(k z^zYJ9sY~DJfBznXzmHAo@8tb#G9mp3=)X(<LHe~gKScj2`VZ58OxV;GK>tyb^*H?} z=|7>DDeI*_#zdc{|D52}7C>L?zu3>yA3MmR{~~=Q@AO}y|1y1%{r)Spr@_$I_y2;a zVQ<iXoBo^h-x@q&gEW8t*?*7z|0ClpfMhq4ZoT%J@iW`Mnb~V*W@d&fZb3`x7L1vh znVFfHam~zYW@cvlsZv!ved9$;RHQObp3JK5IaR8;_E(H~moXnP<~_!Iz!)w5LNavz zAM-I|K4;7)jQOk~Va%txu3oDz6tnVwX-a&}n4cN*4P(A%%(pF=F?tJN%nywDi7`Ja zzv*Ane__mDjQN!@e=z1Z#{52Zl|Kh~#{7*n4rBho`qx+(Yur(cH6GSNSmR?&i!}k3 zh`co+)<jq$`<D3=fb@Vh8P-%-lVgeITT`^mSPXGa-P%~w=$Ts6Va<j$J=RQ32x|rz zXH>9eL9GA7nngTX|HYow<j#&YFV-Abb76`8>#Vu4=4lxW&wN-5NbdY5SBbx|7sgr< zYY{9Fd23Ou#jyTkau**$E{U}))>1;XG}baLgF!BbwY;%K|J%>kS_x}ytd+4=$65tT z$v)PqEz<O`2G*L|qoQjWo^`M`!de$=eaTwS_&2~BTmP+%u{Oin1Zz{xqpNSON@#ma ztYfjZ!pgC>#<H-s!P-HXx5e7dz_vG4cEs8lYv}xM?b2Yd#td=VSP7Pc)xmPHd@N5l z(5$eUi@pWI3gt1virYe_T-TIKv9dufRuAi7tUlJBSOwN@SS401B$Y`S!P<3fw%rA= z#}Ln6So>q`jkT|Y^cH}%-w@^iEPeTdb<ltiOSS{+P^=@c4r}pPhnvoi#5x-5s3D$X zhV0|8ZpJzu>wK&euujKP`j2%I)+tygD-!*=oQidtPSl<=u+9?jnFez<*11^cw2#e* zb>2{|3$U)kx)AGftc$QN#kv?vDgOX3Y_bKY+$*rI#<~*gs<8prU>Wh3P9*DktQ)Xy z!n$!7EIr(U^<S)8vF^jV4NIv#*6mn#sM1m$>n^N&1blbv5zM`sO5yLvdH_o)zrgh6 zkJt}mJ%RNI)}uOCHUF4|9&Z`2p2T`aIG>X7Y2$wu>v{1!*Lo!Dg_Z~FCF}<9GIsO( z^$PZ+Sg&IJhSl`*fn>dg^*YwOSZ`pxC7w48^V?YJ7D!R)p5HSey#-)>i1jVjM_6BC zeT?-P)+bnFE5G$QmWaQQNQtkozBZiSw1)V<!}<~Hd*x9p_Jb++6V@-{`B{aUmel(E zYNEemPk{9Y_PAJoV*Mk?zp(yRV8LU{7SM3o<}E<k|5iwQJZy6X)X>@!igO|vCsyeS zqxJ$-)Se7`4(!RXr^cQ_Lb4IqTK}=9GRSGLXT_ctTb=f?r^BAU4N2CF*fV3#g#CZ* zEKJrc`cb9KCdk=`vgX8I3VSZ>g|X+xUI2R@?D??gRax>$Vb4FnOZtM?`taWXuouBz z0((*H#$Ifw*5U&Ofi2mFu$RVO1A7_lm9Uq^UIBYK?B#W$UXv9E6|q;wUKM+l0UP#e z*sE)R?r=@)b+MKBW3P?9&LCY%uZO*Xgw$Tp@?h&-0DEKX{jfK|j<7ey-Whu{>}{|& zmy|8A)v+IY%QhEVT?Dn=VsDGR1NL^xqcGbW%#OyRw*c&2uzl<?*bcTOV7tXghpu=; z|3}FKamu@Z9h!<Uc8Q%}=h&kEs&0xc`ahc6lia?L7pjo@q$=z^v1KE$N3eIt-W7Yd zmf7%+>c24Tg}pcS(Ba=!dx5a+k9`UD0occ4ABe54eXtKQ(L=Bg$37I>od5MFbp-a& z*hgZIiodXl{%hvru+PRm9{W`66R_2t54PF@#5fsSAO4$1DS8_A84^0(c+SK=tF?{i z9PIN2d@lBo{@WK|Uxa<3A{TzaTx_x~#l8>wGVGhNFUP(H`wHx<1aoDJ$G%#Dbtl(i z-++A`_VumDU~a^|NqaQ%7VO)FM_mD7-)0!@z`h&%PVBqdT*Gh=wo!h~a6h)3{Ot#X z;XxT6GWdtFAIE+~oR4BF<!?jcc>?<>>?emjPh+dSU;x8@4re>;=W)P(0sANH7qLIW zehK?6?3b~dwqFspS5>0qV!wv1{t6)eH?ZGq{l@b)_WRiHU@O_jepg3LUF;9AhtB`@ z$JpOse}ervw%P)))r){(`vUtb;W6ibTebk*$+v?44*Lge(SO~Qod31`Gftz`zhM7` z{j1=A!~O$XUI9kCk}Dup{coIqVXN(+?LnnD<KT>oqwoLQ5YG5GO5t%Pz!Cj-Cc-f% zf2l6fNpU8_5!rVpAL5)+&(WC*XGxr?apuOE24@zWX>n%4nGR<L9MS)_nPxqm8BO*7 z6Y`lANjp<#RvdNI$C(XhcAPl|wG3b`W6XoIfFS3UaXuOK7J#!L&SE$V;VjbNaTYdN zi#9Ozqsuj+#c`HsA6q}pQaEekERC}g&N4X53-hu#%MB96vjWbFDp6CdjI)~fSHW3z zfW%RM{KZ*Amr(XvIGf_Ejk6)nIymd&tc$bWAVu(MBWOK18;NIQoJ}-|^pCR{&ek}a z<7|nu#SmU?1Z{3J;%tMn?ZAVxJ<druJKz*JJK}gaJK;Ej+!<#V92;j0juQVt&#jH4 z^uKlD_&5=c69480NA%w@`tQUzIZlF;O0;XTM)e;@iN8dZ{)<uK9E?-p?2S|7?13|a zqm&;<zXjmzuCfF#DSOJe*N|r)oPBW)z}XLHe+}0B2jXbuHx&=TIRfWUAvsLO!*z<9 z)R8#H;T(mdWFJSafK)Tb4q=YRIT7as<!Kw!wNA#l8|M_9i*ZiHIS1!7oU?FF$2k+{ zi~&Py;G8}1;GBzdLGy@n9?toCY7MO_eId?8%A>1Xf^$92r8rjz{xTUaZ>eyu#JL9N zDja?DWBk|RT-Vyha|6z;I5*<ljC0c<groi_U@*7gsAE6Q?WX#jICr(S!Q6xM49>kc zqWR8!IQQc`h@-^cV6^xP)x$WC<2-`%m^?l@Hro?8PvH#dzw`7E&$Bo$O4f5SKHucx zyr2NecnRk<oR@K4#Zmfi{9<U#>o{+;6>;9gd28(I@8CCT_Ac&MIPc*$U(WY&7sdGi z_un`l;(Ukm5zd!V{bQU@a6ZTR6i38gO0;!xzA)7rDiMGEX?`QEertO89_J67A8>va z|Bo{MWO9GO`5ot1oZnh}>o?Iqan!LN=P%>=2X`FB;Qp({<BqFB?cCk*aA(9FA9o7e z32-OHoe)<kKkh^We%wih?8$H^A7YpicRE~fr@@^Hcj}he)S7k(IlXbtV5-lAI~VT% z;m(dbGw!Uovkc+Y`G2VH9Jp#zFu8N%DxJrj2X|gv{g+=;VgX!r?8jZu;1|YSq_vG_ zG2Cr&8_e3ci{q}0y9DmCxJ%+Ljk}bB=~a^Z|MqvyT@H7J#*e$aiLQvdQfnK}D!8lT zu8O<bpnqkke%8QU6L+m)KkhoXo8hjDtIqkj>*21CyMe~&x*Oqcg1fOQAzcY_)7Hk_ z9Cs^RrT@5FDrbvP71b*M?lvtO?sm8#?)JDI?hd$PaCgMrSui^dy29PX;4NGS*B)@< zsz3e?A$`e}^S`U~zX{<+xJu-4V|h$)ySV8fOPsj?l>X!ParMdHFjTlV;nujv;f~-Q zg1am3KDfK#irTxoOX3~_PTal3vv=#k-52)&@$82yTY&EEKwLThyJi<?*Gjc<DDGjn zM@p930&tILM(Oq_++)Nz+VBtQzk59Hxwt3bo{oDW?kSRcl8kZ%q^M3+RLVF_8ETc3 z{^OpBdp7P_Ev+Fx$6(IGy%P6)+)HsUz`YpvLfnhmsKH#Kvh?@lGTbY0wfGNUxL4s` zk9#%lwYb*|{7n|_btd-)LwKVxZpM89_ZHmyaBs!E3-`7rgnPRr-hq4P*i?5*^d99@ zuzTAm?)|ur<351<Fz$o6L*nnMJwi30I(Y>5QCzhPv@MDA3EXFKpTvC{_o+b$_n9GE ziGTBh`+V!feG&H!+?T}pGHw%6`j7jn0ti3uYpsoI-U8e=aX-R+3-^88w{hQ<l+jxt zTzv&3{$>jpI{&*L<9;swPjElQ{Y;U|htiI?O8;@q`QQB-ulc@xgSQ&)w|G<IeuwvO z-0yLJ$Nd5K7u+9lf0nGDhN;B!EADTD61ach{R{U`+`n-}{7rS-e{^nB-5Uo_^uPVK zc;n$siZ?#qBzP0xO{AE;33bEX!~_1;z?%$j$|j1Z&i{B*7$gdya;GxLY4GO9n-*_Y zyy@`%4{v(B86`{I2nl$m7Hm>x7N@=f!kZ0m9=zG{=E9o;Z_YN$fag|*%n?uB|KQ0M zpqUrITMBPMyvDx}o>G3ig$;gDJahS@85YMg=YK`Dq(Lr?w*uZWc+24}s~Qk~DYtxU z<E@Cd3f@Y1D-WVlPR{?De|0<yZw<U{@YclJ5N|EK_3+jf<T`lk4(Ez<eY_3YHso<5 zyv^}8##5S)x5-dwv)0Dj0&gpcZfSbkdO(Y}E#6Le+X-NMyd4Z?N0lypN=WtsZx_5V z13#XP*TZx0LczFr9-e5v=eN0dTKokN;bnL+o;vg6B?gnWh8oo@a??W}Z%@1eZ$$hh zUWHfd=JguxinqH&%`K2(*h5jN5_{q8C(*s}_QBh?^_%Gacn9GffT!>OP2Gd>4jCJH z7~b=EhvVIVcLd&fct_%$gm)C)u~O)0ykiC_c*o(L&^+QDubrxy6I&baWV|!*PQg13 z?^IQ^{r)KY=>~Hq-r0Df{}RPJ2k+bgQi`6BcNyLVc<QzX??M^%E`X=>AMes;R6mOR za=feYt`Pf5ysKKjiC%+u9p1HV1A;MEK#J!^yod2_!n+&qW;_vm?-qgG+NR*$j&~>C z9Rmi5>RTYZd+_cT&%Jo}DUAM%9>7z|kEiZ`nr85f_$%ilcuz?5Q5n@PfcLmTK8dFU zAMYu=r<GF}#Ph6B$rhkEU%>kf??t>1@m|7v1Mg+LCQ<a?8`XcweGN~GzmU9%_a5F` zc<)H`?V&1aFE9)EzC=H0J$N7CeS`Ng-WPbE;C+Vo=>ROq&rRZ&cwe=)l>6E+H2VJ| z-gg529`A?IbTy-&@P5Hl8-d~Zb;$l5e@eVR@EZaD6Mr1MzwrLS`&(fo1^-_|_PF@t zsp|f}O?3Rxmi!6vCu#invKRR3T|gcu#h)C1vH?;UjQ;!J&xk)2{<Qd0OGy6sE4lJG z9sczAGqe?368xF)XT|?N;hz~_4*!Gius<9A91@zn&BC7(U*G%~hIt6q#-A7e9{l<6 z3;g-<H^g56e<l0{@t4M52!C<>h4B}|Uj%<q-NRrpeKkR8atZvU@J0OFXxqP9jb-qc z#a{t`IsE0@>UvaBxdKwg%J{3}uOe-)s%Vu{zXjm0f!}nyra0G9QN6b7;IEIrF8+Gj zsr^Ix?{9>^BmTzto8yc4D`wdX{LKu{7WmuYZ;8JR{#N+v<gY@SZQG%W+bdf!m|ei% z3BQBCGrohr3%(`MF*-$kTkO`xckz|x<9mi#-~Tj^_#u9ZAK@qXu})XuuCk>c{0zS* z47u_2hoU9^S@;$HVfZ!vKKLW}d*bhkzq@1&>A$bf|M+tF_xB#+*%$vn{Qd9`z~8@Z zRgHQz4#GbK|KNc~m=874!|_kRKLY<~{39DD{!s%Y{xSH+;j8VS#Y^t-t&M*o{;BvU z;mccqf3j*xiZ&zuY4~Rd{`8^TGg}P)+4$GvpM!rX{<-)U;Gd^LY60~X5dMYu7vo>l z`c2VG48vvkSK?nTDN6qh;41uUq=BoA=UV*hT3e5*$_@B8;@^gU6TWD^fAdiER+D=> z{+;-u|N1k%3tt`n2ZZ?d5{!?3AN~jU_v62e{{a4z_z&VM*~fpV#p6GW{}}!w_)7T| zgZ_*j$A3Z->MBp+KZpM`{<HYc3~Cvk=kZ@Kxi8|Y!~Xz-{|f$F_^;x>j^9*&ZR}ca zG>`aij;5%`xAB|%pZD<J9q<TD>3`$F{}BHt{EzUz#QzxoGyG2kFslFf>ZL%O=Kjb3 z3jbU2e2xFjfEoWgeDyb9{O`3>_3&eB<Nu8R7yd8!jmZCs|2zI~Dm41l`a=~m9{j%v z#>M}KU>pL`{}$PH9{jrn6R5pFH4{ugFgL-31Tzv$L@=2+CzermgkVyGoSa~4f++}) z=#<Uagb1c;0b)->Fg?Mv1k-6}+nXw+cL9Q#2$Z%H{2#&01X}+IW+j+yKqUaR5s0C# zfC%(1K+x#_QUvo7EF}K<2<9hPkYE9oKGu8}CRm(c5dy9M1d9=9<sTpkmJl9u{tuQW zSealMg5?R8mC$knW`Y$6RuZSy|CWbf6@oPhRwY<nqNBG!1m;fwY8GoX(I$mp9fH>g z)+IQIU_An#V0{9m-UJ&EY)G&v!A64Im_Wqe%#L6)f-MO)C)lE`ZhBBJ0><8kK<PZe zwglS|Y_CK5bKj9*48cwWyAbR=$Z8D&i@+hU2Yv#Vz#E$(AlRLtLy!@K1PMXZ00>0? z^&GYS6QriAoS-7;5flQJEkHF{wg73kCfJogy%e++33eOUlC=lHo&@_4DE$|Yx&I0F zCD>m)`>Bv(K7ioB);2vHOmGvyAp~a<97=E;!C?eP6C6%(6u}V$M{2w<3~Yj92uAgv z;CO<Q2~Hq5i9injEnctiDFmkxjGq4qPA51+PgD1H7Qv+iXA@jNa1OzF1m~)9rY?ce z|KLIbc?$^SPXK};kSidy=9dv%LvT64l}#>z-U0}&BDh+!>8`FNxSrs;K^1}<2yPry zloh*~;8B8G2<|4hl|TtT!EG|$K0p%ONpP2Xlx_*`A$W-3UV{4x?$gs$>;C}3gM%#L z|1ZJAChL(wh~P1T=LjArcv4_`7a(|wK;8m^r%l$g%FuP6CwPhA1%ekfm7eL#1g{dP z^Z!sYgRIx-G)nab!LI~w5`01M7Qu%EZxg&n@J^FOFslCqBL2$xfvNiuff9Uzk7ZO_ zfVBNtTaG}V|0Vh*!B+&|6MRkZEx|VmY#Jj_uK<$!1Hn%OTKvWHGr=z{p`rba&UggB z6Eq^P#Gl|#g1<CIJ^npvcm733{t(a^myQ;HU8^%boyqA;pcpz6(wT(LM0Aw$56aP* zl#bdFl&4+Q&J=W}r86ZRCHr*LULeNQbfy_bHa4B<Omqf1tI(N|&H{91qBA=kIsbQN zrZcOg>-!(c(z^hiIq1wwXHGhE3uZ3EHjgrN-T5SC{`OJq1?en7XCXR^(2>g@ja-zD zQhqv%HEas6?8TL#CbA@*<>)L$XBqJ?-D2n{{WtdVbXKIZf=*XiE74hb01%#4>1;-4 zH9AV?>8ws?4KdbKFkNeHIvdbght7HuGPghqzrLxpA)QU=Y(!_{K{)}d!@uF#oX&Q1 zwxF{$oh>CQ`md{)%m2={hI4y5JJZ=gkUP@ZspT=zUFcYJ%;A5uio->3({VZYPdXkW z$I|i1r=$~*_;fl%+tLXM$IyxBd`>5(b1j{O&T(|QboQZ>(ix$X(J7{#v-v{ibb569 zjXmv5|JROmN(ohTYVDLLon7hdMQ1lUdkA3nK^C1oP43>x(D;4n971P5ItMl$I{VW( zU?_T!fgRjdp>rsmBk3F_;KS)0F=$CVN6|S(jH6BBv8^G_<LR6s#tC#zq;sm+C(${X z&M9N_oF<{uo6*!glg`C-&Z2WZowMnjD}Zx!mg@Yx7EI>?Iu{!Iq9KM$=v+bPQc1jw z&gFyL#-MX0ovS5u)xb~Zn%1Us9i5lxTu<j=Iyca{kIs#BZl`k-om=SKtg7hsyp_&v z0|sHfgU;P_?xb_q*#3Ly+&k=%>i5%mfX+jb_@LqZZ)*tP5jszZ@u-ZC$@q9PO3IUT zo}u%UIG=8vVn0jg1v<~sd4AwjrPah=Y&~>drt<-vSLnP+=T*sSe!pI)^V%SV&KpDa zTXfzNSo3Xvht9h?BwtZF?<;=Y)rWLGq4SY|Ki04&q&~Gz>3pU<8u<lbqj+Bu{+rHM zbbh7tHJu*?`3;?K>3lEtcbZ%={LtETerkE>{4AJX)T5eUqyK-4=XV+Zpws+f{xx6_ z%s&d;u!YUfIE3TsXgim1Ji=)S$0wYEa00?f2`40+NToFV;lzZKjKvmCX4ocg{e)8r zIfPS-F;$x@_A~}F9pUVR(-Y22I0NBKgfk9cf;8(H&O$gF;jAjLU1Z(K9E5WVa!$gz z2Dyau5Y9(9ukr{|F!Q%I;ev#l5H3WxGU396OA{_axCG&%g#QubVuLD#i)#io@g)hD z(vNECmLXi8a9K%NZs3>46$n=(TuD3is;)w~F5#+#YZ0zSxCY_sgDk=|hwQbLtxBw8 z)@nV%4GGsb{ta3%;YP-@vGHt5xJ_ddZbrDd7+Vl-CB~L5M(nK(^S1K19pR2*Y%k*u zdIi+1cOu-GaF@ZFGzOtX_%fkQcn+aMcp#xmSQC1L8KF-Y2~R-SAq*Q^rR#Nw2@_*? z3Ded#o}92C>`D4y3pkZf>AyIuY3CFn4Mzy~CES%zlt0`}qFVn6_axk#a4(f*zB7dT zw2y@Q33z`Qhx9)@i0~xBg9(ozJcRHF0USzr7~$b<uIcm0#vnY3@Mz7iXQ%X^@HoN~ z2#?n(%5&n7eX?LqA(Y)AY-V>Fp%H)0b0*<gZ3^Mp%8-c=o=bQa;dz8N5S~wX4dDfZ zmlIw{cnRS}gcr9+)90mxmyPYYf>3Eb;gtq+^<WBw*EV3n>r{#|t~Zz)<?$xMTM2Jg zPQ`GGiQYzd2jT6lUyyey20fR%2_GlChwu@?dkG&9z<q@Gw}56Oe30<Jgbxj6J*;dY zAyneu{1857JhCZ-PZB;y_!OZQf5K-7pVhQF_jy94`GhYF{DdzVo>z!wCw!Ht0sN2f zE5g?ZKO%gc@Lj?;2;U}rlklw;Kh*F$$}?y4*}X^jflT3j!}+0v)bt5ICj7K{B>cog zKO_8t@bdwcM87oAuL*x4{D$yH!fy$`7ZR=igg+>lo|n>pLM8q!72&Uhe~R-r!rux1 z&>{UP{6(nt1q1#^8__sKQxc6!G%?Y?i6&4C(RebBZ!i<8MCG5T^@u$Q(WFF^6KVZ# zLPS%vNU<TBfoLkCX^Ezmlxc>d)3r9y^rp&;M6(dhL^Lyzh=1E{+kZ5xFwCa1v}X>Y z<%s4anx9DYUv)S)(L6-+5e@0T#xFp$7}0`6ix4ejsxREK3HhQeInjTJmL^)9Xi4!e zVJa@w0>rtDj7tAaba|o;h*lt4T|z4otwgj6(aJ-ZRf$&96?Io@5Uoul`mg$5s|6FS zL$n^zx(Y1FW+Ym_wTU()+MGz~KhefSn-Xm@1lw$=;ub_(32aNlyfu;9BNSfuupRL( zMB5WRN3;XcX+%2`?Mt*1QAV^gQ9#rH9HKEoWf9q$L3oH<B5&X!@`vo^6(A%^h$5m` zsrTq~x<q5^f0PsLNz@~%iTXq(k$NdGeO5#E2+{6DyAtg-AZ(&UYCC9QM56!7xi^uB zzwUNFqN9oSCpw(y0HQ;P4wT%3hz@RZHK)owR6>Uhd1PORjuih<rnh5=P9T!=zsfpJ zqC;CibRyA7M5hp)JZP9m?PZ4HbfRmB&LBFU=uAmJi|8DpQT-R^xiX$N)XxP(7ZP1Y zbP>@d61}(?8vv0y{~P|xiLN5Lg6PV24;^B-+TgDxdYI@sqC1GLC%TpB2BMpZZX~)% z<J*r<&G8nKrC$MvZa1DgiS8r1i|C%lLv(lRmzMNf0MY$K4-q{;^xz;W;Qy*Z`kVQP zcpfEslISs_Cx{*&L=EOCqGts5wDCNv2=xj)PdpdV3q-#Wy-4&S(Mv?{61`0H22rE` z|7)^{)GL4(uMxf8@)))^iQX1|y$cYv;y+l}_lVvXzz2#%^L#|~9nr@`UlM&n^f}R| zM4z=$!~BJQR7>;~(Kke2tB{`iw?k~-6aCaY68%7=UJzQ0cz!1Oh3Hr9)VaSCL-Ysn zghYQ5k3;kq(LY3g4|0ihtBNEZmv}tle{0%iLE`a=Cm2*|4C0B1CncU(F{qSDS}Nkn zh?VRUPu_Y2JY}0pJQeYb#8VSbCw{dB(A)vHs}xT!k2B~*6`F~7R^q1IEW|Sp{02W8 z@$80q4&pgApq+I*H}P7;^AImbJTLL$#Pbm^L_9z7f(?>*fl)#=qlJkVBVL4f(U#Lx z`Hy~7m?b1}N#bRQmm*$zY^3PFp3CyYD++i8!?P0cstulaW#UzaI9DTHLy)VtNU_&! z0mN$)Z%n+7IM*fKK#cW-N9(_MHk5HAleGzPBjcMAZ%Mov@fO6J4=NhWR>WI3Swgi9 z@wTG?{h4l0yaVx0!n|XP6!6Z5VGQvn#1`>|#5VE%#13(v*d>l6%Om!QJH&xXk<Uf^ zVarAw6Q{(9dQ_iC*Dz<qd5aN$&-e@C-H1zZR>UL3wWie{`mP4KJFyac;ysA>9AJp| zCf-;4vIVG*V?Pzu=?4&>Kztza(ZmN4A4YsIv1opLNRu^$Je>GQ;W?u96Cb4v!4MxK zA*KJs#}OYtXh1wC5~~wF@kzud6Q4>vdIdy$S`$(~s<$(U&m%sQ_-x{{hWzIcpQ|}F z^87YRd_n6czKHk{;){uICccFDdg4oouOhyT_=*Nhe7UJ|WowA@YT|2&uTdV&Ea(5x z&+Z0+-6-Qt26GGXeZ;pC-${HMu^j$|f%p!Cxr_K7nbh5b&WZ0e(ff%XB37>hf-$>* z>hr(E59<`QCXW)oLi`x<v&4@RKSlgRlSTYwo2y3ksPv!snKqI5IpP<IpO?@JEyje@ z`Jeb@<y0xJ62D9QKjOEDUn71)qOTk9n>x2S?Z;{(kmx&YRP6VN-zWZv_ygh(wSRQ= zJ~lj`lFUQ=8ObEXpA-K@`~~rk#9tDBL;RJ3sb*vgQ0;w7{5`Q8{zut<Pz@;9PsG0y z|4jTV@h`2@gnl!|AB{o$=O9Y_H;J6><9|s0MKZ1eB;#m6L!0O=fMk3LO+Ydc$%O3` zbce~r?IX#gB-4<n^FPVtBx)B>y(LqUOeIc?XX@4v=d>iVkxWN2Gs*NMGm^|O;3t`h zME`D@DziwI-2Vu_JkCxs2gzJw>s^3kZj~ZyMKUkR+9dOlEJZRu$zp<BfMh`ub>=5o z$RHOX8B6~K`5%(SNtE~-*pkLrnq(D{Wk^;eS(apZ!7tZF#Wwn%tfbP_;;gI;-Po!m ztC6fhvU(eB{3L6V=#zhoBw2@KE0T3dHX~V&WJBRm`cJZfq1uRK6Y*?pvNmlEHLALs zlWbw^Elt+eBo@gwBs-F9OR~K%Y}ZD`-k~KS*@<KqlAT)ylRl=6HY15m;*fYG?l4A3 z0@7yjJ9IZ72}#}}iAXLZiAjziNl5l2>5^0=DM?S*G8uD4rKZ^@DM^a|kGUq<O^_ob zySCsKL$bU0_h_9YdyyPSvNy?oBue~A_Eocx4?-UIm+=6DKZxW|67>o|a>&@o!^C-b zn@e&e$?+sg|4ELP@fechNRDl6`O&XABqxxZO>!cMI_i_0L~=5T5q~|?(@4%FIi2JT zeKHrn;AIO?t8os=#U$sFTtIRj$@!{^nG4B<Bo_^PB=-^$IsfY_my<j}as|n~Bv+E$ zL~<3$^(0r5T-#8Qv|B*i=XGYLHz-=wxzc}i<B{A<atFyRB)5^=+QJN2?*b%ulH5&V z{sf@N)r)|E-AD2W$^9e`3A5S)NVNWw{8t`_^gnr2Jdervcr&UW#rY)3t0Yg6JTIZA zWqgL@S(4{kj6uFYqST(`MH!X;n`T}ynEy%WH5p%*@ePtUTbRMTO?NJmcj%5o@-E5O zB=3=YLGnJyM<j9)l#FfxBp;J}O7e*&Q9XY~GS=mf6#7!euS}J1NPZ>xmgFar??}|0 zKZ&{v64;MJY(J|MHLqVx^fwYE_$0qe)*r_I7s)>)e=B_Z{ckwCW)ZsM(w&y>zv)g! zcRaf4!iVnobSD_#=}ts<61o!)c_tmAnw;*Gk~KvOpbOop=}t9-QHOsMosRBobf>2~ zGu;{J&O~>{p{V&KRZS}WZ+__NEr9Oq@;Ha_8~yLjO?L^p^Uz&{?!1DTkM4qW=Ql`w z{-?W;L>F%TdWpJ=igPg;|0Cn#CbT5oHRvuycO|+@(_L1g%b4hLbXRC>x@s>lPW3Ke z?3L-RLU%RETDA4lUA>JO%$ju9qN^@^=&nsyo&QZp4*%Wthddk7y^rojbPuGvG2NK% zCUhOTo6_B$?q+nip}RTVEv4cXhG#3fTer6HY^ylc+HTh>58WN;j-k6F-JR*~)J7Fp zb+wDhvP_n(jP`5Ub?JI^L%KfQj^O1LK=|b`8UiPD3%cFLLpPN%qbs{WH#dZRg%^Ih zCEY#fR&;k2uzCfcJ7SQs9dwoW8~mPhMew_O(cOE<zc1bWg+X2cRCO)>;yj4%Idl)E zdo0~U=pI2=UIe-#{@ue{@|KP6k&<#0-J|Iq({^I|IgairbdMLn33N{q<HP}m?#Tvu zD%~^ao+g0Po6-2sq^p&`@z6cn_|K(#E#33zUPkwPx);;EKyojnYxIAV<Pr(V7NAHj zr+XFME9mN*f5UloTbHirzd~L|SKaN<y`Jt3bZ-({^k0A0H=C4O>E2EEHoAAxy`AnI zEvJdzrHs*j)D}SZUK72a?$>l5p!+7>2kAad_aVBE(-r;iK1}x!)8V6ZAJaUob}61G z=&JKS-KSJYs?dFg?n`u^75{T|U!beDhBhirrT+~r-IwXUDxOzNmH*LwovzY<<9TDq zev9shf`41aW(#<i?)!A#Yr(?#!4Uo<x}VYgSb0>FpUC*BVg8)1XnyyLHifPhe}R2N z+UW4NbpN6I9o=8)eot5Kf4V;i;Kw#gimEMuuF?PQZ*>2p`+EzZYxKYSm%v2-+Z9Ov zMLHhoIHdnpp;WyKsP@{AI31sKB2uOQq-r}b{)tH^X&*@^9r903Iz8zWq*IfsjiC7< zRp)<Fvjr%78q#SE)pTt-=?tW^k<LguGwDnwchJc!20yF8i~gr`kj_myC+S=*z`*7q zomYGGOy?(S8e4$$YSINsQ__V<*Ct(<bS2V7NEatn;@|v`ivFki3W#(G(q&1PBwbpf zOSL^T{G`jYHtBMtE08X)it5!H6@STEnRFG>HAq(_Rl9(suik>iUQ=LesgRDYL%Kcb zx}=+tu1C5dsT}^(4O)QUHzJkuf4Z@$yQwmC51W&2L%Id&R-|(H*Z!>sRfJ?)(nkCT zpYIN&&Cz{FQj2sa(p^Y*ZV8)_bj*-#ld5Assne#DdZhjUAfXPal6}(9U}AYpNcGK+ z@n@umk>;ekllDj}Ql<Z-`utB?YG&oENk>Ta&5yu#YonxlknSg*JxTW>-IsK4(tQTG zgZ4=GCp}1z2aq1v80tsOQO^JAA*4$D6<)8~;iPAf9zl8%>5-(zkRB!JM-Sy5ODeLT z9%tB2AT`Rb`A?RtQ%KD_LV6nM=~89jIg|84(z8g<BR!k+oR&@6)3-pR=L?U%{E^T_ zq?eOkOnND)5`WYAWvwBYD@e8elU_B1xrX!|(rZcYC%umJHqz@!ZzeV8|MW&uwGj;7 zP)Khfy;VHzy4_BCck@Vkhm3cU4xRr~5&u+)Kk0ocORwq!q)&?TLDGjvA0z!Q=_BHK zSi{tZ@~EDIN`IX6iJ=)iMfxJ?)1=RlJ|l_G4x;iXZwKiMrs7MauaUk?`fB4LePyW1 z{|x4J(l;enZvmulkt*dMFq6JZ`WNYYq~DXiPx>Y42c(~oen|QW=|`mc=4XiC=zsdT za;mv}p$V1!73tTc-;p-@|Lq{FMM|qbkp4od#Gh2QgH(yX>G@aj|3>-;>F<L+CGpP| zM*25dE9w7`{fkVLKO2W^?0*83jYl@VN)d9h3CWb^lT9R}x&O(O{*z6nV9J<Wcalv> zb_y9}+mlU2wj9~iWOI^DLnf~<*|cQSk<CCh{h&{>8OdhSkGk&6WU~pg+5*VT`9D+o zFa9}{p+a+!ElM^w*#czqkj+OnZyPem`3-VGvPH-iB2%|O!x-UNjBH7=|B#uJf3`%+ zAkn4Bl;)GEy`W7eTeh{ymM2?}Yz4Bl$yOv=gKQ<TRmoN+TV=Qw*=l5~Ylil>AXEC^ z{E*2Opq=ZGsn-F+zdqTfWE+reM7E($*I64&?j{Dg8QC^uo0Dxxw#5KRwiTH<|Bv>+ zE!mL%XFHJXO12|emux38muzP;OZaz@ag3>A%cB;5u|2Yg%qQ!RnZv*ObhP*jM(Mv8 ziCMsutR&0GMDVj*qUv3s0gx4~p+>bn6<ICD$iPpw8`&XbyOZrlwg;Iy@RRK+<6fr9 zKJvKlP}crr2az2>CgR_$bGy_kS8V}O{ZO)F$qpksicFpV$&Mg9a)31CY6~Dc#$+8w zb`sg~WG9lH&^iYrnbLogcq-W|WT%ncO?EojRb*$7T}*Z+*?DAVk)1=P5C1AfEr`+o z?0m8d8!9q$|DRpdV#KNRpX^ey%gHVqs(1yN*8kQ?b~V{8WY>`0NOmpR^-|@!p_Chj z?3>7LR*!mpZY2}7&u$~rmp_tzX9FM`J^z#4L-rWiy<`uQ-ADGI0PdIZftF3|hsf0V zUrj`+kjY+<Y5gaAoa{NWC&-=_{F7u)wMeNe`ky^JHpBB|FOa<?cys>GULMMNmFy3) z|B-!4_8QrHWUmYO4YIe%-XwcV`Z2q6_72&*qa~zOviHe8Ap1z#P;Uxid`$L<<PKKs zGqP{VJ}3K%><g*#<tUX}w6DeajbZqX>=&}{$$ldHf$Yaou&(=a%TFfypZ!KQB>sx< zPxA4}{vsbonE#gXAJtxNy2{5@&Rn*Ge7r#ka@j2M3CSlXpNM=CaxMOnJ}LQRdUkCy z`4mIBP~1j76}?}`r>3_U`84F`kxxs$9r<+RE0Rx7zA*U=<g<~_NItW)F%!9b`h)L4 zK8yH`{^zrk&r3cB`P}4llFy}!>K^79>R~?e1<B_pUqJV%zEr0Q+d?gjd=c`+$<_Iv zd@<!zhB^P|OOP)|z9jiF<V%q+-DV9&a;^W8wY-cgv{CYv$k!%cnS6EfRg_aPuS&jJ z3oxEF$k#OXT5X@?>yU3szApI&<m*Y|`hsbj-;jJ`@{QUo`7A{I+izXI8TnS^o0AWT zf3EI=1i3Z&HiOk5-`4oIC*PBN2lAYJM{<vRCvuy7XL6<dk~@Z6?FA}bueQ>Ea#uMu zrup~(F?m29l6MAvfi>>}ZT|^*DxPkeCFGgm?2%XGYC8~2L0)Q@_SEDf<hx09*EU4H zJNX_hgW=hW{AlvM$qymlhx`EYeaZJT`27c*<Od4XLF5OI&2T9B5fVDA@sl5Jn2#hs zN~h~}IEMT*@?*(QAU{rp)Uv2|0ZBZO{ABWzbcza{LavrV5o(6h$<HP~gZ#{apZu($ zlyk_>RgaqUeDV*;FCc%2{6g~E$S)$lhWui3CHUmB1>~0+{N?0I`N^*^6|W+{x{Vso zwd6OEUq^le`Sm&^70LDe5BbgHx3qX+yVdaDPJSP`YzO(B<oA%@MSizN>YndaV6mH# z{C*i9Ab)U(@W13QlRr%UJozK!Pm(`M{<ze7tj#5VLgDqgJw^Tux!Mkl=UMXS^rK*; z$_wNo{;KXv2Kfs4+vKm3zfS%?m7=1rwYlVPkgK<V22B1|Yp79S-XVXN{C%<CYeVE8 zw1zl8qBjNk$K=0}e?tBp`KRPxk$*<6&iv$`w>=10Zvo_AlYdLD#eazHd-9*je<1&H zDC?&o`xo+G^`j#Ho!)rlf6!}M{gYfYKmTip@SoPEHx500_@}4zza^nJKD~+QO+arV zdJ_(qO>`1^lQm#^lN!(DL%CDZo0A^&rWZ`J1vL6Ut=QAFFnZGs;b)*X3%wcXDcPqt z(@;q52u%rkv(lSgjM>_Xf}F!tpNpP4@Y9=HM!f~ln~&bY^ya6h^`G8?^tAG~%z|G; zMzsY<iT}_$iQeM$#?V`W-s%!vlHOAER;0Hyz2)es7Xk4vYqCWAds_TWbR~K#(_59^ z&?|tN&T6LfHRx?dZ%uj|(p!t(y7bl-+I3n6>1RE9BK|5-?tex<rj6)rOi#qW{dMTc z6_8qr&FSq(Zwq?c(c6;V*7UY&TNVCo=xy8fphuOmy@Yl!z3n8AJIkoI0I@B4`_i-N z74#f>F+G=Fhn`0-5P;u|19E!m{7<hDf9<4~(97tF_^XiqSD^HAdP?@`^)y&ds-(9U zy^7wh60K#_uK@IRqo<Ug-tKJ{y*+ih{*2^}ptp~i*M9U4r?)@7gXtY0R7(HFIH*me zcZl&ED*nTaU$%qZk@SwEcND#2Bzm-o9@`qtHb+m1KfM#^ov599E+^A_jNU2quBF$& z&JoyY^iHRzl%L)i8n5iL=$$?EcrLw5>77UK0zsZ{W^^IFi^U_a0D3N$w2AaCqjwd( z%LQ-+J#+paXk+hc30-6G*U`I^-u3iur*{LrTj(kAr*{**oAt*!`cd9W@3uBkjS6;$ z>FO?e_lf6jdiR*<y(W4;y@%;NK<^=XqW^k*{;QDMeniqAZF3tZy~pXjO797JFVK5Z zqEFF#R*a|VJ<}$dbhQi6dtRk$!WZeiBu;hyr}xTG=zsJ+p!XWRcj&!NPbojWH(CI_ zx8(6{#iOa-6^{~sdTJvu{txMWPOs7bPbH*of#{9C1<?Df1=IV2-gorAr1uTIujqZ< zGMMPM>QUGFo}N;EdOw)xPxO9nZR7csezVTM(chNd@AT)P_XqvS>HSGx2|K;NWc-`n zKlH~@Y<=Cc^7qXy&>xTfMB*7=#t8(ew*dMRH%{?SLVr^FY8Pmm6xbB>XQV%+0H8k| z{i*1y|K^MS)EcSmY1<U~(+hG26%ro$Gtr+zoDFPd`m>5Xi;2!gU+n_wQRC-qZTfRH z2K~7W^Stzzr#~P4h3U^Pp#@}Ikp5WuPk#~mOVMAH{^In_`M<Bv|B|u<{UsYi{ix>E zD**jv=r3zL%MC?Wpuax-73r@*e<eY#On+4|^cFyWHTtWMJ&QF3uonGw=qvp<vsjn@ zdK%e&6Z#v_-&nxv3W)wjEtvi$^f#x!sW>-lonmi6e=BKwOM~2+{x$=Egtnu9H2v-A z_vr6He+>N{6+rRJ7SLCJ0-(Q(VX)}O^lkc{U>q6Uwom##{SJM#5g1QMKhlrpv!kET z@6yjC*Zfxis$y=k`t%Q`U(nx^eo22f`W1bp`Sj}+(~R_Y9V(>spZ*^DEu+5|{e8u= zH+?PslCmHD1L*HRL~<Z~t^7l5htNNi{t@&KlPrDs7yC$|l~(}$tvH7MW%Q4we-{1Y z=$}Uac={*PSNA{kPo#g6W*%LEQ|O;MRPJ;^YVoIkX4@Y9v+0Z4_s^k!F8%Y`6#C~Y zLs!3$zEXSo7tvQ6f$_`XUt=z(e>43n=-)v9O8QFe>0c$I(tlI#TKd<~SGPdQIqH`! zps)Wc0Q$E`;;r=W5aTvkmfKrA{X4~ZmwFTi`u9*YzhC##Z)EB|`ft&{pZ;_7AE2+~ zo&JOLAEN)T*s=w*uZsO<3s4s?^dF=DH2ufvKS}?IA?BwBw&XrTUu_5KM`b-vU!=bO z0{s^Sp!C0;9sO76zfS*E`magoe>$Xp*Od6vR~v!BzfJ!O`tQ*HKtk`zsQv^@|9yk` zkp3s)|A_v_Dt9#fQ~ICLHz$8x<xBeC(f_JN(*K(NH}t>NSsL>_eWU#SAL;*0|EB>n z{a=Pk{6;YY{og4jrr+qlI_J}Gwg4smVmI#s>RU(A{7gVG4u$Lvh0*_FJPM`!?R3=C ziV53Ciiz|bi%BS^5|T+NCZm{=VseTpbe8$%P+$_LruiSbsG`#t&vf!Qefuc(j1;2b z#Y_}U(b*_w7XK_1Y8OzY+tny$r%<v_F~`{cxhWQ+n1^EC)=x1Xg~)!Pwg8j9pfMJv zSX6ixF&?A;g}MJJmY~>`Vo8dvDVCyGhhk}p6(wsKie)L57hARfwN@((6<Ud6b&8cK zR;3W}Z&yaa%=y1qgJLZTrT=XY!nU^QXI+X7Db^F``YncH0~6hdVhf6mDK?|nghGkG zCQ&6eS9V)bt(E!{FooI+gl!v&kYZbkF%;WT>_oA>_;;Y#QD=?j?o6S@UoaMhPhnFi z&8Kh-r`it8w<{34soOEph@wvsQ)Cp0@N_9s1v7n8<R+`v`Y8%QmJ~Hb)l#*1iV=g^ zjpBHU-6;;I*n>hezu1#vFN%FA_HH=`xfJ_R97wUhFdxv8h<y;nAq|Y;;MPfTD8*p| zfQ01yUmQts429BvilavX>hV~L<A!RTKyeAhi4^BjoJ4Ut#mN-yFW@OUQB^#xO`$l0 z;%tgDDb5<DRe*DbIM1WFP)eUKqrU$aTb=(YE;ekJQd~oE8O4<pmkU5&{usbj6ju*1 zUrTW##dU(bp5lhaP*MGzxryTD)<ba%#jQF~Fch~_Jxp;2<-HVlQm#*N7v<y>cT;>q z(dhpR6iw)Hiu))U<oy&6QaqptHN!&`qWtX_Pfg?zibqZKF+s{+P&`5LEX9))Pd84A zrv{x+Jk#RE{~X2hlBH%r@gl|B6faTykK$#DR|WHm#_Ku0M)4-a>lANjPVIkdi02)O z4=LWIc%MRvf6G9jHU(pUL?Plo8vT^w7mCj)zNh${;wy?T8ZgC|ZHm}mQz+%9_@<?$ z_)bOj`lu~{;zx>~DMbHUavlAZvXSoJDE_ASo#Ic5KZbHe|Mgt{p&Xa;UzFpt%$mPc z8-cD{j!!uW<ph)yHBL%%{x9YH-}01`D!htL)+SO;LAe;^l$0}5LOFv(r=pyiQuMzx z`d>~*IlW%G(V{a7ekK{ss+O}*&O<pX<(!nWNoaP;IR?w#c*H4tM>)58Y(DF9Udn|j z=c8PJa!CBk1t}M5PZWddl#5WRjlksohjLZQ#VMDgT!L~b%Axarxisanl*_c>!AQA0 z<w{aoZ2^=k4)L!{xylf7H36(nxenzTlv?~L*P>io!^|g3xh|#B|CWt%1Ihy^H>9*F zH=^90a%0M^C^w<pTxd6?l=J^+$`+LR@UM7OZ(CDtL%E&U+v+~`XS#zpccio^ccN6X zPpQuTVvK3VvGES&2&GHerSvF6f%%jHWk-Wm?x~cKgks8MY=)Gwq|7LLl%oH-R-dvM zMoM}mqdxyr?n=22<!+RFihp+*_h?3ysJ;e!QHuU+PPH`%W<SdP2jr9oQl3qD5ascd z2U8wFd5FLcr951W!&IVh%Hxrg$54v?m!khBN_ngR^cFyQ0_ADqIg#=t%2Oy$9@Lc% zm7pndwa%wgo<Vu0dejY{WsGwuZ=^hz@(RlHC@-cwpHg;#(&)dM??r7c<t3DtQC_Oj zHPz)qv{zDILwS|*sJeO!puCpyddlktSrWa$Fx*6WJEhtJC~uMRR?6ENqXigPvjyBq zc{k-<13%?G0~qCfRLyV1{gnSuK0x_4<%5(;w<#Z@{4eE`ln+xrM)?TkqdHN~;&Dnj z{EyD-DM?ftL5rk(mhv^q=O|y4klF$$Uog>^C|{*~ner9gp7c-oKLybC>y&R&s`LK< zL;048zC-yn<-3$0Q@+<YDc`63kW%zt_xaHvm+}+JFDO41<Y$zh>yRMDskQ*hugn5| zL-{M^x0F9oen<HO<@ZA?`J+lVjZywg`ODDbZ<K#h{!S_4Z&pe8|B~_V7EJXosu`)q zp_+nfT&jtv{!KL@)p!b4jZdX+ep>Kgq?(v&QmRP?Au1*QRFe-d@;D_GR7&lsrlOj9 z2tO^=^i<Q0jh~?fP|ZZO0M-9d%}F&g)ofJi@`q~HvGKEubB@+YH5ZjS^Ha@DHO~M^ zHJ`GTe}2QiAk|V-3sL=tYGEoR`&5gxDO8KKhBz0eT9RrBm1sVx#-Li7YI&+<sFof0 zsg@f`T!Csus+F`ya;a9KI*4jjs(@-Wsx7Eir`nKe4XSmh)D}Rs7L`8vx6D-QQms!V z`ak%@s|{Las*R{NmBfvyHqqtud^e*~+kxTPl4=L4t*DgRQ*BMP%}{hZAyMc5)=9M^ zl})u1)flRssdmv|Jr_$qs-7JxuX&_$O|Gw(MHT8$?MW3<^{65$IrdkvL3XJ!s&v36 zJh_SXsYa*@s*0){;;aXFs$Hper`m1EW5i#t!(LQ-Q|(W+50!|&>S{lQm&Kt{=YOgL zhdc*UT|{*V)$vq^QXMG(rT<jw3W!R*0*E2{UmZ<#tVEA7{^OLPF(*)+O?4vG=~O3C zol12w)hTUMPf9VH^M7>))tN(+HTqwjLv=pYxlJO~c|-gcv^JI63#6-yscxpagz6fq zOR27;x{T@yNi<u4`94!!MRoNM+qG0TQe8)-PX1Kax12+L-qd=iZlSuH>Q<^dsBRPR z?J6X93-WlUjCU!gTC{tp9;CXL>VB>BiUWP`1WA)Y??~Er99~>f5OvrEY$w9;5o6 z>T#+MsGgvDjp|9N7pb12dXDO8Dt-A+^{i@mbdI9`mC^s|C8_%|mDYc%SE)q&O%~Pb zf_a1LZ86@YdP@_kxx7OqvR}Qc8dje7TSLGf%J>o0msB59eI}2e$oT0{S85la(*ORG z>MMEtno7?9)i=$fFn>2x_Xp}3sD7j#pXw*7zo~wv`b`pl5%8}j>vyU@#cy^2RqL;z z>i<yxi+WszsmIY-^}ngd8<dmK1k_VfPe?t9JWfPCu>!Zf)ss?BE`GHIw29PH7z65Q zsHYOZ)C!=prlp?FVC4Qs`)8zHgnB0Gd8z-8dUooWsb{60W$c#p-+!s+pq`6*&LQTx zsplCRtn{CHe(Hs&7ogTRKN_P#3!APMrCvh7Y73zL5B1^$D(WSvm!)1xLQ7LG(`F4u z>gA}HSC4uwD^ib8uSC5q^~%)iP_IJ02KA~9fO<6<S0CbEv(2Smi+Xempk9}H6YBM- zH>6(QVD$ZukZdI5#w``~rqo-AN4)}2>n(tKOX_W?x1!#<@ek^ntnH{H>g}n=P|Nwh z-jRA|>YYZxiftEzx2Sz;o7$z;mp@I2+8Z!a2h<_8yaEhWq>iPrgt|}NrOv2F^`APY z?r9Rek_B}o<U?CPt+xQ`U8zr{-i`VY>fNaiqTYjgU+O)n)v=#?ua=E^pP}CNqdtIo z|FLIxVEagYurhS@L#ajoYtjE&^uIpBa2`c{JoVAk$5M;<o0(FZ^M8E;^+^pI^@)b_ zWNM@Ty2@$P7gL{3eLnRW)aO#4Nqsi;S#63M6~j4(LG)krjrsx!U1%`+@4wWSP~Sj( zDfQLVmr-9yeL3~mmp`?f|25Aw)Ynm8+wzzRHu|rws-(n?)HhMzLVfelO5RF++u%`P zcQDfY3g1cnDfL~{uTkGk{kVkgp}v>;A?o|6?^m?yJM#ebgM%vK`7iY&)DO1+Nqm(0 zG4m)_XY~`*FH=8B{T%gE)Xz{qJ!pek^k4HoPyM3M8vU=8{%f#WRdxSE{i=*+7f_zp zso$V}pZZPecc|Y|S<0_=1R;D^9@R!L#P$L8htwZSNWTJ5EAekJ)Sodj4)y2MjhKHy z{SEb(Dyo>jqW-$I4OsSq`aA0HhZq|D|C9PB>R%-5=Qc$BEA{W<`E975KMd7h68f9^ zAMF`YMRo4TxQxKazZsc?k?|CAWPC;@6k`H|nTQb)|G_RfGASdX|06^CKQe`6P1$CN zJryHUGcr9R)6o21+vWQvezOaV%pi|54yF7bBil1FGb76~G7BS%F)}M7^D{CVBTDcY znVpe2G*$C08kvicc^H{nG00LgGA|=a{D&|LFtRWs3rhMzgAgN&C|hwZ+BzBe4<k!5 zvbZ?arZCjAYyl%nHy%coY5j~W$H@AOEYHYljI6-O%96OEj4QS2jI3geRZZ6aBjYT9 z9XFb;{f0St!pRqAX66m^hMAc;w$NfrmK@H8nVFfHnVFfH>DRPoe7*HoZB6xbpFYzg z*{4VHO-9jLm)4rJ)~2<VUP93h>3?fIT4VqI+uD%Uroz0DjH3UoO$_;HT3gZDjMf&k zwD=2bO9haP(At{Tw&L7IFRJ#wor&&1>quHV(mIINPPF!*wX=YCp|x9$r?u-)*6xi> zYfoDH2uz*@T6-I|eQ6y)Yd>2153)?kfel8o4yJX87>Ck2oR+kJk<ZByhV3X?39X}P zd9+%zY)NU;vJ}AFCRz?HcWCO<3Tbs346R@&6xGGhicLu=tsX6<|FpU?=CqXZE5JxS zC9R6qF|_*HsYs4hFhSBfp3a=KPQa-@3@2jMJ35K>7+NROo{Ls(d_?OMT6fVpmDUxs zPNQ`mt<!0pEsLH(>r7fh;x9|nI)~P|x)@dA`Lr&jbpfr5X<bO`qCv=P=MrOFra~&^ za^ty@*3Go8qII44ucmbkt!wpm^e(QabtA1Cnp~53lbWji-a_kk$-R}<ZH-f=cPLw} zb!VgMwC<+$EUkNJJx1$ZS`X8@kJf{<?x*#@@QRWpj{thVkI;Hl0rd27T2IkZtwfMd zDno~!7SA({ht_kn-lX+BtygHhK<g!mzBpKm*2^aGRa&ppdTl@@$Tv*%En4r<dRv_D z(2_s?k=1Jet@mktFvR&`Lqh9g+7r|Igw`*#KBe^yt<PwENlPF8X?-zRj@DPSzE&i9 zBj3{cftEV_(~`gc8QJ5Hw0@%Xv&oe{*!q>02z%={TEEl!i`E~sR2R^NsXG52Olkc~ zyB7KXXpci%e_YjC?Qusi?eS?(NPB`2hPG-1y2AD(w5Oy!sboziqY{7GQz(qUXir6Z z7TVCBp7zwVrxn07`t#79ZU{L8?U`uL*dz*UX4?NZnAVHZo|X0-v}cp(>?$-;%$$u) zdv4m>(w>L*TD0e-y)5ndXfH~8e%d1V?FDErICk#B^_2D^hG8+<OVM7O_7ZyIDymw5 z+4$15m(d|r)pE2~r@cJw6=|<91Y3!=(tO%08|GDMYw<T!a{h0R64;tUxogv2U!3d6 zxUP)rnXC<HZ$f)Rac(4|5`Pojl(rIl+M{W!!+#T^y#?*9#J{B=Po=#z?fT`<scPDM z>e}1UK7{u6w0EN|=l}MOlCl$RCH^&x_AazXlwUl%)83!<9<=wNy(jIV!++c8e_Nmb zY42xv4iM%8X&)@cL5<&3awzSH_F=T!v=66!6m2E`w2#y<*%$4jrGQrBq;1i51!mKB z21wc-Z6*7(eS-{Whs|1M#h7-Vc0yYOznuzRwE$Tnr`@AnsHygpw5zchj-h?LWT_TF z`#6I<fp#tXCpJ^#JlU*!3hm!%*SF&y+NaUJhW6>SFQ9z}?Q>|KDO9Qj&^~*FK}}T) zpsgMOXrJGNXkSSCQrfBo(7ss4OPY`xmGd&%m(#vd>?@iO?W<^C-Poq8YiWzBx38mp zJ?&d)-$45&$-2>G-K<j-?X40T(SMoVLHkZI?rM;<^?wCG`(D~_(Y}xNi?r{j{W$Fh zXe-U9T|Wgh*Zg7HkBaA!!F8tnn5pmy+RxB_QUFiUHoyGpPx7<0pRbX$pEGPPC_|Vf z<t5rL(|(=yE3{wLeuaO{@V_CjH-}Q*ru_-+cW8e|`(5Q%)xJmjecDF<Wp(j?B;&`1 z?Ni#{(f*9~m$W~Z&=>V+qF>SehPLRxIBCoIU+?96+CNFk4>JDPB+~ww_OG(XUkuN0 zL!5tL)k^gz*0i+$!kUow-&o_){s*fr`(K4r_3NhqWn1Gk=~&~*bbK?Nz!(!@iO5?M zV@-l3vTse=M0E|;6j)%%;oq7{hnlslsj+JDH@mi`!&(4qdaOCIX2AMCtQoOpt^rsx zHEf1+7A%o{OTPlbnjLG70aXpdlE(pSZmfB+=20P82x~s9vCjX(zaZ8^Sc_pTjJ1ea zWznIm#j%#eTB0Fo{8&phQ><mMw!&H#YaOiRuvWoZz7AonfVC3Vii0eym51zAu|)7K z)djFtZ$en3u-3vF(SM1qZKCU9jmBCJOQhafA8P|FCH|`H!RO7|7;6)(O|`%I%Pwm( zq1qg4OEI<>&cfOnYfr3guy(=P7E1)*+74@b1=Ck=M=YiMSUZiKyQ?^NlW}*fJ#<uO z?S*v^*4|i3?XmWeQCfhyQ~S&G0IUObR`WTx4#qkR>k#EsS%>PV<~#zsracntd#t0d zuERPS>tw7JR*u!i3a~6J^_~aI#&WRS!SxZRucj)hdVv@rR*Ds2#m18i7R6HHkEPmy zi56IWarR^^u|`?|)-hNoU>%EfoLWfb9^WLYQBCVdfRmb#tUd<oT=AcRbt={wVypN6 zSf{HLWt@q1HkQ)=#v_<>O!PdgtFX?;x)kdItcxUip^09MrBD9NqF9$<U4eDE0%-m# z8>1evR13hm#)R}!0M_+b&tTnvbuZS9SW4uvZo*Rfk97-{68~lisrh!SyRhz%sM7yI z6zguRdxoa>VLgU*Ki0!o4`4kcDO&$c&5tw;SgIEY|KnIs3GxXUpKSbMKi$|^&tkoW z^&Hk~SkGg<g!KZ}$jRT3zl`+?)`<QK$?Gz{VW{3T;J2|p#d-(p11$9jfb|~M`wh%s zKEzU*kM)u9e4+vBT78D~rI1StuyhN+`U>k?tgo^3FTZB#@06i;{R8$~SU+Ne^%K^A zSU+R^h4l;8@51>jmgv96{~^vl2MjX(8|$COgY~bj(EcCxMA+kCPl!D(wvv79@tUaE z<`JM_wkO7(0(%nd$*|@3-{#Y9tJW}-H6`{`V|%8?o(6kX>}j!Q#GVd&`UZeKgEBP# zOxW`Ev1cA)n`J<SJsbAy*mGhJwE&$vH}(eD^I$KJJumi>*z;j8j6Fa0g4helDyP;X z_CjLIC(2#~dogU$f4!H*vCa8kJd&~$_R`qPioJ|VuWz(1FMo8_3fQBtSHxZodnN2u z1h8_m3+z>!6g8>>R>xNDpmAcaiM=lNS`u0td!5E_a@Q08`r4_|H^kl^dn4>Eus6mY zjlBuB(SKc!=)W!Re{{85Vs9-}TQyYJ^&>#dwk`H{&01!~9k50D?H#dq8icTS!QKN~ z^xxhMd-p*}H3oan!4!LM?1!=U!9D?dUu;Jf+7Ekw?8C4Rz&;4uv;bAZ!2&o0`_RF1 z;yE1qXfck!J`($=+8zL~Ti6zMd*H;jhin%+$M&!TY+p!3{Poocv6b>;M@<TLf-SOd zr<z1<N?L$23hZOBMf~j&TY7<A4Uj^0tc>dLk3FLQ*e7CNk9`vMMc5}}pM^aJ`*iG6 z1bHg9QvTXj|I}J%i2uwX&)L}LW1oYqx`trRYYahN&>*pm{@WL0UyXeU_GJRNv;kvZ zj(sKe6%Af3s+PM-8LDQ{e`Q>YeO;3x{u{7w6+@l>v2T*`X34$9<lcsT5BBZYcVgdB z1B_qJ|0?V5#)*9|_5;FjANKtXOsGWs74jjI`v}ei*pFg=iv1Y&o7j(IzkvM&_OsYe zVn2<o+QHCr`X>PF=VXcJhe9u6zbej`uwTZ0We}3pUz5=5*!s<nso^c`53%3Ieop}E zCt&P%2f5hqi{Cs2sQNz=kMsgtw*c(Vuz$i9@wdOg{ucX7?5_p+)eze^jg9>sw))u@ z+q?o&%;x-W|BU?~_Al6fVE>B!JNAhF8-_oz{}z7p{@?xwTPy#_iq8LV#=#j6NB{A^ zTGUaEK>nSIGa=3_I1?!<XJVWwaVEi0f{!yP&SVN^KD{_oG*g_ZaAv>(XIh-8am?Yr z`J_41;b{Fg_!)6##+gY?4Iz&DeAZK(S#cJ@nGI(?oY`^a66YK^bLyp4&2!_-WAO8i z%`-pF0ys+caTZh|g<p7p!C4e%8Jxv%mc&_HU`sSGvCZM%S=#U~i?agGauQu$AxCOn z(O_1_+Z1ON+>LNn#d#EGHJl7*b(}qM*1*{cXB5sRIBVjpD^zRYtc_#zU)Q-F&W1Sa z<806{8~&PhW3%q5l3p(-?|+=pIGdS}stsog9Q7bza<|6W9%mZ~ZL9nWvt0wg*#T!a zoE>p?!PyB%^#YZs?}gHT?NM2~*EY@`jR$8hoTG8}#yJFMADsPh)ZrgzKLrpToC9zU zs@ZT3G@MHRP4rNlBXAC@r#Oc<&L)a;B+f_+z-i%haN0O7j)h}4Y?A00W>2O{|BWZW ziNzV>L<4^v#Yx1U8e|vee4HGoevMy9sE2b5PKl!r|2RYM|D9uT%=zCre!z@#BF^bJ zC*joJrjv2TH2gw%ini72rwyf?fpaF#IXGwGoUQ%(`k#w)-hiPta4x{P0p~)T%W>pE zz_}Pl{n;nZB`UXhBy=uovT&}zxfbV2oU3uJ5`ezHICTq9Zv}C#tNl3F>!p=_BhKA8 zH{slYb2HAZ0=uOF;M|6Dd&6&5xl<Ul{tNgXocqOjuZ;JZ+y`(T#(5A&E5GJZi|Y43 zIFI2@j`KLqH#kq=ypQuF&MP=i;XIG?G|sa)&nQB<(KtiD|2i+=yoB@OAX*zZ=Ka6( zD$ZLtui?Cb^ZM9Zc+>3VZJc*;-f74sUA2Q|it_=^7dRi{D7D8C{dYb#(ND$s8IFGW z-}uETPXvzAe;m~d<SKoO^C!-CIKSY0FQFfBe!|h>FP@(jSnx9a73Vh`IrclhkG+Mz zaL2{@8|Obk{)6*x^LbEfxrzjLoDnK_Jlu(K$H!HF`H8E~|F}y3^=HGKM6xEuHR9iV zGTkX~7r~tpcXr&VaA(2=cUs)3ai<xpDt9{E8E~Zq40hqp*pz`gv+&oe&x$LD{|2M# znXTc$odb71+&OXQ5wLUwckYHkJkkPG%KS220Cyo=E&d9oHomZ7TNHP7+{JL0!(AMA zY1}1nmsBvlHTe@zm9mT^E<4x`?((>`$ghCA67GsaDJv^m7;smWtknilnXZ953U^)H zHF4L*T}wrq6;;{IPr#?*u7|6XA9sBL)Se9oNZgHa>#xQpxCQQ}xQF15#@z*XGhFq~ z2X}L`g)MQn$K48d8(j4uVEo(SYUMYc9dLJS0JuBh?%eoIbXVNHaCZ~(-EsFY{ym2{ z_r~2HcOTq+2f4WW8RP-D2jLE#|J{R!V29$ih5Rtw!*P$oJwm2OD*lnOkFHa2Ta5?T z!tLPNxGt_U1XKE7|HIWS05`x*a6{Z^2o{^#Qrs?XHWbPm23f9$djW2Vdpd4~dlGIR z_gLXSrb)p)4)+9H(SNBH_r#&yoh;xnxb=NJrAbkvs&M2f0QU^sGjWyj<DS*PaL>V2 z%8z@lsrLLPB(Mu{Z^69?_bS|raWBJF;*Wc&!stpa$Cbl>{i#+wR~nwHaj(a%#lOa1 zi+f$;H(58}-h_Lja?001U^koSt+@B#-i9lJ@7^xap+^AsE?oWczfQ-!7xy9D`*0t? zy?=yLg&q`sIn1~Z<357>XtPSQF7D%awXi&a`vdNixbNUTh5I7z)40#cy3gP~t5ft< zeO~-8G)~-?aNodv8TVD(R|ZJj*Ko%Yf600i_buGFHB3vvySQKAzK8n}?)$hO80HU~ zBI^<NW8BYhKf(QU;1ojB0u<&;+;4D2{9P^ng85d)?{G&>{=)eq?mxIc;r=dwpK*V| z{k68$5{mG*#>SOK;QooLPyT}cyQu{CU%Ux$|HB&(?|*n&{PD(B=}q_d#@Dp<=fRs0 zZ&JnJO@ucwUM>DZzZ-g!;Z1=zx#X%!@TP1Q5*xgQ@TSI_3vU{{S@5RCn+b0^ycq-_ zEkI?>IFvOrp82FT*W8;GZ+5)dhN_yQSrKo}A?Mt9^Wcf#d-LMWHxydH;LZ8pTNrO8 zyhZSq##<Cmj{V+ZO$y!;cuO`V;mP^G`38B*;4N2U@Rl{m<z>18-im`Qh^IdPuZOn^ z-WqtK|K4hNt2bGOc@*B-cx&Q`_%~lJbv4$(TX$?WCH{CD;BAbzA>KyAJQCWZ@!*Zd zUlngNyhrdh$4l_Gz&jLgOT69jw!%|tkEdDy-ZpsK4i>`O9&Z=C9q@L-+i}Rhb3-mE z>imzV^uKZ9?SZ$SIQPWc3vVC1y@zu59YXGpcM#qI0v7#mKD~<YV7x<yvJS&*;~g$Y z(SPqqyrX4m9s$&aYBec%7G8j7<0-+%bMV~S(1gn4;|=}&rxyw=k})12@lw3=@iM%V z@w#{wUM`pduQ$YI{{GYJ;~kH84BoM(68#8Je@*aCz&i==!~uU};EfT^Q}E8jt6`_( zou)!kFy0xBA(*r9&c!<$@0`KvwSjk@#;a8>z`GIeLcA;SF2WPp_bxVUm*QQHci9l9 zv;e)9I{)Kcjdva1HF(!*nEu{fk9Wh^>)wQSFW${~ci`QEcblZ&Iz+DYUn;y4?{2)i zhC=r!TSxE1dl2vbdW!eJkl(!g@g6qFNAdo`dkpU#yvOmL!+S!qo|N$^Jaz2H)4u}a zjp#q#^LVdH^aZ>Z@m?1DrFxVKhxFfj4ew37*HuWdz0qLAehcqyeG$}^e;4luy!Y@v z#d{y`BRpvVD(l0ctdH?NQCa#*eunoo-sgB<;(am1ru5%nzQOxWR#YvZcH*h?zlo~z zKi*GxzvKOkr<5P>7ZcUuFHX^a?@yJhdH%+q9q%9fTC4xXpA_#u{0Z>?hd&<vIQSy| zrdmbfkFS~i3GpY!pGZw*FA}Z0fGNyZPXYMS0_vLmDe>!ZD*Wm3!Jig?YJ7A4AIX}o zVZfgOe<u79{jXQSpV>rbF~+R;L;CN}fxk5VocN34&xOAL{@nQUN+sqkkUt;3>IJ%N zMY|yW!uSgf_JY620D!+3{u21A5i}|I`Vj!%od5l0@K=;omc^Gw;4hEA!XU*Yu7tm` zz*ZTA@K?jX4S#j~qw&|k-vWP>VAjN6A78Zq{I&7d6{9)-%cs#_uOY$T0Dn{b4e>X| z-)LwTn+(~bC4Dn|eeyRYZHd1t{#N)q2w-dcZSc3l-&T>2Y<c?zFPI%=+zEeY{9Uxa z`8@l(;qQ;XJN`cSd*JUS$UTR6bPK@O`j4-AL`{N!0RCb42jU-se-Qq`gDi=T`~-l1 zIR26NO8+%Rr61K)g5SbF8NZF6;9K|szK!n*iBse8bqm1v8wUJN!-FsS??(a?{nxdn z_{ZXB_yvAfqDucwRu8`tXK6fr{9~GW^r+T74*z(3CHwd%4EawoS!3|8!aoK7Jp5Df z&%!?q{|x-ohpF(-9LhZ#{~UaM@;5x^<6nY*0sck!7b<Y`4OLg^;>O0m6#sJkA^rES zz`wF#Fqo^Q)NAl>#J?8*`r41Lp91i2&|tNloAA{;fBc)9TuIdWkAFM<m-u(!zm0z< z{xkS@;XjOjH~#&Cya)eY{QETFh@L!v{~-QD!+!in@Sntg6#uctkN-IS6MEf|+^2;3 zX@hwd{}ue_@L$A#9{+`5PC>qeuNr~Dzl#5c_+OK8<S79EP1)&N2Kf&DhxqRb>^&LZ z#~1N8S04W({Lduxv5cw(;D1`%P1*SJ6M+9k<H7%m&LsF><Nt^M4gOE~-{Sv(FO9$- z(SKq4(UAO%|0n)0_)7Nie>MK!@&9OS!~Yll-^Tt2-@N}<SMO9h>LSn?ht7m_#-%ep zo$(s5`1Q-5nvl*!%CEo^Hvl@5(wT;ih<|5tI#bb^g3gppbTHC^&eTKGY3a;NM~Oe3 z>FLZ!X9g9O>qBRzA!NO%5&zDtbY_<_qy?zT=g`|!warEJ9i6!er=~LxL0!hYbk3qP zAD#W^%ui<%It$QQfzE<-mZY-~oyF-aOlMIk!?XZJrO*H3*S`YOS&GiGbe0yUdjF&T zDX`LiaW3B!LuW-gYtmVX&Kh)9rn4HIRp_ibC{@6#tEqf?>5OWq#J?7u_35llXFWRW z&{17rfHe3G=xo^d>1;%2W0QWWFl<U^7doTqY(r-=I$P4&TmjUj-l9R$*-EBcH~yNI z&bD;6r?XwNgm`wKvlAU9{@SS+^dkVBUFqyeXE)*5T}F8YBs-F+^n%XbboQYm;@^bS zTKm)S=^Q}ka5@LlIhf8tgH`ApBI$?9c$o4_0d$U_(-!BEbdI8PbmJFKYsj|f*mRWU z(^2}bidTzzjZLRR=Quh6olGzxorq3CM_&Gn6qy=)mrg||r_-ZTXhKD<#a~GJbdIGn zb_-C8)_?zh8l4m9jG=QP9j*LQkNNx0&MAsh5uVyyXF8|L^b8r#Y@(8KHl3&FoI~ek zI_J{4lFoT_E~az7ATN;dLOK_z6tfX=UP9+mI+u%mSresm#Q;X<DmvFo^lCcS(7ARf zbls4xS^ypO3W&~4rrKNRJV@tOI(JC)HW_bkvgq7N=UzH@(Yd?vNUl5rD3bf=+;4au z&;Yf>Lv$V!9(Dew^N5U(HUK)0%k&8u)%jn&i%_tq>3l)w89Hy%d6v%0be^N5l%LM? z3Z_<k(HJk8bzh<LCY@L5ye>$k|AtU?1Oqer-+70QQhPem0y^)}d4CA@A)Qa@d_+en zzpVJlASzj($*5le(fN|jKXhvS|AWrgbbg}q4V~}ld`m}(f3v#q{6Oc&u{}T2`Hjvm zbhPqou&V9%21(~nWhl>IbaV@l>AwUM(fN;H95oFTMy(QzOE3Y!cm(?7Z~PM~!_-4C zF~KARlMzfhwtsSipOWA_f~g3$CV*f`f~g7SAee@rUS(Q>>6&T@rYD$*U<QI2HGlKb zRaG^A|8pwAECjO?%xcKZBY+?Y<|J5{U@n6BWD9c>)cQZKz8V@cKf!_o3+N>j`9jLp zyIzDqX+DAK1wyj8Ohx=P!%_rm5G+lwB7xF>f@KMm<`XQZ*HX?E48uwUs|jpnf>j8N z{*PQk{T7H|6v0LWYZ9zWuol7EhGCt?5R&x>HXvAEd31#v4n;R6*qmS!g3$z<4*a!2 zu-Q;;TM%qXpu}G}^}e<tunD#$*q2~Cf?Wu<C)kl-hp~BfA`tP{tM5v%C&6w6yEia` zJqCD!y$H<7KiEeXpf1#Y1cwvsPjCpq0R#sT95~3T4T6K4ub$Y45*Yojdwp;Ofzo_} zBMJ23zh)*-;!n^fu=GN@LWkgZ0+*mm;1S4CKkx}U1VNpm!1@YA1SvsGkPQ2UHZz!< zpdu&;N&<NWB)KNqCpcE{x&;uJ_dlw_69~>AIFaBKf|Cfw2vY06VW>BFI>BkGfT7w1 zc_zVG1nSKX!Py3X?f^+}KEb;L7ZBV-a3R691Q!upPH-{7B?f<~Q0X6kjq?hED+#V9 zxN3;)nkHJ01lJMVMsPjB%>*|P+(dBW0BJ~WX*>kCDnnn=+X?O<xU=yP+(mG=rWFjq zy#&t?+(+;z!Tkge5h(p9c(7qJJP#8*q7zj;j}bgYAo?FXK_KF9?xUnXZ4#d)c!l6O z0wwqaO8*I7FwvJ}`f@$0e~S540;To@ugO%O{|VkCcw78$ncR1p6mh;s@H4^t1YZ(- zK=7$JKP32w!03N4w*CjA|H0>i{Gy>E_)4Z<6Z}B%4Z(K=-!>rw_};9pS^&XM%C9T` zh2URt{z~v0ff9Uz-wFO`05biH;2(m&8xl3@+w>pdgoOVi98bZ*aR`V0{wEw?oD(RX zX031{!pR9ICY+RTk`bP8vId}@Cc-HQry`tEXEm)kM7Pv%8p2-*rzNZirz6~yaC*X} z2xlN%kZ?xAxd>+>RA+v|nF)2N^;(3p63#(58=-m%(EPF&!a4Ph!utF_KjA!t^EM?B z&es@1IHLbDU5IdD!o>*}AzVzB(E4xKmQcB>k|mX)YFL_ZEy868S0P-MP^mrPaxyM& zFe}P*CBl^(k6~Mta1BD$6a=94U+hsrzGj0bR4ssT9m0(W*CpJ5a6Q8H8y<t%P*0m% z8E#CtNfVOX(S-XDZbrDhOgAUof^ZwcEoHhD;no^#t|Z~M656iu6YfB`3*nC9+{tV~ zT7bF^yAtk6xErC8eZt+FECbuikeDtI?n~$r?nihy;r@gN6COY~BL0NxZ-IpB5W+(T zY=nmy{}F^O!XpWfGUTcqm}r~OCbX1C-zjIv_6U{c6Z$fC3??MZ2_wRkFeWtmuNgAJ zZi5_*gau)bupD^m0towr_YodLcsb#*gclMXM|cL|@q}XtPar(0#uJ`6$Ra$su?bHh zJdIGDV2$VWA^S|ibLuJKSu&n2q54~PF5&sIwEim~!V8*^z%G*UVnVI|GQE`WGKJCC z`3k~o39nQh#jjcb;njpg`X63Lcn9J2gtrpjKzI}3jSXIwzL`+OzxfDh+S`QZcC*Tz zGQErN9x-$mAiQ^o=YGN$2p=GPn(#rwM+hGh@WTqDX&)tglJGG?_2!3AwEz{;(We?i zLeEI<vob!XU}|5_8{~_G?-IU5_&VXsgs&)oB7D^#Uo)OJ2-TUN@Xf{}_S=N-3{Br7 z{F3l}!cPc4ApA%$`X^w*kB6%Il<;#xCH_NBqyOPogx?c>P53S0HwvSx`c8rM9)BSG zskRBt`=9V<LjC67V16U2zazgBEk^hUQ7xo@5=~6_7vX<|e@l7)7;@D$6k+r~qVb5v zQPX<A(YVGxK9M^16G;n@N{A*h(MgDu$P-OUG#Sz4#y>@4NN6geX^Cp_uVGUYO*06| zy3-L&-*|{-AR2o4ukbSy%|}$1H=CqOM~G%M_}Pi(5|TM2I;Xw@(cDDyieJC~H~#qr zwgAz>L<@?&kfM?+Ak#&NMEsTWRHDU+wk2AEXf>iGiIyi?if9?4rN_=%R&w?EpJ)Z5 zmBq87)Uc9SeHC%8s&bpV8LdvV5z!h%>ky41TAOH1qP3c+hH2!wL>myTM`ZM0{6eT( z0MW)on-gt9G@58rO``6s9R4-W7DQVSZ8=oK)<oNkz1DU_dlPL>v@4N1{}b&<v@_98 zgDi2HUjY<gH=^B%R2Qh%CEAl{ui;$~?L%}J(Y{0n5bY=F`w!TN4kS8+=pdqlwNqDX zT7bG8^(u!G9YJ&y(UC*D6aClgwu$Z_vWV(?XA>Pq<Pc><E>T3}5d}m(QD?X|VOGxt zQh6-XgeV=x5Os-q63S&P48A1l6IIPrLdOuPrvQ~ca*vKDI)UgU0ciavQsPfEhUk<5 zvNniLBf6OAbfWW!&JfI*L}wG7rC|zl4$-;8s}P;9ri$<aq6>+X_z&SPA-bOEQlhJf zE+e{v=<)%8NbA3>el^jxMAr<W!g*aYCAxv=X7Su8<4wkY3(;*vx2maGm&oXUbSKfP zM0XKAL3B6KgGBcb-A|<SpXk0picBA9rbG`BJt`j60*D?l{>Nnccrz9INup=OcuK~n zn-I~nL@yCNNAv=bI{Y^mgy_YgEAz7QEB;qZ^fe+S??kT?y&=Y%MCRlly)Ah4nvUpQ zqECt5Bl<vK@2imVe@OH(k!l1(3w>gupAmgc^f}R&0{%i{)QVp<Hqkdi_^nFOoZpky z`uqd&??gWm*Wad}h*u{1nRo`GUx+6l`jxmQ`Hkprq8j!m(H{c_A^fXh6Z;>ce~JDZ zc=XcoIK)c)iN_;WhkspOy{~ve;wgzIB34Iz;)#hTA)a(>jI;n1oucs*PenWpvC@CZ znp%ugiKitt?|)+50t7H4@j}Ei5zk3HGqF;8VmTJZvzQ{K9mKN}kG%XB*j&W(6VFXN zFY!FGklc}YK4q)#W4-PIjh}cy!?rN-(!`4pFHWrVpLj8ytME$@o0EUMl=iEuu?+DF z#LE(E<(EYDE=UY@{ujgOf4mCuR>Z3kuOa@`WR#x()QY2sHzZz@cpc)kB(!!t8n$(b z*B9q{jgxo-We9+HBjQaZy0MI#82@PE&1(i?{r-n|3t}Vwy3VbM_aWYfcvs?WiAC^Z zb^a&b-mJbO@y^6@{?}PX{1y3b0^Xf?FXBCj_iVCE4SP3+8Wrch#QPB+M7+OD4<J5J z<2Cca;y;AA`SDkM(Zq8&@jb*x5T8PPBymW56tPEqG_gAH6Ss)lwITo1L7Lbmc8Fc& zsYx`C-(ZM4f(e=^aYS4Z$HZOnC&VeSe)D56Ik9@}LtHd$f-DVlpZEmgV~CF<K2`%{ zUE<>n!->Qv6RSpGJY$CJ`onf9@oB{85uZ+cb{!%<gZNBhBmS}%;&UWqT7ZI`FP;mC zFDAZ__@a>lRP++HioODu5#LOFIq|i`R}jmYKdxJVXj*(Vu{r$fwXP$+k@$MzvHt!? zmaFx@xzx81-!7h8iEkS$O?(IOUBq{))kg}ryRnJyCH|QBKH`^&?<anW_yOWai610> znE0Wgl%e-O@nghK5Rd48y&UnAW_M2$zd-y9@$<yb63gM=+<mj|i^@=!<t5{Jh4?Mv zSBXXN<JX8^AM8SqZyNr$i9aBIhxk3>ca>9L)%OQ@;tvh~M<)6S@mIq0De-4wd`>*1 z{ITi<;{TfXJ29jM#L@!P2EQl%h4=?zIseB$))<wdLO(aTV*g6~n+~ZB{z2jr|4Fg| z@n0l0_-~R4iT@#KME+l5)dEQBf8z`|#WS9ass)ftphB`D$wVYmlT1u9CCMZt(hCyZ z1xO|*nPO0n<W41{=zp`vWEzqgNTwxGvQIKy!`x(%%qY&8NM>$6UB*8P$x<Y<k}OCv z8_C=xvy;pzVBG~s=F(J(b{>-XN#-S)PuHXCUtmxk$wDL|_{qY;vxrKsH9uL5WC@bR zWvZ?-iEaS`Tbg8bl4VF%B3YJX1(M}RmRDfeU^9|P3sAW$ldLL<>JdOil~d`z7;BKM zLo$j)o%~7GQ~*^*y#?I@NY<6<dL*g~Xn+E5NU|5nMkHI4Y)rDbz?A-zY)UekL@R%j zLb8QQSJ5p=wo<mfBioSdDE@6pwj<fT36ZFFU@$w8>`t;X$*v?L`d>#$b~Bhggk(>Z zC5a?^lN?O4kNEc`IY5m4WZb{W68k_I52{BYJcQ&Zl0!)j7yn_6U+g1f)Q<opN0Zp% zX_2%^R4>r9sxW6TCGkk^Ch<uwB<YYGLlTg5NkWoD7$O<tCWR!GY1T}|&Phs=LhO<E z|0I=o`a{TLNlqg<j^soM9WUbv4S?h%l2b@dCK)p*RRBs$4d!%`b4bo0Ih*86lCv8B z;EKsrI+x^pG0gj)<N^&-xA-EGtLrJr#Uz)ITtRXv$z_KB@*(7v0=r6i8a+?0A-RF% zTJc{e<Mk3%0FoO?ZYQ~k<Q9^fr6lPB$*m+t{PlgjgG9t%f9CH}B<jB0L-H}ny(BM^ z+(+^_$^9e`kv!0>Lh_(NK1}i`$s^6wL?1KJCrF+nd6ML5lBb%e@IOQHtQ4lNr#PP{ zd11gq@)F6LBrlV^M)Hbbesu`&I>{TFMAiHj$p<8Fle|ar4vC1rxnFe_$@@B2fj=Y> z@z>w4Pe}eE`IO`*lFvxKA^Du-OA`I^N7BC{`FgONc)lh1p5!}CtCskIM8ElIoFqS! z{6_MNnkvArgI$ySPEzatpE_Mv@;AwUB>xEbUma?4Q(;KQAyutGe-hI1N&h6BfHWqZ zkaRTZM5ObRPE0y8=_I6(PD-jy`=pbRPHqa2k3>3UJtdv0agt6=Is@r6q|=d3J6N4m z&j0nIO_8a33q(3o10b#K*@b@=(pklrZ76pR(z(PrXX7NDn{-~%dDK)mN#`4~7a(1Y zbV1UkNEad%{ZB>z(?tw^G14VSMgOIw+E2Qqi7rjLym*!&U6$0G|8?;zkgiO+BI!yE z-ej#px@xmQ<5`__ZBlt0NJo*bMY`rlimrSe(hW)1B{e7ibbZndG>=|!BT~`)bYq>a zuAY7cM7kO2UZk6oZcnQ8pHw{pkZwh~4e8d3O7m<>y4~2!JCN>1x+Ce%q&p32Bi%*W ziey)lySq&HkWutsbM8%QlkP)$2<g70qW|fBq(=NzsRxoCEQtrz<4`?^k{&^-#Gh0( z0<+eUq%G2;NRJ-EpGw*$wRHU>V29Kt4M;swzrmAshS)-7t0f}CpOD^1nvz~hnvtGG z+9f@XG$-wmD*bQLNlVgWNGnqFAODW5d#u46Pg>V@0_n-5Cz8tHf8?5vAszeuPkI{Z z8KkG{jp)mGrm5|0((|O+b7a(y0Ho)WUMQXm%(@qmsyF|n7dIZma2e?>q?eOkLwW`2 zRf4&)i3-Ej26-*%jpDhE^m@|&@BE+MM0&F(R~PVB0pCWdG@tZ#8SgM`cah#Bo{?XH zN$)i}b3f^Oqz{ljNBSV?qofbjV8K5uqkaS+eT?);@jOoYgu>`c^c3kcq)#i4I7v+l zP#58OQl;&rFOa@S`m)&i{4ch7|C7E(`Znq7q;HbGp{O+5TSN9clJf45=Y7&INIww& zhoqm1@e%3Aq@O6*$Q}PoLZ54=D(OqoA4$I=RZ>s-HR(5``s8nR_q~LE7|QyI^f%I< zNq;ezUk6bE|4#ac^62{iA`40XCacx&AF??~|0SD}^gptR$^J(+9@#hzo@`vrnT=02 zA=w1Yv>wSO8sW?)sco`J$tE-S$;nhNP`9<YFWFRNGmt?xE!otDe;Q>dHg)(X6aClt z8OdfPn~CiIBs6n_6tI5(Blc`$vy++kKbmbWvSrBTCR>zj9<up`VO|;aQvlflWDAom zNVd>`SsAK~MNG|$ku6E4^q*{rCTc=UiF0Y?RP`?_)8)ukB3qtp1>;|_F(kS&nVkQ# zRT>gQwK~~8WNVOZNj8dXW3n~L)+bwwY#p+-2Vk;w$!h(VODb1MXg46+kZhv?Oq`pL zZAP}K*rV%FN7Y6)7pH0gwUcZsvR%lwCfkl|8wqVYz>{rHwxhsyXc)+LBHLL5^qtz3 zOug+P+l_2@GWp|Avm)7E3ar-MyU8Nkm#j^;AK77K`;#fPCp&=bKtY}=Q)vX*A!N<_ zA6-A$;bcdV9U+(_1>fxAXz{d^XXMIQWHy;AA*TtEd1UI%Kbh_VVh2qYSw!{-Sxj~r zSweOqSxR;cSw>cnb%iP)tU}f!tHi0_|A?)-0NJr*$CDkW@KPAr35_AJlgQ2?JDKbZ zvN2?*k)1-Ozb}%aY_ii$?wMp~OQLxTq_6+EWEYd2M|L6E`D9x8n;i+>yaiI%`4aJ{ z{}+T9my_K>b_Ln>WLJ`1Lw1$;udYXfxmMXK_qrj@8^m)X*-d24;eUX?mFym}+sN)D z6Y<aP7_ik0WOtF>-EhkEUa|+s?i0fM2Y#78NcIq!Qhv3xuK7{2_sJe3QzB2MUICG* z7C<H)A$zL9lRZQB8ridCFOxk-_5#`SO-R5mk{RXK%&(}Z;!!<9YI~jRZSlN8_9mH# zzkp3K?~uJq_MRlxAKm8D`vKW^WFL}!PWBPmCuAQtghC}vAyfL_kcjgOvM<TLA^VDK ztn<G_ziq%|-;@1H_5<0^Ql5GWAXD#x6hKw3yMWlgk^N5gr`Xa06!<TN)cgI1F-wvC z%P}F@fAnsq`#<tG>5fD9JG$f2wdjsVcU`*U(_NVE1axPlJ0aaE=uSj;Qo0i>wtC&J zY5}U4?qtTJ9|7o2Np~8$Qwa>ZQ|oG*8oJZcou2M=11H@X8U|sTiSFEVXQn$l-I{z> zAu;-|)}5_Mq&o-Qx#-S0;87&1o_XjlAX)R$osaJP8ZfvB-32A8y8zuq=q^ilQMyag zT}(oY%Q&|FcbB58#Gmdm^=N8Xj_xSB%hO$j?h15QqAU780$AA~SEakUq_1W?YYg$M zNq23!YblT9(p_gLx*px#>8?+AOS&7--GuIjb(HQ#GHyIT%5+n@qv?v~cQ<Q7bhY>k zU@N*i)7_fxwlY;Mpe~8-c662I(>3q^yF1d|sj0TX2!0p3yNaP-{z%FmboUYGo^+M| z(-ra8%=^+kjP8DP52m|6T_yW;52#1UJ*Y9nd5E%A^w7ph_i(x*_1z=r9!d8oUC-e2 z-&HMuZoBc*wdvkS*P(klU6*bqQID=qHx#==H)zOZ8qrPY#zUS|sN{Ry?b1DwZcevP zx1g&upRT+D(sim{AkJgx9!K}sA)e#up3qd)jC4<;dx|W2vW#O)ZnM^DL%C<rJzp?q z(mji=ocX(|7sy)YO6WW_)t(FJUP<>tx|h<ui0;LWU%={FK=7BzcsboG8js1nitaTM z(k+1QwREqS-0KWRiNE2wiSF}sYw5U$?k#kc)YH9H#@l36EkM%ml<8e&DlI@=z<cRF zM)y9t57WJ$?t=n;py8Jkc?8g9KO&w-4awtlpP~B%U8VVS&HMkZY7GrW{Lj*TZfN=f z-FNA}NcT0mFVTH@DD(>5SJhP4{5svYq#pGOi0+%ZDrLVd9`y(y#(Q)>qx(MHkLi9u z_anL=Dsc13Y(`b#Cv=tmo2<|2epTCazo7eN<CN*wbiXke5r4hP_vH20=Lhly=>AAv z>+nx>|D*de-QVf{qEZywuXKNF(q;Mw-M_{7lkSNAi{~G@{|<^Iul0XI@^Q!~AXo2y z$j2iee*maG>R-M6d?NBm$(8<-i}-8*Wa6282stJBoa9rH&rA;abOM-~d>Zm;g;}3@ z$fqZtk$eV~+uZJarU8#+)$7heK0EoW<g;m*M$R$F669RubCb_YKF`2UKA(i<R~}vM zg5;Z#FGN0yd|~os$rmACOkj(e8WtyCihK$3B^!^)U7CDE{Ob_;a^$O!FHgRrOwCh3 zz7n}sev`W@`D(^qoqP?=toO1e`3B@`k*`a>wiL6@06@N;N>rD9eZ#OJ`6l9#7Ladj z{F@qMv@td(-$9UDkZ(z@)Si4R@~ss>u8DZICEt#Gd+pIx?MS}6M0X<JnS59BvETpa zyES<7Jp{HV`QGG8|8?<dt$iAsd_VF_$oD6&$PXa*$qytylKdd@LnQrRgFKY{aPb`0 zP?4+izp;-ZZ%g!O8I}ImiR2c!OKy`pgVn|FH2?v3$TRYQJRz5MkVoVr;;)Z$d1^Sj zl9iJy%_rBt|B{zOoPF~1$&VpFo%~qxlgW=GKau=+a&!3C*YhNmrK=r7eyWhGj-U!w z{B;XxoM(`qOMWK#+2YsdfAVt_QZtDDH&b<;FCdo}LHR{OD=k1HFD1W|{4(-e$S)_q zRsdI!UrBy7`BjRrsX_5v)7a$Kk>5yuy?}@GKfj6m<^f*HyHzks{KdGPeB}I3ei!)@ z<ad)lDA9Y!?<K#V{62-(SLT6%EtrSMA0}6tPyUF(JVvfg{%WeTo+N)kFi(*`P5vzT zGa8^0pCf;MZ2XJluaUn*{tEfa4M{zczp7xuO#XUpkiVf5mHie)o%lAzrsVHXOhx`K z`S0ZKk$+46KKUo)A2bZ)ACiAW{_!AP_&+88f?S>d$v;=?>iWMV|C;=(W@?<@7~?zg zA0?%30Y5bSb%^{YasEvHs~AJ)|GaJi&FAM2ib=`;q!>pqf06%9{vY{2<o_xvQ-g{Y z<}MWDQcOfK9>oOWAHP9TOgO+(i2fIoG)1a<3Z?&opPXU}G1SX{lMBU?6jM{oO)(8c zjh~icMuAO7F+If$8r)Q+>Y0gRW|b};idiUT7yPWUoH_p&bBJ?Jin$u3!Ougn5XHO{ z3sTHSA<qJZw1A;q3)R9Di%~2hJc|xUC>9sb63U}%Sc+mDilr%5qgaMwMT%u9mZw;5 zuv1A{p_x*wM6rr^M!EpSs)lWKiZv<L5WuL$DYiQQQz-p!oD}PdXFUoz@E1z|DK;=s z5&vRiicQ8YV>HFd6q`{TPO&+~ZWLQki1HU(Qfy_4lop`w;I<SyQ*1{e=l{Z-|BD?d z{=f5ou?xknssMducBj}^s@j8MPl~-MM)aRzpCROa6bDo6PjMiH9R7ttat|_W(g=z} zDYWuS`l%F0P-GNGQUnx7Q8*MwQ?w=5=zn2R*bR@_pi7~}pTei;3`Zq5q=+aIidco3 zdejAJ9s%l0-KFSL<P<%MLIcz-Q2I}y5C38xLvaGdu@uM4^f(P}zUjq@YN}FBGPRAN zxP{^riVG;}4W3O=i+>F`o#IT2GjzK0oHeioaE^@UQk+L|{@C~ZLW-*?E~2=M;$n(R z1$l{1*OgpOaV3R$1kg@t0czvdP+U);8ieHP_dgUjP~23nMRB8EQ5B}&0#V#bp~Rfx zHj3LR?xDDY;x6&1M*vBb!+)(#isatLDS-Pa9;0}G;$fLSNb!(fLf7_)_*E~E+{Y=N zrFeqkDe*sP{7+Mih=0RC@f^kT6wQD6WzL+%OZ4jR^2_v~c!lC8idQMVpm>eqeTvs9 zYLS0~;w|BS(@?#w7Sc7m+t?KE8P5k4pHO^A@sTcGU5$@T?xz%=Q+%dF^}h7hzNGk; z;wwY)HN`g#vjKcZ@jZozzq)R!9hlJ16n|3uQhO+*5fruf*Y@uee~c`oJb%%fkm7H8 z<5K)XulD>)@t>xWN>pM`b&5KX-gxxP`Cs`b&@1*PqBp4^r3LgRG5E>oO-XNZdP@8U zOVgW5O*QA#^p>PI4ZV5kO-pY^dehY*deh4|Ljx0gCVF$wo0;CM^y*?}(V^yw^=6}| zdVyL+d*-A!H@%S-KyRKQw)yBSOizhFJ!u5J1?ep`%pjpf=q*Z5WWTrAAWCluv&vEe zTbkag^p>Hw61`>VEiX>p0_d$kPdx>wbiM191+dCcwX4xvliup|l=#<vdZQXcjjG7C z=nd(AZ(Vv0z4hqrLT`O~ThZHq-ll@wP{xhuZA@=0{TKgedYjSPLhQ}!v8jRHmQ989 zwx+iuy=~}iCzx$DM%AF60_dq;pq$FyNyeSkRMosIy#wg&MsE*#yEje&>`8B5dVA4R zvQKYs9nyDdKQ&c;{Sz>~1L++>?;v`IivM644^c3kau~hC)wI!#-jVbydPmVynom!i z{|&Nj47)Mvk)BKMRC*r06Y2T%3VI!SDZPMROfRGt4ZyNW&6zZu^fG$6tkNB<BAh*X z$I&b4_2~`ifA1K2$7(jIik@l&!l2&*(bMODdMDExW1^=tS@ce$cR9V&>77sS40>lv z?wR!T;a^rihu*m=QC}bP_dmT0=v_qbLS2B``^EG`|9e{h>0LIIcm=)d=v^sGTt)Bd zCPeQVde;s}lv7>j>*?J<?<TQtY>=jaTd3}&cPr)H^lqc9zZbVt)+u+;dxu^fdWPOz z^d6Ah8gmc5drj_r^zI*<?Lm5v(R+yABlJ`|XrlBU9h5}xae7bEdqO9w@}8pi^w>Pl z(tD})(0fkC=jpvb@5Qk(wf?_B?-hEl3FcKDRavj=<&^y<y|?Iz_}AB5U-ozD{Xp+M zdY{vKpWa9GJ`j=*6^Yy(dLPsKRGgm-vFR2-?+be0()*I$*YrgHb=EgS4Btum_d}i^ z>D6NX6TRQ*{Y>vy0qFBTJ*EFc7wQj*{yA{c`<vcB;{2E1e}k%OgK`|o*(t}RoQiTh z%1J55r<{m#0);OpR3wI+QuMzx`d>~an8{_Fg3=uRn;n%<&O|vi<qVY5P)<)dEu|8F zRe)U2A!haWKWeHLotd&OY*w*nY5bJ44T0yNT!?Z`N+tM|ss&KaZIJWIbUsRv{c_}2 z0LldoW?{;uDHow!f^tzxqx_0T^@18kxg@0$f0ZJ&Q7%KdJms>&znl)~npY6#ij9+U zWy&_?DwI1@u1dKX<!Y4cQLaw8Hsu<WYf_FHn_;bH72#Qja$P-Dm8?&>5#<K8hjPOq z|HhP?Qc4TZ6^<ToQY!JM+=6mj$}K6krrb(Jn;ogpHjPcW9pw&`O8gsg${i_{@~f$4 z-i1=BI_0jEyHV~*xw}mFP%wG+l&O9MpxlS@V9I?d51>@~PuYmSoCC`PDG$;ckyR)U zp*)K6P|Cw=KjmSHRvAZ79yyE@Dy9FFsu$EtQ(BZKQ`(e0N{2F{bOqp1b|`%X)4K>L z!(lecm@*Tv(tpad0aJD<^8u2wF#eMASV5{5K-s4}M#EIK$5Eb0sq~-ngeFCeYAP*2 zVa8BiL3s-0xs-MBXHlL;sgC`Wrw>vn&unZ;X$Pe`{F_~zM|mmb`IHw?UO;)_AXEb= zFQ&X?P`P+6Q&SbXyzx_BNqIfxRg~9Ksun<bjUtgHD6bn3Qr<vW%lnO#H&d!cU@*5( z-rBGkPp$uVQr^+5)gUSFGSPdemZQ9v@<+=1C|{$zpYoA9N+~^}d{FF%C?D3es^CW{ zpP_tALXT5EMfn7!e)DhkVp@QrdY1BK%I7Fwkd)^Q=0!@?7Y57{eMQDs4d!*q4=LXe z=bMyD`6=J3#~MKS4(0ol?^3>}Nwi<-zhU@@@+-=ZDL<nW@mGnTn&{`0Ukc|JV>5hB zY2N&l-%={sr&KLK!4$&}hT$iwT0(!Ont<{b%6}+-r4+R<f1~_e)2b9D{*-@F{;i$5 z+JC9WmC%1w|Dzg5uhK-T@l>c9f8eB=kZN+OiKr%}67jFJ_$!P8s}`V&tfruXYD(kR zfBz|%sb!qTAg7~Rh-!MOS*d2Anwe@w0nDTT!X{JI4ya~nJXEt$%|kUi)m&6_P|Z2k zzN)zuOjj~5)dE!WQO)0Y8YI<%159mDEljltl~Q}EMP<}ofNBY<rKy&rT1v0ds7JL7 z)v_b&*2+^YPvuapK(!;)ic}j?twgm3)yh<>3g;^ISf^0QkH5-T-FQY(tu2@}sf_q5 zz&cdxQ>{z2-q@>e&?HLAMpSabuQsOIglaUE{^L(sYcnb({wiHpz9rRmR9jJP-T0}t zp)x0bjoF@R<m4|rJ5e1*wKLVeRJ%~^MYSu{9#p$g?cOjO{yi0~S&?dQs(tiSUEcku z4y>nC`^$Jh6QVkZ>JX}fhmeOVTX?7rr#g!2h<ZwO<Phd)s<t>q|J4<<WNHs#T&gpv zJgQ@<e5x*0hbp291Q{x%UL~ednopH99@)6+2x8<^r9=y=-eAjA6_xqRpXwN$s7Q{Z zsy`LSQz^BlI)UoMK~y{^Q;nfIMLYGCKTS;)Ug<y88Rn{<MO7cO&!)PJ>Kv*Ism`T3 zUoiUoFGXHp@E1|3Ge6bE^(diBn~>O-Q(Z@O1=ZD5S5jT2LmGJv)wNAl<EOfwO1<-; zy1{sEqPlr(%&oHAZ8F|2;~g5H%D9VuO>#H=<*4qV`j+ZmsyC?aqk5j|eyS&^9-w+y z5+9UNzXGCqgi2(;dbA;=dVIhv$S0|uqI#C<X{u**NMFzARKePQLBKCky-FpI2Gz?{ zuQXAWrM|_l3FdW8qAGur>SL<6sNScNMo_&&_3j{x%Dn%nME_OFhjo-nzXhWDgi6%D z`jqN3sxM@T&j(8gSe^f=zLxPD71H<OJNmUeeoud5svoHSq56^PH>#hgei87`O(j(7 zLBQC*Q~gP$+JWKui|TI;&{yMM`r}glM_*%98GYRa=#NK#0`ce;Kz~B|6OF~tpM?Gt z^e1grp+6b@$u*$fOMgoG)6k!a{?xUTK4a%jYqF-(HTP$rKR^8$>CYkfndr|<e^&Z+ zRr=&_kh9UR-~Xu7W5Y>*PWtoEpGy)&|C>Gb=T#WBulY>w0`!-nzaag^=`TcoQThwh zU!>tNY+C%)R8_tN{Ut{L%Cj{6WelNu1dt_`r+)<f73hzqzass$=&wY7HTo+Hi4uSM zsu9S)Q|T-5r@sdMQ4N($^?(0Ge{K33(O-xDdg5PKWvPv<PhTDW#krw!ieIK1%eV>s zA^q=fMt^Vmo73Ns{ucDNroW}Ywo-|ja~t~VFaPOpYnZpEze5u>n4ReFN`Gg8?J@|_ z-;Mqr^mlI(CAug5z4TP`??eA!`uoy9fc}0eS8ZJBe*>d`ApL_Hzc3skfJ5mYPX91X zHFB?yq<;$iqv+@KkEY+D-=Z(F-&egr7;O3;eTTlQ(?{0w4JM!;(^roG^rOZp>n8Lw z`srX@`rRSBpx>w86Qs0*el?VP4E>YnA4~su`p2m(eWy;KZ^U1FP8NnSDp%KBe<UuV ze;WP&N48r4Np37%+pn4J$83LQW@g4~W@f%-W@a9>TG*l%t(lpbnVI35nHhdns;Z|q z{)ml=)X9@4v(!DACCzLiuGqw;jHm-YBblt~cfn#5jMR*jj8x5K3mVs$7GdOKMy_B) z2EoXs5_K6P`s8moS2A+7xUMqDHH_%@Ka32W|3_}Xnwyau8F`11n;3bHk((L0myuf} z{8mO(!)HWBz{u^Um^&G{TkyMD{RU^`9^<`_k;fRhpOJ?dc|d3nGV+jSntd_y2qU`r z3+Hi0o)Y5;S)XkAj6BWAvy8|HXk+!gdR}NRF!BZ?FEaA7T&fWu#k|7EYmB_wUW#j| z|Bt*W$Xm**cK5ca{9UYZ8F`P9?-_ZYk<S?UfRT?G`A}&8W8@<h(iEU;_{1of_dg?_ zGx7~1Uoi4DBVRJ|Rm&V+8BvFSM!wTh%Km|o-x>Ll5!LV+`AJs&{zvRzW&N#L8!1Nq zVB}v${$%8DM$8CMf&VB%TVZo)$?h!E|E=+`ro|c`YYMChuqIKO)`VCSVNI-~+I?A* zVoi=U*|3`4vNa{vR9L$6V@-{vPyVd})^u32U`>xT6V?opVn!`4wPDRHp!&kAy;!qi z&4H!g|6t8-63wXys=~PpG7r{9So2~nhczG8Qdsk2ErzuK*1}i|3VES6N|YBd3X2*A zc^t5o5a!tZ-&$J0Ww50A>)MvbS_^9htd+&PqO2=5tLU$SB@N$N6-%H0l}pvU2G*J_ zO)l5QlAdqL6M?m^g#X7>wZ4hkK*;(P5Z1<62V-r5wL8|PSleT5hP4gW=2%-{ZGpAr zAcY9F{l6z7+ZxU7+P61YJ7DcBF7*_EwUf!di-5ag?bad&-vdh>^0D^B+6!wREHeTI z-+yagtOKxA|Hs<DS+#<?JP^yg0#fM?!8#V}P^=?`d>Gc@VjQ8OOd!@#SVy-A)-gkB z$6+0hb)tlv(DJcP!a4;@H-B-R+PcI(9jCcPXJ9w=pGoIrth4Ae-}bYyp2j){>uRiX zu_CPVuw1P3v23ghu++&POOF673(LI!m!A$1?_xPaxjZa&=Ew4}f+1Xe7VRZgj5P); z!78y*tQ;%D(w%=Oq%iltYGbi#qi_+{rC93lkEQy*VP1xH1=i(5$dy>;{I7qaufe(( z>sl;n?ACQy*JIs?b;D59O<4Ljzef31th=yo!;&dr-9ALVv$e5g5Lox9ODPHKKCDL? z8|!|o2e2N(Qip%zRgVKk|4}UI_SRz!g7vt;pTv5qwGHwN)@NAHV!em;9M)S{&ttuU z^#ayQST7DV8w2ZQlj~KiH?UsAGH?F%-FR~#j`g;Lyd&$oZJ^liW2tVB^?|H%{<qBe z-}+cU)&H?RZC3S9ZQ*mQU$DNw`T^@ptZ%X8{BM1Y^^H!dncqq5_idoqKgwzj|CV|G zZ~cn(FV=5Ze+c1sb5H)n`Wx%7p}qX0?7_FR^M7>4p)($xaYs3w@#(0ifYH32iRf%d zXJR@F(3ynJEOaKNGcBFT=uAmx@`g-j3dL_L?@UE!8amLKdRWJJr=v4dW7C<Q&J1+S zoBz?OW~O6`RLZl`nN#?)(V5+dsOJUAI~SdK>8SHRoq1YNt?E*p|LM%%)<9=LIxEpx zh|Y3!7N)ZVoki#@CY(hFfppXe5O7I4((^m|EfAe$=q%f+8P4*OXa#ktGOGSBu`APA zi_R(nu1ZIyKxZ}MU4zb=T1R$GXKgyt|2yl@S(lFP{D!akKONQl+bB94(K(pT#&mY1 zvk9H8gs>@{&FE}FXLH5Wm5h!6I$P7(j?Okhmi|9_&*fR5vxAA+iOxQBcBZo@on7ec zMrT)*T35R}ojr8@I?G;dMml>Nh5ynyfX=>>Yd<=s`D=v(1wW{bGO~xzIh4+kbPj8A zI)~FaLMKum<xzBwlfa|t97E?=MH{W^cseIGmvl}rf+uN$x_hV4`IOG7bZ(_{8l4`U z)9GAD=L|aM(`owuIdskv@w10Ao~sm8_<2K87qm8=5jqYXO9&lVZ93gSxFD{q9-V-W zKej70bw+e9qZ8Aq=_GUtIw_sL1ZK^uXlh@1Ytt!}p{lBk!WcTL;nTTDRy6`llzs(7 z=W;qX(z$}pwREneb2Xi-G)=2rGq|L49i8jxnC35^nke5y=Vmd~m@wIIqw^G<+v(gx zM+QMhHGevH$*TIlVctvUVLJB-em|WD>6kzMR~vk2i1`Q|)$Qp#O6RcwE`d+bkzWDm z@6ywB-lFpiomc5ROXnpz&(V27n9r-g<_%9r`oEMxN1DGX@0GSHVZKJ^bvkdDI^UE) zRW_Zs>AWu-837$N0_eP_2+I2bosa0K^S|K#Gr08sj_UtL^E2$Ge}0bLG}15V{7L6a zI=|5Qip~#ozNYgXop0!T+wzUh_sY<@ex&o0v40-mjX~#EDdsmiztj0cE9m?47xwsc z{>E14d^-Qo`4?Mj>e}pamCGJ)pou*}YhzD{J(03oHG2~58L=nDMnWdTo*a8h>?y`d zYELy3GBx%z*wYDr+7`#29(xAO(aJMn&x1WP_UzdI4|`VZSrnn&yFJ@LAA1h$xv=Nd z;ljaIBfu0nZ)0Q6C+qwzj=doEf3O$AUKV>{?8UI<{NH?twmJXXa{jlMz+MX5{1*U4 zSQ=Zu{4r|FVXub0Jod`iD>QkrSH#vQe^bUPQoyPzMDJpC?6tAiz+TfJYYlnVX>DwE z{%>sT^{}_YULSi4><zFt#oiEmW9-rY0*t*$OO_foGYXp<g)K#AE9`B=kVk+<TotTG z0QUCSyJD;6kG&)I&e%H*Y3`ylr5+*dhP}HOdnjD*YcIOTVegIo3HCnNDfWM{&%xdo z`*`gAu#dprA6qqi>;te59MV4+`!MW7un%q3S{L@=`cj1)DS<~}AA^1L5PmGSng}XH z-?0<0PZRQq*e7A1(%{%9w_dSNHO$k6)|~&(!aj4LDd5@dCHA@4A@+ILUF`F*N5p#p z_Ju=&(*Nxaw!Hiqy(bQ~Cw$jr^p&jIPN2h;tsVieBUxiv6T{E2@5k<AUx}S#Uy5B| z*Vy{yKX%pd8#4A7Y}NCzFEWT42S(>IWh?LH*jEhUS7G0ReKq#A;??~h`#S6!v9HIz zVNj=Jxe0sh^S^y7_TAXGVc&^;J9g9j)piC^*v$w~?`*N}!M<0!)a89G2m1l+SFj(% zehT{`>_@R5mSP^!B8vPN_7m8Tt8fv=mX|-;ej59E>}Rl_!+v%UW%OUben|vh)Gl=& zUN$<fV!w<18unY*uVd@}FMJsRD!Y35gZ+*Q*Wa=Cus^_lzZDVkhu9xsOY=9|$5tai zVn3zZG@Q@qHm&k=>_4!-!2S{YOYCp4<@|4djXn1H-~J9;n!ir^gHihl`&Vq;|FM5* ztCBK)ll6DSY^I+5C*AgQ|4Z<{vH!vTS9u3}>5fBpBD&+!oq+CmbjNQ$FRjp>P?MXR z)}5H{q;w}4AZlyf$=Xkx?i6%qq&sEfr8^bf>F7dt8o8WWDwOYeciOgEy3>nGMu2>0 z=*~oUPP#MGolRVg_$+j1ZS0|H)%l<992!*iTy*EBJ2%~V>CV%Nn-uE&FZ>1QE~s59 zWFdnuLU&WTi_%?<?qYP8r@J`aW#}$JcPY9{4rN(dhik!Q=`J_qRp)=YE7Dzs?n-o5 z)-FvR>i^x<>264O4Z7>lU6bzG5-1~J^b=W^?s|0P5kM=fPuCp&1(B$YWZjtVQ2+04 zMz?9jo73Hq?iO@ax2G#3pu3gX^)__3qr0uT)cV`g-9c}#{l<28qPsiYo$2mMckKS( z-L27V$aMD*@jcb0M)szA2;F_??nn2(;@!7(iM>DFgXkVWceME{ud481Q^}!p)q$U` zdIX@WM*!U;=^jJ(D7r_FUFWg-QiU8(_Y1lw(7loFiF6aXC(#|Ddota#>7GLO4ADH5 z?rC&SSE<{ZsbW?Crz`LO^*uR<?)d_qOLyq--&Kcyy3+qO)1vFpmGghs7H_v%)jy@| z(hcc)bOUk82xtOzZ2LnI(baGMO;k$v61o}Pnr@$NDY3Z-7A;4R%J9d?rE30kFIM7O z|5CbF3wRmb%jsSz_7%o^RdZ=<)%@vROZR#)t~2-zilg^(6Wy2T-c0v?y0_51i|(yL zzKyON`@8!6e-lghPNQ(QaPFb2`#;_LhBP0b`z+lD={`pHA-WHns7L5N+S&$robFR} zpP>7s#&uOs(|x9`&@i8qjL*}3k?srHrFN$Vf#JMD_hY)R(tV5WYjod`kk^L@rvG=} zru#nKcj&%5<bBWRd_Y&VeYzjEUb-I*Xo9Op0J@*b`WapG$3N;8eTmboU*U{H_iMVp z(fx+*_jJD%@^{Uu{wbzv{&at&tJ*%@pA7yB-CtYV)bl&tzlHM$-9ME}@&9T$bpJ8P zzc?b^>O14&fHNM>q>As1k23+z#5fb;j2`|~il!K65}nIwntwx{9A`?LDcTf*Of_Ur zjWZ+8G&s}aOe@~$241<G!Klq7mopE%IJ4lagflD75;(KrEPyjR&b&Bt;LMFPC(c}& zEZ=qspJyn1J{<k>N6KChXHlGma27Th7g0w0lj1C<0@ZdFH^`DW%L=lTtV_$fOtTuo zayZKixB||K8rNzo<E)3X3eFlrSQTeAF;>?!m1s>t*1}n*5ya7d0)(?Jj(Ptxy07(d zHo(~wXG5HgB~bN$3EV^(+TN_Sam@MO*%GhW^;Wpc<7|!dAkH>8=i_XPvmefOID6r2 zkFy)j4mdmG?AR#a?4<TMntd0XU5B#lZnEql<ULy^&faplkF2Wyi=jsV&i*(j;~ao< zB+h|2hluweSxx_U4#hbf=P(tk@8l86Zchl#Q8>p6|7e_JhB(LJoPcxu5ON~UNrOvu z7IIF(IZI+s#W@W}W`T41&>qzYFiFqGIY-Fn;+W>I>$w2uN}LOEGMo{dE{<iQIufEr zK!e~oI3bRU<KuV=9Mx}TfpmVSDJ+&Kb^e#A1Sf3;jcgz1Qk)!T3{HVl;iz$-IqJiz zP3%QD()=YC&Lu;f%OuO?IJ)^aE}W}y?!vhm=Qf;caBjf4R%qAZT(4vGu5ZM-8Rw<} zh;s{$YW@n*oZBT<27z;@a+xA=?#8)Cy!YbVFNTZ&iN(>cfN&ndZCcR7IPc&*g7Y%Y zqd3n9|1q4$ah}9^VyK3vaGutek_+cqoELDU|2xmC0yO?&Yva5$;N!f4^QwryhVv%Q z>o{r(D1zS6TR7_QuR(RI-^KY6=RKUyao)%I2<HPF>Hm)I|0echoKJC7^B)TTthI5z z!1)%Z>Hl9h2+mg~$~*$-0=~of9_NR#YxoK0cN{ecB=#4aUvYkGm5t6HxQ*<eIRD`M zh4c5Yf<*nR`Av3roW_f*e+7U$KJIL|6W~s+nC^tKPJ}x#?xe!h{a^6ObVhdy+^Geb zQdTtraA{TvnFe<z+-Y%Vz?}|v`W83d8I_@#Gvlhi{J|aSKklr?J3H<|xO3pngF9yf z;;IpVJ9kSEdtTfH#F$Uk`CAw6f~_Io!nlizu?X&>Vl1Y-x`riim%&|9@TG87=U3Zo zKNMGng1g)he+AsjaaY7W1a~Feop4vi-4u5f-1Tr*#a#<`HQY5sP>%rIHHQ?|#$8vu z>nKnsGE+cpaDChjaOKSJZrE~gH^$whC7Y1VaJR$V9JgusTeSMPTZ+-c-5PgW+-($D zQkbai8v^bQhOb6I<HFq;cMoyxf~)#J?rw&&yW#AKt2#XHUbxc#-F<MS`I{8D`{5pl zyT8y5XamKT=I<UngdB={KJH<-s=ebLj;s1V?vb({g?qFn>sxdz?rFHk;hrdj<8k%N zf2sc@+*1TUxsAd-Rfj9h({aziJp=bFTxtGoPj=5%9BrR#0%Zy`bHu#>w~u=vu8%u{ z>)=|rs^{bC-vZ-y2e%j36}84IBS78N05`%74Xy@(R2$=_qLZ|U*!sVK;pVs(;TE{1 z;a9k|PNcGr8H&0X_Yw)e6jybAMbmfe3fzxyuf%;A_bS|*aj(X`9`_nWQ##k;%Hd!0 zZxHZC<JBVo_ZHlHac{*{tseI_+}m;Q(DmrpyKtrLyXp~OsD}G+AC##3aUakwCGwE6 zg^BwJ?kl*D;y#W08156ek87{`6rOBs+^2^4&)}+tkNd2wY6LVHabLiF3HQYz=F3C& ztGMq7|25p#ao-eMPXXMwa83W$YVYEHAe{Gb-&Z=aQ$aq&m0$kqy?>1R5AG+pU*Uc# zgwJrl#Qj|CFGgcE|7+ZzalgU+0ry+n?}hfArj2I#5%;G-EbcG3zYFtMTp0nn&OdO~ znIHGhp$h+Q19AVwn-=f?@TR~U2X7+0aq-5-8*fzEn*dLB{?Sj(n;360yh-rX6i`1P zZRMUC6I$7u5|75lQ~kdo;7u);)3ldjPlq=r-t>5lcLuzf1e6ib2&#~ojq)sbv*XQ* zH=7RE8Rr;Mn+tD#yt(n_6&>>mNY$YFzX&dXw=mv<cnh`4Mt_kZoyG81z*`*eI=m(D z4#Qg#ZwtJo@Ycaw8gCW6W$;$STNY26zbbWkJoWNl>F8W5H3r_wL&&OlYvQejC;i_u zj{tfvYqd<gwT;5McpKvV2XB3mTF>Acw1$8i;cbeyvDljoaM|o;0&d=dc+L5LSG=w8 zcEsBnZ#(g-5rDU?;Yk1YbpIFEPD0yR5!7~eY4?b?8{WQnyW{O8v_0_j;olJU#@h$) zzwM;~_rp6FZ-2Z4MNN+YJk|d-Q)M|syoa`5Exg0=Y`i1zPRBbE??k+#@Q%Y%uYmB5 z!80#^j0oQGcqa@r@zf&#-pP2X?c<%IT`FAt38;W);9ZD!Cf<2?XW^ZTcQ)QR1Ew-W zAMbqOU!Yw|aHRF(sYd|3j$wB3N<0Uzho|~Ko`)CU$;%(DCjDR65aDG)i}4b?bZ}2h zk$t=zPygkQ$x`86idReE7`%(cxM&cIr_cX*m*HJ0-plcZ&i~$3c-KhfSDQrF>TtE4 z>+ycWy8-WIyc_ZE$GZvdZoHfEZpXU??>5mK>nT8xJMiwryQ{I4n(R^Vdt|*A?>^<y z_u&D&C-EM{dkpU(yhrdJZe2otbYRP+8Uc9v5diNgyl3&A7Vw#&%Adn~K|nPT8XWIM zJoEBL-}6`SKE`_$?=8I7g#0?*n|QkUw}FDcjrSqmJ9zKoy^Hsrc4-|o4%*as{}cX4 zL&zt1-w60A-e-7U;(d;1n!i@~3h(Q|U6N|Q#rr{`RR70Qvq114@qQNMCzJ6PykA?d zL4L=d4(|{A@$mk{Yg)Yw0#7x6ynhtARrAGYKz|(kp}+s}$H$)(e**l8@MQ#O{=_D5 z5@Sq;KV@U%s}X=dg~6x7p9UZN_RYV!Kfb*DZ+Goak3TQ|4EVF*&xk(@z6=6?X8h6b zjNX(#t5KdEe=dC0|MBN+L9yqSb)F$)KK#Y;=f__Je*yf3gkXLP(0nC)^A^ZoR7EMl z#oBQECGeNQUlM<5!Ix@rQ_QmX%i}MnE@dwUUlIR0{FU&J$6pzLJN#Af*TY{Ge@)R@ zO;*+a@zpG70`XP<$6p(NU3~Q-$f*5C5j1Cg{7vyUz?X*aZzzEqwM?<~Qvm*E_*;tL z=J;C-5w^nL27l`TB2n@y0F`}v{QdBEz~2RbM+sN`Ukn)ms?J^U_r%`~e-FWTSA@}O z_rm`#{@(cejHXb^`?flgZh!nk@m2H3KM?<50T0rA1s>Ac_=n*iDYV1!)vp8ET=+-f zAB%r9{xO3nWvKFwGn^CfQ~VS0&%-|n|8&tgS=LkVPsKm2Wg7k&_-EsvDTK2IE_^it z@Xu9<{uIu~ckwU4@8VyGZ{d%$*@fA`w{=x*!7AJ_u^xVi?@Osc3rbWEKgN#?(p)CW z))_PW8o%En_&I)oUm9=K8qJD72LCeri}2MHXsg1%1piWXsnssWzY6~f;j3}bR*Qc% z{xw6F*Bbuy_@Cn6fd35sjre!t-z2d&<KKaQ3;u2R()_jl(93`SPGQOj(B6CSRb$7$ z7ymx|2k`G#iM01Y{D)fGRP_k{6Znrx$Yc1b^SApF<Vk#K`~FiJ*E-MQzl1M`f0gTb zd>I7(ivt?|%lPl&zk>f3{;T+J;J=3d`hZ{xc(XMm-P`!``(K^qJ^YXG-^c&3;ozGQ zplo>rP^mvwg39=$RmT5}0Q}GK|H1zP|7ZL!@xR6Y3jb@vQNzO6-{Jp&ubY1Z;{S+0 zdia;rzu^CluSNj=Z>nJV?&1G|FKyo+I{*7>1W44s1QQedAHf6!;}DETApO7n-Zr}k z#&30$Y%n3gL@Kb24JIL&l3-GT$q6PK;7T@_LT3;3;a|e1CYYCC8iLsfrX`q}U^;>s z38p8Qq17D9)r^3iM9JAKn1w)hexp1)!CVA$w0Q~UG`Q;j5~xQ2!F&XZ5X?`opx_HA zf+|u5L9lSkH{pvCEJm;d!Qw4VLgep%+WQ$SP5%IbWr$ZKSe9P1m*of>{_+Gj60AUQ zAwlEXg<vIuO$k;eSc_m40_pa_ssyU}n{;cm*$LKcL4vgjHXvAsU_F9$2?lR|+PkrS z8z}W}NU$-%Mnh_wv})qrj9^=W%?Y+5*rLG+)HrC#1X~NT%@DF3fi(PJdjdKCx8DI3 zxD$bH{t~q-!O;Y}5j6K<cY?hI+=F0G0`)AQH1)mOhhSfV(MJG+{RsBg9Q`RANN^az zK?H{o96X2>%|qKug2M@pBsfA{j*1^;vK&Kj2EnleClee;a00>c117<V1SgH1@f3p7 z2-JhXklN|3O>ic`IRvWz6P&FA^<K^;IA6f?406Fx_y|ENUW=eZ&?B%3T!OBEy7`Ok z5d;LP|F_`;a{kwML-l`xSk|HbA7lhq5%dWzCCCYCf<ibYK{b#PWDJ4o`~(*@YvUr2 z!+)Dj;g=CyPN15<3RHwETLprvB~Xn3f@=w`C%8`26mo;IwdPF(KM~wa@Cv~#1oso% zN^mE^Z4!ICtal9fa(NfQ-30d%+|%YYKj8N%nkwS~f~N=`BzTPAA%aH;9&QU0uj>E$ zQWf(!!4m{e3S!<r1Wyw@FS(u}c$Pq#zwA-K7YJS=814T8zTC<Zyh`u|!D|HX5xh?D z7Qq`rc(Wyl{Wih7V!Sf|rMCA8J|_5p;3I+$33TTlR4bfM2tFgw|M^Rh&y|SY`<DdY ziSkzjY6K8`L-1|uZFLBA|0noC2tOM9XTli>ej%Kg;8((?hyO<K55eyQe-Zpa@aNb% z()@Mae+kDSG&i>WK7{%afN*@m3EEh~302Zi`oDaa2qz(&hHz5CDF{{nC!Ac7Tjg*{ zLIj+u{h-yB!>L=Z;M2-FovhQhIN^+h^AXNOI49xEgtHSiQL_=wLO5%?-<E0k(*LC% z(V2^IZo+v9b@LyP3FjwVm{2u;LKy_1>i;c)aFNy~T$FGzLeu>9PM0LSl5i=);|P}~ z+?jA0!i@-*C0vuR>HjMeE>E~3;R>ywQCrFAuR^#w;i`nA&0l|f;TpzRi*S9ywF&=2 zxDMgEBBI*9+`9EzL%?PW8#D&thQ_-w;dX?Z5N<`dDd84`n-Ok48lrCgmZO&{c5A|I z2=&R|=xpB@ggX%KBuRH{Ycmz@LU;(_u7vv#?nbz$kaw4L55w6@NhuLE7ewU0ga;7r zOSnJbexri=-X19Ag9z1AKpShM4kbK{P|pA1;e<!Dg2F$F@E9?UZb8ChhrGuVo<(>9 zp=$DkCla0{hC2L<ampYU;c0}Y3wVa{sz-o^KzKG`kMJBqhwxm&3x#$b;rWCYv>d}6 zA+!lC!j8txUI@E};}QmhUUNz4YnrY{Mu5r~5ne<X6BdLCVMeINin$?u!hCQk6_$iG zVWmJ_^Ozy~V#3RsOTtSC<&XdMJ-@u=5ME)Tt|I(`@M^-R2(KZ$lki%?TM4ftyipXc zm-Pn2zlreXp?i4CkbN7W^#5@5R{(@}5k4RacN5-2sQ%`Y@ZL6x@P1|J+8!i)M3@iB zs-6^t{3zk$gpV0!^SL}h_@wSFn)5W_+l0>$zD)S6gg;040-+iTM(0Jsm)cwgd4=$G z!dHd=+JGsSZxFso_*Tm_6~06G0ig_n@V%B#_<qYF{E$!`_zC|f>qjQ)6T;63KW+I2 z{M<x+NpD=juLyr7l>Q%nLnwVd{Fd-L!tckf`A5R0?f=w<x0-~%7`5LB|7mQ(-wFR9 zl=FXRrhvlrZ-EK_RkWVEIrPS9!^Iwt9`wc+djfis(VLLoB=jbtH}P1N^d=pOnw;L0 zjhCK2|4aB(db7Q$>CGU>H1wvWr+Pj;)&CWt{q%b?(rdzJQlRqAti8&fMG*ZIKyP-U z1?kN}uc9|6y<O<dMQ?3-bJJ^%<@3;6nBKe+G9SH$IX^ws{D*Qaq%H-aw+Ou@guE!d z#ps#-uf0psTUxwJ8U8ZL(B9?fttj5*Wz{2q-b(aVrMI$xtF+|i>q>7mdTY{Kou2Oe z?cSS}-dZh<-a7QQptml)4e0$x6m<Wmx4yYo8`9fYTpO9FP3UbV$fhkKww?m?wxqWM zy{+hNBe;45kfhtv+s<gJ{@>cd*-_S=WZl_tcBOYJz1`>?LT`6^`_bEj-ahp96xv?& z_8ushkpGHn-)3zPdi%@e0rU={cVG*uRej3(5rE#I^p2x<7`>zE9Zv5^3DmEE=p8kP zqNfId#2(v%^p2;e&iwRFpm*XBQ}us(rwk#d(R1jXPVYi`XV5#B-kJ2yp?4O&vo%e= znPwyB(L2Az>B$JtI~t*9)3c1rOaYZn{|cC%OHcKAdLBLL|H=-Ga`VMV=tV+^TOF}e zdO5v}UcY6wE_wyMa%`lg_b$CL^zNm15xtw}T}<yPdY6dKrSvYRr^bO%xPqQO`I{Q9 zrguHPYv^6uavGf8b%rm^U)6l0;osc2=-oo^E_%1pleXWx&G7G_cc-qfy@!f?H@$nb zxVpTL-jnq1r}wBxJwWe4dg|Cu?;(@rkpW*gkI{R)Md+FL|GlT^y-M$CdN0s>hTe1Z zRR7o6RibtTG&lK0dN0#^Y1FH7y<&2`M(-VZuhV-|YEX{=V!TD~?cor^e~)NfdhgTw zlHLdOK5jVlK9p7Zf6w&)-X{WnO7C-epADqweKBNzMei4SU(@?e$lu8NZA+l{Jw0{i zr>Fl4h~7{1ejbF2>sNYz(ff_w9}@e!iIwKB_wqMUQ{+GNRP%2)qGF?={vVA;)F9&% zK{Nr;<U|t^O+qvgk?H?!$Brf?l9xZtrADS8Qd2+`5KT2mK{PedbVSoAM7gHb4}j71 zL^Bep(IEeNL^BbY&aZW5A)1$HR-(CxW+R$|Xm&*wuM|J0$vC%&&ok;(x#knj{NmD6 zfM_A2n~4@CI+|z^qRogFC0dneF`}i37AIO#_)D}>M7sG4xD3%sM9UJbK(ri@>invJ zwjPyn#UXoT30b8@h*l$7muPjOHHpR=0YqyNtxdF!j@5hr577oh>zVNNO+6bDZ9=pW z(Z*x*hnj!1Inf?OTM+F?v?bBDQpr|CTN7=gqoi`8?ZmY`(GIP?Nw*Wxu0%U4Q0>e7 z{x{l<NS*u#sfqR^I*@2DBI)+g-bDKh2t@l59YC}nk!t=bs=Zfwj|UMQL3A+DVMK=z z9XbeXXhesPUaA_7BpT}f(J@38(Xm8l5gkW#QbQ&>Ue*(2)gyrDWTMlFP9f6&^Gm#^ zHEUZB(HWBN%(gb7vx&|pI!6(d=DD(-r}+v|BY@~ai5h8fq7G3-WD~_iT_TUj5t=&` z=o5t!6_}{zYag|FP4<K+CrXL>5}xUBea8v`OAV?rYN9KN#t>aXbP>_TWAiU1x`OC3 zqRWS~m|Ry8T_b|(6;J~bT}yNW(RD;)|NUolBhgL63PiUMeMNLD(Mv?P5j{k7JJH>u zrXB%^?iBkjlj|O$`-$!q@IIAJXMDgI4;tpfM9&dDLi7aDqeOD}*Pn$M0nw90PZK@W z#x^U_Gepno3bpd{g1;c^i^`?%;mbrH5WPb5mbhLedW}f+e4^KzwPg~$Y4~pwy(eDv zD*&Q*4gS6+tH2M5J|U9kAAO{71**AV$e$8@M)U>I=Pe>qU$#uKzb2lM=o{kkh`uHI zo#;EFpNYOF`jJRI6trqYKMg7TLiFoUmfsBL52AmF{%kIZ{v!HYbMzhfmv|gvEvPv0 zxSF8s@rkD-o`84~;t7c-CZ0%n+r6|3@ubA+wGXkG0?MAE<q%IrJS{QAQ|l<@l@ZX~ zz<4_18HlGJxZ3Ry&qO>g@yx_?5;wG2MSm9KolP!hC!S-leWjq3=OUh)c%EULcs}AK zi03C>h*&j$;sq67*S|3Fq5>|`g2amvFRlrivn27-#M1vIkhppOznnxZYoeAXUO`7` z&Pt>Q5wA?L3-Kz%PY|z4d_M7N#Q!B;op@{FHHbGPUXyq|;<bp^C0?7@^nb1MpHW#= z{QATjC`5ZVBHn^{W8%$-Hz797Ust~QAeMN`Hi~#Fv-fR?cO%}GcqiiRh*jq&-rgwh zI25}x@vg+Xv<idUOT0Vr-o$$lt2h6|WB&<IJk<Z=eTh#X-jBGsCu#%`AJD21>qh|M zgNctMK7{yi;zNlK(~0y>j~J@wDB@#@k0w5507?PJ5g$Jq)jVy*Cla4Yd=l}g#3xJM zq4R&Nnm_UB#H#a;N-6Lx;<JgR=f~#^G>Ok^ZQ=`vFD1T^I42$<mL?yoM*!juu}!Q` z{)X=oN5md+KrH8f{TYSCJ)K%3F>ywm5T}E@jX~TWR7hM9*OE((0OD%MHHP>i;!6a- zSSx7d%ZTqLzMS|*;wy-+A-<AW^?c&1w1Q?{OME@?bqbXGFPs}%oA@T;+lg-`zLofv zA%Z^qD@1ADL3}6iU522xNqi6SL&WzItA<akMgZ~sEr<BQ)=;a$A0~c;_%X2`)h=}_ z9yfRONs_6FpCbN@_-W#Ih@T;TmH1iWmx!Mueu4OTMb`UzQHyB(mm8eeod4t3h~FgE z&7b&<HcGO;CCs;t&btD>NBlqH_lZ9w{y@1Ti{X4k{0Z@(`M2Bu)ObH98JGAA;-84W zB>s;0E8=e&FY(uHk;LCBqxq-6?}^RHKmM@=o0a%y;y;OhA^we6Mu6u3PW*?a>An9& z+%){ZiT@c3PyUa@9R6EoG9Jk!B;zanWCD_jNG8-F?R`u1Qvk`NBvX=1MxuH?iJAp! zgYA7#$W$aKu&pYYhGcn?X-O6!nT})*lIclilGqv4Hj^0*b7qoRNg8C97BTp2B(o3n zC1g&Lc|~C^lDSF7>i>ezM>4+(*EK9ivINOOB+~hlg@t4Kf3jH1B+*lVWJ!``NL2qP zS-SN~UTOXcRI@;k6-YKES&?LIl9fnSCs~<fRdKD-a>QP(Sw(FPk~LdfF4r<T>yT_f zvM$MbBt!jQ-JkVM?1m&8OVmbfl-QdXh0RE|C)u22Yr(f5*^*={&D7bq5!bdP>hQ12 z(5@Xwb|l%!<l0#g^d5I5d5vT@l89t?l9NgHAUT3$Pm=$N;9j!sEvp^@B>R#aM6w@= zYWpPn5AFIuljUHN!$=MxG3S3>%;8PQ5dTP$qezY;Ihy2{A^g~uMshsKi6rXqZ<J3O zvQHryAvu-gY?9MR&Lla#p^=<1#5rroK8NIdl5<JS$zNBc-~W(Y*pf*s5|^YyBC{Z| z8=R!8rF4`>5|XI?PofY1V#_ZvH76#yjU*wtiX<hugd`)WNctpl>`(GmlcZD|)KN9b z#Ux`$E^3jn^Ij@hE+e_z@UI}bQZu!})g(8PTtjj_$+g12Za^T>&0p}FNN#TRNu>X) z?c8dR+ew<Xd<V%rLYDJ?au><nLu&VuJWO&Q$pa+!t3dtjdXVHHP1DFDB#)CkN}{HK za!IwK{Dg^misV^Ao|g3)gFi>|63O!dzCiNgAht0`UM6{!<P}A3m379~N#`YbgS6Sy zn<QV6yhZXc$=f6!lDtFm9*OGzts2SuBp>KYeJADopL{gL`J}N)J|+2r<TH}bbtRhr z<q-30l3z)_A^DNyTaxcdz8jnTLrW(4Ni=^Z`9%|S{lAg?Me;kzpF$XW3M7A%{7dqW z3Tf|TTSGby>GY)Il1@Q79_b{c<C9KEI>Bgd=|rRxkCiK(lytHILOOYClTJxGwaT7O zC98}8ooE`;X-TKkvKpL$bXHQ;{7Gjb{ePr0Yl1>%8M0?1or`pK(m7g?bk2ddF-Yeo zoo9fM&PTcy>HMTih<5?f1xXhpU5IpHQ|%(8%`A|g!S)`ei|b7_-;;Dn(iKUUB2|5! zbZOFMNSD<qbp6XWe9{$$qMGyns={BHbQMij;j59ZLAv@7vgVMzHtDvc>yU0lx-RMZ zq|*OY;Ce$e^$0+^VT+J%Ou7Z>CZwAQzNx`CZw&#rB;A@+M!?{!n{H#6+mY@;x;^PG zq&txAL@MY1QRdEuxhv^z=DzK&Kz+ydB;A*EFH+U>Nmc)sd!mMd;qOO!0I53v8$=)e zCFEeTM&S_BcS#Q=y^-`VQk(Q}(o;x}AU&S+NYZ0Sk0L!<i|G5Wnm_4r3e<U3|0g|> z^kmYL+H`8w{8LHKCOu6!r<0yZdd7f5I@JHub4V{FJ(u(X((_2qZ}l}<=Nb_mi?lN~ z-X*O_9nyr<CGC-Vq=At2BLHcr1m&;Y1dn8m_1n=jCCy1Q;WXPBdIU%d(o*4iM>Xl? z5<7<UBGOAqFDAW26Ex?tR;LLey@K>=;a@51RV|bB8q(`YuO+>%MFu+}HRu2ICeo)! zZzjEu^cK>)NLBMEy^Zt^(%W^Q+E)YKIizqmsTvA`-`mni?<akX^a0X`N#*>nqDH3x z=_90%wozuYkCUqAPx@plBKFgyuaiDQ`Vy&(gY-Gl7sU0vu0d`5#WsZWWztv0D<eR; zUTa+fzM*WD;!V=GNZ%3rZ3T{gi{2w^n#ucQO~d?v^n20|NxvZdAL*y0ACZ32kV!w* z+1ps9`I)HcDM0!q>DPjMrS%o(8`5t{$8P@V52U}7{z&?Z@P8uxc_`#p0e>6X>>s3m z3;3t3f3;-Nf5@5?|F)OPm5oC-?r@!C<CD!mHUZgGWD}B2PBszQq+}D5O)^L!v6Bty zOrdNgIAzNrgKQc>)I?}NvT5aVI<o1<&Nw64++;J6%|<pe*(_x0oNRPv)nuhGJK3Bf zGKbNeOBti&dC2A^o1bjHp{NB09I}PT)+Jk*Y<aRp$d)EslxzvI#TpLT;sd5!F4>5X zEv2OtVHv@f6@0lCCtHDRHL?}SRv}wS2rCbC$X3<iN@{howaC^G&YFrNKcS+wHrYA@ zgzP_L+mNkCwlUfI!ry>wBeD$#AuX9~6S6JIHYMAfY_nl6*%pSQ`ajv$>Qa)DZA-Q* z*>+^A;gfAIHSA!#JCW_&N|Eg{6tx@KUSzwI?I}@vw0y(dn@pelMeV-^-;eB5vi-@f zCOd%aY_bE%R3|4pi0ojpBghURJB;kmHblY?*W!wHq_UN9l+iqf>?AVj|JiY5Cz2gc zrkeji!7xuIJ56FwAv<+IAUmDxOtPW=pGp7M_vak4nCx7#F4=ix7TNh^7m~^Ozx~uy zJ!%9<wH--et4obIWFeVLrg}b^XK*zLjNKELYW}9$gsdV<$#QY25kRK<KUtxe3Xw+u zWz=Msl8qs|Sn$!O0J2Mr=4E78l3h-AMT;2xs=+1MHDphbT}yTk*>z;Mh}!jJH;~;V z_KljXlHP0-ZY8^u>^33XPIgCQ3~An_E*1ao7AL!x>`}7&$Q~rS-*_J|-iOE@Hp-6- zbVT7Xvd78v$-i-tJ!zOvlf6v#jL@Y2XU~znNcKFLngXLbD(WQ@^$OX$WUrFFA%SWH zkiFjW$=)P;o9wO8aOG9AKvFmT|0A;Z$v!0eKnafi6#q}#ivO{Y)hrP4&*(2o_Bs8j z$-W@_i|k9XAIZKV`=0D;vTw=089Sqy0!r-%ll>>M-^qR^`&IOtiO_zFejCJ+{b7>+ zX^g+=PfYd?{qe~Dr9X};sc*iA{h{~&{qgBfDBcNlY=5Fr<^Ck}Cl~Le^vxqcb7T8c z(4UI_ltav+!+(Do`m@oWmj2B2r=vfkC`?a(hBigB(w|Ain$L@VgUq75$~9|?)1RIG zy!2J`r#~nCx#>&)Z|}bX=P}Ir=&QC*e}023NMD`&=`W;Ym1~jK5O6X28`EE${>t>1 zpuar*CFw6ie<@)u-HM34tg=<O?*C%1AnS^<uGFlexeEO?>90zEHJwOBtuC%LT7>>u z^w+1qHvM%aR*wMs|DkVA{-e9wfc}Q`H_~c)7n{)Enf|8qx1qlo{VnOs`CsMI{a-R} zMPK^=sM@ylx1+x!{q5=R(AKP#RqRe?7rW5ko&K&;-fo(v2z$`qm;Rpg_o2TR{k?}3 z=ntL$`};|(od5NmIgqL;_#ld{=^spf0R2Pg|4jc-`nS_RjDAS}aQbJ{KZ5=#^pB)} z9Q~u{A46Xaj?t5I|5$S;kEeeU{S)Y)IQIQHS@`WIaw`2Z=&NxcC7nLB-!thC_5c1k z^i`{;f3B?O(Kn9(3cQfMLw|(6P2ZwF*7;xfT~n1y->0vezqq9T>(8!7|1$a!{epf> zU%Guip`SKPqae*+CCv>|(!Yp)MSl$aS}|L)*1VYhrIJYZ|JF<Ya{4#Yzk>d?^sl5Z zPXT>10+jwWMqfPw(7&Gk4J~36WDxXkrhhAaH6U7C$hVo;JLtbj|4#Z((7%iRgY;GN zr+*Lq`|00H|2`cx`aLxLzyA>ZM}_<_{YNxS#XctB<3q@k^k1U?6#W<IKTTiSeqW7% zrVRSe(H}keD^Q8NXuL1ee~rF6{L_E61;u_{Ry7XHUf!brDgC$Ue@Oow`tJ$h-IhTA zefl40vcB{G6T(NbeoS9?e#3A2ziRLFKd1i%eRbxi|E0<GwKBBMxAcFY|D6!NZ^PB9 z_&>_}lkWNbU&xoC|10^l^nW9tg#Pd34eby5f7AcdMExa3^JV)-8R{1Ot8?Y!kWWZH zF8TQ6<F#HLmFxcBT#~C1Kt6FxAfHq&CnHx4pL}xiDO#6YPDMU7Iiowury252M?Mev z^yL4Kd<NmqNG{F4DJ-8^G20^ZS;%J>!mP5+W@?^;d@k}iTbd!yZM^f6FG@Zi`9kFL zldCDvxX2eA@W~f$Z1P10h+Hm4zBu_(<V%n*IqFieL;XKrmV7hv<;d41U!Ht*@)gKe zAzzVvrM3o9Te(#rSLc87)kXzX>NUvMBwt&YYYklF>zJtjh-*Fa4awIRdxIg`M&z3a zxUt#wrpl{#x;gnS<Xez$OTMMhwvu&g@@;g5?Kdsoj(kV*?b}%L9fs=PiG1f4Hz{@{ z-;I24^4-bz6u~_dLG4bx{5Q0H$oCacj{x%h$oJO-o%cZU56BN9A4A^s|5M2iAwN<y z50&*WSq~>aqLmfFqsUJrKbrh_@?(T>EctN*LW2l+LW_`}B$p=}{1j!VYEL8YlAlg~ z0r?r^=a8RCF3n$;ceY_l^Uu#CKfgtc@`cSM`3QMO49noQqUkISc}DJ%_sBhR)%MB# z)+=^sq9XEyJeEs!mJ@F?0_0qm_sL80T)?9BHcawLkXj+S?2E|nBfpsZR`N^8uOXK~ zkY7fACHdv#S7@^4Uq!B_fC|^hwd6OEUq^le`Sr>*Dt=>YldHo&`Dp(qzm5DZ^4l8% z`5m&}*$Nt283Fk{;=0%9+)w@j`2*ySldJbX<PVWQO8zkUBg5h1ddx^YLH-Q6I{cGA zMgDZFX1vb|`8o2j`ak)L<ZqL|ME)B2%jB<;zcN+|rS>}cn-czpcBzuy8nWLZf0z7y z;iy?KP$2)1Vm9*sk^f2l5&4(o9}Ddh@-M{rl>9UD&xfPhaPqInRg)+Gn*1B`Z(9zz z9RBs^@&kF(-hU+jh5RS-p9iTW@K+Tg^^pJG+T?#2{l6%h{`@z^gyjEFj7R=2#W*Uk zFrRO;{bKYj5XJc7ouJhedm@U7DJE?+DMsG{Q8cfB)cbRaDJW*9n37_8im523p@3p) zU1wWcF)hV(T2uBV$}>>RNHLRUj^h7MytBxv`oCnEonkeLIVhH-n3G~Yin)X^x2*F} z%sZ?@F+as36bn!+OtB!vLaol&oJA=Xm+-|juI|hdEt6s?iWMkS|EE}nVmS)+^2d0W zZw<97!ip3tQLI9-@(^d$0f%CBivLioA>=hF)}dHSY&8fpP2J3O+i;5YC^izp`V<=& zaKn~Ku`$IK6q`_NMj`!w^zLnLII91P!d51H8_KOHwxxKTVmpcpDYmCLf?@}X11NT+ z*n?sx3E7!qH;P>-c5T&+!tSkRb4jr$#Xdq-BY<LW!}%}8eiUjD=vd`7Q$X1VQZ(oP zLnP|pmP2tU#o>Y+Hg@2V6sJ)fMR6j<(G<r~97A!eR+bbL$4lS|8dNEy{}(4yoMNgv zb>J29=@e&BoI`OYh3fefXN{frT#EB4&Qnp%Kb`0TV~kMTNMTX*DLND(g-zj6bSWII zqcmN^m*%e!{RlwOqev(sNgWTRNCnA;keuQ&ih^PcMM+V$E{dW4UtC0S3B|?ACDl@> z{%^8hPH_#z6%<!BAjOr2bG0s2eVW%&T;E($TxX(g7*e>2;vtHgDek7Yh2jp1TPe)R zzfk?(MBPbomzLF)+(U6cg=zl9eJ1+@jY09CCacsBQ#?oU2*r~Wk5W8N@z_9F$WNHq zrzoCj0x8TCP*TsD8lI<kh2jN@mndFTA*1EJJo@}tyh`z!_BMYxR=h#k2);@2GsRmJ zpHaL`@jr@pDBf>q6z|Ha`#;48Z7juy%Fy4CkA(9v#U~V>4z?!X=M>*jd_nQGTz)C* zSIsIL`9>~f1ZYH!1_6Jd_>tnLmT40GLOBt|uM|y7|Bd1=Vg63>2gRRbGyfLXKMHJ> z%m1TP2Y$+ND90Vb#}{w{$_dA+yquVFI?72Xr=pyca&n<H{a-3Cr=Zkt{&j67l+#j9 zO*u`=(QA8)%IPJ12FjTzXH+h&Bj<n3nT2wB%2_Fwpq!0z9toM9at_M5DCZoCn!61b z!n~9VQO-v>e+yDBK)K+6(3D5HFy&&Di%>2)Hm(MNsb4(;P%b6w(v+(0Q!dkb1zfHr zQ?5X{4&{oJt5L2*xw64mF@_!il&e#&MXCCK^N(`PA+@zl-gPNAq?Gf2xt`G0r_{~g za5kdcoN{BzO&f%A6O(B4{XgXvCX0*!McbP4b;_py=ak!0o=UkL<pGr2Q|?B&gXG$g zau>>-D0d#zCMnDaP-X8<xew(YlzW=Idr|J)+NQ$)Qtl^$`)XVT?r*#YQXWfr5akh+ z2U8wKc?jj9V=El43s99GNqIEoQA1Md{NG+u9@iL@$5Wm}c>?8$I#7S3PNr=8zdEQ0 z^E67A@^s1zD9@mj&R?EMDUSf{sk=Of@;u6O2Q@SXrG5&aypU2({^f`WTBZ`4(xGf$ z{^)cP=usw=K4p*6H2>0^|4Zrr<!JvGO&I}YCgJ_I49bG?Cd!iXD$0uTVoKHjDaTM= z)Yi~41-yjvQp(FIFVmpf!WERd^S6A;t0}J&{xz~*Yj8RLs}S`Th*H1*r@Wc+G0Iyg z@1eYv@(#+|RER2LXatmZQr<;*_n;mTxtH=mVcti1Kc#B^il9H2hbSMRd{~1@@KI&! z&+&1}=O~|`e46sf2Bdsyi1`eq?)*mWdCHe5U!aucueR{gklHJv@G9kNT140I2GtCd zZ&Ln3`4;6jly6i1kMbSL_a)?AO5OZhHOdbtrTObRKcf7c@?*+RDL>KTs@l(n>@O(4 zqEyY_R4ea)MlZjm{EqU+hCul}<qtzl8378{PXUy_QjJgfn~;B}{Fm|%%D*UO1n8>% zrj+JCxZBnLQH@JAj#3`vt;W;!R1;85MKvMSq*N18>A(M>nq<JInv7}+Dm4gN1*$2B zq@bFXYU&1|k`XYPWjX<;H@Rk{T9j%gs(Gkprka&Xeom`dhSX-Gnp2`?mvs&kJC|Gz z_5W&Kss*X$6MTMI7id=XulWvC>JflyVObX$!WW}jiE44GWyGb<|5Qs-Ek(6-o6BTe zmTCp@s{T*4yunv&F4aGkWo4?hsaBy{gKAYOdFNlPHmoDDYs$KoiCTwheX4b-RP$G4 zCAFUMZa}pW)rJERs*S01=Wju(%^1^cWOM3GskWecm1;|>jA|>Yqo}r~+K*}*sy(Q- zrP_&VJE|S2wx=3>^E0HsGu3WXyHM>q097$+*SnjHds6K~wU>Z$_-}uXs{c}%!@s^K z`%@hzv;(M`_x}freNeMDQdEafjn)6fE6)OzdIdyvq+uRSbph2eRA*2fOLa2Uaa8Kq zPj$TEoJe(2Ya8Sgs?(@W9R(HtbmKjf>O88msLr8M<6uCeI@fTd`Ri&gr1GdnsJc|D z`BQbM?El|ga;V&a8kJ8auXL(_DjZ4?Q6(bMz5;6Ru<HM^@jlhvR5{hPR0Y+gR3+6# zRF#C(RAaQ1zVjCgeu)NEZI@B0o=<f-)fEF=kgKS!rn+Xha;od7Zl}7Q>L#iigm&W~ zit1*nTd8hQh*T&983DS0I|R8?iodJnP~AiIB-OoC4^gSZKh^!RK0x(g%Q4J{sUD|# zgz8a)$oXHTlUEIuIsaErQ9VcXw4y1&XJpk=fa-ZF)$plapn6epq&z`hmQ{@aDe^Vy zrq{hr^)pq||39I6lj<F+w}kd~OB4HDs{c{FNA-bRzOP;C`}yIJ{zp_FE0@;)l<IS; zq5fZeLG>NgmsH<SeML1^^B3iBP3-qnKeWnJKT`cP$Rd^hLOmYUuT+0iN&l~Yr}|S| zf0!usP%wz1`iJUY>T#$I*nVpDxH@A!KJ~=Z6Ev696UsVK>r$%%C!wB{dUCNRYhBb+ zP>(i$RX`2(0@PDet2RzO4fV9tGgD7TJ%bRYH?cEP&(zwwP8DuW1@)}db5hTy2uf#m z>N#4weTbu;i+XPAdBv-q5k!1G>iM;rMi!)AfqEh8#i^zL*NaduYWRz_hKMXdy)5;T z)Jsz@HB^!s4FgT;<%FzX0a33=y$<zC)T>jkOuZ`gDr56kYcHwSpkA}pp<atxpZpE7 zF7-y#|DoQ1dOhm(waDPxTk8=(y|Hqsd$Ng%-HiH1>ZbpnO1%a3Vbohv?@hfG^-k1V zQ*Teb4fVEKQ^juA+SEH3wH*zzGxcuNyBKl(2td6%^`6vwD15Z4y$o$1>iru9>i<&j zYozuw-UFx)7Vm-7()`UWr9MRPLk;tA>JzDtpgvacBV|2``e^E7bYA_{Jx*N5%X&hy zs(;#b67|U~LT%mx)u&NM)TdLANXQw~XHuU>eHQgOf}E`t)c5e*)}}t6TEF=b&V?q0 zMeR^`1hf@d?Y%2TkJ^<>k2<9GsRM<#H%*E62A9+^^%c|!^%&}ux-WrQOQ6oFE9!!} z9E2NJZ7R8l`cmqPn@ei*%U@+*CQ_FxzGSDqlKNT!uafm@>d_HEeVu^UE3(?l4a!hD zH&K5@eKYkN)VEMSN_{K!1Jt)s-%Wix^_{}M!_;$E8z|sC)b~-}J3s`yzrCb>P%a;m z^<irB{$J;PjQUyX$ElwZ!V^-A`W1j&KHaQhJY$gOs9&ajp85slQkB0*t^e}Ja9*K) zjr!G=AmOhoTl3$f{)GB1>i4MMZgJ{&sNWspyx-W=A5ecp{UP=L+StKL{jtgQX&XiT z8TIGXUkq`~?|<vB88a>QH;fsV`djKhsK2BBnfiO`A7u-A3N*3QKeY<fzfk{1t^N>5 za`mWxZ<9*MpVa?S|0N-RQ_CO!%LY|=qcf)YH;&jnxg3u%lQU*~#!Mua6UeIH0x@P{ z#{7R&oCTEgHuLrWZQnBe%I#NXW@ct)W@ct)X681Iofu-raT0HtnVFfHnLf`*%H}!e zIXa`6J9kFP?v?CpI}x=B2mBhH*i5NSN)2k0RZjI!Zedbo3TjghvZzf>ZB}a2P@7Sa z(^8v`+6>h6D**GE*5s2NVwj2A%#L{$S8+CK^HH0f+T7IUpf;yTp*Gi;x${t)ci^Em ze`Ql!K*t5CEo4Ks?jm>-Qd^YT&D0j7wkNg4sjWe632MtyTT;N1zLbtj>*((PwdJU- zsGjAitxy^Aulm`mtwe2AYAYKLHF*|L*lNzRx<jr>Z98gfQQMH(+KO3++IniN>$29T zwt=x-)<)E}q_#1&&8SuP|4ohG;WwwY#h9M0sBNR1TU)=ZXj@}b+n(Ca)OL`m_;=KC zC!JnHZ5N&HN^N&)yQ$NxaSyTWy7r=WCbhk(9Zzi^YDZApm)e2U_M^7Hfl)g^z!rZH zwL_^LOwB64!yHEK@BwWFrgkK?W2hZP?P%+_49Ch;x;@VLshvRWWNIfm|4GKLm{X{o zO6_!Nr<n#!C)Cbxxo1(kg4)^CE}?b~wezW+>v+y{JzqfWB4xYKl1Ozq0vzB{jb5gs zd;ed%lG+XGxr*A=)UKmeZRxcGhRUFJy-amoioB89O_d@4Bzg<AXQ|yvt)O-rwT5DD zr&d$Lqvlhq58(rosL>|1j9N%7p%$q}#NPm@wTw+o&IPUI^uH$hPpxCRqSmE$AGIE} zd#LrP-AS#aHsZ2W{O#v*mnPnALNW@EJp!oRPwio952*7&9Yz0Ll}D&ON$pW;k83lJ z8Nb@1|B8Q#nu@>d%rlZ}JAaPa_tc)J_7=4lsJ%w*MQX2T%1b)FY}urrS6!CszfiqF z?M-o7wzsK$O6?tLA5wdl+WX4z-cUdKC!mU__7Sy@safTB44+Y}<o$DMqWsjpaQ?5T zeLdjO(6<s2%y$m+1GRst{YdRM_5Y;f&(waQ_N&1-<nPq}qV|WI{yDV9zbl*CKQ8oN zW#Co+{)Z>}k2f~nI3{Yc@W#a(A8$PCG+lWUm?_>wct_z)jJF})BzTMAO^P=Q-eh=F z<4vxd;7y4)#bAMWQw`Ygroo#5Z(6+R@unO29smEsn+b2mL9X=g&Fp%c6>omL+3@DV zn;maXyg7!ET77Ojk$t>*9Orz-Q0D@83#+l9j_wo?e02mYI)q#tZxy^H@Rq|{5>GYX z6aCkgmeKTO2i5VG$6FC^g#m*CR#LDY0kV))@z%y$O+%~Wt*M563cy>dn#w=(L+-7E zw=SNX0!p$z-kAFDZG^WY-o|)aD$gc5ZmQ#Ec$?#mssG+qcst;U_~UJZx1Ac>+9il{ z`+=<$cf#8rZ)d#S@kIX>zboEu##YQ8c>CbV`yaf$@b=cwH8P4vF8_G?^4~7%0KCKS z4pgdx@D9a07|-dyVoa_A<P^X=LdPSGAMa?qCf+f4*WewCcM;xkcxT}qk9Qj033w;t zorrf*Ra#PPC#T?@YHZ`jJH49Xoq>0z^$WP-JR47BAMYIF$2$-20=)AFFuV)JR_1EN zyBO~hJk@;fQsc+F9Pdh9{uQp`Re1Kzzr$RMcMINiN^-r9H{jibColh9*3Aa2(OY%A z4bR8B9naIL903N8r$>P7x#&Nh91|vr7vepN7vbHB7vtr4iDFuK@|`bU>ME-K+s~_m z*T*Xq(8cQ+w!w&3;*H?lG4LqzF1!cv?#8<h?;fpU#b53Fbrk)Vf40y=cn=#7o_z|y zdkpVIyvOlG?eU(#lgmHeQ-ehHKZExy-t%fdCn5P9Ul?HUUc!45?`6E#6!Qw+tER59 ziT>lgp^1Zj-csk=c<&7Sc<=FGg?yh*^+WOjarKk-A&si@kMO_1`<VKVc%M)|74K8( zl{S7xy^_k$@&3fC06*b<iT4fOSB4YMo&tE^;{Aa49p3j68vXQt9IE~^o}LBXFL<Lz z0N(Ev22b^0bMgM7J}%zh)GK-a2k$?;e=Ti=tXKa;{0CJey*>{0{|#Y8|EZ5peM0J1 z{3R;RiOkkfpM?6%)F-7b@=kp+>XTESLTv<WKH2(|#-=_s_35ckLtWkiiBq!d5kP$g z>NBcGLpFCNmpcpfxv9^pfZ3?eL49@!X%*^oQg?s<V?FawUx@m=)EA&WA9cC>+oG0v z!J!@&roIUEMaKjzPJMgoOHf~f`jXUFp}rLL<*6@CeOc=E@-HdX4`h8glS_RC>MLoJ zD{6b9gw);pf3a7kzM2ECZn~nrCiP9IuSI=*>T6S9SF_eJQRQFHrEEZbBkCK<)GlOW z3ls89sc%JnGwP!J)HfdrZRzk^Q{R^QHiM8N<t(TG)OVnMAoU%o@238pbljQxF4XOt zf5)>s^?j)CL48k`yBGDnP1IrbrM^G){R}{<4j8fzqJ9kZgQ=^|*AJn7D0TPc@9fuT zKSxkMN)wN?%(5=~7Kr+>)K8**9Q6~ZA1};y6(<gC%{^JiQ(RZ4QSVbfo%&7G&!B!W z^)snoNc}A8=Tg@fL3I^>%XS|1A@Q$YFx1IKuHq%sucm$}^(&}frsXb|kTU4>O6phH zMA_$Ss9#V0S`CT*4<T<*=Z(fg{buSR^;@XdsozSyM*TMG_RY^wmYf9@KXqRW*`<Jb zgL>0q>`zNXUGDkRV;%JfsOuwu<Yv^n)Z5hM&QCobTB#fXnlgF>P%o*!Mty|(LmIk+ z`kmD8r+ydpd#T?|{hk4X65dzA1|I5i1W=bp0F6FO{b}ltP}iG({ZZ;em;d?`)Sq<7 zr!0vy`3&_JsXt3y^}nwAFa8&XFfUPmh5E~b>eOEq+tz)ZdL`O#P#3AE{-!qbmfCMS z%)8V-P|thR-#1R3en|ZzJC&jz8=Ly4)W4(t8TBuzf38S-`B(cZ>ffmGwZUt}Z*9ZU zgPa1?e=t$%Kj9xv{b&4TssDms3F)u+<5K?(e=O?1Q~!thAJi+^|I-pm`rkwLzxd{- z;y>#&pQb-{HN_uCN7a9`C;oW&6RLB39qkc-KN0>E_!Hw#hCd1Zq=TMi3I62xjOkJF zml9JMKmIiMbKy^muRl({=s*7S_%ql<;h7PCR{WVXG&8<^^Wzw1!=FP#dISi5P6^o+ z&5gep{yg{#;?Ijef91!YufjXP0?t?ne-VvVPXwYi%4tsl{Ka*;1pZR^OPZ*Hm&RX4 z@bdGc8s#sCzXksC`0L`YfWIdGiukK&`bzjt{H2Xm@mI%RO>(uIV%)a?vJdk2pZNL; z$hZ2BzaGAbJpTIl8{ls^NXK{Y|NTwyH&@K2_?rn}P(lc|#NQo%D}2#;{H^g-|HZcV zfBfz7cf{XeXr(*h?~1=O{w@Qjrtdc3$KM10VEjGt^{Vghg}*nx`~KH%>3;YJ;_r`t zz%Y+e9b`QChv@WB!;F8J7}EI>_-*_n@vp%@3jZAZqw!D2KL-Cq{A2M?z&{RO#lI@& zc2#pv!ao)NWPGdquGVR$ikqH+e<uFf_-76KmEm0ci}25@{P^eN4=KNI-~ZrWjDMK| zF2T2#f1O^Ae<i-X{43j4_+#Gx{cG`S_}Agzf`2{!O$xg~)1ChNH&;{Bs`_umzfGpH zIk%e-zK0*;*YSOW#19nQz;D`I`&mTzEqoDw1&IE;6uJN7%d>!na{OoUJNWnE7x*Q9 zSN%QwzRj}85&Szfq_2QvukOMZ<;TC<An}Lp|Ni~>58<o$`&Rrl{bBsa)ObY4M_umY z_)p<Kf&ZlG&2{)R{xb&SJkR03uDQ?a_yYcm_^;r<gzv=P_WUaTYh&iVf&UKvo8puu zsQ&v-|NVFIKf-?xUrz!5{Xs7Nhpzg^_@Cl`Vi+nX{%80i{sORdza;n?|0{w6@V_Ql z1pga?N>0DU{~P~1{Gai^*9JuV@qfhs$>chQU-0FskN+!vrT@Q=$^T~s!<R3DjUWFX zf=bN)B^U?)KZ3CY5Xc(U5dAk`0;~T7;|@8;Czyah&H}|xG!&YIU?ze|38o^Lj9?0a z$*U-VI|8JTz5J_xYJwRErXiS)U|LgDIj0}u)V77hz5*hcnP3irSp*~gSqWw%sFdF* zu<2?}g82#NBA7=pa~nc}c?ssTg(UqNf&~Z`Qq0i(KdAKI@GMHOKEYxHD=21hf+Yy_ z%}=l-f&3w;LoP$G9Ko_O)m+6d@1iRbtV*zwI#(8_bS@`?u6H$pwFy=ySd+kszy5>} zxWE4o)*)DrVBJAQV-RdWusy+s1e+0Tq_lc81e*|SItrF@n-gqBAP)ix+tM*?O|UJ& zHUlt$`x7AfymlbionS|TT{LSa9e1{1q1}~WH{mot&%qu9`x5L)u$S}fO|XvznC+6R z{Rs9Kr`>@A30edP5nMoUFu~~rhY%b`a45mi1cwnENpLv95rZa8E`dA?R8E3pDuduy zGgbR|f>Q`iAUKKO#DQN!CtDs#IaNKU834f<Iz5x%TmsR5g0l(E8Lms9`X8KcQWSF` z!Sw_e5nM@dF@frTaEXTO5kPRc;DzuCG3<6-MQ}C2wFLUpJGwvi?|%qxAh@02MuJ-i zZgLDa5A}a5!EMH0ISFb6O#+X=C#Vk<3JCP&k0~L@kRaBS$Tc%0{y|FcB0)y*AVHhp zPJ*1EPtYMy*$)asPN4UHSz7hmR1(}#`3XjBX}iq3)Ok0-eFXOq+-v){(fbKR{0B~g zhX|e_c$h%-KT!P-oc;%o6Ufb<;0cpO@D#z*mcep9tAOWpe4gM18`UZVFA=;&@G^mD zKEW$GzG^T8dSnD|sPj$ZRQqj$PYK>3_<-PDg7*pD8$^vk@FBs+1Ro97qKWof0D{kS z`Z>Xu6@cK2K{~-#CWYV|8oLmDOJfm&?`TX(@I8(H5&S^#7r~DNzbMI1I{s`J2!18_ zgWxv;r~ht03I24LziEs`Q0f1F1pgYRkTiyNzG3yB#yGa0#<(;lq%of01w6iv6S(L^ zG$x}lF^x$CP%Wx4sWB8bISniRG^QBxPeo%^8dKA#@YB$kPQmsFpdtECV+O$wR?(P| z#!NIs_G!#){pPc7%tm7_8r2bCI-G;XoW|CE=BBYAjd^IyPh(yh?&fcE7qC=9yHI7* zu;Q=wqBK^au^5fzX)LauC1@<8#*#FaqOr8u2e%tm|7k2&VYIp)9E}w<WhELa{#9vP zeN`G8&{$2QtJ7FZjWuYjIiRJnHjQ=FzfLtO=Xx~O9{@D8A&o6)Y(!&Ioo-BH69d-i zW;$*@<k^zO_B6Jlv5khdHX$0@(%8<yM3HFhKw~E@x}(GF>;P4CR~nbl*p0>+G<K(P z42?Z#986<R8vE1Oi-z3%Y1p?wH1?&jpY7bP<p8a6APsx-cU2Cdakz#K)$uUrKZ3@Q zhJnUWH0+z7N_-S{ERB=YIF82gG(`4koM3WY*2(HTg~n-Woa+3i3(R(PCXMrHsQx$3 zR@gZ-&Na~rPvbn7b%91Nbcq+~^kNsiltxJ7G8)&@xLiY5(71-il{Bt0DeAo1*fg%C zVU^!`ZlF=8aU+e}Y1~BPRvI_cxMh&5&D=Ja(x_E74Np9FEk2DVjli|kuweTW7}2<c zMogneBcaiu(V~&jNQW5OG~AmXn<e5;Lk<GNMx*ceOAU=U|D8I$i^jb)?iP&f-aRgQ zAB_jpbH7Pf@PjV;FkyqnBQz`6qcpds@fgjSX*^EjXBtn?c!$Q5G+v_d6pd$T=n)`| zJ>wXjqwxZb=gm|`iN0uR(Ri80>oipS8?VxM&Gul|_y&!)6#wQ>Z*RNYcWHc0<2@Rm z(s-Z7M>Ia5VQ>Bp^D&K2MoY`WKcn#_jn8R}Dt`s0@s;UK?MnZ@*Sg=*_|8x{!XIe- zNW<O#?dSUo&GBjcN^>k4ztQ-M#_yW`2MxLW4>4EzFS1YLA4m8fO_3DAI3&%nX^um4 zT$=wI_-U&Co1JM+KyzxE6VjZF=0r3_`DspUz%=z0kVQ^Ta|(^(qEphGN^8k4Y-P}# zhUN@3r&ZW=G^aQI!AP^h%t&*lfk(4up}7LhS!pgxb2gd_(43v-+!~sL=A1O$`+wWX zJT&FzPjlXC6e{Ui-UT^(L7EHETtxi~Tffa+jOH>l7uV1dH09b)b4jB)>Reh#EO=R( z%b6+7<(+dynrqWsiRPL#<p`j;3eDANu1a&YL9PS4M*xAziJ;}yp}85&b!l!)b3K|H z(9|Qq7Tu7hee>f;ME_~ZabP?;-JIqYG`Dn|TS>?=Y(w)Jn%mMmn&x&i_oul%%{^)E zKyz1`JJOUpKTSCclxi0tvAyj^b9d+8W5~Z3&3$R^t@wQm*hFdWXQnh&|C<NWJdEZ+ zG!LP9u%VJsDvJKAaX3v;ews&EDzT4p(PL<yP4ifqr_(%+=7}_qr+LBvSs64>qIn8U zz5Lr%oJ#XFDKy3|ouS|}bv(;NX`Vy#Qkv(|yoly`G%uhzdjD6XI|7;)3!9X?#4?M0 z8O_USUa9@tS3oqcqG^?1Qe-*T(rnPYj^?e(aJ`N<(7ci6&1&l-fFN%Xa=VJ#XnHhn zSAgih@$0ls)4c*}1|~$aNi(Mz(rnR;#3>!dIwl6Ac1kldQ<`mObZFi|v!L0h+0~wV z5;8@lv67}0f8(clC(XNP-a}LMUy(HLwJB2ie!}HwK0sJW%7ZjNqxlfc*JwUW^EsN8 z{y#;t(*GxDK1TELL84aIS3q_jo~HSX+mmNab;UeS^Cg-uxPD$7FwlIN<|{N`wI0j! zI?Z=z>ixg@W)-6O7EP=Cj{jYnA81G(0cgH&7-)V-^JAKN|F>+P(EQY7x!lib{z>x- znm^I}lIHg`zoPjq&97;GGmKQ`?;P_F&iK*s{7myVn!ku&did4(MgP_Fhx7bJIF@?; zruh%e|7iX@TB!QeLi;mAI5y#UgyRtY&*p~X8n$XmsF(k60`ZvDg%c4jOgJ&&?1YmL zPD?l`p{PCKWQ3Csst`^=I5pvvgi{UDm2(=wShnd1XCa)Pa7Mxz2(91X31=dlc|fQo zX4P@F0U_ZWgbNVPNjNv*T;kVO3Fjf4kI;#~RwT6gPq?7+EHs2)gm6j1MU97WF+$b< zaEUP+SV|L@CR|1hbN`p4jc|Fw;|NzE+?;Sl!nFujQvb??s}rt5xN0@6*a%k>PTc_o ztfAwYF1j}1#)Rt-ZlL~k3D+ZB-$Vz^5N@c^ja-)Kzj`*+aWjJ?+=6fq!Yv7RCESW| z2g0ohw<R2U{}XOUxV_;qBjJvOPWi)~303@E&xE^aiQNY&gnJSmLbw;<euS$3;XZ`> zT7a&UaDT!B2@e=r!a;-w4@fFM;h}^_6COr*1mWR>5aE%8M-37yKjASF72{a9(&Gs) zBs_ueT*4Cx&mcUB@KnW|OgQFO0O4tbryB;XtKuK({XaaL@Ei%556Cuup7O{MKq!v@ znspK3HH4!7gqILrNq8yY<r=!oU^Hak{}AdUfPn3{0EE{P-bQ#G;mw5C6W&O8!<coQ z{)e{+q2%6bm<ewutgA<k0788Pu-*FVarz%NiK-GI(Gr9a;irT#;j4rR;r)ay!V$uh zuprC`bIom=HV8Y_)Y)A^x%LzGoToH~I`1I7TXXLuylar9o_h%ICA`l%ZIhM$KSTH+ z;p2o45k5*--TxmM5E?MyW3JW{gijHU>c19!+C`rwe1Y&e$&%f8-uYi7d|5p&8A7#R zanaWZKOlUa@NGiX|4{Wmlm`KWQT#hPzDxKX;rlLhO$8wQP(vT-__2hf`X^#Y^fRIf z2|p+NneYq3?+L$Dz*mIdsPVN!eoHv!<v&#Y7q%Z2`ICL-4Sym0hwxXzKL~%*km|qP z)j!qq7vbNA*{$?nqOmpfAJP92$?0GhSoIl=Lo^=I|A@x5PSbxhK9LiD!yipVG$YZ( zMAH#XLNq1Oq(l%+Ml|^_r__q3Fdm|*h^DrkMAHyWJ7$&X6+DBEqjxi+nTX~knwe-0 zqFIP$BbrqRUFSrz8=GiOB7GK!+*5#5pT|Y#BT~VS=C3?N3poEmM2iwFOe9YMvb}bV zixDk8+F|vcGg^}95Td1sHYZw|XdR+uh*l&L{U=&Z$K{DuFwBl;C8AX|q>lj6Dke&_ z8qu0Ws}s4Kzpc9#(b|^5?*F<(8xpOjByt20$)Paljc6mHjfqtABRv8tD)~S+Gcckp zh;|{`l4x6^t;8uLTkE)u!Kl3*(e^|;YVHokPqY)!&I62wb|u=IXg5vSooG*@Jw^e- zyqD>XXdj{j6t*wXenk5lzX1~+NaWuCNVoP8fap-7^N0>3I)><QqN9k8a4AO)3K1Rc zoW~NKPIMg6DMZH;okVm3(TT&gwC$4}{?y7KI!&f_htD87Tb*YT>E&NP3-z2sq_2Q1 z@_eF8)PDidg_15*7b*Y6gNj6#5?w}grA9B;(dmD56;buGbhYG;R=L*LMAs9KOLPO# z>qIva-9vN}Q9^Vxkxz6B(d|UHO0Lws&5#hO_(vX5br#4y#IXfLmEh~kAHg>rJ|c=O z%>LB1h;pK|auQ_{62s|#)FB!nDv0_-U80`N)j~w7|CZ+tqPwc<M0Xktk>3Ap^j@N8 zi0&hLl<0mf@c_}oL=O@@G}sMIe`K_Tbn+O{<3u9+L{Atb(NjcL`CYANiC!cU{U>@} z#}@`XL@yDE<`cc_7+#gAfM0W-H;8^DdXwk_^}j{*wi@pcy+`z}fjRK|&iIh%E258x zJ}3H^=u;vUf4e`QnJNzag%ZjUP<e>HCi<304gv$v=yycl6B+RzDAG?ve`)k*qF>bb zmFRaO(SP|TY=02_Ip9&x-^6B(|7gm;I{s(zu^a)!dML!>5dY8kU35I+)riL@o|AY2 z;;D!yBo>7yo``s2;z@}o5wK~#Y9OA>R43NQfmp<!cuL!n0H!7uc_*HRcv|A=rO9|Y zmnHgd*obE&o{e}WVtfB5o`rZ;OEp??cH%iqiqg(Syg2dP#Pbu2_!G~o<9tJy1&9|` z=Yqrw4fVDN@nY&<)Pl{=ZM+2WO2kVNFGsu-@iK~8+F*#y{oj6k#LE+}K)m9Z3@ZMy zh(EC$2X4Kq6Yog82JuG3a``7-i+Ei%<P;!Y$AF2~Bi?{m^nb7e#2Y%EjfuA<-h_B_ z&DvB)r~mO5#9I?@Nvz^uEy}J-#a{`Dx6>4P1R%EJul7#F`w{O<ych8<#Cs6$O1wMq zZnh1_rr<rRvGNn|t<!yU+}AkO-k<m=;sb~e(dmK22N54^k6r2N8sbBVk03sb`0zoZ z)Dl{&|HMZVAE%yUbUap&l6ySyiOPJ!AeZ<g7d?e+Y~oXCRU360$>GGOlT1c@2Jsuj zXA)<`XAxH-d^Yi=#ODxSKzyzeo=1HCfK!WJNPID|h`;d@%h6z_#Fr6YMSMB2ee<Iv zaw2H%)x_7T$I3PFbrQ1C8;E`48;M2giEkplnOI-`jPl<`TqC}HD9a<R+h#0JKpYY` z42HPrdW(o##4&MVDw>g4^xxTS;s=Ry;t}EwagVq#QDS)o<m^82kp9Pa5Z_09C-L3H zcNwZ`B)*6E-oezhaleKhFn;2Ph@T^VnD|NJM~ELMew5hW{2k^AG3@G|B9=El#G|JG z@v|=aJn_rKFH}?F7l~goeiwa(_%#jb5g;V5OUN?6N&FY_Tg0CezfG)XLHv&5-z9#J z_<e(P3;B@vGvbekKOz2DoVq{6pIX=`^B2TF5`RhjHL?BjSC{Y&@%O~v61)4q?c@hT zrI??He<S{x_!r0jtMDtb8i{`={)70>fk(6cCaFRq{yJ6tkDdM}W06cmGB(M$!jOzZ zGI|7%j7Ks7$@r2xsFF-*sgj9FCe^G-Oh3*)Imy~2kjzdp1<4E~Qz~pK9j7LlmSh?O zR?l=KatesYG?|D^GNX<&k<6mT%q}`B$!r#H_Bok@WHFLCNfscPOTlxK%&W#c21zm> ziGA}ks710M$wDOh_n*na4(Y^SdRUxf6_O=LmL*w|L^PjdDbq=XCt1eaxJZ^GS&?LU zk`;#3tOBn@Qi;DF;<npWN!B1)P19Ews?ojGBOqDJcu3YE*@<Lbk}XK|{-3N*vI)rs zB=Y7*88#x>*mUkZo07OUKZzU%#$SyjTas)=vOUSxB-@xQl5I)0vkbPw9UPTB3uxlb zBy!0o*@a|RHFgt>c-*%D$(|(pt7k8gy-D^}yE+2g1t!@~Qe@K(AUT-iK$!}|LB_B4 zAtZ;A95(PM{s@w1Nsc55NRA>A9VR)N<QS6ENRA~rf#f(z5&!Y-6FHIO6q1ujPPS~i z79~8@ct|S!KbzzXk~1wv81xZ9jB`lNBRN+>+PTZRfaH3T3rQ{~xrpRa61n`7xR?K8 zUp7b~xq{?s5)prrtHiHtB-fD0DWJKk|8}=;P~?pyx0BpNax2NrB)1r(!{0WTlGI2< z`AIw%^~JEv4U!R(CW#0*Nk|frWF#?3Qe~;LMUtxR&Z9&w|0Fp{$6y??tN5Of3tOM0 zG`8aJAbEh~P7R6vliW>mAIUu=PXEoPAffvm=Yu4VDEJ{AAFf7adz9oUlE+A%AbH$? z)&Hab6r=d3N#r0f0FviuO-}MW$qytikbFY&BFS4MFOj@X@-oRQj{j8>d-J#C($yOz zZw~lL-X?iptGq+<F3Ec)*VX!f<Rg*~ty9v6^gj{(C;5!zYm(1Nz9RX8<jX-VG3@?- zL-HNTw?jPNi*5JeM_OZ%{6z8($<HLell-F0zmohmNU5ku{vi2_<j<j8_X<clQSnbi z{Anq<l(>f0*t905H4d%uX#LN&)RGfHI9ub>nvm86qnxdYOh|d;{!dE}g4Se1erPR0 zYYJMk)0&djjI^erHI0I&HZWS#(wd%@z5Hvf8EDx(ahRDjWoBBl(vpL~wKtpCw!=AS zEl6ulTJtD)E~T2=MdzhuFaNaWr?r6byXZo+7NsSR1DYjgf!MOB#dNf9foLsBYaLok z(OQ+((zI5fwG6H0Xf10~WUrPtJes&7t(9r5G!$KB$X-n`tJ7MG)*7_jAOC0@8d}?c zX|1c%^=OIa(^{X_217g>sdM9Mbofn4t0iwn>n>WG(>jsX7PR)KwI!|X6ugy=TkE)u zj@wpal}>AWTD#KPf!0p6b~H{IrS8tOb{VR>8?C)*?M`b?T5>eF>U#}g_Mx?((#lyN z{?WZXfYyPuj-hoBts`h1OzTjsa)?3FI*iug11b$2N$aQq53Qq3l-98tJ&x81w2mK5 zF~3=@lW1K^>ttFNDC`tk)&2i$TBp%ELp`TEo-=8kHJUC<K8MzMw2c0XFw&BvNB+rP zU8tUmbiCO3X<cGZpVnox>a;GWbtA1SXkAO|N?KRbx@yc4?r?00{?odi)(v9<ZlZOY zhHj>H3$0tFklRUGw`(UgT2}c@l$K8`r4`VMX*Fnt%FwjAQYad-<rJXRGIeQXw0gAK zv^tuV8zilQ*67V&Q~I>-pjFZuF}V&Y`tR88ru8MQduTnYZ1>W-kJb~k?x*!Atp{kS z=C>YnxewEF@Bi&SKSt|uOK3mSCza|c9iOJ9;y+rk(*HMTJx}Xp1?VF{>qWKgQvfYF z0%*Oe<7>2DxBXlGH)*}Ap|^B=o7Ov(A^&8f-lO#?t@mktMC$`u?(ctW^kZ6|7^K^Q z&y?hIT3=YdMSev(5v{Lj{Y~o|TEEfyme!97{*Ko7wA|(2;(wy`3$34p#Cm=mvVYga zKWP2w>i#tp{fBgH1^i3vKhm*eA*tmNm`ukZoq+Uzq~nv0OFEwUNtSW&^OjC%z(SQy zOgba!B&5@kPD(l@>13pkPCkU0LTt-F73nmjQxBq*K{~DdeMzS`NK$zPL^`Au=}e?E zlg>dp3+Zgy>Z}72(%GdwNtu&WG@n!+0Td?3fwSi$y`6M^(!EI+Al-~~LDH2;7b0Df zRP>*85z@s;7bO+tA6oSib}E>qNS7yFnsgb*ye#Q*rU&O)fpjI(6=iC8bR=DcbbZoQ zN!KP_jdV@Y)k)p^e^-&z-T%{dNY^73{U4Km15y!u(hW&P{|$h26LreVAA={|oODOh zEl9V~(3U!GrK9M71tS&lC*6*8dzZC?ghokrBHfvEH&W4m($W6}m~?m2JvDs~m%G<c z;y$DoknT%*Ea`rvhm-D4dJyRWhM)96mvu1dp`?eHsa82`i025>qezc5SsFdsF&txH zq{oq-N_sr$$)qP#PSO)ePqKugYdOW?Pa{2>^mNiQN#!6gNYb;!)+y;Zr00>ID<S<E zt42~i0>rqG^a@hd|5Ws!^b*p`NG}~?xZF@_^h(le)VNB=t6jxwNpB*(j`T*->q&1I zqzvkk-b{Kc=`9i(ZS^)|lh#OIBlSr8q;=Ay@{{_cff^0ch_p#6r@(+yL$T>W?G|ZD zT99U>IjMd5Z}6n<DL|OJitiaV(vtKs(h<@JNbexMOQUzX=-s6Ek={dkudQW&Tkjuq zLi!--!=!Q$7!2tnO7iHC=W)_!NuMBnnpE^(0o4&;w)B}H<a4C2kUmeUnxBgPSG1%r zk=i%^uF9)JS+A4+K>7yhhoo<kzDug&pX&SnRQ2Ed49E`1Qvm7vI?CH2<^PEEYtoNN zRq#_e1xP=2(a%Z0RL>Wtx~6>PqTe{<Thi}Hzqc66{3Ge#q(70W$frM({zCezNm0(< z44(84o&G5ysjf$W-SB@%|0R{nzm(3*C<lSf&BmeqG1>oU{~y`7WapBNN46Q+_+;~w zO+Yq1*@R?Ml1)T5sqkkL>uBHqkWEI0dhDM7k&WuV`llkBnrvFKX{xFGlTM}^vS%Qh zmF)j1ct*0B$>jd;I@J5W&6<r&be?Q>vN_1+v@o;SY;Ll7HR|5~WcmnTa~B|6g=|5x zrN|Z{Ta;{J1utSrgmy79k$tkojgxFiG0e|fwltYs^~shYTb67&<9B_oK(;d3ie#gg ze?y`vtCFopwi?;mWUG^{MYaanngf6#aa8M&jp{$y`eY*bWE+reC@FSD8<TBf6D7K- zOW&OA0J1H}b|c%8Y$vj<$hIfjnrvILZAObqmVFCEwu6?~am?t>>fA-gT}_B=cd~uR z_E6`ZWP7VI`Us%YeRbTg8mq3z?6<&V2a=sgb`aSSWCxS!{XaXz!9@Sb4mVS^k0d*u z>?pEh$&MyF#)iyqr7#~iv;!xYDA`G5r)s*q1tN3$pPfc_HreT9XOW#jcBaiWY_`>N zYzav`kL*se^T~X&3&^e_yHE))BD<XIVzNugE)l%uYUna!lU?Bq`CCv8T}^f?*)?Q0 zkX=i5J=t}m4Oq;LWH*!DB!25r{kQgQ%5yuJM^+Pl+jD)$4#+aH23f3Nx&M=e6&qRP zIQ6i|S{h0v*YdZ?`s&QdI%KN(Sz!QVJ%K4wF{O?pWOoR_c5)Zl2V{4Xy+C#k*<)n) zl086nAKCo|<7z!f_AuFy{%4Pnjf#H-BYT|eX|gBCo+6Vkf(O+#`V84~+QYL0X0qoE zhU`VMcgS8Md!6iMvR4)Piu+xDO;T*nZ;+|%XKy->=)dE6x3bAZ{I%%&&i^6Vk7OT_ zeMMGDsOo?A3EAkMfRcSqruv_`rvSUpUz2^OwBL|@J5<Xa0c1b8azBy%MfNk<?_|G_ z{c5UfuG9Za^*{SlQbybUo9rJlQGT+2t>08{k45_w+GEpRi*}{|3(~Ii|Nqe*mo~J= zqdhV0@oCGopY{ZUT-p=awYMjsJsE8|4osBx<U{rpv_<M^Pf2?!+EW{h%bk|CT>EM3 z5nx-I!9{1JJs0hnXwRycnRT4SFwmZj_8heB<zGI^>W8E~r^}t2_I$MG5wP&fS>QtR zt7ic>U5NIov=^qm4DCf|FQ(B&U378UOVS>?|F@T-z4U;sg3(@<_6oGCBS3#D+RMA# z6=|<bTaN&{v{eLSVXIXJZF&Dsdkq~&j{w?h)82*lI<&W>y)NyI6|f%d^=Zp@zO*-} zJg$(O2<qH~_U5!VRq$rw9K~$mFk8{yp7z#?5&fsVEp4m(L--wN??`(mmnGuw%I!+~ z5Zb%Z-k<jFwB^E2dk@-s3c#*(Z`%9P-bb=Dk+$mpD9Hh|57fkiXdi5{T<)Q?kJiv( zv=65(*M8bZ7#_8ca>!$7pGf;y+Q+N^IE#_}Il*C0(vXP1{e5qrO1ne*G}@QaKArXj zw9lX|QcwF#9px<$?Xx9CjC0j_o{r}mr`n?bYFwn_#R|T})xC`NZL}|^eKl>>f8p2v z7N9Nne+6Gd`$pQ=(!PQAb+oTHe#77}H_^U@_RZq7dwZ*e3E}OuQ`$A!P1+u9pZ1Xc zw*%UZG1)@e3GIlsoCpKX%AhSrfEt+?Lf)pG8(aMa?Z;?$Y2T;O9_>DD5q#RE0!FG) zr+3o6hxT2x?=~JG(f(=MrvTdbEAj!_57T~-wiAELAoqU-*i(S^<FwzQ{RHh7X+KH( z8I3-r<I@6`B|J;}dD_p()Oubpbrtp!?bm6)O#4*@zak-N-syk!CcOOy?YC%K@z<#8 zzhzVXZ@))dzY%V~@2Y(0jE@}WC*;+lJ|(YyXFnsa)bDfhv1orm`*+%3(*BY5SG2#Q z{Wa}xT>7Z~Yw7QGbo$@^iS}=_f2J+UPx}{>Wk<Uf)&KUNwEw037wvy&|2+z`tI&fW zw_7A7^0CP$B_D@;0`mU}UYz5Sk4HYfO;>*P>sgRbL_RUO`{vhF&nHuW=s!6+PEn0^ zPx7hA7bTyXd=Bzy$Y&y-mV5?s5r1+y2n?9~|B=sV6D_lfe?ANOY~=1wfT~T%XCKO% zlYBw)xyVKB$>-Klj{rf=r_=e#7m$>Sc63DxkuNMx$y&rj$rmGElYDXVmB^PMUzU7H z@}<d_GD!Id@?|WE*vpZxK)(DSs(=+8+sc(ez6$y3<g1deHmI&J_X<dO)>7o!hKGC| z@^y`^$o0ujC*Od4SMm+Xw;|t%d<*i8HER=ck$rM^|Ias<+|iY8Nxqc=wzf{GxGlL{ z^~tx>aeEziuunANms5azXY!%<|M_m@hm-G4egOF%<a;YdjsS9d|0myvTx6eo-)fYK z5_R|g{6O+U$PY3h@`Ei#@P}&FVJ>t8`3dAlk{?Tc6!|gaazNN6s6npcFS*A{sQO*b zPb5EuT=c*CN3KVJG;pd;Pc!|feFk}x{7mwz$<HFcnEY(=3&_tQKac!e!=TNdZ;J|# z=s)>IL!L{>uOPpa{4z<=Z709n8CMz}a;N`!)#R<@*OK2zex0&iPkzH7w@M_xiToDw zn}?l>yp7x^zn#2JUL*GgZ3xm-m-K+VVLh@ZA^9ET5qVolV)BGMC2x&p$)fZKko26q zOWrY2a(DmFd*pq$u9Dm;zw_Lw<ad$ZM}D{3_mI2yKiV7l{px=}nC(VAL}xbghsl2; ze}w!k@<+*EB7cnhdGg1}Md!(%Ab*lvlwT5U?la^f`{d6WkMqBv&KE7XN)gP<<gcjl zD)}4auaUn#3XoN+{@Xs^CjWr^9mT8u=kKZgzNA>phvc7<f8?egE8r8?L#6*;lYdVB zCHWWPv^{^N4A&_58}jeTza{_9keHGD2l5{c-g$neQz^5EKl!iZf06%2{-;iVCl~!U zNHdcEP5vMGKNSi2zk?8+|D!Vwow4YQJ#Y%9WA$I{@#suVXM8%)nSjoubS9)TF`bDd z#jL$EbOcEHWOVGyA7v2zr!%FFQ<)UCr=c^08q?}H9i8bbyaCXucxI*}M*y9fj8pAd zbevT@w)*UJHl;HMoh9kaNk`P4&RjZ*{%a5O(pgA7dIWUlr?UW^1x?fxrL!=d#T2s$ z9eerL+{FbZoJ%<5Qgqg%voxL6=qy8LMLNsUSza;A30O8^1p%8+xw8_TRW!P?@hD(b zht&IjXAL@Q(^-?wS{7q@)}gcRut#~;*Kq?n8`4qP?`-7QHW9<-Zbs)II-AqkgU%Lo zcA>K+o$cvtMQ0m2L;By@md+UWe>ywR*@=$+@sIgXWCwOOozU4;8`w?9-Ay^Q_oO2_ zPiHSWdK`52vCYe#=t0ogUjYZuInXBBT{@V~5gIx~$3v?`I)~|KzXhgqB%Kp9dK8_b z=^U%}G1aKB<LC^1`73RlNar*<C($`Ykxu_Rr<xRXo=)dXI%kMSdDJQQe>KkG&ROW3 zOTYSn&ZAq^J)ffDynxPsbS|Xx2%U@Q_;fC&a|4}A=v<+Rm(tNAK-#$6Fw?n`j{dTD zME~hr?flp3^g24%o4U?_Bc0pn+@#T)>D)@^775w)-Zo^{6yxbwAMyuu3OWrsDV-*r zSOKAq_Wh6AiH>>%*o9|w^nmE(bUIbkHYOiRm(IO(dUWoj)2A~+M=t+^>ASz|*;l z&fRqG8Kg@{)_xzI`{_KWwmkyqJVfW=0Z(Pnd6dqZbRMJgydoc`^8}q|=sc;@r|8Iu zASv3mI-jK@2f>i%1v)R%d4<kP$~pQK0G(IqyiP~&|Dz0Vm|Qw<(fNYT+jKsn^A4T& zmH%Bj?^$x`@B=y@j+PUTiht)5I-e>2Qxm20xft3QoiFM9MCU6y-zw&7I^Vd4uc7lD zogdWyy~F<~hRyw%&L4Dsq4OIZc@QxEYNYeK>-<kTf2-#&=lO@uzpjM-z7+pQu{y<A z6w^_RO)<XUi*YEd{!@&rp7HEcb1?zM<P;N9Orm}{0w^Y~Mq8qolwvZOnm!9CrlFXE zVk(L$2e8VZnA%}P{9XF=6!TNeKruVT|D%|h!af2}3>^W*EEKa+%r;1@(kbSkn1^Cc zC7+AJD*s@;6!U6G{$CJkEI_dg#ex)zQ7lBUh&mUxcp<b$0L9`IOKOQFDvTOSQ7mn2 z=UJ9wC5q)JR-{;-LdD<hgTt&$A(~GiXMq%wDyxYh&NV3ZqF9q+JBqa^HlbLXVttBr zG`cRudIst68&HVmQ*3D2#NOCNH>KE$Vl#>@6tlU-NX0FO?5!!bq1bkqS@GLb>_D+A z#f}s^Q|u%F+vhGeUCQl7u?NMd{#O`^Jq>_jZ;GQS_MtdHIrUs9_M@<ue+3^%aVW(> z3OJZTlz*t!VH8Jb=y2nwIFiD?`EmUmLvaFy9t4Hl|0#|au;G#Ei4-SMsQwpL{}pDB z0E*KoexW#n;z5ctDSV2vC@!Zso8m%>b0{joKi6<loM-AP!v&@a#YH;3nBr0j`|`)N zr$>Nn%M}ziQd~)K4aHS1>h!<3mf||+yq@9)!|XgaQQSr$_kW68C~h@=7rmXrqo@s> z6srIB^9m?RiUviSqDj%B2r2XwD6IZdBvNj4$5Jii?*Bzj(W}TQIur#(cYsu9e=wyO zp}1Rf@1VHTwRe{RP~4-TdnxXxxNnf9&IcU$A&R#s9;SGK;t`4`H2NsTV`@BZU|RP{ zif1UEa*0nHLW*Z8^rR?;jsR)?MP+!2;&qCbDPD1juTl(&zaZaG<eP?2?YAkuqIiem z1D(E0@tzv*3r6>i;zJ72d5VuHKBoA@_+6FHD8A6B9syG2O99y2uPIdRi*FS3EyZ^f zV}Acz{AlnLKT-T_5*7R_-4!T)qg!eC?{vqb_=Dm<ia#k-|BJtd!2f89Jq76gAKh`p z(;bWM*rwHLq$~PQSH$1;-yNUsq;w}x|Acf!^Xa<x|J_N3kdx7!LZg%GhzZf1lJ3-W zrxHT*li8hy?zF~sp6Th%M|TFgv(l~Fm{}QSq^sgT+RQADb2hqj(Vd;{oD~DzImTq0 zo9;XgDdO*{%ujc5x(m=<nC^mf7qVIAv*<2D*IoW)jf**kCFm|qcS)Iwe<|l*hOXTC z=`L$L+KD_1sIem5ZRoB<cU`(G(_Njeiof7jrMsHIEOHIHYgIPgHH}B@wdt-S?b#h$ zkM8Dl*QdLYMmL}<Uj!ID-HqvPszo;$V%W^(%0Zx6ThiT%?$#D#nYX38Ki%!<?oM}m zy1UTbf$mOpcO0U!mw!jNE8X3OqI=NYTlx2-yVsC^AG-T$ir#y>@(AD<4xoD=-NWe~ zME6j-2h$x>|GS3`z{-3C-6IDcx<}L7n(i@lU#EL4-H7gSbT6lSJl%`vo<R3>x+l_A z<?o(E_vAsYvYkrzw1J228FbI4d!~lY62JXi&Y^og-E--VDu2~K-3#bmXw&T;UaYy7 z=y<7)mkGe~TtWACx>wS@Rzp|mcr{(w7Kgcx?k#k$r+X9K8|dC>Hp)b`=*<p!Yh}>A zO{SK=MmM1AxoMrQZ)}61+o%k>O}cXVHzB$)-TUY!bUPZA`#)XP|87RNO*gka*fkb( zOS*al2(m|aNdLPdbnVTb?wxey%|G3{3<KSJ=(_hmmhFDJ&(VE=?ju@Pp9Q)P(RGgi zlKv>&r|3RL_X)a>o3>??>Q6f6r|CXpLz3d&{|M%Jx-Zaug|6y<_a(Y750Faos*ZXD z*qwZXUZr(!(*1+(TXeso`!-#<;nRJG?z?o~r#p22@5-UzI{Aq1XLLWNt7k#?lR-$g z;&ZzC^2heCM}Rc^HQit6ena<ry5DM{?<7(FT|@T=x<9GY908T*X9?Lo{M8`oR!6|^ z#@1SY(i@lVU-ZV(+`sAmL-#+r|BhmMri7#FjV;LDIP^sS<zLlXZ#;F5uj2&tCZ;zb zy@^azd$@+)kpA~3qqiu%$?45b4|>zln}Xidnm#4HsU&gGd~X`{Pis8%rl&U(y&2S5 zmA03EyVBmw^k$`};%|GKO%km=2fcae&8fL_(VN@&bqVh8e|q!LTZrEL^cJMIfT5Mq z>|}3Y&0WMM%2q5!Z*_W$(_4Yw67-g#w<Nu#6}FU3x79`b=`Bake)DTc=&eXk1fSkY zI<9Q|RW7|%)w7zbz6QOG>8(j`J$h@=TSuez@Bh_a*W}V$pWa6FHlQ~u{wAcbP3Ub- zZ&S558}e^KZ!2|fX`Ob}+t7QK-nR5EqPHEr!|82LZ+Ch-D0oMDyV2W;-Y)c1|83T; zcKM^bw+Fq0=<P{we|me-+n3(n^!6FEmWsdbn35l$<ADZ4?_ixCLQmfOs6DFx^p2o+ zI=v(59jl?EbgYhmV+NhjJC5GT^p2-@BE1tTfa5tyZ2L)_Lhm$srw%;Me+IqtDx2P! z^v<Gpj@oCNXvIVC+|h4Cdgs%-Kth7IrvSZ+>9y!xLhmMem(sh6p6EZl%jsRI#ubBB zb$T_u>*-a$KG*3~&IJMJ+O^^h>bIu=y_@MZ=-oo^cJ<#%@3tXujh;`>qgNj|g-{v@ z#IRf1q!-eQmEYa}d&wY$UP|wNdKtYt=(Xwf=;ibZ#k;@%l-=k$!alunh=0WS@1%DR zJ-PhTyL$l8>AgDMXPopNp!X!b2kAXV?;(2fm;dza5kT)zfsOVrM*zJiT$QJEDwltH zdITtv-gERTv3j1~=k#8n_a?m;>8aHBUQ+POTE#sD^j@o+>VI8F_x`8%7QGMYy-n{u zdhclHU4zv0_l-@@9s%?|qW1~Cj|Uh{`BcZx#3@Vrg5IC>zNGgPy|3u0;P<|!_l*H4 z_&a(((EEPKW5nMu{7mmRdcR0i7VcgFiTyjhKg{N6t-t7xL+@|;Rp=jj?&jb7&*TcG zuLne5#9#i2NA#cmxb(*}9-WSFXz5Q#e_r|%(Vw3F#Pp}6KMDOwUG8M`QIg3WehOo_ z=~VQmravwHX~y(VCk)kj*Pns@?DVTPMC$3!NPi~!GY^B+KdX+jNtX01mw)<m(x03D zT;jBTEB+dtkN)!X=cm6I{RQYROn*To(MJID3(^<;r@yF4S9@{#OR2Ghj!T*l{iW$I zW4fZhEdAw-?K~?ect!fFs<9INmFde_AOKryH4Uw9ol<vAMwXzz7UgF2*QWml{dMS9 zd$KP5L+P(ae+T;O)8Cx_2J|<kzoFzxqC62e+D+(hN`F-RD?j}$=x?LQE$MGXe`^Ca zS@gHn(025<w>-AP9qI2)e<%98)8Co?t_s`5W$k9c(!d@X+LQiXmf14wLw|qz`wCKE z`?)3$pnnkk1C3uhJed9=I=#kW4x@ht{ln=WtGP$eKa&2@^hNyTpRDVcA^SM`BK7o- zr+)(d6Ai{8Po{sWMo)2`)99Z*Cgx1~m(V|p{`vIJreA4(#deOxNI5wpwC)A;FVg6R zHY!N@`yX{)O8*Kq^a$v??|=JO(!ZMiRf80Vzm|TR{&n<krGLF9-a!8*HJtwU<?>Je zmO(E4+vrF1Z>R6mm-j#PJ^J+lKs^EdrW*FIfas6j|CKPNpU`iaEcz+^%yeZ&`Z@i_ z=y&MfMZcimr{5K@G}CjKlD^#h>5mv5t$3%g>EBKNLHhU5zfb-5I{*Fj9~hjf`n&%S z{YU9POn;33{>xQ)oc;^+pP>IN{U_<G?DyR(p#G@-YbVta@VrUXqA${aMGgH5pfCEb zuvh87PX9HTs>k`?q^xA^E&AWlf1AE)c>f*x@6!K>{(JP_cdPh-{)aZ#{%nZ;(;vP3 z(--ll|2h3{=zl@~EBarKS?+6BSB?W`e@|Iu{XqXu`ajbDjs8#cf1&^L5aw60M^oex zfc_uGL;o+G{!Ra1`u_~U{u{N+u_(tCSgH5_avZhg2&meilp}z0e9DO^C!m~gxNQwh z?2waEE>1Za<(!n0Q%*+-<<yFqf^tgAsSI+!KsgQNwALwArl*{Rat6woD67&l4v<PR zvmk9(vr^7ZIhz37r$#x4i_S&4Fy-8o3sBBOIiIG_>!R};Lq;jOppFX}C#C9tDf&;j zm~pDT1m$X!OH!^xxfJEH>Rg)A9syMwl*>`BK&g)aqg}0NNGMm<lvQ+;L&0=TxjN-W zlxt9~N4X~DI+T_EuWbQ_N17S^7MOB<$_*&Ty#EVkV<q22n~`@xI^CSIPq_u<1(aJ- z?nAj1<&KnFO9{!^hH_g<QGUwp#91ZEa&~YGJ5j2<mpfDLLb;nF<t%W>-5qjIaSG2~ zlzSUnsrIEjiE=;6!zuTtJcRN9%7Z8mG>M8i*b++mp_GT&sa?epl*dsXNqG$AQItmy zM>YLeOC{;YQ=UNS^xra^OnDCFDU@eWo=SO|VW89_K-WTfCgoYqf3_HAjly{@rHa4U z=WFO1$_pty%8Mwkr@WZ*YRXF}ucW+`Qj}jCyPQ(a0^6Q!?2!Ho+ci~`@>)v!6@Wof z-avUH<t>zQ5Gdwm7rK@5cFNm^IBSCvly%CO(x+@_R$yULrAaCJPZ<f`c9>9h)Y+m; zDKqD9Q@Zy*7Fn1q$}VNk*cCZtN%<q?2<1zZcThe`c_-!lly@oZ-IVg?hw>iBe4jBi zDlh*jAEbPk@*&%*c=QOcpWS1WPgCmUzkGu7Dat2>LAx4^l+RE;OZhzIb3;5YP`+p} zmhENA&nRD^e2?-~$~P%rs{oX*Q`(!qNvC{^@*QpOZA&PycMTim`;;p6<p-1>QhqeR zXv!x76a1&fPx(2e$UEg1lwVSc=2L#<qTd)=1$?LD_u>(}d^@1vpBSk`^=C%LqWp#O zZ^~aORrAZ=97gW{lz&o+_zSsRwdg<Pzm)%3&&cQoGBP$J6EZRmBjYjhKSstKBX?wc znO5l|6Ij346EQL|Ba<>Ri6N{;MkZs#-uzvaDHxfZktrFOk&&qwnVylU8JU)mX$+@k zO*h0agDJs?>wIJ;MrP6KdIac-7@3uk*@m*_U}Ql?=43=J{EW<{<J^vFUPeUr8IiL< zLkoyu?S&Xo!5>+e5z&9+uSP}|Q}E)|sM966qXI9*$Q_I<&B%d_EW^m=j4aE@T8u2m z$ZCu%&&W!QtYCN;S<&Pw&&rIf!pN%DW2@`^UuvzPCDwGc)@Ed5M%H0uJ@v0EgtD~t z8QGAL4Gg~n+xtHwn<#iw9XB&6YHz{FZj5Zn$WDxG#mKhm+*%2@aU|O@vc0o+U}Q&| zu4`AkyaHlm7q#sxAVzj)WN$|FfEW?|XJjv%s5{BXKL4L=vjBG7Xu9?r=Hv+{f0&t> znVFek!_2s0X66kulV!1F%R+~lnVI?5v}Sz0^;O-Pn(01$x<|hE^k}?GYZNW@wJ)s$ z)Ok-$4pJDsqeEz2LF-Ujr_wr%)^W5Br*)K29YITf`P<-W9Zl;PT4U)yt>bB(Nb7`# zPy$bq@nl-3G&^cWTBp%EpVsNL&Z0G%mO1~clFl@kvuUX_KP_ni`uFX;hMd*~wB+R9 zx==9s{7>r=T9?tfw1J6BT7cf;m9*}nbrr2!XkAU~I$GBVMv1@4dp)fiY27d=nAT0S zZq`f9b1SXeCGa*{V+OHekyn7$ordjhT94AYht>nMq!G04qou@ui2p%a4@>MrCh8Fd z(77I?^%SkgX(`#KrFw*d$?pTLr)fP)>zM&wFs%kdt4-?%S~jiMX*skCS}v`KmM1Wu zR!A#oz=M%iOe>|;p_R}wuK+q-&*aU7As>n=Y4yceHAY&`(R!KI^R!;9qiDS_1b)e2 zUZM4>;Z*u>=5NsYh}N65-m8tY-jeZcTJO-Rm0vzD{X6`=xIU2a!+JCfAJh7RmePM( zpVInVCZB15-p-e_zM=IMEq(HDytKX*@OQMnZ`cgyk66>u`Uz`1T0hhJQ((W)`jwXG zf9p4cl*7ON1plJ-FRi~7xhh7rfEq^YKdf<-#WJ6@HE!b)<M>#UV@-fH36`Ayt%<NE z9<E1Vlgc=m&TCD91=f^eoT?txPo2w}8fzLeANu~+njUL5tQoLGTCEu+a3&c|3$SL9 z<*ZG(%xA}%S0-~{&51QPmihl*&4abnR{)ZCKCFeX=EquKP&t;-e`{d{Q%_(KQ~zRE zw_`1iwJ+8ZSes!jiM1NmQdlbpa%rqu|Cf{bvMRjJs5ZEKGsjvHYh|pJv`h1^BKTDe zW_7F$vDUy^TVmJ5T5EvES_f-Av9GJhRe9@Ujhy_&wUO92#@fVSMEv!xH^<r$YYVJx zu$2B|Z6)K@4Okeq70Y&5(giH7|AuWR@$QVZ2i7iFyUB9bdQ<?l-`x#zPprMM_EIjL zU7!C2wjb76So>ogi8TuA5aBrh>p-l74F2F|A}%@qtAY>1Ivnc=<5GWdSVv)<igh&B zNm$2V9glS^)^P^YeBviyov1DH^d#_PtW%V+sb5i@hIKmD8Cav69SQ8rA;8&Kmt&oS zburetSmz7iyk^%jzX0n(EUo;FCSYA6u1jUStRCg(TC6LuZo#?|>w2uKuxiWISl4Ja z{V88JSYq9PbraT&DqMSS9?a_r)~#5#33)vqV=#AMeS~!<mWOp0*3(#bV?Bs<57vEH zO8*-YEY$+A9%z;_e+cUdtcS54!+Hek(Sgg5kGut7NiVRT8ep)V!Fm>}EmTVXv8=|6 zWy{jRavO^w^s%1D3a}Ea5UV4w2rE{wk&WvXfYrmwvC_tiW$yp20!wK=R@p>h^|78C zFx2U=Uch=C>qV?ru#EUy=KjZeRl-I8B`?++Snp!JiKUcZ7~aNGZvg{ZtoN`)_O15~ zMy`PL=k+n|39&xG`W@?2te>$y!}<p6bF8nhzQFo&KxH1t*M{d?tRJwx!x~%vtsk*| z`ae;>VEt+selrYz&>j!#Ppp5j{=)iuP&t;-f9pTmqW^94ThSiT|C)#P_%iCZ0NNAL zo`Lqnw5O&$3GK;gPbvTr|7O?iDQHhcTj{_0(MFm%ZPfy3Pb=eew5QiqjUZ>FJriva z{PxVW^)aJ{(VkVJW^1TqJ_lZnpA%<R+H+yospqEs5bb$rA5ME-+8fcHkM>Hm=cl~{ z?FDErOk2cXm9da1ZxPyy(Oz`GEaZzD?~=5aqrDXEWoR$0FeBA2YcR{xUQwb}Xe`FQ zGVS$fuR?oG+N;uDo%U*jaKW$9ENQPrdmY+q54^P39n1x}KJ5*ZMOD6`;oq3{F0?nH zy#?(}#kHA?n=7P#_*>H6p7vI>x23%`?QO=ca65$*Fzp>^i|n^|)EJd(XT!5A?E`4< zMtdLHyVKr__8zqN)QNPiy@&GdOMCx%NqaxTFiLrKt^;WwN?Wx6+6U7<q_Gc1+J_nB z5wtI-eI)HuXdgvesXgtZYfjq7$oyEtf4mq^pna0qPi*WmKe-;odn)boXrD&=EZV2j zK7;n?#-&EZtk3^4Kb!VBwAEXHqSAXjpY|oRFQBcIpZ0}1i>l{hgHifl&uL#~ELYGT zL;FhFH`2a}_BFJxRxZtXE$tg<Uq}0TovS%vidVASMEhpix6;;^KSF-n5X0@X@1uPO z?YqTwC+)ioRkN>qXpiW>a7qhks}?}}!3IqGVcH+keuQ?9_M^0Y+K<t;X+KW;S=vv~ zewy}^v_<*l0IUKP!!u?tE!u6`BL2#y8n=|>7^La~wACws*aO;Kv4pfE+9Lky(W!RO zaEdoE_>}fbv@_bz(avdCv<m^013Yc>kAD=;^Ws&9f7&k&VP2;FHtknvzd`#|+ON|d z(SNg-Hx*t5zGW=$$nss<@6&!ymnWYi?GFs*BijGcuJ!+C+Mm$=miDK#zoPva?JsD5 zJ`$yv^;ZD2zc#t_e*vKV9qk__-S@PA7(~(jX=wfn?LTS%N?V`&1^>H@>I%qk{w0>b zY5y}6`yclB*lL5yYmb9HZsWxsPrsqt6JSq*E$4rGB7>Y*O`2a_TUvlUnJ`S=*s-U? zJ|BB3>}{~YUJ83^?AfuW!JZyl>3<!LJ)I$$0efa)m{G==44}r$imlo~gB0&<CTb4s z`Nc9PcCG*OV$Y2|j|S`V<{QLfFMz!;w&=ggzEI=BUIcq_>_xE`8#{IhY<2UajJn{Z zvDd|327Be&g1s#Ea@Z@#e0hUe5qqU(ZY--{uZg`XwibWv)v*WnKiAeNu+{k=du?oe z^JDh79`;7q>x)<EKlX--R@bvJ_7>QiV2kYAo0_O0{kONo-fFN5?5$1gw%DVvx5M58 zdwc9%v3C&u9kF-DR*hgNYL~$hdpCip`=1(sy(jj5*y{X`t@IyzA8hmeuOY$S-{23x zJ`wvs>?5!b!ahVu4j#&NDE494hYu_QI1*db-ablF9BtT+#XcVUI0e?9_zB9TYdZ=1 zEbNo9M`NFYeH!+ujjJB9Pam3}A(k@-7FnK+eGc}yjS*W8|2oSB*l%E8i2VfiMcB7t zUyOYX_9fVtOYEiC=KQao(iPZOVP82mzq9~V$+g%wV_%1TBlh*!=JKa`dMaFh|0|E; z7U93uR5b?sLG0VH@4>zU`z~yK`6J-F2N|*N#TL!C@6$%bZ2tX^{SdY~^J70O<0C_X zk73K<U+?`%>;(HMY#;k+>^Al@*e&d52O+{>nNP&VcCkhOHG>xaT4b;T>=--5j&!(S zgh90cY}FlPFFow%u~X~<J5xsG%}tgP`#J0iyWij&yYaq&{WA8867o_LE1a)jzlQzl z*x=V22JAPn|G|C>`y1@Hu|JgXcd*~ZeqZM5c1XplC;5Si`Uv|A?2oZO70f5b{u#Cr z|0YV+|0VWU*kj-S*xzFRjQyR2e~<kW_7B)U4i{-Sf5H9}`&VqyeET<J|D%}*gNVQV z_mJgZoQbjj!<hi*e>meRm@`hpk5h}kJX>e{kq~D>!AxW@li*B?GbzqgIFsQ_fuqG= zU{elC#ZiZUoT+i9(MH)j&U834;!H2z8S2q6&xE5S7e{r3+K3}x0XM%n&TP2z;LMKm zD9#)>d*RH9vp&vTILqM7jk73D4OkFoUL5%rz|k!LXMv$CO8jva#?d!FL$1Ye7ROl% zX9=7owOwaldI+{G&T2Tz;jAcBO8;?GFOZs7!dV4JwTZ?e-c^lvb)0o@*1!?jch(%j ztZgvss)^!McR@1Q0B0MV4RJQd*$8J-oQ=h<uYe@4Y6J~lTwBPvCC*kjTWgnQ+ZJax zob7OSlECe8cEH(jBwRiDoh5u1oLz@w#i;ZjXAc?oY`i#o<D8GP56)3I`{Epgv!4L= z$2kyZ6wU#I+Vn(aIT+_~fgOT#D9&L6ml%(bape9V=V+XhagM<`9_Lu`9#@a*M{n%} zoD*?Q(iUwz1?NnhQ*lnOVK}E5@Ms(*{v#(<=PaCa1ar2*oQpGZ^CPYcaIVL>5a$Y< zi*PQ%xp+_mjynJ2T!y21fg;g0T#0k7xURyv8fUEgAF*H8;Bjuixf|z3oG~~z;izLj zj{X(^=T;m!{F`0l+>UdnFx+8s-PKTu@gAH9aqh*@%8zqDj#mC5*h4rE<2=$ZG<KZF zaK6QP9Oo6BCvYO1Cvj|?r*K+0Pvhv5za)CrWVdA59wK*el<ecUjS<Jk2@GC+|7+|q zPL9*T>EU#1J5Dmhld8Gmkrtr51<ngNB~Blw8sd2l=lMaPN%SJlOE@oUn0z`ouj0Ii z^BT@u!u+}<eFNvsA-1>0^^PJ`+27SCWaoXHFK|A<`4s0voR4un8bk??)_;lmOvcX@ ziK_fdS$>71^&jV(#wGUeaL32_9_LS-A8>vW<Btsh=VzSXaDEZvuZ>ZSsy68bj&1=s zf8o@Euk|0tyaFiXf4Kj{75#U|(Ij<Y?s&}>a3{c>7I#A2DRC#loka1w6E{fQNpUB~ zRfm7QW#ye>u*988@Ze63JI%nZ_U=xHI}7ggxHHLe1{r5;Ft|qiUGrPv&Wby`u+3&L zbKuT}JLiBFckZG2ytr53&WF1%?)<o`;Vyu?6z+n!iwVy{xC`ShV%Qc{TWEd>)h-qn z%n~x{E`Yl<?n=1J;4UxKE-T*U8U~pw{l{H#h-YQ7tRkb)e|L4<t#Q}D-2it@+;woJ z5x83X1+4TRcRk$o2ht>#4RJTc-3V8Se^WEAZUMNP;ckh$IqnvN8kz}i{S|<SkGl=- zuDILc?tr_UaBi=tgbjB`++A>Y!rghmuP3UW-EjA;m$<v*D)Aq3?S;EH?mpVmD4x3? z?r7ZoagV_rg?k9@0TO<oj0fQ!JYcBn#61*O1m9I%09U^S;2tT<qj1&D&maW%Slp9v zj}x}zWjq1*L=Dh2oGkWJa8HxTsRJ*r>IGsv1NTDQGjY$A<yp9A<Ek#8!Ln1_^Td0; z6mvo2!o5h0O8;>$!MzMu>A#LuM%@K)uf%;5_bS|Haj(X`8}}OA8zk^r-0Ms+*Eiv~ zH{#xgdlT-hxHsdfE}&cka`lMD;NF3I`@oKSC+>*&OR4wZK8Sm7jlsQ7#`|%{(tq5C zaG$_^822&UM{pn2SxiP;c?D1mPvSm}+gt(ZZQ?%D;Bi~HeOwDS#%<#UxHhhb>)^V& z{t-^!Y&n#wB1Iy*!|mW^xLw>HZZZhOO@}Z!ZYhC<iK?237@xy^8CSIcT)F>oU&MWB zK&6n%^$PB*xUZ?DdY-T2zA=o!eGB(j+_!N>z1??k-^Kk9_dVPXgyH=rwu!?12=^1* zkJYl-siOVV@PCf`HSQM@DEjYyrCd7uH@H9HevA9P0KPN!A8^h2Un74OfYN`H_cy!= zaDT`BM_hm4{)ww@{&CeSz@Q%7fAPk}{SR*(JRLsb^~S>+e=NK=A>LGY6X8vUr^Fv` z61+*9yv>L=Io_1wGWsuj#{*AY_~1>AH_`&|ro)@Q$$~dSGZENK1XJS8j9*{x|3AE| z@Mgi=9dA~=Rq<xSTLN!(yoK;;z`S^K;?0dWmttt1jAyQZRMPqI)LVcsFMzjTgE7d3 z#l8sMVt9)xqh?UzZ{|zlt%$c2-tu@$<1LG~OyjCYyyf&mXr$F!!7OXnN_Z;^Mv1@H zUT-zLt?^dJTOV%?ymbVyCf-_jYY$@U37+V`x1NgC^>2W;Dc**78{=&xoCDV;4GeEH zye;uI$J=5MC~UR(4|cQ--VXH=Z(BU2|1z&zz_l{j5pNfn>?GsP^=JxEZvl9_ndKgM zC*tjicP!pscn9L`jkh13v;c)1xdp=8A8!=i0h&$k=pei!@D9d16i;0QHD0{K@W#IX z@s7lkJAdyelU-d0=@6CcIH~RU+Jbk2!JLFAdhVT!cM9HUyi@T`$J2*@9j-#oz&lG~ z_5DBI*?8xSUF~^zm*AZ*i7vns+4nBgB&vpsO<tw{c$eW_fp_^Ji|}9BaN=E!_d4D+ zcsAa(cn{)Thj$0w^?0}9-GFy9-i>%SDZKh<)Tbk~BV7RRHoP%-w-0KN6nEm?hj$m= zJ$QFF=}fF@0fM>TOdc?khwz@ldl>Jr+Jg6pjJgZpJ&yN8lLhZd6{2~b#<K+Z4BoSN zt;TM=?ZFby!7K4xyadm~3-Npj42CcfUTk7Jc-?_ZYVHX>#mn(B<<d12O<{tm@Ls^{ zH(tEwB;<Kh`HOh3h(&b)yq68bt74QEpgG^btL5}fyif7o!mCgF^)r!I08d^4RQP*% zAK|?(t`G1&Y}ib$kH!9pHmdN?@V*w~=XhV>ec2$TlCMnEH+VndeT(-!o`}EHBT+vX z%ujf~;{A+g#NYhk2<&(KDe(Tl9~bXWy#Mh2!jq2RnQwtrG5_l9_1sra5`Ua}RK@t? z;ZKS`KK?}b6W~wS*o}8${IUN1KmKGAKDh#DhAHu<$Dayc2|hmfQ#Y;#gFh|4zWkSr zGvL>GXT+~%f2Ibb%Tx8tf<GJntOGl~dJ#}R$~!0i_4sq)?}I-#{<`?{;IE25FaA>a z^WiUyKR^D0_zMh0E!2e9BmN@zi{mefzt|wD*q6W``~Kfw8h-`+W$>57Usiz|9rKqT zVp|bkWZz$@G2)B<YvgLeyt<5Q;IECpCjMGu=T%L?Ft3Nd3I6)ZqDtKWe?xo`f3<h> z3ZPt@;_rmN8U8l-o8xbVzXkr511dwfbz{Nb7Jqx;Y+Asz_&eb5IE=^N8GldwUGR6u z-xXggzo8mA|Ksl^RC^D?@%P0)8-G9iWAOLKKLURg{y_p$T>$^U28@3&{$cos;2$~& zuT$Wg7N8&9krH(jzPtix<FWXs;U9;868`b{M)~~{2UPecOW-N^r#6-AQPprd{%HI& z%#O~)KT8K{{&VoJz&{uN68!V<FT@x9_b(WsQl&~S@Gov+@kRgr%goZW0F_bcKmJwt zSL0t>li-_MAZ0hN0R9d5pW@$$Z{gpBe?R`s_;=&qf<HzWZk6#ilj3&#JMr&mmf{+E z1yIcQi1A+h`v#TcKY;%<{)70B<3EJ|2>!!E43FYJrosAe?FoDle^vHV%B7#uGeZ8X zidDIE7r<}hzld++r}z$ji0|TiO$vM;KN#V!zYFjq{4Rcs-_dr>pWyeza;=HY@cZ~V zekmD?#x8Sx1%&?`zB>HZf%xkD-*Do;g#Qly%lL2Nzk>f7{;NaY*YVByU&p?sylP)c z|Ap;ce5LmI@8Q3XuigR_xl}9mkMKXnH{!2%@fm(C&Y$CdkN<_hzQq3q|0|iR)?h09 z7XP~eTRp-50sj~L9~DOB{Rv;4|C<o}U&Z*_kmV18@$mm7sKI}U_iy}vWukh4aQ-*I zD|;{w!MFnp!T1D|5==lak$80%Aegwp5KN*b&DH{G0m0-1Q|PkmnuDnb{vm*1G{Mva zYY|LCusFfA1alEgM=&$N^oDH)f*A=!{F}$980sG-`vme8fSSxkFekz61al0stBksg zxe4YM{5&$wE8~0(l3)RXMF<uoSeRg;#;C@TT`XG92^MQC1WORCNU)?Bmm*k}VCgy$ z!O;0XSdL%?0jL`x6)0>3D-np)2hs}y)dC1sHD0CvVp)S=&1NplYZL56unxf%1nUxP zK(L;`ME~_3Hze4UU?YM}#I>=`tG%0vadX9~En5<7FUGA1wkFtC=GzRaCD_g&cOck> zU`K+T3Dn_#KvDw;b|u(@U^fE&FFyxff;|nx-ULSy>_c!6!M+5eB-eff`wN@=@v7$_ z`X3nm4-O_cjNlN0LkCq!#>1Nw1V<SDqX<qRIGW%%VLpc7SRJA&Jf7erf)fZv#9w$$ z9>Sa|fv3rMdc!aCGYDLQGYQ5JoJDXQ!Px|t5}ZSDA;Gx>=QUu0^9hE;Uv1|if=dXr z_z!VjMsPL3<piSn!4=x2O1)}mehq;<8U1-(PjEBA4K;w^Mj3BX;E@mX7J^$F3xWO? zfZ%q5M+oj9xQF0Q<GqXE?xDTkOK^YfBDk+%BY1$|A+bEDValsp0KuaKO6>{cjUafO z;0YBdl@L5d&?b1AphfTu!Lx%z5@IzlncFft0|0?X@GgN*P!a?L9fD9Wk&03oV>M9^ zs!Na&Bm|BA*RHg22`ra!==>j41g{YE36$Uy$oW4oT_AXoK;8Tkyfh$@<*Nj55xhq5 z2Epsf)w~M_Zw}_dru3iS9c5G`?-Be$@IJv;1RoH5O7J1UN5=ax!6!AWSxVq%1YZ(- zPVj}c3r{mA_?qBHf^P`av7g{u!}C3XKKW}ZmHH=w5&akZuLQpl{7LY;f+>bS472Ee z@V5?Eu73&ZKbHRpS0?-);hcoy5KcolF5%>a;}K3mI6mP-gcA^I<sZ~cIPuVYQk5&5 zOy>%xkmZzw5Kg6Gb;04(Dtq(X!f6R-7T9!z(-Y2E!wA*=zZgea0AX#PjZld{p=tz% zVfJQDsJj5+T!c#y&P}M)o>25ZRQfNm^Aj#ixB#J&eZmEsT*kWy;bMeJ{EcPtW>SxY zqW|Gigewp(O}H%Kkp73u5iUOfORg0qY9(dV*;gUlk#JSQO$b*bT$gZlLUraRT!U~; zK^kog*Ou^gOze7u8;WIp!VMau8dYH%$*5le2sb6%ns771EycdM@NY5LDdASloNyb$ z?FF-~VC4L-AN~%tU5q;s?n}5c;qHXH2zXcH+RaS%Al#d9PqkF_)UN=8UF>5p`w<>W zxIdws{KHX%2M}uIAFAzO!b2J!$$l8&(S(N+9!aRhUxC#VGxtB?F@(oSUef|}<tGq6 zNq8dR^@Jx8o=tc%;TeRd5S~tWDxtaj(fH9#sZDmmGllc4#z=S$;gy8v5?)Mr9^r+A z=Mx(J7Y3>7B2}Jx2$v9ECKmMyAd|}puV}o+auwk<0>0W<)N>=eu35_b2EtniZ&ViL zQZ0bceE%EXN_Y?9ZG?A<eGK94g!-G`K`z3(2=8tfq>_6HA0fPt@Ik`+2_H}{d8$J4 z5TRE7#!mPs;p2o#{0B%vX#whkc#7~f!lwx%!e<Cw!e@o2Mc5`B(*MvVbOsC!8=*(& z69(F@cBfi^)EN^NgdM_^uv;4m6T+TG%5xTDMwsi(s(MPo7YHlD=Y*u+xCll3HS>#v zFB7WEACv19!dEr3#=K7WHQ^hC9}&Ju_&(uVgzpf(tza7SF5!EcL@c$P@B_jR2ULU~ z6MiQ4PY6F9vVTtaMYAOQlJKiRF#`UE@OQ#*34b8`u67ZAF93N}41Xm2h43fBpNF#( z{z~}UAcaKzLHG~hpM-x4t!e=(L^e+NuUe{_|I?Oe9A226Xk4;OiN>QF5{*y%Ine~f zlMziwbPmx(L|YI|Otd)BBt$iSQljaIYQR)PlM_v;I3v{p8rpg!f@m7CPi=Bds{n!_ znx1GDq8W&0CYq5*eHT3NN|gSjWIij=Yy&UR97OXF%_*+Ah~^$770bLt3lq&pv>?&^ zL<^`u^SKLPAydyHvRssCF^y@SQnUoo>O@Nttw6LC(K19!D}b(iS)%2MmeV04_7#a% zArk#p+h2JAAX>Ga6Rl?Qu0gaR(V9d`?TOYRQsQsC>k_GBKhb)|GNS)P8xd_vq{N>{ zy$CcIS#Bod=K2g1ZAo+>(N;ve5p7Mhvv{{5+LmYsqV0&b9|>0l??|+hwwTX?NLoO& zYhx$cT}bvI+K*^YqJ4<=BHDX6ifCW8l){MiCpv&=lqzzpkKiDp<B1L?I#LJ^Av%=k za3b~PuZcaPnF!!0qT`5;miaM6V=2GEpFngf(TRdNNyd|jP8kr2<usx*WTIXHh(_0A z4Iny`NPP>Smdbv%v7bxSB|4AjE~4{^t|z*H=xU-1i7q3$i0Bdt*RKFXmnstBA-bIC zN@3GofaofnLIbWL68(>c^gp_R=oX2(QAW}K$moA`E79#lw~1>^J(^s1sJW{APGh;7 z=qaLmh#n)lm*^p)`-mPOy1zlzFro(s^$@8RK=cUFqXVPie4NOLfApl`f11c9dWNV) zr1W1$DH7EJh}s6}5cx!|7(Hdw+Yg8$A`yQHCyI$WBUGxwgy>_U9?@$=DbY(r8Bw1o zCn|-oXz)bUAdu)eq8I8cM9(+51o`67{AIDcLL@CfXMdgOJ)$>=l;9J+DdSu9XbOIZ z=-t6myzk5S0nvv<AC0(F>Q9J%Bl?u+JEG5sz9#yd=u0AL0XpMXgAk%`gzDQN%lAY- z6a7H+<51;4nPPrXNLA;r#_~JyxI}*t{Y&&G(ceUW=|KI!|1rq_RA5~Hj5A1AyNJgl zR%d?V@nxK#@e)r&JPGl{YB_is@ubE(Iq|8)QxLC7JSFjh#8VN^K@9Qq#OnM{ER7(Z zmUz0cN{VM7o|$+?L#1B<i0fizBc6qL)<H%UsEVAuVIZE9cy1w|%Y@HEJil1xl~KJB z7_jaF#0wEGN4zlcQpBSF@uI|w6ED^vCB+iNOAeMorSzXzo&SlKRkS0_%M-6ayc+R} z#H$dmM7*+&6%4Tw|HeYRdJ{{$hOw+gya(~x#G4bZLo8?hc-<OCydLrT#76v^4>8_| zSjj%Ix&Kk~O=~vd%?#%j#M=<7*8xFpMZC3|Yldx!cOu@7cn9L`8>1Q(!;S{CGx2W3 zyAW&TA35R2`WA?IPvXOg_aYueyf^WF#QT_x`!?x__irphegLsL>JuMGd=T-$O)iu1 zP;nhLgg=7#1Th{-d=&Aq#77e!qX1H^xQ-)M-~0}u#CRg{NyMkf{AA^70BVD$5kEtG zI`Iv}qlqsgK7;rI;xmcQB|b|+&L%!bM;T_~^Teh8{f|s8l<^|sONd4MB@6MTI#6x% za$<GPC%%ICN@Z7b-2#Z^MIaXakFO)XUI%La8;S2DzKQrY;+rK<H3ga6+8~L?5Z@`5 z+lfX0b?jZl_YmLR;Ol~k?`=W^d_VEy#19ZZLi`}{LuN-x|IPf-CYD%U0W|Fs68<Fd zQ^Zeeuy#F5`~q={xFEKOL*h2EPizy5?8o{Fh}dhGO`@RTA&!U>;+VKg+|lH+U#Y)G zoDrugN-~NuH?h(PVx|AYePVU<BY>gvfBYixN5n4?zfJry@oNHpMPSkb)Khw$_)TK- z6@an~iGTc#guF}q0r7jp@9RoN9@>XZUV(i~{E1qsl0KF3vj$K61)Y-kOFH%6*H?6E z$@-ekRK(v9|3myO@y~+)j`(}xABlfZJk72Z+fVv*7ym;1yC8oh{%wFE{)6~0vHxi@ z{;j-1Li{hC`d}~m-}xV%@#u_0XIvfLe43r{NAR5q=}byzB03`e^)u;AqQP}Boyq7- zQ7`FCt}9f4DRtfsbY>Cn)O4nyGXtGz=}a${=`@MXI3t~z#cuS!GxR}sW~DPHo!JC1 zy9!hp=NNe=9i{(tR4=HFbmpbA3>_u@bmphCD4hl9EG#Z{|3hb?1}XDJ>QRu3(OHtt z;xb=C0~EtjVo~~Ukjv6ppU!f0R;RN(os|Tzf{ZIRFgh#KS(VNzLs6>@&DWr_Hk~z< zMWtA4$h8igb?L09ExNW1=xj-6Lpq}TosH<I^S`NQQ#zZ|*-Tl)NN0=2RgZMGqO${? zt?9^}PiGqwwH=-9$Ih}Non7ecL}zEAQZJtMgwCJ^)brix+(>5+I>*u3lg^QJ_M$V2 z&fbFDht7U7(fTiQX#uK|1Lzz|=Ri72`RN=~d-X4K=Ma-i=|7#r>6pX6uHh)LtMk81 zR2QJ5-va0yPv=}ZC(t>a&WUtRp>vW!ny&y9{#1$5w?K48(>aUI83uW#nyA9g7T7tB zT`cF(xkQZT)471oMKV_{z?3a5K*e54=PEjv(YZn}mk(j21t`qbbgrXw4ITZ24axO% zZfNFB6rG#sJW5COzjF(n`{>+C=T17e(NX{Mht3$yujY4{sJrOgBVPR#0G)d^t%9lZ zKb;5YJWS_7Iu8vP)I_-+X)JUeqtmAIIGtz2{sf&T={(hV#qxAROXpcxwv<aTSjKMC z>CkcL_;g$;NzVWB+~@>!B06CcWkO;z>C#DsEs?ROV5<I%j=B6%xe8;i=+=KAeYz9S zd5+Fcbe^a4A)OcKyhZ0lI!fp1yhP_^I!gJQKry~X=M6fqk8OO@RPr{R_vk477x23p zrr6%6^T80$M|5go|Cr8abUvY@lwX1M@9^hz<nTXYsrCO`;rv?0Zw&G~IzQ0)eu&w; z0;nhOGu=A1I{(x8mCj#uexsxA{OSDOFv$E*^~a@*f73B1|4yy{O8iG)-EkC8cU)yu zlksGf7Es4_C!{+U-HGVVKzCxgQ_)rWPj^zfQ_!7^?&K=a>_}WwDog#HeiypaibY-l zy3;gBx=Q@%sz#v8P|F$V&O~>1x--+Am2RC{^^QTE5~5l_W1%|--8qMrbJJa#?mToC zr#mlQ(fRItbmynLfPys_)M`fy(Os18!gRIr8^Xl~Z1se$Y5{bYlu@;S8b)^+x~tM% zmhMV)m!rD^-Q`ty^Z9mHY$k$S*@Wm8KzB8|Ytvnw?i$9mCf%|B{ZDrty6e+jm#)$O zX1^-+1}4i!bWfwZG2KygH=(;X-A(CkPj@rAThZNI3f_Y5mbw^S`POue@^`nTyIoU* z;oO1lZgh8~yR(GvWGdW+?yh6=>`r%2x_c<2?7AN5?q%@m{7+YjKV4}AT@im>!vS=U zp?e_RBj_GP_fUZyEThr??qRY#ydKq$ey~T<75(pu{%hm0bWarUaWWn+;|V6@Bw3y; z<0*7c9aJlp)9Kz$cQoB==$=9M61r#7J(uoTboKxI5}33AwZZe~UP$+Ry5|00*KiSC zt^6kMrF5^Pdl}s;=!*E8T^N8m|I@wNEbBj$Tj*X#_eRNhJ>47XN#hmEO@cS~KV5bB zr+b@>V+KgNchG%??wxcWqI(xzb>OFaw~Y5RFuM2AeL&dmH`yN?VtAPD<8&XP`>4S` zreJ!fPtbizVxQEi($(TGM$!Lni>^o4qU+FY)3uveokH!}HOziJp&MwInn&~!x-m&D z;2n}Z>2^tKO{k6E(CyKElWt1)CAt~i=ji5iE4l^UazJ8A?GG$;pQrl*-4_QIgL#?m zD|BC{`zqbn{*U*K#zOZkx*ySfo9=tHh3-3a-yMMIzAwfP=zgeos-M-zbU&l}iFi#5 zP~o4`{fh1vbiW*s)PZ!B_?yDMC8?3$(fyt7_jG?2k{{^)NcSh5MZk1_q5JE=Lie|Z zgzg`7|EBvV-M=)guIeA5`j@W0`PcYl9FoaN#wD4UWIU1yNyaCcU^rG4nM`ExlaNem z=98&OQ%^Dl$<!oD{7I%FVNjcdPeU?2$+RS6-~S{t3^B|^vJA=0B=eKh8RsUMg+v|r zNoFOPO%tkO<{+7iWX?gXnl#%?<{_C^LgpJXE<mz~7#EarA(DlacO+_2lEp}tBw3tf ziLonRie%}rEz6Q@PO==yS|rPptV*&1$;u=vlB}dTbul9T`uVIzqLiOxbyMn^Lj|l& zvLVSjB<qu`OQLW74N{ALy(HO)WK)ujNj4cf*U<St*@9$yk}XNLA=yfjZmqy0``uQI zx(kr(K(Z^zjwCxvik*g#yO<hwBiVyw_kpXKknBZrHOby2r;zMJau|u|f3hFRK_vT= z93Y&d49|fB29kqG4jEb=YA}bB97S@3a;YbFq_H1OastUQB*&5H!@rO#@i&+gNlt3! z602H(U`{2ufaElib4X4nIg@0x0Q5frHQ{mvl$>p%&K1mgGM?WUWqu)vyb&Z9$x?R# zl1oXhAh}E-RppltRdS_Ru2L@bIbK8Z2+6f1camI3avRC@B)5><Kq8u-+&C1g^<NlN z3ozA=5zFl|%K5)OcO`d`+$R>%|3v9OiRuWF_kNOxNFFfD2MyK3%A$U1hDS*PlE+AF zlE+D&A$fx2DUv63Nvi&*8-{u$d6vW?k@LU)&2JC90&qxN60b3mDE&9{kR&CENNT~4 z8#{^qSD+*bNv}cb)GA#@l9MRqCn-$*RTEn;NuHxu|0z9BZvv7RNWLL?k>mrCmq^|u zd6`6MKFKR2>ZM?a`E?Qze=(B0Me;7m+X9yJzwAzy(h-vPP4*8-)Y+coBa)9vJ|p>r zWJLU>s?W#HrMdvgS0rC668+r1CHaHoJ8^wa@+-*?BtMh<Nb-{oZ)#B6{H3vwDDfv5 zI{YVplKd;izexTz<f;WoCI8V=2Y!0>k2?Q10I`gx0KM@wvNs{Uh3HL0Z$^3()0>>0 zod0{$0u+O^02ML?y=mx8Ne_Bcsc`jkEj@MkH*C|=o1UIJ{~L?wzuHlaoQd9i^k$|v zC%u|*HhQzrn^nNq8vN|^Ms9wj)Vb)*Q+w&n-C$%sZ?hwM^UHDp8I|}O`@-~=qqhjX zrRXh6Z*c*buK*O=67<yJzX_qYv;dZoaoNTw^X2KSMsEdrD@!pe(laeUk!by=w`!AD zLRP1@2EDcEtx0b!O=Uh)0jx{!RC?>t+lSuz^tPe5f!H^sw;8>S=xrjo^!-1*O*M(i zxH-M8=xsr7%dwc1OIm>Xq_(BEvk-1aZ+m(>G)Q_o(%WfJr=-}0-tP3&{SUp}6igl< zy*=ouGe5mO8;gMVHr{>d9WLJe=<QGM5PGBNDcPrYfWaI@@8IEF;ysj}I{zEY5%f-^ zcO<=I#CsIIqfJQt+j1<u<LMpOfCX@ZnoEVUJW0lr>7AmZ)ZR~{cPqWq>0M55G`$Px zok35jJ-st!RQfO5IftGSf0>_0?|hTGv0O+`ebr0vB6=6oQ@ua|n$J<OUDnL$T|w_^ zVHW-Gsq?=quc3Dny?P_p%hLS&|K1JsZq#f#yB2?Xx0u-5=situ47~^G-A?ZwdUw#f zOL*>VV(BUIH~4$$-7j9%7nD&|uHFU2_z=A(=sisDF?x^C8~giTg?zk03RtxOdg@(3 zme0@&=sio%rPrco)3fNcHC|(!!IGY80rW)wwKt@vWS?GCk3!y&Ww%+%yhr)~y_9r0 zdKtaH>E-l3qgT*-hh9nV1%as+K(9})*8k@R;llYMz1QfyMDG=PFDuu`!+EtSkKXI_ z-lF#gy*IU2SE%&AvCw;$-UswV{Cn>Yk$gz+6M7%j7J45K?6TBdfZpfyz7>mfir$y> zzM}VySiaUFI^%crex~<5y`Sj)pj?X9Tmebt^nRiD2fbhE{Z8*UwFQZ7c<B8pyEd-? zD*PYP>FE7SIv&0M6k#fxQWMnzNXOOBAswF-(g{c>C7qCTV)0I-nNy|z200n&l%$iB zPN9uW{i)Ia`d1~@`cFCy>9h*g)SpgIIuGd#q%~&7#!fmD>CBo+l{5?K9Hg_7&Ss)! zH{NSW=Tv)4=OP_ZezD9;x)kYrq>GTwPr4xK0;*tL+d`xZH*>?eDCrWUi;=1>pk0c2 z$)UN@|9VL(Eg)UCagi=hdIaeTq#Kg1NV*2;N~EjRVA7RkR4ssXNdME-4b__BT8ngD zVP2bb9p%!A))Vjgq$7uav1~-TH|fTt+mmiWx)tfBq+5_~M!I<uI~YlI7a-l5bXy7E z##Ancf1PUw(%ngSB;AE{C(@lYgMMPWl8X4tQcB%JsP-gPT|g0P<UXXL^Xa~%`;m?k z*!~TMRK#CrJV;yzlO9HT2<f4kr(si1Omz^+btLI^q(_mCCOw+;B+_F@kC*UcNsnt% zH#Lx+KzgDI)UhX%o<@2~V<A1YvDYK%=>~HK=_RCRlAcF;7U?;psvQg=O&3VdC%uqV zu7LD@FCx_^fAa(`CB2&TGSVwaFDKRi^2d0u8qn4j(rZZNV56(Op7a*d8)^*cjZF=t zH_6hpfb>?<dq{61y@Pa&p}k$xD$YAe?;_PV{|0ccVY`o1H3DOQkZg9+he*FCeVFt` z(nm-W(nm?#q>qt4DcK*F@rfpo^eNJ3NuMTtMpNmh(IU09MeoQa4M`nRpVTECx%?Nx zU;rkKNJaKjeg7{2X#w@gFs=2!FP4-vBQ0c}H{qlusZxHmDP75P0#Gf0RJ8_Ue~I*6 z(w9l!Bz=YSbpgCe`r1(J8w0#}-;(id(svq?dL(_1^h?tBNk1X|fK+5Z{csRSs#^f* zr=*{gem3O#Vu<G}(r-wI&i|=u5R&n`CWQ0{vT;a%B>j!_C*%E@R1W`YgTET&@1(WJ z|6!JYlKw^dce8AglB$=2`iJyCvY}t{tp4|((~*rwHYM5kWRs9hK&CXGY{G_tY+^;y zJmG9ovdPKx;oktJFy5)irXfSZwf@&GvS}Nn*rzA^e=?bYY(}z~hFmi@bFx{~MAa}W znX~};D9Pp^+k|XRvQ^0DB3p!PZn6c)<`M9`GR{XfzY3RvO<@a?Ez}svbQd67lx$hD z#mJT<TihV^EfCpKWJdh6Wd?*~%aN@}w!Gw8VUUGvC52HnuWYDRC0mDVHL|tHl=zda zVK8gTM2P^|+G?(z(z;|Dk}3U{<@(|^T|gl>63fO0uqoNWWSf!gLbf^CHe_1}K#4!u zR%BZb$`i}BWIK{=N4C9TkXHbmZYRN*7N8h*B^yPy8`<7uyOSyLm%{cW+iPs*eaQAB z+qVG-&;DvIcv&7mrW%CIRSOWFL&(k~JCy7=vct%ZCOe!=-T9Cm(O_hLRFjKLy$%S2 zz5*gUp6pbz6Ua^`JCW?92B}B21!)0_@HDc~5_`H~J42^Xu(QZ6Bs-hz0<v?+&L=yU z>^u!<evz8Jm^qo;|75BQkX_Os$u6U+cX2sI&2t6$?POPy&rWs~*_UKjlZ9m0kUc_n zE!iDp*OA>sc0JjRWH$`zF%{lSb{p9(WVa6Qi);+pi1JGTcaq&tb{E;bWOtLPZ-Et? ze$I0E*YgL+9wK{i$oufn{86$N*<)l+lRZu*T_Dr?U&F|rGMvveQDo1WYArI4tWD;S z*$qrW+y-f2z8C|ujL2Rii^+1b4q1<^5&t?@GDMP+Wdk0vg6svdlI%IMicIwgMJT%_ zQ~KXn$X+CSnd~JEP+NF~?A5XHuakX9_6FH|WN(taO{T=(FuX%H_~uvr!PY-y?~{En zg!zc<GqR7#J|+8PP>EsqTtdERmNNf}9I~&;{v`W`>{qgH$$ldHj_e1r?}v~-4$Xg7 zbCvy<W~Va$jqLXZL#Dn97UN&!6OsK*J}%imWdDirU+vBRM?OvyVl3m4Pe4Atrfo>_ z2{mm#G5HkalaMRfC!f?rO|Ag)1uOZK;+m=nk@?i*Gm}q4KD{he3m~6v2rz?KW+b0! zke6KQ&qe?1Kihm(a?yWX(j4Ublg~-MDfwLFE0NDlz6AL^<O`9{OTGa4eB|>FveeAv z3l5g#3zIKOzKF8aKgzop`QjR&vn)xj1fP5<8BG_+mnC0;d^z&v$HuRymnvjs@^#2p zAs4~VR~3fU8UXnk<ZF?yIlzl|ZSy?WCEtjAJ@O66*B^Q&8xHW~O8m(;Q5IeQX5@R2 zZ%)2F`4;5ckZ(!8mGN#pgxt27lglfB+WQXVJIh1ZQAT|WM7|68ZsfZT#qK_s*AwzR zW!#H=Z}NR5b{}1^^6uBn$w!f&PJRISF@isk{2=lp$PXqzjQkMtvCsdiq{B_@krHwg z`O)=6lPkcn<R^&hI2qL&fx1P^Pb5EuT(<!7lba~=Q_bWwGZ{^;6r21E@-xZLBR`A$ z9P+apfVj>bnx9X85%~q=7Y>Z79#zc6rrJx%uP48Z{3;2*oV?cmD>YvKUR_OotwdeZ zL<#b`219-W`EBGklHW{zlMYlx-a<aM{^w&<xaPcrVk+`G$zLJAi`*f<oBRRtdxTt_ z|H+m9li#m6_3zAs<WG=4ME)qb)_?Lx1fV32{4sKK`J=Y^BzcScDe`B?pVr0e0*wCW zmISuR?IuezlDp(Ra*sSF_sN5Smpqh^Xy|El#L}%T<cZm1O8y*qMqY|HCodF<>_w0j zd0&BbNlO38Um$-;ye~F(F}~bHk-tj*H~DMiwG_Wj{vP=o<Zlb+O&Q;6kizf|`MY|l znBOP=g!}_?IsfPS{7?Sz5av_zFUUV5SK_Y=(B*yESjfL7|B?I~@^6jhJMtgMNA%y= ze<J^b{Acpt$bTUp`TkeR8@m6`|5PEW$iIem{SW!S6t#^1M=`GQ7J?~s7oZrAVgiar z|K%5;n2=(k0fWj?OhTaqpJGx9)d(8p7t0hfsumzfD0ZWmnqmoxX(;BQn3iHzis>k3 zrkI{$Mv564umldh0u-YE#VkYK*(l}|*z6SMD*#o`Tn&a|ZZnxzVDnKdOff&jf)sN9 zGx#S!#X`-FC>Ehmcm5QMHnB1{uK>l86dO=1MX?IS(iAIFEJLxJkS}X;El*(%|9aQz z{7<p60%*&s6l+tgMzJQv>J)PLH@~F<UdtfYp^$5zLfr_7Ye@f#4Jo#v*oa~aij65Y z6@at=wS~<nHg9-L?3NT;HFMdQehZ-3mSSg$?I?Dn*q&ksjge{vY4pF?MG>m)NDEL| zcBc?QF7}|<li~o1y(sn-%-#~K^`BxtG44+>N|BiTQXEKeD1|!wQyffj$go$8hfy3( zam28l;wXyI6h~8>NFhz6IF>?gfeNMnl3KL`l}It4M4<$q;$(51(%8jv8pY{D$TP%v zCdGLaXHlF(akd7l{hq7l!dZ_L=Qn{A7gE**Ttr#_$y`j4P+US`QCv!KH^pTX*HhHz z|Enmj5dJHNNUo;1mg1VB8m=2;p}2u!48@HUw@}<fp>KYgaEe<gZW~Yu^X(LO%H$4B zsOr4S;P0V$jN)Djb=yyIABE_@eo7BgJWTP>fRN%5im~qhDITYIhT;i|rzq6r|4`Yw z1yDRI1+<iF<RfTP*c2g!L*Y@lgIEf6_?M8N!Ba%CjAiUlDCKWlV(C%5Ly=OvPLWYO zPmxnp6iWXoN`;iX6#ZsSQC|Ty3iblUO9Fe*U|yzBcm5QwG#2r`)?}o3LzZvKsKlQ_ zwFC8|Lf)nLiQ+wq&nVuf_>kg*A@4^NpGb&q0TiD$fnxle;#-O@D83RZqyNR%6yG%2 z8!*Lp6hBgYPw~UBy_r+|O!2!A{zCDq3Q<M=X1sq;{7dmC#b1W)Z;F40c_{v)9EVbG zN;8zIBh)a;@hO+5oPcs($_XiJ%S4pZP)<xa1?41^O7<zu`M;dJVUXA<DfQu>63VH^ z%3DrLIV0tCl+!o4BxHsGhElx(P|n;~C}*LZlX6x{efX!GT~g06lu_wFr4oNib^l{x z=c8OojPp}2K)ER8f|LtWYVnsuizvL_^<tDu2!3&6S+bd^QIV_jKc&18luG|8RWA^p z6)1P0T#<4k%9SYBrd*kFb;?yJ_02z}9R39_v1?GSNvW0J)VvPmdX!rHg?W7eZ$N1d z|IJ@+xiO_udrGDMl+p{z&FZ;CZ9%yW<(8CM|0(7CuVc5R+@5l~20R!kcceU&awp1t zD0imZjZ*19r51mg?@qa=q}apMyceZXe#N7+?@M_Q<$jc-DEHSc^|2m6dEnT{gH4F; z0+feImcwN{g7Rp}BPow+V1ro7W12bTag;w&9#7e(Jc05C$`dKiqdbXHo%1PArqtq3 zX<h-!(<#rU98Gy9rPBW)=Chh5<vD7i7^DTL$@!G>zEEBu_PPbs`hRhQH}zafc{Sx_ zlvh$-PI<+E*#NFGlWQoir@WR@pZvwH-V22MM#={$Z=$@D@@7h<`INVa>((YC<rvD_ zb#_(W9ZjrY?xMV#QjYy){R*IHDet4aUt@HZ2Pq$;d`OWfhKDI1p?p-I=rrbW%4aB_ zpnOU&PbzTjQiM-8bINBaTbfz%s8;|1*p#nPI+QO`x|AuUM;TH2l!4|^_|V{E%7n5* z*&TR=r>DquJsD+1nNt=Tqbey4L!a__%IAjgFAS(Cr4f`b*A~iGWPEkV`#R;Ply6YJ zPx&V0I|7gvP)Z9>iR21MP2My0d_eh;AU_<U`j}ER0)zRC@+-lpw*bm7D8Fo6^+@?O z<#&|dD7^B1Yog@*uPnL?Q2s=<BIVCiwUGWoRl9zr{FCxG2~<r%Ci?zI=6_NCP5Ce7 zKaJOr|EHF9_G%oeiK)h=nt*CN6;h4gxEegwgkqeiF;Y!JH6_)gRFhLpHa61S|5sB{ zDdnfq{|c09nkKIpr=yyeYI>@<sAiy=m1;(+8axw~R(=gu#mv&osb-^^lWKOVIR;)e zk>3ibP+CBxTL9I3REty1Pqhfu0#pl8ss9wv;Hef?m8+j?sTP&+#niI-9jlh0T9#@_ zs-<fS)l$Y@i@*L0m5}AAmZw^w;c3FDR-)RLYGtY|s8*p`k7`w_wWwC3T0^2%H^?=c zi5S<WTE}ErSJ|Z)s`aThq1u3IBdQG*U}V1=8~moiuo;!=2xDWmq}ocnqW|i7Zey6Y zquQ5hd#XLDcA(mYYDcP_jCbb&57n+zyHo9^$rZ^SYOX8XtC>^nO|{REeLpHC?^OF! zjiNe;>HsRE|7I6;7OF$2j-Wb}>ToKh|INMz6RIPrqy?y?_2+dA&(*n(rGGlraa7+> z9Z%JwI)Um2suQU$q&kUeG}Xyer&66VM5UTS{X=znW28ER>Kv*w#dsE#IsEJ0olB+8 z{8Z;PRZ%JNH?bE{T}5><)n!zwH3;%j<Gq~fO0kU91*onT<26**QK>Vk!CyZ#zme)b zs+*{8qq<q}O8jM_Z-J=BP~AZ_)B>tIsqUe=i|TF#9_zQ|UQ_@5RF6_UK&51#>cPR& zrh1s_5gn*pk5N5I^|-*E7_vV_^(@uXRL=}z2f3&$s^_TMR1uX;<w>|BquY>B`LYbm z(&&E`Qx#Mlszd;~3sCi_GODz}iz^?@WvTR^s;bMNk}Dv!e4gqvsu!r<p?Z<(b*h)B zUZr}ON{PQNUWL4-mSUlLgX%5ec~b!O@0*Cf_P$H?A=P_S?++NLK4_?@KBD@BN+14f z0M(}hW?72<S6@(lN%gf@)Vsg{L-j5FC8@rnKQ-0&^lOG6sQ#w<k?L2fTK|7Gx#aR+ zVyS+k`jhH+sy`G}L#SQ){)bBGKh?i7{wEpb{ir_<{mJN$OMe3T<Ix`y|N6=FC!{~I z3h5jD?@vNspZpbx!c0zoD*96hY|6%{MipiBzdsHA`RGqee>VEl(Vvn2^a7Y+fTuqb z{aNVGOn*e>)LvAIS({DKpPl|3O$hxt>Ca7nuEr&>dFanOSPK9A^p(`pUx5CCCQ!cu z&|gGci_%}5zUY7R^i)Rk{cnFM`rFZ8n*K)gm!ZEp{blK|On*80E7D({{t7yydGhpE zQi*D%>aRk7Rg-izF*Z+Z4f^ZSUz7gY^w$~`On;pQT#xkEqrZVn)*mu%*v#o~On-Cw zn+QPZzifZAhKl|c^p)V#-%>`^0t6u9uk70z%l7mSqQ3+Ez3A^qe>eI&(cgu>=>N!$ zc2$i}1@2CN4->m*GZFjV^!JmAY60~3HI?j7{{Z@<6mo>^z-CVWVEV_<KZO2~^be)4 z?)>Q=*2D^rxdl?3N6|lez(c>*|C8t+NB;yt9&a+9*pQ3yWcsJdM85(EzqA0AXf*vV z>7PNrP5(^#H_$(e{sr{UmXLGkpD&YhWjwDQRf^`%s(&H<%f)^X{fp@<&8IIdKrvsY zz=EfL1^sL2OC#uCMPG@3Ln6gAPxU(b*AI+BbtC<I=-)(t4E>wMa*K?&(!WhJ=t`9S z)4zlM-SqFIf7h_LnbW_Q{^RuTqyHd%x&Kii4=AttEq#c-l70FQo83K1|1n*U-o+F2 z)oGvplQNor|Ji@$|8sE`K$06x(|*ltKc=(&o0*xJnVFfHnVH!>Gcz;Ona{K%h7k>| znVJ2mO0C(sKjNaJIx8!?q}k1GY1U@wg}UlRhF%)C>J^4OhF)bz{e0*(hF)jrEr#A; zNIajRG36*F=33rnNZ<Jny)&-P`wTT08q3hf41J)5A2RgOxV4|iR5XqMYiu!OGvsRQ z7)`U5&rr@#psA1{J?9Ta48;t|%b#({vIQ`dRX9ThLtRB$I<|G})K}4C=rcuz85-CB zhdx*Qi*hW<41GnTw3M%Dl=k=yjR_el{r@+HzGLV|hU)YG&<{2LCx(7u=x3SM9WwN5 zo&BAme;N9NA$jw|(4Tcbe=}6S|1sD8AC2*8{Ex<XeI5BpXiOl}s<*~OG^P-p#>6xx zp)r{>+|WM(5^(YX=9Dz1QRY-Mrmhw>OE;h~?ErIn8gtW_fyT@<)c+f!v~VWjRJ}E3 zp)m)IaxL+E8s_}3@$3~xV|faoF;|7qn1{x~H0GtT0FC*o6=}>rAiJP0RBr)|MQAKe zL;b(8*Z^$_8cWkylE%m%e`?_}!ZCMdIT~v#xIB#&Xsk+OMH=GyG*+rO8n05tG*+Xr zrXs7;SVKUgv(`Yo4vp<-tV?4v8tc*6Q2FcAQ1dtZjc9D5_{O!urgHh_zHLrpYZ_b7 z*owxM6+uQ*tJ^_C{onAnr?Cf(9cb)IV@Ddh(AbH_&Xt-eH_X!fMTf@jwVG}Lg6yUE z-Zj22)><_7qwzV7{b@W+;{Y0$(KwLCDKrkEQ6Ak7rg0RFLuedM<4_uhRkih196>{N z0Rx)mkEU@9jbq2bW%c7}oIvBG5~pGOU;8mz0F6^=oJ-?08fVhbji90CuX~v?&!TZQ z4LSVx#c7;J<6;`;)3}g^n7_%&Di;}=tbPfNOZ$a1E~jxDjVoxBzeiWnxR%CMG_I}) zGzQ-PH*^aS1@rwcjT=fDjT>p)tiern)h#r{{AE$|S=>(J5gK>UxR=JAH14Kxmk^Xg z<DP-|J{k|wxSxhO`PZC>XsGj#Xg*4#eCJa(@R*K|*K0kg)2FIJjh~_M5shbQyrk3T zXgn`jseM7m7iB6p>SY>Z6nTZlt2E5Ze;TjTc%#y<S9z1h`!wF7@h*+GX}nV@)H<?p z^bs0kX?#HAL!)5U`k01Sa%g-)V~B>OaiglDVe8bPA>RTEXsUb~IgNlutb~w8G>~o5 zNJ~Bq*%vf0=C9;}Mu$dA@%BJfm&T_wdNhW|T}!ruTIUO_DQJ92<1ZRt(fFB$J_t0v zq45KaZ&m+08fyMk!{(#^QJ4FvQl{~XGJmD<hX%jt_<K1j?awMu@NcY%Y5apVzE1TK zpz$Bp|FFh0v}y@U{2yyV0VSBotYuA7Ba<pV8P<URTT@~!jWre4+*ng%jl!A+YkDk{ zJT2CAl}@cTgW}@<H8K;{Y*;g6$p?gG-U4CGDxB(ytl6>V)a)EJGFM*~YaXnHvF62E z5KH_YYksT+`UEKvP+tK_un5+YSc_sUj-~!@R#~DFSMpK=@iJH|VJ$0&lrN{_@>nZi zt!QZG9<HpZRdiexYYnW`uvRyn=qj38v%dDVv2Mp&2kQi^b+NX?S`TXzto21!*4h9| zw*zY<EaUuj?WR~;DQ7dR&9TJxv9^%HvKj41k*%?|!K%&Q^tnCO0a!a=iK}Dnh_w^e zE*kG#DPZl2rRHC&VeNrcn*5$vdt>cY(X^!g3ZVRzvG%LW_pkdr5bGGMgRl<AIvDGa zns6xAVf{YK0P6^>qp(J{0IZ{hJaXTTEn}?XbUeP+KN0I3tdlAx*2!3>V5#9-rz-O_ zNs0a$SZ676raaLIa(0zc@La4bu+G!?e5^~cF2K47>q6leg^RH+sp5L|%c?Ba<u!68 z*7aCdVd=5oGP^)Y!@5?->uTm`teX|N0qaJrn?$Pm;H0-(ux_oHxAjw4cVOjMcVbys zcVWGPbvM>ySodH(h;=X4{i=CiRf6@vK<z_V^3DgV+y$yTpx^(RpNhw^p2d0s>uIbf zv7YKTBMQ?0GqvV(STABdk0s78G*Kuo=OwI{2dl7N#d;s>HLSO=UdI}vI&ajgzu6~a zy^ZxQmLC2`Zo+#N0c$MQhgfp{uaS?ihOj=yk~cqsYYNMlzb<5B#aIrOkL4;Nn?=nG zu*CMU!V0OCn+mG=OE%SMR%Z*WU$I(PpJIvsV|8@wV)go+V3}P2>ocrxu|CK8N@;Tb z$NI7yOEQ-DzXspb!FO0cDo1t!tRHIpCoJ>+M{(H#wD33VDX@OW9uMmetbeio#3~K{ zFRZ^Sj_FG864rm%<_=Ui_W0NniKaaPcIE&2vtdt+t)6e|7EpF;Pli4DpeFW|*rTwg z!k!j;YV2uhP4n_cI<%+5o<W1@tE{eNwgBvzuxG=b8M|c8BI4C`*?Rb|dbVdbi%OGo z5*65U;g|pO>bY?j!=49c4(xfc@57!C`*iI2vA4ip0DDF31+f>!mcu{x!a6Q8pjMVI zgS|NRlA1DG0QOSY=FNY7MayC@k1ghJu0k$tg*v+u_PW?BW3P$53ij&Qt75Na$mS~a z{BPp5u-Cy}dr(aqSPy$6?DerXsFlV4>v&`A&9FDY-n0*vDeTSrQ|v9V_r=}{duQye zv3J1U275c~ZTp-uz}~*n)Obf7cdA#}1$$5IU9oq^-fi5fJ*p}8UfBC!?=921J?&&a z>|?R_$36`E0PKUY55zubT+SibhmMOJj(rsN5!ki)t0wl**vFVY&3!u#`^2&q`*<Bs zsC2MT!afE2<i0HSso3?KpUUg(GqA71J`-C^8~ZHmv#~G0J_lQE-#)j#1LqIuT!?)! z_C<o2t}em8bg(N`yIjXBbiA@=UX6VVwr&LWwb-MvufsMc|9Y((uy4Y?QA&)yYzlRJ zYZ+kQhJBX?w`1Rdedpln*mrB{9_)Los#^Je>>l<5*zaIJi2XG7L)d!Gw@d#oWgo#F z`THM59>;zH`zh=vjnqgd&tSif{VeuN*w10Vi2XdadH-YjG5x=c{c4F|zfy@{zt&g7 zF3rDOdJOhk*y{iK$tw7E-TAxN5%zo77WVttA8K~2jvv&VkFdr0u|KYnA?!vK*NBbn zV>?>tVypR=%bB00K=IoArK=dbz*hga6YLB-EjjW}7RsxjLa<xdZEP`r&B{xmIv&RU z2m4d(pRqr~{sH@Q>~FEZ!2TNhOKjN-sy4J%&0osPpOEj$6t<YZA;?sB1pB92U(6r- zSL{Eqe-luqzbn5~_*18UVgKD<LXm%QrosLXXJVZH;f#+nUR5hSI1}LLF5pbqUsv%- za3;f<RG8I$b0)``Qd3h@AkI`cQyYTefHM=$v^X>3Ooual&6JH`Kx$Nt&x|uGj`%;$ zAYnE|2K?Wd6X!vkxp4NznHy(qoYMbSz?m0kQJnd37SxjYaRwd%<N_DMSs14_f79n; zILqQJj<Xcb5;#ka+uqVR%Tyg2T-sX>XL*?#g%xpD#aT&cl3f{Rl`5_YtKqDUW6U3C zO`NrirruJVb#S)ESr=y$ob_-v##tX{!?GMlUjdng^ebRpMN^yNY=N_xE;{1>I^7aS z9u4XSw!zs!aoGZJw!^8-UzXSrXE&UkaCX7jxnHHsU8^b1?l^nm>`@8o>U;H>IQ!t7 zi?c7z$vFGr9EGz#&LKDl;2eZ=pj4Sl(64|^d??NlIEUdJ-j@|k>F`JmM&lffa~#ew z3LYz<sXZP?cLC=FIY~;1ya=kZrzmnN&KWqTX?*%X?U^`dmrR_qYW_KrH9F_v+=6pH z&NVm};9Q1tA<iW@7vWrNM6?H0FuMTG<v3U2T!CYpzhdI(m%paxYjJMExeljl`1+c2 z1CE-1-G7PW++6jh@vS(w;oOaLJI<Yo+);Nfn}Yn4%ee>Vew=%8%*nsPHC2EA>pX<> z1<u1b4V*`CUch-2N30%4_XX#1oF~lEqWKigvp7#ztKd9Suk~DwJYOR(;=GOX63**5 zFXOz5^U8qEfd4yh;Jk@5rc%)M-l{~(5$7G84{+Ya(U(8c!}~a6jg-044{<)h`3T22 ze?N;eRQF@y<Ty4?6UV^`aa^1L$HVc>a`oq^>&k<G2JwJef@Az2C#$M(3Y=k_7LGVS zPP@j9|Ks#3M6;jj_?eEMS2)g>xHI5<h4U}Y*Eql9e1r27&bK%};CzSkeZPk?z!CGW z5S*WJe#H_0uhrE5&Cl2$C5ZDU&fhrZ%U@OaXMq17?i9HH!<`6sJlqL!$H$eIKe9x1 zPc+7z7<V$<NpL4Mczwrk&9}g~Q{qk|i@H<c)?0u~!JW3!#GMYeKKWODx-;U=u2rLS zoC$Yk+*xsF!5uOGYEfL-0?HV74&1qwukV7~xoUhK+y!yx#ho8_J^>AXfq{4-TycI} z^Zl>Ji`LA=@yaHbz`YiCN!%lFm%`l|cWK<UaF@Yd5qDYK<?5D}*YXvra*bEQT^)C2 z+*NVa|IL-I*1vVQx&=rN_4^-pZQM<9*TLNgcU|1|RcgIT7Iy<&*#-KmXm(@VO$5<v zRAe*U&2hJ=5Zo<sw=z}cK5T=#JMOl)JL7JLy94fk|GPV?$W8--yC@>&kGq@T@^3Wm z9=HeK?uolM?p^|#YupESzcR+H|Nh_I-&6^BAg-MDaSy^h821oUXlf6un7D^mIPQ_S z=i(lPdy-Zije894@fshCD=&X)<_T4dD|>-9a5C<hxToNrj(che;)?&**)yu3LU7N* zJsVfezrM-1=i!Ra<DQRufd&`We0>CvE4l>tO595|tB(@y<+xV}t<<TcMByrJ>1y0- zOiIA(a9!N%abLhKZ|Ot0H{jlddn4}cxHsY6ihDEeE&UP|xvf9Ny`zkA@9eLIdpE9l zKJGoZ_nHQz&-)d80QW%yn!EHc?$fxB;68!-D6TkvMZh)h|F!T*+^6~}MV`TZ7WcUd z#C?9ChZk|*$9)O+4cwP;U#U5-;+psWs_=S^kHHn&$9=O#-o||w_nm?M-;<Q-c`UAY zJMIU#AL4$j@ke#rpY)lEH*hUnTR^!FP8Dd%!~G7|$Nd~Pz|C<(+ypnmjR$DWfmpTx z+}i)$0(Tg<h1<n#<H|13zYogn)m?q6Q!)Pv(W$=wamy{>E8K6iy{~Kjw|yq=_qc!K z{($=nuKK_9@RKV1T+wiU#Z|+1f5ZKKp!QFRg>SY1+<)*&GyfN_bo>AC#>1;yD({as zKHfO~k2g`JAnkdR;7y4)Dc<CGlZ~w6>EXY+!`@VQ;7yG;jk(hPZ-F<hxjJupyvy-s zz}psYM!co*M&ZqiHxr&XJl@QB^70?A{HHH}^ePmY9d9n>%z-E7Z&s12x$)*PQ>mQ~ zZy~(-D-PZQTD4$Bz*`t^3A{z{7E{?pYkcu>HJ8+?rRwZ5c<bUVi?@>E%i%4LXUrdO zMX5FSVP(9v@K(WF9dA{<)hfK!Sp#oPgH)Fw4X=&2P9MZu4{sy9^-BbA106S%tkK^X zZ%e#Q@HWTW6mPRixz3s`K&!UG+eU+}$K`B?cO2gKczfgRpoAUqcEj5VZx_6A&;Oom z0cAPf?s$7@P(K1ldwbQ{eee#!+ZXQu72Hq9`u)FmAl^Y$4|sb1H=2jy9if_s;TiMS z!XxpH!8;1?=&H($vZ8qez&jrAY`hcjPQ?@R$J5QiI~nhkKEDd^PQyDL&zL{nnRsWF zC4F(cbMP+4I~VT)yz^A;{1JkPUx;_n0RIx@i2rLKTR@q`y8`bcyesh@!n+FZZoI4U zZpFI>?|Nlki+A0C&S<=w@NU4n(SRaYf;Z#U{;$7Bc;f$fx8vQZfouU)37$Rz7}`CW zy%+C3JUR2@-QQQnGrIuZ!+6i*J)-1C@t(qa4DSh@K3*x~jlBQCdm8Uq%|0`r_FUb- z3wUqgy@>Z3-b;8d*9x!T$y*?qn)~xQ-kW%D;EkyeGn(e##v6<G4xYU8$9uP~dVhp0 zH{k=k`YT|eeT<jmeS#O@4dFR>jgpUN>1eh9Q4rA8QQiXK`2vbUsM829(P@k~V*Z*+ z@zneczrgz*uZ8zDUK?*1PyYA^uZ!2KG|Q<Lev0=6-e-89S4fS2iTBmG$T!MY|Cipr ztC>IG{f_q|-Y<A!{!07V)C%)gMShc%^zaAXzj%M*$(tX%ziRxSDp2x&5|_1pIgS>Z zKR&_F_!AIJia#O#IrtOdZ-zfH{(Sh8;Lm_xrl!H441X&8$??_vtIPDKtop&9x>ByE z;7^M`oq)2+^!+UUjQHgX{89L`;?IOX3;xVfWdsL)X8hUk=fIzRpmxqavjp+=iNK!+ zf8J^#1?R_K9e)A*W$_opUmSlS{6+B>#$TjbWq>SufmSVnzcl`m_{RBbe3=3Aa`<BS z_{-y)EkLI$;jfCnGX5&#=*xwhT>yU#{PpqI#9s%0EzuO6wIvYRx;iz7e~mZ5-&lhU z@i!7#?NbqX1i;_4Lhv`oKMsEj{N3@l#NQTQ-v8ilU5*-TQ!}^2-w}U%1;zhsd?)-} z@asPTl74o@->tu58Q|}Me-Qqj`1|AUg}*QU-uU|%5pxgaL7+nLWjiSU;U8Ed2jd@! ze+d5J_=n=_;eUjGL`Bn*qwtTxKUxrN5?{^V#K+^GrnD3APsBe(V|fLHe{#(~wF)$K zy2R4S8Te=7pJh_QKf8+Y&&7Wi|2+IV@z2M<9{&RT%keM7*CztMKL7id;9uImGx(QP zG5!_!*WzD^e>MJ9W(l+IHT^06b@hs)@o&Sw0sm(F8%q%XrU9DS0`PAgSnGDB8UM$> z3;${SyYU~wzXxC39{*na`%H;UAJCEqMcLfFhw&f77ysAPqjmp}<BRR%mwUlz4W1H? z`DCBLe--~({1-GOPXYMP*B<gB{>zHIWJ+Y|SL)i=@W<f4UQY4f5Q6FCP5igD>aB{Y z@jG?)J^XL*-^Xv_kHv4`e}Mln{)bBYsG@0X&j0vB^@<k0hi~IMh9*n9b=JoZ@dLA{ zq$2#dFIeLE34Rwp#V_#H{{_rzg%*AXzbz&8Ez+tU{+IZ}_@Ci_+E3wsjxQ(wffc{1 zYVp6WaQtuaf5-n0{}=r4@qeiCAMt-Og>uga{NMkz<lz5Scl8Is`1pU~|A+q<{y+GC zSF31m|Bl3gwq4c+<Bcc><rXj@!Nj5&OeEy;qc5*In52pcCL=hHU~+<u2&N!dgkVa7 zk}ws)D1xa8rYD$&U|IsIT9q346Ci>a6q!*3>$^cPlY%qrI7@{S%t|mH!E6L`5*Ys{ zn4{{JU@n4r2<EP)HE6Z~g85Zy0fL1zsL%hw!XmEg5-duv3c+Fo%M&b4u#_^FAQ<@y zfM98YWeJuUxEAvYs6+@>&=TDaf|UqX9=DlQ3DzT6jbJUMtxm88!J5_Tb;Dx*1nUr( z|NhG;2)MqcHXztgN~+(-U}J&<2{s|vonTXf?Fcp_*ixCBYfD?y%3BeL=M(4_Ai=hh zs(zP)?Fn|$svQV+RDJoZ33evfRq<T}G@t%%CYG-DAlQ>YJfC1Mg1rY)`x5L=FyQ}z z`oCH6AcErv4kkE?;1Ghtbh$&TasoO36C6QsWYwV=1w5MI7|p8x8@1yJ<L0;8cPW z2~Jiu{R%)oUxHIA1%lHE&d{uG0dkFJ%A$I81Y-UK=jeED1!{ag!K(xp5Zpy@A;FCV z7ZF@Xa52FZ1eXxVnV;ZNQzEjL*DGF0Ag}!i%oad!4Z*d2rWRhW<7fdz=Z3mg{GZ@v zg4+phA-GMaw+c-^3!SR@3+>JdC%Bv7NrHO_9wN9`IrkAfNN_)an18>vUgcqeCkP%P zc#PmtAygdEtl$5b`}`Eaa|BPT<}*6VgFwY6c%I-z1!YGl#R*>0@nr(z{Pl{j5yS+q z6MRJQ2Els-V+iEiUV=9X-m1!Flpfw8Fo*vdd0+9d1RoHH`HQUS@M8j>;1dFuV2Hpb zXb@Oc)-XlWsrhpF?`H`DRStEGsuV$!;0uC;V3;5!C<to*5AvGRBIpo|_&-6Hz`XgX zIqLti`e&;Dd5wQb@B@MPKf%`o-xA3AzwYomg73{#uTg0~>iAQI6Z}H>Il-@lrx5%` zSenf5gmV%6K{z?VpM>KP$l;&hZ-V~_{vlBFuLR569_ojvixQ4cI0@kdgyQ*x6IQEe zJn_iA3MVC;Os3VH52qlUk#I`FX$hwyoJRT8Bfw}vL`43{4>{p<gwqp>`41?JBAk_Q zCPMLiLVW~~K$kG9%tkl|;q0ajU7b)L0fad>;o^kz5H3I{=1(}EEFr=Cb)O3oE~3an zB|@lMfDvDm&>a3XwFKdcgi8`GN4ON>GFr8?2payfb+EjqRv1XFM7XMgD-*8L$E$#F zb;7*~*C5=Ma81HZ3D+WAk8o|mbt+A*UAN}1Pq-1`288wdf9-*AV?sIkONnV|Gs3M1 zH`nql2xTwmXB8CxCzQQFgY5`+A>3Z$9SC=<@tp{FF2QkYcO~47a1X-WO-iKpB;0F| zNw^Q;QH1*v9zwXED(_EtAffud>HHwVgZm=oDuiPGgohCxNq9J6efZZtD<<L5gvTjO zw}7zT0;K$S!V?Jf%paa;lm$Pzu056TWx~@4?;t##@Jhln2+t=xlTZymJd05L-_%Mo z=MtXRM+h$<yoB&V!i!6g(47D4J9a7I6@-@&Ufx&e-#x;s2(Kf&S_`kKGzqV*Yp*9% zs}DyL-avSxQ81s;&4jlR-a<I8^M`Wyub6~)5<X3M7vTehcN5-Ac#jd0R`08rg!gMu zuJRzESUurGgbx!wV#sF2#|WP!e4Ma6`Tu`E15X)5YM&u|mhc6_`sGjfe3d1XjX*zE z*#gR#@D)Of@KwS$315?}fUgt2K{%!&*UYyF$7=R%!gmPu{ZIIAl~v96Yvu=ppAddX z_%Y!}eL|&1IHV#CBQDF?gc+ej7!kUJ0ipOmq2K4|RQz8TiV2(j6k$S`_NU6s2@Aq5 zVT({-`-JVmHVAu!pAruDK|(SAYD)M8(SC$q5-mdb718*FUlaaH_zmF?gx?BN+WU^M z-U4K*<{$n<_;V#i_)A|?`M(jC{{Jsw>HmKd{z)k2FN^ADQI3TF)II!1G#-)uAPsPc zCLkI`G$9d06A?{LG%?YnM3aoORy0{PC7Ob0Dp8K6tdXgS#(DowG;Nt8nvO`EpJ@7u zsqu^wmv1|xnTX~hnwe-;#b+TJXgivXXbz&;`-RGxvzijkO|&4<JVf&m%{y|j(fmXU zn3C!a$m;qm5Sj0Pi54Z=glI9M)rb}+T8U^0qGgGeBwCtiss4&YvJuoPE=RNi(ekpE zDif_Zu<ptwjY$1pf>mqI>O^a4Y7L_L5kLrQ6RoGX>;gpQDS&8wq78{QkaDxiMnoG| zJ=DmiL^}{|Mzj@?`hT>A5JcAO0z_LAZL7#O{aT{!bS?80Fwu@gyA$n1v@4Np0YtkP zvQabVf1*8z_9og>IeYavMEW=o?JG$6PcCGCqDP1hAUcoeK%%3y<RGGhiH;yTgy=9u zWD8LK;S!kmNKGA8O*KA-=rp2ZiB2Xuj_5?9<B3i%1ie2>J87Wg6rxkB8>RZE6P>A? zGb#?zSw!+zKnk8ibgm(r9?mDap6CLitBEcox`OB;qDzS`Cc4C|VrnlVs{P*}R|-LH z<5h+!v1|cE*Xnp(y>9u#e;3gWM7I*%NOUvNO{NVabxX~>jpz=d5&u`6J1c#nyNT{6 zx`*gKqI)Y)MsqC>5IsbsFaM3~!+j3XqeO2LJx26g2@*X{^aRn<L{IAUsgZu<V|}Ka z5<OdY^*qrVL@yA%OeFqK^pYr>bzdQRjp$WHM%SRc0xDyoF*?4fqn`gw)jLF=DEKbX zdqf`+>ES;bOY}jB_xmCGNTwq7afK5N5rsqzB9F)-ax`n35@EUnv1|cE<`oc8L?l*E z6caUxl1j5b5@kgC^2hYwBK3*dG|S~W#NQHiiOV0<9&za>!^G1NeM<BP(Pu<I5`9ke z4N>X;U+F4e*7xD-fh9_j?}@$}Kz@+e+?k(<ek)_5pNW1U`n7*8wbbu*@F(%aM1K*F zNAx#QY54yTjdT7No!Hz=;_-<mRAho`Esf<_pcEvYgm_BgNr@*{Tpt0Xd<r2bNAan2 zoZ9pdLp&exw8W*tbi^|ftNBZz>;<Ykig;$NnyIdurAjF{EAgDfvuQj#v3c`TGv^|n zM^ok%5b?YNweu4%NxT5@BE$<4FRV;C{|m>gz9{kH#ET77Ein);MZ6;M(!|RVFGFlj z{`Kn16R%*%)z3q`67eb}LM&TANh6lWfttTM@jk?B5N}4jCh<nZYY~gv6R%CY&H!^g z;thz`7sTjn*w2;$vFrlGn-H6q|0=RM@eagW5N}N^=1;tpR2hYBh_@q_ji5%1`D^Wt z#Cs6$M7%5U&cwS^oSL~CaeeqVSE~LW??t@#xXgWt#m|ZNBi^6*5aI)f57H$Ltkp)o z|1EJPA4Yrx@reH`cqFm-Ke22aHS<{Fhl!6PzJ~aC;tPmRAU;iLCla4Td<wC=2&zhm zPaUW|o%mehGl<Vp{+YGr*~I4<+DPGf#OL>Gm46}eMZ}jAUrc<dB4!sLzO2tAzJgfI zUq05Wh_CLa%H@c!CBBXLI^vs&uUC=L#5WS((5DgK)Q^>L3-PUegjoEa_zvRxi0>r6 zoA@rtnos#2Vl{t#;?@=KCw`Fl0p+LzOZh`J{}JMkh#w_>nfNi{r%IgoapEV4#r)+K zna}8H;unaYA%2e7n7`^jUlBA`|Bu!GP1P&J?-RdD{3h{h#BZp6?f>x@vxF@A7V$g8 zZx5)wODs<T!l^nD+E`-U0wn&h!ihg79wz>TI3^w<_J|wA4zWdSn_AP4J0Rr~hs1#( zs!tpZWShio;)FOSPKnKb`Bn8pToAYVWWDwdaktL)MpDw}r^KHTe^G+O_4}XrOX9D! z@T<B?{t&1tB>s+O`HS;C&C<AjpjjH}k2J?8{)zYx;-86ssjGe^{#})2Ul>sMllVX4 zzlh~qU?u!RT>8KH87M)Ta^W<`lfvo_G$)`bo=;Qu0_99ha|)W1(40*1No!m-0;AlV zlBRe*O?ehj+B5^%X=%<%b2`PRr#Umt8EB5ush<DK5~;2IzbXDtbL4ZUIUCLSXwFV^ zE@jFtKy%J&37T`$lwCl<0sn8#uR8T3fM_m6a|@aa(_EG2A~cs$!lE=6qqzjl#Y+Xz zDW6B0OKMPQE=_X<n#<5!PWj79N*Y+c3KU$Crg%QhmFny&1KHJRu1j-unrqQqLuqSD zR&{i`wvJ{Cpt&B+jcKk=b3>XV=YL&vqpC@oo6y{h=B9lenwx8Cw9>Yuxf9K;Xl|#< zTho-oKh15ca^-BV$PPO0SdQ{fu4`wSd(qs5=I%6i)$DEq**z)+nz98be{Y)m(%h$- zDt|v6_ZP%)4y1WE&4Xy3P4i%yC(t~E<}ox6rFkUH!)U7c%j!o|B~>j=-2$2eTR`*J zGDY(^9gnZbG*8s&Ni<KVc`{8o_R~D2%4#fogmf<W88pwNd6q#;hv(2NKlgKKUQY8o znir~|YymVcsF*Y_qIoIJi)mgWQk9@7H(LPBD`;Lz^Gcff{=a#ZVT#T*RZR0bmAzgR zO!*BoZ&UC_nm5tBMdO>Rtj6a1Uz+Ow%{yq`Me|M}s6wrL56zco-b?dwn)hkp{WKq; z`2bDve3}nde3}nSU{-%rQ;!WGPtbgx=94s^(bQ8kpYC5W&1dVv=c+(CFX$*+K*^-} zGR?OXc}2%pX}(5N{lEEo%^5@UO(Scn-d6HEG(VvEF3qtt-=k^X{8UwS?T0i!q4^Qb zkH^J_WNOqblDBBuB;~JzLjp~g=C3q8njM-x&75XHGocyMjLRyT^%fwP(5&xjS_fIJ zTqwCEQ>kj#c$enaG<!5ZQ+!y*PwVXGG{2(x1<fxj#9X`nEYbXi=1(-grTGKR?`VEM zm{px0>o$JY=`SK;uJkvW|IyTqp!o+)@qC(p()??H^G_Ai{MYCt|09{4WIU3INyaA; z&nKzR|D{4QQO%r$WYQ{DPJRAQrXZPGktubo{XbFvuX;<SC0UGQI+A%wrY9+7XHfEt zBr}tYBAKb2ig@)qB|Vf|fb3Hwvy#lA!E8F3uK-BqB#|>e$y}yN;(8ZI=2P<gBny)) zK(Y{te)&7_J4>>NauzMeN`Yi?k~K+|AX%AYNs{GAmLge3X-g}oYN_`BWO<SmNmh`Q zDwC-Bo2wT8Cs~zbbq!XlIpY6yycWquBx{qbtDM^Zll4e8AX#6S6<My%d<#IbG0A4i z--JZ{->km5f?M>fNVXz5i)3q(eMz<<*_mWplI=;hGqS2rqFX?+Bgsw!wY!k)NuvIr zi2sx9PGZczUrw@@ruNp+Yyl+uksMF5KgnSv2ap_0B8PvHg9Zu@sc*ue6-aV8$uT5H zkQ_yFq=416OX1NqS<OE=ZXk66$>}8O|H(-tr;?mZGUEItlSIvbMC}X(>+^qdHpxRI z=aAe;axTdgB<GP_L~=ffaen2?j!?EiaxuweB$tp}S|K%lxdeuDCCPOpSCL#pGV%yO za&5na<a$*bO>%<)&F6R%$z3EjliWrkFMmjG9jLmU<c|7o+$p$O@otg_NbVs~+fVMT z@%t;X>KOAcQzQ?Qyh`#2$&)1N|B3iN$>StX^h*?ZisS{7r%9gGsq6@<_8iIcRb25& zUL<*i<Ry}q2Ng^#;;*T~>m+ZGjOo{syjg3$O<MjAzC$_@$-5+7lJ`hrlJ`j*lCdP8 zkbFS$k?MSC6hztV0whBu^35+vV?f`${~>Wn0uoQleIe+z=rq*P_&-ULq##L1a*|Y2 z#{36LT8gXrOAnnYMbabrfn=EEOA<AI$$m!iIms9OyP-{fMe;4l*Q)c4l$(3|T@{mj zUn4(~{6+E;$?qgTlgOJN67v*La!7uwlu7>3>7P}h#($IiM<V`D^6v<q{*QD5((y>g zALqFsm5sotr4y6RPC5zcw4{@gPAMYkWTcY|N8%}J=2SY>?I4|o6d~x3bUBhvM>>jh zdgaWZ<BWX*=}e?0XJ*A`8K|07k=cZ)YNT_JE=@Wo=^~_akuE?wH|cz&^N`MK3Jr7q zszenQ)Nvuwg$-E!uBD5TE}^N#bX>g3k}g>XOI4br%aE=_x-9AP%3Q9-R}iM$hZXCR zl}T44RsT;{t-zY2dqHZp0MfNcFCkr<bWhTCNH-zXjUZi*bVE}0f4Oz~2w+y(h;-vh zt!#jFQ_>wtHzVDKbaT=z71S+2vRjdEZ5oj49Zk9|sl4_f-LAq(#r*4Q*@<*_(w#|n zCEcaJN*R#uR`d55;O|9x66xNghmr0>y1z2_CEag;a{%eVqz979Tc82_5K`m(6-atG z>9M3okm{K~HGc&}dNk=VrqFz9$B~{udVF7y^hAkG_GHp?Nlzg?lk`;5(@9SoSXa!y zUhyo_v+MYr0nT}(7m}V|F-hz5e|iz=#eG`29O<Q`kCI+SdL!xOq}P&OQ4&b6B)yvS zsy><Yno6y1@;cJ%NyYg|<&mwQCB2FCUecRM?;^d0^mfu)NpCY!<{IxHz0)B2@sZw5 zde69=`$!)oy`S`fahduckUmWMh*{TYK1TX3>EooYl0HHDJn569&yYSvI&%0grAVJ8 zeQw;^7f4^y)Qi<xq%V`cGA`#e(zi%oCmlojMn6Sr%wNmj*72Q6MC12J)$LPx3LqUz z`T^;O{c`1eOlpySLMon5I@B-M5}VYi5K@;^%)ehw8j$CtA=wY45n1_@9Fvu<(j+Ur zF(Lh)G$s9<G$ZYjmgJVMQdA<OZBpa>^(sA5v3=6|D`1H~tNCA$enTpc0Hj}$iup^* zd<x&nR8qPH$R(GJ{Ym;G>2IVzk&5S&{%op*`RhRZJE{18g^>P5HXiBUr2morLpoyq zB9a+eNhT||fVwK1kZcCBiO8lVo0x10vPsA$BQr05lt1}M&zWor3fAZUY#K7ED^h$~ zvgydCH%N7**^Fd!kc}dfAAYi#$Yv%hPyPd+PNx2!%|<rx$3H@zlWbnHxya_xTJ!#Y zV8!_qpT9!L79`t@Y$38$$rdJCnrsm=aeJ~wb*%pcNRTDSmLxOIUuH`YvSr9tAX}Df zd7T>nud^$Xt*kmL)hn(dDO0-|*#=~*ldVOzMon0=4%Q}Hk8B+>`7WR;sSE2ZAlr~^ zW3r9<nkAEL6S7VFe6r2Sb|Kq>Y?~4!+fv7^$m%UXz-`HPB-@T`2eR!4)s!sff3lqg zH=oh2WP6kCMkcmTw);S8PqMxG4U_Fdb|BflWc!n;|C?(+V1RQF*&$@r`+t2;mFX5> zn1_=+Np=L;Wn@Q^olbTX*>Sq=(PX*>NDuM|pqGC<*(qcvkex(!V!tuv*Ixk$|5Qaz ztFPz`vWv*hBs+)fEKQj$K;v`C&L=xh$mR}QKz3mjmxLO;nCudnivFcFcsbc!WLJ=l zCcBbMj{0O*kzGxu=3jrfWY?7?WY<>;8s9*68`+Iyw~*aLcC(~vzUtgsuW~z?IsYqu zXN})YCO%Jg581tB_mkZ>qF}D&L9&OHBU?b3C3}SIak59r9y4TvKOqDYKSgGfJx%r& z*)wD>l08c%Cx5c%YR(H)px{enuaUh>_A1#ceY|GAPBw;2UIf*h5BPufHrYpH?~sip zdzb8e6?|`;(`ojB)XM4~8WFjWkI6nEYv@G{^{<6Yo&}WbkoCx1vW(0l3(0)N10y1W z5m{3e;<_p!lf%C>V03b_wiXs-Elu?=ME@2jtG@-vhRMDm`;_bpvd^^SbKx7EFUiFD z$-Xk6!E67|#Q(|a^MCdudHL(`6ZryUKa<Zy_6zw$WWSRAL-rflpJcyl$$<Z7e<>ob zgX(qvC9gjE{|u6kM?L}hi2qATK4G1mn0#9DNyw)ppOk!Za((%u-72#_|L0SYPeVR+ z32N<V&6-_+d^(*@Pd+3041GcwkdLZL$Y&;>S8215m-w9Ivy#uQh&}@7Rglk7_coWN z<|dz~LTX&hUsLl-AWJMrzApJf<jayTOs>wKFG9X3xt#o^P_Kx52`yZbd}$4qsuh+o zG`Ts;k*`6%Jozf*E0C{5zG78gi>zD+tE$Lq<f|KkxjCiCnwnaRd~I_1%bx-L^~iT2 zU!QzS@(sv0Bj1pG6Y`D7Hy+d>AMpQN-v5(t(U&6MihMhA@qhAd$hYk;q0H^ccO>6o zfWH&Dn!mh!Q-98PCEuTXH}ZYRcPHOdrOYD$`CjCE8_lYJS!iG7nEwQT`~dPp$qytK z+b2J$;*%d@3Z>*Q@*}kB@H%S_|5|c1`P1abkY7iBEcrR)$B~~(emwa}T6F^Xxc;A? ztoSLl+G*rxlAlg~M*m_ZB}<=0es&)uKbQOx^7F_qAlLK1`Kh>&{9^KpD#5B&d%KkU zYVym-uOz>m{0bvwe(Lo6Kk|voE<i5(g4SM7{vi2i@;k|IAis_LM)F(8Zz8|B-;$Qx z+Fwzpx9fO^fO1RkBEOIPZUyflzjv?)CEQQ`KwpsjA@aw_Wh2n+Bjk@(u_`=H{*(r? z1&}}4FVyKX<UaYc<e!i~M?Qx9dGeRZ#sA4)B!8(4q{Q5}SIA!@f3+_{{yO;^{i#;H zNj{eRE%JBC-zI;@WKDbTk;}>7$jT}okbhJn<mM@W{NsV_kZLx_9db)>DX|9#F8RPC zfMf&mP-&5lF?pgvv#KIb$;bWvH!mp4>uOPyzgBIE(pWka<CAyEe<bgbe?>k_{yBO5 z{wJ3$K->O8#lMuPLB1wex6i-P)VDRR<}V%oP~8FYpUB1D$$uvQh5R>-f35lEkAHNP zKgmn0SO3rdCjX~WsCE9M(2uE<D#jDA`n-w>C}yUZkYXB&i72L^n3!Txib)1IlTqm5 zUz?W(iYY0krkG0Fs6e9z#f%iwQp`Xx9mVt}I}T@5sZ23bzm{Saig_qXa88O@DQ2gr z&0h;C=IHBC%vHt|=KN2g+ea}U#R3$@{FSiaK*_=st5PgNA(l?DD8*tFOH#<DponY% z)scfj{GUSh0_}5IiWMoAQ*e15SCCZycu=gQp!h$<Dw2|5HHvi=U!7tN4c4Ssn_{gp zTXWWt!0^|j*o0zzij62XQ2vGkS=|E69p02;ONz}X#Qc>x;{Q6`iehU?ne4U{CsS-k zaU{j|6bDo6K(Qyqjug97>_o9k$)wo1=I=_eTNO(Kk}~G6;(Jl-M<H7P#Xc0`{6aQs z?N4zag`WQnqOX8VEdEb%D8=Cvhe=^oE8r2e!ci2*D(z?;j~U?Tb3t)D#R-}^kwX3} zfC0iO6t_{FN^v2@X%y#BoKA5T#TmkpRn9bgiO;SIDbCf@c{-j?aY2RG*^4Nyp}3gh zG9_F>VGjSL6vgEfS5ox1fYB6JQCvN4SJzV9NO2uSnZ3TBqPU^I5XDUtx2XQj1BCkg zU))adB*h&R4^!MpaWBPP6n9rlihBl1?xT2+;(m$;jCgf_<a+D#fAI*#V-zF)UzSrm zuHzH6=2H|eQ9MoY9K|!06veZ3_IZjIDPHLJU*X#S%R0V7@oGOy@j9(_DBhs>i((9g zNAV`bSY^JY<J%PPP?Tr>vd?$xRo)*^_<-UQiVp=5&PNmj{$C7Hh}%;%bkr?CF3O>( z|MJuP1o{*`ihv@g2q~Hr>i<P7$|LtGp-3re|JM{nK~dU%Yg}fB!W{m~a*AP!?<qc| z_?qG~iZ3ZXr})Asn;z=Jzcl;}#dj3O{6*QU^#jGP6hBh@O!3pWEB;b*exvw<;`e@* z;!lZ<!r!#!r1*!{R22WxDlPp#TI18I39a!Avo!&&`sCl5Xhf|w39ZS?DXmF$oXmVK zttoUmr7)|tT2s>+MQa*b)6+t;)6$x*%GOmgC_bZrrfMcyv(lQGmYP^=mT~S<Yc^VQ z(2@rMgPW?kXe~`^Zdwb`nupc`wC1HXKdt#j%B%a_8u0(t!n79E1{SGTUyRlgWeKgt zt3p~!(h}#FsZm&l*6OsDrL_vJ<!G%)Yk68~{v(`~Xql6LT_xv#U28R?Ciid+T5Hl; ztLCg-amp#Jb!lBeYdu=W(psO^ZnQR_wH2)mX>Fo98`0W$fWIlN&1r2mfNVi)OPP*z zwKc6BXl+AlJ6hYCl(ez^K-G@4cA>Qst)2UXy1iX1gx2n~4yLsSt$k_jNlR_NwO2*c z=J%;f_M>$mt^H{oVARY#G>88Zq;&|bBWWE<>u_3!jVvmuBkC28Qs&XLj_I$W$Z@nT zpmjX0GiaSa>r`4N(mI*eNqrq!rwqiWY1Qe1=$)Z;CarT6JWI#=5kOWym)3c-&NnL> z{)I}rh}NYVT&&|I<yc?xWwb6Im|jWiURqbtx?Y)A(~`r##@Eu4_dgYx)@WL{(Yk@w z&9rV*!c7&k<j}f>)~yw@Ug&mOcPUNI|FrI`vb5y<uO;`?!F{wIQ_lUg9-#Fwtp{lt z=dU=LeT3GdGBxFo(|U%M9{yWTD&Z+w<G%lIJxfarpO$<JK<oLs_C;E+(0Ym1%N0`N zdj2;*1F!RK`P=#ipOrrVW9V%{>rFc4Py1W6-=y_6?eYis9oo=(m)0+|-lLV%dY@K6 zYb>n>tq*8@OzT4tmmcI<ppHMGHB`mgm_^H_rH6lEI+Bux<@`^}ucjJ@w3@Wk|6A(+ zhM8zK6{eJ!U4T|W>w8))T3^s=)B2QFhgMHHT_Kx`9j;<ppGhDJpV!Ejw7#LG{x7)v zEvORI{{{K3Mt)HIM;*ogY5iP|@=vbiS6crm_!}+pe_DUg`dfoPY5i4+DDxi$|1C$O z-2NZ!DQJ&JdlE^t$EQ63?FlOa?TKhlY{*q_Z8iV)WJ;b~QX^8b1<;;~_S6+fdzyNc zX=yJ@dpg>4(Vm|6thCkt+cVOhS*u3T*7LtvWfoBoHS;^7@ocp9MNoSV+H(p)$#Pxo zxoIy!dmh>g(4M!hl~+Kt%_9Kq1!*rvdm-A3D88^M7mn-&s$<Uo8ZW6d*#c-Ut>ZF6 zGtA`_S)TSfv{#_LI_(u{uR?pJibH$lim5c&0%)%`u%bQ!wAZA)7VWhSZmxY@+8fed zPfOMp5vkok0=d$SXm3i}_&@DUs#@B{|7q7x0qrempFn#n+Pl!+T1B?0)np5xy&diC zY41pT2gOG#xD#!2@~@S5r7fmSdpFv<)82=+p8o~ellES;_a3+ZeU-c)ZE=3u`<J73 zexL*<KA83qv=33jp%qSBwgB3PSC3s9A4&Tt+Q-s9TBpYd)7+)w6ghqXIg$2bv`?aa z744I0Uqt&9+Go=~mG&95#s9TLw*Vt@rXpw6n&;3yUy*ZZpI7nAW@ulap!mPJQt4Cu zzkLbqOKD$0`!d>>_p@a{`%0rA@zu2NqJ0hRTWDWP`$pQ=(Y}H9^|Z}fWhKi;ptZ*T zY2REUx6;17jA`FiBWnKbJFBUt?xro?PWv9(_tJiV_I<SLKmIA7PmTD4{XS_wto%oG ze6+%8KTi93+Uoyp_5b!$N_d*~v$UV7bQF0`Vk4{DLHkA8uhD)<voGuT3hh@bPObmC z;%^8j-HxfUwBMq$DDAgt|3bU;|CIK-v~Ak&(f)|``!#>8R((MG!>UlHAM5yuAfh=$ zyFuH$`LEY?Xos40X?q%|{|i4DxF-?qxYlVZEvXeU+Mm<TX^X?tE_7_^*rweng8`kM z;=?+As^e!Bf%X?V{ZhxTXn#lhYuaM_w7)S5=125<+CS0$fwuX}&syQ<D$tT&>68Zh z8=Z-1|4v&?zWs-${?zd=+Oi$gSMjfc|Irzrj@&MpcIxwgX9As0NM|BRX&dE8XA(M7 z(h>hx!ely5uA_PXuklnm$`(LJ{GSeGtif~&PETicIy2Cjh0ctMjG|-ApN?z?HUIxr zF`ZfI%vOQrNM{Z@^U;}8<GJX}qru!2fsXNiU2%Ro3(;9X2@6&PjTe?!q!uY@8Z1U< zLpqDoS%uCLbkyEEOVUyQ?}+~^Z5cYtN^Gi@S8xR#R}@?{WecEFKLtpv{@+<m@zv?9 zL1$e$YtmU;k+sTEyIn^D6RZDs)~7S_mp{tch|WHAHm0*BolUfSQys<s>1;0L5^Pa- zxD}o4>4^U;z6~8U|IT)Tn5)=<&hDDsk<LzZcA>NLKz3I;yY;8qL+$^aJ?ZR4r}lq! z7&`mXIh@XZbadC~>`zBF0@XjTUh!a^9#Z3n(h>8ovYI-A&XF1%rK9?PNBv)<M$<Wt zZrSbebiSi=0-a~*oJi+RIw#S&h|bA$&Zct;ozv-@D#~(CPODcxqejkD{4AN8TX7DZ zbLptzcg~|D+kyVm&9QS~O}m)RjdU)da}AwK>0C+YGL^cVPW|%72wqhw(5c@7NhjCR zxsFbyX<h-*xxuU@zcM$e+Rb!sqjQVKxAwC-y`9b-f|ynGaiDWIok!^0L+1hI+^ge# zI^JKA={%^@hje_n0%er09;NdbohRu$u2b=U`6vB||0`&o0_Z$TN6ePab9A1k^P0vl z==dU?m*~7g=jC!L|4ftm2p}b|(|MoH8+6{GGltGvTJ@%3%5rayoB=xTYWBTaWGtPJ z=zO5yho;2zCR>1ZJ4B~Vr$HyBW6=re*mOKPj#jzjR>>AXXTbkEks>jjCLQDaRSBI; zQ@Ko~O8vjnl5VB#4xKOP=+@Bb(fL$4!$Ov<n!i+iuI1II|D|%i((!9L-_Vg=pt@MC z`kwB>bbg>aEuA0fjz{MwI_l~j*#hYNLg!aHztj0m3e8$#{&oCU8PNG#$A9RQwlDr~ zvRw_dN(kNY=}tg*5{)O+aUvZjE=TF7J1O0%=uSp=3cC6gK=t8vr|kEv{Hf_qL)U!s zTczl#|97XSI}hC%=*~fRM!KcuD7s?%bnE~At2;}zoPx8`ovoVEoxP81YEHUy2_m(| z|23YM?tB`|PgiW8?gHhg{V!An3NAu-84VWIaWT4!OIG+x=(r@^rRb{pmzQa-bXmF^ z(_N148g!SZyE0wzf90=8SIl4j8S*N0)%?4w(Ota)>(rWb*QdLd7OqWqUApT3TBzW9 zhA;hWpvZ=FHyRM%gzh$U)&IMj(cMxxvIWrHqN35=N~gyEOF_Eg{|atLcY6(X5X3aR z6J3|?&UA00y9?bj=<Z7Q7`nUBJ%sM=boZyb2i<+Na8J5>(cQaWuKN4RRC?I2!s#AR zBL~twh_0BwEH`qchbsRtx`)#}itZ6~kL+hvQ~bX|=pIY=B)Z3G$?-a#pyP=HoRcM% z9!{ZqD&5mHHvV7hoJsdW#n005Y#q;`doJDcH9oK31KkVis*C7eL-%63m(#tZq$%@K zy5j%xPwwy)3SLQ9&EMSEtCgU?_1$afUZ<Sv>5A>sHBSL_Zxos-xtXq5DBWA=-b(jz zy0_7NfbQ*d?^65@x_1iSta~@zd+FXYfZRv-{wiB*K1lZwy6XR3_5YFO9xa)4AFI`# zp!+=CC+R*z_bE+1ZKQNXy3f*mP7t%Yn1A_??u&F^sz9B-Lbvqu5`UGhY!e#4PWKJE zZ_*u8A(i3NeXH*C9lAqw-=!-iPxn0?-={m4u9&~j%w76OQ)2#fWlO5EbQ_9T6++k6 zsZ&>Z^h$&B>Ha}Cpj+B(NVi8fqT8k$(@p6%>)QJK-_7W%=XZ4rkk7hRacbF)t|D7N ziO?OU`#IfD6;%H>J%2&>Yr1Ow-LERLjB*Lz(EXO~cLp^4A2ju&jz7`;m9Cn9_ZOk* zTAGqAfNuT&f9U>6uX69d=>AP_Ji7lVLHwWYfAs3wYL(vjg7+rSQOw_5RBvKMCZRWl z29xSInU0f}qg-ikN}W!n<J1Bg9D0k<o0i_(^roXHPEK!ndNa_Qh2D(xW>RES&6ka! ziWM)FXC0WT|BJ#Lnw?X}xhev^dFZLz_vTexw}9UK^cJWH3X1>JTUf_MbX>F?<)2)| z;`CNja0z-#(vzb;y`^+qTE}JTd$OEPm)CKHa+H6fuoAts>8(s}b$Y8*IK5Trt=8w1 z0lhVJTvNxjBxOE=b?B{2Z$rh`qqjc2`uuMQ;{WtEmJ+k#rVM{XZ!?BxqPID{r|4}# z?<jg((mR;mR`m9uw>7<;wQw7H+tS;C-gY|Oen4kOMRw{VI^Bidt{Uv7<L><|y*=se zM{lnRp(ncly?yBID~NWh$o}*Ws5u8Ja?r@>u6Kwchw6Bkj)&`b1id56puR0f)4P)1 zG4#%*cPza#=p9GzBzngSN7mIXpr`){fJ{%OcdFv2)C#BR^z@2fgJ&vumX7NGy>sf+ zc?zCS?;;H@pm$*z$Upg%FQ#{y;+N=He+4W{UrtZ_zh+)V?|yn$)4QGCHS}(xcP+iq z^wj@**AFmnsA76IRy~wcdN<R%MT1-E-DdESdwU1HJ2iV3y?f~0T`6dX_tLvhrX|_@ z<UBy{Q6)d9<3scwuK4sGshITC{AJz8mGgv-=I?*#Jx#Bm_Y6Is-m~;xr}vx^o~QRR zy%#ioQO5!Q@4cePtL3P{YZAyke1o1vZw$S$^xmZR4!yT(&f9g*?`p|=^v3=BpWX-b zKBo7fX6u*#qWK9uwf){uwMwO<G@G6ypj@3x&#U6{N0DBjV5noHV@xllSNnf25whrK z5{N=xci5u$C%rbkpXqhzeXZFpy&k>KG#;iW{$KMyr}rhjF9wjWBsTir(EFa=x8;;x zy#<&Rf1s!S-}|Z0SK2T1eytFCztQ_$!9V&OdVeuoTKC_I|HJTv^!{adJe~e0<8a;E zu=u|s6PRv?W&2QM;u@Kh;prHjjNz#mp1jUZp`7{=Ks2Xjcp8QgLV4eYr>z2|O|Rn& zf(Ua)hDS+U{ge*R%<y>(&%*G|43~v#GCV883otyJl4sX(4u<Dtcut1rW_YfF+Ia?I zF@Gi3fB!$cAj8Wuyb!}nGQ2Rui!r>25*F=O>2&e`qv|Z69I2iz{>L4DIDELfyDu(_ z+u|(l?!LG?EDnpiyD#qUzDPVB?T&STuj{^kGvS<^I``eWRqu5tb1Rb#gQERgu)y+U zRwQHQ?->n+%*w`yB(o}+waBdI7&5DqS%ZwsUrl`B+KGV7I*N(^j};g}Cb91I$!tny z1K(joG8-woF_}$_^nJ+4|1;+QWVTQoIV>=8D>7S?*<Pt_6t`8}&dJE^KxSt#J1Xwv zk2gxoVgDzy8yUHAW_L1sklCNip3>|^W*;(pCs@nT>G5p$eZ}nOdmcdM5HU6a$Q(o_ zF@JwK#vDrKFk=iK?yHU@b26Eu$Q)1RXr+!(Jk~3ZGhnYP@Bf(-$(-a!uQ`Rxsbt0^ zOERaCIi1Xz!e=-c88d&6&HR%GnR67+_5Ar{?j&;ond``;{!iv2G8dD%ip(WsE|>mN zMVkmZmH9uJD{U!8%c~WyA#?2jc|94~duA+|8;rNY8_C?{@y-68-0GRzq`95U9iAEI zHFuFQ11EF0;yq;UCG(*0eTw%hn*W>cWgZep^bd=->7esJM&=zdkCS<c%oAjuQ}#(R zPmy^>_-VJJu>Je5!1Ido|BU=U?e;R6*OhvO%&Q3ye$9YAgX6V)gUnlG-gKmxw+HaM zV%}4H-*~&m56FDzu=;#V_FOWbkX@L}r)1h>J|j~j^EsJc$$UZP2QudWWWFNvt-#lc z-&m9M622p2{_mIO|76Vk$^5MNi)AGs^Bb8AnF)>|^E;V8r1_J~UrytdS@AhCMS(mS z`M<SFo`n*b3YjvQ!1VekNwQ)8CsS7{IYxs_)8kOGNU>$4-Omo$naFg>PAtBs7?bIf z`IpS!CbP@=$AG))?ElExIPl9!$WBLgQnFK$_5Poooa_{?*2|_MJGHgSPD9o^zq2VL zr&nqQMaa%*wdr;<i=2h*d}L=OJ15!M#LR9QtDVCsh5wK2Tx91Fwh`c)%sYVRS9Sri z3mR!1?EQbDB)bUNQDhe-yA0XIlv><tmLR*Nn58_kv~RvF*>%Y-M|KSfmM6Oc*;UD| zNOom0D_Kc;IjeZEno_F|q%;ETJZq6P^Oqp~6o~A4WH%!_g6u|Q*Z0{Cq}kB*6y8{I z6U9xFn54*VPId>fTaevK{7A(u{YkbayB*nW$ZnhV8Gc@DE~vwfD%nYKXGaR}LiSj) zyOQ0H>~3WDCcC@%JxpWQvM1TS45ybrTI4=HyRS=;-Jk3cWDijGK(dDl97OhDvNjQ{ zeE3v{kv%*m(_M~~{wT$x$(sK=0omgmCVM>D6Ud%U_C&I$kUh!s>9;`1o|-UZPjkGk z`V6vTM4qXr5n%Vz{GaSOrcAHvJhCOS=aYSl>;+^WAbTO%>&RY2_HwcpOMi*!t?*K^ zsrh^63bI#{y@u>n5}5f9T<^7hm+Q&iL3XS(H;}!R?2Tk^*77E=u>mnqdz-SiJCf`; zviFF&lk8na+IjBwwfB1FKC<^4POt7kvagbTi0m`cKTP%!vX2XEf@B|aVzN(=eM<b3 zp7G{y_w8Awo+JB`!1H8ZAS?6#&-44Tvi|e`>}%G_&Z)VO9WVR_**A?(Pxv<3KghmA z_ItALl1=RWJ;}WPXFnkOA=!`8lC<g*vR{z>RLajRWxITyY7Bo#_A9dAB)gFP+VAx( z+3!+K+UExq{z&#$vOihMYJVmx|CdJ0Z;BJh{%)GI_D_)-0aleEEC0{t$eQhw&3k2W zpsGwRv7LbIzho<9dt|E;*T|Z;ldY3&kPXSo|A)_z_`kh=q-iU5$aakx*2LobiZ%ks z{^JDX{zq<laubo8oZQ5g%1vS^1Cx?V{Xc0%ZVHi8lADIyR9-W+0e9iKX~|9Jc<E;# zHxD_;&8ET`$<0J=7GWC!(#$%bpPgK?%N&j&H>cOk<(awtM)Q(ejNE+W7EDs)<|ns+ z)2Qb{<Q5^fuq&5f(E+?TIWv56OORXA_@TR(TUz`wjwH7nxh=>oPi_Rc709hlZbb>q z{K>6MZdG!tm^i(B^M8-mAZLb8&PD*awOoqaI$Ex)xSk`0*H_#?aYJ(E^W-)nw=uc@ ze*Tl&OsUP2=uS><B)PrGZAs3&ot!2@ZfoIf$Zbn*I};~|OwYLkxl!cg|GAyiC#l-m zXLljD2f1BUz8ksS9iMiv{(CC5mwTf^ZZtWWd~P4{`zr3IxPKCT+XKZMq<Ap7LoB5% zxx*-KNA7U)Kao3v{G8;DB=-QhqsU!D?r3u7kUNH)**m#o$(jF?J6`bwYhue22cE~1 z#hgO!RB~sLJB{2KVunBeCzt+LVC2Rqb#@Z{QO_lJF}d@^pKrYNzd-Rq#fywgZ>Eg^ za+i|3jNFyvF4yvk0fGEKC;wL!xogSYLhd@#Snc)X?B|!<4T?9CyP4cgmem#xkh_)K zT@u`;c)Q{qisKaTOkz?(?rtsbQ8fQ2cc0?@N%Y5lkX(k`L*zap_b|Da$vr~uIdYGZ zdy<@)KRJzq+!F&;8U(qg$vsQ%8RLCJ?fbl{UQm3|Wy#rGQ1%sa?~;2}+1JRuMK1aN z=Nnp%cN)pwOtBr{ZF29}GVSo5!{pv4_kqVB`YZaF+&APtNqBPR{{o+p`<&dD!e1C^ z_vb5esq=g0TM51+_dB`o$^A<12Xa4?`;nZ?-#rml`-_#NePsT*32vzle<+&&3;bok zs<Px0FU^tblFO3|lr4~x|J#8}V#@wnD&!jE%>TvL$kh#}FS#bUmiUldG{Cn-b_SRp zxqn5*<YfN2zb$J!{^PnC&Wp)UM1JBlo7V_PPM)8PJme=QKMnaQB%ac1rXnx%A39im zS_!5jKfOTu<xjf<`5ArHOyp-KKbr)zke}6f|2ii>yLgQNt4bcHk)MnF=H%xlzZUs< z$S+5JUh+$lpO5^a<mV^95cvgExS)0O4aqMoGX4BVcro&eI}Q0IoRYl8LEg+?nq?H1 z_1WdMT!H**<X0rWik2Dy`IWt9RR@$>U2zR#?B1@KK5O~4$!{oT9Yu|Ryo~_zBgn5$ zeuD(3x57Qq`Hhs_nEWP|GUcY^&HwFT_h$?8hmapheh>0nk{?BWE6KJdza#l=$Ztn} z_*Ve(+mqknzgz4i{mw%@wcLfg`M>aP<aZy+lHZg3{^S$$ciFwkk0!q_`F#d7`xzd7 zPBk6!^8frnNs4^>SAfVLs^wwij}}Nqz!3sRCQ;z1bjIb6A%6n-V@1mU^XC8du={YL z_>;(=LjGh&x-9uqz2<cC&yqib{7vM~B!3zCv&f%EevE3*_WE<kpX*A*pHKc`0r`La zLgCc^$;<rnmk#JJCw~q3D~z!#y;4ylAg>W%r@hu^uOojwdD(t`tdZ&Sext+WZzg{) z`CHWFR`PcW+(!O(^5*<rKhEp#lHhJd^MB9ZNB#-&_mh8EsRtAvB>&KW<`IX<KT7^F z@{bQagSx{{szm;ue_D9h|H(f`{v-0wlYfW&3*=?;c^d)bUn2jqz$;0#M|zE~k$;{1 zn@WvWd}AQ{7Wuc+1K1sV*HYH)J@W4hc>m9T=&HznEdCS4Psx8r{xkAllmDE&{6GJN z-});n(MiaE<1qPeJ@dV1ejxv&!@2`MQ@EP^FBFm=<X<UFP5w9X5%~$^6MO$XQIh{d z@lW5u{GWWrzlL+<%VP411;wIb;{WynARmygldmLLOB(^?Yw4{p+z``L43ns{wX|$g zn2daf{6FNoVtVBJ<YOljBmYmIf`2JYVq_tCOhjSgR5tXJTbMMxV};2jGyfNuQqlkS zUxjHXEKFfq3bToyj>7a5W}+~ImMF^q-M)pH#mu58|94kWn4QAh6y^{=r{e!9&Xq)e zl6l0;OJM<l`4s1O0tyQnuq#@~GmB`sD1}uiEJk5@3X4-%hQbmQWc!8m`=65e&wmQu z{0qzZJ}XGDB88PHtYl<*W*Z0oY^yn*!s-;(NHB#pDXitPUb7B`Jt?e9VP^_5|H23g zn^9Pw!p0Of@Eta!VCL_uHc_`t2bj$%Y)@ee3foW^NntArTMlI<-g;<BVOuf!Pk`-I zJ6OuVj*2z{{6?e1>_TBzBTciL;_ejoa7?14uos0hDC|w)Pzs|d96(_o$@X;`3j0ym z-|+Bj=|BnO|Am8v4{-tthfz41!r>y#{{@buaFi2hc?^XU1T+E)#|a<r1QbrBaEh3d zC=B~Q1v7sNr%^cFDg9-hN#RloXHhth!We1JHi3!Hp>S?0PMPy5T%gp26fUN4k(%iH zeg*UYAu)x^C|oY3`9Fm#70vwZVfXDC3SA1<Qh18Ob;@2(;VugL*)QBc;T8&J{uFLf zyx9uV+FL2yLE$#>_U7O5T8>k^bKq{@P2nC2k5Ran!UM|Qr+B}=0}oPoSVwxuGmlVs zG||{H{W*QymUfsY6rc3`(-aaje1^h%6rQE<CWYrHyhh=93NK0dg5rxwOiC!cOd<W` zNBpb4&+A%_SA4^Xh2Ju4`@XGczXDKr*GTL3K85cnd_ds~3LjFC;TJxV#zuf|{wame zD14qW=@n@Z6uzSH4F&xQkn-P}Y`FIO1XK7y@ka_j4WttPZ&LV`LYcyE6!H`%Q20~I z-xdFGVhVpz$Wlnm-*>jd=Ui4w`F}zFUr7AlU0vYx6e<*|6zUXej`7zu{9gf32q{Er zCI2t9eXalgPoYO~J_<3#=_&LnPENu6pTa*BC#LXksxRtp7bmi%yCKC%C{F6LlR44~ zi#7r%PDybpfvG7@D=<wG6B)(n91uB!A`}yTMvAjjoJq{g6lbM4OWM||Y;f4a@Ei_P zoYOH$q-Z06;@pb!P@LCNseXQn8&X_=;&K!hq_~(g=KmBIrfB{zyy(DHEKYF=ic5=M zlA;X)d)V&Fh?M_}(Q<i;D^OgM;))c_@G05|pty1pRkbR`)y4Qf0c6?q`~MWzqPQN# zwIx`G;=1Wc(px=(;szAgcdaa@J<b0qZcK4YflU-QrMMZzErd58xT28`Q`|}^nZK29 zLvh=Lv4>sV_LTRcxC5o+BbOa1enN34iZ@c+nc}4sM^QYE;w}^qqPQ!?(G+*1xF^Nk zT?dML4D4vX0#MxBcixAh89qfD0TlQ1`~e1xInXl)Q#_oanLout6%Vsidcq?p9xd`n z#dHKvJVr}1e|y-q98d8)iYHJUL-9n4r%^nK;wcnQ9?+Qod;RGY&rC4IGaMtF{{07v zXKQ(m;<+Z!E?S;X@dAn$3ty;sk;_v2um2Y>qj)*RYo)n@qWr&j6~(K){u&1?+DSA5 ziq}&#{}+?|E?}7AO%xv!xS8TD6z>wgRq-~8w^JM^d`A*>H|}&m<lPkSr+AO>y^3c3 zdW@y0aZr4a;v*CvqWG}!$xBhMMu{JF48_MOzD@B7imy|AlH#+<K1K0qfoGgd_&JK^ z_7tC|_(Iyso}-s2zDn_Bir)W+cX@4~d_2WBRQ{&oTLY<g#Jo%K1A+Gx-#0;eqdpY# zkz(rq6hEbu?EV?WBE`=s{!Z}=3BIKGt-x0lzfOSgHwNsq-%<RT;`bDP6#v7(JxNCZ z#a}4?M)6lyBH4ri{D+u775}1`qnHuS4&0Nxm_iaANwGv}a*Ab&O{D_G3dJhLIz{<^ z>J<&EN>3Y7{F`D#u_Jv;vF&?yDaK-Y16R@awf|5`9R6QQ6D3(nzGrD-6S)2*@BgLA zJTnC)xqWF$N>e2yrKuICF+o~29VMB3X?jZX{}PmDOwZu1qBJw5*(uFJX;xRICbRht z-v3L9|LbR=G#90HDa}o31xoW!TAI?llonFee2Vi^T7c4mu0whUN()n3T-ik^ElSDe z!q71&Euqwsl$IJIO<)(b3?=h_O3Qg>c>{K%R-|Na@+qxE$;_XU#zARSr<BG9fl_Nw zT9eY+l-3%`ieJZ;)@?mXJ5w4#X=Cv=0w`^uX#f68DgFLGrA;VpMQKw?TTt4}%1ybs zzds|jv@wxX32#j)G5KvMZKtJ1K$5ba+k4H9O6_D->3K#`I*`&Xl=h^wtK%u{Mrn6S zdpM1+-HXyblw|&PlF^>umy)JH$$$T+bihFWgAz>XV8ufe&HwFT2RocnkJ1s8?xS=h zrHd&YMd?&ZHVz~{hSIT=PNH-ir4uL}?+TSV(P`Aj{GZY(1KHCkok!_(N@J8V|EHu` zP&&)WD9Qgz=h)J+=ejErK40+yN@o7T?pJ_Bb_u1cC|xS@GR4ci<_b#Y|Msw}yPDFC zl;r=`|5{4dQ5s9>`T<R1{zLkkDBYecDc!7i3#D5r`R{+Kr}#T4jiYoor8_CzW#xL7 zmAZ%0z5iwIr}PD-2PnNt=|M`*P<n{c6O<m7{t-%#QIh$mXMWtuhxdAt(o<5J|GWD` z=~+rIQhLrQDLpTN9|3m$mngj~@)f7i-FS`CCzM{NWL8gUyrM=x=}nW_9ebP7`;^{M z>Rn3y`=4p{14<t$W&ZCE^RWZsKUMrp@pGr4^d+S{rLQP`Ps#kB(l?6VQu;2fO@D%Z zp!5f&A1VDx$;_Y9&y;={)QJ3z(gaGsCwM4D=}$@-W&d&{rK}08NzO9`N)e?Zr8=d= z|0~LtDVh1(!|p)UVM;aklP*nzl8p)B(06NT*;cf1Akg*MnDQ!=`jqFS^fzT^-TzSf z*JS17F^RxLiW8?*<w+?|L3uLD={G+eFU^!mOqP`8|K({Y&q8@x$|yS><>@KU;55G5 zj7rT!dFGT?2a&T<o=sqO$})d@3dV{_wpf<(T$JahJhzy6k|;1QWix+!*hv<kyd>oX zDKA3VMuRj9`|P5WH4DnaQ-HFK0Drutq+ePw{rf+{%PB6exPsz}lvko`=5Mv`)ly!S za`M)CHOlKyHvgx*hT@uv=Kqw}PNLVZOIh#d%j;1dL3twy)~CDy<qcC=+IeGJs*v)g zl((jA{!e*x$|D7~@YyXXr+@ju?V{{9irZ4QLEx1;P~MfY{J(7ePkCpTr96uAE>7l| z-6Ysu(WU_9JuPMTd~br}*%?jwZOZ#lzLfI5l+UERALSD$?@##<$_JR(st%+q|1X>W z`}=Sx<zpxxM)^p}hpXoiPVWUrsrG2M6h4;naZW?|_yPVz$|p&1GUZbRPVr4n)ADr6 zXQcY{-kwGIe9B{#HUAf|5kUD|#q>rF?;w=Kqv05}AODDPLkZ?RFXEdnjK{S-xGq zg7TG=&E6?rMfqyV*9u?b_1C#R$&zxi#VwR?pnQ`wH(JX0n;j5&tKx0Oq}e;fjB^a- zJGHbaK-qu)r+hEv7bxFH`Dx1cQ<l}2ACTrjMgRFv`4P&GQ#SvnY`=Q=b3P&FNy<+- z#-%7fW5C4EDn6%Z{;!k2sO3wPUlVwl@+$(bI)O#2eVy`n%I5i$-x%so`7OWuJCqa4 zdY5vJ@_UrOrTjkSFDQRN`4d%rNLhoR{IT^+p9`6P`7>jz^XD!_`AaRo^8DA7&HsJX zca;C6{5|ELDgWR#KT<aTcQVSqP@a%r%D*c9=4&+qjQ_(amHkUmv!I;*3P3q8vOu{; zxhPyxEK{yfmj9<$QB8Pz*ejt<xl6f0Ig+@k82W5W%QofolOKPop7_{gcDBCf{~=h2 z^1lTCNAN#_X$U4Fn1Wzpf=Nvo*hEOh!DIxJ4=t6QQgJE*^M5a!mS8r5=?F9hg6XA6 z{|T62MuM5e%;fd65X|au8g1X%rLieMFy{b27s1>j=OLJ%VBQ34sS%LepI`wk7c}18 zy<lN6izqItxER4w1d9`-&QGx9fZohsvSl1eupGgC1j`fbORxgL_5>>uj3iizU|oWh z31s!bDymwQU^UkvIRJtDKUkAsZGyF2Lzg93$DeRLf(;2qcz*o^5NzPH8xd?KW@Ca) z2sSlYa%t(+ZLZW7DVd&pOOabCZmqZt!L|f4e-$R>1UnGyPGJ5o%}xY66YNSbN=x~_ z_98Iz*JCV!nZE>k66__gx8i7meJnM6w*3gMC)l6h9D)M~P9!*x;3$HF2o5JWnBY(y z;}Cx>ho$9q`A4Ydk;bSe!O;ZA5ga4_*a7}{F((W#ClQ=Ua58}mKRAWJ27%i};?ot= zDL`<Rt0fpiaQ1(d=MtPpa3#U{1eX$AKyWd^g#_t4{~<BKB@Po@Mv(sfAA&1}1PLIx zir{L3YYEc#|Ng?S8#r5Xhi@RbmB7rOzy^W9%>=iYEPdY1{|Rm<xSQY(f;$PurA_Ra zy=ws9Bjvr;C#}7oAWQH7!3P8n5<E@tkY%mm!vv2IJWlYamX8fpY54@flLYqW-&&>J zo*{UZ;8_A$eIWl2%>M}n-v0+L5xi`L#;2bG5xhq57QyQx$1A=;@aE9rz5Z>2cL?4i zc-NS8-}i@P1RoOoOz;uGR|Mw&1fLL?+Y@|BApcLRz7T2t@B4gB@V!VI0R-PFe&+-P z=Klmg+S0&J={wTk7cGA!FrO#*O>u(a@9Dve|5MCg1ZMtvB+qY-N@9|Ef`14K1Qmj! zWaj?@WySRG{}5CO%;5=YigkhpL38NxMMeZ2ffhkK0siW`1bu=YL7bAh4^sZ^HUCnX zl!~^lOk}cTugb(!2F$-Q85OyGWpXN0q^(RgmBdpkPBXwyM`aF?(<{zE1uC;rnURY8 zzcP~(Q<=qp4oqb>iDw^R=A<$YmH!hzm*c6}2uKc3WnL-^Q<+cM`Kc^OWdWD+f`vSg z|5wcalLwW>Jii3d_EeUnemIq-sAi}vO{GF*87dc1S(eIyRF<Q%1C`~eY))kbD(g~N zk;<y-vy$S<RLuO-`&n6y%9>PGSIYd~rKqe$WgRMO4>4Z99+eHLjF5hP#SMlvcG``o zY)r+RpUNh#N_aEhVGAusQrU)z%)eshFEai6Kf>E8ZbxN%mrcs4>_}x#@jEH*Ol1@m zGkhw$DDFD2<L+WK0^AQ&WiKjwiyTd5KY@J|_f4Yu@2}+nZYg{al_RMfEPROZw%4JG zhfz6P!2I7|-BDD|p>i~pQ>h$7#jKvnv5Lnj+6d5ICu(_;;>lD_ar{uEavGJ>shmaS z3~A0BN@+Pp@oYy@IoE*gbsm-T1ujs$(D?N7FQ)Pdl}o5RK;=>@*GX_0mCFULpmMdq zl~k@8suFVzm1~C>D%VrFoyu4$H&eMmf*TcYGEI7Qw>V7YRx0NIp1*_2-3g{LPVr8~ zyL?vuU%6N0eN@ta`Ss_2kjhh39#ZyU#Yd<-E}#)mNk;&cClXTplLqXS^E8#0#5|+; zES2Y|ydeC%(+I!l_j;MiJ5*kw@&=Vxsk~0*wIP|5<K2?Vn_9j_#eexH-SJ&2A5wXb z%KJlwR6ZEMA5k&?_d9+{<!379|5QGw@(mUFe?|Up<X2R_HhtP(=3n`aifq5~z309E zSAO!0`G4}D@++0!sAPmEQ2Cw8pH%*ES>2_-45zP_ER_P4oXb+lyA+io6?uL|BOnzA zK3k=FE|nV9#69X%6C-U<O}1`Qi4zT#kV-_QL#5?A`_KO?UC;FV8Tu;u+w=cu`ENSc zsuNM2!kFsBijyc#N_8@-lPB0@?s(NHsZL8({$G{<SLOdh7h9c9wetU}fB#>dk?JB; zXQKLlR5b{yvrsj|r#h?RY_7lX9Ex)$(Qi5z)w!w8M|B>h=CzcvROhF<5Y+{!E|}`m zb1s}NZHq;zu1s|?s>@Sdoa$0Zis}-I>GyxAE=_e=G3n<&RF@m-AbthK6%|+V2U~^e z8dNnDs;eordJ=thO)+a3V>_<x`E{utN_9P|yHFiLbxW%2Q{7ma4HP$|ntu47lu+G- z>gM7%rMg)Hd>`|F@&4a`t6Ndsk?Ph|x1+j^QfB^MZ~jkphapDGov7|CFv@s|sqRX3 zFOixE)!l{7|EccjG{SpR9ZmH>s{2sgkLtbysr{)QV9ViG&OuZUQPsijJWfpYFsf%z zJ)G(>RF9D0NX4T}U^^ad!0yAbR8OIL9Mu!WA5YbWg3q4hFx8X&^`0u(X`Vmb^Jj`b zOL2_Pn*UQh$CkF&c~oDgdOp=#sa`<!DyruHR4<}>nZU(VFA=!Zl?Y$1c!lDX#;co_ zS5v))>R77g|5R;c2wd+^bputieX2J)M)+n${R&{I+o--s^>(WFQ@w-g-BiaV0%`7~ zdY9q!^)LUg%KxkPIgPIC0jiHveUR!SROSEGhli@v=TXJS97**Fs?Sk<lIqh`pE6Qg zP<@8#vkv<mpLbcRHVZuY64jTJCDm6HUsZf<Kro)_w^ZMt`YzQsm3>R`ZPQrcJHFL> zRAuAU_o;qB^%JTeQvJwfrA$Wv)laE@X65!ge(rz--v6s#Q8oXk`i*7Xr_I&x#C%Wn z7l9wB{wVO1;?GI6M|yjIrTQDyKd4Sn_V=MI)j!3^|I;&Msg0wWqqZp3Jk`W?ldTI> zi&VQ*OH>n+w?QC2pjr{AI!0Gfry5ahh;J%}mepajY*B3+W1an{K!$r%W0B_n0)H$1 zW6R|J)c!|p8fp_6S({jK5^7TlOsY5;waKa3bV#?eD*1oS{NIt(rlpqf(@~S3*QTd7 z1GSmd0mT`en40{*Hp@WmY=-Rsvr{wk7asWhr#6?Exv9-VZ6Rv&Qk!4Qd?vQ@EI@5R zhle7yg{AR-|Dm=RwSB2APHih{OHf;j+LF{(rM48c6{#&vZ8>VoSh=0V|NV#B@>-ht z`zu{Z%*w`?aut`Nwwjja|J2q{T+^k5*QU0<z&g~{HQr?FDUPtEUBw2}Hm9~BwN1ot zM9qeR-*;1y^8Zxt{l7Mn+Lopq7H>^$8*00#WLs+6QQJv)dulsS+c8xRy?$yM0ku(n zuU)C_MQt~g>`u)*pPKo<3EYoBZEsr|KbqP;Y08%SQ9Fy;{?tyPb^x_ws2xb{P-+KB ze6XSo0^jE_YBK!V;YuChc;Ta{$^6|<Xzf^PCx|~z@%SVrVrm)(wUb1i>`38L6;D$< zUGWS>^M89-?HFq3i#%KL9K~}L&+{j|fZ7ezE~Iu9wTq}-O6_6^%>TXSGHSB@nvDQ; z9`=7~S5v!=+BK@W)&#?a*NYtM7-~0CyOo*^0`WIfyTzrnyiM_T#XAQ0JE^s)-9_yu zYIjq6liEGho~L#%wWp}vN9`eM_p9mwtFou*L03-gVQP<yd4$@d)E;wJ<ge=qrJi(R zi&pzIwPysL^~`euW2wF1nHQ<OMC~=nUZ(a6wO9Y!`E{knQ+s3RO@i**Thu<K=Ka6+ z4z+iweL(F!>ECz#rTmcE$J9O=U_KeZpHcf(C7&yPLG4RwUkiWbukIVu5C0T=N9}uK z>>7WdX8!L4)PAP+hxlI<f2H=Dzy!tLljwWO|7(9yD^SZQn^nvy<_DBTYE5b-YBg$Q zYO?)W`uUH<8Ugkyty`6ysxffdkXj_N<+4eNT8Db#V_oWrRraV)MJ=YD6ng)!{Y~v3 z-|gS@%=L+=Pe$GR-x}5@p>F1HkECba{R)uqQz$#7=clGV8}(_Z&mewU#px8M_ZqaE zk@_suXQFQAZ<{&~sn41&(|u>BJ_q&xQ^~;l|GNCYKDQH7pO^X))aRovhp*31eF2r& z2%x@@lUcOoBGeZZSj;nv8?ftI(lh#vpuV(ZHUg-7|F17keS7LFP~VXHiqzMjZvHRL z%G6h(F59oKYGis*t9!5}_4TA&i~8CE>rh`eRi@$*;@4N)AWhi;Hln^2^^K`-u9PN1 zeN*AhOy(@Hz6JG>BIW;S&#fg$nrx$#{U>15{rCUtJ5b-3`i|81q`s2`J5%3{`Y7RD zsPAg!NvpKm?zXfe?ctfdJhM0T(H`&PvQq9xeShi)3m-uJK(9H-K-$(u0QEx^4|6>A zBWNB%{YV;{P(O-#llsxrpQ3&Y^|92CrG63h<EWoS{dnqT_0&(GexiW+zi)mD_0y@F z|0{Kx=gt4coN2&r%NXkCQ9oPcIf`cfUa!$mzd-zj#-~*mQ@>i|CDbpaF6XabCgyTq zd!?3Fxe|+ZT8)6ZjR5M`DPC_WJIM{y@1cGp_1mbM|5LwN(fptKttLyK^xK6K@($|b zsNW^QoqpfDT~<BsrT&nz_ffy!S3Mx+L9c&U%SWg`F7PPz$4r?%P3HgN{rCUtPgDPj z`ZLturv5B-*?9dq>d#YuS;`lvzexQh*TMIBh5BpMUsboUu4j^>KHg#KZ%}{J<F^c0 z_8sb<QhzsDQh$&7hXU^_e&9QQM1A0!KXr`&tNlzenScEY;V+ZutG=fGm&k9Ze@p!r z>fcfSfqLry+THx0`cKq<P7Bj}@~imYsQ*EI0(Ecx$}06|s<-kC^(^%&^&Isw^*r^W zGzEW>(ttQnsxrXT#CZR&H(ZK(NF(|9I-)TX^%nI$^|q896WG38>OFzjnDpd-(@5<4 z9~x6o|Ch$3H2z0pVv{u{axxl|4C@<{8Mdtd7Leg7#Y{zGYL`u$H>RaA9gP{3o!*hc z(3o*ZNn>UjbJ3VZDf53CvnkF_V@?`#n9`lL@qa^Dg1KqTLt{}I^U_#|#(Xs9_sRum zESQRio`r^{L&LxSZ!Bg4+ivlsipCPYb}1UG(^#6uipt9W8_NnWM`L*}TfqbKe;O+* zu98H7RcWl|u$QetV@(?C(^$)E)~2xz4NZi`x<=YDMhsQa*dW0)HuU<9Xly)?-IT`b zG&ZAg8;#9roIzs?8VArANn>XkThiE`##ZXEHH~crw(*DAZlKQ&4%66Cnw`966pcN_ z>_TH#8oLYc=CgaaDxG;R8v7`_H;vIlyqJAy>_=mNBa<g0eI5^_aWoAxe;NnVFt?|1 z2#rHinJo{eaisVo97*G-f$T9fPN8uujT2}bXS|ghKOi`f#z{2NPktOv<5bB`v!&_% z=Rb`zX`CnKEX6U38Uc-SgwIW)uJn8wSJSwF#^p53|7l!A<5C(I)40T4oxesie^({h z6^d6XUgdZi*U-3uhRnZlol@7+NIzNieQp$g6OCI0ZccZxt#9?3+i5&Q;|?14(HJM$ zor-rU-mQ2Kje8T2mfI`sej1M`^#Bcf^H1X;6Bw`&;F~{6<1rdf(0JTs6Q0JCG@f!A z8cz@K&nB40bBfQ?c$vlvE=%J@kuTZOI=td}8v!(4^Za<4v(R{hMuEngG=8M<7L8A7 zyiMahDc@1F5uiTr)A&ft2Z|qh{$njaaZBOP6hEi&EsZZ|d`;s^8ea_w{Plk07#iP6 z|2>T#Qce2m{fWk3G=8QrfyOV=nEwm-@BcJ@*YXd~|7jpC&nT6pk@MNSPZeo&Xq0F) zX_O@kXw+z!|I?_NUQM*D(~$Xll13;#838R*T8WK-q=ZJ7=43Q_H2x7EEA|!t_L_fb zPE6AZjc-mgyjOD)F_Wgs=HxVIq&Wr6X=zSLb84DXxs+tn4B+W#&OmeeAw~iQI?p6# zX2;N+mF7A$XQR0c&Dm)#L~{<B^U<7>=G-*R|7p%;-Q0CG=MginTRNWR{2~{ix!@2_ zQ|8}Xgy!Nj7xl`;oPg#MG?${e<d8lAG?(_-WofQTb2*XA(_Bel1;rKp$ye4={_mdX zruje3)oHFNutpNScr7t&JBH@EG`FX@9?gwtjxf>+*QdFG#~XU(#x%E}xrygDrMVf+ z&C~mt?mLp^*6OgOqK$w=Kyw={x22iB^Y{D?H20*rqp~~E+>PeWG<Tsn$^^q_-qq`O zms0+p?zk7t18D9|b6=XHm9=r;_4_$YGo1o750vI0&!?aN(>#=Lf0~EU{EOz{G;g7q zy#GI!=8-gyr+JjuA5HTZbvV{D#~H9|Jb~t^G*49aB*l}x<`jSPPopWHZ=O!`3~A1E z8ZQ__Q|8}1XNaeH9?eT=o-h3ciWj;p&5LMWJfOUk=Cu-BM)Pu-SJ9ODH?JJhD0{Wy zHAbel@j9B<)4Y-9Sf`|UgUiyqiRR6zG8NxS^Cg<M(R`NX?KJPEd55nWmjIe~(!5KI zb)$I?%|~e7OH=RmoA=SY-?C}92WdV`GxdK*CXwc&G@qjR7|kbWKCW&<CI0<?^J&M^ ze8zWsPCGuYX#P*r%-<f?^JSVJ(0qmF+caNQ_BF-VX}&>o{DAUJn&~$`U9DvD|K_{G z?<v~*e|7$l<_|PKqWL*Z`G4~hnxFbpedc5;`GV%x0$<WhKm1XLZ)ko;^V<RC_lDE{ zKhm6_s-I~7O!HUaUtCt@zj>wnzxjs*GXJzghHy!mS;EO^=4f_k=4sYx7H9?%7Zpp2 zWp{F6jeurV*nS1jcIN*yn~EXLmdMDm$=?xeww+Abu40eoKLRmLnSb+d)2N&He+mCb zI0@lIgcGN{ULlqZCw1o`oSblW!YK%6BAk+Ndcvs)&GreWc2$JaYB`--3eRBJG$_t! z%jESC&g}VF#LucYTl%|gI0xa}V&)_?{}<K>u-bVD7bBdPZ~?;kl$u`}z2?IO2^S$; zh|tX64sX}uQj7X)SzP+$R7*Gw;ZlV1=WuDlWe8U#T$XUfBuluQqWua$X#Ve;tR!9| zAWTO9;c6zZs?`Z){)X4|C2JGzNw^N-7KG~(u1~n0#3QWA{Zxh<5N=AiA>qbKZ8VTd zzyCwHnNph%q(&0%NVp~8c7$6IZbN9}zzGQL7XjaY`vep2Fp%Aea5uu82}gPTE`-D1 z{7DK4<^SQZ|EtMfihC1|7BK%O+?Q}aw^y=M?E!?zi~m5vhX@ZMyp-@@!ea;zF@cpN zBj7N?BZUuF9Qgb{JW9;b{`|)h%D}_p2#+T`mGA_@lL=2GJSkC{EWMMb*fKrCX=-wM zDzHt@B)pLDEJ8DU!ZC_A0(9nc31$1?d7d%<cQ}cJ7b#v$c*zh?cp2gCgqIUuLn!|b zuawN*{1ck_+r#eXwS+f_yiW0YLVJn&?2UxC5Z<Je9|6h|-YW7oe~ot#-b*-6<eiG< z|AcoF-je{6>28R;kI?*|@BzgKO&|^7!-V4rA0d2>@KI$SQ+%B8DS;;xpG>08|1@Fh z{NkT=yzujc^8fHf!q*62B7BALWfP>e=KmhQ?m!X=-yr-_;7!7}2tOu#oA5nCnSW^J z@2~oO!Vd{Q7+~~I!0Ge;3E}62pQ_boLmDl=a7)6k2!AL1n(!CGZwP-R{FcycpYS`s z%MT__&-{~8Kf9%{20>`%PdH(Km;Z<6|Ac=jW-Ocb$q^;bex7I|!UADTSR||xn)ypy zCe%;}E3U-zHNrY!C{07rMu47+h_FN0B5XUx^IgK8yOuQCk@~8&5kRQ95dLd8@+XWY zCYq6G5~68|CRJ)OqA7_c7oH-C!`-5(h^8j;Z~li~X_1WpqUjZ9ATskGsG5n$`+qbG z(X2#s5Y0w3dnz05lm7cJ(Og8!5zS4sDA7D>JFnt=L<<qkPqd(x3#1*~orx9}xyUeS zr&>(p;zY^!KbIC>QgJCKBU(nwW!+MEd7=%7Rv=na%N2=MB3e~=WunylwOmbcb)q$f zt~UWhYl&Z*Xg#8Jgx5`?(-4gyT7PIM{f0y``Di1ejiukj1a|&SoswvCqOHYjp*WIg zOQNk@b|?~UqpXbpqV%@_q8;d*OSB`cHqlPBk{i1-(ep&3h%O}Bh3F)rU5Sn%+Kp&G zqTPx1CfY+y_O#~KZ7&1vhb|gTw2#Pr2gv=24ktQ*$gG~|K%#?){`1Wr@rNoN<_d|9 z(DF#dqli-H_t|3&ShwSdju$vV@kGb_^PEg{3eh=4rxKkd!D&RN3!Fie{^d_E9wYwj zp$<gniaF0QMCWUHf!AL|bPv(RMAs3S{}WxRcp1^vM3)oE_M<DT+@5{&e~+(mnCM#1 zTu*chQR@FhHxS*Jq=;@J^5#GM6LBliZA9ZFxSi+@cO>m{Cy|-I@ZAnbb}!MRME41s z{|h`o^dQm0!VjfykfKK{JG|Fp%05o?1kp3XPZB*v^z^VSefG`&iJmh)c^4YJKok?b zNR-&!OGF<Ly-YNo=oQIcl`PS}re!(;h~CihO`>-M?6&}-^jn}r?-G4L^d8asLnoBr zL)T6CW1=64J|X&o=u^iNeMa=T;q<6q5`CloUnzd=QbgYpdFPM5CzAQQTVcoeiRcfa zpNW1W`bCAmx<ZR~?GqG#cO;SgKa&4P8KP`@=JX7Ci3>zkfudqbu}l;YRsO55DOD%x z5H*M*q9&2ef*~1Ei>N)cw3MByOVo2XNfGsFC3gL{QvZ0(zqI~GYYJKu(VCRj#Iz={ zRB}{z+SX*W%=`zN)0)y6wx;r$X=u%6ZClgQnvT|t!qd~5!3vGXK-zF7TIT<>W}!9f z5U++d0%*;lIH#p-X(ypImn{v<L+e;t^U_+4)_k-Um1cfg3kYZsv=%b4)oKK^(h)#Q z=HFUesU>L1>RU@{xs;+!1nsgct(9mkM{5OI%RADd^<2?wR;IN|BKG{Mo?o5TC|YaK zl83j}q_q~UjcBb+Ydv*Xht|4ItmOz=8_-&Rh!MHrKxd7Bmc9R{wW;H2ZBA=@T3bjw zl9qhFwI!{sXl<Rg8a~^$w6-%+SErI46n9iiM!?Pksa<FtL~B>2cB8eI!0xon|AjRI z>@a)N+Mm{FT4wvS_A!C+`#B);0K=9&(4YKZT6&+~(p+dAO6xGE@dAy2){(T1QsL3G zj&Uh3IF8mcw2r5BJ*^XHok{CNzspIqPNsF53Qtiy)mO>?TW2_BLee^mmYF=QF|^Kh zJgsxYoa?L3r*#Fb3us+R>q1%=D|?ZNt-~b_h`dbk@&V>bTG!CJ${5?_YS&ZvTE+Cg z|DrXP)_t^Ypmis$8)@C9>`k<61kk#L)~yLh%hR8u+iBflqzT5kEG>-yW9}AzkK(=l zTFn1xJwWSGS`S)@Egz!wFfDKXY4gWu*}HvOk1IamJ3Qs9p7zYMw0@`c9Ia1iJx}Xh zS})Lgoz{!AWcaO@Xua&Jk`h|4s^M$Kq<f90^%ku+d}se(f!XeFOKcNCweM;9zTyY8 zJ`(uQWrfp!1*Y{Wt)FRqM(cZ8pVRu9mc99>^(8I;;m_~^zM=Ikt<?Vqy8S@wM^*ha zL~8kq;;*!RGv3-x@YnJOtvangMgB!App~JO*D^~hC;eD03$%*1w0lybRd(3-sYsc0 zu1Z{Uyl_LYsc2JxRz$0n0AJgoo!s*-?Hy?KXwOY6rac3#KJCQb|2Cyn*$ANZuf=xq zn8@*Vp7tcPr=UHlV`xt%O*#c=PpRcpw5O##weU1j>bly~iJ4wZvXLX9t)bAKiMH&$ zJu~fDXwODlBf#B<wtfXjvH3r3@2>5+(yMFFLwh;e^U^kxr#&C-`Q2W$7octaKYXv+ z3)5bN_7b#hOh~^N?ZyAAS(5frv^5LbOAn=J`|tm>m#4iN?G;om^S6ChqP?=1RcNo8 zR=L-6dv)4d&|ZV~2DI0ty&mngXs;vj+D=J(*#E_kpuK+D#F}qNdlT9lDP`vGuYFT7 zo6+7pCDR>8(w6_Xx1_z5G=2o6SG}#s?G(3nwX}DneHHDUXrDlPXWIMF9z}Z(X?CG) z{x7_n;_kMz*T$Y&+E5VKTXFQjJ>Qr1ezcFEy+7@PXnX%}A7~}k;b7W_s_GDbU5C*= z++{s;B<-W6Im$D~&_0g#v8l}N((#7Vo+r{iUHX$0Po^#NZ=dQkv~412_cLf;O8ZRO z7t%h9_Ib3&(3a=7H3IB}srmb@&sWb2e20sCPtAh%C7!>`^ELu#U!m=;^i8g&{Rr)A zXx~U%=HI@~>#vvI{iNLB^kQzJeKYNQXx~EHte*C*v~Qz*yA>u+efsQ=qkR|cJ5$nR zX8t~VFYO0t-=}i(f6tr$(|(Bd!;VR#k&i0%812VtKPUVI?I&qJEu8)p2-?rkes-{y z_VbBAnipulXgEFL%XB8C{R-`0XunGPUD~fn_PXMDQ`)|7(0-G)Jiq;x$g#BFF_89o zkG5>Q{XXpvXn&%r4{2)<v_BqDeyZ}M=V!D(cQ|Q6`%9I4Mf(TZUkiUj`#aj-4rxSw z?{_r+7h@xU_RpUGm3D*nZ?to?CwR^8wEvLoPudxQzq~%{G&)0`c0juzfsFv#C6}e0 ze*RC}`+vJiyCzNDY3w(wc9V8jWJo*mwJq9hk2?nJdV940r5$@d83Eq^+yA8I+_4Kx z9&{$6GqJ~$7)UyFCZn?zoyqAeOlJx@Gt!a&cc!8<9Ub$3)lNfaT34c_`9GZ*j4?oZ zA38J9nU~JYbdt`q(3xG?S?SE?l-f}PqBG|ZBh6fjbJLl}c)cFP%tvQ_V{DfN=qyOb z=7I^_Yo@aZot5Y;N@rPV7NfH`ou!1AP+ZdK=`5|~GPd+v&{>Yo^5W(Hoz(wz&XwtG zNM{u~>(N=2&Ki=fMkoF9r!;HQS)0yU0}a=q<NyArcA+yuh4O#9iVd8Y&PH@Lr?auL zn<#EdXES$QX*B&7N{ytmr4^<<x2Cfz9Sw!fwi0YdXD0#ke>%xWKs!3IMPqiRGs@## zTz@*d(K(*Z?sN{2W)C`h(itsmBY@7{UbzpQ{pjrLI(Tw_4-TYrG@XO!9Hy#+=^R4m zP!qeS(q3tY(>apP5&!LQ)R2bGF{-r@K<7B$`2;#<@^nsAJW26nI;SMSYfck+I-N0e z&Y*MVK<cakd^VkP2A1d1yOYlObRVX30o~-4e<7Xs>0CtTAvzb+xr5Fnbgrj!DV-~| z#bt_@D_-GR(YcDwHFU1FrH(|${6Bfn@$dgTW9i%?<_0=93fx5JW|R5*Bl1={w+Y-n zoU%USL?)-bi_X1t<p0Ls<79O1qw@eA`M>W;=Rtpek_&v1&Le8_D4pl%JVxhfI*-$N zQsfi9&r=SFd`9tEV}^S^FY*P)(0Pf@8+2Y4sb2>=uhNn2cU~K)8t=X6O(X5(Z_#<1 z&bxGm{XaP^o%FB3(fNQ*lg@{9CeZna&ewE4rt>)+8w%?1DV@&@yBladzYzbWV)|PE zop0#;NXPu2&UbXacO`UwFraceKhgPx&d&qPuL-8}n-d8CPRC51&L4FC6!^=s#@H;- z;d69Kbn>1r&?&l<WMw)vI)QM7PIc(ys;!G}m_F?m()m|pM5iUtrqid>q0`f{>y@#A zw95N`C;k7w(ET6XX-wapi0;I6ClfaRr#op{)t#K~RCK4HYoGiW>AH2NcEB-or%eFe z>F7>R7vUL(1<BLbor&(=bZ4f!3f)=gE<txzy7SPTjqaS%&ra9;-|a#--HYyA%FgXl zbmyhJAl>;y&TpjcyMV7+i0&d{7Pge_yQr3n(bb#(<hK%C1>Gg-E=SkKfdos_UB+XZ z7ha|j&|N{A73r=-cV(Ay8oH~}-Hh&PbT_2CI^7X;*Py#L-8EIRmdS>@twVQRy6gS7 zgZV$*)cl>E?nWXvR@{WHz5n+|+MMogbhn_p9o><1x29|UPj@TR49m6=xvj6-p01`q zcL(w52%x(&-CgLW{_n-R4)obw`aKl)RNTwUM$^5J?ml#nqq{F%b9K7=(cPc!LBa<p z9+>`&cMsO`kR;l}o}I(!9wqW{#Utn*=~7xAt$2*0nZNIIJl%8Xo<R3Zx+l^-jqXWw zPo;Y@-BV1KJjDaARh6Hv=>Pst_be^PnApyIw!fltJ#!x2^Od^5nDjMs5#8(QUQG82 zx|ew6rIKAn_wpg7m@DaCMfX~|S8I9AP?qj>19&XmJLujZ&5d+#6}XA+&2(=`W$Etb z|H|I(&ohqhJ#_W{->%{=Wi<lq-rh_10WtR}`d<Mo^&s8!kH00Y=srR(dHp|1w@CLf zx*yVgobF3>pP*|dPxnd1r|8-*0>U-|{4t&rBmeK3|I>ZZr(UKzp6)9qHvUyb^MAUp zJB{!gbl;@=9^JR-z9Z)CB<gJMI$+VN-dFs<_y36QUvxjF`#s%H=zgv2r*uD~`z77a z>3(5_?!}Pa#;+Vh_ZtJ&QzM|8ehNhQ2fDwA|55QLMgRW4EC28QM)!B|6OyQN{z2Ew z-}Xv3%GlESXX)lV&WkB{O^M!2bj$P-2M*}U%)1r3Rk~*QbZd%ruWxD@(v1?}$RyHj z(~aqNl$H5gZEr|Jw@>$Py8qJs$4J%EOMzAOCZ;zHJ(+)RQhHO;n~dJ%X@_Ks-W2I} zCZ3AkfBnBVExqaJ$@zQJtKkd-`WgL>Gt--&-YoRyqBpB#vnkF_FWF)adg;IXI=$;a zZ*E)KzVpzVSHS$=9`0867NEBvy+xH;NYVVC-XcyzZ!s+wr?(_Md-LyjkxTg|%g{TW z-m>&|q_-Ts)s<bI-U<RM(pyDfCB>DKm=w}mRm;_EnKEn8+mzm#^ww2sEqZJF)H)ul zM{fgqBP7uK|MWsOq_;7>jqFHbB(Tr_1vaC%CB4msw@@6JM0?mtwxTD`?``dwZRu@K zZ#%b4BE209r}~}f9YAkqdZU#ZMQ;~+yVEoCr?=aHau0fYiQIGGRO$PF@%t$5OK(3{ zMbE$g?;S|*D0&CcJB*(Bzmzrt=-J<b^NjqzcLcp7Q_`;JXnM!fJ4Ryje|pE6ez@uc zdMDC5h2BZ@PEJ$ly*ia%`d@xIp57VsuBCS-z2xn^{J%FwJ<nFu`+wWQe*|Rse0mqq zyPV#I^vv+-U8Hz%5|d-lllk{9b4#VJpm&wPm0okT0jnJt0ln+!T~F_3dSjI`{};GX z@g`eZe;WbxG!%Nb(Yu4*?UqWj;|B0u#5sC*6DO~?d+0^<?xpt*z5D1rPw#$uPtkjT z-edG0RL_U#CAR<YPzRBZ4&2+v={+Ix$^UAerYG~agFP$3b0)CUzCce7-+PhXOG>@$ zYU#b=I@5bi{Ok1W4L`l{^xiN{`mDVrQs$rbe3#xI^xmWQ1-<v_eM0X8X+Bi^h~CFT z<-W<M^gdJeb4#UtzNGi9$gdPNDSF@dlJDsKOz(SoKPvl!<As0nnqTNmp!X}i-xA)) z^vu7fV!H!>(o4+zFM4@;=Ku7vimCr6N_qt=w^UKFWJ}`%dUY`s#VWm;rP8d81My9I z;Q-$vPF%4~JP|$lf3HjLZ+bnikLmRd>$K|d550fWZ0!5T6BAEOJPEORKJlcAlesG5 zDYTr@S50LgIdeP>@hrsC63;+9oix*@8(9|OnTTg}Vr6GGoYu}tJO}Y?jv=1i?=>g! zT*Rp}cyewJ<|ST{cs}AK)Np>{1&9|VUXWOxADjPsvG@O2{vR(skXn*>S>mPCWNG8= zs`V>?ds^e=#4NA4f(h)3R?^bUpLiAG)rnUX9`OHo4HKJSO@EBFiLW7Ehj<_2b%}Q& zUXOSy;t|A~6R%Ia3GoKR8xe2lYJK6x4yfCv#G6@m=y{Aa0^*UxTMktbZ%w=-u?9iB zE%ElM-EOFmcn9BnCs#$hGx4Y)f%F;y@ovPs6U+JIJ&5;odSAXb@#vu{;(duvC*F_v z7~=hj4^^K7hz}$_nE0Ty*8Qtce26O~K1{O1iH{^cBGuS^K8pBgr}5hzOMD`+`9JaT zPDy;iz}+~B_+;W!B{)U=SYiL)|Hfw!Urc-^@%hAO5uZamMgsHyfj;LFpJ$9n;tL!m zzAypA7y0vCqUEK;R}!256JJhzh5d$-JVEJ8=qg`(wE?@XYl+_`zK-}Q;_Hd;A|6Y8 zGqL$Uv6;WXO}@h|#J3a6|Kr<S)@?z22k|)KJB@TN3G1Ku|3k$0sL8#=4-nr+?En6o zQ<}_w{u4h;{Fua#5I;KH$`125@e{;Prp?pyKP~Yy#IF!POZ=ji&k;XQ{K9{gFWJ)e zdfD;B8V&Jl#BUJ4PCP!<r}yejVl)3ClK36sZ;9U}{#3iXNBlnVN5UTve`w<LR2l(x z=1<ac!=Dj<PW+YhUnqV#kd^<(-v8t8h<_vgUa}vEe<rp;pryV4PYQ{D@yxHDnIOUM z#D59=LHws}kzSF1{~xE{0wT`SPkuZL^b=z&(w~U9L|i8>t2|IN^B1TR5BPuFAnp)1 zeKsVHBx@13jU3*$OZ+#n_y0I1mj64A-I;%gz5n<94Nv&~#PlbjKaI8RPfC9>`cu-k zaUjM<fZd0_nLquh9iLuoe_Hy}Ifnl95~T0{>CZ@iY5FtKpHuwIinGw4RbV#yvnN2E z=WsxLve82H=b}HamUAo4;{^2Q({g_L{*#~nf|g4AXb|)lp}!dYMcoP2e{uRt(qF<D z_Z;=j|9#am^heNNmj0Ubm!mIZ?=Me(1^O$~Uy=SwX{&UXRR(HTOECS_6;uD$j%zs$ z{k7?@Lw`L9)-}?fLCpH}H=w@-{SE1FB4#7{8=EZMYg3V%(cj!L{`@1wr~XfWE3e;% z{>AjSrGGO0?dTste|!4-)8B#qX!<*<YA5=8(cf8kl;SRmGXMT=!n-T(p}1!f^^mXj z_col~#(gB%m;QbO<N@>#p?{!K=Ku5$w(M|~W<>um-KfKTt0Sd6O7Up=#|a#xc&yhP zPya+!osjSXCmBfbDfGukuUXJPP55-hGw7d5|176;k-qsqeS7~;|6IlM=wCqpd?yfd zA^nTeWqQe%(7%oUr|LYQrKY;KKYb>dOmd!?0c;4;yY#N2R0S!%3J8cOSOFVWEZAt$ zMCFxY0YOnzilW$1Q9;2j_KF>B2#BKInfdm9lDz->t##LL?L22EIXO9ba&jg!w`vwk zXPc@84Ca`sxu#0p-c-#aZ}scU_%>5@yQ#WEVikk!_>Fm|sakBR7BX#-CIrW_#E(tY zU7>Q1sd~~>-D|2=nyRIyYPsm9YMH6J&(CCQ(EqFM57&Jl+}DGqYPG3)h^wqJRgW+T zJ_R;a^#5SLYfRPSEM04=)|slubW^M_x4&K&b-%%<z@}=0sd~;-Jw@^9u=E*I^{gLr zt&OH?lc{>1IWL4cFZy$O6kjq`FPo~(j9&@syv5H97hhxPR&txEdfhKIReB3BRd15K zUsS!#_#Kk|U-h1;+RjCqf7J(!KO{dQKPEpR)&EV^XXNLk`oF1C^EXvrkvqt*$!~<k zx@R%|4x8jc`yNk=b^L(kZ<?wfkrjK{32UUO+J(dfQ}q)flTFpnru>Pi`o)xwF;%~s z(#fXkH&cq5s@<mQfT{Z3RQ+M9_7oe)*7lP7gvIuED^=WYs{Ul~mnt&$Q1Ne5RWeoo z6dOwa{Fh3VmevR3a<QJ&s-kfzqI#n<7{^Shxhcg>sj(>~irr2$r6lzfnI<#ELyj~h zOUS@Br7Q!7%#kkXkw(Y>rj%z;2$iBK)u2+7tVJF~9!wrW9!efY)+P@p>yUNHBglGW zeX;@BkZdH>&Z9MN!lP(PHWL<GHelSslv)<+Kcc;~)XJ3Fn9`BdTWe0I+Kk(h?a20I zhhnSKO{pW<iR?^vA-f70bTg&y42~j?CXXR|kjIk8kv+*?WN)$$*_Z4`9#5V?_9q9B zCz1onLBgV!H>JU*G$f2qGNu3cF>_8arLRnBs41OkO2bTPr1S(+8g5Fb^5{kgi$~XF zJj#^hNKY%ae8QAQ3$;k&F)Y>oqb;mGYOE=pZ%X4#=^Rr!i^|zrD%XXUo=cvmir-gD z<4x&vQ<^}1B6$IMp((v-N*D2r@D)%!HJ6yuBr2DZI`}sw-Uv!pFuu~1mYdR5ro=aJ zN|Q}V2mhvY4av!WUA)eerck+_)X9HSx{=h$A5*%SoJvk3r;|GPH>H`R{se?6%_3)$ z{PCZ9Z5YoZ)%;CqK6#sv!R@A`AO4!s0#ctBOi5q<F{Op14*pGPF}Z}ii_|ZFnUYTa zo6^1HQgRu|-~Vswx6BGtdfJrkr%v<NRaTnPgQ8G;$dq*c-;~t+P08>1I{9NttI0Lw zT2dbYOi5q<F{Q`J^`x4=DLpBavuR2jNVx^*5wYkQQ_{h|DRJ^ggN>&2JQbb%H>DTJ zO{Bj3X-Y4XYW}9QncPC^hrg!u8o8C+M!rtIA=FM4?Ds8-Z<Ftk?~*$HH>K_5`=;~( zgAYla{5PeKNuB&LrB6xme;$q=;1}$fU+RwNz^1grl*LuPHf3?bZ%jFDO5ZZ)JMw$- zhhqDrDg8+9G-a{bU5tM+rN2z+XH)u>i@ykY0sf|euCm*derK?U+)M5w{~-61e+t#Z zb(I6;-{e2!zho6zBFkh&S&ooVVNrUHDseJFvKr--mipT-XY`25maur_ZH%*~?3%K} zIH!6;y*HV%M;em%opRok>zcCqzbO|<`hS`JU#9<;>HlT=f0>S5rvI1e|7G=mu6Vd9 ztN-ht)|viarvI1e|7H4rnf_l^|2O5vWD~L}*^F#1WYEHtTZVBfJ!D<0wJCQt<u<0= z-jwP8W%d8yu2Jq#?02jwcQoZr66oz!{#5B=%H2)5E04XK=F8T!O^zauR>i*;mwTA< zBc?2?TyM(9nesqW?rF+>O}Uqx4pZ*U{65w4`<ZfoQ$C*h395T}#skO`RT)V4E)O#0 zt0)dO<so{<FP}vIhdh})g&ax_BZrfxk|W5G<S6nqa<nN+-A*^<@uob+l+QKgGfeqR zDUutdDUUVfb4+<$@#H&9nVw&!|MMOyBCB*Bw{yO(BE3a3Cz$fZraaM<FVsOx`2yLL z7HNEuADi+eTx*i9CEL+`T}I_{@(R^eyi!-x<DG2E*P8Ox+~YOcGF{$bd>uJOm1ZvE z8%%k+Dc@+yH>ud@fGOXsR#u+M(rGFNy?TZz-*3t@O?kE{-@?*aT!ka3@*FC2^|o7{ zN8U=#CvPKfC+{E^kpCs`6f#&yE+Q9`OHBDLQ@+oXr8SnC@;#=k=CAve5lh{(OnI54 zsZ9l2SkARp=%V;o`2kaY$dp&IZV&2OGECLpxQcvO6@L^|e$<p-Hs#f(yup;$nDScP zruM^iro7&iA7lRGn$NwPvJL}G`AJopY-jwGDL-e*GX9s=dxpxhS{k(8MpJ&#l%J>m zg6hF_u}KcZlwZ=rkw0Dc6;poGlsB95)?$Y$Q{H0AuX3%|s%>o>mDkBPRF@8*^?A#b z-($~t+m!t?{;rk=b=YpoADZ&}%>1C*S|3sQSe2lCJ~fqVO!+fY>1N8Gn~I#%FHHFd zQ~uJFzhMi1Wy(9a*4MgLu>EgYfBJv<d)4dv?)Rf9%TRwO{c0E2`bkTJcKgMYcboFB z)PGYwXyM<f>>>A(`?&o-$o=G><X_|g@^A7V@?WxwERkg)gNm{u&vC*i88ekQg9Mo* zW&TGJWb#LtA!YtYVwwLDW=TiLAZIEv`6IeVnovh^${;EQQ>kMrMN>J{RBD*YL8ihH zW~G)Mwcm!7gY`%&?BTLmjStfkTH!dna=2#t&n%U?rqb9{jxd!5rc#fY^|jP*^GZW1 zjZ|R|*T%0jF_os&n~}}Q7IGp?r6t))Pl_%cX)3K5v<a2ArqYf|d$I%Bk?cfvCcBVb zg}Q6qRCiN3#Z-<mmE%q2Xj3`PRF2^h_2Ax*)inPpqteq<`j|>D>b+GD+N3X)eyaF= zqjG|&3^bMg+7&DG{|fzIhW*-NgG}WlQyI*7NVT>8L*-;u{C-{;YATaVWtgc<FqPqK zBHlqNBbYgo9K~}d^FMNCN0X<MV@R3&5&cYZEIE#pXJOH0{zoYDKSG)R5uQh$Zz|)9 z1@#J_rZUk~E;1F4|0@@24f&v9Di^a3m#8Agu07#WQ@N5Gxy)29XXzDM%JWYBDpQ$E zUHw07!)r}trKwzJDz}=-6jPaDD%YFJ&8EWff8|Ez^A_OWt+W}Znu_|rsZ7`Hu;sb^ znWl1!smw7I^?y^Dt);=4noDKg|ME>`zNsuWmD@~3j{SC)@;+EupgHW};$5b4r>QJt z>7xJXrn1CTmQuXSRPN@vzQ<JVRd1I8nEdJ4UuG&ROyxeNE!TCWRBLrV`G6|Hb@ZUA zY%!IGOl5<qtTL6grt+|<JZdVBXwG0ie>K-yqe`%yb*8f3ROtVe$5jt{ApO5W{}1}o zQ>OBQsXT2e&zTDSze4{H_P&u@R{syi&y^QV<z-XZMExbzgFU`NWwR>&lVjyoM8=!S zYo_uB+iI(+(Elsy|1w#@{5KIf*HqqO{5DDdue^&$FH?CBkxr(v9TD-0_YpbRR6an& zHI)xdWtXXZWGXvNh4ViZng5Y9CG$T*9siq(%>M|#FqLmi<x5kMX&+gXDWLzVvB*uf zB2z&6m|!a3n#vER@|~%CF9Qh`8_y~p*Va^i)L8zci%MHb18VY5rt-5an#wO+{MA&d zOyxII*~i7*rt&+3J>*`Y9;~kThp8MemHmwWB-Q`9{YOmYZz}%?xpBD#=pId_goqem z84>aMiYSPvj!0B9#ZfhmlL=L%<yA=`Vk4q2{~(efEiIJ;Q6)<{WUiVn{vSa^{9mYt zjED|V5GjyFvIbd`tVJFq^xF*)*?4WPcqn<8kb5~Cks}bPgGgOp(Vgn{>mgD<P=d^c zh_pte5hBeIX^coSM4BMdw0e#oBhmtqR*1CJO$A%ylu@vqHi)!Gq^)0yNIO4Ah)4&r zqpu*+8IfbCbU~ymB1a+8E!;)-Fz4w1tAJL!hb$s;EF#A-=&7Z_etRP_0+Bw53}jJX zMEW7ppYieJ3H~-24<Jtr_c92P{~$7$;t*0l2o6h6Mr0VpQ$#^zXs8dTc&cUwbr^|= zSi0136e6b~GKR6-0z{EpfPY5LKt#-+8)xgWbQ~f&7mA3^|1&rz+{<~=jS)FtJ2P*Q zh)h6a5+V~3xd;*Ue?;j2G8)ua{T~tfzidk5OA)yOk;@pX|7*8V{Yp|Fe0(=X<Z478 zLF5`lGl*P^$SOpxL*!0GrXVs4k?Rqej>rv&+>D6&KO*#hISP%ZlK(gUM`VT=6e2UJ z-y-z=3X$1}+{z9-2NCsuMCku?GeqViat9)}QCI&DYpec`h}Jw*79z3?kwu8yjff8Z z5m~~VyEKRQ7ewx%axba3hH%~c5P1NR<!tH|ELA_(=XzlyIY%oI(eXbb52?a&0wND1 z@)aV|L{A{{C?e|-S&hg#MAZKgS*w{GJ0YU}j|lyrXF(l6l_wF|h{y&+o<Za(Do^WL zoF70${U4F%RH@g7@$;;qj{gyPkyQUj<Rw`Jk(bF=$j#&y@>TLRM8wRuGTuhMPQF3D zNxntCEoAVHcE9%0p6_vSJNZ5-{{Jb14-xrD0>&ScpXj2l^%)mGC%;fpEBU3KcMWzR zQiaIZh<wjO_y&=08R+<5o?ICJfXFUHeq_8;^`PB;qVhBO3n>#pvPYT!5$+~s{zqb& z{}Iakk5J}+gfjmll=&Z_%>M}gB4z$ZVwwNBo54Sb$o!ASZ1WPL2}H_>MiHs#9;13S z1?M*!qY_ue@Bh&xl@ys)-9Lj-3(;#4wGpk0Xco~Tq7I_D;?d7&H;cN60#T1^8C}ai z-e{gmp_)<y(Ss@0L{!KBh#sV+e$R{^f@p0-52b#X>VE%^>i8egI;!~Y5j_IY)`-?a zv?-$X5p9HM1Lic;oL>DIHzu2?5^Sd#qAd|^PQ67ny%m)sRq4s=CE5njeu%b3v^S#d z^fHgOCp+k+r;8mC?Zlun*@f&XWFWTy$?1;hQ4GZYW$_rY2YD<h{x7=tzp$53`>n=( zSf9RHAK&Go$0Irb(G#fa(S_$lM?r`VBnOd$wU<VRAbL8YCo$%Qsp838JcS%e4nuS} zgHweJMvx;B9mU|ZP#>*9r)Lly6Do4v&qP#gb}XV35gjLujObb9+2lFox#W4|`Q&&Z zg9&;~=~@?%IuV5EMdZcgCFCSTuV8Q~c^P@Ruz1vPM0N59(W?-h?9Uo;@oFvgCzSNS zuS0YeqEir^f#~&!-dt>$Li7ei>HkssKiip&KNV5+e?+GX!*-sD=q>)aP*HB6(b<SD zM|2LN_aZtM(fNqZ<65_Bf`1o?(*L9C|A^}NAJGNewVdKRHBGCrkks)%qKirTf7JJX zNsyyc|CcnSc8{fqE@S3>s`z)z=n6z1lo-+b5q*HAEB$=N>i>wYA|F<r&pU`diugiA zS0nlzqH7R+4bioTK8NT!M4ynW7}3WNRsTnHy{;AX#wQVd8qp2Z)&JE8G{>j<zqY?B z8xh@vsE+>;rT<6O|HJlq3DM1nzRXe`|ND0?M7L0RRh8kB8E-}O14OqW`j%YXh`x^K z8`R&_oS;^3Bl;eqI{ruW-D>)FD(|ZjxZH<`eu3ymh<=Lb$1MFsO9%OW_!*VYRpDI^ z(JvAG8qu$)?@&GPw{NJZ|Eu5Xe!oXtu81EH-HYgti2jD?PDFo3bQeq2|HGE2|3`mS zg<E67ZbW})ut)Wv4fi3|0MS1XI|9-DEd7)Gi#&i>0nxt^ldkfQG%TY3YV&GPMV81i zSy9F!WR#4NaWX+Bg)$S4SelC&UDUNK(k8Q{L*_`A^hiU3)OCwBwjoyJVhysUin`5O z<U!=Y<RRpt<Y8oO@^G>aSy!mnV62|DK&-wn=mW8ah&4g15%tEZ`)wF&iZ~E!CX0wQ zCtDyk7qOO%TaibStq~i8m`+n8)|PCC*Z{=ZBi0SE4pcglorDZJBi1F1yJ{f56zk5S zqsXI4o&Q0shmgUsh#iO6@rd=5$!)}Xk-f=2I^C_weaU{hisqca#s0b|eN_`qBnOg% z$iaxo-iIJ|G8a!mjEx|xXj`2^aVTQ)Ebw2cXSkzN5gWy#5r~bHK<8m}`=^nk5j$Oz zMfa&iXCQVaOUIJ*|JYfG%|PsI#4bbZ9K<d_>|DggBS!y^ssHO=%O?<<z_lj&JEC$S zVwWJM{?8)41yG+9Dwq1nh+U4@b%<SonEE_oS0Z*5Vw3&+V1ue(gV?otn6e$Q&Da#g zZbs~S#BStTHv~nRd6OR_HWjgHem--ihwIMd;w|JXayB_f7_K`HvCR~3CFdh{8-v?P z|AdPF%kH#Fh~0_UYQz>Ic0Xc^5L<@WV(LrCyGXw&?m=uR7w;A70S0I1K8nl96<Wkn z#2%osl6;VSh+IWJEM)KqVvqW<Y!I<Eh&_eaS{AJ%A0r<p*OPv)cv506ZqPv2eHyV% zh&@B`S@Jn@Bl$e}0{Nmatp7_?URFgL<P~3MyoG!fvDXm$6S1va+(y1mzCpf8zJ=KL zh`r7D9r9iBJ#stwK4Kps_5o}AVXz~%Bw`;^{Dl0J{EYmZ{DS-vv9GwD9pu;KH{`eE zcS6Zz`~zaYA@(EVo#Za^C-P?@gI^H))sMN0-4uT(_mF$ZedHhHexbh?F8+ns0S14Q z|B(NZRfuO1D<Pghtc-XRv5M;Ph*1Chs>Wl8$N#4wo<ux@c#4_nU`KL(<CdR;xb3ft zxWk-WsJn=Jh#SB3|7sY|Gp&Gl5%F$}Ymha`T8JOS;9&9)@=)?HvNm}*SqJeph}UI& z1X+))Pc|SMl8wm5WD~L}*^F#1)kC}m*^+EU9w}r(Yax}kTx>_SCp(ZGN%eokJCo}F zh<B}Sl8ASwcofN7K>QfQdmui5%CU$a$Dk+Ki|j3A&<F9p>RR!Bh@Zef=6~oLahVR% zAY43=`2!Ijg!tKv2a`j{lMw$8gOkZq$f4vgQe7SKQ^^tJNFjq!h@Zw_v>X@WdJ8~& z40#55COMWIN1i3r)k(z9;p*p-=OKPRgYo19aw5s`fBZtkFG2hwz0<`n_HRr|U7UpY zrOdocNab?!3i3+CuVU$B@@hYa@wJH0MEp9$Z$x~G-T~v+lQ-ztfb%4X--P%y#BZiP zRds)q7}xPX;xkn7$Jp^(5TB3uEX3y`KAWX;v{asqG?U~1ILH6~xG{bk;tLSx_&=`W z|6n{B=gd`{j{y8s3-LurbVPhH;*TM|1o2gf--Y;c#O2g1MV#|L@q2X(LESk1k8}Jl zok91$0`ZlI-_Kab|6wMdXXBjzVI~tEM*I=P*C75V7guY(|KuBAOJ!X(<#8kqL3};p zCB)^zc?$6-nWN)>|MPUjb^Zr&j{oC2{zv>d#CIXS5%Jd%m-!#*$uE#ElAFkv$d}1i z$jzj@|0(&elJfGW#9PU2LjBY2%gdjl%gdiadHGW)FMkSU@<%8ye+u6tx0CYzrzrCN zr|?7aBl2TX=l>Dc`G3SeBX#~C@h`|PNuB&hd<UtM|A>D>eoKBQWFU_KKQPewf5dmH zE-##D{F9EW<3E$XQ2CYojoeNCPVOQ1lKV*g{1@^4i2sB5pNJno{4Y`T6sZ1pwfJ8u zRn?R-65_NKovTSi$S4^j<79%=*M5*lk!dnRTBJ>8Nr%iK0R}D-9s?uPTIqK3WC4j9 zNEEB-H8qx=tT{UWgM>~B1y@<(P$cTG=rAN|vsCAQf+z7rT_oxwaRhZ8|NHNFAi?>c zgwFpU!SR2hv9?2^2`L`|NZgEUPPPy-Xo*BC20TZJ)}h{pVp}BIG0^!R2Al#qtAa!) zBu+%4GZM!l(FKXFdIjlTx*>5i65UyoqqK%RO-LL=r3aM=<KvL%!&Q1B(ThrNEtNNm z^eFlwaRL(k7$2`XKNmxSvs;M)s`&1a7>L9$BnBZNYYo;(fW#24b&}@LF}Qd#5~na2 zs=EISn;4G7=}4T4#3&?2uymxB@;wbCPNOnf6@SJcF$RgTNa!g>;!M^3xx2(TDrb>r zljo4<lIM}<ljDW@*P#lDiAe24;sPWWAaNlQpCNG(5)UGAF%s7yaS0NaAu$PwOSMgC zP+~YpT#m$KB(5lS+mFPR+~!rf!Be!|xOg=Z*D$zNmEcIHAaNfO*CR0<i5rl(8HpR2 z!}*_}&8JeCrfUVqH3NxRNX(>ui|V`==%h_zHaUl!OU^^$RtEFQ+sNC64DLW;0Ry>x z%j$O`aW@hRkywnxBDDzlQ+){%GWbtbQ|>`xDH1aH*X^i#B$ibxU5>;Gt(bH(ZJhg& zQ2$3_rHXR9)c7GJUO-|M5^Iro7>P%;=s4-y^#6qVKN4$H^zSc;bx1sg#A8T2fyCo1 ztv3IYp#LZ6|3R;K8j0tSp#LX0{}c4pja*mff5NNaMI_!pViOXtA@LFtn~~uBPvVto zIa|2atE%|DS045gTanmC{q_IpNW6)}`$)Wn#Jfnm%~GBJk&eOmJ#xD${=Gi&0TLf0 z@gen(ROkC(Na*|z5}&FPocGU>ln(g?l5$;qiNvo+e1*ghNbEr3TO___{x_QM&-o|5 zqw>8f!S((l5<elallm^z>$PG0GpX}G!FV9?8<KJv?xy~`Ues!gdyv@6U?2Ghxu5(K z$;L?hg=9@64v0eWZ}K1VUnHs+l*lrYzSZ*<kc=Ry{;zE!J4(|3lj{FmOd?7DPtyOB z^#3INKS}>j(*Kk6|74D<xFr2Qss4{7Zwg8Jf3iSD{U6C1LVv$ptVJF~9!&D4kUSL0 z!;n0JN^K+$XTY06vaZDX*Yr{(>rt;yHXs`!*~l*qkFE)leUWUcqE?_8*_>>FWJ?CE z$Rm+#$DlRY2FbP(=%4PZJ;e^bf@DW7c0#f<gDzxOvK!f*Jc>M;JcjH+9!nla_9T0e zy~#epYOU0d;_>7OWPfr1k|!d0661kL4q`Bv93s>|t-0PNkUW_@g&d0HFuycxrBk)< zCF%c3`oHfR$<vS=i{xk|PY-;r)#*r%L6ZKTr2qT9Jvk1^bCIO~C+Yu5_5Z+slII~g z0ZICQlK$^s3(1Mx?*-K|FG6w(k{2U+1(KH_IZ10M+tKRDv0TRBa#e!;UWw#YdMq+o zot%v1wMbsg9QA*(IL6m$9PIIWBxfRd1ClouTgfMA(%WxBavG91GgJNF-y@RKsmxF% zXpLKtoJ(;Qk{tghIsW%OGdT~*+mO`pKa%rxExx0I<n2_djsKJXMXG@0ok;$O<U%A@ zBe@94`;c6W<UL3(Vg6mDx_5Y__p-K2sV}3>QABb%lB<whf#gag?`Ns{e{cs+K1k&u zRoDW>9$z8(Fp_!;KvMlb%v^)yXGpF^@_orfavhS7F?gI@udA#61o<SnfqV+drzK$g z43f_>c#hmiK2N?tz9?j{3CWijyc{a8Ai0^!7V=f{HF7JtjeMQdmx7RdlYEPOn|z0S zmwb=hF4Vs+?;!aBk{=^U|4-8Y{imKJ{Xa?nZ{3tFBmVy_lH&h6ko=O0&i{w!g8rYR z|MMMVCVYpa`ahCCXr}Z@jdvpX50bl(+>hi>NXk%O?DuCR)&G(FRWpM<?nZJilD|{m zqq@v;YtBCM4^>9njK%-|M)EHm5bCAPTYy|9k}qSw<iALzk*q>0j${cb*<G1yRdfq} ztx{1{QZZF}v{TB!HI+arNj;^C-{(^qq#UH^|0(W0mG$$PnM2AT<udkE_n(wgprZ8; zMii+cQj3tPfz;7R)kLZ-Qnipe6e)fG2dRUZe@M0b!;q?jRBh^qSJUfKIfAT5*4Lv> zH6R<3jmXAA22GG^8ph3#YEH2Qsb2v@sug)8*_v!4)IS+(rP?9Y2`PU5o9e(lb`)xl z(l+djR5zr$Fz%|l?@K9;|5Hb);?EDHjzMY;QazBm9I0cG>V?#CT&t(%1m~qUQkNpt z2dPO&^<`;4qy{5(JmV9{{^S7iL~<ZfgLFVB+aZw}Lj5F?=9xN~F~|R@p^S$ibtY27 z8Poq$>i=9EiPR{hPDkoAE{^tfIh9C_p`v{|+}Btt<H)nfvyr+GsdJDzkBj;Uz?M88 zsR>lZhwIAtpXMJ{9;u6%a4~s_t{Cp9SgRFMm-#DlYgZt33sM~ar><iDWb$e~1zOc> zkh+$=>pF4@c|EC<|47|P>f}FCH<MF^45lG9oxzMynW=%E@mb_-VepAzYA#X>keY|o zZAj7oQ}ea7i{F^HGvD`r-2xY7k9RUysEU6FNi9a|Nu-t_wGyejkXp*4xErZ^n92E{ z`e3{asTD}w$9Q?QEzti{^#7o?4<fY&sfUn~e!hzN4{N@>si?=I{*TmZRf7DrNIj0! zI_i&A)7MjZqMEV+sf|cIh1An326pibQab)e>Nyqtv2^Nrq&6e<0#Yv_^&(3*aTWC$ zq&WUhas2N;HKev6wG}BH|0DI9X7XDkNNuC?I{60qCYwmV{KepHr1Z;QNa>fqka~~Y zPQK4Rqu>8R>O)e$|Amx({|hPo{uff8lAn>ElV6Zul3$TK$gjz7Nd5f>q`o7+Cx0M+ z6zZRP$S!0~K<X!?ry}(;(yfvD1!-C9SEOB}enV<MQoE7bixmAowMUOSI3xRbr1bx> z(-{AW)Za+`#aPc{*v|h@`IoFBOM1IWmC1@SEpM0zqhySXlL<0OrpPpzAuZBII)`)? zX-5|IN~|F>a=Jl1#<YiY0clelau(9;rD^)V?~~~w(zTGTp|wia6l%+8d=PoCDnaI< zNH;+GFr;hiamlrrJ{;*Ikgmf__5Yw{()9myeN}w_OgBWj1=5X>Zi;kc<~PyOV9U*@ zG*`v%u4#S$6X{me>7V}0ZMqH8gOP5FbT_2iA>9?}_DFX^n*N{es9WHDAL-6qw~H!V zmx0u|JJLN^bQID@GdM<zf}=hb>0U_F|I<CI>AhK>K4f3AA9*~fFMlH4pBzBy%b!RO zBnJugPg`sV(&Ldn3F&i?rs1UN|7rSvdMN8NjB5=iPbEi?Bgs*u{`ecxqsi0BF(ls{ zPM^tmEIE#pQ-AjV4o4L3=v<_EBS@dGMgFKJ%^N{_BGMNjt+xQAFVs?h#GbyGiuym& zlSuuRE7F&dmy=hJSCUtelgX>eYe@b6FVfeMQ^@Pd8<4(<!Hq(;*v%RQ6`qE)T&mNN zei!K(NY6!jCepWPFOpk%Yw23EkXHXkdXBKz<}1eYkmhuB`c|apQ@M@2omBrvdI8ce zAgy-+r0M_Zg^U-Gi-io9AkFcATF3uL)Bn@z|41(-myzoK43;Ckf&u+Mt^SYnN~9lW z@F3C;=|C~PD!fb{M*0ydkCLm&HDT#mq}PQpZvnb4{Xeb#kMxs5uCf8?r>O82plQ!g ze->%=f222tna_tCRR3quCZt~q<Cl@9|LZE7S-J&j`hQyeAL*?m{Xeb#&qcij$c2pb zThghJew*SuD*E$3>GzQS66x(oe~R?`NPmR%2h90Ub9{GAe@x{QDiOw?aciG5{-T=x z71G}#y+fuVk^Y*c-)N~nQ=0w`=^v5)p85}}2R(Twm0hX?d;A%hDAMBp`;iv^-@^_5 zhV*V`s{i|bPJJ)Z`>50Z1DE>~X<B{yFQgB!^lx1&aJhexE+b9<PnT5p=jhTE&CKXA z2AP={GHsBFBhwO@1Ttx4lFUhIj_+pjyr0QPeUPz88<{Kvhs=>K>5+y6nI{Wmk*q=1 zBx?y79E8ll3=Sa=B@ZKOBh!Sz;mFj{YHLmEB6CC-*F&bh#K<%t8<LH}(#DccrD+&6 zL#8=5(!y65x6)_BjQT$^t@YS@>OBIPw#XchOgm&cBGaCV`hVbHnNCzXlU-ETRk|Y6 zEsVP(a}-7Te@6WunI7b^B>g|5{*O#AvNzd><oG|+Ph$O(8<zAaakET+WPU_u05Xe_ zIT4xh$P7eg1Tuq=8H&tcWMpeYxP_B+MZec&PNt&%AKd#g!>9}=PgUK&_hm*RGfL;% zwN|GgGX|N_j8E4be?*r#gUXrYSk*Oo95QDyIGa3&JeQ>ZXXyWuETe_Y1Y~9*GZC3f zk+}ewi;+?PN9H17Fs{zf|1*=Q&<``0A#)`%moxJU)$8j>Lu!u9Rme<cAme{oyoQwV zzr-^B7s~iwDC2*jjQ@o){uj#lUnt{$p^X29(?}WrODyAm4w*7C{+GpD^z3Ue8=2dY znS;!&$joJZ=4nm*yIY3-pHcr0?kSl&khv3?1<X|c4>K21S)@wP>y{w%7BY7svl*GY zky(MvJ;*FWhW?*fs+s(a4rK1*y317w&ddGm?GF_1n2gLy@<H+;auxY7`G}CgqvUF2 z)-YI0t|K2KA1Bw7PmoWN8_1`~r)9DWnP<pn$>+$8<n!bU<cs7c@+I<RAvf}hkjfTh z^rK#6UPXrfpHcr0?jV`h^%j%i_&@We>i%6j^ENV{AtM*^N65U3%=^f^$M)H-IYHm1 z|7Ym`e$Q!i0GW@G`GlFDY9@7LK1XH;GV1@xd`W(#r9nG?jm&q*sQ)ALt?KgXh{p8) z4E;Z-mHhrs4P<t~60`jYnLm*c|KE$uFUagh=2x!un{L6MCCI4%BeO@9;L6=cMg1R{ z{i^%3K$*XgDI+8G{}-9RS*kaM@am@jXXyXj4ihS{c#pH9n(1%fio<eXC17P>CAIx6 z^?z7t&GC=dvUKjzvZ-fPA3*Q2a<Bl)rS6eNOZ_&q=>JxMdQo-1O{|)*I>4$0s}Zb& zVAX+jFs#F19m32*HPinFidCD+;i~v==UR1P)rWNi^?IrYN6~;v!)i)nSgl|+fz=#V zQ<gT<(%^_%P-&@(e^<4Rgw+<7`ai5Tst2`gM@9WVR64>s4pt{v-Nch&b%xc2IbAi! zp8>PF!#V~Q{ohjmmw8v_(ElxU*RbY2VGU#R_JT$Kx77cc+!vPmKdj@)6GFW|tN~O` zBnO82AXtN`3?bG3VfmY)|68X}87kC2>2fU_z#0zgRO%yC^v6!tC}f+#It|u8QcqZ; zVVw@^Oju)>ss0~0m^BvG%dp15S^?`USPNmD4eNYZ=Ws>(zoq`Km$}wwJgfz<CNQ2z zUO-+b%?s-y@?!E5auTWIe+HMq;`ra<_}}9A-{Sb+;`ra<_}}9A-{Sb+((ymnodQe8 z|BP=SZ-jLdtXml03~Q>kiB@A8tm$Dq1J+DGR>~I&tXbr2at=9{oJZbD&L<`Lc5d(v zp(u>i|6%F)KkNgGU@e8U7}njematUscVS<>hl={Ye|2+l87%t0MgR9dg|zO6wI0?3 zupWiA64okM4>I{7T~{ig`+b;vq?)oC);d^gsIOJse>%1vqw=^a!Bz7Ftmj}o3F~QC z8(8|3me$kj1=cg<v#R*_L2Dzd7hye5{RP#1pR_hnc}bOEU$4M=AJ%4Aufy5`Ya6Ur z_0w>R{%>v7OkSsflUr}V+79bYSnt4ki(7kJbAn@hmx}topRa+860HwleGThFSYN>U z2-c^tK4zx+e|RoFqw={btSuM6gymnqJE~=V1M5#%eE-w>j%oCNOZ^|#kL&<D$z9}6 z<j>?U<ges!<ZkkJau2ze+(-UF?icExjG!!i{|D9q?o0i@=zor2{R^uMi~euX{{w%k zz`h@L1a@oKQP{O%$6&j#<FM26y(-uV*h$@*t^OahhMj?(g>6w+{}0^KcBtf3@tw`~ zVAq6gU>9J6rFkv&&xo!554(mczGK_9U>^eeAnFIJ?%y?R^?%rhsp9u5`*7IJVAp|N zA9h{6f^7P~P5<}5?PWKB-59p|KkP=juK)aHH=)v0m7pfgVYl#~+Oz@fmatnf=Sa;7 z>d*%EOxSH<cZ1yyHqBo?DX=@h?hLyl^E+w2-?nxaD)j&0=(@wc5%y8Ad%#xzhkcCZ z``3l7{tx>&vM1RK_ITL6_0tEt580ROM;=d}K=vmGz#a+vM2WdL5cVJj`u-1tA>>J< z?CWF(r;tO*VdQY~RC0t+|Fj*X8lzyJ<}0vAQ_)X>VUK|=pSMbICOMWIN1jEV4f}l9 z=jaTfrkzWkCsc(Zl?kvXs;D^^kQb5{!M>QmCFCR_gG*sw#^7@D3i3+wDj|c(u&-ut z4S6kj9XW-(p1eV*e{vn!H^H6;`(~bnse0`GEUP`8$_!QfCusW?*wSHU!JenD9@(>D z&tcA7%?Wzft*~#0J)in*st5hy4k`;&@xLu)-wFF3*b8AVfxU>Oi?uY^j`~0ByH)WW z(!Lk=eXy5OU#5DnW%Ym9D^v;AeE|07uvfx<8TNy)H^6=f_FCAhU_T0*{%=?Fe|t5z zp#C3TaqD2OhfV*t>Hk3;o?zyankm0>p!<Ca_HzuLhE4ys>Hk69Ho|@pHvQkG|NHOT z*z|v!{_l^>?N?yG1A8;<H(+mpy%qMW+^qV4;Q978DzB>|=T7&oKmG}u{%_O&gL=LT z`vchO|FE}{@9SFPoT_{X`xDq7F;@Q%?r!#{RMh`N<qOzl*k8il3;QeBzro%C`&-yw zGxHnG3><*|Z`1#6`oFF7|FCzGyU3r&pM?y5f&Ht-az$t+-~Y6K=a%>Ami>FBy$|+Z za$aEn0ee47|J2eUydT*IVE+qS{U7!}ss}Ak|F`M?fs0m<b&-uAn?^Q@Yy#Psu9c1J zT71g_S^9sL{_h`GHiK*yS^9sL{_nSNmj0im|NFfz>ml0+S%Yi=S^9rAuUqy<4q5tt zR{bB@nq)2M*vRtz|197C&+7aC6c0s~@Be3ObCK`=XX`NL`~O+K|DWai|5?8OpXK}i zS$+RsTR^wmSOR3}|JiE(pKZ>)x6r!z{UO^5%eNtWB${nSwl&;d$hLuVKC*3*{TJDG z$X<nPdt^^Uwga+9Bij+#uHp&Ec0#r@x2FEDr&1^*>TEY;yHnTkzg9_)`WR&UAln1k zp2*Vwv+DoBlTNl5b9$@dpTTTjWKTf0ANAu^_s@8?Ka~N@j4&RE>}kjjLUt&!gOQbe z4WWLL=J<EC?8#J4QN{09*<r|zKz2CwQ&kVn<47u_R0-A{jqI7oo-XejAj|Q8_6#lc zuiWfdWY0!+9M?Ka_276p|C2qJ`gy9$7$bW=Ii8$AP9!fNFC;G_FGltf29wB3$;-&g z$t%b!g~iT&8Ba#`17xp8b~>`xAbS(C*CKm8ve&T=Q?w4jG2TGsMpgW)Bg^@p>{RO0 zR1c0~2C~m1I}_R2$lk(I^}S%$H#>)YY%V#EycOAdk)6-@Hu84z4swBzfzLaUUC6~n z<l?Y&2^a4|Ry#AY_xQRD9*|uc<}5?@K9(*gSCIFU50EQKzLT7Ni18}&Ve%33QF1l8 zhFnXoBOfClC)bltkWZ2u$fwAs$!ExCg$$k}H|pX->6tGe`yR3{vJE$p{QZaQ%Zy(k zH<MdP`hQmaAK9%W{XeVzkL(*l25*vYA*=q6>^q_UZg_Rm|FiUezUzYQhsf?m_9J9} zL-u22KSTBtuB-kZ_K?r1d_jImex(oT*&TZ7HTW9YZy0<_ei!QBbMXgc_4hxK-5Kio z6QIccgzV1@^v6Gu)gJ;?{})QntPf;=NA?fyZV$418SE2=wc3yD0c6$xk^M{c;2Na= zXMO+oJ)sItQ)EkU#J$UK#KtRd5^y4LqCwww=>HD=-yfGc`lFz5)c@h6b^HD&@{UD? z{_lU@;W%*eaB^^5t%E$NIi6mFj$x+yf8ZWY0ZtP*McFAF`oBZ}cWN>7Abo6U-4xEj z<RRpta1N70hEtn7Tn}Ft>%igo-#LPd^+LTqoCZ`Hl8xXr)*{)mPc{^sW^nq$X%447 zoEC7}!D$JnH5`ur9ghF~`=HZ?b!)3f!Q<8Yqg;tj2RQm8%y2rw(eXbV`oE+852q{l z-i_=|9z`Ba@@Ima9*mDAk0X1My-0rk>*(jdT<i;{9~}MgS8Kv?LhuCP41hBd&WUhN zhBFY(5IBQahrycZ-zgmRe>i%X1pUN01<r6dL#Yo_-M<4m>i=*?s1o#qQE<k>IStMj zIHOs5x|aI)CP)1r&Y4u$-<)x9&Vi%;59e&vegAam{|^11M*(L%a>u}#0Ot)j6X9%t za{(Obbr-^!1c%@MaxUg}F467y?XSC*u6r4r*>En0GZW4g%(;@hikz%tdxztHhvR>T z<9~<ae~06LhvR=o$Nz9{ByS>b7BZL$XBva)<P2Zu>7f5R^#7n8=D=AGN5}tg=8?CO z^Yz0!=QcPi;oJ`AE;x6<SqNtV_5bR}E1GbpzI`|3D>#d|xH#08gt}ZZ%i!F@(tE?w zrCO@1-$yQob3cO>;aU%9rp%XW&Vz8)z<G%AD)M1Ck1}{9+|FuQ4D;8rXdU^O>bjA~ z!^|gmbWaMyp70c$O>mxuBjz8`?{qlN!g(IfbIjaWEmOz;aMb_9-uM!nEpX`n4*lOz z{|~qPDx7U_=>LxTe=w4C)c=DgGUrV=JK($p=Y2SD!+A&jN~$40iQ~Kr=RL`UqyDeo zo6z_JIG-^15Y9&oK4vLLXwIi_zJR0Se>m#@e&2&b|95n}9V%bL`5n$TaCX7@7S0cF zzT;ZoYfjMff26WgmB3Ygg7Yh!pQ-<%dT>SjMrF4uLBHAq=K!3&aQ4Gd|A(VDg|G$a z|IT04^8ZFoyj}et&c9?8S&|LHk@tUu^8U|%k&_Rzg!2B6P~QI$%KJZhzt$d}OX?Ue zmm<?-hP047964KJE@qK)801Ko^hiSjxmpbJWC6J%gBn5xH8qecI(HBk4<`8obXtK! zkvj}IHGge7c@j~v4p|qucE}yUxE@)bY=B$~<Qg(=L^dXykWI;EWOJczR=3%bY(*YP zwkF$<ZG~ZGdnz5sj$|jYGueggN_Hc=lSh$93&ZX7KyE#9$0BzQa>pSz8o8dxjX<s! za($8Ot!FLQM;P>tTt6zulP8e<Nge+qcOp5Er2psC|B>VPKS%%1ssAIV<9`PF2!PyB z<kbI><M=<P{$D)yUMeGt!v-QZit%Zx`y=Gs>Byap+!*A>B1iwv(f|FqksQbWIrV@4 z>eg8f8B65OMNW7ga{5yb$eoYecy4)uX8O;VxeJiH7`Y3nU!=N!z2wyYk(;E7KhDWr zh8(}@o4Xu2`hQOSKe#G$laX78+|@d(le>nzmb?zRyOEp1_<HgN@<#F|@@8@>a`Ta! z#&|k8gPcj;Le4^NE^@Pxo1^E57Y^$=54l_Qh@`3_Y8^OFo4cLy9pnPiFTE4F#mFs0 zj$i)rx1-nN66EgEEl9I-J6z=+<nBdo1#(NdsNerW?mlw4P+pEzs(3$g4=`9sK1e=9 zt|A{MIro)&l<{hE4Y^jRyVgxT#^ZWiTR1q&Prz-0+>>w*Ms5RguOs&qbDk!jA)h6m z<LTZ=K2N?tzDRB&Um{;7^~WEO+e~gDUnO4?GT4gTHjSlvn)wEDZzIRSf9@^WW3fB$ zIJtL_+l!nI{*il++)loa+%L#|fZUJBeTdw*$m#FDA;%wo%ju85A;+JF%hCUH>i@`b z{GX%$=hXj^+d+Pf+&8*Y89w<VsN8ql!uRA4zNpmA?nI9B|2fY8=XCyGho&-&%yIrd z$NB#p=l^q@|Ig|Czvk%b`$*3J=k~)*AV>etssAH)fc%@J|L5rcIr@LD#C6MLMd?P! zC>bN;!r)kBgKknc<??pv>LUQ$49Q0TS04f3X5l(;^Kf<k2d+zcq!Dtn2sWz;1r`-a zJ_5Kk8P_5Y5^|M8;2r_@P`HP~J&Z-QwMfiUH&TbJtBQZ$bnC%w2)91<2CDlm;Wnbu zSQY<0XSXTb&TyN-Z3DMC+*WW~FsCJR=w|MbR9dSN?6ED}4shF1Z?C!xhqNXg$xf=s z6{<=XxJSY5%D5ZZouwQbyGO%47Va_Bd#LXBRrfe5J(=lmr#HMC;r4+SgWDJGRJi@% zo&ooGxF^9q0WPiH?GKm!@2dX?qXL)y@6!KW^?x0>YTe{-1l*J14uebccZaeREFDhL z|9zi#N5UNqcNBH{zdwWLo=#<qFc{&uXTrSz?pV0z!yO0r9Jv0OI$Lvsb8#-$;`pE2 zkrsnH9<KU7+=-eQoXrd2-c0c#xE%kx^nX|VA1>ejbou_L%g=vZe*Ww7^Iw;r|GJZ9 zQ*inDuglMWU4H)S^8HVj?|-`b`7d04`0Gkj>&rh{0pEV*SwpKg4el<u)8X!bI|J@K zxHI9-hRgB4J4@>vocB4b+uUl(t#EILJD)l)EB_wn-a%yn>7VO6;XV&{A>6fa7g1kK zE+OwC?}ob)?mdj}C6|)R$ot6U<O;a=hb{SlC}9mB)L0wvA-Jm;JRB;Iz<o4~SHoT7 z$Ki_W;Hv-2AKb^u^>CjE6}bg$2xHy?T;2j)-U8fb;XW6ZZqz{A`~|o#!F>_#CRL;X zF+QyD%Wz+T`wraA%+&w?0{2x?|Njfzt>iZHbyENT3*0w_4BmqKw#LD}-jx9Ed*pWV zeewhHL-Hf?WAYR7Q<DDge$JTw@6!L>uS5wO=WDp%!_`{=+;2%8{|Dn4_XnB!fXnf} zyHj=liNO5{?w@dfhPxN;FK~Cm{gvzfra8gY_dAt6s_+v`9^F2;e^B4AdeHa&g8MJr z13D|{{>{>Vv^2Pys^C`OmZ+Ci_v_%%k-VrXe$Vvc@P@-nz&i$B5}pe$1&==OrQy;1 zJvIMu3t0)^Il5&pS55ceb%tl)72tuTc`fzl6FmO@o5$aO^Yr)M;MIcH2%i4<8y63T z#~*+5^vB<*@b}-m+VJ?}ZytaA&C?%$gLg!jQx9H!Dh)!Vp$2kMYg%Kn3E7lvMm8r~ zkS*c0VsIqcnruV1CELO42(LZ74zlPszHA>}CocLs>H@DjyskWI_5WZ5>m5bqXjOvN z?g4KAykp_@gLfP}F?{uZc)c{oA7y!csPt7OIBW9%zy5-E0(Bk#hx&=|PKGxS-Vk{7 ze^32CEIo<&dI|fA)B)Zp@YMg|4O6{0J<U56-g)pwz#9W^B)m~tTlvVzJB^v6N%jBW z4(Q2t&VqNQj$yp9EFGt%L2cFl;hjUO{|9~BJ0ITV@W#Wt5Z(lRI`Aek=K{^~@44PZ z@Fu~#nEEBE^S|4`yOhdhs>t_tb^BMqyBgk=GWdsg6_v?a8r0z$cvIkAOZ~cP`t?+9 zP$k&%O=wmh-pw%5fv3WI7~V8^x51kZZ!WwU@MgiA$+fhtbO@?@pH0qD#h+F7=25wo zoUeLtHgAV_Cp`MUw}7SU|G^m<C@sGb-XiLYN&3Ghj{wrgWd2_$^Z&woNtyqbco`}4 z{}Rjmzfk7?g);vyl=*+5%>N5z{$D8b|MFBKfqVquJHR9G9)tHNyw&>jB#ovQ^%{6< zS%-C6L*Gff$KgE#Z#}#X@cd(cQcL|ejy#&b_p~ZO%j^6<JoSHg8_DO%7swaMP4ITY zdkNllcrR0Vh1^VTAzvk5Be#;<$k*Y$1MdxZZ^3(06#bKtt@m~i>xKU=Gu8j~PZj#V z_W^bKzeoS~=>Og))ITNZ|K8{DzJd1zydChqgcq8>c&|Ka$*srxT7UCX<`BGZ;r#&b zJ9yu#ImqLQv~cbI@YMhHlPQ^L^mf6k!25~Y|C#)S{FPMyhqs%g|9g8F?}c{&-adGL z!utc>ei7AkWVo&^{Fj~})(76-@T%bb1CKxcESC~%0<Q#5CV#X(K}`(LzES^&iIH(K zL2~eKQjF7N2F8I=|A(<*vJ(7X9ZZh8tD^i#YZwF56b3N0Ve&8s!xUg@!W5ZVL(}~6 zq^U*aAXWUHWBB`T=1}T~sm{4yn8RV}=}9zoVCu5;h-z!qhiL@UfO<pK{dY%AV=7Hl z@%y}K2GbFyIZRua7BEM`v}8`JYHPKo(nb~kT?NyQN_(<{>UG92?gVo*OlO#GFkPsq z|A)uYor?N@c)Z8xSu;IQ>tz_u{~ON#o1Q3+f$4?(pD?|Vm#y^y9)Rf!oB-1gkOMy+ z<{ubY`~;>y%ygImFc-p{2y;5jK$uft2Em-9kL_kK%n<Dx^`X5{6~1zBPF7JDhr*16 z83uDI%y2(PyR;eMC-6Luf*H-^(=>rAGDoU<9?TgqV_ABpUj#D_<{TL50B8UI`RD4Q z-y6;OFcV<-<=>zt6SY*Ubb$tPM=%$`Ooq7_=5m-zSTu>0B7XT-ZcKh<bge5`bR~I} zQ0Je`)i5`~Tmy4G%(XBye@)i;AFYXah0*yRuBB5zdX6+fZUIw6eOh>2Gho)i%!FAA za|?`|!C5f#VP?b3gP8*}S67iLNgvZTyj2%vFB;2^?tszxpCCu~qEkRDy%Xjxn1wKl zVHW8Y0)5H<@?q|VxfkXhRpc58w*#{b<{_B-V5Fbu{140unEN$Bw)21Ovl2$<fAmjA zq-GTir+Uo8Fpt1Is+nTr{#v?`H4?*c3P|h!7|b@9$6=m_Sr79x%o8vhV4e)N$sNJy zN5EY18JOo_o()P_VHke?tDAiRW;4u-FfYMu(wrbcE{9iiQ9MehKC=bpH5eWL>$Rin zZq?50zprIphuIGE2FyD!Z?g0)n74KOAgfFF(ENAF_f!cg$?yM~4`4oG(T7^3mh!O% zK?nF$l3_k0KZn`L%r9WRg!vBUE10jT?9f#-^Bb6NgR4wtEOo!%lRv=x80bNrcftGt z^ApT&n4e*OW!f*g9r^O0uK1hAZKbpQ4zm|#k1q21h1th64*NB8Ka3c~0hqs3mp`q^ z-$IS$7H|HA{Mx39Rq`)*8I;M266~e&3;r6%gh5}G-*J<-c95i=BGV-Q{|hX}wlK`+ z|9_Ebecg^rdZZyC46X<ifaX9E;77Ws0n}tpE%G4pV3Ln=I8@?rFSUUNfPVf9)FJDV zN09Z%`oeHu4XHFD^&?=Q38^0h1I>itmRkVbfR;defH!ooCDEFhZAgCK3hk<`)q#3P zvJ=^v>_T=GhBfI9^aS|%FZlT{`1vn-Fq8fd_5Wgi3>AL<i{6a;kbTL1BtHW7T?PGt z%YXsEX~2oVDFDC!i$TmBOsf9_Cy{*m2F+ha4zfor8VU?!Fq}M<96^pGM+x<s(&W*= zMBsGbY{0LrnlPZ|4~!+pk(#g1KB}KXo=cubo=@siKQKY)w-pyJ04`*}_y2J*<4ed% zq;4~8+slEuz!ktW;7VW$a20bVlbrtn=YPQYAL#r~aHZgS=G;KuNZv%=OimS6tJQR1 z2KAZbE#xe6HtBx^5MewIxCgiuxD%L9MOz!VoxFowK<eEg?1u}fEFu?^OUS#(yM^j$ zLfzE8z)}Xw$ot6U<O=eBVc1G5fhyoZ;1l2>;2B^Q@EFq`1|DIcw*X)@xrSUzt`k;k zhsS~S)Sn=qBsY*xkxvWNMRjY>0^5M+fR}-dRGueaAYUXmkuM4TqXS-{vYFgMzDmAE zZWV@S@O9ul;0@|;l5df3lkbr43d8*ERNf~)AU`BOB0m;}{rpqlXW%p7TNZr|e8J#L z@+)!&`8D~CQ14KB)ZdZclRuC@k~_&=<WIt|R=)s$0KZcIjoeNCPVOQ1lKX^V+wQ0G zC;1n7fc%^Mhx}I<_O250b%8SS9#BC(jXe8mKB}4d7#SxMWRgq?gL>vOR4mdav!p}j zNLLu_F>jDRNJgyG^JIZ6k~PShWG!L1mxHOWljjd*%$r5NHsiy|I>MlD=Z`?XE%Nn{ zZ-#t*mNp<8l8wm5WD~NfFx*#jDlN#CWGnJWvNhR8sP|uOrFLX{vIE(X>_m1ZyO3Rl zVLNn3em?R?AwM4Zqme%q`D2hDjC>E|`yqcU^N%BYlD){@WFNAxFs$?OR8AoKlLN>T z$${h`VYv4pR8AuQL!L~YLJlQ|k;8@IUPe$EiTqgP)&G${jT}v~pZj;K{25fv6o%`L zqjDB`HhB(tE_oh#zA((6fc$jiCnA3x@)sa~Ir0}W=OXfA@)B|qc`13BFx<iwRIVhi zA}5pd|2+Laf2}D0=VSRP$Y0N#8^{~Uo5-8VspK?awY6qYoQeD`4Cw#)*^K9qbIEz+ zt-`Q|w;}%t^0y=ZB=UD4e?RgIkiQ%G|1$GVav`~hTujpc^XmWlpsi=&9`astDY=Zi zk6cc!5Qb;}0pwRBzmocc<U`~t@?r83@=;+}+ci|ylIzIF$j8a`<P*a18r*>VYsf!^ z{ENsx&C+McXUXTtjpXy>3&OC5o2a}*zD&MCZYH;ouL{Hbt;oNN{5I;ZlW&l3l5df3 zlkW(F5lH?$D%;8T$q&d6$&bj7h2ar>iu^Cge@6Xt<iA7y3&vlPUy=0x{MU@XA-@%d zZTLNvAIKlco#Za^C-P^Z&f(~p{Z(TPenWmYgWt(L<X&<g`3JdQ81CyY6qX}@0EKgq z{~LwY$p3>v4dnktA%T1q^GjrztSAfg|3Z{;jEoC|Z5EO!<WNXaPm>waB5g8DI>K-* zmx@Ok5@en%kVT=+=V%>jqELrHEffx7a4^ZHC>+Z8FtRpzxG?Amg}Nv-LE#AM^~m~U z1F|96h-@s>XH4B=Q?eP^oNPh1BwLY33XApHFm8jw$tbi%p(hIMQ0Rt2d+HrX`hTGl z<IZFkva3*MeRYrB$)m`l$z#YK<gw&&!tl6yp)df2-qib$eaU|0@#G0)e__yL3nx+; zNDd+glS9ap$o~k#Gj$3IqbUwWVHktq<f-HcawIv5JWUvkJqo8&8AF~yo=J`+$B}1| zXA8qUo{Pd<6wX6o5{u49VLXEg<V5lU@<Q?=@?!E5VK6={T#CX}6fQ&IS`;p4=@sOa z<W=Nk@@n!LVOWRjs7xWRCvPBcByS>b7KZuLs7xnkkTc0!$XVoUa*i-;pLr-OLg7~G z^U2%D+sQk~1tk5ya3|x1Lj4MZ_L;@x67nw6@4fdhzL#7|E+g*~24mO43KT6A?nhxe z3J;*L6@`^3JcYu8D6B={A?B|lA0{6mA0=0lYlLA7tfTT6`8c_re1d$E+#n2({b>|7 zq3{g#XUXTtjpXy>3*?K!u=l=1<z<roU)aoe3;8Pfn$X`17q_ACI)gXJH_5lix5;<N zcggpJp#!{+f*9rpDExrJhbVlB!bi;cnEZtNl>ChRocux<w#ipic936_-;m#u-;v)7 z!#4R5h21FZq`r&%iTs)Th5VKLO&IRwcPe|xz2rXf4^sUfg+GO%ZyccVH;Pdd{$czt zSw)t}GFed;Bf?<aVvI_hOpr-3MW)G&FgT*3e66<&it^>I!%=iltigmFiY^0>G$hD8 zSs;tTaKAOF)FKZe4<-*G4<!#HYYT&xDb_);35s>8A3@e5>yr)0hGZkMu~6sm^{AVo z*apRBjGL1!$d+U)@<_6^Fx+EXD(%SjWCyY%*@^5d4Ek8HD~czg*bT*AEb5NpQ4EeI zk0E=I$CAg9J%xTfx!4=UJ`DPj{Yd(M@dU>G$pON!JqMyV48=jz2a`j{lgR&&CzGd; zLxsVet~i_u{l7SZ@knwMc^WyIJY5)Exy3V3a}bJWqQ+np$D;TtisMjRj^bG;&Oq^O z6t6(>9274^@m#KZ9(g`Fo}55VBrg!^n_7CNE+Q``FCiz9my(x}mkYyVzY@jkQKbJD zC$scw@*475@;Y*gFg&w2P`Q!3iM*MdN=_rE3&Xw4MDaEhZ=pVmoK4Ol=aTctTgmyt za9_8hxCF&Js4pP@OWsK?Bo~p3h2dIvQMsGEhrE|uN-iVs6aGJ{&H{Xj>U-lV3YhrH z?CxxL%zi=XE+s@n5ClX@1f(TI8tIS*0ZA2+MjGi-qy#}iR1~mLu@Edm{^z{A^LKyG zv(M*w=RN1%xidR+_wJ;<Z%Y5a3&tWC8(}Plu?of#<}4-I{~ODxSCDU!D~0wPSJPQT zt|ixz>&Xq|+rs~PV`CGH&GfgBTgh$Yc5(-~Q<(iXZS00|48}V!4#Ies(LLmQ<X&<g zxt}~Bw70tV=^P>tlOK>r$fM+k!pyulc^t+Gij(9=<SCN<zwrt6r$T!!pTQy9;pZ^^ zf^i1McT6}7;~d2o<d@`E<k#dk<hMe*p7St%h4DRo_W#C@)ECH~$e+nygxP-t#&2{k zlE0Ie$jjs(<e$RqxXAb$j@x1U1INuUt}uF)yhdIp|0QoI9XAQHEp*&MCm(q$c^jFZ zEI<|%X6NO&1CIOPxRd@}<lW>wWFhii5<<IFVLArsAe|)pe}_r!7G}2)hZl~bG<|UR z;fTW#;AD^tkzq1IM#-4ao@0Vel1z~nnI`kdBEsyr%W*#(RpEF5j<RqRW3)I~f-Fgv zB1@BHgqfSm;3!9@JXwLPNLC^%lU0QFysE)b8;%F*KSWk1Ymha`TI9pR?C8$%2%S3Q zqhww3F|r<6Uufqyfa41|8p1Ifjwj&g14kn`o`s_^94+B!!u%)6rsPv(GqO3^LYVCt z9Ifa)O|~YVA={8`$#z0}yJ`<dH#j=b??`qcJCj|=uH<t<yUpF{^dNhZ?Ef9Ts9zv^ z3$y<s9ev?=366en427dVqXWo+<RJ1zaxghWXm26I=nN-EkR!=a<Y;n?P_OaOy=E*N zQ{fm#J)WFEP9!IhlgTN<>@i`-%XFrZ)5#g+D<u1W$1KtIdY%Kv4mjq*@fIBO;8+Mp zX6~;s|8;Uc`3AXwd{b!Gu!zoLatXPVTt+S@R|xHIY9$<R!?B9~YH|&^mRv`!CpQS~ z<=RMR6S<k(LT)9uk=upYUr)zQIF7=x3y%G8>}K>G@?CNd`5w8K+$Xe`=m4FA<oo0y z@-X=Uc|>S0(T8w+0>?4>$H^1qN%AA|6#22xZsDhNPLrRJpOa_Ev*bCU-A8>1X9$k3 z;J6OQ*Kk~h;~O}Bg5z6een*}szbAhne<Uvm?WOyf&M)Mz<Zt9f@^|u*&<JF{i$Cc6 zN&ZFtP5wh(A+M6xgxRry<6k%n!Epo50&w1>QRmI%Eo46OR`ND7zcAZEXF)o*lXsAJ zl6R4JllKU->)&}VoF<&0e;-+xG)M>OBwfPn`gFSKct|hlBmHE63<|T~mop4!DL5l= z<}nn7Ge!|76J(N1krtU2W@_MM5jcxd+)qA079)$3CCHM(Y`@_w4QDMl%fML$&a#Y_ zBg>N&$ckhova--#lU3<dBOfFmBCC@%$eO~O7CsDTZTgRpb;w7_y5wVIJ)yn+ABXE6 zI2*vZ6wZcl4ukUvINQV72+o#pHfDYk@=3BO`4riVY)-Zi>Rpq%wX`CiCR>xwkZs7e zWIOU%p}o8v;OqxyM>u=H*@@B4WEZk4`5f7e>@Kv+_N4PX*^7LE>`nF|`wIUXi#q$m zIe`8^auE3<IhY(m4i)MZV!B+z;hX{I2skHjawMFiC`Oao|HJtbIhGtpju+<4cOsmV z=ualK|A%ub`7$|;oG!HI`wE<|!#R`wEOItEhn!2!BVQ$76WV3x(|LnjK)y*XBo~p3 zN$vmb^|=hr@8Mhy=UzBhz`215Z^5~eVimcXWdHA6OTCU<FSO_WHk>=)+(>^DxtZKT zZY8&o+lATR3+GNcyU5+-JLJ3M9`Ze5_I!tPADkb<xgXA>a2{avAo)Idh&)VwKpqj= zJ;R4|j*-X76XZ$qBl48c&i@3?FW~%?{%P_v@^kVGd6qmUv`c+S=PUAS@*DD7@;g%d ze>?vNxNe2>M>sFRd4bWN$e+ny$Y06d$cyCfLi-!M4CggC|DgXT`4{;&`44%8yehQk zd!5d|<PD|kCh}(T7BZjkzwOy|8_oQ16`&|c-cH^@-bvm?-Yv||%T)-jZgAZT*TZlD zt|D;V2bUMF!pt;C2k9hTq)EC-kI=~D7Vh%F6@$x9KR^b_5E&*TWK?LkAx<YjCdm|O zk!dndXk?D_yNbe91@dAMR~fh-V6+%noGd|>BukN{h1v0{t1O*zWO=dzS&^(nRu*P^ zW>-}@)yN0Qhsf$=4YDR#OK2}qZMd4l^$1)I;i|*vqhww3F|r<6pM0EbAk1z#t|#a; zA{&!U$S29B<Wpobq21aRa6JoGOZu(Ir^(jjGh`dGE!j?(9dEeW)9FBVBs-Cv$u4A9 z@;RZsq}}0~0ap*W1~Al<d>*b|6fcmy$v$LXvLD%BXfN+TxF*0g2(FQEy~yZbatJw; z97YZ&M+oh*qv(t#$B-|PW65#kcwwf^oSX>PB#O!86mly0GC7T$F4QX+bsu~MuC;K@ zglj%0XTdd_Vh%Z%WdHAamHIXEb)j9u8*nXyYXSW?$%W)1axuAtTq?}=-mc|zR*;#N ztfXE=t|r$AbCzx$T<hW52G<5g-zGPbo5;=N7ILf5-UhV)hieD9liWq_Cf_076=t?K zPQC}%Ubrs7wGXb7aP5cd2wVsBtC8y-T?gTMpW+aC7%si|GkevjTyO6>O8-Ohn1-~J zUIGf&37yoOkKp<au2XP*2^TK}b$tTYXK;PWw9}b1>d)ai2iF<6&i=odnHOBV{!?rF zN<&)z*W@>F>Ghxb(dc=&F3{(7q^=*Rf3z#ni$CG|8LnR`c>O1@fQ9QfxGuu=yZD-% zH7~>c5L|yS`A<@>|Agyr@*naF+~wiA3R9}R2D3L@*I`zK>tC4Co!)?XH_V%0=7)JR z%zWBN^A`PQq2gAUw;6@E=<G<C1z_F*vmngd^-ewUNtk!Syz76Rdtf?X7J_*n%zI%X z8_lc-voK7<FiL3+^1c|ImlLKNrVFNNID4rtSCy#mf$7a?+wsFJ0y6+J4l@Wd0y6|N zoXx4)jHRM5WB*$!0n>t+gqg}NQRa>eGYvCOdw!Xt+*_@4EDEy}%==*$hxq`^Vme}x zC<(I!%#wO7fjA`0(lE=xECaKw{v!}STXT7s733?R^NJ8=C78`&R)$#@W)+w<VOE9t z5X@>YAJqLz%VsjG!>sYYPA!;^z<d~{KKxTN<vL8QvkuIxww=ddHiB6XW&@b@VLq-S zD9M+z9-7|}CZED2P84(+!)yw(2~2tTr#iX=YUWcgo9PiMapWpKby~n|53?oAwlG`4 zd<N#zFk9<UO3BGwiE6e{Ej47n=yoi~%doYE4lujH><F_9%uX;n8)cSje(6R`>k5+> z|BEBVrLQo%!+aiQ512i(YcgAHFPM69b#`7_b03)NVD^Ri3e0{m$H43lb12LKFkgf@ z5T-u-LG!aU42H>z|NnD_!5j&5ILs0Mn>h-mKKvnPp<aSH8Rl4+6JU;mIX)YeXJu$h zCc>Pg&&`mU<xU@UrofyAb1KZ2Gmh;~hdD!!TuCOk9GEj<E`~V^=IbzL!<+|m4$QgP z?JAq|DonlkOG{<H!TB)Xg!u+c?flixeuE2PF4D1+I3&y^FjvA{3X_k0Fqi3_YudsU zFyGQ&1j!^}u7bH*C#63z*T7u+zw2Z@%nxC1fcY-Ww_$FFxe?|Tn44g3&SuI{bgg+S zOkVuYs_5*1xf|wAn7guTDf^A^`u}WyvIpitnD4>d2Xn7hn9bP_lbyfRmd$)0<_9nj z!94uG{m&7YN3%|LZ5)Gn4(4%~pTax=^AyaJFhBa=<@y*VFaH0pwWnd8f%zHC&vP?H z!_58)!2AN{d6-|q{08P%Ftz8`RmVzTehc%v+_Esghj{_!4={f;WG%@qz-<7g-v4Fq zYufq4{1xsP%-`U?8|ForH(>q_^B<U(VEzg7GR!}8ub0`$KCbzH!TdXOPlWD|>Rf?& z4dzvy%sSU$>cfAu6!%lOZ-P5N+&9C0E8MrhoiDqo^Z6lg%l+>+*_j34z60)paO=yz zv<BHGWiIYJ;kMuZMIY{a;C8}Y2yQmaeJ|Y5{LDIW7lzx=Z$}(0?$BR>`&z^8f;#}W z3AYz+H>7#e1_{Y8f~NW4_Upd$Up+y%!wiMgH%h@BfjgRQ8`linaV8|-E(v!M?xJv~ z;Ld~Ff;*kvLb9zYl4+i7mT=z>cX7C7rp2^(l4i(q72X1O37xyNylOMJOR?tCaF?Yh zlijb~<uoT-r~U-MT~R`CS0XEuRmiGjHS$5B7Szn@@ai@LcMY;8+_m7|0k?!2(Wy;7 zLe?Q4g}W}rV`M$J8^B$k`f*{Va=07Pc_PPY4EIR5o50-}?kC}X2JWUtvjuQJ#mr`8 zbGTc<-GZ7of3c}>^G+Oh>zvx!7^~%rYisN}3wJy6S+YIc9pUaET9Y-}Nww6Yx(nRT z8)H6(yDQw!8S7iX-Azc*o$LX3Pjw_;qrKqn5BCek7Fp`vLW(|c_oe8kj_gVr9iR^@ za}Oj3!95J_7vUZP_h7wkS$;`1I#jj%zN;Qij!;MTDRoA{y#emgaK8%o7`R`C`z6CC zd&*dH9NZJ(9#1_%s2}~}Cc!-g?#VhSEz$g`nGp3fqt_9*r;{__o&)zQaL<B!rZ}3f zHOy8mqae+kOU}zi)p-r>WpK;;-=$Ua$v5C$47Yr73*mlKFF%lVrO`#IrB2mL$ffFJ zqs!&uG`LrgZ^6BqVkO+G^rAIcKN?*F_d2-Osw3Z>I_p(SovPo4d!xOzZ({wMWru}( zi|)26wvyZ6-mZ?+pyp0^E5p4D-Wc4w;gLP}9eD17`(1c$hI<d!fZhTI_g=V9!@Upg zPvG9K#nn6j_d#2~5BDLOhe`bl0QV8{D9Q1^TgU%!A16<cCrSMYfLm|=f?LP`x^h(O z_}}i|K7;!gxb-Ih?lYupw0f78ChLm*0&cw#jQT6MIrw*fV>{o{{|@f+EUSZmIzNy< z!hL~0Z~oHSeion3ujFs!MYw+#p&`w=1o!34B;0?%&GElm$N!A}P5uM-6_&kf``74S zhx=dpH?qD*9@oh^dT!AKPd@TicnVP522XxXkltRS1>v~^p4-)ty+$2<{(~L88y*Kd z_s}my-b(_W!tmUunVCj<^!cB5DW|r_<04IXio)ZDCl4NuBsJuP$EO8V`{4;t1j!J| z9|BK=I!eY!_Wzy)b&^bx7MT_ro7sVTim1-~)_CrRrx-Z9?C++hIP<mtho@wwh!CFA z@KiPSidhDpvbvvo%8}*asYFo$o{GBXO3fOrOjc1x_8@ht!7EGmAUtow^AJ3f;HeHz zQ+R5?QwyG&+A8)5^1B0%{zkx48y@Zasq4VQahiwyzlZ(5ryfJ~N$vmPX+X07_ppcY z@TbJnn0^!TNnz%98J?%$83a!=c=Tr)p62jq|4-c#o>mm>|2^9O!^4q)rww&mvK^`8 z6L{K_9mtMkC$h6JGe=H#g@=Cuv`9C2y3_1I_9UMtwHtxw1+q8UhwMxCBm0vB$bmw8 zxn5MQ#RtPP#MVRM8AelY{)J}*Ig%VjjwZ*DFOg%(apZV%0y$A=&ucO~3*eao&&%*k zRiED@Jkyvtot&Y*&Qza%1J6u&W^r;hIftApWON=p+<i3jH9D`uGvAKBVbAwXc-F(S zkYyK<i#12*vV^6U!n2H%%gGhwTS7)x!n4ZOtLdzPXRYn5v*)rwoy-{0vk{(u;MoMv zC-7{B=KwrgBnr<~l79hoayx6=0nbkQyU5+-J3>a~Ct#1Q-=nh^o_)5n-=6zHmU^E& zq*1M3{{_JF0X*#gJx6J>|Mwiz9E~1_NBe*3ljKM6oU)yd#bK#W;rRic)6}1l+W%9W zVX3q5oa5vd<d-Cm|L9!4hUXh`nE5UF9X#i4=X-lDKeE&X@+XbzQvA&PU*P$blkERJ z7peIZp!HvZ=d$Lj{)7Azp1*A8Z@d00EOiy$JK?!TeVx?)pW=p=_1*;U%{uA5h0I6Z zDrEFFc=Ov@-r6hq1>wEjcJ9c|%X=3~-A&%3QLV5L^Y4WhoV<@LOd3K)9q?-ZPwgU2 zc-^++5r_Fc8HdB`Cj;<?DT45ZbbQW#D|908Msp_PGSq=L0dE<2lkgUWH)ZrZ53ePp zNW+^)QA8ctLp6H8@%SQmA0UgtTN2*l)Fp)ai=fd`WNCF|tf)>|&a0f!WCOhA$qGV> zittuao#_F*Rp4C=Z&i33!Ylnh2mkA&)I;#rhPS%B_z&J1WKFUb`LIy`^=nk#{{ndH zz*`Sq9tzOOy70>TU!eb1bh17v?|%_3FMolK`cyvwZ!>rs83Rtk+t`>|L_Y8~f%i#@ zrsPxVOTLDh!}}_{EsW-mz}phum*8y$?=zfy8s63-bdDNr18;A5+fuh9pM|%*CN%#| zKJa#cw<G;dWamr>UfHO+(s|Byx-q{y*#q95j6P5HB45a4QuiVIlKtTAZ--=#1K=G< ze-Qa%CIs(bc!$s#YCFR?ui@kfct<iiiX2Uj$z)QGCC8ED$qD2{cqfUFN?6Zic&E^x zO1_*4!8;A!>2zk;&MVBHNzQ_IHluUMx#YY|CiQE^z+v#dPR@t-O?cm+ULe#RN23eL zMe4}+sLm3255l_?-YxJhgLgH&%Z<Ss;ax$#MXn@Q3AG-Lt}%w*3GZ5X--dS`^?GuH zP;)f8k=#UXR$sPr^|!*i2i|Q)=lkH@PVRtrH@rKkcL}uyjlM&^tB$l*o%f77($u{| zihc0zr#PUF<Y@GLct3{s5WL6WJ#0)^3GW9&iX-qIrT9=C`6s2(<NEL3dxAVkeng%U zYMV9s3A|sx`ziHl@-y;tc+bLnMzo!IPPMdOOMOXxMSe|wLw+l?^UotHTk`h^S@8aV zz}@iv2;blEUVtwQ?@#dl3-8bHUWWG<<CVhj{>mDDBQKJ_lb3{<I`y!L_YZjgG@g<+ z{6$KI(&7I@eMPAIrbe%k*VU0FRp$nL4)|_@?@svG|NGeg`|`n85b~$hmmj{{bOEIX z>CAlvR7*FaTKj+a?#OZO(s91;ZumfP4}2W|`*i%D9q0RW{10DYGH3knbL#s7d@j~$ zl5Y3{@Oj|#!ROVvWZU4+nPZTdA$2lGz<d$-s=*h9uOxgi_=>_8H)=czUxG}+mxeDz zZ3(qbjpmU>)RB7Bx!;)E9=-?2Vq|f$giuRqv=n?5;45uRkabu_NKqEPauns&kxY$N zG^Xr;uM$~VNKpm8s;VVNqYuK@5Wa`ts|{auWBdU4YLGRB6t&=cShXyyMjzp_*MW~i zecz*;tP7ux|8?)sZ>K)V@xQNu`V7JM1bm&~Ym{-|YYbl#X6pDKzNX|;WHTW}bNF=p z4_`~$;a>pX(==Pd_Y6fFJK7e$c62!Y_v!gxPIe&mFMv4kb%yUl_`1Ni1ir5D4TJAF z_=dpOO;!th-N_zy*`Dw{Z|h$0@%*ok=YM@X|Lf!VUmwr^`t<xSd^~aN8%RBf<oREp zp8vJmFjT(+8Dr=ihr>4mz7g<^)O|!6spcs7^!>loW8l;G|H3zx97m2PCy?^~7l}?H zCzDgisiZuoOQO?AdH>5zdIVS<IXs)Ge<pnL{+EoN4c{C_<>fDu!{@*G`205?pa16L z^WS{)8Rhfee0=_!kI#Se@%e8)8LmiKeg2z0uch#9gHNCT1|J{(reXzr^8T01d{@G^ ziqX}iy#GZK){^VU^`yN2MSOYxi*O?;?|%_35C0L$`(K1xh4y^6!?zPYZt&R^yNfxy z$#*nUi@Xcp9@WMt@Vy7$UYh&J{p11iAo;$KnTN>3@bUd$z9Y7O)Smk><{u|d!1ob+ zCp9PAl2h=Vhwo!X^&6r16u#4{wI!dy_c_fo<XQ3@`33o<keOeRU&Hqe{cmmmJG&*{ z)BizzU0(SKxIpm}`7`+o`78Mwd6E2`yhL6m{~-S)<^7M^2I_y{e*wNL@K=WKD*Soy zU4vgb#_I;8ZU4ew0KOaW-wOXt@ZSRe&Eo5@S)%@Ys%86EeH)oy9a&fE6omgy_~jI^ zXc_$fzb~hN#krfjM}3`?@xSn1QqBU4z7PJwBB%}c9q@bM*YQ96+W*rxNjLo5NjVGn zeKh@KfDDo$A&ZB}h+Rp{STqa%IGG@m@LTYwMC<ubjiyygSD?BG{H5V9YCPQy{`*O3 zQVIBrQ5P3#DUFsSOQ|CbR;P^7>MZ<a$#P_Q_$$I+L9~|AXeHH>ueu8SkHKFR{)geO zX1x9p{11{3k=5a^34aaIT2`aAR7+XawT<+f@IOM<A?5V0ICX`Zueu)mjo`0uEJ(rs zIN5+~NIoIdOpP`+d~d_wgnSbI7VtNPzZv{biKD+G8f~sxKGFc4YzcoWil@oe8dCom z_}fslwVigHe3ooab|5>#--)6#{N3T_|2uzIsULnG|IymINrKK%%^vXgWd8GHuWU%u zdc(gJ{yy+egugHRBjN97ywC~${^S7ohrmA&{ukjNB#thTMhB~wF`??A@DGQ7m^$*& z*^S5uMn@U)AUpqPat!?A;D3pFtWawcYQlK<C#aSN>*OT(--3U#oV|j73j9mqp9=qU z_+O?oP0wmcS&hzse<sB%T2`G|<ZN<|kYX<U^C(_bM;rMX`8xdb>AyiPu%ogKETprD zTud&>M5&jl*4ZtGe}(F7dsgasH2*4cHT;|4Ujx6a=e6*!(;T^MLlf4+&*MKbsg2pF zzVsLx+DvZAakjz#9sJwj{}lcmQVIM!$zAZDgnu{u$KiiRE7#Dw@b9tpd+_h2xsTjW z9v}~r+HCj_k%!3-$Rp%Y@<Z~N(CFWWny-hG<FQ)yBltgt|CC0h{px(8TD}X_r;U!X zhCd@ehyQE%&%pmB{AcN$Bfk)85zYKcwS1(wPJRRbw>l|j19kE|0yo3|y&+dM_<taO zg#TCgFTnpZ{6C4K1vUDM>i;Hxga0D^-^okxU(QB#<^KWypP5Pc|APN-=KNzj@)K~C z&NbV)4*$P&Ze*PRe+Om0fm@6krxD0U-ip8-2;7E1K?L$6P(YWl#%bMaH0SmleJ7o} z)ZwTJfqM{iBTxu|g$Ue>Kz#({nQi3|xDNp@0)>rdA4I?)9SE2RIH_Gior_Qtqy~>_ zStmN_({Ci;Cj$tSL?DPjaRhksS3_Y0B3fK^6oD88kN*S`)JZZ$T4b8cBlU0x0!7LD zNp1syVxo=Zm+6#HEkClFSqgzN2$WVQv*iTz_)q3A3j*a4sD(fU9dibF{b!&O0#y;H zOs9(e=*V#-jaEb8Aq4dLPpw&<>Z)}XH4xD2Kebx*AC}8A5U5Q)f<Rpa>QM8t4XI5o z-q3`{5U8h`4g!xO&<TMC2(&<;p;7)r1fC!pA@CFejS+YffhOW;zDAp>mL*c%jBKus zoDEc`rJVFZpcN^i4FavHpV5;+QiDd@BG3VWcIwFX8F&_f_8HA+$E=oTp9VT3&<lYs z^1x&Sx{}W!&;x;P)ZO(#%2KCBdy>zqBP~(q1s&%EdL!@}0(}q|hd^Hh`XkU!SEH2D z=m2scImmdDgQdWWoE(h65OEL~YWu?w7*1z|?TlpRC<I2+A49%Gj?Lsyk4Io00v!Jb zIQ|bz%0v<1Ux2_A1g0|cW!s;Iz;rq@Y$wy;nF!3HKbxFG&duad>-b-{2VFXj{{!<8 zSb%_z|7~B#|F&L)!21X+MqncXOAuItz)~Y3d(AR(IRYyYSV8@kP}iGASCOmLk+rSP zT74^7U>&)h+(5o9)KVJVguo62HcJr%wvb!NZRB>LW@>b&vETv%yAariz;5by5O@!P zcM;g5`}=|m+J4R1t6Ik@qW6;r$b;%<a}FU`0D;2@+(6(1ZgNKuxQf701kNKM8|}9U z97EtMhK?h^<Nvy4o<u;0RS29SKPEpRKP69-JpLch<NpYpA$1^!z&Y{@@=Kw%Q>dY@ z5%?xMnZ5^s@BTlE!1oCJgTN0=<MIE%1-sNw2>hJMMBo<$er1jx|Cg!|xQGCc|Es=4 z=Q09+*wH`f{Dr{Z8HZ)BsLoso6X5ax0FVC%{#9Q#5@~AiCS&##1aBs9A@h;9lDCoh zg<3>23nD1p`|ZZeT?pPm-bvm?-YwKjjTSO?<wx*dQl8f7MDRYym_1ln9L>?FL$$0o zp-#FGG*xG#9t8Iw=tb~p1bqk=L(q?43c-N!$}0#4$q<5Z1j7hM5sZkVWi=Yh(Fr<9 zb!4eEY8f-0Krl__kwp-^AHkxcwFZqUwQZ`4BiInZ5)wkNB!cx2EQR312$rT(MvG{u zEP~~1T^_*-G%J#o$jW3DvMO1P)So#7A0n%hHOQJ|Eurynl)5&8brIz8pI{w2k7hzb z1apr61nV=(<3B+j|B?Mg=fW571{=xcod`BYuo;3)5NwLzlbKtR=|81fI&jTtj$lg! zTc{(~0I1VSwTuK*w?=S0g3ln>4M9ErgJ4^-9fDmDd=|k@2)3uggFnHJ+M7vn>3f5n z#n&G=EyeMFkmLXCmf4+t53(nMqY-=_!9ED~qVodTJF^)J5$sE+AK70>!JmL2e*%Jo z5PVU6O&*Nk5L*wWGmIQgjzDlEi;v3WP>(@yEP{IeS9>09^SB&60l^svPBc0#M{p83 z8NrtkoI*WSsHHSIjhvq2=thg+OmY^2D-oQH;0griX#E<Ri{Lz4zltCS|H0Q8noqt# zE+F3|7m|y}#pDulDY=YXE;L%*LH(BM?3!PN;2H#1tCP9LFSwRD>&W#8a_}z&Tit=+ z+X!x?ze)4e*^J;8I$LdL8-m;E>>ziN+EF05n|z0SS7^8AJp^wcxEI0G2<}7hD1!Tq z%CeOnAP*vV7{T|c4+(X|qR|h?BkD-Y)%nn9{2+qI$m0lpjG%0^A0c>B94)2MQ>rCj z^(W+~>SUvzA$S?V&-G|SP)_~|&ywd5{1U-0^!S5hs{a+qgB!tb5R@~&U+d;AgSX&! z2%gVOBKSRmKQQx0@&fr2DJOrm2!g*L_$!^?$cwhGw}2sdNvqX4{$aG+g5aOzUkF}7 z@NepWgt{^{dKJOz2wqc%CW8N}kTy#+bQ3}@gl<OYE`)9|hSWzWA9*W61rWN8I=@i! zHCm9oT^;%QLU$l^XGYV%TaWFBc>PbP5aifQ=w5{GLr6~w=r!{i)#LxVwpBYwIsX5u zwpJYzp)f*jxhxhTy|o`9FG2wdA3}b;TvkRA>Icb?I#QcD5qX6NLQyhC#t}*)l+agu z$lNuWQZ4za(+IzgP#!{`AXEe)(M1tzfYAL2J&2GjT{(n`8882gP;s&ZLZvB6B2-F* z_G20?LzY!XYF4K_S%IvGP!)tKQCAjfOEjk{Sxud6sfQ4%jZk%C`T&G#2q|hJREy$a zb)-+$=p#lICqi||M-i$=Q5T`dL}+aqtxrC#j+9cTAwpdddIF(V2sP5T=7k!QO%Q61 z(31$sI%%qxg-Z)H+Dx_7rn&{$QXToG)Oi}A4hXg8X7CI`?GR%BAJYC`e;tIng*=Op z_W#*FGo%Oq5#o`S5c_|f?2^ex=sAR@Bcun`5bBPQENKsfdLz^mp<W2_4|1mO4Qc<c zTY_fxL8u=>+W%{7)nWgi)dLY4iqIg01|yW||1+i7|7UZCvD9#K1UV8RcK))wy0D|k zF$ih@kI-0B`+tPSlM{r@nTXINI+IBboV13i2)#^aS|*cvhB4EF&@1FjgytbMi+VOW zhny?aBAWRs`C5)MAE6xxy@AkrW7fY2EkNi^x!@n6g$S)gXc0n7Ik_02C3+)(jAt~u z451YWEmueSe0AQ+(W~gJMrbWUYt)y0Uvt*|zc!i$5!!&z+eZ7H2yG-cA+(iZGeTQL zXqz><johw|%u5~l96)H7(Zqq!ZtnH(knbY2mtqe>?}^YFv`^Sa?pH^?eRU2ZbQGcY zjb3Sl4hbm^BlH2qk&MGN{Gm}xI*?=JafCjiIDybf5n7u@Pmv$1BOm=vKSfx2fYS&| z|MnR|R}lIfq00!JG5X0KdX_v#eu2<e2z@D9TdUEp$#2MS5&AA0(rV8m^nGR$p&t<X zkvSL0pKM?M0wDAY`78MwLKp4m?+9JWXqNiJc-=ziPx3Dz#oq}1qguW-jb24qI`eDB zy!{AWC;vtGW`u62mTzR<er>txTgZGl&TYo5CJ5&jQWQYAAjRz&N1GSE6XD_r--U1< z!gm|BuONI6!byY+A#5OgFT(dB4Dod?8ZE3^=BwI)a2#PLwTm<nc58wpYvmq<y_rdb zeF*!R6Ci_R$c~1YA3-=uKbG;S6FE9X$0F0}%Qm1bDPqi#_7@dW+>h`B6vfn$)@rl_ z!W9uNY0U46a4E7h!sRH+AY4|2Hd~|R$qG46C8OUyge#L(gcMZ~uBKYrpwWjA?u&4B zgk_!AK=?6)YZ^P&AY6-l7~wh;wGn<qgw9K&kCJtBoO(vF6A0HQA4m8Jgd0#d6zW!? z(MDurb!6$(c@p842sbtMEkpPzAw@H?Il?W}k#=gdmEH{zej4Fk2)9PKEhnErxQ*Uk zC-rNz9l|{kewMmD*+HWk;w`}8P6&5aN5(VZE(mvJ=sDZzM!!44Ju(iX&#RWD)=FL= zdy{?Cm$s?j58;;(?vL<rga_!6$?!mO5W+(!UPO4X9;=jmjSeM;sUsiV<VF}9Cm}pi zNHGfG(G+9Uk-2MhEadoAc%1R<4TQ&&6A+$?@I-_sBRokQ&D7|W9Q`uF(-EGQ<IGSk z9js=~l$Wm|Jd2!-@H~n+2+!4*vdKt8qpy;$sUzQ-I`a{cHU9=8QG^#Dd>-L95#EXL zLWI{MyhxtIhwx%@3Bqq7ycFT(2rtv;^GORex*|ufM0hpAt8$z*IeMLu9FOpNas$Gf zDBebRqX?}{qni=litv^kXIn-iydB{kIsPt$W&Q6q0_zZdhkO^|j}hL3@J9&0Cl1ZM z2=BA?euNLuJV?Gz9wHBuACO1LqvVI=G4eQhf;=fS#(hnFN_Cm#)Sr-_s*{cK{a<0e z|1o?9;cpN=i}05SpF{WyU256jWm}T>)P%o6`0M|5zNP=2<}efC?-7yi@dt!2BK)KA z@cRf~Ab%o%M)+5Re-W(>(CBZfrL5}T*|tmMWkhaA_zy%1ApEB$>uUT9;lFMD55iYy zUL~)Q*U5j$8_LK{<jths{EJ9F@>cRTGQTjpej){P^c{%Yg~*-i$T<!zdv{K>5F!pl z?xin}2xSW+_aRc4j-gJrl#`B&G!Y3Q;zlHZhzAirB3}AFqs<U4B9yhQ^9t&utQpl| zGNMlAdyK>osf9=!ky3~x5V;?bq*43{L{g+hrV%NENS<h|N25h^^aIAk#}Fw-78g>K zK%}H<$=7IUM5-WC#+bGgk+NhtL@H90N2G!X&D3ZmvT}}7)p%5Ds75|WK7>dOM5>F{ zQW~w9qaQ}30V1`Hd6f`(#CY)+MCy=_B2tf{E+UVK&{45Q>ywYGBekj15RvAHJYl?g z5Rpb?V?>%#G(qG^5t^ydr^seGP757(MOx|@Ohqe1c=t!7wK`Ht%{GY0X4w{zt%$Tk zqz@v`BGL_!_KbEQJ0j8rkxtZ|g?8Dlbe_v`y3^^Qj#l0ik>?S40g+xgIlXgqUqoa} z=x5Zw1(E*b07NEI3`ArQ#fw6U!Q>D`h8peXP!A)ABQio9L`IUM?C5Aj#@PBLM8?{B z97~NyWJ1OfA~FdP>6RxmG(|`;m3$eIX?EG^bY>v(3QNr-XW7x&h|IC|Ttw#C`c;;C z4UyL~ju4SIXf6;^yh$!ZWRYEJF`XrdEM@*Oa=9H{fyi67UWv#mTd!uRHHfUuI6_3$ z%gyqLY#`qzHzKkbkxhCNy=(~@-J)8yL)F_5`3jNkh<u934oN_S$A2Qb5IKp+ZbXhF zqQ`$2dKZyBwtf$hy)^fcI!s060I3@)BHA$`a)>-ken1`}kCGpf$AtPsS<OG8I`hvl z!sGvuQ}jP3KgpyC5jkztpNGh2<mZT-qd0@eSrJ-^M!z7x%yGU(<Of8)F`hYr$hYKo z<azRYp_bL?k4Cj~h+H6lLgXSMKO^!hBEN{EIU4;fNB>UeQjYTnqESTtM6@6xe<3Pc z{@+HGt%&?XUP0tKB3G%e3AIj*{)^~Mh}`(kiQb%}^BHv?LiAShHZnh1K&Uln^marI zMDNfeY|%T(yAUlzaW|s(h|o-p-izpckgG<;k#(+4;hd<$XgeBFC!#?_U5NS+H4*h7 z>K0#X(5N>@`{@L7oDiKb8OiZuh?YS#j%ZOt6Z*E?Xp&5k7NU8GruEgaG8c^&Q7tW0 zeZNuu2}B<tiy>N)qBx=@L}-piOOd73ks8z~i>R!ba=PV2%aault%_(xL@Og&>A&qN zT1B<gqnXu6IsB*_Cv|lZi1PS<v?ij>5Uqu%tT#R8%usDaAF*{EL?5MDm((8)MC+0D z$;U}O{*P!wQX7nDBeF5sgnUw%9Ro+7Qq4gNqRkO)iD(OT<d;{=wnFr2jb;wrM_VJR zM_m|dgJ@fdcI3099{)kK1KE-6MC$P$M7xms*9p<*$ZlkJq1~RINXUltJYsVZ?S+^N z(H9V1gJ^F=XCc}L(U%bIi|C7p_A{z4MYO+=VgRB8DF&${6>4;_QE5A(L&%|sj-VKZ z=x`C5qtTIw%C<Ku#~G8O$0GVNqT`I6&mcOUoPg+LL?=>D5^6mfokC8{ai$rqWl5(C zDP|!03dKxyq?ATyBf1#TIf%|jbgt28I->K06t5!s8pZ4CNWMnjFiH+Ybb*lKO+*(` zEK)~ugz_rP=n_Pi8gi^Ux{O?o=t_zekdw1={f=yt8eK)MR!7RJvlh`kh^|9)3!>|d zL4HIx$eRigeOupGsA40cn<zG`Bc+7pjw8Ai(QQV9XA#{_?m%=m#ZE+biO@|*qwkRK zsv~99c@NQ3i0(!75Tg5xiqg^T7g8KR^dQCi>PVY4dRQ*rM)U*n2%;wtJ&NctL_f@2 z98UkZYRT8kljKM0$Q;%A7}3j!ej<~IeoCH3^jAbbL-c1vKi4!3ok8@ht!2UWF94!n zl3$Vf7XZ<3$ZyH-$n)g)<PYSJ<OT94q4CHBY7W?V1QpTW5d9s|iyF;3mvZzU%>R@8 z3$dFKl`iEvqW>T&$5?orGkTTLYsLo7V#7~}{!2&yq9S(Fe}3#1#BN0_pZM85J$4&& z@{<J+E2tr<M=FWkj@TXa?<DWagb=$Mv3qP?2(fz^)jykv>8eJoFsYjsVh++N%rpZr z6S1a<xe+Udm<O>KV)_Um#C&>ZR?JTZ5DQZT5etdX;u?*R(f@Z?FpgM4{%9bUBvXhL zMa)7h53#iV0g<vAwV(f>`hGgu$2d?IN31qtB@lZEv66I3AyyHw(ukGgWEsTDiqQ2Y z)Jn=DRzY>P{z`~drC%AbDmi{Nnh)kU)#=nAYpSoc)k2IlXKQ-|vHFPBF?u8rdz7pz zq<9RmdaC8GkVYRjIy6A60of3-#*ltnokl`!o9ZUylR3^)hz&%n8DgCgYmV46h_%qO z6|t6NEAnZwwNUHPXdALE*$%M|h&@Z)UTEiZq|-?qSyx)B3u4lxcQv}bir8~xH?lio zJrV06TFYwm`5gU%F{~P5y~#dgU&Q(&)=#wNYji-49)#E=#9l;f1Y(1YuEHTgilK-N zqZqD^l-1}+V{~!EMv<ct8;{r+#Kt1_k~o^9(Q*H;IXMBbiU02)HW{%Qh)prp$;LL7 zd|5~_4YBE}r5=sGVm$Y&d=Q(7*er_K<Q(;7Eoo>T;<9VVO86MD*AUx@*z1VBh1h(= z79;kC@mxp57Lad}3&}-7or^}77;npNyHrTA46)@DE7Xy>XmllFZzHzK7<&b=)#Ms- zEn@2tTPIp;)98jAz0nxH4zW$-X2iB3wuO4DQ1dmqo!p_0%uAhJh#f*~x8Bhfd&k&z z4zYL1J%}AZ>^;QxA+}c>twE#vbM!$v@2exV30oFI>@Z><7(-=k93hV)cAVlv#Eyy3 zdNg_hv5yctnd6+w(VrmpH)5Y6_6uUC5&Igk&x|hLA@(_W2C*+F&LVbBgx0CiFUhZR zoNwrSOG?58#H54z0kQ9Ma(>LwKQZ%Xb>s+!*7>Wk^&7-~Gsa5KbCLWVu|Fs-A$D1W z&RwH_l7FcqYeSuX5Wf?#D~L;%epM<&>>7EU{1@??5WAr>k{To$zd1+eGe-Flzm>cV z@q!fj5icM@^EG-qd51bOM|JK({656*Hg-$p_mG8z6!#(y)lycYg^dxvBW{om(n-36 znxj!S;=K{~AYKn~FXH79_aPof+^_FMjt9sf;t|9{)M25P)o7HA<v0n%OCg>_JP+}d z{w&JD+qi{zI`b3B$s&jsN4zNF4<LSjj$cf*ETa}FLGq%+tW%m!8L}){PH5*>K)gEQ z6^#|65wAp6M!XtD6~wEG&^BxILGqy-r-re;6XG?=T8KYF@i5}GMQACF)<L{3;*Y8$ zKNIRardp0CtFDiD8^j++{3*m6=;dMYhU627H=$^Rcw;>wD79(yNwR5<)6D4d2;$Aj z7KlGh(Gu}iBD9oH6IvtwjB2S$C)*<474de){ELV`OSVT`+S7r$qfpCgv@_Wy$9c|J zUIy`QWOu}$r|5xrPZ3&5qrJ!%a-2ShZ$`W?;v*67hxlN``x{FiM0@}_kQ_w5DAam1 zI>cx?0P&&ZFd@Zo#7C%>9F2}bd_3Z#jW-t~K1N6(+t^r&aq38>MkmOHc8E_TCm}u! z@yUo!MSM#3Azd1MIY&=NTuRMg{ww56jcVE~#Aj2?A?Mn@`~<v8=QZ+m+n<m48*~=f z&YOrYM0}A>O7rBS)h;2Il0228rtJGGWOGIQEpnx9y6Ue&d^Mdl<XYQbhxmFr8%VuL z1o4gJCZUw2-h#x<h;K#wFT}U8!tID3r`Un`PQ*V%d>1EolkW&A-bH+mY8f2H-y`=T zzRz~{BYuEs2g&!zLw58q;vdjCLfWr@*Tp%O$)SIOJc;;sh<`+Viqzvj6rUij<A3VY z<Y$QM_#g2zwtp6J{xE6fUm(u$f1Kn0xQ_o>>KpP~A<LfU<oDzcnRSKukBIX^R;}kJ zhJHr;7p_D8^sE0Hec4}rr+<m$73uLm?0Wu`9QuD7Wo5NX|9_q03V9XrYa+B^8vU2N zp-kNLpP#q|i93+UXS^{4iCf9r$oxnYM52IbtwE!==jc0)BJ%hAF7j^j9<q>7^EE2( zU9XMAeMo$UL}4TbB4Hp=1_=ieVI-W!!W0rN<Fy7zn4}wt01_S~d`Ni3(RwuMS1o;= z>L3|XCmW3*k%vT7|3N2WWE_bUMFNSW2+h=}MW%C{BF3wAktj;uk3>l%B&|3S#l+E4 z8ZD8dOVKHv<CI0BH4^2JcoK>7QUr+#WJM(EAyJ9CvR0*`Do9kdbu}ckQ$j)yuOU&L z<nf<GP3l@CkG&-HM;{68evzm{>R${bw2?^Y@gHLjx5h+$B%VNm$A1#KijZiS2?>$l z@t*{b|0J5^_)U$er;w26KM0#4(UPJ$5-mh%<?6R0pU!cfF($u_L>pt%HYD1T?U3k* z#Iw}xk?0@~%@eIP2sNz}5}j?`1&OY<eh!IlOz2MbAbXO}lfB3n$lhchvM<?>>`x95 zX6A^*ASB*G;zcAzA~D$LE8EWyqt<jJh6*W$Au*g{ggWwHTce|p7>~qgqwjGf#t121 zLSih%ICUgbqZ9P0fQgCZBqUxzVlom^!xSW@(VU9J%f=*2*Mm^jgXYiBNf|Jxo{7Y4 zBxb22b*eLmoJ-C_;#Cc0{tqTzL*jM%^D`zAZy>RN&YR>y+h2slVmeF6rQ|YlIk`fp z)#@BqB5}~@9Ytal6041s{g7Bgu0>)4#X2O`i_qgX8hxAGh{OR|A|y5;u^EXix^$AG z30slSuK)=>u!h8rObCgcjP62Wx9z-x#JjfMg9JPO#9o%#NAAx=m8>6$_mTJri9@XF zF!=!zA0lx?G$)VRna7Ygfy8n3W!-ASPO8q<bBfN#<R|2(8r8JZcFyNWCXqOUWFaKZ zB5?tUb4YxP#1~v|Uy@&uUz6VmwXCky@5uA&=;ZfE{6O)eI@#~~CnPQ-@w2h%K_q@5 ze<gn-FOt8LmxNkSGyh;cf0BP8c^Bl6a#H&6e>6eobp?s5w!VhMb(;T@H<Zbn$eYPq z$b96j<ZWbrvH)3-yj^I##oCg0s?Kb~$-5c7N1e=aCGSPjg(Qs4YmmIpI4~H=!a@oI zNe6{f9m&_IiDVc_H}gHD7s&vUK5D;EE7#hBWJnz;t4@TBk})z)CWLmW6q3&(X(3q_ z$uyG1kjyjs+=pZlAw^Ln@27Y`9jRHP#f?5wkSsx#BukN{ku0M%_nD&KwdRyVvI>&r zjb*iwtRSSQh-4*-%IZj+8m)?C3nY24LUxVhgGjRfPqP0{YX2`EBx@q6{Xg}?NV5M= zvj0!kL9!8&kIJPWNY*7EBkPg%$;ZhCLe|ib<T(p*v|wYh36ebiua2Cl5k7^aZoo)3 z7uv;JBKZu>R!BZg(ORSOk#S(M4V|_b2g!CS<k(%ZJ(8!8?11E4Bs(&*6OuEL?2P0v zB)cH_B9dKoB%_r)hh#TfcSo`Z&7S1*WH0gsvNzd>>`V3|`;!C6f#e{eF-Y$-MRG8y z7ZM;jG-C>p9FF8PBuCI6Nsbayj7D+{#Y^gF@>p^l<kFX{Gl9-TBquR*GC75uYUjKx zIdrCzGsssmCX3IaGn<?vwAbxCI<F%6A(F2lxf#jVk=%gfd?epQ@(o587<*1=kv%7n zTu5h;PU>PVMsf+oQc}nNNa`&KNOJt2<oG|S<9{SqksSXgIsQ-T_#a6<bc3Xh|1&c} zlH>m*$N$MqIdk8F<Y6SYGJhMn9Z9|US97#^JCWQ)e|N@2Qda4^boBmTB;O<VlDt4p zOYKMU0G)#*@Bd965^cBV1NukEqdDz4M&~%Gs|d-H<VQI<A0y>KQt$so@>8VlMDjFJ zw;=f$lD{D-{r@>6&oFw{*w$Qx5Xmp-e5sRK@GB(0ruc^Zmi&%9PkvA8_#eq1Nge+q zsfXZ@)Ptf({z7v6&lw?kQ5>4TBYDZzmyy)*Kazivf02Ka|BzS6tK>EEI{7boLz&WB z1(CX0m{};K@*!0KsaxsaM&|!-c~b@H+)mz+<KKmp1F5@_lA-=Rj20sA&B?isPGQo> z@tt&Bq)EDSqFy>aq$(oiM=F6-0I3L4LHZ#wtPg6IMJU|}sVJQo8PD;PNR>w_Mc*RR zNacyp94%OcEQ-|qj6OgXBa3I!kSf8Pl1P=JUz#jqN6R8rE~DvJP@U-;Q<adaiBx5z z9z?1NqgBajI`?eLAEHy8tdZl_qN5vt9;Vap>k(Mjkg5Z#CsL2XDvnfLr1m297*g|) zs>huANKHoSaisbo)c~pXNHs*NF;Y)3+Q@imp;q|PLZq6|c~U2}@}@{VMbV7ZO&zHg zWJ|IY`83&@e1_!x^{KYh?Z{_^nHeF~LA6%Z5vfkL?u=9yn%e&(^&Hua>`t=(PxYi` z|DWnb{Q}vW>_ck*Z_legQsa>tppI5M5GnTms$WEk{eNl*Lqo}7<ZyBXIg%VjjwZ*D zFOg%(aYB2J6X;ANCuK|_Qd5wciPTi2W+3%4qtnRgIXSP0qoV?C-Yk;+e`*f(+?>o; z>AZ&2E~H*ZYAI6lk&?N*L4N`Hrm;pBL5S2MI*Z9AIsP)Fwjq_-mR2zO7E&v<lnm_U zirmyHq*l|{{-4fTq}JJbJyIJO)&8GRz5*t-38~HWw~$*iQR?mF4svHsOLo(FhkTdZ zL%x@jvk$4?klIiG08&39br7lJNWG8L5u^^$KTLjLta@F95UHbdJ|vIj_$QG14ylv$ zKO#>d^|1)e(Sn~K^(p<+<Y(mP<Qej;keTO@`hw1v<X7a^<TvEE!py9ZI!}lFf9i*f z$x1HJXaApK|DXDW&aXK+7hy@)`a4oLkh+A_6{IdB^*2&~F!N9HFTMFiW|w#dsee?+ zT|Bx)T}A3TQrFbsp=qT4&7^76x(QZ6SU1DU59=0K`Lw@cJ+N+t#apW~by@{-O5G0Y zPFQ#3ICtgfdsuTJ@?H|K!m!x?TZLg6*<@*|<<JIOPFU>!E$#p5xJeHz?f<ELu>7_T z&<T<uq4=;OWE55`lg4PAOu$Mqs{KD5i%i4Hvz;QairV^qMs-!dDkfyv60jP>DhcZ$ zSf%KcCd<I8467`xim<f*hgF`eVAR#kPYA1$ip()Os|u`Yu(bcz%MUdFLDh2HUUhY{ z2CN3KYQm}us}?Nj>K~?Gn|#E0sDub1tVdPIU|!2U2CF_S?f>;3y*iJpmUF(U8<H8_ zNd0W7Ca~JW(*7S-Q}QWTvf#~NJq@cltX8mE&~KTkN-1xC(frmzTepGL4pv)rGFzI( z{y#gH4$SXJc7oLnR%cjUVRg~`Oz&qs$FiAaVgGOSP)DvG(|J7)YZt6uuqMNL0oHI> zz3H?6xB9{w0;?aa7h&~>H3*jW|F8z?OM9gfVYbcM|J!;fbB3vtZSx2^?EkG%uqMD7 z4Qm{%G4x*|#~KwM(;^jRg^yPu*XQfJCX$oXk&aZIDX?CJHI+KE#-_oV18X|0S+Hi% z*Zv>YOyfy@aZlERHCr6J&bf@vQzu*JYjj?R^%ku8u$I7j1J)u~?EkGd8C{s!{e`f! z|IhXY)>2r@VJ%Z9ySyt@XSeW`EW3(i|8K3KUJGlTrb(Bg6|RT1Au|a}?-qo$5!NQ# z*-U2(xfRwn+ush0{lB#{Ta_;LZdjkgdI#1~SnU6;JrafW9<0N#_QHA});?GVVeO}X zAoIm3v)|?+tt~UkvOZwW5p}Xlr#m35W8`sIAHzBU>myhvH7C2(ol>2x;S*S=VQK$w zN45XA^%+>dz&a}qtaGq_g!KiiZ()52>uXrr|J#|`|Lc(f&HN75_pr|AM1RQ97nsBT z-}*Vn|CRo4r1bxP!TKH6AFwXLx}0gPJumJ5?S1)gSXW@N|IaSn)tox7OF>w?{>QqZ zI?clZ>6@u<LE4XWKBP^gZ$;XP^ldsLP0NpT0b3VD`gWSU{wK}rf6{vW57Kv&dP))L zLL{&MNrRf#|D<{SPny^Nr1knAT?);2<!Cq3UZg!ajxR?Cm>)zsjC3f+kL2hW($63r zNBU8u6G)dpI*IiCNT-m_Lt1Z+LprVfm|VcAx(HcR9XZRU&I9_C)O0cG;_CCY7f6>x z`eCH?fmcYECd-gz$#Qz-vt0I^E>BiKx*|m-vNBnPtV&iRA0!_ltCKaznq)1Ze&mfC z>DrvjBV-++KBPrkQWxo_NI!;jBc$sg-2iF5WgF?oHAjATR5v8~nxX76Hm1{rd{U?n zY0=E5kZvh^5Yo+%Zce9#Mp=rJt&rABK#^{(zVz^_+aNs^>9$A@N4g!-U66hj>5fRZ zXS9Q6%ALrX*@^6|j_k$ibVYgy($7(MBfFD5BmwE3<nv@N@&&Rt*@x^)_9Od~1IU5o zAo4{a#o)}(0n$S`mtjKtdmn-HM5IR|JqGDfjE>HUzJ&C6q{kvXF8dmk($|<XK_}%B zYyFNU>D}n*$@HgaS$Rl~E~6~SYe-K+dM47->C7Ns(H!a9HD?ymbCI4+JxBfQx}8Ud zFLRL_-ZfJ;&c#U2hdl8w{RW){nlESJHM)>oq>lW0s<Q;?l}In8UPdk__5F|XLHaG- zeN?QXznWY_t|ixz>xC2>kbawDBe{v(OzLfbNN+`Y55+d5w^QsudN;*Rq<4wXuR}B6 zA>UPpCerWG*-P#t_mc;NT1wmbKHe;j^dS^ofb?M$xq<WtDAEJzBPh}g>7ytjJHm%3 zq8Dr+eGKX2tl<QClH~c{^eN=Y2LCbAJky%~1nE!plxvzNf772)e@>nu&ywfJFOa@~ z^p{9~kMvhae~a|jNb8wj-56wl(R#i^`n+EBF1xBY@;s&V5A=W3G@3~B<Zt?C`oAFk zt8Pw`oUP#^@?_Wk9eL%EzJxsKnJ*(xwy{5uzK*n>{6+dN@^A7V@(OvCye8C-+)9)F zm(C4k-c97q<Sk@A@>ZdKWP8rbkGy-3SAc#&@^<nL@=o$DA%#8yf}#+4FA4HKvM_0o z4xxT@E-vJykY^$<ggiH+9@0ztNIw}MgF^kt66J;IM93%^BjaR(ObYd*`4;kuBQH%q zk1RqKCGRJB5<jn)X#HrZ67)-wrO47`8L}){PN*NvuRy0FSqXVHkyn|z3R#t`Mm|VB zL{>*$4G~g<e)K!4Me5%N<kco0A?uL(3P|MD73xRlTaQkC@^P{O*^tzq1LQR#8<S1Q zC&{Kl{b)VSP~>*xHAmhm<h4NFo5*X4yrIZzg}m;_dm4Eikk^`}o*~<iZOL||R)xIw zLjCBs+>uTvvNPF*>`FdIb`$DH^Lrq#AM$$Af1d0`zCiXS`;dKw`q5JT=?owTl7q+> z$-(3hp?)-f81i05-f-lNL*58RN0Ot+(c~ENC337#KU#J?oeAVbauPY2oI*|&>PPdZ zA#X17rqiE6zCz9<XOXkXIYRwtsd;oV+rw+ruaoo1H^>D-{b>F|I*T$6@)jd+37w_n zGIBY&f_#fyDb$aC`>T=nC-T-H?*#JJBJW+~twY{c<gI7s2J&rkBe{v(Ol}eCM_aOu z&USJKxs%*Q?k4|_tg`@e<mlOOnCS^K^V#EJ#tSnuGxHZ_W@ct)X6EDq7tRIm!puzn zw5G@Ft-oqZrIB8}Qulb(J?&ll(ORk>mG^N*JkN+H#Qvnnr$jz2@)?oOihQn?>PJP5 z63YuBUljS0$d^Tq7Wqmo)sMoz#)wZC@j4^kW5gTceN*IHBHtD{M&vsp->s$ksXxkN z#QS3TK;(xa$BG;$@*|NS*HZncT%R)HTSj~)_RmFrA@WO+Uy1x$<TtfcKPu`wv3xJ` z2a!LD{7K}`B7do+`ce4b#PYkyKj@6lh(AUDOXS}o{}K7G$p4h=j8{wbQ!{iX5X*!j zClWca$Vo&_Dsr+~svm`)LM&5?oQlpObf%^=H=Swd%uHumu}>!wk<*KuLF9}gXR4+8 zQEan_Wmb{1iJV>J93tlwIae*!PyM>;%p;b0Mb0O3evu1^Tu|gfA{VZu`cYXH70Y5G z7Z*7~WJhFIq#?3L$D(7ZPrs~V>rcPz*o`7ymrg)O_WvEV|5vVhC({W<Mj~U8iBy}4 z%tYoQ3z4PBO5{k9ONd-j<WeG+rn5YqWolh6m!-3u((9z!vI3nI#kG>M)DMGdepaEg zHl0=J)K#q}m8`Bp>Jukb=b9qb{$G87QZ3cwtV2hAlop-!`gS@S(AkF0hIF=|vk{$5 z>1-?*wUbv**$Tgz$j!wf&jOt-#nQ})+W*)5V%e6?j_N}oJKNDw`+qt+C~y7mZ?#mH zJJFH-e@E^ATmIeXd`4$?I`7ljgU)_*{zqqTI(tgUUJ6-nw^aB(BKK96X5ZV{pUyjU z<n#YK2hw?h&OvnQ!5&QKBszzvon%M8|GgvM|K2%VEJuix?|<*e_rG_J7K?oUdq=+i zy(8cM-Z@_ECx|?;mMU+vqwbt6M)?Z(j(i1tM>eh<`3m@s`U-eDXNr^$gYBFxy829V zI`S3po%2MOuYm8UuYj+~>B#rLchvX4)44?Cr6T3~-#eF!F5my&k?()+Tt(+WI#-MR z8ansTxt7jtbgrXwGo9<{+$gj+G?mj)-~X;AQ1Pqpf2VV+vgqu$i{%bFcPf0nweH+S zM}7Hw{Vg8qX+`1H$9jlzAD#O}QQ!Zre(GNn1(2_R@5ooccODUod<A?*eFZ$7#}!hI z^hvpVO61cbpAq@2$mc{pFLIQ~7eu}&vflr{F3QUyN7H#llvish%4_<0r}KtfzA5r8 zk#CC}Q_B|fuDq_^Q`6Ese|0{f^C_JV>3l?Ita!&MZ#@a>b@;K!Pn4zJ;n%YMQqlTT zQahj1`HjvObiSwaC7o~Rd?iTv{@><Vuk)=~zEe?k0gCMhIzQ9-QS_gbU4H%P{34cL zl|}!4{Z8jEG1g1KpUN&z^y(bD^EaJ;#P#nGzB?Y>Rq2jTcX7HC(4Cv^gmfpRJCXWK zq^{}=bk&G-f9p<0cS^dGi+zd#o~hI;p*yw6X+%ydaypUfbt202bY~Dn{j(w6nMBSk zau$)Zikwa4>>}r=r6_aKovYE+Yoj|4-G%ASOLqaf^GQAPt9qJ_RDS@ns(c}3Y0ezF zi-=`Wk&7w2+!wkd=q^LIL)WCM&VT3{B6|v>*(|zC(zV6zh?Mi6uBZN=wCjruM1~?G zk+H}`WGXTfnTsq$mLe;WBWo#2{S{!>)Gs``OG&P!2P#>X?uvAm6Z`Ta<?C+ie}t53 z>8?a~WwEcKEPCv#(cP2o>U1}wTMux3x@*#1hpy`Xbk}ZTMVJ2HmHywn_PQI;-I(r% z;@wCgwOvkfx|<GIHmAEA-7V;DO;`GVcPr(syM)T3&VT4`D{?!L(*L`v|I^)3q&oi* zWoNpo|I^)7S?Y5MZQq^l9%BEWvNUU1cQ3k!(cPQwL3H<_yFXpk|LN|hF#0YZAeIA_ zMc03@yr|^-r+est{cyVH(>;Rjk!|Hisn5`>KR~a0G~HuFIacIxB99k&g2)p^o+R>Q zk*A0}Rpe<RPp_pYXV5*9?m42@zYAw8dtILPo-6kA)Yw((3+P@<_d*%PMFZ7dB9=>) zrT&*&HR{Vb=Tf>?u<m+vucZ4B-K(f~t=+5X-bA;4xn58AT0vf?qUv)+6(#3>-5Zsq zIg{z$O!qdra{kj*=RfW5!tH{;Ls^=h)4hxCgLLnvdmr6<#CxyuHhr>tzgX1yPs32Z zFCdnO36G@v2;HaYK1%lqy6XIgt~xSmU$;++<tb&U-=U~w{lCWDXXrjF_UA-CFLD%4 zME3>EL+HLp&!PJgMtu`s#&GG5#+aJ!D|El3`zqb{>AptyZMv`1eUq;IVRJpt&AS`j zx0IrO`^M0HSG|kTeW$g&*C=AFEBS)%hjc#`@L0Oz#Qu@Uk41h`OLYeo$!Byw?_WyD zmvq0O`xV`<2kioue*soe-(yTn_Xmve=>ACeAG$x${hjX5O$c527vS!%Lik&o>ks8s z;eU$!OXT0msK)g#-TxY0Ta58BCc>BiL*D;wYi_-hU`&BADaPcr1!J<oSg}kga;nCT zF%8Co7}H|RfiWG%%ot$IfHA!SG&R&;HDk=w=(=WO7L3_3X2qDTu?$L#IWgwPm<wZ` zItpX%mS<j!`G)f>pe}Wmg)j_^g)v58EP}BZ#-e?1tzay!vnaiT(QN|7C3np*F>DNL zc$CxD>|tz(;bW|b5nwEV5n^N*5k?{;aYKlq{{Fw!bBt2FMQf=r)E|E~m*QFyV;PL4 zL|<Cj^@x_mkU#r3)SrMhb`1G1V>N`8FjmJ{8Do_J@2VK9HQ}|ySOa4%j5V9s8iuhp z#(Eg*V92L-4CPuML;m<vQcLVc7<*uBjIj;%NBtX{VQf0UvpL3A7+YX$sf_J#Ft#4R zY>Tlo#&#GxVr-AG!yvNOF?MPKF?PY&4P)1V*xi*&XfbN!zJlKqV=s(-MBiH{)pNBU z#=#i-V;qQafOhHdgIb<LFb<R0L;JB9hpVJ&W{$-81mh@-TQH8sI0xexj8id=#W)G$ zIE)h{_V||VL>1VM9phy2p3+z_PLs>iG0qg_jMjb@#@RZ%F7I57D>2T)xESMn4E5Q$ z7#9pwcu^aB3C3ko>ZNTBmt)AAze96%6~=WKR}0BC7}pNZbv?#S7&l<t*l@NyH|tB4 z`c{k=FmA(m7~^(~dok|7xEte6jJpP-B*i@~!+jVJV%(4M!2iQM)L1Yc!FU?uQH&=r z9>aKicx_K&JT(}L@eIcE7|&unr|m<tJ*v(7BF0-7FJZh=V=!J8IlA?}itz@<YZ$K& zXMVF!i19YY2N+{8-o?<(Ur64=cz<|>A7XrjF&1Oopk2Uf38;-2pVFHY<1>t3F+Rum z4&w`quQ9$9*jEiqNmZ@-PkD^C{~O<9{3!Mx8W_e;7}E2NpBqb)m->TidgEdIj`26f z9~ggOsOCRd6~;e8^)E)-|C`raZ+v<aDOYa-dK0Rsrt;pzVw|M86n!#!bJLrg-t_dQ zpf@eODe1MHzc)3#Y5HJYSZ_LdD5K__f!=KNW~4VWy><yusb`@#tB%!G%}!6f?MrWt zJ}14oTAq36ElzJ<dJEB;kDhA#^yDpI$whC$7P&Az)%NKv(w_}_i?!vApl8tQD6qnG zTYH_?Y;}vC-H#QROK&VakKRf2e0rPF3+SyxFQiw|i|D2Fr1>jOwHDOj^fGz{y}ZfQ zlB=~qyd&u?LvIOs()N2xw)TPk-&>a6^7NMLGtgUs-ii&fC0v=_TJ%<-w|Z@-x2j0_ zFFAF&MiWbK%@)5ly$$HCLr;B5Ha)!x&|6<2^}X1T-X`=mqPKBl8F0zJ0I0yt>FrH# z3wk@z+mhZk^tPfW&0k3BKziHK+n(NbO$}n%f!>aTob-04SF`OxZ#Q}a{lB+6y*+eZ zUDclTCB3}{*!H1!1igLf9Yk+GdiytcdI!)uaCq#&^bVtU2)&`s-;_b`@K!mJ-Z7Hm zD3M3EY{$|&UM$D8mJ{en^REljwVh1wZhEKCyOiFk^v<S!BfEDdz0*~QD*KEUc~)bo zFX^2_?;?8V(mS8tc@4RMFQBJZ0TrV8FBbbH$|!bvm(jbC-sSYJp?3wnD_i7M^sa97 z)^aVq>*-ym2~{yS4Dj4U?{<1O)4R1c(z~UNx~-2F`yKS|q&KYp)4PY>XnOb3dxGA5 z^d6>nKfMP9|A4MRaX!>?K0@y?@jlvG9`9$N_awdN={-g78Noc=xad7g?>Wt;XJZt- z7X|Y|i+PFO%l(YCLhluNZ_|5~o@({<UZeLqy*C<sU($Q4tz-<n_vyVuPdx>+#`hYX z-UmuiJRi2MahNf^k1*>t_%Xe|=zT)(J9>5h|B~Kk^geH6zi48ms;}sML+|UxC4|!a z^|-#L_ba_0=>0_R$0m_P{Y+1-0s~RM(fdPOzc+SzL;auL-<T88`v-FZdjDdMC&+dc zs7GOrucJ)q|4nvtV$8`@N#-P&ld4?JE6to7b4pD0_dl&=sz#|L<}{cKVNQ!V2j+B` zGh>1|gSgb60Esdqru^|we`3v9FlWP*C1A)X=WmL0PR#i+=fa#v!sl*z=Ea<^Uxv8U zLQq>U+x~AZjA>#ng1I>6qJmjWVKi(6W><`zmeas&CstQ$VfvUhrqf2bnBMTb0cO}T zL=8-66U;3!Q_M9mGtA{MbIc_%3(QIYZT~k%VlJUMb!|&wE+ZIO0(3FzU%<q;Jm#vH zD`2jSxgzFDwXt6kraS@&Qo!mF08_09H3oA{%=IzX!dw?~ZE>xmT-vJ^f;P(rn44g3 zh`BN5Mtw}{-4t_k%*}@ED$5ov&sLawVs4GOGv+p!J7R8&xjp7k|F4mlLr(#i?f&1~ z1#@>y-TyInYdO^tfT>FreJ{*?G51yg<x<ZAGRFNd55$xuK-mvy?1DK6^I&zUk%wZv zi+LE9hj}>W+n7gS-imo7<~f*0VV;V4H0BAI$6y|Zd2BO$$s(J7eMe5jJQ?$(ej>?r zN;_AlVV;Sp`ak9weGI1R|CnbFSkA?~67xLFi!sl~)H{F73o-T1zva9H^K#5fG1XJR z0K*kZ*Q2`%^9IbTF|WnEX25<O=Jov$8Ox2BH?_<+W8N~{dmHA{n73m-gn0+%J(zda z0L;5E?;ei47xRA1`;<}F@BpS-1r)iStA{Zk!+fN{V7C3=d>r#h%qKKh@jo@7KZE%a z=Chd3W6C2y!>M4SFzfRlwF)#TYKi$W<{Ox!F<--c1@qNGZ>?jtPXS7Q6Z0(v5C+UK zSaqX&2lIQ(`sMK{=6jgqFyF`g5c7k67U3D&MtvlgA7g%^0h;YIOtsa={2cQOOtty% zGhlv=`7Nf}{P&|UziT;v!2AdEN6g<af5Q9)^XGmz=C1?#@0fpK{((8v{2M~dzgy*B ztO+sy!x|rJJQdqkf;EB0SQBAQiZwCTBz<q~!kSD0nmcGsfi*AIlvuN1O@#&4)L7GE z4Lt&2P1g^{njUK=tQoLo)JEYE+L>F<S+VBAnhk3Xtl0-*)q}vmrRx7!YAq0DKCBT~ z^J6WBwE)(_SPNn;G(2PxEY<w`My$pAmslMv8>@?DVi{ONcR~2AKC)J@)GC1GHdI(X z)^S(?*2Y*N)(Th=)<~=vtH4UIGOScFwArz8U54T*vD8A)c(IniS_VsP{;`(Al7Idk z@-B<DT#Hl(L2V5yVy%s}64q*1D@*JuSgZE4)C$(>SZh*$*mcV$#<g0ub+BarZ>`%} z*2mfqYlG&piNca4K(TFtwHMZ=SleN3hNXHw*5+;OmRMV3ZPi3cqHVCYZM-dJd#qit zcEH-HwqWhp+IPm<WjJy-tQxR8)*gC9&5J=rsYd|e-y7=?tbMQ!#M&2Yf2{rbBv?bu zzcykWgeCo7c(CgJf27#!CE#$ZBl>~Dd=%C(qUim<AoUV}bv)J`SSMgzgmog;*;prG zorZNX)~Q&hC@QJ2kyxi=or!fu-;SmFe={zubFj{@FR{)Qd0ykfx<D>3Y%WE=80#9W zOR%oQx)kejG3r$SOZxxNEM0|l^+4>kST|u^hjjy%ECG5BZydnfj3xVj>z1~*+puoe z06lMaVm*y@7uExk{cfy#u<jH6-T|un8y)LGtjDn)!g>_zVXQ|Q=9XVQ2(<bWSWjU+ zsVt3AXM6_hRjg;RUdDP3>jkXmu|^HYyomMEaLefW66+OhRQhXJZ(>RFSC?-zF08k( z#t8UrU7Pa0(^mB!cKw_FK6Xg`PJ}%r)`wWXVvWW625TJFXILL$ecZBrf~DRa7|8oM z)>l|xV72|f^<sV9X89KDC#>(VevnGOAE@NV0ji(H`%7cN`VD&mtlzQz#rgy5FY*4_ zdjH1yr_o!>e+poahpl)1+HOyXJsI{y*pt+Gu_tcrvj1<YRe_UB_!O;oD(v~Nr^cQc zdm8K+u&2cad#L{lzTN-ZGs@*mDqQX__AJ<QV$X^_ySUnS0aUIz^vu|EVb9&-=fR#= z&rI{$u;<6_VlRNbDE5Nb3uDU?FjVs*ZR}#$9qh%iM>Lk<JO;LlU5{P0eQdLhva$8a ze{1ms;A01krL{-cn`6h=t79kF%VMY4Be65=LPF#SNKJ2vEzQ6GGO(AxUP@+OJ_14& zur#*(e@gR<pe)N_uY|ok_KL!$&;Q$5S{Zv)>{Zm|5N&(@W3Pd|zC^8wy%zSm*lT02 zqmlYvtk;jl-T-@J><!zY>HaSan_zE>Et~%~7xos|`(SU0y$kkM*xO@ojjcLA_BJia z(EcBL2W;v8cH95$ofS-1vMctU*t=oZ;k#qE{lA$C86Eas4IW#c|6}iqeF*k`*au?o zk9|OY9%>}^LCq!h!L4#A_R-jfVIP5gc#~R?M`Ej!pMlvpM(oEbqpt9H?2oWdz`h;( zMC=Q(Pr^PG`(!~%|JQY%hJ6n9>DXstpE1C27Iu67uQ|`fmQ}z$ug#+Re_QQE*w<rU zjC~dMCD@l^Uy9xC|24xE*jG0Amf>pbYq75x;JI!<zXAJZY}Nm<Z&G&6a|`xu*lHnY zENu;UU_Xa_C-x)QcVXXGd$I4vz6ZPQ{Cd>)V?Tub0QQ4}41#~Sv0y)n{Ur8d*pF+B zVtb<XK85{^;Gb@@KdW52!soHyz#fG?8v6xo)%mesY>_VyAYZ|LwY9&7{d%LfmN&8A z!+s0<9qhNU$29z{_g#Id$m{+;7Q62M9}dTiQ(!&nk8!5L{sg;j%b#L@i~Sk)m)M^- z^<aO|BITjL{u*00|3l;Y4qJ75?C(XYwV)2c{s~*1{9ymwGRXd4dw<870Q(Q@|FHkW z{s;RnY`ybu@&7h8C=y5S|8d&$A7?@w>HN+_IJ)_(0-Q;4rofpDXYz(e*W*mtD1w<9 zXCa(vaOS|77H1}$>2RhOm--hlQD(rIu^%Ee%#5RseQ;)JF|*<5lb;5OGbhe`ICJ65 zBgppr#~E4zaOM}+0yqom3U$VXaZH>=a7N%PilesuIExL(bZ`tDefTd`4XoOZh2!Jc zI4+Lb{Hq^Lu9kpS4{*Z17bnL15GTRC5GTd?0w=>c3n$0f4yV9b3#Y_c8K=To7H1^R zQaDTC=+56T<1CHS_W$NCJImp$fV2ESt`%`s>Q^H5uY$8W&Z@N$XSF_3F4w?Wvk%5u z8)p-ob#OMoSr<n=1+*hlD}}Iah_kW84)uSrZ;B&3e@CqXIPL!5*%D_PoUL%S)@*vZ zw$+ykygklgI6L6%g|j2hZa6#PNb^^(%w2GH9Ui+o&Yn1X;0(=wQ>Rq2H_kyg`%r%p zzOygRe*Hw^JpkuG4IUcZ!8nKD96CJ9;W#JY9D#Ej&XG9B;2ec>^l*&ye;HA2$7$dH zbxy=N9p@yRQ*lnlIb|>-&S~mW&%+rKc&4URBxmE?i*pXn^*HC^T#9oZ&V>S#wZPF! z0M11?mx%r1;ry53T#2I|1jKtqo9ikZ)%J0&RxUNS*Wz3^JoW~hJ8^Erxdlh{f1H~& zK;du2Q9FN}+gi>$8Y(f~B~l#$;oLJ|zYpgXocnQ}!Fd4ZahwNn9>IAC=ixrNL_Lc0 z*zkIuz){COI8XNNIBoxTp2Zo3^Bm6e{d6@9=LMXXabCoEsUIcw(F&%={wmIUIIrQ1 z!Fe6$Eu1%S-qbw$?!4W{*9y)%BHwK|ao)%I2<HQwu{g2>Xy$R6M1_2e^BK-3IG<|c z(5vP1mgh^{`WN{t+*xtH#`y>58=T*8zQy?w=R2Gqq<Gc;n-IDD3FjB7=jX<bqyG3u z161nYasI&h3+GP-Xk&5yZt?%(PKom$?!>s`;ZA@%ejkZDA?`$dHkHwx1a~srNwrZ~ zCdbt~|Hg<r74G!7Q{zsDI}Pr%I&U+du5SLqHUsWVxHAqF=FW_(JHM{boekH<ogH@p z+&OUP!JV^q;m(DtJAa#ZUflU{=j*ez_62cA;4Xx_DDJ|zi!}DuyBO}`!z~@$dR$#x zLsRL>O<Ze`9M{23aa~-s=f{;t0M~CYxFK%c@FU!KkiX5F;Vyxj<CeJUL7<JQa7Q+J zi(C?S>Dq#;o&`i%23Mc_x0dB`cfnl&cO%>tao50I33qkem2su*yQ{SP!}@<6j=LuA zy0~lMuHCY&qrmcN!Cen`14*j;zl3bqdN;=13U?D+)$MUN#Z}F}@d|Pa+%5H`0&I=D zJ+9jP<8F()U6ZlRy8~{!^LKZ`-FdioSKOm;cf&mZcX!;qareO86IXsCWM+hRua<2e z-2HI(RoV4e_HPt{9f*4f?m?m-tn3<dDDDxshvBxH{~_ihTjry2Pr*F~_e9)dagP_0 z;~EChPiWarQi>Yv$!+YZxaZ)WhI=ON>9}X;G3xAR;kNsKeXq~OJs<bHhOlL8`@ee; zUj2f(824M;OK_jWy%hHj+{<upz`Y#zD#?BY?v+h!oeuYE-0N_!!M#?~4vq2p#)5kz z?ky54OMt7F0Nh(~Z^yl@&(@CXPTc!(rT@Ek<KBxa{a?l<N$+c!AHaPC_d(o;8jEDn zs{rn!xKH3dhTH!APs5<+=PBHGai7M08TT37=W*5kANM&$r7@#$U&MVu6{hF#rN$-5 z(YSBmzJmK2?yLPMalPKaaNooogZmcl(8-SsK{fvt^B(RexbNeR!~FpF!#3C00nA6W zj;oJ=ME?}`3sFA9mHof2u<rlg;C_XxPkt0hb5qp)`VJ4=@9`$a{Q>t++#hj&!Tm|7 ze(r;Df5lbr`QrZ8*7Ju_be6yH#>f2|w{H9D^B-FKe|Y0Hx|Vg>-UN6P;<f$1Velrw zn;LIYyvgw<8_MfVfj1T2lzq+t*ED#t1Srnw8av+fcpbbM@aDst5pNE>neb-Cn;CDG zer(N#Hyd8N|JOCli8nXiT>XOa=D{1<{MX@l^W!ayw*cNkcnd1R!TIzS!CM?}QM|>5 z+eh>-@w#|Eo`L7!)n(XtCZ5$#+DFz3o-0zn3yc@wrFbD;z3q<_vdxZ{Gz@qdUV)bn z_m&M3ZzSGXcuU~b<V)ghh_@8p>Uc}zt%$b_-tu_M;w`6{WoBf$^!X3oN_eZ{t&FET zzph+WyINbr8hGncf8L$9Hr`sw*zhQfECFi%)gu7j`gp_t{?pqCZyUUg@wUL*1W&bn zyiIjIN^kf7-j;Y<<89S<H45Igcst{5hqnXX_Byr7xFg<9{Yq*DZx_7Xgn!q@j<-AB zu=5|hJ@Jmf+Y9eNyuI=E6Z}3RWeHF`(*IR$2edUDgm<W5)DnPqNIx&$VPes%0N#;! z$Ko9&MtKBKc=cX@SdPOx1@Cyg6Xo)R)_xM+$$idR!8;Z2biC7QSc^FW?@W!+Y-i)$ zfp-qxRe0y($<E(95AS>-zn~AstNZ`uco*ZTrvTx<6t6x18M>QSNT4hMs)noaZV<~g zc-P{oo{!f)1?U=X#Jd?!HUGBGTkurd$GdgFczf%;6YpufyYL>uyBqI5Jk|g4?i~Q% zkN2Py`9R+&mk;ATf%gdBV-oUc<HdViDSBK_itDKX%QJYd;XRA@65exoFW^0oH>$z+ zCEkmTj`uR&E47X{dcfPB0(r0Fy@U4#-dlKY4glW98>27v%)E>D0p5Ff@AqM960~<L zL4-FBzrKAR;n%;gALGxC_X*yAc%S0^i1!)Z*La`feOWW$sTD!y;VY$R{TsaR@CN?= z$NL^nJp~M4e!}|$?`OPU@zjGr8~Yoc{>z`%@+aOucy<5(yRm2<^<wx}WBl>(r@<c| ze=__D@F&Kf5Pu?#Z>sVq!Jl-vWpex}YYV=93c#NVe`<|s=ER>Ce<u9t@MpjWU!VLp z82lNPqWNdWpA}!00BxB~Q>hel;CuLU;xC3j7ybhHbK}oj1Mt;ZkeWk(KK%K0h|azs z{=)bR4Gq~}1b@-~rGzhzZ{m-@H}E_7UCkhz0%-5AZ{e$BAAGxy!FL-S-^Y*f0|A60 zqXAfgKN3I1FYq(`_MKl{XNg~Fu(m9Lzm$+H*(Z@PE`z^2{<8QR;xC842LAH+E90+# zzY_k63fxq#c~-$+9e-7P+5Fc=u{RQbP5gE6*OEkQ_Y>i-i@&}Y*BdbERRDh@{O#~J z#@`Zu6a3BarTOc-usQw~I*Yb!g})8{)&o@A_RGNE9)B179q@OOj61fq4Lt(j@7l!T ztF@p8;O~KdBz}D_4#wXTe?R=a@TKSbdk-Yqx5e*|e<1$QTLAd_{9o7(!Iz%zs}-Rw z;BfpS1}=}nKN0_E{NwPCsqOg3_Pug>Jic!J!g&(@nfNE;pN4-5{;3+Q@5|}<XEcc# zJN{Wha<;nEV>}nXZXoC3Ka77q{*Cw-;9rS<A^v6f7vWzbi7syOmkz{UUhDX(`M2Jy z@a6o+zq%dZwfNHi>yMMw8E;T7UExjmcjMoTe+T|8__yKT+V={%It!{T_;<>s+W)t) z_u$`;f3Mi}=3jYLNe|#Zi2qQ7Y(nrK!G9C~QT*reAH#nd|8e{$@t<g-B+Eem_n*Ok z4*%J{x6L~We>DCJ_%Gp0^B*ed<reb_{_FU!;=k5p*HR7SjTZA3zUuJ!Z{v@_e^+#Q z1W>T|RLBtX2lyZ2j}y$;hM|`D>JdPcPY9;O{}lf({Lk=z!2cZoYjJ&n|0TXO|MnLX z{~P@8giV$J$%X%Y%l0GwZ}>mq|APOsG7eSpYm50E|Ib>-mq&mWga0?dr1<|3Oo;z4 zLEZ5GBWU;k!b31YpOauBf=LJ_?x)cFf$aZl{$O&IC77ZaHNjK_^ASu<Ff+k41Tzp! zOMqaeYcQg>@BaofDni9DlTzwQ3udAI)Pi7Ef;k9gBbdFhx86DXmjrVYw4Fat3qf1M z`~(KU0tAZ^EJ(1h(CQ_CVCV>lU@?Lbbs&L01tRDWwEe&NEePt8TmqB8A+QMA&fnZD zU9(3ZZ9nka8uXulO6r*4ErNvLNP?7LGlGm@6@r{#DT0DPb$)`f83Msbxm<!^c;^q6 zCRm<e8G>aSq`;PIGp<0e62VaaCs=s^wkp9of?thbb%M1B)*x83iPciopqBuGbqO{k zP|crUeS+cp|6n76O~keFKnhs`)E(TMU=M;V2(~8JQeayRz_uaSkziYb?FqJ1c0GqX z4Cp%%>`JgR!7lwknaSM<cJEg!mb$!y2=*k{hhVQ7Od!o)bM8x^w*3VAHBkfy5FDsE z_5D4V;4p$i1SZX2V&zi({XfAGZR}A5Hxe98a1OyS1g8)jOK_rKjw3jppl$v-`$<A_ zvQDSUIF;ZGF`h<n`hfjRg0luL^(hd+xdfLHoJVjWf!hB|>;(;y;35Kj@=tIH!KF=| zZMByZTtjdL!BqrTHnCEwKKvJ|YYC+P2fF`@QI-Hz?M(zv5!_7h0KqK;cM;r5a0kI{ z1bXM+R-*cUtKUs<AHh8Y_v(6v=JWoxwg(9wm0S-IJWTLN6WcO8M(_l|(EeYLPqyBt z30@|6hF}zd>i-1K5j;Pbi{J&Zzew;>6V>J&P4F6ldJqsmyZ;Yfm&-Q@-W<;JHeuaK z#t=?S@D9Ou1n&~m&HO!raRl!Zd`R$t4pA?au?=&ZPW69+kCjn*KPC8*;4^~HTgw-X zBCxLrz9IO!ZxQ3S%_YJ21b-3yK=3QUj|4vxsPmsT(Juq~Zv=lx?C))?S_oR?-vs}O z_a6ei`B#_Wc!U!Yj!!7fzy8%|`y1gznkSruaCX8;2_c+}a7see{3X2I|A$i%PD40# z6C$o@35Pnrnul<DLe=dFXAn7K116lAa8|-unoA`WX13Nl2jTpLa}v%&IG4EQZd^(# z<h+FQ^(}-85H3o%AmKudk#J$cq2@0kixGAR7bjG!fEses6T)^0P_%Wy8xop?OA%Ux z3876G5ITe&p{oKVme3#2L&8XNDiZxJ0AWhF1Yt&466S<OA0snU5sqwXXgP<L0K%mS zSEc?S*>FX|WeJzBF@(#t$Q6dDlzk<_l?hkTMm?_82-hK8op3F}H3-+#xrXj_+yBFL z3D+l7{lA@)4F>d$2zMpim~dOdO$axyU4)wwZl*ALHnt$#ns7_Pw)qcbQEvgrc()_m zk#PGaig1Vi*a>$c+?jBA{||Q~+@ElF!aeH{!aYRxGwwyWFX7&V`}BDv%YF^N=m!uU zN_ZgQ!4i9ra_PxYOMqYwBUGKgi6U(Ke|Qut-A8ydOVlrzW7MY&gvW|JPUP`qZxEh9 zGJ^0#qHhRKBC2oq$%LN}o<evp;i-g|5}rnQj{1_#@N~j62+tB-PJxv1Z1vHdb#|qn zOL!6Cd4v}bp0DiUBD`=wzqru})w4jY6JADm6XE5A*AQMocopH5eY_0tYIUi86R#z_ zUKBb1QL#4=-q?6s%*}+i*E-=XgtrpPJHJDf+(CFZ;hltc4Uf7<UFt0Lq`gRZKj9OE z4-h^qY!8Z*rvOF%2;pO5d9;msyivsXB;hlJPl^7t8m1oUvxK7vpCf!;gSGvIf!LP_ z>o)!};cF5;n)>_b!&mzN8UE{ps`C@d{$DC5e5=6_jv@Sz@EyYU3Ew4rugR_%RMZD8 zaxCFTgyYnujJ=kGAGg(hN(A9&g#QwLPWS`i7ldC6=1an_214o=&v%61DvR(Cem|i9 zNccP9PlUe^{ybp+mGHL)-$wmG_&4F7gn#Lp_5A!Z5cMC?)I{SEO-eLA(L_WO5KTBZ zMxu#{)ZYU2$%!T-nv!U8qAB`DJ<MpTR#C+hP21!ml2t%irYBm2Xa=IWh-M_3jc6vK zSp+<DpN(kNehoyk6U{+1XWvpQL~|3(Pc)AN&Pz1kaPI;{3ll9!w2<a(>Tl*VT9n8l zT8zjbTAZjOBqRC^MBRZ(>RhI})Uh^^FL;N@C6bf>A#Xqw5y}3)ne8YhO8RV4c}8>| zQBJfQQ9-m8QAxBMQAM;g(MX~tg@1`Q<5I)JmmykKS#&+i6Rk?L0@2DuD-x|V9K1^Z zl4v!e)tfOAtwFS=cIi6TCfbT<9ioki)+O42Xg#9!hhsJ*+NeKEGL}t<HYeJYXtRDI zv2Q`NrABK0t%-IZ+J<O5qHPse*S~!~kZ4Duor&Zv03Edp(XPXJb|*THXb+-;iT+2l zFVUVvdlT(7z`4(Wz8}#6MEeh9Igsd}{-soV2+<KlhY}s8?dk<4tAKjN9!YdG(NP1O z#}FMmoZ)z)Q;1HejYKDkJc;P!;h0m2&L%pI=uD#1iOv{4uCw}JB3U4!a|bNv6Fo|F z0nyDw7ZP1TbP>^|lIUWhO9qgaDP5Iud1EBHlIU8ZtBB;}N4c(PFf#V*h;9)4^)3EJ zqMI7MsgURvqI-yLCAve9w-L!BfWAj}it#R@yY-0loxPXn0iyfFd%q@B*&ifQ@A(qx z{x5(>+FXwjy-oBu(Mv>65IslqB+=7?d8)-cL-g$MT+b7|Kr~8a(b->A0A1nBL~js{ zCVGwN6(ZUB4<TRIRH~#m8wR4c+SoBf<A~lN`he(NqW7he;j4fe)Q3c4o74jMi0Ct- zk4684=+k}*v3ySSCD9iH_^*h*?qAkmqHl>$Ao`9tBKn?q7NQ@B>lXbZ(H}%V5&bGu zKNI~j6sRisjp%n}(ev;pk!tuve-ZsXVE>osKRw2Hydir$0r6DC6B18KJdp~FCnlam z0c0{&ZSiEpQxH$CER9jYrfhWLsfi)3Ez=Ho+x{O<PdpRx48${P&gLG)GY`}-EAe8) zvk}ijJUj86QpOxD|6ENV@!YLtUgCv`=ObQ_cz)sq`gv=GSPp-5mPLeW(S||v#feSg z5yYzJ6L%UHu|eF9PRClrKCw;g3estjo>JQRAr8bFw%(X{YvP1>W#W{0N#cySB+dm^ zD44_&SHvS*U7EkPFGaip@zTW05-+2Mrt4Xbc=-n3T2^e>h*xSYs}OHMyejcp#H$gj zFMqFH#A^_@{a;(wCSI3#ohDE)>k+T7FEwUE;?0RSBHomEW8zJQdp8@1-GX?lIv4Sl z!z<i|_yFQ<iT5Dhj(A66)&GfiP%xckC*oa+cP8FtIR9?Ma{e=f{2%e&#CtZe#Pat) ziftd_{e*VkJ_GUojZS<Z@zKNw5g$r?a2tC_oBc52BP6!%|M8K;()`<*7w<8|Y6&1d zj`;X~mRcb`k@#)mlZfvmKAHGp;!}vv5b&wQr-^cUE!%p|BtDn;EMjT<@!8s?@A7%X z7ZRUOd_g}%1*$|BH5TGah_5BSl=uo_)&Gg5`Rn<-lK5)ktC}eBO8?jV*Ad@Bd_D1v z#5eR)5Z^?6v%b{GTZ!daAl6R-#CIrw&T<#=GsJfjKSX>F@%_a2HeTZU+L1m`TZq-> zzm0mB_;KP#h#w<<w1ExO`2_J(#7_?32loH*v&63vKS%r$@$<wl5RYnTYf1d#K-9~` zuZVGU10WuF1W@4DiQgcW=C9}Wtrj_kWCG%Mh`%9zm-rLn_lU<5%R&%;K>T5YY{xi` z_@g#f_5W7?l=utc&l(Hy=dJxq;;-7+uLtno68}#89r4e^-xL2xEN=np+5V}ItQF#4 zh<_#iZD<0O@ektvi2o%1hxjkzzqMC0{M%<BQEvf|jIS)sy-p@1nUQ27l4(dLCYh3C z5|YVCCLM^HoJ3Ck`(sR|BAL2RBAnBbOxIXQAep}JC7GekH517^Br}uDR(nZiA(>Ud znmUu&Nu>WLbF`MZNOb3KE%TBrOfnyd>ii`0xAp}|hVB1J79m-z_LAr&fJ6@eb*>KS zE+k!&7fB3~Lr7}2^+-&TB}goijKn4hNE{N6L@fkOF3BtB|B5^$iAkbnfZ|F>(*C6s zkdsLBR|S_OmG-J|IR#S6lGNWVl`KWFtb{C0vP?fC$#NtskhDvH9)c_ZigRU>HAq$= zS&d{>MXv9xECCw4Cdt|)YYlL&L$a>A6mTs`)+gDSWCN0|NH!$dL@L>cWaB=JWK)tY zNH!zcyl-sN>8Ajatx2TSC)<#0OS0YnL+(JbBgsyKc9LC4_9EGpWDk<v8W+jXDnRl- zl08)}J-WR~_9NLxA=L!#+lK5<a-diaXe|ekNb?_xJ(T1slEX+&Cpnx%+Iw;Y$&n;S zOYBii7SWGsd5$AFndEqq6G=``#&-5dPHL+<h2+#$SN*@$&mcLU<V=!tY9ony1R&A< zpG58dNzPMXJ-Q1>E+x5;<YE%t{1uymwdX&{Wh7UKMeqMbzf!@}-MpIQev)fQZY8;v z<R+5qNNx~}-v0~i#s)8TwF;2j($;Vr$z3F}5F~ey+}YS$@7*N#lH4;8uJ-@UCCLLM zPmw%G@;J#uB#)9jOrm%G10j#K_$QiJ5?KON{ZEsqoj=JlE#^6r=UaUg$qTw3J>Hi{ z=O=lY<QJ0BBx6ZlA$gbNRgyRAD3aGizTPstNiv4yEt0o~kLw);5Kh6rC-Qxg4@f>7 zo^c$>S0o>id`|K)$!8>=khJ^%hC$!WFB(pgFB=AuuSwKV56L$q-;#W%00OQh$qyty zk^I<1wIM&Z%CDq#fBubhJd)o@{v!FK2`BlpRsJUVm*k%zT9vDP3P{H%orrXThM#mo z9hFW@I*HDb4)p(Ya?+VeryzxNO44aary_0pe>28(T2kHrTej&*XK3{qNoQ)9Tgxn@ zbCS+VIy<Ra4qCf3f0+%^xk%?Fott!?;j!~I;98O{K)M>~f}|PgLZl|?!la9nE+XDV zNf*<xy3P@#25H^@yM2;&$i2owYLNz{HmOJIkh+7}g|_YgX-JxoMx=7`-;Scjlj>D~ zG$&n_v>;uIv?N`Ev?3j;v+Jss>=#42w9?hk<PktA%aN``x;*KMq$>;#M-r_}x~kw; z8FZ1ZPP#Ga8l>xyu1UHMsp|ivYd8E7D@%Z$?e)dG0qI7h8!Almg4EtkNVg{4R4|*7 zZb2$bfc9=lx|I&mBie>^d(v%{Q6<%@0O<~-J2uRuJCW|JqcqR1Wc97wjr4KS-AT_O z-GlT<(*Kd}N2>P!q<fL>OS(6yoc{}df8eD1lO95P0O>)bY9SbK=~aOAP}0MN>aae5 z^oT|$J&N=s(xXXbT}b8cKULo2NLAY>)lUJWC#n!#`N^cGlb%9)8tJKxu`fx_AU%up z%s#$WNY8HP;at)iNzWs_jP!ici%2gJz=Z=07n8P~KfP21>UqAL^cvDDNUtWnl2kVT zZB;GiT2j^XN%i@^=xQyf0i-vP-b;Ej=^doEklsdmt8$4~ka7g1!tW%#hx9Je_WY-L zh3HD|BYjBl_me(As{RVJ&qMk!>7(M+s{rX^%By3aApME-Nz%7SpCWyc^l8%PNuMEo zj`Z0+PoI-?6zK~C3@?$sLHaW3tE8hzU+E)jh4eL2-T4PX^iu%o+oYe7jv*aO`VQ&) zr0<drJNY5~fVA!Zy5@1DpOAh;`f;CAa(&vrB>kN9ThcE`zasr|!2UJqH^VFZj`T;; z?@8Oue=|8c*Uw~Ak^Vw9KIyNdf06!1`UmOnnnc6e{-6F$`XA{(r2h^A>H^5dYb<0F zkWET9A=$*Wg>0hMK6C^`HW}Fz5;gfy@!6D(PBt~!tYkIk3}n-iL8cFXgmB;yAe)hF zX0mn(XsXR-X?bQNo11KQvN_2H`hPZ;0?0g&%|kXn*}P=)HFavKMx;-H$QB|ykZfVH zRmm11OUM=_v&a@BGsqSv>yV9T2peXyZl8^;o&>Y+C9}ywGKb8ojb!o&peD*E3;Nj` zg)9<G+=P>*WJ{4{WF=YN8r!FUtRic7{@D^_OZICJlBLO3BwL1TIk{Z6O|d-Lu;x#u z4u8m2CR?RR(IQtP+lp*;vW>{rAX|rQO+l_jwswPQOInv~1G4qVhM)grL;as@W3tW2 z<Z&R|REMj)s{fO1LAK@a>|2xVLADLqPGsAXZBMqH0_gj=1DWpstz~Djy6x|xNfhU9 zWV`E2{ZjcK*}i0ZlI>mF$@Urm>s5ekKXL6(rg#1ghU_4+Ysn5KJDcnfvJ=P-B|Dnz zFtQ`b4ky!{znwif0@BqULv|e5vC1WtNQ&cI<`c<IBRh%g6ta^WqX4A;YlhRw&LlfS zdBq}tv)WwekX=T0F4@Io=aF4Vc0Sn!I@eIfi(3385`O6b)#YSYkzJuIYG$r%kyp#* zHI2PCl3hpkDB1O7caYscb~D+Hg1Kn`a|@X|^C6QZKq<QUi}6mf2gvRsyO->4vU{3b zjU>B|O#bp`XqXR@Jxrz+1&ve{KGIy0Jx2CC+2dr-l08B8G})76PYvhPoByUlvgg{^ zQDmdZULbpk?8QDm*~<g^D`fiopX@cV*ZVcp3fY^K^__i-Vm`9B$@eB3LteLwcgQCu zdzb7-viHcoAbX$eW3ms(#@6Iy`V@$49GO1<X{-8#>@&d(Jq3_`-sC0wlI%OOugJb3 z`&xy_w2*x}pnu=!WIwdtpUD0u`<d)dvR}x4C;OG`x5nEt>-~Ql@>i?;Lp}l7zhwVu zOFka?_&T=9o~zA2`9ysq`6SfeK#@;MuKGOrWaO&(ldFY5XUwM}pPqbb^6AKH*R+jY zO9iGy&OkmB`HcP8);<gQ+(J7m`E2BKkk8)7kk3gz*B~ePJmm9}&r9C+e_j6q<m%X; ze8DE1d|~oMhQ}^Oz8d-B<R$qCa)-P_t~Mv+>M4NS7)WiBTjX}%BIGW4Ozx3~<UaZT z>;Jjx|AI`&bMllt8>~TGMPnha$d@M{NxlsE668yf4_^Xuc?4)$U%o84S_oSH706d6 zUy*#J!3t}gd=+x_AkZRLC*Oj64f0LM*Cbz$d@b^I1SyXI($mP-ZL3<Jd_(dL`el=E zM80vu)|ce+2#{|^KCu7Kw<O<{d@J%D$hRinmVBE5p6$rD*Oz*hb|l|fD%q)FCLiek z`EKO@BbOyWjcbpA?D7bZ@73145BYQC`;uQqz90Ds<olB!Lw*4Hq2vdWA54Cb3fFlL z8K63h{7CY{$&VOb+fn34YnZ+T$2JV)$B|3(*K8+}pF@5U`RU{*lb=d{$^idqO;k-z zeg^qj^(DDH0w~Mb1KxAVFD5^aT(<rB`3(vAh2$4CdcQ*QON2)r0Tkio<adx?L4FhY zmE_lxUq!CkKKa${EL}@}-T&i}v!MLO7IU+N+(LdExo-X{MDeI2AQ{D-<PVeIMSdUo z-Q)v@Kl!~a=6>>r$R8kou(9+j7lud3pCo^jTyOr#A18l8BXyRi$e$7L(=F$-O3~iu z$$upuMgAfA3*>K*zexTn`Ag)Z$zRs#)C{+e0Qx4rMn3ciK>jBAyX0??k0F11r~ozI zciLR<k-y(}k$=$I$C7_VK92lz@{h<rsqN$+H>t@#CI75nh6+*MFJwgR`A_~e`FCRf zhWuNF(M5hw{uB8R<UbBFkpE2ni-u|BZxoY}|4#l7`5)w}=acLGzv%j10P=q+CM5rl zVtiFYF<!$%F@aK=SuG}_n1o{D=CYO)lMZ+%r<j>y3X16{rlhF7Q&CJktiod2fmkSJ zpqO3(nre#~DQ4;eq>Nc8=A@XFVs?tz`Ywt&2K2co+IN17c_`)`o^gJP*C`gD*pp&G zid88VqR1!~rm!g%q3BX9N-=_BF^a|ev~5Y9Rxv2d+Dp;y@zg9?t=FLlC|nAk!W$yd z^A=Jh6cL5q`S$@7X`@r*6w6Q)6eA@|Nl_`6W>|t^DY5G%fMTHe7t2ztKq38KRkeIu z)ru4=Qw%Ku6srtyu12v1#p)CrP^>|*4#k=js^?Rz)#Pn?)cFs^dKBvqw{J)x8~$P= zilHTdVpEFE`bY{{0#spJQtUvn6~*=xTT`fG9}2w$P;93|WXR&$kzyB7cB0t1@1@w4 zVh@VlD0XiuZ0r2r0A??WODXoIIEi8(ibE;(rPyEC_G@4i2T&YT$5I^FG8{~Ci00HY ze;CCv6o*qBMR5ehkvfIEVuekw0u;wmoIr6Lh2HsVq#EOiE&s_B=TMwNaVEv76sNWJ z(<z4i{f{u8MIrrP|8|^9aRJ476z31G@Is19C@!M7c+lQ5Uq<l&#pM*YP+UQA9mSOt zS5sW2%F|=KhT>XXt<H5l#Z449P~52PLpSB-HtJT2yC`m>xPwCW|2p<g1<=fQQ`}1- zOMtfAM{&RA)c6M}o}+k(;t7g}DITSGWPsr@ipPiJpQL!2;;8}5GZfPNYeLQWJjKft zqbOdactM9tRTM9^n9&rk)-H-y`twHdS_7tdgVLg?_x}@8yhZUn#oH7gQ;ebbkm4PR z_aye+7XLnl?)<G~EQQ+nQ;gI6y0%X!zM}Y);tPt;DD=+1jgscCkzZ4MD-7SXHGijI zdM1CM_=Dm{ieD&xYU~t0x87eVey8|tFm<g{{7La2#a|Tv)JTf9{}=x@ftsfrk8*rU zY5x6LEhnO!m2zUr=_n_moQiT%%E>7w>&H?~L8+byRNiJ3<<ykZ))q>=el=c7DAk6a za(a<7wD_4QXQ7<Af%PTjY?O;o&Q3WW<s6iAQ_e{_eE(n0Lpi+vm-ADqJwN3F4He}= zlneK1)tr=zQjQSJVwAE3G&5XwC~I$*(r9YaQn9JEKw@pmEh!z!<tbgtoYJEVDSaUf z6ig!{%9JvuOd3nWMwty@3d*G@OUjXy(*N}wE<xFD{x#dul*`tEl*<fM)h+?$3Y6<m zu1L8C<w}&RQm#z7ibiVA)hJi*$JPqvnw09~hqCSeI@h|C8&R%DxdEjt0b-Zz8#ZI1 z+?aAR%1tQS!yg^HIpr1&rpZOQ73F@ETT|{rxeeuxl-p8nFKl`Vpxi-+r~&RICGD&% znsZmmJt=pi+(TULDxko63837Iav$N`yU8oM{`()w{V5NnJV1;GQXVYILA6w1H3NDT zpgfFH^?b_1MIO;$D378%hVp1luA`1^y~k6%N_hg+;*=*+)@|e@%G)SUro5Q)6iV6W zm#0#mMtKJ1=|em!*O@KP*_0Pjo<n&)<++sSHTJ%wykJ0Y&wt8GD6gZul=2G7%P23` z<a+k5q`bP0qSWsKP+miM?eGGwr@TopH`I2@8yhd>&6H}}PpRMkZSA*HK23QC<wKNr zQr=5>7v<dpwdqqJ%KIoEpd2~^qLfDfUE9Nyk5N8C`RMR^9;bX#@;;&Mss?=uMEMNm zE0oVtzDW5T<@0S-qbS?vFRyuFc!~05%F(*EA$xtlRP(2No$?Ls)m6PkH38+@lwVMe zq5P2Y9m@A8b@P`f^$0*Yv;<I&rTmm~9OcL2`e>l?Px}0n>M4No^TtB?CFO6FUr~Nf z`8DOYl;8Bhg8Z%>-4B#MQ~pRP&A%ClqWXpMR~;fo%HJvfq5OmLFUmiaOU6}8%D)?( z@?Wa)DE}LBRYONWR1;FoN;MJHR4S^Pm}(NL$*Cr#nyf!ARbDj()$smbO-(gDRUI`Q zm0AdN3I(Rosb-*>nQBI=nfl&Zp_)ZqO0`t8Q7uR{JJsA&b5PCM+UFX;%tJL_eMvQM z>z$uUpZx22s}>T#!c>b&!HcxW#TrGtBd89e>QJpk)umdJ%AiW9>Y9Bjlggp8sD_{a zR4$dLNt&6j0xI=qKUCoWdEDq!DOE|8QRQuIg>vcfR#Zz+smFoF+hUfYTA6BTs^zGb zY4B8PEs#XZQ>{p~LSq-pN(1^TwNAAv)f!Z*Q4Q<=;!<w`h_W`-j#TSVZAP^&)y7oo zQEf=IK2>}8qcd(az`seOQ|VQJYICY>sJ5WmifYR~Qc`TKF4g30OC|lk+OEw$(EqEQ zsP>`SnQBj}U8r`a+LdazCbq@zL8Uu?YuT&GMYVUEWnZcTsP=2^>RCXtA4qj@tyAg# zPjv{@p$$*Vb~x3wR7X&qPjw{K$y7&C)$RRgs$;2+X{dzcII83IrJl(X#eUKN<`k+k zsZOOjol4GsH1doA%vn_DQk_k8&hScP3DA{aKy?|_g~ERkm7Muh7Y~rM=ReiuR98`5 z(GKUz21BJ50tvsSbzMjG2-WpecTn9xbqm#vR5w%IG+0KhQ^`V5-9{ywf8i1PomA?a zhw3h>yQyUJF9Q_seN+!p-B0zvAR*O5R1XigJWBNf)nio8P(4od6x9<{Y86m0J!4Nd z_1BkF&r&@vd7o=ARHOQYR4-D!O!ZP9FUZjn_)3d^jgj>$<aI`NsNP`Y1XOQQeM43E z|8Z1rQ@uwuhU#6acbbsCq<Wv~L#hu3GL9Yaenj<YeMu#2LG?)kqxy{MORCSQzUYIc zq_3#t@PBBe-%|ZT^&QoZRNpJGV*8;VMfDTa&x%&h%&$~`Q~gHuC)Mv%e`ut5CHAit z`4829R73lJMvlkGq2{mZ895;%=V0VSjD(RBGjd8sPQu8^896B<hxLEOJaP)nJaQ^V zPRq!t8L4|(YoBhY?EfR<9iXL2ny&4!b&c(NJoAsuF56XS%x7%dwr$(CZQHhuzcMSc zPxtq(b+1}cJ9g}d%<7KJ%04r_sp(BmZyI{jc3!EVegdX91HGAK0W%JS%&c{0r8hUd z+33wlZ+00t#{f+%1e!SyJ<;ds%}Z|#J-z?$=Bl><J+bYlx1i=PJP^Amy|w8rM$e(w zPQ@zp7N@r?y(Q=^MQ?Noptm%=Wjci}oZfQuR;0H)y%qX`ErH%j^j02bu1aqWS;K1d zRu^PhJiQ)0lb)f-BG#g3539NKQhFY}ke*L(`1jwQ=>PO$dZPIY9X0BVUQI8jS4u+B zuZLcxISsuvTbtfUKO?=hI-A})^tPq9F1=0Ztw(P|sUwyEdK+lYM)WqJr(Xf&xaj>) z>u*MHYkHg0+mfEz{L66J|J4j^(@9BuJ9@j)+g{o`(A$~bj`YM^fZ!<pE(5k`{`7XI zw<o<lI)X%0^OyEM^j@O3FTG3X?MLrqdi&EmoZbQS4yJdYh!P?P>6#CrcNo1x1wNGb z2ztlTJCfef^yCtt>Jj~4#~w%TM0&^5J7GBXq%KPf(mRFTx%5t@cNV?V=$#?6pWcbk z8}0uR7yEyD=V<-&=v_!pE(AT<{MEC*NGe|}L{wFm(z}b^W%RC-3YXKng5K5iuB3NW z$I+VC(7SdRxt`uF^lqScqgK0#-pw6fBe&8MdwzQAEr8w~^zIzy+)eLEdiT(Kh~B;Q z9-wz0z554qwKly6wdTY09;5dNy+;Q*^d6`8ghJHlo}%|Wy{G9tD;1vUd+9x=$Mu2$ zg}yrfq1X2Rzv;F8|8sh;(tD5IYxLfx_d2~d>AlhMb@=EKK<^!TV*jsQ@6-E)-UswP zqW9r&)W`i9p!X@g&-z|^U(oxR-k0>gqxTiPZ|LbIK-KxJ*8iT~k8L2m9|qKZ(%xU_ z{Z3E30?_+yK>rVVe-7~f5-#z8{=t}z-oF?V)B6u&ToGuDg)uh9IDNig8slM1Aid*v zIL3q+6LmUD&6osZN{mS{CYQ{~G*f->Bsdku)EM*wF{Z(oR^4`=SYvvOIWcCym=$A2 zjG1NNOamda4A`?_%#JbI{AIOsVT{3;8)KdU=DeMaF(1YPt&K5%SE00Z|2GyE{}sQn zh`cT;uZ!VsgYo}ieSxt!<}nycV0?(NB*xJgOJQt=u{1`8u?)r<7|UX;gs~jP3K+{z zJLmtzKQV_Z4%jPWtctP90J0j!>K#*5HRt~@dKe*wf#GAA7#@ZtTtdp0S8@J>;R<jx zi(CR!#t0*kQn6ANvT0{y<QQvXw1XYNC^2futOl4(r;M?t07b0)D<EO4gRvpTx)|$A ze7!CTV}s6+;6@lNb7PE6`k)rvR2!RP?1Zre#`YLnVzl$T6~@;8hrg{9+^#=Tj2$rK z;g1^W&KL(`?1Hg3#;zE9VC;smd!OGL7<*#uHH_?ou^-01BAwFNALD?*>=*}O9Eou- zM*BZ}I0WO+VejD>M<`A8)Q;*CFxrpGtr*8*T!e8P#+ew$W1Na{0>()gCk`-A#yDlT zw$m`={$I`f8J!p7ER6Fp&c-+w;~b$ND{rqD@>c-GzX0RH0oTPC*I`_OaW%%J7*}9i zhH-hH(28SRiE-87SR{B2#<hJK#`PFCVca0o-6(LG9ph$g+@g)!FrLD=9pgcaJ239U zxD(^<){7yJfP`@m#=R=z=qT>TctD6K<%cjHl~E7N>mwR}4C4ujJl-i_JSki%>S>Hu zF`mJA0pnQ=+4)7r=La}1V!WjJFJrvY*;?&2jJGjf$9S{FG2ZCciSd?>dI#e@>3vrt z?_+$>XSN2$N0{w5{bS6w;e3Me8^)&?-(Y-(@g>IR7+)y9{uX0=B{jd+n%`pli18i9 z4-)@=SpO%CUohnUUyfZS{k7v@{Ej&e#vd5}V*H8mw^We(e=(?kx)c)pPh8EhFvlL! zH^;@C7;`+#2_!-Gf5Ds(Q||x!b8b$8Iho{4+Fn%w=H#7?IVI*8%&9PE!US_V%&8@L z8cezWAJv&2bB2Bmm@{grnK9?UoCR|>%vpu3%z`=lfITPXJeYG~&aD)>Z>2eJ{}yvT z%(jiskGU}B0+<VGorMNCi(oF+;+TtSuk5i(Z3)cfFqgz!26HLQr8`dlin*+gS{`#H z%oQ+K?2ET9%#|_a-~Wt`Vl~W-FjvP+G1tI!FngGmBpaA!KOEB*;%e+JW*|8prr&|` zHpGlEqdp?Rq!Yo+FdK>Fm<6WT^JA9UD;9z-5OV}`UCcExb>}zN#$2agj1*Z9b3@Ga zF-M!fAgH<87;|^bO)$5^YzMwM=B6@gvw<vIU~Y}MCFWMc%G+RWJB)0Pxg+Kd1F<_{ z?ji+u7N8i&u9&-Zwnp~AJP317%>6O<!rVvl_txHhG4~tJB9{R1m=4sOgE0@2QHRJB zhjx6-!!eJP_z{|U6z0)NP1SQOR{McD4)a6I<1uf?JOT4k%o8!s#yko0RLqm5$SIwO zv`@o415+;nVq9lpo}~zCZqLCyAM;$vKW`xR0?dmsFT@m^e}T(NWaXFW$}hvb7V~n< zt1+*@yh@5(ImpMnW<c{g%$qQ;#}sWJQ!D|BENZ(M^HxmR{56hwTgSn?1M?ZoJ24-{ zybJSw%)2o~=f}K9*K=QA5c2`dhh&xqwfAAnNBRUA_!y>W_?VB&>l2#!l)RPaKWdhq z#e5y}Im}lupT~Sr62$qBG+x4dxiz|5sr;(2MQyKjAm$sG?_j=(`8K9({(3&8!n>I7 zOTJhOr160;l>HG_+ZaE_{1fvN%<nNj#rzucGt4hAKObOziTPC*rSpD+`JEJ$`~NPf z81fI8zhM5@k}-e6{CPO)SIpm~>o<i9+8<i;FRXDe|HkYZzE}b<|LwfOw#LF5TLgCX zTjOHM&Tox}HU0oTA=bo_KT*fj{7JFq#+nRkdaTK@z?wqRro@_Rm^n4pv{=&!us<|w zI#s7N1J-O<Gh)pw!)NL^ShHZws;cdtpfx+zoLF=8b+G0d5S#~VVXS$v7Qh;VHJ{d> ze}FHS05SH3be2V018Y$%`602yTF?e!E#6O!wItS2SW988gS9l4hqVmWDp<>6iLE}? za#+h_t)N0i$G8&K%AKI3t%_w}t%kLRyd8ZD!0L50EE7w#eJo4Y?_dq@{4F0V#|p3# z$qca~thiIqI%4yWm5Ez5q5^A8tP)G^|1Ej`BRCD#$p5KatO8hT>l)U@+8t{>tgW!t z$7-WCz}g6F!vXz`u{Igh!P*pSbF6{>Z*76KWmk``YHO?=u(rY44r|-KT5Di!ue0xn zwF}lxSgP}Dd{?aD{%`GpbqLm;So>k^g|!csZ2qH9WM3V-Kh{B52VfnjYL=fdnfG9Y zh#C&XIt)wne5}JodFrEhq&AMmx(n+VtV^-l{(mOcaabo~9glS))(IkHH0q?z#ySP- zbgWacPV0MHL98?Sw^(OkoriTcmTdc$JpUP$Iv?vItP8L%>{lxlF2=f~FCvl4ux`Y< z9P2u)E3mG{x)N(>|BrPI*0qCCt&Md(mTdkqDb`I`w@UnGdA+5}i**~;9ay)E@X_+_ z>};&Nv0lKs2kSAcd$AtGx)19Csc?UvFY9~=>k%xm`PZ?J4%m-lJ%jZGmTddhlU??f zfF+jzVLXc^w*6Sobqcz|7qQ;MdI{?dte3G~#geZ8YFw{jz1~-omAr}dHkR7_OTl-r z)XraPzK`{hbbTPNA8Pz#tk1AM!TMCyFgho42@p^DOPs~9zQR5M>uc<lvA)5c2J2hw zv9Z3x`W@?gtY5Hx!1_t*izPtTCYOLw&0nSWH=X?ttiL4kr{@2S^&i$hSfia^k?pax zF%I@**yCbPh&>+m_$t;G%Yo)hgguE+wkPfoX-_&pm>hcw?5VJ)900+dx_{dSVo!@b z275Z}*|Dd`o&|db?3u7<?9;HtLNJg;yaHg))`8e_V9zCyIdyGw%iDRdM>qcxnGbt$ z?D?@5!d^gx3mv%xh)Nd5UKD!~A<})R?ZvQ_Ey#ki1om>+OJXmLy;P?l@nx`=?V>bu zd2G2B*lHEPUP%y?@+#PyW3P%`Vy}iBVy}+vV6TB~V)w9(PDiU**kTnJP;jyR7QyyZ zUQwPp0>X~4MXSe-u@mgH&yip*q=dH+h6t>%*T=50*Tin5Yov2YdoApBvDd~P+W$+} zdL0dW1MH0@vLW_H0#wSIU~h`8ZY4qXe>D$VVDEvwCH8jMTVZb_30rs7V#`+m#oQiy zC+r<0VMigZ^moSI4SN^tUDX&BzI#WI{5`P`#oi110PMZ7_r(@30$O1|?EMv4<vI}i zU~GB#uaH9q_=jO1jeR)wk=RG{Cl>oCB_byF80_P)j~$3Qet>x*_J`OfVc&s$GWNyT zr(mCheJb{u*kTF5J{?;(e^rBg1rV;Y_57TReSsvOC$Hy=bc%eTL@w$O>`Sn(!@d;z zO6<#|>vHTX`Xx!^Dr~Xs$G%!e$t6I|=k?e(W8Z*%ljPjkadf&{uy57&ZP>RDE8mIz z4E9~v4`bhreINEcB3$GW?*h`eANxUUu@H!V;xqYBXGrfO*pFkY{*V2bj(P(7DeNcv zOd0sJR(KZsHSFiGU&ekO`$Z}Bg7&^N8YL<bO91w(+WR{8JJ@evza=%_)cD)NP!+z5 zE%*Pn{0Ufui{`Iu`v_-p?2obk#{LBRN9<3rzrp?t`%CQ4vA^h;n*SB{*9uYk-(r8? zBG}*QjPmebd4IzG4O{eo>|d}&=NI8>K7Ysl6Z;PVD!w}Wk%Ir=jEDU%&e$^iKb)~t zc&p}&(?#KotJIwFaV8W@X9A5(gd_XEBi;psrZXwdWSv(dQ{c>oGbPSUI8)(Fj|0xM zI8)<H({cKIoaq!Ivdn-pqjCvl(f@H~kyp|DJ0{NTI1Av+finhYPMmpg=E4!pU&P9J zkRkJG{(Qm^QuAwML7YW#7Q$IrBVzyGk8KT{_TQs8i{tE#vjk3#vm}m-vlPzCI7{O! zkFyNUa#DF&72Z7sX9b*<BtCo!<g9{Y;H-+X2F_|Ys}D!@)U7Dh#Id@1aBLiL@-Muy zNE{C*!VwEW`wu6;2|JfYVw^;}Qk-l!w!qmOr^Hzor@~nir^XR&A4i@4cTzZV^Y5&U zvrdQTde+0)Nb=Xm*#Kw5Vf~G9HpSTlN6)946WRY&{afJdgtH~i_BdPN$o}u>{_kvy zv)yn;+5a8c|CQR#IJ@KQg0owj9cO42khSfBvnS48N=N102j@bZeQ{2}*$?M%oc(bQ z#W?`yAQ^RF$HzGs=MWXEXCCJ;Jp)JJ9E)=#&e1YzU<q)JQBh((kCWcxI|S!MoU?IG z!Z{V^WSmp_OgV(paL&Xz9p?-+pK7GC|10|(9NF`oa}`Hq5&a)W{sb(Hi*Rnixftg< zoJ(-7#JLpbavahB2cpy}fO8d&_?u6htNVFzuI+4`>!tV&II{mcH)>pL{yRaOTXF8k zxee!ToZE5klxlZq?_DBfbPn&qxfkcY&Z{{O;5>};V0()r`@ec#j|hUYAH!|G?2qI8 zhVul@2RKjSypHn}&Wkut<2;A+49>GEmzuHXaa8BmIxpe8it{qgEB&fk14kbIsHit^ zM8n5<6X&fiP~N_S^B#_T1&~$A!1uNChdAHje1!8k&c`^P%8*aGEI6MH=zM|mHO`kf zU#S{K=jR)(_8rcTQsH}?f&TCOg!2o|=>8u^E&*zme#e~(=MUU*asI^l59cqOe{lXD zOoXG}0&qqD#~mAY993R71MYaZ6XTALJ0b1_!qw@!qlZ7Zli*H{J1OpP|97XropM+W z+?jEw#ueQjcN*Mj2Q;V0oe_5i6(R^T4R~k4oefv^|NbnwvrC;h)ZDsr;rh69<1UXo z5ALG4^Wutbk2^+Q<r2_7Wp@GGg>e_eT}Y(p1l5oi(Q57Qzf0k^<Rw}JcX5p`*$=^8 z8h2UTWd;zj5OlY=E8woy+PEv?u7tY^?#g|p#8=gttK*uuYvA^DtRW0F+ZL{iYvVc{ z(nYm4uBR0O-1Tuo+yXbkO>yH+0aq*mEe$u5A@WZ^6;k4k;8wV`<}{rlnQP*%gS!^) z+6q)tv@WjN`Rk|+a5ur-P)2PeuN#ZP6u+%=bKFe@S=79lFho6D;BJMxWp^uGTMyXV z63mLb9o{3j+vByLoE>nVz}*q|Y}}o255e6TcQ4#sWbCfEd*JSdyL*>cT}8${J6YVl zaSz1Z2X{Z*eFZ^PxIgXzgHgD0A#e{KsOM1J<8TkdJsS6L+#_YuBea5S{%TyJ`Qys{ zztTS*_Y~X{a8Hu169;5Z)(WTMo`HKB?&->_V$Z}qOVy_I&%wO`_gvhoaL>cN825Z! zaq@$!`oGL_QKy4@3GU^%m*QSFtb7ITl?su{GU{sFYjCf_9oYZ7qW|kUZ^XS9_a@vs zaBs%FRYu*?5pZwAy<L%2{deNtrM-9K%FTc4Qr`P;AI7~OSGIjuz5+-u?n9dM2(H-k z<38FUGNb<e*L@QA7u=_CKfrw&_f_0yaG#g_XK|kssnxu_fcrA;i?}cKbtLVT0nTf< zZ{fa<`zG!iUEqNCZCugzao_0_aNolfZvg|G4{^W3{RsDS+>dcT#r;GOI*u5{XPqqW z7gFlWf!MEczr&TyUu03||G3}d{)GDju2>8DYPh4n|Kk3NHyQ44cw^!Ij{BDs7q0-g ze|Ay0f8+iuk$*Zw+W&R6;f;+qKHfNZYUeM!-gq4oZvwoD@g~F@{{7dR1aDHMCdY_3 zIUX{03Oum{;7z3n!k!v$dc0}yWb<z)#FK~rdJgesz?%_IHvj&ld9&cPv9sctc(dUx zfj2wef_QV_&5JiD-rRU|i7ef-_U0L|$KcJ6r<#9<<H;i+k$oY&Me)Qd0N&94A8#?d zmaurI*<JCL#9Ik(DZJ(ImX=Y=;0>Suc+2Chh$jz!^bjO-WxUn!R?$+cYGZZ09^M+= ztz^pnujbRjtMP2S1kb_q@m#?a1$$ixUVs<lg?Lf_lh(O3GsVmBO1vDeP_EHAue45s zw;tXIp6K~_Ys%|diZ76L@YWr;T_0~_ybbU~^Vc7wjkK|e0M!%O6z@d5&G7ca+Z=Ca zye;sy!`l*XYrL%nnA_lO+gEF)@Y?>rBc9m*Yc=^NplW`0!P^sWSG+y&cEcMz{OL~x z-d=e7;O#x2u<wAqKi-je2jGc@k9Q!R=>K{Yhu|HCcjy3eINlNcTUp^zc*o$07l97P zI~MPFyyFIt6Z#=|C*fU<cQW4jc&Ff<iFYdA>3FC0Ia2lvt#%gPxp-&e4WImb;zdB$ zc>&&~co*Vbf_D+##U0)!NWshSuEe_>Pwo75>{Ws$rSPu7yB+UZyj$?D!@Cjhdb}Hy zj+*nE@NOPdZf!id7I?R5%{%b!!@Cpj9=yBo?*4!3!Mj&yydUo&ya(_e{6CzBwc4Zj z?ZbTxe?Gj&@qWU40`FbCC-GjzdkXJ)yr=P=#e1e-7~Vkt_g=tz3GYSWRU>^FPw)Rn zzYDM7y^i-5-WzytDk(MUxA9cx*9!09eS!Br-bXEh_d#1No<9HgKF0f0;-6^#XLz3v zjuG!myl?To!uwj`Lg5=d>hJJ=#QPrahfbl-k+MJIPlopk{y2EQ;{A>H8{VIIzvGF{ z-zVdV<)B0G{=xfChU@*mKNkMjLwtW+{0Z^L!=C_ue4*3LPd5+#MEH~7PuvIbCmpaS z$Dav*3jAsDr^E+e_Wy3q{i*S%QDlWohcCAM_|vNjeR=+)a?OlC2mUPhvq{eAD**oN znm;H0Jot0r&)p%NKK{J;V}_CW@dNw?@K?cK5Pu2$h42@Z%5n+t_5R;q3}5e3e7OXu zYL~=c7Jn%jvNZlO!}`nNuZX`q{tCnRO86`Hr%1-Gif`eshTp>%M?m-k{ofb;AKz3W z!nW~UeEA9>E0F{b-xnNJTZq3geuO`QALD0|lgMkT=Oo9k@C*F1i_&<FuQ&f{=GVku zAAc?Ub@0V<(DCut#b0kYb_4tkwT{^TYvv~S+u^sxZ-KulzS{Y>Ui{59e@lF^?Z=l( zK>OkMx53x_UsbX_{!Ws!1OC9@fBHL1a2NbtTcZ<fulT#;KZm~u{w4T(;va**7yhC6 zd*dH~zYqR?GEgo7D#iY~o&)g@#+UtHYvLcGy@%l+jej`4-2eM(6~I4A5Tul59*chl z{&Dyx;UABGBK`@Z9I1?dGXAOfr}P8yPs2Z5-73zR_~+xFg?}#o+4$!Sj#Q4~Je~0Z z{EH+a-US3r%&J-i@Gr%`4gWIy>+vtgzZ(AvNw^aKs(t|yxdvZu{^f}9uNzRi0slt) zTkvnfzj-i928#aQg7~-NKa76|{(bm&;@^#bSLc$nd+_fajK#kn{~`Pb@OA$mn#o7- zpTvI@|8W_v&i|$TL??^?6uxNt_)lx(Sz)Mpp2z<U{{{Sy@n6J$1OFxbSMgu&IQV)M z5DMZ52>*2*`zHQ-_;2CAga391wpaXj2kiIpKa`;8|I!f4fwn)v{|^6C{IBsp!~a6+ zf8G)Bzr@$)KdM^2|M$PuobT~}!WT;bzI+8x%(nmkqO<%uknwkdiShry{}*3u{_+39 z{|EnX!RZQ9b^b>%KEYT7;}VQbFixk|aR}t*zsnU&Kro@o6-?CEA((_<8iGj)rXrY( zU<!iC``*?dm{O}DZ>R2Vr9Cadj0DpW$o?Npud;Ww1v3%MB55<L5QWc1*d7kdPVfN1 z90WTM%t^2Y!CVAO5X?=mFu^<o^AXG|!^fy_QOx`V3lc0K5H+ra2E2<9$j28fO0d`f zXY>_-U`c|N2$mvPo?vN$WeMaG(9NnyvD|>*3Ir<-+^$R@PlSS12v+UmtwA7`fOhx< zJ%Wb7AP5Oe0*}BVa0qNMIcf%6K~{X#{|N%^jR*>Ym>?ra2-1$(zY^p+wj`)qo1p4q zwZaHN3$9799>H1!>qySp+B>lS57sBxh+qSP(fxl*BiNW=6O~cbyeYxf1e+0TA=PyM z54I%ON@Z6g+J;~|f^9{(L?nNEoqb1wGYNJgID}wlg1rcKA=raJ9R3sRM(}^me}X+b z9fG|HWakg|A&|{qW!#_OAc6x34jimR3LdQU9!hW=!C?eP6C6%(B!O!FU7Z9+^<xQ+ zku@Ky^Bzxd3c(2k^86<_ae#TU=A24!I>Bkmr6x`9|AVs#t|mB};1Ys!2+k)sSEe|x z3zzl<1Q!upIDlL%?9n;Al;ARgD+w+q5Y1oYl8IWIK)wQqIlPA8HiByjZjktO@_K#8 zB)E~_W`djgbrRe{pgO<i+)f}4{0Z(LxKkw(Defk?SE}99fduyv+}|h2kOv9dhVT%< zR|F3eyh`v0!LtO95<Erl7=h^d1dpo%g#Dye6V0DMECjle=LlXRc%I-zf)@m?U78@4 z00Pzj30@=kkl=NKcL?4fcuSV_W*0^9wn{37_AbHu1n>1V2|nnH6MRG<cmBc0QvVaJ z@EO4u5>amf1YZhG^|-$#9G~DDf<FkpCHRTpJA&_Z><<J#_6v|AKNI{$@C(7OgSd44 zt~LK89E;#Df`23~mjF@!zXa;!N9l)S6OJo5;W!!@PZ)B>2qz$%f^b5@NhN0@!ifnd zQF-;O5>6()llO7LDG8?{oSKk+k%ZF_PTRkgA=4AugfkE>N;o6oyo56m&Otac;jAr_ zP^<;gX#4-{!?AM`&P_O%AdFTrkLHgdT##@+!Ubgb{3=$dEkr2x{Dcb+Yc58(B4LX! zO}IGWlC2t{_$@#hV*ju0WeAriT$XS-r7-GJZvliW5w1?SGNEYugsTjMucmd@AT$Vj z!li062`#0m@;ZcT61s#bp+^`JivCX+^aWc!VMG`cCJI!s8DU8%o4*Jtbl!@vAruRN zMn;6KYFLYKBf_-_*C$+uaJ?2MTvt`4I2&|)LbVDIZcMlZ;U<Ke5w`qIJ2kDpxw;in zTM}+fC^!E~ZJPn_c0{uhZcq3a;SPjn6YfZO5aCXQ`w;F-xEtXvI=ff`TAOfpLecXH z_voYu_afX|)hs#EyD#B>g!^mG0fa;SpYUM9;|LESJd*HG!ovv<>&P;EwEq(xMR*M1 z(Ss=nb^i~KCp?w#1VY*WL)HHYPbNG?398CZBRrGvbVAknm7o~QS-Q@12yY-fm+(@; z^9U~{JfHAF!V3gJ&S85cyl5cylFlZ)jPNSL%O&9o!YhXhzM4?{=1VAk3znSg2vz6r zlnHMnyhFNfBD|UKR>E6^OFg^W2=)2DLhdBIpYSfidkOC*yk{_@)VWXRdVug@!nXgb zlYg!G2;rlht&ztGe<FN>@NL2;311?7itt%N+5bb?|5f(q2u0f`e7>(h_@d7EGU024 zuLzgmysGin3EymO!Z*4o!nX#(-y!^*@Lj@>2;U<VZJ+RcMG#RRYMqY>KPCKRAXXm! ztJ=OG{EqNT!nW;yB{&NIhVa|IT5Aw~PxvF@4??#4^s1-xGtnf3zYvW>_$%SxgufB~ zAuHGYKm3#MFQumR{~;8epHQFwL}L++t&}@XG%nEuM5_N2jo()wnviHBqKStpj3y<T znrJejDTyW*HAhnjf>e{YQxS>%e}@oFLo^f7v_vxyO-D5SV0Ou$Q8Q<jx3c-G+GZo# zg=lu7fM^b)<%s4aT9{}qqIrqt7J;Gw-T$L8L<<njM>Kz@+2tZykVtR-yZMY3AzFfH zQ6l-_j~3HRx&K$$mn2%6XrTW`%MdL)SU=J7M5__4Aj?>hXk}@vq}5g-603l?Re4t@ zGKtn8G9*(j0i#}v$R)Cg9F;{yc|`s&5)y4d6cH6fv6M=PGHK}ZpGa-~C0G)zO;iz$ z5Y<G@u-ckLYqhjKNVE>o`b6sziB&-0vXagw+K^}~qK$|)CE8f(Z$hL$1FGiDh_)o! zoM?-_Y(E9j)<ioHZ9~+y{cZcWl-j<3OSB`=PDDEoXWy0RWTM@O4kOx~XkQt%2hpBH zdlT&?!u42)_UU4Y_9Hq-GWRDsfat(JM-vVvI)v!ZL7eDtqT`5;AUc}p$j(J{ls1kL zhWG>?t3{5Nw<pN!i9})*P{p@j!{`*E%ZN@TI*;fyqBDt37X+c8{tAfbETVIW&h7^i zo!fC*9isCk`2wPgi7q6%NYT`sUqW>0FmgH3^+Z<?T}^bQjJ;~0o@<D%ReVvyb)8Lg z1JSKSHxk_}LvB(WQNS%KT<~urx}E5bJ|Zi;OZ+$W(cSWTkG$S1ulG^3edd1BEr=c< zX}_co61R`<A>#H6{xH#xM2`@?P4p<y^F)skJu&T=Hbn0Kh4CcOGel1jJuNbhk$<Bo z@MnphQ-}nKULbmv=tZKJrNT=cnMiK_Wh~KaL~jzkPV|P7QutfqR_VM$^f}SHL?02o zNAy996UkqJh4JA4^JAh<i9YEglKELz710+&UlV;PykZW&()c$--$~?K?fRbRhtAf> zPs9@v{Y>;X(Jw^5w>Z(SGU_+Q6q<h!{Yms!ACa_wh{q%Pmw0TV|A@y@-mZ*z9Af$V zue=qmRyiJ@SPfs^PDBjx#Kcn)PeMF7@ub9)b@i)J#8Y&!`gSU9Oier^@ifHK5zAKq zm3MmL8HN>RBA%6aX5v{C-j&pjE1pe=3u6xAh<HxoWr^n^UW9mV;suE3A)b$TUg9ww zvwtO?U&k&;yl`t1FEpr6yeRRK#ETIxE>p-Zr{+QK|3%1B#LGzU(kiz5oW#o!_lTD# zUYU3W;+2S36zRIkRn4mquTH!wvE2D<7x5Z>8nHp_5}U*}u{E5+>1f0ranRbt{y<>Z zk%?pCjfoTD5#p4%B+eu`Czd;ZT@`Uf+(=ig5~(`ZBwmkrE#h^E*A^*8OI^3KiPtCI zP{wYc^KR5<5^qAhE%E<|w;<lMB@k~$yt&d*Gqxr1)>2_Bg^Lkw)7iw^5$`0u+Y|3V zyyI|%I}`6Jy}Jy=?xth+Aby#6PvXmn_aZ)ycyHpvi1#5rka%C>{blTaeNEy6^e7G@ zK7{z-zN};(s+A8XK9cwdajWL)DB@#?j~+md?Og4Z_;}*8h)*CsmH0&BlZj92Gv&0L zqVt|ce1;4;eIWcy?LC|LLgI6X&nG^Y_`E(x5XAIepqUpDUqXCwKMV1t9Y=~^PJB1< z6~xyOUrBs5@l}1MBwQn};$1)**Aw4Ld;{^##5WSl!=KTy-_nmIzKvLPe&XA8?488o zEJ$#a+C9XN5#LMv0P%fN|Na4m2Z<jherSOI2=Sx+TPglH@iW9v5I;ryq>xq0PxooW z&l0~t{2cM~omX>SBvzeYBd-wuOZ+PFH^i?Ie@y&3@jJwC5R12fR+IQGVtM#8I*NCR zKOlaOSatp`HSveU9}Q>xg!oJ1Pl-R5Qo8@gUx<)V!LNwF9=QFM_*dfZh}%~GJ@Jn+ zR<8o8s-KB}Q6UQXjrdPuxg5lQ^wnhSU&MbC|1%1T$Mhe`)Ffk(Ohhs^$#^8=2y!y+ zC{5gsPtsl|RA84YnV4j9NuGpcQj+2RpG-kAmGn;8MUfy3IbM=!NM<FOmShIWnND8i zTYyM6BgxDXnMw0!5r&GLjbv_;*-7RknWF=>YcBP?l6gqRkjy*iZEceINuDNIfMjoy z1xYfJg-BK+S(s!wl0`_CAX$_|KJ;X<emKeEI>nMC%aANZGSvB{__CU_yu4jO+=`?t z>Z(>IaY<Go>5;5TvbyxHCTQ)mNCx_UVvtxQX6KSLn?!Yf&G$%R5}zc{`XPz@`yVMN zqY`;dyAWyTB%6^GB<qlrBn?R=yrRy!qmhh|tWB~e$y%LqhwCislE|K)tVgmw$p*vT zjY$4SvN6dfgLrF`h$TQ8o0IHJvIWUDBwLbfrE#$kXnR|d9Z0q#*}g+Gz9Y#_!^kcq zdywo(vO9@t{z6Aek?h&oBztLveMl}R*_Y%blKn^yC)uCmpq55*fV>{4V-F@dR3e9H z<gm_=;1MLpk{n4Q+CIrq1FmCquH#5fkly1pa-yKA+D;}ppX3yhGf7S*k%#|6>U0vh z^B-lNMRHE7KytR$IhW+T&em!dkX%A?p-guXiERGugv&XX;HC0<ndV<Xau>;!BsY*; zMRG04)si3&e`JO7_BwgJUgy1$<aUyqNNy#$nMCgVN6EJdntIB2$iO?>tN161znkPi zl6y!*!zU5H0+Wa(KpGDWFdrg$l;mMadt?BAjN}QD$GZ^eeUjv<{;kw`hIB@fXGwl0 zd5+{GlIKa@AbEl0RgxD;<o-W-sU>%TB=QwNl=Pa^d|lwGsy9jAAyNB(lD9SfF3ATZ z?~%OUAsUy5KWYX(Ci#lw6OzwKK5YpkpN*2m?H43!|1Z5?ll(yP4as*T--_~-&i5ip z)gu-HIn1B5_ZQL$Nq!~ym*h8+Kc&>~B%}SG<S&wcNdE5YXp#R&$0Hq!RJQ$eY=x)t z6`;$WjxW-sssJILPDDBt>BOXykxrsRCe?;q6w)b3r|b}oLpq(5nwoSPQoZ??!)ZCB z)02wjK=WrJU4wLH(nU#UA)SwOR?@jiXCs|M>d0RKMBtpHs`KmEc}VBg_UJ1B>HMS% zkuK1>NEhq~(q33z7ZFG|z3F14%aXPOUy@Wbf6^s7m$a86)%{<%meEnmk*-3zJn2fL zE0C(ruL8w1uG~E}DY7c*YNV?xM9p@Ov?eu3eNvOuA+;pgRw5#uD{NtS9Y`9GrlcWh zOd9o>l9OmoMp}~Qq{U!HIg?d~kT#?nkdBb9OS&eh*!GjIr4`l@hMJ%CI-7KTjciD| zDd|R}qVtn(tTq4FG4<_cq?`8<(k;nuAl-_r{YY$0+8zaLLwXYFwxs)$Zb!Ns>Gq^M zk?ugcW0$MDlI~2pi?+p!fVOuh-HUV&eJhs$G5LFw?%RT-`*bd8@26=8kRCyLAnBnJ zKZx{T(nI=8UH@UNL3+53I+FA_(xXU^Aw9a|Xr_7vAU$3Ro<J&_zkJYA<YdxoNlziY zkn~j2vq?`QJ(KiwQr-VMvZ(niEqe~>`K0HPo~LS4pPUQCt$I2akzP)EG3li;(IpyJ z&A+`Ry@FI6`;f|C0R(b2>2UK;uOq#c^m@{pWk~y^ZX~^_Q|s!HxLO5BZzH{n^mbBt z{v+!ly;E0yH|f2Se@~}Cs+zw9A0Yja^g+_sNgpC@+xWwzPm(@D`WWe>B1DbuandI` zd!Pof3Xndnb3IG?66tfKFG&1(9V-w2mCnnguadr^q*S$H31~$~-yr>r^i9(DN#7!U zN9w4z0Md6!-|J_W{0~S!CjF4~BPFPw%O|9tDyBj{C;gW63(~Jiza;%?nE#EsRrP#F z`aP*U{FjBvGJYZ(kMw8Ke@WZ^{|D)>690`<p8St8|0ES{pY*SOwWOnO0i^$tjYTH= ze>Qf<AsgNQlZ{U{CD{aIlaftHHnC94CTg!@)S2x6%ASmD3JHoOK&2C$sl=^_f^2Gm zck_@<OST@_bY#nsO;0v2*$iZJlFdjaHvD8Wk<HwfBAb<Lc8Sl{fn;JKP>BS8F6o_H zUgy!AF=TBG^N}q~Hb0qY`(z7r-ZqwOA<Y#1pKMXG#gwM1b8)hzq)RLTWJ_xP(qy{x zXKM2=3Coi?WGj%ZB5zkDTS<h7Sk?c@RwXmZRwL_?txmRvAn37>8R}L=i6bB~y93Ew zvVzPbOUQh(h%6veCqG@~WN}}CES2FIS>AayrzBgGtRid3)aGAAi8@C#XDzaI$izZ0 zASi$T6}0uqjw0KDY$vh}$u=X~h)nkXY~zkkCi*|wrUT)dlWjw`1=&_)TlR5D+q%0Y z+m>txvhB#WR|NGe<Psp~ifm`HeaUtq+ly>hvOUOlBinscP)wR^{*o{C_m)#3&;LbL z`;i??wm+Hp<(KRLo&6wTs4Rz&9Zq&Andtlj_z`4Bb{x$-n(Q31W5`Y-6V0FOI5NHS z&rTpaaaiGGGO_0;J4KRD?Yv~ClbtE?GqmzqWM_A_=A27*IoWw+myn%LCb#{WKL5!s zBD+}eN5_7t)YSX`><Y4L$*v^3n(Qh;9%brPKn&qJGPU`a;Wv`E5AG)NX~=FS`<Uz& zvS-L{C3}eMHnMxjZYL8xpG>U+WOtF>-BsRQ$?he4fb2dp@h%`hJ-1{JYR<!CkCQz@ z_Grf;d#qn4*%M?>wM?=n2P)V7KYNz!4YKFRULkv)>?N`n$X@I-bqet=AVpp!)15yX z*#Bp5lF81Wz11?w-q!qg$vz-^k8F7VpM6O7k;<Yzv7eCrNA@Y%&t#vGeM9y+*_TpH z{4J<7z9Rd2IO<!nAIQEV`(ELy&L7Ft&R@s=LiQKguVlZI{nmkUM1PR|scuJ~?B8Vn zko`N9D<6w|V)C)c$0wHyK|U_|c>ix~J^}fJ<f`*`3gnZJPfk9mxNYYrpR9`_pMrcU za`_6-Rh~mGn}5HUd|L7~$fqM;lze*fdB|rVpN)J*@|nqJ>NLez@>$4d?J{cp*~#Z3 zpM!i(RcHV6lZ*Z@qvj=_pL~ogY(7EjW;<Vid|~nh$%jw=bGiRloW;nOBX3hLNxpbj z3AsN1&zB+>ou7Q*Eg)Z3>n~5fGWiOUup;?N9WF$~SXLolO}bXq{MCg^d3)p)xj`P2 zo8&&ZMefKzTk~CVwe#0VKpshsUImm|LY|YSGF{fC=yH)4<Yi~ez?ytR@`ikE@)7bi zJ2JW4{42F}$k!uZx35FKKKTafR?XW+<eQRjO#VM|u@DS<H|r4c&2{BllHX6h75Qo8 zTa)iYz76@#<lB<(NWLBU4s8he_8q@dBj2ghk(KX4z6ZJ3|C8@VzPn<odiIo@y~y|O zVmmMSzT`)e??-+J`Tpbwksm;QpyH_U9z2lcP;#;7CqJy?kRQ<}lOIKX0{PM8vhC-` zXwGrus{iY}Cz78mbxzXADdej2>!{PouO&Z&`~vbb$<HG{i~JlJrB(s*a|Kz|d46X| z!iD6QkzYi93Hj&}Kz``}|8nxH$gdz*JAYlt)#TUorCN~uI`Z4euP2xL|NI8>8_93# z_&Vwq@>{zo^4t31<adzY-QJSlNq*M=eh;~L3lQNVg?a@be}Mcm@(0OZB7cbdDe{NO zAC(G^=v<GHKOv(Y?-a-fnt%Q@`3vOFkUuA*p4Cy$3$mK4(ItTVW%BpQUm<^+{8jQd z$X_FWy^GSZZ<347FK*>0N-DoY{w}%R|Eo{h2jm}<e<%rh2@u2oqzxqhREVe=J}3W! z{0s7*$iF22hFrV?kn1Ht*x!<i&QJcGuH*;uANw^(&7aACCI4kW`M1s{|6Ld&@1NxV zlK-XgzsdjUT<w+oKZ>!1QH<4r6ys2gM=|awrx;(@omw#=)pZmTQ8pA4Q`|r?3B~#p zlTs{2F&V{d6q8fTKrscyv=mcP(8f|sr4^>8m}Y1c#dMuMg+Bi;W~7)!M$JSqu>UXQ z5}+!Xonj%1IVi?Z%t<jfh1mS-Eb~yztFm-Yr<jjo0gCxMLdT?7u;WlHOtBcnB4Wmh zMF(`++a)L#AB_?Oz5g$krU)sPq3BU8OR+M=auh34EKjk*@EBL>D^RRLu^Ppy1IX$W zYYg)Z3Wvg^uqmuQvok1M3ZFtQ0ctjaK8GTrs3~HKoFbt}b<}YGFA9p1LY@3*PWxEb zrWm16{lCR2*3z@Ij=Wu$V!e*9@eL@BpxBUNXNrv|wxrmYVl#?OD8%N!rBQ6ELgX`| z*qmYufhg}*6gyIEO|c!tHWb^Al11$H6k-(+>D1F4=>Nqo6#G-`O0gHkZWMb^$X5WR zEcgE^YHtd?^Dp+L*soL5ng>uELUAC)!4z`;FQc^gPzv4o3$YOB%8#TtkK!nb(<qLn zIFaHQisLDcr8sU_|AhW6#Yq%$&tHhOpv5Up9nd_T;w*|YwChZ5h~`gm4ux#~qqA{7 z#g!BnP+UfFA;l#W7g3Bhf2n_IUtfw`PI1LBauvnZ6xT|x+W%8rM=`qjm#!Nr+b{l2 z6mL=7Oz|wmEffz>+)8mb#cdRKP~6^Ernr;hE;Vp9(t9XG&!-UQ{~eR!eqo4tc#z^T ziiap3p?G*e=TSkHe2T{@o}zeyLN|YfKTYwB(p1QE6t7S`Pa)bq#S2{)X}?7A@__!U z6r%G}yr#3f(RnG}?4l^%rudQK9g5E=-lh1E;yo$#KE($eM>9X7_=Mu)K1lJYu+<np zr}&EEiw>a>?*cOQ*A(ATd_y4*|0USED88rA=Rb=16UBcNKU4fc@e9Ro6u)*NT2uG` z;!lddDfHow7~nq?|EgK))XK3a$EO^da$HKW|L;ptj@Q|g6Hrd5ZTSkIVke<of^t&I zSt%!@oQ`sG%Bd-*pqz?wVE<ntl6KFfoTincoVK4x-cC<B1LaK8p0RUL&P+Lrs#e9$ zM!5jx?38m;&Oxd7|3XkM0qq#ec_`<joR@OUV60T0U)Qi8<zkczQHpIp<-%P?X)mfd z;`2!<`@b6Rl9VRpQj{xGE={={rFapLv}J`MvM*1$BBfpeRM~0?pj?G=HOhhhU#?Es zlL~8S1*0=0Xi-L#Hf2ERP<oWE@Ty#XpDD>||4$iH=9Gy9Q_6wnFDfi3E9olrNb9~1 z<p|X{lxtF6L%9~^fs|`gZcDii<tCKtQf^4O9;Mj%Q?B1BsH;FWqEv_fayI@)xw&L+ zO1arUmMti^qTI3{PPsMZHhqGO-Hvj1%Izt4rrd#YC(0cKL5{r(q}-*wrQDTrx8c}5 zDEFom{hxBLzKe1n%Ka(#r5x`6<pF}DX7wP-Gbj(HJf89p$|ETcr4((SQm+E#5d-|A zD37H)no{ljI~~bCuCpmmpcLJn@<e$(N#mzbo+c5w1c;||dgqehnUrFCPk9#Q*_7u} ziWdPjX#zj5yQRE<@-oT`DKDYCh*JKSzoR3%v>!!zIptN9S5WHxzZ&(`1DtCq-=w^b z@)64GDetDdf$}!Ww*TKkc@yQ$eX@QKx9Uo6r@WK$j!}ZBQ>_A&_fU#%PkAq;-2AKT z4^TctDGz_-S4MsS9@gTIQa(rd7^Ud>l#f$B(buPZit<^?rzwZ}zm9#L@-@mAC|{<0 zk@6)KsJ@u5P`=ui(jjs!DCH6$p2%C2KT^I;`7z}?lpj#OOZh&f=>J`a4wU=<a$x^o zenR;b<)@UNw`9uCx)91QD8C$z{hIPS%5Nxj|5r2fJ>?H7k*fJ8%0DT8ru>ca7b*Lz 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 dX~)x}*+8@a=~G;)WyYp_%kYhi6; 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±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%0DRn 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 literal 0 HcmV?d00001 diff --git a/internal/requestclient/geolocation/geolocation.go b/internal/requestclient/geolocation/geolocation.go new file mode 100644 index 0000000000000..0afa72b734c8f --- /dev/null +++ b/internal/requestclient/geolocation/geolocation.go @@ -0,0 +1,54 @@ +// Package geolocation provides a geolocation database for IP addresses. +// It currently uses https://db-ip.com/db/download/ip-to-country-lite +// +// More details are available in internal/requestclient/geolocation/data/README.md +package geolocation + +import ( + _ "embed" + "net" + + "github.com/oschwald/maxminddb-golang" + + "github.com/sourcegraph/sourcegraph/internal/syncx" + "github.com/sourcegraph/sourcegraph/lib/errors" +) + +//go:embed data/dbip-country-lite-2023-11.mmdb +var mmdbData []byte + +// getLocationsDB holds the MMDB-format database embedded at mmdbData. +// It is only evaluated once - subsequent calls will return the first initialized +// *maxminddb.Reader instance. +var getLocationsDB = syncx.OnceValue(func() *maxminddb.Reader { + db, err := maxminddb.FromBytes(mmdbData) + if err != nil { + panic(errors.Wrap(err, "initialize IP database")) + } + return db +}) + +// InferCountryCode returns an ISO 3166-1 alpha-2 country code for the given IP +// address: https://en.wikipedia.org/wiki/ISO_3166-1#Codes +func InferCountryCode(ipAddress string) (string, error) { + if ipAddress == "" { + return "", errors.New("no IP address provided") + } + ip := net.ParseIP(ipAddress) + if ip == nil { + return "", errors.Newf("invalid IP address %q provided", ipAddress) + } + + var query struct { + Country struct { + ISOCode string `maxminddb:"iso_code"` + } `maxminddb:"country"` + } + if err := getLocationsDB().Lookup(ip, &query); err != nil { + return "", errors.Wrap(err, "lookup failed") + } + if query.Country.ISOCode == "" { + return "", errors.New("no country code found") + } + return query.Country.ISOCode, nil +} diff --git a/internal/requestclient/geolocation/geolocation_test.go b/internal/requestclient/geolocation/geolocation_test.go new file mode 100644 index 0000000000000..01b513905f17c --- /dev/null +++ b/internal/requestclient/geolocation/geolocation_test.go @@ -0,0 +1,72 @@ +package geolocation + +import ( + "testing" + + "github.com/hexops/autogold/v2" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func BenchmarkInferCountryCode(b *testing.B) { + exampleIPs := []string{ + "61.144.235.160", + "93.184.216.34", + "2606:2800:220:1:248:1893:25c8:1946", + } + for n := 0; n < b.N; n++ { + _, err := InferCountryCode(exampleIPs[b.N%len(exampleIPs)]) + if err != nil { + b.Log(err.Error()) + b.FailNow() + } + } +} + +func TestInferCountryCode(t *testing.T) { + for _, tc := range []struct { + name string + ipAddress string + + wantError autogold.Value + wantCountryCode autogold.Value + }{ + { + name: "empty input", + ipAddress: "", + wantError: autogold.Expect("no IP address provided"), + }, + { + name: "not an IP address", + ipAddress: "sourcegraph.com", + wantError: autogold.Expect(`invalid IP address "sourcegraph.com" provided`), + }, + { + name: "example 1 valid IPv4", + ipAddress: "61.144.235.160", // example from OSS datasets + wantCountryCode: autogold.Expect("CN"), + }, + { + name: "example 2 valid IPv4", + ipAddress: "93.184.216.34", // ping -c1 example.net + wantCountryCode: autogold.Expect("GB"), + }, + { + name: "example valid IPv6", + ipAddress: "2606:2800:220:1:248:1893:25c8:1946", // ping6 -c1 example.net + wantCountryCode: autogold.Expect("US"), + }, + } { + t.Run(tc.name, func(t *testing.T) { + code, err := InferCountryCode(tc.ipAddress) + if tc.wantError != nil { + require.Error(t, err) + tc.wantError.Equal(t, err.Error()) + } else { + assert.NoError(t, err) + tc.wantCountryCode.Equal(t, code) + } + }) + } + +} diff --git a/internal/requestclient/grpc_test.go b/internal/requestclient/grpc_test.go index 908ff4c3942c6..8b93bb1367bb6 100644 --- a/internal/requestclient/grpc_test.go +++ b/internal/requestclient/grpc_test.go @@ -5,7 +5,8 @@ import ( "net" "testing" - "github.com/google/go-cmp/cmp" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "google.golang.org/grpc/peer" ) @@ -109,9 +110,14 @@ func TestPropagator(t *testing.T) { md := propagator.FromContext(requestCtx) resultCtx := propagator.InjectContext(requestCtx, md) - if diff := cmp.Diff(test.wantClient, FromContext(resultCtx)); diff != "" { - t.Errorf("Client mismatch (-want +got):\n%s", diff) - } + + // Explicitly compare exported fields because cmp.Diff doesn't work + // when there are unexported fields + rc := FromContext(resultCtx) + require.NotNil(t, rc) + assert.Equal(t, test.wantClient.IP, rc.IP) + assert.Equal(t, test.wantClient.ForwardedFor, rc.ForwardedFor) + assert.Equal(t, test.wantClient.UserAgent, rc.UserAgent) }) } } diff --git a/internal/requestclient/http.go b/internal/requestclient/http.go index a06b6036a7cd6..78b1bef5ec03f 100644 --- a/internal/requestclient/http.go +++ b/internal/requestclient/http.go @@ -63,6 +63,15 @@ func InternalHTTPMiddleware(next http.Handler) http.Handler { // httpMiddleware wraps the given handle func and attaches client IP data indicated in // incoming requests to the request header. +// +// hasCloudflareProxy enables a variety of features that assume we are behind +// a Cloudflare WAF and can trust certain header values. We have a debug endpoint +// that lets you confirm the presence of various headers: +// +// curl --silent https://sourcegraph.com/-/debug/headers | grep Cf- +// +// Documentation for available headers is available at +// https://developers.cloudflare.com/fundamentals/reference/http-request-headers func httpMiddleware(next http.Handler, hasCloudflareProxy bool) http.Handler { forwardedForHeaders := []string{headerKeyForwardedFor} if hasCloudflareProxy { @@ -80,10 +89,24 @@ func httpMiddleware(next http.Handler, hasCloudflareProxy bool) http.Handler { } } + var wafIPCountryCode string + if hasCloudflareProxy { + // Use trusted Cloudflare-provided country code of the request. + // https://developers.cloudflare.com/fundamentals/reference/http-request-headers/#cf-ipcountry + // + // Cloudflare uses the "XX" code to indicate that the country info + // is unknown. + if cfIPCountry := req.Header.Get("CF-IPCountry"); cfIPCountry != "" && cfIPCountry != "XX" { + wafIPCountryCode = cfIPCountry + } + } + ctxWithClient := WithClient(req.Context(), &Client{ IP: strings.Split(req.RemoteAddr, ":")[0], ForwardedFor: req.Header.Get(headerKeyForwardedFor), UserAgent: req.Header.Get(headerKeyUserAgent), + + wafIPCountryCode: wafIPCountryCode, }) next.ServeHTTP(rw, req.WithContext(ctxWithClient)) }) From 1f857814717cf5afdb128eb005df93df5b81cc2a Mon Sep 17 00:00:00 2001 From: Robert Lin <robert@bobheadxi.dev> Date: Wed, 22 Nov 2023 15:32:53 -0800 Subject: [PATCH 122/222] dev/msp: add CloudSQL integration (#58420) This PR has 3 major changes: 1. Provisioning a Cloud SQL PostgreSQL instance: `resource.postgreSQL` 2. Updates to the MSP runtime for connecting to the database 3. Publishable `msp-example` for the `msp-testbed` deployment, for testing integrations and other MSP features, and adds an example Gorm setup Closes https://github.com/sourcegraph/sourcegraph/issues/56848. For more context, see go/msp ### `resource.postgreSQL` This change adds `resource.postgreSQL` to the spec for provisioning a Cloud SQL database. Example: ```yaml resources: postgreSQL: databases: ["primary"] cpu: 1 memoryGB: 4 ``` When configured, a Cloud SQL instance is provisioned, and the Cloud Run workload SA is granted access to it. The specified `databases` are also created. `cpu` and `memoryGB` are used to generate the custom VM to provision the instance with. A lot of the base configuration for the database instance are taken directly from what we use in Cloud: https://github.com/sourcegraph/controller/blob/9cac1b1aa0dde038280d424f4d4b6c34ffb22e36/internal/resource/sql/sql.go#L116, and is similar to the Redis setup, in that we need the private peering VPC and install additional certs on the Cloud Run instance. ### MSP runtime `service.Contract` now has a helper, `GetPostgreSQLDB(database)`, for generating the appropriate configuration for creating a connection to a given database and returning a `sql.DB`, which most libraries have adapters for. The helper sets up `pgx.ConnConfig` that uses workload identity to connect directly to Cloud SQL, following the guide here: https://github.com/GoogleCloudPlatform/cloud-sql-go-connector?tab=readme-ov-file#automatic-iam-database-authentication In local dev, `PGDSN` can be used to hardcode an appropriate value. ### `msp-example` I've moved the MSP example from #56846 to the top-level `cmd/msp-example,` and set up some guidance for publishing it. This service now also includes a simple database connection and setup using Gorm, used by https://github.com/sourcegraph/accounts.sourcegraph.com, and can be used for testing, e.g. https://github.com/sourcegraph/managed-services/pull/87 ## Test plan - [x] Deploy https://github.com/sourcegraph/managed-services/pull/87, which will connect to the database and set up some tables - [x] Review diff: https://github.com/sourcegraph/managed-services/actions/runs/6951246277 - [x] Tear down database in https://github.com/sourcegraph/managed-services/pull/87, with caveat: requires state surgery. Should be rare enough (we might prefer to tear down environments entirely) - see docstrings in package `postgresqlroles` --------- Co-authored-by: Michael Lin <mlzc@hey.com> Co-authored-by: Joe Chen <joe@sourcegraph.com> --- .../internal/auth/azureoauth/BUILD.bazel | 1 + .../internal/auth/azureoauth/provider_test.go | 3 +- .../auth/bitbucketcloudoauth/BUILD.bazel | 1 + .../auth/bitbucketcloudoauth/config_test.go | 3 +- .../internal/auth/githuboauth/BUILD.bazel | 1 + .../internal/auth/githuboauth/config_test.go | 3 +- cmd/msp-example/BUILD.bazel | 63 ++ cmd/msp-example/README.md | 9 + cmd/msp-example/image_test.yaml | 15 + cmd/msp-example/internal/example/BUILD.bazel | 19 + cmd/msp-example/internal/example/example.go | 138 ++++ .../example => cmd/msp-example}/main.go | 3 +- deps.bzl | 622 ++++++++++-------- .../internal/resource/cloudsql/BUILD.bazel | 22 + .../internal/resource/cloudsql/cloudsql.go | 194 ++++++ .../internal/resource/gsmsecret/BUILD.bazel | 1 + .../internal/resource/gsmsecret/gsmsecret.go | 4 + .../resource/postgresqlroles/BUILD.bazel | 18 + .../postgresqlroles/postgresqlroles.go | 58 ++ .../resource/privatenetwork/BUILD.bazel | 2 + .../resource/privatenetwork/privatenetwork.go | 49 +- .../internal/resource/random/random.go | 2 + .../internal/resource/redis/redis.go | 6 +- .../internal/stack/cloudrun/BUILD.bazel | 4 + .../internal/stack/cloudrun/cloudrun.go | 101 ++- .../cloudrun/internal/builder/builder.go | 9 +- .../cloudrun/internal/builder/job/BUILD.bazel | 1 + .../cloudrun/internal/builder/job/job.go | 12 +- .../internal/builder/service/service.go | 11 +- .../internal/stack/iam/iam.go | 4 + .../internal/stack/project/project.go | 1 + dev/managedservicesplatform/spec/BUILD.bazel | 11 +- .../spec/environment.go | 67 +- .../spec/environment_test.go | 80 +++ go.mod | 68 +- go.sum | 150 +++-- lib/go.mod | 47 +- lib/go.sum | 106 ++- .../example/BUILD.bazel | 18 - .../example/internal/example/BUILD.bazel | 14 - .../example/internal/example/example.go | 70 -- .../service/BUILD.bazel | 3 + lib/managedservicesplatform/service/config.go | 85 ++- lib/pointers/ptr.go | 7 + monitoring/go.mod | 19 +- monitoring/go.sum | 59 +- 46 files changed, 1576 insertions(+), 608 deletions(-) create mode 100644 cmd/msp-example/BUILD.bazel create mode 100644 cmd/msp-example/README.md create mode 100644 cmd/msp-example/image_test.yaml create mode 100644 cmd/msp-example/internal/example/BUILD.bazel create mode 100644 cmd/msp-example/internal/example/example.go rename {lib/managedservicesplatform/example => cmd/msp-example}/main.go (64%) create mode 100644 dev/managedservicesplatform/internal/resource/cloudsql/BUILD.bazel create mode 100644 dev/managedservicesplatform/internal/resource/cloudsql/cloudsql.go create mode 100644 dev/managedservicesplatform/internal/resource/postgresqlroles/BUILD.bazel create mode 100644 dev/managedservicesplatform/internal/resource/postgresqlroles/postgresqlroles.go create mode 100644 dev/managedservicesplatform/spec/environment_test.go delete mode 100644 lib/managedservicesplatform/example/BUILD.bazel delete mode 100644 lib/managedservicesplatform/example/internal/example/BUILD.bazel delete mode 100644 lib/managedservicesplatform/example/internal/example/example.go diff --git a/cmd/frontend/internal/auth/azureoauth/BUILD.bazel b/cmd/frontend/internal/auth/azureoauth/BUILD.bazel index a45e61f328588..6cc67eb5c5585 100644 --- a/cmd/frontend/internal/auth/azureoauth/BUILD.bazel +++ b/cmd/frontend/internal/auth/azureoauth/BUILD.bazel @@ -56,6 +56,7 @@ go_test( "//internal/rcache", "//schema", "@com_github_google_go_cmp//cmp", + "@com_github_google_go_cmp//cmp/cmpopts", "@com_github_sourcegraph_log//logtest", "@com_github_stretchr_testify//require", "@org_golang_x_oauth2//:oauth2", diff --git a/cmd/frontend/internal/auth/azureoauth/provider_test.go b/cmd/frontend/internal/auth/azureoauth/provider_test.go index 6e06f01a62037..b244ef2a06120 100644 --- a/cmd/frontend/internal/auth/azureoauth/provider_test.go +++ b/cmd/frontend/internal/auth/azureoauth/provider_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" "github.com/sourcegraph/log/logtest" "golang.org/x/oauth2" @@ -266,7 +267,7 @@ func TestParseConfig(t *testing.T) { if diff := cmp.Diff(tc.wantProblems, gotProblems.Messages()); diff != "" { t.Errorf("mismatched problems (-want,+got):\n%s", diff) } - if diff := cmp.Diff(wantConfigs, gotConfigs); diff != "" { + if diff := cmp.Diff(wantConfigs, gotConfigs, cmpopts.IgnoreUnexported(oauth2.Config{})); diff != "" { t.Errorf("mismatched configs (-want,+got):\n%s", diff) } }) diff --git a/cmd/frontend/internal/auth/bitbucketcloudoauth/BUILD.bazel b/cmd/frontend/internal/auth/bitbucketcloudoauth/BUILD.bazel index 54cc22cdf55f4..e38440441aa64 100644 --- a/cmd/frontend/internal/auth/bitbucketcloudoauth/BUILD.bazel +++ b/cmd/frontend/internal/auth/bitbucketcloudoauth/BUILD.bazel @@ -69,6 +69,7 @@ go_test( "//schema", "@com_github_dghubble_gologin_v2//bitbucket", "@com_github_google_go_cmp//cmp", + "@com_github_google_go_cmp//cmp/cmpopts", "@com_github_sourcegraph_log//logtest", "@org_golang_x_oauth2//:oauth2", ], diff --git a/cmd/frontend/internal/auth/bitbucketcloudoauth/config_test.go b/cmd/frontend/internal/auth/bitbucketcloudoauth/config_test.go index 972622903d946..183cbd721de2a 100644 --- a/cmd/frontend/internal/auth/bitbucketcloudoauth/config_test.go +++ b/cmd/frontend/internal/auth/bitbucketcloudoauth/config_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" "golang.org/x/oauth2" "github.com/sourcegraph/log/logtest" @@ -210,7 +211,7 @@ func TestParseConfig(t *testing.T) { if diff := cmp.Diff(tt.wantProblems, gotProblems.Messages()); diff != "" { t.Errorf("problems: %s", diff) } - if diff := cmp.Diff(wantConfigs, gotConfigs); diff != "" { + if diff := cmp.Diff(wantConfigs, gotConfigs, cmpopts.IgnoreUnexported(oauth2.Config{})); diff != "" { t.Errorf("problems: %s", diff) } }) diff --git a/cmd/frontend/internal/auth/githuboauth/BUILD.bazel b/cmd/frontend/internal/auth/githuboauth/BUILD.bazel index 350c8a946ec51..56d35f793ca7d 100644 --- a/cmd/frontend/internal/auth/githuboauth/BUILD.bazel +++ b/cmd/frontend/internal/auth/githuboauth/BUILD.bazel @@ -73,6 +73,7 @@ go_test( "@com_github_davecgh_go_spew//spew", "@com_github_dghubble_gologin_v2//github", "@com_github_google_go_cmp//cmp", + "@com_github_google_go_cmp//cmp/cmpopts", "@com_github_google_go_github_v55//github", "@com_github_inconshreveable_log15//:log15", "@com_github_sourcegraph_log//logtest", diff --git a/cmd/frontend/internal/auth/githuboauth/config_test.go b/cmd/frontend/internal/auth/githuboauth/config_test.go index 8e781503a4aa8..9a5a8ab5219c7 100644 --- a/cmd/frontend/internal/auth/githuboauth/config_test.go +++ b/cmd/frontend/internal/auth/githuboauth/config_test.go @@ -5,6 +5,7 @@ import ( "github.com/davecgh/go-spew/spew" "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" "golang.org/x/oauth2" "github.com/sourcegraph/log/logtest" @@ -274,7 +275,7 @@ func TestParseConfig(t *testing.T) { if diff := cmp.Diff(tt.wantProblems, gotProblems.Messages()); diff != "" { t.Errorf("problems: %s", diff) } - if diff := cmp.Diff(wantConfigs, gotConfigs); diff != "" { + if diff := cmp.Diff(wantConfigs, gotConfigs, cmpopts.IgnoreUnexported(oauth2.Config{})); diff != "" { t.Errorf("problems: %s", diff) } }) diff --git a/cmd/msp-example/BUILD.bazel b/cmd/msp-example/BUILD.bazel new file mode 100644 index 0000000000000..872fd1eebf8b0 --- /dev/null +++ b/cmd/msp-example/BUILD.bazel @@ -0,0 +1,63 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") +load("@rules_oci//oci:defs.bzl", "oci_image", "oci_push", "oci_tarball") +load("@rules_pkg//:pkg.bzl", "pkg_tar") +load("@container_structure_test//:defs.bzl", "container_structure_test") +load("//dev:oci_defs.bzl", "image_repository") + +go_library( + name = "msp-example_lib", + srcs = ["main.go"], + importpath = "github.com/sourcegraph/sourcegraph/cmd/msp-example", + visibility = ["//visibility:private"], + deps = [ + "//cmd/msp-example/internal/example", + "//lib/managedservicesplatform/service", + ], +) + +go_binary( + name = "msp-example", + embed = [":msp-example_lib"], + visibility = ["//visibility:public"], +) + +pkg_tar( + name = "tar_msp-example", + srcs = [":msp-example"], +) + +oci_image( + name = "image", + base = "@wolfi_base", + entrypoint = [ + "/sbin/tini", + "--", + "/msp-example", + ], + tars = [":tar_msp-example"], + user = "sourcegraph", +) + +oci_tarball( + name = "image_tarball", + image = ":image", + repo_tags = ["msp-example:candidate"], +) + +container_structure_test( + name = "image_test", + timeout = "short", + configs = ["image_test.yaml"], + driver = "docker", + image = ":image", + tags = [ + "exclusive", + "requires-network", + ], +) + +oci_push( + name = "candidate_push", + image = ":image", + repository = image_repository("msp-example"), +) diff --git a/cmd/msp-example/README.md b/cmd/msp-example/README.md new file mode 100644 index 0000000000000..6e80721677654 --- /dev/null +++ b/cmd/msp-example/README.md @@ -0,0 +1,9 @@ +# msp-example + +This service is an example service testing and demonstrating how to build Managed Services Platform services: [go/msp](https://handbook.sourcegraph.com/departments/engineering/teams/core-services/managed-services/platform/) + +## Pushing a new version + +```sh +bazel run //cmd/msp-example:candidate_push --config darwin-docker --stamp -- --tag insiders --repository us.gcr.io/sourcegraph-dev/msp-example +``` diff --git a/cmd/msp-example/image_test.yaml b/cmd/msp-example/image_test.yaml new file mode 100644 index 0000000000000..57457be5f140c --- /dev/null +++ b/cmd/msp-example/image_test.yaml @@ -0,0 +1,15 @@ +schemaVersion: "2.0.0" + +commandTests: + - name: "binary is runnable" + command: "/msp-example" + envVars: + - key: "SANITY_CHECK" + value: "true" + + - name: "not running as root" + command: "/usr/bin/id" + args: + - -u + excludedOutput: ["^0"] + exitCode: 0 diff --git a/cmd/msp-example/internal/example/BUILD.bazel b/cmd/msp-example/internal/example/BUILD.bazel new file mode 100644 index 0000000000000..5b06643921337 --- /dev/null +++ b/cmd/msp-example/internal/example/BUILD.bazel @@ -0,0 +1,19 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "example", + srcs = ["example.go"], + importpath = "github.com/sourcegraph/sourcegraph/cmd/msp-example/internal/example", + visibility = [ + "//cmd/msp-example:__pkg__", + "//lib/managedservicesplatform/example:__subpackages__", + ], + deps = [ + "//lib/background", + "//lib/errors", + "//lib/managedservicesplatform/service", + "@com_github_sourcegraph_log//:log", + "@io_gorm_driver_postgres//:postgres", + "@io_gorm_gorm//:gorm", + ], +) diff --git a/cmd/msp-example/internal/example/example.go b/cmd/msp-example/internal/example/example.go new file mode 100644 index 0000000000000..bcdae9a3312a9 --- /dev/null +++ b/cmd/msp-example/internal/example/example.go @@ -0,0 +1,138 @@ +package example + +import ( + "context" + "fmt" + "net/http" + "time" + + "github.com/sourcegraph/log" + "gorm.io/driver/postgres" + "gorm.io/gorm" + + "github.com/sourcegraph/sourcegraph/lib/background" + "github.com/sourcegraph/sourcegraph/lib/errors" + "github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/service" +) + +type Config struct { + StatelessMode bool + Variable string +} + +func (c *Config) Load(env *service.Env) { + c.StatelessMode = env.GetBool("STATELESS_MODE", "false", "if true, disable dependencies") + c.Variable = env.Get("VARIABLE", "13", "variable value") +} + +type Service struct{} + +var _ service.Service[Config] = Service{} + +func (s Service) Name() string { return "example" } +func (s Service) Version() string { return "dev" } +func (s Service) Initialize( + ctx context.Context, + logger log.Logger, + contract service.Contract, + config Config, +) (background.CombinedRoutine, error) { + logger.Info("starting service") + + if !config.StatelessMode { + if err := initDB(ctx, contract); err != nil { + return nil, errors.Wrap(err, "initDB") + } + logger.Info("database configured") + } + + return background.CombinedRoutine{ + &httpRoutine{ + log: logger, + Server: &http.Server{ + Addr: fmt.Sprintf(":%d", contract.Port), + Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte(fmt.Sprintf("Variable: %s", config.Variable))) + }), + }, + }, + }, nil +} + +type httpRoutine struct { + log log.Logger + *http.Server +} + +func (s *httpRoutine) Start() { + if err := s.Server.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) { + s.log.Error("error stopping server", log.Error(err)) + } +} + +func (s *httpRoutine) Stop() { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + if err := s.Server.Shutdown(ctx); err != nil { + s.log.Error("error shutting down server", log.Error(err)) + } else { + s.log.Info("server stopped") + } +} + +// initDB connects to a database 'primary' based on a DSN provided by contract. +// It then sets up a few example databases using Gorm, in a manner similar to +// https://github.com/sourcegraph/accounts.sourcegraph.com +func initDB(ctx context.Context, contract service.Contract) error { + sqlDB, err := contract.GetPostgreSQLDB(ctx, "primary") + if err != nil { + return errors.Wrap(err, "GetPostgreSQLDB") + } + db, err := gorm.Open( + postgres.New(postgres.Config{Conn: sqlDB}), + &gorm.Config{ + SkipDefaultTransaction: true, + NowFunc: func() time.Time { + return time.Now().UTC().Truncate(time.Microsecond) + }, + }, + ) + if err != nil { + return errors.Wrap(err, "gorm.Open") + } + + for _, table := range []any{ + &User{}, + &Email{}, + } { + if err = db.AutoMigrate(table); err != nil { + return errors.Wrapf(err, "auto migrating table for %T", table) + } + } + + return nil +} + +type User struct { + ID int64 `gorm:"primaryKey"` + CreatedAt time.Time `gorm:"not null"` + UpdatedAt time.Time `gorm:"not null"` + DeletedAt gorm.DeletedAt `gorm:"index"` + + ExternalID string `gorm:"size:36;not null;uniqueIndex,where:deleted_at IS NULL"` + Name string `gorm:"size:256;not null"` + AvatarURL string `gorm:"size:256;not null"` +} + +type Email struct { + CreatedAt time.Time `gorm:"not null"` + UpdatedAt time.Time `gorm:"not null"` + DeletedAt gorm.DeletedAt `gorm:"index"` + + UserID int64 `gorm:"not null;uniqueIndex:,where:deleted_at IS NULL AND verified_at IS NOT NULL"` + Email string `gorm:"size:256;not null;uniqueIndex:,where:deleted_at IS NULL AND verified_at IS NOT NULL"` + VerifiedAt *time.Time + + // āš ļø DO NOT USE: This field is only used for creating foreign key constraint. + User *User `gorm:"foreignKey:UserID"` +} diff --git a/lib/managedservicesplatform/example/main.go b/cmd/msp-example/main.go similarity index 64% rename from lib/managedservicesplatform/example/main.go rename to cmd/msp-example/main.go index e0bd68a123923..2bb8e089d5e34 100644 --- a/lib/managedservicesplatform/example/main.go +++ b/cmd/msp-example/main.go @@ -1,8 +1,9 @@ package main import ( - "github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/example/internal/example" "github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/service" + + "github.com/sourcegraph/sourcegraph/cmd/msp-example/internal/example" ) func main() { diff --git a/deps.bzl b/deps.bzl index ab1d845f588b9..b851e01fde77b 100644 --- a/deps.bzl +++ b/deps.bzl @@ -1847,8 +1847,8 @@ def go_dependencies(): name = "com_github_envoyproxy_go_control_plane", build_file_proto_mode = "disable_global", importpath = "github.com/envoyproxy/go-control-plane", - sum = "h1:7T++XKzy4xg7PKy+bM+Sa9/oe1OC88yz2hXQUISoXfA=", - version = "v0.11.1-0.20230524094728-9239064ad72f", + sum = "h1:wSUXTlLfiAQRWs2F+p+EKOY9rUyis1MyGqJ2DIk5HpM=", + version = "v0.11.1", ) go_repository( name = "com_github_envoyproxy_protoc_gen_validate", @@ -2435,8 +2435,8 @@ def go_dependencies(): name = "com_github_go_sql_driver_mysql", build_file_proto_mode = "disable_global", importpath = "github.com/go-sql-driver/mysql", - sum = "h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=", - version = "v1.6.0", + sum = "h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=", + version = "v1.7.1", ) go_repository( @@ -2701,8 +2701,8 @@ def go_dependencies(): name = "com_github_golang_glog", build_file_proto_mode = "disable_global", importpath = "github.com/golang/glog", - sum = "h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE=", - version = "v1.1.0", + sum = "h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo=", + version = "v1.1.2", ) go_repository( name = "com_github_golang_groupcache", @@ -2900,8 +2900,8 @@ def go_dependencies(): name = "com_github_google_go_pkcs11", build_file_proto_mode = "disable_global", importpath = "github.com/google/go-pkcs11", - sum = "h1:5meDPB26aJ98f+K9G21f0AqZwo/S5BJMJh8nuhMbdsI=", - version = "v0.2.0", + sum = "h1:OF1IPgv+F4NmqmJ98KTjdN97Vs1JxDPB3vbmYzV2dpk=", + version = "v0.2.1-0.20230907215043-c6f79328ddf9", ) go_repository( @@ -2951,8 +2951,8 @@ def go_dependencies(): name = "com_github_google_s2a_go", build_file_proto_mode = "disable_global", importpath = "github.com/google/s2a-go", - sum = "h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc=", - version = "v0.1.4", + sum = "h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=", + version = "v0.1.7", ) go_repository( @@ -2974,16 +2974,16 @@ def go_dependencies(): name = "com_github_google_uuid", build_file_proto_mode = "disable_global", importpath = "github.com/google/uuid", - sum = "h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4=", - version = "v1.3.1", + sum = "h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=", + version = "v1.4.0", ) go_repository( name = "com_github_googleapis_enterprise_certificate_proxy", build_file_proto_mode = "disable_global", importpath = "github.com/googleapis/enterprise-certificate-proxy", - sum = "h1:UR4rDjcgpgEnqpIEvkiqTYKBCKLNmlge2eVjoZfySzM=", - version = "v0.2.5", + sum = "h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=", + version = "v0.3.2", ) go_repository( name = "com_github_googleapis_gax_go", @@ -3711,8 +3711,8 @@ def go_dependencies(): name = "com_github_jackc_pgconn", build_file_proto_mode = "disable_global", importpath = "github.com/jackc/pgconn", - sum = "h1:rsDFzIpRk7xT4B8FufgpCCeyjdNpKyghZeSefViE5W8=", - version = "v1.12.1", + sum = "h1:vrbA9Ud87g6JdFWkHTJXppVce58qPIdP7N8y0Ml/A7Q=", + version = "v1.14.0", ) go_repository( name = "com_github_jackc_pgerrcode", @@ -3754,36 +3754,51 @@ def go_dependencies(): name = "com_github_jackc_pgproto3_v2", build_file_proto_mode = "disable_global", importpath = "github.com/jackc/pgproto3/v2", - sum = "h1:brH0pCGBDkBW07HWlN/oSBXrmo3WB0UvZd1pIuDcL8Y=", - version = "v2.3.0", + sum = "h1:7eY55bdBeCz1F2fTzSz69QC+pG46jYq9/jtSPiJ5nn0=", + version = "v2.3.2", ) go_repository( name = "com_github_jackc_pgservicefile", build_file_proto_mode = "disable_global", importpath = "github.com/jackc/pgservicefile", - sum = "h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg=", - version = "v0.0.0-20200714003250-2b9c44734f2b", + sum = "h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=", + version = "v0.0.0-20221227161230-091c0ba34f0a", ) go_repository( name = "com_github_jackc_pgtype", build_file_proto_mode = "disable_global", importpath = "github.com/jackc/pgtype", - sum = "h1:MRSWOsXwvdLExF8roCltbid5ADD917dy1S3fgI+OHVE=", - version = "v1.11.1-0.20220425133820-53266f029fbb", + sum = "h1:y+xUdabmyMkJLyApYuPj38mW+aAIqCe5uuBB51rH3Vw=", + version = "v1.14.0", ) go_repository( name = "com_github_jackc_pgx_v4", build_file_proto_mode = "disable_global", importpath = "github.com/jackc/pgx/v4", - sum = "h1:JzTglcal01DrghUqt+PmzWsZx/Yh7SC/CTQmSBMTd0Y=", - version = "v4.16.1", + sum = "h1:YP7G1KABtKpB5IHrO9vYwSrCOhs7p3uqhvhhQBptya0=", + version = "v4.18.1", ) + go_repository( + name = "com_github_jackc_pgx_v5", + build_file_proto_mode = "disable_global", + importpath = "github.com/jackc/pgx/v5", + sum = "h1:NxstgwndsTRy7eq9/kqYc/BZh5w2hHJV86wjvO+1xPw=", + version = "v5.5.0", + ) + go_repository( name = "com_github_jackc_puddle", build_file_proto_mode = "disable_global", importpath = "github.com/jackc/puddle", - sum = "h1:gI8os0wpRXFd4FiAY2dWiqRK037tjj3t7rKFeO4X5iw=", - version = "v1.2.1", + sum = "h1:eHK/5clGOatcjX3oWGBO/MpxpbHzSwud5EWTSCI+MX0=", + version = "v1.3.0", + ) + go_repository( + name = "com_github_jackc_puddle_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/jackc/puddle/v2", + sum = "h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=", + version = "v2.2.1", ) go_repository( @@ -3845,6 +3860,20 @@ def go_dependencies(): sum = "h1:uFlcJKZPLQd7rmOY/RrvBuUaYmAFnlFHKLivhO6cOy8=", version = "v1.12.1-0.20220417024638-438db461d753", ) + go_repository( + name = "com_github_jinzhu_inflection", + build_file_proto_mode = "disable_global", + importpath = "github.com/jinzhu/inflection", + sum = "h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_jinzhu_now", + build_file_proto_mode = "disable_global", + importpath = "github.com/jinzhu/now", + sum = "h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=", + version = "v1.1.5", + ) go_repository( name = "com_github_jmespath_go_jmespath", @@ -4493,6 +4522,14 @@ def go_dependencies(): sum = "h1:SMZe2IGa0NuHvnVNAZ+6B38gsTbi5e4sViiWJyDDqFY=", version = "v1.0.23", ) + go_repository( + name = "com_github_microsoft_go_mssqldb", + build_file_proto_mode = "disable_global", + importpath = "github.com/microsoft/go-mssqldb", + sum = "h1:mM3gYdVwEPFrlg/Dvr2DNVEgYFG7L42l+dGc67NNNpc=", + version = "v1.6.0", + ) + go_repository( name = "com_github_microsoft_go_winio", build_file_proto_mode = "disable_global", @@ -5942,6 +5979,13 @@ def go_dependencies(): sum = "h1:3rJiF4VGyStWXrqJtVlXBJnpe82Q1k9k74dElVPolR8=", version = "v0.0.0-20231106184355-f739cf8e1d49", ) + go_repository( + name = "com_github_sourcegraph_managed_services_platform_cdktf_gen_postgresql", + build_file_proto_mode = "disable_global", + importpath = "github.com/sourcegraph/managed-services-platform-cdktf/gen/postgresql", + sum = "h1:7TTODwd/f0hhqmZhbQcKXSkoxSx9OczTWgWPBTxVOrA=", + version = "v0.0.0-20231121191755-214be625af21", + ) go_repository( name = "com_github_sourcegraph_managed_services_platform_cdktf_gen_random", @@ -6687,121 +6731,121 @@ def go_dependencies(): ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go", - sum = "h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME=", - version = "v0.110.8", + sum = "h1:e7ITSqGFFk4rbz/JFIqZh3G4VEHguhAL4BQcFlWtU68=", + version = "v0.110.9", ) go_repository( name = "com_google_cloud_go_accessapproval", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/accessapproval", - sum = "h1:/5YjNhR6lzCvmJZAnByYkfEgWjfAKwYP6nkuTk6nKFE=", - version = "v1.7.1", + sum = "h1:MOfZ2ncDO+nctNmOYqN8kCb8kHkVJU1nqGNGDa7qGQk=", + version = "v1.7.3", ) go_repository( name = "com_google_cloud_go_accesscontextmanager", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/accesscontextmanager", - sum = "h1:WIAt9lW9AXtqw/bnvrEUaE8VG/7bAAeMzRCBGMkc4+w=", - version = "v1.8.1", + sum = "h1:4vUQZ3OqH3YWo18AgQgvked8NSszsZQfURsYurRHoZI=", + version = "v1.8.3", ) go_repository( name = "com_google_cloud_go_aiplatform", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/aiplatform", - sum = "h1:J89aj+lqwtjn0qpQBMVaiOmDxBkKDEKUwl+GL19RRpc=", - version = "v1.50.0", + sum = "h1:DhbEMbUZTbsIQBhErvo5GlQCymVM50aoP3UDcrnxuOo=", + version = "v1.51.2", ) go_repository( name = "com_google_cloud_go_analytics", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/analytics", - sum = "h1:TFBC1ZAqX9/jL56GEXdLrVe5vT3I22bDVWyDwZX4IEg=", - version = "v0.21.3", + sum = "h1:ccW5bYKOrgXAbvIT/mxqk2rou7CfrUdl5G5bJDmDeVA=", + version = "v0.21.5", ) go_repository( name = "com_google_cloud_go_apigateway", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/apigateway", - sum = "h1:aBSwCQPcp9rZ0zVEUeJbR623palnqtvxJlUyvzsKGQc=", - version = "v1.6.1", + sum = "h1:8zRrVIaGC5dQeq3lBUn7Kchea8ao0bUILXeY8kBzF3M=", + version = "v1.6.3", ) go_repository( name = "com_google_cloud_go_apigeeconnect", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/apigeeconnect", - sum = "h1:6u/jj0P2c3Mcm+H9qLsXI7gYcTiG9ueyQL3n6vCmFJM=", - version = "v1.6.1", + sum = "h1:piXKIidKtP/FQ44dnYXGF+WSDsegdPmj/EKk6Hc3sR4=", + version = "v1.6.3", ) go_repository( name = "com_google_cloud_go_apigeeregistry", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/apigeeregistry", - sum = "h1:hgq0ANLDx7t2FDZDJQrCMtCtddR/pjCqVuvQWGrQbXw=", - version = "v0.7.1", + sum = "h1:GuexCawKvjXeeLgBYJoS1m7TCWvbYrmb9KNZjf5EdxA=", + version = "v0.8.1", ) go_repository( name = "com_google_cloud_go_appengine", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/appengine", - sum = "h1:J+aaUZ6IbTpBegXbmEsh8qZZy864ZVnOoWyfa1XSNbI=", - version = "v1.8.1", + sum = "h1:7hfqb1kKeB/jAyzOiBB00cQ71GYYLal85VH+uJhE5kc=", + version = "v1.8.3", ) go_repository( name = "com_google_cloud_go_area120", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/area120", - sum = "h1:wiOq3KDpdqXmaHzvZwKdpoM+3lDcqsI2Lwhyac7stss=", - version = "v0.8.1", + sum = "h1:wcVVp8EmTVVXJNU8QHDOZOHC5iJYNoU0jw8daZyvPQg=", + version = "v0.8.3", ) go_repository( name = "com_google_cloud_go_artifactregistry", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/artifactregistry", - sum = "h1:k6hNqab2CubhWlGcSzunJ7kfxC7UzpAfQ1UPb9PDCKI=", - version = "v1.14.1", + sum = "h1:rE++Rall/sWmbWkkQEfNoXC7GkCP7hqqd7NeDNEfGqI=", + version = "v1.14.4", ) go_repository( name = "com_google_cloud_go_asset", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/asset", - sum = "h1:vlHdznX70eYW4V1y1PxocvF6tEwxJTTarwIGwOhFF3U=", - version = "v1.14.1", + sum = "h1:B3OhouMFZNnUpB26Ex1izZ3OBh9R3iAGWO8raLOZ0jA=", + version = "v1.15.2", ) go_repository( name = "com_google_cloud_go_assuredworkloads", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/assuredworkloads", - sum = "h1:yaO0kwS+SnhVSTF7BqTyVGt3DTocI6Jqo+S3hHmCwNk=", - version = "v1.11.1", + sum = "h1:1eef9dFe2ylYw/6Nv6vP2t4xEeUHGIZDKRBwFbsiQUs=", + version = "v1.11.3", ) go_repository( name = "com_google_cloud_go_automl", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/automl", - sum = "h1:iP9iQurb0qbz+YOOMfKSEjhONA/WcoOIjt6/m+6pIgo=", - version = "v1.13.1", + sum = "h1:8gL+S9PpsYrqa9v7PDGMWEb42EWLGlxjdjMOB7/wU1c=", + version = "v1.13.3", ) go_repository( name = "com_google_cloud_go_baremetalsolution", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/baremetalsolution", - sum = "h1:3zztyuQHjfU0C0qEsI9LkC3kf5/TQQ3jUJhbmetUoRA=", - version = "v1.2.0", + sum = "h1:nS60vlA7w2GTXpQ7a6y5z4jjJF46kshx3G2V99WLsbA=", + version = "v1.2.2", ) go_repository( name = "com_google_cloud_go_batch", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/batch", - sum = "h1:/4ADpZKoKH300HN2SB6aI7lXX/0hnnbR74wxjLHkyQo=", - version = "v1.4.1", + sum = "h1:wa8ZC1wMJLqnwWsGiVsntBIEYcIP+HUyAcKc0DhoDE4=", + version = "v1.6.1", ) go_repository( name = "com_google_cloud_go_beyondcorp", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/beyondcorp", - sum = "h1:VPg+fZXULQjs8LiMeWdLaB5oe8G9sEoZ0I0j6IMiG1Q=", - version = "v1.0.0", + sum = "h1:/TrG41OifURpA7weWrG9CROcBapc0exDiDaL9ZgplXE=", + version = "v1.0.2", ) go_repository( name = "com_google_cloud_go_bigquery", @@ -6810,64 +6854,72 @@ def go_dependencies(): ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/bigquery", - sum = "h1:hs44Xxov3XLWQiCx2J8lK5U/ihLqnpm4RVVl5fdtLLI=", - version = "v1.55.0", + sum = "h1:LHIc9E7Kw+ftFpQFKzZYBB88IAFz7qONawXXx0F3QBo=", + version = "v1.56.0", ) go_repository( name = "com_google_cloud_go_billing", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/billing", - sum = "h1:CpagWXb/+QNye+vouomndbc4Gsr0uo+AGR24V16uk8Q=", - version = "v1.17.0", + sum = "h1:PIpLB0uqYRKyzbPZNQV+FxvBcKtZH+Io9eK/lC8bRSE=", + version = "v1.17.3", ) go_repository( name = "com_google_cloud_go_binaryauthorization", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/binaryauthorization", - sum = "h1:7L6uUWo/xNCfdVNnnzh2M4x5YA732YPgqRdCG8aKVAU=", - version = "v1.7.0", + sum = "h1:pSb8eiGofANJbRNTwQDiLJhMjng4tvFEVDEbaf2UWwM=", + version = "v1.7.2", ) go_repository( name = "com_google_cloud_go_certificatemanager", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/certificatemanager", - sum = "h1:uKsohpE0hiobx1Eak9jNcPCznwfB6gvyQCcS28Ah9E8=", - version = "v1.7.1", + sum = "h1:dOD0bZPTwtFo/h8CwCBpu/m3B4ugm2GFhcym/tuoaJg=", + version = "v1.7.3", ) go_repository( name = "com_google_cloud_go_channel", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/channel", - sum = "h1:Hy2EaOiOB7BS1IJmg2lLilEo8uMfFWTy7RgjTzbUqjM=", - version = "v1.17.0", + sum = "h1:LcaJyv6riQA39bvkPigOJvvNJM7Ls5x0hjZAqcuxq60=", + version = "v1.17.2", ) go_repository( name = "com_google_cloud_go_cloudbuild", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/cloudbuild", - sum = "h1:YTMxmFra7eIjKFgnyQUxOwWNseNqeO38kGh7thy7v4s=", - version = "v1.14.0", + sum = "h1:Go7wFI+P5QyuSt1sZtb8wx+M+MGjyfR+xgOzjuZMDF8=", + version = "v1.14.2", ) go_repository( name = "com_google_cloud_go_clouddms", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/clouddms", - sum = "h1:vTcaFaFZTZZ11gXB6aZHdAx+zn30P8YJw4X/S3NC+VQ=", - version = "v1.7.0", + sum = "h1:qxyV8j7ckzzt5gcX1u5qkteKBDMd9Q29TPs7uZVV6bA=", + version = "v1.7.2", ) + go_repository( + name = "com_google_cloud_go_cloudsqlconn", + build_file_proto_mode = "disable_global", + importpath = "cloud.google.com/go/cloudsqlconn", + sum = "h1:rMtPv66pkuk2K1ciCicjZY8Ma1DSyOYSoqwPUw/Timo=", + version = "v1.5.1", + ) + go_repository( name = "com_google_cloud_go_cloudtasks", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/cloudtasks", - sum = "h1:cMh9Q6dkvh+Ry5LAPbD/U2aw6KAqdiU6FttwhbTo69w=", - version = "v1.12.1", + sum = "h1:ajm0DZTTaGKeawbwuFXZfPC7IIeLg6eYJFH125i18tE=", + version = "v1.12.3", ) go_repository( name = "com_google_cloud_go_compute", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/compute", - sum = "h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY=", - version = "v1.23.0", + sum = "h1:nWEMDhgbBkBJjfpVySqU4jgWdc22PLR0o4vEexZHers=", + version = "v1.23.2", ) go_repository( name = "com_google_cloud_go_compute_metadata", @@ -6880,135 +6932,135 @@ def go_dependencies(): name = "com_google_cloud_go_contactcenterinsights", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/contactcenterinsights", - sum = "h1:YR2aPedGVQPpFBZXJnPkqRj8M//8veIZZH5ZvICoXnI=", - version = "v1.10.0", + sum = "h1:xTLvUYWMwNdQeAr9FECdenht43In0s/KAyFHSuKuZR4=", + version = "v1.11.2", ) go_repository( name = "com_google_cloud_go_container", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/container", - sum = "h1:SszQdI0qlyKsImz8/l26rpTZMyqvaH9yfua7rirDZvY=", - version = "v1.26.0", + sum = "h1:vNQsufqH93Df+U1kNNgjQ6UIQ1v4FUdQ9QHdDiiDuss=", + version = "v1.26.2", ) go_repository( name = "com_google_cloud_go_containeranalysis", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/containeranalysis", - sum = "h1:/EsoP+UTIjvl4yqrLA4WgUG83kwQhqZmbXEfqirT2LM=", - version = "v0.11.0", + sum = "h1:AKyhqlO1Cjdrp7Ht0C3uQALliri2RegVRpEZseOKwWo=", + version = "v0.11.2", ) go_repository( name = "com_google_cloud_go_datacatalog", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datacatalog", - sum = "h1:qGWrlYvWtK+8jD1jhwq5BsGoSr7S4/LOroV7LwXi00g=", - version = "v1.17.1", + sum = "h1:4ydlNOtwjkdXjXWd+SkUBh+DyVmM/bJKiktAHwqaEeU=", + version = "v1.18.2", ) go_repository( name = "com_google_cloud_go_dataflow", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataflow", - sum = "h1:VzG2tqsk/HbmOtq/XSfdF4cBvUWRK+S+oL9k4eWkENQ=", - version = "v0.9.1", + sum = "h1:v+wjNFEugYBYaowmqJuHK1piqNCx9pGvUWPEhspRFEw=", + version = "v0.9.3", ) go_repository( name = "com_google_cloud_go_dataform", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataform", - sum = "h1:xcWso0hKOoxeW72AjBSIp/UfkvpqHNzzS0/oygHlcqY=", - version = "v0.8.1", + sum = "h1:jhr9PQtaH59nfZbI7tP0jjIl9SlfnRgteAQHD+ZT2xA=", + version = "v0.8.3", ) go_repository( name = "com_google_cloud_go_datafusion", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datafusion", - sum = "h1:eX9CZoyhKQW6g1Xj7+RONeDj1mV8KQDKEB9KLELX9/8=", - version = "v1.7.1", + sum = "h1:v5HtQxvFLVHgbJXUdd4zbNZcYgknRUEW9ukOYpwf6d0=", + version = "v1.7.3", ) go_repository( name = "com_google_cloud_go_datalabeling", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datalabeling", - sum = "h1:zxsCD/BLKXhNuRssen8lVXChUj8VxF3ofN06JfdWOXw=", - version = "v0.8.1", + sum = "h1:wYqhVo4f5akRW2yZfGQ56fUCi8FCgYzKh1UvBeg7edE=", + version = "v0.8.3", ) go_repository( name = "com_google_cloud_go_dataplex", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataplex", - sum = "h1:wqPAP1vRskOoWwNka1yey2wxxCrxRrcxJf78MyFvrbs=", - version = "v1.9.1", + sum = "h1:D+UlBA3Z+k/Z93a1Wh3uZrUbc4aX7c7ifF/m/s5H6fQ=", + version = "v1.10.2", ) go_repository( name = "com_google_cloud_go_dataproc_v2", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataproc/v2", - sum = "h1:jKijbdsERm2hy/5dFl/LeQN+7CNssLdGXQYBMvMH/M4=", - version = "v2.2.0", + sum = "h1:XRnxqa08/P2LpXTB+OMmPAfhT7GGyftgslKvzv330gM=", + version = "v2.2.2", ) go_repository( name = "com_google_cloud_go_dataqna", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataqna", - sum = "h1:ITpUJep04hC9V7C+gcK390HO++xesQFSUJ7S4nSnF3U=", - version = "v0.8.1", + sum = "h1:Nr5t9MoTDxlOc7lVsydsIZ31ZdxOznCyKf5qFCiPu4o=", + version = "v0.8.3", ) go_repository( name = "com_google_cloud_go_datastore", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datastore", - sum = "h1:Mq0ApTRdLW3/dyiw+DkjTk0+iGIUvkbzaC8sfPwWTH4=", - version = "v1.14.0", + sum = "h1:0P9WcsQeTWjuD1H14JIY7XQscIPQ4Laje8ti96IC5vg=", + version = "v1.15.0", ) go_repository( name = "com_google_cloud_go_datastream", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datastream", - sum = "h1:ra/+jMv36zTAGPfi8TRne1hXme+UsKtdcK4j6bnqQiw=", - version = "v1.10.0", + sum = "h1:94RSCSWUXpbXvTrISGKZWbJqPTTSvMxErCZiHrEspEM=", + version = "v1.10.2", ) go_repository( name = "com_google_cloud_go_deploy", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/deploy", - sum = "h1:A+w/xpWgz99EYzB6e31gMGAI/P5jTZ2UO7veQK5jQ8o=", - version = "v1.13.0", + sum = "h1:LoaXLE32tVW/ULfKP8iX3USJZopWUTjVHiIGc/CVcWI=", + version = "v1.14.1", ) go_repository( name = "com_google_cloud_go_dialogflow", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dialogflow", - sum = "h1:0hBV5ipVbhYNKCyiBoM47bUt+43Kd8eWXhBr+pwUSTw=", - version = "v1.43.0", + sum = "h1:y2I9aHjFrszP2mAQNFCkfwzyli1avPiw/OQt1K3YV8Q=", + version = "v1.44.2", ) go_repository( name = "com_google_cloud_go_dlp", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dlp", - sum = "h1:tF3wsJ2QulRhRLWPzWVkeDz3FkOGVoMl6cmDUHtfYxw=", - version = "v1.10.1", + sum = "h1:UWS2DOpyUuK/ig3ZWzJ0IcZRYsRcRkgD1NSaoSU1upw=", + version = "v1.10.3", ) go_repository( name = "com_google_cloud_go_documentai", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/documentai", - sum = "h1:cBndyac7kPWwSuhUcgdbnqzszfZ57HBEHfD33DIwsBM=", - version = "v1.22.1", + sum = "h1:AQ9/q6mFBpHmWx7k1fB+S1ut8mv03XUo9sdOuEWXxl8=", + version = "v1.23.4", ) go_repository( name = "com_google_cloud_go_domains", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/domains", - sum = "h1:rqz6KY7mEg7Zs/69U6m6LMbB7PxFDWmT3QWNXIqhHm0=", - version = "v0.9.1", + sum = "h1:/NaEe9O1vhHt+j/VDPNJt8oDgGthsY+hbjbkBBOWorw=", + version = "v0.9.3", ) go_repository( name = "com_google_cloud_go_edgecontainer", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/edgecontainer", - sum = "h1:zhHWnLzg6AqzE+I3gzJqiIwHfjEBhWctNQEzqb+FaRo=", - version = "v1.1.1", + sum = "h1:cpoLa8/f2xPQFfoXRztRMJVVsQ/pxY+fra1QGQjxjyw=", + version = "v1.1.3", ) go_repository( name = "com_google_cloud_go_errorreporting", @@ -7022,74 +7074,74 @@ def go_dependencies(): name = "com_google_cloud_go_essentialcontacts", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/essentialcontacts", - sum = "h1:OEJ0MLXXCW/tX1fkxzEZOsv/wRfyFsvDVNaHWBAvoV0=", - version = "v1.6.2", + sum = "h1:kCxxUXP61/36M9KjiwvwSDAjtpjiv2apmIbBRdBHNXg=", + version = "v1.6.4", ) go_repository( name = "com_google_cloud_go_eventarc", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/eventarc", - sum = "h1:xIP3XZi0Xawx8DEfh++mE2lrIi5kQmCr/KcWhJ1q0J4=", - version = "v1.13.0", + sum = "h1:8LX0xmWk8qj4BZJ5rwQosVW/icozTsMxUimgz2Hlw5s=", + version = "v1.13.2", ) go_repository( name = "com_google_cloud_go_filestore", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/filestore", - sum = "h1:Eiz8xZzMJc5ppBWkuaod/PUdUZGCFR8ku0uS+Ah2fRw=", - version = "v1.7.1", + sum = "h1:Rx1EFBco717fTbeQLhAgEdPStqAzlKywMx37SvTOFXI=", + version = "v1.7.3", ) go_repository( name = "com_google_cloud_go_firestore", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/firestore", - sum = "h1:/3S4RssUV4GO/kvgJZB+tayjhOfyAHs+KcpJgRVu/Qk=", - version = "v1.13.0", + sum = "h1:8aLcKnMPoldYU3YHgu4t2exrKhLQkqaXAGqT0ljrFVw=", + version = "v1.14.0", ) go_repository( name = "com_google_cloud_go_functions", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/functions", - sum = "h1:LtAyqvO1TFmNLcROzHZhV0agEJfBi+zfMZsF4RT/a7U=", - version = "v1.15.1", + sum = "h1:5bAA0oK69rdOzSyJGkEod90R9zpok2CRPi1du0gwFtc=", + version = "v1.15.3", ) go_repository( name = "com_google_cloud_go_gkebackup", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkebackup", - sum = "h1:Kfha8SOF2tqsu4O4jVle66mk7qNdlJ2KhL3E2YyiNZc=", - version = "v1.3.1", + sum = "h1:B1QCKBePacacXFflG3Sc1MP4zWkeN1ZvfAT0AEAEgIc=", + version = "v1.3.3", ) go_repository( name = "com_google_cloud_go_gkeconnect", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkeconnect", - sum = "h1:a1ckRvVznnuvDWESM2zZDzSVFvggeBaVY5+BVB8tbT0=", - version = "v0.8.1", + sum = "h1:Qex3VdGKPM9cRbEIe7FAho8CAMQOx4u+m1pwRU515jY=", + version = "v0.8.3", ) go_repository( name = "com_google_cloud_go_gkehub", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkehub", - sum = "h1:2BLSb8i+Co1P05IYCKATXy5yaaIw/ZqGvVSBTLdzCQo=", - version = "v0.14.1", + sum = "h1:b7/eKuEEfeQeRIAz//v6Y3ZjNAYi81Eay/a8kqaYSKI=", + version = "v0.14.3", ) go_repository( name = "com_google_cloud_go_gkemulticloud", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkemulticloud", - sum = "h1:MluqhtPVZReoriP5+adGIw+ij/RIeRik8KApCW2WMTw=", - version = "v1.0.0", + sum = "h1:eBkfrcLHG+uaaVVbKMKS0qA1M1yBU3pdiHn1rZUCv0s=", + version = "v1.0.2", ) go_repository( name = "com_google_cloud_go_gsuiteaddons", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gsuiteaddons", - sum = "h1:mi9jxZpzVjLQibTS/XfPZvl+Jr6D5Bs8pGqUjllRb00=", - version = "v1.6.1", + sum = "h1:fjt+72G2ZavxZ4JROTjrvjV6OJs/fHr9Uo+aOGDcH20=", + version = "v1.6.3", ) go_repository( name = "com_google_cloud_go_iam", @@ -7098,29 +7150,29 @@ def go_dependencies(): ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/iam", - sum = "h1:gacbrBdWcoVmGLozRuStX45YKvJtzIjJdAolzUs1sm4=", - version = "v1.1.2", + sum = "h1:K6n/GZHFTtEoKT5aUG3l9diPi0VduZNQ1PfdnpkkIFk=", + version = "v1.1.4", ) go_repository( name = "com_google_cloud_go_iap", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/iap", - sum = "h1:RNhVq/6OMI99/wjPVhqFxjlBxYOBRdaG6rLpBvyaqYY=", - version = "v1.9.0", + sum = "h1:vuyDICrMq8z6flZaptQWOxN+XBHtGKWKYlAir8LmTgk=", + version = "v1.9.2", ) go_repository( name = "com_google_cloud_go_ids", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/ids", - sum = "h1:khXYmSoDDhWGEVxHl4c4IgbwSRR+qE/L4hzP3vaU9Hc=", - version = "v1.4.1", + sum = "h1:ZgT7bJIu+7toDJNjX4Uiao/9+82T6ZDGySoMxbvdZcY=", + version = "v1.4.3", ) go_repository( name = "com_google_cloud_go_iot", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/iot", - sum = "h1:yrH0OSmicD5bqGBoMlWG8UltzdLkYzNUwNVUVz7OT54=", - version = "v1.7.1", + sum = "h1:Cbn4wsDXgIwqAAOYIyto4e6aXJDhlZiqf2wO+9h8pEg=", + version = "v1.7.3", ) go_repository( name = "com_google_cloud_go_kms", @@ -7129,22 +7181,22 @@ def go_dependencies(): ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/kms", - sum = "h1:lh6qra6oC4AyWe5fUUUBe/S27k12OHAleOOOw6KakdE=", - version = "v1.15.2", + sum = "h1:gEZzC54ZBI+aeW8/jg9tgz9KR4Aa+WEDPbdGIV3iJ7A=", + version = "v1.15.4", ) go_repository( name = "com_google_cloud_go_language", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/language", - sum = "h1:KnYolG0T5Oex722ZW/sP5QErhVAVNcqpJ16tVJd9RTw=", - version = "v1.11.0", + sum = "h1:7TnnZKy3sspQ3F1mzwEv3eaptTwGrReVXEo8Oozi10w=", + version = "v1.12.1", ) go_repository( name = "com_google_cloud_go_lifesciences", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/lifesciences", - sum = "h1:axkANGx1wiBXHiPcJZAE+TDjjYoJRIDzbHC/WYllCBU=", - version = "v0.9.1", + sum = "h1:QcPrlyo/F7IXJXk8CkF4yGEwX4CTLAKUE/My4l3KF/8=", + version = "v0.9.3", ) go_repository( name = "com_google_cloud_go_logging", @@ -7158,44 +7210,44 @@ def go_dependencies(): name = "com_google_cloud_go_longrunning", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/longrunning", - sum = "h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI=", - version = "v0.5.1", + sum = "h1:maKa7O9YTzmVzwdlRKr981U1Ys2auup6rpeMt8y3+RU=", + version = "v0.5.3", ) go_repository( name = "com_google_cloud_go_managedidentities", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/managedidentities", - sum = "h1:2/qZuOeLgUHorSdxSQGtnOu9xQkBn37+j+oZQv/KHJY=", - version = "v1.6.1", + sum = "h1:hfWT2pidjP19mYJxTWMbfj8/wj9OZNUtB/oZ3HW0K8g=", + version = "v1.6.3", ) go_repository( name = "com_google_cloud_go_maps", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/maps", - sum = "h1:PdfgpBLhAoSzZrQXP+/zBc78fIPLZSJp5y8+qSMn2UU=", - version = "v1.4.0", + sum = "h1:j5AJNj9mbPTwqrqFmAHzMY3UX+Eddj/jC9xu7qFMVhk=", + version = "v1.5.1", ) go_repository( name = "com_google_cloud_go_mediatranslation", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/mediatranslation", - sum = "h1:50cF7c1l3BanfKrpnTCaTvhf+Fo6kdF21DG0byG7gYU=", - version = "v0.8.1", + sum = "h1:3B75VHLlp4M+W10NHEOAl30q7ZSd0D/i8LqRQqxqMM0=", + version = "v0.8.3", ) go_repository( name = "com_google_cloud_go_memcache", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/memcache", - sum = "h1:7lkLsF0QF+Mre0O/NvkD9Q5utUNwtzvIYjrOLOs0HO0=", - version = "v1.10.1", + sum = "h1:yD1ZDTXP7YfT5lBLRNioqZ427iaHaoqW5aMKXtM0acQ=", + version = "v1.10.3", ) go_repository( name = "com_google_cloud_go_metastore", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/metastore", - sum = "h1:+9DsxUOHvsqvC0ylrRc/JwzbXJaaBpfIK3tX0Lx8Tcc=", - version = "v1.12.0", + sum = "h1:ATz8sWfuHmlqAkPpWGRXQzZFUsgbDkAhZOyNlce83vA=", + version = "v1.13.2", ) go_repository( name = "com_google_cloud_go_monitoring", @@ -7210,92 +7262,92 @@ def go_dependencies(): ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/monitoring", - sum = "h1:rlndy4K8yknMY9JuGe2aK4SbCh21FXoCdX7SAGHmRgI=", - version = "v1.16.0", + sum = "h1:gx7BDZcoRqX5DfuJzw9LdhVjEkqCLmDXScdnrmIy9ik=", + version = "v1.16.2", ) go_repository( name = "com_google_cloud_go_networkconnectivity", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/networkconnectivity", - sum = "h1:kG2PX6URJ9Kvotfdm+hH8WIhrRY77sAKytUGOz+MgN0=", - version = "v1.13.0", + sum = "h1:tbzauwO86MlZ7+7OmxA0+PnEEgK2AXo9lGrUIL0++qc=", + version = "v1.14.2", ) go_repository( name = "com_google_cloud_go_networkmanagement", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/networkmanagement", - sum = "h1:aA6L8aioyM4S6nlPYzp2SvB88lBcByZmqMJM6ReafzU=", - version = "v1.9.0", + sum = "h1:v5RWynWBSX91pDnGp/7+5ME0/wLsjIzrC6vlICE/YPs=", + version = "v1.9.2", ) go_repository( name = "com_google_cloud_go_networksecurity", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/networksecurity", - sum = "h1:TBLEkMp3AE+6IV/wbIGRNTxnqLXHCTEQWoxRVC18TzY=", - version = "v0.9.1", + sum = "h1:t1QESL7xdq/fIoPHrduMWsMDYnM092UUuuiDvnXgrsk=", + version = "v0.9.3", ) go_repository( name = "com_google_cloud_go_notebooks", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/notebooks", - sum = "h1:6x2K1JAWv6RW2yQO6oa+xtKUGOpGQseCmT94vpOt1vc=", - version = "v1.10.0", + sum = "h1:fW/P76U437Eyzl1qEwqQSPeToiMB1LM1QyRGR0FpsG4=", + version = "v1.11.1", ) go_repository( name = "com_google_cloud_go_optimization", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/optimization", - sum = "h1:sGvPVtBJUKNYAwldhJvFmnM+EEdOXjDzjcly3g0n0Xg=", - version = "v1.5.0", + sum = "h1:sY8QjN37zKQfXCZaUSfGvpVGqyFXO2/vNvrhXMj28eI=", + version = "v1.6.1", ) go_repository( name = "com_google_cloud_go_orchestration", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/orchestration", - sum = "h1:KmN18kE/xa1n91cM5jhCh7s1/UfIguSCisw7nTMUzgE=", - version = "v1.8.1", + sum = "h1:+oaZtNXbCE9QBV/hCUo8Kf5VFILMfg2KR1n6oh8LB/o=", + version = "v1.8.3", ) go_repository( name = "com_google_cloud_go_orgpolicy", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/orgpolicy", - sum = "h1:I/7dHICQkNwym9erHqmlb50LRU588NPCvkfIY0Bx9jI=", - version = "v1.11.1", + sum = "h1:oqXeClkeznFGEd/rcu4T0WYOTh5ec6OkkXskaShD4hM=", + version = "v1.11.3", ) go_repository( name = "com_google_cloud_go_osconfig", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/osconfig", - sum = "h1:dgyEHdfqML6cUW6/MkihNdTVc0INQst0qSE8Ou1ub9c=", - version = "v1.12.1", + sum = "h1:PumxpZU71EpygOx0zkrx2HxlMvpyUmENB4e5nQc3+KM=", + version = "v1.12.3", ) go_repository( name = "com_google_cloud_go_oslogin", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/oslogin", - sum = "h1:LdSuG3xBYu2Sgr3jTUULL1XCl5QBx6xwzGqzoDUw1j0=", - version = "v1.10.1", + sum = "h1:kAQFiAT/+jefVnYYNT4+PxdHrZTFSgeJoE6ykhaGlNo=", + version = "v1.12.1", ) go_repository( name = "com_google_cloud_go_phishingprotection", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/phishingprotection", - sum = "h1:aK/lNmSd1vtbft/vLe2g7edXK72sIQbqr2QyrZN/iME=", - version = "v0.8.1", + sum = "h1:ZVYpZWmg8leUAp4y5XzhxropUfkcAmwOwsmr4i1D1Mc=", + version = "v0.8.3", ) go_repository( name = "com_google_cloud_go_policytroubleshooter", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/policytroubleshooter", - sum = "h1:pT4qSiL5o0hBSWHDiOcmes/s301PeLLWEhAr/eMQB/g=", - version = "v1.9.0", + sum = "h1:TboGw1ua94FjA/Zgj9Gl4Ksgs/TyasQmAkW9w+vyje4=", + version = "v1.10.1", ) go_repository( name = "com_google_cloud_go_privatecatalog", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/privatecatalog", - sum = "h1:B/18xGo+E0EMS9LOEQ0zXz7F2asMgmVgTYGSI89MHOA=", - version = "v0.9.1", + sum = "h1:xSUuUCfA5fo59N1hsQmvzgNispoORTUvqN27XXyWFWg=", + version = "v0.9.3", ) go_repository( name = "com_google_cloud_go_profiler", @@ -7327,64 +7379,64 @@ def go_dependencies(): name = "com_google_cloud_go_recaptchaenterprise_v2", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/recaptchaenterprise/v2", - sum = "h1:IGkbudobsTXAwmkEYOzPCQPApUCsN4Gbq3ndGVhHQpI=", - version = "v2.7.2", + sum = "h1:vbPKIAPiFxHG7uNXZmuivxbox17up/Tav5Y+Z+KA008=", + version = "v2.8.2", ) go_repository( name = "com_google_cloud_go_recommendationengine", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/recommendationengine", - sum = "h1:nMr1OEVHuDambRn+/y4RmNAmnR/pXCuHtH0Y4tCgGRQ=", - version = "v0.8.1", + sum = "h1:A58sxjTGDJC+a2zkCzbYdLtPG1OQ7WijwCv7ZsTKIP8=", + version = "v0.8.3", ) go_repository( name = "com_google_cloud_go_recommender", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/recommender", - sum = "h1:SuzbMJhDAiPro7tR9QP7EX97+TI31urjsIgNh9XQHl8=", - version = "v1.11.0", + sum = "h1:/uQYJ01mKw0cig+DeMTQ+JuG0BEwVfxVh2gGIG93UEw=", + version = "v1.11.2", ) go_repository( name = "com_google_cloud_go_redis", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/redis", - sum = "h1:YrjQnCC7ydk+k30op7DSjSHw1yAYhqYXFcOq1bSXRYA=", - version = "v1.13.1", + sum = "h1:+SH8u5Mrgo8EQG/0/C9fwBnzjYS4CQIm+ZK0nlFtg5I=", + version = "v1.13.3", ) go_repository( name = "com_google_cloud_go_resourcemanager", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/resourcemanager", - sum = "h1:QIAMfndPOHR6yTmMUB0ZN+HSeRmPjR/21Smq5/xwghI=", - version = "v1.9.1", + sum = "h1:jftfMUTNJLM9V+4wvMQfKfJfQVWcPJifWsMQnJyL3Jk=", + version = "v1.9.3", ) go_repository( name = "com_google_cloud_go_resourcesettings", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/resourcesettings", - sum = "h1:Fdyq418U69LhvNPFdlEO29w+DRRjwDA4/pFamm4ksAg=", - version = "v1.6.1", + sum = "h1:T3HzhoHhk0VdEdXm5p+KKoC7jh9C4Xpe3BnNf64UfKU=", + version = "v1.6.3", ) go_repository( name = "com_google_cloud_go_retail", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/retail", - sum = "h1:gYBrb9u/Hc5s5lUTFXX1Vsbc/9BEvgtioY6ZKaK0DK8=", - version = "v1.14.1", + sum = "h1:pFW+3HJI5qHdE5yprmciAsM6G6cp0h0RH8FELX8K7sw=", + version = "v1.14.3", ) go_repository( name = "com_google_cloud_go_run", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/run", - sum = "h1:kHeIG8q+N6Zv0nDkBjSOYfK2eWqa5FnaiDPH/7/HirE=", - version = "v1.2.0", + sum = "h1:AiA5O0YTCTkLQaJu+HFAS0W/jktmiNydOUgg/d0xQrs=", + version = "v1.3.2", ) go_repository( name = "com_google_cloud_go_scheduler", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/scheduler", - sum = "h1:yoZbZR8880KgPGLmACOMCiY2tPk+iX4V/dkxqTirlz8=", - version = "v1.10.1", + sum = "h1:1UwFQBqNlwnfpjZbPYitdV/GURiVRg4gbhRnKtL5ZRg=", + version = "v1.10.3", ) go_repository( name = "com_google_cloud_go_secretmanager", @@ -7393,53 +7445,53 @@ def go_dependencies(): ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/secretmanager", - sum = "h1:cLTCwAjFh9fKvU6F13Y4L9vPcx9yiWPyWXE4+zkuEQs=", - version = "v1.11.1", + sum = "h1:Xk7NFAUuW9q+eX4AxwS/dDuhlNWQ1MmfxQpsfbgRsEg=", + version = "v1.11.3", ) go_repository( name = "com_google_cloud_go_security", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/security", - sum = "h1:jR3itwycg/TgGA0uIgTItcVhA55hKWiNJxaNNpQJaZE=", - version = "v1.15.1", + sum = "h1:RXYyXEtudhyqqNZNzVZWuDW5BkSCfqo2OOgOKcxg1Ho=", + version = "v1.15.3", ) go_repository( name = "com_google_cloud_go_securitycenter", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/securitycenter", - sum = "h1:XOGJ9OpnDtqg8izd7gYk/XUhj8ytjIalyjjsR6oyG0M=", - version = "v1.23.0", + sum = "h1:oJRemSVC122SKmPV1aEkMOTnFHsnHwsQtXBBV55AxoU=", + version = "v1.24.1", ) go_repository( name = "com_google_cloud_go_servicedirectory", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/servicedirectory", - sum = "h1:pBWpjCFVGWkzVTkqN3TBBIqNSoSHY86/6RL0soSQ4z8=", - version = "v1.11.0", + sum = "h1:vdo3qTQWhCB408ckNYqS29i8btBSiVDSWDYSLKc0iF8=", + version = "v1.11.2", ) go_repository( name = "com_google_cloud_go_shell", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/shell", - sum = "h1:aHbwH9LSqs4r2rbay9f6fKEls61TAjT63jSyglsw7sI=", - version = "v1.7.1", + sum = "h1:qujhSLWp8XUsFMp+RgGn2w+BBrQ7AnymGd+6TRaJ4HM=", + version = "v1.7.3", ) go_repository( name = "com_google_cloud_go_spanner", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/spanner", - sum = "h1:+HY8C4uztU7XyLz3xMi/LCXdetLEOExhvRFJu2NiVXM=", - version = "v1.49.0", + sum = "h1:l3exhhsVMKsx1E7Xd1QajYSvHmI1KZoWPW5tRxIIdvQ=", + version = "v1.51.0", ) go_repository( name = "com_google_cloud_go_speech", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/speech", - sum = "h1:MCagaq8ObV2tr1kZJcJYgXYbIn8Ai5rp42tyGYw9rls=", - version = "v1.19.0", + sum = "h1:BvK9bjSW3Ut1hNvYXn2nlu/oGE+MUyjfIEZcI3kgbM8=", + version = "v1.19.2", ) go_repository( name = "com_google_cloud_go_storage", @@ -7455,29 +7507,29 @@ def go_dependencies(): name = "com_google_cloud_go_storagetransfer", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/storagetransfer", - sum = "h1:+ZLkeXx0K0Pk5XdDmG0MnUVqIR18lllsihU/yq39I8Q=", - version = "v1.10.0", + sum = "h1:rlcXNHgZY/1OIsZHAVDUu2roTs1/3UiVUdUSGnjw4aY=", + version = "v1.10.2", ) go_repository( name = "com_google_cloud_go_talent", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/talent", - sum = "h1:j46ZgD6N2YdpFPux9mc7OAf4YK3tiBCsbLKc8rQx+bU=", - version = "v1.6.2", + sum = "h1:yLBx78BoR5/sOCE0O6XqzaqL4KLM0+2BEdQBua9Zy1c=", + version = "v1.6.4", ) go_repository( name = "com_google_cloud_go_texttospeech", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/texttospeech", - sum = "h1:S/pR/GZT9p15R7Y2dk2OXD/3AufTct/NSxT4a7nxByw=", - version = "v1.7.1", + sum = "h1:EgMsIlyacLJPrqFZZrXK1mUztyM4cp8wR4Ia1H51a9s=", + version = "v1.7.3", ) go_repository( name = "com_google_cloud_go_tpu", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/tpu", - sum = "h1:kQf1jgPY04UJBYYjNUO+3GrZtIb57MfGAW2bwgLbR3A=", - version = "v1.6.1", + sum = "h1:euDiTIKKnQ3nG1J0KCafMJffxRdPNWQsnRvGJ7lZWSk=", + version = "v1.6.3", ) go_repository( name = "com_google_cloud_go_trace", @@ -7488,80 +7540,80 @@ def go_dependencies(): ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/trace", - sum = "h1:EwGdOLCNfYOOPtgqo+D2sDLZmRCEO1AagRTJCU6ztdg=", - version = "v1.10.1", + sum = "h1:yiQ2EdegdiZDPwNPoUqGYAMd0wNValT/NRsC1XGyBJ0=", + version = "v1.10.3", ) go_repository( name = "com_google_cloud_go_translate", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/translate", - sum = "h1:0na4gC54Lu05ir00dmUSuMkLAojDe1ALq4hBTUkhwjE=", - version = "v1.9.0", + sum = "h1:liPk0EElBpafg4VAlZQwbg786X8/nnboOC4TmAN5sF8=", + version = "v1.9.2", ) go_repository( name = "com_google_cloud_go_video", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/video", - sum = "h1:AkjXyJfQ7DtPyDOAbTMeiGcuKsO8/iKSb3fAmTUHYSg=", - version = "v1.20.0", + sum = "h1:paeXmflm8qH81wzND2V6BrKkS3GuvLuSrktHpdh+fr0=", + version = "v1.20.2", ) go_repository( name = "com_google_cloud_go_videointelligence", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/videointelligence", - sum = "h1:MBMWnkQ78GQnRz5lfdTAbBq/8QMCF3wahgtHh3s/J+k=", - version = "v1.11.1", + sum = "h1:PS8HSjrQh6A1XTKfGz83vLfXhHyGGEiOTgmh2WksdIM=", + version = "v1.11.3", ) go_repository( name = "com_google_cloud_go_vision_v2", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vision/v2", - sum = "h1:ccK6/YgPfGHR/CyESz1mvIbsht5Y2xRsWCPqmTNydEw=", - version = "v2.7.2", + sum = "h1:lTPDW1JogEcR7NSobxlpGAIN1wc2kvUrEfsS/32nm90=", + version = "v2.7.4", ) go_repository( name = "com_google_cloud_go_vmmigration", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vmmigration", - sum = "h1:gnjIclgqbEMc+cF5IJuPxp53wjBIlqZ8h9hE8Rkwp7A=", - version = "v1.7.1", + sum = "h1:2RIVjbHdVPXw8dhFLAkbU+DGnR/Egiv+zhb0CmSF58U=", + version = "v1.7.3", ) go_repository( name = "com_google_cloud_go_vmwareengine", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vmwareengine", - sum = "h1:qsJ0CPlOQu/3MFBGklu752v3AkD+Pdu091UmXJ+EjTA=", - version = "v1.0.0", + sum = "h1:JU4HKWkJSfYP9eU3q5VVnmyTjiZSqFC6ZXN752ebZuQ=", + version = "v1.0.2", ) go_repository( name = "com_google_cloud_go_vpcaccess", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vpcaccess", - sum = "h1:ram0GzjNWElmbxXMIzeOZUkQ9J8ZAahD6V8ilPGqX0Y=", - version = "v1.7.1", + sum = "h1:d/vObL8itQ5DmG+fh3wExKCl4zuwbInSQOuysfvgShk=", + version = "v1.7.3", ) go_repository( name = "com_google_cloud_go_webrisk", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/webrisk", - sum = "h1:Ssy3MkOMOnyRV5H2bkMQ13Umv7CwB/kugo3qkAX83Fk=", - version = "v1.9.1", + sum = "h1:9yteSCrAhlZFvu+zb/SlpCKFwij69Il1aIuhk8vq0sg=", + version = "v1.9.3", ) go_repository( name = "com_google_cloud_go_websecurityscanner", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/websecurityscanner", - sum = "h1:CfEF/vZ+xXyAR3zC9iaC/QRdf1MEgS20r5UR17Q4gOg=", - version = "v1.6.1", + sum = "h1:nIo6koOYifrmNUsuXYzlO39oRrV8aM7NdjKjXxL/xvE=", + version = "v1.6.3", ) go_repository( name = "com_google_cloud_go_workflows", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/workflows", - sum = "h1:cSUlx4PVV9O0vYCl+pHAUmu0996A7eN602d4wjjVHRs=", - version = "v1.12.0", + sum = "h1:dDTsUCgUQbkEFviNMgRV0THXa9VWBNS+35Ru1uadEUw=", + version = "v1.12.2", ) go_repository( name = "com_jolheiser_go_hcaptcha", @@ -7884,6 +7936,20 @@ def go_dependencies(): sum = "h1:WJreC7YYuxbn0UDaPuWIe/mtiNKTvLN8MLkaw71yx/M=", version = "v0.15.1", ) + go_repository( + name = "io_gorm_driver_postgres", + build_file_proto_mode = "disable_global", + importpath = "gorm.io/driver/postgres", + sum = "h1:Iyrp9Meh3GmbSuyIAGyjkN+n9K+GHX9b9MqsTL4EJCo=", + version = "v1.5.4", + ) + go_repository( + name = "io_gorm_gorm", + build_file_proto_mode = "disable_global", + importpath = "gorm.io/gorm", + sum = "h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls=", + version = "v1.25.5", + ) go_repository( name = "io_k8s_api", @@ -8466,8 +8532,8 @@ def go_dependencies(): name = "org_golang_google_api", build_file_proto_mode = "disable_global", importpath = "google.golang.org/api", - sum = "h1:8t2/+qZ26kAOGSmOiHwVycqVaDg7q3JDILrNi/Z6rvc=", - version = "v0.132.0", + sum = "h1:Z9k22qD289SZ8gCJrk4DrWXkNjtfvKAUo/l1ma8eBYE=", + version = "v0.150.0", ) go_repository( name = "org_golang_google_appengine", @@ -8494,37 +8560,37 @@ def go_dependencies(): ], build_file_proto_mode = "disable_global", importpath = "google.golang.org/genproto", - sum = "h1:vlzZttNJGVqTsRFU9AmdnrcO1Znh8Ew9kCD//yjigk0=", - version = "v0.0.0-20230920204549-e6e6cdab5c13", + sum = "h1:I6WNifs6pF9tNdSob2W24JtyxIYjzFB9qDlpUC76q+U=", + version = "v0.0.0-20231030173426-d783a09b4405", ) go_repository( name = "org_golang_google_genproto_googleapis_api", build_file_proto_mode = "disable_global", importpath = "google.golang.org/genproto/googleapis/api", - sum = "h1:U7+wNaVuSTaUqNvK2+osJ9ejEZxbjHHk8F2b6Hpx0AE=", - version = "v0.0.0-20230920204549-e6e6cdab5c13", + sum = "h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k=", + version = "v0.0.0-20231016165738-49dd2c1f3d0b", ) go_repository( name = "org_golang_google_genproto_googleapis_bytestream", build_file_proto_mode = "disable_global", importpath = "google.golang.org/genproto/googleapis/bytestream", - sum = "h1:Hm7pO7oy28D47G/nht5kL85gWK/270UoRu7tx7rU0xg=", - version = "v0.0.0-20230711160842-782d3b101e98", + sum = "h1:o4S3HvTUEXgRsNSUQsALDVog0O9F/U1JJlHmmUN8Uas=", + version = "v0.0.0-20231030173426-d783a09b4405", ) go_repository( name = "org_golang_google_genproto_googleapis_rpc", build_file_proto_mode = "disable_global", importpath = "google.golang.org/genproto/googleapis/rpc", - sum = "h1:tdhlmiMZNpc5p2W5qqKgRrOubaMZ3c85uG/GJtGgL98=", - version = "v0.0.0-20230920183334-c177e329c48b", + sum = "h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14=", + version = "v0.0.0-20231106174013-bbf56f31fb17", ) go_repository( name = "org_golang_google_grpc", build_file_proto_mode = "disable_global", importpath = "google.golang.org/grpc", - sum = "h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg=", - version = "v1.57.1", + sum = "h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk=", + version = "v1.59.0", ) go_repository( @@ -8539,8 +8605,8 @@ def go_dependencies(): name = "org_golang_x_crypto", build_file_proto_mode = "disable_global", importpath = "golang.org/x/crypto", - sum = "h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=", - version = "v0.14.0", + sum = "h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA=", + version = "v0.15.0", ) go_repository( name = "org_golang_x_exp", @@ -8581,51 +8647,51 @@ def go_dependencies(): name = "org_golang_x_net", build_file_proto_mode = "disable_global", importpath = "golang.org/x/net", - sum = "h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=", - version = "v0.17.0", + sum = "h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg=", + version = "v0.18.0", ) go_repository( name = "org_golang_x_oauth2", build_file_proto_mode = "disable_global", importpath = "golang.org/x/oauth2", - sum = "h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=", - version = "v0.10.0", + sum = "h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0=", + version = "v0.14.0", ) go_repository( name = "org_golang_x_sync", build_file_proto_mode = "disable_global", importpath = "golang.org/x/sync", - sum = "h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=", - version = "v0.3.0", + sum = "h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=", + version = "v0.5.0", ) go_repository( name = "org_golang_x_sys", build_file_proto_mode = "disable_global", importpath = "golang.org/x/sys", - sum = "h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=", - version = "v0.13.0", + sum = "h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=", + version = "v0.14.0", ) go_repository( name = "org_golang_x_term", build_file_proto_mode = "disable_global", importpath = "golang.org/x/term", - sum = "h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek=", - version = "v0.13.0", + sum = "h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8=", + version = "v0.14.0", ) go_repository( name = "org_golang_x_text", build_file_proto_mode = "disable_global", importpath = "golang.org/x/text", - sum = "h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=", - version = "v0.13.0", + sum = "h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=", + version = "v0.14.0", ) go_repository( name = "org_golang_x_time", build_file_proto_mode = "disable_global", importpath = "golang.org/x/time", - sum = "h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=", - version = "v0.3.0", + sum = "h1:Z81tqI5ddIoXDPvVQ7/7CC9TnLM7ubaFG2qXYd5BbYY=", + version = "v0.4.0", ) go_repository( name = "org_golang_x_tools", diff --git a/dev/managedservicesplatform/internal/resource/cloudsql/BUILD.bazel b/dev/managedservicesplatform/internal/resource/cloudsql/BUILD.bazel new file mode 100644 index 0000000000000..862ea9fcd0fc7 --- /dev/null +++ b/dev/managedservicesplatform/internal/resource/cloudsql/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "cloudsql", + srcs = ["cloudsql.go"], + importpath = "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resource/cloudsql", + visibility = ["//dev/managedservicesplatform:__subpackages__"], + deps = [ + "//dev/managedservicesplatform/internal/resource/random", + "//dev/managedservicesplatform/internal/resource/serviceaccount", + "//dev/managedservicesplatform/internal/resourceid", + "//dev/managedservicesplatform/spec", + "//lib/pointers", + "@com_github_aws_constructs_go_constructs_v10//:constructs", + "@com_github_hashicorp_terraform_cdk_go_cdktf//:cdktf", + "@com_github_sourcegraph_managed_services_platform_cdktf_gen_google//computenetwork", + "@com_github_sourcegraph_managed_services_platform_cdktf_gen_google//sqldatabase", + "@com_github_sourcegraph_managed_services_platform_cdktf_gen_google//sqldatabaseinstance", + "@com_github_sourcegraph_managed_services_platform_cdktf_gen_google//sqluser", + "@com_github_sourcegraph_managed_services_platform_cdktf_gen_random//password", + ], +) diff --git a/dev/managedservicesplatform/internal/resource/cloudsql/cloudsql.go b/dev/managedservicesplatform/internal/resource/cloudsql/cloudsql.go new file mode 100644 index 0000000000000..e24135ad94e48 --- /dev/null +++ b/dev/managedservicesplatform/internal/resource/cloudsql/cloudsql.go @@ -0,0 +1,194 @@ +package cloudsql + +import ( + "fmt" + + "github.com/aws/constructs-go/constructs/v10" + "github.com/hashicorp/terraform-cdk-go/cdktf" + + "github.com/sourcegraph/managed-services-platform-cdktf/gen/google/computenetwork" + "github.com/sourcegraph/managed-services-platform-cdktf/gen/google/sqldatabase" + "github.com/sourcegraph/managed-services-platform-cdktf/gen/google/sqldatabaseinstance" + "github.com/sourcegraph/managed-services-platform-cdktf/gen/google/sqluser" + "github.com/sourcegraph/managed-services-platform-cdktf/gen/random/password" + + "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resource/random" + "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resource/serviceaccount" + "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resourceid" + "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/spec" + "github.com/sourcegraph/sourcegraph/lib/pointers" +) + +type Output struct { + // Instance is the Cloud SQL database instance. It can be accessed using + // WorkloadUser + Instance sqldatabaseinstance.SqlDatabaseInstance + // AdminUser is a cloudsqlsuperuser on the Cloud SQL instance. + AdminUser sqluser.SqlUser + // WorkloadUser is the SQL user corresponding to the Cloud Run workload + // service account. It should be used for automatic IAM authentication: + // https://pkg.go.dev/cloud.google.com/go/cloudsqlconn#readme-automatic-iam-database-authentication + // + // Before using WorkloadUser, WorkloadSuperuserGrant should be ready. + WorkloadUser sqluser.SqlUser +} + +type Config struct { + ProjectID string + Region string + + // Spec configures the Cloud SQL instance. + Spec spec.EnvironmentResourcePostgreSQLSpec + // WorkloadIdentity is the service account attached to the Cloud Run workload. + // A database user will be provisioned that can be accessed as this identity. + WorkloadIdentity serviceaccount.Output + // Network to connect the created Cloud SQL instance to. + Network computenetwork.ComputeNetwork + + DependsOn []cdktf.ITerraformDependable +} + +func New(scope constructs.Construct, id resourceid.ID, config Config) (*Output, error) { + machineType := fmt.Sprintf("db-custom-%d-%d", + pointers.Deref(config.Spec.CPU, 1), + pointers.Deref(config.Spec.MemoryGB, 4)*1024) + + instance := sqldatabaseinstance.NewSqlDatabaseInstance(scope, id.TerraformID("instance"), &sqldatabaseinstance.SqlDatabaseInstanceConfig{ + Project: &config.ProjectID, + Region: &config.Region, + + // Current default: https://cloud.google.com/sql/docs/postgres/db-versions + DatabaseVersion: pointers.Ptr("POSTGRES_15"), + + // Randomize instance name + Name: pointers.Ptr(fmt.Sprintf("%s-%s", + id.DisplayName(), + random.New(scope, id.Group("instance_name_suffix"), random.Config{ + ByteLength: 2, + }).HexValue)), + + Settings: &sqldatabaseinstance.SqlDatabaseInstanceSettings{ + Tier: pointers.Ptr(machineType), + AvailabilityType: pointers.Ptr("ZONAL"), + DiskType: pointers.Ptr("PD_SSD"), + + // Arbitrary starting disk size - we use autoresizing to scale the + // disk up automatically. The minimum size is 10GB. + DiskSize: pointers.Float64(10), + DiskAutoresize: pointers.Ptr(true), + DiskAutoresizeLimit: pointers.Float64(0), + + DatabaseFlags: []sqldatabaseinstance.SqlDatabaseInstanceSettingsDatabaseFlags{{ + Name: pointers.Ptr("cloudsql.iam_authentication"), + Value: pointers.Ptr("on"), + }}, + + // šŸšØSECURITYšŸšØ SOC2/CI-79 + // Production disks for MSP are configured with daily snapshots and retention set at ninety days, + // so we do the same. + BackupConfiguration: &sqldatabaseinstance.SqlDatabaseInstanceSettingsBackupConfiguration{ + Enabled: pointers.Ptr(true), + PointInTimeRecoveryEnabled: pointers.Ptr(false), // PITR uses a lot of resources and is cumbersome to use + StartTime: pointers.Ptr("10:00"), + TransactionLogRetentionDays: pointers.Float64(7), + BackupRetentionSettings: &sqldatabaseinstance.SqlDatabaseInstanceSettingsBackupConfigurationBackupRetentionSettings{ + // šŸšØSECURITYšŸšØ SOC2/CI-79 + RetainedBackups: pointers.Float64(90), + RetentionUnit: pointers.Ptr("COUNT"), + }, + }, + + MaintenanceWindow: &sqldatabaseinstance.SqlDatabaseInstanceSettingsMaintenanceWindow{ + UpdateTrack: pointers.Ptr("stable"), + Day: pointers.Float64(1), + Hour: pointers.Float64(15), + }, + + InsightsConfig: &sqldatabaseinstance.SqlDatabaseInstanceSettingsInsightsConfig{ + QueryInsightsEnabled: pointers.Ptr(true), + QueryStringLength: pointers.Float64(4096), + RecordApplicationTags: pointers.Ptr(true), + RecordClientAddress: pointers.Ptr(true), + }, + + IpConfiguration: &sqldatabaseinstance.SqlDatabaseInstanceSettingsIpConfiguration{ + Ipv4Enabled: pointers.Ptr(true), + PrivateNetwork: config.Network.Id(), + RequireSsl: pointers.Ptr(true), + }, + }, + + // More of an inconvenience than anything else - is still delete-able + // from the UI. + DeletionProtection: pointers.Ptr(false), + + Lifecycle: &cdktf.TerraformResourceLifecycle{ + // Autoscaling is typically enabled - no need to worry about it + IgnoreChanges: []string{"settings[0].disk_size"}, + }, + + // Instance is the primary resource here, so placing DependsOn here + // effectively blocks this resource from being created until dependencies + // are ready. + DependsOn: &config.DependsOn, + }) + + // Collect resources that must be ready before database can be accessed + var databaseResources []cdktf.ITerraformDependable + + // Provision prerequisite databases + for _, db := range config.Spec.Databases { + databaseResources = append(databaseResources, + sqldatabase.NewSqlDatabase(scope, id.Group("database").TerraformID(db), + &sqldatabase.SqlDatabaseConfig{ + Name: pointers.Ptr(db), + Instance: instance.Name(), + // PostgreSQL cannot delete databases if there are users + // other than cloudsqlsuperuser with access + DeletionPolicy: pointers.Ptr("ABANDON"), + })) + } + + // Configure a root MSP admin user + adminPassword := password.NewPassword(scope, id.TerraformID("admin_password"), &password.PasswordConfig{ + Length: pointers.Float64(32), + Special: pointers.Ptr(false), + }) + adminUser := sqluser.NewSqlUser(scope, id.TerraformID("admin_user"), &sqluser.SqlUserConfig{ + Instance: instance.Name(), + Project: &config.ProjectID, + Name: pointers.Ptr("msp-admin"), + Password: adminPassword.Result(), + + // PostgreSQL cannot delete users with roles, so we just abandon the + // users in a deletion event. + DeletionPolicy: pointers.Ptr("ABANDON"), + }) + + // Grant access to workload service account + workloadUser := sqluser.NewSqlUser(scope, id.TerraformID("workload_service_account_user"), &sqluser.SqlUserConfig{ + Instance: instance.Name(), + Project: &config.ProjectID, + Type: pointers.Ptr("CLOUD_IAM_SERVICE_ACCOUNT"), + // Note: for Postgres only, GCP requires omitting the ".gserviceaccount.com" suffix + // from the service account email due to length limits on database usernames. + // See https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/sql_user + Name: cdktf.Fn_Trimsuffix(&config.WorkloadIdentity.Email, + pointers.Ptr(".gserviceaccount.com")), + + // PostgreSQL cannot delete users with roles, so we just abandon the + // users in a deletion event. + DeletionPolicy: pointers.Ptr("ABANDON"), + + // workloadUser's username is required to connect to this instance, so + // to ensure database resources are all fully provisioned, we gate the + // availability of this secret on all database resources being ready. + DependsOn: &databaseResources, + }) + + return &Output{ + Instance: instance, + AdminUser: adminUser, + WorkloadUser: workloadUser, + }, nil +} diff --git a/dev/managedservicesplatform/internal/resource/gsmsecret/BUILD.bazel b/dev/managedservicesplatform/internal/resource/gsmsecret/BUILD.bazel index 921b891fc2828..2d8d4414044d2 100644 --- a/dev/managedservicesplatform/internal/resource/gsmsecret/BUILD.bazel +++ b/dev/managedservicesplatform/internal/resource/gsmsecret/BUILD.bazel @@ -9,6 +9,7 @@ go_library( "//dev/managedservicesplatform/internal/resourceid", "//lib/pointers", "@com_github_aws_constructs_go_constructs_v10//:constructs", + "@com_github_hashicorp_terraform_cdk_go_cdktf//:cdktf", "@com_github_sourcegraph_managed_services_platform_cdktf_gen_google//datagooglesecretmanagersecretversion", "@com_github_sourcegraph_managed_services_platform_cdktf_gen_google//secretmanagersecret", "@com_github_sourcegraph_managed_services_platform_cdktf_gen_google//secretmanagersecretversion", diff --git a/dev/managedservicesplatform/internal/resource/gsmsecret/gsmsecret.go b/dev/managedservicesplatform/internal/resource/gsmsecret/gsmsecret.go index 43962589b60f3..6880cd1fae343 100644 --- a/dev/managedservicesplatform/internal/resource/gsmsecret/gsmsecret.go +++ b/dev/managedservicesplatform/internal/resource/gsmsecret/gsmsecret.go @@ -2,6 +2,7 @@ package gsmsecret import ( "github.com/aws/constructs-go/constructs/v10" + "github.com/hashicorp/terraform-cdk-go/cdktf" "github.com/sourcegraph/managed-services-platform-cdktf/gen/google/datagooglesecretmanagersecretversion" "github.com/sourcegraph/managed-services-platform-cdktf/gen/google/secretmanagersecret" "github.com/sourcegraph/managed-services-platform-cdktf/gen/google/secretmanagersecretversion" @@ -20,6 +21,8 @@ type Config struct { ID string Value string + + DependsOn []cdktf.ITerraformDependable } func New(scope constructs.Construct, id resourceid.ID, config Config) *Output { @@ -38,6 +41,7 @@ func New(scope constructs.Construct, id resourceid.ID, config Config) *Output { &secretmanagersecretversion.SecretManagerSecretVersionConfig{ Secret: secret.Id(), SecretData: &config.Value, + DependsOn: &config.DependsOn, }) return &Output{ diff --git a/dev/managedservicesplatform/internal/resource/postgresqlroles/BUILD.bazel b/dev/managedservicesplatform/internal/resource/postgresqlroles/BUILD.bazel new file mode 100644 index 0000000000000..670401caebfa8 --- /dev/null +++ b/dev/managedservicesplatform/internal/resource/postgresqlroles/BUILD.bazel @@ -0,0 +1,18 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "postgresqlroles", + srcs = ["postgresqlroles.go"], + importpath = "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resource/postgresqlroles", + visibility = ["//dev/managedservicesplatform:__subpackages__"], + deps = [ + "//dev/managedservicesplatform/internal/resource/cloudsql", + "//dev/managedservicesplatform/internal/resourceid", + "//lib/pointers", + "@com_github_aws_constructs_go_constructs_v10//:constructs", + "@com_github_aws_jsii_runtime_go//:jsii-runtime-go", + "@com_github_hashicorp_terraform_cdk_go_cdktf//:cdktf", + "@com_github_sourcegraph_managed_services_platform_cdktf_gen_postgresql//grantrole", + "@com_github_sourcegraph_managed_services_platform_cdktf_gen_postgresql//provider", + ], +) diff --git a/dev/managedservicesplatform/internal/resource/postgresqlroles/postgresqlroles.go b/dev/managedservicesplatform/internal/resource/postgresqlroles/postgresqlroles.go new file mode 100644 index 0000000000000..a5bd8ac3e041b --- /dev/null +++ b/dev/managedservicesplatform/internal/resource/postgresqlroles/postgresqlroles.go @@ -0,0 +1,58 @@ +package postgresqlroles + +import ( + "github.com/aws/constructs-go/constructs/v10" + "github.com/aws/jsii-runtime-go" + "github.com/hashicorp/terraform-cdk-go/cdktf" + + "github.com/sourcegraph/managed-services-platform-cdktf/gen/postgresql/grantrole" + postgresql "github.com/sourcegraph/managed-services-platform-cdktf/gen/postgresql/provider" + + "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resource/cloudsql" + "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resourceid" + "github.com/sourcegraph/sourcegraph/lib/pointers" +) + +type Output struct { + // WorkloadSuperuserGrant should be referenced as a dependency before + // WorkloadUser is used. + WorkloadSuperuserGrant cdktf.ITerraformDependable +} + +type Config *cloudsql.Output + +// New applies PostgreSQL roles to a Cloud SQL database. +// +// When tearing down a database only (i.e. not destroying the entire environment), +// we must manually remove resources managed by this provider from state in order +// to apply the diff: +// +// terraform state list | grep postgresql_grant_role | xargs terraform state rm +// +// This is because we cannot instantiate the provider when removing the +// database, causing plans and applies to fail. We'll likely be stuck with the +// workaround for a while, which is acceptable because CloudSQL-only teardowns +// should be rare - we'll more likely be removing entire environments in general. +// +// TODO(@bobheadxi): Improve documentation around this teardown scenario. +func New(scope constructs.Construct, id resourceid.ID, config Config) (*Output, error) { + pgProvider := postgresql.NewPostgresqlProvider(scope, id.TerraformID("postgresql_provider"), &postgresql.PostgresqlProviderConfig{ + Scheme: pointers.Ptr("gcppostgres"), + Host: config.Instance.ConnectionName(), + Username: config.AdminUser.Name(), + Password: config.AdminUser.Password(), + Port: jsii.Number(5432), + Superuser: jsii.Bool(false), + }) + + workloadSuperuserGrant := grantrole.NewGrantRole(scope, id.TerraformID("workload_service_account_role_cloudsqlsuperuser"), &grantrole.GrantRoleConfig{ + Provider: pgProvider, + Role: config.WorkloadUser.Name(), + GrantRole: jsii.String("cloudsqlsuperuser"), + WithAdminOption: jsii.Bool(true), + }) + + return &Output{ + WorkloadSuperuserGrant: workloadSuperuserGrant, + }, nil +} diff --git a/dev/managedservicesplatform/internal/resource/privatenetwork/BUILD.bazel b/dev/managedservicesplatform/internal/resource/privatenetwork/BUILD.bazel index ba588f23d0a94..716100403e53a 100644 --- a/dev/managedservicesplatform/internal/resource/privatenetwork/BUILD.bazel +++ b/dev/managedservicesplatform/internal/resource/privatenetwork/BUILD.bazel @@ -8,8 +8,10 @@ go_library( deps = [ "//lib/pointers", "@com_github_aws_constructs_go_constructs_v10//:constructs", + "@com_github_sourcegraph_managed_services_platform_cdktf_gen_google//computeglobaladdress", "@com_github_sourcegraph_managed_services_platform_cdktf_gen_google//computenetwork", "@com_github_sourcegraph_managed_services_platform_cdktf_gen_google//computesubnetwork", + "@com_github_sourcegraph_managed_services_platform_cdktf_gen_google//servicenetworkingconnection", "@com_github_sourcegraph_managed_services_platform_cdktf_gen_google//vpcaccessconnector", ], ) diff --git a/dev/managedservicesplatform/internal/resource/privatenetwork/privatenetwork.go b/dev/managedservicesplatform/internal/resource/privatenetwork/privatenetwork.go index 9767e68d2dfee..c1b88558ae83b 100644 --- a/dev/managedservicesplatform/internal/resource/privatenetwork/privatenetwork.go +++ b/dev/managedservicesplatform/internal/resource/privatenetwork/privatenetwork.go @@ -1,9 +1,13 @@ package privatenetwork import ( + "fmt" + "github.com/aws/constructs-go/constructs/v10" + "github.com/sourcegraph/managed-services-platform-cdktf/gen/google/computeglobaladdress" "github.com/sourcegraph/managed-services-platform-cdktf/gen/google/computenetwork" "github.com/sourcegraph/managed-services-platform-cdktf/gen/google/computesubnetwork" + "github.com/sourcegraph/managed-services-platform-cdktf/gen/google/servicenetworkingconnection" "github.com/sourcegraph/managed-services-platform-cdktf/gen/google/vpcaccessconnector" "github.com/sourcegraph/sourcegraph/lib/pointers" @@ -16,14 +20,19 @@ type Config struct { } type Output struct { - Network computenetwork.ComputeNetwork - Subnetwork computesubnetwork.ComputeSubnetwork - Connector vpcaccessconnector.VpcAccessConnector + // Network is the private network for GCP resources that the Cloud Run + // workload needs to access. + Network computenetwork.ComputeNetwork + // ServiceNetworkingConnection is required for Cloud SQL access, and is + // provisioned by default. + ServiceNetworkingConnection servicenetworkingconnection.ServiceNetworkingConnection + // Connector is used by Cloud Run to connect to the private network. + Connector vpcaccessconnector.VpcAccessConnector } -// New sets up a network for the Cloud Run service to interface -// with other GCP services. We create it directly in this stack package becasue -// it is very specific to the Cloud Run service. +// New sets up a network for the Cloud Run service to interface with other GCP +// services. This should only be created once, hence why it does not have accept +// a resourceid.ID func New(scope constructs.Construct, config Config) *Output { network := computenetwork.NewComputeNetwork( scope, @@ -61,6 +70,28 @@ func New(scope constructs.Construct, config Config) *Output { }, ) + // https://cloud.google.com/sql/docs/mysql/private-ip#network_requirements + // This is configured per project and usually doesn't change + serviceNetworkingConnectionIP := computeglobaladdress.NewComputeGlobalAddress( + scope, + pointers.Ptr("cloudrun-network-service-networking-connection-ip"), + &computeglobaladdress.ComputeGlobalAddressConfig{ + Project: &config.ProjectID, + Name: pointers.Ptr(fmt.Sprintf("%s-service-networking-connection", config.ServiceID)), + Network: network.Id(), + Purpose: pointers.Ptr("VPC_PEERING"), + AddressType: pointers.Ptr("INTERNAL"), + PrefixLength: pointers.Float64(16), + }) + serviceNetworkingConnection := servicenetworkingconnection.NewServiceNetworkingConnection( + scope, + pointers.Ptr("cloudrun-network-service-networking-connection"), + &servicenetworkingconnection.ServiceNetworkingConnectionConfig{ + Network: network.Id(), + Service: pointers.Ptr("servicenetworking.googleapis.com"), + ReservedPeeringRanges: &[]*string{serviceNetworkingConnectionIP.Name()}, + }) + // Cloud Run services can't connect directly to networks, and seem to require a // VPC connector, so we provision one to allow Cloud Run services to talk to // other GCP services (like Redis) @@ -78,8 +109,8 @@ func New(scope constructs.Construct, config Config) *Output { ) return &Output{ - Network: network, - Subnetwork: subnetwork, - Connector: connector, + Network: network, + ServiceNetworkingConnection: serviceNetworkingConnection, + Connector: connector, } } diff --git a/dev/managedservicesplatform/internal/resource/random/random.go b/dev/managedservicesplatform/internal/resource/random/random.go index 601300200a1ae..0f838711dff7d 100644 --- a/dev/managedservicesplatform/internal/resource/random/random.go +++ b/dev/managedservicesplatform/internal/resource/random/random.go @@ -9,6 +9,8 @@ import ( ) type Config struct { + // ByteLength is the number of bytes of randomness to generate. The converted + // hex value's length is twice this value. ByteLength int `validate:"required"` // Prefix is added to the start of the random output followed by a '-', for // example: diff --git a/dev/managedservicesplatform/internal/resource/redis/redis.go b/dev/managedservicesplatform/internal/resource/redis/redis.go index aba486b0b489f..753b6e70179d5 100644 --- a/dev/managedservicesplatform/internal/resource/redis/redis.go +++ b/dev/managedservicesplatform/internal/resource/redis/redis.go @@ -21,11 +21,11 @@ type Output struct { type Config struct { ProjectID string - - Region string - Network computenetwork.ComputeNetwork + Region string Spec spec.EnvironmentResourceRedisSpec + + Network computenetwork.ComputeNetwork } func New(scope constructs.Construct, id resourceid.ID, config Config) (*Output, error) { diff --git a/dev/managedservicesplatform/internal/stack/cloudrun/BUILD.bazel b/dev/managedservicesplatform/internal/stack/cloudrun/BUILD.bazel index 516c0abf93ce6..3371dcd149835 100644 --- a/dev/managedservicesplatform/internal/stack/cloudrun/BUILD.bazel +++ b/dev/managedservicesplatform/internal/stack/cloudrun/BUILD.bazel @@ -8,7 +8,9 @@ go_library( deps = [ "//dev/managedservicesplatform/googlesecretsmanager", "//dev/managedservicesplatform/internal/resource/bigquery", + "//dev/managedservicesplatform/internal/resource/cloudsql", "//dev/managedservicesplatform/internal/resource/gsmsecret", + "//dev/managedservicesplatform/internal/resource/postgresqlroles", "//dev/managedservicesplatform/internal/resource/privatenetwork", "//dev/managedservicesplatform/internal/resource/random", "//dev/managedservicesplatform/internal/resource/redis", @@ -24,8 +26,10 @@ go_library( "//dev/managedservicesplatform/internal/stack/options/googleprovider", "//dev/managedservicesplatform/internal/stack/options/randomprovider", "//dev/managedservicesplatform/spec", + "//internal/syncx", "//lib/errors", "//lib/pointers", + "@com_github_hashicorp_terraform_cdk_go_cdktf//:cdktf", "@org_golang_x_exp//maps", "@org_golang_x_exp//slices", ], diff --git a/dev/managedservicesplatform/internal/stack/cloudrun/cloudrun.go b/dev/managedservicesplatform/internal/stack/cloudrun/cloudrun.go index 0450216654317..bfc199b847c82 100644 --- a/dev/managedservicesplatform/internal/stack/cloudrun/cloudrun.go +++ b/dev/managedservicesplatform/internal/stack/cloudrun/cloudrun.go @@ -9,9 +9,13 @@ import ( "golang.org/x/exp/maps" "golang.org/x/exp/slices" + "github.com/hashicorp/terraform-cdk-go/cdktf" + "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/googlesecretsmanager" "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resource/bigquery" + "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resource/cloudsql" "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resource/gsmsecret" + "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resource/postgresqlroles" "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resource/privatenetwork" "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resource/random" "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resource/redis" @@ -27,6 +31,7 @@ import ( "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/stack/options/googleprovider" "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/stack/options/randomprovider" "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/spec" + "github.com/sourcegraph/sourcegraph/internal/syncx" "github.com/sourcegraph/sourcegraph/lib/errors" "github.com/sourcegraph/sourcegraph/lib/pointers" ) @@ -149,26 +154,26 @@ func NewStack(stacks *stack.Set, vars Variables) (crossStackOutput *CrossStackOu Description: "Resolved image tag to deploy", }) - // Set up build configuration. - cloudRunBuildVars := builder.Variables{ - Service: vars.Service, - Image: vars.Image, - ResolvedImageTag: *imageTag.StringValue, - Environment: vars.Environment, - GCPProjectID: vars.ProjectID, - GCPRegion: gcpRegion, - ServiceAccount: vars.CloudRunWorkloadServiceAccount, - DiagnosticsSecret: diagnosticsSecret, - ResourceLimits: makeContainerResourceLimits(vars.Environment.Instances.Resources), - } - - if vars.Environment.Resources.NeedsCloudRunConnector() { - cloudRunBuildVars.PrivateNetwork = privatenetwork.New(stack, privatenetwork.Config{ + // privateNetworkEnabled indicates if privateNetwork has been instantiated + // before. + var privateNetworkEnabled bool + // privateNetwork is only instantiated if used, and is only instantiated + // once. If called, it always returns a non-nil value. + privateNetwork := syncx.OnceValue(func() *privatenetwork.Output { + privateNetworkEnabled = true + return privatenetwork.New(stack, privatenetwork.Config{ ProjectID: vars.ProjectID, ServiceID: vars.Service.ID, Region: gcpRegion, }) - } + }) + + // Add MSP env var indicating that the service is running in a Managed + // Services Platform environment. + cloudRunBuilder.AddEnv("MSP", "true") + + // For SSL_CERT_DIR, configure right before final build + sslCertDirs := []string{"/etc/ssl/certs"} // redisInstance is only created and non-nil if Redis is configured for the // environment. @@ -177,13 +182,14 @@ func NewStack(stacks *stack.Set, vars Variables) (crossStackOutput *CrossStackOu resourceid.New("redis"), redis.Config{ ProjectID: vars.ProjectID, - Network: cloudRunBuildVars.PrivateNetwork.Network, Region: gcpRegion, Spec: *vars.Environment.Resources.Redis, + Network: privateNetwork().Network, }) if err != nil { return nil, errors.Wrap(err, "failed to render Redis instance") } + // We don't use serviceEnvVarPrefix here because this is a // Sourcegraph-wide convention. cloudRunBuilder.AddEnv("REDIS_ENDPOINT", redisInstance.Endpoint) @@ -200,7 +206,45 @@ func NewStack(stacks *stack.Set, vars Variables) (crossStackOutput *CrossStackOu 292, // 0444 read-only ) cloudRunBuilder.AddVolumeMount(caCertVolumeName, "/etc/ssl/custom-certs") - cloudRunBuilder.AddEnv("SSL_CERT_DIR", "/etc/ssl/certs:/etc/ssl/custom-certs") + sslCertDirs = append(sslCertDirs, "/etc/ssl/custom-certs") + } + + if vars.Environment.Resources != nil && vars.Environment.Resources.PostgreSQL != nil { + sqlInstance, err := cloudsql.New(stack, resourceid.New("postgresql"), cloudsql.Config{ + ProjectID: vars.ProjectID, + Region: gcpRegion, + Spec: *vars.Environment.Resources.PostgreSQL, + Network: privateNetwork().Network, + + WorkloadIdentity: *vars.CloudRunWorkloadServiceAccount, + + // ServiceNetworkingConnection is required for Cloud SQL to connect + // to the private network, so we must wait for it to be provisioned. + // See https://cloud.google.com/sql/docs/mysql/private-ip#network_requirements + DependsOn: []cdktf.ITerraformDependable{ + privateNetwork().ServiceNetworkingConnection, + }, + }) + if err != nil { + return nil, errors.Wrap(err, "failed to render Cloud SQL instance") + } + + // Add parameters required for authentication + cloudRunBuilder.AddEnv("PGINSTANCE", *sqlInstance.Instance.ConnectionName()) + cloudRunBuilder.AddEnv("PGUSER", *sqlInstance.WorkloadUser.Name()) + // NOTE: https://pkg.go.dev/cloud.google.com/go/cloudsqlconn#section-readme + // magically handles certs for us, so we don't need to mount certs in + // Cloud Run. + + // Apply additional runtime configuration + pgRoles, err := postgresqlroles.New(stack, id.Group("postgresqlroles"), sqlInstance) + if err != nil { + return nil, errors.Wrap(err, "failed to render Cloud SQL PostgreSQL roles") + } + + // We need the workload superuser role to be granted before Cloud Run + // can correctly use the database instance + cloudRunBuilder.AddDependency(pgRoles.WorkloadSuperuserGrant) } // bigqueryDataset is only created and non-nil if BigQuery is configured for @@ -219,8 +263,25 @@ func NewStack(stacks *stack.Set, vars Variables) (crossStackOutput *CrossStackOu } // Finalize output of builder - if _, err := cloudRunBuilder.Build(stack, cloudRunBuildVars); err != nil { - return nil, err + cloudRunBuilder.AddEnv("SSL_CERT_DIR", strings.Join(sslCertDirs, ":")) + if _, err := cloudRunBuilder.Build(stack, builder.Variables{ + Service: vars.Service, + Image: vars.Image, + ResolvedImageTag: *imageTag.StringValue, + Environment: vars.Environment, + GCPProjectID: vars.ProjectID, + GCPRegion: gcpRegion, + ServiceAccount: vars.CloudRunWorkloadServiceAccount, + DiagnosticsSecret: diagnosticsSecret, + ResourceLimits: makeContainerResourceLimits(vars.Environment.Instances.Resources), + PrivateNetwork: func() *privatenetwork.Output { + if privateNetworkEnabled { + return privateNetwork() + } + return nil + }(), + }); err != nil { + return nil, errors.Wrapf(err, "build Cloud Run resource kind %q", cloudRunBuilder.Kind()) } // Collect outputs diff --git a/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/builder.go b/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/builder.go index 28d48aca5cdfe..29d49f6c1eb1b 100644 --- a/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/builder.go +++ b/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/builder.go @@ -30,9 +30,6 @@ type Variables struct { PrivateNetwork *privatenetwork.Output // ResourceLimits is a map of resource limits for the Cloud Run resource. ResourceLimits map[string]*string - // DependsOn ensures that particular Terraform resources are provisioned - // before the Cloud Run resource is created. - DependsOn []cdktf.ITerraformDependable } type SecretRef struct { @@ -48,6 +45,9 @@ type Resource interface { // Builder configures and creates Cloud Run Services or Jobs. type Builder interface { + // Kind indicates what this Builder implementation creates. + Kind() spec.ServiceKind + // AddEnv adds an environment variable to the resource, and should only be // used before Build. AddEnv(key, value string) @@ -60,6 +60,9 @@ type Builder interface { // AddVolumeMount adds a volume mount sourced from a secret to the resource, // and should only be used before Build. AddSecretVolume(name, mountPath string, secret SecretRef, mode int) + // AddDependency adds an explicit resource dependency that must be available + // before the Cloud Run resource is created. + AddDependency(cdktf.ITerraformDependable) // Build finalizes the resource. Build(cdktf.TerraformStack, Variables) (Resource, error) diff --git a/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/job/BUILD.bazel b/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/job/BUILD.bazel index cc1c6c4a70f19..077de4c2d831b 100644 --- a/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/job/BUILD.bazel +++ b/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/job/BUILD.bazel @@ -9,6 +9,7 @@ go_library( "//dev/managedservicesplatform/internal/resource/serviceaccount", "//dev/managedservicesplatform/internal/resourceid", "//dev/managedservicesplatform/internal/stack/cloudrun/internal/builder", + "//dev/managedservicesplatform/spec", "//lib/pointers", "@com_github_hashicorp_terraform_cdk_go_cdktf//:cdktf", "@com_github_sourcegraph_managed_services_platform_cdktf_gen_google//cloudrunv2job", diff --git a/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/job/job.go b/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/job/job.go index ec2091b2d1c2d..f5c1c88b1df50 100644 --- a/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/job/job.go +++ b/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/job/job.go @@ -12,6 +12,7 @@ import ( "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resource/serviceaccount" "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/resourceid" "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder" + "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/spec" "github.com/sourcegraph/sourcegraph/lib/pointers" ) @@ -19,6 +20,7 @@ type jobBuilder struct { env []*cloudrunv2job.CloudRunV2JobTemplateTemplateContainersEnv volumes []*cloudrunv2job.CloudRunV2JobTemplateTemplateVolumes volumeMounts []*cloudrunv2job.CloudRunV2JobTemplateTemplateContainersVolumeMounts + dependencies []cdktf.ITerraformDependable } var _ builder.Builder = (*jobBuilder)(nil) @@ -29,6 +31,8 @@ func NewBuilder() builder.Builder { return &jobBuilder{} } +func (b *jobBuilder) Kind() spec.ServiceKind { return spec.ServiceKindJob } + func (b *jobBuilder) AddEnv(key, value string) { b.env = append(b.env, &cloudrunv2job.CloudRunV2JobTemplateTemplateContainersEnv{ Name: pointers.Ptr(key), @@ -69,6 +73,12 @@ func (b *jobBuilder) AddSecretVolume(name, mountPath string, secret builder.Secr }) } +// AddDependency ensures that particular Terraform resources are provisioned +// before the Cloud Run resource is created. +func (b *jobBuilder) AddDependency(dep cdktf.ITerraformDependable) { + b.dependencies = append(b.dependencies, dep) +} + func (b *jobBuilder) Build(stack cdktf.TerraformStack, vars builder.Variables) (builder.Resource, error) { var vpcAccess *cloudrunv2job.CloudRunV2JobTemplateTemplateVpcAccess if vars.PrivateNetwork != nil { @@ -81,7 +91,7 @@ func (b *jobBuilder) Build(stack cdktf.TerraformStack, vars builder.Variables) ( job := cloudrunv2job.NewCloudRunV2Job(stack, pointers.Ptr("cloudrun"), &cloudrunv2job.CloudRunV2JobConfig{ Name: pointers.Ptr(vars.Service.ID), Location: pointers.Ptr(vars.GCPRegion), - DependsOn: &vars.DependsOn, + DependsOn: &b.dependencies, Template: &cloudrunv2job.CloudRunV2JobTemplate{ TaskCount: pointers.Ptr(float64(1)), diff --git a/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/service/service.go b/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/service/service.go index e7658dc9723ba..b30d0a6e98397 100644 --- a/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/service/service.go +++ b/dev/managedservicesplatform/internal/stack/cloudrun/internal/builder/service/service.go @@ -25,6 +25,7 @@ type serviceBuilder struct { env []*cloudrunv2service.CloudRunV2ServiceTemplateContainersEnv volumes []*cloudrunv2service.CloudRunV2ServiceTemplateVolumes volumeMounts []*cloudrunv2service.CloudRunV2ServiceTemplateContainersVolumeMounts + dependencies []cdktf.ITerraformDependable } var _ builder.Builder = (*serviceBuilder)(nil) @@ -35,6 +36,8 @@ func NewBuilder() builder.Builder { return &serviceBuilder{} } +func (b *serviceBuilder) Kind() spec.ServiceKind { return spec.ServiceKindService } + func (b *serviceBuilder) AddEnv(key, value string) { b.env = append(b.env, &cloudrunv2service.CloudRunV2ServiceTemplateContainersEnv{ Name: pointers.Ptr(key), @@ -75,6 +78,12 @@ func (b *serviceBuilder) AddSecretVolume(name, mountPath string, secret builder. }) } +// AddDependency ensures that particular Terraform resources are provisioned +// before the Cloud Run resource is created. +func (b *serviceBuilder) AddDependency(dep cdktf.ITerraformDependable) { + b.dependencies = append(b.dependencies, dep) +} + func (b *serviceBuilder) Build(stack cdktf.TerraformStack, vars builder.Variables) (builder.Resource, error) { var vpcAccess *cloudrunv2service.CloudRunV2ServiceTemplateVpcAccess if vars.PrivateNetwork != nil { @@ -92,7 +101,7 @@ func (b *serviceBuilder) Build(stack cdktf.TerraformStack, vars builder.Variable svc := cloudrunv2service.NewCloudRunV2Service(stack, pointers.Ptr("cloudrun"), &cloudrunv2service.CloudRunV2ServiceConfig{ Name: pointers.Ptr(vars.Service.ID), Location: pointers.Ptr(vars.GCPRegion), - DependsOn: &vars.DependsOn, + DependsOn: &b.dependencies, // Disallows direct traffic from public internet, we have a LB set up for that. Ingress: pointers.Ptr("INGRESS_TRAFFIC_INTERNAL_LOAD_BALANCER"), diff --git a/dev/managedservicesplatform/internal/stack/iam/iam.go b/dev/managedservicesplatform/internal/stack/iam/iam.go index d107db16deb9f..1381fc7a6bcd4 100644 --- a/dev/managedservicesplatform/internal/stack/iam/iam.go +++ b/dev/managedservicesplatform/internal/stack/iam/iam.go @@ -52,6 +52,9 @@ func NewStack(stacks *stack.Set, vars Variables) (*CrossStackOutput, error) { {ID: resourceid.New("role_monitoring_metricwriter"), Role: "roles/monitoring.metricWriter"}, // Allow service to publish Cloud Profiler profiles {ID: resourceid.New("role_cloudprofiler_agent"), Role: "roles/cloudprofiler.agent"}, + // Allow service to connect to Cloud SQL + {ID: resourceid.New("role_cloudsql_client"), Role: "roles/cloudsql.client"}, + {ID: resourceid.New("role_cloudsql_instanceuser"), Role: "roles/cloudsql.instanceUser"}, } // Grant configured roles to the workload identity @@ -83,6 +86,7 @@ func NewStack(stacks *stack.Set, vars Variables) (*CrossStackOutput, error) { }) } + // Create a service account for the workload identity in Cloud Run workloadServiceAccount := serviceaccount.New(stack, id.Group("workload"), serviceaccount.Config{ diff --git a/dev/managedservicesplatform/internal/stack/project/project.go b/dev/managedservicesplatform/internal/stack/project/project.go index e4e013aa045ea..2e9d7fb4db7da 100644 --- a/dev/managedservicesplatform/internal/stack/project/project.go +++ b/dev/managedservicesplatform/internal/stack/project/project.go @@ -37,6 +37,7 @@ var gcpServices = []string{ "bigquery.googleapis.com", "cloudprofiler.googleapis.com", "cloudscheduler.googleapis.com", + "sqladmin.googleapis.com", } const ( diff --git a/dev/managedservicesplatform/spec/BUILD.bazel b/dev/managedservicesplatform/spec/BUILD.bazel index fd2267d4208b3..d7aea1694d4a2 100644 --- a/dev/managedservicesplatform/spec/BUILD.bazel +++ b/dev/managedservicesplatform/spec/BUILD.bazel @@ -22,7 +22,14 @@ go_library( go_test( name = "spec_test", - srcs = ["service_test.go"], + srcs = [ + "environment_test.go", + "service_test.go", + ], embed = [":spec"], - deps = ["@com_github_stretchr_testify//assert"], + deps = [ + "//lib/pointers", + "@com_github_hexops_autogold_v2//:autogold", + "@com_github_stretchr_testify//assert", + ], ) diff --git a/dev/managedservicesplatform/spec/environment.go b/dev/managedservicesplatform/spec/environment.go index 10bca8d78ae35..f44857e194194 100644 --- a/dev/managedservicesplatform/spec/environment.go +++ b/dev/managedservicesplatform/spec/environment.go @@ -5,6 +5,7 @@ import ( "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/imageupdater" "github.com/sourcegraph/sourcegraph/lib/errors" + "github.com/sourcegraph/sourcegraph/lib/pointers" ) type EnvironmentSpec struct { @@ -45,6 +46,7 @@ type EnvironmentSpec struct { func (s EnvironmentSpec) Validate() []error { var errs []error errs = append(errs, s.Deploy.Validate()...) + errs = append(errs, s.Resources.Validate()...) return errs } @@ -256,14 +258,21 @@ type EnvironmentJobScheduleSpec struct { } type EnvironmentResourcesSpec struct { - // Redis, if provided, provisions a Redis instance. Details for using this - // Redis instance is automatically provided in environment variables: + // Redis, if provided, provisions a Redis instance backed by Cloud Memorystore. + // Details for using this Redis instance is automatically provided in + // environment variables: // // - REDIS_ENDPOINT // // Sourcegraph Redis libraries (i.e. internal/redispool) will automatically // use the given configuration. Redis *EnvironmentResourceRedisSpec `json:"redis,omitempty"` + // PostgreSQL, if provided, provisions a PostgreSQL database instance backed + // by Cloud SQL. + // + // To connect to the database, use + // (lib/managedservicesplatform/service.Contract).GetPostgreSQLDB(). + PostgreSQL *EnvironmentResourcePostgreSQLSpec `json:"postgreSQL,omitempty"` // BigQueryTable, if provided, provisions a table for the service to write // to. Details for writing to the table are automatically provided in // environment variables: @@ -280,16 +289,13 @@ type EnvironmentResourcesSpec struct { BigQueryTable *EnvironmentResourceBigQueryTableSpec `json:"bigQueryTable,omitempty"` } -// NeedsCloudRunConnector indicates if there are any resources that require a -// connector network for Cloud Run to talk to provisioned resources. -func (s *EnvironmentResourcesSpec) NeedsCloudRunConnector() bool { +func (s *EnvironmentResourcesSpec) Validate() []error { if s == nil { - return false - } - if s.Redis != nil { - return true + return nil } - return false + var errs []error + errs = append(errs, s.PostgreSQL.Validate()...) + return errs } type EnvironmentResourceRedisSpec struct { @@ -299,6 +305,47 @@ type EnvironmentResourceRedisSpec struct { MemoryGB *int `json:"memoryGB,omitempty"` } +type EnvironmentResourcePostgreSQLSpec struct { + // Databases to provision - required. + Databases []string `json:"databases"` + // Defaults to 1. Must be 1, or an even number between 2 and 96. + CPU *int `json:"cpu,omitempty"` + // Defaults to 4 (to meet CloudSQL minimum). You must request 0.9 to 6.5 GB + // per vCPU. + MemoryGB *int `json:"memoryGB,omitempty"` +} + +func (s *EnvironmentResourcePostgreSQLSpec) Validate() []error { + if s == nil { + return nil + } + var errs []error + if s.CPU != nil { + if *s.CPU < 1 { + errs = append(errs, errors.New("postgreSQL.cpu must be >= 1")) + } + if *s.CPU > 1 && *s.CPU%2 != 0 { + errs = append(errs, errors.New("postgreSQL.cpu must be 1 or a multiple of 2")) + } + if *s.CPU > 96 { + errs = append(errs, errors.New("postgreSQL.cpu must be <= 96")) + } + } + if s.MemoryGB != nil { + cpu := pointers.Deref(s.CPU, 1) + if *s.MemoryGB < 4 { + errs = append(errs, errors.New("postgreSQL.memoryGB must be >= 4")) + } + if *s.MemoryGB < cpu { + errs = append(errs, errors.New("postgreSQL.memoryGB must be >= postgreSQL.cpu")) + } + if *s.MemoryGB > 6*cpu { + errs = append(errs, errors.New("postgreSQL.memoryGB must be <= 6*postgreSQL.cpu")) + } + } + return errs +} + type EnvironmentResourceBigQueryTableSpec struct { Region string `json:"region"` // TableID is the ID of table to create within the service's BigQuery diff --git a/dev/managedservicesplatform/spec/environment_test.go b/dev/managedservicesplatform/spec/environment_test.go new file mode 100644 index 0000000000000..4a2241d781ec6 --- /dev/null +++ b/dev/managedservicesplatform/spec/environment_test.go @@ -0,0 +1,80 @@ +package spec + +import ( + "testing" + + "github.com/hexops/autogold/v2" + "github.com/stretchr/testify/assert" + + "github.com/sourcegraph/sourcegraph/lib/pointers" +) + +func errorMessages(errs []error) []string { + var messages []string + for _, e := range errs { + messages = append(messages, e.Error()) + } + return messages +} + +func TestEnvironmentResourcePostgreSQLSpecValidate(t *testing.T) { + for _, tc := range []struct { + name string + spec *EnvironmentResourcePostgreSQLSpec + wantErrors autogold.Value + }{ + { + name: "nil", + spec: nil, + wantErrors: nil, + }, + { + name: "defaults", + spec: &EnvironmentResourcePostgreSQLSpec{}, + wantErrors: nil, + }, + { + name: "odd CPU", + spec: &EnvironmentResourcePostgreSQLSpec{ + CPU: pointers.Ptr(3), + }, + wantErrors: autogold.Expect([]string{"postgreSQL.cpu must be 1 or a multiple of 2"}), + }, + { + name: "too little memory for CPU", + spec: &EnvironmentResourcePostgreSQLSpec{ + CPU: pointers.Ptr(12), + MemoryGB: pointers.Ptr(4), + }, + wantErrors: autogold.Expect([]string{"postgreSQL.memoryGB must be >= postgreSQL.cpu"}), + }, + { + name: "too much memory for CPU", + spec: &EnvironmentResourcePostgreSQLSpec{ + MemoryGB: pointers.Ptr(12), + }, + wantErrors: autogold.Expect([]string{"postgreSQL.memoryGB must be <= 6*postgreSQL.cpu"}), + }, + { + name: "odd CPU, too much memory for CPU", + spec: &EnvironmentResourcePostgreSQLSpec{ + CPU: pointers.Ptr(5), + MemoryGB: pointers.Ptr(50), + }, + wantErrors: autogold.Expect([]string{ + "postgreSQL.cpu must be 1 or a multiple of 2", + "postgreSQL.memoryGB must be <= 6*postgreSQL.cpu", + }), + }, + } { + t.Run(tc.name, func(t *testing.T) { + errs := tc.spec.Validate() + if tc.wantErrors == nil { + assert.Empty(t, errs) + } else { + assert.NotEmpty(t, errs) + tc.wantErrors.Equal(t, errorMessages(errs)) + } + }) + } +} diff --git a/go.mod b/go.mod index 81128167e300f..da666d35d2965 100644 --- a/go.mod +++ b/go.mod @@ -55,12 +55,12 @@ replace ( ) require ( - cloud.google.com/go/bigquery v1.55.0 - cloud.google.com/go/kms v1.15.2 - cloud.google.com/go/monitoring v1.16.0 + cloud.google.com/go/bigquery v1.56.0 + cloud.google.com/go/kms v1.15.4 + cloud.google.com/go/monitoring v1.16.2 cloud.google.com/go/profiler v0.3.1 cloud.google.com/go/pubsub v1.33.0 - cloud.google.com/go/secretmanager v1.11.1 + cloud.google.com/go/secretmanager v1.11.3 cloud.google.com/go/storage v1.30.1 github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.41.0 github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.17.0 @@ -116,7 +116,7 @@ require ( github.com/gomodule/redigo v2.0.0+incompatible github.com/google/go-cmp v0.6.0 github.com/google/go-querystring v1.1.0 - github.com/google/uuid v1.3.1 + github.com/google/uuid v1.4.0 github.com/gorilla/context v1.1.1 github.com/gorilla/mux v1.8.0 github.com/gorilla/schema v1.2.0 @@ -131,8 +131,8 @@ require ( github.com/hexops/valast v1.4.3 github.com/honeycombio/libhoney-go v1.15.8 github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac - github.com/jackc/pgconn v1.12.1 - github.com/jackc/pgx/v4 v4.16.1 + github.com/jackc/pgconn v1.14.0 + github.com/jackc/pgx/v4 v4.18.1 github.com/joho/godotenv v1.4.0 github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible github.com/json-iterator/go v1.1.12 @@ -223,18 +223,18 @@ require ( go.uber.org/automaxprocs v1.5.2 go.uber.org/ratelimit v0.2.0 go.uber.org/zap v1.26.0 - golang.org/x/crypto v0.14.0 - golang.org/x/net v0.17.0 - golang.org/x/oauth2 v0.10.0 - golang.org/x/sync v0.3.0 - golang.org/x/sys v0.13.0 - golang.org/x/time v0.3.0 + golang.org/x/crypto v0.15.0 + golang.org/x/net v0.18.0 + golang.org/x/oauth2 v0.14.0 + golang.org/x/sync v0.5.0 + golang.org/x/sys v0.14.0 + golang.org/x/time v0.4.0 // golang.org/x/tools should not be upgraded until https://github.com/bazelbuild/bazel-gazelle/issues/1579 // is resolved. golang.org/x/tools v0.10.0 gonum.org/v1/gonum v0.13.0 - google.golang.org/api v0.132.0 - google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13 // indirect + google.golang.org/api v0.150.0 + google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 // indirect google.golang.org/protobuf v1.31.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v2 v2.4.0 @@ -281,12 +281,14 @@ require ( go.opentelemetry.io/collector/config/configtelemetry v0.81.0 go.opentelemetry.io/collector/config/configtls v0.81.0 go.opentelemetry.io/otel/exporters/prometheus v0.39.0 - google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13 + google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b + gorm.io/gorm v1.25.5 ) require ( + cloud.google.com/go/cloudsqlconn v1.5.1 // indirect cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 // indirect - cloud.google.com/go/trace v1.10.1 // indirect + cloud.google.com/go/trace v1.10.3 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.16.1 // indirect @@ -318,8 +320,8 @@ require ( github.com/golang-jwt/jwt/v5 v5.0.0 // indirect github.com/google/flatbuffers v2.0.8+incompatible // indirect github.com/google/gnostic v0.5.7-v3refs // indirect - github.com/google/s2a-go v0.1.4 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/gosimple/slug v1.12.0 // indirect github.com/gosimple/unidecode v1.0.1 // indirect github.com/grafana-tools/sdk v0.0.0-20220919052116-6562121319fc // indirect @@ -333,7 +335,11 @@ require ( github.com/hashicorp/jsonapi v0.0.0-20210826224640-ee7dae0fb22d // indirect github.com/iancoleman/orderedmap v0.2.0 // indirect github.com/iancoleman/strcase v0.3.0 // indirect - github.com/jackc/pgproto3/v2 v2.3.0 // indirect + github.com/jackc/pgproto3/v2 v2.3.2 // indirect + github.com/jackc/pgx/v5 v5.5.0 // indirect + github.com/jackc/puddle/v2 v2.2.1 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect github.com/klauspost/asmfmt v1.3.2 // indirect github.com/knadh/koanf/v2 v2.0.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect @@ -373,14 +379,14 @@ require ( go.opentelemetry.io/collector/processor v0.81.0 // indirect go.uber.org/goleak v1.2.1 // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230920183334-c177e329c48b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect ) require ( bitbucket.org/creachadair/shell v0.0.7 // indirect - cloud.google.com/go v0.110.8 // indirect - cloud.google.com/go/compute v1.23.0 // indirect - cloud.google.com/go/iam v1.1.2 // indirect + cloud.google.com/go v0.110.9 // indirect + cloud.google.com/go/compute v1.23.2 // indirect + cloud.google.com/go/iam v1.1.4 // indirect code.gitea.io/gitea v1.18.0 cuelang.org/go v0.4.3 github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect @@ -467,7 +473,7 @@ require ( github.com/godbus/dbus/v5 v5.0.6 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible - github.com/golang/glog v1.1.0 // indirect + github.com/golang/glog v1.1.2 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/gofuzz v1.2.0 // indirect @@ -491,8 +497,8 @@ require ( github.com/jackc/chunkreader/v2 v2.0.1 // indirect github.com/jackc/pgio v1.0.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect - github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect - github.com/jackc/pgtype v1.11.1-0.20220425133820-53266f029fbb + github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect + github.com/jackc/pgtype v1.14.0 github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jdxcode/netrc v0.0.0-20210204082910-926c7f70242a // indirect github.com/jhump/protocompile v0.0.0-20220216033700-d705409f108f // indirect @@ -554,6 +560,7 @@ require ( github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 github.com/scim2/filter-parser/v2 v2.2.0 github.com/sourcegraph/conc v0.2.0 + github.com/sourcegraph/managed-services-platform-cdktf/gen/postgresql v0.0.0-20231121191755-214be625af21 github.com/sourcegraph/mountinfo v0.0.0-20231018142932-e00da332dac5 github.com/sourcegraph/sourcegraph/monitoring v0.0.0-20230124144931-b2d81b1accb6 github.com/sourcegraph/zoekt v0.0.0-20231121165958-0959170c1623 @@ -582,15 +589,16 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 golang.org/x/mod v0.12.0 - golang.org/x/term v0.13.0 // indirect - golang.org/x/text v0.13.0 + golang.org/x/term v0.14.0 // indirect + golang.org/x/text v0.14.0 golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/grpc v1.57.1 + google.golang.org/grpc v1.59.0 gopkg.in/alexcesaro/statsd.v2 v2.0.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect + gorm.io/driver/postgres v1.5.4 gotest.tools v2.2.0+incompatible k8s.io/klog/v2 v2.80.0 // indirect k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 // indirect diff --git a/go.sum b/go.sum index 15054b863ebea..f73a3c36102fe 100644 --- a/go.sum +++ b/go.sum @@ -21,32 +21,34 @@ cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmW cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= -cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= +cloud.google.com/go v0.110.9 h1:e7ITSqGFFk4rbz/JFIqZh3G4VEHguhAL4BQcFlWtU68= +cloud.google.com/go v0.110.9/go.mod h1:rpxevX/0Lqvlbc88b7Sc1SPNdyK1riNBTUU6JXhYNpM= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.55.0 h1:hs44Xxov3XLWQiCx2J8lK5U/ihLqnpm4RVVl5fdtLLI= -cloud.google.com/go/bigquery v1.55.0/go.mod h1:9Y5I3PN9kQWuid6183JFhOGOW3GcirA5LpsKCUn+2ec= -cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= -cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/bigquery v1.56.0 h1:LHIc9E7Kw+ftFpQFKzZYBB88IAFz7qONawXXx0F3QBo= +cloud.google.com/go/bigquery v1.56.0/go.mod h1:KDcsploXTEY7XT3fDQzMUZlpQLHzE4itubHrnmhUrZA= +cloud.google.com/go/cloudsqlconn v1.5.1 h1:rMtPv66pkuk2K1ciCicjZY8Ma1DSyOYSoqwPUw/Timo= +cloud.google.com/go/cloudsqlconn v1.5.1/go.mod h1:DPWjhwD5Fhv43M0RP/+7J37xo4PByfNWCzMlKa9OBwE= +cloud.google.com/go/compute v1.23.2 h1:nWEMDhgbBkBJjfpVySqU4jgWdc22PLR0o4vEexZHers= +cloud.google.com/go/compute v1.23.2/go.mod h1:JJ0atRC0J/oWYiiVBmsSsrRnh92DhZPG4hFDcR04Rns= cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 h1:aRVqY1p2IJaBGStWMsQMpkAa83cPkCDLl80eOj0Rbz4= cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68/go.mod h1:1a3eRNYX12fs5UABBIXS8HXVvQbX9hRB/RkEBPORpe8= -cloud.google.com/go/datacatalog v1.17.1 h1:qGWrlYvWtK+8jD1jhwq5BsGoSr7S4/LOroV7LwXi00g= +cloud.google.com/go/datacatalog v1.18.2 h1:4ydlNOtwjkdXjXWd+SkUBh+DyVmM/bJKiktAHwqaEeU= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/iam v1.1.2 h1:gacbrBdWcoVmGLozRuStX45YKvJtzIjJdAolzUs1sm4= -cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= -cloud.google.com/go/kms v1.15.2 h1:lh6qra6oC4AyWe5fUUUBe/S27k12OHAleOOOw6KakdE= -cloud.google.com/go/kms v1.15.2/go.mod h1:3hopT4+7ooWRCjc2DxgnpESFxhIraaI2IpAVUEhbT/w= +cloud.google.com/go/iam v1.1.4 h1:K6n/GZHFTtEoKT5aUG3l9diPi0VduZNQ1PfdnpkkIFk= +cloud.google.com/go/iam v1.1.4/go.mod h1:l/rg8l1AaA+VFMho/HYx2Vv6xinPSLMF8qfhRPIZ0L8= +cloud.google.com/go/kms v1.15.4 h1:gEZzC54ZBI+aeW8/jg9tgz9KR4Aa+WEDPbdGIV3iJ7A= +cloud.google.com/go/kms v1.15.4/go.mod h1:L3Sdj6QTHK8dfwK5D1JLsAyELsNMnd3tAIwGS4ltKpc= cloud.google.com/go/logging v1.8.1 h1:26skQWPeYhvIasWKm48+Eq7oUqdcdbwsCVwz5Ys0FvU= -cloud.google.com/go/longrunning v0.5.1 h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI= -cloud.google.com/go/monitoring v1.16.0 h1:rlndy4K8yknMY9JuGe2aK4SbCh21FXoCdX7SAGHmRgI= -cloud.google.com/go/monitoring v1.16.0/go.mod h1:Ptp15HgAyM1fNICAojDMoNc/wUmn67mLHQfyqbw+poY= +cloud.google.com/go/longrunning v0.5.3 h1:maKa7O9YTzmVzwdlRKr981U1Ys2auup6rpeMt8y3+RU= +cloud.google.com/go/monitoring v1.16.2 h1:gx7BDZcoRqX5DfuJzw9LdhVjEkqCLmDXScdnrmIy9ik= +cloud.google.com/go/monitoring v1.16.2/go.mod h1:B44KGwi4ZCF8Rk/5n+FWeispDXoKSk9oss2QNlXJBgc= cloud.google.com/go/profiler v0.3.1 h1:b5got9Be9Ia0HVvyt7PavWxXEht15B9lWnigdvHtxOc= cloud.google.com/go/profiler v0.3.1/go.mod h1:GsG14VnmcMFQ9b+kq71wh3EKMZr3WRMgLzNiFRpW7tE= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= @@ -55,8 +57,8 @@ cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIA cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/pubsub v1.33.0 h1:6SPCPvWav64tj0sVX/+npCBKhUi/UjJehy9op/V3p2g= cloud.google.com/go/pubsub v1.33.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= -cloud.google.com/go/secretmanager v1.11.1 h1:cLTCwAjFh9fKvU6F13Y4L9vPcx9yiWPyWXE4+zkuEQs= -cloud.google.com/go/secretmanager v1.11.1/go.mod h1:znq9JlXgTNdBeQk9TBW/FnR/W4uChEKGeqQWAJ8SXFw= +cloud.google.com/go/secretmanager v1.11.3 h1:Xk7NFAUuW9q+eX4AxwS/dDuhlNWQ1MmfxQpsfbgRsEg= +cloud.google.com/go/secretmanager v1.11.3/go.mod h1:0bA2o6FabmShrEy328i67aV+65XoUFFSmVeLBn/51jI= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= @@ -64,8 +66,8 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= -cloud.google.com/go/trace v1.10.1 h1:EwGdOLCNfYOOPtgqo+D2sDLZmRCEO1AagRTJCU6ztdg= -cloud.google.com/go/trace v1.10.1/go.mod h1:gbtL94KE5AJLH3y+WVpfWILmqgc6dXcqgNXdOPAQTYk= +cloud.google.com/go/trace v1.10.3 h1:yiQ2EdegdiZDPwNPoUqGYAMd0wNValT/NRsC1XGyBJ0= +cloud.google.com/go/trace v1.10.3/go.mod h1:Ke1bgfc73RV3wUFml+uQp7EsDw4dGaETLxB7Iq/r4CY= code.gitea.io/gitea v1.18.0 h1:qQXVeKHoFXywWVGGDmTOKxvzOK282EAPTw3qo2bgXAk= code.gitea.io/gitea v1.18.0/go.mod h1:A3dHVUUZ+9ULp0J8AjYF6XBgPsn/J7OZ0X73m7LVQGA= contrib.go.opencensus.io/exporter/prometheus v0.4.2 h1:sqfsYl5GIY/L570iT+l93ehxaWJs2/OwXtiWwew3oAg= @@ -703,7 +705,7 @@ github.com/go-redsync/redsync/v4 v4.8.1 h1:rq2RvdTI0obznMdxKUWGdmmulo7lS9yCzb8fg github.com/go-redsync/redsync/v4 v4.8.1/go.mod h1:LmUAsQuQxhzZAoGY7JS6+dNhNmZyonMZiiEDY9plotM= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-stack/stack v1.6.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= @@ -771,11 +773,13 @@ github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOW github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= +github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f h1:16RtHeWGkJMc80Etb8RPCcKevXGldr57+LOyZt8zOlg= github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f/go.mod h1:ijRvpgDJDI262hYq/IQVYgf8hd8IHUs93Ol0kvMBAx4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= +github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -879,15 +883,15 @@ github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8I github.com/google/pprof v0.0.0-20230602150820-91b7bce49751 h1:hR7/MlvK23p6+lIw9SN1TigNLn9ZnF3W4SYRKq2gAHs= github.com/google/pprof v0.0.0-20230602150820-91b7bce49751/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= -github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvkiqTYKBCKLNmlge2eVjoZfySzM= -github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= @@ -1065,8 +1069,8 @@ github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsU github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= -github.com/jackc/pgconn v1.12.1 h1:rsDFzIpRk7xT4B8FufgpCCeyjdNpKyghZeSefViE5W8= -github.com/jackc/pgconn v1.12.1/go.mod h1:ZkhRC59Llhrq3oSfrikvwQ5NaxYExr6twkdkMLaKono= +github.com/jackc/pgconn v1.14.0 h1:vrbA9Ud87g6JdFWkHTJXppVce58qPIdP7N8y0Ml/A7Q= +github.com/jackc/pgconn v1.14.0/go.mod h1:9mBNlny0UvkgJdCDvdVHYSjI+8tD2rnKK69Wz8ti++E= github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa h1:s+4MhCQ6YrzisK6hFJUX53drDT4UsSW3DEhKn0ifuHw= github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa/go.mod h1:a/s9Lp5W7n/DD0VrVoyJ00FbP2ytTPDVOivvn2bMlds= github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= @@ -1084,27 +1088,31 @@ github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvW github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.3.0 h1:brH0pCGBDkBW07HWlN/oSBXrmo3WB0UvZd1pIuDcL8Y= -github.com/jackc/pgproto3/v2 v2.3.0/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= +github.com/jackc/pgproto3/v2 v2.3.2 h1:7eY55bdBeCz1F2fTzSz69QC+pG46jYq9/jtSPiJ5nn0= +github.com/jackc/pgproto3/v2 v2.3.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= -github.com/jackc/pgtype v1.11.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= -github.com/jackc/pgtype v1.11.1-0.20220425133820-53266f029fbb h1:MRSWOsXwvdLExF8roCltbid5ADD917dy1S3fgI+OHVE= -github.com/jackc/pgtype v1.11.1-0.20220425133820-53266f029fbb/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= +github.com/jackc/pgtype v1.14.0 h1:y+xUdabmyMkJLyApYuPj38mW+aAIqCe5uuBB51rH3Vw= +github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= -github.com/jackc/pgx/v4 v4.16.1 h1:JzTglcal01DrghUqt+PmzWsZx/Yh7SC/CTQmSBMTd0Y= -github.com/jackc/pgx/v4 v4.16.1/go.mod h1:SIhx0D5hoADaiXZVyv+3gSm3LCIIINTVO0PficsvWGQ= +github.com/jackc/pgx/v4 v4.18.1 h1:YP7G1KABtKpB5IHrO9vYwSrCOhs7p3uqhvhhQBptya0= +github.com/jackc/pgx/v4 v4.18.1/go.mod h1:FydWkUyadDmdNH/mHnGob881GawxeEm7TcMCzkb+qQE= +github.com/jackc/pgx/v5 v5.5.0 h1:NxstgwndsTRy7eq9/kqYc/BZh5w2hHJV86wjvO+1xPw= +github.com/jackc/pgx/v5 v5.5.0/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA= github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.2.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= +github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jdxcode/netrc v0.0.0-20210204082910-926c7f70242a h1:d4+I1YEKVmWZrgkt6jpXBnLgV2ZjO0YxEtLDdfIZfH4= @@ -1120,6 +1128,10 @@ github.com/jhump/protoreflect v1.11.0/go.mod h1:U7aMIjN0NWq9swDP7xDdoMfRHb35uiuT github.com/jhump/protoreflect v1.12.0/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI= github.com/jhump/protoreflect v1.12.1-0.20220417024638-438db461d753 h1:uFlcJKZPLQd7rmOY/RrvBuUaYmAFnlFHKLivhO6cOy8= github.com/jhump/protoreflect v1.12.1-0.20220417024638-438db461d753/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= @@ -1277,6 +1289,7 @@ github.com/mcuadros/go-version v0.0.0-20190830083331-035f6764e8d2/go.mod h1:76rf github.com/microcosm-cc/bluemonday v1.0.17/go.mod h1:Z0r70sCuXHig8YpBzCc5eGHAap2K7e/u082ZUpDRRqM= github.com/microcosm-cc/bluemonday v1.0.23 h1:SMZe2IGa0NuHvnVNAZ+6B38gsTbi5e4sViiWJyDDqFY= github.com/microcosm-cc/bluemonday v1.0.23/go.mod h1:mN70sk7UkkF8TUr2IGBpNN0jAgStuPzlK76QuruE/z4= +github.com/microsoft/go-mssqldb v1.6.0 h1:mM3gYdVwEPFrlg/Dvr2DNVEgYFG7L42l+dGc67NNNpc= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= @@ -1604,6 +1617,8 @@ github.com/sourcegraph/managed-services-platform-cdktf/gen/google v0.0.0-2023082 github.com/sourcegraph/managed-services-platform-cdktf/gen/google v0.0.0-20230822024612-edb48c530722/go.mod h1:P1liUcPEczidOp1kyPvi2eqil4243IuPJ+tCOASCHEk= github.com/sourcegraph/managed-services-platform-cdktf/gen/google_beta v0.0.0-20231106184355-f739cf8e1d49 h1:3rJiF4VGyStWXrqJtVlXBJnpe82Q1k9k74dElVPolR8= github.com/sourcegraph/managed-services-platform-cdktf/gen/google_beta v0.0.0-20231106184355-f739cf8e1d49/go.mod h1:/z34dv4NLXti+0VQsUoRTXBeH6n7OWtPv/iWFX6z5dg= +github.com/sourcegraph/managed-services-platform-cdktf/gen/postgresql v0.0.0-20231121191755-214be625af21 h1:7TTODwd/f0hhqmZhbQcKXSkoxSx9OczTWgWPBTxVOrA= +github.com/sourcegraph/managed-services-platform-cdktf/gen/postgresql v0.0.0-20231121191755-214be625af21/go.mod h1:lQ1E8rSHgTmL8GmtcQFXS75rqQrCmuQRXZWh7A+Fp6s= github.com/sourcegraph/managed-services-platform-cdktf/gen/random v0.0.0-20230822024612-edb48c530722 h1:N0OxHqeujHxvVU666KQY9whauLyw4s3BJGBLxx6gKR0= github.com/sourcegraph/managed-services-platform-cdktf/gen/random v0.0.0-20230822024612-edb48c530722/go.mod h1:TiUqRvYs/Gah8bGw/toyVWCaP3dnCB4tBh3jf5HGdo0= github.com/sourcegraph/mountinfo v0.0.0-20231018142932-e00da332dac5 h1:2lUb58rz1bq77wL3hb6OBT58uBVtlNs1o23Kahfj/kU= @@ -1944,12 +1959,12 @@ golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220128200615-198e4374d7ed/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -2061,8 +2076,8 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/oauth2 v0.0.0-20170912212905-13449ad91cb2/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2077,8 +2092,8 @@ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8= -golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= +golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= +golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= golang.org/x/sync v0.0.0-20170517211232-f52d1811a629/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2095,8 +2110,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2198,8 +2213,8 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -2207,8 +2222,8 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= +golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2224,14 +2239,14 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20170424234030-8be79e1e0910/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.4.0 h1:Z81tqI5ddIoXDPvVQ7/7CC9TnLM7ubaFG2qXYd5BbYY= +golang.org/x/time v0.4.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -2345,8 +2360,8 @@ google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjR google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= -google.golang.org/api v0.132.0 h1:8t2/+qZ26kAOGSmOiHwVycqVaDg7q3JDILrNi/Z6rvc= -google.golang.org/api v0.132.0/go.mod h1:AeTBC6GpJnJSRJjktDcPX0QwtS8pGYZOV6MSuSCusw0= +google.golang.org/api v0.150.0 h1:Z9k22qD289SZ8gCJrk4DrWXkNjtfvKAUo/l1ma8eBYE= +google.golang.org/api v0.150.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2400,12 +2415,12 @@ google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13 h1:vlzZttNJGVqTsRFU9AmdnrcO1Znh8Ew9kCD//yjigk0= -google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:CCviP9RmpZ1mxVr8MUjCnSiY09IbAXZxhLE6EhHIdPU= -google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13 h1:U7+wNaVuSTaUqNvK2+osJ9ejEZxbjHHk8F2b6Hpx0AE= -google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:RdyHbowztCGQySiCvQPgWQWgWhGnouTdCflKoDBt32U= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920183334-c177e329c48b h1:tdhlmiMZNpc5p2W5qqKgRrOubaMZ3c85uG/GJtGgL98= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920183334-c177e329c48b/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 h1:I6WNifs6pF9tNdSob2W24JtyxIYjzFB9qDlpUC76q+U= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= google.golang.org/grpc v1.2.1-0.20170921194603-d4b75ebd4f9f/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -2432,9 +2447,8 @@ google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0-dev.0.20220218222403-011544f72939/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.57.1 h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg= -google.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= +google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -2495,6 +2509,10 @@ gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/postgres v1.5.4 h1:Iyrp9Meh3GmbSuyIAGyjkN+n9K+GHX9b9MqsTL4EJCo= +gorm.io/driver/postgres v1.5.4/go.mod h1:Bgo89+h0CRcdA33Y6frlaHHVuTdOf87pmyzwW9C/BH0= +gorm.io/gorm v1.25.5 h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls= +gorm.io/gorm v1.25.5/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= diff --git a/lib/go.mod b/lib/go.mod index 301f89d0b2cc1..c93346592742a 100644 --- a/lib/go.mod +++ b/lib/go.mod @@ -3,6 +3,7 @@ module github.com/sourcegraph/sourcegraph/lib go 1.19 require ( + cloud.google.com/go/cloudsqlconn v1.5.1 github.com/Masterminds/semver v1.5.0 github.com/charmbracelet/glamour v0.5.0 github.com/cockroachdb/errors v1.11.1 @@ -15,7 +16,8 @@ require ( github.com/google/go-cmp v0.6.0 github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db github.com/hexops/autogold/v2 v2.0.3 - github.com/jackc/pgconn v1.10.1 + github.com/jackc/pgconn v1.14.0 + github.com/jackc/pgx/v5 v5.5.0 github.com/json-iterator/go v1.1.12 github.com/klauspost/pgzip v1.2.5 github.com/mattn/go-isatty v0.0.18 @@ -32,15 +34,17 @@ require ( github.com/urfave/cli/v2 v2.23.7 github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53 - golang.org/x/sys v0.8.0 - golang.org/x/term v0.6.0 - google.golang.org/protobuf v1.29.1 + golang.org/x/sys v0.14.0 + golang.org/x/term v0.14.0 + google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 gotest.tools v2.2.0+incompatible ) require ( + cloud.google.com/go/compute v1.23.2 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/sprig v2.22.0+incompatible // indirect @@ -56,15 +60,18 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/dlclark/regexp2 v1.7.0 // indirect github.com/dustin/go-humanize v1.0.0 // indirect - github.com/envoyproxy/protoc-gen-validate v0.9.1 // indirect + github.com/envoyproxy/protoc-gen-validate v1.0.2 // indirect github.com/getsentry/sentry-go v0.25.0 // indirect github.com/go-enry/go-oniguruma v1.2.1 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gofrs/uuid v4.2.0+incompatible // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.2 // indirect - github.com/google/uuid v1.3.1 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/google/uuid v1.4.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gorilla/css v1.0.0 // indirect github.com/hexops/gotextdiff v1.0.3 // indirect github.com/hexops/valast v1.4.3 // indirect @@ -74,8 +81,9 @@ require ( github.com/jackc/chunkreader/v2 v2.0.1 // indirect github.com/jackc/pgio v1.0.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect - github.com/jackc/pgproto3/v2 v2.1.1 // indirect - github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect + github.com/jackc/pgproto3/v2 v2.3.2 // indirect + github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect + github.com/jackc/puddle/v2 v2.2.1 // indirect github.com/jdxcode/netrc v0.0.0-20210204082910-926c7f70242a // indirect github.com/jhump/protocompile v0.0.0-20220216033700-d705409f108f // indirect github.com/jhump/protoreflect v1.12.1-0.20220417024638-438db461d753 // indirect @@ -114,13 +122,20 @@ require ( go.uber.org/goleak v1.2.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.24.0 // indirect - golang.org/x/crypto v0.7.0 // indirect - golang.org/x/mod v0.9.0 // indirect - golang.org/x/net v0.8.0 // indirect - golang.org/x/text v0.13.0 // indirect - golang.org/x/tools v0.6.0 // indirect - google.golang.org/genproto v0.0.0-20230227214838-9b19f0bdc514 // indirect - google.golang.org/grpc v1.53.0 // indirect + golang.org/x/crypto v0.15.0 // indirect + golang.org/x/mod v0.11.0 // indirect + golang.org/x/net v0.18.0 // indirect + golang.org/x/oauth2 v0.14.0 // indirect + golang.org/x/sync v0.5.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/time v0.4.0 // indirect + golang.org/x/tools v0.10.0 // indirect + google.golang.org/api v0.150.0 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/grpc v1.59.0 // indirect gotest.tools/v3 v3.0.3 // indirect mvdan.cc/gofumpt v0.4.0 // indirect ) diff --git a/lib/go.sum b/lib/go.sum index f5fa36a337172..c793c33659408 100644 --- a/lib/go.sum +++ b/lib/go.sum @@ -1,4 +1,10 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go/cloudsqlconn v1.5.1 h1:rMtPv66pkuk2K1ciCicjZY8Ma1DSyOYSoqwPUw/Timo= +cloud.google.com/go/cloudsqlconn v1.5.1/go.mod h1:DPWjhwD5Fhv43M0RP/+7J37xo4PByfNWCzMlKa9OBwE= +cloud.google.com/go/compute v1.23.2 h1:nWEMDhgbBkBJjfpVySqU4jgWdc22PLR0o4vEexZHers= +cloud.google.com/go/compute v1.23.2/go.mod h1:JJ0atRC0J/oWYiiVBmsSsrRnh92DhZPG4hFDcR04Rns= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -66,8 +72,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.9.1 h1:PS7VIOgmSVhWUEeZwTe7z7zouA22Cr590PzXKbZHOVY= -github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= +github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= +github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= @@ -80,6 +86,7 @@ github.com/go-enry/go-enry/v2 v2.8.4/go.mod h1:9yrj4ES1YrbNb1Wb7/PWYr2bpaCXUGRt0 github.com/go-enry/go-oniguruma v1.2.1 h1:k8aAMuJfMrqm/56SG2lV9Cfti6tC4x8673aHCcBk+eo= github.com/go-enry/go-oniguruma v1.2.1/go.mod h1:bWDhYP+S6xZQgiRL7wlTScFYBe023B6ilRZbCAD5Hf4= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= @@ -90,12 +97,15 @@ github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRx github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= +github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= @@ -106,8 +116,8 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -124,9 +134,15 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db h1:7aN5cccjIqCLTzedH7MZzRZt5/lsAHch6Z3L2ZGn5FA= @@ -154,8 +170,8 @@ github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= -github.com/jackc/pgconn v1.10.1 h1:DzdIHIjG1AxGwoEEqS+mGsURyjt4enSmqzACXvVzOT8= -github.com/jackc/pgconn v1.10.1/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgconn v1.14.0 h1:vrbA9Ud87g6JdFWkHTJXppVce58qPIdP7N8y0Ml/A7Q= +github.com/jackc/pgconn v1.14.0/go.mod h1:9mBNlny0UvkgJdCDvdVHYSjI+8tD2rnKK69Wz8ti++E= github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= @@ -170,18 +186,26 @@ github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.1.1 h1:7PQ/4gLoqnl87ZxL7xjO0DR5gYuviDCZxQJsUlFW1eI= github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= +github.com/jackc/pgproto3/v2 v2.3.2 h1:7eY55bdBeCz1F2fTzSz69QC+pG46jYq9/jtSPiJ5nn0= +github.com/jackc/pgproto3/v2 v2.3.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= +github.com/jackc/pgtype v1.14.0 h1:y+xUdabmyMkJLyApYuPj38mW+aAIqCe5uuBB51rH3Vw= github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= +github.com/jackc/pgx/v4 v4.18.1 h1:YP7G1KABtKpB5IHrO9vYwSrCOhs7p3uqhvhhQBptya0= +github.com/jackc/pgx/v5 v5.5.0 h1:NxstgwndsTRy7eq9/kqYc/BZh5w2hHJV86wjvO+1xPw= +github.com/jackc/pgx/v5 v5.5.0/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA= github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= +github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jdxcode/netrc v0.0.0-20210204082910-926c7f70242a h1:d4+I1YEKVmWZrgkt6jpXBnLgV2ZjO0YxEtLDdfIZfH4= github.com/jdxcode/netrc v0.0.0-20210204082910-926c7f70242a/go.mod h1:Zi/ZFkEqFHTm7qkjyNJjaWH4LQA9LQhGJyF0lTYGpxw= github.com/jhump/gopoet v0.0.0-20190322174617-17282ff210b3/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI= @@ -237,6 +261,7 @@ github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/microcosm-cc/bluemonday v1.0.17/go.mod h1:Z0r70sCuXHig8YpBzCc5eGHAap2K7e/u082ZUpDRRqM= github.com/microcosm-cc/bluemonday v1.0.23 h1:SMZe2IGa0NuHvnVNAZ+6B38gsTbi5e4sViiWJyDDqFY= github.com/microcosm-cc/bluemonday v1.0.23/go.mod h1:mN70sk7UkkF8TUr2IGBpNN0jAgStuPzlK76QuruE/z4= +github.com/microsoft/go-mssqldb v1.6.0 h1:mM3gYdVwEPFrlg/Dvr2DNVEgYFG7L42l+dGc67NNNpc= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= @@ -374,8 +399,9 @@ golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53 h1:5llv2sWeaMSnA3w2kS57ouQQ4pudlXrR0dCgw51QK9o= golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= @@ -387,13 +413,14 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -405,9 +432,12 @@ golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= +golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -416,8 +446,9 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -444,15 +475,17 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= +golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -460,8 +493,11 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.4.0 h1:Z81tqI5ddIoXDPvVQ7/7CC9TnLM7ubaFG2qXYd5BbYY= +golang.org/x/time v0.4.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -478,29 +514,37 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.150.0 h1:Z9k22qD289SZ8gCJrk4DrWXkNjtfvKAUo/l1ma8eBYE= +google.golang.org/api v0.150.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20230227214838-9b19f0bdc514 h1:rtNKfB++wz5mtDY2t5C8TXlU5y52ojSu7tZo0z7u8eQ= -google.golang.org/genproto v0.0.0-20230227214838-9b19f0bdc514/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 h1:I6WNifs6pF9tNdSob2W24JtyxIYjzFB9qDlpUC76q+U= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc= -google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -513,8 +557,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.29.1 h1:7QBf+IK2gx70Ap/hDsOmam3GE0v9HicjfEdAxE62UoM= -google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/lib/managedservicesplatform/example/BUILD.bazel b/lib/managedservicesplatform/example/BUILD.bazel deleted file mode 100644 index 5bfaa5ad2e727..0000000000000 --- a/lib/managedservicesplatform/example/BUILD.bazel +++ /dev/null @@ -1,18 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") - -go_library( - name = "example_lib", - srcs = ["main.go"], - importpath = "github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/example", - visibility = ["//visibility:private"], - deps = [ - "//lib/managedservicesplatform/example/internal/example", - "//lib/managedservicesplatform/service", - ], -) - -go_binary( - name = "example", - embed = [":example_lib"], - visibility = ["//visibility:public"], -) diff --git a/lib/managedservicesplatform/example/internal/example/BUILD.bazel b/lib/managedservicesplatform/example/internal/example/BUILD.bazel deleted file mode 100644 index 237ea1c247088..0000000000000 --- a/lib/managedservicesplatform/example/internal/example/BUILD.bazel +++ /dev/null @@ -1,14 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "example", - srcs = ["example.go"], - importpath = "github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/example/internal/example", - visibility = ["//lib/managedservicesplatform/example:__subpackages__"], - deps = [ - "//lib/background", - "//lib/errors", - "//lib/managedservicesplatform/service", - "@com_github_sourcegraph_log//:log", - ], -) diff --git a/lib/managedservicesplatform/example/internal/example/example.go b/lib/managedservicesplatform/example/internal/example/example.go deleted file mode 100644 index 08cf2aef6139a..0000000000000 --- a/lib/managedservicesplatform/example/internal/example/example.go +++ /dev/null @@ -1,70 +0,0 @@ -package example - -import ( - "context" - "fmt" - "net/http" - "time" - - "github.com/sourcegraph/log" - - "github.com/sourcegraph/sourcegraph/lib/background" - "github.com/sourcegraph/sourcegraph/lib/errors" - "github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/service" -) - -type Config struct { - Variable int -} - -func (c *Config) Load(env *service.Env) { - c.Variable = env.GetInt("VARIABLE", "13", "variable value") -} - -type Service struct{} - -var _ service.Service[Config] = Service{} - -func (s Service) Name() string { return "example" } -func (s Service) Version() string { return "dev" } -func (s Service) Initialize( - ctx context.Context, - logger log.Logger, - contract service.Contract, - config Config, -) (background.CombinedRoutine, error) { - logger.Info("starting service") - - return background.CombinedRoutine{ - &httpRoutine{ - log: logger, - Server: &http.Server{ - Addr: fmt.Sprintf(":%d", contract.Port), - Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Write([]byte(fmt.Sprintf("Variable: %d", config.Variable))) - }), - }, - }, - }, nil -} - -type httpRoutine struct { - log log.Logger - *http.Server -} - -func (s *httpRoutine) Start() { - if err := s.Server.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) { - s.log.Error("error stopping server", log.Error(err)) - } -} - -func (s *httpRoutine) Stop() { - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - if err := s.Server.Shutdown(ctx); err != nil { - s.log.Error("error shutting down server", log.Error(err)) - } else { - s.log.Info("server stopped") - } -} diff --git a/lib/managedservicesplatform/service/BUILD.bazel b/lib/managedservicesplatform/service/BUILD.bazel index 01f3d9ae34f1d..15b8ebdff4e00 100644 --- a/lib/managedservicesplatform/service/BUILD.bazel +++ b/lib/managedservicesplatform/service/BUILD.bazel @@ -12,6 +12,9 @@ go_library( deps = [ "//lib/background", "//lib/errors", + "@com_github_jackc_pgx_v5//:pgx", + "@com_github_jackc_pgx_v5//stdlib", "@com_github_sourcegraph_log//:log", + "@com_google_cloud_go_cloudsqlconn//:cloudsqlconn", ], ) diff --git a/lib/managedservicesplatform/service/config.go b/lib/managedservicesplatform/service/config.go index d95626f3f08e4..46dd0366542a4 100644 --- a/lib/managedservicesplatform/service/config.go +++ b/lib/managedservicesplatform/service/config.go @@ -1,27 +1,110 @@ package service import ( + "bytes" + "context" + "database/sql" + "fmt" + "net" "os" "strconv" "strings" + "text/template" "time" + "cloud.google.com/go/cloudsqlconn" + "github.com/jackc/pgx/v5" + "github.com/jackc/pgx/v5/stdlib" + "github.com/sourcegraph/sourcegraph/lib/errors" ) -// Contract loads standardized MSP-provisioned configuration. +// Contract loads standardized MSP-provisioned (Managed Services Platform) +// configuration. type Contract struct { + // Indicate if we are running in a MSP environment. + MSP bool // Port is the port the service must listen on. Port int // ExternalDNSName is the DNS name the service uses, if one is configured. ExternalDNSName *string + + postgreSQLContract +} + +type postgreSQLContract struct { + customDSNTemplate *string + + instanceConnectionName *string + user *string } func newContract(env *Env) Contract { return Contract{ + MSP: env.GetBool("MSP", "false", "indicates if we are running in a MSP environment"), Port: env.GetInt("PORT", "", "service port"), ExternalDNSName: env.GetOptional("EXTERNAL_DNS_NAME", "external DNS name provisioned for the service"), + postgreSQLContract: postgreSQLContract{ + customDSNTemplate: env.GetOptional("PGDSN", + "custom PostgreSQL DSN with templatized database, e.g. 'user=foo database={{ .Database }}'"), + + instanceConnectionName: env.GetOptional("PGINSTANCE", "Cloud SQL instance connection name"), + user: env.GetOptional("PGUSER", "Cloud SQL user"), + }, + } +} + +// GetPostgreSQLDB returns a standard library DB pointing to the configured +// PostgreSQL database. In MSP, we connect to a Cloud SQL instance over IAM auth. +// +// In development, the connection can be overridden with the PGDSN environment +// variable. +func (c postgreSQLContract) GetPostgreSQLDB(ctx context.Context, database string) (*sql.DB, error) { + if c.customDSNTemplate != nil { + tmpl, err := template.New("PGDSN").Parse(*c.customDSNTemplate) + if err != nil { + return nil, errors.Wrap(err, "PGDSN is not a valid template") + } + var dsn bytes.Buffer + if err := tmpl.Execute(&dsn, struct{ Database string }{Database: database}); err != nil { + return nil, errors.Wrap(err, "PGDSN template is invalid") + } + return sql.Open("pgx", dsn.String()) + } + + config, err := c.getCloudSQLConnConfig(ctx, database) + if err != nil { + return nil, errors.Wrap(err, "get CloudSQL connection config") + } + return sql.Open("pgx", stdlib.RegisterConnConfig(config)) +} + +// getCloudSQLConnConfig generates a pgx connection configuration for using +// a Cloud SQL instance using IAM auth. +func (c postgreSQLContract) getCloudSQLConnConfig(ctx context.Context, database string) (*pgx.ConnConfig, error) { + if c.instanceConnectionName == nil || c.user == nil { + return nil, errors.New("missing required PostgreSQL configuration") + } + + // https://github.com/GoogleCloudPlatform/cloud-sql-go-connector?tab=readme-ov-file#automatic-iam-database-authentication + dsn := fmt.Sprintf("user=%s dbname=%s", *c.user, database) + config, err := pgx.ParseConfig(dsn) + if err != nil { + return nil, errors.Wrap(err, "pgx.ParseConfig") + } + d, err := cloudsqlconn.NewDialer(ctx, + cloudsqlconn.WithIAMAuthN(), + // MSP uses private IP + cloudsqlconn.WithDefaultDialOptions(cloudsqlconn.WithPrivateIP())) + if err != nil { + return nil, errors.Wrap(err, "cloudsqlconn.NewDialer") + } + // Use the Cloud SQL connector to handle connecting to the instance. + // This approach does *NOT* require the Cloud SQL proxy. + config.DialFunc = func(ctx context.Context, _, _ string) (net.Conn, error) { + return d.Dial(ctx, *c.instanceConnectionName) } + return config, nil } type ConfigLoader[ConfigT any] interface { diff --git a/lib/pointers/ptr.go b/lib/pointers/ptr.go index 1cc9384330ed5..642cf7eb3825f 100644 --- a/lib/pointers/ptr.go +++ b/lib/pointers/ptr.go @@ -1,5 +1,7 @@ package pointers +import "fmt" + // Ptr returns a pointer to any value. // Useful in tests or when pointer without a variable is needed. func Ptr[T any](val T) *T { @@ -46,3 +48,8 @@ type numberType interface { func Float64[T numberType](v T) *float64 { return Ptr(float64(v)) } + +// Stringf is an alias for Ptr(fmt.Sprintf(format, a...)) +func Stringf(format string, a ...any) *string { + return Ptr(fmt.Sprintf(format, a...)) +} diff --git a/monitoring/go.mod b/monitoring/go.mod index ebce8f2f611da..68672b1e2c2b3 100644 --- a/monitoring/go.mod +++ b/monitoring/go.mod @@ -13,7 +13,7 @@ require ( github.com/sourcegraph/sourcegraph/lib v0.0.0-20230613175844-f031949c72f5 github.com/stretchr/testify v1.8.2 github.com/urfave/cli/v2 v2.23.7 - golang.org/x/text v0.13.0 + golang.org/x/text v0.14.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -40,17 +40,17 @@ require ( github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/gobwas/ws v1.1.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.2 // indirect + github.com/golang/protobuf v1.5.3 // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/google/uuid v1.3.1 // indirect + github.com/google/uuid v1.4.0 // indirect github.com/gosimple/slug v1.12.0 // indirect github.com/gosimple/unidecode v1.0.1 // indirect github.com/jackc/chunkreader/v2 v2.0.1 // indirect - github.com/jackc/pgconn v1.10.1 // indirect + github.com/jackc/pgconn v1.14.0 // indirect github.com/jackc/pgio v1.0.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect - github.com/jackc/pgproto3/v2 v2.1.1 // indirect - github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect + github.com/jackc/pgproto3/v2 v2.3.2 // indirect + github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -68,10 +68,9 @@ require ( go.uber.org/goleak v1.2.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.24.0 // indirect - golang.org/x/crypto v0.7.0 // indirect + golang.org/x/crypto v0.15.0 // indirect golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53 // indirect - golang.org/x/oauth2 v0.2.0 // indirect - golang.org/x/sys v0.8.0 // indirect - google.golang.org/protobuf v1.29.1 // indirect + golang.org/x/sys v0.14.0 // indirect + google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/monitoring/go.sum b/monitoring/go.sum index d84c68669abc8..21b2a54485b0f 100644 --- a/monitoring/go.sum +++ b/monitoring/go.sum @@ -127,8 +127,8 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -154,8 +154,8 @@ github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gosimple/slug v1.1.1/go.mod h1:ER78kgg1Mv0NQGlXiDe57DpCyfbNywXXZ9mIorhxAf0= @@ -183,8 +183,8 @@ github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= -github.com/jackc/pgconn v1.10.1 h1:DzdIHIjG1AxGwoEEqS+mGsURyjt4enSmqzACXvVzOT8= -github.com/jackc/pgconn v1.10.1/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgconn v1.14.0 h1:vrbA9Ud87g6JdFWkHTJXppVce58qPIdP7N8y0Ml/A7Q= +github.com/jackc/pgconn v1.14.0/go.mod h1:9mBNlny0UvkgJdCDvdVHYSjI+8tD2rnKK69Wz8ti++E= github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= @@ -199,10 +199,12 @@ github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.1.1 h1:7PQ/4gLoqnl87ZxL7xjO0DR5gYuviDCZxQJsUlFW1eI= github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= +github.com/jackc/pgproto3/v2 v2.3.2 h1:7eY55bdBeCz1F2fTzSz69QC+pG46jYq9/jtSPiJ5nn0= +github.com/jackc/pgproto3/v2 v2.3.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= @@ -302,6 +304,7 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/urfave/cli/v2 v2.23.7 h1:YHDQ46s3VghFHFf1DdF+Sh7H4RqhcM+t0TmZRJx4oJY= @@ -312,6 +315,7 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -341,8 +345,10 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -376,6 +382,7 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -406,15 +413,16 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.2.0 h1:GtQkldQ9m7yvzCL1V+LrYow3Khe0eJH0w7RbX/VbaIU= -golang.org/x/oauth2 v0.2.0/go.mod h1:Cwn6afJ8jrQwYMxQDTpISoXmXW9I6qF6vDeuuoX3Ibs= +golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -425,7 +433,8 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -466,12 +475,17 @@ golang.org/x/sys v0.0.0-20210525143221-35b2ab0089ea/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -479,8 +493,10 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -528,7 +544,8 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -611,8 +628,8 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.29.1 h1:7QBf+IK2gx70Ap/hDsOmam3GE0v9HicjfEdAxE62UoM= -google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From b34bda9af07d8d1b48551398fae4ae69dfe4cd2a Mon Sep 17 00:00:00 2001 From: David Veszelovszki <veszelovszki@gmail.com> Date: Thu, 23 Nov 2023 07:23:13 +0100 Subject: [PATCH 123/222] SSC: Rate limit based on the user's plan (#58422) * Change feature flag name * Limit based on the user's plan --- cmd/frontend/graphqlbackend/user.go | 4 +- .../dotcom/productsubscription/BUILD.bazel | 2 + .../codygateway_dotcom_user.go | 63 +++++++++++++++++-- internal/conf/computed.go | 4 ++ internal/conf/conftypes/consts.go | 14 +++-- schema/schema.go | 8 +++ schema/site.schema.json | 20 ++++++ 7 files changed, 103 insertions(+), 12 deletions(-) diff --git a/cmd/frontend/graphqlbackend/user.go b/cmd/frontend/graphqlbackend/user.go index 4eb616c4dc192..702bfe5419abc 100644 --- a/cmd/frontend/graphqlbackend/user.go +++ b/cmd/frontend/graphqlbackend/user.go @@ -175,7 +175,7 @@ func (r *UserResolver) CodyProEnabledAt(ctx context.Context) *gqlutil.DateTime { return nil } - if !featureflag.FromContext(ctx).GetBoolOr("cody_pro_dec_ga", false) { + if !featureflag.FromContext(ctx).GetBoolOr("cody-pro", false) { return nil } @@ -329,7 +329,7 @@ func (r *schemaResolver) UpgradeToCodyPro(ctx context.Context, args *upgradeToCo return nil, errors.New("this feature is only available on sourcegraph.com") } - if !featureflag.FromContext(ctx).GetBoolOr("cody_pro_dec_ga", false) { + if !featureflag.FromContext(ctx).GetBoolOr("cody-pro", false) { return nil, errors.New("this feature is not enabled") } diff --git a/cmd/frontend/internal/dotcom/productsubscription/BUILD.bazel b/cmd/frontend/internal/dotcom/productsubscription/BUILD.bazel index 42e5682101072..9b5bf04f25ef7 100644 --- a/cmd/frontend/internal/dotcom/productsubscription/BUILD.bazel +++ b/cmd/frontend/internal/dotcom/productsubscription/BUILD.bazel @@ -33,11 +33,13 @@ go_library( "//internal/codygateway", "//internal/completions/types", "//internal/conf", + "//internal/conf/conftypes", "//internal/database", "//internal/database/basestore", "//internal/database/dbutil", "//internal/env", "//internal/errcode", + "//internal/featureflag", "//internal/gqlutil", "//internal/hashutil", "//internal/license", diff --git a/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go b/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go index 5ea3965fd2513..3886091d40f78 100644 --- a/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go +++ b/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go @@ -3,6 +3,9 @@ package productsubscription import ( "context" "fmt" + sgactor "github.com/sourcegraph/sourcegraph/internal/actor" + "github.com/sourcegraph/sourcegraph/internal/conf/conftypes" + "github.com/sourcegraph/sourcegraph/internal/featureflag" "math" "github.com/graph-gophers/graphql-go" @@ -161,6 +164,12 @@ func (r codyUserGatewayAccessResolver) CodeCompletionsRateLimit(ctx context.Cont } const tokensPerDollar = int(1 / (0.0001 / 1_000)) +const oneDayInSeconds = int32(60 * 60 * 24) + +// oneMonthInSeconds is a bad approximation. Our logic in Cody Gateway +// is "till the Nth day of the next month", so this is basically a magic number, +// and we shouldn't use this value as a duration. +const oneMonthInSeconds = oneDayInSeconds * 30 func (r codyUserGatewayAccessResolver) EmbeddingsRateLimit(ctx context.Context) (graphqlbackend.CodyGatewayRateLimit, error) { // If the user isn't enabled return no rate limit @@ -185,8 +194,9 @@ func (r codyUserGatewayAccessResolver) EmbeddingsRateLimit(ctx context.Context) func getCompletionsRateLimit(ctx context.Context, db database.DB, userID int32, scope types.CompletionsFeature) (licensing.CodyGatewayRateLimit, graphqlbackend.CodyGatewayRateLimitSource, error) { var limit *int var err error - source := graphqlbackend.CodyGatewayRateLimitSourceOverride + // Apply overrides first. + source := graphqlbackend.CodyGatewayRateLimitSourceOverride switch scope { case types.CompletionsFeatureChat: limit, err = db.Users().GetChatCompletionsQuota(ctx, userID) @@ -198,10 +208,27 @@ func getCompletionsRateLimit(ctx context.Context, db database.DB, userID int32, if err != nil { return licensing.CodyGatewayRateLimit{}, graphqlbackend.CodyGatewayRateLimitSourcePlan, err } + + // If there's no override, check the self-serve limits. + cfg := conf.GetCompletionsConfig(conf.Get().SiteConfig()) + intervalSeconds := oneDayInSeconds + if limit == nil && cfg != nil && featureflag.FromContext(ctx).GetBoolOr("cody-pro", false) { + source = graphqlbackend.CodyGatewayRateLimitSourcePlan + actor := sgactor.FromContext(ctx) + user, err := actor.User(ctx, db.Users()) + if err != nil { + return licensing.CodyGatewayRateLimit{}, graphqlbackend.CodyGatewayRateLimitSourcePlan, err + } + isProUser := user.CodyProEnabledAt != nil + intervalSeconds, limit, err = getSelfServeUsageLimits(scope, isProUser, *cfg) + if err != nil { + return licensing.CodyGatewayRateLimit{}, graphqlbackend.CodyGatewayRateLimitSourcePlan, err + } + } + + // Otherwise, fall back to the pre-Cody-GA global limit. if limit == nil { source = graphqlbackend.CodyGatewayRateLimitSourcePlan - // Otherwise, fall back to the global limit. - cfg := conf.GetCompletionsConfig(conf.Get().SiteConfig()) switch scope { case types.CompletionsFeatureChat: if cfg != nil && cfg.PerUserDailyLimit > 0 { @@ -212,7 +239,7 @@ func getCompletionsRateLimit(ctx context.Context, db database.DB, userID int32, limit = pointers.Ptr(cfg.PerUserCodeCompletionsDailyLimit) } default: - return licensing.CodyGatewayRateLimit{}, graphqlbackend.CodyGatewayRateLimitSourcePlan, errors.Newf("unknown scope: %s", scope) + return licensing.CodyGatewayRateLimit{}, graphqlbackend.CodyGatewayRateLimitSourcePlan, errors.Newf("unknown scope (dotcom limiting): %s", scope) } } if limit == nil { @@ -221,10 +248,36 @@ func getCompletionsRateLimit(ctx context.Context, db database.DB, userID int32, return licensing.CodyGatewayRateLimit{ AllowedModels: allowedModels(scope), Limit: int64(*limit), - IntervalSeconds: 86400, // Daily limit TODO(davejrt) + IntervalSeconds: intervalSeconds, // Daily limit TODO(davejrt) }, source, nil } +func getSelfServeUsageLimits(scope types.CompletionsFeature, isProUser bool, cfg conftypes.CompletionsConfig) (int32, *int, error) { + switch scope { + case types.CompletionsFeatureChat: + if isProUser { + if cfg.PerProUserChatDailyLimit > 0 { + return oneDayInSeconds, pointers.Ptr(cfg.PerProUserChatDailyLimit), nil + } + } else { + if cfg.PerCommunityUserChatMonthlyLimit > 0 { + return oneMonthInSeconds, pointers.Ptr(cfg.PerCommunityUserChatMonthlyLimit), nil + } + } + case types.CompletionsFeatureCode: + if isProUser { + if cfg.PerProUserCodeCompletionsDailyLimit > 0 { + return oneDayInSeconds, pointers.Ptr(cfg.PerProUserCodeCompletionsDailyLimit), nil + } + } else { + if cfg.PerCommunityUserCodeCompletionsMonthlyLimit > 0 { + return oneMonthInSeconds, pointers.Ptr(cfg.PerCommunityUserCodeCompletionsMonthlyLimit), nil + } + } + } + return 0, nil, errors.Newf("unknown scope (self-serve limiting): %s", scope) +} + func allowedModels(scope types.CompletionsFeature) []string { switch scope { case types.CompletionsFeatureChat: diff --git a/internal/conf/computed.go b/internal/conf/computed.go index 6cd3bba722bb3..73eef6931522f 100644 --- a/internal/conf/computed.go +++ b/internal/conf/computed.go @@ -796,6 +796,10 @@ func GetCompletionsConfig(siteConfig schema.SiteConfiguration) (c *conftypes.Com Endpoint: completionsConfig.Endpoint, PerUserDailyLimit: completionsConfig.PerUserDailyLimit, PerUserCodeCompletionsDailyLimit: completionsConfig.PerUserCodeCompletionsDailyLimit, + PerCommunityUserChatMonthlyLimit: completionsConfig.PerCommunityUserChatMonthlyLimit, + PerCommunityUserCodeCompletionsMonthlyLimit: completionsConfig.PerCommunityUserCodeCompletionsMonthlyLimit, + PerProUserChatDailyLimit: completionsConfig.PerProUserChatDailyLimit, + PerProUserCodeCompletionsDailyLimit: completionsConfig.PerProUserCodeCompletionsDailyLimit, } return computedConfig diff --git a/internal/conf/conftypes/consts.go b/internal/conf/conftypes/consts.go index b6461fadcda27..265393496c406 100644 --- a/internal/conf/conftypes/consts.go +++ b/internal/conf/conftypes/consts.go @@ -12,11 +12,15 @@ type CompletionsConfig struct { CompletionModel string CompletionModelMaxTokens int - AccessToken string - Provider CompletionsProviderName - Endpoint string - PerUserDailyLimit int - PerUserCodeCompletionsDailyLimit int + AccessToken string + Provider CompletionsProviderName + Endpoint string + PerUserDailyLimit int + PerUserCodeCompletionsDailyLimit int + PerCommunityUserChatMonthlyLimit int + PerCommunityUserCodeCompletionsMonthlyLimit int + PerProUserChatDailyLimit int + PerProUserCodeCompletionsDailyLimit int } type CompletionsProviderName string diff --git a/schema/schema.go b/schema/schema.go index 2b1503ab62f82..457d0c5380127 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -592,6 +592,14 @@ type Completions struct { FastChatModelMaxTokens int `json:"fastChatModelMaxTokens,omitempty"` // Model description: DEPRECATED. Use chatModel instead. Model string `json:"model,omitempty"` + // PerCommunityUserChatMonthlyLimit description: If > 0, enables the maximum number of completions requests allowed to be made by a single Community user in a month. This is for Cody PLG and applies to Dotcom only. + PerCommunityUserChatMonthlyLimit int `json:"perCommunityUserChatMonthlyLimit,omitempty"` + // PerCommunityUserCodeCompletionsMonthlyLimit description: If > 0, enables the maximum number of code completions requests allowed to be made by a single Community user in a month. This is for Cody PLG and applies to Dotcom only. + PerCommunityUserCodeCompletionsMonthlyLimit int `json:"perCommunityUserCodeCompletionsMonthlyLimit,omitempty"` + // PerProUserChatDailyLimit description: If > 0, enables the maximum number of completions requests allowed to be made by a single Pro user in a day. This is for Cody PLG and applies to Dotcom only. + PerProUserChatDailyLimit int `json:"perProUserChatDailyLimit,omitempty"` + // PerProUserCodeCompletionsDailyLimit description: If > 0, enables the maximum number of code completions requests allowed to be made by a single Pro user in a day. This is for Cody PLG and applies to Dotcom only. + PerProUserCodeCompletionsDailyLimit int `json:"perProUserCodeCompletionsDailyLimit,omitempty"` // PerUserCodeCompletionsDailyLimit description: If > 0, enables the maximum number of code completions requests allowed to be made by a single user account in a day. On instances that allow anonymous requests, the rate limit is enforced by IP. PerUserCodeCompletionsDailyLimit int `json:"perUserCodeCompletionsDailyLimit,omitempty"` // PerUserDailyLimit description: If > 0, enables the maximum number of completions requests allowed to be made by a single user account in a day. On instances that allow anonymous requests, the rate limit is enforced by IP. diff --git a/schema/site.schema.json b/schema/site.schema.json index bf3b426dcb351..09ed90f5f81ac 100644 --- a/schema/site.schema.json +++ b/schema/site.schema.json @@ -2778,6 +2778,26 @@ "description": "If > 0, enables the maximum number of code completions requests allowed to be made by a single user account in a day. On instances that allow anonymous requests, the rate limit is enforced by IP.", "type": "integer", "default": 0 + }, + "perCommunityUserChatMonthlyLimit": { + "description": "If > 0, enables the maximum number of completions requests allowed to be made by a single Community user in a month. This is for Cody PLG and applies to Dotcom only.", + "type": "integer", + "default": 0 + }, + "perCommunityUserCodeCompletionsMonthlyLimit": { + "description": "If > 0, enables the maximum number of code completions requests allowed to be made by a single Community user in a month. This is for Cody PLG and applies to Dotcom only.", + "type": "integer", + "default": 0 + }, + "perProUserChatDailyLimit": { + "description": "If > 0, enables the maximum number of completions requests allowed to be made by a single Pro user in a day. This is for Cody PLG and applies to Dotcom only.", + "type": "integer", + "default": 0 + }, + "perProUserCodeCompletionsDailyLimit": { + "description": "If > 0, enables the maximum number of code completions requests allowed to be made by a single Pro user in a day. This is for Cody PLG and applies to Dotcom only.", + "type": "integer", + "default": 0 } }, "examples": [ From d0a0142b0cebcee7d2c7a794f8274372d58f6043 Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Thu, 23 Nov 2023 09:55:58 +0100 Subject: [PATCH 124/222] gitserver: Use stable ordering for DB updates to prevent deadlocks (#58499) Unstable ordering here could mean that we run into deadlocks when two of these queries run at the same time. Ordering them and selecting them for update in that order fixes it for most conditions. ## Test plan Using a local repro, I've no longer been able to reproduce the issue we saw on dotcom. I will mark the sentry issues as resolved, to be informed about regressions, and all the existing tests still pass so I'm confident the query behaves the same as before. --- internal/database/gitserver_repos.go | 65 ++++++++++++++++++---------- 1 file changed, 43 insertions(+), 22 deletions(-) diff --git a/internal/database/gitserver_repos.go b/internal/database/gitserver_repos.go index 3f2faa8ea52bf..26817caacd9f6 100644 --- a/internal/database/gitserver_repos.go +++ b/internal/database/gitserver_repos.go @@ -122,22 +122,33 @@ func (s *gitserverRepoStore) Update(ctx context.Context, repos ...*types.Gitserv } const updateGitserverReposQueryFmtstr = ` +WITH update_data AS ( + SELECT * FROM ( + VALUES + -- (<repo_id>, <clone_status>, <shard_id>, <last_error>, <last_fetched>, <last_changed>, <corrupted_at>, <repo_size_bytes>), + %s + ) AS tmp(repo_id, clone_status, shard_id, last_error, last_fetched, last_changed, corrupted_at, repo_size_bytes) +), +locked_data AS ( + SELECT update_data.* + FROM update_data + JOIN gitserver_repos gr ON gr.repo_id = update_data.repo_id + ORDER BY update_data.repo_id ASC + FOR UPDATE OF gr +) UPDATE gitserver_repos AS gr SET - clone_status = tmp.clone_status, - shard_id = tmp.shard_id, - last_error = tmp.last_error, - last_fetched = tmp.last_fetched, - last_changed = tmp.last_changed, - corrupted_at = tmp.corrupted_at, - repo_size_bytes = tmp.repo_size_bytes, + clone_status = locked_data.clone_status, + shard_id = locked_data.shard_id, + last_error = locked_data.last_error, + last_fetched = locked_data.last_fetched, + last_changed = locked_data.last_changed, + corrupted_at = locked_data.corrupted_at, + repo_size_bytes = locked_data.repo_size_bytes, updated_at = NOW() -FROM (VALUES - -- (<repo_id>, <clone_status>, <shard_id>, <last_error>, <last_fetched>, <last_changed>, <corrupted_at>, <repo_size_bytes>), - %s - ) AS tmp(repo_id, clone_status, shard_id, last_error, last_fetched, last_changed, corrupted_at, repo_size_bytes) - WHERE - tmp.repo_id = gr.repo_id +FROM locked_data +WHERE + locked_data.repo_id = gr.repo_id ` func (s *gitserverRepoStore) TotalErroredCloudDefaultRepos(ctx context.Context) (int, error) { @@ -684,19 +695,29 @@ func (s *gitserverRepoStore) updateRepoSizesWithBatchSize(ctx context.Context, r } const updateRepoSizesQueryFmtstr = ` +WITH update_data AS ( + SELECT * FROM (VALUES + -- (<repo_name>, <repo_size_bytes>), + %s + ) AS tmp(repo_name, repo_size_bytes) +), +locked_data AS ( + SELECT update_data.*, gr.repo_id + FROM update_data + JOIN gitserver_repos gr ON gr.repo_id = (SELECT r.id FROM repo r WHERE r.name = update_data.repo_name) + WHERE + update_data.repo_size_bytes IS DISTINCT FROM gr.repo_size_bytes + ORDER BY gr.repo_id ASC + FOR UPDATE OF gr +) + UPDATE gitserver_repos AS gr SET - repo_size_bytes = tmp.repo_size_bytes, + repo_size_bytes = locked_data.repo_size_bytes, updated_at = NOW() -FROM (VALUES --- (<repo_name>, <repo_size_bytes>), - %s -) AS tmp(repo_name, repo_size_bytes) -JOIN repo ON repo.name = tmp.repo_name +FROM locked_data WHERE - repo.id = gr.repo_id -AND - tmp.repo_size_bytes IS DISTINCT FROM gr.repo_size_bytes + locked_data.repo_id = gr.repo_id ` // sanitizeToUTF8 will remove any null character terminated string. The null character can be From 4bf50a88dfad458a65a83c9a0d5b0354481f9e2a Mon Sep 17 00:00:00 2001 From: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> Date: Thu, 23 Nov 2023 09:59:13 +0000 Subject: [PATCH 125/222] client: update eslint ignore and prettier ignore (#58520) * update eslint ignore and prettier ignore prettier: - ignore client/web/dist - remove ignoring of dist-types as it isn't used anymore eslint: - ignore esbuild.bazel files - ignore vitest.config.ts * add postcss.config.ts * ts -> js for postcss * add prettier.config.js * add svgo.config.js to eslint ignore --- .eslintrc.js | 8 +++++++- .prettierignore | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 9bd5e4cdc48a0..a92d5d5083d4b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -17,13 +17,19 @@ const config = { '**/vendor/*.js', 'svelte.config.js', 'vite.config.ts', + 'vitest.config.ts', + 'postcss.config.js', 'playwright.config.ts', + 'bundlesize.config.js', + 'prettier.config.js', + 'svgo.config.js', '.vscode-test', '**/*.json', '**/*.d.ts', 'eslint-relative-formatter.js', 'typedoc.js', - 'bundlesize.config.js', + '**/dev/esbuild/*', + 'graphql-schema-linter.config.js', ], extends: ['@sourcegraph/eslint-config', 'plugin:storybook/recommended'], env: { diff --git a/.prettierignore b/.prettierignore index cba1e1765a010..0a6b5e2ac50d1 100644 --- a/.prettierignore +++ b/.prettierignore @@ -19,7 +19,7 @@ vendor/ .nyc_output/ out/ dist/ -dist-types/ +client/web/dist/ client/shared/src/schema/*.d.ts ts-node-* testdata From bac49148581648ad085073d644bee21c47e6598a Mon Sep 17 00:00:00 2001 From: Greg Magolan <greg@aspect.dev> Date: Thu, 23 Nov 2023 02:10:30 -0800 Subject: [PATCH 126/222] build: add missing deps that can cause flaky failures (#58507) Co-authored-by: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> --- client/web/src/end-to-end/BUILD.bazel | 1 + client/web/src/integration/BUILD.bazel | 1 + 2 files changed, 2 insertions(+) diff --git a/client/web/src/end-to-end/BUILD.bazel b/client/web/src/end-to-end/BUILD.bazel index 1c27b03869fbe..b612815af691d 100644 --- a/client/web/src/end-to-end/BUILD.bazel +++ b/client/web/src/end-to-end/BUILD.bazel @@ -50,6 +50,7 @@ ts_project( "//:node_modules/expect", "//:node_modules/lodash", "//:node_modules/mocha", + "//client/shared/src/testing", # keep "//client/web:node_modules/@sourcegraph/shared", ], ) diff --git a/client/web/src/integration/BUILD.bazel b/client/web/src/integration/BUILD.bazel index d99832d8e851e..2af30e5ea1749 100644 --- a/client/web/src/integration/BUILD.bazel +++ b/client/web/src/integration/BUILD.bazel @@ -96,6 +96,7 @@ ts_project( "//:node_modules/mocha", "//:node_modules/puppeteer", "//:node_modules/ts-key-enum", + "//client/shared/src/testing", # keep "//client/web:graphql_operations", "//client/web:node_modules/@sourcegraph/common", "//client/web:node_modules/@sourcegraph/shared", From 706f077217187c12ca63cd1d4dd62ce3a18a074c Mon Sep 17 00:00:00 2001 From: Greg Magolan <greg@aspect.dev> Date: Thu, 23 Nov 2023 02:19:46 -0800 Subject: [PATCH 127/222] build(bazel): upgrade to lastest 1.x aspect-bazel-lib 1.38.1 (#58504) Co-authored-by: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> --- .aspect/bazelrc/performance.bazelrc | 9 --------- WORKSPACE | 6 +++--- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/.aspect/bazelrc/performance.bazelrc b/.aspect/bazelrc/performance.bazelrc index fff4c7c5eed2b..26dbbe1f8d34d 100644 --- a/.aspect/bazelrc/performance.bazelrc +++ b/.aspect/bazelrc/performance.bazelrc @@ -27,12 +27,3 @@ build --experimental_reuse_sandbox_directories # author. # Docs: https://bazel.build/reference/command-line-reference#flag--legacy_external_runfiles build --nolegacy_external_runfiles - -# Some actions are always IO-intensive but require little compute. It's wasteful to put the output -# in the remote cache, it just saturates the network and fills the cache storage causing earlier -# evictions. It's also not worth sending them for remote execution. -# For actions like PackageTar it's usually faster to just re-run the work locally every time. -# You'll have to look at an execution log to figure out what other action mnemonics you care about. -# In some cases you may need to patch rulesets to add a mnemonic to actions that don't have one. -# https://bazel.build/reference/command-line-reference#flag--modify_execution_info -build --modify_execution_info=PackageTar=+no-remote diff --git a/WORKSPACE b/WORKSPACE index d5a6450ccfcf0..272b269d9aed0 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -15,9 +15,9 @@ bazel_skylib_workspace() http_archive( name = "aspect_bazel_lib", - sha256 = "cbf473d630ab67b36461d83b38fdc44e56f45b78d03c405e4958280211124d79", - strip_prefix = "bazel-lib-1.36.0", - url = "https://github.com/aspect-build/bazel-lib/releases/download/v1.36.0/bazel-lib-v1.36.0.tar.gz", + sha256 = "262e3d6693cdc16dd43880785cdae13c64e6a3f63f75b1993c716295093d117f", + strip_prefix = "bazel-lib-1.38.1", + url = "https://github.com/aspect-build/bazel-lib/releases/download/v1.38.1/bazel-lib-v1.38.1.tar.gz", ) # rules_js defines an older rules_nodejs, so we override it here From 6878a794af1226dc2f14d3e44fd3e58afa8cb89b Mon Sep 17 00:00:00 2001 From: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> Date: Thu, 23 Nov 2023 10:33:50 +0000 Subject: [PATCH 128/222] eslint: ignore client/web/dev and friends (#58522) eslint: ignore clientweb/dev and friends --- .eslintrc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc.js b/.eslintrc.js index a92d5d5083d4b..9212d7bb9a7a2 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -28,7 +28,7 @@ const config = { '**/*.d.ts', 'eslint-relative-formatter.js', 'typedoc.js', - '**/dev/esbuild/*', + 'client/web/dev/**/*', 'graphql-schema-linter.config.js', ], extends: ['@sourcegraph/eslint-config', 'plugin:storybook/recommended'], From 07feac686d4c532797274928ee2f0c6798d4c3bf Mon Sep 17 00:00:00 2001 From: Petri-Johan Last <petri.last@sourcegraph.com> Date: Thu, 23 Nov 2023 12:49:05 +0200 Subject: [PATCH 129/222] Remove ExpiredFeatures from licenses since they're now unused (#58523) --- internal/licensing/data.go | 45 -------------------------------------- 1 file changed, 45 deletions(-) diff --git a/internal/licensing/data.go b/internal/licensing/data.go index 861779b82fab3..58ed5cbc8b0ec 100644 --- a/internal/licensing/data.go +++ b/internal/licensing/data.go @@ -115,8 +115,6 @@ var AllFeatures = []Feature{ type PlanDetails struct { Features []Feature - // ExpiredFeatures are the features that still work after the plan is expired. - ExpiredFeatures []Feature } // planDetails defines the features that are enabled for each plan. @@ -126,10 +124,6 @@ var planDetails = map[Plan]PlanDetails{ &FeatureBatchChanges{MaxNumChangesets: 10}, &FeaturePrivateRepositories{Unrestricted: true}, }, - ExpiredFeatures: []Feature{ - FeatureACLs, - FeatureSSO, - }, }, PlanOldEnterprise: { Features: []Feature{ @@ -148,10 +142,6 @@ var planDetails = map[Plan]PlanDetails{ FeatureSCIM, FeatureCody, }, - ExpiredFeatures: []Feature{ - FeatureACLs, - FeatureSSO, - }, }, PlanTeam0: { Features: []Feature{ @@ -161,10 +151,6 @@ var planDetails = map[Plan]PlanDetails{ &FeatureBatchChanges{MaxNumChangesets: 10}, &FeaturePrivateRepositories{Unrestricted: true}, }, - ExpiredFeatures: []Feature{ - FeatureACLs, - FeatureSSO, - }, }, PlanEnterprise0: { Features: []Feature{ @@ -176,10 +162,6 @@ var planDetails = map[Plan]PlanDetails{ FeatureSCIM, FeatureCody, }, - ExpiredFeatures: []Feature{ - FeatureACLs, - FeatureSSO, - }, }, PlanBusiness0: { @@ -193,10 +175,6 @@ var planDetails = map[Plan]PlanDetails{ FeatureSCIM, FeatureCody, }, - ExpiredFeatures: []Feature{ - FeatureACLs, - FeatureSSO, - }, }, PlanEnterprise1: { Features: []Feature{ @@ -210,10 +188,6 @@ var planDetails = map[Plan]PlanDetails{ FeatureSCIM, FeatureCody, }, - ExpiredFeatures: []Feature{ - FeatureACLs, - FeatureSSO, - }, }, PlanEnterpriseExtension: { Features: []Feature{ @@ -227,10 +201,6 @@ var planDetails = map[Plan]PlanDetails{ FeatureSCIM, FeatureCody, }, - ExpiredFeatures: []Feature{ - FeatureACLs, - FeatureSSO, - }, }, PlanFree0: { Features: []Feature{ @@ -239,12 +209,6 @@ var planDetails = map[Plan]PlanDetails{ &FeatureBatchChanges{MaxNumChangesets: 10}, &FeaturePrivateRepositories{Unrestricted: true}, }, - ExpiredFeatures: []Feature{ - FeatureSSO, - FeatureMonitoring, - &FeatureBatchChanges{MaxNumChangesets: 10}, - &FeaturePrivateRepositories{Unrestricted: true}, - }, }, PlanFree1: { Features: []Feature{ @@ -252,11 +216,6 @@ var planDetails = map[Plan]PlanDetails{ &FeatureBatchChanges{MaxNumChangesets: 10}, &FeaturePrivateRepositories{MaxNumPrivateRepos: 1}, }, - ExpiredFeatures: []Feature{ - FeatureMonitoring, - &FeatureBatchChanges{MaxNumChangesets: 10}, - &FeaturePrivateRepositories{MaxNumPrivateRepos: 1}, - }, }, PlanAirGappedEnterprise: { Features: []Feature{ @@ -271,9 +230,5 @@ var planDetails = map[Plan]PlanDetails{ FeatureCody, FeatureAllowAirGapped, }, - ExpiredFeatures: []Feature{ - FeatureACLs, - FeatureSSO, - }, }, } From 7309b4eea83125120f4fa6dd1268127cc7eb6298 Mon Sep 17 00:00:00 2001 From: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> Date: Thu, 23 Nov 2023 12:50:55 +0000 Subject: [PATCH 130/222] ci: add @percy/puppeteer explicity to `run_percy_with_mocha` target (#58525) * add percy puppeteer explicity * add puppeteer to run_mocha_tests_with_percy * remove @percy puppeteer from integration target --- client/shared/dev/BUILD.bazel | 1 + client/web/src/integration/BUILD.bazel | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/client/shared/dev/BUILD.bazel b/client/shared/dev/BUILD.bazel index 167a8daf28e04..c61a25b08656e 100644 --- a/client/shared/dev/BUILD.bazel +++ b/client/shared/dev/BUILD.bazel @@ -57,6 +57,7 @@ js_binary( name = "run_mocha_tests_with_percy", data = [ "//:node_modules/@percy/cli", + "//:node_modules/@percy/puppeteer", "//:node_modules/mocha", "//:node_modules/puppeteer", "//:node_modules/resolve-bin", diff --git a/client/web/src/integration/BUILD.bazel b/client/web/src/integration/BUILD.bazel index 2af30e5ea1749..3b5693571e826 100644 --- a/client/web/src/integration/BUILD.bazel +++ b/client/web/src/integration/BUILD.bazel @@ -122,5 +122,7 @@ mocha_test( "requires-network", ], tests = [test.replace(".ts", ".js") for test in glob(["**/*.test.ts"])], - deps = [":integration_tests"], + deps = [ + ":integration_tests", + ], ) From 70c544b3ff907abdcbc7f5b2f75f8c3e85115534 Mon Sep 17 00:00:00 2001 From: Greg Magolan <greg@aspect.dev> Date: Thu, 23 Nov 2023 05:05:59 -0800 Subject: [PATCH 131/222] build: fix non-determinism due to stamp vars in inputs in //client/web/src/integration:integration-tests (#58505) Co-authored-by: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> --- client/shared/dev/runMochaTestsWithPercy.js | 20 +++++++++++++++----- dev/mocha.bzl | 5 ----- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/client/shared/dev/runMochaTestsWithPercy.js b/client/shared/dev/runMochaTestsWithPercy.js index 7758a75145651..eaf467e7ea46a 100644 --- a/client/shared/dev/runMochaTestsWithPercy.js +++ b/client/shared/dev/runMochaTestsWithPercy.js @@ -13,11 +13,10 @@ const resolveBin = require('resolve-bin') /** @returns {Record<string, string>} env vars */ function getEnvVars() { // JS_BINARY__EXECROOT ā€“ Set by Bazel `js_run_binary` rule. - // BAZEL_VOLATILE_STATUS_FILE ā€“ Set by Bazel when the `stamp` attribute on the `js_run_binary_rule` equals 1. - // https://docs.aspect.build/rules/aspect_rules_js/docs/js_run_binary#stamp - const { JS_BINARY__EXECROOT, BAZEL_VOLATILE_STATUS_FILE } = process.env + // BAZEL_BINDIR ā€“ Set by Bazel `js_run_binary` rule. + const { JS_BINARY__EXECROOT, BAZEL_BINDIR } = process.env - if (!JS_BINARY__EXECROOT || !BAZEL_VOLATILE_STATUS_FILE) { + if (!JS_BINARY__EXECROOT || !BAZEL_BINDIR) { throw new Error('Missing required environment variables') } @@ -26,7 +25,18 @@ function getEnvVars() { // build the correct visual diff report and auto-accept change on `main` if we're on it. // https://github.com/percy/cli/blob/059ec21653a07105e223aa5a3ec1f815a7123ad7/packages/env/src/environment.js#L138-L139 // https://bazel.build/docs/user-manual#workspace-status - const statusFilePath = path.join(JS_BINARY__EXECROOT, BAZEL_VOLATILE_STATUS_FILE) + // + // NB: we derive the volatile-status.txt file path from the BAZEL_BINDIR since we are + // intentionally pulling volatile data without defining the volatile status as an input so we + // don't bust the cache with its contents of volatile-status.txt + // (https://github.com/bazelbuild/bazel/issues/16231). This can be improved in the future by using + // the new --experimental_remote_cache_key_ignore_stamping flag in Bazel to filter out the + // volatile-status.txt file from the action inputs + // (https://github.com/bazelbuild/bazel/pull/16240) + const statusFilePath = path.join( + path.dirname(path.dirname(path.join(JS_BINARY__EXECROOT, BAZEL_BINDIR))), + 'volatile-status.txt' + ) const volatileEnvVariables = Object.fromEntries( readFileSync(statusFilePath, 'utf8') .split('\n') diff --git a/dev/mocha.bzl b/dev/mocha.bzl index c493579f23226..e57327a59679d 100644 --- a/dev/mocha.bzl +++ b/dev/mocha.bzl @@ -114,11 +114,6 @@ def mocha_test(name, tests, deps = [], args = [], data = [], env = {}, is_percy_ srcs = data, out_dirs = ["out"], silent_on_success = True, - - # Used to provide BUILDKITE_BRANCH and BUILDKITE_COMMIT to Percy via - # dev/bazel_buildkite_stamp_vars.sh. See the tool implementation for more details. - stamp = 1, - # Executed mocha tests with Percy enabled via `percy exec -- mocha ...` # Prepends volatile env variables to the command to make Percy aware of the # current git branch and commit. From 3bac62999956f2dc135f872d4374e813a81353ea Mon Sep 17 00:00:00 2001 From: Greg Magolan <greg@aspect.dev> Date: Thu, 23 Nov 2023 05:06:48 -0800 Subject: [PATCH 132/222] build(bazel): switch to copy_file from aspect_bazel_lib which allows for cacheing for 'build without the bytes' support (#58506) Co-authored-by: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> --- cmd/embeddings/shared/BUILD.bazel | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/embeddings/shared/BUILD.bazel b/cmd/embeddings/shared/BUILD.bazel index d25f63875795d..460cd9154cca7 100644 --- a/cmd/embeddings/shared/BUILD.bazel +++ b/cmd/embeddings/shared/BUILD.bazel @@ -1,6 +1,6 @@ -load("//dev:go_defs.bzl", "go_test") +load("@aspect_bazel_lib//lib:copy_file.bzl", "copy_file") load("@io_bazel_rules_go//go:def.bzl", "go_library") -load("@bazel_skylib//rules:copy_file.bzl", "copy_file") +load("//dev:go_defs.bzl", "go_test") go_library( name = "shared", From 1101c68ebb9f470ad628773b0044425559ace5e8 Mon Sep 17 00:00:00 2001 From: Greg Magolan <greg@aspect.dev> Date: Thu, 23 Nov 2023 05:23:50 -0800 Subject: [PATCH 133/222] build(bazel): mark integration tests that must run in isolation as exclusive (#58508) --- testing/BUILD.bazel | 2 ++ 1 file changed, 2 insertions(+) diff --git a/testing/BUILD.bazel b/testing/BUILD.bazel index e14d052b81fad..ca9851e3f9bb3 100644 --- a/testing/BUILD.bazel +++ b/testing/BUILD.bazel @@ -112,6 +112,7 @@ server_integration_test( port = "7082", runner_src = ":backend_integration_test.sh", tags = [ + "exclusive", "manual", ], ) @@ -165,6 +166,7 @@ server_integration_test( port = "7083", runner_src = ":codeintel_integration_test.sh", tags = [ + "exclusive", "manual", ], ) From a1a294efbe78259cc909adaddab1efb25cf38a50 Mon Sep 17 00:00:00 2001 From: Vincent <evict@users.noreply.github.com> Date: Thu, 23 Nov 2023 14:00:27 +0000 Subject: [PATCH 134/222] sec: add deny list for external http requests (#58162) This enforces the URL validation for outgoing requests, see: https://github.com/sourcegraph/security-issues/issues/363 and https://github.com/sourcegraph/security-issues/issues/370. It's not too restrictive we only don't allow localhost and the metadata instance which should not be used for external requests. We also allow an additional env var setting for our cloud instances. This method of validation allows adds a custom `net.Dialer` to the transport. [This dialer](https://sourcegraph.com/github.com/go-gitea/gitea/-/blob/modules/hostmatcher/http.go?L47-50) will resolve the hostnames and perform IP validation before making the outbound connection. ## Test plan Tested locally and with unit tests. --- .../graphqlbackend/outbound_webhooks.go | 6 - .../internal/auth/azureoauth/BUILD.bazel | 2 + .../internal/auth/azureoauth/session.go | 7 +- .../internal/auth/azureoauth/session_test.go | 3 +- .../auth/bitbucketcloudoauth/BUILD.bazel | 1 + .../auth/bitbucketcloudoauth/session_test.go | 5 +- .../internal/auth/githubappauth/BUILD.bazel | 1 + .../internal/auth/githubappauth/middleware.go | 12 +- .../auth/githubappauth/middleware_test.go | 3 +- .../internal/auth/openidconnect/BUILD.bazel | 1 + .../internal/auth/openidconnect/config.go | 3 +- .../internal/auth/openidconnect/middleware.go | 5 +- .../auth/openidconnect/middleware_test.go | 3 + .../internal/auth/openidconnect/provider.go | 14 +- .../internal/auth/openidconnect/user_test.go | 4 +- cmd/frontend/internal/auth/saml/BUILD.bazel | 1 + cmd/frontend/internal/auth/saml/config.go | 3 +- .../internal/auth/saml/middleware_test.go | 3 +- cmd/frontend/internal/auth/saml/provider.go | 16 +- .../auth/sourcegraphoperator/BUILD.bazel | 2 + .../sourcegraphoperator/associate_test.go | 3 +- .../auth/sourcegraphoperator/config.go | 3 +- .../sourcegraphoperator/middleware_test.go | 3 +- .../auth/sourcegraphoperator/provider.go | 4 +- .../internal/outboundwebhooks/BUILD.bazel | 1 + .../internal/outboundwebhooks/handler.go | 2 +- .../internal/outboundwebhooks/handler_test.go | 10 +- internal/authz/providers/BUILD.bazel | 1 + internal/authz/providers/authz.go | 3 +- .../authz/providers/azuredevops/BUILD.bazel | 1 + .../authz/providers/azuredevops/provider.go | 27 ++-- .../providers/azuredevops/provider_test.go | 9 +- internal/codemonitors/background/BUILD.bazel | 1 + internal/codemonitors/background/webhook.go | 2 +- .../codemonitors/background/webhook_test.go | 10 +- internal/extsvc/azuredevops/client_test.go | 2 +- internal/extsvc/bitbucketserver/BUILD.bazel | 1 + .../extsvc/bitbucketserver/client_test.go | 3 +- internal/extsvc/gerrit/client_test.go | 7 +- internal/extsvc/github/v3_test.go | 2 +- internal/extsvc/gitlab/client_test.go | 2 +- internal/extsvc/npm/npm_test.go | 2 +- internal/httpcli/BUILD.bazel | 1 + internal/httpcli/client.go | 70 ++++++++- internal/repos/bitbucketserver_test.go | 15 +- internal/repos/github_test.go | 2 +- internal/repos/other_test.go | 5 +- internal/webhooks/outbound/BUILD.bazel | 1 - internal/webhooks/outbound/outbound.go | 146 ++++++++++++------ internal/webhooks/outbound/outbound_test.go | 29 ++-- 50 files changed, 299 insertions(+), 164 deletions(-) diff --git a/cmd/frontend/graphqlbackend/outbound_webhooks.go b/cmd/frontend/graphqlbackend/outbound_webhooks.go index 5bf174823de45..dcc314dfa7607 100644 --- a/cmd/frontend/graphqlbackend/outbound_webhooks.go +++ b/cmd/frontend/graphqlbackend/outbound_webhooks.go @@ -136,12 +136,6 @@ func (r *schemaResolver) CreateOutboundWebhook(ctx context.Context, args CreateO return nil, auth.ErrMustBeSiteAdmin } - // Validate the URL - err = outbound.CheckAddress(args.Input.URL) - if err != nil { - return nil, errors.Wrap(err, "invalid webhook address") - } - webhook := &types.OutboundWebhook{ CreatedBy: user.ID, UpdatedBy: user.ID, diff --git a/cmd/frontend/internal/auth/azureoauth/BUILD.bazel b/cmd/frontend/internal/auth/azureoauth/BUILD.bazel index 6cc67eb5c5585..713a82c8b5572 100644 --- a/cmd/frontend/internal/auth/azureoauth/BUILD.bazel +++ b/cmd/frontend/internal/auth/azureoauth/BUILD.bazel @@ -23,6 +23,7 @@ go_library( "//internal/extsvc", "//internal/extsvc/auth", "//internal/extsvc/azuredevops", + "//internal/httpcli", "//internal/licensing", "//lib/errors", "//schema", @@ -52,6 +53,7 @@ go_test( "//internal/database/dbtest", "//internal/extsvc", "//internal/extsvc/azuredevops", + "//internal/httpcli", "//internal/ratelimit", "//internal/rcache", "//schema", diff --git a/cmd/frontend/internal/auth/azureoauth/session.go b/cmd/frontend/internal/auth/azureoauth/session.go index d93917f648616..769a6786d459f 100644 --- a/cmd/frontend/internal/auth/azureoauth/session.go +++ b/cmd/frontend/internal/auth/azureoauth/session.go @@ -15,6 +15,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/extsvc" extsvcauth "github.com/sourcegraph/sourcegraph/internal/extsvc/auth" "github.com/sourcegraph/sourcegraph/internal/extsvc/azuredevops" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -37,7 +38,7 @@ func (s *sessionIssuerHelper) GetOrCreateUser(ctx context.Context, token *oauth2 return false, nil, "failed to read Azure DevOps Profile from oauth2 callback request", errors.Wrap(err, "azureoauth.GetOrCreateUser: failed to read user from context of callback request") } - if allow, err := s.verifyAllowOrgs(ctx, user, token); err != nil { + if allow, err := s.verifyAllowOrgs(ctx, user, token, httpcli.ExternalDoer); err != nil { return false, nil, "error in verifying authorized user organizations", err } else if !allow { msg := "User does not belong to any org from the allowed list of organizations. Please contact your site admin." @@ -113,7 +114,7 @@ func (s *sessionIssuerHelper) GetServiceID() string { return s.ServiceID } -func (s *sessionIssuerHelper) verifyAllowOrgs(ctx context.Context, profile *azuredevops.Profile, token *oauth2.Token) (bool, error) { +func (s *sessionIssuerHelper) verifyAllowOrgs(ctx context.Context, profile *azuredevops.Profile, token *oauth2.Token, doer httpcli.Doer) (bool, error) { if len(s.allowOrgs) == 0 { return true, nil } @@ -124,7 +125,7 @@ func (s *sessionIssuerHelper) verifyAllowOrgs(ctx context.Context, profile *azur &extsvcauth.OAuthBearerToken{ Token: token.AccessToken, }, - nil, + doer, ) if err != nil { return false, errors.Wrap(err, "failed to create client for listing organizations of user") diff --git a/cmd/frontend/internal/auth/azureoauth/session_test.go b/cmd/frontend/internal/auth/azureoauth/session_test.go index f361c42a5214e..cd619be2614d1 100644 --- a/cmd/frontend/internal/auth/azureoauth/session_test.go +++ b/cmd/frontend/internal/auth/azureoauth/session_test.go @@ -13,6 +13,7 @@ import ( "golang.org/x/oauth2" "github.com/sourcegraph/sourcegraph/internal/extsvc/azuredevops" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/ratelimit" "github.com/sourcegraph/sourcegraph/internal/rcache" ) @@ -101,7 +102,7 @@ func Test_verifyAllowOrgs(t *testing.T) { s := &sessionIssuerHelper{allowOrgs: tc.allowOrgs} ctx := context.Background() - allow, err := s.verifyAllowOrgs(ctx, &profile, &oauth2.Token{AccessToken: "foo"}) + allow, err := s.verifyAllowOrgs(ctx, &profile, &oauth2.Token{AccessToken: "foo"}, httpcli.TestExternalDoer) require.NoError(t, err, "unexpected error") if allow != tc.expectedAllow { t.Fatalf("expected allow to be %v, but got %v", tc.expectedAllow, allow) diff --git a/cmd/frontend/internal/auth/bitbucketcloudoauth/BUILD.bazel b/cmd/frontend/internal/auth/bitbucketcloudoauth/BUILD.bazel index e38440441aa64..e37f71b803c7a 100644 --- a/cmd/frontend/internal/auth/bitbucketcloudoauth/BUILD.bazel +++ b/cmd/frontend/internal/auth/bitbucketcloudoauth/BUILD.bazel @@ -64,6 +64,7 @@ go_test( "//internal/database/dbtest", "//internal/extsvc", "//internal/extsvc/bitbucketcloud", + "//internal/httpcli", "//internal/ratelimit", "//lib/errors", "//schema", diff --git a/cmd/frontend/internal/auth/bitbucketcloudoauth/session_test.go b/cmd/frontend/internal/auth/bitbucketcloudoauth/session_test.go index acb922d67c79f..eb38563032e9b 100644 --- a/cmd/frontend/internal/auth/bitbucketcloudoauth/session_test.go +++ b/cmd/frontend/internal/auth/bitbucketcloudoauth/session_test.go @@ -19,6 +19,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/extsvc" "github.com/sourcegraph/sourcegraph/internal/extsvc/bitbucketcloud" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/ratelimit" "github.com/sourcegraph/sourcegraph/lib/errors" "github.com/sourcegraph/sourcegraph/schema" @@ -191,7 +192,7 @@ func TestSessionIssuerHelper_GetOrCreateUser(t *testing.T) { Url: server.URL, ApiURL: server.URL, } - bbClient, err := bitbucketcloud.NewClient(server.URL, conf, nil) + bbClient, err := bitbucketcloud.NewClient(server.URL, conf, httpcli.TestExternalDoer) if err != nil { t.Fatal(err) } @@ -272,7 +273,7 @@ func TestSessionIssuerHelper_SignupMatchesSecondaryAccount(t *testing.T) { Url: server.URL, ApiURL: server.URL, } - bbClient, err := bitbucketcloud.NewClient(server.URL, conf, nil) + bbClient, err := bitbucketcloud.NewClient(server.URL, conf, httpcli.TestExternalDoer) if err != nil { t.Fatal(err) } diff --git a/cmd/frontend/internal/auth/githubappauth/BUILD.bazel b/cmd/frontend/internal/auth/githubappauth/BUILD.bazel index e582305364c9b..006d832b96236 100644 --- a/cmd/frontend/internal/auth/githubappauth/BUILD.bazel +++ b/cmd/frontend/internal/auth/githubappauth/BUILD.bazel @@ -62,6 +62,7 @@ go_test( "//internal/github_apps/store", "//internal/github_apps/types", "//internal/gitserver", + "//internal/httpcli", "//internal/rcache", "//internal/types", "//lib/errors", diff --git a/cmd/frontend/internal/auth/githubappauth/middleware.go b/cmd/frontend/internal/auth/githubappauth/middleware.go index ef75cd347b475..0abd072e4cb18 100644 --- a/cmd/frontend/internal/auth/githubappauth/middleware.go +++ b/cmd/frontend/internal/auth/githubappauth/middleware.go @@ -284,7 +284,7 @@ func newServeMux(db database.DB, prefix string, cache *rcache.Cache) http.Handle return } - app, err := createGitHubApp(u, *domain) + app, err := createGitHubApp(u, *domain, httpcli.UncachedExternalClient) if err != nil { http.Error(w, fmt.Sprintf("Unexpected error while converting github app: %s", err.Error()), http.StatusInternalServerError) return @@ -494,7 +494,7 @@ func generateRedirectURL(domain *string, installationID, appID *int, appName *st var MockCreateGitHubApp func(conversionURL string, domain types.GitHubAppDomain) (*ghtypes.GitHubApp, error) -func createGitHubApp(conversionURL string, domain types.GitHubAppDomain) (*ghtypes.GitHubApp, error) { +func createGitHubApp(conversionURL string, domain types.GitHubAppDomain, httpClient *http.Client) (*ghtypes.GitHubApp, error) { if MockCreateGitHubApp != nil { return MockCreateGitHubApp(conversionURL, domain) } @@ -503,13 +503,7 @@ func createGitHubApp(conversionURL string, domain types.GitHubAppDomain) (*ghtyp return nil, err } - cf := httpcli.UncachedExternalClientFactory - client, err := cf.Doer() - if err != nil { - return nil, errors.Wrap(err, "failed to create GitHub client") - } - - resp, err := client.Do(r) + resp, err := httpClient.Do(r) if err != nil { return nil, err } diff --git a/cmd/frontend/internal/auth/githubappauth/middleware_test.go b/cmd/frontend/internal/auth/githubappauth/middleware_test.go index 3ada7d933eeb1..5683607b7d555 100644 --- a/cmd/frontend/internal/auth/githubappauth/middleware_test.go +++ b/cmd/frontend/internal/auth/githubappauth/middleware_test.go @@ -19,6 +19,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/encryption" "github.com/sourcegraph/sourcegraph/internal/github_apps/store" ghtypes "github.com/sourcegraph/sourcegraph/internal/github_apps/types" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/rcache" "github.com/sourcegraph/sourcegraph/internal/types" ) @@ -512,7 +513,7 @@ func TestCreateGitHubApp(t *testing.T) { srv := httptest.NewServer(test.handlerAssert(t)) defer srv.Close() - app, err := createGitHubApp(srv.URL, test.domain) + app, err := createGitHubApp(srv.URL, test.domain, httpcli.TestExternalClient) if test.expectedErr != nil { require.Error(t, err) assert.EqualError(t, err, test.expectedErr.Error()) diff --git a/cmd/frontend/internal/auth/openidconnect/BUILD.bazel b/cmd/frontend/internal/auth/openidconnect/BUILD.bazel index bf60a3cdfa2c3..fd79b169f8bcd 100644 --- a/cmd/frontend/internal/auth/openidconnect/BUILD.bazel +++ b/cmd/frontend/internal/auth/openidconnect/BUILD.bazel @@ -58,6 +58,7 @@ go_test( "//internal/database/dbmocks", "//internal/encryption", "//internal/extsvc", + "//internal/httpcli", "//internal/licensing", "//internal/types", "//lib/errors", diff --git a/cmd/frontend/internal/auth/openidconnect/config.go b/cmd/frontend/internal/auth/openidconnect/config.go index 0904b0079a51f..882e62f76ea04 100644 --- a/cmd/frontend/internal/auth/openidconnect/config.go +++ b/cmd/frontend/internal/auth/openidconnect/config.go @@ -14,6 +14,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/auth/providers" "github.com/sourcegraph/sourcegraph/internal/conf" "github.com/sourcegraph/sourcegraph/internal/conf/conftypes" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/licensing" "github.com/sourcegraph/sourcegraph/lib/errors" "github.com/sourcegraph/sourcegraph/schema" @@ -103,7 +104,7 @@ func getProviders() []providers.Provider { } ps := make([]providers.Provider, 0, len(cfgs)) for _, cfg := range cfgs { - ps = append(ps, NewProvider(*cfg, authPrefix, path.Join(auth.AuthURLPrefix, "callback"))) + ps = append(ps, NewProvider(*cfg, authPrefix, path.Join(auth.AuthURLPrefix, "callback"), httpcli.ExternalClient)) } return ps } diff --git a/cmd/frontend/internal/auth/openidconnect/middleware.go b/cmd/frontend/internal/auth/openidconnect/middleware.go index e05b76c293bd8..3c792a4625519 100644 --- a/cmd/frontend/internal/auth/openidconnect/middleware.go +++ b/cmd/frontend/internal/auth/openidconnect/middleware.go @@ -21,7 +21,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/auth/providers" "github.com/sourcegraph/sourcegraph/internal/cookie" "github.com/sourcegraph/sourcegraph/internal/database" - "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -267,7 +266,7 @@ func AuthCallback(db database.DB, r *http.Request, stateCookieName, usernamePref } // Exchange the code for an access token, see http://openid.net/specs/openid-connect-core-1_0.html#TokenRequest. - oauth2Token, err := p.oauth2Config().Exchange(context.WithValue(r.Context(), oauth2.HTTPClient, httpcli.ExternalClient), r.URL.Query().Get("code")) + oauth2Token, err := p.oauth2Config().Exchange(context.WithValue(r.Context(), oauth2.HTTPClient, p.httpClient), r.URL.Query().Get("code")) if err != nil { return nil, "Authentication failed. Try signing in again. The error was: unable to obtain access token from issuer.", @@ -308,7 +307,7 @@ func AuthCallback(db database.DB, r *http.Request, stateCookieName, usernamePref errors.New("nonce is incorrect (possible replay attach)") } - userInfo, err := p.oidcUserInfo(oidc.ClientContext(r.Context(), httpcli.ExternalClient), oauth2.StaticTokenSource(oauth2Token)) + userInfo, err := p.oidcUserInfo(oidc.ClientContext(r.Context(), p.httpClient), oauth2.StaticTokenSource(oauth2Token)) if err != nil { return nil, "Failed to get userinfo: " + err.Error(), diff --git a/cmd/frontend/internal/auth/openidconnect/middleware_test.go b/cmd/frontend/internal/auth/openidconnect/middleware_test.go index 1ac0f15a7e888..c6883b0f0d73b 100644 --- a/cmd/frontend/internal/auth/openidconnect/middleware_test.go +++ b/cmd/frontend/internal/auth/openidconnect/middleware_test.go @@ -22,6 +22,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/auth/providers" "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/database/dbmocks" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/licensing" "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/lib/errors" @@ -129,6 +130,7 @@ func TestMiddleware(t *testing.T) { Type: providerType, }, callbackUrl: ".auth/callback", + httpClient: httpcli.TestExternalClient, } defer func() { mockGetProviderValue = nil }() providers.MockProviders = []providers.Provider{mockGetProviderValue} @@ -331,6 +333,7 @@ func TestMiddleware_NoOpenRedirect(t *testing.T) { Type: providerType, }, callbackUrl: ".auth/callback", + httpClient: httpcli.TestExternalClient, } defer func() { mockGetProviderValue = nil }() providers.MockProviders = []providers.Provider{mockGetProviderValue} diff --git a/cmd/frontend/internal/auth/openidconnect/provider.go b/cmd/frontend/internal/auth/openidconnect/provider.go index 115a9ff1dbabe..20b8faabd4c34 100644 --- a/cmd/frontend/internal/auth/openidconnect/provider.go +++ b/cmd/frontend/internal/auth/openidconnect/provider.go @@ -14,7 +14,6 @@ import ( "github.com/sourcegraph/sourcegraph/cmd/frontend/external/globals" "github.com/sourcegraph/sourcegraph/internal/auth/providers" "github.com/sourcegraph/sourcegraph/internal/extsvc" - "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/lib/errors" "github.com/sourcegraph/sourcegraph/schema" ) @@ -27,6 +26,7 @@ type Provider struct { config schema.OpenIDConnectAuthProvider authPrefix string callbackUrl string + httpClient *http.Client mu sync.Mutex oidc *oidcProvider @@ -35,11 +35,12 @@ type Provider struct { // NewProvider creates and returns a new OpenID Connect authentication provider // using the given config. -func NewProvider(config schema.OpenIDConnectAuthProvider, authPrefix string, callbackUrl string) providers.Provider { +func NewProvider(config schema.OpenIDConnectAuthProvider, authPrefix string, callbackUrl string, httpClient *http.Client) providers.Provider { return &Provider{ config: config, authPrefix: authPrefix, callbackUrl: callbackUrl, + httpClient: httpClient, } } @@ -60,7 +61,7 @@ func (p *Provider) Config() schema.AuthProviders { func (p *Provider) Refresh(context.Context) error { p.mu.Lock() defer p.mu.Unlock() - p.oidc, p.refreshErr = newOIDCProvider(p.config.Issuer) + p.oidc, p.refreshErr = newOIDCProvider(p.config.Issuer, p.httpClient) return p.refreshErr } @@ -158,12 +159,12 @@ type providerExtraClaims struct { var mockNewProvider func(issuerURL string) (*oidcProvider, error) -func newOIDCProvider(issuerURL string) (*oidcProvider, error) { +func newOIDCProvider(issuerURL string, httpClient *http.Client) (*oidcProvider, error) { if mockNewProvider != nil { return mockNewProvider(issuerURL) } - bp, err := oidc.NewProvider(oidc.ClientContext(context.Background(), httpcli.ExternalClient), issuerURL) + bp, err := oidc.NewProvider(oidc.ClientContext(context.Background(), httpClient), issuerURL) if err != nil { return nil, err } @@ -193,7 +194,8 @@ func revokeToken(ctx context.Context, p *Provider, accessToken, tokenType string req.Header.Set("Content-Type", "application/x-www-form-urlencoded") req.SetBasicAuth(p.config.ClientID, p.config.ClientSecret) - resp, err := httpcli.ExternalDoer.Do(req.WithContext(ctx)) + + resp, err := p.httpClient.Do(req.WithContext(ctx)) if err != nil { return err } diff --git a/cmd/frontend/internal/auth/openidconnect/user_test.go b/cmd/frontend/internal/auth/openidconnect/user_test.go index 65563e05d4fe7..4d8ba77251418 100644 --- a/cmd/frontend/internal/auth/openidconnect/user_test.go +++ b/cmd/frontend/internal/auth/openidconnect/user_test.go @@ -12,6 +12,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/database/dbmocks" "github.com/sourcegraph/sourcegraph/internal/encryption" "github.com/sourcegraph/sourcegraph/internal/extsvc" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/schema" ) @@ -59,7 +60,8 @@ func TestAllowSignup(t *testing.T) { RequireEmailDomain: "example.com", AllowSignup: test.allowSignup, }, - oidc: &oidcProvider{}, + oidc: &oidcProvider{}, + httpClient: httpcli.ExternalClient, } _, _, _, err := getOrCreateUser( context.Background(), diff --git a/cmd/frontend/internal/auth/saml/BUILD.bazel b/cmd/frontend/internal/auth/saml/BUILD.bazel index f62ef536b9019..590a1ffaaebd4 100644 --- a/cmd/frontend/internal/auth/saml/BUILD.bazel +++ b/cmd/frontend/internal/auth/saml/BUILD.bazel @@ -55,6 +55,7 @@ go_test( "//internal/conf", "//internal/database/dbmocks", "//internal/extsvc", + "//internal/httpcli", "//internal/licensing", "//internal/types", "//lib/errors", diff --git a/cmd/frontend/internal/auth/saml/config.go b/cmd/frontend/internal/auth/saml/config.go index fbe8954256059..7b9255a1fd99c 100644 --- a/cmd/frontend/internal/auth/saml/config.go +++ b/cmd/frontend/internal/auth/saml/config.go @@ -19,6 +19,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/conf" "github.com/sourcegraph/sourcegraph/internal/conf/conftypes" "github.com/sourcegraph/sourcegraph/internal/env" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/licensing" "github.com/sourcegraph/sourcegraph/schema" ) @@ -106,7 +107,7 @@ func getProviders() []providers.Provider { multiple := len(cfgs) >= 2 ps := make([]providers.Provider, 0, len(cfgs)) for _, cfg := range cfgs { - p := &provider{config: *cfg, multiple: multiple} + p := &provider{config: *cfg, multiple: multiple, httpClient: httpcli.ExternalClient} ps = append(ps, p) } return ps diff --git a/cmd/frontend/internal/auth/saml/middleware_test.go b/cmd/frontend/internal/auth/saml/middleware_test.go index 42fd006f2bbf6..09e73bf747cdb 100644 --- a/cmd/frontend/internal/auth/saml/middleware_test.go +++ b/cmd/frontend/internal/auth/saml/middleware_test.go @@ -27,6 +27,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/auth/providers" "github.com/sourcegraph/sourcegraph/internal/conf" "github.com/sourcegraph/sourcegraph/internal/database/dbmocks" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/licensing" "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/lib/errors" @@ -187,7 +188,7 @@ func TestMiddleware(t *testing.T) { ServiceProviderPrivateKey: testSAMLSPKey, }) - mockGetProviderValue = &provider{config: *config} + mockGetProviderValue = &provider{config: *config, httpClient: httpcli.TestExternalClient} defer func() { mockGetProviderValue = nil }() providers.MockProviders = []providers.Provider{mockGetProviderValue} defer func() { providers.MockProviders = nil }() diff --git a/cmd/frontend/internal/auth/saml/provider.go b/cmd/frontend/internal/auth/saml/provider.go index 407b44b89c3f3..49ebe9c54b085 100644 --- a/cmd/frontend/internal/auth/saml/provider.go +++ b/cmd/frontend/internal/auth/saml/provider.go @@ -23,7 +23,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/auth/providers" "github.com/sourcegraph/sourcegraph/internal/conf" "github.com/sourcegraph/sourcegraph/internal/extsvc" - "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/lib/errors" "github.com/sourcegraph/sourcegraph/schema" ) @@ -31,8 +30,9 @@ import ( const providerType = "saml" type provider struct { - config schema.SAMLAuthProvider - multiple bool // whether there are multiple SAML auth providers + config schema.SAMLAuthProvider + multiple bool // whether there are multiple SAML auth providers + httpClient *http.Client mu sync.Mutex samlSP *saml2.SAMLServiceProvider @@ -56,7 +56,7 @@ func (p *provider) Config() schema.AuthProviders { func (p *provider) Refresh(ctx context.Context) error { p.mu.Lock() defer p.mu.Unlock() - p.samlSP, p.refreshErr = getServiceProvider(ctx, &p.config) + p.samlSP, p.refreshErr = getServiceProvider(ctx, &p.config, p.httpClient) return p.refreshErr } @@ -104,13 +104,13 @@ func (p *provider) CachedInfo() *providers.Info { return info } -func getServiceProvider(ctx context.Context, pc *schema.SAMLAuthProvider) (*saml2.SAMLServiceProvider, error) { +func getServiceProvider(ctx context.Context, pc *schema.SAMLAuthProvider, httpClient *http.Client) (*saml2.SAMLServiceProvider, error) { c, err := readProviderConfig(pc) if err != nil { return nil, err } - idpMetadata, err := readIdentityProviderMetadata(ctx, c) + idpMetadata, err := readIdentityProviderMetadata(ctx, c, httpClient) if err != nil { return nil, err } @@ -276,7 +276,7 @@ func readProviderConfig(pc *schema.SAMLAuthProvider) (*providerConfig, error) { return &c, nil } -func readIdentityProviderMetadata(ctx context.Context, c *providerConfig) ([]byte, error) { +func readIdentityProviderMetadata(ctx context.Context, c *providerConfig, httpClient *http.Client) ([]byte, error) { if c.identityProviderMetadata != nil { return c.identityProviderMetadata, nil } @@ -286,7 +286,7 @@ func readIdentityProviderMetadata(ctx context.Context, c *providerConfig) ([]byt return nil, errors.WithMessage(err, "bad URL") } - resp, err := httpcli.ExternalDoer.Do(req.WithContext(ctx)) + resp, err := httpClient.Do(req.WithContext(ctx)) if err != nil { return nil, errors.WithMessage(err, "fetching SAML Identity Provider metadata") } diff --git a/cmd/frontend/internal/auth/sourcegraphoperator/BUILD.bazel b/cmd/frontend/internal/auth/sourcegraphoperator/BUILD.bazel index ef0bec087d639..fca8d369693b6 100644 --- a/cmd/frontend/internal/auth/sourcegraphoperator/BUILD.bazel +++ b/cmd/frontend/internal/auth/sourcegraphoperator/BUILD.bazel @@ -23,6 +23,7 @@ go_library( "//internal/conf/conftypes", "//internal/database", "//internal/extsvc", + "//internal/httpcli", "//internal/sourcegraphoperator", "//lib/errors", "//schema", @@ -56,6 +57,7 @@ go_test( "//internal/database/dbmocks", "//internal/database/dbtest", "//internal/extsvc", + "//internal/httpcli", "//internal/sourcegraphoperator", "//internal/types", "//lib/errors", diff --git a/cmd/frontend/internal/auth/sourcegraphoperator/associate_test.go b/cmd/frontend/internal/auth/sourcegraphoperator/associate_test.go index 9147af822c3ae..d2eab143e910f 100644 --- a/cmd/frontend/internal/auth/sourcegraphoperator/associate_test.go +++ b/cmd/frontend/internal/auth/sourcegraphoperator/associate_test.go @@ -19,6 +19,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/database/dbmocks" "github.com/sourcegraph/sourcegraph/internal/database/dbtest" "github.com/sourcegraph/sourcegraph/internal/extsvc" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/sourcegraphoperator" "github.com/sourcegraph/sourcegraph/internal/types" ) @@ -50,7 +51,7 @@ func TestAddSourcegraphOperatorExternalAccount(t *testing.T) { ctx := context.Background() soap := NewProvider(cloud.SchemaAuthProviderSourcegraphOperator{ ClientID: "soap_client", - }) + }, httpcli.TestExternalClient) serviceID := soap.ConfigID().ID mockDB := func(siteAdmin bool) database.DB { diff --git a/cmd/frontend/internal/auth/sourcegraphoperator/config.go b/cmd/frontend/internal/auth/sourcegraphoperator/config.go index d873860cd23fd..cb6df5d76e0c8 100644 --- a/cmd/frontend/internal/auth/sourcegraphoperator/config.go +++ b/cmd/frontend/internal/auth/sourcegraphoperator/config.go @@ -11,6 +11,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/cloud" "github.com/sourcegraph/sourcegraph/internal/conf" "github.com/sourcegraph/sourcegraph/internal/conf/conftypes" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/sourcegraphoperator" ) @@ -39,7 +40,7 @@ func Init() { conf.ContributeValidator(validateConfig) - p := NewProvider(*cloudSiteConfig.AuthProviders.SourcegraphOperator) + p := NewProvider(*cloudSiteConfig.AuthProviders.SourcegraphOperator, httpcli.ExternalClient) logger := log.Scoped(auth.SourcegraphOperatorProviderType) go func() { if err := p.Refresh(context.Background()); err != nil { diff --git a/cmd/frontend/internal/auth/sourcegraphoperator/middleware_test.go b/cmd/frontend/internal/auth/sourcegraphoperator/middleware_test.go index d5a9ffdbe31bb..d771e3b925321 100644 --- a/cmd/frontend/internal/auth/sourcegraphoperator/middleware_test.go +++ b/cmd/frontend/internal/auth/sourcegraphoperator/middleware_test.go @@ -28,6 +28,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/database/dbmocks" "github.com/sourcegraph/sourcegraph/internal/extsvc" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -183,7 +184,7 @@ func TestMiddleware(t *testing.T) { defer oidcIDServer.Close() providerConfig.Issuer = oidcIDServer.URL - mockProvider := NewProvider(providerConfig).(*provider) + mockProvider := NewProvider(providerConfig, httpcli.TestExternalClient).(*provider) providers.MockProviders = []providers.Provider{mockProvider} defer func() { providers.MockProviders = nil }() diff --git a/cmd/frontend/internal/auth/sourcegraphoperator/provider.go b/cmd/frontend/internal/auth/sourcegraphoperator/provider.go index 057ebb3251b86..c560b22a33248 100644 --- a/cmd/frontend/internal/auth/sourcegraphoperator/provider.go +++ b/cmd/frontend/internal/auth/sourcegraphoperator/provider.go @@ -1,6 +1,7 @@ package sourcegraphoperator import ( + "net/http" "path" feAuth "github.com/sourcegraph/sourcegraph/cmd/frontend/auth" @@ -26,7 +27,7 @@ type provider struct { // NewProvider creates and returns a new Sourcegraph Operator authentication // provider using the given config. -func NewProvider(config cloud.SchemaAuthProviderSourcegraphOperator) providers.Provider { +func NewProvider(config cloud.SchemaAuthProviderSourcegraphOperator, httpClient *http.Client) providers.Provider { allowSignUp := true return &provider{ config: config, @@ -43,6 +44,7 @@ func NewProvider(config cloud.SchemaAuthProviderSourcegraphOperator) providers.P }, authPrefix, path.Join(feAuth.AuthURLPrefix, "sourcegraph-operator", "callback"), + httpClient, ).(*openidconnect.Provider), } } diff --git a/cmd/worker/internal/outboundwebhooks/BUILD.bazel b/cmd/worker/internal/outboundwebhooks/BUILD.bazel index 0c0b048bc1dec..69d49c8b0a690 100644 --- a/cmd/worker/internal/outboundwebhooks/BUILD.bazel +++ b/cmd/worker/internal/outboundwebhooks/BUILD.bazel @@ -46,6 +46,7 @@ go_test( "//internal/database/dbmocks", "//internal/encryption", "//internal/types", + "//internal/webhooks/outbound", "//lib/errors", "@com_github_derision_test_go_mockgen//testutil/assert", "@com_github_sourcegraph_log//logtest", diff --git a/cmd/worker/internal/outboundwebhooks/handler.go b/cmd/worker/internal/outboundwebhooks/handler.go index 6d7fd89c67fa2..e2266971eafb0 100644 --- a/cmd/worker/internal/outboundwebhooks/handler.go +++ b/cmd/worker/internal/outboundwebhooks/handler.go @@ -91,7 +91,7 @@ func (h *handler) sendWebhook( return errors.Wrap(err, "decrypting webhook URL") } - err = outbound.CheckAddress(url) + err = outbound.CheckURL(url) if err != nil { logger.Error("webhook URL is not allowed", log.Error(err)) return errors.Wrap(err, "checking webhook URL") diff --git a/cmd/worker/internal/outboundwebhooks/handler_test.go b/cmd/worker/internal/outboundwebhooks/handler_test.go index 645a3897e2792..4be465057ead1 100644 --- a/cmd/worker/internal/outboundwebhooks/handler_test.go +++ b/cmd/worker/internal/outboundwebhooks/handler_test.go @@ -17,6 +17,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/database/dbmocks" "github.com/sourcegraph/sourcegraph/internal/encryption" "github.com/sourcegraph/sourcegraph/internal/types" + "github.com/sourcegraph/sourcegraph/internal/webhooks/outbound" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -83,6 +84,9 @@ func TestHandler_Handle(t *testing.T) { logStore: logStore, } + outbound.SetTestDenyList() + t.Cleanup(outbound.ResetDenyList) + err := h.Handle(ctx, logger, job) // We expect an error here because sadServer returned a 500. assert.Error(t, err) @@ -112,7 +116,7 @@ func TestHandler_Handle(t *testing.T) { webhook := &types.OutboundWebhook{ ID: 1, - URL: encryption.NewUnencrypted("http://sourcegraph.com/webhook-receiver/1234"), + URL: encryption.NewUnencrypted("http://127.0.0.1/webhook-receiver/1234"), Secret: encryption.NewUnencrypted(secret), } @@ -136,12 +140,16 @@ func TestHandler_Handle(t *testing.T) { logStore: logStore, } + outbound.SetTestDenyList() + t.Cleanup(outbound.ResetDenyList) + err := h.Handle(ctx, logger, job) assert.ErrorIs(t, err, want) mockassert.CalledN(t, store.ListFunc, 1) mockassert.CalledN(t, logStore.CreateFunc, 1) }) + } type badTransport struct { diff --git a/internal/authz/providers/BUILD.bazel b/internal/authz/providers/BUILD.bazel index ba16261bbfda1..d866e38bb8162 100644 --- a/internal/authz/providers/BUILD.bazel +++ b/internal/authz/providers/BUILD.bazel @@ -19,6 +19,7 @@ go_library( "//internal/conf/conftypes", "//internal/database", "//internal/extsvc", + "//internal/httpcli", "//internal/licensing", "//internal/types", "//lib/errors", diff --git a/internal/authz/providers/authz.go b/internal/authz/providers/authz.go index 4873fa5ce53a7..f0a64f6b377ed 100644 --- a/internal/authz/providers/authz.go +++ b/internal/authz/providers/authz.go @@ -19,6 +19,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/conf/conftypes" "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/extsvc" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/licensing" "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/lib/errors" @@ -166,7 +167,7 @@ func ProvidersFromConfig( initResult.Append(perforce.NewAuthzProviders(perforceConns)) initResult.Append(bitbucketcloud.NewAuthzProviders(db, bitbucketCloudConns, cfg.SiteConfig().AuthProviders)) initResult.Append(gerrit.NewAuthzProviders(gerritConns, cfg.SiteConfig().AuthProviders)) - initResult.Append(azuredevops.NewAuthzProviders(db, azuredevopsConns)) + initResult.Append(azuredevops.NewAuthzProviders(db, azuredevopsConns, httpcli.ExternalClient)) return allowAccessByDefault, initResult.Providers, initResult.Problems, initResult.Warnings, initResult.InvalidConnections } diff --git a/internal/authz/providers/azuredevops/BUILD.bazel b/internal/authz/providers/azuredevops/BUILD.bazel index e21819ac0297e..ee75c1628bc90 100644 --- a/internal/authz/providers/azuredevops/BUILD.bazel +++ b/internal/authz/providers/azuredevops/BUILD.bazel @@ -35,6 +35,7 @@ go_test( "//internal/database/dbmocks", "//internal/extsvc", "//internal/extsvc/azuredevops", + "//internal/httpcli", "//internal/licensing", "//internal/ratelimit", "//internal/rcache", diff --git a/internal/authz/providers/azuredevops/provider.go b/internal/authz/providers/azuredevops/provider.go index baaa87447c0c4..5102b74807466 100644 --- a/internal/authz/providers/azuredevops/provider.go +++ b/internal/authz/providers/azuredevops/provider.go @@ -9,6 +9,7 @@ import ( "time" "github.com/sourcegraph/log" + "github.com/sourcegraph/sourcegraph/internal/authz" authztypes "github.com/sourcegraph/sourcegraph/internal/authz/types" "github.com/sourcegraph/sourcegraph/internal/database" @@ -23,7 +24,7 @@ import ( var mockServerURL string -func NewAuthzProviders(db database.DB, conns []*types.AzureDevOpsConnection) *authztypes.ProviderInitResult { +func NewAuthzProviders(db database.DB, conns []*types.AzureDevOpsConnection, httpClient *http.Client) *authztypes.ProviderInitResult { orgs, projects := map[string]struct{}{}, map[string]struct{}{} authorizedConnections := []*types.AzureDevOpsConnection{} @@ -57,7 +58,7 @@ func NewAuthzProviders(db database.DB, conns []*types.AzureDevOpsConnection) *au return initResults } - p, err := newAuthzProvider(db, authorizedConnections, orgs, projects) + p, err := newAuthzProvider(db, authorizedConnections, orgs, projects, httpClient) if err != nil { initResults.InvalidConnections = append(initResults.InvalidConnections, extsvc.TypeAzureDevOps) initResults.Problems = append(initResults.Problems, err.Error()) @@ -68,7 +69,7 @@ func NewAuthzProviders(db database.DB, conns []*types.AzureDevOpsConnection) *au return initResults } -func newAuthzProvider(db database.DB, conns []*types.AzureDevOpsConnection, orgs, projects map[string]struct{}) (*Provider, error) { +func newAuthzProvider(db database.DB, conns []*types.AzureDevOpsConnection, orgs, projects map[string]struct{}, httpClient *http.Client) (*Provider, error) { if err := licensing.Check(licensing.FeatureACLs); err != nil { return nil, err } @@ -79,12 +80,13 @@ func newAuthzProvider(db database.DB, conns []*types.AzureDevOpsConnection, orgs } return &Provider{ - db: db, - urn: "azuredevops:authzprovider", - conns: conns, - codeHost: extsvc.NewCodeHost(u, extsvc.TypeAzureDevOps), - orgs: orgs, - projects: projects, + db: db, + urn: "azuredevops:authzprovider", + conns: conns, + codeHost: extsvc.NewCodeHost(u, extsvc.TypeAzureDevOps), + orgs: orgs, + projects: projects, + httpClient: httpClient, }, nil } @@ -99,7 +101,8 @@ type Provider struct { // orgs is the set of orgs as configured across all the code host connections. orgs map[string]struct{} // projects is the set of projects as configured across all the code host connections. - projects map[string]struct{} + projects map[string]struct{} + httpClient *http.Client } func (p *Provider) FetchAccount(_ context.Context, _ *types.User, _ []*extsvc.Account, _ []string) (*extsvc.Account, error) { @@ -144,7 +147,7 @@ func (p *Provider) FetchUserPerms(ctx context.Context, account *extsvc.Account, p.ServiceID(), apiURL, oauthToken, - nil, + p.httpClient, ) if err != nil { return nil, errors.Wrapf( @@ -291,7 +294,7 @@ func (p *Provider) ValidateConnection(ctx context.Context) error { Username: conn.Username, Password: conn.Token, }, - nil, + p.httpClient, ) if err != nil { allErrors = append(allErrors, fmt.Sprintf("%s:%s", conn.URN, err.Error())) diff --git a/internal/authz/providers/azuredevops/provider_test.go b/internal/authz/providers/azuredevops/provider_test.go index b795d96ffad00..fda0a8b3d14b3 100644 --- a/internal/authz/providers/azuredevops/provider_test.go +++ b/internal/authz/providers/azuredevops/provider_test.go @@ -16,6 +16,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/database/dbmocks" "github.com/sourcegraph/sourcegraph/internal/extsvc" "github.com/sourcegraph/sourcegraph/internal/extsvc/azuredevops" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/licensing" "github.com/sourcegraph/sourcegraph/internal/ratelimit" "github.com/sourcegraph/sourcegraph/internal/rcache" @@ -117,7 +118,7 @@ func TestProvider_NewAuthzProviders(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { licensing.MockCheckFeature = tc.mockCheckFeature - result := NewAuthzProviders(db, tc.connections) + result := NewAuthzProviders(db, tc.connections, httpcli.TestExternalClient) if diff := cmp.Diff(tc.expectedInvalidConnections, result.InvalidConnections); diff != "" { t.Errorf("mismatched InvalidConnections (-want, +got)\n%s", diff) @@ -642,7 +643,7 @@ func TestProvider_FetchUserPerms(t *testing.T) { URN: "", AzureDevOpsConnection: tc.connection, }, - }) + }, httpcli.TestExternalClient) // We don't need to test for the inner type yet. Asserting the length is sufficient. if len(expectedProviders) != len(result.Providers) { @@ -729,7 +730,7 @@ func TestProvider_FetchUserPerms(t *testing.T) { Projects: []string{"solar/system", "milky/way"}, }, }, - }) + }, httpcli.TestExternalClient) if len(result.Providers) == 0 { t.Fatal("No providers found, expected one") @@ -894,7 +895,7 @@ func Test_ValidateConnection(t *testing.T) { Projects: []string{"solar/system", "milky/way"}, }, }, - }) + }, httpcli.TestExternalClient) if len(result.Providers) == 0 { fmt.Println(result) diff --git a/internal/codemonitors/background/BUILD.bazel b/internal/codemonitors/background/BUILD.bazel index 087ae185a8031..ea6ad7d4152a9 100644 --- a/internal/codemonitors/background/BUILD.bazel +++ b/internal/codemonitors/background/BUILD.bazel @@ -67,6 +67,7 @@ go_test( "//internal/conf", "//internal/database", "//internal/database/dbtest", + "//internal/httpcli", "//internal/search/result", "//internal/txemail", "//schema", diff --git a/internal/codemonitors/background/webhook.go b/internal/codemonitors/background/webhook.go index 5358304d0ceff..d5956597864f5 100644 --- a/internal/codemonitors/background/webhook.go +++ b/internal/codemonitors/background/webhook.go @@ -53,7 +53,7 @@ func SendTestWebhook(ctx context.Context, doer httpcli.Doer, description string, MonitorDescription: description, Query: "test query", } - return postWebhook(ctx, httpcli.ExternalDoer, u, generateWebhookPayload(args)) + return postWebhook(ctx, doer, u, generateWebhookPayload(args)) } type webhookPayload struct { diff --git a/internal/codemonitors/background/webhook_test.go b/internal/codemonitors/background/webhook_test.go index ab58c4dd3af7d..2eb0840c73ebd 100644 --- a/internal/codemonitors/background/webhook_test.go +++ b/internal/codemonitors/background/webhook_test.go @@ -12,6 +12,7 @@ import ( "github.com/hexops/autogold/v2" "github.com/stretchr/testify/require" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/search/result" ) @@ -37,8 +38,7 @@ func TestWebhook(t *testing.T) { })) defer s.Close() - client := s.Client() - err := postWebhook(context.Background(), client, s.URL, generateWebhookPayload(action)) + err := postWebhook(context.Background(), s.Client(), s.URL, generateWebhookPayload(action)) require.NoError(t, err) }) @@ -63,8 +63,7 @@ func TestWebhook(t *testing.T) { })) defer s.Close() - client := s.Client() - err := postWebhook(context.Background(), client, s.URL, generateWebhookPayload(action)) + err := postWebhook(context.Background(), s.Client(), s.URL, generateWebhookPayload(action)) require.Error(t, err) }) } @@ -78,7 +77,6 @@ func TestTriggerTestWebhookAction(t *testing.T) { })) defer s.Close() - client := s.Client() - err := SendTestWebhook(context.Background(), client, "My test monitor", s.URL) + err := SendTestWebhook(context.Background(), httpcli.TestExternalDoer, "My test monitor", s.URL) require.NoError(t, err) } diff --git a/internal/extsvc/azuredevops/client_test.go b/internal/extsvc/azuredevops/client_test.go index 814639a442772..05bb5c84c2568 100644 --- a/internal/extsvc/azuredevops/client_test.go +++ b/internal/extsvc/azuredevops/client_test.go @@ -139,7 +139,7 @@ func TestRateLimitRetry(t *testing.T) { MockVisualStudioAppURL = "" }) a := &auth.BasicAuth{Username: "test", Password: "test"} - c, err := NewClient("test", srv.URL, a, nil) + c, err := NewClient("test", srv.URL, a, httpcli.TestExternalDoer) c.(*client).internalRateLimiter = ratelimit.NewInstrumentedLimiter("azuredevops", rate.NewLimiter(100, 10)) require.NoError(t, err) c.SetWaitForRateLimit(tt.waitForRateLimit) diff --git a/internal/extsvc/bitbucketserver/BUILD.bazel b/internal/extsvc/bitbucketserver/BUILD.bazel index 02f9f62cb3597..7337c424077d9 100644 --- a/internal/extsvc/bitbucketserver/BUILD.bazel +++ b/internal/extsvc/bitbucketserver/BUILD.bazel @@ -43,6 +43,7 @@ go_test( embed = [":bitbucketserver"], deps = [ "//internal/extsvc/auth", + "//internal/httpcli", "//internal/ratelimit", "//schema", "@com_github_gomodule_oauth1//oauth", diff --git a/internal/extsvc/bitbucketserver/client_test.go b/internal/extsvc/bitbucketserver/client_test.go index 416c84dabbce2..639061f7be747 100644 --- a/internal/extsvc/bitbucketserver/client_test.go +++ b/internal/extsvc/bitbucketserver/client_test.go @@ -27,6 +27,7 @@ import ( "golang.org/x/time/rate" "github.com/sourcegraph/sourcegraph/internal/extsvc/auth" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/ratelimit" "github.com/sourcegraph/sourcegraph/schema" ) @@ -91,7 +92,7 @@ func TestClientKeepsBaseURLPath(t *testing.T) { srvURL, err := url.JoinPath(srv.URL, "/testpath") require.NoError(t, err) bbConf := &schema.BitbucketServerConnection{Url: srvURL} - client, err := NewClient("test", bbConf, nil) + client, err := NewClient("test", bbConf, httpcli.TestExternalDoer) require.NoError(t, err) client.rateLimit = ratelimit.NewInstrumentedLimiter("bitbucket", rate.NewLimiter(100, 10)) diff --git a/internal/extsvc/gerrit/client_test.go b/internal/extsvc/gerrit/client_test.go index 1312ae3eaeb40..fc62a4169a102 100644 --- a/internal/extsvc/gerrit/client_test.go +++ b/internal/extsvc/gerrit/client_test.go @@ -8,11 +8,12 @@ import ( "net/url" "testing" - "github.com/sourcegraph/sourcegraph/internal/httpcli" - "github.com/sourcegraph/sourcegraph/internal/ratelimit" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "golang.org/x/time/rate" + + "github.com/sourcegraph/sourcegraph/internal/httpcli" + "github.com/sourcegraph/sourcegraph/internal/ratelimit" ) func TestClient_do(t *testing.T) { @@ -29,7 +30,7 @@ func TestClient_do(t *testing.T) { require.NoError(t, err) c := &client{ - httpClient: httpcli.ExternalDoer, + httpClient: httpcli.TestExternalDoer, URL: srvURL, rateLimit: &ratelimit.InstrumentedLimiter{Limiter: rate.NewLimiter(10, 10)}, } diff --git a/internal/extsvc/github/v3_test.go b/internal/extsvc/github/v3_test.go index 912cf9f2bdb25..fe8a89338c95f 100644 --- a/internal/extsvc/github/v3_test.go +++ b/internal/extsvc/github/v3_test.go @@ -1258,7 +1258,7 @@ func TestRateLimitRetry(t *testing.T) { srvURL, err := url.Parse(srv.URL) require.NoError(t, err) - testCase.client = newV3Client(logtest.NoOp(t), "test", srvURL, nil, "", nil) + testCase.client = newV3Client(logtest.NoOp(t), "test", srvURL, nil, "", httpcli.TestExternalDoer) testCase.client.internalRateLimiter = ratelimit.NewInstrumentedLimiter("githubv3", rate.NewLimiter(100, 10)) testCase.client.waitForRateLimit = true diff --git a/internal/extsvc/gitlab/client_test.go b/internal/extsvc/gitlab/client_test.go index 6f0a26cdb4b17..56055482f60c3 100644 --- a/internal/extsvc/gitlab/client_test.go +++ b/internal/extsvc/gitlab/client_test.go @@ -197,7 +197,7 @@ func TestRateLimitRetry(t *testing.T) { srvURL, err := url.Parse(srv.URL) require.NoError(t, err) - provider := NewClientProvider("Test", srvURL, nil) + provider := NewClientProvider("Test", srvURL, httpcli.TestExternalDoer) client := provider.getClient(nil) client.internalRateLimiter = ratelimit.NewInstrumentedLimiter("gitlab", rate.NewLimiter(100, 10)) client.waitForRateLimit = tt.waitForRateLimit diff --git a/internal/extsvc/npm/npm_test.go b/internal/extsvc/npm/npm_test.go index 74a8c652a2b41..58af52e47fec9 100644 --- a/internal/extsvc/npm/npm_test.go +++ b/internal/extsvc/npm/npm_test.go @@ -76,7 +76,7 @@ func TestCredentials(t *testing.T) { defer server.Close() ctx := context.Background() - client, _ := NewHTTPClient("urn", server.URL, credentials, httpcli.ExternalClientFactory) + client, _ := NewHTTPClient("urn", server.URL, credentials, httpcli.TestExternalClientFactory) client.limiter = ratelimit.NewInstrumentedLimiter("npm", rate.NewLimiter(100, 10)) presentDep, err := reposource.ParseNpmVersionedPackage("left-pad@1.3.0") diff --git a/internal/httpcli/BUILD.bazel b/internal/httpcli/BUILD.bazel index b418b5d72b6fb..611fd8ecbc8be 100644 --- a/internal/httpcli/BUILD.bazel +++ b/internal/httpcli/BUILD.bazel @@ -33,6 +33,7 @@ go_library( "@com_github_prometheus_client_golang//prometheus/promauto", "@com_github_puerkitobio_rehttp//:rehttp", "@com_github_sourcegraph_log//:log", + "@io_gitea_code_gitea//modules/hostmatcher", "@io_opentelemetry_go_otel//attribute", ], ) diff --git a/internal/httpcli/client.go b/internal/httpcli/client.go index 104568a53d0d7..1070e860e18ae 100644 --- a/internal/httpcli/client.go +++ b/internal/httpcli/client.go @@ -15,6 +15,7 @@ import ( "sync" "time" + "code.gitea.io/gitea/modules/hostmatcher" "github.com/PuerkitoBio/rehttp" "github.com/gregjones/httpcache" "github.com/prometheus/client_golang/prometheus" @@ -102,7 +103,7 @@ var ExternalClientFactory = NewExternalClientFactory() // UncachedExternalClientFactory is a httpcli.Factory with common options // and middleware pre-set for communicating with external services, but with caching // responses disabled. -var UncachedExternalClientFactory = newExternalClientFactory(false) +var UncachedExternalClientFactory = newExternalClientFactory(false, false) var ( externalTimeout, _ = time.ParseDuration(env.Get("SRC_HTTP_CLI_EXTERNAL_TIMEOUT", "5m", "Timeout for external HTTP requests")) @@ -119,7 +120,7 @@ var ( // use them for one-off requests if possible, and definitely not for larger payloads, // like downloading arbitrarily sized files! func NewExternalClientFactory(middleware ...Middleware) *Factory { - return newExternalClientFactory(true, middleware...) + return newExternalClientFactory(true, false, middleware...) } // NewExternalClientFactory returns a httpcli.Factory with common options @@ -127,7 +128,9 @@ func NewExternalClientFactory(middleware ...Middleware) *Factory { // middleware can also be provided to e.g. enable logging with NewLoggingMiddleware. // If cache is true, responses will be cached in redis for improved rate limiting // and reduced byte transfer sizes. -func newExternalClientFactory(cache bool, middleware ...Middleware) *Factory { +// If testOpt is true, a test-only transport option will be used that does not have +// any IP restrictions for external requests. +func newExternalClientFactory(cache bool, testOpt bool, middleware ...Middleware) *Factory { mw := []Middleware{ ContextErrorMiddleware, HeadersMiddleware("User-Agent", "Sourcegraph-Bot"), @@ -135,12 +138,17 @@ func newExternalClientFactory(cache bool, middleware ...Middleware) *Factory { } mw = append(mw, middleware...) + externalTransportOpt := ExternalTransportOpt + if testOpt { + externalTransportOpt = TestExternalTransportOpt + } + opts := []Opt{ NewTimeoutOpt(externalTimeout), - // ExternalTransportOpt needs to be before TracedTransportOpt and + // externalTransportOpt needs to be before TracedTransportOpt and // NewCachedTransportOpt since it wants to extract a http.Transport, // not a generic http.RoundTripper. - ExternalTransportOpt, + externalTransportOpt, NewErrorResilientTransportOpt( NewRetryPolicy(MaxRetries(externalRetryMaxAttempts), externalRetryAfterMaxDuration), ExpJitterDelayOrRetryAfterDelay(externalRetryDelayBase, externalRetryDelayMax), @@ -170,6 +178,19 @@ var ExternalDoer, _ = ExternalClientFactory.Doer() // This client does not cache responses. To cache responses see ExternalDoer instead. var UncachedExternalDoer, _ = UncachedExternalClientFactory.Doer() +// TestExternalClientFactory is a httpcli.Factory with common options +// and is created for tests where you'd normally use an ExternalClientFactory. +// Must be used in tests only as it doesn't apply any IP restrictions. +var TestExternalClientFactory = newExternalClientFactory(false, true) + +// TestExternalClient is a shared client for external communication. +// It does not apply any IP filering and must only be used in tests. +var TestExternalClient, _ = TestExternalClientFactory.Client() + +// TestExternalDoer is a shared client for testing external communications. +// It does not apply any IP filering and must only be used in tests. +var TestExternalDoer, _ = TestExternalClientFactory.Doer() + // ExternalClient returns a shared client for external communication. This is // a convenience for existing uses of http.DefaultClient. // WARN: This client caches entire responses for etag matching. Do not use it for @@ -373,19 +394,52 @@ func NewLoggingMiddleware(logger log.Logger) Middleware { } } -// // Common Opts -// +var externalDenyList = env.Get("EXTERNAL_DENY_LIST", "", "Deny list for outgoing requests") + +type denyRule struct { + pattern string + builtin string +} + +var defaultDenylist = []denyRule{ + {builtin: "loopback"}, + {pattern: "169.254.169.254"}, +} + +// TestTransportOpt creates a transport for tests that does not apply any denylisting +func TestExternalTransportOpt(cli *http.Client) error { + tr, err := getTransportForMutation(cli) + if err != nil { + return errors.Wrap(err, "httpcli.ExternalTransportOpt") + } + + cli.Transport = &externalTransport{base: tr} + return nil +} // ExternalTransportOpt returns an Opt that ensures the http.Client.Transport // can contact non-Sourcegraph services. For example Admins can configure -// TLS/SSL settings. +// TLS/SSL settings. This adds filtering for external requests based on +// predefined deny lists. Can be extended using the EXTERNAL_DENY_LIST +// environment variable. func ExternalTransportOpt(cli *http.Client) error { tr, err := getTransportForMutation(cli) if err != nil { return errors.Wrap(err, "httpcli.ExternalTransportOpt") } + var denyList = hostmatcher.ParseHostMatchList("EXTERNAL_DENY_LIST", externalDenyList) + for _, rule := range defaultDenylist { + if rule.builtin != "" { + denyList.AppendBuiltin(rule.builtin) + } else if rule.pattern != "" { + denyList.AppendPattern(rule.pattern) + } + } + + // this dialer will match resolved domain names against the deny list + tr.DialContext = hostmatcher.NewDialContext("", nil, denyList) cli.Transport = &externalTransport{base: tr} return nil } diff --git a/internal/repos/bitbucketserver_test.go b/internal/repos/bitbucketserver_test.go index 8b6b0c41eb0d8..4df632b22165d 100644 --- a/internal/repos/bitbucketserver_test.go +++ b/internal/repos/bitbucketserver_test.go @@ -17,6 +17,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/extsvc" "github.com/sourcegraph/sourcegraph/internal/extsvc/auth" "github.com/sourcegraph/sourcegraph/internal/extsvc/bitbucketserver" + "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/ratelimit" "github.com/sourcegraph/sourcegraph/internal/rcache" "github.com/sourcegraph/sourcegraph/internal/testutil" @@ -65,7 +66,7 @@ func TestBitbucketServerSource_MakeRepo(t *testing.T) { // httpcli uses rcache, so we need to prepare the redis connection. rcache.SetupForTest(t) - s, err := newBitbucketServerSource(logtest.Scoped(t), &svc, config, nil) + s, err := newBitbucketServerSource(logtest.Scoped(t), &svc, config, httpcli.TestExternalClientFactory) if err != nil { t.Fatal(err) } @@ -146,7 +147,7 @@ func TestBitbucketServerSource_Exclude(t *testing.T) { // httpcli uses rcache, so we need to prepare the redis connection. rcache.SetupForTest(t) - s, err := newBitbucketServerSource(logtest.Scoped(t), &svc, config, nil) + s, err := newBitbucketServerSource(logtest.Scoped(t), &svc, config, httpcli.TestExternalClientFactory) if err != nil { t.Fatal(err) } @@ -187,7 +188,7 @@ func TestBitbucketServerSource_WithAuthenticator(t *testing.T) { }) ctx := context.Background() - bbsSrc, err := NewBitbucketServerSource(ctx, logtest.Scoped(t), svc, nil) + bbsSrc, err := NewBitbucketServerSource(ctx, logtest.Scoped(t), svc, httpcli.TestExternalClientFactory) if err != nil { t.Fatal(err) } @@ -261,7 +262,7 @@ func TestBitbucketServerSource_ListByReposOnly(t *testing.T) { // httpcli uses rcache, so we need to prepare the redis connection. rcache.SetupForTest(t) - s, err := newBitbucketServerSource(logtest.Scoped(t), &svc, config, nil) + s, err := newBitbucketServerSource(logtest.Scoped(t), &svc, config, httpcli.TestExternalClientFactory) if err != nil { t.Fatal(err) } @@ -368,7 +369,7 @@ func TestBitbucketServerSource_ListByRepositoryQuery(t *testing.T) { // httpcli uses rcache, so we need to prepare the redis connection. rcache.SetupForTest(t) - s, err := newBitbucketServerSource(logtest.Scoped(t), &svc, config, nil) + s, err := newBitbucketServerSource(logtest.Scoped(t), &svc, config, httpcli.TestExternalClientFactory) if err != nil { t.Fatal(err) } @@ -434,7 +435,7 @@ func TestBitbucketServerSource_ListByProjectKeyMock(t *testing.T) { // httpcli uses rcache, so we need to prepare the redis connection. rcache.SetupForTest(t) - s, err := newBitbucketServerSource(logtest.Scoped(t), &svc, config, nil) + s, err := newBitbucketServerSource(logtest.Scoped(t), &svc, config, httpcli.TestExternalClientFactory) if err != nil { t.Fatal(err) } @@ -468,7 +469,7 @@ func TestBitbucketServerSource_ListByProjectKeyAuthentic(t *testing.T) { // httpcli uses rcache, so we need to prepare the redis connection. rcache.SetupForTest(t) - s, err := newBitbucketServerSource(logtest.Scoped(t), &svc, config, nil) + s, err := newBitbucketServerSource(logtest.Scoped(t), &svc, config, httpcli.TestExternalClientFactory) if err != nil { t.Fatal(err) } diff --git a/internal/repos/github_test.go b/internal/repos/github_test.go index 504a9736c0bbe..cca2679d5846b 100644 --- a/internal/repos/github_test.go +++ b/internal/repos/github_test.go @@ -603,7 +603,7 @@ func TestGitHubSource_doRecursively(t *testing.T) { apiURL, err := url.Parse(srv.URL) require.NoError(t, err) - ghCli := github.NewV4Client("", apiURL, nil, nil) + ghCli := github.NewV4Client("", apiURL, nil, httpcli.TestExternalDoer) q := newRepositoryQuery("stars:>=5", ghCli, logtest.NoOp(t)) q.Limit = 5 diff --git a/internal/repos/other_test.go b/internal/repos/other_test.go index 50d25828473b2..5df838ad69030 100644 --- a/internal/repos/other_test.go +++ b/internal/repos/other_test.go @@ -15,6 +15,7 @@ import ( "github.com/stretchr/testify/require" "github.com/sourcegraph/log/logtest" + "github.com/sourcegraph/sourcegraph/cmd/frontend/envvar" "github.com/sourcegraph/sourcegraph/internal/api" "github.com/sourcegraph/sourcegraph/internal/extsvc" @@ -158,7 +159,7 @@ func TestSrcExpose_SrcExposeServer(t *testing.T) { ID: 1, Kind: extsvc.KindOther, Config: extsvc.NewUnencryptedConfig(fmt.Sprintf(`{"url": %q, "repos": ["%s"]}`, s.URL, "src-expose")), - }, nil, nil) + }, httpcli.TestExternalClientFactory, nil) if err != nil { t.Fatal(err) } @@ -333,7 +334,7 @@ func TestSrcExpose_SrcServeLocalServer(t *testing.T) { ID: 1, Kind: extsvc.KindOther, Config: extsvc.NewUnencryptedConfig(string(config)), - }, nil, nil) + }, httpcli.TestExternalClientFactory, nil) if err != nil { t.Fatal(err) } diff --git a/internal/webhooks/outbound/BUILD.bazel b/internal/webhooks/outbound/BUILD.bazel index edf00af8ab84e..1dabb7b88f968 100644 --- a/internal/webhooks/outbound/BUILD.bazel +++ b/internal/webhooks/outbound/BUILD.bazel @@ -15,7 +15,6 @@ go_library( "//internal/encryption", "//internal/encryption/keyring", "//lib/errors", - "@com_github_grafana_regexp//:regexp", "@io_gitea_code_gitea//modules/hostmatcher", ], ) diff --git a/internal/webhooks/outbound/outbound.go b/internal/webhooks/outbound/outbound.go index 597f381881166..a8611af3d17d2 100644 --- a/internal/webhooks/outbound/outbound.go +++ b/internal/webhooks/outbound/outbound.go @@ -6,8 +6,6 @@ import ( "net/url" "strings" - "github.com/grafana/regexp" - "code.gitea.io/gitea/modules/hostmatcher" "github.com/sourcegraph/sourcegraph/internal/database" @@ -55,63 +53,111 @@ func (s *outboundWebhookService) Enqueue( return nil } -// Based on https://www.ietf.org/archive/id/draft-chapin-rfc2606bis-00.html -const reservedTLDs = "localhost|local|test|example|invalid|localdomain|domain|lan|home|host|corp" - -// CheckAddress validates the intended destination address for a webhook, checking that -// it's not invalid, local, a bad IP, or anything else. -func CheckAddress(address string) error { - // Try to interpret address as a URL, as an IP with a port, or as an IP without a port. - u, uErr := url.Parse(address) - // If it's an IP with a port, ipStr will contain the IP address without the port. If - // it doesn't have a port, the function will error and ipStr will be an empty string. - // We'll also try to parse it from the full address for that case. - ipStr, _, _ := net.SplitHostPort(address) - ip1 := net.ParseIP(ipStr) - ip2 := net.ParseIP(address) - - if ip1 != nil || ip2 != nil { - // Address is likely an IP address - var ip net.IP - if ip1 != nil { - ip = ip1 +var errIllegalAddr = errors.New("Address must not be private, link-local or loopback") + +type DNSResolver interface { + LookupHost(hostname string) ([]string, error) +} + +type resolver struct{} + +func (r *resolver) LookupHost(hostname string) ([]string, error) { + return net.LookupHost(hostname) +} + +type mockResolver struct{} + +func (m *mockResolver) LookupHost(hostname string) ([]string, error) { + switch hostname { + case "sourcegraph.local": + return []string{"127.0.0.1"}, nil + case "localhost": + return []string{"127.0.0.1"}, nil + case "sourcegraph.com": + return []string{"1.2.3.4"}, nil + default: + return []string{}, errors.Newf("no such host: %s", hostname) + } +} + +var defaultResolver DNSResolver = &resolver{} + +type denyRule struct { + pattern string + builtin string +} + +var defaultDenylist = []denyRule{ + {builtin: "loopback"}, + {pattern: "169.254.169.254"}, +} + +var old []denyRule + +func SetTestDenyList() { + old = defaultDenylist + defaultDenylist = []denyRule{ + {pattern: "169.254.169.254"}, + } +} + +func ResetDenyList() { + defaultDenylist = old +} + +// CheckURL validates the intended destination URL for a webhook, ensuring that +// the hostname is not invalid, a bad IP, or anything else. +func CheckURL(dest string) error { + u, uErr := url.Parse(dest) + if uErr != nil { + return errors.Newf("Could not parse provided URL %s", dest) + } + + if !strings.HasPrefix(u.Scheme, "http") || u.Host == "" { + return errors.Newf("Unsupported URL provided %s", dest) + } + + // This will validate if the IP address is external. Private, loopback and other + // non-external IP addresses are not allowed. + hostAllowList := hostmatcher.ParseHostMatchList("", "") + for _, denyRule := range defaultDenylist { + if denyRule.builtin != "" { + hostAllowList.AppendBuiltin(denyRule.builtin) } else { - ip = ip2 + hostAllowList.AppendPattern(denyRule.pattern) } + } - if ip.To4() == nil && ip.To16() == nil { - return errors.New("Not a valid IPv4 or IPv6 address") - } + var addrs []string + var err error - // This will match any valid non-private unicast IP, aka any public host. It will filter out: - // - Unspecified (zero'd) IP addresses - // - Link-local addresses - // - Loopback (localhost) addresses - hostAllowList := hostmatcher.ParseHostMatchList("", hostmatcher.MatchBuiltinExternal) + ip := net.ParseIP(u.Hostname()) - if !hostAllowList.MatchIPAddr(ip) { - return errors.New("Must not be unspecified, private, link-local, or loopback address") + if ip != nil { + if isIllegalIP(ip, hostAllowList) { + return errIllegalAddr } - return nil - } else if uErr != nil { - return errors.New("Could not parse address") - } else { - // Address is likely a URL - if u.Scheme != "http" && u.Scheme != "https" { - return errors.New("Must use http or https scheme") - } + } - if u.Hostname() == "" || u.Hostname() == "localhost" { - return errors.New("Must not be localhost") - } + // we have to deal with a hostname + addrs, err = defaultResolver.LookupHost(u.Hostname()) + if err != nil || len(addrs) == 0 { + return errors.New("Could not resolve hostname") + } - parts := strings.Split(u.Hostname(), ".") - tld := strings.ToLower(parts[len(parts)-1]) - if match, _ := regexp.MatchString(reservedTLDs, tld); match { - return errors.New("Must not be a reserved TLD") + for _, addr := range addrs { + if ip := net.ParseIP(addr); ip != nil { + if isIllegalIP(ip, hostAllowList) { + return errIllegalAddr + } } - - return nil } + + return nil +} + +func isIllegalIP(ip net.IP, hostAllowList *hostmatcher.HostMatchList) bool { + // if we do not match the IP address, it's not in the allow list + return hostAllowList.MatchIPAddr(ip) } diff --git a/internal/webhooks/outbound/outbound_test.go b/internal/webhooks/outbound/outbound_test.go index 8aecd0097dbfb..bd9dd1158f280 100644 --- a/internal/webhooks/outbound/outbound_test.go +++ b/internal/webhooks/outbound/outbound_test.go @@ -40,6 +40,8 @@ func TestEnqueueWebhook(t *testing.T) { } func TestCheckAddress(t *testing.T) { + defaultResolver = &mockResolver{} + t.Run("Invalid Addresses", func(t *testing.T) { badURLS := []string{ // No scheme @@ -54,7 +56,7 @@ func TestCheckAddress(t *testing.T) { "http://localhost:3000", "127.0.0.1", "::1", - // Unspecificed IP + // Unspecified IP string(net.IPv4zero), string(net.IPv6zero), // Private IP @@ -62,14 +64,15 @@ func TestCheckAddress(t *testing.T) { "192.168.255.255", "fd00::1", // Link-local IP - "169.254.0.0", - // Reserved TLD - "http://somesite.local/some-endpoint", - "https://somesite.test/some-endpoint", + "169.254.169.254", + // Resolves to localhost + "https://sourcegraph.local", + // Invalid domain + "https://invalid.domain", } for _, badURL := range badURLS { - err := CheckAddress(badURL) + err := CheckURL(badURL) if !assert.Error(t, err) { t.Fatalf("expected error, got nil for url '%v'", badURL) } @@ -78,17 +81,15 @@ func TestCheckAddress(t *testing.T) { t.Run("Valid Addresses", func(t *testing.T) { goodURLS := []string{ - "http://somesite.com/some-endpoint", - "https://my.webhooks.site/receiver", - "https://my.webhooks.site:3000/receiver", - "1.2.3.4", - "1.2.3.4:2000", - "2001:0db8:0000:0000:0000:8a2e:0370:7334", - "2001:db8::8a2e:370:7334", + "https://sourcegraph.com", + "https://1.2.3.4", + "https://1.2.3.4:2000", + "https://[2001:0db8:0000:0000:0000:8a2e:0370:7334]", + "http://[2001:db8::8a2e:370:7334]", } for _, goodURL := range goodURLS { - err := CheckAddress(goodURL) + err := CheckURL(goodURL) if err != nil { t.Fatalf("expected nil, got err for url '%v': %v", goodURL, err) } From 1c1691ec9b2a183f00756f2c6800a903e44aa667 Mon Sep 17 00:00:00 2001 From: Thorsten Ball <mrnugget@gmail.com> Date: Thu, 23 Nov 2023 15:36:58 +0100 Subject: [PATCH 135/222] database: make gitserver_repos_statistics append-only (#58496) This removes contention around the single table. If you have a small number of shards and lots of repositories that are cloned/recloned, they all try to write to the same table concurrently. What this does here is it changes the `gitserver_repos_statistics` table to work like `repo_statistics`. Co-authored-by: Erik Seliger <erikseliger@me.com> --- .../internal/repostatistics/BUILD.bazel | 1 + .../internal/repostatistics/compactor.go | 11 +- dev/backcompat/flakes.json | 25 +++ internal/database/dbmocks/mocks_temp.go | 123 +++++++++++ internal/database/repo_statistics.go | 43 +++- internal/database/repo_statistics_test.go | 89 ++++++++ internal/database/schema.json | 20 +- internal/database/schema.md | 4 +- .../down.sql | 206 ++++++++++++++++++ .../metadata.yaml | 2 + .../up.sql | 188 ++++++++++++++++ migrations/frontend/squashed.sql | 115 ++++------ 12 files changed, 739 insertions(+), 88 deletions(-) create mode 100644 migrations/frontend/1700645180_turn_gitserver_repos_statistics_into_append_only/down.sql create mode 100644 migrations/frontend/1700645180_turn_gitserver_repos_statistics_into_append_only/metadata.yaml create mode 100644 migrations/frontend/1700645180_turn_gitserver_repos_statistics_into_append_only/up.sql diff --git a/cmd/worker/internal/repostatistics/BUILD.bazel b/cmd/worker/internal/repostatistics/BUILD.bazel index 5d7aae4a5c52e..9dafffe9cba8c 100644 --- a/cmd/worker/internal/repostatistics/BUILD.bazel +++ b/cmd/worker/internal/repostatistics/BUILD.bazel @@ -12,6 +12,7 @@ go_library( "//internal/env", "//internal/goroutine", "//internal/observation", + "//lib/errors", "@com_github_sourcegraph_log//:log", ], ) diff --git a/cmd/worker/internal/repostatistics/compactor.go b/cmd/worker/internal/repostatistics/compactor.go index 0890dc111827f..0b2689537c2dd 100644 --- a/cmd/worker/internal/repostatistics/compactor.go +++ b/cmd/worker/internal/repostatistics/compactor.go @@ -12,6 +12,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/env" "github.com/sourcegraph/sourcegraph/internal/goroutine" "github.com/sourcegraph/sourcegraph/internal/observation" + "github.com/sourcegraph/sourcegraph/lib/errors" ) // compactor is a worker responsible for compacting rows in the repo_statistics table. @@ -60,7 +61,15 @@ var ( ) func (h *handler) Handle(ctx context.Context) error { - return h.store.CompactRepoStatistics(ctx) + var errs error + if err := h.store.CompactRepoStatistics(ctx); err != nil { + errs = errors.Append(errs, errors.Wrap(err, "error compacting repo statistics")) + } + + if err := h.store.CompactGitserverReposStatistics(ctx); err != nil { + errs = errors.Append(errs, errors.Wrap(err, "error compacting gitserver repos statistics")) + } + return errs } func (h *handler) HandleError(err error) { diff --git a/dev/backcompat/flakes.json b/dev/backcompat/flakes.json index 8cccac3c0df6e..801b956609133 100644 --- a/dev/backcompat/flakes.json +++ b/dev/backcompat/flakes.json @@ -26,6 +26,31 @@ "path": "internal/database", "prefix": "TestUserCredentials_CreateUpdate", "reason": "Update to crypto internals affects ability to compare authenticators" + }, + { + "path": "internal/database", + "prefix": "TestRepoStatistics", + "reason": "Updates the gitserver_repos_statistics table to different format that doesn't work with old query anymore" + }, + { + "path": "internal/database", + "prefix": "TestRepoStatistics_RecloneAndCorruption", + "reason": "Updates the gitserver_repos_statistics table to different format that doesn't work with old query anymore" + }, + { + "path": "internal/database", + "prefix": "TestRepoStatistics_DeleteAndUndelete", + "reason": "Updates the gitserver_repos_statistics table to different format that doesn't work with old query anymore" + }, + { + "path": "internal/database", + "prefix": "TestRepoStatistics_AvoidZeros", + "reason": "Updates the gitserver_repos_statistics table to different format that doesn't work with old query anymore" + }, + { + "path": "internal/database", + "prefix": "TestRepoStatistics_Compaction", + "reason": "Updates the gitserver_repos_statistics table to different format that doesn't work with old query anymore" } ] } diff --git a/internal/database/dbmocks/mocks_temp.go b/internal/database/dbmocks/mocks_temp.go index 5966c68f679e9..3b9f719a421e2 100644 --- a/internal/database/dbmocks/mocks_temp.go +++ b/internal/database/dbmocks/mocks_temp.go @@ -59402,6 +59402,10 @@ func (c RepoPathStoreUpdateFileCountsFuncCall) Results() []interface{} { // github.com/sourcegraph/sourcegraph/internal/database) used for unit // testing. type MockRepoStatisticsStore struct { + // CompactGitserverReposStatisticsFunc is an instance of a mock function + // object controlling the behavior of the method + // CompactGitserverReposStatistics. + CompactGitserverReposStatisticsFunc *RepoStatisticsStoreCompactGitserverReposStatisticsFunc // CompactRepoStatisticsFunc is an instance of a mock function object // controlling the behavior of the method CompactRepoStatistics. CompactRepoStatisticsFunc *RepoStatisticsStoreCompactRepoStatisticsFunc @@ -59428,6 +59432,11 @@ type MockRepoStatisticsStore struct { // overwritten. func NewMockRepoStatisticsStore() *MockRepoStatisticsStore { return &MockRepoStatisticsStore{ + CompactGitserverReposStatisticsFunc: &RepoStatisticsStoreCompactGitserverReposStatisticsFunc{ + defaultHook: func(context.Context) (r0 error) { + return + }, + }, CompactRepoStatisticsFunc: &RepoStatisticsStoreCompactRepoStatisticsFunc{ defaultHook: func(context.Context) (r0 error) { return @@ -59466,6 +59475,11 @@ func NewMockRepoStatisticsStore() *MockRepoStatisticsStore { // overwritten. func NewStrictMockRepoStatisticsStore() *MockRepoStatisticsStore { return &MockRepoStatisticsStore{ + CompactGitserverReposStatisticsFunc: &RepoStatisticsStoreCompactGitserverReposStatisticsFunc{ + defaultHook: func(context.Context) error { + panic("unexpected invocation of MockRepoStatisticsStore.CompactGitserverReposStatistics") + }, + }, CompactRepoStatisticsFunc: &RepoStatisticsStoreCompactRepoStatisticsFunc{ defaultHook: func(context.Context) error { panic("unexpected invocation of MockRepoStatisticsStore.CompactRepoStatistics") @@ -59504,6 +59518,9 @@ func NewStrictMockRepoStatisticsStore() *MockRepoStatisticsStore { // implementation, unless overwritten. func NewMockRepoStatisticsStoreFrom(i database.RepoStatisticsStore) *MockRepoStatisticsStore { return &MockRepoStatisticsStore{ + CompactGitserverReposStatisticsFunc: &RepoStatisticsStoreCompactGitserverReposStatisticsFunc{ + defaultHook: i.CompactGitserverReposStatistics, + }, CompactRepoStatisticsFunc: &RepoStatisticsStoreCompactRepoStatisticsFunc{ defaultHook: i.CompactRepoStatistics, }, @@ -59525,6 +59542,112 @@ func NewMockRepoStatisticsStoreFrom(i database.RepoStatisticsStore) *MockRepoSta } } +// RepoStatisticsStoreCompactGitserverReposStatisticsFunc describes the +// behavior when the CompactGitserverReposStatistics method of the parent +// MockRepoStatisticsStore instance is invoked. +type RepoStatisticsStoreCompactGitserverReposStatisticsFunc struct { + defaultHook func(context.Context) error + hooks []func(context.Context) error + history []RepoStatisticsStoreCompactGitserverReposStatisticsFuncCall + mutex sync.Mutex +} + +// CompactGitserverReposStatistics delegates to the next hook function in +// the queue and stores the parameter and result values of this invocation. +func (m *MockRepoStatisticsStore) CompactGitserverReposStatistics(v0 context.Context) error { + r0 := m.CompactGitserverReposStatisticsFunc.nextHook()(v0) + m.CompactGitserverReposStatisticsFunc.appendCall(RepoStatisticsStoreCompactGitserverReposStatisticsFuncCall{v0, r0}) + return r0 +} + +// SetDefaultHook sets function that is called when the +// CompactGitserverReposStatistics method of the parent +// MockRepoStatisticsStore instance is invoked and the hook queue is empty. +func (f *RepoStatisticsStoreCompactGitserverReposStatisticsFunc) SetDefaultHook(hook func(context.Context) error) { + f.defaultHook = hook +} + +// PushHook adds a function to the end of hook queue. Each invocation of the +// CompactGitserverReposStatistics method of the parent +// MockRepoStatisticsStore instance invokes the hook at the front of the +// queue and discards it. After the queue is empty, the default hook +// function is invoked for any future action. +func (f *RepoStatisticsStoreCompactGitserverReposStatisticsFunc) PushHook(hook func(context.Context) error) { + f.mutex.Lock() + f.hooks = append(f.hooks, hook) + f.mutex.Unlock() +} + +// SetDefaultReturn calls SetDefaultHook with a function that returns the +// given values. +func (f *RepoStatisticsStoreCompactGitserverReposStatisticsFunc) SetDefaultReturn(r0 error) { + f.SetDefaultHook(func(context.Context) error { + return r0 + }) +} + +// PushReturn calls PushHook with a function that returns the given values. +func (f *RepoStatisticsStoreCompactGitserverReposStatisticsFunc) PushReturn(r0 error) { + f.PushHook(func(context.Context) error { + return r0 + }) +} + +func (f *RepoStatisticsStoreCompactGitserverReposStatisticsFunc) nextHook() func(context.Context) error { + f.mutex.Lock() + defer f.mutex.Unlock() + + if len(f.hooks) == 0 { + return f.defaultHook + } + + hook := f.hooks[0] + f.hooks = f.hooks[1:] + return hook +} + +func (f *RepoStatisticsStoreCompactGitserverReposStatisticsFunc) appendCall(r0 RepoStatisticsStoreCompactGitserverReposStatisticsFuncCall) { + f.mutex.Lock() + f.history = append(f.history, r0) + f.mutex.Unlock() +} + +// History returns a sequence of +// RepoStatisticsStoreCompactGitserverReposStatisticsFuncCall objects +// describing the invocations of this function. +func (f *RepoStatisticsStoreCompactGitserverReposStatisticsFunc) History() []RepoStatisticsStoreCompactGitserverReposStatisticsFuncCall { + f.mutex.Lock() + history := make([]RepoStatisticsStoreCompactGitserverReposStatisticsFuncCall, len(f.history)) + copy(history, f.history) + f.mutex.Unlock() + + return history +} + +// RepoStatisticsStoreCompactGitserverReposStatisticsFuncCall is an object +// that describes an invocation of method CompactGitserverReposStatistics on +// an instance of MockRepoStatisticsStore. +type RepoStatisticsStoreCompactGitserverReposStatisticsFuncCall struct { + // Arg0 is the value of the 1st argument passed to this method + // invocation. + Arg0 context.Context + // Result0 is the value of the 1st result returned from this method + // invocation. + Result0 error +} + +// Args returns an interface slice containing the arguments of this +// invocation. +func (c RepoStatisticsStoreCompactGitserverReposStatisticsFuncCall) Args() []interface{} { + return []interface{}{c.Arg0} +} + +// Results returns an interface slice containing the results of this +// invocation. +func (c RepoStatisticsStoreCompactGitserverReposStatisticsFuncCall) Results() []interface{} { + return []interface{}{c.Result0} +} + // RepoStatisticsStoreCompactRepoStatisticsFunc describes the behavior when // the CompactRepoStatistics method of the parent MockRepoStatisticsStore // instance is invoked. diff --git a/internal/database/repo_statistics.go b/internal/database/repo_statistics.go index 6a76c1e7c1f5b..bb4a0e8e96598 100644 --- a/internal/database/repo_statistics.go +++ b/internal/database/repo_statistics.go @@ -42,6 +42,7 @@ type RepoStatisticsStore interface { GetRepoStatistics(ctx context.Context) (RepoStatistics, error) CompactRepoStatistics(ctx context.Context) error GetGitserverReposStatistics(ctx context.Context) ([]GitserverReposStatistic, error) + CompactGitserverReposStatistics(ctx context.Context) error } // repoStatisticsStore is responsible for data stored in the repo_statistics @@ -116,6 +117,35 @@ SELECT FROM deleted; ` +func (s *repoStatisticsStore) CompactGitserverReposStatistics(ctx context.Context) error { + return s.Exec(ctx, sqlf.Sprintf(compactGitserverReposStatisticsQueryFmtstr)) +} + +const compactGitserverReposStatisticsQueryFmtstr = ` +WITH deleted AS ( + DELETE FROM gitserver_repos_statistics + RETURNING + shard_id, + total, + not_cloned, + cloning, + cloned, + failed_fetch, + corrupted +) +INSERT INTO gitserver_repos_statistics (shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted) +SELECT + shard_id, + SUM(total), + SUM(not_cloned), + SUM(cloning), + SUM(cloned), + SUM(failed_fetch), + SUM(corrupted) +FROM deleted +GROUP BY shard_id +` + func (s *repoStatisticsStore) GetGitserverReposStatistics(ctx context.Context) ([]GitserverReposStatistic, error) { rows, err := s.Query(ctx, sqlf.Sprintf(getGitserverReposStatisticsQueryFmtStr)) return scanGitserverReposStatistics(rows, err) @@ -124,13 +154,14 @@ func (s *repoStatisticsStore) GetGitserverReposStatistics(ctx context.Context) ( const getGitserverReposStatisticsQueryFmtStr = ` SELECT shard_id, - total, - not_cloned, - cloning, - cloned, - failed_fetch, - corrupted + SUM(total) AS total, + SUM(not_cloned) AS not_cloned, + SUM(cloning) AS cloning, + SUM(cloned) AS cloned, + SUM(failed_fetch) AS failed_fetch, + SUM(corrupted) AS corrupted FROM gitserver_repos_statistics +GROUP BY shard_id ` var scanGitserverReposStatistics = basestore.NewSliceScanner(scanGitserverReposStatistic) diff --git a/internal/database/repo_statistics_test.go b/internal/database/repo_statistics_test.go index 46d4e8ed2ed92..707c5b7e2c95e 100644 --- a/internal/database/repo_statistics_test.go +++ b/internal/database/repo_statistics_test.go @@ -486,6 +486,86 @@ func TestRepoStatistics_Compaction(t *testing.T) { } } +func TestGitserverReposStatistics_Compaction(t *testing.T) { + if testing.Short() { + t.Skip() + } + + logger := logtest.Scoped(t) + db := NewDB(logger, dbtest.NewDB(t)) + ctx := context.Background() + s := &repoStatisticsStore{Store: basestore.NewWithHandle(db.Handle())} + + shards := []string{ + "shard-1", + "shard-2", + "shard-3", + } + repos := types.Repos{ + &types.Repo{Name: "repo1"}, + &types.Repo{Name: "repo2"}, + &types.Repo{Name: "repo3"}, + &types.Repo{Name: "repo4"}, + &types.Repo{Name: "repo5"}, + &types.Repo{Name: "repo6"}, + } + + // Trigger 21 insertions into gitserver_repos_statistics table: + // 6 repos added: 6 rows + createTestRepos(ctx, t, db, repos) + // 6 clone status changes and shard assignments: 12 rows + setCloneStatus(t, db, repos[0].Name, shards[0], types.CloneStatusCloning) + setCloneStatus(t, db, repos[1].Name, shards[0], types.CloneStatusCloning) + setCloneStatus(t, db, repos[2].Name, shards[1], types.CloneStatusCloning) + setCloneStatus(t, db, repos[3].Name, shards[1], types.CloneStatusCloning) + setCloneStatus(t, db, repos[4].Name, shards[2], types.CloneStatusCloning) + setCloneStatus(t, db, repos[5].Name, shards[2], types.CloneStatusCloning) + // 2 errors: 2 rows + setLastError(t, db, repos[0].Name, shards[0], "internet broke repo-1") + setLastError(t, db, repos[4].Name, shards[2], "internet broke repo-5") + // 1 corruption: 1 row + logCorruption(t, db, repos[2].Name, shards[1], "runaway corruption repo-3") + + // Safety check that the counts are right: + wantRepoStatistics := RepoStatistics{Total: 6, Cloning: 6, FailedFetch: 2, Corrupted: 1} + wantGitserverReposStatistics := []GitserverReposStatistic{ + {ShardID: ""}, + {ShardID: shards[0], Total: 2, Cloning: 2, FailedFetch: 1}, + {ShardID: shards[1], Total: 2, Cloning: 2, FailedFetch: 0, Corrupted: 1}, + {ShardID: shards[2], Total: 2, Cloning: 2, FailedFetch: 1}, + } + assertRepoStatistics(t, ctx, s, wantRepoStatistics, wantGitserverReposStatistics) + + wantCount := 21 + count := queryGitserverReposStatisticsCount(t, ctx, s) + if count != wantCount { + t.Fatalf("wrong statistics count. have=%d, want=%d", count, wantCount) + } + + // Now we compact the rows into a single row: + if err := s.CompactGitserverReposStatistics(ctx); err != nil { + t.Fatalf("GetRepoStatistics failed: %s", err) + } + + // We should be left with 4 rows: one for each shard, plus empty shard + wantCount = 4 + count = queryGitserverReposStatisticsCount(t, ctx, s) + if count != wantCount { + t.Fatalf("wrong statistics count. have=%d, want=%d", count, wantCount) + } + + // And counts should still be the same + assertRepoStatistics(t, ctx, s, wantRepoStatistics, wantGitserverReposStatistics) + + // Safety check: add another event and make sure row count goes up again + setCloneStatus(t, db, repos[5].Name, shards[2], types.CloneStatusCloned) + wantCount = 5 + count = queryGitserverReposStatisticsCount(t, ctx, s) + if count != wantCount { + t.Fatalf("wrong statistics count. have=%d, want=%d", count, wantCount) + } +} + func queryRepoName(t *testing.T, ctx context.Context, s *repoStatisticsStore, repoID api.RepoID) api.RepoName { t.Helper() var name api.RepoName @@ -506,6 +586,15 @@ func queryRepoStatisticsCount(t *testing.T, ctx context.Context, s *repoStatisti return count } +func queryGitserverReposStatisticsCount(t *testing.T, ctx context.Context, s *repoStatisticsStore) int { + t.Helper() + count, err := basestore.ScanInt(s.QueryRow(ctx, sqlf.Sprintf("SELECT COUNT(*) FROM gitserver_repos_statistics;"))) + if err != nil { + t.Fatalf("failed to query gitserver_repos_statistics count: %s", err) + } + return count +} + func setCloneStatus(t *testing.T, db DB, repoName api.RepoName, shard string, status types.CloneStatus) { t.Helper() if err := db.GitserverRepos().SetCloneStatus(context.Background(), repoName, status, shard); err != nil { diff --git a/internal/database/schema.json b/internal/database/schema.json index 4ad6fdada6024..21fb4a3f37b2e 100644 --- a/internal/database/schema.json +++ b/internal/database/schema.json @@ -148,15 +148,15 @@ }, { "Name": "recalc_gitserver_repos_statistics_on_delete", - "Definition": "CREATE OR REPLACE FUNCTION public.recalc_gitserver_repos_statistics_on_delete()\n RETURNS trigger\n LANGUAGE plpgsql\nAS $function$ BEGIN\n UPDATE gitserver_repos_statistics grs\n SET\n total = grs.total - (SELECT COUNT(*) FROM oldtab WHERE oldtab.shard_id = grs.shard_id),\n not_cloned = grs.not_cloned - (SELECT COUNT(*) FILTER(WHERE clone_status = 'not_cloned') FROM oldtab WHERE oldtab.shard_id = grs.shard_id),\n cloning = grs.cloning - (SELECT COUNT(*) FILTER(WHERE clone_status = 'cloning') FROM oldtab WHERE oldtab.shard_id = grs.shard_id),\n cloned = grs.cloned - (SELECT COUNT(*) FILTER(WHERE clone_status = 'cloned') FROM oldtab WHERE oldtab.shard_id = grs.shard_id),\n failed_fetch = grs.cloned - (SELECT COUNT(*) FILTER(WHERE last_error IS NOT NULL) FROM oldtab WHERE oldtab.shard_id = grs.shard_id)\n ;\n\n RETURN NULL;\n END\n$function$\n" + "Definition": "CREATE OR REPLACE FUNCTION public.recalc_gitserver_repos_statistics_on_delete()\n RETURNS trigger\n LANGUAGE plpgsql\nAS $function$ BEGIN\n INSERT INTO gitserver_repos_statistics AS grs (shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted)\n SELECT\n oldtab.shard_id,\n (-COUNT(*)),\n (-COUNT(*) FILTER(WHERE clone_status = 'not_cloned')),\n (-COUNT(*) FILTER(WHERE clone_status = 'cloning')),\n (-COUNT(*) FILTER(WHERE clone_status = 'cloned')),\n (-COUNT(*) FILTER(WHERE last_error IS NOT NULL)),\n (-COUNT(*) FILTER(WHERE corrupted_at IS NOT NULL))\n FROM oldtab\n GROUP BY oldtab.shard_id;\n\n RETURN NULL;\n END\n$function$\n" }, { "Name": "recalc_gitserver_repos_statistics_on_insert", - "Definition": "CREATE OR REPLACE FUNCTION public.recalc_gitserver_repos_statistics_on_insert()\n RETURNS trigger\n LANGUAGE plpgsql\nAS $function$ BEGIN\n INSERT INTO gitserver_repos_statistics AS grs (shard_id, total, not_cloned, cloning, cloned, failed_fetch)\n SELECT\n shard_id,\n COUNT(*) AS total,\n COUNT(*) FILTER(WHERE clone_status = 'not_cloned') AS not_cloned,\n COUNT(*) FILTER(WHERE clone_status = 'cloning') AS cloning,\n COUNT(*) FILTER(WHERE clone_status = 'cloned') AS cloned,\n COUNT(*) FILTER(WHERE last_error IS NOT NULL) AS failed_fetch\n FROM\n newtab\n GROUP BY shard_id\n ON CONFLICT(shard_id)\n DO UPDATE\n SET\n total = grs.total + excluded.total,\n not_cloned = grs.not_cloned + excluded.not_cloned,\n cloning = grs.cloning + excluded.cloning,\n cloned = grs.cloned + excluded.cloned,\n failed_fetch = grs.failed_fetch + excluded.failed_fetch\n ;\n\n RETURN NULL;\n END\n$function$\n" + "Definition": "CREATE OR REPLACE FUNCTION public.recalc_gitserver_repos_statistics_on_insert()\n RETURNS trigger\n LANGUAGE plpgsql\nAS $function$ BEGIN\n -------------------------------------------------\n -- THIS IS CHANGED TO APPEND\n -------------------------------------------------\n INSERT INTO gitserver_repos_statistics AS grs (shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted)\n SELECT\n shard_id,\n COUNT(*) AS total,\n COUNT(*) FILTER(WHERE clone_status = 'not_cloned') AS not_cloned,\n COUNT(*) FILTER(WHERE clone_status = 'cloning') AS cloning,\n COUNT(*) FILTER(WHERE clone_status = 'cloned') AS cloned,\n COUNT(*) FILTER(WHERE last_error IS NOT NULL) AS failed_fetch,\n COUNT(*) FILTER(WHERE corrupted_at IS NOT NULL) AS corrupted\n FROM\n newtab\n GROUP BY shard_id\n ;\n\n RETURN NULL;\n END\n$function$\n" }, { "Name": "recalc_gitserver_repos_statistics_on_update", - "Definition": "CREATE OR REPLACE FUNCTION public.recalc_gitserver_repos_statistics_on_update()\n RETURNS trigger\n LANGUAGE plpgsql\nAS $function$ BEGIN\n INSERT INTO gitserver_repos_statistics AS grs (shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted)\n SELECT\n newtab.shard_id AS shard_id,\n COUNT(*) AS total,\n COUNT(*) FILTER(WHERE clone_status = 'not_cloned') AS not_cloned,\n COUNT(*) FILTER(WHERE clone_status = 'cloning') AS cloning,\n COUNT(*) FILTER(WHERE clone_status = 'cloned') AS cloned,\n COUNT(*) FILTER(WHERE last_error IS NOT NULL) AS failed_fetch,\n COUNT(*) FILTER(WHERE corrupted_at IS NOT NULL) AS corrupted\n FROM\n newtab\n GROUP BY newtab.shard_id\n ON CONFLICT(shard_id) DO\n UPDATE\n SET\n total = grs.total + (excluded.total - (SELECT COUNT(*) FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)),\n not_cloned = grs.not_cloned + (excluded.not_cloned - (SELECT COUNT(*) FILTER(WHERE ot.clone_status = 'not_cloned') FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)),\n cloning = grs.cloning + (excluded.cloning - (SELECT COUNT(*) FILTER(WHERE ot.clone_status = 'cloning') FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)),\n cloned = grs.cloned + (excluded.cloned - (SELECT COUNT(*) FILTER(WHERE ot.clone_status = 'cloned') FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)),\n failed_fetch = grs.failed_fetch + (excluded.failed_fetch - (SELECT COUNT(*) FILTER(WHERE ot.last_error IS NOT NULL) FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)),\n corrupted = grs.corrupted + (excluded.corrupted - (SELECT COUNT(*) FILTER(WHERE ot.corrupted_at IS NOT NULL) FROM oldtab ot WHERE ot.shard_id = excluded.shard_id))\n ;\n\n -------------------------------------------------\n -- IMPORTANT: THIS IS CHANGED TO INCLUDE `corrupted`\n -------------------------------------------------\n WITH moved AS (\n SELECT\n oldtab.shard_id AS shard_id,\n COUNT(*) AS total,\n COUNT(*) FILTER(WHERE oldtab.clone_status = 'not_cloned') AS not_cloned,\n COUNT(*) FILTER(WHERE oldtab.clone_status = 'cloning') AS cloning,\n COUNT(*) FILTER(WHERE oldtab.clone_status = 'cloned') AS cloned,\n COUNT(*) FILTER(WHERE oldtab.last_error IS NOT NULL) AS failed_fetch,\n COUNT(*) FILTER(WHERE oldtab.corrupted_at IS NOT NULL) AS corrupted\n FROM\n oldtab\n JOIN newtab ON newtab.repo_id = oldtab.repo_id\n WHERE\n oldtab.shard_id != newtab.shard_id\n GROUP BY oldtab.shard_id\n )\n UPDATE gitserver_repos_statistics grs\n SET\n total = grs.total - moved.total,\n not_cloned = grs.not_cloned - moved.not_cloned,\n cloning = grs.cloning - moved.cloning,\n cloned = grs.cloned - moved.cloned,\n failed_fetch = grs.failed_fetch - moved.failed_fetch,\n corrupted = grs.corrupted - moved.corrupted\n FROM moved\n WHERE moved.shard_id = grs.shard_id;\n\n -------------------------------------------------\n -- IMPORTANT: THIS IS CHANGED TO INCLUDE `corrupted`\n -------------------------------------------------\n WITH diff(not_cloned, cloning, cloned, failed_fetch, corrupted) AS (\n VALUES (\n (\n (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.clone_status = 'not_cloned')\n -\n (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.clone_status = 'not_cloned')\n ),\n (\n (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.clone_status = 'cloning')\n -\n (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.clone_status = 'cloning')\n ),\n (\n (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.clone_status = 'cloned')\n -\n (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.clone_status = 'cloned')\n ),\n (\n (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.last_error IS NOT NULL)\n -\n (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.last_error IS NOT NULL)\n ),\n (\n (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.corrupted_at IS NOT NULL)\n -\n (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.corrupted_at IS NOT NULL)\n )\n\n )\n )\n INSERT INTO repo_statistics (not_cloned, cloning, cloned, failed_fetch, corrupted)\n SELECT not_cloned, cloning, cloned, failed_fetch, corrupted\n FROM diff\n WHERE\n not_cloned != 0\n OR cloning != 0\n OR cloned != 0\n OR failed_fetch != 0\n OR corrupted != 0\n ;\n\n RETURN NULL;\n END\n$function$\n" + "Definition": "CREATE OR REPLACE FUNCTION public.recalc_gitserver_repos_statistics_on_update()\n RETURNS trigger\n LANGUAGE plpgsql\nAS $function$ BEGIN\n\n -------------------------------------------------\n -- THIS IS CHANGED TO APPEND\n -------------------------------------------------\n WITH diff(shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted) AS (\n SELECT\n COALESCE(newtab.shard_id, oldtab.shard_id) AS shard_id,\n COUNT(newtab.repo_id) - COUNT(oldtab.repo_id) AS total,\n COUNT(newtab.repo_id) FILTER (WHERE newtab.clone_status = 'not_cloned') - COUNT(oldtab.repo_id) FILTER (WHERE oldtab.clone_status = 'not_cloned') AS not_cloned,\n COUNT(newtab.repo_id) FILTER (WHERE newtab.clone_status = 'cloning') - COUNT(oldtab.repo_id) FILTER (WHERE oldtab.clone_status = 'cloning') AS cloning,\n COUNT(newtab.repo_id) FILTER (WHERE newtab.clone_status = 'cloned') - COUNT(oldtab.repo_id) FILTER (WHERE oldtab.clone_status = 'cloned') AS cloned,\n COUNT(newtab.repo_id) FILTER (WHERE newtab.last_error IS NOT NULL) - COUNT(oldtab.repo_id) FILTER (WHERE oldtab.last_error IS NOT NULL) AS failed_fetch,\n COUNT(newtab.repo_id) FILTER (WHERE newtab.corrupted_at IS NOT NULL) - COUNT(oldtab.repo_id) FILTER (WHERE oldtab.corrupted_at IS NOT NULL) AS corrupted\n FROM\n newtab\n FULL OUTER JOIN\n oldtab ON newtab.repo_id = oldtab.repo_id AND newtab.shard_id = oldtab.shard_id\n GROUP BY\n COALESCE(newtab.shard_id, oldtab.shard_id)\n )\n INSERT INTO gitserver_repos_statistics AS grs (shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted)\n SELECT shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted\n FROM diff\n WHERE\n total != 0\n OR not_cloned != 0\n OR cloning != 0\n OR cloned != 0\n OR failed_fetch != 0\n OR corrupted != 0\n ;\n\n -------------------------------------------------\n -- UNCHANGED\n -------------------------------------------------\n WITH diff(not_cloned, cloning, cloned, failed_fetch, corrupted) AS (\n VALUES (\n (\n (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.clone_status = 'not_cloned')\n -\n (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.clone_status = 'not_cloned')\n ),\n (\n (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.clone_status = 'cloning')\n -\n (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.clone_status = 'cloning')\n ),\n (\n (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.clone_status = 'cloned')\n -\n (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.clone_status = 'cloned')\n ),\n (\n (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.last_error IS NOT NULL)\n -\n (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.last_error IS NOT NULL)\n ),\n (\n (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.corrupted_at IS NOT NULL)\n -\n (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.corrupted_at IS NOT NULL)\n )\n\n )\n )\n INSERT INTO repo_statistics (not_cloned, cloning, cloned, failed_fetch, corrupted)\n SELECT not_cloned, cloning, cloned, failed_fetch, corrupted\n FROM diff\n WHERE\n not_cloned != 0\n OR cloning != 0\n OR cloned != 0\n OR failed_fetch != 0\n OR corrupted != 0\n ;\n\n RETURN NULL;\n END\n$function$\n" }, { "Name": "recalc_repo_statistics_on_repo_delete", @@ -14709,7 +14709,7 @@ "Name": "shard_id", "Index": 1, "TypeName": "text", - "IsNullable": false, + "IsNullable": true, "Default": "", "CharacterMaximumLength": 0, "IsIdentity": false, @@ -14734,14 +14734,14 @@ ], "Indexes": [ { - "Name": "gitserver_repos_statistics_pkey", - "IsPrimaryKey": true, - "IsUnique": true, + "Name": "gitserver_repos_statistics_shard_id", + "IsPrimaryKey": false, + "IsUnique": false, "IsExclusion": false, "IsDeferrable": false, - "IndexDefinition": "CREATE UNIQUE INDEX gitserver_repos_statistics_pkey ON gitserver_repos_statistics USING btree (shard_id)", - "ConstraintType": "p", - "ConstraintDefinition": "PRIMARY KEY (shard_id)" + "IndexDefinition": "CREATE INDEX gitserver_repos_statistics_shard_id ON gitserver_repos_statistics USING btree (shard_id)", + "ConstraintType": "", + "ConstraintDefinition": "" } ], "Constraints": null, diff --git a/internal/database/schema.md b/internal/database/schema.md index fe0d134c6928a..59a9ec84da86f 100644 --- a/internal/database/schema.md +++ b/internal/database/schema.md @@ -1974,7 +1974,7 @@ Triggers: ``` Column | Type | Collation | Nullable | Default --------------+--------+-----------+----------+--------- - shard_id | text | | not null | + shard_id | text | | | total | bigint | | not null | 0 not_cloned | bigint | | not null | 0 cloning | bigint | | not null | 0 @@ -1982,7 +1982,7 @@ Triggers: failed_fetch | bigint | | not null | 0 corrupted | bigint | | not null | 0 Indexes: - "gitserver_repos_statistics_pkey" PRIMARY KEY, btree (shard_id) + "gitserver_repos_statistics_shard_id" btree (shard_id) ``` diff --git a/migrations/frontend/1700645180_turn_gitserver_repos_statistics_into_append_only/down.sql b/migrations/frontend/1700645180_turn_gitserver_repos_statistics_into_append_only/down.sql new file mode 100644 index 0000000000000..14a0b9a313e4c --- /dev/null +++ b/migrations/frontend/1700645180_turn_gitserver_repos_statistics_into_append_only/down.sql @@ -0,0 +1,206 @@ +-- Drop +DROP TABLE IF EXISTS gitserver_repos_statistics; + +-- Recreate the table +CREATE TABLE IF NOT EXISTS gitserver_repos_statistics ( + shard_id text PRIMARY KEY, + + total BIGINT NOT NULL DEFAULT 0, + not_cloned BIGINT NOT NULL DEFAULT 0, + cloning BIGINT NOT NULL DEFAULT 0, + cloned BIGINT NOT NULL DEFAULT 0, + failed_fetch BIGINT NOT NULL DEFAULT 0, + corrupted BIGINT NOT NULL DEFAULT 0 +); + +COMMENT ON COLUMN gitserver_repos_statistics.shard_id IS 'ID of this gitserver shard. If an empty string then the repositories havent been assigned a shard.'; +COMMENT ON COLUMN gitserver_repos_statistics.total IS 'Number of repositories in gitserver_repos table on this shard'; +COMMENT ON COLUMN gitserver_repos_statistics.not_cloned IS 'Number of repositories in gitserver_repos table on this shard that are not cloned yet'; +COMMENT ON COLUMN gitserver_repos_statistics.cloning IS 'Number of repositories in gitserver_repos table on this shard that cloning'; +COMMENT ON COLUMN gitserver_repos_statistics.cloned IS 'Number of repositories in gitserver_repos table on this shard that are cloned'; +COMMENT ON COLUMN gitserver_repos_statistics.failed_fetch IS 'Number of repositories in gitserver_repos table on this shard where last_error is set'; +COMMENT ON COLUMN gitserver_repos_statistics.corrupted IS 'Number of repositories that are NOT soft-deleted and not blocked and have corrupted_at set in gitserver_repos table'; + +-- Insert initial values into gitserver_repos_statistics +INSERT INTO + gitserver_repos_statistics (shard_id, total, not_cloned, cloning, cloned, failed_fetch) +SELECT + shard_id, + COUNT(*) AS total, + COUNT(*) FILTER(WHERE clone_status = 'not_cloned') AS not_cloned, + COUNT(*) FILTER(WHERE clone_status = 'cloning') AS cloning, + COUNT(*) FILTER(WHERE clone_status = 'cloned') AS cloned, + COUNT(*) FILTER(WHERE last_error IS NOT NULL) AS failed_fetch +FROM + gitserver_repos +GROUP BY shard_id +ON CONFLICT(shard_id) +DO UPDATE +SET + total = gitserver_repos_statistics.total + excluded.total, + not_cloned = gitserver_repos_statistics.not_cloned + excluded.not_cloned, + cloning = gitserver_repos_statistics.cloning + excluded.cloning, + cloned = gitserver_repos_statistics.cloned + excluded.cloned, + failed_fetch = gitserver_repos_statistics.failed_fetch + excluded.failed_fetch +; + +-- Now restore triggers + +-- UPDATE +CREATE OR REPLACE FUNCTION recalc_gitserver_repos_statistics_on_update() RETURNS trigger + LANGUAGE plpgsql + AS $$ BEGIN + INSERT INTO gitserver_repos_statistics AS grs (shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted) + SELECT + newtab.shard_id AS shard_id, + COUNT(*) AS total, + COUNT(*) FILTER(WHERE clone_status = 'not_cloned') AS not_cloned, + COUNT(*) FILTER(WHERE clone_status = 'cloning') AS cloning, + COUNT(*) FILTER(WHERE clone_status = 'cloned') AS cloned, + COUNT(*) FILTER(WHERE last_error IS NOT NULL) AS failed_fetch, + COUNT(*) FILTER(WHERE corrupted_at IS NOT NULL) AS corrupted + FROM + newtab + GROUP BY newtab.shard_id + ON CONFLICT(shard_id) DO + UPDATE + SET + total = grs.total + (excluded.total - (SELECT COUNT(*) FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)), + not_cloned = grs.not_cloned + (excluded.not_cloned - (SELECT COUNT(*) FILTER(WHERE ot.clone_status = 'not_cloned') FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)), + cloning = grs.cloning + (excluded.cloning - (SELECT COUNT(*) FILTER(WHERE ot.clone_status = 'cloning') FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)), + cloned = grs.cloned + (excluded.cloned - (SELECT COUNT(*) FILTER(WHERE ot.clone_status = 'cloned') FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)), + failed_fetch = grs.failed_fetch + (excluded.failed_fetch - (SELECT COUNT(*) FILTER(WHERE ot.last_error IS NOT NULL) FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)), + corrupted = grs.corrupted + (excluded.corrupted - (SELECT COUNT(*) FILTER(WHERE ot.corrupted_at IS NOT NULL) FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)) + ; + + WITH moved AS ( + SELECT + oldtab.shard_id AS shard_id, + COUNT(*) AS total, + COUNT(*) FILTER(WHERE oldtab.clone_status = 'not_cloned') AS not_cloned, + COUNT(*) FILTER(WHERE oldtab.clone_status = 'cloning') AS cloning, + COUNT(*) FILTER(WHERE oldtab.clone_status = 'cloned') AS cloned, + COUNT(*) FILTER(WHERE oldtab.last_error IS NOT NULL) AS failed_fetch, + COUNT(*) FILTER(WHERE oldtab.corrupted_at IS NOT NULL) AS corrupted + FROM + oldtab + JOIN newtab ON newtab.repo_id = oldtab.repo_id + WHERE + oldtab.shard_id != newtab.shard_id + GROUP BY oldtab.shard_id + ) + UPDATE gitserver_repos_statistics grs + SET + total = grs.total - moved.total, + not_cloned = grs.not_cloned - moved.not_cloned, + cloning = grs.cloning - moved.cloning, + cloned = grs.cloned - moved.cloned, + failed_fetch = grs.failed_fetch - moved.failed_fetch, + corrupted = grs.corrupted - moved.corrupted + FROM moved + WHERE moved.shard_id = grs.shard_id; + + WITH diff(not_cloned, cloning, cloned, failed_fetch, corrupted) AS ( + VALUES ( + ( + (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.clone_status = 'not_cloned') + - + (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.clone_status = 'not_cloned') + ), + ( + (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.clone_status = 'cloning') + - + (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.clone_status = 'cloning') + ), + ( + (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.clone_status = 'cloned') + - + (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.clone_status = 'cloned') + ), + ( + (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.last_error IS NOT NULL) + - + (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.last_error IS NOT NULL) + ), + ( + (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.corrupted_at IS NOT NULL) + - + (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.corrupted_at IS NOT NULL) + ) + ) + ) + INSERT INTO repo_statistics (not_cloned, cloning, cloned, failed_fetch, corrupted) + SELECT not_cloned, cloning, cloned, failed_fetch, corrupted + FROM diff + WHERE + not_cloned != 0 + OR cloning != 0 + OR cloned != 0 + OR failed_fetch != 0 + OR corrupted != 0 + ; + + RETURN NULL; + END +$$; +DROP TRIGGER IF EXISTS trig_recalc_gitserver_repos_statistics_on_update ON gitserver_repos; +CREATE TRIGGER trig_recalc_gitserver_repos_statistics_on_update +AFTER UPDATE ON gitserver_repos +REFERENCING OLD TABLE AS oldtab NEW TABLE AS newtab +FOR EACH STATEMENT EXECUTE FUNCTION recalc_gitserver_repos_statistics_on_update(); + +-- INSERT +CREATE OR REPLACE FUNCTION recalc_gitserver_repos_statistics_on_insert() RETURNS trigger + LANGUAGE plpgsql + AS $$ BEGIN + INSERT INTO gitserver_repos_statistics AS grs (shard_id, total, not_cloned, cloning, cloned, failed_fetch) + SELECT + shard_id, + COUNT(*) AS total, + COUNT(*) FILTER(WHERE clone_status = 'not_cloned') AS not_cloned, + COUNT(*) FILTER(WHERE clone_status = 'cloning') AS cloning, + COUNT(*) FILTER(WHERE clone_status = 'cloned') AS cloned, + COUNT(*) FILTER(WHERE last_error IS NOT NULL) AS failed_fetch + FROM + newtab + GROUP BY shard_id + ON CONFLICT(shard_id) + DO UPDATE + SET + total = grs.total + excluded.total, + not_cloned = grs.not_cloned + excluded.not_cloned, + cloning = grs.cloning + excluded.cloning, + cloned = grs.cloned + excluded.cloned, + failed_fetch = grs.failed_fetch + excluded.failed_fetch + ; + + RETURN NULL; + END +$$; +DROP TRIGGER IF EXISTS trig_recalc_gitserver_repos_statistics_on_insert ON gitserver_repos; +CREATE TRIGGER trig_recalc_gitserver_repos_statistics_on_insert +AFTER INSERT ON gitserver_repos +REFERENCING NEW TABLE AS newtab +FOR EACH STATEMENT EXECUTE FUNCTION recalc_gitserver_repos_statistics_on_insert(); + +-- DELETE +CREATE OR REPLACE FUNCTION recalc_gitserver_repos_statistics_on_delete() RETURNS trigger + LANGUAGE plpgsql + AS $$ BEGIN + UPDATE gitserver_repos_statistics grs + SET + total = grs.total - (SELECT COUNT(*) FROM oldtab WHERE oldtab.shard_id = grs.shard_id), + not_cloned = grs.not_cloned - (SELECT COUNT(*) FILTER(WHERE clone_status = 'not_cloned') FROM oldtab WHERE oldtab.shard_id = grs.shard_id), + cloning = grs.cloning - (SELECT COUNT(*) FILTER(WHERE clone_status = 'cloning') FROM oldtab WHERE oldtab.shard_id = grs.shard_id), + cloned = grs.cloned - (SELECT COUNT(*) FILTER(WHERE clone_status = 'cloned') FROM oldtab WHERE oldtab.shard_id = grs.shard_id), + failed_fetch = grs.cloned - (SELECT COUNT(*) FILTER(WHERE last_error IS NOT NULL) FROM oldtab WHERE oldtab.shard_id = grs.shard_id) + ; + + RETURN NULL; + END +$$; +DROP TRIGGER IF EXISTS trig_recalc_gitserver_repos_statistics_on_delete ON gitserver_repos; +CREATE TRIGGER trig_recalc_gitserver_repos_statistics_on_delete +AFTER DELETE ON gitserver_repos REFERENCING +OLD TABLE AS oldtab +FOR EACH STATEMENT EXECUTE FUNCTION recalc_gitserver_repos_statistics_on_delete(); diff --git a/migrations/frontend/1700645180_turn_gitserver_repos_statistics_into_append_only/metadata.yaml b/migrations/frontend/1700645180_turn_gitserver_repos_statistics_into_append_only/metadata.yaml new file mode 100644 index 0000000000000..e186bfd5ad6b3 --- /dev/null +++ b/migrations/frontend/1700645180_turn_gitserver_repos_statistics_into_append_only/metadata.yaml @@ -0,0 +1,2 @@ +name: turn_gitserver_repos_statistics_into_append_only +parents: [1698836192] diff --git a/migrations/frontend/1700645180_turn_gitserver_repos_statistics_into_append_only/up.sql b/migrations/frontend/1700645180_turn_gitserver_repos_statistics_into_append_only/up.sql new file mode 100644 index 0000000000000..1722226e821d0 --- /dev/null +++ b/migrations/frontend/1700645180_turn_gitserver_repos_statistics_into_append_only/up.sql @@ -0,0 +1,188 @@ +---------------------------------------------- +-- Drop the data, which locks the table. +---------------------------------------------- +DROP TABLE IF EXISTS gitserver_repos_statistics; + +---------------------------------------------- +-- Recreate the table, but `shard_id` is now not a primary key anymore +---------------------------------------------- +CREATE TABLE IF NOT EXISTS gitserver_repos_statistics ( + shard_id text, + + total BIGINT NOT NULL DEFAULT 0, + not_cloned BIGINT NOT NULL DEFAULT 0, + cloning BIGINT NOT NULL DEFAULT 0, + cloned BIGINT NOT NULL DEFAULT 0, + failed_fetch BIGINT NOT NULL DEFAULT 0, + corrupted BIGINT NOT NULL DEFAULT 0 +); +COMMENT ON COLUMN gitserver_repos_statistics.shard_id IS 'ID of this gitserver shard. If an empty string then the repositories havent been assigned a shard.'; +COMMENT ON COLUMN gitserver_repos_statistics.total IS 'Number of repositories in gitserver_repos table on this shard'; +COMMENT ON COLUMN gitserver_repos_statistics.not_cloned IS 'Number of repositories in gitserver_repos table on this shard that are not cloned yet'; +COMMENT ON COLUMN gitserver_repos_statistics.cloning IS 'Number of repositories in gitserver_repos table on this shard that cloning'; +COMMENT ON COLUMN gitserver_repos_statistics.cloned IS 'Number of repositories in gitserver_repos table on this shard that are cloned'; +COMMENT ON COLUMN gitserver_repos_statistics.failed_fetch IS 'Number of repositories in gitserver_repos table on this shard where last_error is set'; +COMMENT ON COLUMN gitserver_repos_statistics.corrupted IS 'Number of repositories that are NOT soft-deleted and not blocked and have corrupted_at set in gitserver_repos table'; + +---------------------------------------------- +-- Add index on shard_id +---------------------------------------------- +CREATE INDEX IF NOT EXISTS gitserver_repos_statistics_shard_id ON gitserver_repos_statistics(shard_id); + +---------------------------------------------- +-- Add index on shard_id +---------------------------------------------- +INSERT INTO + gitserver_repos_statistics (shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted) +SELECT + shard_id, + COUNT(*) AS total, + COUNT(*) FILTER(WHERE clone_status = 'not_cloned') AS not_cloned, + COUNT(*) FILTER(WHERE clone_status = 'cloning') AS cloning, + COUNT(*) FILTER(WHERE clone_status = 'cloned') AS cloned, + COUNT(*) FILTER(WHERE last_error IS NOT NULL) AS failed_fetch, + COUNT(*) FILTER(WHERE corrupted_at IS NOT NULL) AS corrupted +FROM + gitserver_repos +GROUP BY shard_id +; + +---------------------------------------------- +-- Now we replace the triggers... +---------------------------------------------- + +------------------------------------------------------------------ +-- INSERT +------------------------------------------------------------------ +CREATE OR REPLACE FUNCTION recalc_gitserver_repos_statistics_on_insert() RETURNS trigger + LANGUAGE plpgsql + AS $$ BEGIN + ------------------------------------------------- + -- THIS IS CHANGED TO APPEND + ------------------------------------------------- + INSERT INTO gitserver_repos_statistics AS grs (shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted) + SELECT + shard_id, + COUNT(*) AS total, + COUNT(*) FILTER(WHERE clone_status = 'not_cloned') AS not_cloned, + COUNT(*) FILTER(WHERE clone_status = 'cloning') AS cloning, + COUNT(*) FILTER(WHERE clone_status = 'cloned') AS cloned, + COUNT(*) FILTER(WHERE last_error IS NOT NULL) AS failed_fetch, + COUNT(*) FILTER(WHERE corrupted_at IS NOT NULL) AS corrupted + FROM + newtab + GROUP BY shard_id + ; + + RETURN NULL; + END +$$; + +------------------------------------------------------------------ +-- UPDATE +------------------------------------------------------------------ +CREATE OR REPLACE FUNCTION recalc_gitserver_repos_statistics_on_update() RETURNS trigger + LANGUAGE plpgsql + AS $$ BEGIN + + ------------------------------------------------- + -- THIS IS CHANGED TO APPEND + ------------------------------------------------- + WITH diff(shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted) AS ( + SELECT + COALESCE(newtab.shard_id, oldtab.shard_id) AS shard_id, + COUNT(newtab.repo_id) - COUNT(oldtab.repo_id) AS total, + COUNT(newtab.repo_id) FILTER (WHERE newtab.clone_status = 'not_cloned') - COUNT(oldtab.repo_id) FILTER (WHERE oldtab.clone_status = 'not_cloned') AS not_cloned, + COUNT(newtab.repo_id) FILTER (WHERE newtab.clone_status = 'cloning') - COUNT(oldtab.repo_id) FILTER (WHERE oldtab.clone_status = 'cloning') AS cloning, + COUNT(newtab.repo_id) FILTER (WHERE newtab.clone_status = 'cloned') - COUNT(oldtab.repo_id) FILTER (WHERE oldtab.clone_status = 'cloned') AS cloned, + COUNT(newtab.repo_id) FILTER (WHERE newtab.last_error IS NOT NULL) - COUNT(oldtab.repo_id) FILTER (WHERE oldtab.last_error IS NOT NULL) AS failed_fetch, + COUNT(newtab.repo_id) FILTER (WHERE newtab.corrupted_at IS NOT NULL) - COUNT(oldtab.repo_id) FILTER (WHERE oldtab.corrupted_at IS NOT NULL) AS corrupted + FROM + newtab + FULL OUTER JOIN + oldtab ON newtab.repo_id = oldtab.repo_id AND newtab.shard_id = oldtab.shard_id + GROUP BY + COALESCE(newtab.shard_id, oldtab.shard_id) + ) + INSERT INTO gitserver_repos_statistics AS grs (shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted) + SELECT shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted + FROM diff + WHERE + total != 0 + OR not_cloned != 0 + OR cloning != 0 + OR cloned != 0 + OR failed_fetch != 0 + OR corrupted != 0 + ; + + ------------------------------------------------- + -- UNCHANGED + ------------------------------------------------- + WITH diff(not_cloned, cloning, cloned, failed_fetch, corrupted) AS ( + VALUES ( + ( + (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.clone_status = 'not_cloned') + - + (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.clone_status = 'not_cloned') + ), + ( + (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.clone_status = 'cloning') + - + (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.clone_status = 'cloning') + ), + ( + (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.clone_status = 'cloned') + - + (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.clone_status = 'cloned') + ), + ( + (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.last_error IS NOT NULL) + - + (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.last_error IS NOT NULL) + ), + ( + (SELECT COUNT(*) FROM newtab JOIN repo r ON newtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND newtab.corrupted_at IS NOT NULL) + - + (SELECT COUNT(*) FROM oldtab JOIN repo r ON oldtab.repo_id = r.id WHERE r.deleted_at is NULL AND r.blocked IS NULL AND oldtab.corrupted_at IS NOT NULL) + ) + + ) + ) + INSERT INTO repo_statistics (not_cloned, cloning, cloned, failed_fetch, corrupted) + SELECT not_cloned, cloning, cloned, failed_fetch, corrupted + FROM diff + WHERE + not_cloned != 0 + OR cloning != 0 + OR cloned != 0 + OR failed_fetch != 0 + OR corrupted != 0 + ; + + RETURN NULL; + END +$$; + + +------------------------------------------------------------------ +-- DELETE +------------------------------------------------------------------ +CREATE OR REPLACE FUNCTION recalc_gitserver_repos_statistics_on_delete() RETURNS trigger + LANGUAGE plpgsql + AS $$ BEGIN + INSERT INTO gitserver_repos_statistics AS grs (shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted) + SELECT + oldtab.shard_id, + (-COUNT(*)), + (-COUNT(*) FILTER(WHERE clone_status = 'not_cloned')), + (-COUNT(*) FILTER(WHERE clone_status = 'cloning')), + (-COUNT(*) FILTER(WHERE clone_status = 'cloned')), + (-COUNT(*) FILTER(WHERE last_error IS NOT NULL)), + (-COUNT(*) FILTER(WHERE corrupted_at IS NOT NULL)) + FROM oldtab + GROUP BY oldtab.shard_id; + + RETURN NULL; + END +$$; diff --git a/migrations/frontend/squashed.sql b/migrations/frontend/squashed.sql index 28ea7ffa891a8..78e5a3dcca96c 100644 --- a/migrations/frontend/squashed.sql +++ b/migrations/frontend/squashed.sql @@ -487,14 +487,17 @@ $$; CREATE FUNCTION recalc_gitserver_repos_statistics_on_delete() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN - UPDATE gitserver_repos_statistics grs - SET - total = grs.total - (SELECT COUNT(*) FROM oldtab WHERE oldtab.shard_id = grs.shard_id), - not_cloned = grs.not_cloned - (SELECT COUNT(*) FILTER(WHERE clone_status = 'not_cloned') FROM oldtab WHERE oldtab.shard_id = grs.shard_id), - cloning = grs.cloning - (SELECT COUNT(*) FILTER(WHERE clone_status = 'cloning') FROM oldtab WHERE oldtab.shard_id = grs.shard_id), - cloned = grs.cloned - (SELECT COUNT(*) FILTER(WHERE clone_status = 'cloned') FROM oldtab WHERE oldtab.shard_id = grs.shard_id), - failed_fetch = grs.cloned - (SELECT COUNT(*) FILTER(WHERE last_error IS NOT NULL) FROM oldtab WHERE oldtab.shard_id = grs.shard_id) - ; + INSERT INTO gitserver_repos_statistics AS grs (shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted) + SELECT + oldtab.shard_id, + (-COUNT(*)), + (-COUNT(*) FILTER(WHERE clone_status = 'not_cloned')), + (-COUNT(*) FILTER(WHERE clone_status = 'cloning')), + (-COUNT(*) FILTER(WHERE clone_status = 'cloned')), + (-COUNT(*) FILTER(WHERE last_error IS NOT NULL)), + (-COUNT(*) FILTER(WHERE corrupted_at IS NOT NULL)) + FROM oldtab + GROUP BY oldtab.shard_id; RETURN NULL; END @@ -503,25 +506,21 @@ $$; CREATE FUNCTION recalc_gitserver_repos_statistics_on_insert() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN - INSERT INTO gitserver_repos_statistics AS grs (shard_id, total, not_cloned, cloning, cloned, failed_fetch) + ------------------------------------------------- + -- THIS IS CHANGED TO APPEND + ------------------------------------------------- + INSERT INTO gitserver_repos_statistics AS grs (shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted) SELECT shard_id, COUNT(*) AS total, COUNT(*) FILTER(WHERE clone_status = 'not_cloned') AS not_cloned, COUNT(*) FILTER(WHERE clone_status = 'cloning') AS cloning, COUNT(*) FILTER(WHERE clone_status = 'cloned') AS cloned, - COUNT(*) FILTER(WHERE last_error IS NOT NULL) AS failed_fetch + COUNT(*) FILTER(WHERE last_error IS NOT NULL) AS failed_fetch, + COUNT(*) FILTER(WHERE corrupted_at IS NOT NULL) AS corrupted FROM newtab GROUP BY shard_id - ON CONFLICT(shard_id) - DO UPDATE - SET - total = grs.total + excluded.total, - not_cloned = grs.not_cloned + excluded.not_cloned, - cloning = grs.cloning + excluded.cloning, - cloned = grs.cloned + excluded.cloned, - failed_fetch = grs.failed_fetch + excluded.failed_fetch ; RETURN NULL; @@ -531,61 +530,40 @@ $$; CREATE FUNCTION recalc_gitserver_repos_statistics_on_update() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN - INSERT INTO gitserver_repos_statistics AS grs (shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted) - SELECT - newtab.shard_id AS shard_id, - COUNT(*) AS total, - COUNT(*) FILTER(WHERE clone_status = 'not_cloned') AS not_cloned, - COUNT(*) FILTER(WHERE clone_status = 'cloning') AS cloning, - COUNT(*) FILTER(WHERE clone_status = 'cloned') AS cloned, - COUNT(*) FILTER(WHERE last_error IS NOT NULL) AS failed_fetch, - COUNT(*) FILTER(WHERE corrupted_at IS NOT NULL) AS corrupted - FROM - newtab - GROUP BY newtab.shard_id - ON CONFLICT(shard_id) DO - UPDATE - SET - total = grs.total + (excluded.total - (SELECT COUNT(*) FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)), - not_cloned = grs.not_cloned + (excluded.not_cloned - (SELECT COUNT(*) FILTER(WHERE ot.clone_status = 'not_cloned') FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)), - cloning = grs.cloning + (excluded.cloning - (SELECT COUNT(*) FILTER(WHERE ot.clone_status = 'cloning') FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)), - cloned = grs.cloned + (excluded.cloned - (SELECT COUNT(*) FILTER(WHERE ot.clone_status = 'cloned') FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)), - failed_fetch = grs.failed_fetch + (excluded.failed_fetch - (SELECT COUNT(*) FILTER(WHERE ot.last_error IS NOT NULL) FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)), - corrupted = grs.corrupted + (excluded.corrupted - (SELECT COUNT(*) FILTER(WHERE ot.corrupted_at IS NOT NULL) FROM oldtab ot WHERE ot.shard_id = excluded.shard_id)) - ; ------------------------------------------------- - -- IMPORTANT: THIS IS CHANGED TO INCLUDE `corrupted` + -- THIS IS CHANGED TO APPEND ------------------------------------------------- - WITH moved AS ( + WITH diff(shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted) AS ( SELECT - oldtab.shard_id AS shard_id, - COUNT(*) AS total, - COUNT(*) FILTER(WHERE oldtab.clone_status = 'not_cloned') AS not_cloned, - COUNT(*) FILTER(WHERE oldtab.clone_status = 'cloning') AS cloning, - COUNT(*) FILTER(WHERE oldtab.clone_status = 'cloned') AS cloned, - COUNT(*) FILTER(WHERE oldtab.last_error IS NOT NULL) AS failed_fetch, - COUNT(*) FILTER(WHERE oldtab.corrupted_at IS NOT NULL) AS corrupted + COALESCE(newtab.shard_id, oldtab.shard_id) AS shard_id, + COUNT(newtab.repo_id) - COUNT(oldtab.repo_id) AS total, + COUNT(newtab.repo_id) FILTER (WHERE newtab.clone_status = 'not_cloned') - COUNT(oldtab.repo_id) FILTER (WHERE oldtab.clone_status = 'not_cloned') AS not_cloned, + COUNT(newtab.repo_id) FILTER (WHERE newtab.clone_status = 'cloning') - COUNT(oldtab.repo_id) FILTER (WHERE oldtab.clone_status = 'cloning') AS cloning, + COUNT(newtab.repo_id) FILTER (WHERE newtab.clone_status = 'cloned') - COUNT(oldtab.repo_id) FILTER (WHERE oldtab.clone_status = 'cloned') AS cloned, + COUNT(newtab.repo_id) FILTER (WHERE newtab.last_error IS NOT NULL) - COUNT(oldtab.repo_id) FILTER (WHERE oldtab.last_error IS NOT NULL) AS failed_fetch, + COUNT(newtab.repo_id) FILTER (WHERE newtab.corrupted_at IS NOT NULL) - COUNT(oldtab.repo_id) FILTER (WHERE oldtab.corrupted_at IS NOT NULL) AS corrupted FROM - oldtab - JOIN newtab ON newtab.repo_id = oldtab.repo_id - WHERE - oldtab.shard_id != newtab.shard_id - GROUP BY oldtab.shard_id + newtab + FULL OUTER JOIN + oldtab ON newtab.repo_id = oldtab.repo_id AND newtab.shard_id = oldtab.shard_id + GROUP BY + COALESCE(newtab.shard_id, oldtab.shard_id) ) - UPDATE gitserver_repos_statistics grs - SET - total = grs.total - moved.total, - not_cloned = grs.not_cloned - moved.not_cloned, - cloning = grs.cloning - moved.cloning, - cloned = grs.cloned - moved.cloned, - failed_fetch = grs.failed_fetch - moved.failed_fetch, - corrupted = grs.corrupted - moved.corrupted - FROM moved - WHERE moved.shard_id = grs.shard_id; + INSERT INTO gitserver_repos_statistics AS grs (shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted) + SELECT shard_id, total, not_cloned, cloning, cloned, failed_fetch, corrupted + FROM diff + WHERE + total != 0 + OR not_cloned != 0 + OR cloning != 0 + OR cloned != 0 + OR failed_fetch != 0 + OR corrupted != 0 + ; ------------------------------------------------- - -- IMPORTANT: THIS IS CHANGED TO INCLUDE `corrupted` + -- UNCHANGED ------------------------------------------------- WITH diff(not_cloned, cloning, cloned, failed_fetch, corrupted) AS ( VALUES ( @@ -2837,7 +2815,7 @@ COMMENT ON COLUMN gitserver_repos.corrupted_at IS 'Timestamp of when repo corrup COMMENT ON COLUMN gitserver_repos.corruption_logs IS 'Log output of repo corruptions that have been detected - encoded as json'; CREATE TABLE gitserver_repos_statistics ( - shard_id text NOT NULL, + shard_id text, total bigint DEFAULT 0 NOT NULL, not_cloned bigint DEFAULT 0 NOT NULL, cloning bigint DEFAULT 0 NOT NULL, @@ -5556,9 +5534,6 @@ ALTER TABLE ONLY gitserver_relocator_jobs ALTER TABLE ONLY gitserver_repos ADD CONSTRAINT gitserver_repos_pkey PRIMARY KEY (repo_id); -ALTER TABLE ONLY gitserver_repos_statistics - ADD CONSTRAINT gitserver_repos_statistics_pkey PRIMARY KEY (shard_id); - ALTER TABLE ONLY gitserver_repos_sync_output ADD CONSTRAINT gitserver_repos_sync_output_pkey PRIMARY KEY (repo_id); @@ -6094,6 +6069,8 @@ CREATE INDEX gitserver_repos_not_explicitly_cloned_idx ON gitserver_repos USING CREATE INDEX gitserver_repos_shard_id ON gitserver_repos USING btree (shard_id, repo_id); +CREATE INDEX gitserver_repos_statistics_shard_id ON gitserver_repos_statistics USING btree (shard_id); + CREATE INDEX idx_repo_topics ON repo USING gin (topics); CREATE INDEX insights_query_runner_jobs_cost_idx ON insights_query_runner_jobs USING btree (cost); From 414937e071d7fcf1e191d6f150b42e0b3c6a5d19 Mon Sep 17 00:00:00 2001 From: Vincent <evict@users.noreply.github.com> Date: Thu, 23 Nov 2023 18:58:36 +0000 Subject: [PATCH 136/222] sec: Validate redirect URLs in outgoing webhooks (#58535) * show error when making bad webhook * check URLs in redirect --- cmd/frontend/graphqlbackend/outbound_webhooks.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cmd/frontend/graphqlbackend/outbound_webhooks.go b/cmd/frontend/graphqlbackend/outbound_webhooks.go index dcc314dfa7607..e2fc13c9fec1d 100644 --- a/cmd/frontend/graphqlbackend/outbound_webhooks.go +++ b/cmd/frontend/graphqlbackend/outbound_webhooks.go @@ -136,6 +136,12 @@ func (r *schemaResolver) CreateOutboundWebhook(ctx context.Context, args CreateO return nil, auth.ErrMustBeSiteAdmin } + // Validate the URL + err = outbound.CheckURL(args.Input.URL) + if err != nil { + return nil, errors.Wrap(err, "invalid webhook address") + } + webhook := &types.OutboundWebhook{ CreatedBy: user.ID, UpdatedBy: user.ID, From 2c2aa1d696d98c0ca2367ae00b0e629a7a2096b6 Mon Sep 17 00:00:00 2001 From: Robert Lin <robert@bobheadxi.dev> Date: Thu, 23 Nov 2023 11:04:54 -0800 Subject: [PATCH 137/222] msp: add artificial operators team to generated workspaces (#58509) Provisioned by https://github.com/sourcegraph/infrastructure/pull/5631 The idea is to have operators request membership to the new team via Entitle to get access to MSP workspaces. Will document in a follow-up. This change also adds a `-all` guard for syncing all environment TFC workspaces, similar to the one for `sg msp generate`. --- .../terraformcloud/terraformcloud.go | 70 ++++++++++++------- dev/sg/msp/sg_msp.go | 8 +++ 2 files changed, 52 insertions(+), 26 deletions(-) diff --git a/dev/managedservicesplatform/terraformcloud/terraformcloud.go b/dev/managedservicesplatform/terraformcloud/terraformcloud.go index cf27716b75e1c..121a7608b7dd0 100644 --- a/dev/managedservicesplatform/terraformcloud/terraformcloud.go +++ b/dev/managedservicesplatform/terraformcloud/terraformcloud.go @@ -159,7 +159,7 @@ func (c *Client) SyncWorkspaces(ctx context.Context, svc spec.ServiceSpec, env s if projects, err := c.client.Projects.List(ctx, c.org, &tfe.ProjectListOptions{ Name: tfcProjectName, }); err != nil { - return nil, err + return nil, errors.Wrap(err, "Projects.List") } else { for _, p := range projects.Items { if p.Name == tfcProjectName { @@ -174,41 +174,31 @@ func (c *Client) SyncWorkspaces(ctx context.Context, svc spec.ServiceSpec, env s Name: tfcProjectName, }) if err != nil { - return nil, err + return nil, errors.Wrap(err, "Projects.Create") } } - // Assign access to project - wantTeam := "team-gGtVVgtNRaCnkhKp" // TODO: Currently Core Services, parameterize later - var existingAccessID string + // Grant access to project for Core Services if resp, err := c.client.TeamProjectAccess.List(ctx, tfe.TeamProjectAccessListOptions{ ProjectID: tfcProject.ID, }); err != nil { - return nil, errors.Wrap(err, "TeamAccess.List") + return nil, errors.Wrap(err, "TeamProjectAccess.List") } else { - for _, a := range resp.Items { - if a.Team.ID == wantTeam { - existingAccessID = a.ID + for _, team := range []struct { + name string // only for reference + terraformCloudTeamID string + }{ + {name: "Core Services", terraformCloudTeamID: "team-gGtVVgtNRaCnkhKp"}, + // Operators should use Entitle to request access to this team to + // get access to workspaces, if they aren't in Core Services + {name: "Managed Services Platform Operators", terraformCloudTeamID: "team-Wdejc42bWrRonQEY"}, + } { + if err := c.ensureAccessForTeam(ctx, tfcProject, resp, team.terraformCloudTeamID); err != nil { + return nil, errors.Wrapf(err, "ensure access for %q Terraform Cloud team %q", + team.name, team.terraformCloudTeamID) } } } - if existingAccessID != "" { - _, err := c.client.TeamProjectAccess.Update(ctx, existingAccessID, tfe.TeamProjectAccessUpdateOptions{ - Access: pointers.Ptr(tfe.TeamProjectAccessWrite), - }) - if err != nil { - return nil, errors.Wrap(err, "TeamAccess.Update") - } - } else { - _, err := c.client.TeamProjectAccess.Add(ctx, tfe.TeamProjectAccessAddOptions{ - Project: &tfe.Project{ID: tfcProject.ID}, - Team: &tfe.Team{ID: wantTeam}, - Access: tfe.TeamProjectAccessWrite, - }) - if err != nil { - return nil, errors.Wrap(err, "TeamAccess.Add") - } - } var workspaces []Workspace for _, s := range stacks { @@ -337,3 +327,31 @@ func (c *Client) DeleteWorkspaces(ctx context.Context, svc spec.ServiceSpec, env return errs } + +func (c *Client) ensureAccessForTeam(ctx context.Context, project *tfe.Project, currentTeams *tfe.TeamProjectAccessList, teamID string) error { + var existingAccessID string + for _, a := range currentTeams.Items { + if a.Team.ID == teamID { + existingAccessID = a.ID + } + } + if existingAccessID != "" { + _, err := c.client.TeamProjectAccess.Update(ctx, existingAccessID, tfe.TeamProjectAccessUpdateOptions{ + Access: pointers.Ptr(tfe.TeamProjectAccessWrite), + }) + if err != nil { + return errors.Wrap(err, "TeamAccess.Update") + } + } else { + _, err := c.client.TeamProjectAccess.Add(ctx, tfe.TeamProjectAccessAddOptions{ + Project: &tfe.Project{ID: project.ID}, + Team: &tfe.Team{ID: teamID}, + Access: tfe.TeamProjectAccessWrite, + }) + if err != nil { + return errors.Wrap(err, "TeamAccess.Add") + } + } + + return nil +} diff --git a/dev/sg/msp/sg_msp.go b/dev/sg/msp/sg_msp.go index fada76824c056..8ce3b12000d31 100644 --- a/dev/sg/msp/sg_msp.go +++ b/dev/sg/msp/sg_msp.go @@ -273,6 +273,11 @@ sg msp generate -all <service> Usage: "Optionally provide an environment ID as well to only sync that environment.", ArgsUsage: "<service ID> [environment ID]", Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "all", + Usage: "Generate Terraform Cloud workspaces for all environments", + Value: false, + }, &cli.StringFlag{ Name: "workspace-run-mode", Usage: "One of 'vcs', 'cli'", @@ -337,6 +342,9 @@ sg msp generate -all <service> return errors.Wrapf(err, "sync env %q", env.ID) } } else { + if targetEnv == "" && !c.Bool("all") { + return errors.New("second argument environment ID is required without the '-all' flag") + } for _, env := range service.Environments { if err := syncEnvironmentWorkspaces(c, tfcClient, service.Service, service.Build, env); err != nil { return errors.Wrapf(err, "sync env %q", env.ID) From e6479aa8946442afe1b05dcb6f643c460b25e025 Mon Sep 17 00:00:00 2001 From: Robert Lin <robert@bobheadxi.dev> Date: Thu, 23 Nov 2023 12:39:14 -0800 Subject: [PATCH 138/222] telemetrygateway: add country code to event attributes (#58388) This change extends the data exported to Telemetry Gateway with inferred client geolocation, added in https://github.com/sourcegraph/sourcegraph/pull/58386, as discussed [here](https://sourcegraph.slack.com/archives/C01PQEVJ5A9/p1700078374822459?thread_ts=1694717740.084639&cid=C01PQEVJ5A9) --- .../telemetry/protocol.md | 17 ++ internal/telemetrygateway/v1/BUILD.bazel | 2 + .../telemetrygateway/v1/backcompat_test.go | 3 + internal/telemetrygateway/v1/event.go | 25 ++- internal/telemetrygateway/v1/event_test.go | 36 +++++ .../v1/telemetrygateway.pb.go | 146 ++++++++++++++---- .../v1/telemetrygateway.proto | 8 + .../v1/testdata/snapshots/2023-11-16.pb | 14 ++ 8 files changed, 216 insertions(+), 35 deletions(-) create mode 100644 internal/telemetrygateway/v1/testdata/snapshots/2023-11-16.pb diff --git a/doc/dev/background-information/telemetry/protocol.md b/doc/dev/background-information/telemetry/protocol.md index 876fbc70655b6..2949ebcca17c0 100644 --- a/doc/dev/background-information/telemetry/protocol.md +++ b/doc/dev/background-information/telemetry/protocol.md @@ -18,6 +18,7 @@ This page contains generated documentation for telemetry event data that gets ex - [EventFeatureFlags](#telemetrygateway-v1-EventFeatureFlags) - [EventFeatureFlags.FlagsEntry](#telemetrygateway-v1-EventFeatureFlags-FlagsEntry) - [EventInteraction](#telemetrygateway-v1-EventInteraction) + - [EventInteraction.Geolocation](#telemetrygateway-v1-EventInteraction-Geolocation) - [EventMarketingTracking](#telemetrygateway-v1-EventMarketingTracking) - [EventParameters](#telemetrygateway-v1-EventParameters) - [EventParameters.MetadataEntry](#telemetrygateway-v1-EventParameters-MetadataEntry) @@ -126,6 +127,22 @@ This page contains generated documentation for telemetry event data that gets ex | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | trace_id | [string](#string) | optional | <p>OpenTelemetry trace ID representing the interaction associated with the event.</p> | +| geolocation | [EventInteraction.Geolocation](#telemetrygateway-v1-EventInteraction-Geolocation) | optional | <p>Geolocation associated with the interaction, typically inferred from the</p><p>originating client's IP address (which we do not collect).</p> | + + + + + + +<a name="telemetrygateway-v1-EventInteraction-Geolocation"></a> + +### EventInteraction.Geolocation + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| country_code | [string](#string) | | <p>Inferred ISO 3166-1 alpha-2 or alpha-3 country code</p> | diff --git a/internal/telemetrygateway/v1/BUILD.bazel b/internal/telemetrygateway/v1/BUILD.bazel index 488dadf54023a..773ab6e2a35ed 100644 --- a/internal/telemetrygateway/v1/BUILD.bazel +++ b/internal/telemetrygateway/v1/BUILD.bazel @@ -54,6 +54,7 @@ go_library( deps = [ "//internal/actor", "//internal/featureflag", + "//internal/requestclient", "//internal/trace", "//lib/pointers", "@com_github_google_uuid//:uuid", @@ -86,6 +87,7 @@ go_test( embed = [":telemetrygateway"], deps = [ "//internal/actor", + "//internal/requestclient", "//internal/trace", "//internal/trace/tracetest", "//lib/pointers", diff --git a/internal/telemetrygateway/v1/backcompat_test.go b/internal/telemetrygateway/v1/backcompat_test.go index f5630a1ddd9b1..e5b3db2f1a7cd 100644 --- a/internal/telemetrygateway/v1/backcompat_test.go +++ b/internal/telemetrygateway/v1/backcompat_test.go @@ -39,6 +39,9 @@ var ( tid, _ := (tracetest.StaticTraceIDGenerator{}).NewIDs(context.Background()) return pointers.Ptr(tid.String()) }(), + Geolocation: &telemetrygatewayv1.EventInteraction_Geolocation{ + CountryCode: "US", + }, }, Source: &telemetrygatewayv1.EventSource{ Server: &telemetrygatewayv1.EventSource_Server{ diff --git a/internal/telemetrygateway/v1/event.go b/internal/telemetrygateway/v1/event.go index 3c835ca14e593..29a93bd19e034 100644 --- a/internal/telemetrygateway/v1/event.go +++ b/internal/telemetrygateway/v1/event.go @@ -10,6 +10,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/actor" "github.com/sourcegraph/sourcegraph/internal/featureflag" + "github.com/sourcegraph/sourcegraph/internal/requestclient" "github.com/sourcegraph/sourcegraph/internal/trace" "github.com/sourcegraph/sourcegraph/lib/pointers" ) @@ -29,12 +30,30 @@ func NewEventWithDefaults(ctx context.Context, now time.Time, newEventID func() // request where the event is being created, as they should all happen // within the interaction, even when recording a set of events e.g. from // buffering. - eventTrace := trace.FromContext(ctx).SpanContext() - if !eventTrace.IsValid() { + var traceID *string + if eventTrace := trace.FromContext(ctx).SpanContext(); eventTrace.IsValid() { + traceID = pointers.Ptr(eventTrace.TraceID().String()) + } + + // Get geolocation of request client, if there is one. + var geolocation *EventInteraction_Geolocation + if rc := requestclient.FromContext(ctx); rc != nil { + if cc, err := rc.OriginCountryCode(); err == nil { + geolocation = &EventInteraction_Geolocation{ + CountryCode: cc, + } + } + } + + // If we have nothing interesting to show, leave out Interaction + // entirely. + if traceID == nil && geolocation == nil { return nil } + return &EventInteraction{ - TraceId: pointers.Ptr(eventTrace.TraceID().String()), + TraceId: traceID, + Geolocation: geolocation, } }(), User: func() *EventUser { diff --git a/internal/telemetrygateway/v1/event_test.go b/internal/telemetrygateway/v1/event_test.go index 49a5cd657f1f3..b534e839dcdcc 100644 --- a/internal/telemetrygateway/v1/event_test.go +++ b/internal/telemetrygateway/v1/event_test.go @@ -12,6 +12,7 @@ import ( "google.golang.org/protobuf/encoding/protojson" "github.com/sourcegraph/sourcegraph/internal/actor" + "github.com/sourcegraph/sourcegraph/internal/requestclient" "github.com/sourcegraph/sourcegraph/internal/trace" "github.com/sourcegraph/sourcegraph/internal/trace/tracetest" @@ -66,6 +67,41 @@ func TestNewEventWithDefaults(t *testing.T) { "user": { "userId": "123" } +}`).Equal(t, string(jsondata)) + }) + + t.Run("extract geolocation", func(t *testing.T) { + // Atach a request client + ctx := requestclient.WithClient(context.Background(), &requestclient.Client{ + IP: "93.184.216.34", // ping -c1 example.net + }) + + // NOTE: We can't test the feature flag part easily because + // featureflag.GetEvaluatedFlagSet depends on Redis, and the package + // is not designed for it to easily be stubbed out for testing. + // Since it's used for existing telemetry, we trust it works. + + got := telemetrygatewayv1.NewEventWithDefaults(ctx, staticTime, func() string { return "id" }) + assert.NotNil(t, got.Interaction) + + protodata, err := protojson.Marshal(got) + require.NoError(t, err) + + // Protojson output isn't stable by injecting randomized whitespace, + // so we re-marshal it to stabilize the output for golden tests. + // https://github.com/golang/protobuf/issues/1082 + var gotJSON map[string]any + require.NoError(t, json.Unmarshal(protodata, &gotJSON)) + jsondata, err := json.MarshalIndent(gotJSON, "", " ") + require.NoError(t, err) + autogold.Expect(`{ + "id": "id", + "interaction": { + "geolocation": { + "countryCode": "GB" + } + }, + "timestamp": "2023-02-24T14:48:30Z" }`).Equal(t, string(jsondata)) }) } diff --git a/internal/telemetrygateway/v1/telemetrygateway.pb.go b/internal/telemetrygateway/v1/telemetrygateway.pb.go index 7db52d176e580..b89664c6017bc 100644 --- a/internal/telemetrygateway/v1/telemetrygateway.pb.go +++ b/internal/telemetrygateway/v1/telemetrygateway.pb.go @@ -881,6 +881,9 @@ type EventInteraction struct { // OpenTelemetry trace ID representing the interaction associated with the event. TraceId *string `protobuf:"bytes,1,opt,name=trace_id,json=traceId,proto3,oneof" json:"trace_id,omitempty"` + // Geolocation associated with the interaction, typically inferred from the + // originating client's IP address (which we do not collect). + Geolocation *EventInteraction_Geolocation `protobuf:"bytes,3,opt,name=geolocation,proto3,oneof" json:"geolocation,omitempty"` } func (x *EventInteraction) Reset() { @@ -922,6 +925,13 @@ func (x *EventInteraction) GetTraceId() string { return "" } +func (x *EventInteraction) GetGeolocation() *EventInteraction_Geolocation { + if x != nil { + return x.Geolocation + } + return nil +} + type Identifier_LicensedInstanceIdentifier struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1179,6 +1189,54 @@ func (x *EventSource_Client) GetVersion() string { return "" } +type EventInteraction_Geolocation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Inferred ISO 3166-1 alpha-2 or alpha-3 country code + CountryCode string `protobuf:"bytes,1,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"` +} + +func (x *EventInteraction_Geolocation) Reset() { + *x = EventInteraction_Geolocation{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetrygateway_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EventInteraction_Geolocation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventInteraction_Geolocation) ProtoMessage() {} + +func (x *EventInteraction_Geolocation) ProtoReflect() protoreflect.Message { + mi := &file_telemetrygateway_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EventInteraction_Geolocation.ProtoReflect.Descriptor instead. +func (*EventInteraction_Geolocation) Descriptor() ([]byte, []int) { + return file_telemetrygateway_proto_rawDescGZIP(), []int{11, 0} +} + +func (x *EventInteraction_Geolocation) GetCountryCode() string { + if x != nil { + return x.CountryCode + } + return "" +} + var File_telemetrygateway_proto protoreflect.FileDescriptor var file_telemetrygateway_proto_rawDesc = []byte{ @@ -1378,24 +1436,34 @@ var file_telemetrygateway_proto_rawDesc = []byte{ 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x75, 0x72, - 0x6c, 0x22, 0x3f, 0x0a, 0x10, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x32, 0x85, 0x01, 0x0a, 0x18, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x79, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x69, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, - 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x41, 0x5a, 0x3f, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, - 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x22, 0xe1, 0x01, 0x0a, 0x10, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, + 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0b, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, + 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, + 0x52, 0x0b, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x1a, 0x30, 0x0a, 0x0b, 0x47, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x6f, + 0x64, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, + 0x04, 0x08, 0x02, 0x10, 0x03, 0x32, 0x85, 0x01, 0x0a, 0x18, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x79, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x41, 0x5a, + 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, + 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1410,7 +1478,7 @@ func file_telemetrygateway_proto_rawDescGZIP() []byte { return file_telemetrygateway_proto_rawDescData } -var file_telemetrygateway_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_telemetrygateway_proto_msgTypes = make([]protoimpl.MessageInfo, 20) var file_telemetrygateway_proto_goTypes = []interface{}{ (*Identifier)(nil), // 0: telemetrygateway.v1.Identifier (*RecordEventsRequestMetadata)(nil), // 1: telemetrygateway.v1.RecordEventsRequestMetadata @@ -1431,8 +1499,9 @@ var file_telemetrygateway_proto_goTypes = []interface{}{ (*EventSource_Client)(nil), // 16: telemetrygateway.v1.EventSource.Client nil, // 17: telemetrygateway.v1.EventParameters.MetadataEntry nil, // 18: telemetrygateway.v1.EventFeatureFlags.FlagsEntry - (*timestamppb.Timestamp)(nil), // 19: google.protobuf.Timestamp - (*structpb.Struct)(nil), // 20: google.protobuf.Struct + (*EventInteraction_Geolocation)(nil), // 19: telemetrygateway.v1.EventInteraction.Geolocation + (*timestamppb.Timestamp)(nil), // 20: google.protobuf.Timestamp + (*structpb.Struct)(nil), // 21: google.protobuf.Struct } var file_telemetrygateway_proto_depIdxs = []int32{ 12, // 0: telemetrygateway.v1.Identifier.licensed_instance:type_name -> telemetrygateway.v1.Identifier.LicensedInstanceIdentifier @@ -1440,7 +1509,7 @@ var file_telemetrygateway_proto_depIdxs = []int32{ 0, // 2: telemetrygateway.v1.RecordEventsRequestMetadata.identifier:type_name -> telemetrygateway.v1.Identifier 1, // 3: telemetrygateway.v1.RecordEventsRequest.metadata:type_name -> telemetrygateway.v1.RecordEventsRequestMetadata 14, // 4: telemetrygateway.v1.RecordEventsRequest.events:type_name -> telemetrygateway.v1.RecordEventsRequest.EventsPayload - 19, // 5: telemetrygateway.v1.Event.timestamp:type_name -> google.protobuf.Timestamp + 20, // 5: telemetrygateway.v1.Event.timestamp:type_name -> google.protobuf.Timestamp 5, // 6: telemetrygateway.v1.Event.source:type_name -> telemetrygateway.v1.EventSource 6, // 7: telemetrygateway.v1.Event.parameters:type_name -> telemetrygateway.v1.EventParameters 8, // 8: telemetrygateway.v1.Event.user:type_name -> telemetrygateway.v1.EventUser @@ -1450,17 +1519,18 @@ var file_telemetrygateway_proto_depIdxs = []int32{ 15, // 12: telemetrygateway.v1.EventSource.server:type_name -> telemetrygateway.v1.EventSource.Server 16, // 13: telemetrygateway.v1.EventSource.client:type_name -> telemetrygateway.v1.EventSource.Client 17, // 14: telemetrygateway.v1.EventParameters.metadata:type_name -> telemetrygateway.v1.EventParameters.MetadataEntry - 20, // 15: telemetrygateway.v1.EventParameters.private_metadata:type_name -> google.protobuf.Struct + 21, // 15: telemetrygateway.v1.EventParameters.private_metadata:type_name -> google.protobuf.Struct 7, // 16: telemetrygateway.v1.EventParameters.billing_metadata:type_name -> telemetrygateway.v1.EventBillingMetadata 18, // 17: telemetrygateway.v1.EventFeatureFlags.flags:type_name -> telemetrygateway.v1.EventFeatureFlags.FlagsEntry - 4, // 18: telemetrygateway.v1.RecordEventsRequest.EventsPayload.events:type_name -> telemetrygateway.v1.Event - 2, // 19: telemetrygateway.v1.TelemeteryGatewayService.RecordEvents:input_type -> telemetrygateway.v1.RecordEventsRequest - 3, // 20: telemetrygateway.v1.TelemeteryGatewayService.RecordEvents:output_type -> telemetrygateway.v1.RecordEventsResponse - 20, // [20:21] is the sub-list for method output_type - 19, // [19:20] is the sub-list for method input_type - 19, // [19:19] is the sub-list for extension type_name - 19, // [19:19] is the sub-list for extension extendee - 0, // [0:19] is the sub-list for field type_name + 19, // 18: telemetrygateway.v1.EventInteraction.geolocation:type_name -> telemetrygateway.v1.EventInteraction.Geolocation + 4, // 19: telemetrygateway.v1.RecordEventsRequest.EventsPayload.events:type_name -> telemetrygateway.v1.Event + 2, // 20: telemetrygateway.v1.TelemeteryGatewayService.RecordEvents:input_type -> telemetrygateway.v1.RecordEventsRequest + 3, // 21: telemetrygateway.v1.TelemeteryGatewayService.RecordEvents:output_type -> telemetrygateway.v1.RecordEventsResponse + 21, // [21:22] is the sub-list for method output_type + 20, // [20:21] is the sub-list for method input_type + 20, // [20:20] is the sub-list for extension type_name + 20, // [20:20] is the sub-list for extension extendee + 0, // [0:20] is the sub-list for field type_name } func init() { file_telemetrygateway_proto_init() } @@ -1673,6 +1743,18 @@ func file_telemetrygateway_proto_init() { return nil } } + file_telemetrygateway_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EventInteraction_Geolocation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_telemetrygateway_proto_msgTypes[0].OneofWrappers = []interface{}{ (*Identifier_LicensedInstance)(nil), @@ -1695,7 +1777,7 @@ func file_telemetrygateway_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_telemetrygateway_proto_rawDesc, NumEnums: 0, - NumMessages: 19, + NumMessages: 20, NumExtensions: 0, NumServices: 1, }, diff --git a/internal/telemetrygateway/v1/telemetrygateway.proto b/internal/telemetrygateway/v1/telemetrygateway.proto index 5a9364733d7af..527aaabd09f2f 100644 --- a/internal/telemetrygateway/v1/telemetrygateway.proto +++ b/internal/telemetrygateway/v1/telemetrygateway.proto @@ -206,4 +206,12 @@ message EventInteraction { optional string trace_id = 1; // Reserve entry for client-provided interaction ID in follow-up change. reserved 2; + + message Geolocation { + // Inferred ISO 3166-1 alpha-2 or alpha-3 country code + string country_code = 1; + } + // Geolocation associated with the interaction, typically inferred from the + // originating client's IP address (which we do not collect). + optional Geolocation geolocation = 3; } diff --git a/internal/telemetrygateway/v1/testdata/snapshots/2023-11-16.pb b/internal/telemetrygateway/v1/testdata/snapshots/2023-11-16.pb new file mode 100644 index 0000000000000..cdd57aef44ab8 --- /dev/null +++ b/internal/telemetrygateway/v1/testdata/snapshots/2023-11-16.pb @@ -0,0 +1,14 @@ + +1234¾œćŸFeature"Action* + +dev +CLIENTVERSION2: +metadata + +privatedata" +ProductCategory:Ņ  anonymousB + +featuretrueJ8 +valuevaluevalue"value*value2value:valueBvalueR( + 01020304050607080102040810203040 +US \ No newline at end of file From f6a33b0bc7ab00b58cd76145a221c272ded1c3a7 Mon Sep 17 00:00:00 2001 From: Quinn Slack <quinn@slack.org> Date: Thu, 23 Nov 2023 22:21:25 -0800 Subject: [PATCH 139/222] do not perform shell expansion on `sg src` invocations (#58544) Shell expansion breaks usage like `sg src search c.Run()`. (You'd need to do `sg src search "'c.Run()'"`, which is unwieldy.) --- dev/sg/sg_src.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/dev/sg/sg_src.go b/dev/sg/sg_src.go index dd5b026b5ba57..367a9dfebf805 100644 --- a/dev/sg/sg_src.go +++ b/dev/sg/sg_src.go @@ -4,13 +4,13 @@ import ( "context" "net/url" "os" + "os/exec" "github.com/urfave/cli/v2" "github.com/sourcegraph/sourcegraph/dev/sg/internal/category" "github.com/sourcegraph/sourcegraph/dev/sg/internal/secrets" "github.com/sourcegraph/sourcegraph/dev/sg/internal/std" - "github.com/sourcegraph/sourcegraph/dev/sg/internal/usershell" "github.com/sourcegraph/sourcegraph/lib/errors" "github.com/sourcegraph/sourcegraph/lib/output" ) @@ -141,12 +141,12 @@ var srcCommand = &cli.Command{ return errors.New("instance not found") } - c := usershell.Command(cmd.Context, append([]string{"src"}, cmd.Args().Slice()...)...) - c = c.Env(map[string]string{ - "SRC_ACCESS_TOKEN": instance.AccessToken, - "SRC_ENDPOINT": instance.Endpoint, - }) - return c.Run().Stream(os.Stdout) + c := exec.CommandContext(cmd.Context, "src", cmd.Args().Slice()...) + c.Env = append(c.Environ(), "SRC_ACCESS_TOKEN="+instance.AccessToken, "SRC_ENDPOINT="+instance.Endpoint) + c.Stdout = os.Stdout + c.Stderr = os.Stderr + c.Stdin = os.Stdin + return c.Run() }, } From 64b12d9cf0b76a1d5cd46b3252414c66209b39e1 Mon Sep 17 00:00:00 2001 From: Quinn Slack <quinn@slack.org> Date: Thu, 23 Nov 2023 22:52:42 -0800 Subject: [PATCH 140/222] misc fixes to text and error message copy (#58543) * fix jsdoc * fix sg error message for `sg src-instance register` * remove awkward dangling feedback link on code monitor list page * CodeMonitoringLogs: clean up text * improve batch change description in header --- .../batch-spec/header/BatchChangeHeader.tsx | 4 +--- .../batches/list/BatchChangeListPage.tsx | 2 +- .../enterprise/code-monitoring/CodeMonitorList.tsx | 3 --- .../code-monitoring/CodeMonitoringLogs.tsx | 14 ++++++-------- client/web/src/nav/NavBar/NavDropdown.tsx | 6 ++++-- dev/sg/sg_src.go | 6 +++--- 6 files changed, 15 insertions(+), 20 deletions(-) diff --git a/client/web/src/enterprise/batches/batch-spec/header/BatchChangeHeader.tsx b/client/web/src/enterprise/batches/batch-spec/header/BatchChangeHeader.tsx index d58928538f848..f13f1bb310946 100644 --- a/client/web/src/enterprise/batches/batch-spec/header/BatchChangeHeader.tsx +++ b/client/web/src/enterprise/batches/batch-spec/header/BatchChangeHeader.tsx @@ -21,9 +21,7 @@ interface BatchChangeHeaderProps { export const BatchChangeHeader: React.FC<BatchChangeHeaderProps> = ({ className, namespace, title, description }) => ( <PageHeader className={classNames('flex-1 pb-2', styles.header, className)} - description={ - description || 'Run custom code over hundreds of repositories and manage the resulting changesets.' - } + description={description || 'Run and manage large-scale changes across many repositories.'} annotation={<FeedbackBadge status="beta" feedback={{ mailto: 'support@sourcegraph.com' }} />} > <PageHeader.Heading as="h2" styleAs="h1"> diff --git a/client/web/src/enterprise/batches/list/BatchChangeListPage.tsx b/client/web/src/enterprise/batches/list/BatchChangeListPage.tsx index 65869790a1868..8391e13397f28 100644 --- a/client/web/src/enterprise/batches/list/BatchChangeListPage.tsx +++ b/client/web/src/enterprise/batches/list/BatchChangeListPage.tsx @@ -171,7 +171,7 @@ export const BatchChangeListPage: React.FunctionComponent<React.PropsWithChildre ) } headingElement={headingElement} - description="Run custom code over hundreds of repositories and manage the resulting changesets." + description="Run and manage large-scale changes across many repositories." > <PageHeader.Heading as="h2" styleAs="h1"> <PageHeader.Breadcrumb icon={BatchChangesIcon}>Batch Changes</PageHeader.Breadcrumb> diff --git a/client/web/src/enterprise/code-monitoring/CodeMonitorList.tsx b/client/web/src/enterprise/code-monitoring/CodeMonitorList.tsx index 62b06c4df8c6b..b8d049d4db2a6 100644 --- a/client/web/src/enterprise/code-monitoring/CodeMonitorList.tsx +++ b/client/web/src/enterprise/code-monitoring/CodeMonitorList.tsx @@ -152,9 +152,6 @@ export const CodeMonitorList: React.FunctionComponent<React.PropsWithChildren<Co )} </div> </div> - <div className="mt-5"> - We want to hear your feedback! <Link to="mailto:feedback@sourcegraph.com">Share your thoughts</Link> - </div> </> ) } diff --git a/client/web/src/enterprise/code-monitoring/CodeMonitoringLogs.tsx b/client/web/src/enterprise/code-monitoring/CodeMonitoringLogs.tsx index f405feaa263fb..4bfdbadf2b04f 100644 --- a/client/web/src/enterprise/code-monitoring/CodeMonitoringLogs.tsx +++ b/client/web/src/enterprise/code-monitoring/CodeMonitoringLogs.tsx @@ -3,7 +3,7 @@ import React, { useMemo } from 'react' import classNames from 'classnames' import { dataOrThrowErrors, gql } from '@sourcegraph/http-client' -import { Card, H2, Text } from '@sourcegraph/wildcard' +import { Card, Text } from '@sourcegraph/wildcard' import { useShowMorePagination } from '../../components/FilteredConnection/hooks/useShowMorePagination' import { @@ -137,13 +137,9 @@ export const CodeMonitoringLogs: React.FunctionComponent< return ( <div> - <H2>Code Monitoring Logs</H2> <Text> - {/* TODO: Text to change */} - You can use these logs to troubleshoot issues with code monitor notifications. Only the { - runPageSize - }{' '} - most recent runs are shown and old runs are deleted periodically. + Use these logs to troubleshoot issues with code monitor notifications. Only the {runPageSize} most + recent runs are shown. Old runs are deleted periodically. </Text> <Card className="p-3"> <ConnectionContainer> @@ -164,7 +160,9 @@ export const CodeMonitoringLogs: React.FunctionComponent< noun="monitor" pluralNoun="monitors" hasNextPage={hasNextPage} - emptyElement={<div className={styles.empty}>You haven't created any monitors yet</div>} + emptyElement={ + <div className={styles.empty}>No code monitors have been created yet.</div> + } /> {hasNextPage && <ShowMoreButton onClick={fetchMore} />} </SummaryContainer> diff --git a/client/web/src/nav/NavBar/NavDropdown.tsx b/client/web/src/nav/NavBar/NavDropdown.tsx index 63ae809079737..e7991f7e09f63 100644 --- a/client/web/src/nav/NavBar/NavDropdown.tsx +++ b/client/web/src/nav/NavBar/NavDropdown.tsx @@ -26,8 +26,10 @@ interface NavDropdownProps { /** Alternative path to match against if item is active */ altPath?: string } & Pick<NavLinkProps, 'variant'> - /** The first item in the dropdown menu that serves as the "home" item. - It uses the path from the toggleItem. */ + /** + * The first item in the dropdown menu that serves as the "home" item. It uses the path from the + * toggleItem. + */ homeItem?: Omit<NavDropdownItem, 'path'> /** Items to display in the dropdown */ items: NavDropdownItem[] diff --git a/dev/sg/sg_src.go b/dev/sg/sg_src.go index 367a9dfebf805..82a5ad3ac75a3 100644 --- a/dev/sg/sg_src.go +++ b/dev/sg/sg_src.go @@ -87,7 +87,7 @@ var srcInstanceCommand = &cli.Command{ name := cmd.Args().First() instance, ok := sc.Instances[name] if !ok { - std.Out.WriteFailuref("Instance not found, register one with 'sg src register-instance'") + std.Out.WriteFailuref("Instance not found, register one with 'sg src-instance register'") return errors.New("instance not found") } sc.Current = name @@ -132,12 +132,12 @@ var srcCommand = &cli.Command{ } instanceName := sc.Current if instanceName == "" { - std.Out.WriteFailuref("Instance not found, register one with 'sg src register-instance'") + std.Out.WriteFailuref("Instance not found, register one with 'sg src-instance register'") return errors.New("set an instance with sg src-instance use [instance-name]") } instance, ok := sc.Instances[instanceName] if !ok { - std.Out.WriteFailuref("Instance not found, register one with 'sg src register-instance'") + std.Out.WriteFailuref("Instance not found, register one with 'sg src-instance register'") return errors.New("instance not found") } From 8cd293baa3d9baf57646a8546f65616a0de8126a Mon Sep 17 00:00:00 2001 From: Varun Gandhi <varun.gandhi@sourcegraph.com> Date: Fri, 24 Nov 2023 17:05:40 +0800 Subject: [PATCH 141/222] client: Minor cleanup for search-based code intel (#58331) The separation of the logic into different functions makes it clearer what the order of searches is. It also makes it clearer that for some reason, we're only using the locals information from the SCIP Document for 'Find references', and not for 'Go to definition'. Using the SCIP Document for for 'Go to definition' too could avoid a network request. --- .../src/enterprise/codeintel/searchBased.ts | 33 ++- .../codeintel/useSearchBasedCodeIntel.ts | 262 +++++++++--------- 2 files changed, 148 insertions(+), 147 deletions(-) diff --git a/client/web/src/enterprise/codeintel/searchBased.ts b/client/web/src/enterprise/codeintel/searchBased.ts index ee2d3c62272dd..070411ac3da4d 100644 --- a/client/web/src/enterprise/codeintel/searchBased.ts +++ b/client/web/src/enterprise/codeintel/searchBased.ts @@ -110,11 +110,11 @@ function makeRepositoryPattern(repo: string): string { /** The time in ms to delay between unindexed search request and the fallback indexed search request. */ const DEFAULT_UNINDEXED_SEARCH_TIMEOUT_MS = 5000 +export type RepoFilter = 'current-repo' | 'all-other-repos' + /** * Invoke the given search function by modifying the query with a term that will - * only look in the current git tree by appending a repo filter with the repo name - * and the current commit or, if `negateRepoFilter` is set, outside of current git - * tree. + * look in certain git trees (controlled by `repoFilter`). * * This is likely to timeout on large repos or organizations with monorepos if the * current commit is not an indexed commit. Instead of waiting for a timeout, we @@ -125,7 +125,6 @@ const DEFAULT_UNINDEXED_SEARCH_TIMEOUT_MS = 5000 * * @param search The search function. * @param args The arguments to the search function. - * @param negateRepoFilter Whether to look only inside or outside the given repo. */ export function searchWithFallback< P extends { @@ -136,14 +135,14 @@ export function searchWithFallback< queryTerms: string[] }, R ->(search: (args: P) => Promise<R>, args: P, negateRepoFilter = false, getSetting: SettingsGetter): Promise<R> { +>(search: (args: P) => Promise<R>, args: P, repoFilter: RepoFilter, getSetting: SettingsGetter): Promise<R> { if (getSetting<boolean>('basicCodeIntel.indexOnly', false)) { - return searchIndexed(search, args, negateRepoFilter, getSetting) + return searchIndexed(search, args, repoFilter, getSetting) } return raceWithDelayOffset( - searchUnindexed(search, args, negateRepoFilter, getSetting), - () => searchIndexed(search, args, negateRepoFilter, getSetting), + searchUnindexed(search, args, repoFilter, getSetting), + () => searchIndexed(search, args, repoFilter, getSetting), getSetting<number>('basicCodeIntel.unindexedSearchTimeout', DEFAULT_UNINDEXED_SEARCH_TIMEOUT_MS) ) } @@ -153,18 +152,16 @@ export function searchWithFallback< * * @param search The search function. * @param args The arguments to the search function. - * @param negateRepoFilter Whether to look only inside or outside the given repo. */ function searchIndexed< P extends { repo: string isFork: boolean isArchived: boolean - commit: string queryTerms: string[] }, R ->(search: (args: P) => Promise<R>, args: P, negateRepoFilter = false, getSetting: SettingsGetter): Promise<R> { +>(search: (args: P) => Promise<R>, args: P, repoFilter: RepoFilter, getSetting: SettingsGetter): Promise<R> { const { repo, isFork, isArchived, queryTerms } = args // Create a copy of the args so that concurrent calls to other @@ -175,14 +172,16 @@ function searchIndexed< // Unlike unindexed search, we can't supply a commit as that particular // commit may not be indexed. We force index and look inside/outside // the repo at _whatever_ commit happens to be indexed at the time. - queryTermsCopy.push((negateRepoFilter ? '-' : '') + `repo:${makeRepositoryPattern(repo)}`) + const isCurrentRepoSearch = repoFilter === 'current-repo' + const prefix = isCurrentRepoSearch ? '' : '-' + queryTermsCopy.push(prefix + `repo:${makeRepositoryPattern(repo)}`) queryTermsCopy.push('index:only') // If we're a fork, search in forks _for the same repo_. Otherwise, // search in forks only if it's set in the settings. This is also // symmetric for archived repositories. queryTermsCopy.push( - ...repositoryKindTerms(isFork && !negateRepoFilter, isArchived && !negateRepoFilter, getSetting) + ...repositoryKindTerms(isFork && isCurrentRepoSearch, isArchived && isCurrentRepoSearch, getSetting) ) return search({ ...args, queryTerms: queryTermsCopy }) @@ -193,7 +192,6 @@ function searchIndexed< * * @param search The search function. * @param args The arguments to the search function. - * @param negateRepoFilter Whether to look only inside or outside the given repo. */ function searchUnindexed< P extends { @@ -204,7 +202,7 @@ function searchUnindexed< queryTerms: string[] }, R ->(search: (args: P) => Promise<R>, args: P, negateRepoFilter = false, getSetting: SettingsGetter): Promise<R> { +>(search: (args: P) => Promise<R>, args: P, repoFilter: RepoFilter, getSetting: SettingsGetter): Promise<R> { const { repo, isFork, isArchived, commit, queryTerms } = args // Create a copy of the args so that concurrent calls to other @@ -212,7 +210,8 @@ function searchUnindexed< // modified. const queryTermsCopy = [...queryTerms] - if (!negateRepoFilter) { + const isCurrentRepoSearch = repoFilter === 'current-repo' + if (isCurrentRepoSearch) { // Look in this commit only queryTermsCopy.push(`repo:${makeRepositoryPattern(repo)}@${commit}`) } else { @@ -224,7 +223,7 @@ function searchUnindexed< // search in forks only if it's set in the settings. This is also // symmetric for archived repositories. queryTermsCopy.push( - ...repositoryKindTerms(isFork && !negateRepoFilter, isArchived && !negateRepoFilter, getSetting) + ...repositoryKindTerms(isFork && isCurrentRepoSearch, isArchived && isCurrentRepoSearch, getSetting) ) return search({ ...args, queryTerms: queryTermsCopy }) diff --git a/client/web/src/enterprise/codeintel/useSearchBasedCodeIntel.ts b/client/web/src/enterprise/codeintel/useSearchBasedCodeIntel.ts index 7c45907c51b18..25ac580464996 100644 --- a/client/web/src/enterprise/codeintel/useSearchBasedCodeIntel.ts +++ b/client/web/src/enterprise/codeintel/useSearchBasedCodeIntel.ts @@ -28,6 +28,7 @@ import { type SearchResult, searchResultToResults, searchWithFallback, + type RepoFilter, } from './searchBased' import { sortByProximity } from './sort' @@ -119,149 +120,139 @@ export const useSearchBasedCodeIntel = (options: UseSearchBasedCodeIntelOptions) } } -// searchBasedReferences is 90% copy&paste from code-intel-extension's -export async function searchBasedReferences({ - repo, - isFork, - isArchived, - commit, - searchToken, - path, - position, - fileContent, - spec, - getSetting, - filter, -}: UseSearchBasedCodeIntelOptions): Promise<Location[]> { +function searchBasedReferencesViaSCIPLocals(options: UseSearchBasedCodeIntelOptions): Location[] | undefined { const view = getBlobEditView() - if (view !== null) { - const occurrences = view.state.facet(syntaxHighlight).occurrences - for (const occurrence of occurrences) { - if ( - occurrence.symbol?.startsWith('local ') && - occurrence.range.contains(new ScipPosition(position.line, position.character)) - ) { - return occurrences - .filter(reference => reference.symbol === occurrence.symbol) - .map(reference => ({ - repo, - file: path, - content: fileContent, - commitID: commit, - range: reference.range, - url: toPrettyBlobURL({ - filePath: path, - revision: commit, - repoName: repo, - commitID: commit, - position: { - line: reference.range.start.line + 1, - character: reference.range.start.character + 1, - }, - }), - lines: split(fileContent), - precise: false, - })) - } + if (view === null) { + return + } + const occurrences = view.state.facet(syntaxHighlight).occurrences + const { path, repo, position, fileContent: content, commit: commitID } = options + const lines = split(content) + const scipPosition = new ScipPosition(position.line, position.character) + for (const occurrence of occurrences) { + const symbol = occurrence.symbol + if (!(symbol?.startsWith('local ') && occurrence.range.contains(scipPosition))) { + continue } + return occurrences + .filter(reference => reference.symbol === symbol) + .map(reference => ({ + repo, + file: path, + content, + commitID, + range: reference.range, + url: toPrettyBlobURL({ + filePath: path, + revision: commitID, + repoName: repo, + commitID, + position: { + line: reference.range.start.line + 1, + character: reference.range.start.character + 1, + }, + }), + lines, + precise: false, + })) } - const filterReferences = (results: Location[]): Location[] => - filter ? results.filter(location => location.file.includes(filter)) : results + return +} +async function searchBasedReferencesViaSquirrel( + options: UseSearchBasedCodeIntelOptions +): Promise<Location[] | undefined> { + const { repo, position, path, commit, fileContent } = options + const symbol = await findSymbol({ repository: repo, path, commit, row: position.line, column: position.character }) + if (!symbol?.refs) { + return + } + // HISTORICAL NOTE: Squirrel only support find refs for locals + // (the code below uses the same 'path' value for all references, + // and is based as-is on the original code written by Chris), + // so we can delete this code once we have SCIP locals support + // for all the same languages that Squirrel does. + const lines = split(fileContent) + return symbol.refs.map(reference => ({ + repo, + file: path, + content: fileContent, + commitID: commit, + range: rangeToExtensionRange(reference), + url: toPrettyBlobURL({ + filePath: path, + revision: commit, + repoName: repo, + commitID: commit, + position: { + line: reference.row + 1, + character: reference.column + 1, + }, + }), + lines, + precise: false, + })) +} + +async function searchBasedDefinitionsViaSquirrel( + options: UseSearchBasedCodeIntelOptions +): Promise<Location[] | undefined> { + const { repo, commit, path, position, fileContent } = options const symbol = await findSymbol({ repository: repo, commit, path, row: position.line, column: position.character }) - if (symbol?.refs) { - return symbol.refs.map(reference => ({ + if (!symbol?.def) { + return + } + return [ + { repo, file: path, content: fileContent, commitID: commit, - range: rangeToExtensionRange(reference), + range: rangeToExtensionRange(symbol.def), url: toPrettyBlobURL({ filePath: path, revision: commit, repoName: repo, commitID: commit, position: { - line: reference.row + 1, - character: reference.column + 1, + line: symbol.def.row + 1, + character: symbol.def.column + 1, }, }), lines: split(fileContent), precise: false, - })) - } + }, + ] +} +async function searchBasedReferencesViaSearchQueries(options: UseSearchBasedCodeIntelOptions): Promise<Location[]> { + const { searchToken, path, repo, isFork, isArchived, commit, spec, filter } = options const queryTerms = referencesQuery({ searchToken, path, fileExts: spec.fileExts }) - const queryArguments = { - repo, - isFork, - isArchived, - commit, - queryTerms, - filterReferences, - } + const filterReferences = (results: Location[]): Location[] => + filter ? results.filter(location => location.file.includes(filter)) : results - const doSearch = (negateRepoFilter: boolean): Promise<Location[]> => + const doSearch = (repoFilter: RepoFilter): Promise<Location[]> => searchWithFallback( args => searchAndFilterReferences({ queryTerms: args.queryTerms, filterReferences }), - queryArguments, - negateRepoFilter, - getSetting + { repo, isFork, isArchived, commit, queryTerms, filterReferences }, + repoFilter, + options.getSetting ) - // Perform a search in the current git tree - const sameRepoReferences = doSearch(false) + const sameRepoReferences = doSearch('current-repo') // Perform an indexed search over all _other_ repositories. This // query is ineffective on DotCom as we do not keep repositories // in the index permanently. - const remoteRepoReferences = isSourcegraphDotCom() ? Promise.resolve([]) : doSearch(true) + const remoteRepoReferences = isSourcegraphDotCom() ? Promise.resolve([]) : doSearch('all-other-repos') - // Resolve then merge all references and sort them by proximity - // to the current text document path. - const referenceChunk = [sameRepoReferences, remoteRepoReferences] - const mergedReferences = flatten(await Promise.all(referenceChunk)) - return sortByProximity(mergedReferences, location.pathname) + return flatten(await Promise.all([sameRepoReferences, remoteRepoReferences])) } -export async function searchBasedDefinitions({ - repo, - isFork, - isArchived, - commit, - searchToken, - fileContent, - path, - position, - spec, - getSetting, - filter, -}: UseSearchBasedCodeIntelOptions): Promise<Location[]> { - const symbol = await findSymbol({ repository: repo, commit, path, row: position.line, column: position.character }) - if (symbol?.def) { - return [ - { - repo, - file: path, - content: fileContent, - commitID: commit, - range: rangeToExtensionRange(symbol.def), - url: toPrettyBlobURL({ - filePath: path, - revision: commit, - repoName: repo, - commitID: commit, - position: { - line: symbol.def.row + 1, - character: symbol.def.column + 1, - }, - }), - lines: split(fileContent), - precise: false, - }, - ] - } - +async function searchBasedDefinitionsViaSearchQueries(options: UseSearchBasedCodeIntelOptions): Promise<Location[]> { + const { searchToken, path, repo, isFork, fileContent, isArchived, commit, spec, filter } = options + // Construct base definition query without scoping terms + const queryTerms = definitionQuery({ searchToken, path, fileExts: spec.fileExts }) const filterDefinitions = (results: Location[]): Location[] => { const filteredByName = filter ? results.filter(location => location.file.includes(filter)) : results return spec?.filterDefinitions @@ -273,29 +264,15 @@ export async function searchBasedDefinitions({ : filteredByName } - // Construct base definition query without scoping terms - const queryTerms = definitionQuery({ searchToken, path, fileExts: spec.fileExts }) - const queryArguments = { - repo, - isFork, - isArchived, - commit, - path, - fileContent, - filterDefinitions, - queryTerms, - } - - const doSearch = (negateRepoFilter: boolean): Promise<Location[]> => + const doSearch = (repoFilter: RepoFilter): Promise<Location[]> => searchWithFallback( args => searchAndFilterDefinitions({ spec, path, filterDefinitions, queryTerms: args.queryTerms }), - queryArguments, - negateRepoFilter, - getSetting + { repo, isFork, isArchived, commit, path, fileContent, filterDefinitions, queryTerms }, + repoFilter, + options.getSetting ) - // Perform a search in the current git tree - const sameRepoDefinitions = doSearch(false) + const sameRepoDefinitions = doSearch('current-repo') // Return any local location definitions first const results = await sameRepoDefinitions @@ -307,7 +284,32 @@ export async function searchBasedDefinitions({ // an indexed search over all repositories. Do not do this on the DotCom // instance as we are unlikely to have indexed the relevant definition // and we'd end up jumping to what would seem like a random line of code. - return isSourcegraphDotCom() ? Promise.resolve([]) : doSearch(true) + return isSourcegraphDotCom() ? Promise.resolve([]) : doSearch('all-other-repos') +} + +// Originally based on the code from code-intel-extension +export async function searchBasedReferences(options: UseSearchBasedCodeIntelOptions): Promise<Location[]> { + const refsViaSCIPLocals = searchBasedReferencesViaSCIPLocals(options) + if (refsViaSCIPLocals) { + return refsViaSCIPLocals + } + + const refsViaSquirrel = await searchBasedReferencesViaSquirrel(options) + if (refsViaSquirrel) { + return refsViaSquirrel + } + + const refsViaSearchQueries = await searchBasedReferencesViaSearchQueries(options) + return sortByProximity(refsViaSearchQueries, options.path) +} + +export async function searchBasedDefinitions(options: UseSearchBasedCodeIntelOptions): Promise<Location[]> { + const defsViaSquirrel = await searchBasedDefinitionsViaSquirrel(options) + if (defsViaSquirrel) { + return defsViaSquirrel + } + + return searchBasedDefinitionsViaSearchQueries(options) } /** From 6ee8ad2c6c8923ef1d8062a668dfee44217a36b8 Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Fri, 24 Nov 2023 10:31:59 +0100 Subject: [PATCH 142/222] gitserver: More logging in janitor (#58540) The janitor process is currently very very silent and it's hard to know if it's even doing anything. Until we make it a proper worker with proper reporting, I suggest we add a bit more logs here to understand what it does. --- cmd/gitserver/internal/cleanup.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/cmd/gitserver/internal/cleanup.go b/cmd/gitserver/internal/cleanup.go index 96f6b17f6ee6e..bbac52f53ed91 100644 --- a/cmd/gitserver/internal/cleanup.go +++ b/cmd/gitserver/internal/cleanup.go @@ -52,6 +52,7 @@ func NewJanitor(ctx context.Context, cfg JanitorConfig, db database.DB, rcf *wre return goroutine.NewPeriodicGoroutine( actor.WithInternalActor(ctx), goroutine.HandlerFunc(func(ctx context.Context) error { + logger.Info("Starting janitor run") // On Sourcegraph.com, we clone repos lazily, meaning whatever github.com // repo is visited will be cloned eventually. So over time, we would always // accumulate terabytes of repos, of which many are probably not visited @@ -64,12 +65,15 @@ func NewJanitor(ctx context.Context, cfg JanitorConfig, db database.DB, rcf *wre if envvar.SourcegraphDotComMode() { diskSizer := &StatDiskSizer{} logger := logger.Scoped("dotcom-repo-cleaner") + start := time.Now() + logger.Info("Starting dotcom repo cleaner") toFree, err := howManyBytesToFree(logger, cfg.ReposDir, diskSizer, cfg.DesiredPercentFree) if err != nil { logger.Error("ensuring free disk space", log.Error(err)) } else if err := freeUpSpace(ctx, logger, db, cfg.ShardID, cfg.ReposDir, diskSizer, cfg.DesiredPercentFree, toFree); err != nil { logger.Error("error freeing up space", log.Error(err)) } + logger.Info("dotcom repo cleaner finished", log.Int64("toFree", toFree), log.Bool("failed", err != nil), log.String("duration", time.Since(start).String())) } gitserverAddrs := gitserver.NewGitserverAddresses(conf.Get()) @@ -248,6 +252,8 @@ func cleanupRepos( ) { logger = logger.Scoped("cleanup") + start := time.Now() + janitorRunning.Set(1) defer janitorRunning.Set(0) @@ -562,6 +568,8 @@ func cleanupRepos( }) } + reposCleaned := 0 + err := iterateGitDirs(reposDir, func(gitDir common.GitDir) (done bool) { for _, cfn := range cleanups { // Check if context has been canceled, if so skip the rest of the repos. @@ -586,6 +594,13 @@ func cleanupRepos( } } + reposCleaned++ + + // Every 1000 repos, log a progress message. + if reposCleaned%1000 == 0 { + logger.Info("Janitor progress", log.Int("repos_cleaned", reposCleaned)) + } + return false }) if err != nil { @@ -598,6 +613,8 @@ func cleanupRepos( logger.Error("setting repo sizes", log.Error(err)) } } + + logger.Info("Janitor run finished", log.String("duration", time.Since(start).String())) } func checkRepoDirCorrupt(rcf *wrexec.RecordingCommandFactory, reposDir string, dir common.GitDir) (bool, string, error) { From d9c1d287c8c0352773d67bed5eb58d0c8f5d6585 Mon Sep 17 00:00:00 2001 From: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> Date: Fri, 24 Nov 2023 09:52:17 +0000 Subject: [PATCH 143/222] aspect workflows: add initial aspect workflow yaml (#56569) * add initial aspect workflow yaml - try reading docker config env var - bump both timers - bump grpc test timout to long - skip additional perforce test and run all tests - bump timeouts - more timeout bumps and skip p4 test - bump doc:test timeout - bump e2e_test timeout - bump database/connections/live timeout - tag integration tests as exclusive * add recommended bazelrc in workflows to speed up cold builds * disable experimental_fetch_all_coverage_outputs * port changes from https://github.com/sourcegraph/sourcegraph/compare/aspect-trial/wb-add-initial-config...aspect-trial/wb-add-initial-config-greg * bazel configure * add //:postcss_config_js as data target to client/web * remove postcss added in debug * use node-fetch and only test codeintellify * use testing fetch.js setup * fix syntax in testSetup * various fixes revert timeout bump on repository test re-enable git p4 test add testing from shared deps bazel configure * update comments on skipped tests * restore `is_percy_enabled` for mocha_test * slightly increase repo cloning wait * use process.cwd instead of __dirname * set sizing to moderate as well for embeddings * remove setting CI in workflows yaml * fix sizing * workflow yaml tweaks and bazelrc tweaks * make bazelrc consistent with what was in workflow yaml --------- Co-authored-by: Jean-Hadrien Chabran <jh@chabran.fr> Co-authored-by: Greg Magolan <greg@aspect.dev> --- .aspect/bazelrc/ci.sourcegraph.bazelrc | 15 ++++++----- .aspect/workflows/bazelrc | 3 +++ .aspect/workflows/config.yaml | 26 +++++++++++++++++++ client/codeintellify/vitest.config.ts | 3 +-- client/web/BUILD.bazel | 1 + client/web/src/end-to-end/BUILD.bazel | 4 ++- .../frontend-platform/site-admin.test.ts | 4 ++- .../frontend-platform/theme-switcher.test.ts | 4 ++- client/web/src/integration/notebook.test.ts | 2 +- cmd/blobstore/internal/blobstore/BUILD.bazel | 2 +- cmd/embeddings/shared/BUILD.bazel | 1 + cmd/frontend/graphqlbackend/BUILD.bazel | 2 +- .../internal/authz/resolvers/BUILD.bazel | 2 +- doc/BUILD.bazel | 2 +- .../database/connections/live/BUILD.bazel | 2 +- internal/gqltestutil/repository.go | 2 +- internal/httpcli/client_test.go | 6 ++--- testing/BUILD.bazel | 1 + 18 files changed, 60 insertions(+), 22 deletions(-) create mode 100644 .aspect/workflows/bazelrc create mode 100644 .aspect/workflows/config.yaml diff --git a/.aspect/bazelrc/ci.sourcegraph.bazelrc b/.aspect/bazelrc/ci.sourcegraph.bazelrc index 572c553af4927..fa918f21f0ac9 100644 --- a/.aspect/bazelrc/ci.sourcegraph.bazelrc +++ b/.aspect/bazelrc/ci.sourcegraph.bazelrc @@ -12,9 +12,10 @@ build --repository_cache=/home/buildkite/repocache-sourcegraph build --test_env=PATH # Needed for DB in CI -build --test_env=PGUSER -build --test_env=PGSSLMODE -build --test_env=PGDATABASE +test --test_env=PGUSER=postgres +test --test_env=PGPASSWORD=postgres +test --test_env=PGSSLMODE=disable +test --test_env=PGDATABASE=postgres # Allow tests to understand they're running in CI, which forces dbtest to drop database even in case of failures. # TODO(JH) we should instead wipe all templates after a job finishes. @@ -30,9 +31,11 @@ build --test_env=BUILDKITE # Needed for mocha tests # We have to use the `--define` flag here instead of `--test_env` because # the mocha tests target is the build target and it's tested with `build_test`. -build --define=E2E_HEADLESS=false -build --define=E2E_SOURCEGRAPH_BASE_URL="http://localhost:7080" -build --define=DISPLAY=:99 +test --define=E2E_HEADLESS=false +# if we set this to localhost, chrome will refuse to conenct since local host is in its HTTP Strict Transport Security +# by setting the loopback address we get passed that +test --define=E2E_SOURCEGRAPH_BASE_URL="http://127.0.0.1:7080" +test --define=DISPLAY=:99 # Provides git commit, branch information to build targets like Percy via status file. # https://bazel.build/docs/user-manual#workspace-status diff --git a/.aspect/workflows/bazelrc b/.aspect/workflows/bazelrc new file mode 100644 index 0000000000000..2b7d0e2b67045 --- /dev/null +++ b/.aspect/workflows/bazelrc @@ -0,0 +1,3 @@ +common --remote_download_minimal +common --nobuild_runfile_links +common --noexperimental_reuse_sandbox_directories diff --git a/.aspect/workflows/config.yaml b/.aspect/workflows/config.yaml new file mode 100644 index 0000000000000..95725c7650e89 --- /dev/null +++ b/.aspect/workflows/config.yaml @@ -0,0 +1,26 @@ +--- +bazel: + rcfiles: + - ".aspect/bazelrc/ci.sourcegraph.bazelrc" + flags: + # This flag is required because otherwise the integration tests fail with `fcmod` Operation not permitted + # which is probably related to the launced containers writing to mapped in directories as root and then + # when the container exits the files that are left over are root. + # TODO(burmudar): launch containers with uid/guid mapped in + - --noexperimental_reuse_sandbox_directories +env: + REDIS_CACHE_ENDPOINT: ":6379" + GIT_PAGER: '' +tasks: + # Checks that BUILD file content is up-to-date with sources + # gazelle: + # Checks that all tests are passing + test: + include_eternal_tests: true + targets: + - //... + - //testing:grpc_backend_integration_test + # This target should only really run when on main which we aren't handling. For the time being while we + # evaluate Aspect Workflows it is ok + # TODO(burmudar): Let this only run on main branch + - //testing:codeintel_integration_test diff --git a/client/codeintellify/vitest.config.ts b/client/codeintellify/vitest.config.ts index e16b5fdd7c1ab..0a2927f06bd01 100644 --- a/client/codeintellify/vitest.config.ts +++ b/client/codeintellify/vitest.config.ts @@ -3,7 +3,6 @@ import { defineProjectWithDefaults } from '../../vitest.shared' export default defineProjectWithDefaults(__dirname, { test: { environment: 'jsdom', - setupFiles: ['src/testSetup.test.ts'], - singleThread: true, // got `failed to terminate worker` occasionally in Bazel CI + setupFiles: ['src/testSetup.test.ts', '../testing/src/fetch.js'], }, }) diff --git a/client/web/BUILD.bazel b/client/web/BUILD.bazel index 7d8d2f9337911..8b79f23430c05 100644 --- a/client/web/BUILD.bazel +++ b/client/web/BUILD.bazel @@ -2120,6 +2120,7 @@ esbuild( minify = True, sourcemap = "linked", splitting = True, + tags = ["exclusive"], visibility = ["//client/web/dist:__subpackages__"], deps = ESBUILD_CONFIG_DEPS, ) diff --git a/client/web/src/end-to-end/BUILD.bazel b/client/web/src/end-to-end/BUILD.bazel index b612815af691d..55799275f1b79 100644 --- a/client/web/src/end-to-end/BUILD.bazel +++ b/client/web/src/end-to-end/BUILD.bazel @@ -58,7 +58,9 @@ ts_project( mocha_test( name = "e2e", timeout = "moderate", - env = {"INCLUDE_ADMIN_ONBOARDING": "false"}, + env = { + "INCLUDE_ADMIN_ONBOARDING": "false", + }, node_toolchain = select({ "//:darwin_docker_e2e_go": "@nodejs_darwin_arm64//:node_toolchain", "//conditions:default": None, diff --git a/client/web/src/end-to-end/frontend-platform/site-admin.test.ts b/client/web/src/end-to-end/frontend-platform/site-admin.test.ts index db4a9565b5e84..fe77b7e8ae9ab 100644 --- a/client/web/src/end-to-end/frontend-platform/site-admin.test.ts +++ b/client/web/src/end-to-end/frontend-platform/site-admin.test.ts @@ -9,7 +9,9 @@ import { initEndToEndTest } from '../utils/initEndToEndTest' const { sourcegraphBaseUrl } = getConfig('gitHubDotComToken', 'sourcegraphBaseUrl') -describe('Site Admin', () => { +// Since the test inside the describe is skipped the after does not execute. Consequently the page does not get closed +// causing subsequent failures. This is a known bug in Mocha +describe.skip('Site Admin', () => { let driver: Driver before(async function () { diff --git a/client/web/src/end-to-end/frontend-platform/theme-switcher.test.ts b/client/web/src/end-to-end/frontend-platform/theme-switcher.test.ts index 8dece4ab28c44..e67ffc303f6c3 100644 --- a/client/web/src/end-to-end/frontend-platform/theme-switcher.test.ts +++ b/client/web/src/end-to-end/frontend-platform/theme-switcher.test.ts @@ -9,7 +9,9 @@ import { initEndToEndTest } from '../utils/initEndToEndTest' const { sourcegraphBaseUrl } = getConfig('gitHubDotComToken', 'sourcegraphBaseUrl') -describe('Theme switcher', () => { +// Since the test inside the describe is skipped the after does not execute. Consequently the page does not get closed +// causing subsequent failures. This is a known bug in Mocha +describe.skip('Theme switcher', () => { let driver: Driver before(async () => { diff --git a/client/web/src/integration/notebook.test.ts b/client/web/src/integration/notebook.test.ts index bf1f1972622e7..f2ab377aff552 100644 --- a/client/web/src/integration/notebook.test.ts +++ b/client/web/src/integration/notebook.test.ts @@ -73,7 +73,7 @@ const viewerSettings: Partial<WebGraphQlOperations & SharedGraphQlOperations> = } const now = new Date() -const downloadPath = process.env.TEST_TMPDIR || __dirname +const downloadPath = process.env.TEST_TMPDIR || process.cwd() const notebookFixture = (id: string, title: string, blocks: NotebookFields['blocks']): NotebookFields => ({ __typename: 'Notebook', diff --git a/cmd/blobstore/internal/blobstore/BUILD.bazel b/cmd/blobstore/internal/blobstore/BUILD.bazel index 66c803d7f8ffb..2f2975c583194 100644 --- a/cmd/blobstore/internal/blobstore/BUILD.bazel +++ b/cmd/blobstore/internal/blobstore/BUILD.bazel @@ -25,7 +25,7 @@ go_library( go_test( name = "blobstore_test", - timeout = "short", + timeout = "moderate", srcs = ["blobstore_test.go"], data = glob(["testdata/**"]), deps = [ diff --git a/cmd/embeddings/shared/BUILD.bazel b/cmd/embeddings/shared/BUILD.bazel index 460cd9154cca7..40668b409a0e0 100644 --- a/cmd/embeddings/shared/BUILD.bazel +++ b/cmd/embeddings/shared/BUILD.bazel @@ -69,6 +69,7 @@ copy_file( # gazelle:exclude testdata go_test( name = "shared_test", + size = "medium", timeout = "moderate", srcs = [ "context_qa_test.go", diff --git a/cmd/frontend/graphqlbackend/BUILD.bazel b/cmd/frontend/graphqlbackend/BUILD.bazel index 99952c4223c68..b654ba44f587a 100644 --- a/cmd/frontend/graphqlbackend/BUILD.bazel +++ b/cmd/frontend/graphqlbackend/BUILD.bazel @@ -386,7 +386,7 @@ go_library( go_test( name = "graphqlbackend_test", - timeout = "moderate", + timeout = "long", srcs = [ "access_requests_test.go", "access_tokens_test.go", diff --git a/cmd/frontend/internal/authz/resolvers/BUILD.bazel b/cmd/frontend/internal/authz/resolvers/BUILD.bazel index a12c5b7146ed1..de97ae485bbeb 100644 --- a/cmd/frontend/internal/authz/resolvers/BUILD.bazel +++ b/cmd/frontend/internal/authz/resolvers/BUILD.bazel @@ -44,7 +44,7 @@ go_library( go_test( name = "resolvers_test", - timeout = "short", + timeout = "moderate", srcs = [ "permissions_sync_jobs_test.go", "resolver_test.go", diff --git a/doc/BUILD.bazel b/doc/BUILD.bazel index 527bfdff3e003..8e5533eb447ca 100644 --- a/doc/BUILD.bazel +++ b/doc/BUILD.bazel @@ -1,7 +1,7 @@ sh_test( name = "test", size = "small", - timeout = "moderate", + timeout = "long", srcs = ["test.sh"], args = ["$(location //dev/tools:docsite)"], data = [ diff --git a/internal/database/connections/live/BUILD.bazel b/internal/database/connections/live/BUILD.bazel index 0976a6ad9ff09..cd397a24b1a44 100644 --- a/internal/database/connections/live/BUILD.bazel +++ b/internal/database/connections/live/BUILD.bazel @@ -26,7 +26,7 @@ go_library( go_test( name = "live_test", - timeout = "moderate", + timeout = "long", srcs = ["migration_test.go"], embed = [":live"], tags = [ diff --git a/internal/gqltestutil/repository.go b/internal/gqltestutil/repository.go index 4735c77e4cc4a..0e8524ba698f3 100644 --- a/internal/gqltestutil/repository.go +++ b/internal/gqltestutil/repository.go @@ -14,7 +14,7 @@ import ( // // This method requires the authenticated user to be a site admin. func (c *Client) WaitForReposToBeCloned(repos ...string) error { - timeout := 120 * time.Second + timeout := 130 * time.Second return c.WaitForReposToBeClonedWithin(timeout, repos...) } diff --git a/internal/httpcli/client_test.go b/internal/httpcli/client_test.go index ca1498aedf460..ddaaf888a1ce7 100644 --- a/internal/httpcli/client_test.go +++ b/internal/httpcli/client_test.go @@ -13,7 +13,6 @@ import ( "net" "net/http" "net/http/httptest" - "os" "reflect" "strings" "sync/atomic" @@ -406,9 +405,8 @@ func TestErrorResilience(t *testing.T) { // hardcode what go returns for DNS not found to avoid // flakiness across machines. However, CI correctly respects // this so we continue to run against a real DNS server on CI. - if os.Getenv("CI") == "" { - cli.Transport = notFoundTransport{} - } + // TODO(burmudar): Fix DNS infrastructure in Aspect Workflows Infra + cli.Transport = notFoundTransport{} return nil }, NewErrorResilientTransportOpt( diff --git a/testing/BUILD.bazel b/testing/BUILD.bazel index ca9851e3f9bb3..a87879f356f28 100644 --- a/testing/BUILD.bazel +++ b/testing/BUILD.bazel @@ -2,6 +2,7 @@ load(":defs.bzl", "server_integration_test") server_integration_test( name = "e2e_test", + timeout = "long", args = [ "$(location //client/web/src/end-to-end:e2e)", "$(rootpath //:mocha_config)", From 26ef2cf6adafc3e45bb3f1d31bbf578f522feb9a Mon Sep 17 00:00:00 2001 From: Stefan Hengl <stefan@sourcegraph.com> Date: Fri, 24 Nov 2023 13:15:22 +0100 Subject: [PATCH 144/222] search: add new pattern type to settings schema (#58527) We add "newStandardRC1" to the list of allowed values for pattern types in the settings schema. At the same time we set the default for the local dev environment. Once this is merged we can update the global settings for S2 as well. The new behavior for S2 and local will be like this: - All searches will be made in the "precise (NEW)" mode - Users can quickly switch between different modes (smart, precise (legacy), precice (NEW)) by using the smart search toggle - The choice is only persisted for the current session - Users can permanently opt out in their user settings Why? Currently, "smart search" is hardcoded as default. However it can be overwritten by settings. The idea is to set "precise (NEW)" as new default for Sourcegraph instances (local and s2) in global settings. Users can still overwrite in their user settings. The following user settings would effectively revert this change. ``` "search.defaultPatternType":"standard", "search.defaultMode":"smart" ``` Note: - The feature-flag "search-new-keyword" only determines whether the extended toggle (3 choices) is visible. ## Test plan - I verified that the new global settings show up locally - I verified that the settings can be overwritten in the user settings as described --- dev/global-settings.json | 5 ++++- schema/settings.schema.json | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dev/global-settings.json b/dev/global-settings.json index f5e52672e80c0..b32a366078410 100644 --- a/dev/global-settings.json +++ b/dev/global-settings.json @@ -11,5 +11,8 @@ }, "search.repositoryGroups": { "test": ["github.com/gorilla/mux", "github.com/gorilla/pat"] - } + }, + // team search platform: This enables the experimental "precise (NEW)" search mode by default + "search.defaultMode": "precise", + "search.defaultPatternType": "newStandardRC1" } diff --git a/schema/settings.schema.json b/schema/settings.schema.json index bde5e322f6a41..2ed0f3130b9fe 100644 --- a/schema/settings.schema.json +++ b/schema/settings.schema.json @@ -390,7 +390,7 @@ "search.defaultPatternType": { "description": "The default pattern type that search queries will be intepreted as. `lucky` is an experimental mode that will interpret the query in multiple ways.", "type": "string", - "pattern": "standard|literal|regexp|lucky" + "pattern": "standard|literal|regexp|lucky|newStandardRC1" }, "search.defaultCaseSensitive": { "description": "Whether query patterns are treated case sensitively. Patterns are case insensitive by default.", From 85587e898441f5382273f10cf6e0b72361f0c70c Mon Sep 17 00:00:00 2001 From: Petri-Johan Last <petri.last@sourcegraph.com> Date: Fri, 24 Nov 2023 14:24:29 +0200 Subject: [PATCH 145/222] [bitbucket cloud] Support workspace access tokens (#58465) --- CHANGELOG.md | 1 + .../backend/external_services_test.go | 2 +- cmd/gitserver/internal/cloneurl/clone_url.go | 8 +- doc/admin/external_service/bitbucket_cloud.md | 43 ++++++ internal/authz/providers/authz_test.go | 14 +- internal/batches/sources/bitbucketcloud.go | 4 +- internal/extsvc/bitbucketcloud/client.go | 15 +- internal/repos/bitbucketcloud.go | 1 - internal/repos/bitbucketcloud_test.go | 14 ++ .../with-access-token.yaml | 143 ++++++++++++++++++ internal/types/secret.go | 16 +- schema/bitbucket_cloud.schema.json | 25 ++- schema/schema.go | 6 +- 13 files changed, 273 insertions(+), 19 deletions(-) create mode 100644 internal/repos/testdata/sources/BITBUCKETCLOUD-LIST-REPOS/with-access-token.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index aa3752bde2109..55eed8ee61691 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,6 +72,7 @@ All notable changes to Sourcegraph are documented in this file. ### Added - Added configurable GraphQL query cost limitations to prevent unintended resource exhaustion. Default values are now provided and enforced, replacing the previously unlimited behaviour. For more information, please refer to: [GraphQL Cost Limits Documentation](https://docs.sourcegraph.com/api/graphql#cost-limits). See details at [#58346](https://github.com/sourcegraph/sourcegraph/pull/58346). +- Sourcegraph now supports connecting to Bitbucket Cloud using Workspace Access Tokens. [#58465](https://github.com/sourcegraph/sourcegraph/pull/58465). ### Fixed diff --git a/cmd/frontend/backend/external_services_test.go b/cmd/frontend/backend/external_services_test.go index bdb989e7b2358..845701091fc74 100644 --- a/cmd/frontend/backend/external_services_test.go +++ b/cmd/frontend/backend/external_services_test.go @@ -49,7 +49,7 @@ func TestAddRepoToExclude(t *testing.T) { kind: extsvc.KindBitbucketCloud, repo: makeBitbucketCloudRepo(), initialConfig: `{"appPassword":"","url":"https://bitbucket.org","username":""}`, - expectedConfig: `{"appPassword":"","exclude":[{"name":"sg/sourcegraph"}],"url":"https://bitbucket.org","username":""}`, + expectedConfig: `{"exclude":[{"name":"sg/sourcegraph"}],"url":"https://bitbucket.org"}`, }, { name: "second attempt of excluding same repo is ignored for BitbucketServer schema", diff --git a/cmd/gitserver/internal/cloneurl/clone_url.go b/cmd/gitserver/internal/cloneurl/clone_url.go index 3911285c4b0c7..3cbecb89db4a2 100644 --- a/cmd/gitserver/internal/cloneurl/clone_url.go +++ b/cmd/gitserver/internal/cloneurl/clone_url.go @@ -174,7 +174,7 @@ func bitbucketServerCloneURL(repo *bitbucketserver.Repo, cfg *schema.BitbucketSe } // bitbucketCloudCloneURL returns the repository's Git remote URL with the configured -// Bitbucket Cloud app password inserted in the URL userinfo. +// Bitbucket Cloud app password or workspace access token inserted in the URL userinfo. func bitbucketCloudCloneURL(logger log.Logger, repo *bitbucketcloud.Repo, cfg *schema.BitbucketCloudConnection) string { if cfg.GitURLType == "ssh" { return fmt.Sprintf("git@%s:%s.git", cfg.Url, repo.FullName) @@ -197,7 +197,11 @@ func bitbucketCloudCloneURL(logger log.Logger, repo *bitbucketcloud.Repo, cfg *s return fallbackURL } - u.User = url.UserPassword(cfg.Username, cfg.AppPassword) + if cfg.AccessToken != "" { + u.User = url.UserPassword("x-token-auth", cfg.AccessToken) + } else { + u.User = url.UserPassword(cfg.Username, cfg.AppPassword) + } return u.String() } diff --git a/doc/admin/external_service/bitbucket_cloud.md b/doc/admin/external_service/bitbucket_cloud.md index 2bede0d83e0ad..200a8c9175412 100644 --- a/doc/admin/external_service/bitbucket_cloud.md +++ b/doc/admin/external_service/bitbucket_cloud.md @@ -18,6 +18,49 @@ In addition, there is one more field for configuring which repositories are mirr - [`teams`](bitbucket_cloud.md#configuration)<br>A list of teams (workspaces) that the configured user has access to whose repositories should be synced. - [`exclude`](bitbucket_cloud.md#configuration)<br>A list of repositories to exclude, which takes precedence over the `teams` field. +## Configuration options + +Bitbucket Cloud code host connections can be configured with either a username and app password combination, or with workspace access tokens. + +### Username and app password + +1. Visit your [Bitbucket account settings page](https://bitbucket.org/account/settings). +2. Navigate to **App passwords**. +3. Select **Create app password**. +4. Give your app password a label. +5. Select the `Projects: Read` permission. `Repositories: Read` should automatically be selected. +6. Press **Create**. + +Use the newly created app password and your username to configure the Bitbucket Cloud connection: + +```json +{ + "url": "https://bitbucket.org", + "username": "USERNAME", + "appPassword": "<PASSWORD>", + // ... other settings +} +``` + +### Workspace access token + +1. Visit the Bitbucket Cloud workspace settings page of the workspace you want to create an access token for. +2. Navigate to **Security > Access tokens**. +3. Press **Create workspace access token**. +4. Give your access token a name. +5. Select the `Projects: Read` permission. `Repositories: Read` should automatically be selected. +6. Press **Create**. + +Use the newly created access token to configure the Bitbucket Cloud connection: + +```json +{ + "url": "https://bitbucket.org", + "accessToken": "ACCESS_TOKEN", + // ... other settings +} +``` + ### HTTPS cloning Sourcegraph clones repositories from your Bitbucket Cloud via HTTP(S), using the [`username`](bitbucket_cloud.md#configuration) and [`appPassword`](bitbucket_cloud.md#configuration) required fields you provide in the configuration. diff --git a/internal/authz/providers/authz_test.go b/internal/authz/providers/authz_test.go index af0cae4acd4a3..3d5cb2cad30bb 100644 --- a/internal/authz/providers/authz_test.go +++ b/internal/authz/providers/authz_test.go @@ -1098,6 +1098,16 @@ func TestValidateExternalServiceConfig(t *testing.T) { }`, assert: equals("<nil>"), }, + { + kind: extsvc.KindBitbucketCloud, + desc: "valid with url, accessToken", + config: ` + { + "url": "https://bitbucket.org/", + "accessToken": "access-token" + }`, + assert: equals("<nil>"), + }, { kind: extsvc.KindBitbucketCloud, desc: "valid with url, username, appPassword, teams", @@ -1112,12 +1122,10 @@ func TestValidateExternalServiceConfig(t *testing.T) { }, { kind: extsvc.KindBitbucketCloud, - desc: "without url, username nor appPassword", + desc: "without url", config: `{}`, assert: includes( "url is required", - "username is required", - "appPassword is required", ), }, { diff --git a/internal/batches/sources/bitbucketcloud.go b/internal/batches/sources/bitbucketcloud.go index 55b218dca21aa..2e0dba913113c 100644 --- a/internal/batches/sources/bitbucketcloud.go +++ b/internal/batches/sources/bitbucketcloud.go @@ -23,9 +23,7 @@ type BitbucketCloudSource struct { client bitbucketcloud.Client } -var ( - _ ForkableChangesetSource = BitbucketCloudSource{} -) +var _ ForkableChangesetSource = BitbucketCloudSource{} func NewBitbucketCloudSource(ctx context.Context, svc *types.ExternalService, cf *httpcli.Factory) (*BitbucketCloudSource, error) { rawConfig, err := svc.Config.Decrypt(ctx) diff --git a/internal/extsvc/bitbucketcloud/client.go b/internal/extsvc/bitbucketcloud/client.go index b14e1f9134eff..1bf013c86dd77 100644 --- a/internal/extsvc/bitbucketcloud/client.go +++ b/internal/extsvc/bitbucketcloud/client.go @@ -103,13 +103,20 @@ func newClient(urn string, config *schema.BitbucketCloudConnection, httpClient h return nil, err } + var auther auth.Authenticator + if config.AccessToken != "" { + auther = &auth.OAuthBearerToken{Token: config.AccessToken} + } else { + auther = &auth.BasicAuth{ + Username: config.Username, + Password: config.AppPassword, + } + } + return &client{ httpClient: httpClient, URL: extsvc.NormalizeBaseURL(apiURL), - Auth: &auth.BasicAuth{ - Username: config.Username, - Password: config.AppPassword, - }, + Auth: auther, // Default limits are defined in extsvc.GetLimitFromConfig rateLimit: ratelimit.NewInstrumentedLimiter(urn, ratelimit.NewGlobalRateLimiter(log.Scoped("BitbucketCloudClient"), urn)), }, nil diff --git a/internal/repos/bitbucketcloud.go b/internal/repos/bitbucketcloud.go index 897ebf42c5490..ee85e91293ee4 100644 --- a/internal/repos/bitbucketcloud.go +++ b/internal/repos/bitbucketcloud.go @@ -238,7 +238,6 @@ func (s *BitbucketCloudSource) WithAuthenticator(a auth.Authenticator) (Source, sc.client = sc.client.WithAuthenticator(a) return &sc, nil - } // ValidateAuthenticator validates the currently set authenticator is usable. diff --git a/internal/repos/bitbucketcloud_test.go b/internal/repos/bitbucketcloud_test.go index 5d1176e4af8fe..18aa209c2ecdf 100644 --- a/internal/repos/bitbucketcloud_test.go +++ b/internal/repos/bitbucketcloud_test.go @@ -79,6 +79,20 @@ func TestBitbucketCloudSource_ListRepos(t *testing.T) { }, err: "<nil>", }, + { + name: "with access token", + assert: assertAllReposListed([]string{ + "/sourcegraph-source/src-cli", + "/sourcegraph-source/source-test", + }), + conf: &schema.BitbucketCloudConnection{ + AccessToken: os.Getenv("BITBUCKET_CLOUD_ACCESS_TOKEN"), + Teams: []string{ + "sourcegraph-source", + }, + }, + err: "<nil>", + }, } for _, tc := range testCases { diff --git a/internal/repos/testdata/sources/BITBUCKETCLOUD-LIST-REPOS/with-access-token.yaml b/internal/repos/testdata/sources/BITBUCKETCLOUD-LIST-REPOS/with-access-token.yaml new file mode 100644 index 0000000000000..d3a4a0a275bc1 --- /dev/null +++ b/internal/repos/testdata/sources/BITBUCKETCLOUD-LIST-REPOS/with-access-token.yaml @@ -0,0 +1,143 @@ +--- +version: 1 +interactions: +- request: + body: "" + form: {} + headers: {} + url: https://api.bitbucket.org/2.0/repositories/sourcegraph-source?pagelen=100 + method: GET + response: + body: '{"values": [{"type": "repository", "full_name": "sourcegraph-source/src-cli", + "links": {"self": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/src-cli"}, + "html": {"href": "https://bitbucket.org/sourcegraph-source/src-cli"}, "avatar": + {"href": "https://bytebucket.org/ravatar/%7B22bdacfc-eae7-4dcb-81c5-af096a93bd9b%7D?ts=default"}, + "pullrequests": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/src-cli/pullrequests"}, + "commits": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/src-cli/commits"}, + "forks": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/src-cli/forks"}, + "watchers": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/src-cli/watchers"}, + "branches": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/src-cli/refs/branches"}, + "tags": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/src-cli/refs/tags"}, + "downloads": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/src-cli/downloads"}, + "source": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/src-cli/src"}, + "clone": [{"name": "https", "href": "https://2h1ehnddx9o2mwnng8plaqp56mb7aq@bitbucket.org/sourcegraph-source/src-cli.git"}, + {"name": "ssh", "href": "git@bitbucket.org:sourcegraph-source/src-cli.git"}], + "hooks": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/src-cli/hooks"}}, + "name": "src-cli", "slug": "src-cli", "description": "", "scm": "git", "website": + null, "owner": {"display_name": "sourcegraph-source", "links": {"self": {"href": + "https://api.bitbucket.org/2.0/workspaces/%7B790592f7-4e5e-44a8-9ec6-8745876fe1c3%7D"}, + "avatar": {"href": "https://bitbucket.org/account/sourcegraph-source/avatar/"}, + "html": {"href": "https://bitbucket.org/%7B790592f7-4e5e-44a8-9ec6-8745876fe1c3%7D/"}}, + "type": "team", "uuid": "{790592f7-4e5e-44a8-9ec6-8745876fe1c3}", "username": + "sourcegraph-source"}, "workspace": {"type": "workspace", "uuid": "{790592f7-4e5e-44a8-9ec6-8745876fe1c3}", + "name": "sourcegraph-source", "slug": "sourcegraph-source", "links": {"avatar": + {"href": "https://bitbucket.org/workspaces/sourcegraph-source/avatar/?ts=1700076275"}, + "html": {"href": "https://bitbucket.org/sourcegraph-source/"}, "self": {"href": + "https://api.bitbucket.org/2.0/workspaces/sourcegraph-source"}}}, "is_private": + true, "project": {"type": "project", "key": "SOUR", "uuid": "{d4cb2804-9d30-4b8d-b880-8097b111375a}", + "name": "source", "links": {"self": {"href": "https://api.bitbucket.org/2.0/workspaces/sourcegraph-source/projects/SOUR"}, + "html": {"href": "https://bitbucket.org/sourcegraph-source/workspace/projects/SOUR"}, + "avatar": {"href": "https://bitbucket.org/account/user/sourcegraph-source/projects/SOUR/avatar/32?ts=1700076320"}}}, + "fork_policy": "no_public_forks", "created_on": "2023-11-15T19:25:20.076854+00:00", + "updated_on": "2023-11-15T19:25:20.911042+00:00", "size": 22185443, "language": + "", "uuid": "{22bdacfc-eae7-4dcb-81c5-af096a93bd9b}", "mainbranch": {"name": + "master", "type": "branch"}, "override_settings": {"default_merge_strategy": + true, "branching_model": true}, "parent": null, "has_issues": false, "has_wiki": + false}, {"type": "repository", "full_name": "sourcegraph-source/source-test", + "links": {"self": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/source-test"}, + "html": {"href": "https://bitbucket.org/sourcegraph-source/source-test"}, "avatar": + {"href": "https://bytebucket.org/ravatar/%7Bdfeaae25-8168-466f-ade4-d07e6837dedf%7D?ts=default"}, + "pullrequests": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/source-test/pullrequests"}, + "commits": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/source-test/commits"}, + "forks": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/source-test/forks"}, + "watchers": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/source-test/watchers"}, + "branches": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/source-test/refs/branches"}, + "tags": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/source-test/refs/tags"}, + "downloads": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/source-test/downloads"}, + "source": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/source-test/src"}, + "clone": [{"name": "https", "href": "https://2h1ehnddx9o2mwnng8plaqp56mb7aq@bitbucket.org/sourcegraph-source/source-test.git"}, + {"name": "ssh", "href": "git@bitbucket.org:sourcegraph-source/source-test.git"}], + "hooks": {"href": "https://api.bitbucket.org/2.0/repositories/sourcegraph-source/source-test/hooks"}}, + "name": "source-test", "slug": "source-test", "description": "", "scm": "git", + "website": null, "owner": {"display_name": "sourcegraph-source", "links": {"self": + {"href": "https://api.bitbucket.org/2.0/workspaces/%7B790592f7-4e5e-44a8-9ec6-8745876fe1c3%7D"}, + "avatar": {"href": "https://bitbucket.org/account/sourcegraph-source/avatar/"}, + "html": {"href": "https://bitbucket.org/%7B790592f7-4e5e-44a8-9ec6-8745876fe1c3%7D/"}}, + "type": "team", "uuid": "{790592f7-4e5e-44a8-9ec6-8745876fe1c3}", "username": + "sourcegraph-source"}, "workspace": {"type": "workspace", "uuid": "{790592f7-4e5e-44a8-9ec6-8745876fe1c3}", + "name": "sourcegraph-source", "slug": "sourcegraph-source", "links": {"avatar": + {"href": "https://bitbucket.org/workspaces/sourcegraph-source/avatar/?ts=1700076275"}, + "html": {"href": "https://bitbucket.org/sourcegraph-source/"}, "self": {"href": + "https://api.bitbucket.org/2.0/workspaces/sourcegraph-source"}}}, "is_private": + true, "project": {"type": "project", "key": "SOUR", "uuid": "{d4cb2804-9d30-4b8d-b880-8097b111375a}", + "name": "source", "links": {"self": {"href": "https://api.bitbucket.org/2.0/workspaces/sourcegraph-source/projects/SOUR"}, + "html": {"href": "https://bitbucket.org/sourcegraph-source/workspace/projects/SOUR"}, + "avatar": {"href": "https://bitbucket.org/account/user/sourcegraph-source/projects/SOUR/avatar/32?ts=1700076320"}}}, + "fork_policy": "no_public_forks", "created_on": "2023-11-21T13:39:54.600952+00:00", + "updated_on": "2023-11-21T13:39:57.299319+00:00", "size": 54954, "language": + "", "uuid": "{dfeaae25-8168-466f-ade4-d07e6837dedf}", "mainbranch": {"name": + "master", "type": "branch"}, "override_settings": {"default_merge_strategy": + true, "branching_model": true}, "parent": null, "has_issues": false, "has_wiki": + false}], "pagelen": 100, "size": 2, "page": 1}' + headers: + Cache-Control: + - private + Content-Type: + - application/json; charset=utf-8 + Date: + - Tue, 21 Nov 2023 14:28:09 GMT + Etag: + - '"81bd5365c10a63e8359344c6deaad885"' + Server: + - envoy + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Authorization, Origin, cookie, user-context + X-Asap-Succeeded: + - "True" + X-B3-Spanid: + - 57e688568582f1b8 + X-B3-Traceid: + - 1d016bef27946a4e + X-Content-Type-Options: + - nosniff + X-Credential-Type: + - workspace_access_token + X-Dc-Location: + - Micros-3 + X-Envoy-Upstream-Service-Time: + - "250" + X-Frame-Options: + - SAMEORIGIN + X-Render-Time: + - "0.23119592666625977" + X-Request-Count: + - "1601" + X-Request-Id: + - 1d016bef27946a4e + X-Served-By: + - 3ce7dc13e690 + X-Static-Version: + - ba8afb91e693 + X-Trace-Id: + - 1d016bef27946a4e + X-Usage-Input-Ops: + - "0" + X-Usage-Output-Ops: + - "0" + X-Usage-System-Time: + - "0.004212" + X-Usage-User-Time: + - "0.125926" + X-Used-Mesh: + - "False" + X-Version: + - ba8afb91e693 + X-View-Name: + - bitbucket.apps.repo2.api.v20.repo.RepositoriesHandler + X-Xss-Protection: + - 1; mode=block + status: 200 OK + code: 200 + duration: "" diff --git a/internal/types/secret.go b/internal/types/secret.go index 95a3b6ee6b4a0..bd0f4b2ed0865 100644 --- a/internal/types/secret.go +++ b/internal/types/secret.go @@ -66,6 +66,7 @@ func (e *ExternalService) RedactedConfig(ctx context.Context) (string, error) { es.redactString(c.Token, "token") case *schema.BitbucketCloudConnection: es.redactString(c.AppPassword, "appPassword") + es.redactString(c.AccessToken, "accessToken") case *schema.AWSCodeCommitConnection: es.redactString(c.SecretAccessKey, "secretAccessKey") es.redactString(c.GitCredentials.Password, "gitCredentials", "password") @@ -184,10 +185,21 @@ func (e *ExternalService) UnredactConfig(ctx context.Context, old *ExternalServi es.unredactString(c.Token, o.Token, "token") case *schema.BitbucketCloudConnection: o := oldCfg.(*schema.BitbucketCloudConnection) - es.unredactString(c.AppPassword, o.AppPassword, "appPassword") if c.Url != o.Url { - return errCodeHostIdentityChanged{"apiUrl", "appPassword"} + var redactedProperty string + if c.AppPassword == RedactedSecret { + redactedProperty = "appPassword" + } + if c.AccessToken == RedactedSecret { + redactedProperty = "accessToken" + } + + if redactedProperty != "" { + return errCodeHostIdentityChanged{"apiUrl", redactedProperty} + } } + es.unredactString(c.AppPassword, o.AppPassword, "appPassword") + es.unredactString(c.AccessToken, o.AccessToken, "accessToken") case *schema.AWSCodeCommitConnection: o := oldCfg.(*schema.AWSCodeCommitConnection) es.unredactString(c.SecretAccessKey, o.SecretAccessKey, "secretAccessKey") diff --git a/schema/bitbucket_cloud.schema.json b/schema/bitbucket_cloud.schema.json index 42de42d3f6f40..3e06ed6ad1407 100644 --- a/schema/bitbucket_cloud.schema.json +++ b/schema/bitbucket_cloud.schema.json @@ -6,7 +6,26 @@ "allowComments": true, "type": "object", "additionalProperties": false, - "required": ["url", "username", "appPassword"], + "required": ["url"], + "oneOf": [ + { + "allOf": [ + { + "required": ["accessToken"] + }, + { + "not": { "required": ["username"] } + }, + { + "not": { "required": ["appPassword"] } + } + ] + }, + { + "required": ["username", "appPassword"], + "not": { "required": ["accessToken"] } + } + ], "properties": { "url": { "description": "URL of Bitbucket Cloud, such as https://bitbucket.org. Generally, admin should not modify the value of this option because Bitbucket Cloud is a public hosting platform.", @@ -72,6 +91,10 @@ "description": "The app password to use when authenticating to the Bitbucket Cloud. Also set the corresponding \"username\" field.", "type": "string" }, + "accessToken": { + "description": "The workspace access token to use when authenticating with Bitbucket Cloud.", + "type": "string" + }, "gitURLType": { "description": "The type of Git URLs to use for cloning and fetching Git repositories on this Bitbucket Cloud.\n\nIf \"http\", Sourcegraph will access Bitbucket Cloud repositories using Git URLs of the form https://bitbucket.org/myteam/myproject.git.\n\nIf \"ssh\", Sourcegraph will access Bitbucket Cloud repositories using Git URLs of the form git@bitbucket.org:myteam/myproject.git. See the documentation for how to provide SSH private keys and known_hosts: https://docs.sourcegraph.com/admin/repo/auth#repositories-that-need-http-s-or-ssh-authentication.", "type": "string", diff --git a/schema/schema.go b/schema/schema.go index 457d0c5380127..bf6383331ede0 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -301,10 +301,12 @@ type BitbucketCloudAuthorization struct { // BitbucketCloudConnection description: Configuration for a connection to Bitbucket Cloud. type BitbucketCloudConnection struct { + // AccessToken description: The workspace access token to use when authenticating with Bitbucket Cloud. + AccessToken string `json:"accessToken,omitempty"` // ApiURL description: The API URL of Bitbucket Cloud, such as https://api.bitbucket.org. Generally, admin should not modify the value of this option because Bitbucket Cloud is a public hosting platform. ApiURL string `json:"apiURL,omitempty"` // AppPassword description: The app password to use when authenticating to the Bitbucket Cloud. Also set the corresponding "username" field. - AppPassword string `json:"appPassword"` + AppPassword string `json:"appPassword,omitempty"` // Authorization description: If non-null, enforces Bitbucket Cloud repository permissions. This requires that there is an item in the [site configuration json](https://docs.sourcegraph.com/admin/config/site_config#auth-providers) `auth.providers` field, of type "bitbucketcloud" with the same `url` field as specified in this `BitbucketCloudConnection`. Authorization *BitbucketCloudAuthorization `json:"authorization,omitempty"` // Exclude description: A list of repositories to never mirror from Bitbucket Cloud. Takes precedence over "teams" configuration. @@ -332,7 +334,7 @@ type BitbucketCloudConnection struct { // Url description: URL of Bitbucket Cloud, such as https://bitbucket.org. Generally, admin should not modify the value of this option because Bitbucket Cloud is a public hosting platform. Url string `json:"url"` // Username description: The username to use when authenticating to the Bitbucket Cloud. Also set the corresponding "appPassword" field. - Username string `json:"username"` + Username string `json:"username,omitempty"` // WebhookSecret description: A shared secret used to authenticate incoming webhooks (minimum 12 characters). WebhookSecret string `json:"webhookSecret,omitempty"` } From 901f014a343fad4e43df7a3574deced4c4ecbf81 Mon Sep 17 00:00:00 2001 From: Greg Magolan <greg@aspect.dev> Date: Fri, 24 Nov 2023 04:31:26 -0800 Subject: [PATCH 146/222] build: fix CI bazelrc settings for Aspect Workflows warming (#58550) --- .aspect/bazelrc/ci.sourcegraph.bazelrc | 34 +++++++++++++------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/.aspect/bazelrc/ci.sourcegraph.bazelrc b/.aspect/bazelrc/ci.sourcegraph.bazelrc index fa918f21f0ac9..98307106d9ff5 100644 --- a/.aspect/bazelrc/ci.sourcegraph.bazelrc +++ b/.aspect/bazelrc/ci.sourcegraph.bazelrc @@ -5,47 +5,47 @@ try-import %workspace%/.aspect/bazelrc/ci.generated.bazelrc # Use repo caching for building and testing. # Article: https://buildkite.com/blog/how-bazel-built-its-ci-system-on-top-of-buildkite # Docs: https://bazel.build/reference/command-line-reference#flag--repository_cache -build --repository_cache=/home/buildkite/repocache-sourcegraph +common --repository_cache=/home/buildkite/repocache-sourcegraph # We need /usr/local/bin # TODO(DevX) we should be narrower here. -build --test_env=PATH +common --test_env=PATH # Needed for DB in CI -test --test_env=PGUSER=postgres -test --test_env=PGPASSWORD=postgres -test --test_env=PGSSLMODE=disable -test --test_env=PGDATABASE=postgres +common --test_env=PGUSER=postgres +common --test_env=PGPASSWORD=postgres +common --test_env=PGSSLMODE=disable +common --test_env=PGDATABASE=postgres # Allow tests to understand they're running in CI, which forces dbtest to drop database even in case of failures. # TODO(JH) we should instead wipe all templates after a job finishes. -build --test_env=CI +common --test_env=CI # Ensure we're not exhausting database connections. -build --test_env=GOMAXPROCS=10 -build --test_env=TESTDB_MAXOPENCONNS=15 +common --test_env=GOMAXPROCS=10 +common --test_env=TESTDB_MAXOPENCONNS=15 # Needed for E2E -build --test_env=BUILDKITE +common --test_env=BUILDKITE # Needed for mocha tests # We have to use the `--define` flag here instead of `--test_env` because # the mocha tests target is the build target and it's tested with `build_test`. -test --define=E2E_HEADLESS=false +common --define=E2E_HEADLESS=false # if we set this to localhost, chrome will refuse to conenct since local host is in its HTTP Strict Transport Security # by setting the loopback address we get passed that -test --define=E2E_SOURCEGRAPH_BASE_URL="http://127.0.0.1:7080" -test --define=DISPLAY=:99 +common --define=E2E_SOURCEGRAPH_BASE_URL="http://127.0.0.1:7080" +common --define=DISPLAY=:99 # Provides git commit, branch information to build targets like Percy via status file. # https://bazel.build/docs/user-manual#workspace-status -build --workspace_status_command=./dev/bazel_buildkite_stamp_vars.sh +common --workspace_status_command=./dev/bazel_buildkite_stamp_vars.sh # temp -build --test_env=INCLUDE_ADMIN_ONBOARDING=false +common --test_env=INCLUDE_ADMIN_ONBOARDING=false # Used for container_structure_tests -build --test_env=DOCKER_HOST +common --test_env=DOCKER_HOST # Used by migration rules -build --action_env=PGUSER=postgres +common --action_env=PGUSER=postgres From dedde49ef7b1a7d5d82f777cad06d962649e638d Mon Sep 17 00:00:00 2001 From: Jean-Hadrien Chabran <jean-hadrien.chabran@sourcegraph.com> Date: Fri, 24 Nov 2023 15:18:32 +0100 Subject: [PATCH 147/222] ci: remove unused checkov script (#58554) --- dev/ci/ci-checkov.sh | 38 -------------------------------------- 1 file changed, 38 deletions(-) delete mode 100755 dev/ci/ci-checkov.sh diff --git a/dev/ci/ci-checkov.sh b/dev/ci/ci-checkov.sh deleted file mode 100755 index 0140c8e4f3f0d..0000000000000 --- a/dev/ci/ci-checkov.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env bash -# Set this to fail on the install -set -euxo pipefail - -# Install and run the plugin for checkov -# Use the full path to run pip3.10 -pip3 install checkov - -# List of checks we do not want to run here -# This is a living list and will see additions and mostly removals over time. -SKIP_CHECKS="CKV_GCP_22,CKV_GCP_66,CKV_GCP_13,CKV_GCP_71,CKV_GCP_61,CKV_GCP_21,CKV_GCP_65,CKV_GCP_67,CKV_GCP_20,CKV_GCP_69,CKV_GCP_12,CKV_GCP_24,CKV_GCP_25,CKV_GCP_64,CKV_GCP_68,CKV2_AWS_5,CKV2_GCP_3,CKV2_GCP_5,CKV_AWS_23,CKV_GCP_70,CKV_GCP_62,CKV_GCP_62,CKV_GCP_62,CKV_GCP_62,CKV_GCP_29,CKV_GCP_39" - -set +x -# In case no terraform code is present -echo "--- Starting Checkov..." -echo "Note: If there is no output below here then no terraform code was found to scan. All good!" -echo "===========================================================================================" - -# Set not to fail on non-zero exit code -set +e -# Run checkov -python3 -m checkov.main --skip-check $SKIP_CHECKS --quiet --framework terraform --compact -d . - -# Options -# --quiet: Only show failing tests -# --compact: Do not show code snippets -# --framework: Only scan terraform code - -# Capture the error code -CHECKOV_EXIT_CODE="$?" - -# We check the exit code and display a warning if anything was found -if [[ "$CHECKOV_EXIT_CODE" != 0 ]]; then - echo "^^^ +++" - echo "Possible Terraform security issues found. " - echo "Please refer to the Sourcegraph handbook for guidance: https://handbook.sourcegraph.com/product-engineering/engineering/cloud/security/checkov" - exit 222 -fi From 863d86da15479069998da83a48a3b22f51026396 Mon Sep 17 00:00:00 2001 From: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> Date: Fri, 24 Nov 2023 14:31:06 +0000 Subject: [PATCH 148/222] bazel: build client web is exclusive so not required to prebuild (#58557) --- dev/ci/internal/ci/bazel_operations.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/dev/ci/internal/ci/bazel_operations.go b/dev/ci/internal/ci/bazel_operations.go index 04029ffab4511..f5daa160e0278 100644 --- a/dev/ci/internal/ci/bazel_operations.go +++ b/dev/ci/internal/ci/bazel_operations.go @@ -163,13 +163,6 @@ func bazelTest(targets ...string) func(*bk.Pipeline) { cmds = append(cmds, bazelApplyPrecheckChanges()) - // bazel build //client/web:bundle is very resource hungry and often crashes when ran along other targets - // so we run it first to avoid failing builds midway. - cmds = append(cmds, - bazelAnnouncef("bazel build //client/web:bundle"), - bk.Cmd(bazelCmd("build //client/web:bundle")), - ) - for _, target := range targets { cmd := bazelCmd(fmt.Sprintf("test %s", target)) bazelTestCmds = append(bazelTestCmds, From b73c0e63674f29d817289aca957186330a06b2bb Mon Sep 17 00:00:00 2001 From: Thorsten Ball <mrnugget@gmail.com> Date: Fri, 24 Nov 2023 16:51:19 +0100 Subject: [PATCH 149/222] sg generate: get .proto early exit from 30s to 0s (#58555) The previous version _always_ ran the slow Bazel command, which took ~30 seconds on my machine, only to tell me that no proto files changed. This version first checks. It also changes the check to take into account the working directory and not just committed changes. Previous version of the check required one to commit .proto changes. --- dev/sg/generates.go | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/dev/sg/generates.go b/dev/sg/generates.go index 4d0a4707351f0..b9dedc1daf54b 100644 --- a/dev/sg/generates.go +++ b/dev/sg/generates.go @@ -71,27 +71,24 @@ func generateProtoRunner(ctx context.Context, args []string) *generate.Report { return proto.Generate(ctx, args, verbose) } - // By default, we will run buf generate in every directory with buf.gen.yaml - bufGenFilePaths, err := buf.PluginConfigurationFiles() - if err != nil { - return &generate.Report{Err: errors.Wrapf(err, "finding plugin configuration files")} - } + // If we're not in CI, we check for proto file changes + if os.Getenv("CI") != "true" { + out, err := exec.Command("git", "diff", "--name-only", "main").Output() + if err != nil { + return &generate.Report{Err: errors.Wrap(err, "git diff failed")} // should never happen + } - // Always run in CI - if os.Getenv("CI") == "true" { - return proto.Generate(ctx, bufGenFilePaths, verbose) + if !strings.Contains(string(out), ".proto") { + return &generate.Report{Output: "No .proto files changed or not in CI. Skipping buf gen.\n"} + } } - // Otherwise, only run if any .proto files are changed - out, err := exec.Command("git", "diff", "--name-only", "main...HEAD").Output() + // By default, we will run buf generate in every directory with buf.gen.yaml + bufGenFilePaths, err := buf.PluginConfigurationFiles() if err != nil { - return &generate.Report{Err: errors.Wrap(err, "git diff failed")} // should never happen + return &generate.Report{Err: errors.Wrapf(err, "finding plugin configuration files")} } - // Don't run buf gen if no .proto files changed or not in CI - if !strings.Contains(string(out), ".proto") { - return &generate.Report{Output: "No .proto files changed or not in CI. Skipping buf gen.\n"} - } // Run buf gen by default return proto.Generate(ctx, bufGenFilePaths, verbose) } From 2fe8d54cb7e160ea82bf7a1742a2ad2883a46575 Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Fri, 24 Nov 2023 17:03:10 +0100 Subject: [PATCH 150/222] dotcom: Make repo with last errors syncer faster (#58561) Realistically, in the past it never got to a steady state because it just waits for too long. Trying to sync at most one a second seems fine to me, let's try it. --- cmd/repo-updater/shared/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/repo-updater/shared/main.go b/cmd/repo-updater/shared/main.go index 2a88d41bd6e4f..22be78a31d3a1 100644 --- a/cmd/repo-updater/shared/main.go +++ b/cmd/repo-updater/shared/main.go @@ -166,7 +166,7 @@ func Main(ctx context.Context, observationCtx *observation.Context, ready servic ) if envvar.SourcegraphDotComMode() { - rateLimiter := ratelimit.NewInstrumentedLimiter("SyncReposWithLastErrors", rate.NewLimiter(.05, 1)) + rateLimiter := ratelimit.NewInstrumentedLimiter("SyncReposWithLastErrors", rate.NewLimiter(1, 1)) routines = append(routines, syncer.NewSyncReposWithLastErrorsWorker(ctx, rateLimiter)) } From 237d1f237ef79938e432387cdc75b437d1fd9f5e Mon Sep 17 00:00:00 2001 From: Vincent <evict@users.noreply.github.com> Date: Fri, 24 Nov 2023 18:08:51 +0000 Subject: [PATCH 151/222] sec: Allow localdev to connect to localhost (#58558) allow localdev to connect to localhost --- internal/httpcli/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/httpcli/client.go b/internal/httpcli/client.go index 1070e860e18ae..54d612765f324 100644 --- a/internal/httpcli/client.go +++ b/internal/httpcli/client.go @@ -139,7 +139,7 @@ func newExternalClientFactory(cache bool, testOpt bool, middleware ...Middleware mw = append(mw, middleware...) externalTransportOpt := ExternalTransportOpt - if testOpt { + if testOpt || env.InsecureDev { externalTransportOpt = TestExternalTransportOpt } From df408a8c673d331b7ea21b6e868bc0e0e61aa083 Mon Sep 17 00:00:00 2001 From: Felix Kling <felix@felix-kling.de> Date: Fri, 24 Nov 2023 19:56:49 +0100 Subject: [PATCH 152/222] svelte: Use new search input (#58244) Building on top of #58169, this commit adds a simplified version of the new search input to the prototype. The old implementation was removed and replaced by `SearchInput.svelte` which represents the main search input. Unlike the React version we don't have to handle different version or abstraction so we don't need to spread out the behavior over multiple components. This components contains all logic and styles for the new search input. It uses `BaseQueryInput.svelte` which is the equivalent to `BaseCodeMirrorQueryInput.tsx`. I considered sharing the basic set of extensions between the React and the Svelte version but ultimateltey decided against it. Those extensions don't change often and are easy to synchronize if necessary. This commit also removes the dummy query examples implementation. It wasn't quite integrated with the search input yet and we are likely to make larger changes to the home page anyway. --- client/web-sveltekit/src/app.html | 2 +- client/web-sveltekit/src/lib/branded.ts | 16 +- .../web-sveltekit/src/lib/codemirror/theme.ts | 8 + .../web-sveltekit/src/lib/codemirror/utils.ts | 59 +++ client/web-sveltekit/src/lib/common.ts | 1 + client/web-sveltekit/src/lib/dom.ts | 28 ++ client/web-sveltekit/src/lib/search-ui.ts | 0 .../src/lib/search/BaseQueryInput.svelte | 175 +++++++++ .../lib/search/CodeMirrorQueryInput.svelte | 219 ------------ .../src/lib/search/EmphasizedLabel.svelte | 27 ++ .../src/lib/search/SearchBox.svelte | 238 ------------- .../lib/search/SyntaxHighlightedQuery.svelte | 12 +- .../src/lib/search/input/ActionInfo.svelte | 37 ++ .../src/lib/search/input/SearchInput.svelte | 335 ++++++++++++++++++ .../input/SmartSearchToggleButton.svelte | 120 +++++++ .../lib/search/input/SuggestionOption.svelte | 174 +++++++++ .../src/lib/search/input/Suggestions.svelte | 202 +++++++++++ .../src/lib/search/queryExamples.ts | 14 - client/web-sveltekit/src/lib/search/state.ts | 18 +- client/web-sveltekit/src/lib/shared.ts | 1 + client/web-sveltekit/src/lib/theme.ts | 1 - client/web-sveltekit/src/lib/web.ts | 1 + .../RepoNotFoundError.svelte | 4 +- .../src/routes/search/+page.svelte | 13 +- .../web-sveltekit/src/routes/search/+page.ts | 6 +- .../src/routes/search/QueryExamples.svelte | 79 ----- .../src/routes/search/SearchHome.svelte | 6 +- .../src/routes/search/SearchResults.svelte | 8 +- client/web/src/integration/search.test.ts | 3 + .../web/src/search/autocompletion/sources.ts | 6 +- client/web/src/search/input/suggestions.ts | 8 + 31 files changed, 1227 insertions(+), 594 deletions(-) create mode 100644 client/web-sveltekit/src/lib/codemirror/theme.ts create mode 100644 client/web-sveltekit/src/lib/codemirror/utils.ts create mode 100644 client/web-sveltekit/src/lib/search-ui.ts create mode 100644 client/web-sveltekit/src/lib/search/BaseQueryInput.svelte delete mode 100644 client/web-sveltekit/src/lib/search/CodeMirrorQueryInput.svelte create mode 100644 client/web-sveltekit/src/lib/search/EmphasizedLabel.svelte delete mode 100644 client/web-sveltekit/src/lib/search/SearchBox.svelte create mode 100644 client/web-sveltekit/src/lib/search/input/ActionInfo.svelte create mode 100644 client/web-sveltekit/src/lib/search/input/SearchInput.svelte create mode 100644 client/web-sveltekit/src/lib/search/input/SmartSearchToggleButton.svelte create mode 100644 client/web-sveltekit/src/lib/search/input/SuggestionOption.svelte create mode 100644 client/web-sveltekit/src/lib/search/input/Suggestions.svelte delete mode 100644 client/web-sveltekit/src/lib/search/queryExamples.ts delete mode 100644 client/web-sveltekit/src/routes/search/QueryExamples.svelte diff --git a/client/web-sveltekit/src/app.html b/client/web-sveltekit/src/app.html index 02b1c75e6dda9..7a7e97215b1eb 100644 --- a/client/web-sveltekit/src/app.html +++ b/client/web-sveltekit/src/app.html @@ -1,4 +1,4 @@ -<!DOCTYPE html> +<!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> diff --git a/client/web-sveltekit/src/lib/branded.ts b/client/web-sveltekit/src/lib/branded.ts index ce480e69ad09a..79fc934ebd48a 100644 --- a/client/web-sveltekit/src/lib/branded.ts +++ b/client/web-sveltekit/src/lib/branded.ts @@ -1,11 +1,17 @@ export { formatRepositoryStarCount } from '@sourcegraph/branded/src/search-ui/util/stars' export { limitHit, sortBySeverity } from '@sourcegraph/branded/src/search-ui/results/progress/utils' -export { - basicSyntaxColumns, - exampleQueryColumns, -} from '@sourcegraph/branded/src/search-ui/components/QueryExamples.constants' export { createDefaultSuggestions } from '@sourcegraph/branded/src/search-ui/input/codemirror' -export { multiline } from '@sourcegraph/branded/src/search-ui/input/codemirror/multiline' export { parseInputAsQuery } from '@sourcegraph/branded/src/search-ui/input/codemirror/parsedQuery' export { querySyntaxHighlighting } from '@sourcegraph/branded/src/search-ui/input/codemirror/syntax-highlighting' export { decorateQuery } from '@sourcegraph/branded/src/search-ui/util/query' +export * from '@sourcegraph/branded/src/search-ui/input/codemirror/multiline' +export * from '@sourcegraph/branded/src/search-ui/input/codemirror/event-handlers' +export { tokenInfo } from '@sourcegraph/branded/src/search-ui/input/codemirror/token-info' +export * from '@sourcegraph/branded/src/search-ui/input/codemirror/diagnostics' +export * from '@sourcegraph/branded/src/search-ui/input/experimental/modes' +export * from '@sourcegraph/branded/src/search-ui/input/experimental/utils' +export * from '@sourcegraph/branded/src/search-ui/input/experimental/suggestionsExtension' +export { placeholder } from '@sourcegraph/branded/src/search-ui/input/codemirror/placeholder' +export { showWhenEmptyWithoutContext } from '@sourcegraph/branded/src/search-ui/input/experimental/placeholder' +export { filterDecoration } from '@sourcegraph/branded/src/search-ui/input/experimental/codemirror/syntax-highlighting' +export { overrideContextOnPaste } from '@sourcegraph/branded/src/search-ui/input/experimental/codemirror/searchcontext' diff --git a/client/web-sveltekit/src/lib/codemirror/theme.ts b/client/web-sveltekit/src/lib/codemirror/theme.ts new file mode 100644 index 0000000000000..03b49904c4a46 --- /dev/null +++ b/client/web-sveltekit/src/lib/codemirror/theme.ts @@ -0,0 +1,8 @@ +import { EditorView } from '@codemirror/view' + +export const defaultTheme = EditorView.baseTheme({ + // Overwrites the default cursor color, which has too low contrast in dark mode + '.theme-dark & .cm-cursor': { + borderLeftColor: 'var(--grey-07)', + }, +}) diff --git a/client/web-sveltekit/src/lib/codemirror/utils.ts b/client/web-sveltekit/src/lib/codemirror/utils.ts new file mode 100644 index 0000000000000..17dda466acac4 --- /dev/null +++ b/client/web-sveltekit/src/lib/codemirror/utils.ts @@ -0,0 +1,59 @@ +import { Compartment, type StateEffect, type Extension } from '@codemirror/state' +import type { EditorView } from '@codemirror/view' + +type Extensions = Record<string, Extension> +type UpdatedExtensions<T extends Extensions> = { [key in keyof T]: Extension } + +interface Compartments<T extends Extensions> { + extension: Extension + /** + * Initialize compartments with a different value + */ + init(extensions: UpdatedExtensions<T>): Extension + /** + * Update compartments. Only compartments for which the provided + * value has changed will be updated. + */ + update(view: EditorView, extensions: UpdatedExtensions<T>): void +} + +/** + * Helper function for creating a compartments extension. Each record + * entry will get its own compartment and the value will be the initial + * value of the compartment. + */ +export function createCompartments<T extends Record<string, Extension>>(extensions: T): Compartments<T> { + const compartments: Record<string, Compartment> = {} + + function init(extensions: UpdatedExtensions<T>, compartments: Record<string, Compartment>): Extension { + const extension: Extension[] = [] + for (const [name, ext] of Object.entries(extensions)) { + let compartment = compartments[name] + if (!compartment) { + compartment = compartments[name] = new Compartment() + } + extension.push(compartment.of(ext)) + } + return extension + } + + return { + extension: init(extensions, compartments), + init(extensions) { + return init(extensions, compartments) + }, + update(view, extensions) { + const effects: StateEffect<unknown>[] = [] + + for (const [name, ext] of Object.entries(extensions)) { + if (compartments[name].get(view.state) !== ext) { + effects.push(compartments[name].reconfigure(ext)) + } + } + + if (effects.length > 0) { + view.dispatch({ effects }) + } + }, + } +} diff --git a/client/web-sveltekit/src/lib/common.ts b/client/web-sveltekit/src/lib/common.ts index 89dd687fd10eb..bd988ffb1e68c 100644 --- a/client/web-sveltekit/src/lib/common.ts +++ b/client/web-sveltekit/src/lib/common.ts @@ -14,3 +14,4 @@ export { pluralize, numberWithCommas } from '@sourcegraph/common/src/util/string export { renderMarkdown } from '@sourcegraph/common/src/util/markdown/markdown' export { highlightNodeMultiline, highlightNode } from '@sourcegraph/common/src/util/highlightNode' export { logger } from '@sourcegraph/common/src/util/logger' +export { isSafari } from '@sourcegraph/common/src/util/browserDetection' diff --git a/client/web-sveltekit/src/lib/dom.ts b/client/web-sveltekit/src/lib/dom.ts index cad2d8c8c15e1..5c9fe8816e74f 100644 --- a/client/web-sveltekit/src/lib/dom.ts +++ b/client/web-sveltekit/src/lib/dom.ts @@ -99,3 +99,31 @@ export const highlightRanges: Action<HTMLElement, { ranges: [number, number][] } update: highlight, } } + +/** + * This action ensures that the element does not extend outside the visible viewport, + * by settings its max height. Only works for elements whose position doesn't change + * relative to the viewport. + */ +export const restrictToViewport: Action<HTMLElement, { offset?: number }> = (node, parameters) => { + let offset = parameters.offset ?? 0 + + function setMaxHeight(): void { + node.style.maxHeight = window.innerHeight - node.getBoundingClientRect().top + offset + 'px' + } + + window.addEventListener('resize', setMaxHeight) + + setMaxHeight() + + return { + update(parameter) { + offset = parameter.offset ?? 0 + setMaxHeight() + }, + + destroy() { + window.removeEventListener('resize', setMaxHeight) + }, + } +} diff --git a/client/web-sveltekit/src/lib/search-ui.ts b/client/web-sveltekit/src/lib/search-ui.ts new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/client/web-sveltekit/src/lib/search/BaseQueryInput.svelte b/client/web-sveltekit/src/lib/search/BaseQueryInput.svelte new file mode 100644 index 0000000000000..4aa91ac6dd6aa --- /dev/null +++ b/client/web-sveltekit/src/lib/search/BaseQueryInput.svelte @@ -0,0 +1,175 @@ +<script lang="ts" context="module"> + import { EditorView, drawSelection, keymap } from '@codemirror/view' + import { history, defaultKeymap, historyKeymap } from '@codemirror/commands' + import { querySyntaxHighlighting } from '$lib/branded' + import { defaultTheme } from '$lib/codemirror/theme' + + // These extensions do not depend on any component props + const staticExtensions: Extension = [ + // Default keybindings to ensure the editor behaves correctly + keymap.of(defaultKeymap), + // Additional keybindings history support + keymap.of(historyKeymap), + // History support. It allows the user, together with the history keybindings + // to redo/undo input changes. + history(), + // Let CodeMirror style selected text to make it work better with decorations + // that change the background color. + drawSelection(), + // Apply syntax highlighting to query elements + querySyntaxHighlighting, + // The input is styled deliberately without a border so that it + // can be integrated with various other UI elements. + EditorView.theme({ + '.cm-content': { + caretColor: 'var(--search-query-text-color)', + color: 'var(--search-query-text-color)', + fontFamily: 'var(--code-font-family)', + fontSize: 'var(--code-font-size)', + // Reset default padding + padding: 0, + // We need 1px padding to make the cursor visible at position 0 + paddingLeft: '1px', + }, + '.cm-line': { + // Reset default padding + padding: 0, + }, + '&.cm-focused .cm-selectionLayer .cm-selectionBackground': { + backgroundColor: 'var(--code-selection-bg-2)', + }, + '.cm-selectionLayer .cm-selectionBackground': { + backgroundColor: 'var(--code-selection-bg)', + }, + }), + defaultTheme, + ] +</script> + +<script lang="ts"> + import { EditorState, type Extension } from '@codemirror/state' + import { createEventDispatcher } from 'svelte' + + import { browser } from '$app/environment' + import { multiline, parseInputAsQuery, searchInputEventHandlers, toSingleLine } from '$lib/branded' + import type { SearchPatternType } from '$lib/graphql-operations' + import { createCompartments } from '$lib/codemirror/utils' + + export let value: string + export let patternType: SearchPatternType + export let interpretComments: boolean = false + export let placeholder: string = '' + export let autoFocus: boolean = false + export let readOnly: boolean = false + export let multiLine: boolean = false + export let extension: Extension = [] + + /** + * Bind to this properly to get a reference to CodeMirror + */ + export let view: EditorView | null = null + + export function focus() { + view?.focus() + view?.dispatch({ selection: { anchor: view.state.doc.length } }) + } + + const dispatch = createEventDispatcher<{ change: string; enter: EditorView }>() + + let container: HTMLDivElement | null = null + let empty: Extension = [] + + const compartments = createCompartments({ + additionalExtension: empty, + parsedQueryExtension: empty, + readOnlyExtension: empty, + multilineExtension: empty, + }) + + let eventHandlerExtension = searchInputEventHandlers.init(() => ({ + onChange(value) { + dispatch('change', value) + }, + onEnter(view) { + dispatch('enter', view) + return true + }, + })) + + function createEditor(container: HTMLDivElement, doc: string, extensions: Extension): EditorView { + const view = new EditorView({ + state: EditorState.create({ doc, extensions }), + parent: container, + }) + return view + } + + $: parsedQueryExtension = parseInputAsQuery({ patternType, interpretComments }) + $: readOnlyExtension = EditorView.editable.of(!readOnly) + $: multilineExtension = multiline(multiLine) + $: additionalExtension = extension + $: extensions = { additionalExtension, parsedQueryExtension, readOnlyExtension, multilineExtension } + $: if (view) { + compartments.update(view, extensions) + } + $: normalizedValue = multiLine ? value : toSingleLine(value) + + $: if (view && view.state.sliceDoc() !== normalizedValue) { + view.dispatch({ + changes: { from: 0, to: view.state.doc.length, insert: normalizedValue }, + }) + } + + $: if (container && !view) { + view = createEditor(container, normalizedValue, [ + compartments.init(extensions), + eventHandlerExtension, + staticExtensions, + ]) + + if (autoFocus) { + window.requestAnimationFrame(() => view!.focus()) + } + } +</script> + +{#if browser} + <div bind:this={container} class="root test-query-input test-editor" data-editor="codemirror6" /> +{:else} + <div class="root"> + <input value={normalizedValue} {placeholder} /> + </div> +{/if} + +<style lang="scss"> + input { + border: 0; + font-family: var(--code-font-family); + font-size: var(--code-font-size); + width: 100%; + } + + .root { + flex: 1; + box-sizing: border-box; + background-color: var(--color-bg-1); + min-width: 0; + padding-left: 1px; + + :global(.cm-placeholder) { + // CodeMirror uses display: inline-block by default, but that causes + // Chrome to render a larger cursor if the placeholder holder spans + // multiple lines. Firefox doesn't have this problem (but + // setting display: inline doesn't seem to have a negative effect + // either) + display: inline; + // Once again, Chrome renders the placeholder differently than + // Firefox. CodeMirror sets 'word-break: break-word' (which is + // deprecated) and 'overflow-wrap: anywhere' but they don't seem to + // have an effect in Chrome (at least not in this instance). + // Setting 'word-break: break-all' explicitly makes appearances a + // bit better for example queries with long tokens. + word-break: break-all; + } + } +</style> diff --git a/client/web-sveltekit/src/lib/search/CodeMirrorQueryInput.svelte b/client/web-sveltekit/src/lib/search/CodeMirrorQueryInput.svelte deleted file mode 100644 index 47ffe2cfc479b..0000000000000 --- a/client/web-sveltekit/src/lib/search/CodeMirrorQueryInput.svelte +++ /dev/null @@ -1,219 +0,0 @@ -<script lang="ts"> - import { closeCompletion } from '@codemirror/autocomplete' - import { defaultKeymap, history, historyKeymap } from '@codemirror/commands' - import { Compartment, EditorState, Prec } from '@codemirror/state' - import { EditorView, keymap, placeholder as placeholderExtension } from '@codemirror/view' - import { createEventDispatcher } from 'svelte' - - import { browser } from '$app/environment' - import { goto } from '$app/navigation' - import { createDefaultSuggestions, multiline, parseInputAsQuery, querySyntaxHighlighting } from '$lib/branded' - import type { SearchPatternType } from '$lib/graphql-operations' - import { fetchStreamSuggestions, QueryChangeSource, type QueryState } from '$lib/shared' - - import { defaultTheme } from './codemirror/theme' - - export let queryState: QueryState - export let patternType: SearchPatternType - export let interpretComments: boolean = false - export let placeholder: string = '' - export let autoFocus: boolean = false - - export function focus() { - editor?.focus() - editor?.dispatch({ selection: { anchor: editor.state.doc.length } }) - } - - const dispatch = createEventDispatcher<{ change: QueryState; submit: void }>() - let container: HTMLDivElement | null = null - let editor: EditorView | null = null - - let dynamicExtensions = new Compartment() - - interface ExtensionConfig { - patternType: SearchPatternType - interpretComments: boolean - placeholder: string - } - - function configureExtensions(config: ExtensionConfig) { - if (!browser) { - return [] - } - const extensions = [ - parseInputAsQuery({ patternType: config.patternType, interpretComments: config.interpretComments }), - createDefaultSuggestions({ - fetchSuggestions: query => fetchStreamSuggestions(query), - isSourcegraphDotCom: false, - navigate: url => goto(url.toString()), - }), - ] - - if (config.placeholder) { - // Passing a DOM element instead of a string makes the CodeMirror - // extension set aria-hidden="true" on the placeholder, which is - // what we want. - const element = document.createElement('span') - element.append(document.createTextNode(placeholder)) - extensions.push(placeholderExtension(element)) - } - - return extensions - } - - function updateExtensions(config: ExtensionConfig) { - if (editor) { - editor.dispatch({ effects: dynamicExtensions.reconfigure(configureExtensions(config)) }) - } - } - - function createEditor(container: HTMLDivElement): EditorView { - const extensions = [ - defaultTheme, - dynamicExtensions.of(configureExtensions({ interpretComments, patternType, placeholder })), - Prec.high( - keymap.of([ - { - key: 'Enter', - run(view) { - closeCompletion(view) - dispatch('submit') - return true - }, - }, - ]) - ), - multiline(false), - EditorView.updateListener.of(update => { - const { state } = update - if (update.docChanged) { - dispatch('change', { - query: state.sliceDoc(), - changeSource: QueryChangeSource.userInput, - }) - } - if (update.focusChanged && !update.view.hasFocus) { - closeCompletion(update.view) - } - }), - keymap.of(historyKeymap), - keymap.of(defaultKeymap), - history(), - // themeExtension.of(EditorView.darkTheme.of(isLightTheme === false)), - // queryDiagnostic(), - // The precedence of these extensions needs to be decreased - // explicitly, otherwise the diagnostic indicators will be - // hidden behind the highlight background color - Prec.low([ - //tokenInfo(), - //highlightFocusedFilter, - // It baffels me but the syntax highlighting extension has - // to come after the highlight current filter extension, - // otherwise CodeMirror keeps steeling the focus. - // See https://github.com/sourcegraph/sourcegraph/issues/38677 - querySyntaxHighlighting, - ]), - ] - - const view = new EditorView({ - state: EditorState.create({ doc: queryState.query, extensions }), - parent: container, - }) - return view - } - - $: if (editor && editor.state.sliceDoc() !== queryState.query) { - editor.dispatch({ - changes: { from: 0, to: editor.state.doc.length, insert: queryState.query }, - }) - } - - $: updateExtensions({ placeholder, patternType, interpretComments }) - - $: if (container && !editor) { - editor = createEditor(container) - if (autoFocus) { - window.requestAnimationFrame(() => editor!.focus()) - } - } -</script> - -{#if browser} - <div bind:this={container} class="root test-query-input test-editor" data-editor="codemirror6" /> -{:else} - <div class="root"> - <input value={queryState.query} {placeholder} /> - </div> -{/if} - -<style lang="scss"> - input { - border: 0; - font-family: var(--code-font-family); - font-size: var(--code-font-size); - width: 100%; - } - - .root { - flex: 1; - box-sizing: border-box; - background-color: var(--color-bg-1); - min-width: 0; - - :global(.cm-editor) { - // Codemirror shows a focus ring by default. Since we handle that - // differently, disable it here. - outline: none !important; - - :global(.cm-scroller) { - // Codemirror shows a vertical scroll bar by default (when - // overflowing). This disables it. - overflow-x: hidden; - } - - :global(.cm-content) { - caret-color: var(--search-query-text-color); - font-family: var(--code-font-family); - font-size: var(--code-font-size); - color: var(--search-query-text-color); - // Disable default padding - padding: 0; - - &:global(.focus-visible) { - box-shadow: none; - } - } - } - - :global(.cm-line) { - // Disable default padding - padding: 0; - } - - :global(.cm-placeholder) { - // CodeMirror uses display: inline-block by default, but that causes - // Chrome to render a larger cursor if the placeholder holder spans - // multiple lines. Firefox doesn't have this problem (but - // setting display: inline doesn't seem to have a negative effect - // either) - display: inline; - // Once again, Chrome renders the placeholder differently than - // Firefox. CodeMirror sets 'word-break: break-word' (which is - // deprecated) and 'overflow-wrap: anywhere' but they don't seem to - // have an effect in Chrome (at least not in this instance). - // Setting 'word-break: break-all' explicitly makes appearances a - // bit better for example queries with long tokens. - word-break: break-all; - } - // .placeholder needs to explicilty have the same background color because it - // appears to be placed outside of .focusedFilter rather than within it. - :global(.placeholder), - :global(.focusedFilter) { - background-color: var(--gray-02); - - :global(.theme-dark) & { - background-color: var(--gray-08); - } - } - } -</style> diff --git a/client/web-sveltekit/src/lib/search/EmphasizedLabel.svelte b/client/web-sveltekit/src/lib/search/EmphasizedLabel.svelte new file mode 100644 index 0000000000000..ded6e254bba48 --- /dev/null +++ b/client/web-sveltekit/src/lib/search/EmphasizedLabel.svelte @@ -0,0 +1,27 @@ +<script lang="ts"> + import { getSpans } from '$lib/branded' + + export let label: string + export let matches: Set<number> | null = null + export let offset: number = 0 + + $: spans = matches ? getSpans(matches, label.length, offset) : null +</script> + +{#if spans} + {#each spans as [start, end, match]} + {#if match} + <span class:match>{label.slice(start, end + 1)}</span> + {:else} + {label.slice(start, end + 1)} + {/if} + {/each} +{:else} + {label} +{/if} + +<style lang="scss"> + .match { + font-weight: bold; + } +</style> diff --git a/client/web-sveltekit/src/lib/search/SearchBox.svelte b/client/web-sveltekit/src/lib/search/SearchBox.svelte deleted file mode 100644 index 5efe8bc8095a0..0000000000000 --- a/client/web-sveltekit/src/lib/search/SearchBox.svelte +++ /dev/null @@ -1,238 +0,0 @@ -<script lang="ts"> - import { mdiClose, mdiCodeBrackets, mdiFormatLetterCase, mdiLightningBolt, mdiMagnify, mdiRegex } from '@mdi/js' - - import { invalidate } from '$app/navigation' - import { SearchPatternType } from '$lib/graphql-operations' - import Icon from '$lib/Icon.svelte' - import Popover from '$lib/Popover.svelte' - import Tooltip from '$lib/Tooltip.svelte' - - import CodeMirrorQueryInput from './CodeMirrorQueryInput.svelte' - import { SearchMode, submitSearch, type QueryStateStore } from './state' - - export let queryState: QueryStateStore - export let autoFocus = false - - export function focus() { - input?.focus() - } - - let input: CodeMirrorQueryInput - - $: regularExpressionEnabled = $queryState.patternType === SearchPatternType.regexp - $: structuralEnabled = $queryState.patternType === SearchPatternType.structural - $: smartEnabled = $queryState.searchMode === SearchMode.SmartSearch - - function setOrUnsetPatternType(patternType: SearchPatternType): void { - queryState.setPatternType(currentPatternType => - currentPatternType === patternType ? SearchPatternType.standard : patternType - ) - } - - async function handleSubmit(event: Event) { - event.preventDefault() - const currentQueryState = $queryState - await invalidate(`query:${$queryState.query}--${$queryState.caseSensitive}`) - submitSearch(currentQueryState) - } -</script> - -<form class="search-box" action="/search" method="get" on:submit={handleSubmit}> - <input class="hidden" value={$queryState.query} name="q" /> - <span class="context" - ><span class="search-filter-keyword">context:</span><span>{$queryState.searchContext}</span></span - > - <span class="divider" /> - <CodeMirrorQueryInput - bind:this={input} - {autoFocus} - placeholder="Search for code or files" - queryState={$queryState} - on:change={event => queryState.setQuery(event.detail.query)} - on:submit={handleSubmit} - patternType={$queryState.patternType} - /> - <Tooltip tooltip={`${$queryState.caseSensitive ? 'Disable' : 'Enable'} case sensitivity`}> - <button - class="toggle icon" - type="button" - class:active={$queryState.caseSensitive} - on:click={() => queryState.setCaseSensitive(caseSensitive => !caseSensitive)} - > - <Icon svgPath={mdiFormatLetterCase} inline /> - </button> - </Tooltip> - <Tooltip tooltip={`${regularExpressionEnabled ? 'Disable' : 'Enable'} regular expression`}> - <button - class="toggle icon" - type="button" - class:active={regularExpressionEnabled} - on:click={() => setOrUnsetPatternType(SearchPatternType.regexp)} - > - <Icon svgPath={mdiRegex} inline /> - </button> - </Tooltip> - <Tooltip tooltip={`${structuralEnabled ? 'Disable' : 'Enable'} structural search`}> - <button - class="toggle icon" - type="button" - class:active={structuralEnabled} - on:click={() => setOrUnsetPatternType(SearchPatternType.structural)} - > - <Icon svgPath={mdiCodeBrackets} inline /> - </button> - </Tooltip> - <span class="divider" /> - <Popover let:registerTrigger let:toggle> - <Tooltip tooltip="Smart search {smartEnabled ? 'enabled' : 'disabled'}"> - <button - class="toggle icon" - type="button" - class:active={smartEnabled} - on:click={() => toggle()} - use:registerTrigger - > - <Icon svgPath={mdiLightningBolt} inline /> - </button> - </Tooltip> - <div slot="content" class="popover-content" let:toggle> - {@const delayedClose = () => setTimeout(() => toggle(false), 100)} - <div class="d-flex align-items-center px-3 py-2"> - <h4 class="m-0 mr-auto">SmartSearch</h4> - <button class="icon" type="button" on:click={() => toggle(false)}> - <Icon svgPath={mdiClose} inline /> - </button> - </div> - <div> - <label class="d-flex align-items-start"> - <input - type="radio" - name="mode" - value="smart" - checked={smartEnabled} - on:click={() => { - queryState.setMode(SearchMode.SmartSearch) - delayedClose() - }} - /> - <span class="d-flex flex-column ml-1"> - <span>Enable</span> - <small class="text-muted" - >Suggest variations of your query to find more results that may relate.</small - > - </span> - </label> - <label class="d-flex align-items-start"> - <input - type="radio" - name="mode" - value="precise" - checked={!smartEnabled} - on:click={() => { - queryState.setMode(SearchMode.Precise) - delayedClose() - }} - /> - <span class="d-flex flex-column ml-1"> - <span>Disable</span> - <small class="text-muted">Only show results that previsely match your query.</small> - </span> - </label> - </div> - </div> - </Popover> - <button class="submit"> - <Icon aria-label="search" svgPath={mdiMagnify} inline /> - </button> -</form> - -<style lang="scss"> - form { - width: 100%; - display: flex; - align-items: center; - background-color: var(--color-bg-1); - padding-left: 0.5rem; - border-top-left-radius: 5px; - border-bottom-left-radius: 5px; - border: 1px solid var(--border-color); - margin: 2px; - - &:focus-within { - outline: 0; - box-shadow: var(--focus-box-shadow); - } - } - - .hidden { - display: none; - } - - .context { - font-family: var(--code-font-family); - font-size: 0.75rem; - } - - button.toggle { - width: 1.5rem; - height: 1.5rem; - cursor: pointer; - border-radius: var(--border-radius); - display: flex; - align-items: center; - justify-content: center; - - &.active { - background-color: var(--primary); - color: var(--light-text); - } - - :global(svg) { - transform: scale(1.172); - } - } - - button.submit { - margin-left: 1rem; - padding: 0.5rem 1rem; - border-top-right-radius: 5px; - border-bottom-right-radius: 5px; - background-color: var(--primary); - border: none; - color: var(--light-text); - cursor: pointer; - - &:hover { - background-color: var(--primary-3); - } - } - - .divider { - width: 1px; - height: 1rem; - background-color: var(--border-color-2); - margin: 0 0.5rem; - } - - button.icon { - padding: 0; - margin: 0; - border: 0; - background-color: transparent; - cursor: pointer; - } - - .popover-content { - input { - margin-left: 0; - } - - label { - max-width: 17rem; - display: flex; - cursor: pointer; - padding: 0.5rem 1rem; - border-top: 1px solid var(--border-color); - } - } -</style> diff --git a/client/web-sveltekit/src/lib/search/SyntaxHighlightedQuery.svelte b/client/web-sveltekit/src/lib/search/SyntaxHighlightedQuery.svelte index 31571c09e4c49..768561f6741ab 100644 --- a/client/web-sveltekit/src/lib/search/SyntaxHighlightedQuery.svelte +++ b/client/web-sveltekit/src/lib/search/SyntaxHighlightedQuery.svelte @@ -1,15 +1,23 @@ <script lang="ts"> import { decorateQuery } from '$lib/branded' + import EmphasizedLabel from './EmphasizedLabel.svelte' export let query: string + export let matches: Set<number> | null = null $: decorations = decorateQuery(query) </script> <span class="text-monospace search-query-link"> {#if decorations} - {#each decorations as { key, className, value } (key)} - <span class={className}>{value}</span> + {#each decorations as { key, className, value, token } (key)} + <span class={className}> + {#if matches} + <EmphasizedLabel label={value} {matches} offset={token.range.start} /> + {:else} + {value} + {/if} + </span> {/each} {:else} {query} diff --git a/client/web-sveltekit/src/lib/search/input/ActionInfo.svelte b/client/web-sveltekit/src/lib/search/input/ActionInfo.svelte new file mode 100644 index 0000000000000..18dd04ece4b44 --- /dev/null +++ b/client/web-sveltekit/src/lib/search/input/ActionInfo.svelte @@ -0,0 +1,37 @@ +<script lang="ts"> + import type { Action } from '$lib/branded' + import { shortcutDisplayName } from '$lib/shared' + + export let action: Action + export let shortcut: string + + $: displayName = shortcutDisplayName(shortcut) +</script> + +Press <kbd>{displayName}</kbd> to +{#if action.type === 'completion'} + <strong>add</strong> to your query +{:else if action.type === 'goto'} + <strong>go to</strong> the suggestion +{:else if action.type === 'command'} + <strong>execute</strong> the command +{/if} + +<style lang="scss"> + kbd { + all: unset; + // This is the code live on S2 but I can't ind it in our code base + font-family: var(--code-font-family); + font-size: var(--code-font-size); + display: inline-block; + line-height: 1.3333333333; + height: 1.125rem; + padding: 0 0.25rem; + margin: 0 0.125rem; + vertical-align: middle; + border-radius: 3px; + color: var(--body-color); + background-color: var(--color-bg-2); + box-shadow: inset 0 -2px 0 var(--color-bg-3); + } +</style> diff --git a/client/web-sveltekit/src/lib/search/input/SearchInput.svelte b/client/web-sveltekit/src/lib/search/input/SearchInput.svelte new file mode 100644 index 0000000000000..946225828c997 --- /dev/null +++ b/client/web-sveltekit/src/lib/search/input/SearchInput.svelte @@ -0,0 +1,335 @@ +<script lang="ts" context="module"> + // TODO(fkling): Add support for missing features + // - History more + // - Default context support + // - Global keyboard shortcut + import { mdiCodeBrackets, mdiFormatLetterCase, mdiRegex } from '@mdi/js' + + import { goto, invalidate } from '$app/navigation' + import { SearchPatternType } from '$lib/graphql-operations' + import Icon from '$lib/Icon.svelte' + import Tooltip from '$lib/Tooltip.svelte' + + import { submitSearch, type QueryStateStore } from '../state' + import BaseCodeMirrorQueryInput from '$lib/search/BaseQueryInput.svelte' + import { createSuggestionsSource } from '$lib/web' + import { gql, query } from '$lib/graphql' + import Suggestions from './Suggestions.svelte' + import { user } from '$lib/stores' + import SmartSearchToggleButton from './SmartSearchToggleButton.svelte' + + import { EditorSelection, EditorState, Prec, type Extension } from '@codemirror/state' + import { EditorView } from '@codemirror/view' + import { + type Option, + type Action, + applyAction, + modeScope, + queryDiagnostic, + overrideContextOnPaste, + filterDecoration, + tokenInfo, + placeholder, + showWhenEmptyWithoutContext, + suggestions, + } from '$lib/branded' + + const placeholderText = 'Search for code or files...' + + // Creates extensions that don't depend on props + const position0 = EditorSelection.single(0) + const staticExtensions: Extension = [ + placeholder(placeholderText, showWhenEmptyWithoutContext), + EditorState.transactionFilter.of(transaction => { + // This is a hacky way to "fix" the cursor position when the input receives + // focus by clicking outside of it in Chrome. + // Debugging has revealed that in such a case the transaction has a user event + // 'select', the new selection is set to `0` and 'scrollIntoView' is 'false'. + // This is different from other events that change the cursor position: + // - Clicking on text inside the input (whether focused or not) will be a 'select.pointer' + // user event. + // - Moving the cursor with arrow keys will be a 'select' user event but will also set + // 'scrollIntoView' to 'true' + // - Entering new characters will be of user type 'input' + // - Selecting a text range will be of user type 'select.pointer' + // - Tabbing to the input seems to only trigger a 'select' user event transaction when + // the user clicked outside the input (also only in Chrome, this transaction doesn't + // occur in Firefox) + + if ( + !transaction.isUserEvent('select.pointer') && + transaction.isUserEvent('select') && + !transaction.scrollIntoView && + transaction.selection?.eq(position0) + ) { + return [transaction, { selection: EditorSelection.single(transaction.newDoc.length) }] + } + return transaction + }), + modeScope([queryDiagnostic(), overrideContextOnPaste], [null]), + Prec.low([modeScope([tokenInfo(), filterDecoration], [null])]), + EditorView.theme({ + '&': { + flex: 1, + backgroundColor: 'var(--input-bg)', + borderRadius: 'var(--border-radius)', + borderColor: 'var(--border-color)', + // To ensure that the input doesn't overflow the parent + minWidth: 0, + marginRight: '0.5rem', + }, + '&.cm-editor.cm-focused': { + outline: 'none', + }, + '.cm-scroller': { + overflowX: 'hidden', + }, + '.cm-content': { + paddingLeft: '0.25rem', + }, + '.cm-content.focus-visible': { + boxShadow: 'none', + }, + '.sg-decorated-token-hover': { + borderRadius: '3px', + }, + '.sg-query-filter-placeholder': { + color: 'var(--text-muted)', + fontStyle: 'italic', + }, + }), + ] + + function graphqlQuery<T, V extends Record<string, any>>(request: string, variables: V) { + return query<T, V>(gql(request), variables) + } +</script> + +<script lang="ts"> + export let queryState: QueryStateStore + export let showSmartSearchButton = false + + export function focus() { + input?.focus() + } + + const popoverID = 'main-search' + + let input: BaseCodeMirrorQueryInput + let editor: EditorView | null = null + let mode = '' + let suggestionsPaddingTop = 0 + let suggestionsUI: Extension = [] + + $: regularExpressionEnabled = $queryState.patternType === SearchPatternType.regexp + $: structuralEnabled = $queryState.patternType === SearchPatternType.structural + $: extension = [ + suggestions({ + id: popoverID, + source: createSuggestionsSource({ + graphqlQuery, + authenticatedUser: $user, + isSourcegraphDotCom: false, + }), + navigate: goto, + }), + suggestionsUI, + staticExtensions, + ] + + function setOrUnsetPatternType(patternType: SearchPatternType): void { + queryState.setPatternType(currentPatternType => + currentPatternType === patternType ? SearchPatternType.standard : patternType + ) + } + + async function handleSubmit(event: Event) { + event.preventDefault() + const currentQueryState = $queryState + await invalidate(`query:${$queryState.query}--${$queryState.caseSensitive}`) + submitSearch(currentQueryState) + } + + function selectOption(event: { detail: { option: Option; action: Action } }): void { + if (editor) { + applyAction(editor, event.detail.action, event.detail.option, 'mouse') + window.requestAnimationFrame(() => editor?.focus()) + } + } +</script> + +<form + bind:clientHeight={suggestionsPaddingTop} + class="search-box" + action="/search" + method="get" + on:submit={handleSubmit} +> + <input class="hidden" value={$queryState.query} name="q" /> + <div class="focus-container"> + <div class="mode-switcher"></div> + <BaseCodeMirrorQueryInput + bind:this={input} + bind:view={editor} + placeholder="Search for code or files" + value={$queryState.query} + on:change={event => queryState.setQuery(event.detail)} + on:enter={handleSubmit} + patternType={$queryState.patternType} + interpretComments={false} + {extension} + /> + {#if !mode} + <Tooltip tooltip={`${$queryState.caseSensitive ? 'Disable' : 'Enable'} case sensitivity`}> + <button + class="toggle icon" + type="button" + class:active={$queryState.caseSensitive} + on:click={() => queryState.setCaseSensitive(caseSensitive => !caseSensitive)} + > + <Icon svgPath={mdiFormatLetterCase} inline /> + </button> + </Tooltip> + <Tooltip tooltip="{regularExpressionEnabled ? 'Disable' : 'Enable'} regular expression"> + <button + class="toggle icon" + type="button" + class:active={regularExpressionEnabled} + on:click={() => setOrUnsetPatternType(SearchPatternType.regexp)} + > + <Icon svgPath={mdiRegex} inline /> + </button> + </Tooltip> + <Tooltip tooltip="{structuralEnabled ? 'Disable' : 'Enable'} structural search"> + <button + class="toggle icon" + type="button" + class:active={structuralEnabled} + on:click={() => setOrUnsetPatternType(SearchPatternType.structural)} + > + <Icon svgPath={mdiCodeBrackets} inline /> + </button> + </Tooltip> + {#if showSmartSearchButton} + <span class="divider" /> + <SmartSearchToggleButton {queryState} /> + {/if} + {/if} + </div> + <div class="suggestions" style:padding-top="{suggestionsPaddingTop}px"> + <Suggestions bind:this={suggestionsUI} on:select={selectOption} /> + </div> +</form> + +<style lang="scss"> + @use '$lib/breakpoints'; + form { + width: 100%; + position: relative; + padding: 0.75rem; + + &:focus-within { + .suggestions { + display: block; + } + } + } + + .hidden { + display: none; + } + + .focus-container { + flex: 1; + display: flex; + align-items: center; + min-height: 32px; + padding: 0 0.25rem; + border-radius: 4px; + border: 1px solid var(--border-color-2); + background-color: var(--input-bg); + position: relative; + z-index: 1; + + &:focus-within { + @media (--sm-breakpoint-up) { + outline: 2px solid var(--primary-2); + outline-offset: 0; + border-color: var(--primary-2); + } + } + + @media (--xs-breakpoint-down) { + flex-direction: column; + align-items: start; + padding: 0.5rem; + gap: 0.5rem; + } + } + + .suggestions { + display: none; + position: absolute; + top: 0; + left: 0; + right: 0; + border-radius: 8px; + background-color: var(--color-bg-1); + box-shadow: 0 10px 50px rgba(0, 0, 0, 0.15); + + // Set a default paddings to the suggestion panel (see Suggestions.module.scss) + --suggestions-padding: 0.75rem; + + :global(.theme-dark) & { + box-shadow: 0 10px 60px rgba(0, 0, 0, 0.8); + } + } + + button.toggle { + width: 1.5rem; + height: 1.5rem; + cursor: pointer; + border-radius: var(--border-radius); + display: flex; + align-items: center; + justify-content: center; + + &.active { + background-color: var(--primary); + color: var(--light-text); + } + + :global(svg) { + transform: scale(1.172); + } + } + + .divider { + width: 1px; + height: 1rem; + background-color: var(--border-color-2); + margin: 0 0.5rem; + } + + button.icon { + padding: 0; + margin: 0; + border: 0; + background-color: transparent; + cursor: pointer; + } + + .popover-content { + input { + margin-left: 0; + } + + label { + max-width: 17rem; + display: flex; + cursor: pointer; + padding: 0.5rem 1rem; + border-top: 1px solid var(--border-color); + } + } +</style> diff --git a/client/web-sveltekit/src/lib/search/input/SmartSearchToggleButton.svelte b/client/web-sveltekit/src/lib/search/input/SmartSearchToggleButton.svelte new file mode 100644 index 0000000000000..a905ffb064c2c --- /dev/null +++ b/client/web-sveltekit/src/lib/search/input/SmartSearchToggleButton.svelte @@ -0,0 +1,120 @@ +<script lang="ts"> + import Icon from '$lib/Icon.svelte' + import Popover from '$lib/Popover.svelte' + import Tooltip from '$lib/Tooltip.svelte' + import { mdiClose, mdiLightningBolt } from '@mdi/js' + import { SearchMode, type QueryStateStore } from '../state' + + export let queryState: QueryStateStore + + $: smartEnabled = $queryState.searchMode === SearchMode.SmartSearch +</script> + +<Popover let:registerTrigger let:toggle> + <Tooltip tooltip="Smart search {smartEnabled ? 'enabled' : 'disabled'}"> + <button + class="toggle icon" + type="button" + class:active={smartEnabled} + on:click={() => toggle()} + use:registerTrigger + > + <Icon svgPath={mdiLightningBolt} inline /> + </button> + </Tooltip> + <div slot="content" class="popover-content" let:toggle> + {@const delayedClose = () => setTimeout(() => toggle(false), 100)} + <div class="d-flex align-items-center px-3 py-2"> + <h4 class="m-0 mr-auto">SmartSearch</h4> + <button class="icon" type="button" on:click={() => toggle(false)}> + <Icon svgPath={mdiClose} inline /> + </button> + </div> + <div> + <label class="d-flex align-items-start"> + <input + type="radio" + name="mode" + value="smart" + checked={smartEnabled} + on:click={() => { + queryState.setMode(SearchMode.SmartSearch) + delayedClose() + }} + /> + <span class="d-flex flex-column ml-1"> + <span>Enable</span> + <small class="text-muted" + >Suggest variations of your query to find more results that may relate.</small + > + </span> + </label> + <label class="d-flex align-items-start"> + <input + type="radio" + name="mode" + value="precise" + checked={!smartEnabled} + on:click={() => { + queryState.setMode(SearchMode.Precise) + delayedClose() + }} + /> + <span class="d-flex flex-column ml-1"> + <span>Disable</span> + <small class="text-muted">Only show results that previsely match your query.</small> + </span> + </label> + </div> + </div> +</Popover> + +<style lang="scss"> + button.toggle { + width: 1.5rem; + height: 1.5rem; + cursor: pointer; + border-radius: var(--border-radius); + display: flex; + align-items: center; + justify-content: center; + + &.active { + background-color: var(--primary); + color: var(--light-text); + } + + :global(svg) { + transform: scale(1.172); + } + } + + .divider { + width: 1px; + height: 1rem; + background-color: var(--border-color-2); + margin: 0 0.5rem; + } + + button.icon { + padding: 0; + margin: 0; + border: 0; + background-color: transparent; + cursor: pointer; + } + + .popover-content { + input { + margin-left: 0; + } + + label { + max-width: 17rem; + display: flex; + cursor: pointer; + padding: 0.5rem 1rem; + border-top: 1px solid var(--border-color); + } + } +</style> diff --git a/client/web-sveltekit/src/lib/search/input/SuggestionOption.svelte b/client/web-sveltekit/src/lib/search/input/SuggestionOption.svelte new file mode 100644 index 0000000000000..4a8eff7d465db --- /dev/null +++ b/client/web-sveltekit/src/lib/search/input/SuggestionOption.svelte @@ -0,0 +1,174 @@ +<script lang="ts" context="module"> + const actionNames: Record<Action['type'], string> = { + completion: 'Add', + goto: 'Go to', + command: 'Run', + } +</script> + +<script lang="ts"> + import Icon from '$lib/Icon.svelte' + import { type Option, type Action, RenderAs } from '$lib/branded' + import SyntaxHighlightedQuery from '../SyntaxHighlightedQuery.svelte' + import EmphasizedLabel from '../EmphasizedLabel.svelte' + + export let option: Option + export let groupIndex: number + export let rowIndex: number + export let selected: boolean + + function getFieldValue(option: Option): { field: string; value: string } { + let field = '' + let value = '' + + if (option.render === RenderAs.FILTER) { + const separatorIndex = option.label.indexOf(':') + if (separatorIndex > -1) { + field = option.label.slice(0, separatorIndex) + value = option.label.slice(separatorIndex + 1) + } else { + field = option.label + } + } + + return { field, value } + } + + $: ({ field, value } = getFieldValue(option)) +</script> + +<li role="row" id="{groupIndex}x{rowIndex}" aria-selected={selected}> + {#if option.icon} + <div class="pr-1 align-self-start"> + <Icon svgPath={option.icon} aria-hidden="true" inline /> + </div> + {/if} + <div class="inner-row"> + <div class="d-flex flex-wrap"> + <div role="gridcell" class="label test-option-label"> + {#if field} + <span class="filter-option"> + <span class="search-filter-keyword"> + <EmphasizedLabel label={field} matches={option.matches} /> + </span> + <span class="separator">:</span> + {#if value} + <span + ><EmphasizedLabel + label={value} + matches={option.matches} + offset={field.length + 1} + /></span + > + {/if} + </span> + {:else if option.render === RenderAs.QUERY} + <SyntaxHighlightedQuery query={option.label} matches={option.matches} /> + {:else} + <EmphasizedLabel label={option.label} matches={option.matches} /> + {/if} + </div> + {#if option.description} + <div role="gridcell" class="description"> + {option.description} + </div> + {/if} + </div> + <div class="note"> + <div role="gridcell" data-action="primary"> + {option.action.name ?? actionNames[option.action.type]} + </div> + {#if option.alternativeAction} + <div role="gridcell" data-action="secondary"> + {option.alternativeAction.name ?? actionNames[option.alternativeAction.type]} + </div> + {/if} + </div> + </div> +</li> + +<style lang="scss"> + [role='row'] { + --color: var(icon-color); + + display: flex; + align-items: center; + padding: 0.25rem 0.5rem; + border-radius: var(--border-radius); + font-family: var(--code-font-family); + font-size: 0.75rem; + min-height: 1.5rem; + + &[aria-selected='true'] { + background-color: var(--subtle-bg); + border-radius: 4px; + } + + &:hover { + background-color: var(--color-bg-2); + cursor: pointer; + } + + // Used to make label and actions wrappable + .inner-row { + display: flex; + flex: 1; + align-items: center; + + @media (--xs-breakpoint-down) { + flex-direction: column; + align-items: start; + gap: 0.25rem; + } + } + + .label { + margin-right: 0.5rem; + } + + .description { + color: var(--input-placeholder-color); + } + + .note { + font-size: 0.75rem; + margin-left: auto; + color: var(--text-muted); + font-family: var(--font-family-base); + display: flex; + white-space: nowrap; + + @media (--xs-breakpoint-down) { + margin-left: 0; + } + + > [role='gridcell'] { + padding: 0 0.5rem; + + &:hover { + text-decoration: underline; + } + + + [role='gridcell'] { + border-left: 1px solid var(--border-color-2); + } + + @media (--xs-breakpoint-down) { + &:first-of-type { + padding-left: 0; + } + } + } + } + } + + .filter-option { + font-family: var(--code-font-family); + font-size: 0.75rem; + display: flex; // to remove whitespace around the filter parts + + .separator { + color: var(--search-filter-keyword-color); + } + } +</style> diff --git a/client/web-sveltekit/src/lib/search/input/Suggestions.svelte b/client/web-sveltekit/src/lib/search/input/Suggestions.svelte new file mode 100644 index 0000000000000..f92a97cfff99a --- /dev/null +++ b/client/web-sveltekit/src/lib/search/input/Suggestions.svelte @@ -0,0 +1,202 @@ +<script lang="ts"> + import { getSuggestionsState, type Option, type Group, type Action } from '$lib/branded' + import { EditorView } from '@codemirror/view' + import SuggestionOption from './SuggestionOption.svelte' + import { createEventDispatcher, tick } from 'svelte' + import { isSafari } from '@sourcegraph/common/src/util' + import Icon from '$lib/Icon.svelte' + import { mdiInformationOutline } from '@mdi/js' + import ActionInfo from './ActionInfo.svelte' + import { restrictToViewport } from '$lib/dom' + + const dispatch = createEventDispatcher<{ select: { option: Option; action: Action } }>() + + let suggestions: Group[] = [] + let open = false + let activeRowIndex = -1 + let container: HTMLElement | undefined + + // This is crazy but this allows us to make this component a CodeMirror extension. + // Doesn't work with HMR reloading though. + export const extension = EditorView.updateListener.of(update => { + const state = getSuggestionsState(update.state) + if (state !== getSuggestionsState(update.startState)) { + if (suggestions !== state.result.groups) { + suggestions = state.result.groups + } + open = state.open + activeRowIndex = state.selectedOption + } + }) + + function handleSelection(event: MouseEvent) { + const target = event.target as HTMLElement + const match = target.closest('li[role="row"]')?.id.match(/\d+x\d+/) + if (match) { + // Extracts the group and row index from the elements ID to pass + // the right option value to the callback. + const [groupIndex, optionIndex] = match[0].split('x') + const option = suggestions[+groupIndex].options[+optionIndex] + // Determine which action was selected. + dispatch('select', { + option, + action: + (target.closest<HTMLElement>('[data-action]')?.dataset?.action === 'secondary' && + option.alternativeAction) || + option.action, + }) + } + } + + async function scrollIntoView(container: HTMLElement) { + // Wait for DOM to update + await tick() + // Options are not supported in Safari according to + // https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView#browser_compatibility + container.querySelector('[aria-selected="true"]')?.scrollIntoView(isSafari() ? false : { block: 'nearest' }) + } + + $: flattenedRows = suggestions.flatMap(group => group.options) + $: selectedOption = flattenedRows[activeRowIndex] + $: show = open && suggestions.length > 0 + + $: if (container && selectedOption) { + // Scroll into view whenever selectedOption changes + scrollIntoView(container) + } +</script> + +<div class="root" bind:this={container} use:restrictToViewport={{ offset: -20 }}> + {#if show} + <div class="suggestions" role="grid" tabindex="-1" on:mousedown={handleSelection}> + {#each suggestions as group, groupIndex (group.title)} + {#if group.options.length > 0} + <ul role="rowgroup" aria-labelledby="{groupIndex}-label"> + <li id="{groupIndex}-lable" role="presentation">{group.title}</li> + {#each group.options as option, rowIndex (option)} + <SuggestionOption {groupIndex} {rowIndex} {option} selected={option === selectedOption} /> + {/each} + </ul> + {/if} + {/each} + </div> + {#if selectedOption} + <div class="footer"> + <span> + <ActionInfo action={selectedOption.action} shortcut="Enter" />{' '} + {#if selectedOption.alternativeAction} + <ActionInfo action={selectedOption.alternativeAction} shortcut="Mod+Enter" /> + {/if} + </span> + <Icon svgPath={mdiInformationOutline} aria-hidden="true" inline /> + </div> + {/if} + {/if} +</div> + +<style lang="scss"> + .root { + --color: var(--icon-color); + + overflow-y: hidden; + display: flex; + flex-direction: column; + + .footer { + display: flex; + align-items: center; + justify-content: space-between; + border-top: 1px solid var(--border-color); + padding: 0.5rem 1.25rem; + flex: 0 0 auto; + color: var(--text-muted); + } + + .suggestions { + overflow-y: auto; + margin: 0 var(--suggestions-padding) var(--suggestions-padding); + + // Don't render the suggestions panel if we don't have any suggestions + // in order to avoid extra paddings appearance + &:empty { + display: none; + } + + ul { + margin: 0; + padding: 0; + list-style: none; + flex: 1; + } + + [role='rowgroup'] { + border-bottom: 1px solid var(--border-color); + padding-top: 0.75rem; + padding-bottom: 0.75rem; + + &:first-of-type { + padding-top: 0; + } + + &:last-of-type { + border: none; + padding-bottom: 0; + } + + // group header + [role='presentation'] { + color: var(--text-muted); + font-size: 0.75rem; + font-weight: 500; + margin-bottom: 0.25rem; + padding: 0 0.5rem; + } + + /* + Layout of a row + The icon is always top aligned next to the label. + Label and description can wrap around if necessary, in which case the + action labels are centered. + On small screens the action labels are shown on a separate row. + + Normal: + ā”Œā”€ā”€ inner-row ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” + ā”‚ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” ā”‚ + ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”ā”‚ā”‚ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”ā”‚ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”ā”‚ + ā”‚ Icon ā”‚ā”‚ā”‚ā”‚ Label ā”‚ā”‚ Description ā”‚ā”‚ā”‚ Actions ā”‚ā”‚ + ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ā”‚ā”‚ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ā”‚ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ā”‚ + ā”‚ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ ā”‚ + ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ + + Wrapped description: + ā”Œā”€ā”€ā”€ inner-row ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” + ā”‚ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” ā”‚ + ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”ā”‚ā”‚ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”ā”‚ ā”‚ + ā”‚ Icon ā”‚ā”‚ā”‚ā”‚ Label ā”‚ā”‚ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”ā”‚ + ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ā”‚ā”‚ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ā”‚ā”‚ Actions ā”‚ā”‚ + ā”‚ā”‚ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”ā”‚ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ā”‚ + ā”‚ā”‚ā”‚ Description ā”‚ā”‚ ā”‚ + ā”‚ā”‚ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ā”‚ ā”‚ + ā”‚ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ ā”‚ + ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ + + Mobile: + ā”Œā”€ā”€ā”€ inner-row ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” + ā”‚ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”ā”‚ + ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”ā”‚ā”‚ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”ā”‚ā”‚ + ā”‚ Icon ā”‚ā”‚ā”‚ā”‚ Label ā”‚ā”‚ā”‚ + ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ā”‚ā”‚ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ā”‚ā”‚ + ā”‚ā”‚ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”ā”‚ā”‚ + ā”‚ā”‚ā”‚ Description ā”‚ā”‚ā”‚ + ā”‚ā”‚ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ā”‚ā”‚ + ā”‚ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ā”‚ + ā”‚ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”ā”‚ + ā”‚ā”‚ Actions ā”‚ā”‚ + ā”‚ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ā”‚ + ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ + + */ + } + } + } +</style> diff --git a/client/web-sveltekit/src/lib/search/queryExamples.ts b/client/web-sveltekit/src/lib/search/queryExamples.ts deleted file mode 100644 index 403ba1005979c..0000000000000 --- a/client/web-sveltekit/src/lib/search/queryExamples.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { basicSyntaxColumns, exampleQueryColumns } from '$lib/branded' - -export function getQueryExamples(): { title: string; columns: typeof basicSyntaxColumns }[] { - return [ - { - title: 'Code search basics', - columns: basicSyntaxColumns('test', 'repo', 'org/repo'), - }, - { - title: 'Search query examples', - columns: exampleQueryColumns, - }, - ] -} diff --git a/client/web-sveltekit/src/lib/search/state.ts b/client/web-sveltekit/src/lib/search/state.ts index aee4265fe1718..8a6c7a3e137ce 100644 --- a/client/web-sveltekit/src/lib/search/state.ts +++ b/client/web-sveltekit/src/lib/search/state.ts @@ -14,12 +14,12 @@ export enum SearchMode { type Update<T> = T | ((value: T) => T) interface Options { - caseSensitive: boolean - regularExpression: boolean - patternType: SearchPatternType - searchMode: SearchMode - query: string - searchContext: string + readonly caseSensitive: boolean + readonly regularExpression: boolean + readonly patternType: SearchPatternType + readonly searchMode: SearchMode + readonly query: string + readonly searchContext: string } type QuerySettings = Pick< @@ -31,11 +31,11 @@ export type QueryOptions = Pick<Options, 'patternType' | 'caseSensitive' | 'sear export class QueryState { private defaultCaseSensitive = false private defaultPatternType = SearchPatternType.standard - private defaultSearchMode = SearchMode.SmartSearch + private defaultSearchMode = SearchMode.Precise private defaultQuery = '' private defaultSearchContext = 'global' - private constructor(private options: Partial<Options>, public settings: QuerySettings) {} + private constructor(public readonly options: Partial<Options>, public settings: QuerySettings) {} public static init(options: Partial<Options>, settings: QuerySettings): QueryState { return new QueryState(options, settings) @@ -134,7 +134,7 @@ export function queryStateStore(initial: Partial<Options> = {}, settings: QueryS update(state => state.setMode(mode)) }, set(options: Partial<Options>) { - update(state => QueryState.init(options, state.settings)) + update(state => QueryState.init({ ...state.options, ...options }, state.settings)) }, } } diff --git a/client/web-sveltekit/src/lib/shared.ts b/client/web-sveltekit/src/lib/shared.ts index 7f8b0c3e0602d..8fb67bc7ec915 100644 --- a/client/web-sveltekit/src/lib/shared.ts +++ b/client/web-sveltekit/src/lib/shared.ts @@ -73,6 +73,7 @@ export { QueryChangeSource, type QueryState } from '@sourcegraph/shared/src/sear export { migrateLocalStorageToTemporarySettings } from '@sourcegraph/shared/src/settings/temporary/migrateLocalStorageToTemporarySettings' export type { TemporarySettings } from '@sourcegraph/shared/src/settings/temporary/TemporarySettings' export { SyntaxKind } from '@sourcegraph/shared/src/codeintel/scip' +export { shortcutDisplayName } from '@sourcegraph/shared/src/keyboardShortcuts' // Copies of non-reusable code diff --git a/client/web-sveltekit/src/lib/theme.ts b/client/web-sveltekit/src/lib/theme.ts index 49330674f9570..83ee26101a19d 100644 --- a/client/web-sveltekit/src/lib/theme.ts +++ b/client/web-sveltekit/src/lib/theme.ts @@ -51,7 +51,6 @@ export const humanTheme = createMappingStore( } }, value => { - console.log(value) switch (value) { case 'Light': { return Theme.Light diff --git a/client/web-sveltekit/src/lib/web.ts b/client/web-sveltekit/src/lib/web.ts index 4af0fd3102899..dc7d20c9d4548 100644 --- a/client/web-sveltekit/src/lib/web.ts +++ b/client/web-sveltekit/src/lib/web.ts @@ -2,6 +2,7 @@ /* eslint-disable no-restricted-imports */ export { parseSearchURL } from '@sourcegraph/web/src/search/index' +export { createSuggestionsSource } from '@sourcegraph/web/src/search/input/suggestions' export { replaceRevisionInURL } from '@sourcegraph/web/src/util/url' export { syntaxHighlight } from '@sourcegraph/web/src/repo/blob/codemirror/highlight' diff --git a/client/web-sveltekit/src/routes/[...repo=reporev]/RepoNotFoundError.svelte b/client/web-sveltekit/src/routes/[...repo=reporev]/RepoNotFoundError.svelte index 0e9eac996a237..84e768d90af1b 100644 --- a/client/web-sveltekit/src/routes/[...repo=reporev]/RepoNotFoundError.svelte +++ b/client/web-sveltekit/src/routes/[...repo=reporev]/RepoNotFoundError.svelte @@ -14,8 +14,8 @@ <HeroPage title="Repository not found" svgIconPath={mdiMapSearch}> {#if viewerCanAdminister} <p> - As a site admin, you can add <Code>{repo}</Code> to Sourcegraph to allow users to search and - view it by <a href="/site-admin/external-services">connecting an external service</a> referencing it. + As a site admin, you can add <Code>{repo}</Code> to Sourcegraph to allow users to search and view it by + <a href="/site-admin/external-services">connecting an external service</a> referencing it. </p> {:else} <p>To access this repository, contact the Sourcegraph admin.</p> diff --git a/client/web-sveltekit/src/routes/search/+page.svelte b/client/web-sveltekit/src/routes/search/+page.svelte index bb3e56e6a04d5..dab81d922a9ff 100644 --- a/client/web-sveltekit/src/routes/search/+page.svelte +++ b/client/web-sveltekit/src/routes/search/+page.svelte @@ -1,10 +1,8 @@ <script lang="ts"> - import { getQueryExamples } from '$lib/search/queryExamples' import { queryStateStore } from '$lib/search/state' import { settings } from '$lib/stores' import type { PageData } from './$types' - import QueryExamples from './QueryExamples.svelte' import SearchHome from './SearchHome.svelte' import SearchResults from './SearchResults.svelte' @@ -18,14 +16,5 @@ {#if data.stream} <SearchResults stream={data.stream} queryFromURL={data.queryOptions.query} {queryState} /> {:else} - <SearchHome {queryState}> - <div class="mt-5"> - <!-- - Example for how we might want to make the homepage composable. - Ideally all logic that determines what to shoe for a specific - version (e.g. which examples to show) is kept inside pages. - --> - <QueryExamples examples={getQueryExamples()} /> - </div> - </SearchHome> + <SearchHome {queryState} /> {/if} diff --git a/client/web-sveltekit/src/routes/search/+page.ts b/client/web-sveltekit/src/routes/search/+page.ts index d768124b2765e..5e8a191327f7d 100644 --- a/client/web-sveltekit/src/routes/search/+page.ts +++ b/client/web-sveltekit/src/routes/search/+page.ts @@ -83,7 +83,11 @@ export const load: PageLoad = ({ url, depends }) => { }, } } - return {} + return { + queryOptions: { + query: '', + }, + } } function createCacheKey(options: StreamSearchOptions, query: string): string { diff --git a/client/web-sveltekit/src/routes/search/QueryExamples.svelte b/client/web-sveltekit/src/routes/search/QueryExamples.svelte deleted file mode 100644 index b9e2586ba3a51..0000000000000 --- a/client/web-sveltekit/src/routes/search/QueryExamples.svelte +++ /dev/null @@ -1,79 +0,0 @@ -<script lang="ts"> - import QueryExampleChip from '$lib/search/QueryExampleChip.svelte' - import type { getQueryExamples } from '$lib/search/queryExamples' - import TabPanel from '$lib/TabPanel.svelte' - import Tabs from '$lib/Tabs.svelte' - - export let examples: ReturnType<typeof getQueryExamples> -</script> - -{#if examples.length > 1} - <Tabs> - {#each examples as panel (panel.title)} - <TabPanel title={panel.title}> - <div> - {#each panel.columns as groups} - <ul> - {#each groups as group (group.title)} - <li> - <h2>{group.title}</h2> - <ul> - {#each group.queryExamples as example} - <li><QueryExampleChip queryExample={example} /></li> - {/each} - </ul> - </li> - {/each} - </ul> - {/each} - </div> - </TabPanel> - {/each} - </Tabs> -{:else} - {#each examples[0].columns as column} - <ul> - {#each column as group (group.title)} - <li> - <h2>{group.title}</h2> - <ul> - {#each group.queryExamples as example} - <li><QueryExampleChip queryExample={example} /></li> - {/each} - </ul> - </li> - {/each} - </ul> - {/each} -{/if} - -<style lang="scss"> - @import '$lib/breakpoints'; - div { - display: flex; - gap: 4rem; - - @media (--xs-breakpoint-down) { - flex-direction: column; - gap: 0; - } - } - - h2 { - margin-top: 1rem; - margin-bottom: 0.75rem; - color: var(--text-muted); - font-size: var(--font-size-base); - font-weight: 400; - } - - ul { - margin: 0; - padding: 0; - list-style: none; - - li { - margin: 0.5rem 0; - } - } -</style> diff --git a/client/web-sveltekit/src/routes/search/SearchHome.svelte b/client/web-sveltekit/src/routes/search/SearchHome.svelte index 75f0c162e4c74..207fa6ad4ad7e 100644 --- a/client/web-sveltekit/src/routes/search/SearchHome.svelte +++ b/client/web-sveltekit/src/routes/search/SearchHome.svelte @@ -2,7 +2,7 @@ import { setContext } from 'svelte' import { logoLight, logoDark } from '$lib/images' - import SearchBox from '$lib/search/SearchBox.svelte' + import SearchInput from '$lib/search/input/SearchInput.svelte' import type { QueryStateStore } from '$lib/search/state' import type { SearchPageContext } from '$lib/search/utils' import { isLightTheme } from '$lib/stores' @@ -20,9 +20,8 @@ <div class="content"> <img class="logo" src={$isLightTheme ? logoLight : logoDark} alt="Sourcegraph Logo" /> <div class="search"> - <SearchBox autoFocus {queryState} /> + <SearchInput {queryState} /> </div> - <slot /> </div> </section> @@ -43,7 +42,6 @@ align-items: center; width: 100%; max-width: 64rem; - overflow-x: hidden; :global(.search-box) { align-self: stretch; diff --git a/client/web-sveltekit/src/routes/search/SearchResults.svelte b/client/web-sveltekit/src/routes/search/SearchResults.svelte index 2bd22be3249c9..654b719b3f6e4 100644 --- a/client/web-sveltekit/src/routes/search/SearchResults.svelte +++ b/client/web-sveltekit/src/routes/search/SearchResults.svelte @@ -33,7 +33,7 @@ import { preserveScrollPosition } from '$lib/app' import { observeIntersection } from '$lib/intersection-observer' import LoadingSpinner from '$lib/LoadingSpinner.svelte' - import SearchBox from '$lib/search/SearchBox.svelte' + import SearchInput from '$lib/search/input/SearchInput.svelte' import { searchTypes } from '$lib/search/sidebar' import { submitSearch, type QueryStateStore } from '$lib/search/state' import type { SidebarFilter } from '$lib/search/utils' @@ -48,7 +48,7 @@ export let queryState: QueryStateStore let resultContainer: HTMLElement | null = null - let searchInput: SearchBox + let searchInput: SearchInput $: progress = $stream?.progress // NOTE: done is present but apparently not officially exposed. However @@ -127,7 +127,7 @@ <section> <div class="search"> - <SearchBox bind:this={searchInput} {queryState} /> + <SearchInput bind:this={searchInput} {queryState} showSmartSearchButton /> </div> <div class="results" bind:this={resultContainer}> @@ -177,7 +177,7 @@ .search { border-bottom: 1px solid var(--border-color); align-self: stretch; - padding: 0.5rem 1rem; + padding: 0.25rem; } section { diff --git a/client/web/src/integration/search.test.ts b/client/web/src/integration/search.test.ts index ef4bf4deafc16..ec54ba9870f85 100644 --- a/client/web/src/integration/search.test.ts +++ b/client/web/src/integration/search.test.ts @@ -74,16 +74,19 @@ const commonSearchGraphQLResults: Partial<WebGraphQlOperations & SharedGraphQlOp repositories: [ { __typename: 'Repository', + id: 'repo1', name: 'github.com/Algorilla/manta-ray', stars: 1, }, { __typename: 'Repository', + id: 'repo1', name: 'github.com/Algorilla/manta-ray-2', stars: 2, }, { __typename: 'Repository', + id: 'repo1', name: 'github.com/Algorilla/manta-ray-3', stars: 3, }, diff --git a/client/web/src/search/autocompletion/sources.ts b/client/web/src/search/autocompletion/sources.ts index 0cfe9a1894856..2a4fa05321a33 100644 --- a/client/web/src/search/autocompletion/sources.ts +++ b/client/web/src/search/autocompletion/sources.ts @@ -2,7 +2,7 @@ import { Fzf, type FzfOptions, type FzfResultItem } from 'fzf' import { gql } from '@sourcegraph/http-client' -import type { SuggestionsRepoResult, SuggestionsRepoVariables } from '../../graphql-operations' +import type { AutocompleteRepoResult, AutocompleteRepoVariables } from '../../graphql-operations' import { CachedAsyncCompletionSource } from './source' @@ -12,7 +12,7 @@ interface Repo { } const REPOS_QUERY = gql` - query SuggestionsRepo($query: String!) { + query AutocompleteRepo($query: String!) { search(patternType: regexp, query: $query) { results { repositories { @@ -39,7 +39,7 @@ const repoFzfOptions: FzfOptions<Repo> = { const cleanRegex = (value: string): string => value.replaceAll(/^\^|\\\.|\$$/g, '') export function createRepositoryCompletionSource<T, ExtraArgs extends any[]>( - request: RequestGraphQL<SuggestionsRepoResult, SuggestionsRepoVariables>, + request: RequestGraphQL<AutocompleteRepoResult, AutocompleteRepoVariables>, dataCacheKey?: (...args: ExtraArgs) => string ): CachedAsyncCompletionSource<Repo, FzfResultItem<Repo>, ExtraArgs> { return new CachedAsyncCompletionSource({ diff --git a/client/web/src/search/input/suggestions.ts b/client/web/src/search/input/suggestions.ts index ef861ccc76144..a19191311c521 100644 --- a/client/web/src/search/input/suggestions.ts +++ b/client/web/src/search/input/suggestions.ts @@ -83,11 +83,13 @@ function contextTiebraker(a: { item: Context }, b: { item: Context }): number { return (b.item.starred || b.item.default ? 1 : 0) - (a.item.starred || a.item.default ? 1 : 0) } +// `id` is used as cache key const REPOS_QUERY = gql` query SuggestionsRepo($query: String!) { search(patternType: regexp, query: $query) { results { repositories { + id name stars } @@ -96,6 +98,7 @@ const REPOS_QUERY = gql` } ` +// `canonicalURL` is used as cache key const FILE_QUERY = gql` query SuggestionsFile($query: String!) { search(patternType: regexp, query: $query) { @@ -106,6 +109,7 @@ const FILE_QUERY = gql` file { path url + canonicalURL repository { name stars @@ -118,6 +122,7 @@ const FILE_QUERY = gql` } ` +// `canonicalURL` is used as cache key const SYMBOL_QUERY = gql` query SuggestionsSymbol($query: String!) { search(patternType: regexp, query: $query) { @@ -127,10 +132,12 @@ const SYMBOL_QUERY = gql` __typename file { path + canonicalURL } symbols { kind url + canonicalURL name } } @@ -163,6 +170,7 @@ const SEARCH_CONTEXT_QUERY = gql` ` interface Repo { + id: string name: string stars: number } From 4b32a70bd880fbec3138328e38e660c745a2b028 Mon Sep 17 00:00:00 2001 From: Robert Lin <robert@bobheadxi.dev> Date: Fri, 24 Nov 2023 11:20:59 -0800 Subject: [PATCH 153/222] sg/msp: add completions for services and environments (#58538) This change adds completions for services and environments on MSP commands. The original plan was to use a `-e` flag based on feedback from @jhchabran , but after playing around with it a bit I think posargs with completions is easier to implement and much more ergonomic: https://github.com/sourcegraph/sourcegraph/pull/58538#discussion_r1404598941 ## Test plan Relevant commands: ``` sg msp gen -all msp-testbed sg msp tfc sync -all msp-testbed ``` Completions: https://github.com/sourcegraph/sourcegraph/assets/23356519/1ddb7cb4-ec07-4fc7-a2b6-259e79028b8d --- dev/managedservicesplatform/spec/spec.go | 8 ++++ dev/sg/msp/repo/BUILD.bazel | 2 + dev/sg/msp/repo/repo.go | 49 ++++++++++++++++++++++-- dev/sg/msp/sg_msp.go | 16 ++++++-- lib/cliutil/completions/options.go | 11 ++++++ 5 files changed, 78 insertions(+), 8 deletions(-) diff --git a/dev/managedservicesplatform/spec/spec.go b/dev/managedservicesplatform/spec/spec.go index 9275a31a15ba5..17beb52785fe9 100644 --- a/dev/managedservicesplatform/spec/spec.go +++ b/dev/managedservicesplatform/spec/spec.go @@ -81,6 +81,14 @@ func (s Spec) GetEnvironment(id string) *EnvironmentSpec { return nil } +func (s Spec) ListEnvironmentIDs() []string { + var ids []string + for _, e := range s.Environments { + ids = append(ids, e.ID) + } + return ids +} + // MarshalYAML marshals the spec to YAML using our YAML library of choice. func (s Spec) MarshalYAML() ([]byte, error) { return yaml.Marshal(s) diff --git a/dev/sg/msp/repo/BUILD.bazel b/dev/sg/msp/repo/BUILD.bazel index 59ffc4b576068..5d51c9403c20f 100644 --- a/dev/sg/msp/repo/BUILD.bazel +++ b/dev/sg/msp/repo/BUILD.bazel @@ -9,7 +9,9 @@ go_library( importpath = "github.com/sourcegraph/sourcegraph/dev/sg/msp/repo", visibility = ["//visibility:public"], deps = [ + "//dev/managedservicesplatform/spec", "//dev/sg/internal/std", + "//lib/cliutil/completions", "//lib/errors", "@com_github_urfave_cli_v2//:cli", ], diff --git a/dev/sg/msp/repo/repo.go b/dev/sg/msp/repo/repo.go index 069ea8d86e43e..6b9bca0cc4ff7 100644 --- a/dev/sg/msp/repo/repo.go +++ b/dev/sg/msp/repo/repo.go @@ -7,7 +7,9 @@ import ( "github.com/urfave/cli/v2" + "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/spec" "github.com/sourcegraph/sourcegraph/dev/sg/internal/std" + "github.com/sourcegraph/sourcegraph/lib/cliutil/completions" ) // UseManagedServicesRepo is a cli.BeforeFunc that enforces that we are in the @@ -29,10 +31,10 @@ func UseManagedServicesRepo(c *cli.Context) error { return nil } -func ListServices() ([]string, error) { +func listServicesFromRoot(root string) ([]string, error) { var services []string - return services, filepath.Walk("services", func(path string, info fs.FileInfo, err error) error { - if info.Name() == "services" { + return services, filepath.Walk(filepath.Join(root, "services"), func(path string, info fs.FileInfo, err error) error { + if info == nil || info.Name() == "services" { return nil } if err != nil { @@ -41,7 +43,7 @@ func ListServices() ([]string, error) { if !info.IsDir() { return nil } - if _, err := os.Stat(ServiceYAMLPath(info.Name())); err != nil { + if _, err := os.Stat(filepath.Join(root, ServiceYAMLPath(info.Name()))); err != nil { if os.IsNotExist(err) { return nil } @@ -53,6 +55,45 @@ func ListServices() ([]string, error) { }) } +// ListServices returns a list of services, assuming MSP conventions in the +// working directory. Expected to be run after UseManagedServicesRepo() in a +// command context. +func ListServices() ([]string, error) { + return listServicesFromRoot(".") +} + +// ServicesAndEnvironmentsCompletion provides completions capabilities for +// commands that accept '<service ID> <environment ID>' positional arguments. +func ServicesAndEnvironmentsCompletion() cli.BashCompleteFunc { + cwd, err := os.Getwd() + if err != nil { + return nil + } + repoRoot, err := repositoryRoot(cwd) + if err != nil { + return nil + } + return func(c *cli.Context) { + switch c.Args().Len() { + case 0: // service not yet provided, try to complete service + completions.CompleteOptions(func() (options []string) { + services, _ := listServicesFromRoot(repoRoot) + return services + })(c) + case 1: // service already provided, try to complete environment + completions.CompleteOptionsOnly(func() (options []string) { + svc, err := spec.Open(filepath.Join(repoRoot, ServiceYAMLPath(c.Args().First()))) + if err != nil { + // try to complete services as a fallback + services, _ := listServicesFromRoot(repoRoot) + return services + } + return svc.ListEnvironmentIDs() + })(c) + } + } +} + func ServiceYAMLPath(serviceID string) string { return filepath.Join("services", serviceID, "service.yaml") } diff --git a/dev/sg/msp/sg_msp.go b/dev/sg/msp/sg_msp.go index 8ce3b12000d31..e69f04c447c46 100644 --- a/dev/sg/msp/sg_msp.go +++ b/dev/sg/msp/sg_msp.go @@ -187,8 +187,12 @@ func init() { }, { Name: "generate", - ArgsUsage: "<service ID> <environment ID>", + Aliases: []string{"gen"}, + ArgsUsage: "<service ID>", Description: "Generate Terraform assets for a Managed Services Platform service spec.", + Usage: `Optionally use '-all' to sync all environments for a service. + +Supports completions on services and environments.`, UsageText: ` # generate single env for a single service sg msp generate <service> <env> @@ -215,6 +219,7 @@ sg msp generate -all <service> Value: true, }, }, + BashComplete: msprepo.ServicesAndEnvironmentsCompletion(), Action: func(c *cli.Context) error { var ( generateAll = c.Bool("all") @@ -269,9 +274,11 @@ sg msp generate -all <service> Subcommands: []*cli.Command{ { Name: "sync", - Description: "Create or update all required Terraform Cloud workspaces for a service", - Usage: "Optionally provide an environment ID as well to only sync that environment.", - ArgsUsage: "<service ID> [environment ID]", + Description: "Create or update all required Terraform Cloud workspaces for an environment", + Usage: `Optionally use '-all' to sync all environments for a service. + +Supports completions on services and environments.`, + ArgsUsage: "<service ID> [environment ID]", Flags: []cli.Flag{ &cli.BoolFlag{ Name: "all", @@ -289,6 +296,7 @@ sg msp generate -all <service> Value: false, }, }, + BashComplete: msprepo.ServicesAndEnvironmentsCompletion(), Action: func(c *cli.Context) error { serviceID := c.Args().First() if serviceID == "" { diff --git a/lib/cliutil/completions/options.go b/lib/cliutil/completions/options.go index 9ca5d1d3f22ff..2788bcd59e8fa 100644 --- a/lib/cliutil/completions/options.go +++ b/lib/cliutil/completions/options.go @@ -18,3 +18,14 @@ func CompleteOptions(generateOptions func() (options []string)) cli.BashComplete cli.DefaultCompleteWithFlags(cmd.Command)(cmd) } } + +// CompleteOptionsOnly is like CompleteOptions, but does not render default +// completions - useful for generating completions for arguments beyond the first, +// where flag help is no longer needed. +func CompleteOptionsOnly(generateOptions func() (options []string)) cli.BashCompleteFunc { + return func(cmd *cli.Context) { + for _, opt := range generateOptions() { + fmt.Fprintf(cmd.App.Writer, "%s\n", opt) + } + } +} From 67208579a9646567f5af44d71a8494ff2cc52662 Mon Sep 17 00:00:00 2001 From: Robert Lin <robert@bobheadxi.dev> Date: Fri, 24 Nov 2023 13:26:17 -0800 Subject: [PATCH 154/222] msp/runtime: add OpenTelemetry, make submodule (#58518) This change: 1. Renames `lib/managedservicesplatform/service` to `lib/managedservicesplatform/runtime` - I've been referring to it as runtime, and we use the word "service" a lot already, so this makes it easier to refer to and is more descriptive. 2. Makes everything under `lib/managedservicesplatform` a separate submodule from `lib` - the MSP runtime contributes a lot of dependencies to `lib`, and I don't think we should keep bloating `lib` to add more functionality to MSP. 3. Adds OpenTelemetry tracing and metrics configuration similar to the setup used by Cody Gateway and Telemetry Gateway --- cmd/msp-example/BUILD.bazel | 2 +- cmd/msp-example/internal/example/BUILD.bazel | 2 +- cmd/msp-example/internal/example/example.go | 10 +- cmd/msp-example/main.go | 4 +- deps.bzl | 18 +- doc/dependency_decisions.yml | 6 + go.mod | 16 +- go.sum | 16 +- lib/go.mod | 21 +- lib/go.sum | 36 +- lib/managedservicesplatform/go.mod | 92 ++++ lib/managedservicesplatform/go.sum | 409 ++++++++++++++++++ .../{service => runtime}/BUILD.bazel | 8 +- lib/managedservicesplatform/runtime/config.go | 9 + .../runtime/contract.go | 115 +++++ .../{service/config.go => runtime/env.go} | 109 +---- .../internal/opentelemetry/BUILD.bazel | 32 ++ .../runtime/internal/opentelemetry/metrics.go | 63 +++ .../internal/opentelemetry/opentelemetry.go | 64 +++ .../runtime/internal/opentelemetry/tracing.go | 92 ++++ .../{service => runtime}/sanitycheck.go | 2 +- .../{service => runtime}/service.go | 26 +- monitoring/go.mod | 2 +- monitoring/go.sum | 6 +- sg.config.yaml | 17 + 25 files changed, 978 insertions(+), 199 deletions(-) create mode 100644 lib/managedservicesplatform/go.mod create mode 100644 lib/managedservicesplatform/go.sum rename lib/managedservicesplatform/{service => runtime}/BUILD.bazel (73%) create mode 100644 lib/managedservicesplatform/runtime/config.go create mode 100644 lib/managedservicesplatform/runtime/contract.go rename lib/managedservicesplatform/{service/config.go => runtime/env.go} (52%) create mode 100644 lib/managedservicesplatform/runtime/internal/opentelemetry/BUILD.bazel create mode 100644 lib/managedservicesplatform/runtime/internal/opentelemetry/metrics.go create mode 100644 lib/managedservicesplatform/runtime/internal/opentelemetry/opentelemetry.go create mode 100644 lib/managedservicesplatform/runtime/internal/opentelemetry/tracing.go rename lib/managedservicesplatform/{service => runtime}/sanitycheck.go (94%) rename lib/managedservicesplatform/{service => runtime}/service.go (64%) diff --git a/cmd/msp-example/BUILD.bazel b/cmd/msp-example/BUILD.bazel index 872fd1eebf8b0..10af06f6fb163 100644 --- a/cmd/msp-example/BUILD.bazel +++ b/cmd/msp-example/BUILD.bazel @@ -11,7 +11,7 @@ go_library( visibility = ["//visibility:private"], deps = [ "//cmd/msp-example/internal/example", - "//lib/managedservicesplatform/service", + "//lib/managedservicesplatform/runtime", ], ) diff --git a/cmd/msp-example/internal/example/BUILD.bazel b/cmd/msp-example/internal/example/BUILD.bazel index 5b06643921337..198117b9385b2 100644 --- a/cmd/msp-example/internal/example/BUILD.bazel +++ b/cmd/msp-example/internal/example/BUILD.bazel @@ -11,7 +11,7 @@ go_library( deps = [ "//lib/background", "//lib/errors", - "//lib/managedservicesplatform/service", + "//lib/managedservicesplatform/runtime", "@com_github_sourcegraph_log//:log", "@io_gorm_driver_postgres//:postgres", "@io_gorm_gorm//:gorm", diff --git a/cmd/msp-example/internal/example/example.go b/cmd/msp-example/internal/example/example.go index bcdae9a3312a9..b58a12992bb87 100644 --- a/cmd/msp-example/internal/example/example.go +++ b/cmd/msp-example/internal/example/example.go @@ -12,7 +12,7 @@ import ( "github.com/sourcegraph/sourcegraph/lib/background" "github.com/sourcegraph/sourcegraph/lib/errors" - "github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/service" + "github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/runtime" ) type Config struct { @@ -20,21 +20,21 @@ type Config struct { Variable string } -func (c *Config) Load(env *service.Env) { +func (c *Config) Load(env *runtime.Env) { c.StatelessMode = env.GetBool("STATELESS_MODE", "false", "if true, disable dependencies") c.Variable = env.Get("VARIABLE", "13", "variable value") } type Service struct{} -var _ service.Service[Config] = Service{} +var _ runtime.Service[Config] = Service{} func (s Service) Name() string { return "example" } func (s Service) Version() string { return "dev" } func (s Service) Initialize( ctx context.Context, logger log.Logger, - contract service.Contract, + contract runtime.Contract, config Config, ) (background.CombinedRoutine, error) { logger.Info("starting service") @@ -83,7 +83,7 @@ func (s *httpRoutine) Stop() { // initDB connects to a database 'primary' based on a DSN provided by contract. // It then sets up a few example databases using Gorm, in a manner similar to // https://github.com/sourcegraph/accounts.sourcegraph.com -func initDB(ctx context.Context, contract service.Contract) error { +func initDB(ctx context.Context, contract runtime.Contract) error { sqlDB, err := contract.GetPostgreSQLDB(ctx, "primary") if err != nil { return errors.Wrap(err, "GetPostgreSQLDB") diff --git a/cmd/msp-example/main.go b/cmd/msp-example/main.go index 2bb8e089d5e34..0158bd6e8f1e7 100644 --- a/cmd/msp-example/main.go +++ b/cmd/msp-example/main.go @@ -1,11 +1,11 @@ package main import ( - "github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/service" + "github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/runtime" "github.com/sourcegraph/sourcegraph/cmd/msp-example/internal/example" ) func main() { - service.Run[example.Config](example.Service{}) + runtime.Start[example.Config](example.Service{}) } diff --git a/deps.bzl b/deps.bzl index b851e01fde77b..baef898ed72ac 100644 --- a/deps.bzl +++ b/deps.bzl @@ -2261,8 +2261,8 @@ def go_dependencies(): name = "com_github_go_logr_logr", build_file_proto_mode = "disable_global", importpath = "github.com/go-logr/logr", - sum = "h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=", - version = "v1.2.4", + sum = "h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=", + version = "v1.3.0", ) go_repository( name = "com_github_go_logr_stdr", @@ -3013,8 +3013,8 @@ def go_dependencies(): name = "com_github_googlecloudplatform_opentelemetry_operations_go_detectors_gcp", build_file_proto_mode = "disable_global", importpath = "github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp", - sum = "h1:/o9L4jKKshKO6U4q6e5oo0SkVtF5DDNLGK+liqsDt+w=", - version = "v1.16.1", + sum = "h1:tk85AYGwOf6VNtoOQi8w/kVDi2vmPxp3/OU2FsUpdcA=", + version = "v1.20.0", ) go_repository( name = "com_github_googlecloudplatform_opentelemetry_operations_go_exporter_metric", @@ -3251,7 +3251,7 @@ def go_dependencies(): build_file_proto_mode = "disable_global", importpath = "github.com/grpc-ecosystem/grpc-gateway/v2", patch_args = ["-p1"], - patches = ["//third_party/com_github_grpc_ecosystem_grpc_gateway_v2:grpc_gateway.patch"], + # patches = ["//third_party/com_github_grpc_ecosystem_grpc_gateway_v2:grpc_gateway.patch"], sum = "h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms=", version = "v2.16.0", ) @@ -5347,8 +5347,8 @@ def go_dependencies(): name = "com_github_prometheus_client_model", build_file_proto_mode = "disable_global", importpath = "github.com/prometheus/client_model", - sum = "h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=", - version = "v0.4.0", + sum = "h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=", + version = "v0.5.0", ) go_repository( name = "com_github_prometheus_common", @@ -5383,8 +5383,8 @@ def go_dependencies(): name = "com_github_prometheus_procfs", build_file_proto_mode = "disable_global", importpath = "github.com/prometheus/procfs", - sum = "h1:5EAgkfkMl659uZPbe9AS2N68a7Cc1TJbPEuGzFuRbyk=", - version = "v0.11.0", + sum = "h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI=", + version = "v0.11.1", ) go_repository( name = "com_github_prometheus_prometheus", diff --git a/doc/dependency_decisions.yml b/doc/dependency_decisions.yml index 58dc68318ab4d..06d73dc99634b 100644 --- a/doc/dependency_decisions.yml +++ b/doc/dependency_decisions.yml @@ -564,3 +564,9 @@ :why: :versions: [] :when: 2023-09-06 22:04:27.722891000 Z +- - :ignore + - "./lib/managedservicesplatform" + - :who: + :why: Internal module + :versions: [] + :when: 2023-09-23 22:04:27.722891000 Z diff --git a/go.mod b/go.mod index da666d35d2965..d68028a03ca17 100644 --- a/go.mod +++ b/go.mod @@ -20,6 +20,11 @@ replace ( // We publish 'lib' as a package for import in other tooling. // When developing Sourcegraph itself, this replace uses the local package instead of a pushed version. github.com/sourcegraph/sourcegraph/lib => ./lib + // We publish 'lib/managedservicesplatform' as a sub-package for import + // private services developed in other repositories, and to avoid bloating + // the more lightweight 'lib' package. + // When developing Sourcegraph itself, this replace uses the local package instead of a pushed version. + github.com/sourcegraph/sourcegraph/lib/managedservicesplatform => ./lib/managedservicesplatform // We publish 'monitoring' as a package for import in other tooling. // When developing Sourcegraph itself, this replace uses the local package instead of a pushed version. github.com/sourcegraph/sourcegraph/monitoring => ./monitoring @@ -182,7 +187,7 @@ require ( github.com/sourcegraph/run v0.12.0 github.com/sourcegraph/scip v0.3.1-0.20230627154934-45df7f6d33fc github.com/sourcegraph/sourcegraph/dev/ci/images v0.0.0-20220203145655-4d2a39d3038a - github.com/sourcegraph/sourcegraph/lib v0.0.0-20230810200548-f8a32bcbd9e3 + github.com/sourcegraph/sourcegraph/lib v0.0.0-20231122233253-1f857814717c github.com/stretchr/testify v1.8.4 github.com/temoto/robotstxt v1.1.2 github.com/throttled/throttled/v2 v2.12.0 @@ -276,6 +281,7 @@ require ( github.com/sourcegraph/managed-services-platform-cdktf/gen/google v0.0.0-20230822024612-edb48c530722 github.com/sourcegraph/managed-services-platform-cdktf/gen/google_beta v0.0.0-20231106184355-f739cf8e1d49 github.com/sourcegraph/managed-services-platform-cdktf/gen/random v0.0.0-20230822024612-edb48c530722 + github.com/sourcegraph/sourcegraph/lib/managedservicesplatform v0.0.0-00010101000000-000000000000 github.com/vektah/gqlparser/v2 v2.4.5 go.opentelemetry.io/collector/config/confighttp v0.81.0 go.opentelemetry.io/collector/config/configtelemetry v0.81.0 @@ -291,7 +297,7 @@ require ( cloud.google.com/go/trace v1.10.3 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.16.1 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.20.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.41.0 // indirect github.com/Masterminds/semver/v3 v3.2.1 // indirect github.com/agnivade/levenshtein v1.1.1 // indirect @@ -457,7 +463,7 @@ require ( github.com/go-git/go-billy/v5 v5.4.1 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.5.1 // indirect - github.com/go-logr/logr v1.2.4 + github.com/go-logr/logr v1.3.0 github.com/go-logr/stdr v1.2.2 github.com/go-openapi/analysis v0.21.4 // indirect github.com/go-openapi/errors v0.20.3 // indirect @@ -547,9 +553,9 @@ require ( github.com/pkg/profile v1.6.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pquerna/cachecontrol v0.1.0 // indirect - github.com/prometheus/client_model v0.4.0 + github.com/prometheus/client_model v0.5.0 github.com/prometheus/common/sigv4 v0.1.0 // indirect - github.com/prometheus/procfs v0.11.0 // indirect + github.com/prometheus/procfs v0.11.1 // indirect github.com/pseudomuto/protoc-gen-doc v1.5.1 github.com/pseudomuto/protokit v0.2.1 // indirect github.com/rivo/uniseg v0.4.3 // indirect diff --git a/go.sum b/go.sum index f73a3c36102fe..812e5d186e2ce 100644 --- a/go.sum +++ b/go.sum @@ -103,8 +103,8 @@ github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.16.1 h1:/o9L4jKKshKO6U4q6e5oo0SkVtF5DDNLGK+liqsDt+w= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.16.1/go.mod h1:Xx0VKh7GJ4si3rmElbh19Mejxz68ibWg/J30ZOMrqzU= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.20.0 h1:tk85AYGwOf6VNtoOQi8w/kVDi2vmPxp3/OU2FsUpdcA= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.20.0/go.mod h1:Xx0VKh7GJ4si3rmElbh19Mejxz68ibWg/J30ZOMrqzU= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.41.0 h1:VahL5SjDdCas8mMKARolw2vvBsuLc5oV7XNSbxeMQP8= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.41.0/go.mod h1:T8qLlq6KznHWwp8FEbfw+p7mX/+dezSvUy3PXfTnp4c= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.17.0 h1:DwGeS/9k9xdpnvVQuJF+L9bYNFvBCmCWlDA8d8opoZY= @@ -572,8 +572,8 @@ github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7 github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= @@ -1470,8 +1470,8 @@ github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1: github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= -github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= @@ -1481,8 +1481,8 @@ github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.11.0 h1:5EAgkfkMl659uZPbe9AS2N68a7Cc1TJbPEuGzFuRbyk= -github.com/prometheus/procfs v0.11.0/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= github.com/prometheus/prometheus v0.40.5 h1:wmk5yNrQlkQ2OvZucMhUB4k78AVfG34szb1UtopS8Vc= github.com/prometheus/prometheus v0.40.5/go.mod h1:bxgdmtoSNLmmIVPGmeTJ3OiP67VmuY4yalE4ZP6L/j8= github.com/prometheus/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT1pX2CziuyQR0= diff --git a/lib/go.mod b/lib/go.mod index c93346592742a..f858630252cb2 100644 --- a/lib/go.mod +++ b/lib/go.mod @@ -3,7 +3,6 @@ module github.com/sourcegraph/sourcegraph/lib go 1.19 require ( - cloud.google.com/go/cloudsqlconn v1.5.1 github.com/Masterminds/semver v1.5.0 github.com/charmbracelet/glamour v0.5.0 github.com/cockroachdb/errors v1.11.1 @@ -17,7 +16,6 @@ require ( github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db github.com/hexops/autogold/v2 v2.0.3 github.com/jackc/pgconn v1.14.0 - github.com/jackc/pgx/v5 v5.5.0 github.com/json-iterator/go v1.1.12 github.com/klauspost/pgzip v1.2.5 github.com/mattn/go-isatty v0.0.18 @@ -30,7 +28,7 @@ require ( github.com/sourcegraph/jsonx v0.0.0-20200629203448-1a936bd500cf github.com/sourcegraph/log v0.0.0-20231018134238-fbadff7458bb github.com/sourcegraph/scip v0.3.1-0.20230627154934-45df7f6d33fc - github.com/stretchr/testify v1.8.2 + github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.23.7 github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53 @@ -43,8 +41,11 @@ require ( ) require ( - cloud.google.com/go/compute v1.23.2 // indirect - cloud.google.com/go/compute/metadata v0.2.3 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect +) + +require ( github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/sprig v2.22.0+incompatible // indirect @@ -68,10 +69,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.4.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gorilla/css v1.0.0 // indirect github.com/hexops/gotextdiff v1.0.3 // indirect github.com/hexops/valast v1.4.3 // indirect @@ -83,7 +81,6 @@ require ( github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgproto3/v2 v2.3.2 // indirect github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect - github.com/jackc/puddle/v2 v2.2.1 // indirect github.com/jdxcode/netrc v0.0.0-20210204082910-926c7f70242a // indirect github.com/jhump/protocompile v0.0.0-20220216033700-d705409f108f // indirect github.com/jhump/protoreflect v1.12.1-0.20220417024638-438db461d753 // indirect @@ -125,16 +122,10 @@ require ( golang.org/x/crypto v0.15.0 // indirect golang.org/x/mod v0.11.0 // indirect golang.org/x/net v0.18.0 // indirect - golang.org/x/oauth2 v0.14.0 // indirect golang.org/x/sync v0.5.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/time v0.4.0 // indirect golang.org/x/tools v0.10.0 // indirect - google.golang.org/api v0.150.0 // indirect - google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect google.golang.org/grpc v1.59.0 // indirect gotest.tools/v3 v3.0.3 // indirect mvdan.cc/gofumpt v0.4.0 // indirect diff --git a/lib/go.sum b/lib/go.sum index c793c33659408..e4b4d5e3e0504 100644 --- a/lib/go.sum +++ b/lib/go.sum @@ -1,10 +1,4 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/cloudsqlconn v1.5.1 h1:rMtPv66pkuk2K1ciCicjZY8Ma1DSyOYSoqwPUw/Timo= -cloud.google.com/go/cloudsqlconn v1.5.1/go.mod h1:DPWjhwD5Fhv43M0RP/+7J37xo4PByfNWCzMlKa9OBwE= -cloud.google.com/go/compute v1.23.2 h1:nWEMDhgbBkBJjfpVySqU4jgWdc22PLR0o4vEexZHers= -cloud.google.com/go/compute v1.23.2/go.mod h1:JJ0atRC0J/oWYiiVBmsSsrRnh92DhZPG4hFDcR04Rns= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -86,7 +80,6 @@ github.com/go-enry/go-enry/v2 v2.8.4/go.mod h1:9yrj4ES1YrbNb1Wb7/PWYr2bpaCXUGRt0 github.com/go-enry/go-oniguruma v1.2.1 h1:k8aAMuJfMrqm/56SG2lV9Cfti6tC4x8673aHCcBk+eo= github.com/go-enry/go-oniguruma v1.2.1/go.mod h1:bWDhYP+S6xZQgiRL7wlTScFYBe023B6ilRZbCAD5Hf4= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= -github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= @@ -97,15 +90,12 @@ github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRx github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= -github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= @@ -134,15 +124,9 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db h1:7aN5cccjIqCLTzedH7MZzRZt5/lsAHch6Z3L2ZGn5FA= @@ -195,17 +179,11 @@ github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZ github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= -github.com/jackc/pgtype v1.14.0 h1:y+xUdabmyMkJLyApYuPj38mW+aAIqCe5uuBB51rH3Vw= github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= -github.com/jackc/pgx/v4 v4.18.1 h1:YP7G1KABtKpB5IHrO9vYwSrCOhs7p3uqhvhhQBptya0= -github.com/jackc/pgx/v5 v5.5.0 h1:NxstgwndsTRy7eq9/kqYc/BZh5w2hHJV86wjvO+1xPw= -github.com/jackc/pgx/v5 v5.5.0/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA= github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= -github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jdxcode/netrc v0.0.0-20210204082910-926c7f70242a h1:d4+I1YEKVmWZrgkt6jpXBnLgV2ZjO0YxEtLDdfIZfH4= github.com/jdxcode/netrc v0.0.0-20210204082910-926c7f70242a/go.mod h1:Zi/ZFkEqFHTm7qkjyNJjaWH4LQA9LQhGJyF0lTYGpxw= github.com/jhump/gopoet v0.0.0-20190322174617-17282ff210b3/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI= @@ -261,7 +239,6 @@ github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/microcosm-cc/bluemonday v1.0.17/go.mod h1:Z0r70sCuXHig8YpBzCc5eGHAap2K7e/u082ZUpDRRqM= github.com/microcosm-cc/bluemonday v1.0.23 h1:SMZe2IGa0NuHvnVNAZ+6B38gsTbi5e4sViiWJyDDqFY= github.com/microcosm-cc/bluemonday v1.0.23/go.mod h1:mN70sk7UkkF8TUr2IGBpNN0jAgStuPzlK76QuruE/z4= -github.com/microsoft/go-mssqldb v1.6.0 h1:mM3gYdVwEPFrlg/Dvr2DNVEgYFG7L42l+dGc67NNNpc= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= @@ -352,8 +329,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/urfave/cli/v2 v2.23.7 h1:YHDQ46s3VghFHFf1DdF+Sh7H4RqhcM+t0TmZRJx4oJY= github.com/urfave/cli/v2 v2.23.7/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -420,7 +397,6 @@ golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -436,8 +412,6 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= -golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -496,8 +470,6 @@ golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.4.0 h1:Z81tqI5ddIoXDPvVQ7/7CC9TnLM7ubaFG2qXYd5BbYY= -golang.org/x/time v0.4.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -522,12 +494,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.150.0 h1:Z9k22qD289SZ8gCJrk4DrWXkNjtfvKAUo/l1ma8eBYE= -google.golang.org/api v0.150.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= diff --git a/lib/managedservicesplatform/go.mod b/lib/managedservicesplatform/go.mod new file mode 100644 index 0000000000000..fe8812b4e818c --- /dev/null +++ b/lib/managedservicesplatform/go.mod @@ -0,0 +1,92 @@ +module github.com/sourcegraph/sourcegraph/lib/managedservicesplatform + +go 1.19 + +replace github.com/sourcegraph/sourcegraph/lib => ../ + +require ( + cloud.google.com/go/cloudsqlconn v1.5.1 + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.41.0 + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.17.0 + github.com/jackc/pgx/v5 v5.5.0 + github.com/prometheus/client_golang v1.16.0 + github.com/sourcegraph/conc v0.2.0 + github.com/sourcegraph/log v0.0.0-20231018134238-fbadff7458bb + github.com/sourcegraph/sourcegraph/lib v0.0.0-20231122233253-1f857814717c + go.opentelemetry.io/contrib/detectors/gcp v1.17.0 + go.opentelemetry.io/contrib/propagators/jaeger v1.17.0 + go.opentelemetry.io/contrib/propagators/ot v1.17.0 + go.opentelemetry.io/otel v1.17.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0 + go.opentelemetry.io/otel/exporters/prometheus v0.39.0 + go.opentelemetry.io/otel/sdk v1.16.0 + go.opentelemetry.io/otel/sdk/metric v0.39.0 +) + +require ( + cloud.google.com/go/compute v1.23.2 // indirect + cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 // indirect + cloud.google.com/go/monitoring v1.16.2 // indirect + cloud.google.com/go/trace v1.10.3 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.20.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.41.0 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cenkalti/backoff/v4 v4.2.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cockroachdb/errors v1.11.1 // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/fatih/color v1.15.0 // indirect + github.com/getsentry/sentry-go v0.25.0 // indirect + github.com/go-logr/logr v1.3.0 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/google/uuid v1.4.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect + github.com/jackc/chunkreader/v2 v2.0.1 // indirect + github.com/jackc/pgconn v1.14.0 // indirect + github.com/jackc/pgio v1.0.0 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgproto3/v2 v2.3.2 // indirect + github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect + github.com/jackc/puddle/v2 v2.2.1 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.18 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/procfs v0.11.1 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect + go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 // indirect + go.opentelemetry.io/otel/metric v1.17.0 // indirect + go.opentelemetry.io/otel/trace v1.17.0 // indirect + go.opentelemetry.io/proto/otlp v1.0.0 // indirect + go.uber.org/atomic v1.11.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.24.0 // indirect + golang.org/x/crypto v0.15.0 // indirect + golang.org/x/net v0.18.0 // indirect + golang.org/x/oauth2 v0.14.0 // indirect + golang.org/x/sync v0.5.0 // indirect + golang.org/x/sys v0.14.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/time v0.4.0 // indirect + google.golang.org/api v0.150.0 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/grpc v1.59.0 // indirect + google.golang.org/protobuf v1.31.0 // indirect +) diff --git a/lib/managedservicesplatform/go.sum b/lib/managedservicesplatform/go.sum new file mode 100644 index 0000000000000..201c864cae9b3 --- /dev/null +++ b/lib/managedservicesplatform/go.sum @@ -0,0 +1,409 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.110.9 h1:e7ITSqGFFk4rbz/JFIqZh3G4VEHguhAL4BQcFlWtU68= +cloud.google.com/go/cloudsqlconn v1.5.1 h1:rMtPv66pkuk2K1ciCicjZY8Ma1DSyOYSoqwPUw/Timo= +cloud.google.com/go/cloudsqlconn v1.5.1/go.mod h1:DPWjhwD5Fhv43M0RP/+7J37xo4PByfNWCzMlKa9OBwE= +cloud.google.com/go/compute v1.23.2 h1:nWEMDhgbBkBJjfpVySqU4jgWdc22PLR0o4vEexZHers= +cloud.google.com/go/compute v1.23.2/go.mod h1:JJ0atRC0J/oWYiiVBmsSsrRnh92DhZPG4hFDcR04Rns= +cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 h1:aRVqY1p2IJaBGStWMsQMpkAa83cPkCDLl80eOj0Rbz4= +cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68/go.mod h1:1a3eRNYX12fs5UABBIXS8HXVvQbX9hRB/RkEBPORpe8= +cloud.google.com/go/logging v1.8.1 h1:26skQWPeYhvIasWKm48+Eq7oUqdcdbwsCVwz5Ys0FvU= +cloud.google.com/go/longrunning v0.5.3 h1:maKa7O9YTzmVzwdlRKr981U1Ys2auup6rpeMt8y3+RU= +cloud.google.com/go/monitoring v1.16.2 h1:gx7BDZcoRqX5DfuJzw9LdhVjEkqCLmDXScdnrmIy9ik= +cloud.google.com/go/monitoring v1.16.2/go.mod h1:B44KGwi4ZCF8Rk/5n+FWeispDXoKSk9oss2QNlXJBgc= +cloud.google.com/go/trace v1.10.3 h1:yiQ2EdegdiZDPwNPoUqGYAMd0wNValT/NRsC1XGyBJ0= +cloud.google.com/go/trace v1.10.3/go.mod h1:Ke1bgfc73RV3wUFml+uQp7EsDw4dGaETLxB7Iq/r4CY= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.20.0 h1:tk85AYGwOf6VNtoOQi8w/kVDi2vmPxp3/OU2FsUpdcA= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.20.0/go.mod h1:Xx0VKh7GJ4si3rmElbh19Mejxz68ibWg/J30ZOMrqzU= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.41.0 h1:VahL5SjDdCas8mMKARolw2vvBsuLc5oV7XNSbxeMQP8= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.41.0/go.mod h1:T8qLlq6KznHWwp8FEbfw+p7mX/+dezSvUy3PXfTnp4c= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.17.0 h1:DwGeS/9k9xdpnvVQuJF+L9bYNFvBCmCWlDA8d8opoZY= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.17.0/go.mod h1:SUVNJAkkyRKeM3L46/NhFGIz+Kx1zetN09qUs1XbMx8= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.41.0 h1:ZJwvlTjB8GycSRpysdcRv3FztommLDUfgii0VUUp5ys= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.41.0 h1:MWQ81b2TkSLbDpLINiKdZdoht1VMEHCKr4BSZpb/KQ8= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.41.0/go.mod h1:lz6DEePTxmjvYMtusOoS3qDAErC0STi/wmvqJucKY28= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/getsentry/sentry-go v0.25.0 h1:q6Eo+hS+yoJlTO3uu/azhQadsD8V+jQn2D8VvX1eOyI= +github.com/getsentry/sentry-go v0.25.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= +github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= +github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= +github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= +github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= +github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= +github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= +github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= +github.com/jackc/pgconn v1.14.0 h1:vrbA9Ud87g6JdFWkHTJXppVce58qPIdP7N8y0Ml/A7Q= +github.com/jackc/pgconn v1.14.0/go.mod h1:9mBNlny0UvkgJdCDvdVHYSjI+8tD2rnKK69Wz8ti++E= +github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= +github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= +github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= +github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5Wi/+Zz7xoE5ALHsRQlOctkOiHc= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= +github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.3.2 h1:7eY55bdBeCz1F2fTzSz69QC+pG46jYq9/jtSPiJ5nn0= +github.com/jackc/pgproto3/v2 v2.3.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= +github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= +github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= +github.com/jackc/pgtype v1.14.0 h1:y+xUdabmyMkJLyApYuPj38mW+aAIqCe5uuBB51rH3Vw= +github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= +github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= +github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= +github.com/jackc/pgx/v4 v4.18.1 h1:YP7G1KABtKpB5IHrO9vYwSrCOhs7p3uqhvhhQBptya0= +github.com/jackc/pgx/v5 v5.5.0 h1:NxstgwndsTRy7eq9/kqYc/BZh5w2hHJV86wjvO+1xPw= +github.com/jackc/pgx/v5 v5.5.0/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA= +github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= +github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= +github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/microsoft/go-mssqldb v1.6.0 h1:mM3gYdVwEPFrlg/Dvr2DNVEgYFG7L42l+dGc67NNNpc= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= +github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= +github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sourcegraph/conc v0.2.0 h1:96VpOCAtXDCQ8Oycz0ftHqdPyMi8w12ltN4L2noYg7s= +github.com/sourcegraph/conc v0.2.0/go.mod h1:8lmPpTLA0hsWqw4lw7wS1e694U2tMjRrc1Asvupb4QM= +github.com/sourcegraph/log v0.0.0-20231018134238-fbadff7458bb h1:tHKdC+bXxxGJ0cy/R06kg6Z0zqwVGOWMx8uWsIwsaoY= +github.com/sourcegraph/log v0.0.0-20231018134238-fbadff7458bb/go.mod h1:IDp09QkoqS8Z3CyN2RW6vXjgABkNpDbyjLIHNQwQ8P8= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/detectors/gcp v1.17.0 h1:SsuF2+gqrnmTKSz+KLXcx3A4A7PZXqbuRZbm4I6HcX0= +go.opentelemetry.io/contrib/detectors/gcp v1.17.0/go.mod h1:kYzEwPGh9npjtpbJ+Qq/gN7ARi2PkvkvYARA/kWqkMs= +go.opentelemetry.io/contrib/propagators/jaeger v1.17.0 h1:Zbpbmwav32Ea5jSotpmkWEl3a6Xvd4tw/3xxGO1i05Y= +go.opentelemetry.io/contrib/propagators/jaeger v1.17.0/go.mod h1:tcTUAlmO8nuInPDSBVfG+CP6Mzjy5+gNV4mPxMbL0IA= +go.opentelemetry.io/contrib/propagators/ot v1.17.0 h1:ufo2Vsz8l76eI47jFjuVyjyB3Ae2DmfiCV/o6Vc8ii0= +go.opentelemetry.io/contrib/propagators/ot v1.17.0/go.mod h1:SbKPj5XGp8K/sGm05XblaIABgMgw2jDczP8gGeuaVLk= +go.opentelemetry.io/otel v1.17.0 h1:MW+phZ6WZ5/uk2nd93ANk/6yJ+dVrvNWUjGhnnFU5jM= +go.opentelemetry.io/otel v1.17.0/go.mod h1:I2vmBGtFaODIVMBSTPVDlJSzBDNf93k60E6Ft0nyjo0= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 h1:t4ZwRPU+emrcvM2e9DHd0Fsf0JTPVcbfa/BhTDF03d0= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0/go.mod h1:vLarbg68dH2Wa77g71zmKQqlQ8+8Rq3GRG31uc0WcWI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0 h1:cbsD4cUcviQGXdw8+bo5x2wazq10SKz8hEbtCRPcU78= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0/go.mod h1:JgXSGah17croqhJfhByOLVY719k1emAXC8MVhCIJlRs= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0 h1:TVQp/bboR4mhZSav+MdgXB8FaRho1RC8UwVn3T0vjVc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0/go.mod h1:I33vtIe0sR96wfrUcilIzLoA3mLHhRmz9S9Te0S3gDo= +go.opentelemetry.io/otel/exporters/prometheus v0.39.0 h1:whAaiHxOatgtKd+w0dOi//1KUxj3KoPINZdtDaDj3IA= +go.opentelemetry.io/otel/exporters/prometheus v0.39.0/go.mod h1:4jo5Q4CROlCpSPsXLhymi+LYrDXd2ObU5wbKayfZs7Y= +go.opentelemetry.io/otel/metric v1.17.0 h1:iG6LGVz5Gh+IuO0jmgvpTB6YVrCGngi8QGm+pMd8Pdc= +go.opentelemetry.io/otel/metric v1.17.0/go.mod h1:h4skoxdZI17AxwITdmdZjjYJQH5nzijUUjm+wtPph5o= +go.opentelemetry.io/otel/sdk v1.16.0 h1:Z1Ok1YsijYL0CSJpHt4cS3wDDh7p572grzNrBMiMWgE= +go.opentelemetry.io/otel/sdk v1.16.0/go.mod h1:tMsIuKXuuIWPBAOrH+eHtvhTL+SntFtXF9QD68aP6p4= +go.opentelemetry.io/otel/sdk/metric v0.39.0 h1:Kun8i1eYf48kHH83RucG93ffz0zGV1sh46FAScOTuDI= +go.opentelemetry.io/otel/sdk/metric v0.39.0/go.mod h1:piDIRgjcK7u0HCL5pCA4e74qpK/jk3NiUoAHATVAmiI= +go.opentelemetry.io/otel/trace v1.17.0 h1:/SWhSRHmDPOImIAetP1QAeMnZYiQXrTy4fMMYOdSKWQ= +go.opentelemetry.io/otel/trace v1.17.0/go.mod h1:I/4vKTgFclIsXRVucpH25X0mpFSczM7aHeaz0ZBLWjY= +go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= +go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= +golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.4.0 h1:Z81tqI5ddIoXDPvVQ7/7CC9TnLM7ubaFG2qXYd5BbYY= +golang.org/x/time v0.4.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.150.0 h1:Z9k22qD289SZ8gCJrk4DrWXkNjtfvKAUo/l1ma8eBYE= +google.golang.org/api v0.150.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 h1:I6WNifs6pF9tNdSob2W24JtyxIYjzFB9qDlpUC76q+U= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/lib/managedservicesplatform/service/BUILD.bazel b/lib/managedservicesplatform/runtime/BUILD.bazel similarity index 73% rename from lib/managedservicesplatform/service/BUILD.bazel rename to lib/managedservicesplatform/runtime/BUILD.bazel index 15b8ebdff4e00..b1a416a126b35 100644 --- a/lib/managedservicesplatform/service/BUILD.bazel +++ b/lib/managedservicesplatform/runtime/BUILD.bazel @@ -1,17 +1,21 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( - name = "service", + name = "runtime", srcs = [ "config.go", + "contract.go", + "env.go", "sanitycheck.go", "service.go", ], - importpath = "github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/service", + importpath = "github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/runtime", visibility = ["//visibility:public"], deps = [ "//lib/background", "//lib/errors", + "//lib/managedservicesplatform/runtime/internal/opentelemetry", + "//lib/pointers", "@com_github_jackc_pgx_v5//:pgx", "@com_github_jackc_pgx_v5//stdlib", "@com_github_sourcegraph_log//:log", diff --git a/lib/managedservicesplatform/runtime/config.go b/lib/managedservicesplatform/runtime/config.go new file mode 100644 index 0000000000000..915d78e9b4532 --- /dev/null +++ b/lib/managedservicesplatform/runtime/config.go @@ -0,0 +1,9 @@ +package runtime + +type ConfigLoader[ConfigT any] interface { + *ConfigT + + // Load should populate ConfigT with values from env. Errors should be added + // to env using env.AddError(). + Load(env *Env) +} diff --git a/lib/managedservicesplatform/runtime/contract.go b/lib/managedservicesplatform/runtime/contract.go new file mode 100644 index 0000000000000..6d7ee4909fa08 --- /dev/null +++ b/lib/managedservicesplatform/runtime/contract.go @@ -0,0 +1,115 @@ +package runtime + +import ( + "bytes" + "context" + "database/sql" + "fmt" + "net" + "text/template" + + "cloud.google.com/go/cloudsqlconn" + "github.com/jackc/pgx/v5" + "github.com/jackc/pgx/v5/stdlib" + + "github.com/sourcegraph/sourcegraph/lib/errors" + "github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/runtime/internal/opentelemetry" + "github.com/sourcegraph/sourcegraph/lib/pointers" +) + +// Contract loads standardized MSP-provisioned (Managed Services Platform) +// configuration. +type Contract struct { + // Indicate if we are running in a MSP environment. + MSP bool + // Port is the port the service must listen on. + Port int + // ExternalDNSName is the DNS name the service uses, if one is configured. + ExternalDNSName *string + + postgreSQLContract + + opentelemetryContract opentelemetry.Config +} + +type postgreSQLContract struct { + customDSNTemplate *string + + instanceConnectionName *string + user *string +} + +func newContract(env *Env) Contract { + defaultGCPProjectID := pointers.Deref(env.GetOptional("GOOGLE_CLOUD_PROJECT", "GCP project ID"), "") + + return Contract{ + MSP: env.GetBool("MSP", "false", "indicates if we are running in a MSP environment"), + Port: env.GetInt("PORT", "", "service port"), + ExternalDNSName: env.GetOptional("EXTERNAL_DNS_NAME", "external DNS name provisioned for the service"), + postgreSQLContract: postgreSQLContract{ + customDSNTemplate: env.GetOptional("PGDSN", + "custom PostgreSQL DSN with templatized database, e.g. 'user=foo database={{ .Database }}'"), + + instanceConnectionName: env.GetOptional("PGINSTANCE", "Cloud SQL instance connection name"), + user: env.GetOptional("PGUSER", "Cloud SQL user"), + }, + opentelemetryContract: opentelemetry.Config{ + GCPProjectID: pointers.Deref( + env.GetOptional("OTEL_GCP_PROJECT_ID", "GCP project ID for OpenTelemetry export"), + defaultGCPProjectID), + }, + } +} + +// GetPostgreSQLDB returns a standard library DB pointing to the configured +// PostgreSQL database. In MSP, we connect to a Cloud SQL instance over IAM auth. +// +// In development, the connection can be overridden with the PGDSN environment +// variable. +func (c postgreSQLContract) GetPostgreSQLDB(ctx context.Context, database string) (*sql.DB, error) { + if c.customDSNTemplate != nil { + tmpl, err := template.New("PGDSN").Parse(*c.customDSNTemplate) + if err != nil { + return nil, errors.Wrap(err, "PGDSN is not a valid template") + } + var dsn bytes.Buffer + if err := tmpl.Execute(&dsn, struct{ Database string }{Database: database}); err != nil { + return nil, errors.Wrap(err, "PGDSN template is invalid") + } + return sql.Open("pgx", dsn.String()) + } + + config, err := c.getCloudSQLConnConfig(ctx, database) + if err != nil { + return nil, errors.Wrap(err, "get CloudSQL connection config") + } + return sql.Open("pgx", stdlib.RegisterConnConfig(config)) +} + +// getCloudSQLConnConfig generates a pgx connection configuration for using +// a Cloud SQL instance using IAM auth. +func (c postgreSQLContract) getCloudSQLConnConfig(ctx context.Context, database string) (*pgx.ConnConfig, error) { + if c.instanceConnectionName == nil || c.user == nil { + return nil, errors.New("missing required PostgreSQL configuration") + } + + // https://github.com/GoogleCloudPlatform/cloud-sql-go-connector?tab=readme-ov-file#automatic-iam-database-authentication + dsn := fmt.Sprintf("user=%s dbname=%s", *c.user, database) + config, err := pgx.ParseConfig(dsn) + if err != nil { + return nil, errors.Wrap(err, "pgx.ParseConfig") + } + d, err := cloudsqlconn.NewDialer(ctx, + cloudsqlconn.WithIAMAuthN(), + // MSP uses private IP + cloudsqlconn.WithDefaultDialOptions(cloudsqlconn.WithPrivateIP())) + if err != nil { + return nil, errors.Wrap(err, "cloudsqlconn.NewDialer") + } + // Use the Cloud SQL connector to handle connecting to the instance. + // This approach does *NOT* require the Cloud SQL proxy. + config.DialFunc = func(ctx context.Context, _, _ string) (net.Conn, error) { + return d.Dial(ctx, *c.instanceConnectionName) + } + return config, nil +} diff --git a/lib/managedservicesplatform/service/config.go b/lib/managedservicesplatform/runtime/env.go similarity index 52% rename from lib/managedservicesplatform/service/config.go rename to lib/managedservicesplatform/runtime/env.go index 46dd0366542a4..38849bd5526ee 100644 --- a/lib/managedservicesplatform/service/config.go +++ b/lib/managedservicesplatform/runtime/env.go @@ -1,120 +1,14 @@ -package service +package runtime import ( - "bytes" - "context" - "database/sql" - "fmt" - "net" "os" "strconv" "strings" - "text/template" "time" - "cloud.google.com/go/cloudsqlconn" - "github.com/jackc/pgx/v5" - "github.com/jackc/pgx/v5/stdlib" - "github.com/sourcegraph/sourcegraph/lib/errors" ) -// Contract loads standardized MSP-provisioned (Managed Services Platform) -// configuration. -type Contract struct { - // Indicate if we are running in a MSP environment. - MSP bool - // Port is the port the service must listen on. - Port int - // ExternalDNSName is the DNS name the service uses, if one is configured. - ExternalDNSName *string - - postgreSQLContract -} - -type postgreSQLContract struct { - customDSNTemplate *string - - instanceConnectionName *string - user *string -} - -func newContract(env *Env) Contract { - return Contract{ - MSP: env.GetBool("MSP", "false", "indicates if we are running in a MSP environment"), - Port: env.GetInt("PORT", "", "service port"), - ExternalDNSName: env.GetOptional("EXTERNAL_DNS_NAME", "external DNS name provisioned for the service"), - postgreSQLContract: postgreSQLContract{ - customDSNTemplate: env.GetOptional("PGDSN", - "custom PostgreSQL DSN with templatized database, e.g. 'user=foo database={{ .Database }}'"), - - instanceConnectionName: env.GetOptional("PGINSTANCE", "Cloud SQL instance connection name"), - user: env.GetOptional("PGUSER", "Cloud SQL user"), - }, - } -} - -// GetPostgreSQLDB returns a standard library DB pointing to the configured -// PostgreSQL database. In MSP, we connect to a Cloud SQL instance over IAM auth. -// -// In development, the connection can be overridden with the PGDSN environment -// variable. -func (c postgreSQLContract) GetPostgreSQLDB(ctx context.Context, database string) (*sql.DB, error) { - if c.customDSNTemplate != nil { - tmpl, err := template.New("PGDSN").Parse(*c.customDSNTemplate) - if err != nil { - return nil, errors.Wrap(err, "PGDSN is not a valid template") - } - var dsn bytes.Buffer - if err := tmpl.Execute(&dsn, struct{ Database string }{Database: database}); err != nil { - return nil, errors.Wrap(err, "PGDSN template is invalid") - } - return sql.Open("pgx", dsn.String()) - } - - config, err := c.getCloudSQLConnConfig(ctx, database) - if err != nil { - return nil, errors.Wrap(err, "get CloudSQL connection config") - } - return sql.Open("pgx", stdlib.RegisterConnConfig(config)) -} - -// getCloudSQLConnConfig generates a pgx connection configuration for using -// a Cloud SQL instance using IAM auth. -func (c postgreSQLContract) getCloudSQLConnConfig(ctx context.Context, database string) (*pgx.ConnConfig, error) { - if c.instanceConnectionName == nil || c.user == nil { - return nil, errors.New("missing required PostgreSQL configuration") - } - - // https://github.com/GoogleCloudPlatform/cloud-sql-go-connector?tab=readme-ov-file#automatic-iam-database-authentication - dsn := fmt.Sprintf("user=%s dbname=%s", *c.user, database) - config, err := pgx.ParseConfig(dsn) - if err != nil { - return nil, errors.Wrap(err, "pgx.ParseConfig") - } - d, err := cloudsqlconn.NewDialer(ctx, - cloudsqlconn.WithIAMAuthN(), - // MSP uses private IP - cloudsqlconn.WithDefaultDialOptions(cloudsqlconn.WithPrivateIP())) - if err != nil { - return nil, errors.Wrap(err, "cloudsqlconn.NewDialer") - } - // Use the Cloud SQL connector to handle connecting to the instance. - // This approach does *NOT* require the Cloud SQL proxy. - config.DialFunc = func(ctx context.Context, _, _ string) (net.Conn, error) { - return d.Dial(ctx, *c.instanceConnectionName) - } - return config, nil -} - -type ConfigLoader[ConfigT any] interface { - *ConfigT - - // Load should populate ConfigT with values from env. Errors should be added - // to env using env.AddError(). - Load(env *Env) -} - type Env struct { errs []error env map[string]string @@ -136,6 +30,7 @@ func newEnv() (*Env, error) { }, nil } +// TODO: Try to use third param description to generate docs. func (e *Env) get(name, defaultValue, _ string) string { v, ok := e.env[name] if !ok { diff --git a/lib/managedservicesplatform/runtime/internal/opentelemetry/BUILD.bazel b/lib/managedservicesplatform/runtime/internal/opentelemetry/BUILD.bazel new file mode 100644 index 0000000000000..5e54e25bc4d92 --- /dev/null +++ b/lib/managedservicesplatform/runtime/internal/opentelemetry/BUILD.bazel @@ -0,0 +1,32 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "opentelemetry", + srcs = [ + "metrics.go", + "opentelemetry.go", + "tracing.go", + ], + importpath = "github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/runtime/internal/opentelemetry", + visibility = ["//lib/managedservicesplatform/runtime:__subpackages__"], + deps = [ + "//lib/errors", + "@com_github_googlecloudplatform_opentelemetry_operations_go_exporter_metric//:metric", + "@com_github_googlecloudplatform_opentelemetry_operations_go_exporter_trace//:trace", + "@com_github_prometheus_client_golang//prometheus", + "@com_github_sourcegraph_conc//:conc", + "@com_github_sourcegraph_log//:log", + "@io_opentelemetry_go_contrib_detectors_gcp//:gcp", + "@io_opentelemetry_go_contrib_propagators_jaeger//:jaeger", + "@io_opentelemetry_go_contrib_propagators_ot//:ot", + "@io_opentelemetry_go_otel//:otel", + "@io_opentelemetry_go_otel//propagation", + "@io_opentelemetry_go_otel//semconv/v1.21.0:v1_21_0", + "@io_opentelemetry_go_otel_exporters_otlp_otlptrace//:otlptrace", + "@io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc//:otlptracegrpc", + "@io_opentelemetry_go_otel_exporters_prometheus//:prometheus", + "@io_opentelemetry_go_otel_sdk//resource", + "@io_opentelemetry_go_otel_sdk//trace", + "@io_opentelemetry_go_otel_sdk_metric//:metric", + ], +) diff --git a/lib/managedservicesplatform/runtime/internal/opentelemetry/metrics.go b/lib/managedservicesplatform/runtime/internal/opentelemetry/metrics.go new file mode 100644 index 0000000000000..737a5a64151c9 --- /dev/null +++ b/lib/managedservicesplatform/runtime/internal/opentelemetry/metrics.go @@ -0,0 +1,63 @@ +package opentelemetry + +import ( + "context" + "time" + + gcpmetricexporter "github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric" + "github.com/prometheus/client_golang/prometheus" + "github.com/sourcegraph/log" + "go.opentelemetry.io/otel" + otelprometheus "go.opentelemetry.io/otel/exporters/prometheus" + sdkmetric "go.opentelemetry.io/otel/sdk/metric" + "go.opentelemetry.io/otel/sdk/resource" + + "github.com/sourcegraph/sourcegraph/lib/errors" +) + +func maybeEnableMetrics(_ context.Context, logger log.Logger, config Config, res *resource.Resource) (func(), error) { + var reader sdkmetric.Reader + if config.GCPProjectID != "" { + logger.Debug("initializing GCP trace exporter", log.String("projectID", config.GCPProjectID)) + exporter, err := gcpmetricexporter.New( + gcpmetricexporter.WithProjectID(config.GCPProjectID)) + if err != nil { + return nil, errors.Wrap(err, "gcpmetricexporter.New") + } + reader = sdkmetric.NewPeriodicReader(exporter, + sdkmetric.WithInterval(30*time.Second)) + } else { + logger.Debug("initializing Prometheus exporter") + var err error + reader, err = otelprometheus.New( + otelprometheus.WithRegisterer(prometheus.DefaultRegisterer)) + if err != nil { + return nil, errors.Wrap(err, "exporters.NewPrometheusExporter") + } + // TODO(@bobheadxi) + // Must register promhttp.Handler() somewhere to enable collection in + // this mode. + } + + // Create and set global tracer + provider := sdkmetric.NewMeterProvider( + sdkmetric.WithReader(reader), + sdkmetric.WithResource(res)) + otel.SetMeterProvider(provider) + + logger.Info("metrics configured") + return func() { + shutdownCtx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + start := time.Now() + logger.Debug("shutting down metrics") + if err := provider.ForceFlush(shutdownCtx); err != nil { + logger.Warn("error occurred force-flushing metrics", log.Error(err)) + } + if err := provider.Shutdown(shutdownCtx); err != nil { + logger.Warn("error occurred shutting down metrics", log.Error(err)) + } + logger.Info("metrics shut down", log.Duration("elapsed", time.Since(start))) + }, nil +} diff --git a/lib/managedservicesplatform/runtime/internal/opentelemetry/opentelemetry.go b/lib/managedservicesplatform/runtime/internal/opentelemetry/opentelemetry.go new file mode 100644 index 0000000000000..9cfd8ae3e9ae2 --- /dev/null +++ b/lib/managedservicesplatform/runtime/internal/opentelemetry/opentelemetry.go @@ -0,0 +1,64 @@ +package opentelemetry + +import ( + "context" + + "github.com/sourcegraph/conc" + "github.com/sourcegraph/log" + "github.com/sourcegraph/sourcegraph/lib/errors" + gcpdetector "go.opentelemetry.io/contrib/detectors/gcp" + "go.opentelemetry.io/otel/sdk/resource" + semconv "go.opentelemetry.io/otel/semconv/v1.21.0" +) + +type Config struct { + GCPProjectID string +} + +// Init initializes OpenTelemetry integrations. If config.GCPProjectID is set, +// all OpenTelemetry integrations will point to a GCP exporter - otherwise, a +// local dev default is chosen: +// +// - traces: OTLP exporter +// - metrics: Prometheus exporter +func Init(ctx context.Context, logger log.Logger, config Config, r log.Resource) (func(), error) { + res, err := getOpenTelemetryResource(ctx, r) + if err != nil { + return nil, errors.Wrap(err, "init resource") + } + + shutdownTracing, err := maybeEnableTracing(ctx, logger, config, res) + if err != nil { + return nil, errors.Wrap(err, "enable tracing") + } + + shutdownMetrics, err := maybeEnableMetrics(ctx, logger, config, res) + if err != nil { + return nil, errors.Wrap(err, "enable metrics") + } + + return func() { + logger.Debug("shutting down OpenTelemetry") + var wg conc.WaitGroup + wg.Go(shutdownTracing) + wg.Go(shutdownMetrics) + wg.Wait() + }, nil +} + +func getOpenTelemetryResource(ctx context.Context, r log.Resource) (*resource.Resource, error) { + // Identify your application using resource detection + return resource.New(ctx, + // Use the GCP resource detector to detect information about the GCP platform + resource.WithDetectors(gcpdetector.NewDetector()), + // Use the default detectors + resource.WithTelemetrySDK(), + // Add our own attributes + resource.WithAttributes( + semconv.ServiceNameKey.String(r.Name), + semconv.ServiceVersionKey.String(r.Version), + semconv.ServiceInstanceIDKey.String(r.InstanceID), + semconv.ServiceNamespaceKey.String(r.Namespace), + ), + ) +} diff --git a/lib/managedservicesplatform/runtime/internal/opentelemetry/tracing.go b/lib/managedservicesplatform/runtime/internal/opentelemetry/tracing.go new file mode 100644 index 0000000000000..5ddae11a43869 --- /dev/null +++ b/lib/managedservicesplatform/runtime/internal/opentelemetry/tracing.go @@ -0,0 +1,92 @@ +package opentelemetry + +import ( + "context" + "time" + + "github.com/sourcegraph/log" + + gcptraceexporter "github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace" + jaegerpropagator "go.opentelemetry.io/contrib/propagators/jaeger" + otpropagator "go.opentelemetry.io/contrib/propagators/ot" + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/exporters/otlp/otlptrace" + "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc" + "go.opentelemetry.io/otel/propagation" + "go.opentelemetry.io/otel/sdk/resource" + sdktrace "go.opentelemetry.io/otel/sdk/trace" + + "github.com/sourcegraph/sourcegraph/lib/errors" +) + +// maybeEnableTracing configures OpenTelemetry tracing if the GOOGLE_CLOUD_PROJECT is set. +// It differs from Sourcegraph's default tracing because we need to export directly to GCP, +// and the use case is more niche as a standalone service. +// +// Based on https://cloud.google.com/trace/docs/setup/go-ot +func maybeEnableTracing(ctx context.Context, logger log.Logger, config Config, res *resource.Resource) (func(), error) { + // Set globals + otel.SetTextMapPropagator(defaultPropagator()) + otel.SetErrorHandler(otel.ErrorHandlerFunc(func(err error) { + logger.Debug("OpenTelemetry error", log.Error(err)) + })) + + // Initialize exporter + var exporter sdktrace.SpanExporter + if config.GCPProjectID != "" { + logger.Debug("initializing GCP trace exporter", log.String("projectID", config.GCPProjectID)) + var err error + exporter, err = gcptraceexporter.New( + gcptraceexporter.WithProjectID(config.GCPProjectID), + gcptraceexporter.WithErrorHandler(otel.ErrorHandlerFunc(func(err error) { + logger.Warn("gcptraceexporter error", log.Error(err)) + })), + ) + if err != nil { + return nil, errors.Wrap(err, "gcptraceexporter.New") + } + } else { + logger.Debug("initializing OTLP exporter") + var err error + exporter, err = otlptrace.New(ctx, otlptracegrpc.NewClient()) // no opts, use OTLP convention + if err != nil { + return nil, errors.Wrap(err, "otlptrace.New") + } + } + + // Create and set global tracer + provider := sdktrace.NewTracerProvider( + sdktrace.WithBatcher(exporter), + sdktrace.WithResource(res)) + otel.SetTracerProvider(provider) + + logger.Info("tracing configured") + return func() { + shutdownCtx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + start := time.Now() + logger.Debug("shutting down tracing") + if err := provider.ForceFlush(shutdownCtx); err != nil { + logger.Warn("error occurred force-flushing traces", log.Error(err)) + } + if err := provider.Shutdown(shutdownCtx); err != nil { + logger.Warn("error occured shutting down tracing", log.Error(err)) + } + logger.Info("tracing shut down", log.Duration("elapsed", time.Since(start))) + }, nil +} + +// defaultPropagator returns a propagator that supports a bunch of common formats like +// W3C Trace Context, W3C Baggage, OpenTracing, and Jaeger (the latter two being +// the more commonly used legacy formats at Sourcegraph). This helps ensure +// propagation between services continues to work. +func defaultPropagator() propagation.TextMapPropagator { + return propagation.NewCompositeTextMapPropagator( + jaegerpropagator.Jaeger{}, + otpropagator.OT{}, + // W3C Trace Context format (https://www.w3.org/TR/trace-context/) + propagation.TraceContext{}, + propagation.Baggage{}, + ) +} diff --git a/lib/managedservicesplatform/service/sanitycheck.go b/lib/managedservicesplatform/runtime/sanitycheck.go similarity index 94% rename from lib/managedservicesplatform/service/sanitycheck.go rename to lib/managedservicesplatform/runtime/sanitycheck.go index bdec514ef861c..2dc84a81fc97f 100644 --- a/lib/managedservicesplatform/service/sanitycheck.go +++ b/lib/managedservicesplatform/runtime/sanitycheck.go @@ -1,4 +1,4 @@ -package service +package runtime import ( "fmt" diff --git a/lib/managedservicesplatform/service/service.go b/lib/managedservicesplatform/runtime/service.go similarity index 64% rename from lib/managedservicesplatform/service/service.go rename to lib/managedservicesplatform/runtime/service.go index 628c6a15559e6..f775779fa56d2 100644 --- a/lib/managedservicesplatform/service/service.go +++ b/lib/managedservicesplatform/runtime/service.go @@ -1,10 +1,12 @@ -package service +package runtime import ( "context" "github.com/sourcegraph/log" + "github.com/sourcegraph/sourcegraph/lib/background" + "github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/runtime/internal/opentelemetry" ) type Service[ConfigT any] interface { @@ -20,21 +22,28 @@ type Service[ConfigT any] interface { ) (background.CombinedRoutine, error) } -// Run handles the entire lifecycle of the program running Service. -func Run[ +// Start handles the entire lifecycle of the program running Service, and should +// be the only thing called in a MSP program's main package, for example: +// +// runtime.Start[example.Config](example.Service{}) +// +// Where example.Config is your runtime.ConfigLoader implementation, and +// example.Service is your runtime.Service implementation. +func Start[ ConfigT any, LoaderT ConfigLoader[ConfigT], ](service Service[ConfigT]) { passSanityCheck() - r := log.Resource{ + // Resource representing the service + res := log.Resource{ Name: service.Name(), Version: service.Version(), Namespace: "", InstanceID: "", } - liblog := log.Init(r) + liblog := log.Init(res) defer liblog.Sync() ctx := context.Background() @@ -57,6 +66,13 @@ func Run[ logger.Fatal("environment configuration error encountered", log.Error(err)) } + // Initialize things dependent on configuration being loaded + otelCleanup, err := opentelemetry.Init(ctx, logger, contract.opentelemetryContract, res) + if err != nil { + logger.Fatal("failed to initialize OpenTelemetry", log.Error(err)) + } + defer otelCleanup() + // Initialize the service routine, err := service.Initialize( ctx, diff --git a/monitoring/go.mod b/monitoring/go.mod index 68672b1e2c2b3..46fffce4919c9 100644 --- a/monitoring/go.mod +++ b/monitoring/go.mod @@ -11,7 +11,7 @@ require ( github.com/prometheus/prometheus v0.40.5 github.com/sourcegraph/log v0.0.0-20231018134238-fbadff7458bb github.com/sourcegraph/sourcegraph/lib v0.0.0-20230613175844-f031949c72f5 - github.com/stretchr/testify v1.8.2 + github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.23.7 golang.org/x/text v0.14.0 gopkg.in/yaml.v2 v2.4.0 diff --git a/monitoring/go.sum b/monitoring/go.sum index 21b2a54485b0f..2e5e233899179 100644 --- a/monitoring/go.sum +++ b/monitoring/go.sum @@ -305,8 +305,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/urfave/cli/v2 v2.23.7 h1:YHDQ46s3VghFHFf1DdF+Sh7H4RqhcM+t0TmZRJx4oJY= github.com/urfave/cli/v2 v2.23.7/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= @@ -422,7 +422,7 @@ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= +golang.org/x/oauth2 v0.1.0 h1:isLCZuhj4v+tYv7eskaN4v/TM+A1begWWgyVJDdl1+Y= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/sg.config.yaml b/sg.config.yaml index 6c7516ea8574a..55453dfc7c5f9 100644 --- a/sg.config.yaml +++ b/sg.config.yaml @@ -369,6 +369,23 @@ commands: - internal - cmd/pings + msp-example: + cmd: .bin/msp-example + install: | + if [ -n "$DELVE" ]; then + export GCFLAGS='all=-N -l' + fi + go build -gcflags="$GCFLAGS" -o .bin/msp-example github.com/sourcegraph/sourcegraph/cmd/msp-example + checkBinary: .bin/msp-example + env: + PORT: '9080' + DIAGNOSTICS_SECRET: sekret + SRC_LOG_LEVEL: debug + STATELESS_MODE: 'true' + watch: + - cmd/msp-example + - lib/managedservicesplatform + searcher: cmd: .bin/searcher install: | From 03b86e363decd86c38a1bd4c0e0e08844de08397 Mon Sep 17 00:00:00 2001 From: Robert Lin <robert@bobheadxi.dev> Date: Fri, 24 Nov 2023 13:26:34 -0800 Subject: [PATCH 155/222] graphqlbackend/telemetry: add and export interaction ID (#58539) #58016 adds a lightweight standard for propagating interaction ID via `X-Sourcegraph-Interaction-ID` - however, clientside, the recent implementations have all centered around explicitly providing and interaction ID when recording events. This change adds an option to the GraphQL `telemetry { recordEvent }` mutation to accommodate this pattern as a first-class citizen. I'll update various client integrations in a follow-up. --- cmd/frontend/graphqlbackend/telemetry.go | 1 + cmd/frontend/graphqlbackend/telemetry.graphql | 8 +++ cmd/frontend/graphqlbackend/telemetry_test.go | 25 ++++++++ .../telemetry/resolvers/telemetrygateway.go | 59 +++++++++-------- .../telemetry/protocol.md | 1 + internal/telemetrygateway/v1/BUILD.bazel | 1 + internal/telemetrygateway/v1/event.go | 14 ++++- .../v1/telemetrygateway.pb.go | 63 +++++++++++-------- .../v1/telemetrygateway.proto | 4 +- 9 files changed, 121 insertions(+), 55 deletions(-) diff --git a/cmd/frontend/graphqlbackend/telemetry.go b/cmd/frontend/graphqlbackend/telemetry.go index da0c692883172..08ea398b7f134 100644 --- a/cmd/frontend/graphqlbackend/telemetry.go +++ b/cmd/frontend/graphqlbackend/telemetry.go @@ -36,6 +36,7 @@ type TelemetryEventParametersInput struct { Metadata *[]TelemetryEventMetadataInput `json:"metadata,omitempty"` PrivateMetadata *JSONValue `json:"privateMetadata,omitempty"` BillingMetadata *TelemetryEventBillingMetadataInput `json:"billingMetadata,omitempty"` + InteractionID *string `json:"interactionID,omitempty"` } type TelemetryEventMetadataInput struct { diff --git a/cmd/frontend/graphqlbackend/telemetry.graphql b/cmd/frontend/graphqlbackend/telemetry.graphql index 3233efa6bb3c2..8d9f36fb27212 100644 --- a/cmd/frontend/graphqlbackend/telemetry.graphql +++ b/cmd/frontend/graphqlbackend/telemetry.graphql @@ -98,6 +98,14 @@ input TelemetryEventParametersInput { Billing-related metadata. """ billingMetadata: TelemetryEventBillingMetadataInput + """ + Optional interaction ID that can be provided to indicate the interaction + this event belongs to. It overrides the X-Sourcegraph-Interaction-ID header + if one is set on the request recording the event. + + This parameter is only available in Sourcegraph 5.2.4 and later. + """ + interactionID: String } """ diff --git a/cmd/frontend/graphqlbackend/telemetry_test.go b/cmd/frontend/graphqlbackend/telemetry_test.go index 4a2fcdc3c6ad7..4795882ca045e 100644 --- a/cmd/frontend/graphqlbackend/telemetry_test.go +++ b/cmd/frontend/graphqlbackend/telemetry_test.go @@ -7,6 +7,7 @@ import ( "github.com/graph-gophers/graphql-go" gqlerrors "github.com/graph-gophers/graphql-go/errors" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/protobuf/types/known/structpb" @@ -33,6 +34,30 @@ func TestTelemetryRecordEvents(t *testing.T) { // Assertions on received events. assert func(t *testing.T, gotEvents []TelemetryEventInput) }{ + { + name: "simple event with interaction ID", + gqlEventsInput: ` + { + feature: "cody.fixup" + action: "applied" + source: { + client: "VSCode.Cody" + clientVersion: "0.14.1" + } + parameters: { + version: 0 + interactionID: "f1d1b784-c69b-4ca4-802a-4dcbca7d660f" + } + } + `, + assert: func(t *testing.T, gotEvents []TelemetryEventInput) { + require.Len(t, gotEvents, 1) + assert.NotNil(t, gotEvents[0].Parameters) + assert.NotNil(t, gotEvents[0].Parameters.InteractionID) + assert.Equal(t, "f1d1b784-c69b-4ca4-802a-4dcbca7d660f", + *gotEvents[0].Parameters.InteractionID) + }, + }, { name: "object privateMetadata", gqlEventsInput: ` diff --git a/cmd/frontend/internal/telemetry/resolvers/telemetrygateway.go b/cmd/frontend/internal/telemetry/resolvers/telemetrygateway.go index cb7e184f57912..031f734e69b8d 100644 --- a/cmd/frontend/internal/telemetry/resolvers/telemetrygateway.go +++ b/cmd/frontend/internal/telemetry/resolvers/telemetrygateway.go @@ -16,19 +16,28 @@ func newTelemetryGatewayEvents( ctx context.Context, now time.Time, newUUID func() string, - events []graphqlbackend.TelemetryEventInput, + gqlEvents []graphqlbackend.TelemetryEventInput, ) ([]*telemetrygatewayv1.Event, error) { - gatewayEvents := make([]*telemetrygatewayv1.Event, len(events)) - for i, e := range events { + gatewayEvents := make([]*telemetrygatewayv1.Event, len(gqlEvents)) + for i, gqlEvent := range gqlEvents { event := telemetrygatewayv1.NewEventWithDefaults(ctx, now, newUUID) - event.Feature = e.Feature - event.Action = e.Action + event.Feature = gqlEvent.Feature + event.Action = gqlEvent.Action + + // Override interaction ID, or just set it, if an interaction ID is + // explicitly provided as part of event data. + if gqlEvent.Parameters.InteractionID != nil && len(*gqlEvent.Parameters.InteractionID) > 0 { + if event.Interaction == nil { + event.Interaction = &telemetrygatewayv1.EventInteraction{} + } + event.Interaction.InteractionId = gqlEvent.Parameters.InteractionID + } // Parse private metadata var privateMetadata *structpb.Struct - if e.Parameters.PrivateMetadata != nil { - switch v := e.Parameters.PrivateMetadata.Value.(type) { + if gqlEvent.Parameters.PrivateMetadata != nil { + switch v := gqlEvent.Parameters.PrivateMetadata.Value.(type) { // If the input is an object, turn it into proto struct as-is case map[string]any: var err error @@ -51,25 +60,25 @@ func newTelemetryGatewayEvents( // Configure parameters event.Parameters = &telemetrygatewayv1.EventParameters{ - Version: e.Parameters.Version, + Version: gqlEvent.Parameters.Version, Metadata: func() map[string]int64 { - if e.Parameters.Metadata == nil || len(*e.Parameters.Metadata) == 0 { + if gqlEvent.Parameters.Metadata == nil || len(*gqlEvent.Parameters.Metadata) == 0 { return nil } - metadata := make(map[string]int64, len(*e.Parameters.Metadata)) - for _, kv := range *e.Parameters.Metadata { + metadata := make(map[string]int64, len(*gqlEvent.Parameters.Metadata)) + for _, kv := range *gqlEvent.Parameters.Metadata { metadata[kv.Key] = int64(kv.Value) } return metadata }(), PrivateMetadata: privateMetadata, BillingMetadata: func() *telemetrygatewayv1.EventBillingMetadata { - if e.Parameters.BillingMetadata == nil { + if gqlEvent.Parameters.BillingMetadata == nil { return nil } return &telemetrygatewayv1.EventBillingMetadata{ - Product: e.Parameters.BillingMetadata.Product, - Category: e.Parameters.BillingMetadata.Category, + Product: gqlEvent.Parameters.BillingMetadata.Product, + Category: gqlEvent.Parameters.BillingMetadata.Category, } }(), } @@ -78,21 +87,21 @@ func newTelemetryGatewayEvents( Version: version.Version(), }, Client: &telemetrygatewayv1.EventSource_Client{ - Name: e.Source.Client, - Version: e.Source.ClientVersion, + Name: gqlEvent.Source.Client, + Version: gqlEvent.Source.ClientVersion, }, } - if e.MarketingTracking != nil { + if gqlEvent.MarketingTracking != nil { event.MarketingTracking = &telemetrygatewayv1.EventMarketingTracking{ - Url: e.MarketingTracking.Url, - FirstSourceUrl: e.MarketingTracking.FirstSourceURL, - CohortId: e.MarketingTracking.CohortID, - Referrer: e.MarketingTracking.Referrer, - LastSourceUrl: e.MarketingTracking.LastSourceURL, - DeviceSessionId: e.MarketingTracking.DeviceSessionID, - SessionReferrer: e.MarketingTracking.SessionReferrer, - SessionFirstUrl: e.MarketingTracking.SessionFirstURL, + Url: gqlEvent.MarketingTracking.Url, + FirstSourceUrl: gqlEvent.MarketingTracking.FirstSourceURL, + CohortId: gqlEvent.MarketingTracking.CohortID, + Referrer: gqlEvent.MarketingTracking.Referrer, + LastSourceUrl: gqlEvent.MarketingTracking.LastSourceURL, + DeviceSessionId: gqlEvent.MarketingTracking.DeviceSessionID, + SessionReferrer: gqlEvent.MarketingTracking.SessionReferrer, + SessionFirstUrl: gqlEvent.MarketingTracking.SessionFirstURL, } } diff --git a/doc/dev/background-information/telemetry/protocol.md b/doc/dev/background-information/telemetry/protocol.md index 2949ebcca17c0..daf02f89969a4 100644 --- a/doc/dev/background-information/telemetry/protocol.md +++ b/doc/dev/background-information/telemetry/protocol.md @@ -127,6 +127,7 @@ This page contains generated documentation for telemetry event data that gets ex | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | trace_id | [string](#string) | optional | <p>OpenTelemetry trace ID representing the interaction associated with the event.</p> | +| interaction_id | [string](#string) | optional | <p>Custom interaction ID representing the interaction associated with the event.</p> | | geolocation | [EventInteraction.Geolocation](#telemetrygateway-v1-EventInteraction-Geolocation) | optional | <p>Geolocation associated with the interaction, typically inferred from the</p><p>originating client's IP address (which we do not collect).</p> | diff --git a/internal/telemetrygateway/v1/BUILD.bazel b/internal/telemetrygateway/v1/BUILD.bazel index 773ab6e2a35ed..dffb80c8ffd5d 100644 --- a/internal/telemetrygateway/v1/BUILD.bazel +++ b/internal/telemetrygateway/v1/BUILD.bazel @@ -55,6 +55,7 @@ go_library( "//internal/actor", "//internal/featureflag", "//internal/requestclient", + "//internal/requestinteraction", "//internal/trace", "//lib/pointers", "@com_github_google_uuid//:uuid", diff --git a/internal/telemetrygateway/v1/event.go b/internal/telemetrygateway/v1/event.go index 29a93bd19e034..174ac84c8c7a4 100644 --- a/internal/telemetrygateway/v1/event.go +++ b/internal/telemetrygateway/v1/event.go @@ -11,6 +11,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/actor" "github.com/sourcegraph/sourcegraph/internal/featureflag" "github.com/sourcegraph/sourcegraph/internal/requestclient" + "github.com/sourcegraph/sourcegraph/internal/requestinteraction" "github.com/sourcegraph/sourcegraph/internal/trace" "github.com/sourcegraph/sourcegraph/lib/pointers" ) @@ -35,6 +36,12 @@ func NewEventWithDefaults(ctx context.Context, now time.Time, newEventID func() traceID = pointers.Ptr(eventTrace.TraceID().String()) } + // Get the interaction ID if provided + var interactionID *string + if it := requestinteraction.FromContext(ctx); it != nil { + interactionID = pointers.Ptr(it.ID) + } + // Get geolocation of request client, if there is one. var geolocation *EventInteraction_Geolocation if rc := requestclient.FromContext(ctx); rc != nil { @@ -47,13 +54,14 @@ func NewEventWithDefaults(ctx context.Context, now time.Time, newEventID func() // If we have nothing interesting to show, leave out Interaction // entirely. - if traceID == nil && geolocation == nil { + if traceID == nil && interactionID == nil && geolocation == nil { return nil } return &EventInteraction{ - TraceId: traceID, - Geolocation: geolocation, + TraceId: traceID, + InteractionId: interactionID, + Geolocation: geolocation, } }(), User: func() *EventUser { diff --git a/internal/telemetrygateway/v1/telemetrygateway.pb.go b/internal/telemetrygateway/v1/telemetrygateway.pb.go index b89664c6017bc..09659081087e3 100644 --- a/internal/telemetrygateway/v1/telemetrygateway.pb.go +++ b/internal/telemetrygateway/v1/telemetrygateway.pb.go @@ -881,6 +881,8 @@ type EventInteraction struct { // OpenTelemetry trace ID representing the interaction associated with the event. TraceId *string `protobuf:"bytes,1,opt,name=trace_id,json=traceId,proto3,oneof" json:"trace_id,omitempty"` + // Custom interaction ID representing the interaction associated with the event. + InteractionId *string `protobuf:"bytes,2,opt,name=interaction_id,json=interactionId,proto3,oneof" json:"interaction_id,omitempty"` // Geolocation associated with the interaction, typically inferred from the // originating client's IP address (which we do not collect). Geolocation *EventInteraction_Geolocation `protobuf:"bytes,3,opt,name=geolocation,proto3,oneof" json:"geolocation,omitempty"` @@ -925,6 +927,13 @@ func (x *EventInteraction) GetTraceId() string { return "" } +func (x *EventInteraction) GetInteractionId() string { + if x != nil && x.InteractionId != nil { + return *x.InteractionId + } + return "" +} + func (x *EventInteraction) GetGeolocation() *EventInteraction_Geolocation { if x != nil { return x.Geolocation @@ -1436,34 +1445,38 @@ var file_telemetrygateway_proto_rawDesc = []byte{ 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x75, 0x72, - 0x6c, 0x22, 0xe1, 0x01, 0x0a, 0x10, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6c, 0x22, 0x9a, 0x02, 0x0a, 0x10, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, - 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0b, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, + 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0b, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, + 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0b, 0x67, 0x65, + 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x1a, 0x30, 0x0a, 0x0b, + 0x47, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x0b, + 0x0a, 0x09, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0e, + 0x0a, 0x0c, 0x5f, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x85, + 0x01, 0x0a, 0x18, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x79, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, - 0x52, 0x0b, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, - 0x1a, 0x30, 0x0a, 0x0b, 0x47, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x6f, - 0x64, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, - 0x04, 0x08, 0x02, 0x10, 0x03, 0x32, 0x85, 0x01, 0x0a, 0x18, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x79, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, - 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x41, 0x5a, - 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, - 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, + 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x41, 0x5a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, 0x72, 0x61, 0x70, 0x68, + 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/internal/telemetrygateway/v1/telemetrygateway.proto b/internal/telemetrygateway/v1/telemetrygateway.proto index 527aaabd09f2f..9cc6ff0d9edec 100644 --- a/internal/telemetrygateway/v1/telemetrygateway.proto +++ b/internal/telemetrygateway/v1/telemetrygateway.proto @@ -204,8 +204,8 @@ message EventMarketingTracking { message EventInteraction { // OpenTelemetry trace ID representing the interaction associated with the event. optional string trace_id = 1; - // Reserve entry for client-provided interaction ID in follow-up change. - reserved 2; + // Custom interaction ID representing the interaction associated with the event. + optional string interaction_id = 2; message Geolocation { // Inferred ISO 3166-1 alpha-2 or alpha-3 country code From 63a1eca85690061c995b5a8b5e079d9d418f9b7e Mon Sep 17 00:00:00 2001 From: Quinn Slack <quinn@slack.org> Date: Sun, 26 Nov 2023 15:11:34 -0800 Subject: [PATCH 156/222] generate .css.d.ts for non-SCSS (plain .css) files as well (#58546) --- .gitignore | 1 + client/shared/dev/generateCssModulesTypes.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 64c0672b4fce7..6ad74f09cd10c 100644 --- a/.gitignore +++ b/.gitignore @@ -98,6 +98,7 @@ sourcegraph-webapp-*.tgz *.tsbuildinfo graphql-operations.ts *.module.scss.d.ts +*.module.css.d.ts dll-bundle # Extensions diff --git a/client/shared/dev/generateCssModulesTypes.ts b/client/shared/dev/generateCssModulesTypes.ts index 120f76190ccfd..12494db2777e3 100644 --- a/client/shared/dev/generateCssModulesTypes.ts +++ b/client/shared/dev/generateCssModulesTypes.ts @@ -2,8 +2,8 @@ import { spawn } from 'child_process' import path from 'path' const REPO_ROOT = path.join(__dirname, '../../..') -const CSS_MODULES_GLOB = path.resolve(__dirname, '../../*/src/**/*.module.scss') -const JETBRAINS_CSS_MODULES_GLOB = path.resolve(__dirname, '../../jetbrains/webview/**/*.module.scss') +const CSS_MODULES_GLOB = path.resolve(__dirname, '../../*/src/**/*.module.{scss,css}') +const JETBRAINS_CSS_MODULES_GLOB = path.resolve(__dirname, '../../jetbrains/webview/**/*.module.{scss,css}') const TSM_COMMAND = `pnpm exec tsm --logLevel error "{${CSS_MODULES_GLOB},${JETBRAINS_CSS_MODULES_GLOB}}" --includePaths node_modules client` const [BIN, ...ARGS] = TSM_COMMAND.split(' ') From 5a8bf40608d1f23281114e991a443e0cd529275a Mon Sep 17 00:00:00 2001 From: Julie Tibshirani <julietibs@apache.org> Date: Sun, 26 Nov 2023 19:14:24 -0800 Subject: [PATCH 157/222] Search: add index shard concurrency to site config (#58514) In sourcegraph/zoekt#702, we updated indexserver to parse symbols in parallel by spawning a new ctags process per shard. By default, indexing uses all available CPUs to create shards in parallel, so now it will create many more processes than before. As a safeguard, we're exposing a site config setting to reduce the indexing concurrency. It's not intended to be set by users, but will let us experiment and make sure the defaults are solid. As part of this change, I bumped the Zoekt dependency to pull in the change to IndexOptions. --- deps.bzl | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- internal/search/backend/index_options.go | 5 +++++ internal/search/backend/index_options_test.go | 21 +++++++++++++++++++ schema/schema.go | 3 +++ schema/site.schema.json | 8 ++++++- 7 files changed, 41 insertions(+), 6 deletions(-) diff --git a/deps.bzl b/deps.bzl index baef898ed72ac..a458d4dcb8f4d 100644 --- a/deps.bzl +++ b/deps.bzl @@ -6030,8 +6030,8 @@ def go_dependencies(): name = "com_github_sourcegraph_zoekt", build_file_proto_mode = "disable_global", importpath = "github.com/sourcegraph/zoekt", - sum = "h1:Pn9dVnAOZ7z8p+4BH32G1U9XtMCBVATy8vAq0ObHFdo=", - version = "v0.0.0-20231121165958-0959170c1623", + sum = "h1:2xAotLrNXGdj1x8I5yPh89qsesICseLEfEdKpmY3V90=", + version = "v0.0.0-20231122214222-d982320abe7b", ) go_repository( diff --git a/go.mod b/go.mod index d68028a03ca17..2ed003d069f93 100644 --- a/go.mod +++ b/go.mod @@ -569,7 +569,7 @@ require ( github.com/sourcegraph/managed-services-platform-cdktf/gen/postgresql v0.0.0-20231121191755-214be625af21 github.com/sourcegraph/mountinfo v0.0.0-20231018142932-e00da332dac5 github.com/sourcegraph/sourcegraph/monitoring v0.0.0-20230124144931-b2d81b1accb6 - github.com/sourcegraph/zoekt v0.0.0-20231121165958-0959170c1623 + github.com/sourcegraph/zoekt v0.0.0-20231122214222-d982320abe7b github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/objx v0.5.0 // indirect diff --git a/go.sum b/go.sum index 812e5d186e2ce..a15843a3b02cd 100644 --- a/go.sum +++ b/go.sum @@ -1631,8 +1631,8 @@ github.com/sourcegraph/tiktoken-go v0.0.0-20230905173153-caab340cf008 h1:Wu8W50q github.com/sourcegraph/tiktoken-go v0.0.0-20230905173153-caab340cf008/go.mod h1:9NiV+i9mJKGj1rYOT+njbv+ZwA/zJxYdewGl6qVatpg= github.com/sourcegraph/yaml v1.0.1-0.20200714132230-56936252f152 h1:z/MpntplPaW6QW95pzcAR/72Z5TWDyDnSo0EOcyij9o= github.com/sourcegraph/yaml v1.0.1-0.20200714132230-56936252f152/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= -github.com/sourcegraph/zoekt v0.0.0-20231121165958-0959170c1623 h1:Pn9dVnAOZ7z8p+4BH32G1U9XtMCBVATy8vAq0ObHFdo= -github.com/sourcegraph/zoekt v0.0.0-20231121165958-0959170c1623/go.mod h1:WVDDy51tFgeKy8zXtujTSbqzgyJrqhrLC9sjWiEfAII= +github.com/sourcegraph/zoekt v0.0.0-20231122214222-d982320abe7b h1:2xAotLrNXGdj1x8I5yPh89qsesICseLEfEdKpmY3V90= +github.com/sourcegraph/zoekt v0.0.0-20231122214222-d982320abe7b/go.mod h1:WVDDy51tFgeKy8zXtujTSbqzgyJrqhrLC9sjWiEfAII= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v0.0.0-20170901052352-ee1bd8ee15a1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= diff --git a/internal/search/backend/index_options.go b/internal/search/backend/index_options.go index ccb619ae690f1..5cd580af1e5ac 100644 --- a/internal/search/backend/index_options.go +++ b/internal/search/backend/index_options.go @@ -58,6 +58,8 @@ type ZoektIndexOptions struct { Error string `json:",omitempty"` LanguageMap map[string]ctags_config.ParserType + + ShardConcurrency int32 `json:",omitempty"` } func (o *ZoektIndexOptions) FromProto(p *proto.ZoektIndexOptions) { @@ -87,6 +89,7 @@ func (o *ZoektIndexOptions) FromProto(p *proto.ZoektIndexOptions) { languageMap[entry.Language] = uint8(entry.Ctags.Number()) } o.LanguageMap = languageMap + o.ShardConcurrency = p.GetShardConcurrency() } func (o *ZoektIndexOptions) ToProto() *proto.ZoektIndexOptions { @@ -116,6 +119,7 @@ func (o *ZoektIndexOptions) ToProto() *proto.ZoektIndexOptions { DocumentRanksVersion: o.DocumentRanksVersion, Error: o.Error, LanguageMap: languageMap, + ShardConcurrency: o.ShardConcurrency, } } @@ -212,6 +216,7 @@ func getIndexOptions( DocumentRanksVersion: opts.DocumentRanksVersion, LanguageMap: ctags_config.CreateEngineMap(*c), + ShardConcurrency: int32(c.SearchIndexShardConcurrency), } // Set of branch names. Always index HEAD diff --git a/internal/search/backend/index_options_test.go b/internal/search/backend/index_options_test.go index 339a23abd6580..2ff79d4ac8ee1 100644 --- a/internal/search/backend/index_options_test.go +++ b/internal/search/backend/index_options_test.go @@ -440,3 +440,24 @@ func TestGetIndexOptions_batch(t *testing.T) { t.Fatal("mismatch (-want, +got):\n", diff) } } +func TestGetIndexOptions_concurrency(t *testing.T) { + repos := []api.RepoID{1, 2, 3} + getRepoIndexOptions := func(repo api.RepoID) (*RepoIndexOptions, error) { + return &RepoIndexOptions{ + GetVersion: func(branch string) (string, error) { + return fmt.Sprintf("!%s-%d", branch, repo), nil + }, + }, nil + } + getSearchContextRevs := func(api.RepoID) ([]string, error) { return nil, nil } + + wantConcurrency := 27 + config := &schema.SiteConfiguration{SearchIndexShardConcurrency: wantConcurrency} + options := GetIndexOptions(config, getRepoIndexOptions, getSearchContextRevs, repos...) + + for _, got := range options { + if wantConcurrency != int(got.ShardConcurrency) { + t.Fatalf("wrong shard concurrency, want: %d, got: %d", wantConcurrency, got.ShardConcurrency) + } + } +} diff --git a/schema/schema.go b/schema/schema.go index bf6383331ede0..5de0e1b80d37e 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -2767,6 +2767,8 @@ type SiteConfiguration struct { ScimAuthToken string `json:"scim.authToken,omitempty"` // ScimIdentityProvider description: Identity provider used for SCIM support. "STANDARD" should be used unless a more specific value is available ScimIdentityProvider string `json:"scim.identityProvider,omitempty"` + // SearchIndexShardConcurrency description: The number of threads each indexserver should use to index shards. If not set, indexserver will use the number of available CPUs. This is exposed as a safeguard and should usually not require being set. + SearchIndexShardConcurrency int `json:"search.index.shardConcurrency,omitempty"` // SearchIndexSymbolsEnabled description: Whether indexed symbol search is enabled. This is contingent on the indexed search configuration, and is true by default for instances with indexed search enabled. Enabling this will cause every repository to re-index, which is a time consuming (several hours) operation. Additionally, it requires more storage and ram to accommodate the added symbols information in the search index. SearchIndexSymbolsEnabled *bool `json:"search.index.symbols.enabled,omitempty"` // SearchLargeFiles description: A list of file glob patterns where matching files will be indexed and searched regardless of their size. Files still need to be valid utf-8 to be indexed. The glob pattern syntax can be found here: https://github.com/bmatcuk/doublestar#patterns. @@ -2936,6 +2938,7 @@ func (v *SiteConfiguration) UnmarshalJSON(data []byte) error { delete(m, "repoPurgeWorker") delete(m, "scim.authToken") delete(m, "scim.identityProvider") + delete(m, "search.index.shardConcurrency") delete(m, "search.index.symbols.enabled") delete(m, "search.largeFiles") delete(m, "search.limits") diff --git a/schema/site.schema.json b/schema/site.schema.json index 09ed90f5f81ac..95dc4a3f2f935 100644 --- a/schema/site.schema.json +++ b/schema/site.schema.json @@ -16,6 +16,12 @@ "group": "Search", "examples": [true] }, + "search.index.shardConcurrency": { + "description": "The number of threads each indexserver should use to index shards. If not set, indexserver will use the number of available CPUs. This is exposed as a safeguard and should usually not require being set.", + "type": "integer", + "group": "Search", + "examples": ["10"] + }, "search.largeFiles": { "description": "A list of file glob patterns where matching files will be indexed and searched regardless of their size. Files still need to be valid utf-8 to be indexed. The glob pattern syntax can be found here: https://github.com/bmatcuk/doublestar#patterns.", "type": "array", @@ -29,7 +35,7 @@ "description": "(debug) controls the amount of symbol search parallelism. Defaults to 20. It is not recommended to change this outside of debugging scenarios. This option will be removed in a future version.", "type": "integer", "group": "Debug", - "examples": [["20"]] + "examples": ["20"] }, "cloneProgress.log": { "description": "Whether clone progress should be logged to a file. If enabled, logs are written to files in the OS default path for temporary files.", From 1f446b00a5e0114f61781caa89f69fb90a5881cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Gajdulewicz?= <rafax@users.noreply.github.com> Date: Mon, 27 Nov 2023 09:15:30 +0100 Subject: [PATCH 158/222] Enable logging Fireworks requests for Self-Serve users (#58556) * Enable logging Fireworks requests for Self-Serve users * Fix comments --- .../internal/httpapi/completions/anthropic.go | 3 +- .../internal/httpapi/completions/fireworks.go | 34 +++++++++++++++++-- .../internal/httpapi/completions/openai.go | 3 +- .../internal/httpapi/completions/upstream.go | 4 +-- cmd/cody-gateway/internal/httpapi/handler.go | 26 +++++++------- cmd/cody-gateway/shared/config.go | 6 ++-- cmd/cody-gateway/shared/main.go | 25 +++++++------- internal/codygateway/consts.go | 13 +++---- 8 files changed, 75 insertions(+), 39 deletions(-) diff --git a/cmd/cody-gateway/internal/httpapi/completions/anthropic.go b/cmd/cody-gateway/internal/httpapi/completions/anthropic.go index 7430f497302c2..8e865a51a84ab 100644 --- a/cmd/cody-gateway/internal/httpapi/completions/anthropic.go +++ b/cmd/cody-gateway/internal/httpapi/completions/anthropic.go @@ -4,6 +4,7 @@ import ( "bytes" "context" "encoding/json" + "github.com/sourcegraph/sourcegraph/cmd/cody-gateway/internal/actor" "io" "net/http" @@ -157,7 +158,7 @@ func NewAnthropicHandler( UserID: identifier, } }, - getRequestMetadata: func(body anthropicRequest) (model string, additionalMetadata map[string]any) { + getRequestMetadata: func(_ context.Context, _ log.Logger, _ *actor.Actor, body anthropicRequest) (model string, additionalMetadata map[string]any) { return body.Model, map[string]any{ "stream": body.Stream, "max_tokens_to_sample": body.MaxTokensToSample, diff --git a/cmd/cody-gateway/internal/httpapi/completions/fireworks.go b/cmd/cody-gateway/internal/httpapi/completions/fireworks.go index 1332d5b7b5120..ddfac29b50095 100644 --- a/cmd/cody-gateway/internal/httpapi/completions/fireworks.go +++ b/cmd/cody-gateway/internal/httpapi/completions/fireworks.go @@ -4,11 +4,11 @@ import ( "bytes" "context" "encoding/json" + "github.com/sourcegraph/log" + "github.com/sourcegraph/sourcegraph/cmd/cody-gateway/internal/actor" "io" "net/http" - "github.com/sourcegraph/log" - "github.com/sourcegraph/sourcegraph/cmd/cody-gateway/internal/events" "github.com/sourcegraph/sourcegraph/cmd/cody-gateway/internal/limiter" "github.com/sourcegraph/sourcegraph/cmd/cody-gateway/internal/notify" @@ -29,6 +29,7 @@ func NewFireworksHandler( httpClient httpcli.Doer, accessToken string, allowedModels []string, + logSelfServeCodeCompletionRequests bool, ) http.Handler { return makeUpstreamHandler( baseLogger, @@ -55,7 +56,34 @@ func NewFireworksHandler( body.N = 1 } }, - getRequestMetadata: func(body fireworksRequest) (model string, additionalMetadata map[string]any) { + getRequestMetadata: func(ctx context.Context, logger log.Logger, act *actor.Actor, body fireworksRequest) (model string, additionalMetadata map[string]any) { + // we checked this is a code completion request in validateRequest + // check that actor is a PLG user + if logSelfServeCodeCompletionRequests && act.IsDotComActor() { + // LogEvent is a channel send (not an external request), so should be ok here + if err := eventLogger.LogEvent( + ctx, + events.Event{ + Name: codygateway.EventNameCodeCompletionLogged, + Source: act.Source.Name(), + Identifier: act.ID, + Metadata: map[string]any{ + "request": map[string]any{ + "prompt": body.Prompt, + "model": body.Model, + "max_tokens": body.MaxTokens, + "temperature": body.Temperature, + "top_p": body.TopP, + "n": body.N, + "stream": body.Stream, + "echo": body.Echo, + "stop": body.Stop, + }, + }, + }); err != nil { + logger.Error("failed to log event", log.Error(err)) + } + } return body.Model, map[string]any{"stream": body.Stream} }, transformRequest: func(r *http.Request) { diff --git a/cmd/cody-gateway/internal/httpapi/completions/openai.go b/cmd/cody-gateway/internal/httpapi/completions/openai.go index 2f64f0c3c4164..d52bfeb420c55 100644 --- a/cmd/cody-gateway/internal/httpapi/completions/openai.go +++ b/cmd/cody-gateway/internal/httpapi/completions/openai.go @@ -4,6 +4,7 @@ import ( "bytes" "context" "encoding/json" + "github.com/sourcegraph/sourcegraph/cmd/cody-gateway/internal/actor" "io" "net/http" @@ -58,7 +59,7 @@ func NewOpenAIHandler( // We forward the actor ID to support tracking. body.User = identifier }, - getRequestMetadata: func(body openaiRequest) (model string, additionalMetadata map[string]any) { + getRequestMetadata: func(_ context.Context, _ log.Logger, _ *actor.Actor, body openaiRequest) (model string, additionalMetadata map[string]any) { return body.Model, map[string]any{"stream": body.Stream} }, transformRequest: func(r *http.Request) { diff --git a/cmd/cody-gateway/internal/httpapi/completions/upstream.go b/cmd/cody-gateway/internal/httpapi/completions/upstream.go index 40e2c55d3e3e6..13ebc6d8b8c4f 100644 --- a/cmd/cody-gateway/internal/httpapi/completions/upstream.go +++ b/cmd/cody-gateway/internal/httpapi/completions/upstream.go @@ -64,7 +64,7 @@ type upstreamHandlerMethods[ReqT UpstreamRequest] struct { // to be reported here - instead, use parseResponseAndUsage to extract usage, // which for some providers we can only know after the fact based on what // upstream tells us. - getRequestMetadata func(ReqT) (model string, additionalMetadata map[string]any) + getRequestMetadata func(context.Context, log.Logger, *actor.Actor, ReqT) (model string, additionalMetadata map[string]any) // parseResponseAndUsage should extract details from the response we get back from // upstream as well as overall usage for tracking purposes. // @@ -229,7 +229,7 @@ func makeUpstreamHandler[ReqT UpstreamRequest]( methods.transformRequest(req) // Retrieve metadata from the initial request. - model, requestMetadata := methods.getRequestMetadata(body) + model, requestMetadata := methods.getRequestMetadata(r.Context(), logger, act, body) // Match the model against the allowlist of models, which are configured // with the Cody Gateway model format "$PROVIDER/$MODEL_NAME". Models diff --git a/cmd/cody-gateway/internal/httpapi/handler.go b/cmd/cody-gateway/internal/httpapi/handler.go index 63ef56873f0e7..8f19b7f259d38 100644 --- a/cmd/cody-gateway/internal/httpapi/handler.go +++ b/cmd/cody-gateway/internal/httpapi/handler.go @@ -25,18 +25,19 @@ import ( ) type Config struct { - RateLimitNotifier notify.RateLimitNotifier - AnthropicAccessToken string - AnthropicAllowedModels []string - AnthropicAllowedPromptPatterns []string - AnthropicRequestBlockingEnabled bool - AnthropicMaxTokensToSample int - OpenAIAccessToken string - OpenAIOrgID string - OpenAIAllowedModels []string - FireworksAccessToken string - FireworksAllowedModels []string - EmbeddingsAllowedModels []string + RateLimitNotifier notify.RateLimitNotifier + AnthropicAccessToken string + AnthropicAllowedModels []string + AnthropicAllowedPromptPatterns []string + AnthropicRequestBlockingEnabled bool + AnthropicMaxTokensToSample int + OpenAIAccessToken string + OpenAIOrgID string + OpenAIAllowedModels []string + FireworksAccessToken string + FireworksAllowedModels []string + FireworksLogSelfServeCodeCompletionRequests bool + EmbeddingsAllowedModels []string } var meter = otel.GetMeterProvider().Meter("cody-gateway/internal/httpapi") @@ -189,6 +190,7 @@ func NewHandler( httpClient, config.FireworksAccessToken, config.FireworksAllowedModels, + config.FireworksLogSelfServeCodeCompletionRequests, ), ), ), diff --git a/cmd/cody-gateway/shared/config.go b/cmd/cody-gateway/shared/config.go index 1ca2f542411e3..8ef1fb8b39971 100644 --- a/cmd/cody-gateway/shared/config.go +++ b/cmd/cody-gateway/shared/config.go @@ -42,8 +42,9 @@ type Config struct { } Fireworks struct { - AllowedModels []string - AccessToken string + AllowedModels []string + AccessToken string + LogSelfServeCodeCompletionRequests bool } AllowedEmbeddingsModels []string @@ -146,6 +147,7 @@ func (c *Config) Load() { "accounts/fireworks/models/wizardcoder-15b", }, ","), "Fireworks models that can be used.")) + c.Fireworks.LogSelfServeCodeCompletionRequests = c.GetBool("CODY_GATEWAY_FIREWORKS_LOG_SELF_SERVE_COMPLETION_REQUESTS", "false", "Whether we should log self-serve code completion requests.") if c.Fireworks.AccessToken != "" && len(c.Fireworks.AllowedModels) == 0 { c.AddError(errors.New("must provide allowed models for Fireworks")) } diff --git a/cmd/cody-gateway/shared/main.go b/cmd/cody-gateway/shared/main.go index 41294e465f04d..2d42470d1b580 100644 --- a/cmd/cody-gateway/shared/main.go +++ b/cmd/cody-gateway/shared/main.go @@ -156,18 +156,19 @@ func Main(ctx context.Context, obctx *observation.Context, ready service.ReadyFu redis: redispool.Cache, }, &httpapi.Config{ - RateLimitNotifier: rateLimitNotifier, - AnthropicAccessToken: config.Anthropic.AccessToken, - AnthropicAllowedModels: config.Anthropic.AllowedModels, - AnthropicMaxTokensToSample: config.Anthropic.MaxTokensToSample, - AnthropicAllowedPromptPatterns: config.Anthropic.AllowedPromptPatterns, - AnthropicRequestBlockingEnabled: config.Anthropic.RequestBlockingEnabled, - OpenAIAccessToken: config.OpenAI.AccessToken, - OpenAIOrgID: config.OpenAI.OrgID, - OpenAIAllowedModels: config.OpenAI.AllowedModels, - FireworksAccessToken: config.Fireworks.AccessToken, - FireworksAllowedModels: config.Fireworks.AllowedModels, - EmbeddingsAllowedModels: config.AllowedEmbeddingsModels, + RateLimitNotifier: rateLimitNotifier, + AnthropicAccessToken: config.Anthropic.AccessToken, + AnthropicAllowedModels: config.Anthropic.AllowedModels, + AnthropicMaxTokensToSample: config.Anthropic.MaxTokensToSample, + AnthropicAllowedPromptPatterns: config.Anthropic.AllowedPromptPatterns, + AnthropicRequestBlockingEnabled: config.Anthropic.RequestBlockingEnabled, + OpenAIAccessToken: config.OpenAI.AccessToken, + OpenAIOrgID: config.OpenAI.OrgID, + OpenAIAllowedModels: config.OpenAI.AllowedModels, + FireworksAccessToken: config.Fireworks.AccessToken, + FireworksAllowedModels: config.Fireworks.AllowedModels, + FireworksLogSelfServeCodeCompletionRequests: config.Fireworks.LogSelfServeCodeCompletionRequests, + EmbeddingsAllowedModels: config.AllowedEmbeddingsModels, }) if err != nil { return errors.Wrap(err, "httpapi.NewHandler") diff --git a/internal/codygateway/consts.go b/internal/codygateway/consts.go index a1aaf3de04276..276d0909e838d 100644 --- a/internal/codygateway/consts.go +++ b/internal/codygateway/consts.go @@ -15,12 +15,13 @@ const CompletionsEventFeatureEmbeddings = "embeddings" type EventName string const ( - EventNameUnauthorized EventName = "Unauthorized" - EventNameAccessDenied EventName = "AccessDenied" - EventNameRateLimited EventName = "RateLimited" - EventNameCompletionsFinished EventName = "CompletionsFinished" - EventNameEmbeddingsFinished EventName = "EmbeddingsFinished" - EventNameRequestBlocked EventName = "RequestBlocked" + EventNameUnauthorized EventName = "Unauthorized" + EventNameAccessDenied EventName = "AccessDenied" + EventNameRateLimited EventName = "RateLimited" + EventNameCompletionsFinished EventName = "CompletionsFinished" + EventNameEmbeddingsFinished EventName = "EmbeddingsFinished" + EventNameRequestBlocked EventName = "RequestBlocked" + EventNameCodeCompletionLogged EventName = "CodeCompletionLogged" ) const FeatureHeaderName = "X-Sourcegraph-Feature" From febf7d2cd5c8ba1a6d4e881cfe57f852c44feb0d Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Mon, 27 Nov 2023 09:22:09 +0100 Subject: [PATCH 159/222] Backport setting for gitserver bandwidth from sourcegraph.com (#58581) We tested this forever on dotcom and no issue with it. Let's bump it here. --- cmd/gitserver/internal/gitservice.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/gitserver/internal/gitservice.go b/cmd/gitserver/internal/gitservice.go index 0ab2edf070403..2deff1fdaff49 100644 --- a/cmd/gitserver/internal/gitservice.go +++ b/cmd/gitserver/internal/gitservice.go @@ -24,8 +24,8 @@ import ( var ( envGitServiceMaxEgressBytesPerSecond = env.Get( "SRC_GIT_SERVICE_MAX_EGRESS_BYTES_PER_SECOND", - "1000000000", - "Git service egress rate limit in bytes per second (-1 = no limit, default = 1Gbps)") + "10000000000", + "Git service egress rate limit in bytes per second (-1 = no limit, default = 10Gbps)") // gitServiceMaxEgressBytesPerSecond must be retrieved by getGitServiceMaxEgressBytesPerSecond, // which parses envGitServiceMaxEgressBytesPerSecond once and logs any error encountered @@ -41,7 +41,7 @@ func getGitServiceMaxEgressBytesPerSecond(logger log.Logger) int64 { var err error gitServiceMaxEgressBytesPerSecond, err = strconv.ParseInt(envGitServiceMaxEgressBytesPerSecond, 10, 64) if err != nil { - gitServiceMaxEgressBytesPerSecond = 1000 * 1000 * 1000 // 1Gbps + gitServiceMaxEgressBytesPerSecond = 10 * 1000 * 1000 * 1000 // 1G0bps logger.Error("failed parsing SRC_GIT_SERVICE_MAX_EGRESS_BYTES_PER_SECOND, defaulting to 1Gbps", log.Int64("bps", gitServiceMaxEgressBytesPerSecond), log.Error(err)) From 78549d7fe809cbe1b32708a13693945ab3189b16 Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Mon, 27 Nov 2023 09:24:09 +0100 Subject: [PATCH 160/222] Don't show time in the past for next sync at (#58579) In the list of external services, for services that are overdue on scheduling, or are currently syncing but haven't finished yet we show things like "Next sync scheduled 30 minutes ago". This makes it a little less confusing as to what that means by saying "Next sync scheduled now" instead. --- .../components/externalServices/ExternalServiceNode.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/client/web/src/components/externalServices/ExternalServiceNode.tsx b/client/web/src/components/externalServices/ExternalServiceNode.tsx index 170ae714dea7f..4e5d637ac07c0 100644 --- a/client/web/src/components/externalServices/ExternalServiceNode.tsx +++ b/client/web/src/components/externalServices/ExternalServiceNode.tsx @@ -3,6 +3,7 @@ import { type FC, useCallback, useState } from 'react' import { useApolloClient } from '@apollo/client' import { mdiCircle, mdiCog, mdiDelete } from '@mdi/js' import classNames from 'classnames' +import { isBefore, parseISO } from 'date-fns' import { Timestamp } from '@sourcegraph/branded/src/components/Timestamp' import { asError, isErrorLike, pluralize } from '@sourcegraph/common' @@ -102,7 +103,13 @@ export const ExternalServiceNode: FC<ExternalServiceNodeProps> = ({ node, editin )}{' '} {node.nextSyncAt !== null && ( <> - Next sync scheduled <Timestamp date={node.nextSyncAt} />. + Next sync scheduled{' '} + {isBefore(new Date(), parseISO(node.nextSyncAt)) ? ( + <>now</> + ) : ( + <Timestamp date={node.nextSyncAt} /> + )} + . </> )} {node.nextSyncAt === null && <>No next sync scheduled.</>} From c995b9ada7877d02326ad600b320d40e4c2e41d8 Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Mon, 27 Nov 2023 09:24:50 +0100 Subject: [PATCH 161/222] gitserver: Run full sync after errors (#58577) Turns out that this can error and when it does a restart is the only way to really recover from it. That doesn't feel great. So I made an error trigger another full sync. --- cmd/gitserver/internal/statesyncer.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/cmd/gitserver/internal/statesyncer.go b/cmd/gitserver/internal/statesyncer.go index ec35968878fe0..56c35963814c4 100644 --- a/cmd/gitserver/internal/statesyncer.go +++ b/cmd/gitserver/internal/statesyncer.go @@ -52,6 +52,7 @@ func NewRepoStateSyncer( ) goroutine.BackgroundRoutine { var previousAddrs string var previousPinned string + fullSync := true return goroutine.NewPeriodicGoroutine( actor.WithInternalActor(ctx), @@ -61,7 +62,8 @@ func NewRepoStateSyncer( // We turn addrs into a string here for easy comparison and storage of previous // addresses since we'd need to take a copy of the slice anyway. currentAddrs := strings.Join(addrs, ",") - fullSync := currentAddrs != previousAddrs + // If the addresses changed, we need to do a full sync. + fullSync = fullSync || currentAddrs != previousAddrs previousAddrs = currentAddrs // We turn PinnedServers into a string here for easy comparison and storage @@ -72,13 +74,20 @@ func NewRepoStateSyncer( } sort.Strings(pinnedServerPairs) currentPinned := strings.Join(pinnedServerPairs, ",") + // If the pinned repos changed, we need to do a full sync. fullSync = fullSync || currentPinned != previousPinned previousPinned = currentPinned if err := syncRepoState(ctx, logger, db, locker, shardID, reposDir, gitServerAddrs, batchSize, perSecond, fullSync); err != nil { + // after a failed full sync, we should attempt it again in the next + // invocation. + fullSync = true return errors.Wrap(err, "syncing repo state") } + // Last full sync was a success, so next time we can be more optimistic. + fullSync = false + return nil }), goroutine.WithName("gitserver.repo-state-syncer"), From 4b3bb0d556769b0f4e760223d465ca7a78394e13 Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Mon, 27 Nov 2023 09:24:58 +0100 Subject: [PATCH 162/222] Fix soft deleted repos revived appearing as modifed (#58562) In the code host syncing stats, repos that were "undeleted" from our soft-deletion state on sync showed up as modified which feels weird. This fixes it and makes it so that they get counted as added repos instead. --- internal/repos/syncer.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/internal/repos/syncer.go b/internal/repos/syncer.go index c7584bc42a6ba..fd0260419f9bd 100644 --- a/internal/repos/syncer.go +++ b/internal/repos/syncer.go @@ -724,6 +724,7 @@ func (s *Syncer) sync(ctx context.Context, svc *types.ExternalService, sourced * s.ObsvCtx.Logger.Debug("retrieved stored repo, falling through", log.String("stored", fmt.Sprintf("%v", stored))) fallthrough case 1: // Existing repo, update. + wasDeleted := !stored[0].DeletedAt.IsZero() s.ObsvCtx.Logger.Debug("existing repo") if err := UpdateRepoLicenseHook(ctx, tx, stored[0], sourced); err != nil { return types.RepoSyncDiff{}, LicenseError{errors.Wrapf(err, "syncer: failed to update repo %s", sourced.Name)} @@ -739,8 +740,13 @@ func (s *Syncer) sync(ctx context.Context, svc *types.ExternalService, sourced * } *sourced = *stored[0] - d.Modified = append(d.Modified, types.RepoModified{Repo: stored[0], Modified: modified}) - s.ObsvCtx.Logger.Debug("appended to modified repos") + if wasDeleted { + d.Added = append(d.Added, stored[0]) + s.ObsvCtx.Logger.Debug("revived soft-deleted repo") + } else { + d.Modified = append(d.Modified, types.RepoModified{Repo: stored[0], Modified: modified}) + s.ObsvCtx.Logger.Debug("appended to modified repos") + } case 0: // New repo, create. s.ObsvCtx.Logger.Debug("new repo") From efc65f62debed74c8f86c3c82f4cf8f247bab82a Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Mon, 27 Nov 2023 09:33:46 +0100 Subject: [PATCH 163/222] Improve retention logic for code host sync jobs (#58578) Before we deleted anything completed older than a day. That doesn't give a good amount of insight into what's happening and keeping a few hundred records around isn't very costly. So now instead of just deleting everything older than a day, we delete everything older than 30d. To protect against table bloat, we also additionally only keep up to the 100 most recent records per external service. --- internal/database/dbmocks/mocks_temp.go | 124 ++++++++++++++++++ internal/database/external_services.go | 53 ++++++++ internal/database/external_services_test.go | 134 ++++++++++++++++++++ internal/repos/sync_worker.go | 18 +-- 4 files changed, 318 insertions(+), 11 deletions(-) diff --git a/internal/database/dbmocks/mocks_temp.go b/internal/database/dbmocks/mocks_temp.go index 3b9f719a421e2..2ff58903ce8dc 100644 --- a/internal/database/dbmocks/mocks_temp.go +++ b/internal/database/dbmocks/mocks_temp.go @@ -31117,6 +31117,9 @@ type MockExternalServiceStore struct { // CancelSyncJobFunc is an instance of a mock function object // controlling the behavior of the method CancelSyncJob. CancelSyncJobFunc *ExternalServiceStoreCancelSyncJobFunc + // CleanupSyncJobsFunc is an instance of a mock function object + // controlling the behavior of the method CleanupSyncJobs. + CleanupSyncJobsFunc *ExternalServiceStoreCleanupSyncJobsFunc // CountFunc is an instance of a mock function object controlling the // behavior of the method Count. CountFunc *ExternalServiceStoreCountFunc @@ -31195,6 +31198,11 @@ func NewMockExternalServiceStore() *MockExternalServiceStore { return }, }, + CleanupSyncJobsFunc: &ExternalServiceStoreCleanupSyncJobsFunc{ + defaultHook: func(context.Context, database.ExternalServicesCleanupSyncJobsOptions) (r0 error) { + return + }, + }, CountFunc: &ExternalServiceStoreCountFunc{ defaultHook: func(context.Context, database.ExternalServicesListOptions) (r0 int, r1 error) { return @@ -31318,6 +31326,11 @@ func NewStrictMockExternalServiceStore() *MockExternalServiceStore { panic("unexpected invocation of MockExternalServiceStore.CancelSyncJob") }, }, + CleanupSyncJobsFunc: &ExternalServiceStoreCleanupSyncJobsFunc{ + defaultHook: func(context.Context, database.ExternalServicesCleanupSyncJobsOptions) error { + panic("unexpected invocation of MockExternalServiceStore.CleanupSyncJobs") + }, + }, CountFunc: &ExternalServiceStoreCountFunc{ defaultHook: func(context.Context, database.ExternalServicesListOptions) (int, error) { panic("unexpected invocation of MockExternalServiceStore.Count") @@ -31439,6 +31452,9 @@ func NewMockExternalServiceStoreFrom(i database.ExternalServiceStore) *MockExter CancelSyncJobFunc: &ExternalServiceStoreCancelSyncJobFunc{ defaultHook: i.CancelSyncJob, }, + CleanupSyncJobsFunc: &ExternalServiceStoreCleanupSyncJobsFunc{ + defaultHook: i.CleanupSyncJobs, + }, CountFunc: &ExternalServiceStoreCountFunc{ defaultHook: i.Count, }, @@ -31616,6 +31632,114 @@ func (c ExternalServiceStoreCancelSyncJobFuncCall) Results() []interface{} { return []interface{}{c.Result0} } +// ExternalServiceStoreCleanupSyncJobsFunc describes the behavior when the +// CleanupSyncJobs method of the parent MockExternalServiceStore instance is +// invoked. +type ExternalServiceStoreCleanupSyncJobsFunc struct { + defaultHook func(context.Context, database.ExternalServicesCleanupSyncJobsOptions) error + hooks []func(context.Context, database.ExternalServicesCleanupSyncJobsOptions) error + history []ExternalServiceStoreCleanupSyncJobsFuncCall + mutex sync.Mutex +} + +// CleanupSyncJobs delegates to the next hook function in the queue and +// stores the parameter and result values of this invocation. +func (m *MockExternalServiceStore) CleanupSyncJobs(v0 context.Context, v1 database.ExternalServicesCleanupSyncJobsOptions) error { + r0 := m.CleanupSyncJobsFunc.nextHook()(v0, v1) + m.CleanupSyncJobsFunc.appendCall(ExternalServiceStoreCleanupSyncJobsFuncCall{v0, v1, r0}) + return r0 +} + +// SetDefaultHook sets function that is called when the CleanupSyncJobs +// method of the parent MockExternalServiceStore instance is invoked and the +// hook queue is empty. +func (f *ExternalServiceStoreCleanupSyncJobsFunc) SetDefaultHook(hook func(context.Context, database.ExternalServicesCleanupSyncJobsOptions) error) { + f.defaultHook = hook +} + +// PushHook adds a function to the end of hook queue. Each invocation of the +// CleanupSyncJobs method of the parent MockExternalServiceStore instance +// invokes the hook at the front of the queue and discards it. After the +// queue is empty, the default hook function is invoked for any future +// action. +func (f *ExternalServiceStoreCleanupSyncJobsFunc) PushHook(hook func(context.Context, database.ExternalServicesCleanupSyncJobsOptions) error) { + f.mutex.Lock() + f.hooks = append(f.hooks, hook) + f.mutex.Unlock() +} + +// SetDefaultReturn calls SetDefaultHook with a function that returns the +// given values. +func (f *ExternalServiceStoreCleanupSyncJobsFunc) SetDefaultReturn(r0 error) { + f.SetDefaultHook(func(context.Context, database.ExternalServicesCleanupSyncJobsOptions) error { + return r0 + }) +} + +// PushReturn calls PushHook with a function that returns the given values. +func (f *ExternalServiceStoreCleanupSyncJobsFunc) PushReturn(r0 error) { + f.PushHook(func(context.Context, database.ExternalServicesCleanupSyncJobsOptions) error { + return r0 + }) +} + +func (f *ExternalServiceStoreCleanupSyncJobsFunc) nextHook() func(context.Context, database.ExternalServicesCleanupSyncJobsOptions) error { + f.mutex.Lock() + defer f.mutex.Unlock() + + if len(f.hooks) == 0 { + return f.defaultHook + } + + hook := f.hooks[0] + f.hooks = f.hooks[1:] + return hook +} + +func (f *ExternalServiceStoreCleanupSyncJobsFunc) appendCall(r0 ExternalServiceStoreCleanupSyncJobsFuncCall) { + f.mutex.Lock() + f.history = append(f.history, r0) + f.mutex.Unlock() +} + +// History returns a sequence of ExternalServiceStoreCleanupSyncJobsFuncCall +// objects describing the invocations of this function. +func (f *ExternalServiceStoreCleanupSyncJobsFunc) History() []ExternalServiceStoreCleanupSyncJobsFuncCall { + f.mutex.Lock() + history := make([]ExternalServiceStoreCleanupSyncJobsFuncCall, len(f.history)) + copy(history, f.history) + f.mutex.Unlock() + + return history +} + +// ExternalServiceStoreCleanupSyncJobsFuncCall is an object that describes +// an invocation of method CleanupSyncJobs on an instance of +// MockExternalServiceStore. +type ExternalServiceStoreCleanupSyncJobsFuncCall struct { + // Arg0 is the value of the 1st argument passed to this method + // invocation. + Arg0 context.Context + // Arg1 is the value of the 2nd argument passed to this method + // invocation. + Arg1 database.ExternalServicesCleanupSyncJobsOptions + // Result0 is the value of the 1st result returned from this method + // invocation. + Result0 error +} + +// Args returns an interface slice containing the arguments of this +// invocation. +func (c ExternalServiceStoreCleanupSyncJobsFuncCall) Args() []interface{} { + return []interface{}{c.Arg0, c.Arg1} +} + +// Results returns an interface slice containing the results of this +// invocation. +func (c ExternalServiceStoreCleanupSyncJobsFuncCall) Results() []interface{} { + return []interface{}{c.Result0} +} + // ExternalServiceStoreCountFunc describes the behavior when the Count // method of the parent MockExternalServiceStore instance is invoked. type ExternalServiceStoreCountFunc struct { diff --git a/internal/database/external_services.go b/internal/database/external_services.go index f7779e17ecee5..4021f88dbbd9f 100644 --- a/internal/database/external_services.go +++ b/internal/database/external_services.go @@ -100,6 +100,11 @@ type ExternalServiceStore interface { // found or not in processing or queued state. CancelSyncJob(ctx context.Context, opts ExternalServicesCancelSyncJobOptions) error + // CleanupSyncJobs removes sync jobs that have finished before the given threshold. + // Additionally, only up to LimitPerService records are kept, deleting records + // to only keep the newest N. + CleanupSyncJobs(ctx context.Context, opts ExternalServicesCleanupSyncJobsOptions) error + // UpdateSyncJobCounters persists only the sync job counters for the supplied job. UpdateSyncJobCounters(ctx context.Context, job *types.ExternalServiceSyncJob) error @@ -1381,6 +1386,54 @@ func (e *externalServiceStore) CancelSyncJob(ctx context.Context, opts ExternalS return nil } +type ExternalServicesCleanupSyncJobsOptions struct { + // Remove jobs that are older than the given duration from NOW(). + OlderThan time.Duration + // Removes the oldest jobs until only MaxPerExternalService jobs remain for + // each service. + MaxPerExternalService int +} + +func (e *externalServiceStore) CleanupSyncJobs(ctx context.Context, opts ExternalServicesCleanupSyncJobsOptions) error { + if opts.MaxPerExternalService < 1 { + return errors.New("MaxPerExternalService must be greater than 0") + } + + q := buildCleanupSyncJobsQuery(opts) + return e.Exec(ctx, q) +} + +const cleanupSyncJobsQueryFmtstr = ` +WITH ranked_jobs AS ( + SELECT + id, + external_service_id, + state, + finished_at, + ROW_NUMBER() OVER (PARTITION BY external_service_id ORDER BY finished_at DESC) as rn + FROM + external_service_sync_jobs + WHERE + state IN ('completed', 'failed', 'canceled') + AND + finished_at IS NOT NULL +) +DELETE FROM + external_service_sync_jobs +WHERE + id IN ( + SELECT id FROM ranked_jobs + WHERE + rn > %s + OR + finished_at < %s + ) +` + +func buildCleanupSyncJobsQuery(opts ExternalServicesCleanupSyncJobsOptions) *sqlf.Query { + return sqlf.Sprintf(cleanupSyncJobsQueryFmtstr, opts.MaxPerExternalService, time.Now().Add(-opts.OlderThan)) +} + func (e *externalServiceStore) hasRunningSyncJobs(ctx context.Context, id int64) (bool, error) { q := sqlf.Sprintf(` SELECT 1 diff --git a/internal/database/external_services_test.go b/internal/database/external_services_test.go index 917c72b3f0733..b7aff6158c600 100644 --- a/internal/database/external_services_test.go +++ b/internal/database/external_services_test.go @@ -2578,3 +2578,137 @@ func Test_validateOtherExternalServiceConnection(t *testing.T) { err = validateOtherExternalServiceConnection(conn) require.NoError(t, err) } + +func TestExternalServices_CleanupSyncJobs(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + logger := logtest.Scoped(t) + db := NewDB(logger, dbtest.NewDB(t)) + ctx := context.Background() + + // Create a new external service + confGet := func() *conf.Unified { + return &conf.Unified{} + } + es := &types.ExternalService{ + Kind: extsvc.KindGitHub, + DisplayName: "GITHUB #1", + Config: extsvc.NewUnencryptedConfig(`{"url": "https://github.com", "repositoryQuery": ["none"], "token": "abc"}`), + } + err := db.ExternalServices().Create(ctx, confGet, es) + if err != nil { + t.Fatal(err) + } + + now := timeutil.Now() + q := ` + INSERT INTO external_service_sync_jobs + (external_service_id, state, queued_at, finished_at) + VALUES + ($2, 'completed', $1::timestamp - interval '40 day', $1::timestamp - interval '40 day'), -- completed and older than 30d, delete + ($2, 'failed', $1::timestamp - interval '40 day', $1::timestamp - interval '40 day'), -- failed and older than 30d, delete + ($2, 'processing', $1::timestamp - interval '40 day', $1::timestamp - interval '40 day'), -- processing but older than 30d, still keep + ($2, 'processing', $1::timestamp - interval '20 day', $1::timestamp - interval '20 day'), -- processing and newer than 30d, keep + ($2, 'failed', $1::timestamp - interval '20 day', $1::timestamp - interval '20 day'), -- failed but newer than 30d, keep + ($2, 'canceled', $1::timestamp - interval '10 day', $1::timestamp - interval '10 day'), -- canceled but newer than 30d, keep + ($2, 'completed', $1::timestamp - interval '10 day', $1::timestamp - interval '10 day') -- completed but newer than 30d, keep + ` + _, err = db.ExecContext(ctx, q, now, es.ID) + require.NoError(t, err) + + require.NoError( + t, + db.ExternalServices().CleanupSyncJobs(ctx, ExternalServicesCleanupSyncJobsOptions{ + MaxPerExternalService: 1000, + OlderThan: 30 * 24 * time.Hour, + }), + ) + + // With large MaxPerExternalService, expect that only the jobs that are older than 30d + // are deleted. + syncJobs, err := db.ExternalServices().GetSyncJobs(ctx, ExternalServicesGetSyncJobsOptions{}) + require.NoError(t, err) + require.Equal(t, []*types.ExternalServiceSyncJob{ + { + ID: 3, + ExternalServiceID: es.ID, + State: "processing", + QueuedAt: now.Add(-40 * 24 * time.Hour), + FinishedAt: now.Add(-40 * 24 * time.Hour), + }, + { + ID: 4, + ExternalServiceID: es.ID, + State: "processing", + QueuedAt: now.Add(-20 * 24 * time.Hour), + FinishedAt: now.Add(-20 * 24 * time.Hour), + }, + { + ID: 5, + ExternalServiceID: es.ID, + State: "failed", + QueuedAt: now.Add(-20 * 24 * time.Hour), + FinishedAt: now.Add(-20 * 24 * time.Hour), + }, + { + ID: 6, + ExternalServiceID: es.ID, + State: "canceled", + QueuedAt: now.Add(-10 * 24 * time.Hour), + FinishedAt: now.Add(-10 * 24 * time.Hour), + }, + { + ID: 7, + ExternalServiceID: es.ID, + State: "completed", + QueuedAt: now.Add(-10 * 24 * time.Hour), + FinishedAt: now.Add(-10 * 24 * time.Hour), + }, + }, syncJobs) + + // Now only keep the last 2 records: + require.NoError( + t, + db.ExternalServices().CleanupSyncJobs(ctx, ExternalServicesCleanupSyncJobsOptions{ + MaxPerExternalService: 2, + OlderThan: 30 * 24 * time.Hour, + }), + ) + + syncJobs, err = db.ExternalServices().GetSyncJobs(ctx, ExternalServicesGetSyncJobsOptions{}) + require.NoError(t, err) + require.Equal(t, []*types.ExternalServiceSyncJob{ + // Processing are skipped in deletion. + { + ID: 3, + ExternalServiceID: es.ID, + State: "processing", + QueuedAt: now.Add(-40 * 24 * time.Hour), + FinishedAt: now.Add(-40 * 24 * time.Hour), + }, + // Processing are skipped in deletion. + { + ID: 4, + ExternalServiceID: es.ID, + State: "processing", + QueuedAt: now.Add(-20 * 24 * time.Hour), + FinishedAt: now.Add(-20 * 24 * time.Hour), + }, + { + ID: 6, + ExternalServiceID: es.ID, + State: "canceled", + QueuedAt: now.Add(-10 * 24 * time.Hour), + FinishedAt: now.Add(-10 * 24 * time.Hour), + }, + { + ID: 7, + ExternalServiceID: es.ID, + State: "completed", + QueuedAt: now.Add(-10 * 24 * time.Hour), + FinishedAt: now.Add(-10 * 24 * time.Hour), + }, + }, syncJobs) +} diff --git a/internal/repos/sync_worker.go b/internal/repos/sync_worker.go index b7fff029cd876..5f62d083eaafa 100644 --- a/internal/repos/sync_worker.go +++ b/internal/repos/sync_worker.go @@ -13,6 +13,7 @@ import ( "github.com/sourcegraph/log" "github.com/sourcegraph/sourcegraph/internal/actor" + "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/database/basestore" "github.com/sourcegraph/sourcegraph/internal/goroutine" "github.com/sourcegraph/sourcegraph/internal/observation" @@ -87,7 +88,7 @@ func NewSyncWorker(ctx context.Context, observationCtx *observation.Context, dbH var janitor goroutine.BackgroundRoutine if opts.CleanupOldJobs { - janitor = newJobCleanerRoutine(ctx, dbHandle, opts.CleanupOldJobsInterval) + janitor = newJobCleanerRoutine(ctx, database.NewDBWith(observationCtx.Logger, basestore.NewWithHandle(dbHandle)), opts.CleanupOldJobsInterval) } else { janitor = goroutine.NoopRoutine() } @@ -118,19 +119,14 @@ func newResetterMetrics(observationCtx *observation.Context) dbworker.ResetterMe } } -const cleanSyncJobsQueryFmtstr = ` -DELETE FROM external_service_sync_jobs -WHERE - finished_at < NOW() - INTERVAL '1 day' - AND - state IN ('completed', 'failed', 'canceled') -` - -func newJobCleanerRoutine(ctx context.Context, handle basestore.TransactableHandle, interval time.Duration) goroutine.BackgroundRoutine { +func newJobCleanerRoutine(ctx context.Context, db database.DB, interval time.Duration) goroutine.BackgroundRoutine { return goroutine.NewPeriodicGoroutine( actor.WithInternalActor(ctx), goroutine.HandlerFunc(func(ctx context.Context) error { - _, err := handle.ExecContext(ctx, cleanSyncJobsQueryFmtstr) + err := db.ExternalServices().CleanupSyncJobs(ctx, database.ExternalServicesCleanupSyncJobsOptions{ + OlderThan: 30 * 24 * time.Hour, // 30 days + MaxPerExternalService: 100, + }) return errors.Wrap(err, "error while running job cleaner") }), goroutine.WithName("repo-updater.sync-job-cleaner"), From 7cdadb80abc49bb3b3537a4d193ba134adb1e09b Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Mon, 27 Nov 2023 10:08:12 +0100 Subject: [PATCH 164/222] Remove unused settings and env vars (#58580) Found while cleaning up sourcegraph.com --- cmd/frontend/BUILD.bazel | 1 - internal/settings/settings_test.go | 12 ++++++------ schema/schema.go | 3 --- schema/settings.schema.json | 6 ------ 4 files changed, 6 insertions(+), 16 deletions(-) diff --git a/cmd/frontend/BUILD.bazel b/cmd/frontend/BUILD.bazel index 9048e8fbd84e9..c594c1e1dd3e8 100644 --- a/cmd/frontend/BUILD.bazel +++ b/cmd/frontend/BUILD.bazel @@ -56,7 +56,6 @@ oci_image( "CODEINTEL_PGPORT": "5432", "CODEINTEL_PGSSLMODE": "disable", "CODEINTEL_PGUSER": "sg", - "PUBLIC_REPO_REDIRECTS": "true", }, tars = [":tar_frontend"], user = "sourcegraph", diff --git a/internal/settings/settings_test.go b/internal/settings/settings_test.go index 826650d79c37e..ccd362385f3f5 100644 --- a/internal/settings/settings_test.go +++ b/internal/settings/settings_test.go @@ -154,16 +154,16 @@ func TestMergeSettings(t *testing.T) { }, { name: "merge int", left: &schema.Settings{ - SearchContextLines: 0, - CodeIntelligenceAutoIndexPopularRepoLimit: 1, + SearchContextLines: 0, + HistoryDefaultPageSize: 1, }, right: &schema.Settings{ - SearchContextLines: 1, - CodeIntelligenceAutoIndexPopularRepoLimit: 0, // This is the zero value, so will not override a previous non-zero value + SearchContextLines: 1, + HistoryDefaultPageSize: 0, // This is the zero value, so will not override a previous non-zero value }, expected: &schema.Settings{ - SearchContextLines: 1, - CodeIntelligenceAutoIndexPopularRepoLimit: 1, // This is the zero value, so will not override a previous non-zero value + SearchContextLines: 1, + HistoryDefaultPageSize: 1, // This is the zero value, so will not override a previous non-zero value }, }, { name: "deep merge struct pointer", diff --git a/schema/schema.go b/schema/schema.go index 5de0e1b80d37e..12c5317e5bf10 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -2229,8 +2229,6 @@ type Settings struct { CodeIntelMixPreciseAndSearchBasedReferences bool `json:"codeIntel.mixPreciseAndSearchBasedReferences,omitempty"` // CodeIntelTraceExtension description: Whether to enable trace logging on the extension. CodeIntelTraceExtension bool `json:"codeIntel.traceExtension,omitempty"` - // CodeIntelligenceAutoIndexPopularRepoLimit description: Up to this number of repos are auto-indexed automatically. Ordered by star count. - CodeIntelligenceAutoIndexPopularRepoLimit int `json:"codeIntelligence.autoIndexPopularRepoLimit,omitempty"` // ExperimentalFeatures description: Experimental features and settings. ExperimentalFeatures *SettingsExperimentalFeatures `json:"experimentalFeatures,omitempty"` // FileSidebarVisibleByDefault description: Whether the sidebar on the repo view should be open by default. @@ -2326,7 +2324,6 @@ func (v *Settings) UnmarshalJSON(data []byte) error { delete(m, "codeIntel.disableSearchBased") delete(m, "codeIntel.mixPreciseAndSearchBasedReferences") delete(m, "codeIntel.traceExtension") - delete(m, "codeIntelligence.autoIndexPopularRepoLimit") delete(m, "experimentalFeatures") delete(m, "fileSidebarVisibleByDefault") delete(m, "history.defaultPageSize") diff --git a/schema/settings.schema.json b/schema/settings.schema.json index 2ed0f3130b9fe..8d628be76229e 100644 --- a/schema/settings.schema.json +++ b/schema/settings.schema.json @@ -370,12 +370,6 @@ "description": "The timeout (in milliseconds) for un-indexed search requests.", "type": "number" }, - "codeIntelligence.autoIndexPopularRepoLimit": { - "description": "Up to this number of repos are auto-indexed automatically. Ordered by star count.", - "type": "integer", - "minimum": 0, - "default": 0 - }, "search.contextLines": { "description": "The default number of lines to show as context below and above search results. Default is 1.", "type": "integer", From 5a70adce9296194e6da98109dd9b0e7aba3de517 Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Mon, 27 Nov 2023 10:08:36 +0100 Subject: [PATCH 165/222] Enable streaming blame by default (#58582) This has been implemented and run for a while on Sourcegraph.com. I think we should open it for all users, or remove the code for it. Since it fixes performance issues, I would want to err on keeping and on for all. --- client/web/src/featureFlags/featureFlags.ts | 1 - client/web/src/repo/blame/useBlameHunks.ts | 98 +------------------ cmd/frontend/internal/httpapi/BUILD.bazel | 2 - cmd/frontend/internal/httpapi/stream_blame.go | 6 -- .../internal/httpapi/stream_blame_test.go | 20 +--- 5 files changed, 7 insertions(+), 120 deletions(-) diff --git a/client/web/src/featureFlags/featureFlags.ts b/client/web/src/featureFlags/featureFlags.ts index 90e0b96ab5791..783ecff3cd84f 100644 --- a/client/web/src/featureFlags/featureFlags.ts +++ b/client/web/src/featureFlags/featureFlags.ts @@ -12,7 +12,6 @@ export const FEATURE_FLAGS = [ 'admin-analytics-cache-disabled', 'search-input-show-history', 'search-results-keyboard-navigation', - 'enable-streaming-git-blame', 'plg-enable-add-codehost-widget', 'accessible-file-tree', 'accessible-symbol-tree', diff --git a/client/web/src/repo/blame/useBlameHunks.ts b/client/web/src/repo/blame/useBlameHunks.ts index dba1ae8572ff0..1fa71d30f0378 100644 --- a/client/web/src/repo/blame/useBlameHunks.ts +++ b/client/web/src/repo/blame/useBlameHunks.ts @@ -12,14 +12,7 @@ import { makeRepoURI } from '@sourcegraph/shared/src/util/url' import { useObservable } from '@sourcegraph/wildcard' import { requestGraphQL } from '../../backend/graphql' -import { useFeatureFlag } from '../../featureFlags/useFeatureFlag' -import type { - ExternalServiceKind, - FirstCommitDateResult, - FirstCommitDateVariables, - GitBlameResult, - GitBlameVariables, -} from '../../graphql-operations' +import type { ExternalServiceKind, FirstCommitDateResult, FirstCommitDateVariables } from '../../graphql-operations' import { useBlameVisibility } from './useBlameVisibility' @@ -69,84 +62,6 @@ export interface BlameHunkData { firstCommitDate: Date | undefined } -const fetchBlameViaGraphQL = memoizeObservable( - ({ - repoName, - revision, - filePath, - sourcegraphURL, - }: { - repoName: string - revision: string - filePath: string - sourcegraphURL: string - }): Observable<BlameHunkData> => - requestGraphQL<GitBlameResult, GitBlameVariables>( - gql` - query GitBlame($repo: String!, $rev: String!, $path: String!) { - repository(name: $repo) { - externalURLs { - url - serviceKind - } - firstEverCommit { - author { - date - } - } - commit(rev: $rev) { - blob(path: $path) { - blame(startLine: 0, endLine: 0) { - startLine - endLine - author { - person { - email - displayName - avatarURL - user { - username - displayName - avatarURL - } - } - date - } - message - rev - commit { - url - parents { - oid - } - } - } - } - } - } - } - `, - { repo: repoName, rev: revision, path: filePath } - ).pipe( - map(dataOrThrowErrors), - map(({ repository }) => { - const hunks = repository?.commit?.blob?.blame - const firstCommitDate = repository?.firstEverCommit?.author?.date - const externalURLs = repository?.externalURLs - if (hunks) { - return { - current: hunks.map(blame => addDisplayInfoForHunk(blame, sourcegraphURL)), - externalURLs, - firstCommitDate: firstCommitDate ? new Date(firstCommitDate) : undefined, - } - } - - return { current: undefined, externalURLs: undefined, firstCommitDate: undefined } - }) - ), - makeRepoURI -) - interface RawStreamHunk { author: { Name: string @@ -176,9 +91,6 @@ interface RawStreamHunk { * To reduce the backend pressure and improve the experience, this fetch * implementation uses a SSE stream to load the blame hunks in chunks. * - * It is controlled via the `enable-streaming-git-blame` feature flag and is - * currently not enabled by default. - * * Since we also need the first commit date for the blame recency calculations, * this implementation uses Promise.all() to load both data sources in parallel. */ @@ -347,8 +259,6 @@ export const useBlameHunks = ( }, sourcegraphURL: string ): BlameHunkData => { - const [enableStreamingGitBlame, status] = useFeatureFlag('enable-streaming-git-blame') - const [isBlameVisible] = useBlameVisibility(isPackage) const shouldFetchBlame = isBlameVisible && status !== 'initial' @@ -356,11 +266,9 @@ export const useBlameHunks = ( useMemo( () => shouldFetchBlame - ? enableStreamingGitBlame - ? fetchBlameViaStreaming({ revision, repoName, filePath, sourcegraphURL }) - : fetchBlameViaGraphQL({ revision, repoName, filePath, sourcegraphURL }) + ? fetchBlameViaStreaming({ revision, repoName, filePath, sourcegraphURL }) : of({ current: undefined, externalURLs: undefined, firstCommitDate: undefined }), - [shouldFetchBlame, enableStreamingGitBlame, revision, repoName, filePath, sourcegraphURL] + [shouldFetchBlame, revision, repoName, filePath, sourcegraphURL] ) ) diff --git a/cmd/frontend/internal/httpapi/BUILD.bazel b/cmd/frontend/internal/httpapi/BUILD.bazel index 4da278f15ddee..a48c2bf551e91 100644 --- a/cmd/frontend/internal/httpapi/BUILD.bazel +++ b/cmd/frontend/internal/httpapi/BUILD.bazel @@ -44,7 +44,6 @@ go_library( "//internal/encryption/keyring", "//internal/env", "//internal/errcode", - "//internal/featureflag", "//internal/gitserver", "//internal/gitserver/gitdomain", "//internal/httpcli", @@ -107,7 +106,6 @@ go_test( "//internal/database", "//internal/database/dbmocks", "//internal/errcode", - "//internal/featureflag", "//internal/gitserver", "//internal/gitserver/gitdomain", "//internal/httpcli", diff --git a/cmd/frontend/internal/httpapi/stream_blame.go b/cmd/frontend/internal/httpapi/stream_blame.go index 58f6c7e639a58..edb6ca57531fd 100644 --- a/cmd/frontend/internal/httpapi/stream_blame.go +++ b/cmd/frontend/internal/httpapi/stream_blame.go @@ -16,7 +16,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/api" "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/errcode" - "github.com/sourcegraph/sourcegraph/internal/featureflag" "github.com/sourcegraph/sourcegraph/internal/gitserver" "github.com/sourcegraph/sourcegraph/internal/gitserver/gitdomain" streamhttp "github.com/sourcegraph/sourcegraph/internal/search/streaming/http" @@ -30,11 +29,6 @@ import ( // before that. func handleStreamBlame(logger log.Logger, db database.DB, gitserverClient gitserver.Client) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - flags := featureflag.FromContext(r.Context()) - if !flags.GetBoolOr("enable-streaming-git-blame", false) { - w.WriteHeader(404) - return - } tr, ctx := trace.New(r.Context(), "blame.Stream") defer tr.End() r = r.WithContext(ctx) diff --git a/cmd/frontend/internal/httpapi/stream_blame_test.go b/cmd/frontend/internal/httpapi/stream_blame_test.go index bb129697fa800..82b6e62d547f8 100644 --- a/cmd/frontend/internal/httpapi/stream_blame_test.go +++ b/cmd/frontend/internal/httpapi/stream_blame_test.go @@ -9,18 +9,18 @@ import ( "github.com/gorilla/mux" "github.com/sourcegraph/log/logtest" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/sourcegraph/sourcegraph/cmd/frontend/backend" "github.com/sourcegraph/sourcegraph/internal/api" "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/database/dbmocks" "github.com/sourcegraph/sourcegraph/internal/errcode" - "github.com/sourcegraph/sourcegraph/internal/featureflag" "github.com/sourcegraph/sourcegraph/internal/gitserver" "github.com/sourcegraph/sourcegraph/internal/gitserver/gitdomain" "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/lib/errors" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) func setupMockGSClient(t *testing.T, wantRev api.CommitID, returnErr error, hunks []*gitserver.Hunk) gitserver.Client { @@ -122,19 +122,7 @@ func TestStreamBlame(t *testing.T) { backend.Mocks.Repos = backend.MockRepos{} }) - ffs := featureflag.NewMemoryStore(nil, nil, map[string]bool{"enable-streaming-git-blame": true}) - ctx := featureflag.WithFlags(context.Background(), ffs) - - t.Run("NOK feature flag disabled", func(t *testing.T) { - rec := httptest.NewRecorder() - req, err := http.NewRequest(http.MethodGet, "/no-vars", nil) - require.NoError(t, err) - req = req.WithContext(context.Background()) // no feature flag there - - gsClient := setupMockGSClient(t, "abcd", nil, hunks) - handleStreamBlame(logger, db, gsClient).ServeHTTP(rec, req) - assert.Equal(t, http.StatusNotFound, rec.Code) - }) + ctx := context.Background() t.Run("NOK no mux vars", func(t *testing.T) { rec := httptest.NewRecorder() From 9b8d25a5fbd5c9072ceb9352451d078fd367b928 Mon Sep 17 00:00:00 2001 From: Greg Magolan <greg@aspect.dev> Date: Mon, 27 Nov 2023 01:50:46 -0800 Subject: [PATCH 166/222] build: add gazelle checks to Aspect Workflows (#58568) Co-authored-by: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> --- .aspect/workflows/config.yaml | 4 +++- BUILD.bazel | 7 +++++++ dev/ci/BUILD.bazel | 4 ++++ dev/ci/bazel-configure.sh | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100755 dev/ci/bazel-configure.sh diff --git a/.aspect/workflows/config.yaml b/.aspect/workflows/config.yaml index 95725c7650e89..05f1c7c1c9384 100644 --- a/.aspect/workflows/config.yaml +++ b/.aspect/workflows/config.yaml @@ -13,7 +13,9 @@ env: GIT_PAGER: '' tasks: # Checks that BUILD file content is up-to-date with sources - # gazelle: + gazelle: + target: //:configure + fix_target: //:configure # Checks that all tests are passing test: include_eternal_tests: true diff --git a/BUILD.bazel b/BUILD.bazel index f4d61f64c1b94..b5661737c3285 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -201,6 +201,13 @@ gazelle( gazelle = ":gazelle-buf", ) +sh_binary( + name = "configure", + srcs = ["//dev/ci:bazel-configure.sh"], + data = ["@go_sdk//:bin/go"], + env = {"GO": "$(rootpath @go_sdk//:bin/go)"}, +) + go_library( name = "sourcegraph", srcs = [ diff --git a/dev/ci/BUILD.bazel b/dev/ci/BUILD.bazel index f37785fe2a00f..3a724bde6bb92 100644 --- a/dev/ci/BUILD.bazel +++ b/dev/ci/BUILD.bazel @@ -1,5 +1,9 @@ load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") +exports_files([ + "bazel-configure.sh", +]) + go_library( name = "ci_lib", srcs = ["gen-pipeline.go"], diff --git a/dev/ci/bazel-configure.sh b/dev/ci/bazel-configure.sh new file mode 100755 index 0000000000000..25816def6749d --- /dev/null +++ b/dev/ci/bazel-configure.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +set -o errexit -o nounset -o pipefail + +# Add go to PATH +readonly runfiles_dir="${PWD}" +PATH="$(dirname "${runfiles_dir}/${GO}"):${PATH}" +# Remove bazelisk from path +PATH=$(echo "${PATH}" | awk -v RS=: -v ORS=: '/bazelisk/ {next} {print}') +export PATH +# Allow Aspect to re-enter again +export ASPECT_REENTRANT= + +cd "${BUILD_WORKSPACE_DIRECTORY}" + +bazel configure + +if [ "${CI:-}" ]; then + git ls-files --exclude-standard --others | grep -v .aspect/bazelrc/ci.generated.bazelrc | xargs git add --intent-to-add || true + + diff_file=$(mktemp) + trap 'rm -f "${diff_file}"' EXIT + + EXIT_CODE=0 + git diff --color=never --output="${diff_file}" --exit-code || EXIT_CODE=$? + + # if we have a diff, BUILD files were updated so we notify people + if [[ $EXIT_CODE -ne 0 ]]; then + cat "${diff_file}" + exit 1 + fi +fi From 7831238dee5586711dc4f9219ffbcdb256cf8d72 Mon Sep 17 00:00:00 2001 From: sourcegraph-bot-devx <127119266+sourcegraph-bot-devx@users.noreply.github.com> Date: Mon, 27 Nov 2023 11:52:14 +0200 Subject: [PATCH 167/222] chore: update third-party licenses (#58576) Co-authored-by: bobheadxi <bobheadxi@users.noreply.github.com> --- third-party-licenses/ThirdPartyLicenses.csv | 116 +++++++++++--------- 1 file changed, 66 insertions(+), 50 deletions(-) diff --git a/third-party-licenses/ThirdPartyLicenses.csv b/third-party-licenses/ThirdPartyLicenses.csv index d5f0a1344b344..3481219a57834 100644 --- a/third-party-licenses/ThirdPartyLicenses.csv +++ b/third-party-licenses/ThirdPartyLicenses.csv @@ -139,7 +139,7 @@ PNPM,@babel/runtime,7.23.1,MIT,"",Approved PNPM,@babel/runtime-corejs3,7.10.3,MIT,"",Approved PNPM,@babel/template,7.22.15,MIT,"",Approved PNPM,@babel/traverse,7.10.5,MIT,"",Approved -PNPM,@babel/types,7.10.5,MIT,"",Approved +PNPM,@babel/types,7.23.0,MIT,"",Approved PNPM,@base2/pretty-print-object,1.0.1,Simplified BSD,"",Approved PNPM,@bcoe/v8-coverage,0.2.3,MIT,"",Approved PNPM,@codemirror/autocomplete,6.1.0,MIT,"",Approved @@ -160,7 +160,7 @@ PNPM,@cspotcode/source-map-support,0.8.1,MIT,"",Approved PNPM,@discoveryjs/json-ext,0.5.7,MIT,"",Approved PNPM,@emotion/use-insertion-effect-with-fallbacks,1.0.1,MIT,"",Approved PNPM,@es-joy/jsdoccomment,0.40.1,MIT,"",Approved -PNPM,@esbuild/linux-x64,0.18.17,MIT,"",Approved +PNPM,@esbuild/linux-x64,0.17.14,MIT,"",Approved PNPM,@eslint-community/eslint-utils,4.4.0,MIT,"",Approved PNPM,@eslint-community/regexpp,4.9.1,MIT,"",Approved PNPM,@eslint/eslintrc,1.4.1,MIT,"",Approved @@ -762,7 +762,7 @@ PNPM,array-buffer-byte-length,1.0.0,MIT,"",Approved PNPM,array-find-index,1.0.2,MIT,"",Approved PNPM,array-flatten,1.1.1,MIT,"",Approved PNPM,array-includes,3.1.6,MIT,"",Approved -PNPM,array-union,2.1.0,MIT,"",Approved +PNPM,array-union,1.0.2,MIT,"",Approved PNPM,array-uniq,1.0.3,MIT,"",Approved PNPM,array.prototype.flat,1.3.0,MIT,"",Approved PNPM,array.prototype.flatmap,1.3.1,MIT,"",Approved @@ -886,17 +886,18 @@ PNPM,clone,1.0.4,MIT,"",Approved PNPM,clone-deep,4.0.1,MIT,"",Approved PNPM,clone-regexp,2.2.0,MIT,"",Approved PNPM,clone-response,1.0.2,MIT,"",Approved -Go,cloud.google.com/go,v0.110.8,"Apache 2.0,New BSD",cloud.google.com/go,Approved -Go,cloud.google.com/go/bigquery,v1.55.0,Apache 2.0,cloud.google.com/go/bigquery,Approved +Go,cloud.google.com/go,v0.110.9,"Apache 2.0,New BSD",cloud.google.com/go,Approved +Go,cloud.google.com/go/bigquery,v1.56.0,Apache 2.0,cloud.google.com/go/bigquery,Approved +Go,cloud.google.com/go/cloudsqlconn,v1.5.1,Apache 2.0,cloud.google.com/go/cloudsqlconn,Approved Go,cloud.google.com/go/compute/metadata,v0.2.4-0.20230617002413-005d2dfb6b68,Apache 2.0,cloud.google.com/go/compute,Approved -Go,cloud.google.com/go/iam,v1.1.2,Apache 2.0,cloud.google.com/go/iam,Approved -Go,cloud.google.com/go/kms,v1.15.2,Apache 2.0,cloud.google.com/go/kms,Approved -Go,cloud.google.com/go/monitoring,v1.16.0,Apache 2.0,cloud.google.com/go/monitoring,Approved +Go,cloud.google.com/go/iam,v1.1.4,Apache 2.0,cloud.google.com/go/iam,Approved +Go,cloud.google.com/go/kms,v1.15.4,Apache 2.0,cloud.google.com/go/kms,Approved +Go,cloud.google.com/go/monitoring,v1.16.2,Apache 2.0,cloud.google.com/go/monitoring,Approved Go,cloud.google.com/go/profiler,v0.3.1,Apache 2.0,cloud.google.com/go/profiler,Approved Go,cloud.google.com/go/pubsub,v1.33.0,Apache 2.0,cloud.google.com/go/pubsub,Approved -Go,cloud.google.com/go/secretmanager,v1.11.1,Apache 2.0,cloud.google.com/go/secretmanager,Approved +Go,cloud.google.com/go/secretmanager,v1.11.3,Apache 2.0,cloud.google.com/go/secretmanager,Approved Go,cloud.google.com/go/storage,v1.30.1,Apache 2.0,cloud.google.com/go/storage,Approved -Go,cloud.google.com/go/trace,v1.10.1,Apache 2.0,cloud.google.com/go/trace,Approved +Go,cloud.google.com/go/trace,v1.10.3,Apache 2.0,cloud.google.com/go/trace,Approved PNPM,clsx,1.2.1,MIT,"",Approved PNPM,code-point-at,1.1.0,MIT,"",Approved PNPM,code-red,1.0.4,MIT,"",Approved @@ -929,7 +930,7 @@ PNPM,console-control-strings,1.1.0,ISC,"",Approved PNPM,constant-case,3.0.4,MIT,"",Approved PNPM,content-disposition,0.5.4,MIT,"",Approved PNPM,content-type,1.0.4,MIT,"",Approved -PNPM,convert-source-map,2.0.0,MIT,"",Approved +PNPM,convert-source-map,1.7.0,MIT,"",Approved PNPM,cookie,0.5.0,MIT,"",Approved PNPM,cookie-signature,1.0.6,MIT,"",Approved PNPM,cookiejar,2.1.3,MIT,"",Approved @@ -982,7 +983,7 @@ PNPM,dayjs,1.11.10,MIT,"",Approved PNPM,debounce,1.2.1,MIT,"",Approved PNPM,debug,4.3.1,MIT,"",Approved PNPM,debuglog,1.0.1,MIT,"",Approved -PNPM,decamelize,1.2.0,MIT,"",Approved +PNPM,decamelize,4.0.0,MIT,"",Approved PNPM,decamelize-keys,1.1.0,MIT,"",Approved PNPM,decimal.js,10.4.3,MIT,"",Approved PNPM,decimal.js-light,2.5.0,MIT,"",Approved @@ -1023,7 +1024,7 @@ PNPM,devtools-protocol,0.0.981744,New BSD,"",Approved PNPM,dezalgo,1.0.3,ISC,"",Approved PNPM,diff,4.0.2,New BSD,"",Approved PNPM,diff-sequences,29.6.3,MIT,"",Approved -PNPM,dir-glob,3.0.1,MIT,"",Approved +PNPM,dir-glob,2.2.2,MIT,"",Approved PNPM,doctrine,2.1.0,Apache 2.0,"",Approved PNPM,dom-accessibility-api,0.5.13,MIT,"",Approved PNPM,dom-helpers,3.4.0,MIT,"",Approved @@ -1052,7 +1053,7 @@ PNPM,encodeurl,1.0.2,MIT,"",Approved PNPM,end-of-stream,1.4.4,MIT,"",Approved PNPM,enhanced-resolve,5.15.0,MIT,"",Approved PNPM,enquirer,2.3.6,MIT,"",Approved -PNPM,entities,2.1.0,Simplified BSD,"",Approved +PNPM,entities,2.2.0,Simplified BSD,"",Approved PNPM,envalid,7.3.1,MIT,"",Approved PNPM,envinfo,7.10.0,MIT,"",Approved PNPM,error-ex,1.3.2,MIT,"",Approved @@ -1072,7 +1073,7 @@ PNPM,es6-promise,3.3.1,MIT,"",Approved PNPM,es6-promisify,5.0.0,MIT,"",Approved PNPM,es6-symbol,3.1.3,ISC,"",Approved PNPM,es6-weak-map,2.0.2,MIT,"",Approved -PNPM,esbuild,0.18.17,MIT,"",Approved +PNPM,esbuild,0.17.14,MIT,"",Approved PNPM,esbuild-plugin-alias,0.2.1,MIT,"",Approved PNPM,esbuild-register,3.4.2,MIT,"",Approved PNPM,escalade,3.1.1,MIT,"",Approved @@ -1207,7 +1208,12 @@ PNPM,get-user-locale,1.5.1,MIT,"",Approved PNPM,giget,1.1.2,MIT,"",Approved PNPM,github-from-package,0.0.0,MIT,"",Approved PNPM,github-slugger,1.4.0,ISC,"",Approved -Go,github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp,v1.16.1,Apache 2.0,github.com/GoogleCloudPlatform/opentelemetry-operations-go,Approved +Go,github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai,v0.3.0,MIT,github.com/Azure/azure-sdk-for-go,Approved +Go,github.com/Azure/azure-sdk-for-go/sdk/azcore,v1.8.0,MIT,github.com/Azure/azure-sdk-for-go,Approved +Go,github.com/Azure/azure-sdk-for-go/sdk/azidentity,v1.4.0,MIT,github.com/Azure/azure-sdk-for-go,Approved +Go,github.com/Azure/azure-sdk-for-go/sdk/internal,v1.3.0,MIT,github.com/Azure/azure-sdk-for-go,Approved +Go,github.com/AzureAD/microsoft-authentication-library-for-go,v1.1.1,MIT,github.com/AzureAD/microsoft-authentication-library-for-go,Approved +Go,github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp,v1.20.0,Apache 2.0,github.com/GoogleCloudPlatform/opentelemetry-operations-go,Approved Go,github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric,v0.41.0,Apache 2.0,github.com/GoogleCloudPlatform/opentelemetry-operations-go,Approved Go,github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace,v1.17.0,Apache 2.0,github.com/GoogleCloudPlatform/opentelemetry-operations-go,Approved Go,github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping,v0.41.0,Apache 2.0,github.com/GoogleCloudPlatform/opentelemetry-operations-go,Approved @@ -1324,7 +1330,7 @@ Go,github.com/go-git/go-billy/v5,v5.4.1,Apache 2.0,github.com/go-git/go-billy,Ap Go,github.com/go-git/go-git/v5,v5.7.0,Apache 2.0,github.com/go-git/go-git,Approved Go,github.com/go-kit/log,v0.2.1,MIT,github.com/go-kit/log,Approved Go,github.com/go-logfmt/logfmt,v0.5.1,MIT,github.com/go-logfmt/logfmt,Approved -Go,github.com/go-logr/logr,v1.2.4,Apache 2.0,github.com/go-logr/logr,Approved +Go,github.com/go-logr/logr,v1.3.0,Apache 2.0,github.com/go-logr/logr,Approved Go,github.com/go-logr/stdr,v1.2.2,Apache 2.0,github.com/go-logr/stdr,Approved Go,github.com/go-openapi/analysis,v0.21.4,Apache 2.0,github.com/go-openapi/analysis,Approved Go,github.com/go-openapi/errors,v0.20.3,Apache 2.0,github.com/go-openapi/errors,Approved @@ -1339,14 +1345,15 @@ Go,github.com/go-openapi/validate,v0.22.0,Apache 2.0,github.com/go-openapi/valid Go,github.com/go-redsync/redsync/v4,v4.8.1,New BSD,github.com/go-redsync/redsync,Approved Go,github.com/go-stack/stack,v1.8.1,MIT,github.com/go-stack/stack,Approved Go,github.com/gobwas/glob,v0.2.3,MIT,github.com/gobwas/glob,Approved -Go,github.com/goccy/go-json,v0.9.11,MIT,github.com/goccy/go-json,Approved +Go,github.com/goccy/go-json,v0.10.2,MIT,github.com/goccy/go-json,Approved Go,github.com/godbus/dbus/v5,v5.0.6,Simplified BSD,github.com/godbus/dbus,Approved Go,github.com/gofrs/uuid,v4.2.0,MIT,github.com/gofrs/uuid,Approved Go,github.com/gogo/protobuf,v1.3.2,New BSD,github.com/gogo/protobuf,Approved Go,github.com/golang-jwt/jwt,v3.2.2,MIT,github.com/golang-jwt/jwt,Approved Go,github.com/golang-jwt/jwt/v4,v4.5.0,MIT,github.com/golang-jwt/jwt,Approved +Go,github.com/golang-jwt/jwt/v5,v5.0.0,MIT,github.com/golang-jwt/jwt,Approved Go,github.com/golang/gddo,v0.0.0-20210115222349-20d68f94ee1f,New BSD,github.com/golang/gddo,Approved -Go,github.com/golang/glog,v1.1.0,Apache 2.0,github.com/golang/glog,Approved +Go,github.com/golang/glog,v1.1.2,Apache 2.0,github.com/golang/glog,Approved Go,github.com/golang/groupcache,v0.0.0-20210331224755-41bb18bfe9da,Apache 2.0,github.com/golang/groupcache,Approved Go,github.com/golang/protobuf,v1.5.3,New BSD,github.com/golang/protobuf,Approved Go,github.com/golang/snappy,v0.0.4,New BSD,github.com/golang/snappy,Approved @@ -1361,9 +1368,9 @@ Go,github.com/google/go-github/v55,v55.0.0,New BSD,github.com/google/go-github,A Go,github.com/google/go-querystring,v1.1.0,New BSD,github.com/google/go-querystring,Approved Go,github.com/google/gofuzz,v1.2.0,Apache 2.0,github.com/google/gofuzz,Approved Go,github.com/google/pprof,v0.0.0-20230602150820-91b7bce49751,"Apache 2.0,ISC",github.com/google/pprof,Approved -Go,github.com/google/s2a-go,v0.1.4,Apache 2.0,github.com/google/s2a-go,Approved -Go,github.com/google/uuid,v1.3.1,New BSD,github.com/google/uuid,Approved -Go,github.com/googleapis/enterprise-certificate-proxy,v0.2.5,Apache 2.0,github.com/googleapis/enterprise-certificate-proxy,Approved +Go,github.com/google/s2a-go,v0.1.7,Apache 2.0,github.com/google/s2a-go,Approved +Go,github.com/google/uuid,v1.4.0,New BSD,github.com/google/uuid,Approved +Go,github.com/googleapis/enterprise-certificate-proxy,v0.3.2,Apache 2.0,github.com/googleapis/enterprise-certificate-proxy,Approved Go,github.com/googleapis/gax-go/v2,v2.12.0,New BSD,github.com/googleapis/gax-go,Approved Go,github.com/gorilla/context,v1.1.1,New BSD,github.com/gorilla/context,Approved Go,github.com/gorilla/css,v1.0.0,New BSD,github.com/gorilla/css,Approved @@ -1406,16 +1413,20 @@ Go,github.com/invopop/jsonschema,v0.7.0,MIT,github.com/invopop/jsonschema,Approv Go,github.com/itchyny/gojq,v0.12.11,MIT,github.com/itchyny/gojq,Approved Go,github.com/itchyny/timefmt-go,v0.1.5,MIT,github.com/itchyny/timefmt-go,Approved Go,github.com/jackc/chunkreader/v2,v2.0.1,MIT,github.com/jackc/chunkreader,Approved -Go,github.com/jackc/pgconn,v1.12.1,MIT,github.com/jackc/pgconn,Approved +Go,github.com/jackc/pgconn,v1.14.0,MIT,github.com/jackc/pgconn,Approved Go,github.com/jackc/pgerrcode,v0.0.0-20220416144525-469b46aa5efa,MIT,github.com/jackc/pgerrcode,Approved Go,github.com/jackc/pgio,v1.0.0,MIT,github.com/jackc/pgio,Approved Go,github.com/jackc/pgpassfile,v1.0.0,MIT,github.com/jackc/pgpassfile,Approved -Go,github.com/jackc/pgproto3/v2,v2.3.0,MIT,github.com/jackc/pgproto3,Approved -Go,github.com/jackc/pgservicefile,v0.0.0-20200714003250-2b9c44734f2b,MIT,github.com/jackc/pgservicefile,Approved -Go,github.com/jackc/pgtype,v1.11.1-0.20220425133820-53266f029fbb,MIT,github.com/jackc/pgtype,Approved -Go,github.com/jackc/pgx/v4,v4.16.1,MIT,github.com/jackc/pgx,Approved +Go,github.com/jackc/pgproto3/v2,v2.3.2,MIT,github.com/jackc/pgproto3,Approved +Go,github.com/jackc/pgservicefile,v0.0.0-20221227161230-091c0ba34f0a,MIT,github.com/jackc/pgservicefile,Approved +Go,github.com/jackc/pgtype,v1.14.0,MIT,github.com/jackc/pgtype,Approved +Go,github.com/jackc/pgx/v4,v4.18.1,MIT,github.com/jackc/pgx,Approved +Go,github.com/jackc/pgx/v5,v5.5.0,MIT,github.com/jackc/pgx,Approved +Go,github.com/jackc/puddle/v2,v2.2.1,MIT,github.com/jackc/puddle,Approved Go,github.com/jbenet/go-context,v0.0.0-20150711004518-d14ea06fba99,MIT,github.com/jbenet/go-context,Approved Go,github.com/jhump/protoreflect,v1.12.1-0.20220417024638-438db461d753,Apache 2.0,github.com/jhump/protoreflect,Approved +Go,github.com/jinzhu/inflection,v1.0.0,MIT,github.com/jinzhu/inflection,Approved +Go,github.com/jinzhu/now,v1.1.5,MIT,github.com/jinzhu/now,Approved Go,github.com/jmespath/go-jmespath,v0.4.0,Apache 2.0,github.com/jmespath/go-jmespath,Approved Go,github.com/joho/godotenv,v1.4.0,MIT,github.com/joho/godotenv,Approved Go,github.com/jonboulle/clockwork,v0.3.0,Apache 2.0,github.com/jonboulle/clockwork,Approved @@ -1438,6 +1449,7 @@ Go,github.com/knadh/koanf,v1.5.0,MIT,github.com/knadh/koanf,Approved Go,github.com/knadh/koanf/v2,v2.0.1,MIT,github.com/knadh/koanf,Approved Go,github.com/kr/pretty,v0.3.1,MIT,github.com/kr/pretty,Approved Go,github.com/kr/text,v0.2.0,MIT,github.com/kr/text,Approved +Go,github.com/kylelemons/godebug,v1.1.0,Apache 2.0,github.com/kylelemons/godebug,Approved Go,github.com/lib/pq,v1.10.7,MIT,github.com/lib/pq,Approved Go,github.com/lucasb-eyer/go-colorful,v1.2.0,MIT,github.com/lucasb-eyer/go-colorful,Approved Go,github.com/machinebox/graphql,v0.2.2,Apache 2.0,github.com/machinebox/graphql,Approved @@ -1476,20 +1488,22 @@ Go,github.com/opencontainers/go-digest,v1.0.0,Apache 2.0,github.com/opencontaine Go,github.com/opencontainers/image-spec,v1.1.0-rc3,Apache 2.0,github.com/opencontainers/image-spec,Approved Go,github.com/opentracing/opentracing-go,v1.2.0,Apache 2.0,github.com/opentracing/opentracing-go,Approved Go,github.com/opsgenie/opsgenie-go-sdk-v2,v1.2.13,Apache 2.0,github.com/opsgenie/opsgenie-go-sdk-v2,Approved +Go,github.com/oschwald/maxminddb-golang,v1.12.0,ISC,github.com/oschwald/maxminddb-golang,Approved Go,github.com/pandatix/go-cvss,v0.5.2,MIT,github.com/pandatix/go-cvss,Approved Go,github.com/peterbourgon/ff,v1.7.1,Apache 2.0,github.com/peterbourgon/ff,Approved Go,github.com/peterbourgon/ff/v3,v3.3.2,Apache 2.0,github.com/peterbourgon/ff,Approved Go,github.com/peterhellberg/link,v1.1.0,MIT,github.com/peterhellberg/link,Approved Go,github.com/pierrec/lz4/v4,v4.1.17,New BSD,github.com/pierrec/lz4,Approved Go,github.com/pjbgf/sha1cd,v0.3.0,Apache 2.0,github.com/pjbgf/sha1cd,Approved +Go,github.com/pkg/browser,v0.0.0-20210911075715-681adbf594b8,Simplified BSD,github.com/pkg/browser,Approved Go,github.com/pkg/errors,v0.9.1,Simplified BSD,github.com/pkg/errors,Approved Go,github.com/pmezard/go-difflib,v1.0.0,New BSD,github.com/pmezard/go-difflib,Approved Go,github.com/pquerna/cachecontrol,v0.1.0,Apache 2.0,github.com/pquerna/cachecontrol,Approved Go,github.com/prometheus/client_golang,v1.16.0,Apache 2.0,github.com/prometheus/client_golang,Approved -Go,github.com/prometheus/client_model,v0.4.0,Apache 2.0,github.com/prometheus/client_model,Approved +Go,github.com/prometheus/client_model,v0.5.0,Apache 2.0,github.com/prometheus/client_model,Approved Go,github.com/prometheus/common,v0.32.1,"Apache 2.0,New BSD",github.com/prometheus/common,Approved Go,github.com/prometheus/common/sigv4,v0.1.0,Apache 2.0,github.com/prometheus/common,Approved -Go,github.com/prometheus/procfs,v0.11.0,Apache 2.0,github.com/prometheus/procfs,Approved +Go,github.com/prometheus/procfs,v0.11.1,Apache 2.0,github.com/prometheus/procfs,Approved Go,github.com/prometheus/prometheus,v0.40.5,Apache 2.0,github.com/prometheus/prometheus,Approved Go,github.com/qdrant/go-client,v1.4.1,Apache 2.0,github.com/qdrant/go-client,Approved Go,github.com/qustavo/sqlhooks/v2,v2.1.0,MIT,github.com/qustavo/sqlhooks,Approved @@ -1502,12 +1516,12 @@ Go,github.com/russellhaering/gosaml2,v0.9.1,Apache 2.0,github.com/russellhaering Go,github.com/russellhaering/goxmldsig,v1.3.0,Apache 2.0,github.com/russellhaering/goxmldsig,Approved Go,github.com/russross/blackfriday/v2,v2.1.0,Simplified BSD,github.com/russross/blackfriday,Approved Go,github.com/sabhiram/go-gitignore,v0.0.0-20210923224102-525f6e181f06,MIT,github.com/sabhiram/go-gitignore,Approved -Go,github.com/schollz/progressbar/v3,v3.8.5,MIT,github.com/schollz/progressbar,Approved +Go,github.com/schollz/progressbar/v3,v3.13.1,MIT,github.com/schollz/progressbar,Approved Go,github.com/scim2/filter-parser/v2,v2.2.0,MIT,github.com/scim2/filter-parser,Approved Go,github.com/segmentio/fasthash,v1.0.3,MIT,github.com/segmentio/fasthash,Approved Go,github.com/segmentio/ksuid,v1.0.4,MIT,github.com/segmentio/ksuid,Approved Go,github.com/sergi/go-diff,v1.3.1,"Apache 2.0,MIT",github.com/sergi/go-diff,Approved -Go,github.com/sirupsen/logrus,v1.9.1,MIT,github.com/sirupsen/logrus,Approved +Go,github.com/sirupsen/logrus,v1.9.3,MIT,github.com/sirupsen/logrus,Approved Go,github.com/skeema/knownhosts,v1.1.1,Apache 2.0,github.com/skeema/knownhosts,Approved Go,github.com/slack-go/slack,v0.10.1,"MIT,Simplified BSD",github.com/slack-go/slack,Approved Go,github.com/smacker/go-tree-sitter,v0.0.0-20220209044044-0d3022e933c3,MIT,github.com/smacker/go-tree-sitter,Approved @@ -1526,13 +1540,14 @@ Go,github.com/sourcegraph/log,v0.0.0-20231018134238-fbadff7458bb,Apache 2.0,gith Go,github.com/sourcegraph/managed-services-platform-cdktf/gen/cloudflare,v0.0.0-20230822024612-edb48c530722,MIT,github.com/sourcegraph/managed-services-platform-cdktf,Approved Go,github.com/sourcegraph/managed-services-platform-cdktf/gen/google,v0.0.0-20230822024612-edb48c530722,MIT,github.com/sourcegraph/managed-services-platform-cdktf,Approved Go,github.com/sourcegraph/managed-services-platform-cdktf/gen/google_beta,v0.0.0-20231106184355-f739cf8e1d49,MIT,github.com/sourcegraph/managed-services-platform-cdktf,Approved +Go,github.com/sourcegraph/managed-services-platform-cdktf/gen/postgresql,v0.0.0-20231121191755-214be625af21,MIT,github.com/sourcegraph/managed-services-platform-cdktf,Approved Go,github.com/sourcegraph/managed-services-platform-cdktf/gen/random,v0.0.0-20230822024612-edb48c530722,MIT,github.com/sourcegraph/managed-services-platform-cdktf,Approved Go,github.com/sourcegraph/mountinfo,v0.0.0-20231018142932-e00da332dac5,Apache 2.0,github.com/sourcegraph/mountinfo,Approved Go,github.com/sourcegraph/run,v0.12.0,Apache 2.0,github.com/sourcegraph/run,Approved Go,github.com/sourcegraph/scip,v0.3.1-0.20230627154934-45df7f6d33fc,Apache 2.0,github.com/sourcegraph/scip,Approved Go,github.com/sourcegraph/tiktoken-go,v0.0.0-20230905173153-caab340cf008,MIT,github.com/sourcegraph/tiktoken-go,Approved Go,github.com/sourcegraph/yaml,v1.0.1-0.20200714132230-56936252f152,MIT,github.com/sourcegraph/yaml,Approved -Go,github.com/sourcegraph/zoekt,v0.0.0-20231115091004-137eb8f22610,Apache 2.0,github.com/sourcegraph/zoekt,Approved +Go,github.com/sourcegraph/zoekt,v0.0.0-20231121165958-0959170c1623,Apache 2.0,github.com/sourcegraph/zoekt,Approved Go,github.com/spf13/pflag,v1.0.5,New BSD,github.com/spf13/pflag,Approved Go,github.com/stretchr/testify,v1.8.4,MIT,github.com/stretchr/testify,Approved Go,github.com/throttled/throttled/v2,v2.12.0,New BSD,github.com/throttled/throttled,Approved @@ -1572,7 +1587,7 @@ PNPM,global-modules,2.0.0,MIT,"",Approved PNPM,global-prefix,3.0.0,MIT,"",Approved PNPM,globals,13.23.0,MIT,"",Approved PNPM,globalthis,1.0.3,MIT,"",Approved -PNPM,globby,11.1.0,MIT,"",Approved +PNPM,globby,13.1.3,MIT,"",Approved PNPM,globjoin,0.1.4,MIT,"",Approved Go,go.bobheadxi.dev/streamline,v1.2.2,MIT,go.bobheadxi.dev/streamline,Approved Go,go.mongodb.org/mongo-driver,v1.11.3,Apache 2.0,go.mongodb.org/mongo-driver,Approved @@ -1623,26 +1638,25 @@ Go,go.uber.org/goleak,v1.2.1,MIT,go.uber.org/goleak,Approved Go,go.uber.org/multierr,v1.11.0,MIT,go.uber.org/multierr,Approved Go,go.uber.org/ratelimit,v0.2.0,MIT,go.uber.org/ratelimit,Approved Go,go.uber.org/zap,v1.26.0,MIT,go.uber.org/zap,Approved -Go,golang.org/x/crypto,v0.14.0,New BSD,golang.org/x/crypto,Approved +Go,golang.org/x/crypto,v0.15.0,New BSD,golang.org/x/crypto,Approved Go,golang.org/x/exp,v0.0.0-20230713183714-613f0c0eb8a1,New BSD,golang.org/x/exp,Approved Go,golang.org/x/mod,v0.12.0,New BSD,golang.org/x/mod,Approved -Go,golang.org/x/net,v0.17.0,New BSD,golang.org/x/net,Approved -Go,golang.org/x/oauth2,v0.10.0,New BSD,golang.org/x/oauth2,Approved -Go,golang.org/x/sync,v0.3.0,New BSD,golang.org/x/sync,Approved -Go,golang.org/x/sys,v0.13.0,New BSD,golang.org/x/sys,Approved -Go,golang.org/x/term,v0.13.0,New BSD,golang.org/x/term,Approved -Go,golang.org/x/text,v0.13.0,New BSD,golang.org/x/text,Approved -Go,golang.org/x/time,v0.3.0,New BSD,golang.org/x/time,Approved +Go,golang.org/x/net,v0.18.0,New BSD,golang.org/x/net,Approved +Go,golang.org/x/oauth2,v0.14.0,New BSD,golang.org/x/oauth2,Approved +Go,golang.org/x/sync,v0.5.0,New BSD,golang.org/x/sync,Approved +Go,golang.org/x/sys,v0.14.0,New BSD,golang.org/x/sys,Approved +Go,golang.org/x/term,v0.14.0,New BSD,golang.org/x/term,Approved +Go,golang.org/x/text,v0.14.0,New BSD,golang.org/x/text,Approved +Go,golang.org/x/time,v0.4.0,New BSD,golang.org/x/time,Approved Go,golang.org/x/xerrors,v0.0.0-20220907171357-04be3eba64a2,New BSD,golang.org/x/xerrors,Approved Go,gonum.org/v1/gonum,v0.13.0,"MIT,New BSD",gonum.org/v1/gonum,Approved PNPM,google-auth-library,5.7.0,Apache 2.0,"",Approved PNPM,google-p12-pem,2.0.2,MIT,"",Approved -Go,google.golang.org/api,v0.132.0,New BSD,google.golang.org/api,Approved -Go,google.golang.org/appengine,v1.6.7,Apache 2.0,google.golang.org/appengine,Approved -Go,google.golang.org/genproto,v0.0.0-20230920204549-e6e6cdab5c13,Apache 2.0,google.golang.org/genproto,Approved -Go,google.golang.org/genproto/googleapis/api,v0.0.0-20230920204549-e6e6cdab5c13,Apache 2.0,google.golang.org/genproto/googleapis,Approved -Go,google.golang.org/genproto/googleapis/rpc,v0.0.0-20230920183334-c177e329c48b,Apache 2.0,google.golang.org/genproto/googleapis,Approved -Go,google.golang.org/grpc,v1.57.1,Apache 2.0,google.golang.org/grpc,Approved +Go,google.golang.org/api,v0.150.0,New BSD,google.golang.org/api,Approved +Go,google.golang.org/genproto,v0.0.0-20231030173426-d783a09b4405,Apache 2.0,google.golang.org/genproto,Approved +Go,google.golang.org/genproto/googleapis/api,v0.0.0-20231016165738-49dd2c1f3d0b,Apache 2.0,google.golang.org/genproto/googleapis,Approved +Go,google.golang.org/genproto/googleapis/rpc,v0.0.0-20231106174013-bbf56f31fb17,Apache 2.0,google.golang.org/genproto/googleapis,Approved +Go,google.golang.org/grpc,v1.59.0,Apache 2.0,google.golang.org/grpc,Approved Go,google.golang.org/protobuf,v1.31.0,New BSD,google.golang.org/protobuf,Approved PNPM,googleapis,47.0.0,Apache 2.0,"",Approved PNPM,googleapis-common,3.2.0,Apache 2.0,"",Approved @@ -1654,6 +1668,8 @@ Go,gopkg.in/square/go-jose.v2,v2.6.0,"Apache 2.0,New BSD",gopkg.in/square/go-jos Go,gopkg.in/warnings.v0,v0.1.2,Simplified BSD,gopkg.in/warnings.v0,Approved Go,gopkg.in/yaml.v2,v2.4.0,"Apache 2.0,MIT",gopkg.in/yaml.v2,Approved Go,gopkg.in/yaml.v3,v3.0.1,MIT,gopkg.in/yaml.v3,Approved +Go,gorm.io/driver/postgres,v1.5.4,MIT,gorm.io/driver/postgres,Approved +Go,gorm.io/gorm,v1.25.5,MIT,gorm.io/gorm,Approved PNPM,got,11.8.5,MIT,"",Approved PNPM,gql2ts,1.10.1,MIT,"",Approved PNPM,graceful-fs,4.2.11,ISC,"",Approved @@ -1944,7 +1960,7 @@ PNPM,lunr,2.3.9,MIT,"",Approved PNPM,luxon,3.2.1,MIT,"",Approved PNPM,lz-string,1.5.0,MIT,"",Approved PNPM,macos-release,2.3.0,MIT,"",Approved -PNPM,magic-string,0.30.5,MIT,"",Approved +PNPM,magic-string,0.27.0,MIT,"",Approved PNPM,make-dir,2.1.0,MIT,"",Approved PNPM,make-error,1.3.6,ISC,"",Approved PNPM,makeerror,1.0.12,New BSD,"",Approved @@ -2262,7 +2278,7 @@ PNPM,reflect.getprototypeof,1.0.4,MIT,"",Approved PNPM,refractor,3.6.0,MIT,"",Approved PNPM,regenerate,1.4.2,MIT,"",Approved PNPM,regenerate-unicode-properties,10.1.0,MIT,"",Approved -PNPM,regenerator-runtime,0.14.0,MIT,"",Approved +PNPM,regenerator-runtime,0.13.11,MIT,"",Approved PNPM,regenerator-transform,0.15.1,MIT,"",Approved PNPM,regexp-tree,0.1.27,MIT,"",Approved PNPM,regexp.prototype.flags,1.5.1,MIT,"",Approved @@ -2606,7 +2622,7 @@ PNPM,webcrypto-core,1.7.5,MIT,"",Approved PNPM,webext-additional-permissions,1.0.0,MIT,"",Approved PNPM,webext-domain-permission-toggle,1.0.1,MIT,"",Approved PNPM,webextension-polyfill,0.6.0,Mozilla Public License 2.0,"",Approved -PNPM,webidl-conversions,3.0.1,Simplified BSD,"",Approved +PNPM,webidl-conversions,7.0.0,Simplified BSD,"",Approved PNPM,webpack,5.88.2,MIT,"",Approved PNPM,webpack-sources,3.2.3,MIT,"",Approved PNPM,webpack-virtual-modules,0.5.0,MIT,"",Approved From 7ea0c8bd07ddabe8e2f2dfb19fb048488a8b5977 Mon Sep 17 00:00:00 2001 From: Julie Tibshirani <julietibs@apache.org> Date: Mon, 27 Nov 2023 03:03:56 -0800 Subject: [PATCH 168/222] Embeddings: fix low-hanging issues with scheduling job (#58510) As part of the embeddings policy framework, a worker periodically checks what repos can be embedded. For every candidate repo, it queries the DB to see if there's a new revision to embed. This runs every minute and becomes increasingly expensive as the jobs table fills up with more entries over time. This change makes small optimizations to improve this: * Add an index to make selecting on `repo_id` and `revision` much faster * Check the repos every 5 minutes instead of 1 minute. This shouldn't make a huge difference in user experience, since by default embeddings jobs aren't allowed to be scheduled within 24h of the last run --- cmd/worker/internal/embeddings/repo/scheduler.go | 2 +- .../core-concepts/embeddings/configure-embeddings.md | 2 +- internal/database/schema.json | 10 ++++++++++ internal/database/schema.md | 1 + .../1700613818_add_embeddings_jobs_index/down.sql | 1 + .../1700613818_add_embeddings_jobs_index/metadata.yaml | 2 ++ .../1700613818_add_embeddings_jobs_index/up.sql | 1 + migrations/frontend/squashed.sql | 2 ++ 8 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 migrations/frontend/1700613818_add_embeddings_jobs_index/down.sql create mode 100644 migrations/frontend/1700613818_add_embeddings_jobs_index/metadata.yaml create mode 100644 migrations/frontend/1700613818_add_embeddings_jobs_index/up.sql diff --git a/cmd/worker/internal/embeddings/repo/scheduler.go b/cmd/worker/internal/embeddings/repo/scheduler.go index 5475b091602a3..3ea54f1682224 100644 --- a/cmd/worker/internal/embeddings/repo/scheduler.go +++ b/cmd/worker/internal/embeddings/repo/scheduler.go @@ -83,6 +83,6 @@ func newRepoEmbeddingScheduler( enqueueActive, goroutine.WithName("repoEmbeddingSchedulerJob"), goroutine.WithDescription("resolves embedding policies and schedules jobs to embed repos"), - goroutine.WithInterval(1*time.Minute), + goroutine.WithInterval(5*time.Minute), ) } diff --git a/doc/cody/core-concepts/embeddings/configure-embeddings.md b/doc/cody/core-concepts/embeddings/configure-embeddings.md index ce70e9cfa1c39..469f9c62a096e 100644 --- a/doc/cody/core-concepts/embeddings/configure-embeddings.md +++ b/doc/cody/core-concepts/embeddings/configure-embeddings.md @@ -57,7 +57,7 @@ as embedding all repositories without discrimination can consume significant res ### Lifecycle of an embeddings policy -A worker process periodically checks the embeddings policies and resolves them into a list of repositories to index. +Every 5 minutes, a worker process checks the embeddings policies and resolves them into a list of repositories to index. Another worker then creates a new index job for each repository and queues it for processing. A repository cannot be queued for processing if: diff --git a/internal/database/schema.json b/internal/database/schema.json index 21fb4a3f37b2e..d8ea8f8267168 100644 --- a/internal/database/schema.json +++ b/internal/database/schema.json @@ -24528,6 +24528,16 @@ "IndexDefinition": "CREATE UNIQUE INDEX repo_embedding_jobs_pkey ON repo_embedding_jobs USING btree (id)", "ConstraintType": "p", "ConstraintDefinition": "PRIMARY KEY (id)" + }, + { + "Name": "repo_embedding_jobs_repo", + "IsPrimaryKey": false, + "IsUnique": false, + "IsExclusion": false, + "IsDeferrable": false, + "IndexDefinition": "CREATE INDEX repo_embedding_jobs_repo ON repo_embedding_jobs USING btree (repo_id, revision)", + "ConstraintType": "", + "ConstraintDefinition": "" } ], "Constraints": null, diff --git a/internal/database/schema.md b/internal/database/schema.md index 59a9ec84da86f..32e7e7e5ee984 100644 --- a/internal/database/schema.md +++ b/internal/database/schema.md @@ -3664,6 +3664,7 @@ Foreign-key constraints: revision | text | | not null | Indexes: "repo_embedding_jobs_pkey" PRIMARY KEY, btree (id) + "repo_embedding_jobs_repo" btree (repo_id, revision) Referenced by: TABLE "repo_embedding_job_stats" CONSTRAINT "repo_embedding_job_stats_job_id_fkey" FOREIGN KEY (job_id) REFERENCES repo_embedding_jobs(id) ON DELETE CASCADE DEFERRABLE diff --git a/migrations/frontend/1700613818_add_embeddings_jobs_index/down.sql b/migrations/frontend/1700613818_add_embeddings_jobs_index/down.sql new file mode 100644 index 0000000000000..05bf7ab825544 --- /dev/null +++ b/migrations/frontend/1700613818_add_embeddings_jobs_index/down.sql @@ -0,0 +1 @@ +DROP INDEX IF EXISTS repo_embedding_jobs_repo diff --git a/migrations/frontend/1700613818_add_embeddings_jobs_index/metadata.yaml b/migrations/frontend/1700613818_add_embeddings_jobs_index/metadata.yaml new file mode 100644 index 0000000000000..248305a2227d1 --- /dev/null +++ b/migrations/frontend/1700613818_add_embeddings_jobs_index/metadata.yaml @@ -0,0 +1,2 @@ +name: add_repo_embedding_jobs_index +parents: [1698836192] diff --git a/migrations/frontend/1700613818_add_embeddings_jobs_index/up.sql b/migrations/frontend/1700613818_add_embeddings_jobs_index/up.sql new file mode 100644 index 0000000000000..93cd21f6d19ac --- /dev/null +++ b/migrations/frontend/1700613818_add_embeddings_jobs_index/up.sql @@ -0,0 +1 @@ +CREATE INDEX IF NOT EXISTS repo_embedding_jobs_repo ON repo_embedding_jobs USING btree (repo_id, revision) diff --git a/migrations/frontend/squashed.sql b/migrations/frontend/squashed.sql index 78e5a3dcca96c..ebda64d47e328 100644 --- a/migrations/frontend/squashed.sql +++ b/migrations/frontend/squashed.sql @@ -6245,6 +6245,8 @@ CREATE INDEX repo_description_trgm_idx ON repo USING gin (lower(description) gin CREATE INDEX repo_dotcom_indexable_repos_idx ON repo USING btree (stars DESC NULLS LAST) INCLUDE (id, name) WHERE ((deleted_at IS NULL) AND (blocked IS NULL) AND (((stars >= 5) AND (NOT COALESCE(fork, false)) AND (NOT archived)) OR (lower((name)::text) ~ '^(src\.fedoraproject\.org|maven|npm|jdk)'::text))); +CREATE INDEX repo_embedding_jobs_repo ON repo_embedding_jobs USING btree (repo_id, revision); + CREATE UNIQUE INDEX repo_external_unique_idx ON repo USING btree (external_service_type, external_service_id, external_id); CREATE INDEX repo_fork ON repo USING btree (fork); From afc8577b6f7e45a904df38966473fb660807daa6 Mon Sep 17 00:00:00 2001 From: Greg Magolan <greg@aspect.dev> Date: Mon, 27 Nov 2023 04:58:01 -0800 Subject: [PATCH 169/222] build: add buildifier check to Aspect Workflows (#58566) * build: add buildifier check to Aspect Workflows * exclude squirrel/test_repos/starlark * buildifier --------- Co-authored-by: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> --- .aspect/workflows/config.yaml | 2 + BUILD.bazel | 24 +- WORKSPACE | 16 + client/shared/dev/BUILD.bazel | 2 +- client/web-sveltekit/BUILD.bazel | 2 - cmd/cody-gateway/shared/BUILD.bazel | 1 - cmd/embeddings/shared/assets.bzl | 1 - cmd/server/macro.bzl | 3 +- dev/defs.bzl | 3 +- dev/go_defs.bzl | 2 +- dev/linters/staticcheck/analyzers.bzl | 250 ++++++------- dev/linters/staticcheck/cmd/gen.go | 5 +- dev/migrations.bzl | 32 +- dev/oci_defs.bzl | 1 - dev/write_generated_to_source_files.bzl | 6 +- docker-images/codeinsights-db/BUILD.bazel | 3 +- docker-images/codeintel-db/BUILD.bazel | 3 +- docker-images/postgres-12-alpine/BUILD.bazel | 3 +- internal/api/internalapi/v1/BUILD.bazel | 1 - internal/completions/client/BUILD.bazel | 1 - internal/gitserver/v1/BUILD.bazel | 2 - internal/own/codeowners/v1/BUILD.bazel | 1 - internal/repoupdater/v1/BUILD.bazel | 1 - internal/searcher/v1/BUILD.bazel | 1 - internal/symbols/v1/BUILD.bazel | 1 - internal/telemetrygateway/v1/BUILD.bazel | 4 +- linter_deps.bzl | 362 +++++++++---------- migrations/BUILD.bazel | 1 - ui/assets/BUILD.bazel | 2 - 29 files changed, 374 insertions(+), 362 deletions(-) diff --git a/.aspect/workflows/config.yaml b/.aspect/workflows/config.yaml index 05f1c7c1c9384..54ccfae340f9c 100644 --- a/.aspect/workflows/config.yaml +++ b/.aspect/workflows/config.yaml @@ -12,6 +12,8 @@ env: REDIS_CACHE_ENDPOINT: ":6379" GIT_PAGER: '' tasks: + # Checks that BUILD files are formatted + buildifier: # Checks that BUILD file content is up-to-date with sources gazelle: target: //:configure diff --git a/BUILD.bazel b/BUILD.bazel index b5661737c3285..70ac840864a3f 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -9,8 +9,8 @@ load("@io_bazel_rules_go//proto/wkt:well_known_types.bzl", "WELL_KNOWN_TYPES_API load("@npm//:defs.bzl", "npm_link_all_packages") load("//dev/linters/staticcheck:analyzers.bzl", "STATIC_CHECK_ANALYZERS") load("@npm//:eslint/package_json.bzl", eslint_bin = "bin") -load("//:stamp_tags.bzl", "stamp_tags") load("//dev:eslint.bzl", "eslint_test_with_types") +load("@buildifier_prebuilt//:rules.bzl", "buildifier") # Gazelle config # @@ -180,6 +180,28 @@ eslint_test_with_types( ], ) +buildifier( + name = "buildifier", + exclude_patterns = [ + "./.git/*", + "cmd/symbols/squirrel/test_repos/starlark/**/*", + ], + # TODO: enable these lint checks + # lint_mode = "fix", + mode = "fix", +) + +buildifier( + name = "buildifier.check", + exclude_patterns = [ + "./.git/*", + "cmd/symbols/squirrel/test_repos/starlark/**/*", + ], + # TODO: enable these lint checks + # lint_mode = "warn", + mode = "diff", +) + # Go gazelle_binary( diff --git a/WORKSPACE b/WORKSPACE index 272b269d9aed0..e8259b10aac94 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -113,6 +113,13 @@ http_archive( urls = ["https://github.com/GoogleContainerTools/container-structure-test/archive/104a53ede5f78fff72172639781ac52df9f5b18f.zip"], ) +http_archive( + name = "buildifier_prebuilt", + sha256 = "e46c16180bc49487bfd0f1ffa7345364718c57334fa0b5b67cb5f27eba10f309", + strip_prefix = "buildifier-prebuilt-6.1.0", + urls = ["https://github.com/keith/buildifier-prebuilt/archive/6.1.0.tar.gz"], +) + # hermetic_cc_toolchain setup ================================ HERMETIC_CC_TOOLCHAIN_VERSION = "v2.1.2" @@ -395,3 +402,12 @@ tool_deps() load("//tools/release:schema_deps.bzl", "schema_deps") schema_deps() + +# Buildifier +load("@buildifier_prebuilt//:deps.bzl", "buildifier_prebuilt_deps") + +buildifier_prebuilt_deps() + +load("@buildifier_prebuilt//:defs.bzl", "buildifier_prebuilt_register_toolchains") + +buildifier_prebuilt_register_toolchains() diff --git a/client/shared/dev/BUILD.bazel b/client/shared/dev/BUILD.bazel index c61a25b08656e..c7ea16f4212f8 100644 --- a/client/shared/dev/BUILD.bazel +++ b/client/shared/dev/BUILD.bazel @@ -1,5 +1,5 @@ load("@aspect_rules_js//js:defs.bzl", "js_binary", "js_library") -load("//dev:defs.bzl", "ts_binary", "ts_project") +load("//dev:defs.bzl", "ts_binary") # gazelle:ignore diff --git a/client/web-sveltekit/BUILD.bazel b/client/web-sveltekit/BUILD.bazel index 2a6234f908f5d..b02cf418394a3 100644 --- a/client/web-sveltekit/BUILD.bazel +++ b/client/web-sveltekit/BUILD.bazel @@ -2,9 +2,7 @@ load("@bazel_skylib//rules:build_test.bzl", "build_test") load("//client/shared/dev:generate_graphql_operations.bzl", "generate_graphql_operations") load("@aspect_rules_js//js:defs.bzl", "js_library") load("@npm//:defs.bzl", "npm_link_all_packages") -load("@aspect_rules_js//js:defs.bzl", "js_run_binary", "js_run_devserver") load("@npm//:vite/package_json.bzl", vite_bin = "bin") -load("@aspect_rules_ts//ts:defs.bzl", "ts_config") # gazelle:ignore diff --git a/cmd/cody-gateway/shared/BUILD.bazel b/cmd/cody-gateway/shared/BUILD.bazel index 867c2f51ebc0d..c9d80750534be 100644 --- a/cmd/cody-gateway/shared/BUILD.bazel +++ b/cmd/cody-gateway/shared/BUILD.bazel @@ -1,4 +1,3 @@ -load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( diff --git a/cmd/embeddings/shared/assets.bzl b/cmd/embeddings/shared/assets.bzl index 9fef3521ee81d..b6552f588c073 100644 --- a/cmd/embeddings/shared/assets.bzl +++ b/cmd/embeddings/shared/assets.bzl @@ -12,4 +12,3 @@ def embbedings_assets_deps(): url = "https://storage.googleapis.com/buildkite_public_assets/query_embeddings.gob", sha256 = "48e816d9ad033d2661a5c2999232ceccb430427ed4ce6330824f7c123db05a03", ) - diff --git a/cmd/server/macro.bzl b/cmd/server/macro.bzl index cd7373e0471af..553979c7258a1 100644 --- a/cmd/server/macro.bzl +++ b/cmd/server/macro.bzl @@ -17,7 +17,7 @@ def container_dependencies(targets): pkg_tar( name = "tar_{}".format(name), srcs = [target], - remap_paths = { "/{}".format(name): "/usr/local/bin/{}".format(name) } + remap_paths = {"/{}".format(name): "/usr/local/bin/{}".format(name)}, ) def dependencies_tars(targets): @@ -27,4 +27,3 @@ def dependencies_tars(targets): tars.append(":tar_{}".format(name)) return tars - diff --git a/dev/defs.bzl b/dev/defs.bzl index 4c77a7dfe95fa..69633aa58d712 100644 --- a/dev/defs.bzl +++ b/dev/defs.bzl @@ -3,10 +3,9 @@ load("@aspect_rules_swc//swc:defs.bzl", "swc") load("@bazel_skylib//lib:partial.bzl", "partial") load("@bazel_skylib//rules:expand_template.bzl", "expand_template") -load("@aspect_rules_js//js:defs.bzl", "js_library") +load("@aspect_rules_js//js:defs.bzl", "js_binary", "js_library") load("@aspect_rules_js//npm:defs.bzl", _npm_package = "npm_package") load("@aspect_rules_ts//ts:defs.bzl", _ts_project = "ts_project") -load("@aspect_rules_js//js:defs.bzl", "js_binary") load("//dev:eslint.bzl", "eslint_test_with_types", "get_client_package_path") load("@npm//:vitest/package_json.bzl", vitest_bin = "bin") load(":sass.bzl", _sass = "sass") diff --git a/dev/go_defs.bzl b/dev/go_defs.bzl index c0fa734332bcc..af2d6c1b73b13 100644 --- a/dev/go_defs.bzl +++ b/dev/go_defs.bzl @@ -1,4 +1,4 @@ -load("@io_bazel_rules_go//go:def.bzl", _go_test="go_test") +load("@io_bazel_rules_go//go:def.bzl", _go_test = "go_test") def go_test(**kwargs): # All go tests have their timeout set to short by default, unless specified otherwise. diff --git a/dev/linters/staticcheck/analyzers.bzl b/dev/linters/staticcheck/analyzers.bzl index b4972b731efb8..d038d34156d6a 100644 --- a/dev/linters/staticcheck/analyzers.bzl +++ b/dev/linters/staticcheck/analyzers.bzl @@ -4,129 +4,129 @@ # and re-run go generate STATIC_CHECK_ANALYZERS = [ - "//dev/linters/staticcheck:S1000", - "//dev/linters/staticcheck:S1001", - "//dev/linters/staticcheck:S1002", - "//dev/linters/staticcheck:S1003", - "//dev/linters/staticcheck:S1004", - "//dev/linters/staticcheck:S1005", - "//dev/linters/staticcheck:S1006", - "//dev/linters/staticcheck:S1007", - "//dev/linters/staticcheck:S1008", - "//dev/linters/staticcheck:S1009", - "//dev/linters/staticcheck:S1010", - "//dev/linters/staticcheck:S1011", - "//dev/linters/staticcheck:S1012", - "//dev/linters/staticcheck:S1016", - "//dev/linters/staticcheck:S1017", - "//dev/linters/staticcheck:S1018", - "//dev/linters/staticcheck:S1019", - "//dev/linters/staticcheck:S1020", - "//dev/linters/staticcheck:S1021", - "//dev/linters/staticcheck:S1023", - "//dev/linters/staticcheck:S1024", - "//dev/linters/staticcheck:S1025", - "//dev/linters/staticcheck:S1028", - "//dev/linters/staticcheck:S1029", - "//dev/linters/staticcheck:S1030", - "//dev/linters/staticcheck:S1031", - "//dev/linters/staticcheck:S1032", - "//dev/linters/staticcheck:S1033", - "//dev/linters/staticcheck:S1034", - "//dev/linters/staticcheck:S1035", - "//dev/linters/staticcheck:S1036", - "//dev/linters/staticcheck:S1037", - "//dev/linters/staticcheck:S1038", - "//dev/linters/staticcheck:S1039", - "//dev/linters/staticcheck:S1040", - "//dev/linters/staticcheck:SA1000", - "//dev/linters/staticcheck:SA1001", - "//dev/linters/staticcheck:SA1002", - "//dev/linters/staticcheck:SA1003", - "//dev/linters/staticcheck:SA1004", - "//dev/linters/staticcheck:SA1005", - "//dev/linters/staticcheck:SA1006", - "//dev/linters/staticcheck:SA1007", - "//dev/linters/staticcheck:SA1008", - "//dev/linters/staticcheck:SA1010", - "//dev/linters/staticcheck:SA1011", - "//dev/linters/staticcheck:SA1012", - "//dev/linters/staticcheck:SA1013", - "//dev/linters/staticcheck:SA1014", - "//dev/linters/staticcheck:SA1015", - "//dev/linters/staticcheck:SA1016", - "//dev/linters/staticcheck:SA1017", - "//dev/linters/staticcheck:SA1018", - "//dev/linters/staticcheck:SA1019", - "//dev/linters/staticcheck:SA1020", - "//dev/linters/staticcheck:SA1021", - "//dev/linters/staticcheck:SA1023", - "//dev/linters/staticcheck:SA1024", - "//dev/linters/staticcheck:SA1025", - "//dev/linters/staticcheck:SA1026", - "//dev/linters/staticcheck:SA1027", - "//dev/linters/staticcheck:SA1028", - "//dev/linters/staticcheck:SA1029", - "//dev/linters/staticcheck:SA1030", - "//dev/linters/staticcheck:SA2000", - "//dev/linters/staticcheck:SA2001", - "//dev/linters/staticcheck:SA2002", - "//dev/linters/staticcheck:SA2003", - "//dev/linters/staticcheck:SA3000", - "//dev/linters/staticcheck:SA3001", - "//dev/linters/staticcheck:SA4000", - "//dev/linters/staticcheck:SA4001", - "//dev/linters/staticcheck:SA4003", - "//dev/linters/staticcheck:SA4004", - "//dev/linters/staticcheck:SA4005", - "//dev/linters/staticcheck:SA4006", - "//dev/linters/staticcheck:SA4008", - "//dev/linters/staticcheck:SA4009", - "//dev/linters/staticcheck:SA4010", - "//dev/linters/staticcheck:SA4011", - "//dev/linters/staticcheck:SA4012", - "//dev/linters/staticcheck:SA4013", - "//dev/linters/staticcheck:SA4014", - "//dev/linters/staticcheck:SA4015", - "//dev/linters/staticcheck:SA4016", - "//dev/linters/staticcheck:SA4017", - "//dev/linters/staticcheck:SA4018", - "//dev/linters/staticcheck:SA4019", - "//dev/linters/staticcheck:SA4020", - "//dev/linters/staticcheck:SA4021", - "//dev/linters/staticcheck:SA4022", - "//dev/linters/staticcheck:SA4023", - "//dev/linters/staticcheck:SA4024", - "//dev/linters/staticcheck:SA4025", - "//dev/linters/staticcheck:SA4026", - "//dev/linters/staticcheck:SA4027", - "//dev/linters/staticcheck:SA4028", - "//dev/linters/staticcheck:SA4029", - "//dev/linters/staticcheck:SA4030", - "//dev/linters/staticcheck:SA4031", - "//dev/linters/staticcheck:SA5000", - "//dev/linters/staticcheck:SA5001", - "//dev/linters/staticcheck:SA5002", - "//dev/linters/staticcheck:SA5003", - "//dev/linters/staticcheck:SA5004", - "//dev/linters/staticcheck:SA5005", - "//dev/linters/staticcheck:SA5007", - "//dev/linters/staticcheck:SA5008", - "//dev/linters/staticcheck:SA5009", - "//dev/linters/staticcheck:SA5010", - "//dev/linters/staticcheck:SA5011", - "//dev/linters/staticcheck:SA5012", - "//dev/linters/staticcheck:SA6000", - "//dev/linters/staticcheck:SA6001", - "//dev/linters/staticcheck:SA6002", - "//dev/linters/staticcheck:SA6003", - "//dev/linters/staticcheck:SA6005", - "//dev/linters/staticcheck:SA9001", - "//dev/linters/staticcheck:SA9002", - "//dev/linters/staticcheck:SA9003", - "//dev/linters/staticcheck:SA9004", - "//dev/linters/staticcheck:SA9005", - "//dev/linters/staticcheck:SA9006", - "//dev/linters/staticcheck:SA9007", - "//dev/linters/staticcheck:SA9008", + "//dev/linters/staticcheck:S1000", + "//dev/linters/staticcheck:S1001", + "//dev/linters/staticcheck:S1002", + "//dev/linters/staticcheck:S1003", + "//dev/linters/staticcheck:S1004", + "//dev/linters/staticcheck:S1005", + "//dev/linters/staticcheck:S1006", + "//dev/linters/staticcheck:S1007", + "//dev/linters/staticcheck:S1008", + "//dev/linters/staticcheck:S1009", + "//dev/linters/staticcheck:S1010", + "//dev/linters/staticcheck:S1011", + "//dev/linters/staticcheck:S1012", + "//dev/linters/staticcheck:S1016", + "//dev/linters/staticcheck:S1017", + "//dev/linters/staticcheck:S1018", + "//dev/linters/staticcheck:S1019", + "//dev/linters/staticcheck:S1020", + "//dev/linters/staticcheck:S1021", + "//dev/linters/staticcheck:S1023", + "//dev/linters/staticcheck:S1024", + "//dev/linters/staticcheck:S1025", + "//dev/linters/staticcheck:S1028", + "//dev/linters/staticcheck:S1029", + "//dev/linters/staticcheck:S1030", + "//dev/linters/staticcheck:S1031", + "//dev/linters/staticcheck:S1032", + "//dev/linters/staticcheck:S1033", + "//dev/linters/staticcheck:S1034", + "//dev/linters/staticcheck:S1035", + "//dev/linters/staticcheck:S1036", + "//dev/linters/staticcheck:S1037", + "//dev/linters/staticcheck:S1038", + "//dev/linters/staticcheck:S1039", + "//dev/linters/staticcheck:S1040", + "//dev/linters/staticcheck:SA1000", + "//dev/linters/staticcheck:SA1001", + "//dev/linters/staticcheck:SA1002", + "//dev/linters/staticcheck:SA1003", + "//dev/linters/staticcheck:SA1004", + "//dev/linters/staticcheck:SA1005", + "//dev/linters/staticcheck:SA1006", + "//dev/linters/staticcheck:SA1007", + "//dev/linters/staticcheck:SA1008", + "//dev/linters/staticcheck:SA1010", + "//dev/linters/staticcheck:SA1011", + "//dev/linters/staticcheck:SA1012", + "//dev/linters/staticcheck:SA1013", + "//dev/linters/staticcheck:SA1014", + "//dev/linters/staticcheck:SA1015", + "//dev/linters/staticcheck:SA1016", + "//dev/linters/staticcheck:SA1017", + "//dev/linters/staticcheck:SA1018", + "//dev/linters/staticcheck:SA1019", + "//dev/linters/staticcheck:SA1020", + "//dev/linters/staticcheck:SA1021", + "//dev/linters/staticcheck:SA1023", + "//dev/linters/staticcheck:SA1024", + "//dev/linters/staticcheck:SA1025", + "//dev/linters/staticcheck:SA1026", + "//dev/linters/staticcheck:SA1027", + "//dev/linters/staticcheck:SA1028", + "//dev/linters/staticcheck:SA1029", + "//dev/linters/staticcheck:SA1030", + "//dev/linters/staticcheck:SA2000", + "//dev/linters/staticcheck:SA2001", + "//dev/linters/staticcheck:SA2002", + "//dev/linters/staticcheck:SA2003", + "//dev/linters/staticcheck:SA3000", + "//dev/linters/staticcheck:SA3001", + "//dev/linters/staticcheck:SA4000", + "//dev/linters/staticcheck:SA4001", + "//dev/linters/staticcheck:SA4003", + "//dev/linters/staticcheck:SA4004", + "//dev/linters/staticcheck:SA4005", + "//dev/linters/staticcheck:SA4006", + "//dev/linters/staticcheck:SA4008", + "//dev/linters/staticcheck:SA4009", + "//dev/linters/staticcheck:SA4010", + "//dev/linters/staticcheck:SA4011", + "//dev/linters/staticcheck:SA4012", + "//dev/linters/staticcheck:SA4013", + "//dev/linters/staticcheck:SA4014", + "//dev/linters/staticcheck:SA4015", + "//dev/linters/staticcheck:SA4016", + "//dev/linters/staticcheck:SA4017", + "//dev/linters/staticcheck:SA4018", + "//dev/linters/staticcheck:SA4019", + "//dev/linters/staticcheck:SA4020", + "//dev/linters/staticcheck:SA4021", + "//dev/linters/staticcheck:SA4022", + "//dev/linters/staticcheck:SA4023", + "//dev/linters/staticcheck:SA4024", + "//dev/linters/staticcheck:SA4025", + "//dev/linters/staticcheck:SA4026", + "//dev/linters/staticcheck:SA4027", + "//dev/linters/staticcheck:SA4028", + "//dev/linters/staticcheck:SA4029", + "//dev/linters/staticcheck:SA4030", + "//dev/linters/staticcheck:SA4031", + "//dev/linters/staticcheck:SA5000", + "//dev/linters/staticcheck:SA5001", + "//dev/linters/staticcheck:SA5002", + "//dev/linters/staticcheck:SA5003", + "//dev/linters/staticcheck:SA5004", + "//dev/linters/staticcheck:SA5005", + "//dev/linters/staticcheck:SA5007", + "//dev/linters/staticcheck:SA5008", + "//dev/linters/staticcheck:SA5009", + "//dev/linters/staticcheck:SA5010", + "//dev/linters/staticcheck:SA5011", + "//dev/linters/staticcheck:SA5012", + "//dev/linters/staticcheck:SA6000", + "//dev/linters/staticcheck:SA6001", + "//dev/linters/staticcheck:SA6002", + "//dev/linters/staticcheck:SA6003", + "//dev/linters/staticcheck:SA6005", + "//dev/linters/staticcheck:SA9001", + "//dev/linters/staticcheck:SA9002", + "//dev/linters/staticcheck:SA9003", + "//dev/linters/staticcheck:SA9004", + "//dev/linters/staticcheck:SA9005", + "//dev/linters/staticcheck:SA9006", + "//dev/linters/staticcheck:SA9007", + "//dev/linters/staticcheck:SA9008", ] diff --git a/dev/linters/staticcheck/cmd/gen.go b/dev/linters/staticcheck/cmd/gen.go index fd2f3b57f0fa2..f510792d26db1 100644 --- a/dev/linters/staticcheck/cmd/gen.go +++ b/dev/linters/staticcheck/cmd/gen.go @@ -7,8 +7,9 @@ import ( "strings" "text/template" - "github.com/sourcegraph/sourcegraph/dev/linters/staticcheck" "honnef.co/go/tools/analysis/lint" + + "github.com/sourcegraph/sourcegraph/dev/linters/staticcheck" ) var ignoredAnalyzer = map[string]string{ @@ -62,7 +63,7 @@ var BazelDefTemplate = `# DO NOT EDIT - this file was generated by running go ge STATIC_CHECK_ANALYZERS = [ {{- range .Analyzers}} - "//dev/linters/staticcheck:{{.Analyzer.Name}}", + "//dev/linters/staticcheck:{{.Analyzer.Name}}", {{- end}} ] ` diff --git a/dev/migrations.bzl b/dev/migrations.bzl index 7f0d08d991d49..4dcc3af668b86 100644 --- a/dev/migrations.bzl +++ b/dev/migrations.bzl @@ -92,7 +92,7 @@ def _generate_schemas_impl(ctx): out_codeintel_schema_md = ctx.outputs.out_codeintel_schema_md.path, out_codeinsights_schema_md = ctx.outputs.out_codeinsights_schema_md.path, ), - tools = ctx.attr._sg[DefaultInfo].default_runfiles.files + tools = ctx.attr._sg[DefaultInfo].default_runfiles.files, ) return [ @@ -107,40 +107,36 @@ def _generate_schemas_impl(ctx): ctx.outputs.out_frontend_schema_md, ctx.outputs.out_codeintel_schema_md, ctx.outputs.out_codeinsights_schema_md, - ]) + ]), ), OutputGroupInfo( - frontend_squash = depset([ctx.outputs.out_frontend_squash]), - codeintel_squash = depset([ctx.outputs.out_codeintel_squash]), - codeinsights_squash = depset([ctx.outputs.out_codeinsights_squash]), - schemas = depset([ - ctx.outputs.out_frontend_schema, - ctx.outputs.out_codeintel_schema, - ctx.outputs.out_codeinsights_schema, - ctx.outputs.out_frontend_schema_md, - ctx.outputs.out_codeintel_schema_md, - ctx.outputs.out_codeinsights_schema_md, - ]) + frontend_squash = depset([ctx.outputs.out_frontend_squash]), + codeintel_squash = depset([ctx.outputs.out_codeintel_squash]), + codeinsights_squash = depset([ctx.outputs.out_codeinsights_squash]), + schemas = depset([ + ctx.outputs.out_frontend_schema, + ctx.outputs.out_codeintel_schema, + ctx.outputs.out_codeinsights_schema, + ctx.outputs.out_frontend_schema_md, + ctx.outputs.out_codeintel_schema_md, + ctx.outputs.out_codeinsights_schema_md, + ]), ), ] generate_schemas = rule( implementation = _generate_schemas_impl, attrs = { - "srcs": attr.label_list(allow_files= True, mandatory= True), - + "srcs": attr.label_list(allow_files = True, mandatory = True), "out_frontend_squash": attr.output(mandatory = True), "out_codeintel_squash": attr.output(mandatory = True), "out_codeinsights_squash": attr.output(mandatory = True), - "out_frontend_schema": attr.output(mandatory = True), "out_codeintel_schema": attr.output(mandatory = True), "out_codeinsights_schema": attr.output(mandatory = True), - "out_frontend_schema_md": attr.output(mandatory = True), "out_codeintel_schema_md": attr.output(mandatory = True), "out_codeinsights_schema_md": attr.output(mandatory = True), - "_sg": attr.label(executable = True, default = "//dev/sg:sg", cfg = "exec"), }, ) diff --git a/dev/oci_defs.bzl b/dev/oci_defs.bzl index 544f1e7bbfd73..9424ac947bdf9 100644 --- a/dev/oci_defs.bzl +++ b/dev/oci_defs.bzl @@ -3,4 +3,3 @@ REGISTRY_REPOSITORY_PREFIX = "europe-west1-docker.pkg.dev/sourcegraph-security-l def image_repository(image): return REGISTRY_REPOSITORY_PREFIX.format(image) - diff --git a/dev/write_generated_to_source_files.bzl b/dev/write_generated_to_source_files.bzl index 76a5babb30d4f..94b6e81aa55c2 100644 --- a/dev/write_generated_to_source_files.bzl +++ b/dev/write_generated_to_source_files.bzl @@ -1,10 +1,8 @@ load("@aspect_bazel_lib//lib:directory_path.bzl", "make_directory_path") load("@aspect_bazel_lib//lib:copy_to_directory.bzl", "copy_to_directory") load("@aspect_bazel_lib//lib:write_source_files.bzl", "write_source_files") -load("@aspect_bazel_lib//lib:utils.bzl", "file_exists") -load("@bazel_skylib//lib:paths.bzl", "paths") -def write_generated_to_source_files(name, target, output_files, verbose_copy=False, **kwargs): +def write_generated_to_source_files(name, target, output_files, verbose_copy = False, **kwargs): for dest, orig in output_files.items(): if dest == orig: fail("{} and {} must differ so we can detect source files needing to be regenerated".format(dest, orig)) @@ -29,5 +27,5 @@ def write_generated_to_source_files(name, target, output_files, verbose_copy=Fal }, suggested_update_target = "//dev:write_all_generated", visibility = ["//visibility:public"], - **kwargs, + **kwargs ) diff --git a/docker-images/codeinsights-db/BUILD.bazel b/docker-images/codeinsights-db/BUILD.bazel index bc5f700cbc344..c91c1dc379a8b 100644 --- a/docker-images/codeinsights-db/BUILD.bazel +++ b/docker-images/codeinsights-db/BUILD.bazel @@ -1,7 +1,6 @@ -load("@rules_oci//oci:defs.bzl", "oci_image", "oci_push", "oci_tarball") +load("@rules_oci//oci:defs.bzl", "oci_image", "oci_tarball") load("@container_structure_test//:defs.bzl", "container_structure_test") load("@rules_pkg//:pkg.bzl", "pkg_tar") -load("//dev:oci_defs.bzl", "image_repository") filegroup( name = "config", diff --git a/docker-images/codeintel-db/BUILD.bazel b/docker-images/codeintel-db/BUILD.bazel index 550182917857d..3c650906f773b 100644 --- a/docker-images/codeintel-db/BUILD.bazel +++ b/docker-images/codeintel-db/BUILD.bazel @@ -1,6 +1,5 @@ -load("@rules_oci//oci:defs.bzl", "oci_image", "oci_push", "oci_tarball") +load("@rules_oci//oci:defs.bzl", "oci_image", "oci_tarball") load("@container_structure_test//:defs.bzl", "container_structure_test") -load("//dev:oci_defs.bzl", "image_repository") oci_image( name = "image", diff --git a/docker-images/postgres-12-alpine/BUILD.bazel b/docker-images/postgres-12-alpine/BUILD.bazel index 7031aad82df9a..30ae27fd702af 100644 --- a/docker-images/postgres-12-alpine/BUILD.bazel +++ b/docker-images/postgres-12-alpine/BUILD.bazel @@ -1,7 +1,6 @@ -load("@rules_oci//oci:defs.bzl", "oci_image", "oci_push", "oci_tarball") +load("@rules_oci//oci:defs.bzl", "oci_image", "oci_tarball") load("@rules_pkg//:pkg.bzl", "pkg_tar") load("@container_structure_test//:defs.bzl", "container_structure_test") -load("//dev:oci_defs.bzl", "image_repository") filegroup( name = "config", diff --git a/internal/api/internalapi/v1/BUILD.bazel b/internal/api/internalapi/v1/BUILD.bazel index befdd6dc6c678..93f28f292228d 100644 --- a/internal/api/internalapi/v1/BUILD.bazel +++ b/internal/api/internalapi/v1/BUILD.bazel @@ -1,7 +1,6 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") load("@rules_proto//proto:defs.bzl", "proto_library") -load("//dev:proto.bzl", "write_proto_stubs_to_source") exports_files(["buf.gen.yaml"]) diff --git a/internal/completions/client/BUILD.bazel b/internal/completions/client/BUILD.bazel index 5735358e118f8..59b32f3e5d5c5 100644 --- a/internal/completions/client/BUILD.bazel +++ b/internal/completions/client/BUILD.bazel @@ -1,4 +1,3 @@ -load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( diff --git a/internal/gitserver/v1/BUILD.bazel b/internal/gitserver/v1/BUILD.bazel index aa4727f7dfea3..20f8c5309b535 100644 --- a/internal/gitserver/v1/BUILD.bazel +++ b/internal/gitserver/v1/BUILD.bazel @@ -1,9 +1,7 @@ -load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") load("@rules_buf//buf:defs.bzl", "buf_lint_test") load("@rules_proto//proto:defs.bzl", "proto_library") -load("//dev:proto.bzl", "write_proto_stubs_to_source") proto_library( name = "v1_proto", diff --git a/internal/own/codeowners/v1/BUILD.bazel b/internal/own/codeowners/v1/BUILD.bazel index 5b3358f5e39ed..35829febce0c2 100644 --- a/internal/own/codeowners/v1/BUILD.bazel +++ b/internal/own/codeowners/v1/BUILD.bazel @@ -2,7 +2,6 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") load("@rules_buf//buf:defs.bzl", "buf_lint_test") load("@rules_proto//proto:defs.bzl", "proto_library") -load("//dev:proto.bzl", "write_proto_stubs_to_source") exports_files(["buf.gen.yaml"]) diff --git a/internal/repoupdater/v1/BUILD.bazel b/internal/repoupdater/v1/BUILD.bazel index 446adde8a3633..94fa9ad5abeb7 100644 --- a/internal/repoupdater/v1/BUILD.bazel +++ b/internal/repoupdater/v1/BUILD.bazel @@ -2,7 +2,6 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") load("@rules_buf//buf:defs.bzl", "buf_lint_test") load("@rules_proto//proto:defs.bzl", "proto_library") -load("//dev:proto.bzl", "write_proto_stubs_to_source") proto_library( name = "v1_proto", diff --git a/internal/searcher/v1/BUILD.bazel b/internal/searcher/v1/BUILD.bazel index 0439865b9d042..db9c33da5050c 100644 --- a/internal/searcher/v1/BUILD.bazel +++ b/internal/searcher/v1/BUILD.bazel @@ -2,7 +2,6 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") load("@rules_buf//buf:defs.bzl", "buf_lint_test") load("@rules_proto//proto:defs.bzl", "proto_library") -load("//dev:proto.bzl", "write_proto_stubs_to_source") exports_files(["buf.gen.yaml"]) diff --git a/internal/symbols/v1/BUILD.bazel b/internal/symbols/v1/BUILD.bazel index 6e5c6b84ba562..a4b2d91c596ca 100644 --- a/internal/symbols/v1/BUILD.bazel +++ b/internal/symbols/v1/BUILD.bazel @@ -3,7 +3,6 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") load("@rules_buf//buf:defs.bzl", "buf_lint_test") load("@rules_proto//proto:defs.bzl", "proto_library") -load("//dev:proto.bzl", "write_proto_stubs_to_source") exports_files(["buf.gen.yaml"]) diff --git a/internal/telemetrygateway/v1/BUILD.bazel b/internal/telemetrygateway/v1/BUILD.bazel index dffb80c8ffd5d..5ae6b2f665087 100644 --- a/internal/telemetrygateway/v1/BUILD.bazel +++ b/internal/telemetrygateway/v1/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") load("@rules_buf//buf:defs.bzl", "buf_lint_test") load("@rules_proto//proto:defs.bzl", "proto_library") -load("//dev:proto.bzl", "write_proto_stubs_to_source") +load("@rules_proto_grpc//doc:defs.bzl", "doc_template_compile") proto_library( name = "v1_proto", @@ -102,8 +102,6 @@ go_test( ], ) -load("@rules_proto_grpc//doc:defs.bzl", "doc_template_compile") - doc_template_compile( name = "protocol.md", protos = [":v1_proto"], diff --git a/linter_deps.bzl b/linter_deps.bzl index 33459d31c1763..0c7a8f0186b75 100644 --- a/linter_deps.bzl +++ b/linter_deps.bzl @@ -1,184 +1,184 @@ load("@bazel_gazelle//:deps.bzl", "go_repository") def linter_dependencies(): - go_repository( - name = "com_github_timakin_bodyclose", - build_file_proto_mode = "disable_global", - importpath = "github.com/timakin/bodyclose", - sum = "h1:ig99OeTyDwQWhPe2iw9lwfQVF1KB3Q4fpP3X7/2VBG8=", - version = "v0.0.0-20200424151742-cb6215831a94", - ) - - go_repository( - name = "com_github_ashanbrown_forbidigo", - build_file_proto_mode = "disable_global", - importpath = "github.com/ashanbrown/forbidigo", - sum = "h1:WXhzLjOlnuDYPYQo/eFlcFMi8X/kLfvWLYu6CSoebis=", - version = "v1.5.1", - ) - - go_repository( - name = "com_github_gostaticanalysis_analysisutil", - build_file_proto_mode = "disable_global", - importpath = "github.com/gostaticanalysis/analysisutil", - version = "v0.7.1", - sum = "h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk=", - ) - - go_repository( - name = "com_github_gostaticanalysis_comment", - build_file_proto_mode = "disable_global", - importpath = "github.com/gostaticanalysis/comment", - version = "v1.4.2", - sum = "h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q=", - ) - - go_repository( - name = "com_github_gordonklaus_ineffassign", - build_file_proto_mode = "disable_global", - importpath = "github.com/gordonklaus/ineffassign", - version = "v0.0.0-20230107090616-13ace0543b28", - sum = "h1:9alfqbrhuD+9fLZ4iaAVwhlp5PEhmnBt7yvK2Oy5C1U=", - ) - - go_repository( - name = "com_github_go_critic_go_critic", - build_file_proto_mode = "disable_global", - importpath = "github.com/go-critic/go-critic", - version = "v0.6.7", - sum = "h1:1evPrElnLQ2LZtJfmNDzlieDhjnq36SLgNzisx06oPM=", - ) - - go_repository( - name = "com_github_go_toolsmith_astcast", - build_file_proto_mode = "disable_global", - importpath = "github.com/go-toolsmith/astcast", - version = "v1.1.0", - sum = "h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8=", - ) - - go_repository( - name = "com_github_go_toolsmith_astcopy", - build_file_proto_mode = "disable_global", - importpath = "github.com/go-toolsmith/astcopy", - version = "v1.0.2", - sum = "h1:YnWf5Rnh1hUudj11kei53kI57quN/VH6Hp1n+erozn0=", - ) - - go_repository( - name = "com_github_go_toolsmith_astequal", - build_file_proto_mode = "disable_global", - importpath = "github.com/go-toolsmith/astequal", - version = "v1.1.0", - sum = "h1:kHKm1AWqClYn15R0K1KKE4RG614D46n+nqUQ06E1dTw=", - ) - - go_repository( - name = "com_github_go_toolsmith_astfmt", - build_file_proto_mode = "disable_global", - importpath = "github.com/go-toolsmith/astfmt", - version = "v1.1.0", - sum = "h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco=", - ) - - go_repository( - name = "com_github_go_toolsmith_astp", - build_file_proto_mode = "disable_global", - importpath = "github.com/go-toolsmith/astp", - version = "v1.1.0", - sum = "h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA=", - ) - - go_repository( - name = "com_github_go_toolsmith_pkgload", - build_file_proto_mode = "disable_global", - importpath = "github.com/go-toolsmith/pkgload", - version = "v1.0.2-0.20220101231613-e814995d17c5", - sum = "h1:eD9POs68PHkwrx7hAB78z1cb6PfGq/jyWn3wJywsH1o=", - ) - - go_repository( - name = "com_github_go_toolsmith_strparse", - build_file_proto_mode = "disable_global", - importpath = "github.com/go-toolsmith/strparse", - version = "v1.1.0", - sum = "h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw=", - ) - - go_repository( - name = "com_github_go_toolsmith_typep", - build_file_proto_mode = "disable_global", - importpath = "github.com/go-toolsmith/typep", - version = "v1.1.0", - sum = "h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus=", - ) - - go_repository( - name = "com_github_quasilyte_go_ruleguard", - importpath = "github.com/quasilyte/go-ruleguard", - version = "v0.3.19", - sum = "h1:tfMnabXle/HzOb5Xe9CUZYWXKfkS1KwRmZyPmD9nVcc=", - ) - - go_repository( - name = "com_github_quasilyte_gogrep", - importpath = "github.com/quasilyte/gogrep", - version = "v0.5.0", - sum = "h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo=", - ) - - go_repository( - name = "com_github_quasilyte_regex_syntax", - importpath = "github.com/quasilyte/regex/syntax", - version = "v0.0.0-20200407221936-30656e2c4a95", - sum = "h1:L8QM9bvf68pVdQ3bCFZMDmnt9yqcMBro1pC7F+IPYMY=", - ) - - go_repository( - name = "com_github_quasilyte_stdinfo", - importpath = "github.com/quasilyte/stdinfo", - version = "v0.0.0-20220114132959-f7386bf02567", - sum = "h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs=", - ) - - go_repository( - name = "org_golang_x_exp_typeparams", - importpath = "golang.org/x/exp/typeparams", - version = "v0.0.0-20230203172020-98cc5a0785f9", - sum = "h1:6WHiuFL9FNjg8RljAaT7FNUuKDbvMqS1i5cr2OE2sLQ=", - ) - - go_repository( - name = "com_github_kyoh86_exportloopref", - importpath = "github.com/kyoh86/exportloopref", - version = "v0.1.11", - sum = "h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ=", - ) - - go_repository( - name = "co_honnef_go_tools", - importpath = "honnef.co/go/tools", - version = "v0.4.3", - sum = "h1:o/n5/K5gXqk8Gozvs2cnL0F2S1/g1vcGCAx2vETjITw=", - ) - - go_repository( - name ="com_github_openpeedeep_depguard_v2", - importpath = "github.com/OpenPeeDeeP/depguard/v2", - version = "v2.0.1", - sum = "h1:yr9ZswukmNxl/hmJHEoLEjCF1d+f2pQrC0m1jzVljAE=", - ) - - go_repository( - name ="cc_mvdan_unparam", - importpath = "mvdan.cc/unparam", - version = "v0.0.0-20230312165513-e84e2d14e3b8", - sum = "h1:VuJo4Mt0EVPychre4fNlDWDuE5AjXtPJpRUWqZDQhaI=", - ) - - go_repository( - name ="com_4d63_gocheckcompilerdirectives", - importpath = "4d63.com/gocheckcompilerdirectives", - version = "v1.2.1", - sum = "h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA=", - ) + go_repository( + name = "com_github_timakin_bodyclose", + build_file_proto_mode = "disable_global", + importpath = "github.com/timakin/bodyclose", + sum = "h1:ig99OeTyDwQWhPe2iw9lwfQVF1KB3Q4fpP3X7/2VBG8=", + version = "v0.0.0-20200424151742-cb6215831a94", + ) + + go_repository( + name = "com_github_ashanbrown_forbidigo", + build_file_proto_mode = "disable_global", + importpath = "github.com/ashanbrown/forbidigo", + sum = "h1:WXhzLjOlnuDYPYQo/eFlcFMi8X/kLfvWLYu6CSoebis=", + version = "v1.5.1", + ) + + go_repository( + name = "com_github_gostaticanalysis_analysisutil", + build_file_proto_mode = "disable_global", + importpath = "github.com/gostaticanalysis/analysisutil", + version = "v0.7.1", + sum = "h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk=", + ) + + go_repository( + name = "com_github_gostaticanalysis_comment", + build_file_proto_mode = "disable_global", + importpath = "github.com/gostaticanalysis/comment", + version = "v1.4.2", + sum = "h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q=", + ) + + go_repository( + name = "com_github_gordonklaus_ineffassign", + build_file_proto_mode = "disable_global", + importpath = "github.com/gordonklaus/ineffassign", + version = "v0.0.0-20230107090616-13ace0543b28", + sum = "h1:9alfqbrhuD+9fLZ4iaAVwhlp5PEhmnBt7yvK2Oy5C1U=", + ) + + go_repository( + name = "com_github_go_critic_go_critic", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-critic/go-critic", + version = "v0.6.7", + sum = "h1:1evPrElnLQ2LZtJfmNDzlieDhjnq36SLgNzisx06oPM=", + ) + + go_repository( + name = "com_github_go_toolsmith_astcast", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-toolsmith/astcast", + version = "v1.1.0", + sum = "h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8=", + ) + + go_repository( + name = "com_github_go_toolsmith_astcopy", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-toolsmith/astcopy", + version = "v1.0.2", + sum = "h1:YnWf5Rnh1hUudj11kei53kI57quN/VH6Hp1n+erozn0=", + ) + + go_repository( + name = "com_github_go_toolsmith_astequal", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-toolsmith/astequal", + version = "v1.1.0", + sum = "h1:kHKm1AWqClYn15R0K1KKE4RG614D46n+nqUQ06E1dTw=", + ) + + go_repository( + name = "com_github_go_toolsmith_astfmt", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-toolsmith/astfmt", + version = "v1.1.0", + sum = "h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco=", + ) + + go_repository( + name = "com_github_go_toolsmith_astp", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-toolsmith/astp", + version = "v1.1.0", + sum = "h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA=", + ) + + go_repository( + name = "com_github_go_toolsmith_pkgload", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-toolsmith/pkgload", + version = "v1.0.2-0.20220101231613-e814995d17c5", + sum = "h1:eD9POs68PHkwrx7hAB78z1cb6PfGq/jyWn3wJywsH1o=", + ) + + go_repository( + name = "com_github_go_toolsmith_strparse", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-toolsmith/strparse", + version = "v1.1.0", + sum = "h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw=", + ) + + go_repository( + name = "com_github_go_toolsmith_typep", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-toolsmith/typep", + version = "v1.1.0", + sum = "h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus=", + ) + + go_repository( + name = "com_github_quasilyte_go_ruleguard", + importpath = "github.com/quasilyte/go-ruleguard", + version = "v0.3.19", + sum = "h1:tfMnabXle/HzOb5Xe9CUZYWXKfkS1KwRmZyPmD9nVcc=", + ) + + go_repository( + name = "com_github_quasilyte_gogrep", + importpath = "github.com/quasilyte/gogrep", + version = "v0.5.0", + sum = "h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo=", + ) + + go_repository( + name = "com_github_quasilyte_regex_syntax", + importpath = "github.com/quasilyte/regex/syntax", + version = "v0.0.0-20200407221936-30656e2c4a95", + sum = "h1:L8QM9bvf68pVdQ3bCFZMDmnt9yqcMBro1pC7F+IPYMY=", + ) + + go_repository( + name = "com_github_quasilyte_stdinfo", + importpath = "github.com/quasilyte/stdinfo", + version = "v0.0.0-20220114132959-f7386bf02567", + sum = "h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs=", + ) + + go_repository( + name = "org_golang_x_exp_typeparams", + importpath = "golang.org/x/exp/typeparams", + version = "v0.0.0-20230203172020-98cc5a0785f9", + sum = "h1:6WHiuFL9FNjg8RljAaT7FNUuKDbvMqS1i5cr2OE2sLQ=", + ) + + go_repository( + name = "com_github_kyoh86_exportloopref", + importpath = "github.com/kyoh86/exportloopref", + version = "v0.1.11", + sum = "h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ=", + ) + + go_repository( + name = "co_honnef_go_tools", + importpath = "honnef.co/go/tools", + version = "v0.4.3", + sum = "h1:o/n5/K5gXqk8Gozvs2cnL0F2S1/g1vcGCAx2vETjITw=", + ) + + go_repository( + name = "com_github_openpeedeep_depguard_v2", + importpath = "github.com/OpenPeeDeeP/depguard/v2", + version = "v2.0.1", + sum = "h1:yr9ZswukmNxl/hmJHEoLEjCF1d+f2pQrC0m1jzVljAE=", + ) + + go_repository( + name = "cc_mvdan_unparam", + importpath = "mvdan.cc/unparam", + version = "v0.0.0-20230312165513-e84e2d14e3b8", + sum = "h1:VuJo4Mt0EVPychre4fNlDWDuE5AjXtPJpRUWqZDQhaI=", + ) + + go_repository( + name = "com_4d63_gocheckcompilerdirectives", + importpath = "4d63.com/gocheckcompilerdirectives", + version = "v1.2.1", + sum = "h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA=", + ) diff --git a/migrations/BUILD.bazel b/migrations/BUILD.bazel index 53b9671a14083..f393acbd30bdc 100644 --- a/migrations/BUILD.bazel +++ b/migrations/BUILD.bazel @@ -1,5 +1,4 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") -load("@aspect_bazel_lib//lib:copy_to_directory.bzl", "copy_to_directory") # Important warning: if you add files to that package, you *must* # add them manually to the scrs attribute, because of the gazelle:ignore diff --git a/ui/assets/BUILD.bazel b/ui/assets/BUILD.bazel index daae8cfe34c04..6f41251ff1c88 100644 --- a/ui/assets/BUILD.bazel +++ b/ui/assets/BUILD.bazel @@ -1,6 +1,4 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") -load("@bazel_skylib//rules:common_settings.bzl", "string_flag") -load("@aspect_bazel_lib//lib:copy_to_directory.bzl", "copy_to_directory") go_library( name = "assets", From 6ec6c7d5a316618f37aae950dbb1c3f47ce391c7 Mon Sep 17 00:00:00 2001 From: Jean-Hadrien Chabran <jean-hadrien.chabran@sourcegraph.com> Date: Mon, 27 Nov 2023 15:35:32 +0100 Subject: [PATCH 170/222] bzl: add gcloud/gsutil to //dev/tools (#58589) --- dev/tool_deps.bzl | 37 +++++++++++++++++++++++++++++++++++++ dev/tools/BUILD.bazel | 20 ++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/dev/tool_deps.bzl b/dev/tool_deps.bzl index 121906c23837e..1ebb10e8b85ce 100644 --- a/dev/tool_deps.bzl +++ b/dev/tool_deps.bzl @@ -1,3 +1,5 @@ +"Third party dev tooling dependencies" + load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file") DOCSITE_VERSION = "1.9.4" @@ -12,7 +14,18 @@ filegroup( ) """ +GCLOUD_VERSION = "415.0.0" +GCLOUD_BUILDFILE = """package(default_visibility = ["//visibility:public"])\nexports_files(["gcloud", "gsutil", "bq", "git-credential-gcloud"])""" +GCLOUD_PATCH_CMDS = [ + "ln -s google-cloud-sdk/bin/gcloud gcloud", + "ln -s google-cloud-sdk/bin/gsutil gsutil", + "ln -s google-cloud-sdk/bin/bq bq", + "ln -s google-cloud-sdk/bin/git-credential-gcloud.sh git-credential-gcloud", +] + def tool_deps(): + "Repository rules to fetch third party tooling used for dev purposes" + # Docsite # http_file( name = "docsite_darwin_amd64", @@ -82,3 +95,27 @@ def tool_deps(): url = "https://storage.googleapis.com/universal_ctags/x86_64-linux/dist/universal-ctags-{0}".format(CTAGS_VERSION), executable = True, ) + + http_archive( + name = "gcloud-darwin-arm64", + build_file_content = GCLOUD_BUILDFILE, + patch_cmds = GCLOUD_PATCH_CMDS, + sha256 = "974ed4f37f8bde2f7a9731eba90b033f7c97d24d835ecc62b58eee87c8f29776", + url = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-{}-darwin-arm.tar.gz".format(GCLOUD_VERSION), + ) + + http_archive( + name = "gcloud-darwin-amd64", + build_file_content = GCLOUD_BUILDFILE, + patch_cmds = GCLOUD_PATCH_CMDS, + sha256 = "f05cc45ffc6c1f3ff73854989f3ea3d6bee40287d23047917e4c845aeb027f98", + url = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-{}-darwin-x86_64.tar.gz".format(GCLOUD_VERSION), + ) + + http_archive( + name = "gcloud-linux-amd64", + build_file_content = GCLOUD_BUILDFILE, + patch_cmds = GCLOUD_PATCH_CMDS, + sha256 = "5f9ed1862a82f393be3b16634309e9e8edb6da13a8704952be9c4c59963f9cd4", + url = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-{}-linux-x86_64.tar.gz".format(GCLOUD_VERSION), + ) diff --git a/dev/tools/BUILD.bazel b/dev/tools/BUILD.bazel index 94f3aeea54ed1..05d42731e848b 100644 --- a/dev/tools/BUILD.bazel +++ b/dev/tools/BUILD.bazel @@ -27,3 +27,23 @@ sh_binary( }), visibility = ["//visibility:public"], ) + +sh_binary( + name = "gcloud", + srcs = select({ + "@bazel_tools//src/conditions:darwin_x86_64": ["@gcloud-darwin-amd64//:gcloud"], + "@bazel_tools//src/conditions:darwin_arm64": ["@gcloud-darwin-arm64//:gcloud"], + "@bazel_tools//src/conditions:linux_x86_64": ["@gcloud-linux-amd64//:gcloud"], + }), + visibility = ["//visibility:public"], +) + +sh_binary( + name = "gsutil", + srcs = select({ + "@bazel_tools//src/conditions:darwin_x86_64": ["@gcloud-darwin-amd64//:gsutil"], + "@bazel_tools//src/conditions:darwin_arm64": ["@gcloud-darwin-arm64//:gsutil"], + "@bazel_tools//src/conditions:linux_x86_64": ["@gcloud-linux-amd64//:gsutil"], + }), + visibility = ["//visibility:public"], +) From 41215c9add87c541d037e8f091fe3c1d235055ef Mon Sep 17 00:00:00 2001 From: David Veszelovszki <veszelovszki@gmail.com> Date: Mon, 27 Nov 2023 16:47:44 +0100 Subject: [PATCH 171/222] PLG: Add embeddings rate limits (#58560) * Description clarification * Add new settings to schema * Get embeddings rate limits from site config --- .../codygateway_dotcom_user.go | 40 +++++++++++++++++-- internal/conf/computed.go | 16 ++++---- internal/conf/conftypes/consts.go | 28 +++++++------ schema/schema.go | 16 +++++--- schema/site.schema.json | 22 +++++++--- 5 files changed, 86 insertions(+), 36 deletions(-) diff --git a/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go b/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go index 3886091d40f78..7ae0da74b5f7c 100644 --- a/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go +++ b/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go @@ -177,10 +177,9 @@ func (r codyUserGatewayAccessResolver) EmbeddingsRateLimit(ctx context.Context) return nil, nil } - rateLimit := licensing.CodyGatewayRateLimit{ - AllowedModels: []string{"openai/text-embedding-ada-002"}, - Limit: int64(20 * tokensPerDollar), - IntervalSeconds: math.MaxInt32, + rateLimit, err := getEmbeddingsRateLimit(ctx, r.db) + if err != nil { + return nil, err } return &codyGatewayRateLimitResolver{ @@ -191,6 +190,39 @@ func (r codyUserGatewayAccessResolver) EmbeddingsRateLimit(ctx context.Context) }, nil } +func getEmbeddingsRateLimit(ctx context.Context, db database.DB) (licensing.CodyGatewayRateLimit, error) { + // Hard-coded defaults: 200M tokens for life + limit := int64(20 * tokensPerDollar) + intervalSeconds := int32(math.MaxInt32) + + // Apply self-serve limits if available + cfg := conf.GetEmbeddingsConfig(conf.Get().SiteConfig()) + if cfg != nil && featureflag.FromContext(ctx).GetBoolOr("cody-pro", false) { + actor := sgactor.FromContext(ctx) + user, err := actor.User(ctx, db.Users()) + if err != nil { + return licensing.CodyGatewayRateLimit{}, err + } + intervalSeconds = oneMonthInSeconds + isProUser := user.CodyProEnabledAt != nil + if isProUser { + if cfg.PerProUserEmbeddingsMonthlyLimit > 0 { + limit = int64(cfg.PerProUserEmbeddingsMonthlyLimit) + } + } else { + if cfg.PerCommunityUserEmbeddingsMonthlyLimit > 0 { + limit = int64(cfg.PerCommunityUserEmbeddingsMonthlyLimit) + } + } + } + + return licensing.CodyGatewayRateLimit{ + AllowedModels: []string{"openai/text-embedding-ada-002"}, + Limit: limit, + IntervalSeconds: intervalSeconds, + }, nil +} + func getCompletionsRateLimit(ctx context.Context, db database.DB, userID int32, scope types.CompletionsFeature) (licensing.CodyGatewayRateLimit, graphqlbackend.CodyGatewayRateLimitSource, error) { var limit *int var err error diff --git a/internal/conf/computed.go b/internal/conf/computed.go index 73eef6931522f..6761b068e6f97 100644 --- a/internal/conf/computed.go +++ b/internal/conf/computed.go @@ -1022,13 +1022,15 @@ func GetEmbeddingsConfig(siteConfig schema.SiteConfiguration) *conftypes.Embeddi Endpoint: embeddingsConfig.Endpoint, Dimensions: embeddingsConfig.Dimensions, // This is definitely set at this point. - Incremental: *embeddingsConfig.Incremental, - FileFilters: fileFilters, - MaxCodeEmbeddingsPerRepo: embeddingsConfig.MaxCodeEmbeddingsPerRepo, - MaxTextEmbeddingsPerRepo: embeddingsConfig.MaxTextEmbeddingsPerRepo, - PolicyRepositoryMatchLimit: embeddingsConfig.PolicyRepositoryMatchLimit, - ExcludeChunkOnError: pointers.Deref(embeddingsConfig.ExcludeChunkOnError, true), - Qdrant: computedQdrantConfig, + Incremental: *embeddingsConfig.Incremental, + FileFilters: fileFilters, + MaxCodeEmbeddingsPerRepo: embeddingsConfig.MaxCodeEmbeddingsPerRepo, + MaxTextEmbeddingsPerRepo: embeddingsConfig.MaxTextEmbeddingsPerRepo, + PolicyRepositoryMatchLimit: embeddingsConfig.PolicyRepositoryMatchLimit, + ExcludeChunkOnError: pointers.Deref(embeddingsConfig.ExcludeChunkOnError, true), + Qdrant: computedQdrantConfig, + PerCommunityUserEmbeddingsMonthlyLimit: embeddingsConfig.PerCommunityUserEmbeddingsMonthlyLimit, + PerProUserEmbeddingsMonthlyLimit: embeddingsConfig.PerProUserEmbeddingsMonthlyLimit, } d, err := time.ParseDuration(embeddingsConfig.MinimumInterval) if err != nil { diff --git a/internal/conf/conftypes/consts.go b/internal/conf/conftypes/consts.go index 265393496c406..0e9b49fe94f3a 100644 --- a/internal/conf/conftypes/consts.go +++ b/internal/conf/conftypes/consts.go @@ -35,19 +35,21 @@ const ( ) type EmbeddingsConfig struct { - Provider EmbeddingsProviderName - AccessToken string - Model string - Endpoint string - Dimensions int - Incremental bool - MinimumInterval time.Duration - FileFilters EmbeddingsFileFilters - MaxCodeEmbeddingsPerRepo int - MaxTextEmbeddingsPerRepo int - PolicyRepositoryMatchLimit *int - ExcludeChunkOnError bool - Qdrant QdrantConfig + Provider EmbeddingsProviderName + AccessToken string + Model string + Endpoint string + Dimensions int + Incremental bool + MinimumInterval time.Duration + FileFilters EmbeddingsFileFilters + MaxCodeEmbeddingsPerRepo int + MaxTextEmbeddingsPerRepo int + PolicyRepositoryMatchLimit *int + ExcludeChunkOnError bool + Qdrant QdrantConfig + PerCommunityUserEmbeddingsMonthlyLimit int + PerProUserEmbeddingsMonthlyLimit int } type QdrantConfig struct { diff --git a/schema/schema.go b/schema/schema.go index 12c5317e5bf10..5a3b006e1d859 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -594,17 +594,17 @@ type Completions struct { FastChatModelMaxTokens int `json:"fastChatModelMaxTokens,omitempty"` // Model description: DEPRECATED. Use chatModel instead. Model string `json:"model,omitempty"` - // PerCommunityUserChatMonthlyLimit description: If > 0, enables the maximum number of completions requests allowed to be made by a single Community user in a month. This is for Cody PLG and applies to Dotcom only. + // PerCommunityUserChatMonthlyLimit description: If > 0, limits the number of completions requests allowed for a Community user in a month. This is for Self-serve Cody and applies to Dotcom only. PerCommunityUserChatMonthlyLimit int `json:"perCommunityUserChatMonthlyLimit,omitempty"` - // PerCommunityUserCodeCompletionsMonthlyLimit description: If > 0, enables the maximum number of code completions requests allowed to be made by a single Community user in a month. This is for Cody PLG and applies to Dotcom only. + // PerCommunityUserCodeCompletionsMonthlyLimit description: If > 0, limits the number of code completions requests allowed for a Community user in a month. This is for Self-serve Cody and applies to Dotcom only. PerCommunityUserCodeCompletionsMonthlyLimit int `json:"perCommunityUserCodeCompletionsMonthlyLimit,omitempty"` - // PerProUserChatDailyLimit description: If > 0, enables the maximum number of completions requests allowed to be made by a single Pro user in a day. This is for Cody PLG and applies to Dotcom only. + // PerProUserChatDailyLimit description: If > 0, limits the number of completions requests allowed for a Pro user in a day. This is for Self-serve Cody and applies to Dotcom only. PerProUserChatDailyLimit int `json:"perProUserChatDailyLimit,omitempty"` - // PerProUserCodeCompletionsDailyLimit description: If > 0, enables the maximum number of code completions requests allowed to be made by a single Pro user in a day. This is for Cody PLG and applies to Dotcom only. + // PerProUserCodeCompletionsDailyLimit description: If > 0, limits the number of code completions requests allowed for a Pro user in a day. This is for Self-serve Cody and applies to Dotcom only. PerProUserCodeCompletionsDailyLimit int `json:"perProUserCodeCompletionsDailyLimit,omitempty"` - // PerUserCodeCompletionsDailyLimit description: If > 0, enables the maximum number of code completions requests allowed to be made by a single user account in a day. On instances that allow anonymous requests, the rate limit is enforced by IP. + // PerUserCodeCompletionsDailyLimit description: If > 0, limits the number of code completions requests allowed for a user in a day. On instances that allow anonymous requests, we enforce the rate limit by IP. PerUserCodeCompletionsDailyLimit int `json:"perUserCodeCompletionsDailyLimit,omitempty"` - // PerUserDailyLimit description: If > 0, enables the maximum number of completions requests allowed to be made by a single user account in a day. On instances that allow anonymous requests, the rate limit is enforced by IP. + // PerUserDailyLimit description: If > 0, limits the number of completions requests allowed for a user in a day. On instances that allow anonymous requests, we enforce the rate limit by IP. PerUserDailyLimit int `json:"perUserDailyLimit,omitempty"` // Provider description: The external completions provider. Defaults to 'sourcegraph'. Provider string `json:"provider,omitempty"` @@ -690,6 +690,10 @@ type Embeddings struct { MinimumInterval string `json:"minimumInterval,omitempty"` // Model description: The model used for embedding. A default model will be used for each provider, if not set. Model string `json:"model,omitempty"` + // PerCommunityUserEmbeddingsMonthlyLimit description: If > 0, limits the number of tokens allowed to be embedded by a Community user in a month. This is for Self-serve Cody and applies to Dotcom only. + PerCommunityUserEmbeddingsMonthlyLimit int `json:"perCommunityUserEmbeddingsMonthlyLimit,omitempty"` + // PerProUserEmbeddingsMonthlyLimit description: If > 0, limits the number of tokens allowed to be embedded by a Pro user in a month. This is for Self-serve Cody and applies to Dotcom only. + PerProUserEmbeddingsMonthlyLimit int `json:"perProUserEmbeddingsMonthlyLimit,omitempty"` // PolicyRepositoryMatchLimit description: The maximum number of repositories that can be matched by a global embeddings policy PolicyRepositoryMatchLimit *int `json:"policyRepositoryMatchLimit,omitempty"` // Provider description: The provider to use for generating embeddings. Defaults to sourcegraph. diff --git a/schema/site.schema.json b/schema/site.schema.json index 95dc4a3f2f935..8e59f8024c88f 100644 --- a/schema/site.schema.json +++ b/schema/site.schema.json @@ -2500,6 +2500,16 @@ "type": "string", "format": "uri" }, + "perCommunityUserEmbeddingsMonthlyLimit": { + "description": "If > 0, limits the number of tokens allowed to be embedded by a Community user in a month. This is for Self-serve Cody and applies to Dotcom only.", + "type": "integer", + "default": 0 + }, + "perProUserEmbeddingsMonthlyLimit": { + "description": "If > 0, limits the number of tokens allowed to be embedded by a Pro user in a month. This is for Self-serve Cody and applies to Dotcom only.", + "type": "integer", + "default": 0 + }, "fileFilters": { "description": "Filters that allow you to specify which files in a repository should get embedded.", "type": "object", @@ -2776,32 +2786,32 @@ "description": "The endpoint under which to reach the provider. Currently only used for provider types \"sourcegraph\", \"openai\" and \"anthropic\". The default values are \"https://cody-gateway.sourcegraph.com\", \"https://api.openai.com/v1/chat/completions\", and \"https://api.anthropic.com/v1/complete\" for Sourcegraph, OpenAI, and Anthropic, respectively." }, "perUserDailyLimit": { - "description": "If > 0, enables the maximum number of completions requests allowed to be made by a single user account in a day. On instances that allow anonymous requests, the rate limit is enforced by IP.", + "description": "If > 0, limits the number of completions requests allowed for a user in a day. On instances that allow anonymous requests, we enforce the rate limit by IP.", "type": "integer", "default": 0 }, "perUserCodeCompletionsDailyLimit": { - "description": "If > 0, enables the maximum number of code completions requests allowed to be made by a single user account in a day. On instances that allow anonymous requests, the rate limit is enforced by IP.", + "description": "If > 0, limits the number of code completions requests allowed for a user in a day. On instances that allow anonymous requests, we enforce the rate limit by IP.", "type": "integer", "default": 0 }, "perCommunityUserChatMonthlyLimit": { - "description": "If > 0, enables the maximum number of completions requests allowed to be made by a single Community user in a month. This is for Cody PLG and applies to Dotcom only.", + "description": "If > 0, limits the number of completions requests allowed for a Community user in a month. This is for Self-serve Cody and applies to Dotcom only.", "type": "integer", "default": 0 }, "perCommunityUserCodeCompletionsMonthlyLimit": { - "description": "If > 0, enables the maximum number of code completions requests allowed to be made by a single Community user in a month. This is for Cody PLG and applies to Dotcom only.", + "description": "If > 0, limits the number of code completions requests allowed for a Community user in a month. This is for Self-serve Cody and applies to Dotcom only.", "type": "integer", "default": 0 }, "perProUserChatDailyLimit": { - "description": "If > 0, enables the maximum number of completions requests allowed to be made by a single Pro user in a day. This is for Cody PLG and applies to Dotcom only.", + "description": "If > 0, limits the number of completions requests allowed for a Pro user in a day. This is for Self-serve Cody and applies to Dotcom only.", "type": "integer", "default": 0 }, "perProUserCodeCompletionsDailyLimit": { - "description": "If > 0, enables the maximum number of code completions requests allowed to be made by a single Pro user in a day. This is for Cody PLG and applies to Dotcom only.", + "description": "If > 0, limits the number of code completions requests allowed for a Pro user in a day. This is for Self-serve Cody and applies to Dotcom only.", "type": "integer", "default": 0 } From e55d8541cdc616e8665273689c3c72b3da41b003 Mon Sep 17 00:00:00 2001 From: Vova Kulikov <vovakulikov@icloud.com> Date: Mon, 27 Nov 2023 13:09:29 -0300 Subject: [PATCH 172/222] [Search Result]: Add new layout page and file preview panel (#58311) * Extract search result page layout into separate component * Create new search result page layout * Fix styles problem * Connect file preview UI with preview preview button in the results blocks UI * Add active by default inline search for file preview panel * Sync file preview and info bar header heights * Close the panel on query re-submit * Make side blob lazy loaded * Fix ts problem in no results page * Fix ts problems * Fix eslint problems * Update search result info bar snapshots * Add comments to Search Panel View Modes --- client/branded/BUILD.bazel | 5 +- .../components/FileContentSearchResult.tsx | 12 +- .../components/FilePathSearchResult.tsx | 17 +- .../components/ResultContainer.module.scss | 5 +- .../search-ui/components/ResultContainer.tsx | 10 +- .../components/SearchResultPreviewButton.tsx | 33 ++ client/branded/src/search-ui/index.ts | 4 +- .../src/search-ui/results/NoResultsPage.tsx | 11 +- .../results/StreamingSearchResultsList.tsx | 31 +- ...rchSidebar.tsx => StickySearchSidebar.tsx} | 61 +-- .../src/search-ui/stores/results-store.ts | 21 + client/web/BUILD.bazel | 23 +- client/web/src/codeintel/ReferencesPanel.tsx | 90 +--- client/web/src/codeintel/SideBlob.tsx | 133 ++++++ .../AppRouterContainer/AppRouterContainer.tsx | 2 +- client/web/src/hooks/index.ts | 1 - .../NewGlobalNavigationBar.tsx | 2 +- .../blocks/query/NotebookQueryBlock.tsx | 1 + client/web/src/repo/RepoRevisionContainer.tsx | 4 +- client/web/src/repo/blob/CodeMirrorBlob.tsx | 16 +- .../web/src/repo/blob/codemirror/search.tsx | 74 +-- client/web/src/repo/blob/codemirror/types.ts | 21 + .../src/savedSearches/SavedSearchModal.tsx | 2 +- client/web/src/search/SearchConsolePage.tsx | 1 + .../search/results/CreateActions.module.scss | 14 - .../src/search/results/CreateActionsMenu.tsx | 84 ---- .../results/StreamingSearchResults.story.tsx | 3 +- .../results/StreamingSearchResults.test.tsx | 7 +- .../search/results/StreamingSearchResults.tsx | 442 ++++-------------- .../{ => components}/SearchActionsMenu.tsx | 6 +- .../results/{ => components}/SearchAlert.tsx | 2 +- .../{ => components}/UnownedResultsAlert.tsx | 4 +- .../NewSearchContent.module.scss | 221 +++++++++ .../new-search-content/NewSearchContent.tsx | 414 ++++++++++++++++ .../search-content/SearchContent.module.scss} | 0 .../search-content/SearchContent.tsx | 262 +++++++++++ .../SearchResultsInfoBar.module.scss | 0 .../SearchResultsInfoBar.test.tsx | 9 +- .../SearchResultsInfoBar.tsx | 79 +++- .../SearchResultsInfoBar.test.tsx.snap | 371 +++++++++++++++ .../search-results-info-bar}/createActions.ts | 10 +- .../src/search/results/components/utils.ts | 11 + .../results/sidebar/SearchFiltersSidebar.tsx | 176 +++---- .../search/results/useStreamingSearchPings.ts | 135 ++++++ client/wildcard/BUILD.bazel | 5 + .../src/components/Panel/useResizablePanel.ts | 4 +- client/wildcard/src/hooks/index.ts | 1 + .../src/hooks/useScrollManager/index.ts | 0 .../mutationObserverWithTimeout.ts | 0 .../useScrollManager.test.tsx | 2 +- .../useScrollManager/useScrollManager.ts | 4 +- 51 files changed, 2067 insertions(+), 779 deletions(-) create mode 100644 client/branded/src/search-ui/components/SearchResultPreviewButton.tsx rename client/branded/src/search-ui/results/sidebar/{SearchSidebar.tsx => StickySearchSidebar.tsx} (87%) create mode 100644 client/branded/src/search-ui/stores/results-store.ts create mode 100644 client/web/src/codeintel/SideBlob.tsx create mode 100644 client/web/src/repo/blob/codemirror/types.ts delete mode 100644 client/web/src/search/results/CreateActions.module.scss delete mode 100644 client/web/src/search/results/CreateActionsMenu.tsx rename client/web/src/search/results/{ => components}/SearchActionsMenu.tsx (96%) rename client/web/src/search/results/{ => components}/SearchAlert.tsx (97%) rename client/web/src/search/results/{ => components}/UnownedResultsAlert.tsx (97%) create mode 100644 client/web/src/search/results/components/new-search-content/NewSearchContent.module.scss create mode 100644 client/web/src/search/results/components/new-search-content/NewSearchContent.tsx rename client/web/src/search/results/{StreamingSearchResults.module.scss => components/search-content/SearchContent.module.scss} (100%) create mode 100644 client/web/src/search/results/components/search-content/SearchContent.tsx rename client/web/src/search/results/{ => components/search-results-info-bar}/SearchResultsInfoBar.module.scss (100%) rename client/web/src/search/results/{ => components/search-results-info-bar}/SearchResultsInfoBar.test.tsx (92%) rename client/web/src/search/results/{ => components/search-results-info-bar}/SearchResultsInfoBar.tsx (80%) create mode 100644 client/web/src/search/results/components/search-results-info-bar/__snapshots__/SearchResultsInfoBar.test.tsx.snap rename client/web/src/search/results/{ => components/search-results-info-bar}/createActions.ts (90%) create mode 100644 client/web/src/search/results/components/utils.ts create mode 100644 client/web/src/search/results/useStreamingSearchPings.ts rename client/{web => wildcard}/src/hooks/useScrollManager/index.ts (100%) rename client/{web => wildcard}/src/hooks/useScrollManager/mutationObserverWithTimeout.ts (100%) rename client/{web => wildcard}/src/hooks/useScrollManager/useScrollManager.test.tsx (97%) rename client/{web => wildcard}/src/hooks/useScrollManager/useScrollManager.ts (98%) diff --git a/client/branded/BUILD.bazel b/client/branded/BUILD.bazel index a573d8c024272..bb5f6da18d254 100644 --- a/client/branded/BUILD.bazel +++ b/client/branded/BUILD.bazel @@ -86,6 +86,7 @@ ts_project( "src/search-ui/components/RepoMetadata.tsx", "src/search-ui/components/RepoSearchResult.tsx", "src/search-ui/components/ResultContainer.tsx", + "src/search-ui/components/SearchResultPreviewButton.tsx", "src/search-ui/components/SearchResultStar.tsx", "src/search-ui/components/SmartSearchPreview.tsx", "src/search-ui/components/SymbolSearchResult.tsx", @@ -152,12 +153,13 @@ ts_project( "src/search-ui/results/sidebar/QuickLink.tsx", "src/search-ui/results/sidebar/SearchFilterSection.tsx", "src/search-ui/results/sidebar/SearchReference.tsx", - "src/search-ui/results/sidebar/SearchSidebar.tsx", "src/search-ui/results/sidebar/SearchTypeLink.tsx", + "src/search-ui/results/sidebar/StickySearchSidebar.tsx", "src/search-ui/results/sidebar/helpers.ts", "src/search-ui/results/sidebar/revisions.ts", "src/search-ui/results/use-items-to-show.ts", "src/search-ui/results/useSearchResultsKeyboardNavigation.ts", + "src/search-ui/stores/results-store.ts", "src/search-ui/util/index.ts", "src/search-ui/util/query.ts", "src/search-ui/util/stars.ts", @@ -199,6 +201,7 @@ ts_project( "//:node_modules/ts-key-enum", "//:node_modules/use-callback-ref", "//:node_modules/use-resize-observer", + "//:node_modules/zustand", "//client/shared:graphql_operations", "//client/shared:shared_lib", ], diff --git a/client/branded/src/search-ui/components/FileContentSearchResult.tsx b/client/branded/src/search-ui/components/FileContentSearchResult.tsx index e229e1439a9d1..4ce09b83e8ac4 100644 --- a/client/branded/src/search-ui/components/FileContentSearchResult.tsx +++ b/client/branded/src/search-ui/components/FileContentSearchResult.tsx @@ -25,6 +25,7 @@ import { CopyPathAction } from './CopyPathAction' import { FileMatchChildren } from './FileMatchChildren' import { RepoFileLink } from './RepoFileLink' import { ResultContainer } from './ResultContainer' +import { SearchResultPreviewButton } from './SearchResultPreviewButton' import resultContainerStyles from './ResultContainer.module.scss' import styles from './SearchResult.module.scss' @@ -105,6 +106,14 @@ export const FileContentSearchResult: React.FunctionComponent<React.PropsWithChi return new ZoektRanking(3) }, [settingsCascade]) + const newSearchUIEnabled = useMemo(() => { + const settings = settingsCascade.final + if (!isErrorLike(settings)) { + return settings?.experimentalFeatures?.newSearchNavigationUI + } + return false + }, [settingsCascade]) + // The number of lines of context to show before and after each match. const context = useMemo(() => { if (location?.pathname === '/search') { @@ -250,6 +259,7 @@ export const FileContentSearchResult: React.FunctionComponent<React.PropsWithChi return ( <ResultContainer + ref={rootRef} index={index} title={title} resultType={result.type} @@ -259,8 +269,8 @@ export const FileContentSearchResult: React.FunctionComponent<React.PropsWithChi className={classNames(styles.copyButtonContainer, containerClassName)} resultClassName={resultContainerStyles.highlightResult} rankingDebug={result.debug} - ref={rootRef} repoLastFetched={result.repoLastFetched} + actions={newSearchUIEnabled && <SearchResultPreviewButton result={result} />} > <div data-testid="file-search-result" data-expanded={expanded}> <FileMatchChildren diff --git a/client/branded/src/search-ui/components/FilePathSearchResult.tsx b/client/branded/src/search-ui/components/FilePathSearchResult.tsx index 4c79bac7219f1..0419fca40b8b0 100644 --- a/client/branded/src/search-ui/components/FilePathSearchResult.tsx +++ b/client/branded/src/search-ui/components/FilePathSearchResult.tsx @@ -1,17 +1,20 @@ -import React from 'react' +import React, { useMemo } from 'react' import classNames from 'classnames' +import { isErrorLike } from '@sourcegraph/common' import { getFileMatchUrl, getRepositoryUrl, getRevision, type PathMatch } from '@sourcegraph/shared/src/search/stream' +import { SettingsCascadeProps } from '@sourcegraph/shared/src/settings/settings' import type { TelemetryProps } from '@sourcegraph/shared/src/telemetry/telemetryService' import { CopyPathAction } from './CopyPathAction' import { RepoFileLink } from './RepoFileLink' import { ResultContainer } from './ResultContainer' +import { SearchResultPreviewButton } from './SearchResultPreviewButton' import styles from './SearchResult.module.scss' -export interface FilePathSearchResult { +export interface FilePathSearchResult extends SettingsCascadeProps { result: PathMatch repoDisplayName: string onSelect: () => void @@ -26,10 +29,19 @@ export const FilePathSearchResult: React.FunctionComponent<FilePathSearchResult containerClassName, index, telemetryService, + settingsCascade, }) => { const repoAtRevisionURL = getRepositoryUrl(result.repository, result.branches) const revisionDisplayName = getRevision(result.branches, result.commit) + const newSearchUIEnabled = useMemo(() => { + const settings = settingsCascade.final + if (!isErrorLike(settings)) { + return settings?.experimentalFeatures?.newSearchNavigationUI + } + return false + }, [settingsCascade]) + const title = ( <span className="d-flex align-items-center"> <RepoFileLink @@ -61,6 +73,7 @@ export const FilePathSearchResult: React.FunctionComponent<FilePathSearchResult rankingDebug={result.debug} className={classNames(styles.copyButtonContainer, containerClassName)} repoLastFetched={result.repoLastFetched} + actions={newSearchUIEnabled && <SearchResultPreviewButton result={result} />} > <div className={classNames(styles.searchResultMatch, 'p-2')}> <small>{result.pathMatches ? 'Path match' : 'File contains matching content'}</small> diff --git a/client/branded/src/search-ui/components/ResultContainer.module.scss b/client/branded/src/search-ui/components/ResultContainer.module.scss index 5f0462676b385..ded4f5494c281 100644 --- a/client/branded/src/search-ui/components/ResultContainer.module.scss +++ b/client/branded/src/search-ui/components/ResultContainer.module.scss @@ -17,7 +17,10 @@ align-items: center; flex-wrap: wrap; position: sticky; - top: 0; + // With 0 value there is a rendering bug in Safari where this block + // doesn't fit tight enough and hence it's leaving a gap between sticky + // header and top of the scrolling block + top: -1px; z-index: 1; // Show on top of search result contents background-color: var(--body-bg); diff --git a/client/branded/src/search-ui/components/ResultContainer.tsx b/client/branded/src/search-ui/components/ResultContainer.tsx index 3a472444d32f3..ef0cb9cb61077 100644 --- a/client/branded/src/search-ui/components/ResultContainer.tsx +++ b/client/branded/src/search-ui/components/ResultContainer.tsx @@ -1,11 +1,11 @@ -import React from 'react' +import React, { ReactElement } from 'react' import classNames from 'classnames' import type { SearchMatch } from '@sourcegraph/shared/src/search/stream' import type { ForwardReferenceExoticComponent } from '@sourcegraph/wildcard' -import { formatRepositoryStarCount } from '../util/stars' +import { formatRepositoryStarCount } from '../util' import { CodeHostIcon } from './CodeHostIcon' import { LastSyncedIcon } from './LastSyncedIcon' @@ -24,6 +24,7 @@ export interface ResultContainerProps { repoName?: string className?: string rankingDebug?: string + actions?: ReactElement | boolean onResultClicked?: () => void } @@ -55,9 +56,10 @@ export const ResultContainer: ForwardReferenceExoticComponent< repoName, className, rankingDebug, + actions, + repoLastFetched, as: Component = 'div', onResultClicked, - repoLastFetched, } = props const formattedRepositoryStarCount = formatRepositoryStarCount(repoStars) @@ -84,6 +86,8 @@ export const ResultContainer: ForwardReferenceExoticComponent< > {title} </div> + + {actions} {formattedRepositoryStarCount && ( <span className="d-flex align-items-center"> <SearchResultStar aria-label={`${repoStars} stars`} /> diff --git a/client/branded/src/search-ui/components/SearchResultPreviewButton.tsx b/client/branded/src/search-ui/components/SearchResultPreviewButton.tsx new file mode 100644 index 0000000000000..88f3aa1ddb0a3 --- /dev/null +++ b/client/branded/src/search-ui/components/SearchResultPreviewButton.tsx @@ -0,0 +1,33 @@ +import { FC } from 'react' + +import { Button } from '@sourcegraph/wildcard' + +import { useSearchResultState, type SearchResultPreview } from '../stores/results-store' + +interface SearchResultPreviewButtonProps { + result: SearchResultPreview +} + +export const SearchResultPreviewButton: FC<SearchResultPreviewButtonProps> = props => { + const { result } = props + const { previewBlob, setPreviewBlob, clearPreview } = useSearchResultState() + + const isActive = + previewBlob?.repository === result.repository && + previewBlob?.path === result.path && + previewBlob.commit === result.commit + + const handleClick = (): void => { + if (isActive) { + clearPreview() + } else { + setPreviewBlob(result) + } + } + + return ( + <Button variant="link" className="py-1 px-0 mr-2" onClick={handleClick}> + {isActive ? 'Hide preview' : 'Preview'} + </Button> + ) +} diff --git a/client/branded/src/search-ui/index.ts b/client/branded/src/search-ui/index.ts index 4ebcebd22bf86..22551a352f7de 100644 --- a/client/branded/src/search-ui/index.ts +++ b/client/branded/src/search-ui/index.ts @@ -10,10 +10,12 @@ export * from './results/progress/StreamingProgressCount' export * from './results/progress/utils' export * from './results/sidebar/FilterLink' export * from './results/sidebar/revisions' -export * from './results/sidebar/SearchSidebar' +export * from './results/sidebar/StickySearchSidebar' export * from './results/sidebar/QuickLink' export * from './results/sidebar/helpers' export * from './results/sidebar/SearchReference' export * from './results/sidebar/SearchTypeLink' export * from './results/StreamingSearchResultsList' export * from './util' + +export { useSearchResultState } from './stores/results-store' diff --git a/client/branded/src/search-ui/results/NoResultsPage.tsx b/client/branded/src/search-ui/results/NoResultsPage.tsx index a7a12944b8341..148ce8a938e5a 100644 --- a/client/branded/src/search-ui/results/NoResultsPage.tsx +++ b/client/branded/src/search-ui/results/NoResultsPage.tsx @@ -3,12 +3,7 @@ import React, { useCallback, useEffect } from 'react' import { mdiClose, mdiOpenInNew } from '@mdi/js' import classNames from 'classnames' -import { - type QueryState, - type SearchContextProps, - SearchMode, - type SubmitSearchParameters, -} from '@sourcegraph/shared/src/search' +import { type SearchContextProps, SearchMode, type SubmitSearchParameters } from '@sourcegraph/shared/src/search' import { NoResultsSectionID as SectionID } from '@sourcegraph/shared/src/settings/temporary/searchSidebar' import { useTemporarySetting } from '@sourcegraph/shared/src/settings/temporary/useTemporarySetting' import type { TelemetryProps } from '@sourcegraph/shared/src/telemetry/telemetryService' @@ -53,7 +48,6 @@ interface NoResultsPageProps extends TelemetryProps, Pick<SearchContextProps, 's isSourcegraphDotCom: boolean showSearchContext: boolean showQueryExamples?: boolean - setQueryState?: (query: QueryState) => void searchMode?: SearchMode setSearchMode?: (mode: SearchMode) => void submitSearch?: (parameters: SubmitSearchParameters) => void @@ -68,7 +62,6 @@ export const NoResultsPage: React.FunctionComponent<React.PropsWithChildren<NoRe isSourcegraphDotCom, showSearchContext, showQueryExamples, - setQueryState, searchMode, setSearchMode, submitSearch, @@ -107,7 +100,7 @@ export const NoResultsPage: React.FunctionComponent<React.PropsWithChildren<NoRe /> )} - {showQueryExamples && setQueryState && ( + {showQueryExamples && ( <> <H3 as={H2}>Search basics</H3> <div className={styles.queryExamplesContainer}> diff --git a/client/branded/src/search-ui/results/StreamingSearchResultsList.tsx b/client/branded/src/search-ui/results/StreamingSearchResultsList.tsx index 12df1a126ffb4..370c3b3ac819e 100644 --- a/client/branded/src/search-ui/results/StreamingSearchResultsList.tsx +++ b/client/branded/src/search-ui/results/StreamingSearchResultsList.tsx @@ -26,12 +26,14 @@ import { import type { SettingsCascadeProps } from '@sourcegraph/shared/src/settings/settings' import type { TelemetryProps } from '@sourcegraph/shared/src/telemetry/telemetryService' -import { CommitSearchResult } from '../components/CommitSearchResult' -import { FileContentSearchResult } from '../components/FileContentSearchResult' -import { FilePathSearchResult } from '../components/FilePathSearchResult' +import { + CommitSearchResult, + FileContentSearchResult, + FilePathSearchResult, + RepoSearchResult, + SymbolSearchResult, +} from '../components' import { OwnerSearchResult } from '../components/OwnerSearchResult' -import { RepoSearchResult } from '../components/RepoSearchResult' -import { SymbolSearchResult } from '../components/SymbolSearchResult' import { NoResultsPage } from './NoResultsPage' import { StreamingSearchResultFooter } from './StreamingSearchResultsFooter' @@ -77,7 +79,6 @@ export interface StreamingSearchResultsListProps * allow modifying the query. */ queryState?: QueryState - setQueryState?: (queryState: QueryState) => void buildSearchURLQueryFromQueryState?: (queryParameters: BuildSearchQueryURLParameters) => string searchMode?: SearchMode @@ -92,7 +93,7 @@ export interface StreamingSearchResultsListProps * An optional callback invoked whenever a search result is clicked. * It's passed the index of the result in the list and the result type. */ - logSearchResultClicked?: (index: number, type: string) => void + logSearchResultClicked?: (index: number, type: string, resultsLength: number) => void enableRepositoryMetadata?: boolean } @@ -116,7 +117,6 @@ export const StreamingSearchResultsList: React.FunctionComponent< enableKeyboardNavigation, showQueryExamplesOnNoResultsPage, queryState, - setQueryState, buildSearchURLQueryFromQueryState, searchMode, setSearchMode, @@ -157,7 +157,7 @@ export const StreamingSearchResultsList: React.FunctionComponent< location={location} telemetryService={telemetryService} result={result} - onSelect={() => logSearchResultClicked?.(index, 'fileMatch')} + onSelect={() => logSearchResultClicked?.(index, 'fileMatch', resultsNumber)} defaultExpanded={false} showAllMatches={false} allExpanded={allExpanded} @@ -173,7 +173,7 @@ export const StreamingSearchResultsList: React.FunctionComponent< index={index} telemetryService={telemetryService} result={result} - onSelect={() => logSearchResultClicked?.(index, 'symbolMatch')} + onSelect={() => logSearchResultClicked?.(index, 'symbolMatch', resultsNumber)} fetchHighlightedFileLineRanges={fetchHighlightedFileLineRanges} repoDisplayName={displayRepoName(result.repository)} settingsCascade={settingsCascade} @@ -185,10 +185,11 @@ export const StreamingSearchResultsList: React.FunctionComponent< <FilePathSearchResult index={index} result={result} - onSelect={() => logSearchResultClicked?.(index, 'filePathMatch')} + onSelect={() => logSearchResultClicked?.(index, 'filePathMatch', resultsNumber)} repoDisplayName={displayRepoName(result.repository)} containerClassName={resultClassName} telemetryService={telemetryService} + settingsCascade={settingsCascade} /> )} </PrefetchableFile> @@ -200,7 +201,7 @@ export const StreamingSearchResultsList: React.FunctionComponent< index={index} result={result} platformContext={platformContext} - onSelect={() => logSearchResultClicked?.(index, 'commit')} + onSelect={() => logSearchResultClicked?.(index, 'commit', resultsNumber)} openInNewTab={openMatchesInNewTab} containerClassName={resultClassName} as="li" @@ -212,7 +213,7 @@ export const StreamingSearchResultsList: React.FunctionComponent< <RepoSearchResult index={index} result={result} - onSelect={() => logSearchResultClicked?.(index, 'repo')} + onSelect={() => logSearchResultClicked?.(index, 'repo', resultsNumber)} containerClassName={resultClassName} buildSearchURLQueryFromQueryState={buildSearchURLQueryFromQueryState} queryState={queryState} @@ -228,7 +229,7 @@ export const StreamingSearchResultsList: React.FunctionComponent< index={index} result={result} as="li" - onSelect={() => logSearchResultClicked?.(index, 'person')} + onSelect={() => logSearchResultClicked?.(index, 'person', resultsNumber)} containerClassName={resultClassName} telemetryService={telemetryService} queryState={queryState} @@ -255,6 +256,7 @@ export const StreamingSearchResultsList: React.FunctionComponent< prefetchFileEnabled, prefetchFile, location, + resultsNumber, telemetryService, allExpanded, fetchHighlightedFileLineRanges, @@ -306,7 +308,6 @@ export const StreamingSearchResultsList: React.FunctionComponent< telemetryService={telemetryService} showSearchContext={searchContextsEnabled} showQueryExamples={showQueryExamplesOnNoResultsPage} - setQueryState={setQueryState} searchMode={searchMode} setSearchMode={setSearchMode} submitSearch={submitSearch} diff --git a/client/branded/src/search-ui/results/sidebar/SearchSidebar.tsx b/client/branded/src/search-ui/results/sidebar/StickySearchSidebar.tsx similarity index 87% rename from client/branded/src/search-ui/results/sidebar/SearchSidebar.tsx rename to client/branded/src/search-ui/results/sidebar/StickySearchSidebar.tsx index 22e90d8f8e796..697ca0580cbbd 100644 --- a/client/branded/src/search-ui/results/sidebar/SearchSidebar.tsx +++ b/client/branded/src/search-ui/results/sidebar/StickySearchSidebar.tsx @@ -45,27 +45,8 @@ interface SearchSidebarProps extends HTMLAttributes<HTMLElement> { * Also provides shared through context internal state for compound SearchSidebarSection * components. */ -export const SearchSidebar: FC<PropsWithChildren<SearchSidebarProps>> = props => { +export const StickySearchSidebar: FC<PropsWithChildren<SearchSidebarProps>> = props => { const { children, className, onClose, ...attributes } = props - const [collapsedSections, setCollapsedSections] = useTemporarySetting('search.collapsedSidebarSections', {}) - - const persistToggleState = useCallback( - (id: string, open: boolean) => { - setCollapsedSections(openSections => { - const newSettings: TemporarySettings['search.collapsedSidebarSections'] = { - ...openSections, - [id]: !open, - } - return newSettings - }) - }, - [setCollapsedSections] - ) - - const sidebarStore = useMemo( - () => ({ collapsedSections, persistToggleState }), - [collapsedSections, persistToggleState] - ) return ( <aside @@ -84,19 +65,43 @@ export const SearchSidebar: FC<PropsWithChildren<SearchSidebarProps>> = props => </Button> </div> - { - // collapsedSections is undefined on first render. To prevent the sections - // being rendered open and immediately closing them, we render them only after - // we got the settings. - collapsedSections && ( - <SearchSidebarContext.Provider value={sidebarStore}>{children}</SearchSidebarContext.Provider> - ) - } + {children} </StickyBox> </aside> ) } +export const PersistSidebarStoreProvider: FC<PropsWithChildren<{}>> = props => { + const [collapsedSections, setCollapsedSections] = useTemporarySetting('search.collapsedSidebarSections', {}) + + const persistToggleState = useCallback( + (id: string, open: boolean) => { + setCollapsedSections(openSections => { + const newSettings: TemporarySettings['search.collapsedSidebarSections'] = { + ...openSections, + [id]: !open, + } + return newSettings + }) + }, + [setCollapsedSections] + ) + + const sidebarStore = useMemo( + () => ({ collapsedSections, persistToggleState }), + [collapsedSections, persistToggleState] + ) + + // collapsedSections is undefined on first render. To prevent the sections + // being rendered open and immediately closing them, we render them only after + // we got the settings. + if (!collapsedSections) { + return null + } + + return <SearchSidebarContext.Provider value={sidebarStore}>{props.children}</SearchSidebarContext.Provider> +} + interface SearchSidebarSectionProps extends Omit<ComponentProps<typeof SearchFilterSection>, 'startCollapsed' | 'onToggle'> { sectionId: SectionID diff --git a/client/branded/src/search-ui/stores/results-store.ts b/client/branded/src/search-ui/stores/results-store.ts new file mode 100644 index 0000000000000..0373ef0adffab --- /dev/null +++ b/client/branded/src/search-ui/stores/results-store.ts @@ -0,0 +1,21 @@ +import create from 'zustand' + +import type { ContentMatch, PathMatch } from '@sourcegraph/shared/src/search/stream' + +/** + * At the moment search result preview panel supports only + * blob-like type of search results to preview. + */ +export type SearchResultPreview = ContentMatch | PathMatch + +export interface SearchResultState { + previewBlob: SearchResultPreview | null + setPreviewBlob: (blobInfo: SearchResultPreview) => void + clearPreview: () => void +} + +export const useSearchResultState = create<SearchResultState>((set, get) => ({ + previewBlob: null, + setPreviewBlob: blobInfo => set({ previewBlob: blobInfo }), + clearPreview: () => set({ previewBlob: null }), +})) diff --git a/client/web/BUILD.bazel b/client/web/BUILD.bazel index 8b79f23430c05..487585600717f 100644 --- a/client/web/BUILD.bazel +++ b/client/web/BUILD.bazel @@ -207,6 +207,7 @@ ts_project( "src/codeintel/BrainDot.tsx", "src/codeintel/ReferencesPanel.tsx", "src/codeintel/ReferencesPanelQueries.ts", + "src/codeintel/SideBlob.tsx", "src/codeintel/index.ts", "src/codeintel/location.ts", "src/codeintel/promise.ts", @@ -1100,9 +1101,6 @@ ts_project( "src/hooks/index.ts", "src/hooks/useHandleSubmitFeedback.ts", "src/hooks/useRoutesMatch.ts", - "src/hooks/useScrollManager/index.ts", - "src/hooks/useScrollManager/mutationObserverWithTimeout.ts", - "src/hooks/useScrollManager/useScrollManager.ts", "src/hooks/useUrlSyncedState.ts", "src/hooks/useUrlSyncedString.ts", "src/hooks/useUserExternalAccounts.ts", @@ -1317,6 +1315,7 @@ ts_project( "src/repo/blob/codemirror/tooltips/HovercardView.tsx", "src/repo/blob/codemirror/tooltips/LoadingTooltip.ts", "src/repo/blob/codemirror/tooltips/TemporaryTooltip.tsx", + "src/repo/blob/codemirror/types.ts", "src/repo/blob/codemirror/utils.ts", "src/repo/blob/definitions.ts", "src/repo/blob/own/FileOwnershipEntry.tsx", @@ -1405,13 +1404,11 @@ ts_project( "src/search/input/V2SearchInput.tsx", "src/search/input/suggestions.ts", "src/search/input/useRecentSearches.ts", - "src/search/results/CreateActionsMenu.tsx", - "src/search/results/SearchActionsMenu.tsx", - "src/search/results/SearchAlert.tsx", "src/search/results/SearchResultsCacheProvider.tsx", - "src/search/results/SearchResultsInfoBar.tsx", "src/search/results/StreamingSearchResults.tsx", - "src/search/results/UnownedResultsAlert.tsx", + "src/search/results/components/SearchActionsMenu.tsx", + "src/search/results/components/SearchAlert.tsx", + "src/search/results/components/UnownedResultsAlert.tsx", "src/search/results/components/aggregation/SearchAggregationResult.tsx", "src/search/results/components/aggregation/components/AggregationLimitLabel.tsx", "src/search/results/components/aggregation/components/aggregation-chart-card/AggregationChartCard.tsx", @@ -1425,13 +1422,18 @@ ts_project( "src/search/results/components/aggregation/index.ts", "src/search/results/components/aggregation/pings.ts", "src/search/results/components/aggregation/types.ts", - "src/search/results/createActions.ts", + "src/search/results/components/new-search-content/NewSearchContent.tsx", + "src/search/results/components/search-content/SearchContent.tsx", + "src/search/results/components/search-results-info-bar/SearchResultsInfoBar.tsx", + "src/search/results/components/search-results-info-bar/createActions.ts", + "src/search/results/components/utils.ts", "src/search/results/export/SearchResultsCsvExportModal.tsx", "src/search/results/export/searchResultsExport.ts", "src/search/results/sidebar/Revisions.tsx", "src/search/results/sidebar/SearchAggregations.tsx", "src/search/results/sidebar/SearchFiltersSidebar.tsx", "src/search/results/sidebar/search-aggregation-types.ts", + "src/search/results/useStreamingSearchPings.ts", "src/search/suggestion/DidYouMean.tsx", "src/search/suggestion/SmartSearch.tsx", "src/search/useV2QueryInput.ts", @@ -1933,7 +1935,6 @@ ts_project( "src/fuzzyFinder/CaseInsensitiveFuzzySearch.test.ts", "src/fuzzyFinder/WordSensitiveFuzzySearch.test.ts", "src/global/Notices.test.tsx", - "src/hooks/useScrollManager/useScrollManager.test.tsx", "src/hooks/useUrlSyncedState.test.ts", "src/hooks/useUrlSyncedString.test.tsx", "src/insights/utils/use-series-toggle.test.tsx", @@ -1970,8 +1971,8 @@ ts_project( "src/search/helpers.test.tsx", "src/search/index.test.ts", "src/search/input/useRecentSearches.test.tsx", - "src/search/results/SearchResultsInfoBar.test.tsx", "src/search/results/StreamingSearchResults.test.tsx", + "src/search/results/components/search-results-info-bar/SearchResultsInfoBar.test.tsx", "src/search/results/export/searchResultsExport.test.ts", "src/search/results/sidebar/Revisions.mocks.ts", "src/search/results/sidebar/Revisions.test.tsx", diff --git a/client/web/src/codeintel/ReferencesPanel.tsx b/client/web/src/codeintel/ReferencesPanel.tsx index 1eb3ce3762383..19cc7bb8f8208 100644 --- a/client/web/src/codeintel/ReferencesPanel.tsx +++ b/client/web/src/codeintel/ReferencesPanel.tsx @@ -12,7 +12,6 @@ import { CodeExcerpt } from '@sourcegraph/branded' import type { HoveredToken } from '@sourcegraph/codeintellify' import { type ErrorLike, logger, pluralize } from '@sourcegraph/common' import { Position } from '@sourcegraph/extension-api-classes' -import { useQuery } from '@sourcegraph/http-client' import type { FetchFileParameters } from '@sourcegraph/shared/src/backend/file' import type { LanguageSpec } from '@sourcegraph/shared/src/codeintel/legacy-extensions/language-specs/language-spec' import { findLanguageSpec } from '@sourcegraph/shared/src/codeintel/legacy-extensions/language-specs/languages' @@ -43,26 +42,20 @@ import { Collapse, CollapseHeader, CollapsePanel, - Code, H4, Text, Tooltip, useSessionStorage, } from '@sourcegraph/wildcard' -import type { - ReferencesPanelHighlightedBlobResult, - ReferencesPanelHighlightedBlobVariables, -} from '../graphql-operations' -import { CodeMirrorBlob } from '../repo/blob/CodeMirrorBlob' import * as BlobAPI from '../repo/blob/use-blob-store' import type { HoverThresholdProps } from '../repo/RepoContainer' import { parseBrowserRepoURL } from '../util/url' import type { CodeIntelligenceProps } from '.' import { type Location, LocationsGroup, type LocationsGroupedByRepo, type LocationsGroupedByFile } from './location' -import { FETCH_HIGHLIGHTED_BLOB } from './ReferencesPanelQueries' import { newSettingsGetter } from './settings' +import { SideBlob, type SideBlobProps } from './SideBlob' import { findSearchToken } from './token' import { useRepoAndBlob } from './useRepoAndBlob' import { isDefined } from './util/helpers' @@ -666,15 +659,6 @@ const CollapsibleLocationList: React.FunctionComponent< ) } -interface SideBlobProps extends ReferencesPanelProps { - activeURL: string - repository: string - commitID: string - file: string - position?: Position - blobNav: (url: string) => void -} - function parseSideBlobProps( activeURL: string | undefined ): Pick<SideBlobProps, 'activeURL' | 'repository' | 'commitID' | 'file' | 'position'> | undefined { @@ -697,78 +681,6 @@ function parseSideBlobProps( } } -const SideBlob: React.FunctionComponent<React.PropsWithChildren<SideBlobProps>> = props => { - const { data, error, loading } = useQuery< - ReferencesPanelHighlightedBlobResult, - ReferencesPanelHighlightedBlobVariables - >(FETCH_HIGHLIGHTED_BLOB, { - variables: { - repository: props.repository, - commit: props.commitID, - path: props.file, - format: HighlightResponseFormat.JSON_SCIP, - }, - // Cache this data but always re-request it in the background when we revisit - // this page to pick up newer changes. - fetchPolicy: 'cache-and-network', - nextFetchPolicy: 'network-only', - }) - - // If we're loading and haven't received any data yet - if (loading && !data) { - return ( - <> - <LoadingSpinner inline={false} className="mx-auto my-4" /> - <Text alignment="center" className="text-muted"> - <i> - Loading <Code>{props.file}</Code>... - </i> - </Text> - </> - ) - } - - // If we received an error before we had received any data - if (error && !data) { - return ( - <div> - <Text className="text-danger"> - Loading <Code>{props.file}</Code> failed: - </Text> - <pre>{error.message}</pre> - </div> - ) - } - - // If there weren't any errors and we just didn't receive any data - if (!data?.repository?.commit?.blob?.highlight) { - return <>Nothing found</> - } - - const { lsif } = data?.repository?.commit?.blob?.highlight - - // TODO: display a helpful message if syntax highlighting aborted, see https://github.com/sourcegraph/sourcegraph/issues/40841 - - return ( - <CodeMirrorBlob - {...props} - nav={props.blobNav} - wrapCode={true} - className={styles.sideBlobCode} - navigateToLineOnAnyClick={true} - blobInfo={{ - lsif: lsif ?? '', - content: data?.repository?.commit?.blob?.content ?? '', - filePath: props.file, - repoName: props.repository, - commitID: props.commitID, - revision: props.commitID, - mode: 'lspmode', - }} - /> - ) -} - /** Component to display the Locations for a single repo */ const CollapsibleRepoLocationGroup: React.FunctionComponent< React.PropsWithChildren< diff --git a/client/web/src/codeintel/SideBlob.tsx b/client/web/src/codeintel/SideBlob.tsx new file mode 100644 index 0000000000000..fa343464a3e4b --- /dev/null +++ b/client/web/src/codeintel/SideBlob.tsx @@ -0,0 +1,133 @@ +import { FC } from 'react' + +import classNames from 'classnames' + +import { Position } from '@sourcegraph/extension-api-classes' +import { useQuery } from '@sourcegraph/http-client' +import { ExtensionsControllerProps } from '@sourcegraph/shared/src/extensions/controller' +import { PlatformContextProps } from '@sourcegraph/shared/src/platform/context' +import { SettingsCascadeProps } from '@sourcegraph/shared/src/settings/settings' +import { TelemetryProps } from '@sourcegraph/shared/src/telemetry/telemetryService' +import { Code, LoadingSpinner, Text } from '@sourcegraph/wildcard' + +import { + HighlightResponseFormat, + ReferencesPanelHighlightedBlobResult, + ReferencesPanelHighlightedBlobVariables, +} from '../graphql-operations' +import { SearchPanelConfig } from '../repo/blob/codemirror/search' +import { CodeMirrorBlob } from '../repo/blob/CodeMirrorBlob' + +import { FETCH_HIGHLIGHTED_BLOB } from './ReferencesPanelQueries' + +import styles from './ReferencesPanel.module.scss' + +export interface SideBlobProps + extends TelemetryProps, + SettingsCascadeProps, + PlatformContextProps, + ExtensionsControllerProps { + repository: string + commitID: string + file: string + activeURL?: string + position?: Position + blobNav?: (url: string) => void + wrapLines?: boolean + navigateToLineOnAnyClick?: boolean + searchPanelConfig?: SearchPanelConfig + className?: string +} + +export const SideBlob: FC<SideBlobProps> = props => { + const { + activeURL, + repository, + commitID, + file, + blobNav, + wrapLines = true, + navigateToLineOnAnyClick = true, + searchPanelConfig, + extensionsController, + settingsCascade, + telemetryService, + platformContext, + className, + } = props + + const { data, error, loading } = useQuery< + ReferencesPanelHighlightedBlobResult, + ReferencesPanelHighlightedBlobVariables + >(FETCH_HIGHLIGHTED_BLOB, { + variables: { + repository: props.repository, + commit: props.commitID, + path: props.file, + format: HighlightResponseFormat.JSON_SCIP, + }, + // Cache this data but always re-request it in the background when we revisit + // this page to pick up newer changes. + fetchPolicy: 'cache-and-network', + nextFetchPolicy: 'network-only', + }) + + // If we're loading and haven't received any data yet + if (loading && !data) { + return ( + <> + <LoadingSpinner inline={false} className="mx-auto my-4" /> + <Text alignment="center" className="text-muted"> + <i> + Loading <Code>{props.file}</Code>... + </i> + </Text> + </> + ) + } + + // If we received an error before we had received any data + if (error && !data) { + return ( + <div> + <Text className="text-danger"> + Loading <Code>{props.file}</Code> failed: + </Text> + <pre>{error.message}</pre> + </div> + ) + } + + // If there weren't any errors and we just didn't receive any data + if (!data?.repository?.commit?.blob?.highlight) { + return <>Nothing found</> + } + + const { lsif } = data?.repository?.commit?.blob?.highlight + + // TODO: display a helpful message if syntax highlighting aborted, see https://github.com/sourcegraph/sourcegraph/issues/40841 + + return ( + <CodeMirrorBlob + activeURL={activeURL} + nav={blobNav} + wrapCode={wrapLines} + navigateToLineOnAnyClick={navigateToLineOnAnyClick} + blobInfo={{ + lsif: lsif ?? '', + commitID, + filePath: file, + repoName: repository, + revision: commitID, + content: data?.repository?.commit?.blob?.content ?? '', + mode: 'lspmode', + }} + searchPanelConfig={searchPanelConfig} + className={classNames(className, styles.sideBlobCode)} + platformContext={platformContext} + extensionsController={extensionsController} + settingsCascade={settingsCascade} + telemetryService={telemetryService} + /> + ) +} diff --git a/client/web/src/components/AppRouterContainer/AppRouterContainer.tsx b/client/web/src/components/AppRouterContainer/AppRouterContainer.tsx index 7b0b3a3fd51f1..bf70f7cf1a73e 100644 --- a/client/web/src/components/AppRouterContainer/AppRouterContainer.tsx +++ b/client/web/src/components/AppRouterContainer/AppRouterContainer.tsx @@ -2,7 +2,7 @@ import React, { type HTMLAttributes, useRef } from 'react' import classNames from 'classnames' -import { useScrollManager } from '../../hooks' +import { useScrollManager } from '@sourcegraph/wildcard' import styles from './AppRouterContainer.module.scss' diff --git a/client/web/src/hooks/index.ts b/client/web/src/hooks/index.ts index a68f083af54c9..eba0f4e311b45 100644 --- a/client/web/src/hooks/index.ts +++ b/client/web/src/hooks/index.ts @@ -1,4 +1,3 @@ export { useHandleSubmitFeedback } from './useHandleSubmitFeedback' export { useRoutesMatch } from './useRoutesMatch' export { useURLSyncedState } from './useUrlSyncedState' -export { useScrollManager } from './useScrollManager' diff --git a/client/web/src/nav/new-global-navigation/NewGlobalNavigationBar.tsx b/client/web/src/nav/new-global-navigation/NewGlobalNavigationBar.tsx index 0516125d73f08..bc8606d0f8808 100644 --- a/client/web/src/nav/new-global-navigation/NewGlobalNavigationBar.tsx +++ b/client/web/src/nav/new-global-navigation/NewGlobalNavigationBar.tsx @@ -8,7 +8,7 @@ import MagnifyIcon from 'mdi-react/MagnifyIcon' import { NavLink, useLocation, useNavigate } from 'react-router-dom' import shallow from 'zustand/shallow' -import { Toggles } from '@sourcegraph/branded/src' +import { Toggles } from '@sourcegraph/branded' import { SearchQueryState, SubmitSearchParameters } from '@sourcegraph/shared/src/search' import { TelemetryProps } from '@sourcegraph/shared/src/telemetry/telemetryService' import { useIsLightTheme } from '@sourcegraph/shared/src/theme' diff --git a/client/web/src/notebooks/blocks/query/NotebookQueryBlock.tsx b/client/web/src/notebooks/blocks/query/NotebookQueryBlock.tsx index a9fff999d5f7c..06ded49af3660 100644 --- a/client/web/src/notebooks/blocks/query/NotebookQueryBlock.tsx +++ b/client/web/src/notebooks/blocks/query/NotebookQueryBlock.tsx @@ -203,6 +203,7 @@ export const NotebookQueryBlock: React.FunctionComponent<React.PropsWithChildren submitSearch={submitSearch} caseSensitive={caseSensitive} searchQueryFromURL={submittedURLQuery} + showQueryExamplesOnNoResultsPage={false} /> </div> )} diff --git a/client/web/src/repo/RepoRevisionContainer.tsx b/client/web/src/repo/RepoRevisionContainer.tsx index ec2b6fdaaecc6..025cd61a8845e 100644 --- a/client/web/src/repo/RepoRevisionContainer.tsx +++ b/client/web/src/repo/RepoRevisionContainer.tsx @@ -219,9 +219,9 @@ export const RepoRevisionContainer: FC<RepoRevisionContainerProps> = props => { </Routes> {resolvedRevision && !isPackage && ( <RepoHeaderContributionPortal - position="right" - priority={3} id="go-to-permalink" + priority={3} + position="right" repoHeaderContributionsLifecycleProps={props.repoHeaderContributionsLifecycleProps} > {context => ( diff --git a/client/web/src/repo/blob/CodeMirrorBlob.tsx b/client/web/src/repo/blob/CodeMirrorBlob.tsx index ce144d73c85fa..7efce76288b95 100644 --- a/client/web/src/repo/blob/CodeMirrorBlob.tsx +++ b/client/web/src/repo/blob/CodeMirrorBlob.tsx @@ -56,7 +56,7 @@ import { linkify } from './codemirror/links' import { lockFirstVisibleLine } from './codemirror/lock-line' import { navigateToLineOnAnyClickExtension } from './codemirror/navigate-to-any-line-on-click' import { scipSnapshot } from './codemirror/scip-snapshot' -import { search } from './codemirror/search' +import { search, SearchPanelConfig } from './codemirror/search' import { sourcegraphExtensions } from './codemirror/sourcegraph-extensions' import { codyWidgetExtension } from './codemirror/tooltips/CodyTooltip' import { HovercardView } from './codemirror/tooltips/HovercardView' @@ -112,6 +112,7 @@ export interface BlobProps blameHunks?: BlameHunkData activeURL?: string + searchPanelConfig?: SearchPanelConfig } export interface BlobPropsFacet extends BlobProps { @@ -185,6 +186,9 @@ const staticExtensions: Extension = [ '.highlighted-line': { backgroundColor: 'var(--code-selection-bg)', }, + '.cm-panels-top': { + borderBottom: '1px solid var(--border-color)', + }, }), hideEmptyLastLine, linkify, @@ -204,6 +208,7 @@ export const CodeMirrorBlob: React.FunctionComponent<BlobProps> = props => { navigateToLineOnAnyClick, overrideBrowserSearchKeybinding, + searchPanelConfig, 'data-testid': dataTestId, } = props @@ -343,14 +348,6 @@ export const CodeMirrorBlob: React.FunctionComponent<BlobProps> = props => { : undefined ) : [], - search({ - // useFileSearch is not a dependency because the search - // extension manages its own state. This is just the initial - // value - overrideBrowserFindInPageShortcut: useFileSearch, - onOverrideBrowserFindInPageToggle: setUseFileSearch, - navigate, - }), pinnedTooltip, navigateToLineOnAnyClick ? navigateToLineOnAnyClickExtension(navigate) : codeIntelExtension, syntaxHighlight.of(blobInfo), @@ -370,6 +367,7 @@ export const CodeMirrorBlob: React.FunctionComponent<BlobProps> = props => { // value overrideBrowserFindInPageShortcut: useFileSearch, onOverrideBrowserFindInPageToggle: setUseFileSearch, + initialState: searchPanelConfig, navigate, }), ], diff --git a/client/web/src/repo/blob/codemirror/search.tsx b/client/web/src/repo/blob/codemirror/search.tsx index e9454a03f7498..ec5986690baca 100644 --- a/client/web/src/repo/blob/codemirror/search.tsx +++ b/client/web/src/repo/blob/codemirror/search.tsx @@ -56,6 +56,7 @@ import { Keybindings } from '../../../components/KeyboardShortcutsHelp/KeyboardS import { createElement } from '../../../util/dom' import { CodeMirrorContainer } from './react-interop' +import { SearchPanelViewMode } from './types' import styles from './search.module.scss' @@ -80,6 +81,13 @@ export const BLOB_SEARCH_CONTAINER_ID = 'blob-search-container' const focusSearchInput = StateEffect.define<boolean>() +export interface SearchPanelConfig { + searchValue: string + regexp: boolean + caseSensitive: boolean + mode: SearchPanelViewMode +} + interface SearchPanelState { searchQuery: SearchQuery // The input value is usually derived from searchQuery. But we are @@ -90,6 +98,7 @@ interface SearchPanelState { matches: SearchMatches // Currently selected 1-based match index. currentMatchIndex: number | null + mode: SearchPanelViewMode } class SearchPanel implements Panel { @@ -102,7 +111,7 @@ class SearchPanel implements Panel { private searchTerm = new Subject<string>() private subscriptions = new Subscription() - constructor(private view: EditorView, private navigate: NavigateFunction) { + constructor(private view: EditorView, private navigate: NavigateFunction, config?: SearchPanelConfig) { this.dom = createElement('div', { className: 'cm-sg-search-container d-flex align-items-center', id: BLOB_SEARCH_CONTAINER_ID, @@ -112,11 +121,17 @@ class SearchPanel implements Panel { const searchQuery = getSearchQuery(this.view.state) const matches = calculateMatches(searchQuery, view.state.doc) this.state = { - searchQuery, - inputValue: searchQuery.search, + searchQuery: new SearchQuery({ + ...searchQuery, + caseSensitive: config?.caseSensitive ?? searchQuery.caseSensitive, + regexp: config?.regexp ?? searchQuery.regexp, + search: config?.searchValue ?? searchQuery.search, + }), + inputValue: config?.searchValue ?? searchQuery.search, overrideBrowserSearch: this.view.state.field(overrideBrowserFindInPageShortcut), matches, currentMatchIndex: getMatchIndexForSelection(matches, view.state.selection.main), + mode: config?.mode ?? SearchPanelViewMode.FullSearch, } this.subscriptions.add( @@ -191,12 +206,14 @@ class SearchPanel implements Panel { overrideBrowserSearch, currentMatchIndex, matches, + mode, }: SearchPanelState): void { if (!this.root) { this.root = createRoot(this.dom) } const totalMatches = matches.size + const isFullMode = mode === SearchPanelViewMode.FullSearch this.root.render( <CodeMirrorContainer @@ -273,27 +290,29 @@ class SearchPanel implements Panel { </div> ) : null} - <div className="ml-auto"> - <Label className="mb-0"> - <Toggle - className="mr-1 align-text-bottom" - value={overrideBrowserSearch} - onToggle={this.setOverrideBrowserSearch} - /> - {searchKeybinding} - </Label> - {searchKeybindingTooltip} - <span className={classNames(styles.closeButton, 'ml-4')}> - <Icon - className={classNames(styles.x)} - onClick={() => closeSearchPanel(this.view)} - size="sm" - svgPath={mdiClose} - aria-hidden={false} - aria-label="close search" - /> - </span> - </div> + {isFullMode && ( + <div className="ml-auto"> + <Label className="mb-0"> + <Toggle + className="mr-1 align-text-bottom" + value={overrideBrowserSearch} + onToggle={this.setOverrideBrowserSearch} + /> + {searchKeybinding} + </Label> + {searchKeybindingTooltip} + <span className={classNames(styles.closeButton, 'ml-4')}> + <Icon + className={classNames(styles.x)} + onClick={() => closeSearchPanel(this.view)} + size="sm" + svgPath={mdiClose} + aria-hidden={false} + aria-label="close search" + /> + </span> + </div> + )} </CodeMirrorContainer> ) } @@ -506,6 +525,7 @@ interface SearchConfig { overrideBrowserFindInPageShortcut: boolean onOverrideBrowserFindInPageToggle: (enabled: boolean) => void navigate: NavigateFunction + initialState?: SearchPanelConfig } const [overrideBrowserFindInPageShortcut, , setOverrideBrowserFindInPageShortcut] = createUpdateableField(true) @@ -550,10 +570,12 @@ export function search(config: SearchConfig): Extension { theme, keymapCompartment.of(keymap.of(getKeyBindings(config.overrideBrowserFindInPageShortcut))), codemirrorSearch({ - createPanel: view => new SearchPanel(view, config.navigate), + createPanel: view => new SearchPanel(view, config.navigate, config.initialState), }), ViewPlugin.define(view => { - if (!config.overrideBrowserFindInPageShortcut) { + // If we have some initial state for the search bar this means we want + // to render it by default + if (!config.overrideBrowserFindInPageShortcut || config.initialState) { window.requestAnimationFrame(() => openSearchPanel(view)) } return {} diff --git a/client/web/src/repo/blob/codemirror/types.ts b/client/web/src/repo/blob/codemirror/types.ts new file mode 100644 index 0000000000000..3f6a9c7693a45 --- /dev/null +++ b/client/web/src/repo/blob/codemirror/types.ts @@ -0,0 +1,21 @@ +/** + * Blob UI search panels mode variations. The code mirror blob UI has + * inline search UI (you can open it with cmd + F), with which you can + * found any arbitrary matches based on this search value. + */ +export enum SearchPanelViewMode { + /** + * Plain inline search mode, + * renders search input, matches count and its controls, + * command F controls and info tooltip. + */ + FullSearch = 'full-search', + + /** + * This mode is experimental and was added only for blob UI + * file preview case. In file preview we shouldn't have UI like + * command F controls and info tooltip. In matches-only mode we + * render only search input and matches UI. + */ + MatchesOnly = 'matches-only', +} diff --git a/client/web/src/savedSearches/SavedSearchModal.tsx b/client/web/src/savedSearches/SavedSearchModal.tsx index e40fca2845dc9..cf1c384d3b4d9 100644 --- a/client/web/src/savedSearches/SavedSearchModal.tsx +++ b/client/web/src/savedSearches/SavedSearchModal.tsx @@ -11,7 +11,7 @@ import type { AuthenticatedUser } from '../auth' import styles from './SavedSearchModal.module.scss' interface Props extends SearchPatternTypeProps { - authenticatedUser: AuthenticatedUser | null + authenticatedUser: Pick<AuthenticatedUser, 'organizations' | 'username'> | null query?: string onDidCancel: () => void navigate: NavigateFunction diff --git a/client/web/src/search/SearchConsolePage.tsx b/client/web/src/search/SearchConsolePage.tsx index 114fb0d64f495..6fcab1e6f0a8d 100644 --- a/client/web/src/search/SearchConsolePage.tsx +++ b/client/web/src/search/SearchConsolePage.tsx @@ -132,6 +132,7 @@ export const SearchConsolePage: React.FunctionComponent<React.PropsWithChildren< submitSearch={submitSearch} caseSensitive={caseSensitive} searchQueryFromURL={submittedURLQuery} + showQueryExamplesOnNoResultsPage={false} /> ))} </div> diff --git a/client/web/src/search/results/CreateActions.module.scss b/client/web/src/search/results/CreateActions.module.scss deleted file mode 100644 index 716f997747502..0000000000000 --- a/client/web/src/search/results/CreateActions.module.scss +++ /dev/null @@ -1,14 +0,0 @@ -$collapse-breakpoint: 1400px; - -.button { - // Adapted from client/wildcard/src/global-styles/breakpoints.scss. - @media (max-width: #{$collapse-breakpoint - .02}) { - display: none; - } -} - -.menu { - @media (min-width: $collapse-breakpoint) { - display: none; - } -} diff --git a/client/web/src/search/results/CreateActionsMenu.tsx b/client/web/src/search/results/CreateActionsMenu.tsx deleted file mode 100644 index 9560e4d79439b..0000000000000 --- a/client/web/src/search/results/CreateActionsMenu.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import React from 'react' - -import { mdiPlus } from '@mdi/js' -import classNames from 'classnames' - -import { Position, Menu, MenuButton, MenuList, MenuLink, Icon, Link, Tooltip } from '@sourcegraph/wildcard' - -import type { AuthenticatedUser } from '../../auth' - -import type { CreateAction } from './createActions' - -import createActionsStyles from './CreateActions.module.scss' -import navStyles from './SearchResultsInfoBar.module.scss' - -export interface CreateActionsMenuProps { - createActions: CreateAction[] - createCodeMonitorAction: CreateAction | null - canCreateMonitor: boolean - authenticatedUser: Pick<AuthenticatedUser, 'id'> | null -} - -export const CreateActionsMenu: React.FunctionComponent<CreateActionsMenuProps> = ({ - createActions, - createCodeMonitorAction, - canCreateMonitor, - authenticatedUser, -}) => ( - <Menu> - {({ isExpanded }) => ( - <> - <li className={classNames('mr-2', createActionsStyles.menu, navStyles.navItem)}> - <MenuButton - className={classNames('d-flex align-items-center text-decoration-none')} - aria-label={`${isExpanded ? 'Close' : 'Open'} create actions menu`} - variant="secondary" - outline={true} - size="sm" - > - <Icon aria-hidden={true} className="mr-1" svgPath={mdiPlus} /> - Create ā€¦ - </MenuButton> - </li> - <MenuList tabIndex={0} position={Position.bottomStart} aria-label="Create Actions. Open menu"> - {createActions.map(createAction => ( - <MenuLink key={createAction.label} as={Link} to={createAction.url}> - <Icon - aria-hidden="true" - className="mr-1" - {...(typeof createAction.icon === 'string' - ? { svgPath: createAction.icon } - : { as: createAction.icon })} - /> - {createAction.label} - </MenuLink> - ))} - {createCodeMonitorAction && ( - <Tooltip - content={ - authenticatedUser && !canCreateMonitor - ? 'Code monitors only support type:diff or type:commit searches.' - : undefined - } - > - <MenuLink - as={Link} - disabled={!authenticatedUser || !canCreateMonitor} - to={createCodeMonitorAction.url} - > - <Icon - aria-hidden={true} - className="mr-1" - {...(typeof createCodeMonitorAction.icon === 'string' - ? { svgPath: createCodeMonitorAction.icon } - : { as: createCodeMonitorAction.icon })} - /> - Create Monitor - </MenuLink> - </Tooltip> - )} - </MenuList> - </> - )} - </Menu> -) diff --git a/client/web/src/search/results/StreamingSearchResults.story.tsx b/client/web/src/search/results/StreamingSearchResults.story.tsx index aec9c2652c63d..b84344a06e612 100644 --- a/client/web/src/search/results/StreamingSearchResults.story.tsx +++ b/client/web/src/search/results/StreamingSearchResults.story.tsx @@ -45,7 +45,7 @@ const defaultProps: StreamingSearchResultsProps = { subjects: null, final: null, }, - platformContext: { settings: NEVER, requestGraphQL: () => EMPTY, sourcegraphURL: 'https://sourcegraph.com' }, + platformContext: { settings: NEVER, requestGraphQL: () => EMPTY, sourcegraphURL: 'https://sourcegraph.com' } as any, streamSearch: () => of(streamingSearchResult), @@ -55,6 +55,7 @@ const defaultProps: StreamingSearchResultsProps = { searchAggregationEnabled: true, codeMonitoringEnabled: true, ownEnabled: true, + extensionsController: {} as any, } const decorator: Decorator = Story => { diff --git a/client/web/src/search/results/StreamingSearchResults.test.tsx b/client/web/src/search/results/StreamingSearchResults.test.tsx index 68e49b4689fdf..2e8b2535219fe 100644 --- a/client/web/src/search/results/StreamingSearchResults.test.tsx +++ b/client/web/src/search/results/StreamingSearchResults.test.tsx @@ -42,7 +42,11 @@ describe('StreamingSearchResults', () => { subjects: null, final: null, }, - platformContext: { settings: NEVER, requestGraphQL: () => EMPTY, sourcegraphURL: 'https://sourcegraph.com' }, + platformContext: { + settings: NEVER, + requestGraphQL: () => EMPTY, + sourcegraphURL: 'https://sourcegraph.com', + } as any, streamSearch: () => of(MULTIPLE_SEARCH_RESULT), @@ -52,6 +56,7 @@ describe('StreamingSearchResults', () => { searchAggregationEnabled: false, codeMonitoringEnabled: true, ownEnabled: true, + extensionsController: {} as any, } const revisionsMockResponses = generateMockedResponses(GitRefType.GIT_BRANCH, 5, 'github.com/golang/oauth2') diff --git a/client/web/src/search/results/StreamingSearchResults.tsx b/client/web/src/search/results/StreamingSearchResults.tsx index 462a09cd01db9..db04554b438a6 100644 --- a/client/web/src/search/results/StreamingSearchResults.tsx +++ b/client/web/src/search/results/StreamingSearchResults.tsx @@ -1,73 +1,48 @@ import { type FC, useCallback, useEffect, useMemo, useState } from 'react' -import classNames from 'classnames' import { useLocation, useNavigate } from 'react-router-dom' import type { Observable } from 'rxjs' -import { limitHit, StreamingProgress, StreamingSearchResultsList } from '@sourcegraph/branded' -import { asError } from '@sourcegraph/common' +import { limitHit } from '@sourcegraph/branded' import type { FetchFileParameters } from '@sourcegraph/shared/src/backend/file' -import type { FilePrefetcher } from '@sourcegraph/shared/src/components/PrefetchableFile' -import { HighlightResponseFormat, SearchPatternType } from '@sourcegraph/shared/src/graphql-operations' +import { ExtensionsControllerProps } from '@sourcegraph/shared/src/extensions/controller' +import { SearchPatternType } from '@sourcegraph/shared/src/graphql-operations' import type { PlatformContextProps } from '@sourcegraph/shared/src/platform/context' import type { QueryUpdate, SearchContextProps } from '@sourcegraph/shared/src/search' -import { collectMetrics } from '@sourcegraph/shared/src/search/query/metrics' -import { sanitizeQueryForTelemetry, updateFilters } from '@sourcegraph/shared/src/search/query/transformer' -import { - type AlertKind, - LATEST_VERSION, - type SmartSearchAlertKind, - type StreamSearchOptions, -} from '@sourcegraph/shared/src/search/stream' +import { updateFilters } from '@sourcegraph/shared/src/search/query/transformer' +import { LATEST_VERSION, type StreamSearchOptions } from '@sourcegraph/shared/src/search/stream' import { type SettingsCascadeProps, useExperimentalFeatures } from '@sourcegraph/shared/src/settings/settings' -import { useTemporarySetting } from '@sourcegraph/shared/src/settings/temporary/useTemporarySetting' import type { TelemetryProps } from '@sourcegraph/shared/src/telemetry/telemetryService' import type { SearchAggregationProps, SearchStreamingProps } from '..' import type { AuthenticatedUser } from '../../auth' import type { CodeMonitoringProps } from '../../codeMonitoring' -import { PageTitle } from '../../components/PageTitle' import { formatUrlOverrideFeatureFlags } from '../../featureFlags/lib/parseUrlOverrideFeatureFlags' import { useFeatureFlag } from '../../featureFlags/useFeatureFlag' import { useFeatureFlagOverrides } from '../../featureFlags/useFeatureFlagOverrides' import type { CodeInsightsProps } from '../../insights/types' import type { OwnConfigProps } from '../../own/OwnConfigProps' -import { fetchBlob } from '../../repo/blob/backend' -import { SavedSearchModal } from '../../savedSearches/SavedSearchModal' -import { isSearchJobsEnabled } from '../../search-jobs/utility' -import { - buildSearchURLQueryFromQueryState, - setSearchMode, - useDeveloperSettings, - useNavbarQueryState, -} from '../../stores' -import { GettingStartedTour } from '../../tour/GettingStartedTour' -import { useShowOnboardingTour } from '../../tour/hooks' +import { useDeveloperSettings, useNavbarQueryState } from '../../stores' import { submitSearch } from '../helpers' import { useRecentSearches } from '../input/useRecentSearches' -import { DidYouMean } from '../suggestion/DidYouMean' -import { SmartSearch, smartSearchEvent } from '../suggestion/SmartSearch' -import { AggregationUIMode, SearchAggregationResult, useAggregationUIMode } from './components/aggregation' -import { SearchResultsCsvExportModal } from './export/SearchResultsCsvExportModal' -import { SearchAlert } from './SearchAlert' +import { useAggregationUIMode } from './components/aggregation' +import { NewSearchContent } from './components/new-search-content/NewSearchContent' +import { SearchContent } from './components/search-content/SearchContent' import { useCachedSearchResults } from './SearchResultsCacheProvider' -import { SearchResultsInfoBar } from './SearchResultsInfoBar' -import { SearchFiltersSidebar } from './sidebar/SearchFiltersSidebar' -import { UnownedResultsAlert } from './UnownedResultsAlert' - -import styles from './StreamingSearchResults.module.scss' +import { useStreamingSearchPings } from './useStreamingSearchPings' export interface StreamingSearchResultsProps extends SearchStreamingProps, Pick<SearchContextProps, 'selectedSearchContextSpec' | 'searchContextsEnabled'>, SettingsCascadeProps, - PlatformContextProps<'settings' | 'requestGraphQL' | 'sourcegraphURL'>, + PlatformContextProps, TelemetryProps, CodeInsightsProps, SearchAggregationProps, CodeMonitoringProps, - OwnConfigProps { + OwnConfigProps, + ExtensionsControllerProps { authenticatedUser: AuthenticatedUser | null isSourcegraphDotCom: boolean fetchHighlightedFileLineRanges: (parameters: FetchFileParameters, force?: boolean) => Observable<string[][]> @@ -82,18 +57,17 @@ export const StreamingSearchResults: FC<StreamingSearchResultsProps> = props => searchAggregationEnabled, codeMonitoringEnabled, platformContext, + extensionsController, } = props const location = useLocation() const navigate = useNavigate() + const { addRecentSearch } = useRecentSearches() + const featureOverrides = useFeatureFlagOverrides() // Feature flags - const prefetchFileEnabled = useExperimentalFeatures(features => features.enableSearchFilePrefetch ?? false) - const [enableSearchResultsKeyboardNavigation] = useFeatureFlag('search-results-keyboard-navigation', true) const [enableRepositoryMetadata] = useFeatureFlag('repository-metadata', true) - const [sidebarCollapsed, setSidebarCollapsed] = useTemporarySetting('search.sidebar.collapsed', false) - - const showOnboardingTour = useShowOnboardingTour({ authenticatedUser, isSourcegraphDotCom }) + const newSearchNavigation = useExperimentalFeatures(features => features.newSearchNavigationUI ?? false) // Global state const caseSensitive = useNavbarQueryState(state => state.searchCaseSensitivity) @@ -106,14 +80,9 @@ export const StreamingSearchResults: FC<StreamingSearchResultsProps> = props => const submitQuerySearch = useNavbarQueryState(state => state.submitSearch) const [aggregationUIMode] = useAggregationUIMode() - // Local state - const [showMobileSidebar, setShowMobileSidebar] = useState(false) - // Derived state const trace = useMemo(() => new URLSearchParams(location.search).get('trace') ?? undefined, [location.search]) const { searchOptions } = useDeveloperSettings(settings => settings.zoekt) - const featureOverrides = useFeatureFlagOverrides() - const { addRecentSearch } = useRecentSearches() const options: StreamSearchOptions = useMemo( () => ({ @@ -128,97 +97,14 @@ export const StreamingSearchResults: FC<StreamingSearchResultsProps> = props => }), [patternType, caseSensitive, trace, featureOverrides, searchMode, searchOptions] ) - const results = useCachedSearchResults(streamSearch, submittedURLQuery, options, telemetryService) - const resultsLength = results?.results.length || 0 - const logSearchResultClicked = useCallback( - (index: number, type: string) => { - telemetryService.log('SearchResultClicked') - // This data ends up in Prometheus and is not part of the ping payload. - telemetryService.log('search.ranking.result-clicked', { - index, - type, - resultsLength, - }) - }, - [telemetryService, resultsLength] - ) - - // Log view event on first load - useEffect( - () => { - telemetryService.logViewEvent('SearchResults') - }, - // Only log view on initial load - // eslint-disable-next-line react-hooks/exhaustive-deps - [] - ) - - // Log search query event when URL changes - useEffect(() => { - const metrics = submittedURLQuery ? collectMetrics(submittedURLQuery) : undefined - - telemetryService.log( - 'SearchResultsQueried', - { - code_search: { - query_data: { - query: metrics, - combined: submittedURLQuery, - empty: !submittedURLQuery, - }, - }, - }, - { - code_search: { - query_data: { - // šŸšØ PRIVACY: never provide any private query data in the - // { code_search: query_data: query } property, - // which is also potentially exported in pings data. - query: metrics, - - // šŸšØ PRIVACY: Only collect the full query string for unauthenticated users - // on Sourcegraph.com, and only after sanitizing to remove certain filters. - combined: - !authenticatedUser && isSourcegraphDotCom - ? sanitizeQueryForTelemetry(submittedURLQuery) - : undefined, - empty: !submittedURLQuery, - }, - }, - } - ) - // Only log when the query changes - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [submittedURLQuery]) - - // Log events when search completes or fails - useEffect(() => { - if (results?.state === 'complete') { - telemetryService.log('SearchResultsFetched', { - code_search: { - // šŸšØ PRIVACY: never provide any private data in { code_search: { results } }. - query_data: { - combined: submittedURLQuery, - }, - results: { - results_count: results.progress.matchCount, - limit_hit: limitHit(results.progress), - any_cloning: results.progress.skipped.some(skipped => skipped.reason === 'repository-cloning'), - alert: results.alert ? results.alert.title : null, - }, - }, - }) - if (results.results.length > 0) { - telemetryService.log('SearchResultsNonEmpty') - } - } else if (results?.state === 'error') { - telemetryService.log('SearchResultsFetchFailed', { - code_search: { error_message: asError(results.error).message }, - }) - } - }, [results, submittedURLQuery, telemetryService]) + const { logSearchResultClicked } = useStreamingSearchPings({ + telemetryService, + isSourcegraphDotCom, + results, + isAuauthenticated: !!authenticatedUser, + }) useEffect(() => { if (results?.state === 'complete') { @@ -230,51 +116,18 @@ export const StreamingSearchResults: FC<StreamingSearchResultsProps> = props => } }, [addRecentSearch, results, submittedURLQuery]) - useEffect(() => { - if ( - (results?.alert?.kind === 'smart-search-additional-results' || - results?.alert?.kind === 'smart-search-pure-results') && - results?.alert?.title && - results.alert.proposedQueries - ) { - const events = smartSearchEvent( - results.alert.kind, - results.alert.title, - results.alert.proposedQueries.map(entry => entry.description || '') - ) - for (const event of events) { - telemetryService.log(event) - } - } - }, [results, telemetryService]) - - // Reset expanded state when new search is started - useEffect(() => { - setAllExpanded(false) - }, [location.search]) - // Expand/contract all results const [allExpanded, setAllExpanded] = useState(false) + const onExpandAllResultsToggle = useCallback(() => { setAllExpanded(oldValue => !oldValue) telemetryService.log(allExpanded ? 'allResultsExpanded' : 'allResultsCollapsed') }, [allExpanded, telemetryService]) + useEffect(() => { setAllExpanded(false) // Reset expanded state when new search is started }, [location.search]) - // Save search - const [showSavedSearchModal, setShowSavedSearchModal] = useState(false) - const onSaveQueryClick = useCallback(() => setShowSavedSearchModal(true), []) - const onSaveQueryModalClose = useCallback(() => { - setShowSavedSearchModal(false) - telemetryService.log('SavedQueriesToggleCreating', { queries: { creating: false } }) - }, [telemetryService]) - - // Export results to CSV - const [showCsvExportModal, setShowCsvExportModal] = useState(false) - const onExportCsvClick = useCallback(() => setShowCsvExportModal(true), []) - const handleSidebarSearchSubmit = useCallback( /** * The `updatedSearchQuery` is required in case we synchronously update the search @@ -341,10 +194,6 @@ export const StreamingSearchResults: FC<StreamingSearchResultsProps> = props => }) } - const hasResultsToAggregate = results?.state === 'complete' ? (results?.results.length ?? 0) > 0 : true - - const showAggregationPanel = searchAggregationEnabled && hasResultsToAggregate - const onDisableSmartSearch = useCallback(() => { const { selectedSearchContextSpec } = props submitSearch({ @@ -358,171 +207,74 @@ export const StreamingSearchResults: FC<StreamingSearchResultsProps> = props => }) }, [caseSensitive, location, navigate, props, submittedURLQuery]) - const prefetchFile: FilePrefetcher = useCallback( - params => - fetchBlob({ - ...params, - format: HighlightResponseFormat.JSON_SCIP, - }), - [] - ) - - return ( - <div className={classNames(styles.container, sidebarCollapsed && styles.containerWithSidebarHidden)}> - <PageTitle key="page-title" title={submittedURLQuery} /> - - <SearchFiltersSidebar - liveQuery={liveQuery} - submittedURLQuery={submittedURLQuery} - patternType={patternType} - filters={results?.filters} - showAggregationPanel={showAggregationPanel} - selectedSearchContextSpec={props.selectedSearchContextSpec} - aggregationUIMode={aggregationUIMode} - settingsCascade={props.settingsCascade} - telemetryService={props.telemetryService} - caseSensitive={caseSensitive} - className={classNames(styles.sidebar, showMobileSidebar && styles.sidebarShowMobile)} - onNavbarQueryChange={setQueryState} - onSearchSubmit={handleSidebarSearchSubmit} - setSidebarCollapsed={setSidebarCollapsed} - > - {showOnboardingTour && ( - <GettingStartedTour - className="mb-1" - telemetryService={props.telemetryService} - authenticatedUser={authenticatedUser} - /> - )} - </SearchFiltersSidebar> - - {aggregationUIMode === AggregationUIMode.SearchPage && ( - <SearchAggregationResult - query={submittedURLQuery} - patternType={patternType} - caseSensitive={caseSensitive} - aria-label="Aggregation results panel" - className={styles.contents} - onQuerySubmit={handleSearchAggregationBarClick} - telemetryService={props.telemetryService} - /> - )} - - {aggregationUIMode !== AggregationUIMode.SearchPage && ( - <> - <SearchResultsInfoBar - {...props} - patternType={patternType} - caseSensitive={caseSensitive} - query={submittedURLQuery} - results={results} - options={options} - enableCodeMonitoring={codeMonitoringEnabled} - className={styles.infobar} - allExpanded={allExpanded} - onExpandAllResultsToggle={onExpandAllResultsToggle} - onSaveQueryClick={onSaveQueryClick} - onExportCsvClick={onExportCsvClick} - onShowMobileFiltersChanged={show => setShowMobileSidebar(show)} - sidebarCollapsed={!!sidebarCollapsed} - setSidebarCollapsed={setSidebarCollapsed} - stats={ - <StreamingProgress - query={`${submittedURLQuery} patterntype:${patternType}`} - progress={results?.progress || { durationMs: 0, matchCount: 0, skipped: [] }} - state={results?.state || 'loading'} - onSearchAgain={onSearchAgain} - showTrace={!!trace} - isSearchJobsEnabled={isSearchJobsEnabled()} - telemetryService={props.telemetryService} - /> - } - /> - - <div className={styles.contents}> - <DidYouMean - telemetryService={props.telemetryService} - query={submittedURLQuery} - patternType={patternType} - caseSensitive={caseSensitive} - selectedSearchContextSpec={props.selectedSearchContextSpec} - /> - - {results?.alert?.kind && isSmartSearchAlert(results.alert.kind) && ( - <SmartSearch alert={results?.alert} onDisableSmartSearch={onDisableSmartSearch} /> - )} - - <GettingStartedTour.Info - className="mt-2 mb-3" - isSourcegraphDotCom={props.isSourcegraphDotCom} - /> - - {showSavedSearchModal && ( - <SavedSearchModal - {...props} - navigate={navigate} - patternType={patternType} - query={submittedURLQuery} - authenticatedUser={authenticatedUser} - onDidCancel={onSaveQueryModalClose} - /> - )} - {showCsvExportModal && ( - <SearchResultsCsvExportModal - query={submittedURLQuery} - options={options} - results={results} - sourcegraphURL={platformContext.sourcegraphURL} - telemetryService={telemetryService} - onClose={() => setShowCsvExportModal(false)} - /> - )} - {results?.alert && (!results?.alert.kind || !isSmartSearchAlert(results.alert.kind)) && ( - <div className={classNames(styles.alertArea, 'mt-4')}> - {results?.alert?.kind === 'unowned-results' ? ( - <UnownedResultsAlert - alertTitle={results.alert.title} - alertDescription={results.alert.description} - queryState={queryState} - patternType={patternType} - caseSensitive={caseSensitive} - selectedSearchContextSpec={props.selectedSearchContextSpec} - /> - ) : ( - <SearchAlert - alert={results.alert} - caseSensitive={caseSensitive} - patternType={patternType} - /> - )} - </div> - )} + const hasResultsToAggregate = results?.state === 'complete' ? (results?.results.length ?? 0) > 0 : true + const showAggregationPanel = searchAggregationEnabled && hasResultsToAggregate - <StreamingSearchResultsList - {...props} - enableRepositoryMetadata={enableRepositoryMetadata} - results={results} - allExpanded={allExpanded} - executedQuery={location.search} - prefetchFileEnabled={prefetchFileEnabled} - prefetchFile={prefetchFile} - enableKeyboardNavigation={enableSearchResultsKeyboardNavigation} - showQueryExamplesOnNoResultsPage={true} - queryState={queryState} - setQueryState={setQueryState} - buildSearchURLQueryFromQueryState={buildSearchURLQueryFromQueryState} - searchMode={searchMode} - setSearchMode={setSearchMode} - submitSearch={submitSearch} - caseSensitive={caseSensitive} - searchQueryFromURL={submittedURLQuery} - selectedSearchContextSpec={props.selectedSearchContextSpec} - logSearchResultClicked={logSearchResultClicked} - /> - </div> - </> - )} - </div> + return !newSearchNavigation ? ( + <SearchContent + submittedURLQuery={submittedURLQuery} + queryState={queryState} + liveQuery={liveQuery} + allExpanded={allExpanded} + searchMode={searchMode} + trace={!!trace} + searchContextsEnabled={props.searchContextsEnabled} + patternType={patternType} + results={results} + showAggregationPanel={showAggregationPanel} + selectedSearchContextSpec={props.selectedSearchContextSpec} + aggregationUIMode={aggregationUIMode} + caseSensitive={caseSensitive} + authenticatedUser={authenticatedUser} + isSourcegraphDotCom={isSourcegraphDotCom} + enableRepositoryMetadata={enableRepositoryMetadata} + options={options} + codeMonitoringEnabled={codeMonitoringEnabled} + fetchHighlightedFileLineRanges={props.fetchHighlightedFileLineRanges} + onNavbarQueryChange={setQueryState} + onSearchSubmit={handleSidebarSearchSubmit} + onQuerySubmit={handleSearchAggregationBarClick} + onExpandAllResultsToggle={onExpandAllResultsToggle} + onSearchAgain={onSearchAgain} + onDisableSmartSearch={onDisableSmartSearch} + onLogSearchResultClick={logSearchResultClicked} + settingsCascade={props.settingsCascade} + telemetryService={telemetryService} + platformContext={platformContext} + /> + ) : ( + <NewSearchContent + submittedURLQuery={submittedURLQuery} + queryState={queryState} + liveQuery={liveQuery} + allExpanded={allExpanded} + searchMode={searchMode} + trace={!!trace} + searchContextsEnabled={props.searchContextsEnabled} + patternType={patternType} + results={results} + showAggregationPanel={showAggregationPanel} + selectedSearchContextSpec={props.selectedSearchContextSpec} + aggregationUIMode={aggregationUIMode} + caseSensitive={caseSensitive} + authenticatedUser={authenticatedUser} + isSourcegraphDotCom={isSourcegraphDotCom} + enableRepositoryMetadata={enableRepositoryMetadata} + options={options} + codeMonitoringEnabled={codeMonitoringEnabled} + fetchHighlightedFileLineRanges={props.fetchHighlightedFileLineRanges} + onNavbarQueryChange={setQueryState} + onSearchSubmit={handleSidebarSearchSubmit} + onQuerySubmit={handleSearchAggregationBarClick} + onExpandAllResultsToggle={onExpandAllResultsToggle} + onSearchAgain={onSearchAgain} + onDisableSmartSearch={onDisableSmartSearch} + onLogSearchResultClick={logSearchResultClicked} + settingsCascade={props.settingsCascade} + telemetryService={telemetryService} + platformContext={platformContext} + extensionsController={extensionsController} + /> ) } @@ -534,13 +286,3 @@ const applyAdditionalFilters = (query: string, additionalFilters: string[]): str } return newQuery } - -function isSmartSearchAlert(kind: AlertKind): kind is SmartSearchAlertKind { - switch (kind) { - case 'smart-search-additional-results': - case 'smart-search-pure-results': { - return true - } - } - return false -} diff --git a/client/web/src/search/results/SearchActionsMenu.tsx b/client/web/src/search/results/components/SearchActionsMenu.tsx similarity index 96% rename from client/web/src/search/results/SearchActionsMenu.tsx rename to client/web/src/search/results/components/SearchActionsMenu.tsx index c0e2d9bfeb909..175f537b615f1 100644 --- a/client/web/src/search/results/SearchActionsMenu.tsx +++ b/client/web/src/search/results/components/SearchActionsMenu.tsx @@ -17,11 +17,11 @@ import { Tooltip, } from '@sourcegraph/wildcard' -import type { AuthenticatedUser } from '../../auth' +import type { AuthenticatedUser } from '../../../auth' -import type { CreateAction } from './createActions' +import type { CreateAction } from './search-results-info-bar/createActions' -import navStyles from './SearchResultsInfoBar.module.scss' +import navStyles from './search-results-info-bar/SearchResultsInfoBar.module.scss' interface SearchActionsMenuProps { results?: AggregateStreamingSearchResults diff --git a/client/web/src/search/results/SearchAlert.tsx b/client/web/src/search/results/components/SearchAlert.tsx similarity index 97% rename from client/web/src/search/results/SearchAlert.tsx rename to client/web/src/search/results/components/SearchAlert.tsx index eff7ca7e795ff..acf22f7a9efb0 100644 --- a/client/web/src/search/results/SearchAlert.tsx +++ b/client/web/src/search/results/components/SearchAlert.tsx @@ -5,7 +5,7 @@ import type { AggregateStreamingSearchResults } from '@sourcegraph/shared/src/se import { buildSearchURLQuery } from '@sourcegraph/shared/src/util/url' import { Button, Link, Alert, H3, H4, Markdown } from '@sourcegraph/wildcard' -import { SearchPatternType } from '../../graphql-operations' +import { SearchPatternType } from '../../../graphql-operations' interface SearchAlertProps { alert: Required<AggregateStreamingSearchResults>['alert'] diff --git a/client/web/src/search/results/UnownedResultsAlert.tsx b/client/web/src/search/results/components/UnownedResultsAlert.tsx similarity index 97% rename from client/web/src/search/results/UnownedResultsAlert.tsx rename to client/web/src/search/results/components/UnownedResultsAlert.tsx index 9a2ba5f8b04a1..6baf46410c5f7 100644 --- a/client/web/src/search/results/UnownedResultsAlert.tsx +++ b/client/web/src/search/results/components/UnownedResultsAlert.tsx @@ -26,8 +26,8 @@ import { Link, } from '@sourcegraph/wildcard' -import { SearchPatternType } from '../../graphql-operations' -import { buildSearchURLQueryFromQueryState } from '../../stores' +import { SearchPatternType } from '../../../graphql-operations' +import { buildSearchURLQueryFromQueryState } from '../../../stores' export interface UnownedResultsAlertProps extends SearchPatternTypeProps, diff --git a/client/web/src/search/results/components/new-search-content/NewSearchContent.module.scss b/client/web/src/search/results/components/new-search-content/NewSearchContent.module.scss new file mode 100644 index 0000000000000..8640e6156ce44 --- /dev/null +++ b/client/web/src/search/results/components/new-search-content/NewSearchContent.module.scss @@ -0,0 +1,221 @@ +@import 'wildcard/src/global-styles/breakpoints'; + +.root { + width: 100%; + height: 100%; + // Since this container is rendered as flex child we + // use flex-grow to stretch it by all available height + flex-grow: 1; + + display: grid; + grid-template-rows: auto 1fr; + grid-template-columns: minmax(0, 1fr) auto auto; + grid-template-areas: + 'infobar preview sidebar-header ' + 'contents preview filters'; + + @media (--md-breakpoint-down) { + grid-template-columns: minmax(0, 1fr); + grid-template-rows: auto auto 1fr; + grid-template-areas: + 'infobar' + 'filters' + 'contents'; + + overflow: auto; + height: min-content; + } +} + +.filters { + display: contents; + + &-header { + grid-area: sidebar-header; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.5rem; + border-bottom: 1px solid var(--border-color-2); + background: var(--color-bg-1); + border-left: 1px solid var(--border-color-2); + + @media (--md-breakpoint-down) { + display: none; + } + } + + &-content { + grid-area: filters; + background: var(--color-bg-1); + border-left: 1px solid var(--border-color-2); + overflow: auto; + width: 17.5rem; + padding: 0.5rem; + + &::-webkit-scrollbar { + width: 0.5rem; + height: 0.5rem; + } + + &::-webkit-scrollbar-thumb { + background-color: var(--oc-gray-4); + } + + &::-webkit-scrollbar-track { + background-color: var(--oc-gray-1); + } + + @-moz-document url-prefix('') { + scrollbar-width: thin; + scrollbar-color: var(--oc-gray-1); + } + + :global(.theme-dark) & { + &::-webkit-scrollbar-thumb { + background-color: var(--oc-gray-8); + } + + &::-webkit-scrollbar-track { + background-color: var(--oc-gray-7); + } + + @-moz-document url-prefix('') { + scrollbar-width: thin; + scrollbar-color: var(--oc-gray-6); + } + } + + @media (--md-breakpoint-down) { + display: flex; + width: 100%; + flex-direction: row; + flex-wrap: wrap; + column-gap: 1.5rem; + overflow: unset; + } + } +} + +.infobar { + grid-area: infobar; + padding: 0.3rem 0.5rem; + background: var(--color-bg-1); + border-bottom: 1px solid var(--border-color-2); + min-height: 41px; +} + +.content { + grid-area: contents; + overflow: auto; + padding: 0 0.5rem 0.5rem 0.5rem; + + &::-webkit-scrollbar { + width: 0.5rem; + height: 0.5rem; + } + + &::-webkit-scrollbar-thumb { + background-color: var(--oc-gray-4); + } + + &::-webkit-scrollbar-track { + background-color: var(--oc-gray-1); + } + + @-moz-document url-prefix('') { + scrollbar-width: thin; + scrollbar-color: var(--oc-gray-2); + } + + :global(.theme-dark) & { + &::-webkit-scrollbar-thumb { + background-color: var(--oc-gray-9); + } + + &::-webkit-scrollbar-track { + background-color: var(--oc-gray-8); + } + + @-moz-document url-prefix('') { + scrollbar-width: thin; + scrollbar-color: var(--oc-gray-6); + } + } +} + +.alert-area { + max-width: 65rem; + margin: auto; +} + +.preview { + display: flex; + flex-direction: column; + grid-area: preview; + height: 100%; + background-color: var(--color-bg-1); + border-left: 1px solid var(--border-color-2); + + &-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 0.71rem 0.5rem; + border-bottom: 1px solid var(--border-color-2); + min-height: 41px; + } + + &-file-link { + padding: 0.25rem 0.5rem; + background: var(--oc-gray-1); + overflow: hidden; + flex-shrink: 0; + width: 100%; + text-overflow: ellipsis; + + :global(.theme-dark) & { + background: var(--oc-gray-9); + } + } + + &-content { + height: auto; + flex-grow: 1; + + :global(.cm-scroller) { + &::-webkit-scrollbar { + width: 0.5rem; + height: 0.5rem; + } + + &::-webkit-scrollbar-thumb { + background-color: var(--oc-gray-4); + } + + &::-webkit-scrollbar-track { + background-color: var(--oc-gray-1); + } + + @-moz-document url-prefix('') { + scrollbar-width: thin; + scrollbar-color: var(--oc-gray-2); + } + + :global(.theme-dark) & { + &::-webkit-scrollbar-thumb { + background-color: var(--oc-gray-9); + } + + &::-webkit-scrollbar-track { + background-color: var(--oc-gray-8); + } + + @-moz-document url-prefix('') { + scrollbar-width: thin; + scrollbar-color: var(--oc-gray-6); + } + } + } + } +} diff --git a/client/web/src/search/results/components/new-search-content/NewSearchContent.tsx b/client/web/src/search/results/components/new-search-content/NewSearchContent.tsx new file mode 100644 index 0000000000000..f371c02b121f6 --- /dev/null +++ b/client/web/src/search/results/components/new-search-content/NewSearchContent.tsx @@ -0,0 +1,414 @@ +import { + FC, + HTMLAttributes, + PropsWithChildren, + Suspense, + useCallback, + useEffect, + useLayoutEffect, + useMemo, + useRef, +} from 'react' + +import { mdiClose } from '@mdi/js' +import classNames from 'classnames' +import { Observable } from 'rxjs' + +import { StreamingProgress, StreamingSearchResultsList, useSearchResultState } from '@sourcegraph/branded' +import { FetchFileParameters } from '@sourcegraph/shared/src/backend/file' +import { FilePrefetcher } from '@sourcegraph/shared/src/components/PrefetchableFile' +import { ExtensionsControllerProps } from '@sourcegraph/shared/src/extensions/controller' +import { HighlightResponseFormat, SearchPatternType } from '@sourcegraph/shared/src/graphql-operations' +import { PlatformContextProps } from '@sourcegraph/shared/src/platform/context' +import { QueryState, QueryStateUpdate, QueryUpdate, SearchMode } from '@sourcegraph/shared/src/search' +import { stringHuman } from '@sourcegraph/shared/src/search/query/printer' +import { scanSearchQuery } from '@sourcegraph/shared/src/search/query/scanner' +import { + AggregateStreamingSearchResults, + ContentMatch, + getFileMatchUrl, + PathMatch, + StreamSearchOptions, +} from '@sourcegraph/shared/src/search/stream' +import { SettingsCascadeProps } from '@sourcegraph/shared/src/settings/settings' +import { NOOP_TELEMETRY_SERVICE, TelemetryProps } from '@sourcegraph/shared/src/telemetry/telemetryService' +import { lazyComponent } from '@sourcegraph/shared/src/util/lazyComponent' +import { Button, Icon, H2, H4, useScrollManager, Panel, useLocalStorage, Link } from '@sourcegraph/wildcard' + +import { AuthenticatedUser } from '../../../../auth' +import { fetchBlob } from '../../../../repo/blob/backend' +import type { SearchPanelConfig } from '../../../../repo/blob/codemirror/search' +import { SearchPanelViewMode } from '../../../../repo/blob/codemirror/types' +import { isSearchJobsEnabled } from '../../../../search-jobs/utility' +import { buildSearchURLQueryFromQueryState, setSearchMode } from '../../../../stores' +import { GettingStartedTour } from '../../../../tour/GettingStartedTour' +import { submitSearch } from '../../../helpers' +import { DidYouMean } from '../../../suggestion/DidYouMean' +import { SmartSearch } from '../../../suggestion/SmartSearch' +import { SearchFiltersSidebar } from '../../sidebar/SearchFiltersSidebar' +import { AggregationUIMode, SearchAggregationResult } from '../aggregation' +import { SearchResultsInfoBar } from '../search-results-info-bar/SearchResultsInfoBar' +import { SearchAlert } from '../SearchAlert' +import { UnownedResultsAlert } from '../UnownedResultsAlert' +import { isSmartSearchAlert } from '../utils' + +import styles from './NewSearchContent.module.scss' + +const LazySideBlob = lazyComponent(() => import('../../../../codeintel/SideBlob'), 'SideBlob') + +/** + * At the moment search result preview panel supports only + * blob-like type of search results to preview. + */ +type SearchResultPreview = ContentMatch | PathMatch + +interface NewSearchContentProps + extends TelemetryProps, + SettingsCascadeProps, + PlatformContextProps, + ExtensionsControllerProps { + submittedURLQuery: string + queryState: QueryState + liveQuery: string + allExpanded: boolean + searchMode: SearchMode + trace: boolean + searchContextsEnabled: boolean + patternType: SearchPatternType + results: AggregateStreamingSearchResults | undefined + showAggregationPanel: boolean + selectedSearchContextSpec: string | undefined + aggregationUIMode: AggregationUIMode + caseSensitive: boolean + authenticatedUser: AuthenticatedUser | null + isSourcegraphDotCom: boolean + enableRepositoryMetadata: boolean + options: StreamSearchOptions + codeMonitoringEnabled: boolean + fetchHighlightedFileLineRanges: (parameters: FetchFileParameters, force?: boolean) => Observable<string[][]> + onNavbarQueryChange: (queryState: QueryStateUpdate) => void + onSearchSubmit: (updates: QueryUpdate[], updatedSearchQuery?: string) => void + onQuerySubmit: (newQuery: string, updatedQuerySearch: string) => void + onExpandAllResultsToggle: () => void + onSearchAgain: (additionalFilters: string[]) => void + onDisableSmartSearch: () => void + onLogSearchResultClick: (index: number, type: string, resultsLength: number) => void +} + +export const NewSearchContent: FC<NewSearchContentProps> = props => { + const { + searchMode, + submittedURLQuery, + liveQuery, + queryState, + allExpanded, + trace, + patternType, + searchContextsEnabled, + results, + showAggregationPanel, + selectedSearchContextSpec, + aggregationUIMode, + settingsCascade, + telemetryService, + fetchHighlightedFileLineRanges, + caseSensitive, + authenticatedUser, + isSourcegraphDotCom, + enableRepositoryMetadata, + codeMonitoringEnabled, + options, + platformContext, + extensionsController, + onNavbarQueryChange, + onSearchSubmit, + onQuerySubmit, + onExpandAllResultsToggle, + onSearchAgain, + onDisableSmartSearch, + onLogSearchResultClick, + } = props + + const submittedURLQueryRef = useRef(submittedURLQuery) + const containerRef = useRef<HTMLDivElement>(null) + const { previewBlob, clearPreview } = useSearchResultState() + const [sidebarCollapsed, setSidebarCollapsed] = useLocalStorage('search.sidebar.collapsed', true) + + useScrollManager('SearchResultsContainer', containerRef) + + // Clean up hook, close the preview panel if search result page + // have been closed/unmount + useEffect(() => clearPreview, [clearPreview]) + + // File preview clean up hook, close the preview panel every time when we + // re-search / re-submit the query. + useLayoutEffect(() => { + if (submittedURLQuery !== submittedURLQueryRef.current) { + submittedURLQueryRef.current = submittedURLQuery + clearPreview() + } + }, [submittedURLQuery, clearPreview]) + + const prefetchFile: FilePrefetcher = useCallback( + params => + fetchBlob({ + ...params, + format: HighlightResponseFormat.JSON_SCIP, + }), + [] + ) + + return ( + <div className={styles.root}> + {!sidebarCollapsed && ( + <SearchFiltersSidebar + as={NewSearchSidebarWrapper} + liveQuery={liveQuery} + submittedURLQuery={submittedURLQuery} + patternType={patternType} + filters={results?.filters} + showAggregationPanel={showAggregationPanel} + selectedSearchContextSpec={selectedSearchContextSpec} + aggregationUIMode={aggregationUIMode} + settingsCascade={settingsCascade} + telemetryService={telemetryService} + caseSensitive={caseSensitive} + className={classNames(styles.filters)} + setSidebarCollapsed={setSidebarCollapsed} + onNavbarQueryChange={onNavbarQueryChange} + onSearchSubmit={onSearchSubmit} + /> + )} + + <SearchResultsInfoBar + query={submittedURLQuery} + patternType={patternType} + results={results} + options={options} + allExpanded={allExpanded} + caseSensitive={caseSensitive} + enableCodeMonitoring={codeMonitoringEnabled} + sidebarCollapsed={!!sidebarCollapsed} + setSidebarCollapsed={setSidebarCollapsed} + authenticatedUser={authenticatedUser} + sourcegraphURL={platformContext.sourcegraphURL} + isSourcegraphDotCom={isSourcegraphDotCom} + telemetryService={telemetryService} + className={styles.infobar} + onExpandAllResultsToggle={onExpandAllResultsToggle} + onShowMobileFiltersChanged={setSidebarCollapsed} + stats={ + <StreamingProgress + showTrace={trace} + query={`${submittedURLQuery} patterntype:${patternType}`} + progress={results?.progress || { durationMs: 0, matchCount: 0, skipped: [] }} + state={results?.state || 'loading'} + onSearchAgain={onSearchAgain} + isSearchJobsEnabled={isSearchJobsEnabled()} + telemetryService={props.telemetryService} + /> + } + /> + + <div className={styles.content} ref={containerRef}> + {aggregationUIMode === AggregationUIMode.SearchPage && ( + <SearchAggregationResult + query={submittedURLQuery} + patternType={patternType} + caseSensitive={caseSensitive} + aria-label="Aggregation results panel" + className="mt-3" + onQuerySubmit={onQuerySubmit} + telemetryService={telemetryService} + /> + )} + + {aggregationUIMode !== AggregationUIMode.SearchPage && ( + <> + <DidYouMean + telemetryService={props.telemetryService} + query={submittedURLQuery} + patternType={patternType} + caseSensitive={caseSensitive} + selectedSearchContextSpec={props.selectedSearchContextSpec} + /> + + {results?.alert?.kind && isSmartSearchAlert(results.alert.kind) && ( + <SmartSearch alert={results?.alert} onDisableSmartSearch={onDisableSmartSearch} /> + )} + + <GettingStartedTour.Info + className="mt-2 mb-3" + isSourcegraphDotCom={props.isSourcegraphDotCom} + /> + + {results?.alert && (!results?.alert.kind || !isSmartSearchAlert(results.alert.kind)) && ( + <div className={classNames(styles.alertArea, 'mt-4')}> + {results?.alert?.kind === 'unowned-results' ? ( + <UnownedResultsAlert + alertTitle={results.alert.title} + alertDescription={results.alert.description} + queryState={queryState} + patternType={patternType} + caseSensitive={caseSensitive} + selectedSearchContextSpec={props.selectedSearchContextSpec} + /> + ) : ( + <SearchAlert + alert={results.alert} + caseSensitive={caseSensitive} + patternType={patternType} + /> + )} + </div> + )} + + <StreamingSearchResultsList + telemetryService={telemetryService} + platformContext={platformContext} + settingsCascade={settingsCascade} + searchContextsEnabled={searchContextsEnabled} + fetchHighlightedFileLineRanges={fetchHighlightedFileLineRanges} + isSourcegraphDotCom={isSourcegraphDotCom} + enableRepositoryMetadata={enableRepositoryMetadata} + results={results} + allExpanded={allExpanded} + executedQuery={location.search} + prefetchFileEnabled={true} + prefetchFile={prefetchFile} + enableKeyboardNavigation={true} + showQueryExamplesOnNoResultsPage={true} + queryState={queryState} + buildSearchURLQueryFromQueryState={buildSearchURLQueryFromQueryState} + searchMode={searchMode} + setSearchMode={setSearchMode} + submitSearch={submitSearch} + caseSensitive={caseSensitive} + searchQueryFromURL={submittedURLQuery} + selectedSearchContextSpec={selectedSearchContextSpec} + logSearchResultClicked={onLogSearchResultClick} + /> + </> + )} + </div> + + {previewBlob && ( + <FilePreviewPanel + blobInfo={previewBlob} + caseSensitive={caseSensitive} + patternType={patternType} + submittedURLQuery={submittedURLQuery} + platformContext={platformContext} + extensionsController={extensionsController} + settingsCascade={settingsCascade} + onClose={clearPreview} + /> + )} + </div> + ) +} + +interface NewSearchSidebarWrapper extends HTMLAttributes<HTMLElement> { + onClose: () => void +} + +const NewSearchSidebarWrapper: FC<PropsWithChildren<NewSearchSidebarWrapper>> = props => { + const { children, className, onClose, ...attributes } = props + + return ( + <aside {...attributes} className={classNames(styles.filters, className)}> + <header className={styles.filtersHeader}> + <H4 as={H2} className="mb-0"> + Filters + </H4> + <Button variant="icon" aria-label="Close" onClick={onClose}> + <Icon aria-hidden={true} svgPath={mdiClose} /> + </Button> + </header> + <div className={styles.filtersContent}>{children}</div> + </aside> + ) +} + +interface FilePreviewPanelProps extends PlatformContextProps, SettingsCascadeProps, ExtensionsControllerProps { + blobInfo: SearchResultPreview + submittedURLQuery: string + patternType: SearchPatternType + caseSensitive: boolean + onClose: () => void +} + +const FilePreviewPanel: FC<FilePreviewPanelProps> = props => { + const { + blobInfo, + submittedURLQuery, + patternType, + caseSensitive, + onClose, + platformContext, + settingsCascade, + extensionsController, + } = props + + const searchPanelConfig = useMemo<SearchPanelConfig>( + () => ({ + caseSensitive, + regexp: patternType === SearchPatternType.regexp, + searchValue: getLiteralQueryPart(submittedURLQuery), + mode: SearchPanelViewMode.MatchesOnly, + }), + [caseSensitive, patternType, submittedURLQuery] + ) + + return ( + <Panel + defaultSize={300} + minSize={256} + position="right" + storageKey="file preview" + ariaLabel="File sidebar" + className={classNames(styles.preview)} + > + <header className={styles.previewHeader}> + <H4 as={H2} className="mb-0"> + File preview + </H4> + <Button variant="icon" aria-label="Close" onClick={onClose}> + <Icon aria-hidden={true} svgPath={mdiClose} /> + </Button> + </header> + + <small className={styles.previewFileLink}> + <Link to={getFileMatchUrl(blobInfo)}>{blobInfo.path}</Link> + </small> + + <Suspense fallback={null}> + <LazySideBlob + repository={blobInfo.repository} + file={blobInfo.path} + commitID={blobInfo.commit ?? ''} + wrapLines={false} + navigateToLineOnAnyClick={false} + searchPanelConfig={searchPanelConfig} + className={styles.previewContent} + platformContext={platformContext} + settingsCascade={settingsCascade} + telemetryService={NOOP_TELEMETRY_SERVICE} + extensionsController={extensionsController} + /> + </Suspense> + </Panel> + ) +} + +function getLiteralQueryPart(searchQuery: string): string { + const tokens = scanSearchQuery(searchQuery) + + if (tokens.type === 'success') { + const literals = tokens.term.filter(token => token.type !== 'filter' && token.type !== 'comment') + + return stringHuman(literals).trim() + } + + return searchQuery.trim() +} diff --git a/client/web/src/search/results/StreamingSearchResults.module.scss b/client/web/src/search/results/components/search-content/SearchContent.module.scss similarity index 100% rename from client/web/src/search/results/StreamingSearchResults.module.scss rename to client/web/src/search/results/components/search-content/SearchContent.module.scss diff --git a/client/web/src/search/results/components/search-content/SearchContent.tsx b/client/web/src/search/results/components/search-content/SearchContent.tsx new file mode 100644 index 0000000000000..71a0fe8d0f785 --- /dev/null +++ b/client/web/src/search/results/components/search-content/SearchContent.tsx @@ -0,0 +1,262 @@ +import { FC, useCallback, useState } from 'react' + +import classNames from 'classnames' +import { useLocation } from 'react-router-dom' +import { Observable } from 'rxjs' + +import { StreamingProgress, StreamingSearchResultsList } from '@sourcegraph/branded' +import { FetchFileParameters } from '@sourcegraph/shared/src/backend/file' +import { FilePrefetcher } from '@sourcegraph/shared/src/components/PrefetchableFile' +import { HighlightResponseFormat, SearchPatternType } from '@sourcegraph/shared/src/graphql-operations' +import { PlatformContextProps } from '@sourcegraph/shared/src/platform/context' +import { QueryState, QueryStateUpdate, QueryUpdate, SearchMode } from '@sourcegraph/shared/src/search' +import { AggregateStreamingSearchResults, StreamSearchOptions } from '@sourcegraph/shared/src/search/stream' +import { SettingsCascadeProps, useExperimentalFeatures } from '@sourcegraph/shared/src/settings/settings' +import { useTemporarySetting } from '@sourcegraph/shared/src/settings/temporary' +import { TelemetryProps } from '@sourcegraph/shared/src/telemetry/telemetryService' + +import { AuthenticatedUser } from '../../../../auth' +import { PageTitle } from '../../../../components/PageTitle' +import { useFeatureFlag } from '../../../../featureFlags/useFeatureFlag' +import { fetchBlob } from '../../../../repo/blob/backend' +import { isSearchJobsEnabled } from '../../../../search-jobs/utility' +import { buildSearchURLQueryFromQueryState, setSearchMode } from '../../../../stores' +import { GettingStartedTour } from '../../../../tour/GettingStartedTour' +import { useShowOnboardingTour } from '../../../../tour/hooks' +import { submitSearch } from '../../../helpers' +import { DidYouMean } from '../../../suggestion/DidYouMean' +import { SmartSearch } from '../../../suggestion/SmartSearch' +import { SearchFiltersSidebar } from '../../sidebar/SearchFiltersSidebar' +import { AggregationUIMode, SearchAggregationResult } from '../aggregation' +import { SearchResultsInfoBar } from '../search-results-info-bar/SearchResultsInfoBar' +import { SearchAlert } from '../SearchAlert' +import { UnownedResultsAlert } from '../UnownedResultsAlert' +import { isSmartSearchAlert } from '../utils' + +import styles from './SearchContent.module.scss' + +interface SearchContentProps + extends SettingsCascadeProps, + TelemetryProps, + PlatformContextProps<'settings' | 'requestGraphQL' | 'sourcegraphURL'> { + submittedURLQuery: string + queryState: QueryState + liveQuery: string + allExpanded: boolean + searchMode: SearchMode + trace: boolean + searchContextsEnabled: boolean + patternType: SearchPatternType + results: AggregateStreamingSearchResults | undefined + showAggregationPanel: boolean + selectedSearchContextSpec: string | undefined + aggregationUIMode: AggregationUIMode + caseSensitive: boolean + authenticatedUser: AuthenticatedUser | null + isSourcegraphDotCom: boolean + enableRepositoryMetadata: boolean + options: StreamSearchOptions + codeMonitoringEnabled: boolean + fetchHighlightedFileLineRanges: (parameters: FetchFileParameters, force?: boolean) => Observable<string[][]> + onNavbarQueryChange: (queryState: QueryStateUpdate) => void + onSearchSubmit: (updates: QueryUpdate[], updatedSearchQuery?: string) => void + onQuerySubmit: (newQuery: string, updatedQuerySearch: string) => void + onExpandAllResultsToggle: () => void + onSearchAgain: (additionalFilters: string[]) => void + onDisableSmartSearch: () => void + onLogSearchResultClick: (index: number, type: string, resultsLength: number) => void +} + +export const SearchContent: FC<SearchContentProps> = props => { + const { + searchMode, + submittedURLQuery, + liveQuery, + queryState, + allExpanded, + trace, + patternType, + searchContextsEnabled, + results, + showAggregationPanel, + selectedSearchContextSpec, + aggregationUIMode, + settingsCascade, + telemetryService, + fetchHighlightedFileLineRanges, + caseSensitive, + authenticatedUser, + isSourcegraphDotCom, + enableRepositoryMetadata, + codeMonitoringEnabled, + options, + platformContext, + onNavbarQueryChange, + onSearchSubmit, + onQuerySubmit, + onExpandAllResultsToggle, + onSearchAgain, + onDisableSmartSearch, + onLogSearchResultClick, + } = props + + const location = useLocation() + const prefetchFileEnabled = useExperimentalFeatures(features => features.enableSearchFilePrefetch ?? false) + const [enableSearchResultsKeyboardNavigation] = useFeatureFlag('search-results-keyboard-navigation', true) + const [sidebarCollapsed, setSidebarCollapsed] = useTemporarySetting('search.sidebar.collapsed', false) + const showOnboardingTour = useShowOnboardingTour({ authenticatedUser, isSourcegraphDotCom }) + + const [showMobileSidebar, setShowMobileSidebar] = useState(false) + + const prefetchFile: FilePrefetcher = useCallback( + params => + fetchBlob({ + ...params, + format: HighlightResponseFormat.JSON_SCIP, + }), + [] + ) + + return ( + <div className={classNames(styles.container, sidebarCollapsed && styles.containerWithSidebarHidden)}> + <PageTitle key="page-title" title={submittedURLQuery} /> + + <SearchFiltersSidebar + liveQuery={liveQuery} + submittedURLQuery={submittedURLQuery} + patternType={patternType} + filters={results?.filters} + showAggregationPanel={showAggregationPanel} + selectedSearchContextSpec={selectedSearchContextSpec} + aggregationUIMode={aggregationUIMode} + settingsCascade={settingsCascade} + telemetryService={telemetryService} + caseSensitive={caseSensitive} + className={classNames(styles.sidebar, showMobileSidebar && styles.sidebarShowMobile)} + setSidebarCollapsed={setSidebarCollapsed} + onNavbarQueryChange={onNavbarQueryChange} + onSearchSubmit={onSearchSubmit} + > + {showOnboardingTour && ( + <GettingStartedTour + className="mb-1" + telemetryService={props.telemetryService} + authenticatedUser={authenticatedUser} + /> + )} + </SearchFiltersSidebar> + + {aggregationUIMode === AggregationUIMode.SearchPage && ( + <SearchAggregationResult + query={submittedURLQuery} + patternType={patternType} + caseSensitive={caseSensitive} + aria-label="Aggregation results panel" + className={styles.contents} + onQuerySubmit={onQuerySubmit} + telemetryService={telemetryService} + /> + )} + + {aggregationUIMode !== AggregationUIMode.SearchPage && ( + <> + <SearchResultsInfoBar + telemetryService={telemetryService} + isSourcegraphDotCom={isSourcegraphDotCom} + sourcegraphURL={platformContext.sourcegraphURL} + patternType={patternType} + authenticatedUser={authenticatedUser} + caseSensitive={caseSensitive} + query={submittedURLQuery} + results={results} + options={options} + enableCodeMonitoring={codeMonitoringEnabled} + className={styles.infobar} + allExpanded={allExpanded} + onExpandAllResultsToggle={onExpandAllResultsToggle} + onShowMobileFiltersChanged={show => setShowMobileSidebar(show)} + sidebarCollapsed={!!sidebarCollapsed} + setSidebarCollapsed={setSidebarCollapsed} + stats={ + <StreamingProgress + showTrace={trace} + query={`${submittedURLQuery} patterntype:${patternType}`} + progress={results?.progress || { durationMs: 0, matchCount: 0, skipped: [] }} + state={results?.state || 'loading'} + onSearchAgain={onSearchAgain} + isSearchJobsEnabled={isSearchJobsEnabled()} + telemetryService={props.telemetryService} + /> + } + /> + + <div className={styles.contents}> + <DidYouMean + telemetryService={props.telemetryService} + query={submittedURLQuery} + patternType={patternType} + caseSensitive={caseSensitive} + selectedSearchContextSpec={props.selectedSearchContextSpec} + /> + + {results?.alert?.kind && isSmartSearchAlert(results.alert.kind) && ( + <SmartSearch alert={results?.alert} onDisableSmartSearch={onDisableSmartSearch} /> + )} + + <GettingStartedTour.Info + className="mt-2 mb-3" + isSourcegraphDotCom={props.isSourcegraphDotCom} + /> + + {results?.alert && (!results?.alert.kind || !isSmartSearchAlert(results.alert.kind)) && ( + <div className={classNames(styles.alertArea, 'mt-4')}> + {results?.alert?.kind === 'unowned-results' ? ( + <UnownedResultsAlert + alertTitle={results.alert.title} + alertDescription={results.alert.description} + queryState={queryState} + patternType={patternType} + caseSensitive={caseSensitive} + selectedSearchContextSpec={props.selectedSearchContextSpec} + /> + ) : ( + <SearchAlert + alert={results.alert} + caseSensitive={caseSensitive} + patternType={patternType} + /> + )} + </div> + )} + + <StreamingSearchResultsList + telemetryService={telemetryService} + platformContext={platformContext} + settingsCascade={settingsCascade} + searchContextsEnabled={searchContextsEnabled} + fetchHighlightedFileLineRanges={fetchHighlightedFileLineRanges} + isSourcegraphDotCom={isSourcegraphDotCom} + enableRepositoryMetadata={enableRepositoryMetadata} + results={results} + allExpanded={allExpanded} + executedQuery={location.search} + prefetchFileEnabled={prefetchFileEnabled} + prefetchFile={prefetchFile} + enableKeyboardNavigation={enableSearchResultsKeyboardNavigation} + showQueryExamplesOnNoResultsPage={true} + queryState={queryState} + buildSearchURLQueryFromQueryState={buildSearchURLQueryFromQueryState} + searchMode={searchMode} + setSearchMode={setSearchMode} + submitSearch={submitSearch} + caseSensitive={caseSensitive} + searchQueryFromURL={submittedURLQuery} + selectedSearchContextSpec={selectedSearchContextSpec} + logSearchResultClicked={onLogSearchResultClick} + /> + </div> + </> + )} + </div> + ) +} diff --git a/client/web/src/search/results/SearchResultsInfoBar.module.scss b/client/web/src/search/results/components/search-results-info-bar/SearchResultsInfoBar.module.scss similarity index 100% rename from client/web/src/search/results/SearchResultsInfoBar.module.scss rename to client/web/src/search/results/components/search-results-info-bar/SearchResultsInfoBar.module.scss diff --git a/client/web/src/search/results/SearchResultsInfoBar.test.tsx b/client/web/src/search/results/components/search-results-info-bar/SearchResultsInfoBar.test.tsx similarity index 92% rename from client/web/src/search/results/SearchResultsInfoBar.test.tsx rename to client/web/src/search/results/components/search-results-info-bar/SearchResultsInfoBar.test.tsx index 3787024dc8d4b..7912c21e47af6 100644 --- a/client/web/src/search/results/SearchResultsInfoBar.test.tsx +++ b/client/web/src/search/results/components/search-results-info-bar/SearchResultsInfoBar.test.tsx @@ -1,27 +1,26 @@ import { noop } from 'lodash' -import { NEVER } from 'rxjs' import { describe, expect, test } from 'vitest' import { NOOP_TELEMETRY_SERVICE } from '@sourcegraph/shared/src/telemetry/telemetryService' import { MockedTestProvider } from '@sourcegraph/shared/src/testing/apollo' import { renderWithBrandedContext } from '@sourcegraph/wildcard/src/testing' -import { SearchPatternType } from '../../graphql-operations' +import { SearchPatternType } from '../../../../graphql-operations' import { SearchResultsInfoBar, type SearchResultsInfoBarProps } from './SearchResultsInfoBar' const COMMON_PROPS: Omit<SearchResultsInfoBarProps, 'enableCodeMonitoring'> = { - platformContext: { settings: NEVER, sourcegraphURL: 'https://sourcegraph.com' }, authenticatedUser: { id: 'userID', + username: 'chuckcheese', displayName: 'Chuck Cheese', emails: [{ email: 'chuck@chuckeecheese.com', isPrimary: true, verified: true }], permissions: { nodes: [] }, + organizations: { nodes: [] }, }, + sourcegraphURL: '', allExpanded: true, onExpandAllResultsToggle: noop, - onSaveQueryClick: noop, - onExportCsvClick: noop, stats: <div />, telemetryService: NOOP_TELEMETRY_SERVICE, patternType: SearchPatternType.standard, diff --git a/client/web/src/search/results/SearchResultsInfoBar.tsx b/client/web/src/search/results/components/search-results-info-bar/SearchResultsInfoBar.tsx similarity index 80% rename from client/web/src/search/results/SearchResultsInfoBar.tsx rename to client/web/src/search/results/components/search-results-info-bar/SearchResultsInfoBar.tsx index b9f6e8ff14408..b5fb18c1e7305 100644 --- a/client/web/src/search/results/SearchResultsInfoBar.tsx +++ b/client/web/src/search/results/components/search-results-info-bar/SearchResultsInfoBar.tsx @@ -1,20 +1,27 @@ -import React, { useMemo, useState } from 'react' +import { useMemo, useState, FC, useCallback } from 'react' import { mdiChevronDoubleDown, mdiChevronDoubleUp, mdiThumbUp, mdiThumbDown, mdiOpenInNew } from '@mdi/js' import classNames from 'classnames' -import { useLocation } from 'react-router-dom' +import { useLocation, useNavigate } from 'react-router-dom' -import type { PlatformContextProps } from '@sourcegraph/shared/src/platform/context' +import { SearchPatternType } from '@sourcegraph/shared/src/graphql-operations' import type { CaseSensitivityProps, SearchPatternTypeProps } from '@sourcegraph/shared/src/search' import { FilterKind, findFilter } from '@sourcegraph/shared/src/search/query/query' import type { AggregateStreamingSearchResults, StreamSearchOptions } from '@sourcegraph/shared/src/search/stream' import type { TelemetryProps } from '@sourcegraph/shared/src/telemetry/telemetryService' import { Button, Icon, Alert, useSessionStorage, Link, Text } from '@sourcegraph/wildcard' -import type { AuthenticatedUser } from '../../auth' -import { canWriteBatchChanges, NO_ACCESS_BATCH_CHANGES_WRITE, NO_ACCESS_SOURCEGRAPH_COM } from '../../batches/utils' -import { eventLogger } from '../../tracking/eventLogger' -import { DOTCOM_URL } from '../../tracking/util' +import type { AuthenticatedUser } from '../../../../auth' +import { + canWriteBatchChanges, + NO_ACCESS_BATCH_CHANGES_WRITE, + NO_ACCESS_SOURCEGRAPH_COM, +} from '../../../../batches/utils' +import { SavedSearchModal } from '../../../../savedSearches/SavedSearchModal' +import { eventLogger } from '../../../../tracking/eventLogger' +import { DOTCOM_URL } from '../../../../tracking/util' +import { SearchResultsCsvExportModal } from '../../export/SearchResultsCsvExportModal' +import { SearchActionsMenu } from '../SearchActionsMenu' import { type CreateAction, @@ -23,17 +30,18 @@ import { getInsightsCreateAction, getSearchContextCreateAction, } from './createActions' -import { SearchActionsMenu } from './SearchActionsMenu' import styles from './SearchResultsInfoBar.module.scss' export interface SearchResultsInfoBarProps extends TelemetryProps, - PlatformContextProps<'settings' | 'sourcegraphURL'>, SearchPatternTypeProps, Pick<CaseSensitivityProps, 'caseSensitive'> { /** The currently authenticated user or null */ - authenticatedUser: Pick<AuthenticatedUser, 'id' | 'displayName' | 'emails' | 'permissions'> | null + authenticatedUser: Pick< + AuthenticatedUser, + 'id' | 'displayName' | 'emails' | 'permissions' | 'organizations' | 'username' + > | null enableCodeInsights?: boolean enableCodeMonitoring: boolean @@ -51,12 +59,6 @@ export interface SearchResultsInfoBarProps allExpanded: boolean onExpandAllResultsToggle: () => void - // Saved queries - onSaveQueryClick: () => void - - // Download CSV of search results - onExportCsvClick: () => void - className?: string stats: JSX.Element @@ -67,15 +69,22 @@ export interface SearchResultsInfoBarProps setSidebarCollapsed: (collapsed: boolean) => void isSourcegraphDotCom: boolean + patternType: SearchPatternType + sourcegraphURL: string } /** * The info bar shown over the search results list that displays metadata * and a few actions like expand all and save query */ -export const SearchResultsInfoBar: React.FunctionComponent< - React.PropsWithChildren<SearchResultsInfoBarProps> -> = props => { +export const SearchResultsInfoBar: FC<SearchResultsInfoBarProps> = props => { + const { query, patternType, authenticatedUser, results, options, sourcegraphURL, telemetryService } = props + + const navigate = useNavigate() + + const [showSavedSearchModal, setShowSavedSearchModal] = useState(false) + const [showCsvExportModal, setShowCsvExportModal] = useState(false) + const globalTypeFilter = useMemo( () => (props.query ? findFilter(props.query, 'type', FilterKind.Global)?.value?.value : undefined), [props.query] @@ -136,8 +145,7 @@ export const SearchResultsInfoBar: React.FunctionComponent< } const location = useLocation() - const dotcomHost = DOTCOM_URL.href - const isPrivateInstance = window.location.host !== dotcomHost + const isPrivateInstance = window.location.host !== DOTCOM_URL.href const refFromCodySearch = new URLSearchParams(location.search).get('ref') === 'cody-search' const [codySearchInputString] = useSessionStorage<string>('cody-search-input', '') const codySearchInput: { input?: string; translatedQuery?: string } = JSON.parse(codySearchInputString || '{}') @@ -156,6 +164,11 @@ export const SearchResultsInfoBar: React.FunctionComponent< setCodyFeedback(positive) } + const onSaveQueryModalClose = useCallback(() => { + setShowSavedSearchModal(false) + telemetryService.log('SavedQueriesToggleCreating', { queries: { creating: false } }) + }, [telemetryService]) + return ( <aside role="region" @@ -219,8 +232,8 @@ export const SearchResultsInfoBar: React.FunctionComponent< results={props.results} allExpanded={props.allExpanded} onExpandAllResultsToggle={props.onExpandAllResultsToggle} - onSaveQueryClick={props.onSaveQueryClick} - onExportCsvClick={props.onExportCsvClick} + onSaveQueryClick={() => setShowSavedSearchModal(true)} + onExportCsvClick={() => setShowCsvExportModal(true)} /> </ul> @@ -259,6 +272,26 @@ export const SearchResultsInfoBar: React.FunctionComponent< </Button> )} </div> + + {showSavedSearchModal && ( + <SavedSearchModal + navigate={navigate} + patternType={patternType} + query={query} + authenticatedUser={authenticatedUser} + onDidCancel={onSaveQueryModalClose} + /> + )} + {showCsvExportModal && ( + <SearchResultsCsvExportModal + query={query} + options={options} + results={results} + sourcegraphURL={sourcegraphURL} + telemetryService={telemetryService} + onClose={() => setShowCsvExportModal(false)} + /> + )} </aside> ) } diff --git a/client/web/src/search/results/components/search-results-info-bar/__snapshots__/SearchResultsInfoBar.test.tsx.snap b/client/web/src/search/results/components/search-results-info-bar/__snapshots__/SearchResultsInfoBar.test.tsx.snap new file mode 100644 index 0000000000000..0973404dfa12b --- /dev/null +++ b/client/web/src/search/results/components/search-results-info-bar/__snapshots__/SearchResultsInfoBar.test.tsx.snap @@ -0,0 +1,371 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`SearchResultsInfoBar > code monitoring feature flag disabled 1`] = ` +<DocumentFragment> + <aside + aria-label="Search results information" + class="searchResultsInfoBar" + data-testid="results-info-bar" + role="region" + > + <div + class="row" + > + <div /> + <div + class="expander" + /> + <ul + class="nav align-items-center" + > + <li + class="mr-2 navItem" + > + <button + aria-controls="" + aria-haspopup="true" + aria-label="Open search actions menu" + class="btn btnSecondary btnOutline btnSm d-flex align-items-center text-decoration-none" + data-reach-menu-button="" + id="menu-button-test-id" + type="button" + > + Actions + <svg + aria-hidden="true" + class="mdi-icon iconInline ml-1" + data-caret="true" + fill="currentColor" + height="24" + role="img" + viewBox="0 0 24 24" + width="24" + > + <path + d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" + /> + </svg> + </button> + </li> + </ul> + <button + aria-label="Show filters" + aria-pressed="false" + class="btn btnSecondary btnOutline btnSm d-flex align-items-center d-lg-none filtersButton" + type="button" + > + Filters + <svg + aria-hidden="true" + class="mdi-icon iconInline ml-2" + fill="currentColor" + height="24" + role="img" + viewBox="0 0 24 24" + width="24" + > + <path + d="M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z" + /> + </svg> + </button> + </div> + </aside> +</DocumentFragment> +`; + +exports[`SearchResultsInfoBar > code monitoring feature flag enabled, can create monitor from query 1`] = ` +<DocumentFragment> + <aside + aria-label="Search results information" + class="searchResultsInfoBar" + data-testid="results-info-bar" + role="region" + > + <div + class="row" + > + <div /> + <div + class="expander" + /> + <ul + class="nav align-items-center" + > + <li + class="mr-2 navItem" + > + <button + aria-controls="" + aria-haspopup="true" + aria-label="Open search actions menu" + class="btn btnSecondary btnOutline btnSm d-flex align-items-center text-decoration-none" + data-reach-menu-button="" + id="menu-button-test-id" + type="button" + > + Actions + <svg + aria-hidden="true" + class="mdi-icon iconInline ml-1" + data-caret="true" + fill="currentColor" + height="24" + role="img" + viewBox="0 0 24 24" + width="24" + > + <path + d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" + /> + </svg> + </button> + </li> + </ul> + <button + aria-label="Show filters" + aria-pressed="false" + class="btn btnSecondary btnOutline btnSm d-flex align-items-center d-lg-none filtersButton" + type="button" + > + Filters + <svg + aria-hidden="true" + class="mdi-icon iconInline ml-2" + fill="currentColor" + height="24" + role="img" + viewBox="0 0 24 24" + width="24" + > + <path + d="M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z" + /> + </svg> + </button> + </div> + </aside> +</DocumentFragment> +`; + +exports[`SearchResultsInfoBar > code monitoring feature flag enabled, can create monitor from query, user not logged in 1`] = ` +<DocumentFragment> + <aside + aria-label="Search results information" + class="searchResultsInfoBar" + data-testid="results-info-bar" + role="region" + > + <div + class="row" + > + <div /> + <div + class="expander" + /> + <ul + class="nav align-items-center" + > + <li + class="mr-2 navItem" + > + <button + aria-controls="" + aria-haspopup="true" + aria-label="Open search actions menu" + class="btn btnSecondary btnOutline btnSm d-flex align-items-center text-decoration-none" + data-reach-menu-button="" + id="menu-button-test-id" + type="button" + > + Actions + <svg + aria-hidden="true" + class="mdi-icon iconInline ml-1" + data-caret="true" + fill="currentColor" + height="24" + role="img" + viewBox="0 0 24 24" + width="24" + > + <path + d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" + /> + </svg> + </button> + </li> + </ul> + <button + aria-label="Show filters" + aria-pressed="false" + class="btn btnSecondary btnOutline btnSm d-flex align-items-center d-lg-none filtersButton" + type="button" + > + Filters + <svg + aria-hidden="true" + class="mdi-icon iconInline ml-2" + fill="currentColor" + height="24" + role="img" + viewBox="0 0 24 24" + width="24" + > + <path + d="M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z" + /> + </svg> + </button> + </div> + </aside> +</DocumentFragment> +`; + +exports[`SearchResultsInfoBar > code monitoring feature flag enabled, cannot create monitor from query 1`] = ` +<DocumentFragment> + <aside + aria-label="Search results information" + class="searchResultsInfoBar" + data-testid="results-info-bar" + role="region" + > + <div + class="row" + > + <div /> + <div + class="expander" + /> + <ul + class="nav align-items-center" + > + <li + class="mr-2 navItem" + > + <button + aria-controls="" + aria-haspopup="true" + aria-label="Open search actions menu" + class="btn btnSecondary btnOutline btnSm d-flex align-items-center text-decoration-none" + data-reach-menu-button="" + id="menu-button-test-id" + type="button" + > + Actions + <svg + aria-hidden="true" + class="mdi-icon iconInline ml-1" + data-caret="true" + fill="currentColor" + height="24" + role="img" + viewBox="0 0 24 24" + width="24" + > + <path + d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" + /> + </svg> + </button> + </li> + </ul> + <button + aria-label="Show filters" + aria-pressed="false" + class="btn btnSecondary btnOutline btnSm d-flex align-items-center d-lg-none filtersButton" + type="button" + > + Filters + <svg + aria-hidden="true" + class="mdi-icon iconInline ml-2" + fill="currentColor" + height="24" + role="img" + viewBox="0 0 24 24" + width="24" + > + <path + d="M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z" + /> + </svg> + </button> + </div> + </aside> +</DocumentFragment> +`; + +exports[`SearchResultsInfoBar > unauthenticated user 1`] = ` +<DocumentFragment> + <aside + aria-label="Search results information" + class="searchResultsInfoBar" + data-testid="results-info-bar" + role="region" + > + <div + class="row" + > + <div /> + <div + class="expander" + /> + <ul + class="nav align-items-center" + > + <li + class="mr-2 navItem" + > + <button + aria-controls="" + aria-haspopup="true" + aria-label="Open search actions menu" + class="btn btnSecondary btnOutline btnSm d-flex align-items-center text-decoration-none" + data-reach-menu-button="" + id="menu-button-test-id" + type="button" + > + Actions + <svg + aria-hidden="true" + class="mdi-icon iconInline ml-1" + data-caret="true" + fill="currentColor" + height="24" + role="img" + viewBox="0 0 24 24" + width="24" + > + <path + d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" + /> + </svg> + </button> + </li> + </ul> + <button + aria-label="Show filters" + aria-pressed="false" + class="btn btnSecondary btnOutline btnSm d-flex align-items-center d-lg-none filtersButton" + type="button" + > + Filters + <svg + aria-hidden="true" + class="mdi-icon iconInline ml-2" + fill="currentColor" + height="24" + role="img" + viewBox="0 0 24 24" + width="24" + > + <path + d="M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z" + /> + </svg> + </button> + </div> + </aside> +</DocumentFragment> +`; diff --git a/client/web/src/search/results/createActions.ts b/client/web/src/search/results/components/search-results-info-bar/createActions.ts similarity index 90% rename from client/web/src/search/results/createActions.ts rename to client/web/src/search/results/components/search-results-info-bar/createActions.ts index dfd238252d5db..fcfd2bf58e085 100644 --- a/client/web/src/search/results/createActions.ts +++ b/client/web/src/search/results/components/search-results-info-bar/createActions.ts @@ -5,11 +5,11 @@ import { FilterKind, findFilter } from '@sourcegraph/shared/src/search/query/que import { omitFilter } from '@sourcegraph/shared/src/search/query/transformer' import type { IconType } from '@sourcegraph/wildcard' -import type { AuthenticatedUser } from '../../auth' -import { BatchChangesIcon } from '../../batches/icons' -import { CodeMonitoringLogo } from '../../code-monitoring/CodeMonitoringLogo' -import type { SearchPatternType } from '../../graphql-operations' -import { CodeInsightsIcon } from '../../insights/Icons' +import type { AuthenticatedUser } from '../../../../auth' +import { BatchChangesIcon } from '../../../../batches/icons' +import { CodeMonitoringLogo } from '../../../../code-monitoring/CodeMonitoringLogo' +import type { SearchPatternType } from '../../../../graphql-operations' +import { CodeInsightsIcon } from '../../../../insights/Icons' export interface CreateAction { url: string diff --git a/client/web/src/search/results/components/utils.ts b/client/web/src/search/results/components/utils.ts new file mode 100644 index 0000000000000..e0f68a3ccb89e --- /dev/null +++ b/client/web/src/search/results/components/utils.ts @@ -0,0 +1,11 @@ +import { AlertKind, SmartSearchAlertKind } from '@sourcegraph/shared/src/search/stream' + +export function isSmartSearchAlert(kind: AlertKind): kind is SmartSearchAlertKind { + switch (kind) { + case 'smart-search-additional-results': + case 'smart-search-pure-results': { + return true + } + } + return false +} diff --git a/client/web/src/search/results/sidebar/SearchFiltersSidebar.tsx b/client/web/src/search/results/sidebar/SearchFiltersSidebar.tsx index 1e2cd73373f01..75934aaa83448 100644 --- a/client/web/src/search/results/sidebar/SearchFiltersSidebar.tsx +++ b/client/web/src/search/results/sidebar/SearchFiltersSidebar.tsx @@ -4,15 +4,16 @@ import { type ReactElement, useCallback, useMemo, - type HTMLAttributes, - memo, - type PropsWithChildren, + forwardRef, + HTMLAttributes, + ComponentType, + PropsWithChildren, } from 'react' import { mdiInformationOutline } from '@mdi/js' import { - SearchSidebar, + StickySearchSidebar, SearchSidebarSection, getDynamicFilterLinks, getRepoFilterLinks, @@ -21,6 +22,7 @@ import { getSearchTypeLinks, getFiltersOfKind, useLastRepoName, + PersistSidebarStoreProvider, } from '@sourcegraph/branded' import type { QueryStateUpdate, QueryUpdate } from '@sourcegraph/shared/src/search' import { FilterType } from '@sourcegraph/shared/src/search/query/filters' @@ -37,7 +39,12 @@ import { AggregationUIMode, GroupResultsPing } from '../components/aggregation' import { getRevisions } from './Revisions' import { SearchAggregations } from './SearchAggregations' +interface GenericSidebarProps extends HTMLAttributes<HTMLElement> { + onClose: () => void +} + export interface SearchFiltersSidebarProps extends TelemetryProps, SettingsCascadeProps, HTMLAttributes<HTMLElement> { + as?: ComponentType<PropsWithChildren<GenericSidebarProps>> liveQuery: string submittedURLQuery: string patternType: SearchPatternType @@ -51,8 +58,9 @@ export interface SearchFiltersSidebarProps extends TelemetryProps, SettingsCasca setSidebarCollapsed: (collapsed: boolean) => void } -export const SearchFiltersSidebar: FC<PropsWithChildren<SearchFiltersSidebarProps>> = memo(props => { +export const SearchFiltersSidebar = forwardRef<HTMLElement, PropsWithChildren<SearchFiltersSidebarProps>>(props => { const { + as: Component = StickySearchSidebar, liveQuery, submittedURLQuery, caseSensitive, @@ -111,96 +119,98 @@ export const SearchFiltersSidebar: FC<PropsWithChildren<SearchFiltersSidebarProp ) return ( - <SearchSidebar {...attributes} onClose={() => setSidebarCollapsed(true)}> - {children} + <Component {...attributes} onClose={() => setSidebarCollapsed(true)}> + <PersistSidebarStoreProvider> + {children} + + {showAggregationPanel && + enableSearchAggregations && + aggregationUIMode === AggregationUIMode.Sidebar && ( + <SearchSidebarSection + sectionId={SectionID.GROUPED_BY} + header="Group results by" + postHeader={<CustomAggregationHeading telemetryService={props.telemetryService} />} + // SearchAggregations content contains component that makes a few API network requests + // in order to prevent these calls if this section is collapsed we turn off force render + // for collapse section component + forcedRender={false} + onToggle={handleGroupedByToggle} + > + <SearchAggregations + query={submittedURLQuery} + patternType={patternType} + proactive={proactiveSearchAggregations} + caseSensitive={caseSensitive} + telemetryService={telemetryService} + onQuerySubmit={handleAggregationBarLinkClick} + /> + </SearchSidebarSection> + )} + + <SearchSidebarSection sectionId={SectionID.SEARCH_TYPES} header="Search Types"> + {getSearchTypeLinks({ + query: liveQuery, + onNavbarQueryChange, + selectedSearchContextSpec, + buildSearchURLQueryFromQueryState, + forceButton: false, + })} + </SearchSidebarSection> + + <SearchSidebarSection sectionId={SectionID.LANGUAGES} header="Languages" minItems={2}> + {getDynamicFilterLinks(filters, ['lang'], onDynamicFilterClicked, label => `Search ${label} files`)} + </SearchSidebarSection> - {showAggregationPanel && enableSearchAggregations && aggregationUIMode === AggregationUIMode.Sidebar && ( <SearchSidebarSection - sectionId={SectionID.GROUPED_BY} - header="Group results by" - postHeader={<CustomAggregationHeading telemetryService={props.telemetryService} />} - // SearchAggregations content contains component that makes a few API network requests - // in order to prevent these calls if this section is collapsed we turn off force render - // for collapse section component - forcedRender={false} - onToggle={handleGroupedByToggle} + sectionId={SectionID.REPOSITORIES} + header="Repositories" + searchOptions={{ ariaLabel: 'Find repositories', noResultText: getRepoFilterNoResultText }} + minItems={2} > - <SearchAggregations - query={submittedURLQuery} - patternType={patternType} - proactive={proactiveSearchAggregations} - caseSensitive={caseSensitive} - telemetryService={telemetryService} - onQuerySubmit={handleAggregationBarLinkClick} - /> + {getRepoFilterLinks(repoFilters, onDynamicFilterClicked)} + </SearchSidebarSection> + + <SearchSidebarSection sectionId={SectionID.FILE_TYPES} header="File types"> + {getDynamicFilterLinks(filters, ['file'], onDynamicFilterClicked)} </SearchSidebarSection> - )} - - <SearchSidebarSection sectionId={SectionID.SEARCH_TYPES} header="Search Types"> - {getSearchTypeLinks({ - query: liveQuery, - onNavbarQueryChange, - selectedSearchContextSpec, - buildSearchURLQueryFromQueryState, - forceButton: false, - })} - </SearchSidebarSection> - - <SearchSidebarSection sectionId={SectionID.LANGUAGES} header="Languages" minItems={2}> - {getDynamicFilterLinks(filters, ['lang'], onDynamicFilterClicked, label => `Search ${label} files`)} - </SearchSidebarSection> - - <SearchSidebarSection - sectionId={SectionID.REPOSITORIES} - header="Repositories" - searchOptions={{ ariaLabel: 'Find repositories', noResultText: getRepoFilterNoResultText }} - minItems={2} - > - {getRepoFilterLinks(repoFilters, onDynamicFilterClicked)} - </SearchSidebarSection> - - <SearchSidebarSection sectionId={SectionID.FILE_TYPES} header="File types"> - {getDynamicFilterLinks(filters, ['file'], onDynamicFilterClicked)} - </SearchSidebarSection> - <SearchSidebarSection sectionId={SectionID.OTHER} header="Other"> - {getDynamicFilterLinks(filters, ['utility'], onDynamicFilterClicked)} - </SearchSidebarSection> - - {repoName && ( + <SearchSidebarSection sectionId={SectionID.OTHER} header="Other"> + {getDynamicFilterLinks(filters, ['utility'], onDynamicFilterClicked)} + </SearchSidebarSection> + + {repoName && ( + <SearchSidebarSection + sectionId={SectionID.REVISIONS} + header="Revisions" + searchOptions={{ + ariaLabel: 'Find revisions', + clearSearchOnChange: repoName, + }} + > + {getRevisions({ repoName, onFilterClick: onSearchSubmit })} + </SearchSidebarSection> + )} + <SearchSidebarSection - sectionId={SectionID.REVISIONS} - header="Revisions" + sectionId={SectionID.SEARCH_REFERENCE} + header="Search reference" searchOptions={{ - ariaLabel: 'Find revisions', - clearSearchOnChange: repoName, + ariaLabel: 'Find filters', + // search reference should always preserve the filter + // (false is just an arbitrary but static value) + clearSearchOnChange: false, }} > - {getRevisions({ repoName, onFilterClick: onSearchSubmit })} + {getSearchReferenceFactory({ telemetryService, setQueryState: onNavbarQueryChange })} </SearchSidebarSection> - )} - - <SearchSidebarSection - sectionId={SectionID.SEARCH_REFERENCE} - header="Search reference" - searchOptions={{ - ariaLabel: 'Find filters', - // search reference should always preserve the filter - // (false is just an arbitrary but static value) - clearSearchOnChange: false, - }} - > - {getSearchReferenceFactory({ telemetryService, setQueryState: onNavbarQueryChange })} - </SearchSidebarSection> - - <SearchSidebarSection sectionId={SectionID.SEARCH_SNIPPETS} header="Search snippets"> - {getSearchSnippetLinks(settingsCascade, onSnippetClicked)} - </SearchSidebarSection> - </SearchSidebar> + + <SearchSidebarSection sectionId={SectionID.SEARCH_SNIPPETS} header="Search snippets"> + {getSearchSnippetLinks(settingsCascade, onSnippetClicked)} + </SearchSidebarSection> + </PersistSidebarStoreProvider> + </Component> ) }) -SearchFiltersSidebar.displayName = 'SearchFiltersSidebar' - const getRepoFilterNoResultText = (repoFilterLinks: ReactElement[]): ReactNode => ( <span> None of the top {repoFilterLinks.length} repositories in your results match this filter. Try a{' '} diff --git a/client/web/src/search/results/useStreamingSearchPings.ts b/client/web/src/search/results/useStreamingSearchPings.ts new file mode 100644 index 0000000000000..c1ac6780d88c7 --- /dev/null +++ b/client/web/src/search/results/useStreamingSearchPings.ts @@ -0,0 +1,135 @@ +import { useCallback, useEffect } from 'react' + +import { limitHit } from '@sourcegraph/branded' +import { asError } from '@sourcegraph/common' +import { collectMetrics } from '@sourcegraph/shared/src/search/query/metrics' +import { sanitizeQueryForTelemetry } from '@sourcegraph/shared/src/search/query/transformer' +import { AggregateStreamingSearchResults } from '@sourcegraph/shared/src/search/stream' +import { TelemetryProps } from '@sourcegraph/shared/src/telemetry/telemetryService' + +import { useNavbarQueryState } from '../../stores' +import { smartSearchEvent } from '../suggestion/SmartSearch' + +interface useStreamingSearchPingsProps extends TelemetryProps { + isAuauthenticated: boolean + isSourcegraphDotCom: boolean + results: AggregateStreamingSearchResults | undefined +} + +interface StreamingSearchPingsAPI { + logSearchResultClicked: (index: number, type: string, resultsLength: number) => void +} + +export function useStreamingSearchPings(props: useStreamingSearchPingsProps): StreamingSearchPingsAPI { + const { isAuauthenticated, isSourcegraphDotCom, results, telemetryService } = props + + const submittedURLQuery = useNavbarQueryState(state => state.searchQueryFromURL) + + // Log view event on first load + useEffect( + () => { + telemetryService.logViewEvent('SearchResults') + }, + // Only log view on initial load + // eslint-disable-next-line react-hooks/exhaustive-deps + [] + ) + + // Log search query event when URL changes + useEffect(() => { + const metrics = submittedURLQuery ? collectMetrics(submittedURLQuery) : undefined + + telemetryService.log( + 'SearchResultsQueried', + { + code_search: { + query_data: { + query: metrics, + combined: submittedURLQuery, + empty: !submittedURLQuery, + }, + }, + }, + { + code_search: { + query_data: { + // šŸšØ PRIVACY: never provide any private query data in the + // { code_search: query_data: query } property, + // which is also potentially exported in pings data. + query: metrics, + + // šŸšØ PRIVACY: Only collect the full query string for unauthenticated users + // on Sourcegraph.com, and only after sanitizing to remove certain filters. + combined: + !isAuauthenticated && isSourcegraphDotCom + ? sanitizeQueryForTelemetry(submittedURLQuery) + : undefined, + empty: !submittedURLQuery, + }, + }, + } + ) + // Only log when the query changes + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [submittedURLQuery]) + + // Log events when search completes or fails + useEffect(() => { + if (results?.state === 'complete') { + telemetryService.log('SearchResultsFetched', { + code_search: { + // šŸšØ PRIVACY: never provide any private data in { code_search: { results } }. + query_data: { + combined: submittedURLQuery, + }, + results: { + results_count: results.progress.matchCount, + limit_hit: limitHit(results.progress), + any_cloning: results.progress.skipped.some(skipped => skipped.reason === 'repository-cloning'), + alert: results.alert ? results.alert.title : null, + }, + }, + }) + if (results.results.length > 0) { + telemetryService.log('SearchResultsNonEmpty') + } + } else if (results?.state === 'error') { + telemetryService.log('SearchResultsFetchFailed', { + code_search: { error_message: asError(results.error).message }, + }) + } + }, [results, submittedURLQuery, telemetryService]) + + useEffect(() => { + if ( + (results?.alert?.kind === 'smart-search-additional-results' || + results?.alert?.kind === 'smart-search-pure-results') && + results?.alert?.title && + results.alert.proposedQueries + ) { + const events = smartSearchEvent( + results.alert.kind, + results.alert.title, + results.alert.proposedQueries.map(entry => entry.description || '') + ) + for (const event of events) { + telemetryService.log(event) + } + } + }, [results, telemetryService]) + + const logSearchResultClicked = useCallback( + (index: number, type: string, resultsLength: number) => { + telemetryService.log('SearchResultClicked') + // This data ends up in Prometheus and is not part of the ping payload. + telemetryService.log('search.ranking.result-clicked', { + index, + type, + resultsLength, + }) + }, + [telemetryService] + ) + + return { logSearchResultClicked } +} diff --git a/client/wildcard/BUILD.bazel b/client/wildcard/BUILD.bazel index 2f78cf769a144..9468c1e20db4e 100644 --- a/client/wildcard/BUILD.bazel +++ b/client/wildcard/BUILD.bazel @@ -396,6 +396,9 @@ ts_project( "src/hooks/useOffsetPagination.ts", "src/hooks/useOnClickOutside.ts", "src/hooks/usePrompt.tsx", + "src/hooks/useScrollManager/index.ts", + "src/hooks/useScrollManager/mutationObserverWithTimeout.ts", + "src/hooks/useScrollManager/useScrollManager.ts", "src/hooks/useSearchParameters.ts", "src/hooks/useSessionStorage.ts", "src/hooks/useStopwatch.ts", @@ -540,6 +543,7 @@ ts_project( "src/components/Typography/Text/Text.test.tsx", "src/hooks/useCookieStorage.test.ts", "src/hooks/useObservable.test.ts", + "src/hooks/useScrollManager/useScrollManager.test.tsx", "src/hooks/useTimeoutManager.test.ts", "src/testing/testSetup.test.ts", "src/utils/linkClickHandler.test.tsx", @@ -562,6 +566,7 @@ ts_project( "//:node_modules/js-cookie", "//:node_modules/mdi-react", "//:node_modules/react", + "//:node_modules/react-router-dom", "//:node_modules/rxjs", "//:node_modules/sinon", "//:node_modules/vitest", diff --git a/client/wildcard/src/components/Panel/useResizablePanel.ts b/client/wildcard/src/components/Panel/useResizablePanel.ts index 0a71e15f28507..9b6001b8a00a6 100644 --- a/client/wildcard/src/components/Panel/useResizablePanel.ts +++ b/client/wildcard/src/components/Panel/useResizablePanel.ts @@ -1,5 +1,5 @@ import type React from 'react' -import { useEffect, useRef, useState } from 'react' +import { useEffect, useLayoutEffect, useRef, useState } from 'react' import { Subject, Subscription } from 'rxjs' import { debounceTime, distinctUntilChanged } from 'rxjs/operators' @@ -114,7 +114,7 @@ export const useResizablePanel = ({ const [isResizing, setResizing] = useState(false) const [panelSize, setPanelSize] = useState(defaultSize) - useEffect(() => { + useLayoutEffect(() => { const size = getCachedPanelSize(storageKey, defaultSize, maxSize, minSize) onResize?.(size) setPanelSize(size) diff --git a/client/wildcard/src/hooks/index.ts b/client/wildcard/src/hooks/index.ts index 1a8c5853ec16a..07448d752f010 100644 --- a/client/wildcard/src/hooks/index.ts +++ b/client/wildcard/src/hooks/index.ts @@ -25,3 +25,4 @@ export { useUpdateEffect } from './useUpdateEffect' export { useFocusOnLoadedMore } from './useFocusOnLoadedMore' export { useBeforeUnloadPrompt } from './usePrompt' export { useCookieStorage } from './useCookieStorage' +export { useScrollManager } from './useScrollManager' diff --git a/client/web/src/hooks/useScrollManager/index.ts b/client/wildcard/src/hooks/useScrollManager/index.ts similarity index 100% rename from client/web/src/hooks/useScrollManager/index.ts rename to client/wildcard/src/hooks/useScrollManager/index.ts diff --git a/client/web/src/hooks/useScrollManager/mutationObserverWithTimeout.ts b/client/wildcard/src/hooks/useScrollManager/mutationObserverWithTimeout.ts similarity index 100% rename from client/web/src/hooks/useScrollManager/mutationObserverWithTimeout.ts rename to client/wildcard/src/hooks/useScrollManager/mutationObserverWithTimeout.ts diff --git a/client/web/src/hooks/useScrollManager/useScrollManager.test.tsx b/client/wildcard/src/hooks/useScrollManager/useScrollManager.test.tsx similarity index 97% rename from client/web/src/hooks/useScrollManager/useScrollManager.test.tsx rename to client/wildcard/src/hooks/useScrollManager/useScrollManager.test.tsx index 3aad3cbc39ae2..0148dcd82cf7c 100644 --- a/client/web/src/hooks/useScrollManager/useScrollManager.test.tsx +++ b/client/wildcard/src/hooks/useScrollManager/useScrollManager.test.tsx @@ -5,7 +5,7 @@ import { Routes, Route } from 'react-router-dom' import { spy, assert } from 'sinon' import { vi, afterAll, beforeAll, describe, it } from 'vitest' -import { renderWithBrandedContext } from '@sourcegraph/wildcard/src/testing' +import { renderWithBrandedContext } from '../../testing' import { useScrollManager } from './useScrollManager' diff --git a/client/web/src/hooks/useScrollManager/useScrollManager.ts b/client/wildcard/src/hooks/useScrollManager/useScrollManager.ts similarity index 98% rename from client/web/src/hooks/useScrollManager/useScrollManager.ts rename to client/wildcard/src/hooks/useScrollManager/useScrollManager.ts index 56a3395980677..7d022fc0b93e4 100644 --- a/client/web/src/hooks/useScrollManager/useScrollManager.ts +++ b/client/wildcard/src/hooks/useScrollManager/useScrollManager.ts @@ -1,4 +1,4 @@ -import { useEffect } from 'react' +import { useEffect, RefObject } from 'react' import { debounce } from 'lodash' import { useLocation, useNavigationType } from 'react-router-dom' @@ -32,7 +32,7 @@ const SCROLL_RETRY_TIMEOUT = 3000 * @param containerKey A unique key to identify the container where scrolling will be managed. Usually the component name. * @param containerRef A React ref object of the container where scrolling will be managed. */ -export function useScrollManager(containerKey: string, containerRef: React.RefObject<HTMLElement>): void { +export function useScrollManager(containerKey: string, containerRef: RefObject<HTMLElement>): void { const location = useLocation() const navigationType = useNavigationType() From a4917c1c3899263d254afeab02bc1cd37cf96514 Mon Sep 17 00:00:00 2001 From: Beatrix <68532117+abeatrix@users.noreply.github.com> Date: Mon, 27 Nov 2023 10:18:05 -0800 Subject: [PATCH 173/222] update: set default chat model to claude-2.0 (#58490) * update: set default chat model to claude-2.0 * move 2.1 to use the same token num --- internal/conf/computed.go | 6 +++--- internal/conf/computed_test.go | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/conf/computed.go b/internal/conf/computed.go index 6761b068e6f97..d455799f24f89 100644 --- a/internal/conf/computed.go +++ b/internal/conf/computed.go @@ -592,7 +592,7 @@ func GetCompletionsConfig(siteConfig schema.SiteConfiguration) (c *conftypes.Com if completionsConfig == nil { completionsConfig = &schema.Completions{ Provider: string(conftypes.CompletionsProviderNameSourcegraph), - ChatModel: "anthropic/claude-2", + ChatModel: "anthropic/claude-2.0", FastChatModel: "anthropic/claude-instant-1", CompletionModel: "anthropic/claude-instant-1", } @@ -632,7 +632,7 @@ func GetCompletionsConfig(siteConfig schema.SiteConfiguration) (c *conftypes.Com // Set a default chat model. if completionsConfig.ChatModel == "" { - completionsConfig.ChatModel = "anthropic/claude-2" + completionsConfig.ChatModel = "anthropic/claude-2.0" } // Set a default fast chat model. @@ -682,7 +682,7 @@ func GetCompletionsConfig(siteConfig schema.SiteConfiguration) (c *conftypes.Com // Set a default chat model. if completionsConfig.ChatModel == "" { - completionsConfig.ChatModel = "claude-2" + completionsConfig.ChatModel = "claude-2.0" } // Set a default fast chat model. diff --git a/internal/conf/computed_test.go b/internal/conf/computed_test.go index df5b85e36f09e..bb0b562955657 100644 --- a/internal/conf/computed_test.go +++ b/internal/conf/computed_test.go @@ -317,7 +317,7 @@ func TestGetCompletionsConfig(t *testing.T) { licenseKey := "theasdfkey" licenseAccessToken := license.GenerateLicenseKeyBasedAccessToken(licenseKey) zeroConfigDefaultWithLicense := &conftypes.CompletionsConfig{ - ChatModel: "anthropic/claude-2", + ChatModel: "anthropic/claude-2.0", ChatModelMaxTokens: 12000, FastChatModel: "anthropic/claude-instant-1", FastChatModelMaxTokens: 9000, @@ -406,7 +406,7 @@ func TestGetCompletionsConfig(t *testing.T) { }, }, wantConfig: &conftypes.CompletionsConfig{ - ChatModel: "claude-2", + ChatModel: "claude-2.0", ChatModelMaxTokens: 12000, FastChatModel: "claude-instant-1", FastChatModelMaxTokens: 9000, @@ -616,7 +616,7 @@ func TestGetCompletionsConfig(t *testing.T) { }, wantConfig: &conftypes.CompletionsConfig{ AccessToken: "sgd_d796dd3efc6c5257694b80cba0537131457b1742b42d081a27aeaef091107bc4", - ChatModel: "anthropic/claude-2", + ChatModel: "anthropic/claude-2.0", ChatModelMaxTokens: 12000, FastChatModel: "anthropic/claude-instant-1", FastChatModelMaxTokens: 9000, From 8d6bffb8b0533b7f5181e432e95f33147139b9d9 Mon Sep 17 00:00:00 2001 From: Vincent <evict@users.noreply.github.com> Date: Mon, 27 Nov 2023 23:09:30 +0000 Subject: [PATCH 174/222] auth: OIDC state improvements (#58564) --- .../internal/auth/openidconnect/middleware.go | 56 ++++++++----------- .../auth/openidconnect/middleware_test.go | 4 +- .../auth/sourcegraphoperator/middleware.go | 4 +- .../sourcegraphoperator/middleware_test.go | 23 ++++---- 4 files changed, 41 insertions(+), 46 deletions(-) diff --git a/cmd/frontend/internal/auth/openidconnect/middleware.go b/cmd/frontend/internal/auth/openidconnect/middleware.go index 3c792a4625519..00a5230e9413c 100644 --- a/cmd/frontend/internal/auth/openidconnect/middleware.go +++ b/cmd/frontend/internal/auth/openidconnect/middleware.go @@ -105,7 +105,7 @@ func handleOpenIDConnectAuth(db database.DB, w http.ResponseWriter, r *http.Requ http.Error(w, safeErrMsg, http.StatusInternalServerError) return } - RedirectToAuthRequest(w, r, p, stateCookieName, auth.SafeRedirectURL(r.URL.String())) + RedirectToAuthRequest(w, r, p, auth.SafeRedirectURL(r.URL.String())) return } @@ -134,11 +134,11 @@ func authHandler(db database.DB) func(w http.ResponseWriter, r *http.Request) { if redirect == "" { redirect = r.URL.Query().Get("returnTo") } - RedirectToAuthRequest(w, r, p, stateCookieName, redirect) + RedirectToAuthRequest(w, r, p, redirect) return case "/callback": // Endpoint for the OIDC Authorization Response, see http://openid.net/specs/openid-connect-core-1_0.html#AuthResponse. - result, safeErrMsg, errStatus, err := AuthCallback(db, r, stateCookieName, "", GetProvider) + result, safeErrMsg, errStatus, err := AuthCallback(db, r, "", GetProvider) if err != nil { log15.Error("Failed to authenticate with OpenID connect.", "error", err) http.Error(w, safeErrMsg, errStatus) @@ -210,7 +210,7 @@ type AuthCallbackResult struct { // In case of an error, it returns the internal error, an error message that is // safe to be passed back to the user, and a proper HTTP status code // corresponding to the error. -func AuthCallback(db database.DB, r *http.Request, stateCookieName, usernamePrefix string, getProvider func(id string) *Provider) (result *AuthCallbackResult, safeErrMsg string, errStatus int, err error) { +func AuthCallback(db database.DB, r *http.Request, usernamePrefix string, getProvider func(id string) *Provider) (result *AuthCallbackResult, safeErrMsg string, errStatus int, err error) { if authError := r.URL.Query().Get("error"); authError != "" { errorDesc := r.URL.Query().Get("error_description") return nil, @@ -225,27 +225,23 @@ func AuthCallback(db database.DB, r *http.Request, stateCookieName, usernamePref desc := "Authentication failed. Try signing in again (and clearing cookies for the current site). No OpenID Connect state query parameter specified." return nil, desc, - http.StatusBadRequest, + http.StatusUnauthorized, errors.New(desc) } - stateCookie, err := r.Cookie(stateCookieName) - if err == http.ErrNoCookie { - return nil, - fmt.Sprintf("Authentication failed. Try signing in again (and clearing cookies for the current site). The error was: no state cookie found (possible request forgery, or more than %s elapsed since you started the authentication process).", stateCookieTimeout), - http.StatusBadRequest, - errors.New("no state cookie found (possible request forgery).") - } else if err != nil { + var oidcState string + if err := session.GetData(r, "oidcState", &oidcState); err != nil { return nil, - "Authentication failed. Try signing in again (and clearing cookies for the current site). The error was: invalid state cookie.", - http.StatusInternalServerError, - errors.Wrap(err, "could not read state cookie (possible request forgery)") + "Authentication failed. Try signing in again (and clearing cookies for the current site). The error was: no state cookie found.", + http.StatusUnauthorized, + errors.New("no state found (possible request forgery).") } - if stateCookie.Value != stateParam { + + if oidcState != stateParam { return nil, "Authentication failed. Try signing in again (and clearing cookies for the current site). The error was: state parameter did not match the expected value (possible request forgery).", - http.StatusBadRequest, - errors.New("state cookie mismatch (possible request forgery)") + http.StatusUnauthorized, + errors.New("state mismatch (possible request forgery)") } // Decode state param value @@ -390,13 +386,9 @@ func (s *AuthnState) Decode(encoded string) error { return json.Unmarshal(b, s) } -// stateCookieTimeout defines how long the state cookie should be valid for a -// single authentication flow. -const stateCookieTimeout = time.Minute * 15 - // RedirectToAuthRequest redirects the user to the authentication endpoint on the // external authentication provider. -func RedirectToAuthRequest(w http.ResponseWriter, r *http.Request, p *Provider, cookieName, returnToURL string) { +func RedirectToAuthRequest(w http.ResponseWriter, r *http.Request, p *Provider, returnToURL string) { // NOTE: We do not have a valid screen at the root path (always gets redirected // to "/search"), and it is a marketing page on Sourcegraph.com, so redirecting to // "/search" is a safe default. @@ -410,19 +402,17 @@ func RedirectToAuthRequest(w http.ResponseWriter, r *http.Request, p *Provider, // // See http://openid.net/specs/openid-connect-core-1_0.html#AuthRequest of the // OIDC spec. - state := (&AuthnState{ + oidcState := (&AuthnState{ CSRFToken: uuid.NewV4().String(), // NOTE: "CSRF" is misleading here as all we want is a unique random value in the state cookie Redirect: returnToURL, ProviderID: p.ConfigID().ID, }).Encode() - http.SetCookie(w, - &http.Cookie{ - Name: cookieName, - Value: state, - Path: auth.AuthURLPrefix + "/", // Include the OIDC redirect URI (/.auth/callback not /.auth/openidconnect/callback for backwards compatibility) - Expires: time.Now().Add(stateCookieTimeout), - }, - ) + + if err := session.SetData(w, r, "oidcState", oidcState); err != nil { + log15.Error("Failed to saving state to session", "error", err) + http.Error(w, "Failed to saving state to session", http.StatusInternalServerError) + return + } // Redirect to the OP's Authorization Endpoint for authentication. The nonce is // an optional string value used to associate a Client session with an ID Token @@ -433,5 +423,5 @@ func RedirectToAuthRequest(w http.ResponseWriter, r *http.Request, p *Provider, // // See http://openid.net/specs/openid-connect-core-1_0.html#AuthRequest of the // OIDC spec. - http.Redirect(w, r, p.oauth2Config().AuthCodeURL(state, oidc.Nonce(state)), http.StatusFound) + http.Redirect(w, r, p.oauth2Config().AuthCodeURL(oidcState, oidc.Nonce(oidcState)), http.StatusFound) } diff --git a/cmd/frontend/internal/auth/openidconnect/middleware_test.go b/cmd/frontend/internal/auth/openidconnect/middleware_test.go index c6883b0f0d73b..966d62271cc69 100644 --- a/cmd/frontend/internal/auth/openidconnect/middleware_test.go +++ b/cmd/frontend/internal/auth/openidconnect/middleware_test.go @@ -196,6 +196,7 @@ func TestMiddleware(t *testing.T) { req = req.WithContext(actor.WithActor(context.Background(), &actor.Actor{UID: mockUserID})) } respRecorder := httptest.NewRecorder() + session.SetData(respRecorder, req, "oidcState", validState) authedHandler.ServeHTTP(respRecorder, req) return respRecorder.Result() } @@ -286,7 +287,7 @@ func TestMiddleware(t *testing.T) { t.Run("OIDC callback without CSRF token -> error", func(t *testing.T) { invalidState := (&AuthnState{CSRFToken: "bad", ProviderID: mockGetProviderValue.ConfigID().ID}).Encode() resp := doRequest("GET", "http://example.com/.auth/callback?code=THECODE&state="+url.PathEscape(invalidState), "", nil, false) - if want := http.StatusBadRequest; resp.StatusCode != want { + if want := http.StatusUnauthorized; resp.StatusCode != want { t.Errorf("got status code %v, want %v", resp.StatusCode, want) } }) @@ -388,6 +389,7 @@ func TestMiddleware_NoOpenRedirect(t *testing.T) { req.AddCookie(cookie) } respRecorder := httptest.NewRecorder() + session.SetData(respRecorder, req, "oidcState", state) authedHandler.ServeHTTP(respRecorder, req) return respRecorder.Result() } diff --git a/cmd/frontend/internal/auth/sourcegraphoperator/middleware.go b/cmd/frontend/internal/auth/sourcegraphoperator/middleware.go index d195dd7cc6666..1dd725860371b 100644 --- a/cmd/frontend/internal/auth/sourcegraphoperator/middleware.go +++ b/cmd/frontend/internal/auth/sourcegraphoperator/middleware.go @@ -69,11 +69,11 @@ func authHandler(db database.DB) func(w http.ResponseWriter, r *http.Request) { http.Error(w, safeErrMsg, http.StatusInternalServerError) return } - openidconnect.RedirectToAuthRequest(w, r, p, stateCookieName, r.URL.Query().Get("redirect")) + openidconnect.RedirectToAuthRequest(w, r, p, r.URL.Query().Get("redirect")) return case "/callback": // Endpoint for the OIDC Authorization Response, see http://openid.net/specs/openid-connect-core-1_0.html#AuthResponse. - result, safeErrMsg, errStatus, err := openidconnect.AuthCallback(db, r, stateCookieName, usernamePrefix, GetOIDCProvider) + result, safeErrMsg, errStatus, err := openidconnect.AuthCallback(db, r, usernamePrefix, GetOIDCProvider) if err != nil { logger.Error("failed to authenticate with Sourcegraph Operator", log.Error(err)) http.Error(w, safeErrMsg, errStatus) diff --git a/cmd/frontend/internal/auth/sourcegraphoperator/middleware_test.go b/cmd/frontend/internal/auth/sourcegraphoperator/middleware_test.go index d771e3b925321..17e49d74fff65 100644 --- a/cmd/frontend/internal/auth/sourcegraphoperator/middleware_test.go +++ b/cmd/frontend/internal/auth/sourcegraphoperator/middleware_test.go @@ -117,7 +117,7 @@ func newOIDCIDServer(t *testing.T, code string, providerConfig *cloud.SchemaAuth return httptest.NewServer(s), &email } -type doRequestFunc func(method, urlStr, body string, cookies []*http.Cookie, authed bool) *http.Response +type doRequestFunc func(method, urlStr, body string, cookies []*http.Cookie, authed bool, state string) *http.Response type mockDetails struct { usersStore *dbmocks.MockUserStore @@ -150,7 +150,7 @@ func newMockDBAndRequester() mockDetails { authedHandler.Handle("/.api/", Middleware(db).API(h)) authedHandler.Handle("/", Middleware(db).App(h)) - doRequest := func(method, urlStr, body string, cookies []*http.Cookie, authed bool) *http.Response { + doRequest := func(method, urlStr, body string, cookies []*http.Cookie, authed bool, state string) *http.Response { req := httptest.NewRequest(method, urlStr, bytes.NewBufferString(body)) for _, cookie := range cookies { req.AddCookie(cookie) @@ -159,6 +159,9 @@ func newMockDBAndRequester() mockDetails { req = req.WithContext(actor.WithActor(context.Background(), &actor.Actor{UID: 1})) } resp := httptest.NewRecorder() + if state != "" { + session.SetData(resp, req, "oidcState", state) + } authedHandler.ServeHTTP(resp, req) return resp.Result() } @@ -196,7 +199,7 @@ func TestMiddleware(t *testing.T) { t.Run("unauthenticated API request should pass through", func(t *testing.T) { mocks := newMockDBAndRequester() - resp := mocks.doRequest(http.MethodGet, "http://example.com/.api/foo", "", nil, false) + resp := mocks.doRequest(http.MethodGet, "http://example.com/.api/foo", "", nil, false, "") assert.Equal(t, http.StatusOK, resp.StatusCode) }) @@ -204,7 +207,7 @@ func TestMiddleware(t *testing.T) { mocks := newMockDBAndRequester() urlStr := fmt.Sprintf("http://example.com%s/login?pc=%s", authPrefix, mockProvider.ConfigID().ID) - resp := mocks.doRequest(http.MethodGet, urlStr, "", nil, false) + resp := mocks.doRequest(http.MethodGet, urlStr, "", nil, false, "") assert.Equal(t, http.StatusFound, resp.StatusCode) location := resp.Header.Get("Location") @@ -228,8 +231,8 @@ func TestMiddleware(t *testing.T) { ProviderID: mockProvider.ConfigID().ID, } urlStr := fmt.Sprintf("http://example.com/.auth/sourcegraph-operator/callback?code=%s&state=%s", testCode, badState.Encode()) - resp := mocks.doRequest(http.MethodGet, urlStr, "", nil, false) - assert.Equal(t, http.StatusBadRequest, resp.StatusCode) + resp := mocks.doRequest(http.MethodGet, urlStr, "", nil, false, badState.Encode()) + assert.Equal(t, http.StatusUnauthorized, resp.StatusCode) }) t.Run("callback with good CSRF should set auth cookie", func(t *testing.T) { @@ -269,7 +272,7 @@ func TestMiddleware(t *testing.T) { Value: state.Encode(), }, } - resp := mocks.doRequest(http.MethodGet, urlStr, "", cookies, false) + resp := mocks.doRequest(http.MethodGet, urlStr, "", cookies, false, state.Encode()) assert.Equal(t, http.StatusFound, resp.StatusCode) wantRedirect := fmt.Sprintf(`%s?signin=OpenIDConnect`, state.Redirect) assert.Equal(t, wantRedirect, resp.Header.Get("Location")) @@ -306,7 +309,7 @@ func TestMiddleware(t *testing.T) { Value: state.Encode(), }, } - resp := mocks.doRequest(http.MethodGet, urlStr, "", cookies, false) + resp := mocks.doRequest(http.MethodGet, urlStr, "", cookies, false, state.Encode()) assert.Equal(t, http.StatusUnauthorized, resp.StatusCode) }) @@ -343,7 +346,7 @@ func TestMiddleware(t *testing.T) { Value: state.Encode(), }, } - resp := mocks.doRequest(http.MethodGet, urlStr, "", cookies, false) + resp := mocks.doRequest(http.MethodGet, urlStr, "", cookies, false, state.Encode()) assert.Equal(t, http.StatusFound, resp.StatusCode) assert.Equal(t, "/", resp.Header.Get("Location")) mockrequire.CalledOnce(t, mocks.usersStore.SetIsSiteAdminFunc) @@ -386,7 +389,7 @@ func TestMiddleware(t *testing.T) { Value: state.Encode(), }, } - resp := mocks.doRequest(http.MethodGet, urlStr, "", cookies, false) + resp := mocks.doRequest(http.MethodGet, urlStr, "", cookies, false, state.Encode()) assert.Equal(t, http.StatusUnauthorized, resp.StatusCode) body, err := io.ReadAll(resp.Body) From 9d8ed353aa70cfabd450a1065103daf5b4cb4324 Mon Sep 17 00:00:00 2001 From: Bolaji Olajide <25608335+BolajiOlajide@users.noreply.github.com> Date: Tue, 28 Nov 2023 00:38:12 +0100 Subject: [PATCH 175/222] code-search: add configuration for rejecting unverified commits (#58385) --- internal/batches/reconciler/BUILD.bazel | 1 + internal/batches/reconciler/executor.go | 14 ++++++++++++-- internal/batches/sources/testing/fake.go | 13 +++++++------ internal/conf/BUILD.bazel | 1 + internal/conf/batch_changes.go | 11 +++++++++++ schema/schema.go | 3 +++ schema/site.schema.json | 8 ++++++++ 7 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 internal/conf/batch_changes.go diff --git a/internal/batches/reconciler/BUILD.bazel b/internal/batches/reconciler/BUILD.bazel index af8b31150edb1..77f1137a821a7 100644 --- a/internal/batches/reconciler/BUILD.bazel +++ b/internal/batches/reconciler/BUILD.bazel @@ -18,6 +18,7 @@ go_library( "//internal/batches/store", "//internal/batches/types", "//internal/batches/webhooks", + "//internal/conf", "//internal/database", "//internal/errcode", "//internal/gitserver", diff --git a/internal/batches/reconciler/executor.go b/internal/batches/reconciler/executor.go index a81646489ff45..c11785da13b96 100644 --- a/internal/batches/reconciler/executor.go +++ b/internal/batches/reconciler/executor.go @@ -18,6 +18,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/batches/store" btypes "github.com/sourcegraph/sourcegraph/internal/batches/types" "github.com/sourcegraph/sourcegraph/internal/batches/webhooks" + "github.com/sourcegraph/sourcegraph/internal/conf" "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/errcode" "github.com/sourcegraph/sourcegraph/internal/gitserver" @@ -644,6 +645,8 @@ func (e *executor) pushCommit(ctx context.Context, opts protocol.CreateCommitFro } func (e *executor) runAfterCommit(ctx context.Context, css sources.ChangesetSource, resp *protocol.CreateCommitFromPatchResponse, remoteRepo *types.Repo, opts protocol.CreateCommitFromPatchRequest) (err error) { + rejectUnverifiedCommit := conf.RejectUnverifiedCommit() + // If we're pushing to a GitHub code host, we should check if a GitHub App is // configured for Batch Changes to sign commits on this code host with. if _, ok := css.(*sources.GitHubSource); ok { @@ -652,11 +655,15 @@ func (e *executor) runAfterCommit(ctx context.Context, css sources.ChangesetSour if err != nil { switch err { case sources.ErrNoGitHubAppConfigured: + if rejectUnverifiedCommit { + return errors.New("no GitHub App configured to sign commit, rejecting unverified commit") + } // If we didn't find any GitHub Apps configured for this code host, it's a // noop; commit signing is not set up for this code host. - break default: - // We shouldn't block on this error, but we should still log it. + if rejectUnverifiedCommit { + return errors.Wrap(err, "failed to get GitHub App for commit verification") + } log15.Error("Failed to get GitHub App authenticated ChangesetSource", "err", err) } } else { @@ -684,6 +691,9 @@ func (e *executor) runAfterCommit(ctx context.Context, css sources.ChangesetSour return errors.Wrap(err, "failed to update changeset with commit verification") } } else { + if rejectUnverifiedCommit { + return errors.Wrap(err, "commit created with GitHub App was not signed, rejecting unverified commit") + } log15.Warn("Commit created with GitHub App was not signed", "changeset", e.ch.ID, "commit", newCommit.SHA) } } diff --git a/internal/batches/sources/testing/fake.go b/internal/batches/sources/testing/fake.go index bcaefcb805720..ee2618a8d4b94 100644 --- a/internal/batches/sources/testing/fake.go +++ b/internal/batches/sources/testing/fake.go @@ -217,6 +217,7 @@ func (s *FakeChangesetSource) ExternalServices() types.ExternalServices { return types.ExternalServices{s.Svc} } + func (s *FakeChangesetSource) LoadChangeset(ctx context.Context, c *sources.Changeset) error { s.LoadChangesetCalled = true @@ -239,12 +240,6 @@ func (s *FakeChangesetSource) LoadChangeset(ctx context.Context, c *sources.Chan return nil } -type noReposErr struct{ name string } - -func (e noReposErr) Error() string { - return "no " + e.name + " repository set on Changeset" -} - func (s *FakeChangesetSource) CloseChangeset(ctx context.Context, c *sources.Changeset) error { s.CloseChangesetCalled = true @@ -324,3 +319,9 @@ func (s *FakeChangesetSource) BuildCommitOpts(repo *types.Repo, _ *btypes.Change s.BuildCommitOptsCalled = true return sources.BuildCommitOptsCommon(repo, spec, cfg) } + +type noReposErr struct{ name string } + +func (e noReposErr) Error() string { + return "no " + e.name + " repository set on Changeset" +} diff --git a/internal/conf/BUILD.bazel b/internal/conf/BUILD.bazel index ced5672a0c505..702921c386a8f 100644 --- a/internal/conf/BUILD.bazel +++ b/internal/conf/BUILD.bazel @@ -5,6 +5,7 @@ go_library( name = "conf", srcs = [ "auth.go", + "batch_changes.go", "client.go", "cody_validators.go", "computed.go", diff --git a/internal/conf/batch_changes.go b/internal/conf/batch_changes.go new file mode 100644 index 0000000000000..b200d734d66f0 --- /dev/null +++ b/internal/conf/batch_changes.go @@ -0,0 +1,11 @@ +package conf + +// RejectUnverifiedCommit returns a boolean indicating if unverified commits in changesets +// created by a Batch Change should result in an error. +func RejectUnverifiedCommit() bool { + cfg := Get().SiteConfig().BatchChangesRejectUnverifiedCommit + if cfg == nil { + return false + } + return *cfg +} diff --git a/schema/schema.go b/schema/schema.go index 5a3b006e1d859..579c9e59cdd7c 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -2564,6 +2564,8 @@ type SiteConfiguration struct { BatchChangesEnabled *bool `json:"batchChanges.enabled,omitempty"` // BatchChangesEnforceForks description: When enabled, all branches created by batch changes will be pushed to forks of the original repository. BatchChangesEnforceForks bool `json:"batchChanges.enforceForks,omitempty"` + // BatchChangesRejectUnverifiedCommit description: Reject unverified commits when creating a Batch Change + BatchChangesRejectUnverifiedCommit *bool `json:"batchChanges.rejectUnverifiedCommit,omitempty"` // BatchChangesRestrictToAdmins description: When enabled, only site admins can create and apply batch changes. BatchChangesRestrictToAdmins *bool `json:"batchChanges.restrictToAdmins,omitempty"` // BatchChangesRolloutWindows description: Specifies specific windows, which can have associated rate limits, to be used when reconciling published changesets (creating or updating). All days and times are handled in UTC. @@ -2838,6 +2840,7 @@ func (v *SiteConfiguration) UnmarshalJSON(data []byte) error { delete(m, "batchChanges.disableWebhooksWarning") delete(m, "batchChanges.enabled") delete(m, "batchChanges.enforceForks") + delete(m, "batchChanges.rejectUnverifiedCommit") delete(m, "batchChanges.restrictToAdmins") delete(m, "batchChanges.rolloutWindows") delete(m, "branding") diff --git a/schema/site.schema.json b/schema/site.schema.json index 8e59f8024c88f..425a903fa007f 100644 --- a/schema/site.schema.json +++ b/schema/site.schema.json @@ -1968,6 +1968,14 @@ } ] }, + "batchChanges.rejectUnverifiedCommit": { + "description": "Reject unverified commits when creating a Batch Change", + "type": "boolean", + "default": false, + "!go": { + "pointer": true + } + }, "gitserver.diskUsageWarningThreshold": { "description": "Disk usage threshold at which to display warning notification. Value is a percentage.", "type": "integer", From b28b962fbacdc82551a4ee1ceb210b7f6199b20e Mon Sep 17 00:00:00 2001 From: Robert Lin <robert@bobheadxi.dev> Date: Mon, 27 Nov 2023 16:30:59 -0800 Subject: [PATCH 176/222] sg: improve positional completions (#58569) Improves positional completions added for `sg msp` in #58538 by checking for partial flag input (`-` and `--`), which now complete flags correctly, and also improving the way we build positional argument completions with a more robust helper, `completions.CompletePositionalArgs`. --- deps.bzl | 4 +- dev/sg/ci/subcommands.go | 2 +- dev/sg/msp/repo/repo.go | 30 ++++++------- dev/sg/msp/sg_msp.go | 34 +++++++------- dev/sg/sg_generate.go | 2 +- dev/sg/sg_lint.go | 2 +- dev/sg/sg_live.go | 2 +- dev/sg/sg_run.go | 2 +- dev/sg/sg_secret.go | 2 +- dev/sg/sg_start.go | 2 +- dev/sg/sg_tests.go | 2 +- go.mod | 2 +- go.sum | 3 +- lib/cliutil/completions/options.go | 71 +++++++++++++++++++++++------- monitoring/command/generate.go | 2 +- 15 files changed, 98 insertions(+), 64 deletions(-) diff --git a/deps.bzl b/deps.bzl index a458d4dcb8f4d..d2716e108a565 100644 --- a/deps.bzl +++ b/deps.bzl @@ -1418,8 +1418,8 @@ def go_dependencies(): name = "com_github_cpuguy83_go_md2man_v2", build_file_proto_mode = "disable_global", importpath = "github.com/cpuguy83/go-md2man/v2", - sum = "h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=", - version = "v2.0.2", + sum = "h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM=", + version = "v2.0.3", ) go_repository( name = "com_github_creack_pty", diff --git a/dev/sg/ci/subcommands.go b/dev/sg/ci/subcommands.go index 32d1e7502b4af..5b3df46563a41 100644 --- a/dev/sg/ci/subcommands.go +++ b/dev/sg/ci/subcommands.go @@ -318,7 +318,7 @@ sg ci build docker-images-patch-notest prometheus # Publish all images without testing sg ci build docker-images-candidates-notest `, - BashComplete: completions.CompleteOptions(getAllowedBuildTypeArgs), + BashComplete: completions.CompleteArgs(getAllowedBuildTypeArgs), Flags: []cli.Flag{ &ciPipelineFlag, &cli.StringFlag{ diff --git a/dev/sg/msp/repo/repo.go b/dev/sg/msp/repo/repo.go index 6b9bca0cc4ff7..52c38e2bcf08b 100644 --- a/dev/sg/msp/repo/repo.go +++ b/dev/sg/msp/repo/repo.go @@ -73,25 +73,21 @@ func ServicesAndEnvironmentsCompletion() cli.BashCompleteFunc { if err != nil { return nil } - return func(c *cli.Context) { - switch c.Args().Len() { - case 0: // service not yet provided, try to complete service - completions.CompleteOptions(func() (options []string) { + return completions.CompletePositionalArgs( + func(args cli.Args) (options []string) { + services, _ := listServicesFromRoot(repoRoot) + return services + }, + func(args cli.Args) (options []string) { + svc, err := spec.Open(filepath.Join(repoRoot, ServiceYAMLPath(args.First()))) + if err != nil { + // try to complete services as a fallback services, _ := listServicesFromRoot(repoRoot) return services - })(c) - case 1: // service already provided, try to complete environment - completions.CompleteOptionsOnly(func() (options []string) { - svc, err := spec.Open(filepath.Join(repoRoot, ServiceYAMLPath(c.Args().First()))) - if err != nil { - // try to complete services as a fallback - services, _ := listServicesFromRoot(repoRoot) - return services - } - return svc.ListEnvironmentIDs() - })(c) - } - } + } + return svc.ListEnvironmentIDs() + }, + ) } func ServiceYAMLPath(serviceID string) string { diff --git a/dev/sg/msp/sg_msp.go b/dev/sg/msp/sg_msp.go index e69f04c447c46..6457434128531 100644 --- a/dev/sg/msp/sg_msp.go +++ b/dev/sg/msp/sg_msp.go @@ -48,9 +48,9 @@ func init() { // All 'sg msp ...' subcommands Command.Subcommands = []*cli.Command{ { - Name: "init", - ArgsUsage: "<service ID>", - Description: "Initialize a template Managed Services Platform service spec", + Name: "init", + ArgsUsage: "<service ID>", + Usage: "Initialize a template Managed Services Platform service spec", Flags: []cli.Flag{ &cli.StringFlag{ Name: "kind", @@ -186,11 +186,11 @@ func init() { }, }, { - Name: "generate", - Aliases: []string{"gen"}, - ArgsUsage: "<service ID>", - Description: "Generate Terraform assets for a Managed Services Platform service spec.", - Usage: `Optionally use '-all' to sync all environments for a service. + Name: "generate", + Aliases: []string{"gen"}, + ArgsUsage: "<service ID>", + Usage: "Generate Terraform assets for a Managed Services Platform service spec.", + Description: `Optionally use '-all' to sync all environments for a service. Supports completions on services and environments.`, UsageText: ` @@ -267,15 +267,15 @@ sg msp generate -all <service> }, }, { - Name: "terraform-cloud", - Aliases: []string{"tfc"}, - Description: "Manage Terraform Cloud workspaces for a service", - Before: msprepo.UseManagedServicesRepo, + Name: "terraform-cloud", + Aliases: []string{"tfc"}, + Usage: "Manage Terraform Cloud workspaces for a service", + Before: msprepo.UseManagedServicesRepo, Subcommands: []*cli.Command{ { - Name: "sync", - Description: "Create or update all required Terraform Cloud workspaces for an environment", - Usage: `Optionally use '-all' to sync all environments for a service. + Name: "sync", + Usage: "Create or update all required Terraform Cloud workspaces for an environment", + Description: `Optionally use '-all' to sync all environments for a service. Supports completions on services and environments.`, ArgsUsage: "<service ID> [environment ID]", @@ -366,8 +366,8 @@ Supports completions on services and environments.`, }, }, { - Name: "schema", - Description: "Generate JSON schema definition for service specification", + Name: "schema", + Usage: "Generate JSON schema definition for service specification", Flags: []cli.Flag{ &cli.StringFlag{ Name: "output", diff --git a/dev/sg/sg_generate.go b/dev/sg/sg_generate.go index 751ecf5120abd..d22bf5acace2d 100644 --- a/dev/sg/sg_generate.go +++ b/dev/sg/sg_generate.go @@ -114,7 +114,7 @@ func (gt generateTargets) Commands() (cmds []*cli.Command) { for _, c := range gt { var complete cli.BashCompleteFunc if c.Completer != nil { - complete = completions.CompleteOptions(c.Completer) + complete = completions.CompleteArgs(c.Completer) } cmds = append(cmds, &cli.Command{ Name: c.Name, diff --git a/dev/sg/sg_lint.go b/dev/sg/sg_lint.go index 5fe97ef987431..312b1f726c8e3 100644 --- a/dev/sg/sg_lint.go +++ b/dev/sg/sg_lint.go @@ -174,7 +174,7 @@ func (lt lintTargets) Commands() (cmds []*cli.Command) { return runner.Check(cmd.Context, repoState) }, // Completions to chain multiple commands - BashComplete: completions.CompleteOptions(func() (options []string) { + BashComplete: completions.CompleteArgs(func() (options []string) { for _, c := range lt { options = append(options, c.Name) } diff --git a/dev/sg/sg_live.go b/dev/sg/sg_live.go index c49f24d7553b4..bfac5a5d9b9c7 100644 --- a/dev/sg/sg_live.go +++ b/dev/sg/sg_live.go @@ -45,7 +45,7 @@ sg live -n 50 s2 Usage: "Number of commits to check for live version", }, }, - BashComplete: completions.CompleteOptions(func() (options []string) { + BashComplete: completions.CompleteArgs(func() (options []string) { return append(environmentNames(), `https\://...`) }), } diff --git a/dev/sg/sg_run.go b/dev/sg/sg_run.go index 1be26be3925a0..a30fe02916e54 100644 --- a/dev/sg/sg_run.go +++ b/dev/sg/sg_run.go @@ -67,7 +67,7 @@ sg run -describe jaeger }, }, Action: runExec, - BashComplete: completions.CompleteOptions(func() (options []string) { + BashComplete: completions.CompleteArgs(func() (options []string) { config, _ := getConfig() if config == nil { return diff --git a/dev/sg/sg_secret.go b/dev/sg/sg_secret.go index 81a9534e92d44..85948c74a1ec2 100644 --- a/dev/sg/sg_secret.go +++ b/dev/sg/sg_secret.go @@ -35,7 +35,7 @@ sg secret reset buildkite ArgsUsage: "<...key>", Usage: "Remove a specific secret from secrets file", Action: resetSecretExec, - BashComplete: completions.CompleteOptions(bashCompleteSecrets), + BashComplete: completions.CompleteArgs(bashCompleteSecrets), }, { Name: "list", diff --git a/dev/sg/sg_start.go b/dev/sg/sg_start.go index eacf959082474..db420cfbfccd9 100644 --- a/dev/sg/sg_start.go +++ b/dev/sg/sg_start.go @@ -132,7 +132,7 @@ sg start -describe single-program Destination: &onlyServices, }, }, - BashComplete: completions.CompleteOptions(func() (options []string) { + BashComplete: completions.CompleteArgs(func() (options []string) { config, _ := getConfig() if config == nil { return diff --git a/dev/sg/sg_tests.go b/dev/sg/sg_tests.go index e2302dd1dc704..1f1946de5b682 100644 --- a/dev/sg/sg_tests.go +++ b/dev/sg/sg_tests.go @@ -40,7 +40,7 @@ sg test -help sg test backend-integration -run TestSearch `, Category: category.Dev, - BashComplete: completions.CompleteOptions(func() (options []string) { + BashComplete: completions.CompleteArgs(func() (options []string) { config, _ := getConfig() if config == nil { return diff --git a/go.mod b/go.mod index 2ed003d069f93..96a0e1fed8f9f 100644 --- a/go.mod +++ b/go.mod @@ -437,7 +437,7 @@ require ( github.com/cockroachdb/redact v1.1.5 github.com/containerd/typeurl v1.0.2 // indirect github.com/coreos/go-iptables v0.6.0 - github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect github.com/dave/jennifer v1.6.1 // indirect github.com/di-wu/xsd-datetime v1.0.0 github.com/djherbis/buffer v1.2.0 // indirect diff --git a/go.sum b/go.sum index a15843a3b02cd..2408fbecfdafa 100644 --- a/go.sum +++ b/go.sum @@ -395,8 +395,9 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= diff --git a/lib/cliutil/completions/options.go b/lib/cliutil/completions/options.go index 2788bcd59e8fa..283d924421eca 100644 --- a/lib/cliutil/completions/options.go +++ b/lib/cliutil/completions/options.go @@ -6,26 +6,63 @@ import ( "github.com/urfave/cli/v2" ) -// CompleteOptions provides autocompletions based on the options returned by -// generateOptions. generateOptions must not write to output, or reference any resources -// that are initialized elsewhere. -func CompleteOptions(generateOptions func() (options []string)) cli.BashCompleteFunc { - return func(cmd *cli.Context) { - for _, opt := range generateOptions() { - fmt.Fprintf(cmd.App.Writer, "%s\n", opt) - } - // Also render default completions to support flags - cli.DefaultCompleteWithFlags(cmd.Command)(cmd) +// defaultCompletions renders the default completions for a command. +func defaultCompletions() cli.BashCompleteFunc { + return func(c *cli.Context) { cli.DefaultCompleteWithFlags(c.Command)(c) } +} + +// CompleteArgs provides autocompletions based on the options returned by +// generateOptions. generateOptions is provided for every argument. +// +// generateOptions must not write to output, or reference any +// resources that are initialized elsewhere. +func CompleteArgs(generateOptions func() (options []string)) cli.BashCompleteFunc { + return func(c *cli.Context) { + CompletePositionalArgs(func(_ cli.Args) (options []string) { + return generateOptions() + })(c) } } -// CompleteOptionsOnly is like CompleteOptions, but does not render default -// completions - useful for generating completions for arguments beyond the first, -// where flag help is no longer needed. -func CompleteOptionsOnly(generateOptions func() (options []string)) cli.BashCompleteFunc { - return func(cmd *cli.Context) { - for _, opt := range generateOptions() { - fmt.Fprintf(cmd.App.Writer, "%s\n", opt) +// CompletePositionalArgs provides autocompletions for multiple positional +// arguments based on the options returned by the corresponding options generator. +// If there are more arguments than generators, no completion is provided. +// +// Each generator must not write to output, or reference any resources that are +// initialized elsewhere. +func CompletePositionalArgs(generators ...func(args cli.Args) (options []string)) cli.BashCompleteFunc { + return func(c *cli.Context) { + // Let default handler deal with flag completions if the latest argument + // looks like the start of a flag + if c.NArg() > 0 { + if f := c.Args().Get(c.NArg() - 1); f == "-" || f == "--" { + defaultCompletions()(c) + return + } + } + + // More arguments than positional options generators, we have no more + // completions to offer + if len(generators) <= c.NArg() { + return + } + + // Generate the options for this posarg + opts := generators[c.NArg()](c.Args()) + + // If there are no options, render the previous options if we can, as + // user may be typing the previous argument + if len(opts) == 0 && c.NArg() >= 1 { + opts = generators[c.NArg()-1](c.Args()) + } + + // Render the options + for _, opt := range opts { + fmt.Fprintf(c.App.Writer, "%s\n", opt) + } + // Also render default completions if there are no args yet + if c.Args().Len() == 0 { + defaultCompletions()(c) } } } diff --git a/monitoring/command/generate.go b/monitoring/command/generate.go index c5703abe94a89..a859ad8dd0775 100644 --- a/monitoring/command/generate.go +++ b/monitoring/command/generate.go @@ -107,7 +107,7 @@ func Generate(cmdRoot string, sgRoot string) *cli.Command { Usage: "If non-empty, indicates whether or not to generate multi-instance assets with the provided labels to group on. The standard per-instance monitoring assets will NOT be generated.", }, }, - BashComplete: completions.CompleteOptions(func() (options []string) { + BashComplete: completions.CompleteArgs(func() (options []string) { return definitions.Default().Names() }), Action: func(c *cli.Context) error { From 0d359ea0343144ef8aced20e43beb7611d3e3e69 Mon Sep 17 00:00:00 2001 From: Robert Lin <robert@bobheadxi.dev> Date: Mon, 27 Nov 2023 16:32:56 -0800 Subject: [PATCH 177/222] msp/runtime: add Redis address (#58570) Adds the Redis endpoint provisioned by MSP. In MSP, this is just a simple string, with networking/TLS/etc already provisioned on the instance, so the configuration is just a string (unlike Cloud SQL, where we use IAM auth in #58420). --- lib/managedservicesplatform/runtime/contract.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/managedservicesplatform/runtime/contract.go b/lib/managedservicesplatform/runtime/contract.go index 6d7ee4909fa08..d35ce36160d12 100644 --- a/lib/managedservicesplatform/runtime/contract.go +++ b/lib/managedservicesplatform/runtime/contract.go @@ -26,6 +26,9 @@ type Contract struct { Port int // ExternalDNSName is the DNS name the service uses, if one is configured. ExternalDNSName *string + // RedisEndpoint is the full Redis address, including any prerequisite + // authentication. + RedisEndpoint *string postgreSQLContract @@ -46,6 +49,7 @@ func newContract(env *Env) Contract { MSP: env.GetBool("MSP", "false", "indicates if we are running in a MSP environment"), Port: env.GetInt("PORT", "", "service port"), ExternalDNSName: env.GetOptional("EXTERNAL_DNS_NAME", "external DNS name provisioned for the service"), + RedisEndpoint: env.GetOptional("REDIS_ENDPOINT", "full Redis address, including any prerequisite authentication"), postgreSQLContract: postgreSQLContract{ customDSNTemplate: env.GetOptional("PGDSN", "custom PostgreSQL DSN with templatized database, e.g. 'user=foo database={{ .Database }}'"), From 3ac2170c6523dd074835919a1804f197cf86e451 Mon Sep 17 00:00:00 2001 From: Robert Lin <robert@bobheadxi.dev> Date: Mon, 27 Nov 2023 16:50:04 -0800 Subject: [PATCH 178/222] msp/runtime: add Sentry enablement (#58571) --- lib/managedservicesplatform/go.mod | 2 +- lib/managedservicesplatform/runtime/BUILD.bazel | 1 + lib/managedservicesplatform/runtime/contract.go | 3 +++ lib/managedservicesplatform/runtime/service.go | 16 +++++++++++++++- 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/managedservicesplatform/go.mod b/lib/managedservicesplatform/go.mod index fe8812b4e818c..a83240499b824 100644 --- a/lib/managedservicesplatform/go.mod +++ b/lib/managedservicesplatform/go.mod @@ -8,6 +8,7 @@ require ( cloud.google.com/go/cloudsqlconn v1.5.1 github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.41.0 github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.17.0 + github.com/getsentry/sentry-go v0.25.0 github.com/jackc/pgx/v5 v5.5.0 github.com/prometheus/client_golang v1.16.0 github.com/sourcegraph/conc v0.2.0 @@ -38,7 +39,6 @@ require ( github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/fatih/color v1.15.0 // indirect - github.com/getsentry/sentry-go v0.25.0 // indirect github.com/go-logr/logr v1.3.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect diff --git a/lib/managedservicesplatform/runtime/BUILD.bazel b/lib/managedservicesplatform/runtime/BUILD.bazel index b1a416a126b35..4ec9c28908347 100644 --- a/lib/managedservicesplatform/runtime/BUILD.bazel +++ b/lib/managedservicesplatform/runtime/BUILD.bazel @@ -16,6 +16,7 @@ go_library( "//lib/errors", "//lib/managedservicesplatform/runtime/internal/opentelemetry", "//lib/pointers", + "@com_github_getsentry_sentry_go//:sentry-go", "@com_github_jackc_pgx_v5//:pgx", "@com_github_jackc_pgx_v5//stdlib", "@com_github_sourcegraph_log//:log", diff --git a/lib/managedservicesplatform/runtime/contract.go b/lib/managedservicesplatform/runtime/contract.go index d35ce36160d12..9edce027d3605 100644 --- a/lib/managedservicesplatform/runtime/contract.go +++ b/lib/managedservicesplatform/runtime/contract.go @@ -33,6 +33,8 @@ type Contract struct { postgreSQLContract opentelemetryContract opentelemetry.Config + + sentryDSN *string } type postgreSQLContract struct { @@ -62,6 +64,7 @@ func newContract(env *Env) Contract { env.GetOptional("OTEL_GCP_PROJECT_ID", "GCP project ID for OpenTelemetry export"), defaultGCPProjectID), }, + sentryDSN: env.GetOptional("SENTRY_DSN", "Sentry error reporting DSN"), } } diff --git a/lib/managedservicesplatform/runtime/service.go b/lib/managedservicesplatform/runtime/service.go index f775779fa56d2..c140936d3877f 100644 --- a/lib/managedservicesplatform/runtime/service.go +++ b/lib/managedservicesplatform/runtime/service.go @@ -3,6 +3,7 @@ package runtime import ( "context" + "github.com/getsentry/sentry-go" "github.com/sourcegraph/log" "github.com/sourcegraph/sourcegraph/lib/background" @@ -43,7 +44,7 @@ func Start[ InstanceID: "", } - liblog := log.Init(res) + liblog := log.Init(res, log.NewSentrySink()) defer liblog.Sync() ctx := context.Background() @@ -61,6 +62,19 @@ func Start[ config.Load(env) contract := newContract(env) + // Enable Sentry error log reporting + if contract.sentryDSN != nil { + liblog.Update(func() log.SinksConfig { + return log.SinksConfig{ + Sentry: &log.SentrySink{ + ClientOptions: sentry.ClientOptions{ + Dsn: *contract.sentryDSN, + }, + }, + } + })() + } + // Check for environment errors if err := env.validate(); err != nil { logger.Fatal("environment configuration error encountered", log.Error(err)) From eeab63d851dabc3cfac0a303d5c7b9307b433aa3 Mon Sep 17 00:00:00 2001 From: Naman Kumar <naman@outlook.in> Date: Tue, 28 Nov 2023 08:18:18 +0530 Subject: [PATCH 179/222] Cody Onboarding & Management (#58488) * Cody Onboarding & Management * fix types * fix copy * fix types * fix liniting --- .../settings/temporary/TemporarySettings.ts | 4 + client/web/BUILD.bazel | 6 + client/web/src/cody/chat/CodyChatPage.tsx | 9 + .../management/CodyManagementPage.module.scss | 30 ++ .../cody/management/CodyManagementPage.tsx | 327 +++++++++++++++++ .../onboarding/CodyOnboarding.module.scss | 26 ++ .../src/cody/onboarding/CodyOnboarding.tsx | 298 +++++++++++++++ .../cody/onboarding/instructions/VsCode.tsx | 166 +++++++++ .../CodySubscriptionPage.module.scss | 66 ++++ .../subscription/CodySubscriptionPage.tsx | 341 ++++++++++++++++++ .../cody/subscription/UpgradeToProModal.tsx | 168 +++++++++ client/web/src/cody/subscription/queries.tsx | 21 ++ client/web/src/featureFlags/featureFlags.ts | 1 + client/web/src/get-cody/GetCodyPage.tsx | 19 +- client/web/src/routes.constants.ts | 2 + client/web/src/routes.tsx | 13 + client/web/src/util/constants.ts | 5 + cmd/frontend/graphqlbackend/schema.graphql | 4 +- cmd/frontend/graphqlbackend/user.go | 7 +- cmd/frontend/internal/app/ui/router.go | 2 + internal/database/dbmocks/mocks_temp.go | 245 ++++++------- internal/database/users.go | 17 +- 22 files changed, 1645 insertions(+), 132 deletions(-) create mode 100644 client/web/src/cody/management/CodyManagementPage.module.scss create mode 100644 client/web/src/cody/management/CodyManagementPage.tsx create mode 100644 client/web/src/cody/onboarding/CodyOnboarding.module.scss create mode 100644 client/web/src/cody/onboarding/CodyOnboarding.tsx create mode 100644 client/web/src/cody/onboarding/instructions/VsCode.tsx create mode 100644 client/web/src/cody/subscription/CodySubscriptionPage.module.scss create mode 100644 client/web/src/cody/subscription/CodySubscriptionPage.tsx create mode 100644 client/web/src/cody/subscription/UpgradeToProModal.tsx create mode 100644 client/web/src/cody/subscription/queries.tsx diff --git a/client/shared/src/settings/temporary/TemporarySettings.ts b/client/shared/src/settings/temporary/TemporarySettings.ts index bfe48ac135c22..2af60143a5737 100644 --- a/client/shared/src/settings/temporary/TemporarySettings.ts +++ b/client/shared/src/settings/temporary/TemporarySettings.ts @@ -85,6 +85,8 @@ export interface TemporarySettingsSchema { 'admin.hasDismissedCodeHostPrivacyWarning': boolean 'admin.hasCompletedLicenseCheck': boolean 'simple.search.toggle': boolean + 'cody.onboarding.completed': boolean + 'cody.onboarding.step': number } /** @@ -146,6 +148,8 @@ const TEMPORARY_SETTINGS: Record<keyof TemporarySettings, null> = { 'admin.hasDismissedCodeHostPrivacyWarning': null, 'admin.hasCompletedLicenseCheck': null, 'simple.search.toggle': null, + 'cody.onboarding.completed': null, + 'cody.onboarding.step': null, } export const TEMPORARY_SETTINGS_KEYS = Object.keys(TEMPORARY_SETTINGS) as readonly (keyof TemporarySettings)[] diff --git a/client/web/BUILD.bazel b/client/web/BUILD.bazel index 487585600717f..6723de7abff1a 100644 --- a/client/web/BUILD.bazel +++ b/client/web/BUILD.bazel @@ -239,6 +239,9 @@ ts_project( "src/cody/components/ScopeSelector/index.tsx", "src/cody/components/ScopeSelector/useRepoSuggestions.ts", "src/cody/isCodyEnabled.tsx", + "src/cody/management/CodyManagementPage.tsx", + "src/cody/onboarding/CodyOnboarding.tsx", + "src/cody/onboarding/instructions/VsCode.tsx", "src/cody/search/CodySearchPage.tsx", "src/cody/search/api.ts", "src/cody/search/translateToQuery.ts", @@ -246,6 +249,9 @@ ts_project( "src/cody/sidebar/Provider.tsx", "src/cody/sidebar/index.tsx", "src/cody/sidebar/useSidebarSize.tsx", + "src/cody/subscription/CodySubscriptionPage.tsx", + "src/cody/subscription/UpgradeToProModal.tsx", + "src/cody/subscription/queries.tsx", "src/cody/update/AboutPageUpdate.tsx", "src/cody/update/InstallModal.tsx", "src/cody/update/ReviewAndInstallModal.tsx", diff --git a/client/web/src/cody/chat/CodyChatPage.tsx b/client/web/src/cody/chat/CodyChatPage.tsx index 80a3b6f4d6a5e..acc75c96678aa 100644 --- a/client/web/src/cody/chat/CodyChatPage.tsx +++ b/client/web/src/cody/chat/CodyChatPage.tsx @@ -146,6 +146,8 @@ export const CodyChatPage: React.FunctionComponent<CodyChatPageProps> = ({ setShowMobileHistory(false) }, [transcript]) + const [isCodyProEnabled] = useFeatureFlag('cody-pro', false) + if (!loaded) { return null } @@ -222,6 +224,13 @@ export const CodyChatPage: React.FunctionComponent<CodyChatPageProps> = ({ Beta </Badge> )} + {!isCodyApp && isCodyProEnabled && ( + <Link to="/cody/manage"> + <Text className="mb-0 ml-2" size="small"> + Manage + </Text> + </Link> + )} </div> </PageHeader.Breadcrumb> </PageHeader.Heading> diff --git a/client/web/src/cody/management/CodyManagementPage.module.scss b/client/web/src/cody/management/CodyManagementPage.module.scss new file mode 100644 index 0000000000000..ef2861345a225 --- /dev/null +++ b/client/web/src/cody/management/CodyManagementPage.module.scss @@ -0,0 +1,30 @@ +@import 'wildcard/src/global-styles/breakpoints'; + +.responsive-container { + @media (--sm-breakpoint-down) { + flex-direction: column; + align-items: center; + + > div { + border: none !important; + align-items: center; + } + } +} + +.plan-name { + font-size: 1.5rem; + font-weight: 600; +} + +.counter { + font-size: 1.25rem; +} + +.ide-name { + font-size: 1rem; +} + +.modal { + width: 50rem; +} diff --git a/client/web/src/cody/management/CodyManagementPage.tsx b/client/web/src/cody/management/CodyManagementPage.tsx new file mode 100644 index 0000000000000..f690764efa386 --- /dev/null +++ b/client/web/src/cody/management/CodyManagementPage.tsx @@ -0,0 +1,327 @@ +import React, { useEffect } from 'react' +import type { ReactElement } from 'react' + +import { mdiHelpCircleOutline, mdiTrendingUp, mdiDownload, mdiInformation } from '@mdi/js' +import classNames from 'classnames' + +import { useQuery } from '@sourcegraph/http-client' +import { Icon, PageHeader, Link, H4, H2, Text, ButtonLink, Modal, useSearchParameters } from '@sourcegraph/wildcard' + +import { Page } from '../../components/Page' +import { PageTitle } from '../../components/PageTitle' +import { useFeatureFlag } from '../../featureFlags/useFeatureFlag' +import type { UserCodyPlanResult, UserCodyPlanVariables } from '../../graphql-operations' +import { eventLogger } from '../../tracking/eventLogger' +import { EventName } from '../../util/constants' +import { CodyColorIcon } from '../chat/CodyPageIcon' +import { isCodyEnabled } from '../isCodyEnabled' +import { CodyOnboarding, editorGroups, IEditor } from '../onboarding/CodyOnboarding' +import { ProTierIcon } from '../subscription/CodySubscriptionPage' +import { USER_CODY_PLAN } from '../subscription/queries' + +import styles from './CodyManagementPage.module.scss' + +interface CodyManagementPageProps { + isSourcegraphDotCom: boolean +} + +export const CodyManagementPage: React.FunctionComponent<CodyManagementPageProps> = ({ isSourcegraphDotCom }) => { + const parameters = useSearchParameters() + + const utm_source = parameters.get('utm_source') + + useEffect(() => { + eventLogger.log(EventName.CODY_MANAGEMENT_PAGE_VIEWED, { utm_source }) + }, [utm_source]) + + const { data } = useQuery<UserCodyPlanResult, UserCodyPlanVariables>(USER_CODY_PLAN, {}) + + const [isEnabled] = useFeatureFlag('cody-pro', false) + + const [selectedEditor, setSelectedEditor] = React.useState<IEditor | null>(null) + const [selectedEditorStep, setSelectedEditorStep] = React.useState<number | null>(null) + + if (!isCodyEnabled() || !isSourcegraphDotCom || !isEnabled || !data?.currentUser) { + return null + } + + const { codyProEnabled } = data.currentUser + + return ( + <> + <Page className={classNames('d-flex flex-column')}> + <PageTitle title="Dashboard" /> + <PageHeader className="mb-4"> + <PageHeader.Heading as="h2" styleAs="h1"> + <div className="d-inline-flex align-items-center"> + <CodyColorIcon width={40} height={40} className="mr-2" /> Dashboard + </div> + </PageHeader.Heading> + </PageHeader> + + <div className="p-3 border bg-1 mt-4"> + <div className="d-flex justify-content-between align-items-center border-bottom pb-3"> + <div> + <H2>My Subscription</H2> + <Text className="text-muted mb-0"> + You are on a {codyProEnabled ? 'pro' : 'community'} tier. + </Text> + </div> + {codyProEnabled ? ( + <div> + <ButtonLink to="/cody/subscription" variant="secondary" outline={true} size="sm"> + Manage Subscription + </ButtonLink> + </div> + ) : ( + <div> + <ButtonLink to="/cody/subscription" variant="primary" size="sm"> + <Icon svgPath={mdiTrendingUp} className="mr-1" aria-hidden={true} /> + Upgrade for free + </ButtonLink> + </div> + )} + </div> + <div className={classNames('d-flex align-items-center mt-3', styles.responsiveContainer)}> + <div className="d-flex flex-column align-items-center flex-grow-1 p-3"> + {codyProEnabled ? ( + <ProTierIcon /> + ) : ( + <Text className={classNames(styles.planName, 'mb-0')}>Community</Text> + )} + <Text className="text-muted mb-0" size="small"> + tier + </Text> + </div> + <div className="d-flex flex-column align-items-center flex-grow-1 p-3 border-left border-right"> + <AutocompletesIcon /> + <div className="mb-3 mt-2"> + {codyProEnabled ? ( + <Text weight="bold" className={classNames('d-inline mb-0', styles.counter)}> + Unlimited + </Text> + ) : ( + <> + <Text weight="bold" className={classNames('d-inline mb-0', styles.counter)}> + 345 / + </Text>{' '} + <Text className="text-muted d-inline b-0" size="small"> + 500 + </Text> + </> + )} + </div> + <H4 className="mb-0">Autocompletes</H4> + {!codyProEnabled && ( + <Text className="text-muted mb-0" size="small"> + this month + </Text> + )} + </div> + <div className="d-flex flex-column align-items-center flex-grow-1 p-3"> + <ChatMessagesIcon /> + <div className="mb-3 mt-2"> + {codyProEnabled ? ( + <Text weight="bold" className={classNames('d-inline mb-0', styles.counter)}> + Unlimited + </Text> + ) : ( + <> + <Text weight="bold" className={classNames('d-inline mb-0', styles.counter)}> + 345 / + </Text>{' '} + <Text className="text-muted d-inline b-0" size="small"> + 500 + </Text> + </> + )} + </div> + <H4 className="mb-0">Chat Messages</H4> + {!codyProEnabled && ( + <Text className="text-muted mb-0" size="small"> + this month + </Text> + )} + </div> + {codyProEnabled && ( + <div className="d-flex flex-column align-items-center flex-grow-1 p-3 border-left"> + <TrialPeriodIcon /> + <div className="mb-3 mt-2"> + <Text weight="bold" className={classNames('d-inline mb-0', styles.counter)}> + Free trial + </Text> + </div> + <Text className="text-muted mb-0" size="small"> + Until 14th of February 2023 + </Text> + </div> + )} + </div> + </div> + + <div className="p-3 border bg-1 mt-4"> + <div className="d-flex justify-content-between align-items-center border-bottom pb-3"> + <div> + <H2>Extensions & Plugins</H2> + <Text className="text-muted mb-0">Cody integrates with your workflow.</Text> + </div> + <div> + <ButtonLink to="/cody/pricing" variant="secondary" outline={true} size="sm"> + <Icon svgPath={mdiHelpCircleOutline} className="mr-1" aria-hidden={true} /> + Missing an editor? + </ButtonLink> + </div> + </div> + {editorGroups.map((group, index) => ( + <div + key={index} + className={classNames('d-flex mt-3', styles.responsiveContainer, { + 'border-bottom pb-3': index < group.length - 1, + })} + > + {group.map((editor, index) => ( + <div + key={index} + className={classNames('d-flex flex-column flex-1 p-3', { + 'border-left': index !== 0, + })} + > + <div className="d-flex mb-3"> + <div> + <img + alt={editor.name} + src={`https://storage.googleapis.com/sourcegraph-assets/cody-ide-icons/${editor.icon}.png`} + width={34} + className="mr-2" + /> + </div> + <div> + <Text className="text-muted mb-0" size="small"> + {editor.publisher} + </Text> + <Text className={classNames('mb-0', styles.ideName)}>{editor.name}</Text> + </div> + </div> + <Link + to="#" + className={!editor.instructions ? 'text-muted' : ''} + onClick={() => { + setSelectedEditor(editor) + setSelectedEditorStep(0) + }} + > + <Text size="small" className="mb-2"> + <Icon svgPath={mdiDownload} aria-hidden={true} /> How to install + </Text> + </Link> + <Link + to="#" + className={!editor.instructions ? 'text-muted' : ''} + onClick={() => { + setSelectedEditor(editor) + setSelectedEditorStep(1) + }} + > + <Text size="small"> + <Icon svgPath={mdiInformation} aria-hidden={true} /> How to use + </Text> + </Link> + {selectedEditor?.name === editor.name && + selectedEditorStep !== null && + editor.instructions && ( + <Modal + key={index + '-modal'} + isOpen={true} + aria-label={`${editor.name} Info`} + className={styles.modal} + position="center" + > + <editor.instructions + showStep={selectedEditorStep} + onClose={() => { + setSelectedEditor(null) + setSelectedEditorStep(null) + }} + /> + </Modal> + )} + </div> + ))} + {group.length < 4 + ? [...new Array(4 - group.length)].map((_, index) => ( + <div key={index} className="flex-1 p-3" /> + )) + : null} + </div> + ))} + </div> + </Page> + <CodyOnboarding /> + </> + ) +} + +const AutocompletesIcon = (): ReactElement => ( + <svg width="33" height="34" viewBox="0 0 33 34" fill="none" xmlns="http://www.w3.org/2000/svg"> + <rect width="33" height="34" rx="16.5" fill="#6B47D6" /> + <rect width="33" height="34" rx="16.5" fill="url(#paint0_linear_2692_3962)" /> + <path + d="M18.0723 24.8147L14.9142 21.6566L15.9658 20.5943L18.0723 22.7008L22.4826 18.2799L23.5343 19.3421L18.0723 24.8147ZM9.5166 20.1419L13.331 10.2329H14.924L18.7277 20.1419H17.1161L16.1305 17.5438H11.9834L11.0084 20.1419H9.5166ZM12.3829 16.2867H15.7334L14.1079 11.7981H14.006L12.3829 16.2867Z" + fill="white" + /> + <defs> + <linearGradient + id="paint0_linear_2692_3962" + x1="16.5" + y1="0" + x2="16.5" + y2="34" + gradientUnits="userSpaceOnUse" + > + <stop stopColor="#FF3424" /> + <stop offset="1" stopColor="#CF275B" /> + </linearGradient> + </defs> + </svg> +) + +const ChatMessagesIcon = (): ReactElement => ( + <svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg"> + <rect x="0.5" width="33" height="34" rx="16.5" fill="#6B47D6" /> + <rect x="0.5" width="33" height="34" rx="16.5" fill="url(#paint0_linear_2692_3970)" /> + <path + d="M12.4559 18.5188H18.4046V17.3938H12.4559V18.5188ZM12.4559 16.0267H21.544V14.9017H12.4559V16.0267ZM12.4559 13.5533H21.544V12.4283H12.4559V13.5533ZM9.14697 24.8832V10.6683C9.14697 10.2466 9.3022 9.87948 9.61265 9.56695C9.92311 9.25441 10.2877 9.09814 10.7065 9.09814H23.2934C23.7151 9.09814 24.0822 9.25441 24.3948 9.56695C24.7073 9.87948 24.8635 10.2466 24.8635 10.6683V20.2495C24.8635 20.6683 24.7073 21.0329 24.3948 21.3433C24.0822 21.6538 23.7151 21.809 23.2934 21.809H12.2211L9.14697 24.8832ZM11.7035 20.2495H23.2934V10.6683H10.7065V21.359L11.7035 20.2495Z" + fill="white" + /> + <defs> + <linearGradient id="paint0_linear_2692_3970" x1="17" y1="0" x2="17" y2="34" gradientUnits="userSpaceOnUse"> + <stop stopColor="#03C9ED" /> + <stop offset="1" stopColor="#536AEA" /> + </linearGradient> + </defs> + </svg> +) + +const TrialPeriodIcon = (): ReactElement => ( + <svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg"> + <rect x="0.5" width="33" height="34" rx="16.5" fill="#6B47D6" /> + <rect x="0.5" width="33" height="34" rx="16.5" fill="url(#paint0_linear_2898_1552)" /> + <path + d="M17 27C14.7 27 12.6958 26.2375 10.9875 24.7125C9.27917 23.1875 8.3 21.2833 8.05 19H10.1C10.3333 20.7333 11.1042 22.1667 12.4125 23.3C13.7208 24.4333 15.25 25 17 25C18.95 25 20.6042 24.3208 21.9625 22.9625C23.3208 21.6042 24 19.95 24 18C24 16.05 23.3208 14.3958 21.9625 13.0375C20.6042 11.6792 18.95 11 17 11C15.85 11 14.775 11.2667 13.775 11.8C12.775 12.3333 11.9333 13.0667 11.25 14H14V16H8V10H10V12.35C10.85 11.2833 11.8875 10.4583 13.1125 9.875C14.3375 9.29167 15.6333 9 17 9C18.25 9 19.4208 9.2375 20.5125 9.7125C21.6042 10.1875 22.5542 10.8292 23.3625 11.6375C24.1708 12.4458 24.8125 13.3958 25.2875 14.4875C25.7625 15.5792 26 16.75 26 18C26 19.25 25.7625 20.4208 25.2875 21.5125C24.8125 22.6042 24.1708 23.5542 23.3625 24.3625C22.5542 25.1708 21.6042 25.8125 20.5125 26.2875C19.4208 26.7625 18.25 27 17 27ZM19.8 22.2L16 18.4V13H18V17.6L21.2 20.8L19.8 22.2Z" + fill="white" + /> + <defs> + <linearGradient + id="paint0_linear_2898_1552" + x1="17" + y1="34" + x2="17" + y2="-1.57923e-07" + gradientUnits="userSpaceOnUse" + > + <stop stopColor="#F59F00" /> + <stop offset="1" stopColor="#FBD999" /> + </linearGradient> + </defs> + </svg> +) diff --git a/client/web/src/cody/onboarding/CodyOnboarding.module.scss b/client/web/src/cody/onboarding/CodyOnboarding.module.scss new file mode 100644 index 0000000000000..460b1933aef3c --- /dev/null +++ b/client/web/src/cody/onboarding/CodyOnboarding.module.scss @@ -0,0 +1,26 @@ +.modal { + width: 50rem; +} + +.step { + background: #343a4d; + color: #ffffff; + padding: 0.25rem 0.675rem; + border-radius: 50%; +} + +.responsive-container { + @media (--sm-breakpoint-down) { + flex-direction: column; + align-items: center; + + > div { + border: none !important; + align-items: center; + } + } +} + +.ide-name { + font-size: 1rem; +} diff --git a/client/web/src/cody/onboarding/CodyOnboarding.tsx b/client/web/src/cody/onboarding/CodyOnboarding.tsx new file mode 100644 index 0000000000000..dbe8bd84ffbf1 --- /dev/null +++ b/client/web/src/cody/onboarding/CodyOnboarding.tsx @@ -0,0 +1,298 @@ +import React, { useState } from 'react' + +import classNames from 'classnames' + +import { useTemporarySetting } from '@sourcegraph/shared/src/settings/temporary' +import { Modal, H1, H2, H3, Text, Button } from '@sourcegraph/wildcard' + +import { eventLogger } from '../../tracking/eventLogger' +import { EventName } from '../../util/constants' +import { CodyColorIcon } from '../chat/CodyPageIcon' + +import { VSCodeInstructions } from './instructions/VsCode' + +import styles from './CodyOnboarding.module.scss' + +export interface IEditor { + icon: string + name: string + publisher: string + instructions?: React.FC<{ onBack?: () => void; onClose: () => void; showStep?: number }> +} + +export const editorGroups: IEditor[][] = [ + [ + { + icon: 'VSCode', + name: 'VS Code', + publisher: 'Microsoft', + instructions: VSCodeInstructions, + }, + { + icon: 'IntelliJ', + name: 'IntelliJ IDEA', + publisher: 'JetBrains', + }, + { + icon: 'Neovim', + name: 'Neovim', + publisher: 'Neovim Team', + }, + { + icon: 'AndroidStudio', + name: 'Android Studio', + publisher: 'Google', + }, + ], + [ + { + icon: 'PhpStorm', + name: 'PhpStorm ', + publisher: 'JetBrains', + }, + { + icon: 'PyCharm', + name: 'PyCharm', + publisher: 'Jetbrains', + }, + { + icon: 'WebStorm', + name: 'WebStorm', + publisher: 'JetBrains', + }, + { + icon: 'RubyMine', + name: 'RubyMine', + publisher: 'JetBrains', + }, + ], + [ + { + icon: 'GoLand', + name: 'GoLand', + publisher: 'JetBrains', + }, + { + icon: 'Emacs', + name: 'Emacs', + publisher: 'Free Software Foundation', + }, + ], +] + +export function CodyOnboarding(): JSX.Element | null { + const [completed = true, setOnboardingCompleted] = useTemporarySetting('cody.onboarding.completed', false) + // steps start from 0 + const [step = -1, setOnboardingStep] = useTemporarySetting('cody.onboarding.step', 0) + + const onNext = (): void => setOnboardingStep(currentsStep => (currentsStep || 0) + 1) + + if (completed || step === -1 || step > 2) { + return null + } + + return ( + <Modal isOpen={true} aria-label="Cody Onboarding" className={styles.modal} position="center"> + {step === 0 && <WelcomeStep onNext={onNext} />} + {step === 1 && <PurposeStep onNext={onNext} />} + {step === 2 && <EditorStep onNext={onNext} onCompleted={() => setOnboardingCompleted(true)} />} + </Modal> + ) +} + +function WelcomeStep({ onNext }: { onNext: () => void }): JSX.Element { + return ( + <div className="d-flex flex-column align-items-center"> + <CodyColorIcon width={60} height={60} className="mb-4" /> + <H1>Hi</H1> + <Text className="mb-4 pb-4">Let's walk through a few quick steps to get you started with Cody.</Text> + <Button onClick={onNext} variant="primary" size="sm"> + Let's Start! + </Button> + </div> + ) +} + +function PurposeStep({ onNext }: { onNext: () => void }): JSX.Element { + return ( + <> + <div className="border-bottom pb-3 mb-3"> + <H2 className="mb-1">What are you using Cody for?</H2> + <Text className="mb-0" size="small"> + This will allow us to understand our audience better and guide your journey + </Text> + </div> + <div className="d-flex align-items-center border-bottom mb-3 pb-3"> + <div + role="button" + tabIndex={0} + onKeyDown={() => { + eventLogger.log(EventName.CODY_ONBOARDING_PURPOSE_WORK) + onNext() + }} + className="border-right flex-1 d-flex flex-column justify-content-center cursor-pointer align-items-center py-3 px-2" + onClick={() => { + eventLogger.log(EventName.CODY_ONBOARDING_PURPOSE_WORK) + onNext() + }} + > + <WorkIcon /> + <H3 className="mb-0 mt-2">Work</H3> + </div> + <div + role="button" + tabIndex={0} + className="flex-1 d-flex flex-column justify-content-center cursor-pointer align-items-center py-3 px-2" + onKeyDown={() => { + eventLogger.log(EventName.CODY_ONBOARDING_PURPOSE_PERSONAL) + onNext() + }} + onClick={() => { + eventLogger.log(EventName.CODY_ONBOARDING_PURPOSE_PERSONAL) + onNext() + }} + > + <PersonalIcon /> + <H3 className="mb-0 mt-2">Personal</H3> + </div> + </div> + <Text size="small" className="text-muted text-center mb-0"> + Pick one to move forward + </Text> + </> + ) +} + +function EditorStep({ onNext, onCompleted }: { onNext: () => void; onCompleted: () => void }): JSX.Element { + const [editor, setEditor] = useState<null | IEditor>(null) + + const onBack = (): void => setEditor(null) + + if (editor?.instructions) { + const Instructions = editor.instructions + + return <Instructions onBack={onBack} onClose={onCompleted} /> + } + + return ( + <> + <div className="border-bottom pb-3 mb-3"> + <H2 className="mb-1">Choose your editor</H2> + <Text className="mb-0" size="small"> + Most of Cody experience happens in the IDE. Let's get that set up. + </Text> + </div> + <div className="mb-3 border-bottom pb-3"> + {editorGroups.map((group, index) => ( + <div + key={index} + className={classNames('d-flex mt-3', styles.responsiveContainer, { + 'border-bottom pb-3': index < group.length - 1, + })} + > + {group.map((editor, index) => ( + <div + key={index} + className={classNames('d-flex flex-column flex-1 p-3 cursor-pointer', { + 'border-left': index !== 0, + })} + role="button" + tabIndex={0} + onKeyDown={() => setEditor(editor)} + onClick={() => setEditor(editor)} + > + <div className="d-flex"> + <div> + <img + alt={editor.name} + src={`https://storage.googleapis.com/sourcegraph-assets/cody-ide-icons/${editor.icon}.png`} + width={34} + className="mr-2" + /> + </div> + <div> + <Text className="text-muted mb-0 text-truncate" size="small"> + {editor.publisher} + </Text> + <Text className={classNames('mb-0', styles.ideName)}>{editor.name}</Text> + </div> + </div> + </div> + ))} + {group.length < 4 + ? [...new Array(4 - group.length)].map((_, index) => ( + <div key={index} className="flex-1 p-3" /> + )) + : null} + </div> + ))} + </div> + <div className="d-flex justify-content-between align-items-center"> + <Text className="mb-0 text-muted cursor-pointer" size="small" onClick={onCompleted}> + Skip + </Text> + <Text className="mb-0 text-muted" size="small"> + Pick one to move forward + </Text> + </div> + </> + ) +} + +const WorkIcon = (): JSX.Element => ( + <svg width="60" height="60" viewBox="0 0 75 75" fill="none"> + <path + d="M14.8206 61.2414C13.6888 61.2414 12.7149 60.8335 11.899 60.0175C11.083 59.2016 10.675 58.222 10.675 57.0789V27.1706C10.675 26.0275 11.083 25.048 11.899 24.232C12.7149 23.4161 13.6945 23.0081 14.8375 23.0081H29.175V18.8439C29.175 17.7004 29.583 16.721 30.399 15.9058C31.2149 15.0907 32.1891 14.6831 33.3215 14.6831H41.6786C42.811 14.6831 43.7852 15.0911 44.6011 15.907C45.4171 16.723 45.8251 17.7025 45.8251 18.8456V23.0081H60.1626C61.3056 23.0081 62.2852 23.4161 63.1011 24.232C63.9171 25.048 64.3251 26.0275 64.3251 27.1706V57.0789C64.3251 58.222 63.9171 59.2016 63.1011 60.0175C62.2852 60.8335 61.3113 61.2414 60.1795 61.2414H14.8206ZM30.8709 23.0081H44.1292V18.8456C44.1292 18.2289 43.8723 17.6637 43.3584 17.1498C42.8445 16.6359 42.2792 16.3789 41.6625 16.3789H33.3375C32.7209 16.3789 32.1556 16.6359 31.6417 17.1498C31.1278 17.6637 30.8709 18.2289 30.8709 18.8456V23.0081ZM62.6292 44.5144H42.0865V48.2144H32.9907V44.5144H12.3709V57.0789C12.3709 57.6956 12.6278 58.2609 13.1417 58.7748C13.6556 59.2887 14.2209 59.5456 14.8375 59.5456H60.1626C60.7792 59.5456 61.3445 59.2887 61.8584 58.7748C62.3723 58.2609 62.6292 57.6956 62.6292 57.0789V44.5144ZM12.3709 42.8185H32.9907V39.1185H42.0865V42.8185H62.6292V27.1706C62.6292 26.5539 62.3723 25.9887 61.8584 25.4748C61.3445 24.9609 60.7792 24.7039 60.1626 24.7039H14.8375C14.2209 24.7039 13.6556 24.9609 13.1417 25.4748C12.6278 25.9887 12.3709 26.5539 12.3709 27.1706V42.8185Z" + fill="#EFF2F5" + /> + <path + d="M14.8206 61.2414C13.6888 61.2414 12.7149 60.8335 11.899 60.0175C11.083 59.2016 10.675 58.222 10.675 57.0789V27.1706C10.675 26.0275 11.083 25.048 11.899 24.232C12.7149 23.4161 13.6945 23.0081 14.8375 23.0081H29.175V18.8439C29.175 17.7004 29.583 16.721 30.399 15.9058C31.2149 15.0907 32.1891 14.6831 33.3215 14.6831H41.6786C42.811 14.6831 43.7852 15.0911 44.6011 15.907C45.4171 16.723 45.8251 17.7025 45.8251 18.8456V23.0081H60.1626C61.3056 23.0081 62.2852 23.4161 63.1011 24.232C63.9171 25.048 64.3251 26.0275 64.3251 27.1706V57.0789C64.3251 58.222 63.9171 59.2016 63.1011 60.0175C62.2852 60.8335 61.3113 61.2414 60.1795 61.2414H14.8206ZM30.8709 23.0081H44.1292V18.8456C44.1292 18.2289 43.8723 17.6637 43.3584 17.1498C42.8445 16.6359 42.2792 16.3789 41.6625 16.3789H33.3375C32.7209 16.3789 32.1556 16.6359 31.6417 17.1498C31.1278 17.6637 30.8709 18.2289 30.8709 18.8456V23.0081ZM62.6292 44.5144H42.0865V48.2144H32.9907V44.5144H12.3709V57.0789C12.3709 57.6956 12.6278 58.2609 13.1417 58.7748C13.6556 59.2887 14.2209 59.5456 14.8375 59.5456H60.1626C60.7792 59.5456 61.3445 59.2887 61.8584 58.7748C62.3723 58.2609 62.6292 57.6956 62.6292 57.0789V44.5144ZM12.3709 42.8185H32.9907V39.1185H42.0865V42.8185H62.6292V27.1706C62.6292 26.5539 62.3723 25.9887 61.8584 25.4748C61.3445 24.9609 60.7792 24.7039 60.1626 24.7039H14.8375C14.2209 24.7039 13.6556 24.9609 13.1417 25.4748C12.6278 25.9887 12.3709 26.5539 12.3709 27.1706V42.8185Z" + fill="url(#paint0_angular_2956_38220)" + /> + <defs> + <radialGradient + id="paint0_angular_2956_38220" + cx="0" + cy="0" + r="1" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(37 35) rotate(-2.52144) scale(52.9813 46.8594)" + > + <stop stopColor="#EC4D49" /> + <stop offset="0.262672" stopColor="#7048E8" /> + <stop offset="0.465801" stopColor="#4AC1E8" /> + <stop offset="0.752264" stopColor="#4D0B79" /> + <stop offset="1" stopColor="#FF5543" /> + </radialGradient> + </defs> + </svg> +) + +const PersonalIcon = (): JSX.Element => ( + <svg width="60" height="60" viewBox="0 0 75 75" fill="none"> + <path + d="M16.8801 61.0698V32.4719L10.4822 37.4052L9.4801 36.0948L16.8801 30.4292V22.9521H18.5759V29.0031L37.5384 14.5885L65.5582 36.1333L64.5561 37.4052L58.1968 32.4719V61.0698H16.8801ZM18.5759 59.374H33.1061V43.9573H41.8936V59.374H56.5009V31.2385L37.5384 16.7469L18.5759 31.2385V59.374ZM16.8801 18.8667C16.8544 17.2479 17.3311 15.8797 18.3102 14.762C19.2893 13.6443 20.7718 13.0854 22.7579 13.0854C24.3521 13.0854 25.454 12.6872 26.0637 11.8906C26.6732 11.0941 27.0037 10.1306 27.0551 9H28.7509C28.7252 10.6187 28.2336 11.987 27.2759 13.1047C26.3182 14.2224 24.8249 14.7812 22.7961 14.7812C21.216 14.7812 20.1176 15.176 19.5009 15.9654C18.8843 16.7549 18.5759 17.722 18.5759 18.8667H16.8801Z" + fill="#EFF2F5" + /> + <path + d="M16.8801 61.0698V32.4719L10.4822 37.4052L9.4801 36.0948L16.8801 30.4292V22.9521H18.5759V29.0031L37.5384 14.5885L65.5582 36.1333L64.5561 37.4052L58.1968 32.4719V61.0698H16.8801ZM18.5759 59.374H33.1061V43.9573H41.8936V59.374H56.5009V31.2385L37.5384 16.7469L18.5759 31.2385V59.374ZM16.8801 18.8667C16.8544 17.2479 17.3311 15.8797 18.3102 14.762C19.2893 13.6443 20.7718 13.0854 22.7579 13.0854C24.3521 13.0854 25.454 12.6872 26.0637 11.8906C26.6732 11.0941 27.0037 10.1306 27.0551 9H28.7509C28.7252 10.6187 28.2336 11.987 27.2759 13.1047C26.3182 14.2224 24.8249 14.7812 22.7961 14.7812C21.216 14.7812 20.1176 15.176 19.5009 15.9654C18.8843 16.7549 18.5759 17.722 18.5759 18.8667H16.8801Z" + fill="url(#paint0_angular_2956_38214)" + /> + <defs> + <radialGradient + id="paint0_angular_2956_38214" + cx="0" + cy="0" + r="1" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(40 39) rotate(-10.6983) scale(53.2475 49.9663)" + > + <stop stopColor="#EC4D49" /> + <stop offset="0.262672" stopColor="#7048E8" /> + <stop offset="0.465801" stopColor="#4AC1E8" /> + <stop offset="0.752264" stopColor="#4D0B79" /> + <stop offset="1" stopColor="#FF5543" /> + </radialGradient> + </defs> + </svg> +) diff --git a/client/web/src/cody/onboarding/instructions/VsCode.tsx b/client/web/src/cody/onboarding/instructions/VsCode.tsx new file mode 100644 index 0000000000000..a9c00b3525d72 --- /dev/null +++ b/client/web/src/cody/onboarding/instructions/VsCode.tsx @@ -0,0 +1,166 @@ +import { useState } from 'react' + +import classNames from 'classnames' + +import { H2, Text, Button } from '@sourcegraph/wildcard' + +import styles from '../CodyOnboarding.module.scss' + +export function VSCodeInstructions({ + onBack, + onClose, + showStep, +}: { + onBack?: () => void + onClose: () => void + showStep?: number +}): JSX.Element { + const [step, setStep] = useState<number>(showStep || 0) + + return ( + <> + {step === 0 && ( + <> + <div className="mb-3 pb-3 border-bottom"> + <H2>Setup instructions for VS Code</H2> + </div> + <div className="p-3"> + <div className="d-flex"> + <div> + <div className={classNames('mr-2', styles.step)}>1</div> + </div> + <div> + <Text className="mb-1" weight="bold"> + Install Cody + </Text> + <Text className="text-muted mb-0" size="small"> + Alternatively, you can reach this page by clicking{' '} + <strong>View {'>'} Extensions</strong> and searching for <strong>Cody AI</strong> + </Text> + </div> + </div> + <div className="d-flex flex-column justify-content-center align-items-center mt-4"> + <Button variant="primary">Open Marketplace</Button> + <img + alt="VS Code Marketplace" + className="mt-4" + src="https://storage.googleapis.com/sourcegraph-assets/VSCodeInstructions/step1.png" + /> + </div> + </div> + <div className="p-3"> + <div className="d-flex"> + <div> + <div className={classNames('mr-2', styles.step)}>2</div> + </div> + <div> + <Text className="mb-1" weight="bold"> + Open Cody from the Sidebar on the Left + </Text> + <Text className="text-muted mb-0" size="small"> + Alternatively, you can reach this page by clicking{' '} + <strong>View {'>'} Extensions</strong> and searching for <strong>Cody AI</strong> + </Text> + </div> + </div> + <div className="d-flex flex-column justify-content-center align-items-center mt-4"> + <img + alt="VS Code Marketplace" + className="mt-4" + src="https://storage.googleapis.com/sourcegraph-assets/VSCodeInstructions/step2.png" + /> + </div> + </div> + <div className="d-flex p-3 border-bottom"> + <div> + <div className={classNames('mr-2', styles.step)}>3</div> + </div> + <div className="mb-4 pb-4"> + <Text className="mb-1" weight="bold"> + Login + </Text> + <Text className="text-muted mb-0" size="small"> + Choose the same login method you used when you created your account + </Text> + </div> + </div> + {showStep === undefined ? ( + <div className="mt-3 d-flex justify-content-between"> + <Button variant="secondary" onClick={onBack} outline={true} size="sm"> + Back + </Button> + <Button variant="primary" onClick={() => setStep(1)} size="sm"> + Next + </Button> + </div> + ) : ( + <div className="mt-3 d-flex justify-content-end"> + <Button variant="primary" onClick={onClose} size="sm"> + Close + </Button> + </div> + )} + </> + )} + {step === 1 && ( + <> + <div className="mb-3 pb-3 border-bottom"> + <H2>Using Cody on VS Code</H2> + </div> + <div className="d-flex"> + <div className="flex-1 p-3 border-right"> + <Text className="mb-1" weight="bold"> + Autocomplete + </Text> + <Text className="mb-0 text-muted" size="small"> + Cody will autocomplete your code as you type + </Text> + </div> + <div className="flex-1 p-3"> + <Text className="mb-1" weight="bold"> + Chat + </Text> + <Text className="mb-0 text-muted" size="small"> + Cody will autocomplete your code as you type + </Text> + </div> + </div> + <div className="d-flex my-3 py-3 border-top border-bottom"> + <div className="flex-1 p-3 border-right"> + <Text className="mb-1" weight="bold"> + Settings + </Text> + <Text className="mb-0 text-muted" size="small"> + Cody will autocomplete your code as you type + </Text> + </div> + <div className="flex-1 p-3"> + <Text className="mb-1" weight="bold"> + Feedback + </Text> + <Text className="mb-0 text-muted" size="small"> + Cody will autocomplete your code as you type + </Text> + </div> + </div> + {showStep === undefined ? ( + <div className="mt-3 d-flex justify-content-between"> + <Button variant="secondary" onClick={() => setStep(0)} outline={true} size="sm"> + Back + </Button> + <Button variant="primary" onClick={onClose} size="sm"> + Close + </Button> + </div> + ) : ( + <div className="mt-3 d-flex justify-content-end"> + <Button variant="primary" onClick={onClose} size="sm"> + Close + </Button> + </div> + )} + </> + )} + </> + ) +} diff --git a/client/web/src/cody/subscription/CodySubscriptionPage.module.scss b/client/web/src/cody/subscription/CodySubscriptionPage.module.scss new file mode 100644 index 0000000000000..d55c756c86e52 --- /dev/null +++ b/client/web/src/cody/subscription/CodySubscriptionPage.module.scss @@ -0,0 +1,66 @@ +@import 'wildcard/src/global-styles/breakpoints'; + +.responsive-container { + @media (--sm-breakpoint-down) { + flex-direction: column; + } +} + +.plan-name { + font-size: 1.5rem; + font-weight: 600; +} + +.counter { + font-size: 1.25rem; +} + +.ide-name { + font-size: 1rem; +} + +.pro-container { + margin-top: -1rem; + margin-bottom: -1rem; + margin-left: -0.25rem; + margin-right: -0.25rem; + z-index: 1; + + @media (--sm-breakpoint-down) { + margin-top: 1.5rem; + margin-bottom: 1.5rem; + margin-left: 0; + margin-right: 0; + } +} + +.pro-title { + font-size: 2.25rem; + color: #005bbb; +} + +.pro-description { + color: #0677ef; +} + +.pro-pricing { + text-decoration: line-through; +} + +.enterprise-color { + color: #dd5d35; +} + +.enterprise-color-light { + color: #f74f56; +} + +.upgrade-modal { + width: 50rem; +} + +.subscription-summary-container { + @media (--sm-breakpoint-down) { + flex-direction: column; + } +} diff --git a/client/web/src/cody/subscription/CodySubscriptionPage.tsx b/client/web/src/cody/subscription/CodySubscriptionPage.tsx new file mode 100644 index 0000000000000..6717d23c161ca --- /dev/null +++ b/client/web/src/cody/subscription/CodySubscriptionPage.tsx @@ -0,0 +1,341 @@ +import React, { useEffect, useState } from 'react' +import type { ReactElement } from 'react' + +import { mdiTrendingUp } from '@mdi/js' +import classNames from 'classnames' +import { useNavigate } from 'react-router-dom' + +import { useQuery, useMutation } from '@sourcegraph/http-client' +import { Icon, PageHeader, Button, H1, H2, H3, Text, ButtonLink, useSearchParameters } from '@sourcegraph/wildcard' + +import type { AuthenticatedUser } from '../../auth' +import { Page } from '../../components/Page' +import { PageTitle } from '../../components/PageTitle' +import { useFeatureFlag } from '../../featureFlags/useFeatureFlag' +import type { + UserCodyPlanResult, + UserCodyPlanVariables, + ChangeCodyPlanResult, + ChangeCodyPlanVariables, +} from '../../graphql-operations' +import { eventLogger } from '../../tracking/eventLogger' +import { EventName } from '../../util/constants' +import { CodyColorIcon } from '../chat/CodyPageIcon' +import { isCodyEnabled } from '../isCodyEnabled' + +import { USER_CODY_PLAN, CHANGE_CODY_PLAN } from './queries' +import { UpgradeToProModal } from './UpgradeToProModal' + +import styles from './CodySubscriptionPage.module.scss' + +interface CodySubscriptionPageProps { + isSourcegraphDotCom: boolean + authenticatedUser?: AuthenticatedUser | null +} + +export const CodySubscriptionPage: React.FunctionComponent<CodySubscriptionPageProps> = ({ + isSourcegraphDotCom, + authenticatedUser, +}) => { + const navigate = useNavigate() + const parameters = useSearchParameters() + + const utm_source = parameters.get('utm_source') + + useEffect(() => { + eventLogger.log(EventName.CODY_SUBSCRIPTION_PAGE_VIEWED, { utm_source }) + }, [utm_source]) + + const { data } = useQuery<UserCodyPlanResult, UserCodyPlanVariables>(USER_CODY_PLAN, {}) + const [changeCodyPlan] = useMutation<ChangeCodyPlanResult, ChangeCodyPlanVariables>(CHANGE_CODY_PLAN) + + const [isEnabled] = useFeatureFlag('cody-pro', false) + const [showUpgradeToPro, setShowUpgradeToPro] = useState<boolean>(false) + + if (!isCodyEnabled() || !isSourcegraphDotCom || !isEnabled || !data?.currentUser || !authenticatedUser) { + return null + } + + const { codyProEnabled } = data.currentUser + + return ( + <> + <Page className={classNames('d-flex flex-column')}> + <PageTitle title="Cody Subscription" /> + <PageHeader + className="mb-4" + actions={ + <ButtonLink to="/cody/manage" variant="secondary" outline={true} size="sm"> + Dashboard + </ButtonLink> + } + > + <PageHeader.Heading as="h2" styleAs="h1"> + <div className="d-inline-flex align-items-center"> + <CodyColorIcon width={40} height={40} className="mr-2" /> Subscription Plans + </div> + </PageHeader.Heading> + </PageHeader> + + <div className={classNames('d-flex mt-4', styles.responsiveContainer)}> + <div className="border d-flex flex-column flex-1 bg-1 border p-3"> + <div className="border-bottom pb-3"> + <H2 className="mb-1 mt-2 text-muted">Community</H2> + <Text className="mb-0 text-muted" size="small"> + Best for hobbyists + </Text> + </div> + <div className="border-bottom py-4"> + <H1 className="mb-1 text-muted">Free</H1> + <Text className="mb-4 pb-3 text-muted" size="small"> + {!codyProEnabled && 'Your plan'} + </Text> + </div> + <div className="border-bottom py-4"> + <Text weight="bold" className="d-inline"> + 500 + </Text>{' '} + <Text className="d-inline text-muted">Autocompletions per month</Text> + </div> + <div className="border-bottom py-4"> + <Text weight="bold" className="d-inline"> + 20 + </Text>{' '} + <Text className="d-inline text-muted">Messages and Commands per month</Text> + </div> + <div className="border-bottom py-4"> + <div className="mb-1"> + <Text weight="bold" className="d-inline mb-0"> + Limited + </Text>{' '} + <Text className="d-inline text-muted mb-0">Private Code Embeddings</Text> + </div> + <Text className="mb-1 text-muted">Current project with keyword search</Text> + <Text className="mb-1 text-muted">Embeddings on some public repo</Text> + </div> + <div className="border-bottom py-4"> + <Text weight="bold" className="mb-1"> + Code editor support + </Text>{' '} + <Text className="d-inline text-muted">All supported Code Editors</Text> + </div> + <div className="border-bottom py-4"> + <Text weight="bold" className="mb-1"> + Support + </Text>{' '} + <Text className="d-inline text-muted">Community support only</Text> + </div> + </div> + <div + className={classNames('border d-flex flex-column flex-1 bg-1 border p-4', styles.proContainer)} + > + <div className="border-bottom pb-2"> + <H1 className={classNames('mb-1', styles.proTitle)}>Pro</H1> + <Text className={classNames('mb-1 text-primary', styles.proDescription)} size="small"> + Best for professional developers + </Text> + </div> + <div className="d-flex flex-column border-bottom py-4"> + <div className="mb-1"> + <H2 className={classNames('text-muted d-inline mb-0', styles.proPricing)}>22$</H2> + <Text className="mb-0 text-muted d-inline">/ month</Text> + </div> + <Text className="mb-3 text-muted" size="small"> + Free until Feb 2024, <strong>no credit card needed</strong> + </Text> + {codyProEnabled ? ( + <div> + <Text className="mb-0 text-primary d-inline" size="small"> + Your plan + </Text>{' '} + <Text + className="mb-0 text-muted d-inline cursor-pointer" + size="small" + onClick={() => + changeCodyPlan({ variables: { pro: false, id: authenticatedUser.id } }) + } + > + | Cancel + </Text> + </div> + ) : ( + <Button className="flex-1" variant="primary" onClick={() => setShowUpgradeToPro(true)}> + <Icon svgPath={mdiTrendingUp} className="mr-1" aria-hidden={true} /> + Get Pro Trial + </Button> + )} + </div> + <div className="border-bottom py-4"> + <Text weight="bold" className="d-inline"> + Unlimited + </Text>{' '} + <Text className="d-inline text-muted">Autocompletions per month</Text> + </div> + <div className="border-bottom py-4"> + <Text weight="bold" className="d-inline"> + Unlimited + </Text>{' '} + <Text className="d-inline text-muted">Messages and Commands per month</Text> + </div> + <div className="border-bottom py-4"> + <div className="mb-1"> + <Text weight="bold" className="d-inline mb-0"> + Unlimited + </Text>{' '} + <Text className="d-inline text-muted mb-0">Private Code Embeddings</Text> + </div> + <Text className="mb-1 text-muted">Current project with keyword search</Text> + <Text className="mb-0 text-muted">Embeddings on some public repo</Text> + </div> + <div className="border-bottom py-4"> + <Text weight="bold" className="mb-1"> + Code editor support + </Text>{' '} + <Text className="d-inline text-muted">All supported Code Editors</Text> + </div> + <div className="border-bottom py-4"> + <Text weight="bold" className="mb-1"> + Support + </Text>{' '} + <Text className="d-inline text-muted">Community support only</Text> + </div> + </div> + <div className="border d-flex flex-column flex-1 bg-1 border p-3"> + <div className="border-bottom pb-3"> + <H1 className={classNames('mb-1', styles.enterpriseColor)}>Enterprise</H1> + <Text className={classNames('mb-0', styles.enterpriseColorLight)} size="small"> + Best for teams + </Text> + </div> + <div className="d-flex flex-column border-bottom py-4"> + <H3 className={classNames('text-muted', codyProEnabled ? 'mb-2' : 'mb-4')}> + Custom pricing + </H3> + <ButtonLink className="flex-1 mt-3" variant="secondary" outline={true}> + Contact Sales + </ButtonLink> + </div> + <div className="border-bottom py-4"> + <Text weight="bold" className="d-inline"> + Unlimited + </Text>{' '} + <Text className="d-inline text-muted">Autocompletions per month</Text> + </div> + <div className="border-bottom py-4"> + <Text weight="bold" className="d-inline"> + Unlimited + </Text>{' '} + <Text className="d-inline text-muted">Messages and Commands per month</Text> + </div> + <div className="border-bottom py-4"> + <div className="mb-1"> + <Text weight="bold" className="d-inline mb-0"> + Unlimited + </Text>{' '} + <Text className="d-inline text-muted mb-0">Private Code Embeddings</Text> + </div> + <Text className="mb-1 text-muted">Current project with keyword search</Text> + <Text className="mb-0 text-muted">Embeddings on some public repo</Text> + </div> + <div className="border-bottom py-4"> + <Text weight="bold" className="mb-1"> + Enterprise Features + </Text> + <Text className="mb-1 text-muted">Bring your own LLM</Text> + <Text className="mb-0 text-muted">Single Tenant</Text> + <Text className="mb-0 text-muted">SAML / SSO</Text> + <Text className="mb-0 text-muted">Guardrails</Text> + </div> + <div className="border-bottom py-4"> + <Text weight="bold" className="mb-1"> + Code editor support + </Text>{' '} + <Text className="d-inline text-muted">All supported Code Editors</Text> + </div> + <div className="py-4"> + <Text weight="bold" className="mb-1"> + Support + </Text>{' '} + <Text className="d-inline text-muted">Community support only</Text> + </div> + </div> + </div> + </Page> + {showUpgradeToPro && ( + <UpgradeToProModal + onClose={() => { + setShowUpgradeToPro(false) + navigate('/cody/manage?utm_source=upgrade_modal') + }} + authenticatedUser={authenticatedUser} + /> + )} + </> + ) +} + +export const ProTierIcon = ({ className }: { className?: string }): ReactElement => ( + <svg width="92" height="92" viewBox="0 0 92 92" fill="none" className={className}> + <circle cx="46" cy="46" r="46" fill="url(#paint0_radial_2897_1551)" /> + <g filter="url(#filter0_d_2897_1551)"> + <path + d="M19.902 56V28.3636H30.8054C32.9015 28.3636 34.6873 28.764 36.1626 29.5646C37.638 30.3563 38.7625 31.4583 39.5362 32.8707C40.3189 34.2741 40.7102 35.8935 40.7102 37.7287C40.7102 39.5639 40.3144 41.1832 39.5227 42.5866C38.7311 43.9901 37.584 45.0831 36.0817 45.8658C34.5883 46.6484 32.7801 47.0398 30.657 47.0398H23.7074V42.3572H29.7124C30.8369 42.3572 31.7635 42.1638 32.4922 41.777C33.2299 41.3812 33.7786 40.8369 34.1385 40.1442C34.5073 39.4425 34.6918 38.6373 34.6918 37.7287C34.6918 36.8111 34.5073 36.0104 34.1385 35.3267C33.7786 34.634 33.2299 34.0987 32.4922 33.7209C31.7545 33.334 30.8189 33.1406 29.6854 33.1406H25.745V56H19.902ZM41.3975 56V35.2727H46.9707V38.8892H47.1866C47.5645 37.6027 48.1987 36.6312 49.0893 35.9744C49.9799 35.3087 51.0055 34.9759 52.166 34.9759C52.4539 34.9759 52.7643 34.9938 53.0971 35.0298C53.43 35.0658 53.7224 35.1153 53.9743 35.1783V40.2791C53.7044 40.1982 53.331 40.1262 52.8542 40.0632C52.3774 40.0002 51.9411 39.9688 51.5453 39.9688C50.6996 39.9688 49.944 40.1532 49.2782 40.522C48.6215 40.8819 48.0997 41.3857 47.7129 42.0334C47.335 42.6811 47.1461 43.4278 47.1461 44.2734V56H41.3975ZM62.3466 56.4048C60.2505 56.4048 58.4377 55.9595 56.9084 55.0689C55.388 54.1693 54.214 52.9188 53.3864 51.3175C52.5587 49.7071 52.1449 47.8404 52.1449 45.7173C52.1449 43.5762 52.5587 41.705 53.3864 40.1037C54.214 38.4934 55.388 37.2429 56.9084 36.3523C58.4377 35.4527 60.2505 35.0028 62.3466 35.0028C64.4427 35.0028 66.2509 35.4527 67.7713 36.3523C69.3007 37.2429 70.4792 38.4934 71.3068 40.1037C72.1345 41.705 72.5483 43.5762 72.5483 45.7173C72.5483 47.8404 72.1345 49.7071 71.3068 51.3175C70.4792 52.9188 69.3007 54.1693 67.7713 55.0689C66.2509 55.9595 64.4427 56.4048 62.3466 56.4048ZM62.3736 51.9517C63.3272 51.9517 64.1233 51.6818 64.7621 51.142C65.4008 50.5933 65.8821 49.8466 66.206 48.902C66.5388 47.9574 66.7053 46.8823 66.7053 45.6768C66.7053 44.4714 66.5388 43.3963 66.206 42.4517C65.8821 41.5071 65.4008 40.7604 64.7621 40.2116C64.1233 39.6629 63.3272 39.3885 62.3736 39.3885C61.411 39.3885 60.6013 39.6629 59.9446 40.2116C59.2969 40.7604 58.8066 41.5071 58.4737 42.4517C58.1499 43.3963 57.9879 44.4714 57.9879 45.6768C57.9879 46.8823 58.1499 47.9574 58.4737 48.902C58.8066 49.8466 59.2969 50.5933 59.9446 51.142C60.6013 51.6818 61.411 51.9517 62.3736 51.9517Z" + fill="#EFF2F5" + /> + <path + d="M19.902 56V28.3636H30.8054C32.9015 28.3636 34.6873 28.764 36.1626 29.5646C37.638 30.3563 38.7625 31.4583 39.5362 32.8707C40.3189 34.2741 40.7102 35.8935 40.7102 37.7287C40.7102 39.5639 40.3144 41.1832 39.5227 42.5866C38.7311 43.9901 37.584 45.0831 36.0817 45.8658C34.5883 46.6484 32.7801 47.0398 30.657 47.0398H23.7074V42.3572H29.7124C30.8369 42.3572 31.7635 42.1638 32.4922 41.777C33.2299 41.3812 33.7786 40.8369 34.1385 40.1442C34.5073 39.4425 34.6918 38.6373 34.6918 37.7287C34.6918 36.8111 34.5073 36.0104 34.1385 35.3267C33.7786 34.634 33.2299 34.0987 32.4922 33.7209C31.7545 33.334 30.8189 33.1406 29.6854 33.1406H25.745V56H19.902ZM41.3975 56V35.2727H46.9707V38.8892H47.1866C47.5645 37.6027 48.1987 36.6312 49.0893 35.9744C49.9799 35.3087 51.0055 34.9759 52.166 34.9759C52.4539 34.9759 52.7643 34.9938 53.0971 35.0298C53.43 35.0658 53.7224 35.1153 53.9743 35.1783V40.2791C53.7044 40.1982 53.331 40.1262 52.8542 40.0632C52.3774 40.0002 51.9411 39.9688 51.5453 39.9688C50.6996 39.9688 49.944 40.1532 49.2782 40.522C48.6215 40.8819 48.0997 41.3857 47.7129 42.0334C47.335 42.6811 47.1461 43.4278 47.1461 44.2734V56H41.3975ZM62.3466 56.4048C60.2505 56.4048 58.4377 55.9595 56.9084 55.0689C55.388 54.1693 54.214 52.9188 53.3864 51.3175C52.5587 49.7071 52.1449 47.8404 52.1449 45.7173C52.1449 43.5762 52.5587 41.705 53.3864 40.1037C54.214 38.4934 55.388 37.2429 56.9084 36.3523C58.4377 35.4527 60.2505 35.0028 62.3466 35.0028C64.4427 35.0028 66.2509 35.4527 67.7713 36.3523C69.3007 37.2429 70.4792 38.4934 71.3068 40.1037C72.1345 41.705 72.5483 43.5762 72.5483 45.7173C72.5483 47.8404 72.1345 49.7071 71.3068 51.3175C70.4792 52.9188 69.3007 54.1693 67.7713 55.0689C66.2509 55.9595 64.4427 56.4048 62.3466 56.4048ZM62.3736 51.9517C63.3272 51.9517 64.1233 51.6818 64.7621 51.142C65.4008 50.5933 65.8821 49.8466 66.206 48.902C66.5388 47.9574 66.7053 46.8823 66.7053 45.6768C66.7053 44.4714 66.5388 43.3963 66.206 42.4517C65.8821 41.5071 65.4008 40.7604 64.7621 40.2116C64.1233 39.6629 63.3272 39.3885 62.3736 39.3885C61.411 39.3885 60.6013 39.6629 59.9446 40.2116C59.2969 40.7604 58.8066 41.5071 58.4737 42.4517C58.1499 43.3963 57.9879 44.4714 57.9879 45.6768C57.9879 46.8823 58.1499 47.9574 58.4737 48.902C58.8066 49.8466 59.2969 50.5933 59.9446 51.142C60.6013 51.6818 61.411 51.9517 62.3736 51.9517Z" + fill="url(#paint1_angular_2897_1551)" + /> + </g> + <defs> + <filter + id="filter0_d_2897_1551" + x="18.9019" + y="28.3635" + width="54.6465" + height="30.0413" + filterUnits="userSpaceOnUse" + colorInterpolationFilters="sRGB" + > + <feFlood floodOpacity="0" result="BackgroundImageFix" /> + <feColorMatrix + in="SourceAlpha" + type="matrix" + values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" + result="hardAlpha" + /> + <feOffset dy="1" /> + <feGaussianBlur stdDeviation="0.5" /> + <feComposite in2="hardAlpha" operator="out" /> + <feColorMatrix type="matrix" values="0 0 0 0 0.278089 0 0 0 0 0.267405 0 0 0 0 0.267405 0 0 0 0.25 0" /> + <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2897_1551" /> + <feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2897_1551" result="shape" /> + </filter> + <radialGradient + id="paint0_radial_2897_1551" + cx="0" + cy="0" + r="1" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(46 46) rotate(66.2277) scale(45.8939)" + > + <stop stopColor="#FF0000" stopOpacity="0.1" /> + <stop offset="1" stopColor="#D9D9D9" stopOpacity="0" /> + </radialGradient> + <radialGradient + id="paint1_angular_2897_1551" + cx="0" + cy="0" + r="1" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(47.2619 46.4966) rotate(-8.02941) scale(54.9809 28.665)" + > + <stop stopColor="#EC4D49" /> + <stop offset="0.262672" stopColor="#7048E8" /> + <stop offset="0.465801" stopColor="#4AC1E8" /> + <stop offset="0.752264" stopColor="#4D0B79" /> + <stop offset="1" stopColor="#FF5543" /> + </radialGradient> + </defs> + </svg> +) diff --git a/client/web/src/cody/subscription/UpgradeToProModal.tsx b/client/web/src/cody/subscription/UpgradeToProModal.tsx new file mode 100644 index 0000000000000..ec15b4af941b5 --- /dev/null +++ b/client/web/src/cody/subscription/UpgradeToProModal.tsx @@ -0,0 +1,168 @@ +import { mdiCalendarMonth, mdiClose, mdiCreditCardOff, mdiTag, mdiTrendingUp } from '@mdi/js' +import classNames from 'classnames' + +import { useMutation } from '@sourcegraph/http-client' +import { Modal, Icon, Button, H1, H2, Text } from '@sourcegraph/wildcard' + +import type { AuthenticatedUser } from '../../auth' +import type { ChangeCodyPlanResult, ChangeCodyPlanVariables } from '../../graphql-operations' +import { CodyColorIcon } from '../chat/CodyPageIcon' + +import { CHANGE_CODY_PLAN } from './queries' + +import styles from './CodySubscriptionPage.module.scss' + +export function UpgradeToProModal({ + authenticatedUser, + onClose, +}: { + authenticatedUser: AuthenticatedUser + onClose: () => void +}): JSX.Element { + const [changeCodyPlan, { data }] = useMutation<ChangeCodyPlanResult, ChangeCodyPlanVariables>(CHANGE_CODY_PLAN) + + return ( + <Modal isOpen={true} aria-label="Update to Cody Pro" className={styles.upgradeModal} position="center"> + {data?.changeCodyPlan?.codyProEnabled ? ( + <div className="d-flex flex-column justify-content-between align-items-center mby-4 py-4"> + <CodyColorIcon width={40} height={40} className="mb-4" /> + <H2>Pro Membership: Confirmed!</H2> + <Text>Welcome to the exclusive zone of coding</Text> + + <Button className="mt-4" variant="primary" onClick={onClose}> + Close + </Button> + </div> + ) : ( + <> + <div className="d-flex justify-content-between align-items-center mb-3 border-bottom pb-3"> + <H2 className="mb-0">Subscription Summary</H2> + <Icon svgPath={mdiClose} aria-hidden={true} className="cursor-pointer" onClick={onClose} /> + </div> + + <div className={classNames('p-3 d-flex', styles.subscriptionSummaryContainer)}> + <div className="flex-1 pr-4"> + <div className="mr-4 border p-3"> + <div className="border-bottom pb-2 mb-4"> + <H1 className={classNames('mb-1', styles.proTitle)}>Pro</H1> + <Text + className={classNames('mb-1 text-primary', styles.proDescription)} + size="small" + > + Best for professional developers + </Text> + </div> + <div className="mb-1"> + <H2 className={classNames('text-muted d-inline mb-0', styles.proPricing)}>$22</H2> + <Text className="mb-0 text-muted d-inline">/ month</Text> + </div> + <Text className="mb-4 text-muted" size="small"> + Free until Feb 2024, <strong>no credit card needed</strong> + </Text> + <Text className="mb-2"> + <strong>Unlimited</strong> Autocompletes + </Text> + <Text className="mb-2"> + <strong>Unlimited</strong> Messages and Commands + </Text> + <Text className="mb-2"> + <strong>Unlimited</strong> Private Code Embeddings + </Text> + <Text className="mb-2">Context with keyword search</Text> + <Text className="mb-2">Embeddings on some public repos</Text> + <Text className="mb-2">All suppored Code Editors</Text> + <Text className="mb-4">Community Support</Text> + </div> + </div> + <div className="flex-1"> + <H2 className="mb-4">About your trial</H2> + <div className="d-flex align-items-center mb-3"> + <div> + <Icon + svgPath={mdiTrendingUp} + className="mr-3 text-primary d-block" + aria-hidden={true} + size="md" + /> + </div> + <div> + <Text weight="bold" className="mb-0"> + All Limits Lifted: + </Text> + <Text className="mb-0" size="small"> + Enjoy unrestricted access right away. + </Text> + </div> + </div> + <div className="d-flex align-items-center mb-3"> + <div> + <Icon + svgPath={mdiCalendarMonth} + className="mr-3 text-primary d-block" + aria-hidden={true} + size="md" + /> + </div> + <div> + <Text weight="bold" className="mb-0"> + Trial Duration: + </Text> + <Text className="mb-0" size="small"> + Your trial runs until <strong>February 14, 2024.</strong> + </Text> + </div> + </div> + <div className="d-flex align-items-center mb-3"> + <div> + <Icon + svgPath={mdiCreditCardOff} + className="mr-3 text-primary d-block" + aria-hidden={true} + size="md" + /> + </div> + <div> + <Text weight="bold" className="mb-0"> + No credit card required: + </Text> + <Text className="mb-0" size="small"> + We'll reach out for billing details before your trial ends. + </Text> + </div> + </div> + <div className="d-flex align-items-center mb-4"> + <div> + <Icon + svgPath={mdiTag} + className="mr-3 text-primary d-block" + aria-hidden={true} + size="md" + /> + </div> + <div> + <Text weight="bold" className="mb-0"> + No hidden fees, no surprises + </Text> + <Text className="mb-0" size="small"> + We're eager to have you onboard and listen to your feedback + </Text> + </div> + </div> + <div className="d-flex justify-content-center mt-4 pt-4"> + <Button + variant="primary" + onClick={() => + changeCodyPlan({ variables: { pro: true, id: authenticatedUser.id } }) + } + > + <Icon svgPath={mdiTrendingUp} className="mr-1" aria-hidden={true} /> + Start Trial + </Button> + </div> + </div> + </div> + </> + )} + </Modal> + ) +} diff --git a/client/web/src/cody/subscription/queries.tsx b/client/web/src/cody/subscription/queries.tsx new file mode 100644 index 0000000000000..040760e08f8d6 --- /dev/null +++ b/client/web/src/cody/subscription/queries.tsx @@ -0,0 +1,21 @@ +import { gql } from '@sourcegraph/http-client' + +export const USER_CODY_PLAN = gql` + query UserCodyPlan { + currentUser { + id + codyProEnabled + codyProEnabledAt + } + } +` + +export const CHANGE_CODY_PLAN = gql` + mutation ChangeCodyPlan($id: ID!, $pro: Boolean!) { + changeCodyPlan(user: $id, pro: $pro) { + id + codyProEnabled + codyProEnabledAt + } + } +` diff --git a/client/web/src/featureFlags/featureFlags.ts b/client/web/src/featureFlags/featureFlags.ts index 783ecff3cd84f..025fc32c4628b 100644 --- a/client/web/src/featureFlags/featureFlags.ts +++ b/client/web/src/featureFlags/featureFlags.ts @@ -33,6 +33,7 @@ export const FEATURE_FLAGS = [ 'search-debug', 'cody-chat-mock-test', 'signup-survey-enabled', + 'cody-pro', ] as const export type FeatureFlagName = typeof FEATURE_FLAGS[number] diff --git a/client/web/src/get-cody/GetCodyPage.tsx b/client/web/src/get-cody/GetCodyPage.tsx index db14f26607178..0a2d6243580b1 100644 --- a/client/web/src/get-cody/GetCodyPage.tsx +++ b/client/web/src/get-cody/GetCodyPage.tsx @@ -1,7 +1,8 @@ -import { useEffect } from 'react' +import { useEffect, useState } from 'react' import { mdiMicrosoftVisualStudioCode, mdiChevronRight, mdiApple, mdiLinux, mdiMicrosoftWindows } from '@mdi/js' import classNames from 'classnames' +import { useNavigate, useLocation } from 'react-router-dom' import type { AuthenticatedUser } from '@sourcegraph/shared/src/auth' import { Badge, H2, Icon, Link, PageHeader, Text } from '@sourcegraph/wildcard' @@ -10,6 +11,7 @@ import { ExternalsAuth } from '../auth/components/ExternalsAuth' import { CodyLetsWorkIcon } from '../cody/chat/CodyPageIcon' import { Page } from '../components/Page' import { PageTitle } from '../components/PageTitle' +import { useFeatureFlag } from '../featureFlags/useFeatureFlag' import type { SourcegraphContext } from '../jscontext' import { eventLogger } from '../tracking/eventLogger' import { EventName } from '../util/constants' @@ -45,10 +47,25 @@ const logEvent = (eventName: string, type?: string, source?: string): void => const logPageView = (pageTitle: string): void => eventLogger.logPageView(pageTitle) export const GetCodyPage: React.FunctionComponent<GetCodyPageProps> = ({ authenticatedUser, context }) => { + const navigate = useNavigate() + const location = useLocation() + const [search] = useState(location.search) + const [isCodyProEnabled, ffStatus] = useFeatureFlag('cody-pro', false) + + useEffect(() => { + if (authenticatedUser && isCodyProEnabled) { + navigate(`/cody/manage${search || ''}`) + } + }, [authenticatedUser, navigate, search, isCodyProEnabled]) + useEffect(() => { logPageView(EventName.VIEW_GET_CODY) }, []) + if (authenticatedUser && (ffStatus !== 'loaded' || isCodyProEnabled)) { + return null + } + return ( <div className={styles.pageWrapper}> <Page className={styles.page}> diff --git a/client/web/src/routes.constants.ts b/client/web/src/routes.constants.ts index 909d20e80b951..5917c05778ef9 100644 --- a/client/web/src/routes.constants.ts +++ b/client/web/src/routes.constants.ts @@ -38,6 +38,8 @@ export enum PageRoutes { SearchNotebook = '/search/notebook', CodySearch = '/search/cody', Cody = '/cody/chat', + CodyManagement = '/cody/manage', + CodySubscription = '/cody/subscription', Own = '/own', AppAuthCallback = '/app/auth/callback', AppSetup = '/app-setup', diff --git a/client/web/src/routes.tsx b/client/web/src/routes.tsx index 78a94fccf5b77..feef0f9757dd6 100644 --- a/client/web/src/routes.tsx +++ b/client/web/src/routes.tsx @@ -62,6 +62,11 @@ const SearchContextPage = lazyComponent( ) const CodySearchPage = lazyComponent(() => import('./cody/search/CodySearchPage'), 'CodySearchPage') const CodyChatPage = lazyComponent(() => import('./cody/chat/CodyChatPage'), 'CodyChatPage') +const CodyManagementPage = lazyComponent(() => import('./cody/management/CodyManagementPage'), 'CodyManagementPage') +const CodySubscriptionPage = lazyComponent( + () => import('./cody/subscription/CodySubscriptionPage'), + 'CodySubscriptionPage' +) const OwnPage = lazyComponent(() => import('./enterprise/own/OwnPage'), 'OwnPage') const AppAuthCallbackPage = lazyComponent(() => import('./enterprise/app/AppAuthCallbackPage'), 'AppAuthCallbackPage') const AppSetup = lazyComponent(() => import('./enterprise/app/setup/AppSetupWizard'), 'AppSetupWizard') @@ -190,6 +195,14 @@ export const routes: RouteObject[] = [ path: PageRoutes.Cody + '/*', element: <LegacyRoute render={props => <CodyChatPage {...props} context={window.context} />} />, }, + { + path: PageRoutes.CodyManagement, + element: <LegacyRoute render={props => <CodyManagementPage {...props} />} />, + }, + { + path: PageRoutes.CodySubscription, + element: <LegacyRoute render={props => <CodySubscriptionPage {...props} />} />, + }, { path: PageRoutes.Own, element: <OwnPage />, diff --git a/client/web/src/util/constants.ts b/client/web/src/util/constants.ts index 0ad92a97f161c..ee043244b7800 100644 --- a/client/web/src/util/constants.ts +++ b/client/web/src/util/constants.ts @@ -36,6 +36,11 @@ export const enum EventName { JOIN_IDE_WAITLIST = 'JoinIDEWaitlist', DOWNLOAD_IDE = 'DownloadIDE', DOWNLOAD_APP = 'DownloadApp', + + CODY_MANAGEMENT_PAGE_VIEWED = 'web:codyManagement:pageViewed', + CODY_SUBSCRIPTION_PAGE_VIEWED = 'web:codySubscription:pageViewed', + CODY_ONBOARDING_PURPOSE_WORK = 'web:codyOnboarding:purpose:work', + CODY_ONBOARDING_PURPOSE_PERSONAL = 'web:codyOnboarding:purpose:personal', } export const enum EventLocation { diff --git a/cmd/frontend/graphqlbackend/schema.graphql b/cmd/frontend/graphqlbackend/schema.graphql index b06b3c6a5cd20..50ffdfacc83e2 100755 --- a/cmd/frontend/graphqlbackend/schema.graphql +++ b/cmd/frontend/graphqlbackend/schema.graphql @@ -90,11 +90,11 @@ type Mutation { """ updateUser(user: ID!, username: String, displayName: String, avatarURL: String): User! """ - Upgrades the user to Cody Pro. + Updates the user's Cody plan to Pro or Community. Only the user may perform this mutation. """ - upgradeToCodyPro(user: ID!): User! + changeCodyPlan(user: ID!, pro: Boolean!): User! """ Creates an organization. The caller is added as a member of the newly created organization. diff --git a/cmd/frontend/graphqlbackend/user.go b/cmd/frontend/graphqlbackend/user.go index 702bfe5419abc..1e64ae08600b1 100644 --- a/cmd/frontend/graphqlbackend/user.go +++ b/cmd/frontend/graphqlbackend/user.go @@ -320,11 +320,12 @@ func (r *schemaResolver) UpdateUser(ctx context.Context, args *updateUserArgs) ( return UserByIDInt32(ctx, r.db, userID) } -type upgradeToCodyProArgs struct { +type changeCodyPlanArgs struct { User graphql.ID + Pro bool } -func (r *schemaResolver) UpgradeToCodyPro(ctx context.Context, args *upgradeToCodyProArgs) (*UserResolver, error) { +func (r *schemaResolver) ChangeCodyPlan(ctx context.Context, args *changeCodyPlanArgs) (*UserResolver, error) { if !envvar.SourcegraphDotComMode() { return nil, errors.New("this feature is only available on sourcegraph.com") } @@ -343,7 +344,7 @@ func (r *schemaResolver) UpgradeToCodyPro(ctx context.Context, args *upgradeToCo return nil, err } - if err := r.db.Users().UpgradeToCodyPro(ctx, userID); err != nil { + if err := r.db.Users().ChangeCodyPlan(ctx, userID, args.Pro); err != nil { return nil, err } diff --git a/cmd/frontend/internal/app/ui/router.go b/cmd/frontend/internal/app/ui/router.go index 0e057bcc22406..d2c725e6d77b3 100644 --- a/cmd/frontend/internal/app/ui/router.go +++ b/cmd/frontend/internal/app/ui/router.go @@ -141,6 +141,8 @@ func InitRouter(db database.DB) { {path: "/search/cody", name: "cody-search", title: "Search (Cody)", index: false}, {path: "/app/coming-soon", name: "app-coming-soon", title: "Coming soon", index: false}, {path: "/app/auth/callback", name: "app-auth-callback", title: "Auth callback", index: false}, + {path: "/cody/manage", name: "cody", title: "Cody Manage", index: false}, + {path: "/cody/subscription", name: "cody", title: "Cody Pricing", index: false}, {path: "/cody/chat", name: "cody", title: "Cody", index: false}, {path: "/cody/chat/{chatID}", name: "cody-chat", title: "Cody", index: false}, // TODO: [TEMPORARY] remove this redirect route when the marketing page is added. diff --git a/internal/database/dbmocks/mocks_temp.go b/internal/database/dbmocks/mocks_temp.go index 2ff58903ce8dc..f04371988cf3b 100644 --- a/internal/database/dbmocks/mocks_temp.go +++ b/internal/database/dbmocks/mocks_temp.go @@ -83090,6 +83090,9 @@ func (c UserRoleStoreWithTransactFuncCall) Results() []interface{} { // the package github.com/sourcegraph/sourcegraph/internal/database) used // for unit testing. type MockUserStore struct { + // ChangeCodyPlanFunc is an instance of a mock function object + // controlling the behavior of the method ChangeCodyPlan. + ChangeCodyPlanFunc *UserStoreChangeCodyPlanFunc // CheckAndDecrementInviteQuotaFunc is an instance of a mock function // object controlling the behavior of the method // CheckAndDecrementInviteQuota. @@ -83213,9 +83216,6 @@ type MockUserStore struct { // UpdatePasswordFunc is an instance of a mock function object // controlling the behavior of the method UpdatePassword. UpdatePasswordFunc *UserStoreUpdatePasswordFunc - // UpgradeToCodyProFunc is an instance of a mock function object - // controlling the behavior of the method UpgradeToCodyPro. - UpgradeToCodyProFunc *UserStoreUpgradeToCodyProFunc // WithFunc is an instance of a mock function object controlling the // behavior of the method With. WithFunc *UserStoreWithFunc @@ -83225,6 +83225,11 @@ type MockUserStore struct { // methods return zero values for all results, unless overwritten. func NewMockUserStore() *MockUserStore { return &MockUserStore{ + ChangeCodyPlanFunc: &UserStoreChangeCodyPlanFunc{ + defaultHook: func(context.Context, int32, bool) (r0 error) { + return + }, + }, CheckAndDecrementInviteQuotaFunc: &UserStoreCheckAndDecrementInviteQuotaFunc{ defaultHook: func(context.Context, int32) (r0 bool, r1 error) { return @@ -83425,11 +83430,6 @@ func NewMockUserStore() *MockUserStore { return }, }, - UpgradeToCodyProFunc: &UserStoreUpgradeToCodyProFunc{ - defaultHook: func(context.Context, int32) (r0 error) { - return - }, - }, WithFunc: &UserStoreWithFunc{ defaultHook: func(basestore.ShareableStore) (r0 database.UserStore) { return @@ -83442,6 +83442,11 @@ func NewMockUserStore() *MockUserStore { // methods panic on invocation, unless overwritten. func NewStrictMockUserStore() *MockUserStore { return &MockUserStore{ + ChangeCodyPlanFunc: &UserStoreChangeCodyPlanFunc{ + defaultHook: func(context.Context, int32, bool) error { + panic("unexpected invocation of MockUserStore.ChangeCodyPlan") + }, + }, CheckAndDecrementInviteQuotaFunc: &UserStoreCheckAndDecrementInviteQuotaFunc{ defaultHook: func(context.Context, int32) (bool, error) { panic("unexpected invocation of MockUserStore.CheckAndDecrementInviteQuota") @@ -83642,11 +83647,6 @@ func NewStrictMockUserStore() *MockUserStore { panic("unexpected invocation of MockUserStore.UpdatePassword") }, }, - UpgradeToCodyProFunc: &UserStoreUpgradeToCodyProFunc{ - defaultHook: func(context.Context, int32) error { - panic("unexpected invocation of MockUserStore.UpgradeToCodyPro") - }, - }, WithFunc: &UserStoreWithFunc{ defaultHook: func(basestore.ShareableStore) database.UserStore { panic("unexpected invocation of MockUserStore.With") @@ -83659,6 +83659,9 @@ func NewStrictMockUserStore() *MockUserStore { // All methods delegate to the given implementation, unless overwritten. func NewMockUserStoreFrom(i database.UserStore) *MockUserStore { return &MockUserStore{ + ChangeCodyPlanFunc: &UserStoreChangeCodyPlanFunc{ + defaultHook: i.ChangeCodyPlan, + }, CheckAndDecrementInviteQuotaFunc: &UserStoreCheckAndDecrementInviteQuotaFunc{ defaultHook: i.CheckAndDecrementInviteQuota, }, @@ -83779,15 +83782,120 @@ func NewMockUserStoreFrom(i database.UserStore) *MockUserStore { UpdatePasswordFunc: &UserStoreUpdatePasswordFunc{ defaultHook: i.UpdatePassword, }, - UpgradeToCodyProFunc: &UserStoreUpgradeToCodyProFunc{ - defaultHook: i.UpgradeToCodyPro, - }, WithFunc: &UserStoreWithFunc{ defaultHook: i.With, }, } } +// UserStoreChangeCodyPlanFunc describes the behavior when the +// ChangeCodyPlan method of the parent MockUserStore instance is invoked. +type UserStoreChangeCodyPlanFunc struct { + defaultHook func(context.Context, int32, bool) error + hooks []func(context.Context, int32, bool) error + history []UserStoreChangeCodyPlanFuncCall + mutex sync.Mutex +} + +// ChangeCodyPlan delegates to the next hook function in the queue and +// stores the parameter and result values of this invocation. +func (m *MockUserStore) ChangeCodyPlan(v0 context.Context, v1 int32, v2 bool) error { + r0 := m.ChangeCodyPlanFunc.nextHook()(v0, v1, v2) + m.ChangeCodyPlanFunc.appendCall(UserStoreChangeCodyPlanFuncCall{v0, v1, v2, r0}) + return r0 +} + +// SetDefaultHook sets function that is called when the ChangeCodyPlan +// method of the parent MockUserStore instance is invoked and the hook queue +// is empty. +func (f *UserStoreChangeCodyPlanFunc) SetDefaultHook(hook func(context.Context, int32, bool) error) { + f.defaultHook = hook +} + +// PushHook adds a function to the end of hook queue. Each invocation of the +// ChangeCodyPlan method of the parent MockUserStore instance invokes the +// hook at the front of the queue and discards it. After the queue is empty, +// the default hook function is invoked for any future action. +func (f *UserStoreChangeCodyPlanFunc) PushHook(hook func(context.Context, int32, bool) error) { + f.mutex.Lock() + f.hooks = append(f.hooks, hook) + f.mutex.Unlock() +} + +// SetDefaultReturn calls SetDefaultHook with a function that returns the +// given values. +func (f *UserStoreChangeCodyPlanFunc) SetDefaultReturn(r0 error) { + f.SetDefaultHook(func(context.Context, int32, bool) error { + return r0 + }) +} + +// PushReturn calls PushHook with a function that returns the given values. +func (f *UserStoreChangeCodyPlanFunc) PushReturn(r0 error) { + f.PushHook(func(context.Context, int32, bool) error { + return r0 + }) +} + +func (f *UserStoreChangeCodyPlanFunc) nextHook() func(context.Context, int32, bool) error { + f.mutex.Lock() + defer f.mutex.Unlock() + + if len(f.hooks) == 0 { + return f.defaultHook + } + + hook := f.hooks[0] + f.hooks = f.hooks[1:] + return hook +} + +func (f *UserStoreChangeCodyPlanFunc) appendCall(r0 UserStoreChangeCodyPlanFuncCall) { + f.mutex.Lock() + f.history = append(f.history, r0) + f.mutex.Unlock() +} + +// History returns a sequence of UserStoreChangeCodyPlanFuncCall objects +// describing the invocations of this function. +func (f *UserStoreChangeCodyPlanFunc) History() []UserStoreChangeCodyPlanFuncCall { + f.mutex.Lock() + history := make([]UserStoreChangeCodyPlanFuncCall, len(f.history)) + copy(history, f.history) + f.mutex.Unlock() + + return history +} + +// UserStoreChangeCodyPlanFuncCall is an object that describes an invocation +// of method ChangeCodyPlan on an instance of MockUserStore. +type UserStoreChangeCodyPlanFuncCall struct { + // Arg0 is the value of the 1st argument passed to this method + // invocation. + Arg0 context.Context + // Arg1 is the value of the 2nd argument passed to this method + // invocation. + Arg1 int32 + // Arg2 is the value of the 3rd argument passed to this method + // invocation. + Arg2 bool + // Result0 is the value of the 1st result returned from this method + // invocation. + Result0 error +} + +// Args returns an interface slice containing the arguments of this +// invocation. +func (c UserStoreChangeCodyPlanFuncCall) Args() []interface{} { + return []interface{}{c.Arg0, c.Arg1, c.Arg2} +} + +// Results returns an interface slice containing the results of this +// invocation. +func (c UserStoreChangeCodyPlanFuncCall) Results() []interface{} { + return []interface{}{c.Result0} +} + // UserStoreCheckAndDecrementInviteQuotaFunc describes the behavior when the // CheckAndDecrementInviteQuota method of the parent MockUserStore instance // is invoked. @@ -88113,111 +88221,6 @@ func (c UserStoreUpdatePasswordFuncCall) Results() []interface{} { return []interface{}{c.Result0} } -// UserStoreUpgradeToCodyProFunc describes the behavior when the -// UpgradeToCodyPro method of the parent MockUserStore instance is invoked. -type UserStoreUpgradeToCodyProFunc struct { - defaultHook func(context.Context, int32) error - hooks []func(context.Context, int32) error - history []UserStoreUpgradeToCodyProFuncCall - mutex sync.Mutex -} - -// UpgradeToCodyPro delegates to the next hook function in the queue and -// stores the parameter and result values of this invocation. -func (m *MockUserStore) UpgradeToCodyPro(v0 context.Context, v1 int32) error { - r0 := m.UpgradeToCodyProFunc.nextHook()(v0, v1) - m.UpgradeToCodyProFunc.appendCall(UserStoreUpgradeToCodyProFuncCall{v0, v1, r0}) - return r0 -} - -// SetDefaultHook sets function that is called when the UpgradeToCodyPro -// method of the parent MockUserStore instance is invoked and the hook queue -// is empty. -func (f *UserStoreUpgradeToCodyProFunc) SetDefaultHook(hook func(context.Context, int32) error) { - f.defaultHook = hook -} - -// PushHook adds a function to the end of hook queue. Each invocation of the -// UpgradeToCodyPro method of the parent MockUserStore instance invokes the -// hook at the front of the queue and discards it. After the queue is empty, -// the default hook function is invoked for any future action. -func (f *UserStoreUpgradeToCodyProFunc) PushHook(hook func(context.Context, int32) error) { - f.mutex.Lock() - f.hooks = append(f.hooks, hook) - f.mutex.Unlock() -} - -// SetDefaultReturn calls SetDefaultHook with a function that returns the -// given values. -func (f *UserStoreUpgradeToCodyProFunc) SetDefaultReturn(r0 error) { - f.SetDefaultHook(func(context.Context, int32) error { - return r0 - }) -} - -// PushReturn calls PushHook with a function that returns the given values. -func (f *UserStoreUpgradeToCodyProFunc) PushReturn(r0 error) { - f.PushHook(func(context.Context, int32) error { - return r0 - }) -} - -func (f *UserStoreUpgradeToCodyProFunc) nextHook() func(context.Context, int32) error { - f.mutex.Lock() - defer f.mutex.Unlock() - - if len(f.hooks) == 0 { - return f.defaultHook - } - - hook := f.hooks[0] - f.hooks = f.hooks[1:] - return hook -} - -func (f *UserStoreUpgradeToCodyProFunc) appendCall(r0 UserStoreUpgradeToCodyProFuncCall) { - f.mutex.Lock() - f.history = append(f.history, r0) - f.mutex.Unlock() -} - -// History returns a sequence of UserStoreUpgradeToCodyProFuncCall objects -// describing the invocations of this function. -func (f *UserStoreUpgradeToCodyProFunc) History() []UserStoreUpgradeToCodyProFuncCall { - f.mutex.Lock() - history := make([]UserStoreUpgradeToCodyProFuncCall, len(f.history)) - copy(history, f.history) - f.mutex.Unlock() - - return history -} - -// UserStoreUpgradeToCodyProFuncCall is an object that describes an -// invocation of method UpgradeToCodyPro on an instance of MockUserStore. -type UserStoreUpgradeToCodyProFuncCall struct { - // Arg0 is the value of the 1st argument passed to this method - // invocation. - Arg0 context.Context - // Arg1 is the value of the 2nd argument passed to this method - // invocation. - Arg1 int32 - // Result0 is the value of the 1st result returned from this method - // invocation. - Result0 error -} - -// Args returns an interface slice containing the arguments of this -// invocation. -func (c UserStoreUpgradeToCodyProFuncCall) Args() []interface{} { - return []interface{}{c.Arg0, c.Arg1} -} - -// Results returns an interface slice containing the results of this -// invocation. -func (c UserStoreUpgradeToCodyProFuncCall) Results() []interface{} { - return []interface{}{c.Result0} -} - // UserStoreWithFunc describes the behavior when the With method of the // parent MockUserStore instance is invoked. type UserStoreWithFunc struct { diff --git a/internal/database/users.go b/internal/database/users.go index 9a4b9b087afcd..b49ecd1ca8847 100644 --- a/internal/database/users.go +++ b/internal/database/users.go @@ -95,7 +95,7 @@ type UserStore interface { Transact(context.Context) (UserStore, error) Update(context.Context, int32, UserUpdate) error UpdatePassword(ctx context.Context, id int32, oldPassword, newPassword string) error - UpgradeToCodyPro(ctx context.Context, id int32) error + ChangeCodyPlan(ctx context.Context, id int32, plan bool) error SetChatCompletionsQuota(ctx context.Context, id int32, quota *int) error GetChatCompletionsQuota(ctx context.Context, id int32) (*int, error) SetCodeCompletionsQuota(ctx context.Context, id int32, quota *int) error @@ -619,9 +619,12 @@ func (u *userStore) Update(ctx context.Context, id int32, update UserUpdate) (er // NOTE(naman): THIS IS TEMPORARY FOR DEC GA // Upgrade user to cody pro plan -func (u *userStore) UpgradeToCodyPro(ctx context.Context, id int32) (err error) { - // TODO: update usage limits as well - query := sqlf.Sprintf("UPDATE users SET cody_pro_enabled_at=NOW() WHERE id=%d AND cody_pro_enabled_at IS NULL AND deleted_at IS NULL", id) +func (u *userStore) ChangeCodyPlan(ctx context.Context, id int32, pro bool) (err error) { + query := sqlf.Sprintf("UPDATE users SET cody_pro_enabled_at=NULL WHERE id=%d AND cody_pro_enabled_at IS NOT NULL AND deleted_at IS NULL", id) + + if pro { + query = sqlf.Sprintf("UPDATE users SET cody_pro_enabled_at=NOW() WHERE id=%d AND cody_pro_enabled_at IS NULL AND deleted_at IS NULL", id) + } res, err := u.ExecResult(ctx, query) if err != nil { @@ -643,7 +646,11 @@ func (u *userStore) UpgradeToCodyPro(ctx context.Context, id int32) (err error) return userNotFoundErr{args: []any{id}} } - return errors.New("user is already on Cody Pro plan") + if pro { + return errors.New("user is already on Cody Pro plan") + } + + return errors.New("user is already on Cody Community plan") } return nil From 85c51b3e007d9555a2c84990dff8e0297699d35f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Gajdulewicz?= <rafax@users.noreply.github.com> Date: Tue, 28 Nov 2023 09:07:09 +0100 Subject: [PATCH 180/222] Add code completion models used by PLG (#58595) * Add code completion models used by PLG * Drop cyan --- .../dotcom/productsubscription/codygateway_dotcom_user.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go b/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go index 7ae0da74b5f7c..90d059e69f751 100644 --- a/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go +++ b/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go @@ -315,7 +315,7 @@ func allowedModels(scope types.CompletionsFeature) []string { case types.CompletionsFeatureChat: return []string{"anthropic/claude-v1", "anthropic/claude-2", "anthropic/claude-2.0", "anthropic/claude-2.1", "anthropic/claude-instant-v1", "anthropic/claude-instant-1"} case types.CompletionsFeatureCode: - return []string{"anthropic/claude-instant-v1", "anthropic/claude-instant-1"} + return []string{"anthropic/claude-instant-v1", "anthropic/claude-instant-1", "fireworks/accounts/fireworks/models/starcoder-7b-w8a16", "fireworks/accounts/sourcegraph/models/starcoder-7b", "fireworks/accounts/fireworks/models/starcoder-16b-w8a16", "fireworks/accounts/sourcegraph/models/starcoder-16b"} default: return []string{} } From 5b4cc597533b90ae089a783ddb03497c6be6c79b Mon Sep 17 00:00:00 2001 From: Jean-Hadrien Chabran <jean-hadrien.chabran@sourcegraph.com> Date: Tue, 28 Nov 2023 11:46:36 +0100 Subject: [PATCH 181/222] ci: preview commands show computed VERSION (#58587) --- dev/ci/gen-pipeline.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dev/ci/gen-pipeline.go b/dev/ci/gen-pipeline.go index c86d0f0b305e5..c16cd97cd35fb 100644 --- a/dev/ci/gen-pipeline.go +++ b/dev/ci/gen-pipeline.go @@ -82,6 +82,8 @@ func main() { func previewPipeline(w io.Writer, c ci.Config, pipeline *buildkite.Pipeline) { fmt.Fprintf(w, "- **Detected run type:** %s\n", c.RunType.String()) fmt.Fprintf(w, "- **Detected diffs:** %s\n", c.Diff.String()) + fmt.Fprintf(w, "- **Computed variables:**\n") + fmt.Fprintf(w, " - VERSION=%s\n", c.Version) fmt.Fprintf(w, "- **Computed build steps:**\n") printPipeline(w, "", pipeline) } From 82b5f4f5d73f56e31adfe7f5bd82bf2a4206cd46 Mon Sep 17 00:00:00 2001 From: David Veszelovszki <veszelovszki@gmail.com> Date: Tue, 28 Nov 2023 13:01:26 +0100 Subject: [PATCH 182/222] PLG: Add config items for interaction-based limits (#58552) * Rename existing config items * Add config items for interactions --- .../codygateway_dotcom_user.go | 16 +++++------ internal/conf/computed.go | 12 +++++--- internal/conf/conftypes/consts.go | 22 +++++++++------ schema/schema.go | 24 ++++++++++------ schema/site.schema.json | 28 ++++++++++++++++--- 5 files changed, 69 insertions(+), 33 deletions(-) diff --git a/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go b/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go index 90d059e69f751..7af387e0dbab8 100644 --- a/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go +++ b/cmd/frontend/internal/dotcom/productsubscription/codygateway_dotcom_user.go @@ -288,22 +288,22 @@ func getSelfServeUsageLimits(scope types.CompletionsFeature, isProUser bool, cfg switch scope { case types.CompletionsFeatureChat: if isProUser { - if cfg.PerProUserChatDailyLimit > 0 { - return oneDayInSeconds, pointers.Ptr(cfg.PerProUserChatDailyLimit), nil + if cfg.PerProUserChatDailyLLMRequestLimit > 0 { + return oneDayInSeconds, pointers.Ptr(cfg.PerProUserChatDailyLLMRequestLimit), nil } } else { - if cfg.PerCommunityUserChatMonthlyLimit > 0 { - return oneMonthInSeconds, pointers.Ptr(cfg.PerCommunityUserChatMonthlyLimit), nil + if cfg.PerCommunityUserChatMonthlyLLMRequestLimit > 0 { + return oneMonthInSeconds, pointers.Ptr(cfg.PerCommunityUserChatMonthlyLLMRequestLimit), nil } } case types.CompletionsFeatureCode: if isProUser { - if cfg.PerProUserCodeCompletionsDailyLimit > 0 { - return oneDayInSeconds, pointers.Ptr(cfg.PerProUserCodeCompletionsDailyLimit), nil + if cfg.PerProUserCodeCompletionsDailyLLMRequestLimit > 0 { + return oneDayInSeconds, pointers.Ptr(cfg.PerProUserCodeCompletionsDailyLLMRequestLimit), nil } } else { - if cfg.PerCommunityUserCodeCompletionsMonthlyLimit > 0 { - return oneMonthInSeconds, pointers.Ptr(cfg.PerCommunityUserCodeCompletionsMonthlyLimit), nil + if cfg.PerCommunityUserCodeCompletionsMonthlyLLMRequestLimit > 0 { + return oneMonthInSeconds, pointers.Ptr(cfg.PerCommunityUserCodeCompletionsMonthlyLLMRequestLimit), nil } } } diff --git a/internal/conf/computed.go b/internal/conf/computed.go index d455799f24f89..5fff081aa63d3 100644 --- a/internal/conf/computed.go +++ b/internal/conf/computed.go @@ -796,10 +796,14 @@ func GetCompletionsConfig(siteConfig schema.SiteConfiguration) (c *conftypes.Com Endpoint: completionsConfig.Endpoint, PerUserDailyLimit: completionsConfig.PerUserDailyLimit, PerUserCodeCompletionsDailyLimit: completionsConfig.PerUserCodeCompletionsDailyLimit, - PerCommunityUserChatMonthlyLimit: completionsConfig.PerCommunityUserChatMonthlyLimit, - PerCommunityUserCodeCompletionsMonthlyLimit: completionsConfig.PerCommunityUserCodeCompletionsMonthlyLimit, - PerProUserChatDailyLimit: completionsConfig.PerProUserChatDailyLimit, - PerProUserCodeCompletionsDailyLimit: completionsConfig.PerProUserCodeCompletionsDailyLimit, + PerCommunityUserChatMonthlyLLMRequestLimit: completionsConfig.PerCommunityUserChatMonthlyLLMRequestLimit, + PerCommunityUserCodeCompletionsMonthlyLLMRequestLimit: completionsConfig.PerCommunityUserCodeCompletionsMonthlyLLMRequestLimit, + PerProUserChatDailyLLMRequestLimit: completionsConfig.PerProUserChatDailyLLMRequestLimit, + PerProUserCodeCompletionsDailyLLMRequestLimit: completionsConfig.PerProUserCodeCompletionsDailyLLMRequestLimit, + PerCommunityUserChatMonthlyInteractionLimit: completionsConfig.PerCommunityUserChatMonthlyInteractionLimit, + PerCommunityUserCodeCompletionsMonthlyInteractionLimit: completionsConfig.PerCommunityUserCodeCompletionsMonthlyInteractionLimit, + PerProUserChatDailyInteractionLimit: completionsConfig.PerProUserChatDailyInteractionLimit, + PerProUserCodeCompletionsDailyInteractionLimit: completionsConfig.PerProUserCodeCompletionsDailyInteractionLimit, } return computedConfig diff --git a/internal/conf/conftypes/consts.go b/internal/conf/conftypes/consts.go index 0e9b49fe94f3a..a57475beb7d32 100644 --- a/internal/conf/conftypes/consts.go +++ b/internal/conf/conftypes/consts.go @@ -12,15 +12,19 @@ type CompletionsConfig struct { CompletionModel string CompletionModelMaxTokens int - AccessToken string - Provider CompletionsProviderName - Endpoint string - PerUserDailyLimit int - PerUserCodeCompletionsDailyLimit int - PerCommunityUserChatMonthlyLimit int - PerCommunityUserCodeCompletionsMonthlyLimit int - PerProUserChatDailyLimit int - PerProUserCodeCompletionsDailyLimit int + AccessToken string + Provider CompletionsProviderName + Endpoint string + PerUserDailyLimit int + PerUserCodeCompletionsDailyLimit int + PerCommunityUserChatMonthlyLLMRequestLimit int + PerCommunityUserCodeCompletionsMonthlyLLMRequestLimit int + PerProUserChatDailyLLMRequestLimit int + PerProUserCodeCompletionsDailyLLMRequestLimit int + PerCommunityUserChatMonthlyInteractionLimit int + PerCommunityUserCodeCompletionsMonthlyInteractionLimit int + PerProUserChatDailyInteractionLimit int + PerProUserCodeCompletionsDailyInteractionLimit int } type CompletionsProviderName string diff --git a/schema/schema.go b/schema/schema.go index 579c9e59cdd7c..ac586790d228c 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -594,14 +594,22 @@ type Completions struct { FastChatModelMaxTokens int `json:"fastChatModelMaxTokens,omitempty"` // Model description: DEPRECATED. Use chatModel instead. Model string `json:"model,omitempty"` - // PerCommunityUserChatMonthlyLimit description: If > 0, limits the number of completions requests allowed for a Community user in a month. This is for Self-serve Cody and applies to Dotcom only. - PerCommunityUserChatMonthlyLimit int `json:"perCommunityUserChatMonthlyLimit,omitempty"` - // PerCommunityUserCodeCompletionsMonthlyLimit description: If > 0, limits the number of code completions requests allowed for a Community user in a month. This is for Self-serve Cody and applies to Dotcom only. - PerCommunityUserCodeCompletionsMonthlyLimit int `json:"perCommunityUserCodeCompletionsMonthlyLimit,omitempty"` - // PerProUserChatDailyLimit description: If > 0, limits the number of completions requests allowed for a Pro user in a day. This is for Self-serve Cody and applies to Dotcom only. - PerProUserChatDailyLimit int `json:"perProUserChatDailyLimit,omitempty"` - // PerProUserCodeCompletionsDailyLimit description: If > 0, limits the number of code completions requests allowed for a Pro user in a day. This is for Self-serve Cody and applies to Dotcom only. - PerProUserCodeCompletionsDailyLimit int `json:"perProUserCodeCompletionsDailyLimit,omitempty"` + // PerCommunityUserChatMonthlyInteractionLimit description: If > 0, enables the maximum number of completions interactions allowed to be made by a single Community user in a month. This is for Cody PLG and applies to Dotcom only. + PerCommunityUserChatMonthlyInteractionLimit int `json:"perCommunityUserChatMonthlyInteractionLimit,omitempty"` + // PerCommunityUserChatMonthlyLLMRequestLimit description: If > 0, limits the number of completions requests allowed for a Community user in a month. This is for Self-serve Cody and applies to Dotcom only. + PerCommunityUserChatMonthlyLLMRequestLimit int `json:"perCommunityUserChatMonthlyLLMRequestLimit,omitempty"` + // PerCommunityUserCodeCompletionsMonthlyInteractionLimit description: If > 0, enables the maximum number of code completions interactions allowed to be made by a single Community user in a month. This is for Cody PLG and applies to Dotcom only. + PerCommunityUserCodeCompletionsMonthlyInteractionLimit int `json:"perCommunityUserCodeCompletionsMonthlyInteractionLimit,omitempty"` + // PerCommunityUserCodeCompletionsMonthlyLLMRequestLimit description: If > 0, limits the number of code completions requests allowed for a Community user in a month. This is for Self-serve Cody and applies to Dotcom only. + PerCommunityUserCodeCompletionsMonthlyLLMRequestLimit int `json:"perCommunityUserCodeCompletionsMonthlyLLMRequestLimit,omitempty"` + // PerProUserChatDailyInteractionLimit description: If > 0, enables the maximum number of completions interactions allowed to be made by a single Pro user in a day. This is for Cody PLG and applies to Dotcom only. + PerProUserChatDailyInteractionLimit int `json:"perProUserChatDailyInteractionLimit,omitempty"` + // PerProUserChatDailyLLMRequestLimit description: If > 0, limits the number of completions requests allowed for a Pro user in a day. This is for Self-serve Cody and applies to Dotcom only. + PerProUserChatDailyLLMRequestLimit int `json:"perProUserChatDailyLLMRequestLimit,omitempty"` + // PerProUserCodeCompletionsDailyInteractionLimit description: If > 0, enables the maximum number of code completions interactions allowed to be made by a single Pro user in a day. This is for Cody PLG and applies to Dotcom only. + PerProUserCodeCompletionsDailyInteractionLimit int `json:"perProUserCodeCompletionsDailyInteractionLimit,omitempty"` + // PerProUserCodeCompletionsDailyLLMRequestLimit description: If > 0, limits the number of code completions requests allowed for a Pro user in a day. This is for Self-serve Cody and applies to Dotcom only. + PerProUserCodeCompletionsDailyLLMRequestLimit int `json:"perProUserCodeCompletionsDailyLLMRequestLimit,omitempty"` // PerUserCodeCompletionsDailyLimit description: If > 0, limits the number of code completions requests allowed for a user in a day. On instances that allow anonymous requests, we enforce the rate limit by IP. PerUserCodeCompletionsDailyLimit int `json:"perUserCodeCompletionsDailyLimit,omitempty"` // PerUserDailyLimit description: If > 0, limits the number of completions requests allowed for a user in a day. On instances that allow anonymous requests, we enforce the rate limit by IP. diff --git a/schema/site.schema.json b/schema/site.schema.json index 425a903fa007f..a687f05c8e768 100644 --- a/schema/site.schema.json +++ b/schema/site.schema.json @@ -2803,25 +2803,45 @@ "type": "integer", "default": 0 }, - "perCommunityUserChatMonthlyLimit": { + "perCommunityUserChatMonthlyLLMRequestLimit": { "description": "If > 0, limits the number of completions requests allowed for a Community user in a month. This is for Self-serve Cody and applies to Dotcom only.", "type": "integer", "default": 0 }, - "perCommunityUserCodeCompletionsMonthlyLimit": { + "perCommunityUserCodeCompletionsMonthlyLLMRequestLimit": { "description": "If > 0, limits the number of code completions requests allowed for a Community user in a month. This is for Self-serve Cody and applies to Dotcom only.", "type": "integer", "default": 0 }, - "perProUserChatDailyLimit": { + "perProUserChatDailyLLMRequestLimit": { "description": "If > 0, limits the number of completions requests allowed for a Pro user in a day. This is for Self-serve Cody and applies to Dotcom only.", "type": "integer", "default": 0 }, - "perProUserCodeCompletionsDailyLimit": { + "perProUserCodeCompletionsDailyLLMRequestLimit": { "description": "If > 0, limits the number of code completions requests allowed for a Pro user in a day. This is for Self-serve Cody and applies to Dotcom only.", "type": "integer", "default": 0 + }, + "perCommunityUserChatMonthlyInteractionLimit": { + "description": "If > 0, enables the maximum number of completions interactions allowed to be made by a single Community user in a month. This is for Cody PLG and applies to Dotcom only.", + "type": "integer", + "default": 0 + }, + "perCommunityUserCodeCompletionsMonthlyInteractionLimit": { + "description": "If > 0, enables the maximum number of code completions interactions allowed to be made by a single Community user in a month. This is for Cody PLG and applies to Dotcom only.", + "type": "integer", + "default": 0 + }, + "perProUserChatDailyInteractionLimit": { + "description": "If > 0, enables the maximum number of completions interactions allowed to be made by a single Pro user in a day. This is for Cody PLG and applies to Dotcom only.", + "type": "integer", + "default": 0 + }, + "perProUserCodeCompletionsDailyInteractionLimit": { + "description": "If > 0, enables the maximum number of code completions interactions allowed to be made by a single Pro user in a day. This is for Cody PLG and applies to Dotcom only.", + "type": "integer", + "default": 0 } }, "examples": [ From 8757a29102c0ed09b5bbb59a85793c0617fa2a8a Mon Sep 17 00:00:00 2001 From: Naman Kumar <naman@outlook.in> Date: Tue, 28 Nov 2023 18:10:22 +0530 Subject: [PATCH 183/222] Add Cody usage stats API (#58513) * Add Cody usage stats API * Add unit tests --- cmd/frontend/graphqlbackend/schema.graphql | 16 +++ cmd/frontend/graphqlbackend/user.go | 116 ++++++++++++++++++ cmd/frontend/graphqlbackend/user_test.go | 133 +++++++++++++++++++++ internal/database/dbmocks/mocks_temp.go | 124 +++++++++++++++++++ internal/database/event_logs.go | 15 ++- 5 files changed, 398 insertions(+), 6 deletions(-) diff --git a/cmd/frontend/graphqlbackend/schema.graphql b/cmd/frontend/graphqlbackend/schema.graphql index 50ffdfacc83e2..559e9f3c24676 100755 --- a/cmd/frontend/graphqlbackend/schema.graphql +++ b/cmd/frontend/graphqlbackend/schema.graphql @@ -6539,6 +6539,22 @@ type User implements Node & SettingsSubject & Namespace { The date when the user enrolled for Cody Pro. """ codyProEnabledAt: DateTime + """ + The start date of current billing period of Cody. + """ + codyCurrentPeriodStartDate: DateTime + """ + The end date of current billing period of Cody. + """ + codyCurrentPeriodEndDate: DateTime + """ + The count of Cody chats in the current billing period. + """ + codyCurrentPeriodChatUsage: Int + """ + The count of Cody code completions in the current billing period. + """ + codyCurrentPeriodCodeUsage: Int } """ diff --git a/cmd/frontend/graphqlbackend/user.go b/cmd/frontend/graphqlbackend/user.go index 1e64ae08600b1..47196b6bb3d17 100644 --- a/cmd/frontend/graphqlbackend/user.go +++ b/cmd/frontend/graphqlbackend/user.go @@ -3,10 +3,12 @@ package graphqlbackend import ( "context" "net/url" + "time" "github.com/graph-gophers/graphql-go" "github.com/graph-gophers/graphql-go/relay" + "github.com/keegancsmith/sqlf" "github.com/sourcegraph/log" "github.com/sourcegraph/sourcegraph/cmd/frontend/backend" @@ -190,6 +192,120 @@ func (r *UserResolver) CodyProEnabled(ctx context.Context) bool { return r.CodyProEnabledAt(ctx) != nil } +func (r *UserResolver) CodyCurrentPeriodChatUsage(ctx context.Context) (*int32, error) { + if !envvar.SourcegraphDotComMode() { + return nil, errors.New("this feature is only available on sourcegraph.com") + } + + currentPeriodStartDate, err := r.CodyCurrentPeriodStartDate(ctx) + if err != nil { + return nil, err + } + + query := sqlf.Sprintf(`WHERE user_id = %s AND timestamp >= %s AND timestamp <= NOW() AND (name LIKE '%%recipe%%' OR name LIKE '%%command%%' OR name LIKE '%%chat%%')`, r.user.ID, currentPeriodStartDate.Time) + + count, err := r.db.EventLogs().CountBySQL(ctx, query) + + intCount := int32(count) + + return &intCount, err +} + +func (r *UserResolver) CodyCurrentPeriodCodeUsage(ctx context.Context) (*int32, error) { + if !envvar.SourcegraphDotComMode() { + return nil, errors.New("this feature is only available on sourcegraph.com") + } + + currentPeriodStartDate, err := r.CodyCurrentPeriodStartDate(ctx) + if err != nil { + return nil, err + } + + query := sqlf.Sprintf(`WHERE user_id = %s AND timestamp >= %s AND timestamp <= NOW() AND name LIKE '%%completion:suggested%%'`, r.user.ID, currentPeriodStartDate.Time) + + count, err := r.db.EventLogs().CountBySQL(ctx, query) + + intCount := int32(count) + + return &intCount, err +} + +func (r *UserResolver) CodyCurrentPeriodStartDate(ctx context.Context) (*gqlutil.DateTime, error) { + startDate, _, err := r.codyCurrentPeriodDateRange(ctx) + + return startDate, err +} + +func (r *UserResolver) CodyCurrentPeriodEndDate(ctx context.Context) (*gqlutil.DateTime, error) { + _, endDate, err := r.codyCurrentPeriodDateRange(ctx) + + return endDate, err +} + +type currentTimeCtxKey int + +const mockCurrentTimeKey currentTimeCtxKey = iota + +func currentTimeFromCtx(ctx context.Context) time.Time { + t, ok := ctx.Value(mockCurrentTimeKey).(*time.Time) + if !ok || t == nil { + return time.Now() + } + return *t +} + +func withCurrentTimeMock(ctx context.Context, t time.Time) context.Context { + return context.WithValue(ctx, mockCurrentTimeKey, &t) +} + +func (r *UserResolver) codyCurrentPeriodDateRange(ctx context.Context) (*gqlutil.DateTime, *gqlutil.DateTime, error) { + if !envvar.SourcegraphDotComMode() { + return nil, nil, errors.New("this feature is only available on sourcegraph.com") + } + + // šŸšØ SECURITY: Only the user and admins are allowed to access the user's + // settings because they may contain secrets or other sensitive data. + if err := auth.CheckSiteAdminOrSameUserFromActor(r.actor, r.db, r.user.ID); err != nil { + return nil, nil, err + } + + subscriptionStartDate := r.user.CreatedAt + if r.user.CodyProEnabledAt != nil { + subscriptionStartDate = *r.user.CodyProEnabledAt + } + + // to allow mocking current time during tests + currentDate := currentTimeFromCtx(ctx) + targetDay := subscriptionStartDate.Day() + startDayOfTheMonth := targetDay + endDayOfTheMonth := targetDay - 1 + startMonth := currentDate + endMonth := currentDate + + if currentDate.Day() < targetDay { + // Set to target day of the previous month + startMonth = currentDate.AddDate(0, -1, 0) + } else { + // Set to target day of the next month + endMonth = currentDate.AddDate(0, 1, 0) + } + + daysInStartingMonth := time.Date(startMonth.Year(), startMonth.Month()+1, 0, 0, 0, 0, 0, startMonth.Location()).Day() + if startDayOfTheMonth > daysInStartingMonth { + startDayOfTheMonth = daysInStartingMonth + } + + daysInEndingMonth := time.Date(endMonth.Year(), endMonth.Month()+1, 0, 0, 0, 0, 0, endMonth.Location()).Day() + if endDayOfTheMonth > daysInEndingMonth { + endDayOfTheMonth = daysInEndingMonth + } + + startDate := &gqlutil.DateTime{Time: time.Date(startMonth.Year(), startMonth.Month(), startDayOfTheMonth, 0, 0, 0, 0, startMonth.Location())} + endDate := &gqlutil.DateTime{Time: time.Date(endMonth.Year(), endMonth.Month(), endDayOfTheMonth, 23, 59, 59, 59, endMonth.Location())} + + return startDate, endDate, nil +} + func (r *UserResolver) UpdatedAt() *gqlutil.DateTime { return &gqlutil.DateTime{Time: r.user.UpdatedAt} } diff --git a/cmd/frontend/graphqlbackend/user_test.go b/cmd/frontend/graphqlbackend/user_test.go index d89906aa26f65..cbfa680fe3f30 100644 --- a/cmd/frontend/graphqlbackend/user_test.go +++ b/cmd/frontend/graphqlbackend/user_test.go @@ -6,6 +6,7 @@ import ( "strconv" "strings" "testing" + "time" gqlerrors "github.com/graph-gophers/graphql-go/errors" "github.com/stretchr/testify/assert" @@ -17,6 +18,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/database/dbmocks" "github.com/sourcegraph/sourcegraph/internal/gitserver" + "github.com/sourcegraph/sourcegraph/internal/gqlutil" "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/lib/errors" "github.com/sourcegraph/sourcegraph/schema" @@ -229,6 +231,137 @@ func TestUser_LatestSettings(t *testing.T) { }) } +func TestUser_CodyCurrentPeriod(t *testing.T) { + db := dbmocks.NewMockDB() + + orig := envvar.SourcegraphDotComMode() + envvar.MockSourcegraphDotComMode(true) + t.Cleanup(func() { + envvar.MockSourcegraphDotComMode(orig) + }) + + t.Run("allowed by same user or site admin", func(t *testing.T) { + users := dbmocks.NewMockUserStore() + db.UsersFunc.SetDefaultReturn(users) + now := time.Now() + + tests := []struct { + name string + ctx context.Context + success bool + }{ + { + name: "same user", + ctx: actor.WithActor(context.Background(), &actor.Actor{UID: 1}), + success: true, + }, + { + name: "another user", + ctx: actor.WithActor(context.Background(), &actor.Actor{UID: 2}), + success: false, + }, + { + name: "another user, but site admin", + ctx: actor.WithActor(context.Background(), actor.FromActualUser(&types.User{ID: 2, SiteAdmin: true})), + success: true, + }, + } + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + user := &types.User{ID: 1, CreatedAt: now} + users.GetByIDFunc.SetDefaultReturn(user, nil) + + date, _ := NewUserResolver(test.ctx, db, user).CodyCurrentPeriodStartDate(test.ctx) + + assert.Equal(t, test.success, date != nil, "CodyCurrentPeriodStartDate") + }) + } + }) + + t.Run("success", func(t *testing.T) { + users := dbmocks.NewMockUserStore() + db.UsersFunc.SetDefaultReturn(users) + now := time.Now() + + tests := []struct { + name string + user *types.User + today time.Time + createdAt time.Time + pro bool + start time.Time + end time.Time + }{ + { + name: "community user created before current day", + createdAt: time.Date(2022, 9, 5, 0, 0, 0, 0, now.Location()), + today: time.Date(2023, 1, 15, 0, 0, 0, 0, now.Location()), + start: time.Date(2023, 1, 5, 0, 0, 0, 0, now.Location()), + end: time.Date(2023, 2, 4, 23, 59, 59, 59, now.Location()), + }, + { + name: "community user created after current day", + createdAt: time.Date(2022, 9, 25, 0, 0, 0, 0, now.Location()), + today: time.Date(2023, 1, 15, 0, 0, 0, 0, now.Location()), + start: time.Date(2022, 12, 25, 0, 0, 0, 0, now.Location()), + end: time.Date(2023, 1, 24, 23, 59, 59, 59, now.Location()), + }, + { + name: "community user created on 31st Jan", + createdAt: time.Date(2023, 1, 31, 0, 0, 0, 0, now.Location()), + today: time.Date(2023, 2, 15, 0, 0, 0, 0, now.Location()), + start: time.Date(2023, 1, 31, 0, 0, 0, 0, now.Location()), + end: time.Date(2023, 2, 28, 23, 59, 59, 59, now.Location()), + }, + { + name: "pro user created before current day", + createdAt: time.Date(2022, 9, 5, 0, 0, 0, 0, now.Location()), + today: time.Date(2023, 1, 15, 0, 0, 0, 0, now.Location()), + start: time.Date(2023, 1, 5, 0, 0, 0, 0, now.Location()), + end: time.Date(2023, 2, 4, 23, 59, 59, 59, now.Location()), + pro: true, + }, + { + name: "pro user created after current day", + createdAt: time.Date(2022, 9, 25, 0, 0, 0, 0, now.Location()), + today: time.Date(2023, 1, 15, 0, 0, 0, 0, now.Location()), + start: time.Date(2022, 12, 25, 0, 0, 0, 0, now.Location()), + end: time.Date(2023, 1, 24, 23, 59, 59, 59, now.Location()), + pro: true, + }, + { + name: "pro user created on 31st Jan", + createdAt: time.Date(2023, 1, 31, 0, 0, 0, 0, now.Location()), + today: time.Date(2023, 2, 15, 0, 0, 0, 0, now.Location()), + start: time.Date(2023, 1, 31, 0, 0, 0, 0, now.Location()), + end: time.Date(2023, 2, 28, 23, 59, 59, 59, now.Location()), + pro: true, + }, + } + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + user := &types.User{ID: 1} + if test.pro { + user.CodyProEnabledAt = &test.createdAt + } else { + user.CreatedAt = test.createdAt + } + + users.GetByIDFunc.SetDefaultReturn(test.user, nil) + + ctx := actor.WithActor(context.Background(), &actor.Actor{UID: user.ID}) + ctx = withCurrentTimeMock(ctx, test.today) + + startDate, _ := NewUserResolver(ctx, db, user).CodyCurrentPeriodStartDate(ctx) + assert.Equal(t, &gqlutil.DateTime{Time: test.start}, startDate, "CodyCurrentPeriodStartDate") + + endDate, _ := NewUserResolver(ctx, db, user).CodyCurrentPeriodEndDate(ctx) + assert.Equal(t, &gqlutil.DateTime{Time: test.end}, endDate, "CodyCurrentPeriodEndDate") + }) + } + }) +} + func TestUser_ViewerCanAdminister(t *testing.T) { db := dbmocks.NewMockDB() t.Run("settings edit only allowed by authenticated user on Sourcegraph.com", func(t *testing.T) { diff --git a/internal/database/dbmocks/mocks_temp.go b/internal/database/dbmocks/mocks_temp.go index f04371988cf3b..b739f627ba80a 100644 --- a/internal/database/dbmocks/mocks_temp.go +++ b/internal/database/dbmocks/mocks_temp.go @@ -22618,6 +22618,9 @@ type MockEventLogStore struct { // CodeIntelligenceWAUsFunc is an instance of a mock function object // controlling the behavior of the method CodeIntelligenceWAUs. CodeIntelligenceWAUsFunc *EventLogStoreCodeIntelligenceWAUsFunc + // CountBySQLFunc is an instance of a mock function object controlling + // the behavior of the method CountBySQL. + CountBySQLFunc *EventLogStoreCountBySQLFunc // CountByUserIDFunc is an instance of a mock function object // controlling the behavior of the method CountByUserID. CountByUserIDFunc *EventLogStoreCountByUserIDFunc @@ -22778,6 +22781,11 @@ func NewMockEventLogStore() *MockEventLogStore { return }, }, + CountBySQLFunc: &EventLogStoreCountBySQLFunc{ + defaultHook: func(context.Context, *sqlf.Query) (r0 int, r1 error) { + return + }, + }, CountByUserIDFunc: &EventLogStoreCountByUserIDFunc{ defaultHook: func(context.Context, int32) (r0 int, r1 error) { return @@ -22980,6 +22988,11 @@ func NewStrictMockEventLogStore() *MockEventLogStore { panic("unexpected invocation of MockEventLogStore.CodeIntelligenceWAUs") }, }, + CountBySQLFunc: &EventLogStoreCountBySQLFunc{ + defaultHook: func(context.Context, *sqlf.Query) (int, error) { + panic("unexpected invocation of MockEventLogStore.CountBySQL") + }, + }, CountByUserIDFunc: &EventLogStoreCountByUserIDFunc{ defaultHook: func(context.Context, int32) (int, error) { panic("unexpected invocation of MockEventLogStore.CountByUserID") @@ -23153,6 +23166,9 @@ func NewMockEventLogStoreFrom(i database.EventLogStore) *MockEventLogStore { CodeIntelligenceWAUsFunc: &EventLogStoreCodeIntelligenceWAUsFunc{ defaultHook: i.CodeIntelligenceWAUs, }, + CountBySQLFunc: &EventLogStoreCountBySQLFunc{ + defaultHook: i.CountBySQL, + }, CountByUserIDFunc: &EventLogStoreCountByUserIDFunc{ defaultHook: i.CountByUserID, }, @@ -24879,6 +24895,114 @@ func (c EventLogStoreCodeIntelligenceWAUsFuncCall) Results() []interface{} { return []interface{}{c.Result0, c.Result1} } +// EventLogStoreCountBySQLFunc describes the behavior when the CountBySQL +// method of the parent MockEventLogStore instance is invoked. +type EventLogStoreCountBySQLFunc struct { + defaultHook func(context.Context, *sqlf.Query) (int, error) + hooks []func(context.Context, *sqlf.Query) (int, error) + history []EventLogStoreCountBySQLFuncCall + mutex sync.Mutex +} + +// CountBySQL delegates to the next hook function in the queue and stores +// the parameter and result values of this invocation. +func (m *MockEventLogStore) CountBySQL(v0 context.Context, v1 *sqlf.Query) (int, error) { + r0, r1 := m.CountBySQLFunc.nextHook()(v0, v1) + m.CountBySQLFunc.appendCall(EventLogStoreCountBySQLFuncCall{v0, v1, r0, r1}) + return r0, r1 +} + +// SetDefaultHook sets function that is called when the CountBySQL method of +// the parent MockEventLogStore instance is invoked and the hook queue is +// empty. +func (f *EventLogStoreCountBySQLFunc) SetDefaultHook(hook func(context.Context, *sqlf.Query) (int, error)) { + f.defaultHook = hook +} + +// PushHook adds a function to the end of hook queue. Each invocation of the +// CountBySQL method of the parent MockEventLogStore instance invokes the +// hook at the front of the queue and discards it. After the queue is empty, +// the default hook function is invoked for any future action. +func (f *EventLogStoreCountBySQLFunc) PushHook(hook func(context.Context, *sqlf.Query) (int, error)) { + f.mutex.Lock() + f.hooks = append(f.hooks, hook) + f.mutex.Unlock() +} + +// SetDefaultReturn calls SetDefaultHook with a function that returns the +// given values. +func (f *EventLogStoreCountBySQLFunc) SetDefaultReturn(r0 int, r1 error) { + f.SetDefaultHook(func(context.Context, *sqlf.Query) (int, error) { + return r0, r1 + }) +} + +// PushReturn calls PushHook with a function that returns the given values. +func (f *EventLogStoreCountBySQLFunc) PushReturn(r0 int, r1 error) { + f.PushHook(func(context.Context, *sqlf.Query) (int, error) { + return r0, r1 + }) +} + +func (f *EventLogStoreCountBySQLFunc) nextHook() func(context.Context, *sqlf.Query) (int, error) { + f.mutex.Lock() + defer f.mutex.Unlock() + + if len(f.hooks) == 0 { + return f.defaultHook + } + + hook := f.hooks[0] + f.hooks = f.hooks[1:] + return hook +} + +func (f *EventLogStoreCountBySQLFunc) appendCall(r0 EventLogStoreCountBySQLFuncCall) { + f.mutex.Lock() + f.history = append(f.history, r0) + f.mutex.Unlock() +} + +// History returns a sequence of EventLogStoreCountBySQLFuncCall objects +// describing the invocations of this function. +func (f *EventLogStoreCountBySQLFunc) History() []EventLogStoreCountBySQLFuncCall { + f.mutex.Lock() + history := make([]EventLogStoreCountBySQLFuncCall, len(f.history)) + copy(history, f.history) + f.mutex.Unlock() + + return history +} + +// EventLogStoreCountBySQLFuncCall is an object that describes an invocation +// of method CountBySQL on an instance of MockEventLogStore. +type EventLogStoreCountBySQLFuncCall struct { + // Arg0 is the value of the 1st argument passed to this method + // invocation. + Arg0 context.Context + // Arg1 is the value of the 2nd argument passed to this method + // invocation. + Arg1 *sqlf.Query + // Result0 is the value of the 1st result returned from this method + // invocation. + Result0 int + // Result1 is the value of the 2nd result returned from this method + // invocation. + Result1 error +} + +// Args returns an interface slice containing the arguments of this +// invocation. +func (c EventLogStoreCountBySQLFuncCall) Args() []interface{} { + return []interface{}{c.Arg0, c.Arg1} +} + +// Results returns an interface slice containing the results of this +// invocation. +func (c EventLogStoreCountBySQLFuncCall) Results() []interface{} { + return []interface{}{c.Result0, c.Result1} +} + // EventLogStoreCountByUserIDFunc describes the behavior when the // CountByUserID method of the parent MockEventLogStore instance is invoked. type EventLogStoreCountByUserIDFunc struct { diff --git a/internal/database/event_logs.go b/internal/database/event_logs.go index 7484ea840cb53..bde4aceda8768 100644 --- a/internal/database/event_logs.go +++ b/internal/database/event_logs.go @@ -86,6 +86,9 @@ type EventLogStore interface { // CodeIntelligenceWAUs returns the WAU (current week) with any (precise or search-based) code intelligence event. CodeIntelligenceWAUs(ctx context.Context) (int, error) + // CountBySQL gets a count of event logged based on the query. + CountBySQL(ctx context.Context, querySuffix *sqlf.Query) (int, error) + // CountByUserID gets a count of events logged by a given user. CountByUserID(ctx context.Context, userID int32) (int, error) @@ -414,15 +417,15 @@ func (l *eventLogStore) LatestPing(ctx context.Context) (*Event, error) { } func (l *eventLogStore) CountByUserID(ctx context.Context, userID int32) (int, error) { - return l.countBySQL(ctx, sqlf.Sprintf("WHERE user_id = %d", userID)) + return l.CountBySQL(ctx, sqlf.Sprintf("WHERE user_id = %d", userID)) } func (l *eventLogStore) CountByUserIDAndEventName(ctx context.Context, userID int32, name string) (int, error) { - return l.countBySQL(ctx, sqlf.Sprintf("WHERE user_id = %d AND name = %s", userID, name)) + return l.CountBySQL(ctx, sqlf.Sprintf("WHERE user_id = %d AND name = %s", userID, name)) } func (l *eventLogStore) CountByUserIDAndEventNamePrefix(ctx context.Context, userID int32, namePrefix string) (int, error) { - return l.countBySQL(ctx, sqlf.Sprintf("WHERE user_id = %d AND name LIKE %s", userID, namePrefix+"%")) + return l.CountBySQL(ctx, sqlf.Sprintf("WHERE user_id = %d AND name LIKE %s", userID, namePrefix+"%")) } func (l *eventLogStore) CountByUserIDAndEventNames(ctx context.Context, userID int32, names []string) (int, error) { @@ -430,11 +433,11 @@ func (l *eventLogStore) CountByUserIDAndEventNames(ctx context.Context, userID i for _, v := range names { items = append(items, sqlf.Sprintf("%s", v)) } - return l.countBySQL(ctx, sqlf.Sprintf("WHERE user_id = %d AND name IN (%s)", userID, sqlf.Join(items, ","))) + return l.CountBySQL(ctx, sqlf.Sprintf("WHERE user_id = %d AND name IN (%s)", userID, sqlf.Join(items, ","))) } -// countBySQL gets a count of event logs. -func (l *eventLogStore) countBySQL(ctx context.Context, querySuffix *sqlf.Query) (int, error) { +// CountBySQL gets a count of event logs. +func (l *eventLogStore) CountBySQL(ctx context.Context, querySuffix *sqlf.Query) (int, error) { q := sqlf.Sprintf("SELECT COUNT(*) FROM event_logs %s", querySuffix) r := l.QueryRow(ctx, q) var count int From 05ccfcdf5961657379aa28131d50138559d45c32 Mon Sep 17 00:00:00 2001 From: David Veszelovszki <veszelovszki@gmail.com> Date: Tue, 28 Nov 2023 15:38:38 +0100 Subject: [PATCH 184/222] SSC: Use the user's access token for Gateway on dotcom (#58547) Co-authored-by: Chris Smith <chrsmith@users.noreply.github.com> --- internal/completions/httpapi/BUILD.bazel | 2 ++ internal/completions/httpapi/handler.go | 26 +++++++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/internal/completions/httpapi/BUILD.bazel b/internal/completions/httpapi/BUILD.bazel index e55207d486b62..df0c5da050793 100644 --- a/internal/completions/httpapi/BUILD.bazel +++ b/internal/completions/httpapi/BUILD.bazel @@ -13,8 +13,10 @@ go_library( visibility = ["//:__subpackages__"], deps = [ "//cmd/frontend/envvar", + "//internal/accesstoken", "//internal/actor", "//internal/auth", + "//internal/authz", "//internal/cody", "//internal/completions/client", "//internal/completions/types", diff --git a/internal/completions/httpapi/handler.go b/internal/completions/httpapi/handler.go index 9019a1416707c..38294dbb91948 100644 --- a/internal/completions/httpapi/handler.go +++ b/internal/completions/httpapi/handler.go @@ -4,6 +4,10 @@ import ( "context" "encoding/json" "fmt" + "github.com/sourcegraph/sourcegraph/cmd/frontend/envvar" + "github.com/sourcegraph/sourcegraph/internal/accesstoken" + "github.com/sourcegraph/sourcegraph/internal/authz" + "github.com/sourcegraph/sourcegraph/internal/featureflag" "net/http" "strconv" "time" @@ -73,12 +77,32 @@ func newCompletionsHandler( Build() defer done() + // Use the user's access token for Cody Gateway on dotcom if PLG is enabled. + accessToken := completionsConfig.AccessToken + isCodyProEnabled := featureflag.FromContext(ctx).GetBoolOr("cody-pro", false) + isDotcom := envvar.SourcegraphDotComMode() + isProviderCodyGateway := completionsConfig.Provider == conftypes.CompletionsProviderNameSourcegraph + if isCodyProEnabled && isDotcom && isProviderCodyGateway { + apiToken, _, err := authz.ParseAuthorizationHeader(r.Header.Get("Authorization")) + if err != nil { + trace.Logger(ctx, logger).Info("Error parsing auth header", log.String("Authorization header", r.Header.Get("Authorization")), log.Error(err)) + http.Error(w, "Error parsing auth header", http.StatusUnauthorized) + return + } + accessToken, err = accesstoken.GenerateDotcomUserGatewayAccessToken(apiToken) + if err != nil { + trace.Logger(ctx, logger).Info("Access token generation failed", log.String("API token", apiToken), log.Error(err)) + http.Error(w, "Access token generation failed", http.StatusUnauthorized) + return + } + } + completionClient, err := client.Get( logger, events, completionsConfig.Endpoint, completionsConfig.Provider, - completionsConfig.AccessToken, + accessToken, ) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) From a258e6470fece652e3cc86166d27381bddfc29ef Mon Sep 17 00:00:00 2001 From: Jason Hawk Harris <jasonhawkharris@gmail.com> Date: Tue, 28 Nov 2023 09:18:00 -0600 Subject: [PATCH 185/222] Code Navigation: show full tree context (#58598) The file tree no longer collapses on refresh, making the full tree context available to the user. --- client/shared/src/settings/settings.tsx | 1 + client/web/src/repo/RepoRevisionSidebar.tsx | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/client/shared/src/settings/settings.tsx b/client/shared/src/settings/settings.tsx index 5c4da20b8c68f..7f4ec0362d0af 100644 --- a/client/shared/src/settings/settings.tsx +++ b/client/shared/src/settings/settings.tsx @@ -308,6 +308,7 @@ const defaultFeatures: SettingsExperimentalFeatures = { showMultilineSearchConsole: false, codeMonitoringWebHooks: true, showCodeMonitoringLogs: true, + showFullTreeContext: false, codeInsightsCompute: false, editor: 'codemirror6', codeInsightsRepoUI: 'search-query-or-strict-list', diff --git a/client/web/src/repo/RepoRevisionSidebar.tsx b/client/web/src/repo/RepoRevisionSidebar.tsx index 2bc2bd0c23916..0b0a7cddbdfa3 100644 --- a/client/web/src/repo/RepoRevisionSidebar.tsx +++ b/client/web/src/repo/RepoRevisionSidebar.tsx @@ -6,7 +6,7 @@ import classNames from 'classnames' import type { Scalars } from '@sourcegraph/shared/src/graphql-operations' import { useKeyboardShortcut } from '@sourcegraph/shared/src/keyboardShortcuts/useKeyboardShortcut' import { Shortcut } from '@sourcegraph/shared/src/react-shortcuts' -import type { SettingsCascadeProps } from '@sourcegraph/shared/src/settings/settings' +import { type SettingsCascadeProps, useExperimentalFeatures } from '@sourcegraph/shared/src/settings/settings' import type { TelemetryProps } from '@sourcegraph/shared/src/telemetry/telemetryService' import type { RepoFile } from '@sourcegraph/shared/src/util/url' import { @@ -63,7 +63,8 @@ export const RepoRevisionSidebar: FC<RepoRevisionSidebarProps> = props => { const isWideScreen = useMatchMedia('(min-width: 768px)', false) const [isVisible, setIsVisible] = useState(persistedIsVisible && isWideScreen) - const [initialFilePath, setInitialFilePath] = useState<string>(props.filePath) + const showFullTreeContextEnabled = useExperimentalFeatures(features => features.showFullTreeContext) + const [initialFilePath, setInitialFilePath] = useState<string>(showFullTreeContextEnabled ? '' : props.filePath) const [initialFilePathIsDir, setInitialFilePathIsDir] = useState<boolean>(props.isDir) const onExpandParent = useCallback((parent: string) => { setInitialFilePath(parent) From ed5d263c4158be44d3b64a7644809c0adfff49a5 Mon Sep 17 00:00:00 2001 From: Camden Cheek <camden@ccheek.com> Date: Tue, 28 Nov 2023 09:23:42 -0600 Subject: [PATCH 186/222] Code intel: remove introspection queries (#58592) These introspection queries are leftover from a time when this code was in extensions and we didn't know what version of the server was running. Now that it is part of the bundled javascript, we can remove the GraphQL introspection since we can guarantee we've got the version as the server. --- .../legacy-extensions/lsif/providers.ts | 8 +- .../legacy-extensions/lsif/stencil.ts | 10 +- .../search/providers.test.ts | 3 - .../codeintel/legacy-extensions/util/api.ts | 180 +----------------- .../integration/codemirror-blob-view.test.ts | 17 +- 5 files changed, 8 insertions(+), 210 deletions(-) diff --git a/client/shared/src/codeintel/legacy-extensions/lsif/providers.ts b/client/shared/src/codeintel/legacy-extensions/lsif/providers.ts index 9f4e5205323a0..7b84d533241f5 100644 --- a/client/shared/src/codeintel/legacy-extensions/lsif/providers.ts +++ b/client/shared/src/codeintel/legacy-extensions/lsif/providers.ts @@ -1,11 +1,8 @@ -import { once } from 'lodash' - import * as scip from '../../scip' import type * as sourcegraph from '../api' import type { Logger } from '../logging' import type { CombinedProviders, DefinitionAndHover } from '../providers' import { cache } from '../util' -import { API } from '../util/api' import { queryGraphQL as sgQueryGraphQL, type QueryGraphQLFn } from '../util/graphql' import { asyncGeneratorFromPromise } from '../util/ix' import { raceWithDelayOffset } from '../util/promise' @@ -26,10 +23,7 @@ import { makeStencilFn, type StencilFn } from './stencil' export function createProviders(hasImplementationsField: boolean, logger: Logger): CombinedProviders { const providers = createGraphQLProviders( sgQueryGraphQL, - makeStencilFn( - sgQueryGraphQL, - once(() => new API().hasStencils()) - ), + makeStencilFn(sgQueryGraphQL), makeRangeWindowFactory(hasImplementationsField, sgQueryGraphQL) ) diff --git a/client/shared/src/codeintel/legacy-extensions/lsif/stencil.ts b/client/shared/src/codeintel/legacy-extensions/lsif/stencil.ts index 8a98687f4f493..37b791e39ee08 100644 --- a/client/shared/src/codeintel/legacy-extensions/lsif/stencil.ts +++ b/client/shared/src/codeintel/legacy-extensions/lsif/stencil.ts @@ -8,13 +8,8 @@ import { type GenericLSIFResponse, queryLSIF } from './api' export const stencil = async ( uri: string, - hasStencilSupport: () => Promise<boolean>, queryGraphQL: QueryGraphQLFn<GenericLSIFResponse<{ stencil: sourcegraph.Range[] }>> = sgQueryGraphQL ): Promise<sourcegraph.Range[] | undefined> => { - if (!(await hasStencilSupport())) { - return undefined - } - const response = await queryLSIF({ query: stencilQuery, uri }, queryGraphQL) return response?.stencil } @@ -45,6 +40,5 @@ const stencilQuery = gql` export type StencilFn = (uri: string) => Promise<sourcegraph.Range[] | undefined> export const makeStencilFn = ( - queryGraphQL: QueryGraphQLFn<GenericLSIFResponse<{ stencil: sourcegraph.Range[] }>>, - hasStencilSupport: () => Promise<boolean> = () => Promise.resolve(true) -): StencilFn => cache(uri => stencil(uri, hasStencilSupport, queryGraphQL), { max: 10 }) + queryGraphQL: QueryGraphQLFn<GenericLSIFResponse<{ stencil: sourcegraph.Range[] }>> +): StencilFn => cache(uri => stencil(uri, queryGraphQL), { max: 10 }) diff --git a/client/shared/src/codeintel/legacy-extensions/search/providers.test.ts b/client/shared/src/codeintel/legacy-extensions/search/providers.test.ts index 07c5ff531f72c..2bbc1403904d3 100644 --- a/client/shared/src/codeintel/legacy-extensions/search/providers.test.ts +++ b/client/shared/src/codeintel/legacy-extensions/search/providers.test.ts @@ -139,9 +139,6 @@ describe('search providers', () => { const stubResolveRepo = sinon.stub(api, 'resolveRepo') stubResolveRepo.callsFake(repo => Promise.resolve({ name: repo, isFork, isArchived, id })) - const stubHasLocalCodeIntelField = sinon.stub(api, 'hasLocalCodeIntelField') - stubHasLocalCodeIntelField.callsFake(() => Promise.resolve(true)) - const stubFindSymbol = sinon.stub(api, 'findLocalSymbol') stubFindSymbol.callsFake(() => Promise.resolve(undefined)) diff --git a/client/shared/src/codeintel/legacy-extensions/util/api.ts b/client/shared/src/codeintel/legacy-extensions/util/api.ts index 7975a195ab9b7..20c251ff6ba2c 100644 --- a/client/shared/src/codeintel/legacy-extensions/util/api.ts +++ b/client/shared/src/codeintel/legacy-extensions/util/api.ts @@ -1,4 +1,3 @@ -import { once } from 'lodash' import gql from 'tagged-template-noop' import { isErrorLike } from '@sourcegraph/common' @@ -86,7 +85,7 @@ export class API { } const metaRequest = (async (name: string): Promise<RepoMeta> => { - const queryWithFork = gql` + const query = gql` query LegacyResolveRepo($name: String!) { repository(name: $name) { id @@ -97,14 +96,6 @@ export class API { } ` - const queryWithoutFork = gql` - query LegacyResolveRepo2($name: String!) { - repository(name: $name) { - name - } - } - ` - interface Response { repository: { id: string @@ -114,7 +105,7 @@ export class API { } } - const data = await queryGraphQL<Response>((await this.hasForkField()) ? queryWithFork : queryWithoutFork, { + const data = await queryGraphQL<Response>(query, { name, }) @@ -131,107 +122,6 @@ export class API { return metaRequest } - /** - * Determines via introspection if the GraphQL API has isFork field on the Repository type. - * - * TODO(efritz) - Remove this when we no longer need to support pre-3.15 instances. - */ - private async hasForkField(): Promise<boolean> { - const introspectionQuery = gql` - query LegacyRepositoryIntrospection { - __type(name: "Repository") { - fields { - name - } - } - } - ` - - interface IntrospectionResponse { - __type: { fields: { name: string }[] } - } - - return (await queryGraphQL<IntrospectionResponse>(introspectionQuery)).__type.fields.some( - field => field.name === 'isFork' - ) - } - - /** - * Determines via introspection if the GraphQL API has local code intelligence available - * - * TODO(chrismwendt) - Remove this when we no longer need to support versions without local code - * intelligence - */ - public hasLocalCodeIntelField = once(async () => { - const introspectionQuery = gql` - query LegacyLocalCodeIntelIntrospectionQuery { - __type(name: "GitBlob") { - fields { - name - } - } - } - ` - - interface IntrospectionResponse { - __type: { fields: { name: string }[] } - } - - return (await queryGraphQL<IntrospectionResponse>(introspectionQuery)).__type.fields.some( - field => field.name === 'localCodeIntel' - ) - }) - - /** - * Determines via introspection if the GraphQL API has symbol info available - * - * TODO(chrismwendt) - Remove this when we no longer need to support versions without symbol info - */ - public hasSymbolInfo = once(async () => { - const introspectionQuery = gql` - query LegacySymbolInfoIntrospectionQuery { - __type(name: "GitBlob") { - fields { - name - } - } - } - ` - - interface IntrospectionResponse { - __type: { fields: { name: string }[] } - } - - return (await queryGraphQL<IntrospectionResponse>(introspectionQuery)).__type.fields.some( - field => field.name === 'symbolInfo' - ) - }) - - /** - * Determines via introspection if the GraphQL API has symbolInfo.range available - * - * TODO(chrismwendt) - Remove this when we no longer need to support versions without symbolInfo.range - */ - public hasSymbolLocationRange = once(async () => { - const introspectionQuery = gql` - query LegacySymbolLocationRangeIntrospectionQuery { - __type(name: "SymbolLocation") { - fields { - name - } - } - } - ` - - interface IntrospectionResponse { - __type: { fields: { name: string }[] } - } - - return (await queryGraphQL<IntrospectionResponse>(introspectionQuery)).__type.fields.some( - field => field.name === 'range' - ) - }) - public fetchLocalCodeIntelPayload = cache( async ({ repo, commit, path }: RepoCommitPath): Promise<LocalCodeIntelPayload | undefined> => { const vars = { repository: repo, commit, path } @@ -260,10 +150,6 @@ export class API { document: sourcegraph.TextDocument, position: sourcegraph.Position ): Promise<LocalSymbol | undefined> => { - if (!(await this.hasLocalCodeIntelField())) { - return - } - const { repo, commit, path } = parseGitURI(document.uri) const payload = await this.fetchLocalCodeIntelPayload({ repo, commit, path }) @@ -291,20 +177,12 @@ export class API { document: sourcegraph.TextDocument, position: sourcegraph.Position ): Promise<SymbolInfoCanonical | undefined> => { - if (!(await this.hasSymbolInfo())) { - return - } - - const query = (await this.hasSymbolLocationRange()) - ? symbolInfoDefinitionQueryWithRange - : symbolInfoDefinitionQueryWithoutRange - const { repo, commit, path } = parseGitURI(document.uri) const vars = { repository: repo, commit, path, line: position.line, character: position.character } const response = await (async (): Promise<SymbolInfoResponse> => { try { - return await queryGraphQL<SymbolInfoResponse>(query, vars) + return await queryGraphQL<SymbolInfoResponse>(symbolInfoDefinitionQuery, vars) } catch (error) { if (isKnownSquirrelErrorLike(error)) { return { repository: null } @@ -373,34 +251,6 @@ export class API { }) return data.search.results.results.filter(isDefined) } - - /** - * Determines via introspection if the GraphQL API supports stencils - * - * TODO(chrismwendt) - Remove this when we no longer need to support Sourcegraph versions that don't - * have stencil support - */ - public async hasStencils(): Promise<boolean> { - const introspectionQuery = gql` - query LegacyStencilIntrospectionQuery { - __type(name: "GitBlobLSIFData") { - fields { - name - } - } - } - ` - - interface IntrospectionResponse { - __type: { fields: { name: string }[] } - } - - return Boolean( - (await queryGraphQL<IntrospectionResponse>(introspectionQuery)).__type?.fields.some( - field => field.name === 'stencil' - ) - ) - } } function buildSearchQuery(fileLocal: boolean): string { @@ -577,29 +427,7 @@ const symbolInfoFlexibleToCanonical = (flexible: SymbolInfoFlexible): SymbolInfo hover: flexible.hover, }) -const symbolInfoDefinitionQueryWithoutRange = gql` - query LegacySymbolInfo($repository: String!, $commit: String!, $path: String!, $line: Int!, $character: Int!) { - repository(name: $repository) { - commit(rev: $commit) { - blob(path: $path) { - symbolInfo(line: $line, character: $character) { - definition { - repo - commit - path - line - character - length - } - hover - } - } - } - } - } -` - -const symbolInfoDefinitionQueryWithRange = gql` +const symbolInfoDefinitionQuery = gql` query LegacySymbolInfo2($repository: String!, $commit: String!, $path: String!, $line: Int!, $character: Int!) { repository(name: $repository) { commit(rev: $commit) { diff --git a/client/web/src/integration/codemirror-blob-view.test.ts b/client/web/src/integration/codemirror-blob-view.test.ts index 364a6bff9d5c5..ece99652335be 100644 --- a/client/web/src/integration/codemirror-blob-view.test.ts +++ b/client/web/src/integration/codemirror-blob-view.test.ts @@ -372,7 +372,7 @@ function createBlobPageData<T extends BlobInfo>({ WebGraphQlOperations, 'ResolveRepoRev' | 'FileTreeEntries' | 'FileExternalLinks' | 'Blob' | 'FileNames' > & - Pick<SharedGraphQlOperations, 'TreeEntries' | 'LegacyRepositoryIntrospection' | 'LegacyResolveRepo2'> + Pick<SharedGraphQlOperations, 'TreeEntries'> filePaths: { [k in keyof T]: string } } { const repositorySourcegraphUrl = `/${repoName}` @@ -401,21 +401,6 @@ function createBlobPageData<T extends BlobInfo>({ }, }, }), - LegacyRepositoryIntrospection: () => ({ - __type: { - fields: [ - { - name: 'noFork', - }, - ], - }, - }), - LegacyResolveRepo2: () => ({ - repository: { - id: repoName, - name: repoName, - }, - }), }, } } From f21c04dd7e430ac5416e0a2c4af19d141a7710f5 Mon Sep 17 00:00:00 2001 From: Shivasurya <s.shivasurya@gmail.com> Date: Tue, 28 Nov 2023 10:31:27 -0500 Subject: [PATCH 187/222] Remove Access Token Format Change Feature Flag (#58534) * Removed feature flag for access token format change * fix testcase --- internal/accesstoken/personal_access_token.go | 18 +++--- .../accesstoken/personal_access_token_test.go | 55 +++---------------- internal/database/access_tokens.go | 8 +-- 3 files changed, 18 insertions(+), 63 deletions(-) diff --git a/internal/accesstoken/personal_access_token.go b/internal/accesstoken/personal_access_token.go index 6b7bc21589e02..ffbd1fc3ec6c1 100644 --- a/internal/accesstoken/personal_access_token.go +++ b/internal/accesstoken/personal_access_token.go @@ -39,7 +39,7 @@ func ParsePersonalAccessToken(token string) (string, error) { // GeneratePersonalAccessToken generates a new personal access token. // It returns the full token string, and the byte representation of the access token. // Personal access tokens have the form: sgp_<instance-identifier>_<token> -func GeneratePersonalAccessToken(includeInstanceIdentifier bool, licenseKey string, isDevInstance bool) (string, [20]byte, error) { +func GeneratePersonalAccessToken(licenseKey string, isDevInstance bool) (string, [20]byte, error) { var b [20]byte if _, err := rand.Read(b[:]); err != nil { return "", b, err @@ -48,17 +48,15 @@ func GeneratePersonalAccessToken(includeInstanceIdentifier bool, licenseKey stri // Include part of the hashed license key in the token, to allow us to tie tokens back to an instance // If no license key is set or this is a dev instance, use a placeholder value var instanceIdentifier string - if includeInstanceIdentifier { - if isDevInstance || licenseKey == "" { - instanceIdentifier = LocalInstanceIdentifier - } else { - h := hmac.New(sha256.New, []byte(InstanceIdentifierHmacKey)) - h.Write([]byte(licenseKey)) + if isDevInstance || licenseKey == "" { + instanceIdentifier = LocalInstanceIdentifier + } else { + h := hmac.New(sha256.New, []byte(InstanceIdentifierHmacKey)) + h.Write([]byte(licenseKey)) - instanceIdentifier = hex.EncodeToString(h.Sum(nil))[:InstanceIdentifierLength] - } - instanceIdentifier = instanceIdentifier + "_" + instanceIdentifier = hex.EncodeToString(h.Sum(nil))[:InstanceIdentifierLength] } + instanceIdentifier = instanceIdentifier + "_" token := fmt.Sprintf("%s%s%s", PersonalAccessTokenPrefix, instanceIdentifier, hex.EncodeToString(b[:])) diff --git a/internal/accesstoken/personal_access_token_test.go b/internal/accesstoken/personal_access_token_test.go index 4a9b36f135c46..de8ce573e246d 100644 --- a/internal/accesstoken/personal_access_token_test.go +++ b/internal/accesstoken/personal_access_token_test.go @@ -93,9 +93,8 @@ func TestParsePersonalAccessToken(t *testing.T) { func TestGeneratePersonalAccessToken(t *testing.T) { type args struct { - licenseKey string - isDevInstance bool - includeInstanceIdentifier bool + licenseKey string + isDevInstance bool } tests := []struct { name string @@ -108,9 +107,8 @@ func TestGeneratePersonalAccessToken(t *testing.T) { { name: "valid token generation 1", args: args{ - licenseKey: "abcdef1234abcdef1234abcdef1234abcdef1234", - isDevInstance: false, - includeInstanceIdentifier: true, + licenseKey: "abcdef1234abcdef1234abcdef1234abcdef1234", + isDevInstance: false, }, wantTokenPrefix: "sgp_5e37db464e9301ea_", wantTokenLength: 61, @@ -119,9 +117,8 @@ func TestGeneratePersonalAccessToken(t *testing.T) { { name: "valid token generation 2", args: args{ - licenseKey: "foobar", - isDevInstance: false, - includeInstanceIdentifier: true, + licenseKey: "foobar", + isDevInstance: false, }, wantTokenPrefix: "sgp_8844b0e0e754ec66_", wantTokenLength: 61, @@ -130,51 +127,17 @@ func TestGeneratePersonalAccessToken(t *testing.T) { { name: "valid token generation, dev instance", args: args{ - licenseKey: "abcdef1234abcdef1234abcdef1234abcdef1234", - isDevInstance: true, - includeInstanceIdentifier: true, + licenseKey: "abcdef1234abcdef1234abcdef1234abcdef1234", + isDevInstance: true, }, wantTokenPrefix: "sgp_local_", wantTokenLength: 50, wantErr: false, }, - { - name: "valid token generation, no identifier", - args: args{ - licenseKey: "abcdef1234abcdef1234abcdef1234abcdef1234", - isDevInstance: false, - includeInstanceIdentifier: false, - }, - wantTokenPrefix: "sgp_", - wantTokenLength: 44, - wantErr: false, - }, - { - name: "valid token generation, no identifier", - args: args{ - licenseKey: "", - isDevInstance: false, - includeInstanceIdentifier: false, - }, - wantTokenPrefix: "sgp_", - wantTokenLength: 44, - wantErr: false, - }, - { - name: "valid token generation, no identifier", - args: args{ - licenseKey: "", - isDevInstance: true, - includeInstanceIdentifier: false, - }, - wantTokenPrefix: "sgp_", - wantTokenLength: 44, - wantErr: false, - }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - token, _, err := GeneratePersonalAccessToken(tt.args.includeInstanceIdentifier, tt.args.licenseKey, tt.args.isDevInstance) + token, _, err := GeneratePersonalAccessToken(tt.args.licenseKey, tt.args.isDevInstance) if (err != nil) != tt.wantErr { t.Errorf("GeneratePersonalAccessToken() error = %v, wantErr %v", err, tt.wantErr) return diff --git a/internal/database/access_tokens.go b/internal/database/access_tokens.go index d5f71f6cf5065..c58ef913cb0d2 100644 --- a/internal/database/access_tokens.go +++ b/internal/database/access_tokens.go @@ -16,7 +16,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/actor" "github.com/sourcegraph/sourcegraph/internal/conf" "github.com/sourcegraph/sourcegraph/internal/database/basestore" - "github.com/sourcegraph/sourcegraph/internal/featureflag" "github.com/sourcegraph/sourcegraph/internal/hashutil" "github.com/sourcegraph/sourcegraph/internal/licensing" "github.com/sourcegraph/sourcegraph/lib/errors" @@ -168,11 +167,6 @@ func (s *accessTokenStore) createToken(ctx context.Context, subjectUserID int32, return 0, "", errors.New("access tokens without scopes are not supported") } - // Feature flag new token format - // Disable by default until all Cody extensions support the new format - flags := featureflag.FromContext(ctx) - includeInstanceIdentifier := flags.GetBoolOr("access-tokens-include-instance-identifier", false) - config := conf.Get().SiteConfig() var isDevInstance bool @@ -183,7 +177,7 @@ func (s *accessTokenStore) createToken(ctx context.Context, subjectUserID int32, isDevInstance = licensing.IsLicensePublicKeyOverridden() } - token, b, err := accesstoken.GeneratePersonalAccessToken(includeInstanceIdentifier, config.LicenseKey, isDevInstance) + token, b, err := accesstoken.GeneratePersonalAccessToken(config.LicenseKey, isDevInstance) if err != nil { return 0, "", err } From 0fee5e53670430869a937c38ab159dde1a87f0c5 Mon Sep 17 00:00:00 2001 From: Bolaji Olajide <25608335+BolajiOlajide@users.noreply.github.com> Date: Tue, 28 Nov 2023 16:37:23 +0100 Subject: [PATCH 188/222] code-search: add documentation for rejecting unverified commits (#58600) update documentation --- doc/admin/config/batch_changes.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/doc/admin/config/batch_changes.md b/doc/admin/config/batch_changes.md index b5c411f6e8e70..ca7e15923eea0 100644 --- a/doc/admin/config/batch_changes.md +++ b/doc/admin/config/batch_changes.md @@ -282,7 +282,20 @@ Batch Changes uses the tokens from GitHub Apps in the following ways: Installation access tokens are short-lived, non-refreshable tokens that give Sourcegraph access to the repositories the GitHub App has been given access to. Sourcegraph uses these tokens to read and write commits to repository branches. These tokens expire after 1 hour. -### Custom Certificates +### Rejecting Unverified Commits + +<span class="badge badge-note">Sourcegraph 5.2.4+</span> + +Admins can configure Batch Changes to error when it creates commits that are not signed. This can be done by enabling the `batchChanges.rejectUnverifiedCommits` setting in the site configuration: + +```json +{ + ..., + "batchChanges.rejectUnverifiedCommits": true +} +``` + +## Custom Certificates <span class="badge badge-note">Sourcegraph 5.1.5+</span> @@ -301,7 +314,7 @@ in the **Site configuration** with your certificate(s). } ``` -### Ownership +## Ownership When a user is deleted, their Batch Changes become inaccessible in the UI but the data is not permanently deleted. This allows recovering the Batch Changes if the user is restored. From 2bade2f4fb82edaf96f3eeebc24fc1eb2753ae88 Mon Sep 17 00:00:00 2001 From: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> Date: Tue, 28 Nov 2023 15:47:41 +0000 Subject: [PATCH 189/222] bazel: use newer rules_go, rules_go and gazelle (#58610) * bump rules * update rules_go, rules_buf, gazelle * move proto deps around and update googleapis genproto * gazelle update repos * remove gazelle:resolve directives for @go_googleapis * define rules_proto * gazelle update repos again * udpate github.com/grpc-ecosystem/grpc-gateway to 2.16.1 * 2.16.1 fixed to go_googleapis change so we don't have to patch it anymore * remove use of `@go_googleapis` and replaced it with @org_golang_google_genproto_googleapis_api * remove patching of grpc_gateway_v2 as it is not needed * bazel configure * go mod tidy --- WORKSPACE | 96 +- cmd/worker/internal/executorqueue/BUILD.bazel | 7 +- deps.bzl | 920 ++++--------- go.mod | 28 +- go.sum | 60 +- .../BUILD.bazel | 1 - .../README.md | 36 - .../grpc_gateway.patch | 1226 ----------------- 8 files changed, 334 insertions(+), 2040 deletions(-) delete mode 100644 third_party/com_github_grpc_ecosystem_grpc_gateway_v2/BUILD.bazel delete mode 100644 third_party/com_github_grpc_ecosystem_grpc_gateway_v2/README.md delete mode 100644 third_party/com_github_grpc_ecosystem_grpc_gateway_v2/grpc_gateway.patch diff --git a/WORKSPACE b/WORKSPACE index e8259b10aac94..d6cb8abfa6b28 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -51,10 +51,19 @@ http_archive( http_archive( name = "io_bazel_rules_go", - sha256 = "51dc53293afe317d2696d4d6433a4c33feedb7748a9e352072e2ec3c0dafd2c6", + sha256 = "d6ab6b57e48c09523e93050f13698f708428cfd5e619252e369d377af6597707", urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.40.1/rules_go-v0.40.1.zip", - "https://github.com/bazelbuild/rules_go/releases/download/v0.40.1/rules_go-v0.40.1.zip", + "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.43.0/rules_go-v0.43.0.zip", + "https://github.com/bazelbuild/rules_go/releases/download/v0.43.0/rules_go-v0.43.0.zip", + ], +) + +http_archive( + name = "rules_proto", + sha256 = "dc3fb206a2cb3441b485eb1e423165b231235a1ea9b031b4433cf7bc1fa460dd", + strip_prefix = "rules_proto-5.3.0-21.7", + urls = [ + "https://github.com/bazelbuild/rules_proto/archive/refs/tags/5.3.0-21.7.tar.gz", ], ) @@ -67,19 +76,19 @@ http_archive( http_archive( name = "rules_buf", - sha256 = "523a4e06f0746661e092d083757263a249fedca535bd6dd819a8c50de074731a", - strip_prefix = "rules_buf-0.1.1", + sha256 = "bc2488ee497c3fbf2efee19ce21dceed89310a08b5a9366cc133dd0eb2118498", + strip_prefix = "rules_buf-0.2.0", urls = [ - "https://github.com/bufbuild/rules_buf/archive/refs/tags/v0.1.1.zip", + "https://github.com/bufbuild/rules_buf/archive/refs/tags/v0.2.0.zip", ], ) http_archive( name = "bazel_gazelle", - sha256 = "ecba0f04f96b4960a5b250c8e8eeec42281035970aa8852dda73098274d14a1d", + sha256 = "b7387f72efb59f876e4daae42f1d3912d0d45563eac7cb23d1de0b094ab588cf", urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.29.0/bazel-gazelle-v0.29.0.tar.gz", - "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.29.0/bazel-gazelle-v0.29.0.tar.gz", + "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.34.0/bazel-gazelle-v0.34.0.tar.gz", + "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.34.0/bazel-gazelle-v0.34.0.tar.gz", ], ) @@ -230,32 +239,8 @@ esbuild_register_toolchains( ) # Go toolchain setup -load("@rules_proto_grpc//:repositories.bzl", "rules_proto_grpc_repos", "rules_proto_grpc_toolchains") - -rules_proto_grpc_toolchains() - -rules_proto_grpc_repos() - -load("@rules_proto_grpc//doc:repositories.bzl", rules_proto_grpc_doc_repos = "doc_repos") - -rules_proto_grpc_doc_repos() - -load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains") - -rules_proto_dependencies() - -rules_proto_toolchains() - -load("@rules_buf//buf:repositories.bzl", "rules_buf_dependencies", "rules_buf_toolchains") - -rules_buf_dependencies() - -rules_buf_toolchains(version = "v1.11.0") - -load("@rules_buf//gazelle/buf:repositories.bzl", "gazelle_buf_dependencies") - -gazelle_buf_dependencies() +load("@rules_buf//buf:defs.bzl", "buf_dependencies") load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository") load("//:linter_deps.bzl", "linter_dependencies") @@ -276,7 +261,7 @@ go_repository( build_file_proto_mode = "disable_global", importpath = "google.golang.org/protobuf", sum = "h1:7QBf+IK2gx70Ap/hDsOmam3GE0v9HicjfEdAxE62UoM=", - version = "v1.29.1", + version = "v1.31.1", ) # keep # Pin protoc-gen-go-grpc to 1.3.0 @@ -296,17 +281,13 @@ go_rules_dependencies() go_register_toolchains( nogo = "@//:sg_nogo", - version = "1.20.10", + version = "1.21.4", ) linter_dependencies() gazelle_dependencies() -load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") - -protobuf_deps() - # rust toolchain setup load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains", "rust_repository_set") @@ -411,3 +392,38 @@ buildifier_prebuilt_deps() load("@buildifier_prebuilt//:defs.bzl", "buildifier_prebuilt_register_toolchains") buildifier_prebuilt_register_toolchains() + +load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains") + +rules_proto_dependencies() + +rules_proto_toolchains() + +load("@rules_proto_grpc//:repositories.bzl", "rules_proto_grpc_repos", "rules_proto_grpc_toolchains") +load("@rules_proto_grpc//go:repositories.bzl", rules_proto_grpc_go_repos = "go_repos") +load("@rules_proto_grpc//doc:repositories.bzl", rules_proto_grpc_doc_repos = "doc_repos") + +rules_proto_grpc_toolchains() + +rules_proto_grpc_repos() + +rules_proto_grpc_go_repos() + +rules_proto_grpc_doc_repos() + +load("@rules_buf//buf:repositories.bzl", "rules_buf_dependencies", "rules_buf_toolchains") + +rules_buf_dependencies() + +rules_buf_toolchains( + sha256 = "05dfb45d2330559d258e1230f5a25e154f0a328afda2a434348b5ba4c124ece7", + version = "v1.28.1", +) + +load("@rules_buf//gazelle/buf:repositories.bzl", "gazelle_buf_dependencies") + +gazelle_buf_dependencies() + +load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") + +protobuf_deps() diff --git a/cmd/worker/internal/executorqueue/BUILD.bazel b/cmd/worker/internal/executorqueue/BUILD.bazel index 3ce8cddc59583..4bde4c5ac8ab8 100644 --- a/cmd/worker/internal/executorqueue/BUILD.bazel +++ b/cmd/worker/internal/executorqueue/BUILD.bazel @@ -1,9 +1,6 @@ load("//dev:go_defs.bzl", "go_test") load("@io_bazel_rules_go//go:def.bzl", "go_library") -# gazelle:resolve go google.golang.org/genproto/googleapis/api/metric @go_googleapis//google/api:metric_go_proto -# gazelle:resolve go google.golang.org/genproto/googleapis/api/monitoredres @go_googleapis//google/api:monitoredres_go_proto - go_library( name = "executorqueue", srcs = [ @@ -38,9 +35,9 @@ go_library( "@com_github_inconshreveable_log15//:log15", "@com_google_cloud_go_monitoring//apiv3/v2:apiv3", "@com_google_cloud_go_monitoring//apiv3/v2/monitoringpb", - "@go_googleapis//google/api:metric_go_proto", - "@go_googleapis//google/api:monitoredres_go_proto", "@org_golang_google_api//option", + "@org_golang_google_genproto_googleapis_api//metric", + "@org_golang_google_genproto_googleapis_api//monitoredres", "@org_golang_google_protobuf//types/known/timestamppb", ], ) diff --git a/deps.bzl b/deps.bzl index d2716e108a565..320b609fd0901 100644 --- a/deps.bzl +++ b/deps.bzl @@ -16,7 +16,6 @@ def go_dependencies(): sum = "h1:tdpHgTbmbvEIARu+bixzmleMi14+3imnpoFXz+Qzjp4=", version = "v1.31.0-20230802163732-1c33ebd9ecfa.1", ) - go_repository( name = "cc_mvdan_gofumpt", build_file_proto_mode = "disable_global", @@ -24,7 +23,6 @@ def go_dependencies(): sum = "h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM=", version = "v0.4.0", ) - go_repository( name = "cc_mvdan_xurls_v2", build_file_proto_mode = "disable_global", @@ -32,7 +30,6 @@ def go_dependencies(): sum = "h1:tzxjVAj+wSBmDcF6zBB7/myTy3gX9xvi8Tyr28AuQgc=", version = "v2.4.0", ) - go_repository( name = "co_honnef_go_tools", build_file_proto_mode = "disable_global", @@ -96,7 +93,6 @@ def go_dependencies(): sum = "h1:yczvlwMsfcVu/JtejqfrLwXuSP0yZFhmcss3caEvHw8=", version = "v0.17.2", ) - go_repository( name = "com_github_acomagu_bufpipe", build_file_proto_mode = "disable_global", @@ -111,7 +107,6 @@ def go_dependencies(): sum = "h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU=", version = "v0.0.0-20230811130428-ced1acdcaa24", ) - go_repository( name = "com_github_agext_levenshtein", build_file_proto_mode = "disable_global", @@ -126,7 +121,6 @@ def go_dependencies(): sum = "h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8=", version = "v1.1.1", ) - go_repository( name = "com_github_ajstarks_svgo", build_file_proto_mode = "disable_global", @@ -134,7 +128,6 @@ def go_dependencies(): sum = "h1:slYM766cy2nI3BwyRiyQj/Ud48djTMtMebDqepE95rw=", version = "v0.0.0-20211024235047-1546f124cd8b", ) - go_repository( name = "com_github_alecthomas_assert_v2", build_file_proto_mode = "disable_global", @@ -142,7 +135,6 @@ def go_dependencies(): sum = "h1:f6L/b7KE2bfA+9O4FL3CM/xJccDEwPVYd5fALBiuwvw=", version = "v2.2.0", ) - go_repository( name = "com_github_alecthomas_chroma", build_file_proto_mode = "disable_global", @@ -157,7 +149,6 @@ def go_dependencies(): sum = "h1:Loe2ZjT5x3q1bcWwemqyqEi8p11/IV/ncFCeLYDpWC4=", version = "v2.4.0", ) - go_repository( name = "com_github_alecthomas_kingpin", build_file_proto_mode = "disable_global", @@ -172,7 +163,6 @@ def go_dependencies(): sum = "h1:ENn2e1+J3k09gyj2shc0dHr/yjaWSHRlrJ4DPMevDqE=", version = "v0.1.0", ) - go_repository( name = "com_github_alecthomas_template", build_file_proto_mode = "disable_global", @@ -194,7 +184,6 @@ def go_dependencies(): sum = "h1:lDWZAXxpAnZUq4qwb86p/3rIJJ2Li81EoMbTMujhVa0=", version = "v1.4.2", ) - go_repository( name = "com_github_alexflint_go_scalar", build_file_proto_mode = "disable_global", @@ -202,7 +191,6 @@ def go_dependencies(): sum = "h1:NGupf1XV/Xb04wXskDFzS0KWOLH632W/EO4fAFi+A70=", version = "v1.0.0", ) - go_repository( name = "com_github_amit7itz_goset", build_file_proto_mode = "disable_global", @@ -210,7 +198,6 @@ def go_dependencies(): sum = "h1:LTn5swPM1a0vFr3yluIQHjvNTfbp7z87baV9x2ugS+4=", version = "v1.0.1", ) - go_repository( name = "com_github_andres_erbsen_clock", build_file_proto_mode = "disable_global", @@ -253,7 +240,6 @@ def go_dependencies(): sum = "h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=", version = "v0.0.0-20200514113438-38f4b401e2be", ) - go_repository( name = "com_github_antihax_optional", build_file_proto_mode = "disable_global", @@ -268,7 +254,6 @@ def go_dependencies(): sum = "h1:goHVqTbFX3AIo0tzGr14pgfAW2ZfPChKO21Z9MGf/gk=", version = "v4.0.0-20230512164433-5d1fd1a340c9", ) - go_repository( name = "com_github_antonmedv_expr", build_file_proto_mode = "disable_global", @@ -276,7 +261,6 @@ def go_dependencies(): sum = "h1:uzMxTbpHpOqV20RrNvBKHGojNwdRpcrgoFtgF4J8xtg=", version = "v1.10.5", ) - go_repository( name = "com_github_aokoli_goutils", build_file_proto_mode = "disable_global", @@ -305,7 +289,6 @@ def go_dependencies(): sum = "h1:ECIpSn0adcYNsBfSRwdDdz9fWlL+S/6EUd9+irwkBgU=", version = "v1.0.1", ) - go_repository( name = "com_github_arbovm_levenshtein", build_file_proto_mode = "disable_global", @@ -313,7 +296,6 @@ def go_dependencies(): sum = "h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q=", version = "v0.0.0-20160628152529-48b4e1c0c4d0", ) - go_repository( name = "com_github_armon_circbuf", build_file_proto_mode = "disable_global", @@ -321,7 +303,6 @@ def go_dependencies(): sum = "h1:7Ip0wMmLHLRJdrloDxZfhMm0xrLXZS8+COSu2bXmEQs=", version = "v0.0.0-20190214190532-5111143e8da2", ) - go_repository( name = "com_github_armon_consul_api", build_file_proto_mode = "disable_global", @@ -350,7 +331,6 @@ def go_dependencies(): sum = "h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=", version = "v0.0.0-20160902184237-e75332964ef5", ) - go_repository( name = "com_github_asaskevich_govalidator", build_file_proto_mode = "disable_global", @@ -435,7 +415,6 @@ def go_dependencies(): sum = "h1:C21IDZCm9Yu5xqjb3fKmxDoYvJXtw1DNlOmLZEIlY1M=", version = "v1.0.1", ) - go_repository( name = "com_github_aws_aws_sdk_go_v2_service_appconfig", build_file_proto_mode = "disable_global", @@ -457,7 +436,6 @@ def go_dependencies(): sum = "h1:iEqboXubLCABYFoClUyX/Bv8DfhmV39hPKdRbs21/kI=", version = "v1.11.0", ) - go_repository( name = "com_github_aws_aws_sdk_go_v2_service_internal_accept_encoding", build_file_proto_mode = "disable_global", @@ -472,7 +450,6 @@ def go_dependencies(): sum = "h1:9LSZqt4v1JiehyZTrQnRFf2mY/awmyYNNY/b7zqtduU=", version = "v1.1.5", ) - go_repository( name = "com_github_aws_aws_sdk_go_v2_service_internal_presigned_url", build_file_proto_mode = "disable_global", @@ -529,7 +506,6 @@ def go_dependencies(): sum = "h1:ZvOKkGKQBZC8qrlM3qi2hXnbnqI64o3WtVw5ZVd/q9s=", version = "v1.84.0", ) - go_repository( name = "com_github_aws_smithy_go", build_file_proto_mode = "disable_global", @@ -544,7 +520,6 @@ def go_dependencies(): sum = "h1:0NmehRCgyk5rljDQLKUO+cRJCnduDyn11+zGZIc9Z48=", version = "v0.0.0-20150809002002-ad15bcfc95a0", ) - go_repository( name = "com_github_aymerick_douceur", build_file_proto_mode = "disable_global", @@ -552,7 +527,6 @@ def go_dependencies(): sum = "h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=", version = "v0.2.0", ) - go_repository( name = "com_github_azure_azure_sdk_for_go", build_file_proto_mode = "disable_global", @@ -567,7 +541,6 @@ def go_dependencies(): sum = "h1:x7fb22Q43h2DRFCvp9rAua8PoV3gwtl1bK5+pihnihA=", version = "v0.3.0", ) - go_repository( name = "com_github_azure_azure_sdk_for_go_sdk_azcore", build_file_proto_mode = "disable_global", @@ -596,7 +569,6 @@ def go_dependencies(): sum = "h1:QSdcrd/UFJv6Bp/CfoVf2SrENpFn9P6Yh8yb+xNhYMM=", version = "v0.4.1", ) - go_repository( name = "com_github_azure_go_ansiterm", build_file_proto_mode = "disable_global", @@ -625,7 +597,6 @@ def go_dependencies(): sum = "h1:jjQnVFXPfekaqb8vIsv2G1lxshoW+oGv4MDlhRtnYZk=", version = "v0.9.21", ) - go_repository( name = "com_github_azure_go_autorest_autorest_date", build_file_proto_mode = "disable_global", @@ -640,7 +611,6 @@ def go_dependencies(): sum = "h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk=", version = "v0.4.1", ) - go_repository( name = "com_github_azure_go_autorest_autorest_to", build_file_proto_mode = "disable_global", @@ -683,7 +653,6 @@ def go_dependencies(): sum = "h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk=", version = "v1.1.1", ) - go_repository( name = "com_github_bahlo_generic_list_go", build_file_proto_mode = "disable_global", @@ -698,7 +667,6 @@ def go_dependencies(): sum = "h1:mE3dGGkTmpKtT4Z+88t8RStG40yN9T+kFEGj2PZFSzA=", version = "v1.0.0", ) - go_repository( name = "com_github_beevik_etree", build_file_proto_mode = "disable_global", @@ -706,7 +674,6 @@ def go_dependencies(): sum = "h1:T0xke/WvNtMoCqgzPhkX2r4rjY3GDZFi+FjpRZY2Jbs=", version = "v1.1.0", ) - go_repository( name = "com_github_benbjohnson_clock", build_file_proto_mode = "disable_global", @@ -749,7 +716,6 @@ def go_dependencies(): sum = "h1:w/jqZtC9YD4DS/Vp9GhWfWcCpuAL58oTnLoI8vE9YHU=", version = "v0.0.4", ) - go_repository( name = "com_github_blevesearch_bleve_index_api", build_file_proto_mode = "disable_global", @@ -869,7 +835,6 @@ def go_dependencies(): sum = "h1:gPypJ5xD31uhX6Tf54sDPUOBXTqKH4c9aPY66CyQrS0=", version = "v1.3.4", ) - go_repository( name = "com_github_boj_redistore", build_file_proto_mode = "disable_global", @@ -877,7 +842,6 @@ def go_dependencies(): sum = "h1:RmdPFa+slIr4SCBg4st/l/vZWVe9QJKMXGO60Bxbe04=", version = "v0.0.0-20180917114910-cd5dcc76aeff", ) - go_repository( name = "com_github_boombuler_barcode", build_file_proto_mode = "disable_global", @@ -885,7 +849,6 @@ def go_dependencies(): sum = "h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs=", version = "v1.0.1", ) - go_repository( name = "com_github_bradfitz_gomemcache", build_file_proto_mode = "disable_global", @@ -893,7 +856,6 @@ def go_dependencies(): sum = "h1:L/QXpzIa3pOvUGt1D1lA5KjYhPBAN/3iWdP7xeFS9F0=", version = "v0.0.0-20190913173617-a41fca850d0b", ) - go_repository( name = "com_github_bradleyjkemp_cupaloy_v2", build_file_proto_mode = "disable_global", @@ -901,7 +863,6 @@ def go_dependencies(): sum = "h1:knToPYa2xtfg42U3I6punFEjaGFKWQRXJwj0JTv4mTs=", version = "v2.6.0", ) - go_repository( name = "com_github_bshuster_repo_logrus_logstash_hook", build_file_proto_mode = "disable_global", @@ -923,7 +884,6 @@ def go_dependencies(): sum = "h1:LhQm+AFcgV2M0WyKroMASzAzCAJVpAxQXv4SaI9a69Y=", version = "v1.26.0", ) - go_repository( name = "com_github_bufbuild_buf", build_file_proto_mode = "disable_global", @@ -938,7 +898,6 @@ def go_dependencies(): sum = "h1:pJr07sYhliyfj/STAM7hU4J3FKpVeLVKvOBmOTN8j+s=", version = "v0.2.1", ) - go_repository( name = "com_github_buger_jsonparser", build_file_proto_mode = "disable_global", @@ -981,7 +940,6 @@ def go_dependencies(): sum = "h1:chdLUSpiOj/A4v3dzxyOqixXI6aw7IDA6Dk77FXsvNU=", version = "v3.7.0", ) - go_repository( name = "com_github_burntsushi_toml", build_file_proto_mode = "disable_global", @@ -1010,7 +968,6 @@ def go_dependencies(): sum = "h1:6+ZFm0flnudZzdSE0JxlhR2hKnGPcNB35BjQf4RYQDY=", version = "v0.0.0-20220606134207-859f65c6625b", ) - go_repository( name = "com_github_caddyserver_certmagic", build_file_proto_mode = "disable_global", @@ -1018,7 +975,6 @@ def go_dependencies(): sum = "h1:o30seC1T/dBqBCNNGNHWwj2i5/I/FMjBbTAhjADP3nE=", version = "v0.17.2", ) - go_repository( name = "com_github_cenkalti_backoff", build_file_proto_mode = "disable_global", @@ -1026,7 +982,6 @@ def go_dependencies(): sum = "h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=", version = "v2.2.1+incompatible", ) - go_repository( name = "com_github_cenkalti_backoff_v4", build_file_proto_mode = "disable_global", @@ -1041,7 +996,6 @@ def go_dependencies(): sum = "h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g=", version = "v0.4.1", ) - go_repository( name = "com_github_cespare_xxhash", build_file_proto_mode = "disable_global", @@ -1063,7 +1017,6 @@ def go_dependencies(): sum = "h1:wu15ykPdB7X6chxugG/NNfDUbyyrCLV9XBalj5wdu3g=", version = "v0.5.0", ) - go_repository( name = "com_github_chi_middleware_proxy", build_file_proto_mode = "disable_global", @@ -1071,7 +1024,6 @@ def go_dependencies(): sum = "h1:4HaXUp8o2+bhHr1OhVy+VjN0+L7/07JDcn6v7YrTjrQ=", version = "v1.1.1", ) - go_repository( name = "com_github_chromedp_cdproto", build_file_proto_mode = "disable_global", @@ -1093,7 +1045,6 @@ def go_dependencies(): sum = "h1:+ZxhTpfpZlmchB58ih/LBHX52ky7w2VhQVKQMucy3Ic=", version = "v1.0.0", ) - go_repository( name = "com_github_chzyer_logex", build_file_proto_mode = "disable_global", @@ -1115,7 +1066,6 @@ def go_dependencies(): sum = "h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8=", version = "v0.0.0-20180213035817-a1ea475d72b1", ) - go_repository( name = "com_github_client9_misspell", build_file_proto_mode = "disable_global", @@ -1143,7 +1093,6 @@ def go_dependencies(): sum = "h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs=", version = "v1.3.3", ) - go_repository( name = "com_github_cloudykit_fastprinter", build_file_proto_mode = "disable_global", @@ -1151,7 +1100,6 @@ def go_dependencies(): sum = "h1:sR+/8Yb4slttB4vD+b9btVEnWgL3Q00OBTzVT8B9C0c=", version = "v0.0.0-20200109182630-33d98a066a53", ) - go_repository( name = "com_github_cloudykit_jet_v6", build_file_proto_mode = "disable_global", @@ -1159,7 +1107,6 @@ def go_dependencies(): sum = "h1:EpcZ6SR9n28BUGtNJSvlBqf90IpjeFr36Tizxhn/oME=", version = "v6.2.0", ) - go_repository( name = "com_github_cncf_udpa_go", build_file_proto_mode = "disable_global", @@ -1188,7 +1135,6 @@ def go_dependencies(): sum = "h1:y1Rh3tEU89D+7Tgbw+lp52T6p/GJLpDmNvr10UWqLTE=", version = "v2.0.1", ) - go_repository( name = "com_github_cockroachdb_datadriven", build_file_proto_mode = "disable_global", @@ -1217,7 +1163,6 @@ def go_dependencies(): sum = "h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30=", version = "v1.1.5", ) - go_repository( name = "com_github_codegangsta_inject", build_file_proto_mode = "disable_global", @@ -1225,7 +1170,6 @@ def go_dependencies(): sum = "h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q=", version = "v0.0.0-20150114235600-33e0aa1cb7c0", ) - go_repository( name = "com_github_containerd_cgroups", build_file_proto_mode = "disable_global", @@ -1282,7 +1226,6 @@ def go_dependencies(): sum = "h1:oU+lLv1ULm5taqgV/CJivypVODI4SUz1znWjv3nNYS0=", version = "v1.0.0", ) - go_repository( name = "com_github_containerd_nydus_snapshotter", build_file_proto_mode = "disable_global", @@ -1290,7 +1233,6 @@ def go_dependencies(): sum = "h1:b8WahTrPkt3XsabjG2o/leN4fw3HWZYr+qxo/Z8Mfzk=", version = "v0.3.1", ) - go_repository( name = "com_github_containerd_stargz_snapshotter", build_file_proto_mode = "disable_global", @@ -1319,7 +1261,6 @@ def go_dependencies(): sum = "h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY=", version = "v1.0.2", ) - go_repository( name = "com_github_containernetworking_cni", build_file_proto_mode = "disable_global", @@ -1327,7 +1268,6 @@ def go_dependencies(): sum = "h1:ky20T7c0MvKvbMOwS/FrlbNwjEoqJEUUYfsL4b0mc4k=", version = "v1.1.1", ) - go_repository( name = "com_github_coreos_bbolt", build_file_proto_mode = "disable_global", @@ -1335,7 +1275,6 @@ def go_dependencies(): sum = "h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s=", version = "v1.3.2", ) - go_repository( name = "com_github_coreos_etcd", build_file_proto_mode = "disable_global", @@ -1343,7 +1282,6 @@ def go_dependencies(): sum = "h1:jFneRYjIvLMLhDLCzuTuU4rSJUjRplcJQ7pD7MnhC04=", version = "v3.3.10+incompatible", ) - go_repository( name = "com_github_coreos_go_iptables", # We need to explictly turn this on, because the repository @@ -1362,7 +1300,6 @@ def go_dependencies(): sum = "h1:mh48q/BqXqgjVHpy2ZY7WnWAbenxRjsz9N1i1YxjHAk=", version = "v2.2.1+incompatible", ) - go_repository( name = "com_github_coreos_go_semver", build_file_proto_mode = "disable_global", @@ -1377,7 +1314,6 @@ def go_dependencies(): sum = "h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c=", version = "v0.0.0-20190719114852-fd7a80b32e1f", ) - go_repository( name = "com_github_coreos_go_systemd_v22", build_file_proto_mode = "disable_global", @@ -1413,7 +1349,6 @@ def go_dependencies(): sum = "h1:4KDlx3vjalrHD/EfsjCpV91HNX3JPaIqRtt83zZ7x+Y=", version = "v0.0.0-20210118111533-e33d3ffb5401", ) - go_repository( name = "com_github_cpuguy83_go_md2man_v2", build_file_proto_mode = "disable_global", @@ -1451,7 +1386,6 @@ def go_dependencies(): sum = "h1:13Ix7LoUJ0Yu5F+s6Aw8Afc8x+n98RSJNGHpxEbcYus=", version = "v0.0.0-20221211125903-d951aa2d145a", ) # keep - go_repository( name = "com_github_danieljoos_wincred", build_file_proto_mode = "disable_global", @@ -1466,7 +1400,6 @@ def go_dependencies(): sum = "h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo=", version = "v1.5.0", ) - go_repository( name = "com_github_dave_jennifer", build_file_proto_mode = "disable_global", @@ -1474,7 +1407,6 @@ def go_dependencies(): sum = "h1:T4T/67t6RAA5AIV6+NP8Uk/BIsXgDoqEowgycdQQLuk=", version = "v1.6.1", ) - go_repository( name = "com_github_davecgh_go_spew", build_file_proto_mode = "disable_global", @@ -1496,7 +1428,6 @@ def go_dependencies(): sum = "h1:koIcOUdrTIivZgSLhHQvKgqdWZq5d7KdMEWF1Ud6+5g=", version = "v1.2.0", ) - go_repository( name = "com_github_denisenkom_go_mssqldb", build_file_proto_mode = "disable_global", @@ -1504,7 +1435,6 @@ def go_dependencies(): sum = "h1:1OcPn5GBIobjWNd+8yjfHNIaFX14B1pWI3F9HZy5KXw=", version = "v0.12.2", ) - go_repository( name = "com_github_dennwc_varint", build_file_proto_mode = "disable_global", @@ -1526,7 +1456,6 @@ def go_dependencies(): sum = "h1:b6sViZG+Cm6QtdpqbfWEjaBVbzNPntIS4GzsxpS+CmM=", version = "v1.0.0", ) - go_repository( name = "com_github_derision_test_go_mockgen", build_file_proto_mode = "disable_global", @@ -1534,7 +1463,6 @@ def go_dependencies(): sum = "h1:b/DXAXL2FkaRPpnbYK3ODdZzklmJAwox0tkc6yyXx74=", version = "v1.3.7", ) - go_repository( name = "com_github_dghubble_go_twitter", build_file_proto_mode = "disable_global", @@ -1556,7 +1484,6 @@ def go_dependencies(): sum = "h1:pwcinOZy8z6XkNxvPmUDY52M7RDPxt0Xw1zgZ6Cl5JA=", version = "v0.7.2", ) - go_repository( name = "com_github_dghubble_sling", build_file_proto_mode = "disable_global", @@ -1564,7 +1491,6 @@ def go_dependencies(): sum = "h1:AxjTubpVyozMvbBCtXcsWEyGGgUZutC5YGrfxPNVOcQ=", version = "v1.4.1", ) - go_repository( name = "com_github_dgraph_io_ristretto", build_file_proto_mode = "disable_global", @@ -1572,7 +1498,6 @@ def go_dependencies(): sum = "h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8=", version = "v0.1.1", ) - go_repository( name = "com_github_dgrijalva_jwt_go", build_file_proto_mode = "disable_global", @@ -1594,7 +1519,6 @@ def go_dependencies(): sum = "h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=", version = "v0.0.0-20200823014737-9f7001d12a5f", ) - go_repository( name = "com_github_dgryski_go_sip13", build_file_proto_mode = "disable_global", @@ -1609,7 +1533,6 @@ def go_dependencies(): sum = "h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g=", version = "v0.0.0-20200323201526-dd97f9abfb48", ) - go_repository( name = "com_github_di_wu_parser", build_file_proto_mode = "disable_global", @@ -1624,7 +1547,6 @@ def go_dependencies(): sum = "h1:vZoGNkbzpBNoc+JyfVLEbutNDNydYV8XwHeV7eUJoxI=", version = "v1.0.0", ) - go_repository( name = "com_github_digitalocean_godo", build_file_proto_mode = "disable_global", @@ -1646,7 +1568,6 @@ def go_dependencies(): sum = "h1:ou+y/Ko923eBli6zJ/TeB2iH38PmytV2UkHJnVdaPtU=", version = "v3.0.0-20220128175647-b60926597a1b", ) - go_repository( name = "com_github_djherbis_buffer", build_file_proto_mode = "disable_global", @@ -1661,7 +1582,6 @@ def go_dependencies(): sum = "h1:6wxhnuppteMa6RHA4L81Dq7ThkZH8SwnDzXDYy95vB4=", version = "v3.0.1", ) - go_repository( name = "com_github_dlclark_regexp2", build_file_proto_mode = "disable_global", @@ -1676,7 +1596,6 @@ def go_dependencies(): sum = "h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI=", version = "v1.2.0", ) - go_repository( name = "com_github_docker_cli", build_file_proto_mode = "disable_global", @@ -1684,7 +1603,6 @@ def go_dependencies(): sum = "h1:0+1VshNwBQzQAx9lOl+OYCTCEAD8fKs/qeXMx3O0wqM=", version = "v24.0.0+incompatible", ) - go_repository( name = "com_github_docker_distribution", build_file_proto_mode = "disable_global", @@ -1706,7 +1624,6 @@ def go_dependencies(): sum = "h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=", version = "v0.7.0", ) - go_repository( name = "com_github_docker_go_connections", build_file_proto_mode = "disable_global", @@ -1728,7 +1645,6 @@ def go_dependencies(): sum = "h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8=", version = "v0.0.1", ) - go_repository( name = "com_github_docker_go_units", build_file_proto_mode = "disable_global", @@ -1736,7 +1652,6 @@ def go_dependencies(): sum = "h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=", version = "v0.5.0", ) - go_repository( name = "com_github_docker_libtrust", build_file_proto_mode = "disable_global", @@ -1744,7 +1659,6 @@ def go_dependencies(): sum = "h1:ZClxb8laGDf5arXfYcAtECDFgAgHklGI8CxgjHnXKJ4=", version = "v0.0.0-20150114040149-fa567046d9b1", ) - go_repository( name = "com_github_docopt_docopt_go", build_file_proto_mode = "disable_global", @@ -1752,7 +1666,6 @@ def go_dependencies(): sum = "h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ=", version = "v0.0.0-20180111231733-ee0de3bc6815", ) - go_repository( name = "com_github_dsnet_compress", build_file_proto_mode = "disable_global", @@ -1767,7 +1680,6 @@ def go_dependencies(): sum = "h1:BaeJtFDlto/NjX9t730OebRRJf2P+t9YEDz3ur18824=", version = "v0.0.0-20220815211337-00c9fb5711f5", ) - go_repository( name = "com_github_dustin_go_humanize", build_file_proto_mode = "disable_global", @@ -1775,7 +1687,6 @@ def go_dependencies(): sum = "h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=", version = "v1.0.1", ) - go_repository( name = "com_github_editorconfig_editorconfig_core_go_v2", build_file_proto_mode = "disable_global", @@ -1783,7 +1694,6 @@ def go_dependencies(): sum = "h1:kTcVMyCvFGQmTk0S5+R7GF+y7wMHkWm4CYS5BwYWN8U=", version = "v2.4.5", ) - go_repository( name = "com_github_edsrzf_mmap_go", build_file_proto_mode = "disable_global", @@ -1812,7 +1722,6 @@ def go_dependencies(): sum = "h1:6fUaAaX4Xe07LhVrHNmpfnlU41Nsto4skz4vhVqGwYk=", version = "v0.0.0-20220121082953-15165b1a61c8", ) - go_repository( name = "com_github_emicklei_go_restful", build_file_proto_mode = "disable_global", @@ -1820,7 +1729,6 @@ def go_dependencies(): sum = "h1:H2pdYOb3KQ1/YsqVWoWNLQO+fusocsw354rqGTZtAgw=", version = "v0.0.0-20170410110728-ff4f55a20633", ) - go_repository( name = "com_github_emicklei_go_restful_v3", build_file_proto_mode = "disable_global", @@ -1842,7 +1750,6 @@ def go_dependencies(): sum = "h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=", version = "v1.18.1", ) - go_repository( name = "com_github_envoyproxy_go_control_plane", build_file_proto_mode = "disable_global", @@ -1857,7 +1764,6 @@ def go_dependencies(): sum = "h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA=", version = "v1.0.2", ) - go_repository( name = "com_github_ethantkoenig_rupture", build_file_proto_mode = "disable_global", @@ -1865,7 +1771,6 @@ def go_dependencies(): sum = "h1:6aAXghmvtnngMgQzy7SMGdicMvkV86V4n9fT0meE5E4=", version = "v1.0.1", ) - go_repository( name = "com_github_evanphx_json_patch", build_file_proto_mode = "disable_global", @@ -1915,7 +1820,6 @@ def go_dependencies(): sum = "h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk=", version = "v0.0.0-20200203212716-c811ad88dec4", ) - go_repository( name = "com_github_fatih_color", build_file_proto_mode = "disable_global", @@ -1937,7 +1841,6 @@ def go_dependencies(): sum = "h1:VvyZxILNuCiUCSXtPtYmmtGvb65nqXh2QFWc0Wpf2/g=", version = "v0.9.3", ) - go_repository( name = "com_github_felixge_httpsnoop", build_file_proto_mode = "disable_global", @@ -1953,7 +1856,6 @@ def go_dependencies(): sum = "h1:QcxHhicvH6TFpSmC3vZKWbwLSHmwy72+CESqjjaIsZA=", version = "v1.19.1-0.20230624001757-345a8df15ded", ) - go_repository( name = "com_github_flosch_pongo2_v4", build_file_proto_mode = "disable_global", @@ -1961,7 +1863,6 @@ def go_dependencies(): sum = "h1:gv+5Pe3vaSVmiJvh/BZa82b7/00YUGm0PIyVVLop0Hw=", version = "v4.0.2", ) - go_repository( name = "com_github_form3tech_oss_jwt_go", build_file_proto_mode = "disable_global", @@ -1969,7 +1870,6 @@ def go_dependencies(): sum = "h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c=", version = "v3.2.3+incompatible", ) - go_repository( name = "com_github_frankban_quicktest", build_file_proto_mode = "disable_global", @@ -1984,7 +1884,6 @@ def go_dependencies(): sum = "h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=", version = "v1.6.0", ) - go_repository( name = "com_github_fullstorydev_grpcui", build_file_proto_mode = "disable_global", @@ -1992,7 +1891,6 @@ def go_dependencies(): sum = "h1:lVXozTNkJJouBL+wpmvxMnltiwYp8mgyd0TRs93i6Rw=", version = "v1.3.1", ) - go_repository( name = "com_github_fullstorydev_grpcurl", build_file_proto_mode = "disable_global", @@ -2014,7 +1912,6 @@ def go_dependencies(): sum = "h1:Sk0u0gIncQaQD23zAoAZs2DNi2u2l5UTLi4CmCBL5v8=", version = "v1.1.1-0.20170914051019-70e1b1943d4f", ) - go_repository( name = "com_github_gen2brain_beeep", build_file_proto_mode = "disable_global", @@ -2029,7 +1926,6 @@ def go_dependencies(): sum = "h1:j77zg3Ec+k+r+GA3d8hBoXpAc6KX9TbBPrwQGBIy2sY=", version = "v0.76.0", ) - go_repository( name = "com_github_getsentry_sentry_go", build_file_proto_mode = "disable_global", @@ -2044,7 +1940,6 @@ def go_dependencies(): sum = "h1:Ea58sAu8LX/NS7z3aeL+YX/7+FSd9jsxq6Ecpz7QEDM=", version = "v0.0.0-20230626192437-8d7be5866751", ) - go_repository( name = "com_github_ghodss_yaml", build_file_proto_mode = "disable_global", @@ -2088,7 +1983,6 @@ def go_dependencies(): sum = "h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is=", version = "v0.0.0-20181015135952-eeefdecb41b8", ) - go_repository( name = "com_github_go_ap_activitypub", build_file_proto_mode = "disable_global", @@ -2117,7 +2011,6 @@ def go_dependencies(): sum = "h1:vXT6d/FNDiELJnLb6hGNa309LMsrCoYFvpwHDF0+Y1A=", version = "v1.5.4", ) - go_repository( name = "com_github_go_chi_chi_v5", build_file_proto_mode = "disable_global", @@ -2132,7 +2025,6 @@ def go_dependencies(): sum = "h1:xEC8UT3Rlp2QuWNEr4Fs/c2EAGVKBwy/1vHx3bppil4=", version = "v1.2.1", ) - go_repository( name = "com_github_go_enry_go_enry_v2", build_file_proto_mode = "disable_global", @@ -2161,7 +2053,6 @@ def go_dependencies(): sum = "h1:oRq/fiirun5HqlEWMLIcDmLpIELlG4iGbd0s8iqgPi8=", version = "v1.1.1-0.20201223112313-55836744818e", ) - go_repository( name = "com_github_go_fonts_liberation", build_file_proto_mode = "disable_global", @@ -2169,7 +2060,6 @@ def go_dependencies(): sum = "h1:3BI2iaE7R/s6uUUtzNCjo3QijJu3aS4wmrMgfSpYQ+8=", version = "v0.3.0", ) - go_repository( name = "com_github_go_git_gcfg", build_file_proto_mode = "disable_global", @@ -2198,7 +2088,6 @@ def go_dependencies(): sum = "h1:t9AudWVLmqzlo+4bqdf7GY+46SUuRsx59SboFxkq2aE=", version = "v5.7.0", ) - go_repository( name = "com_github_go_gl_glfw", build_file_proto_mode = "disable_global", @@ -2213,7 +2102,6 @@ def go_dependencies(): sum = "h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I=", version = "v0.0.0-20200222043503-6f7a984d4dc4", ) - go_repository( name = "com_github_go_kit_kit", build_file_proto_mode = "disable_global", @@ -2249,7 +2137,6 @@ def go_dependencies(): sum = "h1:qPjipEpt+qDa6SI/h1fzuGWoRUY+qqQ9sOZq67/PYUs=", version = "v3.4.4", ) - go_repository( name = "com_github_go_logfmt_logfmt", build_file_proto_mode = "disable_global", @@ -2285,7 +2172,6 @@ def go_dependencies(): sum = "h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=", version = "v1.2.6", ) - go_repository( name = "com_github_go_openapi_analysis", build_file_proto_mode = "disable_global", @@ -2307,7 +2193,6 @@ def go_dependencies(): sum = "h1:9jCH9scKIbHeV9m12SmPilScz6krDxKRasNNSNPXu/4=", version = "v0.19.0", ) - go_repository( name = "com_github_go_openapi_jsonpointer", build_file_proto_mode = "disable_global", @@ -2336,7 +2221,6 @@ def go_dependencies(): sum = "h1:yX9HMGQbz32M87ECaAhGpJjBmErO3QLcgdZj9BzGx7c=", version = "v0.24.2", ) - go_repository( name = "com_github_go_openapi_spec", build_file_proto_mode = "disable_global", @@ -2372,7 +2256,6 @@ def go_dependencies(): sum = "h1:MlgtGIfsdMEEQJr2le6b/HNr1ZlQwxyWr77r2aj2U/8=", version = "v0.6.0", ) - go_repository( name = "com_github_go_playground_locales", build_file_proto_mode = "disable_global", @@ -2408,7 +2291,6 @@ def go_dependencies(): sum = "h1:7obg6wUoj05T0EpY0o8B59S9w5yeMWql7sw2kwNW1x4=", version = "v7.4.0", ) - go_repository( name = "com_github_go_redis_redis_v8", build_file_proto_mode = "disable_global", @@ -2423,7 +2305,6 @@ def go_dependencies(): sum = "h1:rq2RvdTI0obznMdxKUWGdmmulo7lS9yCzb8fgDKOlbM=", version = "v4.8.1", ) - go_repository( name = "com_github_go_resty_resty_v2", build_file_proto_mode = "disable_global", @@ -2438,7 +2319,6 @@ def go_dependencies(): sum = "h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=", version = "v1.7.1", ) - go_repository( name = "com_github_go_stack_stack", build_file_proto_mode = "disable_global", @@ -2460,7 +2340,6 @@ def go_dependencies(): sum = "h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=", version = "v0.0.0-20230315185526-52ccab3ef572", ) - go_repository( name = "com_github_go_test_deep", build_file_proto_mode = "disable_global", @@ -2482,7 +2361,6 @@ def go_dependencies(): sum = "h1:qZNfIGkIANxGv/OqtnntR4DfOY2+BgwR60cAcu/i3SE=", version = "v0.0.0-20190211030409-01e6764cf0a4", ) - go_repository( name = "com_github_go_zookeeper_zk", build_file_proto_mode = "disable_global", @@ -2574,7 +2452,6 @@ def go_dependencies(): sum = "h1:tpom+2CJmpzAWj5/VEHync2rJGi+epHNIeRSWjzGA+4=", version = "v0.0.0-20190224160051-33c29581e754", ) - go_repository( name = "com_github_gobwas_glob", build_file_proto_mode = "disable_global", @@ -2610,7 +2487,6 @@ def go_dependencies(): sum = "h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=", version = "v0.10.2", ) - go_repository( name = "com_github_godbus_dbus_v5", build_file_proto_mode = "disable_global", @@ -2618,7 +2494,6 @@ def go_dependencies(): sum = "h1:mkgN1ofwASrYnJ5W6U/BxG15eXXXjirgZc7CLqkcaro=", version = "v5.0.6", ) - go_repository( name = "com_github_gofrs_flock", build_file_proto_mode = "disable_global", @@ -2696,7 +2571,6 @@ def go_dependencies(): sum = "h1:gtexQ/VGyN+VVFRXSFiguSNcXmS6rkKT+X7FdIrTtfo=", version = "v0.0.0-20210211234256-740aa86cb551", ) - go_repository( name = "com_github_golang_glog", build_file_proto_mode = "disable_global", @@ -2732,7 +2606,6 @@ def go_dependencies(): sum = "h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE=", version = "v5.0.0", ) - go_repository( name = "com_github_golang_lint", build_file_proto_mode = "disable_global", @@ -2741,7 +2614,6 @@ def go_dependencies(): sum = "h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE=", version = "v0.0.0-20191125180803-fdd1cda4f05f", ) - go_repository( name = "com_github_golang_mock", build_file_proto_mode = "disable_global", @@ -2777,7 +2649,6 @@ def go_dependencies(): sum = "h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A=", version = "v0.1.0", ) - go_repository( name = "com_github_golangplus_bytes", build_file_proto_mode = "disable_global", @@ -2806,7 +2677,6 @@ def go_dependencies(): sum = "h1:/nNHAD99yipOEspQFbAnNmwGTZ1UNXiD/+JLxwx79fo=", version = "v0.2.0", ) - go_repository( name = "com_github_gomodule_redigo", build_file_proto_mode = "disable_global", @@ -2829,7 +2699,6 @@ def go_dependencies(): sum = "h1:s2151PDGy/eqpCI80/8dl4VL3xTkqI/YubXLXCFw0mw=", version = "v0.17.1", ) - go_repository( name = "com_github_google_certificate_transparency_go", build_file_proto_mode = "disable_global", @@ -2844,7 +2713,6 @@ def go_dependencies(): sum = "h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM=", version = "v2.0.8+incompatible", ) - go_repository( name = "com_github_google_gnostic", build_file_proto_mode = "disable_global", @@ -2880,7 +2748,6 @@ def go_dependencies(): sum = "h1:5oRLszbrkvxDDqBCNj2hjDZMKmvexaZ1xw/FCD+K3FI=", version = "v45.2.0", ) - go_repository( name = "com_github_google_go_github_v48", build_file_proto_mode = "disable_global", @@ -2895,7 +2762,6 @@ def go_dependencies(): sum = "h1:4pp/1tNMB9X/LuAhs5i0KQAE40NmiR/y6prLNb9x9cg=", version = "v55.0.0", ) - go_repository( name = "com_github_google_go_pkcs11", build_file_proto_mode = "disable_global", @@ -2903,7 +2769,6 @@ def go_dependencies(): sum = "h1:OF1IPgv+F4NmqmJ98KTjdN97Vs1JxDPB3vbmYzV2dpk=", version = "v0.2.1-0.20230907215043-c6f79328ddf9", ) - go_repository( name = "com_github_google_go_querystring", build_file_proto_mode = "disable_global", @@ -2911,7 +2776,6 @@ def go_dependencies(): sum = "h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=", version = "v1.1.0", ) - go_repository( name = "com_github_google_gofuzz", build_file_proto_mode = "disable_global", @@ -2954,7 +2818,6 @@ def go_dependencies(): sum = "h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=", version = "v0.1.7", ) - go_repository( name = "com_github_google_shlex", build_file_proto_mode = "disable_global", @@ -2969,7 +2832,6 @@ def go_dependencies(): sum = "h1:iuModVoTuW2lBUobX9QBgqD+ipHbWKug6n8qkJfDtUE=", version = "v0.0.0-20190717100203-59c1163fd173", ) - go_repository( name = "com_github_google_uuid", build_file_proto_mode = "disable_global", @@ -2977,7 +2839,6 @@ def go_dependencies(): sum = "h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=", version = "v1.4.0", ) - go_repository( name = "com_github_googleapis_enterprise_certificate_proxy", build_file_proto_mode = "disable_global", @@ -2992,7 +2853,6 @@ def go_dependencies(): sum = "h1:j0GKcs05QVmm7yesiZq2+9cxHkNK9YM6zKx4D2qucQU=", version = "v2.0.0+incompatible", ) - go_repository( name = "com_github_googleapis_gax_go_v2", build_file_proto_mode = "disable_global", @@ -3008,7 +2868,6 @@ def go_dependencies(): sum = "h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=", version = "v0.5.5", ) - go_repository( name = "com_github_googlecloudplatform_opentelemetry_operations_go_detectors_gcp", build_file_proto_mode = "disable_global", @@ -3018,21 +2877,11 @@ def go_dependencies(): ) go_repository( name = "com_github_googlecloudplatform_opentelemetry_operations_go_exporter_metric", - build_directives = [ - # @go_googleapis is the modern version of @org_golang_google_genproto - # use @go_googleapis to avoid dependency conflicts between the two - "gazelle:resolve go google.golang.org/genproto/googleapis/api/metric @go_googleapis//google/api:metric_go_proto", # keep - "gazelle:resolve go google.golang.org/genproto/googleapis/api @go_googleapis//google/api:api_go_proto", # keep - "gazelle:resolve go google.golang.org/genproto/googleapis/api/annotations @go_googleapis//google/api:annotations_go_proto", # keep - "gazelle:resolve go google.golang.org/genproto/googleapis/api/label @go_googleapis//google/api:label_go_proto", # keep - "gazelle:resolve go google.golang.org/genproto/googleapis/api/monitoredres @go_googleapis//google/api:monitoredres_go_proto", # keep - ], build_file_proto_mode = "disable_global", importpath = "github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric", sum = "h1:VahL5SjDdCas8mMKARolw2vvBsuLc5oV7XNSbxeMQP8=", version = "v0.41.0", ) - go_repository( name = "com_github_googlecloudplatform_opentelemetry_operations_go_exporter_trace", build_file_proto_mode = "disable_global", @@ -3054,7 +2903,6 @@ def go_dependencies(): sum = "h1:MWQ81b2TkSLbDpLINiKdZdoht1VMEHCKr4BSZpb/KQ8=", version = "v0.41.0", ) - go_repository( name = "com_github_gophercloud_gophercloud", build_file_proto_mode = "disable_global", @@ -3083,7 +2931,6 @@ def go_dependencies(): sum = "h1:vc7Dmrk4JwS0ZPS6WZvWlwDflgDTA26jItmbSj83nug=", version = "v0.0.0-20200309095847-7953dde2c7bf", ) - go_repository( name = "com_github_gorilla_context", build_file_proto_mode = "disable_global", @@ -3091,7 +2938,6 @@ def go_dependencies(): sum = "h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8=", version = "v1.1.1", ) - go_repository( name = "com_github_gorilla_css", build_file_proto_mode = "disable_global", @@ -3141,7 +2987,6 @@ def go_dependencies(): sum = "h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI=", version = "v1.2.1", ) - go_repository( name = "com_github_gorilla_websocket", build_file_proto_mode = "disable_global", @@ -3163,7 +3008,6 @@ def go_dependencies(): sum = "h1:hZzFTMMqSswvf0LBJZCZgThIZrpDHFXux9KeGmn6T/o=", version = "v1.0.1", ) - go_repository( name = "com_github_goware_urlx", build_file_proto_mode = "disable_global", @@ -3171,7 +3015,6 @@ def go_dependencies(): sum = "h1:BbvKl8oiXtJAzOzMqAQ0GfIhf96fKeNEZfm9ocNSUBI=", version = "v0.3.1", ) - go_repository( name = "com_github_grafana_regexp", build_file_proto_mode = "disable_global", @@ -3214,7 +3057,6 @@ def go_dependencies(): sum = "h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw=", version = "v1.3.0", ) - go_repository( name = "com_github_grpc_ecosystem_go_grpc_middleware_providers_prometheus", build_file_proto_mode = "disable_global", @@ -3222,7 +3064,6 @@ def go_dependencies(): sum = "h1:mdLirNAJBxnGgyB6pjZLcs6ue/6eZGBui6gXspfq4ks=", version = "v1.0.0-rc.0", ) - go_repository( name = "com_github_grpc_ecosystem_go_grpc_middleware_v2", build_file_proto_mode = "disable_global", @@ -3230,7 +3071,6 @@ def go_dependencies(): sum = "h1:2cz5kSrxzMYHiWOBbKj8itQm+nRykkB8aMv4ThcHYHA=", version = "v2.0.0", ) - go_repository( name = "com_github_grpc_ecosystem_go_grpc_prometheus", build_file_proto_mode = "disable_global", @@ -3238,7 +3078,6 @@ def go_dependencies(): sum = "h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=", version = "v1.2.0", ) - go_repository( name = "com_github_grpc_ecosystem_grpc_gateway", build_file_proto_mode = "disable_global", @@ -3250,12 +3089,9 @@ def go_dependencies(): name = "com_github_grpc_ecosystem_grpc_gateway_v2", build_file_proto_mode = "disable_global", importpath = "github.com/grpc-ecosystem/grpc-gateway/v2", - patch_args = ["-p1"], - # patches = ["//third_party/com_github_grpc_ecosystem_grpc_gateway_v2:grpc_gateway.patch"], - sum = "h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms=", - version = "v2.16.0", + sum = "h1:RoziI+96HlQWrbaVhgOOdFYUHtX81pwA6tCgDS9FNRo=", + version = "v2.16.1", ) - go_repository( name = "com_github_hanwen_go_fuse_v2", build_file_proto_mode = "disable_global", @@ -3263,7 +3099,6 @@ def go_dependencies(): sum = "h1:ibbzF2InxMOS+lLCphY9PHNKPURDUBNKaG6ErSq8gJQ=", version = "v2.1.1-0.20220112183258-f57e95bda82d", ) - go_repository( name = "com_github_hashicorp_consul_api", build_file_proto_mode = "disable_global", @@ -3278,7 +3113,6 @@ def go_dependencies(): sum = "h1:OJtKBtEjboEZvG6AOUdh4Z1Zbyu0WcxQ0qatRrZHTVU=", version = "v0.8.0", ) - go_repository( name = "com_github_hashicorp_cronexpr", build_file_proto_mode = "disable_global", @@ -3293,7 +3127,6 @@ def go_dependencies(): sum = "h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=", version = "v1.1.0", ) - go_repository( name = "com_github_hashicorp_go_cleanhttp", build_file_proto_mode = "disable_global", @@ -3343,7 +3176,6 @@ def go_dependencies(): sum = "h1:4OtAfUGbnKC6yS48p0CtMX2oFYtzFZVv6rok3cRWgnE=", version = "v1.0.1", ) - go_repository( name = "com_github_hashicorp_go_retryablehttp", build_file_proto_mode = "disable_global", @@ -3365,7 +3197,6 @@ def go_dependencies(): sum = "h1:lYhmKXXonP4KGSz3JBmks6YpDRjP1cMA/yvcoPxoNw8=", version = "v0.12.1", ) - go_repository( name = "com_github_hashicorp_go_sockaddr", build_file_proto_mode = "disable_global", @@ -3387,7 +3218,6 @@ def go_dependencies(): sum = "h1:5G84t70g70xWK5U0WaYb8wLfbC5fR6dvawqCkmMN5X0=", version = "v1.32.1", ) - go_repository( name = "com_github_hashicorp_go_uuid", build_file_proto_mode = "disable_global", @@ -3395,7 +3225,6 @@ def go_dependencies(): sum = "h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=", version = "v1.0.3", ) - go_repository( name = "com_github_hashicorp_go_version", build_file_proto_mode = "disable_global", @@ -3417,7 +3246,6 @@ def go_dependencies(): sum = "h1:Dwmkdr5Nc/oBiXgJS3CDHNhJtIHkuZ3DZF5twqnfBdU=", version = "v2.0.2", ) - go_repository( name = "com_github_hashicorp_hcl", build_file_proto_mode = "disable_global", @@ -3432,7 +3260,6 @@ def go_dependencies(): sum = "h1:9ARUJJ1VVynB176G1HCwleORqCaXm/Vx0uUi0dL26I0=", version = "v0.0.0-20210826224640-ee7dae0fb22d", ) - go_repository( name = "com_github_hashicorp_logutils", build_file_proto_mode = "disable_global", @@ -3454,7 +3281,6 @@ def go_dependencies(): sum = "h1:8+567mCcFDnS5ADl7lrpxPMWiFCElyUEeW0gtj34fMA=", version = "v0.3.0", ) - go_repository( name = "com_github_hashicorp_nomad_api", build_file_proto_mode = "disable_global", @@ -3490,7 +3316,6 @@ def go_dependencies(): sum = "h1:Zj6fR5wnpOHnJUmLyWozjMeDaVuE+cstMPj41/eKmSQ=", version = "v0.0.1", ) - go_repository( name = "com_github_hashicorp_vault_api", build_file_proto_mode = "disable_global", @@ -3519,7 +3344,6 @@ def go_dependencies(): sum = "h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM=", version = "v1.1.2", ) - go_repository( name = "com_github_hetznercloud_hcloud_go", build_file_proto_mode = "disable_global", @@ -3541,7 +3365,6 @@ def go_dependencies(): sum = "h1:5s9J6CROngFPkgowSkV20bIflBrImSdDqIpoXJeZSkU=", version = "v2.1.0", ) - go_repository( name = "com_github_hexops_gotextdiff", build_file_proto_mode = "disable_global", @@ -3570,7 +3393,6 @@ def go_dependencies(): sum = "h1:wlm6IYYqHjOdXH1gHev4VoXCaW20HdQAGCxdOEEg2cs=", version = "v4.0.0", ) - go_repository( name = "com_github_honeycombio_libhoney_go", build_file_proto_mode = "disable_global", @@ -3578,7 +3400,6 @@ def go_dependencies(): sum = "h1:TECEltZ48K6J4NG1JVYqmi0vCJNnHYooFor83fgKesA=", version = "v1.15.8", ) - go_repository( name = "com_github_hpcloud_tail", build_file_proto_mode = "disable_global", @@ -3607,7 +3428,6 @@ def go_dependencies(): sum = "h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA=", version = "v0.2.0", ) - go_repository( name = "com_github_iancoleman_strcase", build_file_proto_mode = "disable_global", @@ -3629,7 +3449,6 @@ def go_dependencies(): sum = "h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=", version = "v0.3.16", ) - go_repository( name = "com_github_in_toto_in_toto_golang", build_file_proto_mode = "disable_global", @@ -3637,7 +3456,6 @@ def go_dependencies(): sum = "h1:hb8bgwr0M2hGdDsLjkJ3ZqJ8JFLL/tgYdAxF/XEFBbY=", version = "v0.5.0", ) - go_repository( name = "com_github_inconshreveable_log15", build_file_proto_mode = "disable_global", @@ -3645,7 +3463,6 @@ def go_dependencies(): sum = "h1:n1DqxAo4oWPMvH1+v+DLYlMCecgumhhgnxAPdqDIFHI=", version = "v0.0.0-20201112154412-8562bdadbbac", ) - go_repository( name = "com_github_inconshreveable_mousetrap", build_file_proto_mode = "disable_global", @@ -3653,7 +3470,6 @@ def go_dependencies(): sum = "h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=", version = "v1.1.0", ) - go_repository( name = "com_github_invopop_jsonschema", build_file_proto_mode = "disable_global", @@ -3661,7 +3477,6 @@ def go_dependencies(): sum = "h1:2vgQcBz1n256N+FpX3Jq7Y17AjYt46Ig3zIWyy770So=", version = "v0.7.0", ) - go_repository( name = "com_github_ionos_cloud_sdk_go_v6", build_file_proto_mode = "disable_global", @@ -3669,7 +3484,6 @@ def go_dependencies(): sum = "h1:vb6yqdpiqaytvreM0bsn2pXw+1YDvEk2RKSmBAQvgDQ=", version = "v6.1.3", ) - go_repository( name = "com_github_iris_contrib_schema", build_file_proto_mode = "disable_global", @@ -3677,7 +3491,6 @@ def go_dependencies(): sum = "h1:CPSBLyx2e91H2yJzPuhGuifVRnZBBJ3pCOMbOvPZaTw=", version = "v0.0.6", ) - go_repository( name = "com_github_itchyny_gojq", build_file_proto_mode = "disable_global", @@ -3692,7 +3505,6 @@ def go_dependencies(): sum = "h1:G0INE2la8S6ru/ZI5JecgyzbbJNs5lG1RcBqa7Jm6GE=", version = "v0.1.5", ) - go_repository( name = "com_github_jackc_chunkreader", build_file_proto_mode = "disable_global", @@ -3721,7 +3533,6 @@ def go_dependencies(): sum = "h1:s+4MhCQ6YrzisK6hFJUX53drDT4UsSW3DEhKn0ifuHw=", version = "v0.0.0-20220416144525-469b46aa5efa", ) - go_repository( name = "com_github_jackc_pgio", build_file_proto_mode = "disable_global", @@ -3785,7 +3596,6 @@ def go_dependencies(): sum = "h1:NxstgwndsTRy7eq9/kqYc/BZh5w2hHJV86wjvO+1xPw=", version = "v5.5.0", ) - go_repository( name = "com_github_jackc_puddle", build_file_proto_mode = "disable_global", @@ -3800,7 +3610,6 @@ def go_dependencies(): sum = "h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=", version = "v2.2.1", ) - go_repository( name = "com_github_jaytaylor_html2text", build_file_proto_mode = "disable_global", @@ -3815,7 +3624,6 @@ def go_dependencies(): sum = "h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=", version = "v0.0.0-20150711004518-d14ea06fba99", ) - go_repository( name = "com_github_jdxcode_netrc", build_file_proto_mode = "disable_global", @@ -3823,7 +3631,6 @@ def go_dependencies(): sum = "h1:d4+I1YEKVmWZrgkt6jpXBnLgV2ZjO0YxEtLDdfIZfH4=", version = "v0.0.0-20210204082910-926c7f70242a", ) - go_repository( name = "com_github_jessevdk_go_flags", build_file_proto_mode = "disable_global", @@ -3831,7 +3638,6 @@ def go_dependencies(): sum = "h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc=", version = "v1.5.0", ) - go_repository( name = "com_github_jhump_gopoet", build_file_proto_mode = "disable_global", @@ -3874,7 +3680,6 @@ def go_dependencies(): sum = "h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=", version = "v1.1.5", ) - go_repository( name = "com_github_jmespath_go_jmespath", build_file_proto_mode = "disable_global", @@ -3889,7 +3694,6 @@ def go_dependencies(): sum = "h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=", version = "v1.5.1", ) - go_repository( name = "com_github_johncgriffin_overflow", build_file_proto_mode = "disable_global", @@ -3897,7 +3701,6 @@ def go_dependencies(): sum = "h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU=", version = "v0.0.0-20211019200055-46fa312c352c", ) - go_repository( name = "com_github_joho_godotenv", build_file_proto_mode = "disable_global", @@ -3905,7 +3708,6 @@ def go_dependencies(): sum = "h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg=", version = "v1.4.0", ) - go_repository( name = "com_github_joker_jade", build_file_proto_mode = "disable_global", @@ -3913,7 +3715,6 @@ def go_dependencies(): sum = "h1:Qbeh12Vq6BxURXT1qZBRHsDxeURB8ztcL6f3EXSGeHk=", version = "v1.1.3", ) - go_repository( name = "com_github_jonboulle_clockwork", build_file_proto_mode = "disable_global", @@ -3928,7 +3729,6 @@ def go_dependencies(): sum = "h1:jdpOPRN1zP63Td1hDQbZW73xKmzDvZHzVdNYxhnTMDA=", version = "v4.0.1-0.20210109023952-943e75fe5223+incompatible", ) - go_repository( name = "com_github_josharian_intern", build_file_proto_mode = "disable_global", @@ -3964,7 +3764,6 @@ def go_dependencies(): sum = "h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=", version = "v4.20.0+incompatible", ) - go_repository( name = "com_github_julienschmidt_httprouter", build_file_proto_mode = "disable_global", @@ -3972,7 +3771,6 @@ def go_dependencies(): sum = "h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=", version = "v1.3.0", ) - go_repository( name = "com_github_k0kubun_go_ansi", build_file_proto_mode = "disable_global", @@ -3980,7 +3778,6 @@ def go_dependencies(): sum = "h1:qGQQKEcAR99REcMpsXCp3lJ03zYT1PkRd3kQGPn9GVg=", version = "v0.0.0-20180517002512-3bf9e2903213", ) - go_repository( name = "com_github_k0kubun_pp_v3", build_file_proto_mode = "disable_global", @@ -4023,7 +3820,6 @@ def go_dependencies(): sum = "h1:cF3RDY/vxnSRezc7vLFlQFTYXG/yAr1o7WImJuZbzC4=", version = "v0.0.7", ) - go_repository( name = "com_github_kataras_golog", build_file_proto_mode = "disable_global", @@ -4038,7 +3834,6 @@ def go_dependencies(): sum = "h1:WzDY5nGuW/LgVaFS5BtTkW3crdSKJ/FEgWnxPnIVVLI=", version = "v12.2.0", ) - go_repository( name = "com_github_kataras_pio", build_file_proto_mode = "disable_global", @@ -4102,7 +3897,6 @@ def go_dependencies(): sum = "h1:AQgYHURDOmnVJ62jnEk0W/7yFKEn+Lv8RHN6t7mB0Zo=", version = "v1.0.0", ) - go_repository( name = "com_github_keybase_go_crypto", build_file_proto_mode = "disable_global", @@ -4117,7 +3911,6 @@ def go_dependencies(): sum = "h1:TMZJ+tl/BpbmGyIBiXzKzUftDhw4ZWxQZ+1ydn0gyII=", version = "v0.5.0", ) - go_repository( name = "com_github_kisielk_errcheck", build_file_proto_mode = "disable_global", @@ -4139,7 +3932,6 @@ def go_dependencies(): sum = "h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4=", version = "v1.3.2", ) - go_repository( name = "com_github_klauspost_compress", build_file_proto_mode = "disable_global", @@ -4147,7 +3939,6 @@ def go_dependencies(): sum = "h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I=", version = "v1.16.7", ) - go_repository( name = "com_github_klauspost_cpuid_v2", build_file_proto_mode = "disable_global", @@ -4155,7 +3946,6 @@ def go_dependencies(): sum = "h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk=", version = "v2.2.4", ) - go_repository( name = "com_github_klauspost_pgzip", build_file_proto_mode = "disable_global", @@ -4198,7 +3988,6 @@ def go_dependencies(): sum = "h1:1dYGITt1I23x8cfx8ZnldtezdyaZtfAuRtIFOiRzK7g=", version = "v2.0.1", ) - go_repository( name = "com_github_kolo_xmlrpc", build_file_proto_mode = "disable_global", @@ -4213,7 +4002,6 @@ def go_dependencies(): sum = "h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s=", version = "v1.0.2", ) - go_repository( name = "com_github_kr_fs", build_file_proto_mode = "disable_global", @@ -4228,7 +4016,6 @@ def go_dependencies(): sum = "h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY=", version = "v0.0.0-20140226030751-b84e30acd515", ) - go_repository( name = "com_github_kr_pretty", build_file_proto_mode = "disable_global", @@ -4257,7 +4044,6 @@ def go_dependencies(): sum = "h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=", version = "v1.1.0", ) - go_repository( name = "com_github_labstack_echo_v4", build_file_proto_mode = "disable_global", @@ -4293,7 +4079,6 @@ def go_dependencies(): sum = "h1:Wu59T7wSHRgtA0cfxC+n1c/e+O3upJGWytknkmFEDis=", version = "v0.2.1", ) - go_repository( name = "com_github_linode_linodego", build_file_proto_mode = "disable_global", @@ -4301,7 +4086,6 @@ def go_dependencies(): sum = "h1:+lxNZw4avRxhCqGjwfPgQ2PvMT+vOL0OMsTdzixR7hQ=", version = "v1.9.3", ) - go_repository( name = "com_github_logrusorgru_aurora_v3", build_file_proto_mode = "disable_global", @@ -4309,7 +4093,6 @@ def go_dependencies(): sum = "h1:R6zcoZZbvVcGMvDCKo45A9U/lzYyzl5NfYIvznmDfE4=", version = "v3.0.0", ) - go_repository( name = "com_github_lucasb_eyer_go_colorful", build_file_proto_mode = "disable_global", @@ -4331,7 +4114,6 @@ def go_dependencies(): sum = "h1:/3+/2sWyXeMLzKd1bX+ixWKgEMsULrIivpDsuaF441o=", version = "v2.0.3", ) - go_repository( name = "com_github_machinebox_graphql", build_file_proto_mode = "disable_global", @@ -4339,7 +4121,6 @@ def go_dependencies(): sum = "h1:dWKpJligYKhYKO5A2gvNhkJdQMNZeChZYyBbrZkBZfo=", version = "v0.2.2", ) - go_repository( name = "com_github_magiconair_properties", build_file_proto_mode = "disable_global", @@ -4354,7 +4135,6 @@ def go_dependencies(): sum = "h1:5dmlB680ZkFG2RN/0lvTAghrSxIESeu9/2aeDqACtjw=", version = "v2.0.48", ) - go_repository( name = "com_github_mailru_easyjson", build_file_proto_mode = "disable_global", @@ -4362,7 +4142,6 @@ def go_dependencies(): sum = "h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=", version = "v0.7.7", ) - go_repository( name = "com_github_markbates_going", build_file_proto_mode = "disable_global", @@ -4391,7 +4170,6 @@ def go_dependencies(): sum = "h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI=", version = "v1.0.1", ) - go_repository( name = "com_github_masterminds_goutils", build_file_proto_mode = "disable_global", @@ -4399,7 +4177,6 @@ def go_dependencies(): sum = "h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=", version = "v1.1.1", ) - go_repository( name = "com_github_masterminds_semver", build_file_proto_mode = "disable_global", @@ -4414,7 +4191,6 @@ def go_dependencies(): sum = "h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0=", version = "v3.2.1", ) - go_repository( name = "com_github_masterminds_sprig", build_file_proto_mode = "disable_global", @@ -4429,7 +4205,6 @@ def go_dependencies(): sum = "h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8=", version = "v3.2.2", ) - go_repository( name = "com_github_matryer_is", build_file_proto_mode = "disable_global", @@ -4444,7 +4219,6 @@ def go_dependencies(): sum = "h1:Q06vEqnBYjjfx5KKgHfYRKE/lvlRu+Nj+xodG4YdHnU=", version = "v0.2.3", ) - go_repository( name = "com_github_mattermost_xml_roundtrip_validator", build_file_proto_mode = "disable_global", @@ -4452,7 +4226,6 @@ def go_dependencies(): sum = "h1:RXbVD2UAl7A7nOTR4u7E3ILa4IbtvKBHw64LDsmu9hU=", version = "v0.1.0", ) - go_repository( name = "com_github_mattn_go_colorable", build_file_proto_mode = "disable_global", @@ -4460,7 +4233,6 @@ def go_dependencies(): sum = "h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=", version = "v0.1.13", ) - go_repository( name = "com_github_mattn_go_isatty", build_file_proto_mode = "disable_global", @@ -4475,7 +4247,6 @@ def go_dependencies(): sum = "h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=", version = "v0.0.14", ) - go_repository( name = "com_github_mattn_go_sqlite3", build_file_proto_mode = "disable_global", @@ -4483,7 +4254,6 @@ def go_dependencies(): sum = "h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=", version = "v1.14.16", ) - go_repository( name = "com_github_matttproud_golang_protobuf_extensions", build_file_proto_mode = "disable_global", @@ -4491,7 +4261,6 @@ def go_dependencies(): sum = "h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=", version = "v1.0.4", ) - go_repository( name = "com_github_mcuadros_go_version", build_file_proto_mode = "disable_global", @@ -4499,7 +4268,6 @@ def go_dependencies(): sum = "h1:YocNLcTBdEdvY3iDK6jfWXvEaM5OCKkjxPKoJRdB3Gg=", version = "v0.0.0-20190830083331-035f6764e8d2", ) - go_repository( name = "com_github_mholt_acmez", build_file_proto_mode = "disable_global", @@ -4514,7 +4282,6 @@ def go_dependencies(): sum = "h1:rDjOBX9JSF5BvoJGvjqK479aL70qh9DIpZCl+k7Clwo=", version = "v3.5.1", ) - go_repository( name = "com_github_microcosm_cc_bluemonday", build_file_proto_mode = "disable_global", @@ -4529,7 +4296,6 @@ def go_dependencies(): sum = "h1:mM3gYdVwEPFrlg/Dvr2DNVEgYFG7L42l+dGc67NNNpc=", version = "v1.6.0", ) - go_repository( name = "com_github_microsoft_go_winio", build_file_proto_mode = "disable_global", @@ -4544,7 +4310,6 @@ def go_dependencies(): sum = "h1:lf7xxK2+Ikbj9sVf2QZsouGjRjEp2STj1yDHgoVtU5k=", version = "v0.9.8", ) - go_repository( name = "com_github_miekg_dns", build_file_proto_mode = "disable_global", @@ -4552,7 +4317,6 @@ def go_dependencies(): sum = "h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA=", version = "v1.1.50", ) - go_repository( name = "com_github_minio_asm2plan9s", build_file_proto_mode = "disable_global", @@ -4567,7 +4331,6 @@ def go_dependencies(): sum = "h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI=", version = "v0.0.0-20190812172519-36a3d3bbc4f3", ) - go_repository( name = "com_github_minio_md5_simd", build_file_proto_mode = "disable_global", @@ -4589,7 +4352,6 @@ def go_dependencies(): sum = "h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g=", version = "v1.0.0", ) - go_repository( name = "com_github_mitchellh_cli", build_file_proto_mode = "disable_global", @@ -4604,7 +4366,6 @@ def go_dependencies(): sum = "h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ=", version = "v0.0.0-20190213212951-d06e56a500db", ) - go_repository( name = "com_github_mitchellh_copystructure", build_file_proto_mode = "disable_global", @@ -4619,7 +4380,6 @@ def go_dependencies(): sum = "h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=", version = "v1.1.0", ) - go_repository( name = "com_github_mitchellh_go_testing_interface", build_file_proto_mode = "disable_global", @@ -4627,7 +4387,6 @@ def go_dependencies(): sum = "h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0=", version = "v1.0.0", ) - go_repository( name = "com_github_mitchellh_go_wordwrap", build_file_proto_mode = "disable_global", @@ -4656,7 +4415,6 @@ def go_dependencies(): sum = "h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4=", version = "v2.0.2", ) - go_repository( name = "com_github_mitchellh_iochan", build_file_proto_mode = "disable_global", @@ -4664,7 +4422,6 @@ def go_dependencies(): sum = "h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY=", version = "v1.0.0", ) - go_repository( name = "com_github_mitchellh_mapstructure", build_file_proto_mode = "disable_global", @@ -4679,7 +4436,6 @@ def go_dependencies(): sum = "h1:2+myh5ml7lgEU/51gbeLHfKGNfgEQQIWrlbdaOsidbQ=", version = "v0.0.0-20151018003038-5e2d6d41470f", ) - go_repository( name = "com_github_mitchellh_reflectwalk", build_file_proto_mode = "disable_global", @@ -4694,7 +4450,6 @@ def go_dependencies(): sum = "h1:nAco9/aI9Lg2kiuROBY6BhCI/z0t5jEvJfjWbL8qXLU=", version = "v0.5.0", ) - go_repository( name = "com_github_moby_buildkit", build_file_proto_mode = "disable_global", @@ -4716,7 +4471,6 @@ def go_dependencies(): sum = "h1:YCZgJOeULcxLw1Q+sVR636pmS7sPEn1Qo2iAN6M7DBo=", version = "v0.5.0", ) - go_repository( name = "com_github_moby_spdystream", build_file_proto_mode = "disable_global", @@ -4752,7 +4506,6 @@ def go_dependencies(): sum = "h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI=", version = "v0.7.0", ) - go_repository( name = "com_github_moby_term", build_file_proto_mode = "disable_global", @@ -4795,7 +4548,6 @@ def go_dependencies(): sum = "h1:r3y12KyNxj/Sb/iOE46ws+3mS1+MZca1wlHQFPsY/JU=", version = "v0.7.0", ) - go_repository( name = "com_github_morikuni_aec", build_file_proto_mode = "disable_global", @@ -4810,7 +4562,6 @@ def go_dependencies(): sum = "h1:KJzRFSYPXlcoYjG5/xLZB8tpuOyWF2UnlW4tAuaWnfI=", version = "v1.2.0", ) - go_repository( name = "com_github_mpvl_unique", build_file_proto_mode = "disable_global", @@ -4832,7 +4583,6 @@ def go_dependencies(): sum = "h1:zrEVDIaau/E4QLOKu02kpg8T8myweFlMGikIgbIdrRA=", version = "v2.0.1", ) - go_repository( name = "com_github_mschoch_smat", build_file_proto_mode = "disable_global", @@ -4847,7 +4597,6 @@ def go_dependencies(): sum = "h1:VhLun/0n0kQYxiRBJJvVpC2jR6d21SWJFjpvUVj20Kc=", version = "v1.1.0", ) - go_repository( name = "com_github_muesli_reflow", build_file_proto_mode = "disable_global", @@ -4890,7 +4639,6 @@ def go_dependencies(): sum = "h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus=", version = "v0.0.0-20140419014527-cca7078d478f", ) - go_repository( name = "com_github_ncw_swift", build_file_proto_mode = "disable_global", @@ -4912,7 +4660,6 @@ def go_dependencies(): sum = "h1:bY6ktFuJkt+ZXkX0RChQch2FtHpWQLVS8Qo1YasiIVk=", version = "v0.0.0-20200213170602-2833bce08e4c", ) - go_repository( name = "com_github_nfnt_resize", build_file_proto_mode = "disable_global", @@ -4920,7 +4667,6 @@ def go_dependencies(): sum = "h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=", version = "v0.0.0-20180221191011-83c6a9932646", ) - go_repository( name = "com_github_niemeyer_pretty", build_file_proto_mode = "disable_global", @@ -4949,7 +4695,6 @@ def go_dependencies(): sum = "h1:3f0nxAmdj/VoCGN/ijdMy7bj6SBagaqYg1B0hu8clMA=", version = "v0.0.0-20200524104333-86fad755b4d3", ) - go_repository( name = "com_github_npillmayer_nestext", build_file_proto_mode = "disable_global", @@ -4978,7 +4723,6 @@ def go_dependencies(): sum = "h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=", version = "v1.4.8", ) - go_repository( name = "com_github_nytimes_gziphandler", build_file_proto_mode = "disable_global", @@ -4986,7 +4730,6 @@ def go_dependencies(): sum = "h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=", version = "v1.1.1", ) - go_repository( name = "com_github_oklog_run", build_file_proto_mode = "disable_global", @@ -5029,7 +4772,6 @@ def go_dependencies(): sum = "h1:R7CXvbu8Eq+WlsLgxmKVKPox0oOwAE/2T9Si5BnvK6E=", version = "v7.0.32", ) - go_repository( name = "com_github_oneofone_xxhash", build_file_proto_mode = "disable_global", @@ -5051,7 +4793,6 @@ def go_dependencies(): sum = "h1:06xGQy5www2oN160RtEZoTvnP2sPhEfePYmCDc2szss=", version = "v2.9.7", ) - go_repository( name = "com_github_onsi_gomega", build_file_proto_mode = "disable_global", @@ -5059,7 +4800,6 @@ def go_dependencies(): sum = "h1:gegWiwZjBsf2DgiSbf5hpokZ98JVDMcWkUiigk6/KXc=", version = "v1.27.8", ) - go_repository( name = "com_github_opencontainers_go_digest", build_file_proto_mode = "disable_global", @@ -5088,7 +4828,6 @@ def go_dependencies(): sum = "h1:3snG66yBm59tKhhSPQrQ/0bCrv1LQbKt40LnUPiUxdc=", version = "v1.0.3-0.20210326190908-1c3f411f0417", ) - go_repository( name = "com_github_opencontainers_selinux", build_file_proto_mode = "disable_global", @@ -5113,7 +4852,6 @@ def go_dependencies(): sum = "h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=", version = "v1.2.0", ) - go_repository( name = "com_github_opsgenie_opsgenie_go_sdk_v2", build_file_proto_mode = "disable_global", @@ -5128,7 +4866,6 @@ def go_dependencies(): sum = "h1:9FnTOD0YOhP7DGxGsq4glzpGy5+w7pq50AS6wALUMYs=", version = "v1.12.0", ) - go_repository( name = "com_github_ovh_go_ovh", build_file_proto_mode = "disable_global", @@ -5143,7 +4880,6 @@ def go_dependencies(): sum = "h1:DiLBVp4DAcZlBVBEtJpNWZpZVq0AEeCY7Hqk8URVs4o=", version = "v0.1.1-0.20220428063043-89078438f170", ) - go_repository( name = "com_github_pandatix_go_cvss", build_file_proto_mode = "disable_global", @@ -5151,7 +4887,6 @@ def go_dependencies(): sum = "h1:9441i+Sn/P/TP9kNBl3kI7mwYtNYFr1eN8JdsiybiMM=", version = "v0.5.2", ) - go_repository( name = "com_github_pascaldekloe_goe", build_file_proto_mode = "disable_global", @@ -5166,7 +4901,6 @@ def go_dependencies(): sum = "h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g=", version = "v1.2.0", ) - go_repository( name = "com_github_pelletier_go_toml", build_file_proto_mode = "disable_global", @@ -5209,7 +4943,6 @@ def go_dependencies(): sum = "h1:s2+RH8EGuI/mI4QwrWGSYQCRz7uNgip9BaM04HKu5kc=", version = "v1.1.0", ) - go_repository( name = "com_github_pierrec_lz4", build_file_proto_mode = "disable_global", @@ -5217,7 +4950,6 @@ def go_dependencies(): sum = "h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I=", version = "v2.0.5+incompatible", ) - go_repository( name = "com_github_pierrec_lz4_v4", build_file_proto_mode = "disable_global", @@ -5225,7 +4957,6 @@ def go_dependencies(): sum = "h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc=", version = "v4.1.17", ) - go_repository( name = "com_github_pingcap_errors", build_file_proto_mode = "disable_global", @@ -5240,7 +4971,6 @@ def go_dependencies(): sum = "h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=", version = "v0.3.0", ) - go_repository( name = "com_github_pkg_browser", build_file_proto_mode = "disable_global", @@ -5284,7 +5014,6 @@ def go_dependencies(): sum = "h1:Wu8W50qCMC+BYoBQY/wTPt0QNglXF/IO3zljM+LKuNM=", version = "v0.0.0-20230905173153-caab340cf008", ) - go_repository( name = "com_github_pmezard_go_difflib", build_file_proto_mode = "disable_global", @@ -5327,7 +5056,6 @@ def go_dependencies(): sum = "h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=", version = "v1.1.0", ) - go_repository( name = "com_github_prometheus_alertmanager", build_file_proto_mode = "disable_global", @@ -5421,7 +5149,6 @@ def go_dependencies(): sum = "h1:vV3RryLxt42+ZIVOFbYJCH1jsZNTNmj2NYru5zfx+4E=", version = "v0.0.0-20230626094100-7e9e0395ebec", ) - go_repository( name = "com_github_pseudomuto_protoc_gen_doc", build_file_proto_mode = "disable_global", @@ -5443,7 +5170,6 @@ def go_dependencies(): sum = "h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U=", version = "v1.8.0", ) - go_repository( name = "com_github_puerkitobio_purell", build_file_proto_mode = "disable_global", @@ -5458,7 +5184,6 @@ def go_dependencies(): sum = "h1:JFZ7OeK+hbJpTxhNB0NDZT47AuXqCU0Smxfjtph7/Rs=", version = "v1.1.0", ) - go_repository( name = "com_github_puerkitobio_urlesc", build_file_proto_mode = "disable_global", @@ -5473,7 +5198,6 @@ def go_dependencies(): sum = "h1:kh5B4yWjrd5BcynJoA4014mZlI/j6++inCMMQoKUOtI=", version = "v1.4.1", ) - go_repository( name = "com_github_quasoft_websspi", build_file_proto_mode = "disable_global", @@ -5505,7 +5229,6 @@ def go_dependencies(): sum = "h1:B4Y0XJQiPjpwYmkH55aratKX1VfR+JRqzmDKyZbC99o=", version = "v3.1.2", ) - go_repository( name = "com_github_rainycape_unidecode", build_file_proto_mode = "disable_global", @@ -5527,7 +5250,6 @@ def go_dependencies(): sum = "h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=", version = "v0.0.0-20230129092748-24d4a6f8daec", ) - go_repository( name = "com_github_rhnvrm_simples3", build_file_proto_mode = "disable_global", @@ -5535,7 +5257,6 @@ def go_dependencies(): sum = "h1:H0DJwybR6ryQE+Odi9eqkHuzjYAeJgtGcGtuBwOhsH8=", version = "v0.6.1", ) - go_repository( name = "com_github_rivo_uniseg", build_file_proto_mode = "disable_global", @@ -5557,7 +5278,6 @@ def go_dependencies(): sum = "h1:aQmu9zQxDU0uhwR8SXOH/OrqEf+X8A0LQmwW3JX8Lcg=", version = "v1.3.0", ) - go_repository( name = "com_github_rogpeppe_fastuuid", build_file_proto_mode = "disable_global", @@ -5593,7 +5313,6 @@ def go_dependencies(): sum = "h1:uPRuwkWF4J6fGsJ2R0Gn2jB1EQiav9k3S6CSdygQJXY=", version = "v1.15.0", ) - go_repository( name = "com_github_russellhaering_gosaml2", build_file_proto_mode = "disable_global", @@ -5623,7 +5342,6 @@ def go_dependencies(): sum = "h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=", version = "v2.1.0", ) - go_repository( name = "com_github_ryanuber_columnize", build_file_proto_mode = "disable_global", @@ -5645,7 +5363,6 @@ def go_dependencies(): sum = "h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI=", version = "v0.0.0-20210923224102-525f6e181f06", ) - go_repository( name = "com_github_santhosh_tekuri_jsonschema_v5", build_file_proto_mode = "disable_global", @@ -5653,7 +5370,6 @@ def go_dependencies(): sum = "h1:HNLA3HtUIROrQwG1cuu5EYuqk3UEoJ61Dr/9xkd6sok=", version = "v5.0.1", ) - go_repository( name = "com_github_satori_go_uuid", build_file_proto_mode = "disable_global", @@ -5661,7 +5377,6 @@ def go_dependencies(): sum = "h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=", version = "v1.2.0", ) - go_repository( name = "com_github_scaleway_scaleway_sdk_go", build_file_proto_mode = "disable_global", @@ -5676,7 +5391,6 @@ def go_dependencies(): sum = "h1:Uel2GXEpJqOWBrlyI+oY9LTiyyjYS17cCYRqP13/SHk=", version = "v2.1.0+incompatible", ) - go_repository( name = "com_github_schollz_progressbar_v3", build_file_proto_mode = "disable_global", @@ -5691,7 +5405,6 @@ def go_dependencies(): sum = "h1:QGadEcsmypxg8gYChRSM2j1edLyE/2j72j+hdmI4BJM=", version = "v2.2.0", ) - go_repository( name = "com_github_sean_seed", build_file_proto_mode = "disable_global", @@ -5699,7 +5412,6 @@ def go_dependencies(): sum = "h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=", version = "v0.0.0-20170313163322-e2103e2c3529", ) - go_repository( name = "com_github_secure_systems_lab_go_securesystemslib", build_file_proto_mode = "disable_global", @@ -5707,7 +5419,6 @@ def go_dependencies(): sum = "h1:b23VGrQhTA8cN2CbBw7/FulN9fTtqYUdS5+Oxzt+DUE=", version = "v0.4.0", ) - go_repository( name = "com_github_segmentio_fasthash", build_file_proto_mode = "disable_global", @@ -5722,7 +5433,6 @@ def go_dependencies(): sum = "h1:sBo2BdShXjmcugAMwjugoGUdUV0pcxY5mW4xKRn3v4c=", version = "v1.0.4", ) - go_repository( name = "com_github_sergi_go_diff", build_file_proto_mode = "disable_global", @@ -5744,7 +5454,6 @@ def go_dependencies(): sum = "h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI=", version = "v1.3.0", ) - go_repository( name = "com_github_shirou_gopsutil_v3", build_file_proto_mode = "disable_global", @@ -5766,7 +5475,6 @@ def go_dependencies(): sum = "h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=", version = "v0.6.4", ) - go_repository( name = "com_github_shopify_goreferrer", build_file_proto_mode = "disable_global", @@ -5781,7 +5489,6 @@ def go_dependencies(): sum = "h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs=", version = "v0.0.0-20171204204709-577dee27f20d", ) - go_repository( name = "com_github_shopspring_decimal", build_file_proto_mode = "disable_global", @@ -5789,7 +5496,6 @@ def go_dependencies(): sum = "h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=", version = "v1.2.0", ) - go_repository( name = "com_github_shurcool_go", build_file_proto_mode = "disable_global", @@ -5804,7 +5510,6 @@ def go_dependencies(): sum = "h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc=", version = "v0.0.0-20170922171312-37c2f522c041", ) - go_repository( name = "com_github_shurcool_httpfs", build_file_proto_mode = "disable_global", @@ -5820,7 +5525,6 @@ def go_dependencies(): sum = "h1:VaS8k40GiNVUxVx0ZUilU38NU6tWUHNQOX342DWtZUM=", version = "v0.0.0-20211015085752-0bad89b3b4df", ) - go_repository( name = "com_github_shurcool_sanitized_anchor_name", build_file_proto_mode = "disable_global", @@ -5835,7 +5539,6 @@ def go_dependencies(): sum = "h1:pXY9qYc/MP5zdvqWEUH6SjNiu7VhSjuVFTFiTcphaLU=", version = "v0.0.0-20200824052919-0d455de96546", ) - go_repository( name = "com_github_sirupsen_logrus", build_file_proto_mode = "disable_global", @@ -5850,7 +5553,6 @@ def go_dependencies(): sum = "h1:MTk78x9FPgDFVFkDLTrsnnfCJl7g1C/nnKvePgrIngE=", version = "v1.1.1", ) - go_repository( name = "com_github_slack_go_slack", build_file_proto_mode = "disable_global", @@ -5858,7 +5560,6 @@ def go_dependencies(): sum = "h1:BGbxa0kMsGEvLOEoZmYs8T1wWfoZXwmQFBb6FgYCXUA=", version = "v0.10.1", ) - go_repository( name = "com_github_smacker_go_tree_sitter", build_file_proto_mode = "disable_global", @@ -5873,7 +5574,6 @@ def go_dependencies(): sum = "h1:Dx1kYM01xsSqKPno3aqLnrwac2LetPvN23diwyr69Qs=", version = "v1.13.0", ) - go_repository( name = "com_github_smartystreets_goconvey", build_file_proto_mode = "disable_global", @@ -5881,7 +5581,6 @@ def go_dependencies(): sum = "h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=", version = "v1.6.4", ) - go_repository( name = "com_github_soheilhy_cmux", build_file_proto_mode = "disable_global", @@ -5889,7 +5588,6 @@ def go_dependencies(): sum = "h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js=", version = "v0.1.5", ) - go_repository( name = "com_github_sourcegraph_conc", build_directives = [ @@ -5907,7 +5605,6 @@ def go_dependencies(): sum = "h1:7MrEECTEf+UmMdllIIbAHng17Uwqm8WbHEUAyv9LMBk=", version = "v0.0.0-20231024141911-299d0263dc95", ) - go_repository( name = "com_github_sourcegraph_go_diff", build_file_proto_mode = "disable_global", @@ -5943,7 +5640,6 @@ def go_dependencies(): sum = "h1:uBLhh66Nf4BcRnvCkMVEuYZ/bQ9ok0rOlEJhfVUpJj4=", version = "v0.0.0-20210910070954-ef39ade5591d", ) - go_repository( name = "com_github_sourcegraph_jsonx", build_file_proto_mode = "disable_global", @@ -5986,7 +5682,6 @@ def go_dependencies(): sum = "h1:7TTODwd/f0hhqmZhbQcKXSkoxSx9OczTWgWPBTxVOrA=", version = "v0.0.0-20231121191755-214be625af21", ) - go_repository( name = "com_github_sourcegraph_managed_services_platform_cdktf_gen_random", build_file_proto_mode = "disable_global", @@ -5994,7 +5689,6 @@ def go_dependencies(): sum = "h1:N0OxHqeujHxvVU666KQY9whauLyw4s3BJGBLxx6gKR0=", version = "v0.0.0-20230822024612-edb48c530722", ) - go_repository( name = "com_github_sourcegraph_mountinfo", build_file_proto_mode = "disable_global", @@ -6009,7 +5703,6 @@ def go_dependencies(): sum = "h1:3A8w5e8HIYPfafHekvmdmmh42RHKGVhmiTZAPJclg7I=", version = "v0.12.0", ) - go_repository( name = "com_github_sourcegraph_scip", # This fixes the build for sourcegraph/scip which depends on sourcegraph/sourcegraph/lib but @@ -6025,7 +5718,6 @@ def go_dependencies(): sum = "h1:o+eq0cjVV3B5ngIBF04Lv3GwttKOuYFF5NTcfXWXzfA=", version = "v0.3.1-0.20230627154934-45df7f6d33fc", ) - go_repository( name = "com_github_sourcegraph_zoekt", build_file_proto_mode = "disable_global", @@ -6033,7 +5725,6 @@ def go_dependencies(): sum = "h1:2xAotLrNXGdj1x8I5yPh89qsesICseLEfEdKpmY3V90=", version = "v0.0.0-20231122214222-d982320abe7b", ) - go_repository( name = "com_github_spaolacci_murmur3", build_file_proto_mode = "disable_global", @@ -6048,7 +5739,6 @@ def go_dependencies(): sum = "h1:9B623Cfs+mclYK6dsae7gLSwuIBHvlgmEup87qpqsAQ=", version = "v0.3.1-0.20230104082527-d6f58551be3f", ) - go_repository( name = "com_github_spf13_afero", build_file_proto_mode = "disable_global", @@ -6091,7 +5781,6 @@ def go_dependencies(): sum = "h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ=", version = "v1.12.0", ) - go_repository( name = "com_github_ssor_bom", build_file_proto_mode = "disable_global", @@ -6099,7 +5788,6 @@ def go_dependencies(): sum = "h1:pvbZ0lM0XWPBqUKqFU8cmavspvIl9nulOYwdy6IFRRo=", version = "v0.0.0-20170718123548-6386211fdfcf", ) - go_repository( name = "com_github_stoewer_go_strcase", build_file_proto_mode = "disable_global", @@ -6107,7 +5795,6 @@ def go_dependencies(): sum = "h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs=", version = "v1.3.0", ) - go_repository( name = "com_github_stretchr_objx", build_file_proto_mode = "disable_global", @@ -6129,7 +5816,6 @@ def go_dependencies(): sum = "h1:LUsDduamlucuNnWcaTbXQ6aLILFcLXADpOzeEH3U+OI=", version = "v0.0.0-20201019212854-469649b16807", ) - go_repository( name = "com_github_stvp_tempredis", build_file_proto_mode = "disable_global", @@ -6137,7 +5823,6 @@ def go_dependencies(): sum = "h1:QVqDTf3h2WHt08YuiTGPZLls0Wq99X9bWd0Q5ZSBesM=", version = "v0.0.0-20181119212430-b82af8480203", ) - go_repository( name = "com_github_subosito_gotenv", build_file_proto_mode = "disable_global", @@ -6145,7 +5830,6 @@ def go_dependencies(): sum = "h1:mjC+YW8QpAdXibNi+vNWgzmgBH4+5l5dCXv8cNysBLI=", version = "v1.3.0", ) - go_repository( name = "com_github_syndtr_goleveldb", build_file_proto_mode = "disable_global", @@ -6160,7 +5844,6 @@ def go_dependencies(): sum = "h1:6yITBqGTE2lEeTPG04SN9W+iWHCRyHqlVYILiSXziwk=", version = "v0.0.0-20190226123456-11a2b8fa57af", ) - go_repository( name = "com_github_tdewolff_minify_v2", build_file_proto_mode = "disable_global", @@ -6175,7 +5858,6 @@ def go_dependencies(): sum = "h1:KCkDvNUMof10e3QExio9OPZJT8SbdKojLBumw8YZycQ=", version = "v2.6.4", ) - go_repository( name = "com_github_temoto_robotstxt", build_file_proto_mode = "disable_global", @@ -6183,7 +5865,6 @@ def go_dependencies(): sum = "h1:W2pOjSJ6SWvldyEuiFXNxz3xZ8aiWX5LbfDiOFd7Fxg=", version = "v1.1.2", ) - go_repository( name = "com_github_throttled_throttled_v2", build_file_proto_mode = "disable_global", @@ -6222,7 +5903,6 @@ def go_dependencies(): sum = "h1:NSWpaDaurcAJY7PkL8Xt0PhZE7qpvbZl5ljd8r6U0bI=", version = "v0.0.0-20190920132354-ee03d75cd160", ) # keep - go_repository( name = "com_github_tj_go_naturaldate", build_file_proto_mode = "disable_global", @@ -6230,7 +5910,6 @@ def go_dependencies(): sum = "h1:OgJIPkR/Jk4bFMBLbxZ8w+QUxwjqSvzd9x+yXocY4RI=", version = "v1.3.0", ) - go_repository( name = "com_github_tklauser_go_sysconf", build_file_proto_mode = "disable_global", @@ -6252,7 +5931,6 @@ def go_dependencies(): sum = "h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA=", version = "v0.0.0-20201229170055-e5319fda7802", ) - go_repository( name = "com_github_tomnomnom_linkheader", build_file_proto_mode = "disable_global", @@ -6281,7 +5959,6 @@ def go_dependencies(): sum = "h1:5LC1eDWiBNflnTF1prCiX09yfNHIxDC/aukdhCdTyb0=", version = "v1.0.0", ) - go_repository( name = "com_github_tonistiigi_units", build_file_proto_mode = "disable_global", @@ -6310,7 +5987,6 @@ def go_dependencies(): sum = "h1:HhJkSzDDlVSVIVt7pDJwCHQj67k7A5EeBgPmeD+pVsQ=", version = "v1.0.0", ) - go_repository( name = "com_github_uber_gonduit", build_file_proto_mode = "disable_global", @@ -6332,7 +6008,6 @@ def go_dependencies(): sum = "h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg=", version = "v2.4.1+incompatible", ) - go_repository( name = "com_github_ugorji_go", build_file_proto_mode = "disable_global", @@ -6354,7 +6029,6 @@ def go_dependencies(): sum = "h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8=", version = "v0.5.10", ) - go_repository( name = "com_github_unknwon_com", build_file_proto_mode = "disable_global", @@ -6376,7 +6050,6 @@ def go_dependencies(): sum = "h1:igJgVw1JdKH+trcLWLeLwZjU9fEfPesQ+9/e4MQ44S8=", version = "v1.22.12", ) - go_repository( name = "com_github_urfave_cli_v2", build_file_proto_mode = "disable_global", @@ -6391,7 +6064,6 @@ def go_dependencies(): sum = "h1:kIimOitoypq34K7TG7DUaJ9kq/N4Ofuwi1sjz0KipXc=", version = "v1.0.0", ) - go_repository( name = "com_github_valyala_bytebufferpool", build_file_proto_mode = "disable_global", @@ -6413,7 +6085,6 @@ def go_dependencies(): sum = "h1:tAKFnnwmeMGPbwJ7IwxcTPCNr3uIzoIj3/Fh90ra4xc=", version = "v1.6.3", ) - go_repository( name = "com_github_valyala_fasttemplate", build_file_proto_mode = "disable_global", @@ -6421,7 +6092,6 @@ def go_dependencies(): sum = "h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=", version = "v1.2.2", ) - go_repository( name = "com_github_vbatts_tar_split", build_file_proto_mode = "disable_global", @@ -6429,7 +6099,6 @@ def go_dependencies(): sum = "h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck=", version = "v0.11.3", ) - go_repository( name = "com_github_vektah_gqlparser", build_file_proto_mode = "disable_global", @@ -6444,7 +6113,6 @@ def go_dependencies(): sum = "h1:C02NsyEsL4TXJB7ndonqTfuQOL4XPIu0aAWugdmTgmc=", version = "v2.4.5", ) - go_repository( name = "com_github_vmihailenco_msgpack_v5", build_file_proto_mode = "disable_global", @@ -6459,7 +6127,6 @@ def go_dependencies(): sum = "h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=", version = "v2.0.0", ) - go_repository( name = "com_github_vultr_govultr_v2", build_file_proto_mode = "disable_global", @@ -6467,7 +6134,6 @@ def go_dependencies(): sum = "h1:gej/rwr91Puc/tgh+j33p/BLR16UrIPnSr+AIwYWZQs=", version = "v2.17.2", ) - go_repository( name = "com_github_wk8_go_ordered_map_v2", build_file_proto_mode = "disable_global", @@ -6475,7 +6141,6 @@ def go_dependencies(): sum = "h1:jLbYIFyWQMUwHLO20cImlCRBoNc5lp0nmE2dvwcxc7k=", version = "v2.1.5", ) - go_repository( name = "com_github_wsxiaoys_terminal", build_file_proto_mode = "disable_global", @@ -6539,7 +6204,6 @@ def go_dependencies(): sum = "h1:n+nNi93yXLkJvKwXNP9d55HC7lGK4H/SRcwB5IaUZLo=", version = "v0.0.0-20180714160509-73f8eece6fdc", ) - go_repository( name = "com_github_xeipuuv_gojsonpointer", build_file_proto_mode = "disable_global", @@ -6589,7 +6253,6 @@ def go_dependencies(): sum = "h1:G/1DjNkPpfZCFt9CSh6b5/nY4VimlbHF3Rh4obvtzDk=", version = "v1.1.0", ) - go_repository( name = "com_github_xordataexchange_crypt", build_file_proto_mode = "disable_global", @@ -6611,7 +6274,6 @@ def go_dependencies(): sum = "h1:NsJQS9YhI1+RDsFqE9mW5XIQmPmdF/qa8qQOLZN8XEA=", version = "v0.23.0", ) - go_repository( name = "com_github_yohcop_openid_go", build_file_proto_mode = "disable_global", @@ -6633,7 +6295,6 @@ def go_dependencies(): sum = "h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=", version = "v0.0.0-20181117223130-1be2e3e5546d", ) - go_repository( name = "com_github_yuin_goldmark", build_file_proto_mode = "disable_global", @@ -6711,7 +6372,6 @@ def go_dependencies(): sum = "h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0=", version = "v1.0.2", ) - go_repository( name = "com_github_zenazn_goji", build_file_proto_mode = "disable_global", @@ -6719,185 +6379,173 @@ def go_dependencies(): sum = "h1:4lbD8Mx2h7IvloP7r2C0D6ltZP6Ufip8Hn0wmSK5LR8=", version = "v1.0.1", ) - go_repository( name = "com_google_cloud_go", - build_directives = [ - # @go_googleapis is the modern version of @org_golang_google_genproto - # use @go_googleapis to avoid dependency conflicts between the two - "gazelle:resolve go google.golang.org/genproto/googleapis/api/metric @go_googleapis//google/api:metric_go_proto", # keep - "gazelle:resolve go google.golang.org/genproto/googleapis/api/annotations @go_googleapis//google/api:annotations_go_proto", # keep - "gazelle:resolve go google.golang.org/genproto/googleapis/api @go_googleapis//google/api:api_go_proto", # keep - ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go", - sum = "h1:e7ITSqGFFk4rbz/JFIqZh3G4VEHguhAL4BQcFlWtU68=", - version = "v0.110.9", + sum = "h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y=", + version = "v0.110.10", ) go_repository( name = "com_google_cloud_go_accessapproval", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/accessapproval", - sum = "h1:MOfZ2ncDO+nctNmOYqN8kCb8kHkVJU1nqGNGDa7qGQk=", - version = "v1.7.3", + sum = "h1:ZvLvJ952zK8pFHINjpMBY5k7LTAp/6pBf50RDMRgBUI=", + version = "v1.7.4", ) go_repository( name = "com_google_cloud_go_accesscontextmanager", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/accesscontextmanager", - sum = "h1:4vUQZ3OqH3YWo18AgQgvked8NSszsZQfURsYurRHoZI=", - version = "v1.8.3", + sum = "h1:Yo4g2XrBETBCqyWIibN3NHNPQKUfQqti0lI+70rubeE=", + version = "v1.8.4", ) go_repository( name = "com_google_cloud_go_aiplatform", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/aiplatform", - sum = "h1:DhbEMbUZTbsIQBhErvo5GlQCymVM50aoP3UDcrnxuOo=", - version = "v1.51.2", + sum = "h1:wH7OYl9Vq/5tupok0BPTFY9xaTLb0GxkReHtB5PF7cI=", + version = "v1.54.0", ) go_repository( name = "com_google_cloud_go_analytics", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/analytics", - sum = "h1:ccW5bYKOrgXAbvIT/mxqk2rou7CfrUdl5G5bJDmDeVA=", - version = "v0.21.5", + sum = "h1:fnV7B8lqyEYxCU0LKk+vUL7mTlqRAq4uFlIthIdr/iA=", + version = "v0.21.6", ) go_repository( name = "com_google_cloud_go_apigateway", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/apigateway", - sum = "h1:8zRrVIaGC5dQeq3lBUn7Kchea8ao0bUILXeY8kBzF3M=", - version = "v1.6.3", + sum = "h1:VVIxCtVerchHienSlaGzV6XJGtEM9828Erzyr3miUGs=", + version = "v1.6.4", ) go_repository( name = "com_google_cloud_go_apigeeconnect", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/apigeeconnect", - sum = "h1:piXKIidKtP/FQ44dnYXGF+WSDsegdPmj/EKk6Hc3sR4=", - version = "v1.6.3", + sum = "h1:jSoGITWKgAj/ssVogNE9SdsTqcXnryPzsulENSRlusI=", + version = "v1.6.4", ) go_repository( name = "com_google_cloud_go_apigeeregistry", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/apigeeregistry", - sum = "h1:GuexCawKvjXeeLgBYJoS1m7TCWvbYrmb9KNZjf5EdxA=", - version = "v0.8.1", + sum = "h1:DSaD1iiqvELag+lV4VnnqUUFd8GXELu01tKVdWZrviE=", + version = "v0.8.2", ) - go_repository( name = "com_google_cloud_go_appengine", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/appengine", - sum = "h1:7hfqb1kKeB/jAyzOiBB00cQ71GYYLal85VH+uJhE5kc=", - version = "v1.8.3", + sum = "h1:Qub3fqR7iA1daJWdzjp/Q0Jz0fUG0JbMc7Ui4E9IX/E=", + version = "v1.8.4", ) go_repository( name = "com_google_cloud_go_area120", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/area120", - sum = "h1:wcVVp8EmTVVXJNU8QHDOZOHC5iJYNoU0jw8daZyvPQg=", - version = "v0.8.3", + sum = "h1:YnSO8m02pOIo6AEOgiOoUDVbw4pf+bg2KLHi4rky320=", + version = "v0.8.4", ) go_repository( name = "com_google_cloud_go_artifactregistry", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/artifactregistry", - sum = "h1:rE++Rall/sWmbWkkQEfNoXC7GkCP7hqqd7NeDNEfGqI=", - version = "v1.14.4", + sum = "h1:/hQaadYytMdA5zBh+RciIrXZQBWK4vN7EUsrQHG+/t8=", + version = "v1.14.6", ) go_repository( name = "com_google_cloud_go_asset", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/asset", - sum = "h1:B3OhouMFZNnUpB26Ex1izZ3OBh9R3iAGWO8raLOZ0jA=", - version = "v1.15.2", + sum = "h1:uI8Bdm81s0esVWbWrTHcjFDFKNOa9aB7rI1vud1hO84=", + version = "v1.15.3", ) go_repository( name = "com_google_cloud_go_assuredworkloads", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/assuredworkloads", - sum = "h1:1eef9dFe2ylYw/6Nv6vP2t4xEeUHGIZDKRBwFbsiQUs=", - version = "v1.11.3", + sum = "h1:FsLSkmYYeNuzDm8L4YPfLWV+lQaUrJmH5OuD37t1k20=", + version = "v1.11.4", ) go_repository( name = "com_google_cloud_go_automl", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/automl", - sum = "h1:8gL+S9PpsYrqa9v7PDGMWEb42EWLGlxjdjMOB7/wU1c=", - version = "v1.13.3", + sum = "h1:i9tOKXX+1gE7+rHpWKjiuPfGBVIYoWvLNIGpWgPtF58=", + version = "v1.13.4", ) go_repository( name = "com_google_cloud_go_baremetalsolution", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/baremetalsolution", - sum = "h1:nS60vlA7w2GTXpQ7a6y5z4jjJF46kshx3G2V99WLsbA=", - version = "v1.2.2", + sum = "h1:oQiFYYCe0vwp7J8ZmF6siVKEumWtiPFJMJcGuyDVRUk=", + version = "v1.2.3", ) go_repository( name = "com_google_cloud_go_batch", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/batch", - sum = "h1:wa8ZC1wMJLqnwWsGiVsntBIEYcIP+HUyAcKc0DhoDE4=", - version = "v1.6.1", + sum = "h1:mPiIH20a5NU02rucbAmLeO4sLPO9hrTK0BLjdHyW8xw=", + version = "v1.6.3", ) go_repository( name = "com_google_cloud_go_beyondcorp", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/beyondcorp", - sum = "h1:/TrG41OifURpA7weWrG9CROcBapc0exDiDaL9ZgplXE=", - version = "v1.0.2", + sum = "h1:VXf9SnrnSmj2BF2cHkoTHvOUp8gjsz1KJFOMW7czdsY=", + version = "v1.0.3", ) go_repository( name = "com_google_cloud_go_bigquery", - build_directives = [ - "gazelle:resolve go google.golang.org/genproto/googleapis/api/annotations @go_googleapis//google/api:annotations_go_proto", # keep - ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/bigquery", - sum = "h1:LHIc9E7Kw+ftFpQFKzZYBB88IAFz7qONawXXx0F3QBo=", - version = "v1.56.0", + sum = "h1:FiULdbbzUxWD0Y4ZGPSVCDLvqRSyCIO6zKV7E2nf5uA=", + version = "v1.57.1", ) go_repository( name = "com_google_cloud_go_billing", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/billing", - sum = "h1:PIpLB0uqYRKyzbPZNQV+FxvBcKtZH+Io9eK/lC8bRSE=", - version = "v1.17.3", + sum = "h1:77/4kCqzH6Ou5CCDzNmqmboE+WvbwFBJmw1QZQz19AI=", + version = "v1.17.4", ) go_repository( name = "com_google_cloud_go_binaryauthorization", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/binaryauthorization", - sum = "h1:pSb8eiGofANJbRNTwQDiLJhMjng4tvFEVDEbaf2UWwM=", - version = "v1.7.2", + sum = "h1:3R6WYn1JKIaVicBmo18jXubu7xh4mMkmbIgsTXk0cBA=", + version = "v1.7.3", ) go_repository( name = "com_google_cloud_go_certificatemanager", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/certificatemanager", - sum = "h1:dOD0bZPTwtFo/h8CwCBpu/m3B4ugm2GFhcym/tuoaJg=", - version = "v1.7.3", + sum = "h1:5YMQ3Q+dqGpwUZ9X5sipsOQ1fLPsxod9HNq0+nrqc6I=", + version = "v1.7.4", ) go_repository( name = "com_google_cloud_go_channel", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/channel", - sum = "h1:LcaJyv6riQA39bvkPigOJvvNJM7Ls5x0hjZAqcuxq60=", - version = "v1.17.2", + sum = "h1:Rd4+fBrjiN6tZ4TR8R/38elkyEkz6oogGDr7jDyjmMY=", + version = "v1.17.3", ) go_repository( name = "com_google_cloud_go_cloudbuild", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/cloudbuild", - sum = "h1:Go7wFI+P5QyuSt1sZtb8wx+M+MGjyfR+xgOzjuZMDF8=", - version = "v1.14.2", + sum = "h1:9IHfEMWdCklJ1cwouoiQrnxmP0q3pH7JUt8Hqx4Qbck=", + version = "v1.15.0", ) go_repository( name = "com_google_cloud_go_clouddms", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/clouddms", - sum = "h1:qxyV8j7ckzzt5gcX1u5qkteKBDMd9Q29TPs7uZVV6bA=", - version = "v1.7.2", + sum = "h1:xe/wJKz55VO1+L891a1EG9lVUgfHr9Ju/I3xh1nwF84=", + version = "v1.7.3", ) go_repository( name = "com_google_cloud_go_cloudsqlconn", @@ -6906,20 +6554,19 @@ def go_dependencies(): sum = "h1:rMtPv66pkuk2K1ciCicjZY8Ma1DSyOYSoqwPUw/Timo=", version = "v1.5.1", ) - go_repository( name = "com_google_cloud_go_cloudtasks", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/cloudtasks", - sum = "h1:ajm0DZTTaGKeawbwuFXZfPC7IIeLg6eYJFH125i18tE=", - version = "v1.12.3", + sum = "h1:5xXuFfAjg0Z5Wb81j2GAbB3e0bwroCeSF+5jBn/L650=", + version = "v1.12.4", ) go_repository( name = "com_google_cloud_go_compute", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/compute", - sum = "h1:nWEMDhgbBkBJjfpVySqU4jgWdc22PLR0o4vEexZHers=", - version = "v1.23.2", + sum = "h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk=", + version = "v1.23.3", ) go_repository( name = "com_google_cloud_go_compute_metadata", @@ -6932,79 +6579,78 @@ def go_dependencies(): name = "com_google_cloud_go_contactcenterinsights", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/contactcenterinsights", - sum = "h1:xTLvUYWMwNdQeAr9FECdenht43In0s/KAyFHSuKuZR4=", - version = "v1.11.2", + sum = "h1:wP41IUA4ucMVooj/TP53jd7vbNjWrDkAPOeulVJGT5U=", + version = "v1.12.0", ) go_repository( name = "com_google_cloud_go_container", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/container", - sum = "h1:vNQsufqH93Df+U1kNNgjQ6UIQ1v4FUdQ9QHdDiiDuss=", - version = "v1.26.2", + sum = "h1:/o82CFWXIYnT9p/07SnRgybqL3Pmmu86jYIlzlJVUBY=", + version = "v1.28.0", ) go_repository( name = "com_google_cloud_go_containeranalysis", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/containeranalysis", - sum = "h1:AKyhqlO1Cjdrp7Ht0C3uQALliri2RegVRpEZseOKwWo=", - version = "v0.11.2", + sum = "h1:5rhYLX+3a01drpREqBZVXR9YmWH45RnML++8NsCtuD8=", + version = "v0.11.3", ) go_repository( name = "com_google_cloud_go_datacatalog", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datacatalog", - sum = "h1:4ydlNOtwjkdXjXWd+SkUBh+DyVmM/bJKiktAHwqaEeU=", - version = "v1.18.2", + sum = "h1:rbYNmHwvAOOwnW2FPXYkaK3Mf1MmGqRzK0mMiIEyLdo=", + version = "v1.19.0", ) go_repository( name = "com_google_cloud_go_dataflow", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataflow", - sum = "h1:v+wjNFEugYBYaowmqJuHK1piqNCx9pGvUWPEhspRFEw=", - version = "v0.9.3", + sum = "h1:7VmCNWcPJBS/srN2QnStTB6nu4Eb5TMcpkmtaPVhRt4=", + version = "v0.9.4", ) go_repository( name = "com_google_cloud_go_dataform", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataform", - sum = "h1:jhr9PQtaH59nfZbI7tP0jjIl9SlfnRgteAQHD+ZT2xA=", - version = "v0.8.3", + sum = "h1:jV+EsDamGX6cE127+QAcCR/lergVeeZdEQ6DdrxW3sQ=", + version = "v0.9.1", ) go_repository( name = "com_google_cloud_go_datafusion", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datafusion", - sum = "h1:v5HtQxvFLVHgbJXUdd4zbNZcYgknRUEW9ukOYpwf6d0=", - version = "v1.7.3", + sum = "h1:Q90alBEYlMi66zL5gMSGQHfbZLB55mOAg03DhwTTfsk=", + version = "v1.7.4", ) go_repository( name = "com_google_cloud_go_datalabeling", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datalabeling", - sum = "h1:wYqhVo4f5akRW2yZfGQ56fUCi8FCgYzKh1UvBeg7edE=", - version = "v0.8.3", + sum = "h1:zrq4uMmunf2KFDl/7dS6iCDBBAxBnKVDyw6+ajz3yu0=", + version = "v0.8.4", ) go_repository( name = "com_google_cloud_go_dataplex", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataplex", - sum = "h1:D+UlBA3Z+k/Z93a1Wh3uZrUbc4aX7c7ifF/m/s5H6fQ=", - version = "v1.10.2", + sum = "h1:AfFFR15Ifh4U+Me1IBztrSd5CrasTODzy3x8KtDyHdc=", + version = "v1.11.2", ) go_repository( name = "com_google_cloud_go_dataproc_v2", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataproc/v2", - sum = "h1:XRnxqa08/P2LpXTB+OMmPAfhT7GGyftgslKvzv330gM=", - version = "v2.2.2", + sum = "h1:tTVP9tTxmc8fixxOd/8s6Q6Pz/+yzn7r7XdZHretQH0=", + version = "v2.3.0", ) - go_repository( name = "com_google_cloud_go_dataqna", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataqna", - sum = "h1:Nr5t9MoTDxlOc7lVsydsIZ31ZdxOznCyKf5qFCiPu4o=", - version = "v0.8.3", + sum = "h1:NJnu1kAPamZDs/if3bJ3+Wb6tjADHKL83NUWsaIp2zg=", + version = "v0.8.4", ) go_repository( name = "com_google_cloud_go_datastore", @@ -7017,50 +6663,50 @@ def go_dependencies(): name = "com_google_cloud_go_datastream", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datastream", - sum = "h1:94RSCSWUXpbXvTrISGKZWbJqPTTSvMxErCZiHrEspEM=", - version = "v1.10.2", + sum = "h1:Z2sKPIB7bT2kMW5Uhxy44ZgdJzxzE5uKjavoW+EuHEE=", + version = "v1.10.3", ) go_repository( name = "com_google_cloud_go_deploy", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/deploy", - sum = "h1:LoaXLE32tVW/ULfKP8iX3USJZopWUTjVHiIGc/CVcWI=", - version = "v1.14.1", + sum = "h1:ZdmYzRMTGkVyP1nXEUat9FpbJGJemDcNcx82RSSOElc=", + version = "v1.15.0", ) go_repository( name = "com_google_cloud_go_dialogflow", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dialogflow", - sum = "h1:y2I9aHjFrszP2mAQNFCkfwzyli1avPiw/OQt1K3YV8Q=", - version = "v1.44.2", + sum = "h1:cK/f88KX+YVR4tLH4clMQlvrLWD2qmKJQziusjGPjmc=", + version = "v1.44.3", ) go_repository( name = "com_google_cloud_go_dlp", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dlp", - sum = "h1:UWS2DOpyUuK/ig3ZWzJ0IcZRYsRcRkgD1NSaoSU1upw=", - version = "v1.10.3", + sum = "h1:OFlXedmPP/5//X1hBEeq3D9kUVm9fb6ywYANlpv/EsQ=", + version = "v1.11.1", ) go_repository( name = "com_google_cloud_go_documentai", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/documentai", - sum = "h1:AQ9/q6mFBpHmWx7k1fB+S1ut8mv03XUo9sdOuEWXxl8=", - version = "v1.23.4", + sum = "h1:KAlzT+q8qvRxAmhsJUvLtfFHH0PNvz3M79H6CgVBKL8=", + version = "v1.23.5", ) go_repository( name = "com_google_cloud_go_domains", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/domains", - sum = "h1:/NaEe9O1vhHt+j/VDPNJt8oDgGthsY+hbjbkBBOWorw=", - version = "v0.9.3", + sum = "h1:ua4GvsDztZ5F3xqjeLKVRDeOvJshf5QFgWGg1CKti3A=", + version = "v0.9.4", ) go_repository( name = "com_google_cloud_go_edgecontainer", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/edgecontainer", - sum = "h1:cpoLa8/f2xPQFfoXRztRMJVVsQ/pxY+fra1QGQjxjyw=", - version = "v1.1.3", + sum = "h1:Szy3Q/N6bqgQGyxqjI+6xJZbmvPvnFHp3UZr95DKcQ0=", + version = "v1.1.4", ) go_repository( name = "com_google_cloud_go_errorreporting", @@ -7069,27 +6715,26 @@ def go_dependencies(): sum = "h1:kj1XEWMu8P0qlLhm3FwcaFsUvXChV/OraZwA70trRR0=", version = "v0.3.0", ) - go_repository( name = "com_google_cloud_go_essentialcontacts", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/essentialcontacts", - sum = "h1:kCxxUXP61/36M9KjiwvwSDAjtpjiv2apmIbBRdBHNXg=", - version = "v1.6.4", + sum = "h1:S2if6wkjR4JCEAfDtIiYtD+sTz/oXjh2NUG4cgT1y/Q=", + version = "v1.6.5", ) go_repository( name = "com_google_cloud_go_eventarc", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/eventarc", - sum = "h1:8LX0xmWk8qj4BZJ5rwQosVW/icozTsMxUimgz2Hlw5s=", - version = "v1.13.2", + sum = "h1:+pFmO4eu4dOVipSaFBLkmqrRYG94Xl/TQZFOeohkuqU=", + version = "v1.13.3", ) go_repository( name = "com_google_cloud_go_filestore", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/filestore", - sum = "h1:Rx1EFBco717fTbeQLhAgEdPStqAzlKywMx37SvTOFXI=", - version = "v1.7.3", + sum = "h1:/+wUEGwk3x3Kxomi2cP5dsR8+SIXxo7M0THDjreFSYo=", + version = "v1.8.0", ) go_repository( name = "com_google_cloud_go_firestore", @@ -7098,105 +6743,96 @@ def go_dependencies(): sum = "h1:8aLcKnMPoldYU3YHgu4t2exrKhLQkqaXAGqT0ljrFVw=", version = "v1.14.0", ) - go_repository( name = "com_google_cloud_go_functions", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/functions", - sum = "h1:5bAA0oK69rdOzSyJGkEod90R9zpok2CRPi1du0gwFtc=", - version = "v1.15.3", + sum = "h1:ZjdiV3MyumRM6++1Ixu6N0VV9LAGlCX4AhW6Yjr1t+U=", + version = "v1.15.4", ) - go_repository( name = "com_google_cloud_go_gkebackup", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkebackup", - sum = "h1:B1QCKBePacacXFflG3Sc1MP4zWkeN1ZvfAT0AEAEgIc=", - version = "v1.3.3", + sum = "h1:KhnOrr9A1tXYIYeXKqCKbCI8TL2ZNGiD3dm+d7BDUBg=", + version = "v1.3.4", ) go_repository( name = "com_google_cloud_go_gkeconnect", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkeconnect", - sum = "h1:Qex3VdGKPM9cRbEIe7FAho8CAMQOx4u+m1pwRU515jY=", - version = "v0.8.3", + sum = "h1:1JLpZl31YhQDQeJ98tK6QiwTpgHFYRJwpntggpQQWis=", + version = "v0.8.4", ) go_repository( name = "com_google_cloud_go_gkehub", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkehub", - sum = "h1:b7/eKuEEfeQeRIAz//v6Y3ZjNAYi81Eay/a8kqaYSKI=", - version = "v0.14.3", + sum = "h1:J5tYUtb3r0cl2mM7+YHvV32eL+uZQ7lONyUZnPikCEo=", + version = "v0.14.4", ) go_repository( name = "com_google_cloud_go_gkemulticloud", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkemulticloud", - sum = "h1:eBkfrcLHG+uaaVVbKMKS0qA1M1yBU3pdiHn1rZUCv0s=", - version = "v1.0.2", + sum = "h1:NmJsNX9uQ2CT78957xnjXZb26TDIMvv+d5W2vVUt0Pg=", + version = "v1.0.3", ) - go_repository( name = "com_google_cloud_go_gsuiteaddons", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gsuiteaddons", - sum = "h1:fjt+72G2ZavxZ4JROTjrvjV6OJs/fHr9Uo+aOGDcH20=", - version = "v1.6.3", + sum = "h1:uuw2Xd37yHftViSI8J2hUcCS8S7SH3ZWH09sUDLW30Q=", + version = "v1.6.4", ) go_repository( name = "com_google_cloud_go_iam", - build_directives = [ - "gazelle:resolve go google.golang.org/genproto/googleapis/api/annotations @go_googleapis//google/api:annotations_go_proto", # keep - ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/iam", - sum = "h1:K6n/GZHFTtEoKT5aUG3l9diPi0VduZNQ1PfdnpkkIFk=", - version = "v1.1.4", + sum = "h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI=", + version = "v1.1.5", ) go_repository( name = "com_google_cloud_go_iap", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/iap", - sum = "h1:vuyDICrMq8z6flZaptQWOxN+XBHtGKWKYlAir8LmTgk=", - version = "v1.9.2", + sum = "h1:M4vDbQ4TLXdaljXVZSwW7XtxpwXUUarY2lIs66m0aCM=", + version = "v1.9.3", ) go_repository( name = "com_google_cloud_go_ids", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/ids", - sum = "h1:ZgT7bJIu+7toDJNjX4Uiao/9+82T6ZDGySoMxbvdZcY=", - version = "v1.4.3", + sum = "h1:VuFqv2ctf/A7AyKlNxVvlHTzjrEvumWaZflUzBPz/M4=", + version = "v1.4.4", ) go_repository( name = "com_google_cloud_go_iot", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/iot", - sum = "h1:Cbn4wsDXgIwqAAOYIyto4e6aXJDhlZiqf2wO+9h8pEg=", - version = "v1.7.3", + sum = "h1:m1WljtkZnvLTIRYW1YTOv5A6H1yKgLHR6nU7O8yf27w=", + version = "v1.7.4", ) go_repository( name = "com_google_cloud_go_kms", - build_directives = [ - "gazelle:resolve go google.golang.org/genproto/googleapis/api/annotations @go_googleapis//google/api:annotations_go_proto", # keep - ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/kms", - sum = "h1:gEZzC54ZBI+aeW8/jg9tgz9KR4Aa+WEDPbdGIV3iJ7A=", - version = "v1.15.4", + sum = "h1:pj1sRfut2eRbD9pFRjNnPNg/CzJPuQAzUujMIM1vVeM=", + version = "v1.15.5", ) go_repository( name = "com_google_cloud_go_language", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/language", - sum = "h1:7TnnZKy3sspQ3F1mzwEv3eaptTwGrReVXEo8Oozi10w=", - version = "v1.12.1", + sum = "h1:zg9uq2yS9PGIOdc0Kz/l+zMtOlxKWonZjjo5w5YPG2A=", + version = "v1.12.2", ) go_repository( name = "com_google_cloud_go_lifesciences", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/lifesciences", - sum = "h1:QcPrlyo/F7IXJXk8CkF4yGEwX4CTLAKUE/My4l3KF/8=", - version = "v0.9.3", + sum = "h1:rZEI/UxcxVKEzyoRS/kdJ1VoolNItRWjNN0Uk9tfexg=", + version = "v0.9.4", ) go_repository( name = "com_google_cloud_go_logging", @@ -7205,149 +6841,138 @@ def go_dependencies(): sum = "h1:26skQWPeYhvIasWKm48+Eq7oUqdcdbwsCVwz5Ys0FvU=", version = "v1.8.1", ) - go_repository( name = "com_google_cloud_go_longrunning", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/longrunning", - sum = "h1:maKa7O9YTzmVzwdlRKr981U1Ys2auup6rpeMt8y3+RU=", - version = "v0.5.3", + sum = "h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg=", + version = "v0.5.4", ) go_repository( name = "com_google_cloud_go_managedidentities", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/managedidentities", - sum = "h1:hfWT2pidjP19mYJxTWMbfj8/wj9OZNUtB/oZ3HW0K8g=", - version = "v1.6.3", + sum = "h1:SF/u1IJduMqQQdJA4MDyivlIQ4SrV5qAawkr/ZEREkY=", + version = "v1.6.4", ) go_repository( name = "com_google_cloud_go_maps", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/maps", - sum = "h1:j5AJNj9mbPTwqrqFmAHzMY3UX+Eddj/jC9xu7qFMVhk=", - version = "v1.5.1", + sum = "h1:2+eMp/1MvMPp5qrSOd3vtnLKa/pylt+krVRqET3jWsM=", + version = "v1.6.1", ) - go_repository( name = "com_google_cloud_go_mediatranslation", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/mediatranslation", - sum = "h1:3B75VHLlp4M+W10NHEOAl30q7ZSd0D/i8LqRQqxqMM0=", - version = "v0.8.3", + sum = "h1:VRCQfZB4s6jN0CSy7+cO3m4ewNwgVnaePanVCQh/9Z4=", + version = "v0.8.4", ) go_repository( name = "com_google_cloud_go_memcache", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/memcache", - sum = "h1:yD1ZDTXP7YfT5lBLRNioqZ427iaHaoqW5aMKXtM0acQ=", - version = "v1.10.3", + sum = "h1:cdex/ayDd294XBj2cGeMe6Y+H1JvhN8y78B9UW7pxuQ=", + version = "v1.10.4", ) go_repository( name = "com_google_cloud_go_metastore", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/metastore", - sum = "h1:ATz8sWfuHmlqAkPpWGRXQzZFUsgbDkAhZOyNlce83vA=", - version = "v1.13.2", + sum = "h1:94l/Yxg9oBZjin2bzI79oK05feYefieDq0o5fjLSkC8=", + version = "v1.13.3", ) go_repository( name = "com_google_cloud_go_monitoring", - build_directives = [ - # @go_googleapis is the modern version of @org_golang_google_genproto - # use @go_googleapis to avoid dependency conflicts between the two - "gazelle:resolve go google.golang.org/genproto/googleapis/api/metric @go_googleapis//google/api:metric_go_proto", # keep - "gazelle:resolve go google.golang.org/genproto/googleapis/api @go_googleapis//google/api:api_go_proto", # keep - "gazelle:resolve go google.golang.org/genproto/googleapis/api/annotations @go_googleapis//google/api:annotations_go_proto", # keep - "gazelle:resolve go google.golang.org/genproto/googleapis/api/label @go_googleapis//google/api:label_go_proto", # keep - "gazelle:resolve go google.golang.org/genproto/googleapis/api/monitoredres @go_googleapis//google/api:monitoredres_go_proto", # keep - ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/monitoring", - sum = "h1:gx7BDZcoRqX5DfuJzw9LdhVjEkqCLmDXScdnrmIy9ik=", - version = "v1.16.2", + sum = "h1:mf2SN9qSoBtIgiMA4R/y4VADPWZA7VCNJA079qLaZQ8=", + version = "v1.16.3", ) go_repository( name = "com_google_cloud_go_networkconnectivity", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/networkconnectivity", - sum = "h1:tbzauwO86MlZ7+7OmxA0+PnEEgK2AXo9lGrUIL0++qc=", - version = "v1.14.2", + sum = "h1:e9lUkCe2BexsqsUc2bjV8+gFBpQa54J+/F3qKVtW+wA=", + version = "v1.14.3", ) go_repository( name = "com_google_cloud_go_networkmanagement", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/networkmanagement", - sum = "h1:v5RWynWBSX91pDnGp/7+5ME0/wLsjIzrC6vlICE/YPs=", - version = "v1.9.2", + sum = "h1:HsQk4FNKJUX04k3OI6gUsoveiHMGvDRqlaFM2xGyvqU=", + version = "v1.9.3", ) go_repository( name = "com_google_cloud_go_networksecurity", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/networksecurity", - sum = "h1:t1QESL7xdq/fIoPHrduMWsMDYnM092UUuuiDvnXgrsk=", - version = "v0.9.3", + sum = "h1:947tNIPnj1bMGTIEBo3fc4QrrFKS5hh0bFVsHmFm4Vo=", + version = "v0.9.4", ) go_repository( name = "com_google_cloud_go_notebooks", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/notebooks", - sum = "h1:fW/P76U437Eyzl1qEwqQSPeToiMB1LM1QyRGR0FpsG4=", - version = "v1.11.1", + sum = "h1:eTOTfNL1yM6L/PCtquJwjWg7ZZGR0URFaFgbs8kllbM=", + version = "v1.11.2", ) go_repository( name = "com_google_cloud_go_optimization", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/optimization", - sum = "h1:sY8QjN37zKQfXCZaUSfGvpVGqyFXO2/vNvrhXMj28eI=", - version = "v1.6.1", + sum = "h1:iFsoexcp13cGT3k/Hv8PA5aK+FP7FnbhwDO9llnruas=", + version = "v1.6.2", ) go_repository( name = "com_google_cloud_go_orchestration", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/orchestration", - sum = "h1:+oaZtNXbCE9QBV/hCUo8Kf5VFILMfg2KR1n6oh8LB/o=", - version = "v1.8.3", + sum = "h1:kgwZ2f6qMMYIVBtUGGoU8yjYWwMTHDanLwM/CQCFaoQ=", + version = "v1.8.4", ) go_repository( name = "com_google_cloud_go_orgpolicy", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/orgpolicy", - sum = "h1:oqXeClkeznFGEd/rcu4T0WYOTh5ec6OkkXskaShD4hM=", - version = "v1.11.3", + sum = "h1:RWuXQDr9GDYhjmrredQJC7aY7cbyqP9ZuLbq5GJGves=", + version = "v1.11.4", ) go_repository( name = "com_google_cloud_go_osconfig", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/osconfig", - sum = "h1:PumxpZU71EpygOx0zkrx2HxlMvpyUmENB4e5nQc3+KM=", - version = "v1.12.3", + sum = "h1:OrRCIYEAbrbXdhm13/JINn9pQchvTTIzgmOCA7uJw8I=", + version = "v1.12.4", ) go_repository( name = "com_google_cloud_go_oslogin", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/oslogin", - sum = "h1:kAQFiAT/+jefVnYYNT4+PxdHrZTFSgeJoE6ykhaGlNo=", - version = "v1.12.1", + sum = "h1:NP/KgsD9+0r9hmHC5wKye0vJXVwdciv219DtYKYjgqE=", + version = "v1.12.2", ) go_repository( name = "com_google_cloud_go_phishingprotection", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/phishingprotection", - sum = "h1:ZVYpZWmg8leUAp4y5XzhxropUfkcAmwOwsmr4i1D1Mc=", - version = "v0.8.3", + sum = "h1:sPLUQkHq6b4AL0czSJZ0jd6vL55GSTHz2B3Md+TCZI0=", + version = "v0.8.4", ) go_repository( name = "com_google_cloud_go_policytroubleshooter", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/policytroubleshooter", - sum = "h1:TboGw1ua94FjA/Zgj9Gl4Ksgs/TyasQmAkW9w+vyje4=", - version = "v1.10.1", + sum = "h1:sq+ScLP83d7GJy9+wpwYJVnY+q6xNTXwOdRIuYjvHT4=", + version = "v1.10.2", ) go_repository( name = "com_google_cloud_go_privatecatalog", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/privatecatalog", - sum = "h1:xSUuUCfA5fo59N1hsQmvzgNispoORTUvqN27XXyWFWg=", - version = "v0.9.3", + sum = "h1:Vo10IpWKbNvc/z/QZPVXgCiwfjpWoZ/wbgful4Uh/4E=", + version = "v0.9.4", ) go_repository( name = "com_google_cloud_go_profiler", @@ -7356,12 +6981,8 @@ def go_dependencies(): sum = "h1:b5got9Be9Ia0HVvyt7PavWxXEht15B9lWnigdvHtxOc=", version = "v0.3.1", ) - go_repository( name = "com_google_cloud_go_pubsub", - build_directives = [ - "gazelle:resolve go google.golang.org/genproto/googleapis/api/annotations @go_googleapis//google/api:annotations_go_proto", # keep - ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/pubsub", sum = "h1:6SPCPvWav64tj0sVX/+npCBKhUi/UjJehy9op/V3p2g=", @@ -7374,130 +6995,120 @@ def go_dependencies(): sum = "h1:pX+idpWMIH30/K7c0epN6V703xpIcMXWRjKJsz0tYGY=", version = "v1.8.1", ) - go_repository( name = "com_google_cloud_go_recaptchaenterprise_v2", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/recaptchaenterprise/v2", - sum = "h1:vbPKIAPiFxHG7uNXZmuivxbox17up/Tav5Y+Z+KA008=", - version = "v2.8.2", + sum = "h1:KOlLHLv3h3HwcZAkx91ubM3Oztz3JtT3ZacAJhWDorQ=", + version = "v2.8.4", ) go_repository( name = "com_google_cloud_go_recommendationengine", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/recommendationengine", - sum = "h1:A58sxjTGDJC+a2zkCzbYdLtPG1OQ7WijwCv7ZsTKIP8=", - version = "v0.8.3", + sum = "h1:JRiwe4hvu3auuh2hujiTc2qNgPPfVp+Q8KOpsXlEzKQ=", + version = "v0.8.4", ) go_repository( name = "com_google_cloud_go_recommender", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/recommender", - sum = "h1:/uQYJ01mKw0cig+DeMTQ+JuG0BEwVfxVh2gGIG93UEw=", - version = "v1.11.2", + sum = "h1:VndmgyS/J3+izR8V8BHa7HV/uun8//ivQ3k5eVKKyyM=", + version = "v1.11.3", ) go_repository( name = "com_google_cloud_go_redis", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/redis", - sum = "h1:+SH8u5Mrgo8EQG/0/C9fwBnzjYS4CQIm+ZK0nlFtg5I=", - version = "v1.13.3", + sum = "h1:J9cEHxG9YLmA9o4jTSvWt/RuVEn6MTrPlYSCRHujxDQ=", + version = "v1.14.1", ) go_repository( name = "com_google_cloud_go_resourcemanager", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/resourcemanager", - sum = "h1:jftfMUTNJLM9V+4wvMQfKfJfQVWcPJifWsMQnJyL3Jk=", - version = "v1.9.3", + sum = "h1:JwZ7Ggle54XQ/FVYSBrMLOQIKoIT/uer8mmNvNLK51k=", + version = "v1.9.4", ) go_repository( name = "com_google_cloud_go_resourcesettings", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/resourcesettings", - sum = "h1:T3HzhoHhk0VdEdXm5p+KKoC7jh9C4Xpe3BnNf64UfKU=", - version = "v1.6.3", + sum = "h1:yTIL2CsZswmMfFyx2Ic77oLVzfBFoWBYgpkgiSPnC4Y=", + version = "v1.6.4", ) go_repository( name = "com_google_cloud_go_retail", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/retail", - sum = "h1:pFW+3HJI5qHdE5yprmciAsM6G6cp0h0RH8FELX8K7sw=", - version = "v1.14.3", + sum = "h1:geqdX1FNqqL2p0ADXjPpw8lq986iv5GrVcieTYafuJQ=", + version = "v1.14.4", ) go_repository( name = "com_google_cloud_go_run", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/run", - sum = "h1:AiA5O0YTCTkLQaJu+HFAS0W/jktmiNydOUgg/d0xQrs=", - version = "v1.3.2", + sum = "h1:qdfZteAm+vgzN1iXzILo3nJFQbzziudkJrvd9wCf3FQ=", + version = "v1.3.3", ) go_repository( name = "com_google_cloud_go_scheduler", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/scheduler", - sum = "h1:1UwFQBqNlwnfpjZbPYitdV/GURiVRg4gbhRnKtL5ZRg=", - version = "v1.10.3", + sum = "h1:eMEettHlFhG5pXsoHouIM5nRT+k+zU4+GUvRtnxhuVI=", + version = "v1.10.5", ) go_repository( name = "com_google_cloud_go_secretmanager", - build_directives = [ - "gazelle:resolve go google.golang.org/genproto/googleapis/api/annotations @go_googleapis//google/api:annotations_go_proto", # keep - ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/secretmanager", - sum = "h1:Xk7NFAUuW9q+eX4AxwS/dDuhlNWQ1MmfxQpsfbgRsEg=", - version = "v1.11.3", + sum = "h1:krnX9qpG2kR2fJ+u+uNyNo+ACVhplIAS4Pu7u+4gd+k=", + version = "v1.11.4", ) go_repository( name = "com_google_cloud_go_security", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/security", - sum = "h1:RXYyXEtudhyqqNZNzVZWuDW5BkSCfqo2OOgOKcxg1Ho=", - version = "v1.15.3", + sum = "h1:sdnh4Islb1ljaNhpIXlIPgb3eYj70QWgPVDKOUYvzJc=", + version = "v1.15.4", ) go_repository( name = "com_google_cloud_go_securitycenter", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/securitycenter", - sum = "h1:oJRemSVC122SKmPV1aEkMOTnFHsnHwsQtXBBV55AxoU=", - version = "v1.24.1", + sum = "h1:qCEyXoJoxNKKA1bDywBjjqCB7ODXazzHnVWnG5Uqd1M=", + version = "v1.24.2", ) - go_repository( name = "com_google_cloud_go_servicedirectory", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/servicedirectory", - sum = "h1:vdo3qTQWhCB408ckNYqS29i8btBSiVDSWDYSLKc0iF8=", - version = "v1.11.2", + sum = "h1:5niCMfkw+jifmFtbBrtRedbXkJm3fubSR/KHbxSJZVM=", + version = "v1.11.3", ) - go_repository( name = "com_google_cloud_go_shell", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/shell", - sum = "h1:qujhSLWp8XUsFMp+RgGn2w+BBrQ7AnymGd+6TRaJ4HM=", - version = "v1.7.3", + sum = "h1:nurhlJcSVFZneoRZgkBEHumTYf/kFJptCK2eBUq/88M=", + version = "v1.7.4", ) go_repository( name = "com_google_cloud_go_spanner", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/spanner", - sum = "h1:l3exhhsVMKsx1E7Xd1QajYSvHmI1KZoWPW5tRxIIdvQ=", - version = "v1.51.0", + sum = "h1:/NzWQJ1MEhdRcffiutRKbW/AIGVKhcTeivWTDjEyCCo=", + version = "v1.53.0", ) - go_repository( name = "com_google_cloud_go_speech", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/speech", - sum = "h1:BvK9bjSW3Ut1hNvYXn2nlu/oGE+MUyjfIEZcI3kgbM8=", - version = "v1.19.2", + sum = "h1:qkxNao58oF8ghAHE1Eghen7XepawYEN5zuZXYWaUTA4=", + version = "v1.21.0", ) go_repository( name = "com_google_cloud_go_storage", - build_directives = [ - "gazelle:resolve go google.golang.org/genproto/googleapis/api/annotations @go_googleapis//google/api:annotations_go_proto", # keep - ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/storage", sum = "h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM=", @@ -7507,113 +7118,106 @@ def go_dependencies(): name = "com_google_cloud_go_storagetransfer", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/storagetransfer", - sum = "h1:rlcXNHgZY/1OIsZHAVDUu2roTs1/3UiVUdUSGnjw4aY=", - version = "v1.10.2", + sum = "h1:YM1dnj5gLjfL6aDldO2s4GeU8JoAvH1xyIwXre63KmI=", + version = "v1.10.3", ) go_repository( name = "com_google_cloud_go_talent", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/talent", - sum = "h1:yLBx78BoR5/sOCE0O6XqzaqL4KLM0+2BEdQBua9Zy1c=", - version = "v1.6.4", + sum = "h1:LnRJhhYkODDBoTwf6BeYkiJHFw9k+1mAFNyArwZUZAs=", + version = "v1.6.5", ) go_repository( name = "com_google_cloud_go_texttospeech", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/texttospeech", - sum = "h1:EgMsIlyacLJPrqFZZrXK1mUztyM4cp8wR4Ia1H51a9s=", - version = "v1.7.3", + sum = "h1:ahrzTgr7uAbvebuhkBAAVU6kRwVD0HWsmDsvMhtad5Q=", + version = "v1.7.4", ) go_repository( name = "com_google_cloud_go_tpu", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/tpu", - sum = "h1:euDiTIKKnQ3nG1J0KCafMJffxRdPNWQsnRvGJ7lZWSk=", - version = "v1.6.3", + sum = "h1:XIEH5c0WeYGaVy9H+UueiTaf3NI6XNdB4/v6TFQJxtE=", + version = "v1.6.4", ) go_repository( name = "com_google_cloud_go_trace", - build_directives = [ - # @go_googleapis is the modern version of @org_golang_google_genproto - # use @go_googleapis to avoid dependency conflicts between the two - "gazelle:resolve go google.golang.org/genproto/googleapis/api/annotations @go_googleapis//google/api:annotations_go_proto", # keep - ], build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/trace", - sum = "h1:yiQ2EdegdiZDPwNPoUqGYAMd0wNValT/NRsC1XGyBJ0=", - version = "v1.10.3", + sum = "h1:2qOAuAzNezwW3QN+t41BtkDJOG42HywL73q8x/f6fnM=", + version = "v1.10.4", ) go_repository( name = "com_google_cloud_go_translate", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/translate", - sum = "h1:liPk0EElBpafg4VAlZQwbg786X8/nnboOC4TmAN5sF8=", - version = "v1.9.2", + sum = "h1:t5WXTqlrk8VVJu/i3WrYQACjzYJiff5szARHiyqqPzI=", + version = "v1.9.3", ) go_repository( name = "com_google_cloud_go_video", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/video", - sum = "h1:paeXmflm8qH81wzND2V6BrKkS3GuvLuSrktHpdh+fr0=", - version = "v1.20.2", + sum = "h1:Xrpbm2S9UFQ1pZEeJt9Vqm5t2T/z9y/M3rNXhFoo8Is=", + version = "v1.20.3", ) go_repository( name = "com_google_cloud_go_videointelligence", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/videointelligence", - sum = "h1:PS8HSjrQh6A1XTKfGz83vLfXhHyGGEiOTgmh2WksdIM=", - version = "v1.11.3", + sum = "h1:YS4j7lY0zxYyneTFXjBJUj2r4CFe/UoIi/PJG0Zt/Rg=", + version = "v1.11.4", ) - go_repository( name = "com_google_cloud_go_vision_v2", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vision/v2", - sum = "h1:lTPDW1JogEcR7NSobxlpGAIN1wc2kvUrEfsS/32nm90=", - version = "v2.7.4", + sum = "h1:T/ujUghvEaTb+YnFY/jiYwVAkMbIC8EieK0CJo6B4vg=", + version = "v2.7.5", ) go_repository( name = "com_google_cloud_go_vmmigration", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vmmigration", - sum = "h1:2RIVjbHdVPXw8dhFLAkbU+DGnR/Egiv+zhb0CmSF58U=", - version = "v1.7.3", + sum = "h1:qPNdab4aGgtaRX+51jCOtJxlJp6P26qua4o1xxUDjpc=", + version = "v1.7.4", ) go_repository( name = "com_google_cloud_go_vmwareengine", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vmwareengine", - sum = "h1:JU4HKWkJSfYP9eU3q5VVnmyTjiZSqFC6ZXN752ebZuQ=", - version = "v1.0.2", + sum = "h1:WY526PqM6QNmFHSqe2sRfK6gRpzWjmL98UFkql2+JDM=", + version = "v1.0.3", ) - go_repository( name = "com_google_cloud_go_vpcaccess", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vpcaccess", - sum = "h1:d/vObL8itQ5DmG+fh3wExKCl4zuwbInSQOuysfvgShk=", - version = "v1.7.3", + sum = "h1:zbs3V+9ux45KYq8lxxn/wgXole6SlBHHKKyZhNJoS+8=", + version = "v1.7.4", ) go_repository( name = "com_google_cloud_go_webrisk", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/webrisk", - sum = "h1:9yteSCrAhlZFvu+zb/SlpCKFwij69Il1aIuhk8vq0sg=", - version = "v1.9.3", + sum = "h1:iceR3k0BCRZgf2D/NiKviVMFfuNC9LmeNLtxUFRB/wI=", + version = "v1.9.4", ) go_repository( name = "com_google_cloud_go_websecurityscanner", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/websecurityscanner", - sum = "h1:nIo6koOYifrmNUsuXYzlO39oRrV8aM7NdjKjXxL/xvE=", - version = "v1.6.3", + sum = "h1:5Gp7h5j7jywxLUp6NTpjNPkgZb3ngl0tUSw6ICWvtJQ=", + version = "v1.6.4", ) go_repository( name = "com_google_cloud_go_workflows", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/workflows", - sum = "h1:dDTsUCgUQbkEFviNMgRV0THXa9VWBNS+35Ru1uadEUw=", - version = "v1.12.2", + sum = "h1:qocsqETmLAl34mSa01hKZjcqAvt699gaoFbooGGMvaM=", + version = "v1.12.3", ) go_repository( name = "com_jolheiser_go_hcaptcha", @@ -7643,7 +7247,6 @@ def go_dependencies(): sum = "h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI=", version = "v1.2.0", ) - go_repository( name = "com_shuralyov_dmitri_gpu_mtl", build_file_proto_mode = "disable_global", @@ -7651,7 +7254,6 @@ def go_dependencies(): sum = "h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY=", version = "v0.0.0-20190408044501-666a987793e9", ) - go_repository( name = "dev_bobheadxi_go_gobenchdata", build_file_proto_mode = "disable_global", @@ -7666,7 +7268,6 @@ def go_dependencies(): sum = "h1:Mv2NE8svJMB5K7nIT9WGwF014yuY/lPXtT8mvNr1OrU=", version = "v1.2.2", ) - go_repository( name = "ht_sr_git_mariusor_go_xsd_duration", build_file_proto_mode = "disable_global", @@ -7681,7 +7282,6 @@ def go_dependencies(): sum = "h1:LNhjNn8DerC8f9DHLz6lS0YYul/b602DUxDgGkd/Aik=", version = "v0.3.1", ) - go_repository( name = "in_gopkg_alecthomas_kingpin_v2", build_file_proto_mode = "disable_global", @@ -7710,7 +7310,6 @@ def go_dependencies(): sum = "h1:TxyelI5cVkbREznMhfzycHdkp5cLA7DpE+GKjSslYhM=", version = "v1.0.0-20181015200546-f715ec2f112d", ) - go_repository( name = "in_gopkg_check_v1", build_file_proto_mode = "disable_global", @@ -7725,7 +7324,6 @@ def go_dependencies(): sum = "h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk=", version = "v1.0.28", ) - go_repository( name = "in_gopkg_errgo_v2", build_file_proto_mode = "disable_global", @@ -7740,7 +7338,6 @@ def go_dependencies(): sum = "h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=", version = "v1.4.7", ) - go_repository( name = "in_gopkg_go_playground_assert_v1", build_file_proto_mode = "disable_global", @@ -7748,7 +7345,6 @@ def go_dependencies(): sum = "h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM=", version = "v1.2.1", ) - go_repository( name = "in_gopkg_go_playground_validator_v9", build_file_proto_mode = "disable_global", @@ -7770,7 +7366,6 @@ def go_dependencies(): sum = "h1:RlWgLqCMMIYYEVcAR5MDsuHlVkaIPDAF+5Dehzg8L5A=", version = "v2.0.0-20180818164646-67afb5ed74ec", ) - go_repository( name = "in_gopkg_inf_v0", build_file_proto_mode = "disable_global", @@ -7785,7 +7380,6 @@ def go_dependencies(): sum = "h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=", version = "v1.67.0", ) - go_repository( name = "in_gopkg_natefinch_lumberjack_v2", build_file_proto_mode = "disable_global", @@ -7807,7 +7401,6 @@ def go_dependencies(): sum = "h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI=", version = "v2.6.0", ) - go_repository( name = "in_gopkg_tomb_v1", build_file_proto_mode = "disable_global", @@ -7822,7 +7415,6 @@ def go_dependencies(): sum = "h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=", version = "v0.1.2", ) - go_repository( name = "in_gopkg_yaml_v2", build_file_proto_mode = "disable_global", @@ -7844,7 +7436,6 @@ def go_dependencies(): sum = "h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU=", version = "v1.3.6", ) - go_repository( name = "io_etcd_go_etcd_api_v3", build_file_proto_mode = "disable_global", @@ -7950,7 +7541,6 @@ def go_dependencies(): sum = "h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls=", version = "v1.25.5", ) - go_repository( name = "io_k8s_api", build_file_proto_mode = "disable_global", @@ -7965,7 +7555,6 @@ def go_dependencies(): sum = "h1:CtXsuaitMESSu339tfhVXhQrPET+EiWnIY1rcurKnAc=", version = "v0.25.4", ) - go_repository( name = "io_k8s_client_go", build_file_proto_mode = "disable_global", @@ -7973,7 +7562,6 @@ def go_dependencies(): sum = "h1:3RNRDffAkNU56M/a7gUfXaEzdhZlYhoW8dgViGy5fn8=", version = "v0.25.4", ) - go_repository( name = "io_k8s_gengo", build_file_proto_mode = "disable_global", @@ -7981,7 +7569,6 @@ def go_dependencies(): sum = "h1:GohjlNKauSai7gN4wsJkeZ3WAJx4Sh+oT/b5IYn5suA=", version = "v0.0.0-20210813121822-485abfe95c7c", ) - go_repository( name = "io_k8s_klog", build_file_proto_mode = "disable_global", @@ -8003,7 +7590,6 @@ def go_dependencies(): sum = "h1:MQ8BAZPZlWk3S9K4a9NCkIFQtZShWqoha7snGixVgEA=", version = "v0.0.0-20220803162953-67bda5d908f1", ) - go_repository( name = "io_k8s_sigs_json", build_file_proto_mode = "disable_global", @@ -8018,7 +7604,6 @@ def go_dependencies(): sum = "h1:tNNQIC+8cc+aXFTVg+RtQAOsjwUdYBZRAgYOVI3RBc4=", version = "v0.13.3", ) - go_repository( name = "io_k8s_sigs_structured_merge_diff_v4", build_file_proto_mode = "disable_global", @@ -8047,7 +7632,6 @@ def go_dependencies(): sum = "h1:mUcz5b3FJbP5Cvdq7Khzn6J9OCUQJaBwgBkCR+MOwSs=", version = "v0.0.0-20191008002943-06d1c002b251", ) - go_repository( name = "io_opencensus_go", build_file_proto_mode = "disable_global", @@ -8055,7 +7639,6 @@ def go_dependencies(): sum = "h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=", version = "v0.24.0", ) - go_repository( name = "io_opencensus_go_contrib_exporter_prometheus", build_file_proto_mode = "disable_global", @@ -8063,7 +7646,6 @@ def go_dependencies(): sum = "h1:sqfsYl5GIY/L570iT+l93ehxaWJs2/OwXtiWwew3oAg=", version = "v0.4.2", ) - go_repository( name = "io_opentelemetry_go_collector", build_file_proto_mode = "disable_global", @@ -8141,7 +7723,6 @@ def go_dependencies(): sum = "h1:wRV2PBnJygdmKpIdt/xfG7zdQvXvHz9L+z8MhGsOji4=", version = "v0.81.0", ) - go_repository( name = "io_opentelemetry_go_collector_confmap", build_file_proto_mode = "disable_global", @@ -8156,7 +7737,6 @@ def go_dependencies(): sum = "h1:5jYYjQwxxgJKFtVvvbFLd0+2QHsvS0z+lVDxzmRv8uk=", version = "v0.81.0", ) - go_repository( name = "io_opentelemetry_go_collector_consumer", build_file_proto_mode = "disable_global", @@ -8171,7 +7751,6 @@ def go_dependencies(): sum = "h1:GLhB8WGrBx+zZSB1HIOx2ivFUMahGtAVO2CC5xbCUHQ=", version = "v0.81.0", ) - go_repository( name = "io_opentelemetry_go_collector_exporter_otlpexporter", build_file_proto_mode = "disable_global", @@ -8200,7 +7779,6 @@ def go_dependencies(): sum = "h1:UzVQSG9naJh1hX7hh+HVcvB3n+rpCJXX2BBdUoL/Ybo=", version = "v0.81.0", ) - go_repository( name = "io_opentelemetry_go_collector_extension_zpagesextension", build_file_proto_mode = "disable_global", @@ -8215,7 +7793,6 @@ def go_dependencies(): sum = "h1:tiTUG9X/gEDN1oDYQOBVUFYQfhUG2CvgW9VhBc2uk1U=", version = "v1.0.0-rcv0013", ) - go_repository( name = "io_opentelemetry_go_collector_pdata", build_file_proto_mode = "disable_global", @@ -8230,7 +7807,6 @@ def go_dependencies(): sum = "h1:ypyNV5R0bnN3XGMAsH/q5eNARF5vXtFgSOK9rBWzsLc=", version = "v0.81.0", ) - go_repository( name = "io_opentelemetry_go_collector_receiver", build_file_proto_mode = "disable_global", @@ -8238,7 +7814,6 @@ def go_dependencies(): sum = "h1:0c+YtIV7fmd9ev+zmwS9qjx5ASi8cw+gSypu4I7Gugc=", version = "v0.81.0", ) - go_repository( name = "io_opentelemetry_go_collector_receiver_otlpreceiver", build_file_proto_mode = "disable_global", @@ -8246,7 +7821,6 @@ def go_dependencies(): sum = "h1:ewVbfATnAeQkwFK3r0dpFKCXcTb8HJKX4AixUioRt+c=", version = "v0.81.0", ) - go_repository( name = "io_opentelemetry_go_collector_semconv", build_file_proto_mode = "disable_global", @@ -8254,7 +7828,6 @@ def go_dependencies(): sum = "h1:lCYNNo3powDvFIaTPP2jDKIrBiV1T92NK4QgL/aHYXw=", version = "v0.81.0", ) - go_repository( name = "io_opentelemetry_go_contrib_detectors_gcp", build_file_proto_mode = "disable_global", @@ -8262,7 +7835,6 @@ def go_dependencies(): sum = "h1:SsuF2+gqrnmTKSz+KLXcx3A4A7PZXqbuRZbm4I6HcX0=", version = "v1.17.0", ) - go_repository( name = "io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc", build_file_proto_mode = "disable_global", @@ -8302,7 +7874,6 @@ def go_dependencies(): sum = "h1:ImOVvHnku8jijXqkwCSyYKRDt2YrnGXD4BbhcpfbfJo=", version = "v1.17.0", ) - go_repository( name = "io_opentelemetry_go_contrib_propagators_jaeger", build_file_proto_mode = "disable_global", @@ -8324,7 +7895,6 @@ def go_dependencies(): sum = "h1:hFscXKQ9PTjyIVmAr6zIV8cMoiEeR9lPIwPVqHi8+5Q=", version = "v0.42.0", ) - go_repository( name = "io_opentelemetry_go_otel", build_file_proto_mode = "disable_global", @@ -8339,7 +7909,6 @@ def go_dependencies(): sum = "h1:YHivttTaDhbZIHuPlg1sWsy2P5gj57vzqPfkHItgbwQ=", version = "v0.39.0", ) - go_repository( name = "io_opentelemetry_go_otel_bridge_opentracing", build_file_proto_mode = "disable_global", @@ -8354,7 +7923,6 @@ def go_dependencies(): sum = "h1:YhxxmXZ011C0aDZKoNw+juVWAmEfv/0W2XBOv9aHTaA=", version = "v1.16.0", ) - go_repository( name = "io_opentelemetry_go_otel_exporters_otlp_internal_retry", build_file_proto_mode = "disable_global", @@ -8415,7 +7983,6 @@ def go_dependencies(): sum = "h1:9dAVGAfFiiEq5NVB9FUJ5et+btbDQAUIJehJ+ikyryk=", version = "v0.27.0", ) - go_repository( name = "io_opentelemetry_go_otel_metric", build_file_proto_mode = "disable_global", @@ -8423,7 +7990,6 @@ def go_dependencies(): sum = "h1:iG6LGVz5Gh+IuO0jmgvpTB6YVrCGngi8QGm+pMd8Pdc=", version = "v1.17.0", ) - go_repository( name = "io_opentelemetry_go_otel_sdk", build_file_proto_mode = "disable_global", @@ -8431,7 +7997,6 @@ def go_dependencies(): sum = "h1:Z1Ok1YsijYL0CSJpHt4cS3wDDh7p572grzNrBMiMWgE=", version = "v1.16.0", ) - go_repository( name = "io_opentelemetry_go_otel_sdk_metric", build_file_proto_mode = "disable_global", @@ -8439,7 +8004,6 @@ def go_dependencies(): sum = "h1:Kun8i1eYf48kHH83RucG93ffz0zGV1sh46FAScOTuDI=", version = "v0.39.0", ) - go_repository( name = "io_opentelemetry_go_otel_trace", build_file_proto_mode = "disable_global", @@ -8468,7 +8032,6 @@ def go_dependencies(): sum = "h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4=", version = "v0.1.1", ) - go_repository( name = "io_rsc_quote_v3", build_file_proto_mode = "disable_global", @@ -8504,7 +8067,6 @@ def go_dependencies(): sum = "h1:+FNtrFTmVw0YZGpBGX56XDee331t6JAXeK2bcyhLOOc=", version = "v0.0.0-20200306205701-8dd3e2ee1dd5", ) - go_repository( name = "org_bitbucket_creachadair_shell", build_file_proto_mode = "disable_global", @@ -8512,7 +8074,6 @@ def go_dependencies(): sum = "h1:Z96pB6DkSb7F3Y3BBnJeOZH2gazyMTWlvecSD4vDqfk=", version = "v0.0.7", ) - go_repository( name = "org_codeberg_gusted_mcaptcha", build_file_proto_mode = "disable_global", @@ -8527,7 +8088,6 @@ def go_dependencies(): sum = "h1:W3oBBjDTm7+IZfCKZAmC8uDG0eYfJL4Pp/xbbCMKaVo=", version = "v0.4.3", ) - go_repository( name = "org_golang_google_api", build_file_proto_mode = "disable_global", @@ -8549,26 +8109,19 @@ def go_dependencies(): sum = "h1:Cpp2P6TPjujNoC5M2KHY6g7wfyLYfIWRZaSdIKfDasA=", version = "v0.0.0-20151119220103-975617b05ea8", ) - go_repository( name = "org_golang_google_genproto", - build_directives = [ - "gazelle:resolve go google.golang.org/genproto/googleapis/api @go_googleapis//google/api:api_go_proto", # keep - "gazelle:resolve go google.golang.org/genproto/googleapis/api/label @go_googleapis//google/api:label_go_proto", # keep - "gazelle:resolve go google.golang.org/genproto/googleapis/api/annotations @go_googleapis//google/api:annotations_go_proto", # keep - "gazelle:resolve go google.golang.org/genproto/googleapis/api/monitoredres @go_googleapis//google/api:monitoredres_go_proto", # keep - ], build_file_proto_mode = "disable_global", importpath = "google.golang.org/genproto", - sum = "h1:I6WNifs6pF9tNdSob2W24JtyxIYjzFB9qDlpUC76q+U=", - version = "v0.0.0-20231030173426-d783a09b4405", + sum = "h1:W12Pwm4urIbRdGhMEg2NM9O3TWKjNcxQhs46V0ypf/k=", + version = "v0.0.0-20231127180814-3a041ad873d4", ) go_repository( name = "org_golang_google_genproto_googleapis_api", build_file_proto_mode = "disable_global", importpath = "google.golang.org/genproto/googleapis/api", - sum = "h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k=", - version = "v0.0.0-20231016165738-49dd2c1f3d0b", + sum = "h1:ZcOkrmX74HbKFYnpPY8Qsw93fC29TbJXspYKaBkSXDQ=", + version = "v0.0.0-20231127180814-3a041ad873d4", ) go_repository( name = "org_golang_google_genproto_googleapis_bytestream", @@ -8581,10 +8134,9 @@ def go_dependencies(): name = "org_golang_google_genproto_googleapis_rpc", build_file_proto_mode = "disable_global", importpath = "google.golang.org/genproto/googleapis/rpc", - sum = "h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14=", - version = "v0.0.0-20231106174013-bbf56f31fb17", + sum = "h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE=", + version = "v0.0.0-20231127180814-3a041ad873d4", ) - go_repository( name = "org_golang_google_grpc", build_file_proto_mode = "disable_global", @@ -8592,7 +8144,6 @@ def go_dependencies(): sum = "h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk=", version = "v1.59.0", ) - go_repository( name = "org_golang_google_protobuf", build_file_proto_mode = "disable_global", @@ -8600,7 +8151,6 @@ def go_dependencies(): sum = "h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=", version = "v1.31.0", ) - go_repository( name = "org_golang_x_crypto", build_file_proto_mode = "disable_global", @@ -8640,8 +8190,8 @@ def go_dependencies(): name = "org_golang_x_mod", build_file_proto_mode = "disable_global", importpath = "golang.org/x/mod", - sum = "h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=", - version = "v0.12.0", + sum = "h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=", + version = "v0.14.0", ) go_repository( name = "org_golang_x_net", @@ -8657,7 +8207,6 @@ def go_dependencies(): sum = "h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0=", version = "v0.14.0", ) - go_repository( name = "org_golang_x_sync", build_file_proto_mode = "disable_global", @@ -8697,8 +8246,8 @@ def go_dependencies(): name = "org_golang_x_tools", build_file_proto_mode = "disable_global", importpath = "golang.org/x/tools", - sum = "h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg=", - version = "v0.10.0", + sum = "h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8=", + version = "v0.15.0", ) go_repository( name = "org_golang_x_xerrors", @@ -8714,7 +8263,6 @@ def go_dependencies(): sum = "h1:a0T3bh+7fhRyqeNbiC3qVHYmkiQgit3wnNan/2c0HMM=", version = "v0.13.0", ) - go_repository( name = "org_gonum_v1_plot", build_file_proto_mode = "disable_global", @@ -8785,7 +8333,6 @@ def go_dependencies(): sum = "h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=", version = "v1.1.0", ) - go_repository( name = "org_mongodb_go_mongo_driver", build_file_proto_mode = "disable_global", @@ -8793,7 +8340,6 @@ def go_dependencies(): sum = "h1:Ql6K6qYHEzB6xvu4+AU0BoRoqf9vFPcc4o7MUIdPW8Y=", version = "v1.11.3", ) - go_repository( name = "org_uber_go_atomic", build_file_proto_mode = "disable_global", @@ -8836,7 +8382,6 @@ def go_dependencies(): sum = "h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=", version = "v0.0.0-20190618225709-2cfd321de3ee", ) - go_repository( name = "org_uber_go_zap", build_file_proto_mode = "disable_global", @@ -8851,7 +8396,6 @@ def go_dependencies(): sum = "h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=", version = "v2.2.0+incompatible", ) - go_repository( name = "tools_gotest_v3", build_file_proto_mode = "disable_global", diff --git a/go.mod b/go.mod index 96a0e1fed8f9f..8fde6918175fe 100644 --- a/go.mod +++ b/go.mod @@ -60,12 +60,12 @@ replace ( ) require ( - cloud.google.com/go/bigquery v1.56.0 - cloud.google.com/go/kms v1.15.4 - cloud.google.com/go/monitoring v1.16.2 + cloud.google.com/go/bigquery v1.57.1 + cloud.google.com/go/kms v1.15.5 + cloud.google.com/go/monitoring v1.16.3 cloud.google.com/go/profiler v0.3.1 cloud.google.com/go/pubsub v1.33.0 - cloud.google.com/go/secretmanager v1.11.3 + cloud.google.com/go/secretmanager v1.11.4 cloud.google.com/go/storage v1.30.1 github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.41.0 github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.17.0 @@ -236,10 +236,10 @@ require ( golang.org/x/time v0.4.0 // golang.org/x/tools should not be upgraded until https://github.com/bazelbuild/bazel-gazelle/issues/1579 // is resolved. - golang.org/x/tools v0.10.0 + golang.org/x/tools v0.15.0 gonum.org/v1/gonum v0.13.0 google.golang.org/api v0.150.0 - google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 // indirect + google.golang.org/genproto v0.0.0-20231127180814-3a041ad873d4 // indirect google.golang.org/protobuf v1.31.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v2 v2.4.0 @@ -287,14 +287,14 @@ require ( go.opentelemetry.io/collector/config/configtelemetry v0.81.0 go.opentelemetry.io/collector/config/configtls v0.81.0 go.opentelemetry.io/otel/exporters/prometheus v0.39.0 - google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b + google.golang.org/genproto/googleapis/api v0.0.0-20231127180814-3a041ad873d4 gorm.io/gorm v1.25.5 ) require ( cloud.google.com/go/cloudsqlconn v1.5.1 // indirect cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 // indirect - cloud.google.com/go/trace v1.10.3 // indirect + cloud.google.com/go/trace v1.10.4 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.20.0 // indirect @@ -385,14 +385,14 @@ require ( go.opentelemetry.io/collector/processor v0.81.0 // indirect go.uber.org/goleak v1.2.1 // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 // indirect ) require ( bitbucket.org/creachadair/shell v0.0.7 // indirect - cloud.google.com/go v0.110.9 // indirect - cloud.google.com/go/compute v1.23.2 // indirect - cloud.google.com/go/iam v1.1.4 // indirect + cloud.google.com/go v0.110.10 // indirect + cloud.google.com/go/compute v1.23.3 // indirect + cloud.google.com/go/iam v1.1.5 // indirect code.gitea.io/gitea v1.18.0 cuelang.org/go v0.4.3 github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect @@ -489,7 +489,7 @@ require ( github.com/gopherjs/gopherwasm v1.1.0 // indirect github.com/gorilla/css v1.0.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.1 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-retryablehttp v0.7.4 // indirect github.com/hashicorp/go-version v1.6.0 @@ -594,7 +594,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 - golang.org/x/mod v0.12.0 + golang.org/x/mod v0.14.0 golang.org/x/term v0.14.0 // indirect golang.org/x/text v0.14.0 golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect diff --git a/go.sum b/go.sum index 2408fbecfdafa..f8bff18e06200 100644 --- a/go.sum +++ b/go.sum @@ -21,34 +21,34 @@ cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmW cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.110.9 h1:e7ITSqGFFk4rbz/JFIqZh3G4VEHguhAL4BQcFlWtU68= -cloud.google.com/go v0.110.9/go.mod h1:rpxevX/0Lqvlbc88b7Sc1SPNdyK1riNBTUU6JXhYNpM= +cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= +cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.56.0 h1:LHIc9E7Kw+ftFpQFKzZYBB88IAFz7qONawXXx0F3QBo= -cloud.google.com/go/bigquery v1.56.0/go.mod h1:KDcsploXTEY7XT3fDQzMUZlpQLHzE4itubHrnmhUrZA= +cloud.google.com/go/bigquery v1.57.1 h1:FiULdbbzUxWD0Y4ZGPSVCDLvqRSyCIO6zKV7E2nf5uA= +cloud.google.com/go/bigquery v1.57.1/go.mod h1:iYzC0tGVWt1jqSzBHqCr3lrRn0u13E8e+AqowBsDgug= cloud.google.com/go/cloudsqlconn v1.5.1 h1:rMtPv66pkuk2K1ciCicjZY8Ma1DSyOYSoqwPUw/Timo= cloud.google.com/go/cloudsqlconn v1.5.1/go.mod h1:DPWjhwD5Fhv43M0RP/+7J37xo4PByfNWCzMlKa9OBwE= -cloud.google.com/go/compute v1.23.2 h1:nWEMDhgbBkBJjfpVySqU4jgWdc22PLR0o4vEexZHers= -cloud.google.com/go/compute v1.23.2/go.mod h1:JJ0atRC0J/oWYiiVBmsSsrRnh92DhZPG4hFDcR04Rns= +cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 h1:aRVqY1p2IJaBGStWMsQMpkAa83cPkCDLl80eOj0Rbz4= cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68/go.mod h1:1a3eRNYX12fs5UABBIXS8HXVvQbX9hRB/RkEBPORpe8= -cloud.google.com/go/datacatalog v1.18.2 h1:4ydlNOtwjkdXjXWd+SkUBh+DyVmM/bJKiktAHwqaEeU= +cloud.google.com/go/datacatalog v1.19.0 h1:rbYNmHwvAOOwnW2FPXYkaK3Mf1MmGqRzK0mMiIEyLdo= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/iam v1.1.4 h1:K6n/GZHFTtEoKT5aUG3l9diPi0VduZNQ1PfdnpkkIFk= -cloud.google.com/go/iam v1.1.4/go.mod h1:l/rg8l1AaA+VFMho/HYx2Vv6xinPSLMF8qfhRPIZ0L8= -cloud.google.com/go/kms v1.15.4 h1:gEZzC54ZBI+aeW8/jg9tgz9KR4Aa+WEDPbdGIV3iJ7A= -cloud.google.com/go/kms v1.15.4/go.mod h1:L3Sdj6QTHK8dfwK5D1JLsAyELsNMnd3tAIwGS4ltKpc= +cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +cloud.google.com/go/kms v1.15.5 h1:pj1sRfut2eRbD9pFRjNnPNg/CzJPuQAzUujMIM1vVeM= +cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= cloud.google.com/go/logging v1.8.1 h1:26skQWPeYhvIasWKm48+Eq7oUqdcdbwsCVwz5Ys0FvU= -cloud.google.com/go/longrunning v0.5.3 h1:maKa7O9YTzmVzwdlRKr981U1Ys2auup6rpeMt8y3+RU= -cloud.google.com/go/monitoring v1.16.2 h1:gx7BDZcoRqX5DfuJzw9LdhVjEkqCLmDXScdnrmIy9ik= -cloud.google.com/go/monitoring v1.16.2/go.mod h1:B44KGwi4ZCF8Rk/5n+FWeispDXoKSk9oss2QNlXJBgc= +cloud.google.com/go/longrunning v0.5.4 h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg= +cloud.google.com/go/monitoring v1.16.3 h1:mf2SN9qSoBtIgiMA4R/y4VADPWZA7VCNJA079qLaZQ8= +cloud.google.com/go/monitoring v1.16.3/go.mod h1:KwSsX5+8PnXv5NJnICZzW2R8pWTis8ypC4zmdRD63Tw= cloud.google.com/go/profiler v0.3.1 h1:b5got9Be9Ia0HVvyt7PavWxXEht15B9lWnigdvHtxOc= cloud.google.com/go/profiler v0.3.1/go.mod h1:GsG14VnmcMFQ9b+kq71wh3EKMZr3WRMgLzNiFRpW7tE= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= @@ -57,8 +57,8 @@ cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIA cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/pubsub v1.33.0 h1:6SPCPvWav64tj0sVX/+npCBKhUi/UjJehy9op/V3p2g= cloud.google.com/go/pubsub v1.33.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= -cloud.google.com/go/secretmanager v1.11.3 h1:Xk7NFAUuW9q+eX4AxwS/dDuhlNWQ1MmfxQpsfbgRsEg= -cloud.google.com/go/secretmanager v1.11.3/go.mod h1:0bA2o6FabmShrEy328i67aV+65XoUFFSmVeLBn/51jI= +cloud.google.com/go/secretmanager v1.11.4 h1:krnX9qpG2kR2fJ+u+uNyNo+ACVhplIAS4Pu7u+4gd+k= +cloud.google.com/go/secretmanager v1.11.4/go.mod h1:wreJlbS9Zdq21lMzWmJ0XhWW2ZxgPeahsqeV/vZoJ3w= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= @@ -66,8 +66,8 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= -cloud.google.com/go/trace v1.10.3 h1:yiQ2EdegdiZDPwNPoUqGYAMd0wNValT/NRsC1XGyBJ0= -cloud.google.com/go/trace v1.10.3/go.mod h1:Ke1bgfc73RV3wUFml+uQp7EsDw4dGaETLxB7Iq/r4CY= +cloud.google.com/go/trace v1.10.4 h1:2qOAuAzNezwW3QN+t41BtkDJOG42HywL73q8x/f6fnM= +cloud.google.com/go/trace v1.10.4/go.mod h1:Nso99EDIK8Mj5/zmB+iGr9dosS/bzWCJ8wGmE6TXNWY= code.gitea.io/gitea v1.18.0 h1:qQXVeKHoFXywWVGGDmTOKxvzOK282EAPTw3qo2bgXAk= code.gitea.io/gitea v1.18.0/go.mod h1:A3dHVUUZ+9ULp0J8AjYF6XBgPsn/J7OZ0X73m7LVQGA= contrib.go.opencensus.io/exporter/prometheus v0.4.2 h1:sqfsYl5GIY/L570iT+l93ehxaWJs2/OwXtiWwew3oAg= @@ -950,8 +950,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0/go.mod h1:w9Y7gY31krpLmrV github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.1 h1:RoziI+96HlQWrbaVhgOOdFYUHtX81pwA6tCgDS9FNRo= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.1/go.mod h1:Rj8lEaVgLiPn1jTMVXEhATiZhuyXJq167bMYPbJM1CY= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.13.0/go.mod h1:ZlVrynguJKcYr54zGaDbaL3fOvKC9m72FhPvA8T35KQ= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= @@ -2009,8 +2009,8 @@ golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2325,8 +2325,8 @@ golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= -golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= +golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2416,12 +2416,12 @@ google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 h1:I6WNifs6pF9tNdSob2W24JtyxIYjzFB9qDlpUC76q+U= -google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4= -google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k= -google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= +google.golang.org/genproto v0.0.0-20231127180814-3a041ad873d4 h1:W12Pwm4urIbRdGhMEg2NM9O3TWKjNcxQhs46V0ypf/k= +google.golang.org/genproto v0.0.0-20231127180814-3a041ad873d4/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic= +google.golang.org/genproto/googleapis/api v0.0.0-20231127180814-3a041ad873d4 h1:ZcOkrmX74HbKFYnpPY8Qsw93fC29TbJXspYKaBkSXDQ= +google.golang.org/genproto/googleapis/api v0.0.0-20231127180814-3a041ad873d4/go.mod h1:k2dtGpRrbsSyKcNPKKI5sstZkrNCZwpU/ns96JoHbGg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM= google.golang.org/grpc v1.2.1-0.20170921194603-d4b75ebd4f9f/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= diff --git a/third_party/com_github_grpc_ecosystem_grpc_gateway_v2/BUILD.bazel b/third_party/com_github_grpc_ecosystem_grpc_gateway_v2/BUILD.bazel deleted file mode 100644 index d518110449e66..0000000000000 --- a/third_party/com_github_grpc_ecosystem_grpc_gateway_v2/BUILD.bazel +++ /dev/null @@ -1 +0,0 @@ -exports_files(glob(["*.patch"])) diff --git a/third_party/com_github_grpc_ecosystem_grpc_gateway_v2/README.md b/third_party/com_github_grpc_ecosystem_grpc_gateway_v2/README.md deleted file mode 100644 index 3da6281adeba3..0000000000000 --- a/third_party/com_github_grpc_ecosystem_grpc_gateway_v2/README.md +++ /dev/null @@ -1,36 +0,0 @@ -## How to regenerate a patch - -In the eventuality of having to regenerate this patch if we bump the package version, you can generate a new patch with the following: - -``` - # Shallow clone based on version - git clone --depth 1 --branch v2.16.0 https://github.com/grpc-ecosystem/grpc-gateway.git - cd ./grpc-gateway - - # (Optional) - # Remove bazel version if you need to run using different Bazel version - rm .bazelversion - - # Add Gazelle directive to disable proto compilation - echo '# gazelle:proto disable_global' >> BUILD - - # Run Gazelle update-repos command to update repositories.bzl with - # disable_global flag - bazel run gazelle -- update-repos \ - -from_file=go.mod \ - -to_macro=repositories.bzl%go_repositories \ - --build_file_proto_mode=disable_global - - # Remove BUILD.bazel file with conflicting import - rm runtime/BUILD.bazel - rm runtime/internal/examplepb/BUILD.bazel - - # Run Gazelle fix command to regenerate BUILD.bazel based on diasble_global - bazel run gazelle -- fix - - # Create a patch file for two files that causes the build error: - # - `repositories.bzl` - # - `runtime/BUILD.bazel` - # - `runtime/internal/examplepb/BUILD.bazel` - git diff -u repositories.bzl runtime/BUILD.bazel runtime/internal/examplepb/BUILD.bazel > ../grpc_gateway.patch -``` diff --git a/third_party/com_github_grpc_ecosystem_grpc_gateway_v2/grpc_gateway.patch b/third_party/com_github_grpc_ecosystem_grpc_gateway_v2/grpc_gateway.patch deleted file mode 100644 index d6f8d68b7c798..0000000000000 --- a/third_party/com_github_grpc_ecosystem_grpc_gateway_v2/grpc_gateway.patch +++ /dev/null @@ -1,1226 +0,0 @@ -diff --git a/repositories.bzl b/repositories.bzl -index b165cdd..2ff7081 100644 ---- a/repositories.bzl -+++ b/repositories.bzl -@@ -22,6 +22,7 @@ def go_repositories(): - - go_repository( - name = "com_github_antihax_optional", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/antihax/optional", - sum = "h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg=", - version = "v1.0.0", -@@ -90,6 +91,7 @@ def go_repositories(): - ) - go_repository( - name = "com_github_census_instrumentation_opencensus_proto", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/census-instrumentation/opencensus-proto", - sum = "h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g=", - version = "v0.4.1", -@@ -102,6 +104,7 @@ def go_repositories(): - ) - go_repository( - name = "com_github_cespare_xxhash_v2", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/cespare/xxhash/v2", - sum = "h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=", - version = "v2.2.0", -@@ -134,12 +137,14 @@ def go_repositories(): - - go_repository( - name = "com_github_cncf_udpa_go", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/cncf/udpa/go", - sum = "h1:QQ3GSy+MqSHxm/d8nCtnAiZdYFd45cYZPs8vOOIYKfk=", - version = "v0.0.0-20220112060539-c52dc94e7fbe", - ) - go_repository( - name = "com_github_cncf_xds_go", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/cncf/xds/go", - sum = "h1:58f1tJ1ra+zFINPlwLWvQsR9CzAKt2e+EWV2yX9oXQ4=", - version = "v0.0.0-20230310173818-32f1caf87195", -@@ -183,6 +188,7 @@ def go_repositories(): - ) - go_repository( - name = "com_github_creack_pty", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/creack/pty", - sum = "h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w=", - version = "v1.1.9", -@@ -209,12 +215,14 @@ def go_repositories(): - - go_repository( - name = "com_github_envoyproxy_go_control_plane", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/envoyproxy/go-control-plane", - sum = "h1:jtLewhRR2vMRNnq2ZZUoCjUlgut+Y0+sDDWPOfwOi1o=", - version = "v0.11.0", - ) - go_repository( - name = "com_github_envoyproxy_protoc_gen_validate", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/envoyproxy/protoc-gen-validate", - sum = "h1:oIfnZFdC0YhpNNEX+SuIqko4cqqVZeN9IGTrhZje83Y=", - version = "v0.10.0", -@@ -290,6 +298,7 @@ def go_repositories(): - - go_repository( - name = "com_github_golang_glog", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/golang/glog", - sum = "h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE=", - version = "v1.1.0", -@@ -309,6 +318,7 @@ def go_repositories(): - ) - go_repository( - name = "com_github_golang_protobuf", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/golang/protobuf", - sum = "h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=", - version = "v1.5.3", -@@ -322,6 +332,7 @@ def go_repositories(): - ) - go_repository( - name = "com_github_google_go_cmp", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/google/go-cmp", - sum = "h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=", - version = "v0.5.9", -@@ -353,6 +364,7 @@ def go_repositories(): - ) - go_repository( - name = "com_github_google_uuid", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/google/uuid", - sum = "h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=", - version = "v1.3.0", -@@ -599,18 +611,21 @@ def go_repositories(): - - go_repository( - name = "com_github_kr_pretty", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/kr/pretty", - sum = "h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=", - version = "v0.3.1", - ) - go_repository( - name = "com_github_kr_pty", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/kr/pty", - sum = "h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=", - version = "v1.1.1", - ) - go_repository( - name = "com_github_kr_text", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/kr/text", - sum = "h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=", - version = "v0.2.0", -@@ -731,6 +746,7 @@ def go_repositories(): - ) - go_repository( - name = "com_github_pkg_diff", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/pkg/diff", - sum = "h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A=", - version = "v0.0.0-20210226163009-20ebb0f2a09e", -@@ -795,6 +811,7 @@ def go_repositories(): - - go_repository( - name = "com_github_rogpeppe_fastuuid", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/rogpeppe/fastuuid", - sum = "h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s=", - version = "v1.2.0", -@@ -802,6 +819,7 @@ def go_repositories(): - - go_repository( - name = "com_github_rogpeppe_go_internal", -+ build_file_proto_mode = "disable_global", - importpath = "github.com/rogpeppe/go-internal", - sum = "h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=", - version = "v1.9.0", -@@ -942,18 +960,21 @@ def go_repositories(): - ) - go_repository( - name = "com_google_cloud_go", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go", - sum = "h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys=", - version = "v0.110.0", - ) - go_repository( - name = "com_google_cloud_go_accessapproval", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/accessapproval", - sum = "h1:x0cEHro/JFPd7eS4BlEWNTMecIj2HdXjOVB5BtvwER0=", - version = "v1.6.0", - ) - go_repository( - name = "com_google_cloud_go_accesscontextmanager", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/accesscontextmanager", - sum = "h1:MG60JgnEoawHJrbWw0jGdv6HLNSf6gQvYRiXpuzqgEA=", - version = "v1.7.0", -@@ -961,6 +982,7 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_aiplatform", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/aiplatform", - sum = "h1:zTw+suCVchgZyO+k847wjzdVjWmrAuehxdvcZvJwfGg=", - version = "v1.37.0", -@@ -968,24 +990,28 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_analytics", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/analytics", - sum = "h1:LqAo3tAh2FU9+w/r7vc3hBjU23Kv7GhO/PDIW7kIYgM=", - version = "v0.19.0", - ) - go_repository( - name = "com_google_cloud_go_apigateway", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/apigateway", - sum = "h1:ZI9mVO7x3E9RK/BURm2p1aw9YTBSCQe3klmyP1WxWEg=", - version = "v1.5.0", - ) - go_repository( - name = "com_google_cloud_go_apigeeconnect", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/apigeeconnect", - sum = "h1:sWOmgDyAsi1AZ48XRHcATC0tsi9SkPT7DA/+VCfkaeA=", - version = "v1.5.0", - ) - go_repository( - name = "com_google_cloud_go_apigeeregistry", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/apigeeregistry", - sum = "h1:E43RdhhCxdlV+I161gUY2rI4eOaMzHTA5kNkvRsFXvc=", - version = "v0.6.0", -@@ -999,6 +1025,7 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_appengine", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/appengine", - sum = "h1:aBGDKmRIaRRoWJ2tAoN0oVSHoWLhtO9aj/NvUyP4aYs=", - version = "v1.7.1", -@@ -1006,12 +1033,14 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_area120", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/area120", - sum = "h1:ugckkFh4XkHJMPhTIx0CyvdoBxmOpMe8rNs4Ok8GAag=", - version = "v0.7.1", - ) - go_repository( - name = "com_google_cloud_go_artifactregistry", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/artifactregistry", - sum = "h1:o1Q80vqEB6Qp8WLEH3b8FBLNUCrGQ4k5RFj0sn/sgO8=", - version = "v1.13.0", -@@ -1019,36 +1048,42 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_asset", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/asset", - sum = "h1:YAsssO08BqZ6mncbb6FPlj9h6ACS7bJQUOlzciSfbNk=", - version = "v1.13.0", - ) - go_repository( - name = "com_google_cloud_go_assuredworkloads", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/assuredworkloads", - sum = "h1:VLGnVFta+N4WM+ASHbhc14ZOItOabDLH1MSoDv+Xuag=", - version = "v1.10.0", - ) - go_repository( - name = "com_google_cloud_go_automl", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/automl", - sum = "h1:50VugllC+U4IGl3tDNcZaWvApHBTrn/TvyHDJ0wM+Uw=", - version = "v1.12.0", - ) - go_repository( - name = "com_google_cloud_go_baremetalsolution", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/baremetalsolution", - sum = "h1:2AipdYXL0VxMboelTTw8c1UJ7gYu35LZYUbuRv9Q28s=", - version = "v0.5.0", - ) - go_repository( - name = "com_google_cloud_go_batch", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/batch", - sum = "h1:YbMt0E6BtqeD5FvSv1d56jbVsWEzlGm55lYte+M6Mzs=", - version = "v0.7.0", - ) - go_repository( - name = "com_google_cloud_go_beyondcorp", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/beyondcorp", - sum = "h1:UkY2BTZkEUAVrgqnSdOJ4p3y9ZRBPEe1LkjgC8Bj/Pc=", - version = "v0.5.0", -@@ -1056,42 +1091,49 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_bigquery", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/bigquery", - sum = "h1:RscMV6LbnAmhAzD893Lv9nXXy2WCaJmbxYPWDLbGqNQ=", - version = "v1.50.0", - ) - go_repository( - name = "com_google_cloud_go_billing", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/billing", - sum = "h1:JYj28UYF5w6VBAh0gQYlgHJ/OD1oA+JgW29YZQU+UHM=", - version = "v1.13.0", - ) - go_repository( - name = "com_google_cloud_go_binaryauthorization", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/binaryauthorization", - sum = "h1:d3pMDBCCNivxt5a4eaV7FwL7cSH0H7RrEnFrTb1QKWs=", - version = "v1.5.0", - ) - go_repository( - name = "com_google_cloud_go_certificatemanager", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/certificatemanager", - sum = "h1:5C5UWeSt8Jkgp7OWn2rCkLmYurar/vIWIoSQ2+LaTOc=", - version = "v1.6.0", - ) - go_repository( - name = "com_google_cloud_go_channel", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/channel", - sum = "h1:GpcQY5UJKeOekYgsX3QXbzzAc/kRGtBq43fTmyKe6Uw=", - version = "v1.12.0", - ) - go_repository( - name = "com_google_cloud_go_cloudbuild", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/cloudbuild", - sum = "h1:GHQCjV4WlPPVU/j3Rlpc8vNIDwThhd1U9qSY/NPZdko=", - version = "v1.9.0", - ) - go_repository( - name = "com_google_cloud_go_clouddms", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/clouddms", - sum = "h1:E7v4TpDGUyEm1C/4KIrpVSOCTm0P6vWdHT0I4mostRA=", - version = "v1.5.0", -@@ -1099,6 +1141,7 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_cloudtasks", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/cloudtasks", - sum = "h1:uK5k6abf4yligFgYFnG0ni8msai/dSv6mDmiBulU0hU=", - version = "v1.10.0", -@@ -1106,12 +1149,14 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_compute", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/compute", - sum = "h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ=", - version = "v1.19.0", - ) - go_repository( - name = "com_google_cloud_go_compute_metadata", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/compute/metadata", - sum = "h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=", - version = "v0.2.3", -@@ -1119,12 +1164,14 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_contactcenterinsights", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/contactcenterinsights", - sum = "h1:jXIpfcH/VYSE1SYcPzO0n1VVb+sAamiLOgCw45JbOQk=", - version = "v1.6.0", - ) - go_repository( - name = "com_google_cloud_go_container", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/container", - sum = "h1:NKlY/wCDapfVZlbVVaeuu2UZZED5Dy1z4Zx1KhEzm8c=", - version = "v1.15.0", -@@ -1132,6 +1179,7 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_containeranalysis", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/containeranalysis", - sum = "h1:EQ4FFxNaEAg8PqQCO7bVQfWz9NVwZCUKaM1b3ycfx3U=", - version = "v0.9.0", -@@ -1139,24 +1187,28 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_datacatalog", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/datacatalog", - sum = "h1:4H5IJiyUE0X6ShQBqgFFZvGGcrwGVndTwUSLP4c52gw=", - version = "v1.13.0", - ) - go_repository( - name = "com_google_cloud_go_dataflow", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/dataflow", - sum = "h1:eYyD9o/8Nm6EttsKZaEGD84xC17bNgSKCu0ZxwqUbpg=", - version = "v0.8.0", - ) - go_repository( - name = "com_google_cloud_go_dataform", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/dataform", - sum = "h1:Dyk+fufup1FR6cbHjFpMuP4SfPiF3LI3JtoIIALoq48=", - version = "v0.7.0", - ) - go_repository( - name = "com_google_cloud_go_datafusion", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/datafusion", - sum = "h1:sZjRnS3TWkGsu1LjYPFD/fHeMLZNXDK6PDHi2s2s/bk=", - version = "v1.6.0", -@@ -1164,18 +1216,21 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_datalabeling", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/datalabeling", - sum = "h1:ch4qA2yvddGRUrlfwrNJCr79qLqhS9QBwofPHfFlDIk=", - version = "v0.7.0", - ) - go_repository( - name = "com_google_cloud_go_dataplex", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/dataplex", - sum = "h1:RvoZ5T7gySwm1CHzAw7yY1QwwqaGswunmqEssPxU/AM=", - version = "v1.6.0", - ) - go_repository( - name = "com_google_cloud_go_dataproc", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/dataproc", - sum = "h1:W47qHL3W4BPkAIbk4SWmIERwsWBaNnWm0P2sdx3YgGU=", - version = "v1.12.0", -@@ -1183,6 +1238,7 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_dataqna", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/dataqna", - sum = "h1:yFzi/YU4YAdjyo7pXkBE2FeHbgz5OQQBVDdbErEHmVQ=", - version = "v0.7.0", -@@ -1190,18 +1246,21 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_datastore", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/datastore", - sum = "h1:iF6I/HaLs3Ado8uRKMvZRvF/ZLkWaWE9i8AiHzbC774=", - version = "v1.11.0", - ) - go_repository( - name = "com_google_cloud_go_datastream", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/datastream", - sum = "h1:BBCBTnWMDwwEzQQmipUXxATa7Cm7CA/gKjKcR2w35T0=", - version = "v1.7.0", - ) - go_repository( - name = "com_google_cloud_go_deploy", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/deploy", - sum = "h1:otshdKEbmsi1ELYeCKNYppwV0UH5xD05drSdBm7ouTk=", - version = "v1.8.0", -@@ -1209,12 +1268,14 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_dialogflow", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/dialogflow", - sum = "h1:uVlKKzp6G/VtSW0E7IH1Y5o0H48/UOCmqksG2riYCwQ=", - version = "v1.32.0", - ) - go_repository( - name = "com_google_cloud_go_dlp", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/dlp", - sum = "h1:1JoJqezlgu6NWCroBxr4rOZnwNFILXr4cB9dMaSKO4A=", - version = "v1.9.0", -@@ -1222,12 +1283,14 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_documentai", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/documentai", - sum = "h1:KM3Xh0QQyyEdC8Gs2vhZfU+rt6OCPF0dwVwxKgLmWfI=", - version = "v1.18.0", - ) - go_repository( - name = "com_google_cloud_go_domains", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/domains", - sum = "h1:2ti/o9tlWL4N+wIuWUNH+LbfgpwxPr8J1sv9RHA4bYQ=", - version = "v0.8.0", -@@ -1235,12 +1298,14 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_edgecontainer", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/edgecontainer", - sum = "h1:O0YVE5v+O0Q/ODXYsQHmHb+sYM8KNjGZw2pjX2Ws41c=", - version = "v1.0.0", - ) - go_repository( - name = "com_google_cloud_go_errorreporting", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/errorreporting", - sum = "h1:kj1XEWMu8P0qlLhm3FwcaFsUvXChV/OraZwA70trRR0=", - version = "v0.3.0", -@@ -1248,18 +1313,21 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_essentialcontacts", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/essentialcontacts", - sum = "h1:gIzEhCoOT7bi+6QZqZIzX1Erj4SswMPIteNvYVlu+pM=", - version = "v1.5.0", - ) - go_repository( - name = "com_google_cloud_go_eventarc", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/eventarc", - sum = "h1:fsJmNeqvqtk74FsaVDU6cH79lyZNCYP8Rrv7EhaB/PU=", - version = "v1.11.0", - ) - go_repository( - name = "com_google_cloud_go_filestore", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/filestore", - sum = "h1:ckTEXN5towyTMu4q0uQ1Mde/JwTHur0gXs8oaIZnKfw=", - version = "v1.6.0", -@@ -1267,24 +1335,28 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_firestore", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/firestore", - sum = "h1:IBlRyxgGySXu5VuW0RgGFlTtLukSnNkpDiEOMkQkmpA=", - version = "v1.9.0", - ) - go_repository( - name = "com_google_cloud_go_functions", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/functions", - sum = "h1:pPDqtsXG2g9HeOQLoquLbmvmb82Y4Ezdo1GXuotFoWg=", - version = "v1.13.0", - ) - go_repository( - name = "com_google_cloud_go_gaming", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/gaming", - sum = "h1:7vEhFnZmd931Mo7sZ6pJy7uQPDxF7m7v8xtBheG08tc=", - version = "v1.9.0", - ) - go_repository( - name = "com_google_cloud_go_gkebackup", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/gkebackup", - sum = "h1:za3QZvw6ujR0uyqkhomKKKNoXDyqYGPJies3voUK8DA=", - version = "v0.4.0", -@@ -1292,54 +1364,63 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_gkeconnect", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/gkeconnect", - sum = "h1:gXYKciHS/Lgq0GJ5Kc9SzPA35NGc3yqu6SkjonpEr2Q=", - version = "v0.7.0", - ) - go_repository( - name = "com_google_cloud_go_gkehub", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/gkehub", - sum = "h1:TqCSPsEBQ6oZSJgEYZ3XT8x2gUadbvfwI32YB0kuHCs=", - version = "v0.12.0", - ) - go_repository( - name = "com_google_cloud_go_gkemulticloud", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/gkemulticloud", - sum = "h1:8I84Q4vl02rJRsFiinBxl7WCozfdLlUVBQuSrqr9Wtk=", - version = "v0.5.0", - ) - go_repository( - name = "com_google_cloud_go_gsuiteaddons", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/gsuiteaddons", - sum = "h1:1mvhXqJzV0Vg5Fa95QwckljODJJfDFXV4pn+iL50zzA=", - version = "v1.5.0", - ) - go_repository( - name = "com_google_cloud_go_iam", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/iam", - sum = "h1:+CmB+K0J/33d0zSQ9SlFWUeCCEn5XJA0ZMZ3pHE9u8k=", - version = "v0.13.0", - ) - go_repository( - name = "com_google_cloud_go_iap", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/iap", - sum = "h1:PxVHFuMxmSZyfntKXHXhd8bo82WJ+LcATenq7HLdVnU=", - version = "v1.7.1", - ) - go_repository( - name = "com_google_cloud_go_ids", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/ids", - sum = "h1:fodnCDtOXuMmS8LTC2y3h8t24U8F3eKWfhi+3LY6Qf0=", - version = "v1.3.0", - ) - go_repository( - name = "com_google_cloud_go_iot", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/iot", - sum = "h1:39W5BFSarRNZfVG0eXI5LYux+OVQT8GkgpHCnrZL2vM=", - version = "v1.6.0", - ) - go_repository( - name = "com_google_cloud_go_kms", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/kms", - sum = "h1:7hm1bRqGCA1GBRQUrp831TwJ9TWhP+tvLuP497CQS2g=", - version = "v1.10.1", -@@ -1347,18 +1428,21 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_language", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/language", - sum = "h1:7Ulo2mDk9huBoBi8zCE3ONOoBrL6UXfAI71CLQ9GEIM=", - version = "v1.9.0", - ) - go_repository( - name = "com_google_cloud_go_lifesciences", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/lifesciences", - sum = "h1:uWrMjWTsGjLZpCTWEAzYvyXj+7fhiZST45u9AgasasI=", - version = "v0.8.0", - ) - go_repository( - name = "com_google_cloud_go_logging", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/logging", - sum = "h1:CJYxlNNNNAMkHp9em/YEXcfJg+rPDg7YfwoRpMU+t5I=", - version = "v1.7.0", -@@ -1366,18 +1450,21 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_longrunning", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/longrunning", - sum = "h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM=", - version = "v0.4.1", - ) - go_repository( - name = "com_google_cloud_go_managedidentities", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/managedidentities", - sum = "h1:ZRQ4k21/jAhrHBVKl/AY7SjgzeJwG1iZa+mJ82P+VNg=", - version = "v1.5.0", - ) - go_repository( - name = "com_google_cloud_go_maps", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/maps", - sum = "h1:mv9YaczD4oZBZkM5XJl6fXQ984IkJNHPwkc8MUsdkBo=", - version = "v0.7.0", -@@ -1385,24 +1472,28 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_mediatranslation", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/mediatranslation", - sum = "h1:anPxH+/WWt8Yc3EdoEJhPMBRF7EhIdz426A+tuoA0OU=", - version = "v0.7.0", - ) - go_repository( - name = "com_google_cloud_go_memcache", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/memcache", - sum = "h1:8/VEmWCpnETCrBwS3z4MhT+tIdKgR1Z4Tr2tvYH32rg=", - version = "v1.9.0", - ) - go_repository( - name = "com_google_cloud_go_metastore", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/metastore", - sum = "h1:QCFhZVe2289KDBQ7WxaHV2rAmPrmRAdLC6gbjUd3HPo=", - version = "v1.10.0", - ) - go_repository( - name = "com_google_cloud_go_monitoring", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/monitoring", - sum = "h1:2qsrgXGVoRXpP7otZ14eE1I568zAa92sJSDPyOJvwjM=", - version = "v1.13.0", -@@ -1410,12 +1501,14 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_networkconnectivity", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/networkconnectivity", - sum = "h1:ZD6b4Pk1jEtp/cx9nx0ZYcL3BKqDa+KixNDZ6Bjs1B8=", - version = "v1.11.0", - ) - go_repository( - name = "com_google_cloud_go_networkmanagement", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/networkmanagement", - sum = "h1:8KWEUNGcpSX9WwZXq7FtciuNGPdPdPN/ruDm769yAEM=", - version = "v1.6.0", -@@ -1423,30 +1516,35 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_networksecurity", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/networksecurity", - sum = "h1:sOc42Ig1K2LiKlzG71GUVloeSJ0J3mffEBYmvu+P0eo=", - version = "v0.8.0", - ) - go_repository( - name = "com_google_cloud_go_notebooks", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/notebooks", - sum = "h1:Kg2K3K7CbSXYJHZ1aGQpf1xi5x2GUvQWf2sFVuiZh8M=", - version = "v1.8.0", - ) - go_repository( - name = "com_google_cloud_go_optimization", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/optimization", - sum = "h1:dj8O4VOJRB4CUwZXdmwNViH1OtI0WtWL867/lnYH248=", - version = "v1.3.1", - ) - go_repository( - name = "com_google_cloud_go_orchestration", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/orchestration", - sum = "h1:Vw+CEXo8M/FZ1rb4EjcLv0gJqqw89b7+g+C/EmniTb8=", - version = "v1.6.0", - ) - go_repository( - name = "com_google_cloud_go_orgpolicy", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/orgpolicy", - sum = "h1:XDriMWug7sd0kYT1QKofRpRHzjad0bK8Q8uA9q+XrU4=", - version = "v1.10.0", -@@ -1454,24 +1552,28 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_osconfig", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/osconfig", - sum = "h1:PkSQx4OHit5xz2bNyr11KGcaFccL5oqglFPdTboyqwQ=", - version = "v1.11.0", - ) - go_repository( - name = "com_google_cloud_go_oslogin", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/oslogin", - sum = "h1:whP7vhpmc+ufZa90eVpkfbgzJRK/Xomjz+XCD4aGwWw=", - version = "v1.9.0", - ) - go_repository( - name = "com_google_cloud_go_phishingprotection", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/phishingprotection", - sum = "h1:l6tDkT7qAEV49MNEJkEJTB6vOO/onbSOcNtAT09HPuA=", - version = "v0.7.0", - ) - go_repository( - name = "com_google_cloud_go_policytroubleshooter", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/policytroubleshooter", - sum = "h1:yKAGC4p9O61ttZUswaq9GAn1SZnEzTd0vUYXD7ZBT7Y=", - version = "v1.6.0", -@@ -1479,6 +1581,7 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_privatecatalog", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/privatecatalog", - sum = "h1:EPEJ1DpEGXLDnmc7mnCAqFmkwUJbIsaLAiLHVOkkwtc=", - version = "v0.8.0", -@@ -1486,12 +1589,14 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_pubsub", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/pubsub", - sum = "h1:vCge8m7aUKBJYOgrZp7EsNDf6QMd2CAlXZqWTn3yq6s=", - version = "v1.30.0", - ) - go_repository( - name = "com_google_cloud_go_pubsublite", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/pubsublite", - sum = "h1:cb9fsrtpINtETHiJ3ECeaVzrfIVhcGjhhJEjybHXHao=", - version = "v1.7.0", -@@ -1499,36 +1604,42 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_recaptchaenterprise_v2", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/recaptchaenterprise/v2", - sum = "h1:6iOCujSNJ0YS7oNymI64hXsjGq60T4FK1zdLugxbzvU=", - version = "v2.7.0", - ) - go_repository( - name = "com_google_cloud_go_recommendationengine", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/recommendationengine", - sum = "h1:VibRFCwWXrFebEWKHfZAt2kta6pS7Tlimsnms0fjv7k=", - version = "v0.7.0", - ) - go_repository( - name = "com_google_cloud_go_recommender", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/recommender", - sum = "h1:ZnFRY5R6zOVk2IDS1Jbv5Bw+DExCI5rFumsTnMXiu/A=", - version = "v1.9.0", - ) - go_repository( - name = "com_google_cloud_go_redis", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/redis", - sum = "h1:JoAd3SkeDt3rLFAAxEvw6wV4t+8y4ZzfZcZmddqphQ8=", - version = "v1.11.0", - ) - go_repository( - name = "com_google_cloud_go_resourcemanager", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/resourcemanager", - sum = "h1:NRM0p+RJkaQF9Ee9JMnUV9BQ2QBIOq/v8M+Pbv/wmCs=", - version = "v1.7.0", - ) - go_repository( - name = "com_google_cloud_go_resourcesettings", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/resourcesettings", - sum = "h1:8Dua37kQt27CCWHm4h/Q1XqCF6ByD7Ouu49xg95qJzI=", - version = "v1.5.0", -@@ -1536,12 +1647,14 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_retail", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/retail", - sum = "h1:1Dda2OpFNzIb4qWgFZjYlpP7sxX3aLeypKG6A3H4Yys=", - version = "v1.12.0", - ) - go_repository( - name = "com_google_cloud_go_run", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/run", - sum = "h1:ydJQo+k+MShYnBfhaRHSZYeD/SQKZzZLAROyfpeD9zw=", - version = "v0.9.0", -@@ -1549,12 +1662,14 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_scheduler", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/scheduler", - sum = "h1:NpQAHtx3sulByTLe2dMwWmah8PWgeoieFPpJpArwFV0=", - version = "v1.9.0", - ) - go_repository( - name = "com_google_cloud_go_secretmanager", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/secretmanager", - sum = "h1:pu03bha7ukxF8otyPKTFdDz+rr9sE3YauS5PliDXK60=", - version = "v1.10.0", -@@ -1562,12 +1677,14 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_security", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/security", - sum = "h1:PYvDxopRQBfYAXKAuDpFCKBvDOWPWzp9k/H5nB3ud3o=", - version = "v1.13.0", - ) - go_repository( - name = "com_google_cloud_go_securitycenter", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/securitycenter", - sum = "h1:AF3c2s3awNTMoBtMX3oCUoOMmGlYxGOeuXSYHNBkf14=", - version = "v1.19.0", -@@ -1581,6 +1698,7 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_servicedirectory", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/servicedirectory", - sum = "h1:SJwk0XX2e26o25ObYUORXx6torSFiYgsGkWSkZgkoSU=", - version = "v1.9.0", -@@ -1599,12 +1717,14 @@ def go_repositories(): - ) - go_repository( - name = "com_google_cloud_go_shell", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/shell", - sum = "h1:wT0Uw7ib7+AgZST9eCDygwTJn4+bHMDtZo5fh7kGWDU=", - version = "v1.6.0", - ) - go_repository( - name = "com_google_cloud_go_spanner", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/spanner", - sum = "h1:7VdjZ8zj4sHbDw55atp5dfY6kn1j9sam9DRNpPQhqR4=", - version = "v1.45.0", -@@ -1612,6 +1732,7 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_speech", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/speech", - sum = "h1:JEVoWGNnTF128kNty7T4aG4eqv2z86yiMJPT9Zjp+iw=", - version = "v1.15.0", -@@ -1625,6 +1746,7 @@ def go_repositories(): - ) - go_repository( - name = "com_google_cloud_go_storagetransfer", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/storagetransfer", - sum = "h1:5T+PM+3ECU3EY2y9Brv0Sf3oka8pKmsCfpQ07+91G9o=", - version = "v1.8.0", -@@ -1632,36 +1754,42 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_talent", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/talent", - sum = "h1:nI9sVZPjMKiO2q3Uu0KhTDVov3Xrlpt63fghP9XjyEM=", - version = "v1.5.0", - ) - go_repository( - name = "com_google_cloud_go_texttospeech", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/texttospeech", - sum = "h1:H4g1ULStsbVtalbZGktyzXzw6jP26RjVGYx9RaYjBzc=", - version = "v1.6.0", - ) - go_repository( - name = "com_google_cloud_go_tpu", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/tpu", - sum = "h1:/34T6CbSi+kTv5E19Q9zbU/ix8IviInZpzwz3rsFE+A=", - version = "v1.5.0", - ) - go_repository( - name = "com_google_cloud_go_trace", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/trace", - sum = "h1:olxC0QHC59zgJVALtgqfD9tGk0lfeCP5/AGXL3Px/no=", - version = "v1.9.0", - ) - go_repository( - name = "com_google_cloud_go_translate", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/translate", - sum = "h1:GvLP4oQ4uPdChBmBaUSa/SaZxCdyWELtlAaKzpHsXdA=", - version = "v1.7.0", - ) - go_repository( - name = "com_google_cloud_go_video", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/video", - sum = "h1:upIbnGI0ZgACm58HPjAeBMleW3sl5cT84AbYQ8PWOgM=", - version = "v1.15.0", -@@ -1669,24 +1797,28 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_videointelligence", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/videointelligence", - sum = "h1:Uh5BdoET8XXqXX2uXIahGb+wTKbLkGH7s4GXR58RrG8=", - version = "v1.10.0", - ) - go_repository( - name = "com_google_cloud_go_vision_v2", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/vision/v2", - sum = "h1:8C8RXUJoflCI4yVdqhTy9tRyygSHmp60aP363z23HKg=", - version = "v2.7.0", - ) - go_repository( - name = "com_google_cloud_go_vmmigration", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/vmmigration", - sum = "h1:Azs5WKtfOC8pxvkyrDvt7J0/4DYBch0cVbuFfCCFt5k=", - version = "v1.6.0", - ) - go_repository( - name = "com_google_cloud_go_vmwareengine", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/vmwareengine", - sum = "h1:b0NBu7S294l0gmtrT0nOJneMYgZapr5x9tVWvgDoVEM=", - version = "v0.3.0", -@@ -1694,6 +1826,7 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_vpcaccess", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/vpcaccess", - sum = "h1:FOe6CuiQD3BhHJWt7E8QlbBcaIzVRddupwJlp7eqmn4=", - version = "v1.6.0", -@@ -1701,12 +1834,14 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_webrisk", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/webrisk", - sum = "h1:IY+L2+UwxcVm2zayMAtBhZleecdIFLiC+QJMzgb0kT0=", - version = "v1.8.0", - ) - go_repository( - name = "com_google_cloud_go_websecurityscanner", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/websecurityscanner", - sum = "h1:AHC1xmaNMOZtNqxI9Rmm87IJEyPaRkOxeI0gpAacXGk=", - version = "v1.5.0", -@@ -1714,6 +1849,7 @@ def go_repositories(): - - go_repository( - name = "com_google_cloud_go_workflows", -+ build_file_proto_mode = "disable_global", - importpath = "cloud.google.com/go/workflows", - sum = "h1:FfGp9w0cYnaKZJhUOMqCOJCYT/WlvYBfTQhFWV3sRKI=", - version = "v1.10.0", -@@ -1734,6 +1870,7 @@ def go_repositories(): - - go_repository( - name = "in_gopkg_check_v1", -+ build_file_proto_mode = "disable_global", - importpath = "gopkg.in/check.v1", - sum = "h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=", - version = "v1.0.0-20201130134442-10cb98267c6c", -@@ -1766,6 +1903,7 @@ def go_repositories(): - ) - go_repository( - name = "in_gopkg_yaml_v3", -+ build_file_proto_mode = "disable_global", - importpath = "gopkg.in/yaml.v3", - sum = "h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=", - version = "v3.0.1", -@@ -1816,24 +1954,28 @@ def go_repositories(): - ) - go_repository( - name = "org_golang_google_appengine", -+ build_file_proto_mode = "disable_global", - importpath = "google.golang.org/appengine", - sum = "h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=", - version = "v1.6.7", - ) - go_repository( - name = "org_golang_google_genproto", -+ build_file_proto_mode = "disable_global", - importpath = "google.golang.org/genproto", - sum = "h1:Ao9GzfUMPH3zjVfzXG5rlWlk+Q8MXWKwWpwVQE1MXfw=", - version = "v0.0.0-20230526203410-71b5a4ffd15e", - ) - go_repository( - name = "org_golang_google_genproto_googleapis_api", -+ build_file_proto_mode = "disable_global", - importpath = "google.golang.org/genproto/googleapis/api", - sum = "h1:kVKPf/IiYSBWEWtkIn6wZXwWGCnLKcC8oWfZvXjsGnM=", - version = "v0.0.0-20230530153820-e85fd2cbaebc", - ) - go_repository( - name = "org_golang_google_genproto_googleapis_rpc", -+ build_file_proto_mode = "disable_global", - importpath = "google.golang.org/genproto/googleapis/rpc", - sum = "h1:XSJ8Vk1SWuNr8S18z1NZSziL0CPIXLCCMDOEFtHBOFc=", - version = "v0.0.0-20230530153820-e85fd2cbaebc", -@@ -1841,6 +1983,7 @@ def go_repositories(): - - go_repository( - name = "org_golang_google_grpc", -+ build_file_proto_mode = "disable_global", - importpath = "google.golang.org/grpc", - sum = "h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag=", - version = "v1.55.0", -@@ -1854,12 +1997,14 @@ def go_repositories(): - ) - go_repository( - name = "org_golang_google_protobuf", -+ build_file_proto_mode = "disable_global", - importpath = "google.golang.org/protobuf", - sum = "h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=", - version = "v1.30.0", - ) - go_repository( - name = "org_golang_x_crypto", -+ build_file_proto_mode = "disable_global", - importpath = "golang.org/x/crypto", - sum = "h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=", - version = "v0.0.0-20190308221718-c2843e01d9a2", -@@ -1892,18 +2037,21 @@ def go_repositories(): - ) - go_repository( - name = "org_golang_x_mod", -+ build_file_proto_mode = "disable_global", - importpath = "golang.org/x/mod", - sum = "h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=", - version = "v0.8.0", - ) - go_repository( - name = "org_golang_x_net", -+ build_file_proto_mode = "disable_global", - importpath = "golang.org/x/net", - sum = "h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=", - version = "v0.10.0", - ) - go_repository( - name = "org_golang_x_oauth2", -+ build_file_proto_mode = "disable_global", - importpath = "golang.org/x/oauth2", - sum = "h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8=", - version = "v0.8.0", -@@ -1916,12 +2064,14 @@ def go_repositories(): - ) - go_repository( - name = "org_golang_x_sys", -+ build_file_proto_mode = "disable_global", - importpath = "golang.org/x/sys", - sum = "h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=", - version = "v0.8.0", - ) - go_repository( - name = "org_golang_x_term", -+ build_file_proto_mode = "disable_global", - importpath = "golang.org/x/term", - sum = "h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=", - version = "v0.8.0", -@@ -1929,6 +2079,7 @@ def go_repositories(): - - go_repository( - name = "org_golang_x_text", -+ build_file_proto_mode = "disable_global", - importpath = "golang.org/x/text", - sum = "h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=", - version = "v0.9.0", -@@ -1942,6 +2093,7 @@ def go_repositories(): - ) - go_repository( - name = "org_golang_x_tools", -+ build_file_proto_mode = "disable_global", - importpath = "golang.org/x/tools", - sum = "h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=", - version = "v0.6.0", -@@ -1949,6 +2101,7 @@ def go_repositories(): - - go_repository( - name = "org_golang_x_xerrors", -+ build_file_proto_mode = "disable_global", - importpath = "golang.org/x/xerrors", - sum = "h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=", - version = "v0.0.0-20191204190536-9bdfabe68543", -diff --git a/runtime/BUILD.bazel b/runtime/BUILD.bazel -index a8789f1..c3c37af 100644 ---- a/runtime/BUILD.bazel -+++ b/runtime/BUILD.bazel -@@ -1,7 +1,5 @@ - load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - --package(default_visibility = ["//visibility:public"]) -- - go_library( - name = "runtime", - srcs = [ -@@ -23,6 +21,7 @@ go_library( - "query.go", - ], - importpath = "github.com/grpc-ecosystem/grpc-gateway/v2/runtime", -+ visibility = ["//visibility:public"], - deps = [ - "//internal/httprule", - "//utilities", -@@ -44,9 +43,14 @@ go_library( - ], - ) - -+alias( -+ name = "go_default_library", -+ actual = ":runtime", -+ visibility = ["//visibility:public"], -+) -+ - go_test( - name = "runtime_test", -- size = "small", - srcs = [ - "context_test.go", - "convert_test.go", -@@ -89,9 +93,3 @@ go_test( - "@org_golang_google_protobuf//types/known/wrapperspb", - ], - ) -- --alias( -- name = "go_default_library", -- actual = ":runtime", -- visibility = ["//visibility:public"], --) -diff --git a/runtime/internal/examplepb/BUILD.bazel b/runtime/internal/examplepb/BUILD.bazel -index cfed28f..794faad 100644 ---- a/runtime/internal/examplepb/BUILD.bazel -+++ b/runtime/internal/examplepb/BUILD.bazel -@@ -2,10 +2,6 @@ load("@rules_proto//proto:defs.bzl", "proto_library") - load("@io_bazel_rules_go//go:def.bzl", "go_library") - load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") - --# gazelle:exclude non_standard_names_grpc.pb.go -- --package(default_visibility = ["//visibility:public"]) -- - proto_library( - name = "examplepb_proto", - srcs = [ -@@ -14,6 +10,7 @@ proto_library( - "proto2.proto", - "proto3.proto", - ], -+ visibility = ["//runtime:__subpackages__"], - deps = [ - "@com_google_protobuf//:any_proto", - "@com_google_protobuf//:duration_proto", -@@ -34,6 +31,7 @@ go_proto_library( - ], - importpath = "github.com/grpc-ecosystem/grpc-gateway/v2/runtime/internal/examplepb", - proto = ":examplepb_proto", -+ visibility = ["//runtime:__subpackages__"], - deps = ["@go_googleapis//google/api:annotations_go_proto"], - ) - -@@ -41,6 +39,7 @@ go_library( - name = "examplepb", - embed = [":examplepb_go_proto"], - importpath = "github.com/grpc-ecosystem/grpc-gateway/v2/runtime/internal/examplepb", -+ visibility = ["//runtime:__subpackages__"], - ) - - alias( From bf10f4d02bb07d0fbe174a83e44611a18bc21d1f Mon Sep 17 00:00:00 2001 From: "gitstart-app[bot]" <57568882+gitstart-app[bot]@users.noreply.github.com> Date: Tue, 28 Nov 2023 17:29:47 +0100 Subject: [PATCH 190/222] SG-58136 - Run experiment on "Cody for personal/work" form after a user signs up (#58607) chore: add header to survey form Co-authored-by: gitstart-sourcegraph <sourcegraph@gitstart.com> --- .../src/marketing/components/HubSpotForm.tsx | 12 +++++++--- .../src/marketing/toast/CodySurveyToast.tsx | 23 ++++++++++++------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/client/web/src/marketing/components/HubSpotForm.tsx b/client/web/src/marketing/components/HubSpotForm.tsx index ae1d6b19a85ee..82701d0f72af2 100644 --- a/client/web/src/marketing/components/HubSpotForm.tsx +++ b/client/web/src/marketing/components/HubSpotForm.tsx @@ -56,6 +56,7 @@ export interface HubSpotFormProps { inlineMessage?: string overrideFormShorten?: boolean userId?: string + userEmail?: string } /** @@ -172,7 +173,7 @@ function createHubSpotForm({ formId, onFormReady, onFormSubmitted, inlineMessage } // This gets called when the HubSpot form is ready -const onHubsportFormReady = (form: HTMLFormElement, userId?: string): void => { +const onHubsportFormReady = (form: HTMLFormElement, userId?: string, userEmail?: string): void => { /** * This allows you to populate hidden form fields with values * @@ -204,6 +205,9 @@ const onHubsportFormReady = (form: HTMLFormElement, userId?: string): void => { } else { populateHiddenFormField('anonymous_user_id', sourcegraphAnonymousUid) } + if (userEmail) { + populateHiddenFormField('email', userEmail) + } populateHiddenFormField('first_source_url', firstSourceURL) populateHiddenFormField('form_submission_source', window.location.href) } @@ -217,6 +221,7 @@ const onHubsportFormReady = (form: HTMLFormElement, userId?: string): void => { * @param options.onFormSubmitted - a callback that runs after a form submission * @param options.inlineMessage - a message to display after a form submission * @param options.userId - authenticated user's id + * @param options.userEmail - authenticated user's email * @returns - a div element with an id where the HubSpot form renders */ export const HubSpotForm: FunctionComponent<HubSpotFormProps> = ({ @@ -225,6 +230,7 @@ export const HubSpotForm: FunctionComponent<HubSpotFormProps> = ({ onFormSubmitted, onFormReady, inlineMessage = 'Thank you for your feedback!', + userEmail, userId, }) => { const [formCreated, setFormCreated] = useState<boolean>(false) @@ -245,7 +251,7 @@ export const HubSpotForm: FunctionComponent<HubSpotFormProps> = ({ formId: formId || masterFormId, onFormReady: form => { onFormReady?.(form) - onHubsportFormReady(form, userId) + onHubsportFormReady(form, userId, userEmail) }, onFormSubmitted, inlineMessage, @@ -253,7 +259,7 @@ export const HubSpotForm: FunctionComponent<HubSpotFormProps> = ({ setFormCreated(true) } - }, [formId, onFormSubmitted, inlineMessage, formCreated, masterFormName, onFormReady, userId]) + }, [formId, onFormSubmitted, inlineMessage, formCreated, masterFormName, onFormReady, userId, userEmail]) return <div id="form-target" data-testid="hubspot-form-container" className={classNames(styles.container)} /> } diff --git a/client/web/src/marketing/toast/CodySurveyToast.tsx b/client/web/src/marketing/toast/CodySurveyToast.tsx index 05040d0686331..7d080a0c0efda 100644 --- a/client/web/src/marketing/toast/CodySurveyToast.tsx +++ b/client/web/src/marketing/toast/CodySurveyToast.tsx @@ -163,14 +163,14 @@ const CodySurveyToastInner: React.FC< } const CodyQualificationSurveryToastInner: React.FC< - { onSubmitEnd: () => void; userId: string; hasVerifiedEmail: boolean } & TelemetryProps -> = ({ onSubmitEnd, telemetryService, userId, hasVerifiedEmail }) => { + { onSubmitEnd: () => void; authenticatedUser: AuthenticatedUser } & TelemetryProps +> = ({ onSubmitEnd, telemetryService, authenticatedUser }) => { const [updatePostSignupCompletion, { error: setPostSignupError }] = useMutation< SetCompletedPostSignupResult, SetCompletedPostSignupVariables >(SET_COMPLETED_POST_SIGNUP, { variables: { - userID: userId, + userID: authenticatedUser.id, }, }) @@ -197,9 +197,11 @@ const CodyQualificationSurveryToastInner: React.FC< [telemetryService] ) + const primaryEmail = authenticatedUser.emails.find(email => email.isPrimary)?.email + const handleSubmit = useCallback(async () => { try { - if (hasVerifiedEmail) { + if (authenticatedUser.hasVerifiedEmail) { await updatePostSignupCompletion() } @@ -208,7 +210,7 @@ const CodyQualificationSurveryToastInner: React.FC< /* eslint-disable no-console */ console.error(error) } - }, [hasVerifiedEmail, onSubmitEnd, updatePostSignupCompletion]) + }, [authenticatedUser.hasVerifiedEmail, onSubmitEnd, updatePostSignupCompletion]) useEffect(() => { telemetryService.log('ViewCodyforWorkorPersonalForm') @@ -222,9 +224,15 @@ const CodyQualificationSurveryToastInner: React.FC< data-testid="cody-qualification-survey-form" containerClassName={styles.modalOverlay} > + <H3 className="mb-4 d-flex align-items-center"> + <CodyColorIcon className={styles.codyIcon} /> + <span>Quick question...</span> + </H3> + <Text>How will you be using Cody, our AI assistant?</Text> <HubSpotForm onFormSubmitted={handleSubmit} - userId={userId} + userId={authenticatedUser?.id} + userEmail={primaryEmail} onFormReady={handleFormReady} masterFormName="qualificationSurvey" /> @@ -355,8 +363,7 @@ export const CodySurveyToast: React.FC< <CodyQualificationSurveryToastInner telemetryService={telemetryService} onSubmitEnd={handleSubmitEnd} - userId={authenticatedUser.id} - hasVerifiedEmail={authenticatedUser.hasVerifiedEmail} + authenticatedUser={authenticatedUser} /> ) } From 12c74673b9b06c6f50dff47c04aedf49d2107d51 Mon Sep 17 00:00:00 2001 From: Camden Cheek <camden@ccheek.com> Date: Tue, 28 Nov 2023 10:30:20 -0600 Subject: [PATCH 191/222] Chore: upgrade to go 1.21 (#58615) --- .tool-versions | 2 +- dev/sg/checks.go | 2 +- go.mod | 2 +- go.sum | 36 ++++++++++++++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 3 deletions(-) diff --git a/.tool-versions b/.tool-versions index 8f6a13deae8c7..329eb790d535f 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,4 +1,4 @@ -golang 1.20.10 +golang 1.21.4 nodejs 20.8.1 fd 8.6.0 shfmt 3.5.0 diff --git a/dev/sg/checks.go b/dev/sg/checks.go index 67d30e6cc4177..bbf78f29cf39f 100644 --- a/dev/sg/checks.go +++ b/dev/sg/checks.go @@ -34,7 +34,7 @@ var checks = map[string]check.CheckFunc{ "asdf": check.CommandOutputContains("asdf", "version"), "git": check.Combine(check.InPath("git"), checkGitVersion(">= 2.34.1")), "pnpm": check.Combine(check.InPath("pnpm"), checkPnpmVersion(">= 8.3.0")), - "go": check.Combine(check.InPath("go"), checkGoVersion("~> 1.20.10")), + "go": check.Combine(check.InPath("go"), checkGoVersion("~> 1.21.4")), "node": check.Combine(check.InPath("node"), check.CommandOutputContains(`node -e "console.log(\"foobar\")"`, "foobar")), "rust": check.Combine(check.InPath("cargo"), check.CommandOutputContains(`cargo version`, "1.58.0")), "docker-installed": check.WrapErrMessage(check.InPath("docker"), "if Docker is installed and the check fails, you might need to start Docker.app and restart terminal and 'sg setup'"), diff --git a/go.mod b/go.mod index 8fde6918175fe..6aebce779e669 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/sourcegraph/sourcegraph -go 1.19 +go 1.21 // Permanent replace directives // ============================ diff --git a/go.sum b/go.sum index f8bff18e06200..144b1b7756e98 100644 --- a/go.sum +++ b/go.sum @@ -38,6 +38,7 @@ cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzc cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 h1:aRVqY1p2IJaBGStWMsQMpkAa83cPkCDLl80eOj0Rbz4= cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68/go.mod h1:1a3eRNYX12fs5UABBIXS8HXVvQbX9hRB/RkEBPORpe8= cloud.google.com/go/datacatalog v1.19.0 h1:rbYNmHwvAOOwnW2FPXYkaK3Mf1MmGqRzK0mMiIEyLdo= +cloud.google.com/go/datacatalog v1.19.0/go.mod h1:5FR6ZIF8RZrtml0VUao22FxhdjkoG+a0866rEnObryM= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= @@ -46,7 +47,9 @@ cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXE cloud.google.com/go/kms v1.15.5 h1:pj1sRfut2eRbD9pFRjNnPNg/CzJPuQAzUujMIM1vVeM= cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= cloud.google.com/go/logging v1.8.1 h1:26skQWPeYhvIasWKm48+Eq7oUqdcdbwsCVwz5Ys0FvU= +cloud.google.com/go/logging v1.8.1/go.mod h1:TJjR+SimHwuC8MZ9cjByQulAMgni+RkXeI3wwctHJEI= cloud.google.com/go/longrunning v0.5.4 h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg= +cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= cloud.google.com/go/monitoring v1.16.3 h1:mf2SN9qSoBtIgiMA4R/y4VADPWZA7VCNJA079qLaZQ8= cloud.google.com/go/monitoring v1.16.3/go.mod h1:KwSsX5+8PnXv5NJnICZzW2R8pWTis8ypC4zmdRD63Tw= cloud.google.com/go/profiler v0.3.1 h1:b5got9Be9Ia0HVvyt7PavWxXEht15B9lWnigdvHtxOc= @@ -71,11 +74,13 @@ cloud.google.com/go/trace v1.10.4/go.mod h1:Nso99EDIK8Mj5/zmB+iGr9dosS/bzWCJ8wGm code.gitea.io/gitea v1.18.0 h1:qQXVeKHoFXywWVGGDmTOKxvzOK282EAPTw3qo2bgXAk= code.gitea.io/gitea v1.18.0/go.mod h1:A3dHVUUZ+9ULp0J8AjYF6XBgPsn/J7OZ0X73m7LVQGA= contrib.go.opencensus.io/exporter/prometheus v0.4.2 h1:sqfsYl5GIY/L570iT+l93ehxaWJs2/OwXtiWwew3oAg= +contrib.go.opencensus.io/exporter/prometheus v0.4.2/go.mod h1:dvEHbiKmgvbr5pjaF9fpw1KeYcjrnC1J8B+JKjsZyRQ= cuelang.org/go v0.4.3 h1:W3oBBjDTm7+IZfCKZAmC8uDG0eYfJL4Pp/xbbCMKaVo= cuelang.org/go v0.4.3/go.mod h1:7805vR9H+VoBNdWFdI7jyDR3QLUPp4+naHfbcgp55HI= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/99designs/gqlgen v0.17.2/go.mod h1:K5fzLKwtph+FFgh9j7nFbRUdBKvTcGnsta51fsMTn3o= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Azure/azure-sdk-for-go v56.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai v0.3.0 h1:x7fb22Q43h2DRFCvp9rAua8PoV3gwtl1bK5+pihnihA= github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai v0.3.0/go.mod h1:zPJgGMjMheJJrYgrQ4W8NrNCWtWXAkjI3KWYFnTtwdA= @@ -110,10 +115,13 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.41 github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.17.0 h1:DwGeS/9k9xdpnvVQuJF+L9bYNFvBCmCWlDA8d8opoZY= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.17.0/go.mod h1:SUVNJAkkyRKeM3L46/NhFGIz+Kx1zetN09qUs1XbMx8= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.41.0 h1:ZJwvlTjB8GycSRpysdcRv3FztommLDUfgii0VUUp5ys= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.41.0/go.mod h1:Ei53Im4CWT7FHDaMBvmQzZ8p91+X1IAaifp7QF+ewQQ= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.41.0 h1:MWQ81b2TkSLbDpLINiKdZdoht1VMEHCKr4BSZpb/KQ8= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.41.0/go.mod h1:lz6DEePTxmjvYMtusOoS3qDAErC0STi/wmvqJucKY28= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= +github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU= +github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Khan/genqlient v0.5.0 h1:TMZJ+tl/BpbmGyIBiXzKzUftDhw4ZWxQZ+1ydn0gyII= github.com/Khan/genqlient v0.5.0/go.mod h1:EpIvDVXYm01GP6AXzjA7dKriPTH6GmtpmvTAwUUqIX8= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= @@ -155,6 +163,7 @@ github.com/agnivade/levenshtein v1.1.0/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVb github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= github.com/alecthomas/assert/v2 v2.2.0 h1:f6L/b7KE2bfA+9O4FL3CM/xJccDEwPVYd5fALBiuwvw= +github.com/alecthomas/assert/v2 v2.2.0/go.mod h1:b/+1DI2Q6NckYi+3mXyH3wFb8qG37K/DuK80n7WefXA= github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek= github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= github.com/alecthomas/chroma/v2 v2.2.0/go.mod h1:vf4zrexSH54oEjJ7EdB65tGNHmH3pGZmVkgTP5RHvAs= @@ -164,6 +173,7 @@ github.com/alecthomas/kingpin v2.2.6+incompatible h1:5svnBTFgJjZvGKyYBtMB0+m5wvr github.com/alecthomas/kingpin v2.2.6+incompatible/go.mod h1:59OFYbFVLKQKq+mqrL6Rw5bR0c3ACQaawgXx0QYndlE= github.com/alecthomas/repr v0.0.0-20220113201626-b1b626ac65ae/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8= github.com/alecthomas/repr v0.1.0 h1:ENn2e1+J3k09gyj2shc0dHr/yjaWSHRlrJ4DPMevDqE= +github.com/alecthomas/repr v0.1.0/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -185,6 +195,7 @@ github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apache/arrow/go/v12 v12.0.0 h1:xtZE63VWl7qLdB0JObIXvvhGjoVNrQ9ciIHG2OK5cmc= github.com/apache/arrow/go/v12 v12.0.0/go.mod h1:d+tV/eHZZ7Dz7RPrFKtPK02tpr+c9/PEd/zm8mDS9Vg= @@ -198,6 +209,7 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= @@ -296,6 +308,7 @@ github.com/beevik/etree v1.1.0 h1:T0xke/WvNtMoCqgzPhkX2r4rjY3GDZFi+FjpRZY2Jbs= github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= +github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -365,6 +378,7 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/apd/v2 v2.0.1 h1:y1Rh3tEU89D+7Tgbw+lp52T6p/GJLpDmNvr10UWqLTE= @@ -401,6 +415,7 @@ github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= +github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/crewjam/httperr v0.2.0/go.mod h1:Jlz+Sg/XqBQhyMjdDiC+GNNRzZTD7x39Gu3pglZ5oH4= github.com/crewjam/saml v0.4.13 h1:TYHggH/hwP7eArqiXSJUvtOPNzQDyQ7vwmwEqlFWhMc= github.com/crewjam/saml v0.4.13/go.mod h1:igEejV+fihTIlHXYP8zOec3V5A8y3lws5bQBFsTm4gA= @@ -475,12 +490,14 @@ github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+m github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ= github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0= +github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/elimity-com/scim v0.0.0-20220121082953-15165b1a61c8 h1:6fUaAaX4Xe07LhVrHNmpfnlU41Nsto4skz4vhVqGwYk= github.com/elimity-com/scim v0.0.0-20220121082953-15165b1a61c8/go.mod h1:JkjcmqbLW+khwt2fmBPJFBhx2zGZ8XobRZ+O0VhlwWo= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emicklei/proto v1.6.15 h1:XbpwxmuOPrdES97FrSfpyy67SSCV/wBIKXqgJzh6hNw= +github.com/emicklei/proto v1.6.15/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -540,6 +557,7 @@ github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmC github.com/gitchander/permutation v0.0.0-20210517125447-a5d73722e1b1 h1:FUKJibWQu771xr/AwLn2/PbVp9AsgqfkObByTf8kJnI= github.com/gitchander/permutation v0.0.0-20210517125447-a5d73722e1b1/go.mod h1:HMJdsfdGgnh5ncvocKE6H8ATmoIQDmBFAgjY+6u/dm0= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= +github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-enry/go-enry/v2 v2.8.4 h1:QrY3hx/RiqCJJRbdU0MOcjfTM1a586J0WSooqdlJIhs= @@ -554,6 +572,7 @@ github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmS github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo= github.com/go-git/go-git/v5 v5.7.0 h1:t9AudWVLmqzlo+4bqdf7GY+46SUuRsx59SboFxkq2aE= github.com/go-git/go-git/v5 v5.7.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhcZd8Fodw8= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -702,17 +721,20 @@ github.com/go-redis/redis/v7 v7.4.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRf github.com/go-redis/redis/v8 v8.4.2/go.mod h1:A1tbYoHSa1fXwN+//ljcCYYJeLmVrwL9hbQN45Jdy0M= github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w= github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= github.com/go-redsync/redsync/v4 v4.8.1 h1:rq2RvdTI0obznMdxKUWGdmmulo7lS9yCzb8fgDKOlbM= github.com/go-redsync/redsync/v4 v4.8.1/go.mod h1:LmUAsQuQxhzZAoGY7JS6+dNhNmZyonMZiiEDY9plotM= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-stack/stack v1.6.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.4 h1:u2CU3YKy9I2pmu9pX0eq50wCgjfGIt539SqR7FbHiho= github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= @@ -750,6 +772,7 @@ github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.1.0-rc.5/go.mod h1:nzvNcVha5eUziGrbxFCo6qFIojQHjJV5cLYIbezhfL0= github.com/gobwas/ws v1.1.0 h1:7RFti/xnNkMJnrK7D1yQ/iCIB5OrrY/54/H930kIbHA= +github.com/gobwas/ws v1.1.0/go.mod h1:nzvNcVha5eUziGrbxFCo6qFIojQHjJV5cLYIbezhfL0= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -775,7 +798,9 @@ github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= +github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f h1:16RtHeWGkJMc80Etb8RPCcKevXGldr57+LOyZt8zOlg= github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f/go.mod h1:ijRvpgDJDI262hYq/IQVYgf8hd8IHUs93Ol0kvMBAx4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -796,6 +821,7 @@ github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -869,6 +895,7 @@ github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXi github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -995,6 +1022,7 @@ github.com/hashicorp/go-tfe v1.32.1/go.mod h1:Js4M/3kv14oTBlvLxqh0bbrWfosmNsEb9a github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= @@ -1026,6 +1054,7 @@ github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKe github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hexops/autogold v0.8.1/go.mod h1:97HLDXyG23akzAoRYJh/2OBs3kd80eHyKPvZw0S5ZBY= github.com/hexops/autogold v1.3.1 h1:YgxF9OHWbEIUjhDbpnLhgVsjUDsiHDTyDfy2lrfdlzo= +github.com/hexops/autogold v1.3.1/go.mod h1:sQO+mQUCVfxOKPht+ipDSkJ2SCJ7BNJVHZexsXqWMx4= github.com/hexops/autogold/v2 v2.1.0 h1:5s9J6CROngFPkgowSkV20bIflBrImSdDqIpoXJeZSkU= github.com/hexops/autogold/v2 v2.1.0/go.mod h1:cYVc0tJn6v9Uf9xMOHvmH6scuTxsVJSxGcKR/yOVPzY= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= @@ -1291,6 +1320,7 @@ github.com/microcosm-cc/bluemonday v1.0.17/go.mod h1:Z0r70sCuXHig8YpBzCc5eGHAap2 github.com/microcosm-cc/bluemonday v1.0.23 h1:SMZe2IGa0NuHvnVNAZ+6B38gsTbi5e4sViiWJyDDqFY= github.com/microcosm-cc/bluemonday v1.0.23/go.mod h1:mN70sk7UkkF8TUr2IGBpNN0jAgStuPzlK76QuruE/z4= github.com/microsoft/go-mssqldb v1.6.0 h1:mM3gYdVwEPFrlg/Dvr2DNVEgYFG7L42l+dGc67NNNpc= +github.com/microsoft/go-mssqldb v1.6.0/go.mod h1:00mDtPbeQCRGC1HwOOR5K/gr30P1NcEG0vx6Kbv2aJU= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= @@ -1437,6 +1467,7 @@ github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= @@ -1460,6 +1491,7 @@ github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b/go.mod h1:Om github.com/pquerna/cachecontrol v0.1.0 h1:yJMy84ti9h/+OEWa752kBTKv4XC30OtVVHYv/8cTqKc= github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= +github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= @@ -1490,6 +1522,7 @@ github.com/prometheus/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT github.com/prometheus/statsd_exporter v0.22.7/go.mod h1:N/TevpjkIh9ccs6nuzY3jQn9dFqnUakOjnEuMPJJJnI= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/protocolbuffers/txtpbfmt v0.0.0-20201118171849-f6a6b3f636fc h1:gSVONBi2HWMFXCa9jFdYvYk7IwW/mTLxWOF7rXS4LO0= +github.com/protocolbuffers/txtpbfmt v0.0.0-20201118171849-f6a6b3f636fc/go.mod h1:KbKfKPy2I6ecOIGA9apfheFv14+P3RSmmQvshofQyMY= github.com/pseudomuto/protoc-gen-doc v1.5.1 h1:Ah259kcrio7Ix1Rhb6u8FCaOkzf9qRBqXnvAufg061w= github.com/pseudomuto/protoc-gen-doc v1.5.1/go.mod h1:XpMKYg6zkcpgfpCfQ8GcWBDRtRxOmMR5w7pz4Xo+dYM= github.com/pseudomuto/protokit v0.2.1 h1:kCYpE3thoR6Esm0CUvd5xbrDTOZPvQPTDeyXpZfrJdk= @@ -1783,6 +1816,7 @@ github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= @@ -1867,6 +1901,7 @@ go.opentelemetry.io/collector/receiver v0.81.0/go.mod h1:q80JkMxVLnk0vWxoTRY2J7F go.opentelemetry.io/collector/receiver/otlpreceiver v0.81.0 h1:ewVbfATnAeQkwFK3r0dpFKCXcTb8HJKX4AixUioRt+c= go.opentelemetry.io/collector/receiver/otlpreceiver v0.81.0/go.mod h1:LGuSMVdOq5Zq+CEHF9YBHMaOIUZrzqW7DQGqo9g0dJA= go.opentelemetry.io/collector/semconv v0.81.0 h1:lCYNNo3powDvFIaTPP2jDKIrBiV1T92NK4QgL/aHYXw= +go.opentelemetry.io/collector/semconv v0.81.0/go.mod h1:TlYPtzvsXyHOgr5eATi43qEMqwSmIziivJB2uctKswo= go.opentelemetry.io/contrib/detectors/gcp v1.17.0 h1:SsuF2+gqrnmTKSz+KLXcx3A4A7PZXqbuRZbm4I6HcX0= go.opentelemetry.io/contrib/detectors/gcp v1.17.0/go.mod h1:kYzEwPGh9npjtpbJ+Qq/gN7ARi2PkvkvYARA/kWqkMs= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.43.0 h1:7XZai4VhA473clBrOqqHdjHBImGfyEtv0qW4nnn/kAo= @@ -2517,6 +2552,7 @@ gorm.io/gorm v1.25.5/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= +gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 5da0e96510f02257243ea5e22317bb977f0d6251 Mon Sep 17 00:00:00 2001 From: Naman Kumar <naman@outlook.in> Date: Tue, 28 Nov 2023 22:03:38 +0530 Subject: [PATCH 192/222] Add Cody Usage Metrics (#58611) --- .../cody/management/CodyManagementPage.tsx | 50 +++++++++++++++---- client/web/src/cody/subscription/queries.tsx | 12 +++++ cmd/frontend/graphqlbackend/schema.graphql | 8 +++ cmd/frontend/graphqlbackend/user.go | 32 ++++++++++++ 4 files changed, 92 insertions(+), 10 deletions(-) diff --git a/client/web/src/cody/management/CodyManagementPage.tsx b/client/web/src/cody/management/CodyManagementPage.tsx index f690764efa386..55139ef44e30a 100644 --- a/client/web/src/cody/management/CodyManagementPage.tsx +++ b/client/web/src/cody/management/CodyManagementPage.tsx @@ -5,19 +5,35 @@ import { mdiHelpCircleOutline, mdiTrendingUp, mdiDownload, mdiInformation } from import classNames from 'classnames' import { useQuery } from '@sourcegraph/http-client' -import { Icon, PageHeader, Link, H4, H2, Text, ButtonLink, Modal, useSearchParameters } from '@sourcegraph/wildcard' +import { + Icon, + PageHeader, + Link, + H4, + H2, + Text, + ButtonLink, + Modal, + useSearchParameters, + LoadingSpinner, +} from '@sourcegraph/wildcard' import { Page } from '../../components/Page' import { PageTitle } from '../../components/PageTitle' import { useFeatureFlag } from '../../featureFlags/useFeatureFlag' -import type { UserCodyPlanResult, UserCodyPlanVariables } from '../../graphql-operations' +import type { + UserCodyPlanResult, + UserCodyPlanVariables, + UserCodyUsageResult, + UserCodyUsageVariables, +} from '../../graphql-operations' import { eventLogger } from '../../tracking/eventLogger' import { EventName } from '../../util/constants' import { CodyColorIcon } from '../chat/CodyPageIcon' import { isCodyEnabled } from '../isCodyEnabled' -import { CodyOnboarding, editorGroups, IEditor } from '../onboarding/CodyOnboarding' +import { CodyOnboarding, editorGroups, type IEditor } from '../onboarding/CodyOnboarding' import { ProTierIcon } from '../subscription/CodySubscriptionPage' -import { USER_CODY_PLAN } from '../subscription/queries' +import { USER_CODY_PLAN, USER_CODY_USAGE } from '../subscription/queries' import styles from './CodyManagementPage.module.scss' @@ -36,6 +52,8 @@ export const CodyManagementPage: React.FunctionComponent<CodyManagementPageProps const { data } = useQuery<UserCodyPlanResult, UserCodyPlanVariables>(USER_CODY_PLAN, {}) + const { data: usageData } = useQuery<UserCodyUsageResult, UserCodyUsageVariables>(USER_CODY_USAGE, {}) + const [isEnabled] = useFeatureFlag('cody-pro', false) const [selectedEditor, setSelectedEditor] = React.useState<IEditor | null>(null) @@ -100,15 +118,21 @@ export const CodyManagementPage: React.FunctionComponent<CodyManagementPageProps <Text weight="bold" className={classNames('d-inline mb-0', styles.counter)}> Unlimited </Text> - ) : ( + ) : usageData?.currentUser ? ( <> <Text weight="bold" className={classNames('d-inline mb-0', styles.counter)}> - 345 / + {Math.min( + usageData?.currentUser?.codyCurrentPeriodCodeUsage || 0, + usageData?.currentUser?.codyCurrentPeriodCodeLimit || 0 + )}{' '} + / </Text>{' '} <Text className="text-muted d-inline b-0" size="small"> - 500 + {usageData?.currentUser?.codyCurrentPeriodCodeLimit || 0} </Text> </> + ) : ( + <LoadingSpinner /> )} </div> <H4 className="mb-0">Autocompletes</H4> @@ -125,15 +149,21 @@ export const CodyManagementPage: React.FunctionComponent<CodyManagementPageProps <Text weight="bold" className={classNames('d-inline mb-0', styles.counter)}> Unlimited </Text> - ) : ( + ) : usageData?.currentUser ? ( <> <Text weight="bold" className={classNames('d-inline mb-0', styles.counter)}> - 345 / + {Math.min( + usageData?.currentUser?.codyCurrentPeriodChatUsage || 0, + usageData?.currentUser?.codyCurrentPeriodChatLimit || 0 + )}{' '} + / </Text>{' '} <Text className="text-muted d-inline b-0" size="small"> - 500 + {usageData?.currentUser?.codyCurrentPeriodChatLimit || 0} </Text> </> + ) : ( + <LoadingSpinner /> )} </div> <H4 className="mb-0">Chat Messages</H4> diff --git a/client/web/src/cody/subscription/queries.tsx b/client/web/src/cody/subscription/queries.tsx index 040760e08f8d6..f0bcafb384442 100644 --- a/client/web/src/cody/subscription/queries.tsx +++ b/client/web/src/cody/subscription/queries.tsx @@ -10,6 +10,18 @@ export const USER_CODY_PLAN = gql` } ` +export const USER_CODY_USAGE = gql` + query UserCodyUsage { + currentUser { + id + codyCurrentPeriodChatUsage + codyCurrentPeriodCodeUsage + codyCurrentPeriodChatLimit + codyCurrentPeriodCodeLimit + } + } +` + export const CHANGE_CODY_PLAN = gql` mutation ChangeCodyPlan($id: ID!, $pro: Boolean!) { changeCodyPlan(user: $id, pro: $pro) { diff --git a/cmd/frontend/graphqlbackend/schema.graphql b/cmd/frontend/graphqlbackend/schema.graphql index 559e9f3c24676..9e81393ba48ef 100755 --- a/cmd/frontend/graphqlbackend/schema.graphql +++ b/cmd/frontend/graphqlbackend/schema.graphql @@ -6555,6 +6555,14 @@ type User implements Node & SettingsSubject & Namespace { The count of Cody code completions in the current billing period. """ codyCurrentPeriodCodeUsage: Int + """ + The limit of Cody chats for the current billing period. + """ + codyCurrentPeriodChatLimit: Int + """ + The limit of Cody code completions for the current billing period. + """ + codyCurrentPeriodCodeLimit: Int } """ diff --git a/cmd/frontend/graphqlbackend/user.go b/cmd/frontend/graphqlbackend/user.go index 47196b6bb3d17..12c62e7e2d99b 100644 --- a/cmd/frontend/graphqlbackend/user.go +++ b/cmd/frontend/graphqlbackend/user.go @@ -192,6 +192,38 @@ func (r *UserResolver) CodyProEnabled(ctx context.Context) bool { return r.CodyProEnabledAt(ctx) != nil } +func (r *UserResolver) CodyCurrentPeriodChatLimit(ctx context.Context) (*int32, error) { + if !envvar.SourcegraphDotComMode() { + return nil, errors.New("this feature is only available on sourcegraph.com") + } + + if r.user.CodyProEnabledAt != nil { + return nil, nil + } + + cfg := conf.GetCompletionsConfig(conf.Get().SiteConfig()) + + limit := int32(cfg.PerCommunityUserChatMonthlyInteractionLimit) + + return &limit, nil +} + +func (r *UserResolver) CodyCurrentPeriodCodeLimit(ctx context.Context) (*int32, error) { + if !envvar.SourcegraphDotComMode() { + return nil, errors.New("this feature is only available on sourcegraph.com") + } + + if r.user.CodyProEnabledAt != nil { + return nil, nil + } + + cfg := conf.GetCompletionsConfig(conf.Get().SiteConfig()) + + limit := int32(cfg.PerCommunityUserCodeCompletionsMonthlyInteractionLimit) + + return &limit, nil +} + func (r *UserResolver) CodyCurrentPeriodChatUsage(ctx context.Context) (*int32, error) { if !envvar.SourcegraphDotComMode() { return nil, errors.New("this feature is only available on sourcegraph.com") From ed13c5aee988984695a252cac373797ced806ad4 Mon Sep 17 00:00:00 2001 From: Mike McLaughlin <23640224+mike-r-mclaughlin@users.noreply.github.com> Date: Tue, 28 Nov 2023 10:52:17 -0600 Subject: [PATCH 193/222] Update Bitbucket Server page to link to the marketplace (#58593) Update Bitbucket Server page to link to the marketplace in addition to the manual steps * Update the installation steps to point to the Atlassian marketplace and the manual steps * Remove the link to the Github repository in the overview section to reduce confusion --- doc/integration/bitbucket_server.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/integration/bitbucket_server.md b/doc/integration/bitbucket_server.md index b6bdc00c7a198..7f2dd367e5b3a 100644 --- a/doc/integration/bitbucket_server.md +++ b/doc/integration/bitbucket_server.md @@ -18,9 +18,9 @@ Site admins can [add Bitbucket Server / Bitbucket Data Center repositories to So Site admins can [configure Sourcegraph to respect Bitbucket Server / Bitbucket Data Center's repository access permissions](../admin/external_service/bitbucket_server.md#repository-permissions). -## Sourcegraph Bitbucket Server Plugin +## Sourcegraph Bitbucket Plugin -We recommend installing the [Sourcegraph Bitbucket Server plugin](https://github.com/sourcegraph/bitbucket-server-plugin/tree/master) which adds the following features to your Bitbucket Server / Bitbucket Data Center instance: +We recommend installing the Sourcegraph Bitbucket plugin which adds the following features to your Bitbucket Server / Bitbucket Data Center instance: - **Native code navigation**: users don't need to install the [Sourcegraph browser extension](#browser-extension) to get hover tooltips, go-to-definition, find-references, and code search while browsing files and viewing pull requests on Bitbucket Server / Bitbucket Data Center. - **Fast permission syncing** between Sourcegraph and Bitbucket Server / Bitbucket Data Center @@ -30,7 +30,7 @@ We recommend installing the [Sourcegraph Bitbucket Server plugin](https://github ### Installation and requirements -See the [bitbucket-server-plugin](https://github.com/sourcegraph/bitbucket-server-plugin) repository for instructions on how to install the plugin on your Bitbucket Server / Bitbucket Data Center instance. +Install the Sourcegraph plugin for Bitbucket from the [Atlassian Marketplace](https://marketplace.atlassian.com/apps/1231975/sourcegraph-for-bitbucket?tab=overview&hosting=datacenter) or see the [bitbucket-server-plugin](https://github.com/sourcegraph/bitbucket-server-plugin) repository for instructions on how to manually install the plugin on your Bitbucket Server / Bitbucket Data Center instance. For the Bitbucket Server plugin to then communicate with the Sourcegraph instance, the Sourcegraph site configuration must be updated to include the [`corsOrigin` property](../admin/config/site_config.md) with the Bitbucket Server / Bitbucket Data Center URL From 9d1f0fa4928aa2220643999fab824b40246798c4 Mon Sep 17 00:00:00 2001 From: Chris Warwick <christopher.warwick@sourcegraph.com> Date: Tue, 28 Nov 2023 12:37:11 -0500 Subject: [PATCH 194/222] Docs: Update Cody Azure OpenAI docs (#58475) * update docs for azure open for new authentication options --- doc/cody/core-concepts/embeddings/index.md | 8 +++++++- doc/cody/overview/enable-cody-enterprise.md | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/doc/cody/core-concepts/embeddings/index.md b/doc/cody/core-concepts/embeddings/index.md index f70f84b5b9b0a..d86482eb0207e 100644 --- a/doc/cody/core-concepts/embeddings/index.md +++ b/doc/cody/core-concepts/embeddings/index.md @@ -101,13 +101,19 @@ To use embeddings with Azure OpenAI: "provider": "azure-openai", "model": "<deployment name of the model>", "endpoint": "<endpoint>", - "accessToken": "<key>", + "accessToken": "<See below>", "dimensions": 1536, "excludedFilePathPatterns": [] } } ``` +For the access token, you can either: + +- As of 5.2.4 the access token can be left empty and it will rely on Environmental, Workload Identity or Managed Identity credentials configured for the `frontend` service +- Set it to `<API_KEY>` if directly configuring the credentials using the API key specified in the Azure portal + + <br> > NOTE: Azure OpenAI is in experimental stage. It's not recommended to use in a production setting. diff --git a/doc/cody/overview/enable-cody-enterprise.md b/doc/cody/overview/enable-cody-enterprise.md index 5dd90bbca388a..fe5b785b15da6 100644 --- a/doc/cody/overview/enable-cody-enterprise.md +++ b/doc/cody/overview/enable-cody-enterprise.md @@ -295,11 +295,17 @@ Once done, go to **Site admin > Site configuration** (`/site-admin/configuration "fastChatModel": "<deployment name of the model>", "completionModel": "<deployment name of the model>", "endpoint": "<endpoint>", - "accessToken": "<key>" + "accessToken": "<See below>" } } ``` +For the access token, you can either: + +- As of 5.2.4 the access token can be left empty and it will rely on Environmental, Workload Identity or Managed Identity credentials configured for the `frontend` and `worker` services +- Set it to `<API_KEY>` if directly configuring the credentials using the API key specified in the Azure portal + + ### Anthropic Claude through AWS Bedrock <aside class="experimental"> From 882d5674a80949cac84f10ce2d051eb2cc0fd643 Mon Sep 17 00:00:00 2001 From: Robert Lin <robert@bobheadxi.dev> Date: Tue, 28 Nov 2023 10:40:32 -0800 Subject: [PATCH 195/222] completions/codygateway: fix actor propagation (#58618) Some discussion around transport misuse in https://github.com/sourcegraph/sourcegraph/pull/58016#discussion_r1397367483 caused me to preemptively add `req.Clone` calls in our transport implementations to adhere by Go documentation to not mutate requests in RoundTripper. This broke the actor propagation to Cody Gateway because so far, it has only worked by _accidentally_ using a mutated request, and with cloning, the original request is not mutated to include the appropriate headers. This change correctly uses the parameterized request in the Cody Gateway client, which has been cloned and mutated by the actor transport. There is an outstanding TODO here that I never addressed for why we are using this hack - will revisit after https://github.com/sourcegraph/sourcegraph/pull/58279 ## Test plan There are test cases on actor transport that covers this exact pattern: https://sourcegraph.com/github.com/sourcegraph/sourcegraph/-/blob/internal/actor/http_test.go?L46:1-57:5 --- internal/completions/client/codygateway/codygateway.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/completions/client/codygateway/codygateway.go b/internal/completions/client/codygateway/codygateway.go index 463ba41938367..d5f83fd7bee50 100644 --- a/internal/completions/client/codygateway/codygateway.go +++ b/internal/completions/client/codygateway/codygateway.go @@ -123,7 +123,7 @@ func gatewayDoer(upstream httpcli.Doer, feature types.CompletionsFeature, gatewa // but it doesn't seem to work. resp, err := (&actor.HTTPTransport{ RoundTripper: roundTripperFunc(func(r *http.Request) (*http.Response, error) { - return upstream.Do(req) + return upstream.Do(r) }), }).RoundTrip(req) From 70c9eb357e5f50a71b66ace411b4fa1fec556bdf Mon Sep 17 00:00:00 2001 From: Jason Hawk Harris <jasonhawkharris@gmail.com> Date: Tue, 28 Nov 2023 13:58:09 -0600 Subject: [PATCH 196/222] Code Navigation: different icons for different file types (#58421) Each item in the tree view now has an icon matching the file extension/language. --- client/web/BUILD.bazel | 1 + .../RepoRevisionSidebarFileTree.module.scss | 49 +++++ .../src/repo/RepoRevisionSidebarFileTree.tsx | 29 ++- client/web/src/repo/constants.ts | 208 ++++++++++++++++++ client/web/src/repo/tree/TreePagePanels.tsx | 109 +++++---- client/web/src/repo/utils.test.ts | 95 +++++++- client/web/src/repo/utils.tsx | 41 +++- package.json | 1 + pnpm-lock.yaml | 11 + 9 files changed, 489 insertions(+), 55 deletions(-) diff --git a/client/web/BUILD.bazel b/client/web/BUILD.bazel index 6723de7abff1a..90873d8fed5aa 100644 --- a/client/web/BUILD.bazel +++ b/client/web/BUILD.bazel @@ -1841,6 +1841,7 @@ ts_project( "//:node_modules/react-circular-progressbar", "//:node_modules/react-dom", "//:node_modules/react-grid-layout", + "//:node_modules/react-icons", "//:node_modules/react-router-dom", "//:node_modules/react-spring", "//:node_modules/react-sticky-box", diff --git a/client/web/src/repo/RepoRevisionSidebarFileTree.module.scss b/client/web/src/repo/RepoRevisionSidebarFileTree.module.scss index 6fcc4c1e7fc14..962173149ff12 100644 --- a/client/web/src/repo/RepoRevisionSidebarFileTree.module.scss +++ b/client/web/src/repo/RepoRevisionSidebarFileTree.module.scss @@ -1,5 +1,54 @@ +.icon-container { + display: flex; + flex-direction: row; + align-items: center; +} + .icon { flex-shrink: 0; width: 1rem; height: 1rem; } + +.test-indicator { + border-radius: 100%; + width: 0.5rem; + height: 0.5rem; + margin-left: -0.65rem; + margin-bottom: 0.15rem; + margin-right: 0.15rem; + background-color: var(--gray-05); + align-self: end; +} + +.blue { + color: var(--blue); +} + +.pink { + color: var(--pink); +} + +.yellow { + color: var(--yellow); +} + +.red { + color: var(--red); +} + +.gray { + color: var(--gray-05); +} + +.green { + color: var(--green); +} + +.cyan { + color: var(--cyan); +} + +.default-icon { + color: var(--gray-07); +} diff --git a/client/web/src/repo/RepoRevisionSidebarFileTree.tsx b/client/web/src/repo/RepoRevisionSidebarFileTree.tsx index 34676b46cabbe..1f6c574c5ab38 100644 --- a/client/web/src/repo/RepoRevisionSidebarFileTree.tsx +++ b/client/web/src/repo/RepoRevisionSidebarFileTree.tsx @@ -27,7 +27,9 @@ import { import type { FileTreeEntriesResult, FileTreeEntriesVariables } from '../graphql-operations' +import { FILE_ICONS, FileExtension } from './constants' import { FocusableTree, type FocusableTreeProps } from './RepoRevisionSidebarFocusableTree' +import { getFileInfo } from './utils' import styles from './RepoRevisionSidebarFileTree.module.scss' @@ -389,6 +391,8 @@ function renderNode({ const { entry, error, dotdot, name } = element const submodule = entry?.submodule const url = entry?.url + const fileInfo = getFileInfo(name) + const fileIcon = FILE_ICONS.get(fileInfo.extension) if (error) { return <ErrorAlert {...props} className={classNames(props.className, 'm-0')} variant="note" error={error} /> @@ -470,12 +474,25 @@ function renderNode({ } }} > - <Icon - svgPath={isBranch ? (isExpanded ? mdiFolderOpenOutline : mdiFolderOutline) : mdiFileDocumentOutline} - className={classNames('mr-1', styles.icon)} - aria-hidden={true} - /> - {name} + <div className={styles.iconContainer}> + {fileInfo.extension !== FileExtension.DEFAULT ? ( + <Icon + as={fileIcon?.icon} + className={classNames('mr-1', styles.icon, fileIcon?.iconClass)} + aria-hidden={true} + /> + ) : ( + <Icon + svgPath={ + isBranch ? (isExpanded ? mdiFolderOpenOutline : mdiFolderOutline) : mdiFileDocumentOutline + } + className={classNames('mr-1', styles.icon)} + aria-hidden={true} + /> + )} + {fileInfo.isTest && <div className={classNames(styles.testIndicator)} />} + {name} + </div> </Link> ) } diff --git a/client/web/src/repo/constants.ts b/client/web/src/repo/constants.ts index 7644b985eefef..26712599f25ed 100644 --- a/client/web/src/repo/constants.ts +++ b/client/web/src/repo/constants.ts @@ -1,3 +1,54 @@ +import { ComponentType } from 'react' + +import { CiSettings, CiTextAlignLeft, CiWarning } from 'react-icons/ci' +import { FaCss3Alt, FaJava, FaSass } from 'react-icons/fa' +import { GoDatabase, GoTerminal } from 'react-icons/go' +import { PiFilePngLight } from 'react-icons/pi' +import { + SiApachegroovy, + SiAssemblyscript, + SiC, + SiClojure, + SiCoffeescript, + SiCplusplus, + SiCsharp, + SiDart, + SiDocker, + SiFortran, + SiFsharp, + SiGit, + SiGo, + SiGraphql, + SiHaskell, + SiHtml5, + SiJavascript, + SiJpeg, + SiJulia, + SiKotlin, + SiLua, + SiMarkdown, + SiNixos, + SiNpm, + SiOcaml, + SiPerl, + SiPhp, + SiPython, + SiR, + SiReact, + SiRuby, + SiRust, + SiScala, + SiSvelte, + SiSvg, + SiSwift, + SiTypescript, + SiVisualbasic, + SiZig, +} from 'react-icons/si' +import { VscJson } from 'react-icons/vsc' + +import styles from './RepoRevisionSidebarFileTree.module.scss' + export const LogsPageTabs = { COMMANDS: 0, SYNCLOGS: 1, @@ -13,3 +64,160 @@ export enum CodeHostType { AZUREDEVOPS = 'azureDevOps', OTHER = 'other', } + +export enum FileExtension { + ASSEMBLY = 'asm', + BASH = 'sh', + BASIC = 'vb', + C = 'c', + CLOJURE_CLJ = 'clj', + CLOJURE_CLJS = 'cljs', + CLOJURE_CLJR = 'cljr', + CLOJURE_CLJC = 'cljc', + CLOJURE_EDN = 'edn', + COFFEE = 'coffee', + CPP = 'cc', + CSHARP = 'cs', + CSS = 'css', + DART = 'dart', + DEFAULT = 'default', + DOCKERFILE = 'Dockerfile', + DOCKERIGNORE = 'dockerignore', + FORTRAN_F = 'f', + FORTRAN_FOR = 'for', + FORTRAN_FTN = 'ftn', + FSHARP = 'fs', + FSI = 'fsi', + FSX = 'fsx', + GITIGNORE = 'gitignore', + GITATTRIBUTES = 'gitattributes', + GO = 'go', + GOMOD = 'mod', + GOSUM = 'sum', + GRAPHQL = 'graphql', + GROOVY = 'groovy', + HASKELL = 'hs', + HTML = 'html', + JAVA = 'java', + JAVASCRIPT = 'js', + JPG = 'jpg', + JPEG = 'jpeg', + JSON = 'json', + JSX = 'jsx', + JULIA = 'jl', + KOTLIN = 'kt', + LOCKFILE = 'lock', + LUA = 'lua', + MARKDOWN = 'md', + NCL = 'ncl', + NIX = 'nix', + NPM = 'npmrc', + OCAML = 'ml', + PHP = 'php', + PERL = 'pl', + PERL_PM = 'pm', + PNG = 'png', + POWERSHELL_PS1 = 'ps1', + POWERSHELL_PSM1 = 'psm1', + PYTHON = 'py', + R = 'r', + R_CAP = 'R', + RUBY = 'rb', + RUST = 'rs', + SCALA = 'scala', + SASS = 'scss', + SQL = 'sql', + SVELTE = 'svelte', + SVG = 'svg', + SWIFT = 'swift', + TEST = 'test', + TYPESCRIPT = 'ts', + TSX = 'tsx', + TEXT = 'txt', + YAML = 'yaml', + YML = 'yml', + ZIG = 'zig', +} + +type CustomIcon = ComponentType<{ className?: string }> +interface IconInfo { + icon: CustomIcon + iconClass: string +} +/* + * We use the react-icons package instead of material design icons for two reasons: + * 1) Many of mdi's programming language icons will be deprecated soon. + * 2) They are missing quite a few icons that are needed when displaying file types. + */ +export const FILE_ICONS: Map<FileExtension, IconInfo> = new Map([ + [FileExtension.ASSEMBLY, { icon: SiAssemblyscript, iconClass: styles.defaultIcon }], + [FileExtension.BASH, { icon: GoTerminal, iconClass: styles.defaultIcon }], + [FileExtension.BASIC, { icon: SiVisualbasic, iconClass: styles.defaultIcon }], + [FileExtension.C, { icon: SiC, iconClass: styles.blue }], + [FileExtension.CLOJURE_CLJ, { icon: SiClojure, iconClass: styles.blue }], + [FileExtension.CLOJURE_CLJC, { icon: SiClojure, iconClass: styles.blue }], + [FileExtension.CLOJURE_CLJR, { icon: SiClojure, iconClass: styles.blue }], + [FileExtension.CLOJURE_CLJS, { icon: SiClojure, iconClass: styles.blue }], + [FileExtension.CLOJURE_EDN, { icon: SiClojure, iconClass: styles.blue }], + [FileExtension.COFFEE, { icon: SiCoffeescript, iconClass: styles.defaultIcon }], + [FileExtension.CPP, { icon: SiCplusplus, iconClass: styles.blue }], + [FileExtension.CSHARP, { icon: SiCsharp, iconClass: styles.blue }], + [FileExtension.CSS, { icon: FaCss3Alt, iconClass: styles.blue }], + [FileExtension.DART, { icon: SiDart, iconClass: styles.blue }], + [FileExtension.DEFAULT, { icon: CiWarning, iconClass: styles.red }], + [FileExtension.DOCKERFILE, { icon: SiDocker, iconClass: styles.blue }], + [FileExtension.DOCKERIGNORE, { icon: SiDocker, iconClass: styles.blue }], + [FileExtension.FORTRAN_F, { icon: SiFortran, iconClass: styles.defaultIcon }], + [FileExtension.FORTRAN_FOR, { icon: SiFortran, iconClass: styles.defaultIcon }], + [FileExtension.FORTRAN_FTN, { icon: SiFortran, iconClass: styles.defaultIcon }], + [FileExtension.FSHARP, { icon: SiFsharp, iconClass: styles.blue }], + [FileExtension.FSI, { icon: SiFsharp, iconClass: styles.blue }], + [FileExtension.FSX, { icon: SiFsharp, iconClass: styles.blue }], + [FileExtension.GITIGNORE, { icon: SiGit, iconClass: styles.red }], + [FileExtension.GITATTRIBUTES, { icon: SiGit, iconClass: styles.red }], + [FileExtension.GO, { icon: SiGo, iconClass: styles.blue }], + [FileExtension.GOMOD, { icon: SiGo, iconClass: styles.pink }], + [FileExtension.GOSUM, { icon: SiGo, iconClass: styles.pink }], + [FileExtension.GROOVY, { icon: SiApachegroovy, iconClass: styles.blue }], + [FileExtension.GRAPHQL, { icon: SiGraphql, iconClass: styles.pink }], + [FileExtension.HASKELL, { icon: SiHaskell, iconClass: styles.blue }], + [FileExtension.HTML, { icon: SiHtml5, iconClass: styles.blue }], + [FileExtension.JAVA, { icon: FaJava, iconClass: styles.defaultIcon }], + [FileExtension.JAVASCRIPT, { icon: SiJavascript, iconClass: styles.yellow }], + [FileExtension.JPG, { icon: SiJpeg, iconClass: styles.yellow }], + [FileExtension.JPEG, { icon: SiJpeg, iconClass: styles.yellow }], + [FileExtension.JSX, { icon: SiReact, iconClass: styles.yellow }], + [FileExtension.JSON, { icon: VscJson, iconClass: styles.defaultIcon }], + [FileExtension.JULIA, { icon: SiJulia, iconClass: styles.defaultIcon }], + [FileExtension.KOTLIN, { icon: SiKotlin, iconClass: styles.green }], + [FileExtension.LOCKFILE, { icon: VscJson, iconClass: styles.defaultIcon }], + [FileExtension.LUA, { icon: SiLua, iconClass: styles.blue }], + [FileExtension.MARKDOWN, { icon: SiMarkdown, iconClass: styles.blue }], + [FileExtension.NCL, { icon: CiSettings, iconClass: styles.defaultIcon }], + [FileExtension.NIX, { icon: SiNixos, iconClass: styles.gray }], + [FileExtension.NPM, { icon: SiNpm, iconClass: styles.red }], + [FileExtension.OCAML, { icon: SiOcaml, iconClass: styles.yellow }], + [FileExtension.PHP, { icon: SiPhp, iconClass: styles.cyan }], + [FileExtension.PERL, { icon: SiPerl, iconClass: styles.defaultIcon }], + [FileExtension.PERL_PM, { icon: SiPerl, iconClass: styles.defaultIcon }], + [FileExtension.PNG, { icon: PiFilePngLight, iconClass: styles.defaultIcon }], + [FileExtension.POWERSHELL_PS1, { icon: GoTerminal, iconClass: styles.defaultIcon }], + [FileExtension.POWERSHELL_PSM1, { icon: GoTerminal, iconClass: styles.defaultIcon }], + [FileExtension.PYTHON, { icon: SiPython, iconClass: styles.blue }], + [FileExtension.R, { icon: SiR, iconClass: styles.red }], + [FileExtension.R_CAP, { icon: SiR, iconClass: styles.red }], + [FileExtension.RUBY, { icon: SiRuby, iconClass: styles.red }], + [FileExtension.RUST, { icon: SiRust, iconClass: styles.defaultIcon }], + [FileExtension.SCALA, { icon: SiScala, iconClass: styles.red }], + [FileExtension.SASS, { icon: FaSass, iconClass: styles.pink }], + [FileExtension.SQL, { icon: GoDatabase, iconClass: styles.blue }], + [FileExtension.SVELTE, { icon: SiSvelte, iconClass: styles.red }], + [FileExtension.SVG, { icon: SiSvg, iconClass: styles.blue }], + [FileExtension.SWIFT, { icon: SiSwift, iconClass: styles.blue }], + [FileExtension.TYPESCRIPT, { icon: SiTypescript, iconClass: styles.blue }], + [FileExtension.TSX, { icon: SiReact, iconClass: styles.blue }], + [FileExtension.TEXT, { icon: CiTextAlignLeft, iconClass: styles.defaultIcon }], + [FileExtension.YAML, { icon: CiSettings, iconClass: styles.defaultIcon }], + [FileExtension.YML, { icon: CiSettings, iconClass: styles.defaultIcon }], + [FileExtension.ZIG, { icon: SiZig, iconClass: styles.yellow }], +]) diff --git a/client/web/src/repo/tree/TreePagePanels.tsx b/client/web/src/repo/tree/TreePagePanels.tsx index 741b9b91c952f..e56940bd9190e 100644 --- a/client/web/src/repo/tree/TreePagePanels.tsx +++ b/client/web/src/repo/tree/TreePagePanels.tsx @@ -25,6 +25,8 @@ import type { BlobFileFields, TreeHistoryFields } from '../../graphql-operations import { fetchBlob } from '../blob/backend' import { RenderedFile } from '../blob/RenderedFile' import { CommitMessageWithLinks } from '../commit/CommitMessageWithLinks' +import { FILE_ICONS, FileExtension } from '../constants' +import { getFileInfo } from '../utils' import styles from './TreePagePanels.module.scss' @@ -176,54 +178,67 @@ export const FilesCard: FC<FilePanelProps> = ({ entries, historyEntries, classNa </CardHeader> </thead> <tbody> - {entries.map(entry => ( - <tr key={entry.name}> - <td className={styles.fileName}> - <LinkOrSpan - to={entry.url} - className={classNames( - 'test-page-file-decorable', - entry.isDirectory && 'font-weight-bold', - `test-tree-entry-${entry.isDirectory ? 'directory' : 'file'}` - )} - title={entry.path} - data-testid="tree-entry" - > - <Icon - className="mr-1" - svgPath={entry.isDirectory ? mdiFolderOutline : mdiFileDocumentOutline} - aria-hidden={true} - /> - {entry.name} - {entry.isDirectory && '/'} - </LinkOrSpan> - </td> - {fileHistoryByPath[entry.path] && ( - <> - <td className={styles.commitMessage}> - <span - title={fileHistoryByPath[entry.path].subject} - data-testid="git-commit-message-with-links" - > - <CommitMessageWithLinks - to={fileHistoryByPath[entry.path].canonicalURL} - message={fileHistoryByPath[entry.path].subject} - className="text-muted" - externalURLs={fileHistoryByPath[entry.path].externalURLs} + {entries.map(entry => { + const fileInfo = getFileInfo(entry.name) + const fileIcon = FILE_ICONS.get(fileInfo.extension) + + return ( + <tr key={entry.name}> + <td className={styles.fileName}> + <LinkOrSpan + to={entry.url} + className={classNames( + 'test-page-file-decorable', + entry.isDirectory && 'font-weight-bold', + `test-tree-entry-${entry.isDirectory ? 'directory' : 'file'}` + )} + title={entry.path} + data-testid="tree-entry" + > + {fileInfo.extension !== FileExtension.DEFAULT ? ( + <Icon + as={fileIcon?.icon} + className={classNames('mr-1', fileIcon?.iconClass)} + aria-hidden={true} /> - </span> - </td> - <td className={classNames(styles.commitDate, 'text-muted')}> - <Timestamp - noAbout={true} - noAgo={true} - date={getCommitDate(fileHistoryByPath[entry.path])} - /> - </td> - </> - )} - </tr> - ))} + ) : ( + <Icon + svgPath={entry.isDirectory ? mdiFolderOutline : mdiFileDocumentOutline} + className={classNames('mr-1')} + aria-hidden={true} + /> + )} + {entry.name} + {entry.isDirectory && '/'} + </LinkOrSpan> + </td> + {fileHistoryByPath[entry.path] && ( + <> + <td className={styles.commitMessage}> + <span + title={fileHistoryByPath[entry.path].subject} + data-testid="git-commit-message-with-links" + > + <CommitMessageWithLinks + to={fileHistoryByPath[entry.path].canonicalURL} + message={fileHistoryByPath[entry.path].subject} + className="text-muted" + externalURLs={fileHistoryByPath[entry.path].externalURLs} + /> + </span> + </td> + <td className={classNames(styles.commitDate, 'text-muted')}> + <Timestamp + noAbout={true} + noAgo={true} + date={getCommitDate(fileHistoryByPath[entry.path])} + /> + </td> + </> + )} + </tr> + ) + })} </tbody> </Card> ) diff --git a/client/web/src/repo/utils.test.ts b/client/web/src/repo/utils.test.ts index e8b3cc77ae74e..1d6c9bac15f85 100644 --- a/client/web/src/repo/utils.test.ts +++ b/client/web/src/repo/utils.test.ts @@ -1,6 +1,99 @@ import { describe, expect, it } from 'vitest' -import { getInitialSearchTerm } from './utils' +import { FileExtension } from './constants' +import { containsTest, getFileInfo, getInitialSearchTerm } from './utils' + +describe('containsTest', () => { + const tests: { + name: string + file: string + expected: boolean + }[] = [ + { + name: 'returns true if "test_" exists in file name', + file: 'test_myfile.go', + expected: true, + }, + { + name: 'returns true if "_test" exists in file name', + file: 'myfile_test.go', + expected: true, + }, + { + name: 'returns true if "_spec" exists in file name', + file: 'myfile_spec.go', + expected: true, + }, + { + name: 'returns true if "spec_" exists in file name', + file: 'spec_myfile.go', + expected: true, + }, + { + name: 'works with sub-extensions', + file: 'myreactcomponent.test.tsx', + expected: true, + }, + { + name: 'returns false if not a test file', + file: 'mytestcomponent.java', + expected: false, + }, + ] + + for (const t of tests) { + it(t.name, () => { + expect(containsTest(t.file)).toBe(t.expected) + }) + } +}) + +describe('getFileInfo', () => { + const tests: { + name: string + file: string + isDirectory: boolean + expectedExtension: FileExtension + expectedIsTest: boolean + }[] = [ + { + name: 'works with simple file name', + file: 'my-file.js', + isDirectory: false, + expectedExtension: 'js' as FileExtension, + expectedIsTest: false, + }, + { + name: 'works with complex file name', + file: 'my-file.module.scss', + isDirectory: false, + expectedExtension: 'scss' as FileExtension, + expectedIsTest: false, + }, + { + name: 'returns isTest as true if file name contains test', + file: 'my-file.test.tsx', + isDirectory: false, + expectedExtension: 'tsx' as FileExtension, + expectedIsTest: true, + }, + { + name: 'returns isTest as true if file name contains test', + file: '.eslintrc', + isDirectory: false, + expectedExtension: 'default' as FileExtension, + expectedIsTest: false, + }, + ] + + for (const t of tests) { + it(t.name, () => { + const fileInfo = getFileInfo(t.file) + expect(fileInfo.extension).toBe(t.expectedExtension) + expect(fileInfo.isTest).toBe(t.expectedIsTest) + }) + } +}) describe('getInitialSearchTerm', () => { const tests: { diff --git a/client/web/src/repo/utils.tsx b/client/web/src/repo/utils.tsx index 3d9eff23687b6..23861698a20c3 100644 --- a/client/web/src/repo/utils.tsx +++ b/client/web/src/repo/utils.tsx @@ -1,6 +1,6 @@ import { type GitCommitFields, RepositoryType } from '../graphql-operations' -import { CodeHostType } from './constants' +import { CodeHostType, FileExtension } from './constants' export const isPerforceChangelistMappingEnabled = (): boolean => window.context.experimentalFeatures.perforceChangelistMapping === 'enabled' @@ -45,3 +45,42 @@ export const stringToCodeHostType = (codeHostType: string): CodeHostType => { } } } + +export interface FileInfo { + extension: FileExtension + isTest: boolean +} + +export const getFileInfo = (file: string): FileInfo => { + const extension = file.split('.').at(-1) + const isValidExtension = Object.values(FileExtension).includes(extension as FileExtension) + + if (extension && isValidExtension) { + return { + extension: extension as FileExtension, + isTest: containsTest(file), + } + } + + return { + extension: 'default' as FileExtension, + isTest: false, + } +} + +export const containsTest = (file: string): boolean => { + const f = file.split('.') + // To account for other test file path structures + // adjust this regular expression. + const isTest = /^(test|spec|tests)(\b|_)|(\b|_)(test|spec|tests)$/ + + for (const i of f) { + if (i === 'test') { + return true + } + if (isTest.test(i)) { + return true + } + } + return false +} diff --git a/package.json b/package.json index a3ba00318e226..068f0eaa60075 100644 --- a/package.json +++ b/package.json @@ -387,6 +387,7 @@ "react-dom": "18.1.0", "react-focus-lock": "^2.7.1", "react-grid-layout": "1.3.4", + "react-icons": "^4.12.0", "react-resizable": "^3.0.4", "react-router-dom": "^6.8.1", "react-spring": "^9.4.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 07a8abd9e87d9..837b62c7d9f53 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -367,6 +367,9 @@ importers: react-grid-layout: specifier: 1.3.4 version: 1.3.4(react-dom@18.1.0)(react@18.1.0) + react-icons: + specifier: ^4.12.0 + version: 4.12.0(react@18.1.0) react-resizable: specifier: ^3.0.4 version: 3.0.4(react-dom@18.1.0)(react@18.1.0) @@ -21188,6 +21191,14 @@ packages: react-resizable: 3.0.4(react-dom@18.1.0)(react@18.1.0) dev: false + /react-icons@4.12.0(react@18.1.0): + resolution: {integrity: sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==} + peerDependencies: + react: '*' + dependencies: + react: 18.1.0 + dev: false + /react-inspector@6.0.2(react@18.1.0): resolution: {integrity: sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==} peerDependencies: From 64a81cffdb76795b9fc630616fca967a230e80e2 Mon Sep 17 00:00:00 2001 From: Camden Cheek <camden@ccheek.com> Date: Tue, 28 Nov 2023 14:29:40 -0600 Subject: [PATCH 197/222] Docs: add details about RE2 (#58622) --- .../explanations/search_details.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/doc/code_search/explanations/search_details.md b/doc/code_search/explanations/search_details.md index 078b55b589f67..43c9bc7d43678 100644 --- a/doc/code_search/explanations/search_details.md +++ b/doc/code_search/explanations/search_details.md @@ -87,3 +87,28 @@ shards are then considered for future merge operations. Shard merging can be monitored via the "Compound shards" panel in Zoekt's Grafana dashboard. +## RE2 Regular Expressions + +The Sourcegraph search language supports [RE2](https://golang.org/s/re2syntax) syntax. If you're used to tools like Perl which uses [PCRE syntax](https://www.pcre.org/original/doc/html/pcresyntax.html), you may notice that there are some features that are missing from RE2 like backreferences and lookarounds. We choose to use RE2 for a few reasons: +* It makes it possible to build [worst-case linear](https://swtch.com/~rsc/regexp/regexp1.html) evaluation engines, which is very desirable for building a production-ready regex search engine. +* It's well-supported in Go, allowing us to take advantage of a rich ecosystem (notably including [Zoekt](https://github.com/sourcegraph/zoekt)) +* Our API and tooling makes it straightforward to use Sourcegraph with other tools that provide facilities not built in to the search language. + +As an example of how you can use Sourcegraph tooling with other tools, we can use `jq` (which supports Perl regexes) along with `src` to post-filter search results. In this case, we want to use backreferences to find go functions take a single pointer argument and return a non-pointer of the same type as the input. + +```bash +re2_regex='func \w+\(\w+ \*\w+\) \w+' +pcre2_regex='func \w+\(\w+ \*(\w+)\) \1' + +src search --json --stream -- "/$re2_regex/" \ + | jq ' + # Filter to only content events + select(.type == "content") + + # Flatten to a single object per match + | {content: .chunkMatches[].content} + del(.chunkMatches) + + # Select only matches that match the PCRE regex + | select(.content | test($ARGS.positional[0])) + ' --args "$pcre2_regex" +``` From b9a7e3b8099666603eeb183affb3d629e306326c Mon Sep 17 00:00:00 2001 From: Camden Cheek <camden@ccheek.com> Date: Tue, 28 Nov 2023 14:49:38 -0600 Subject: [PATCH 198/222] Cleanup: use new go 1.21 features (#58617) Now that we're running go 1.21, we can take advantage of its new features. This cleans up a few utilites that have since been included in the standard library. --- cmd/cody-gateway/internal/events/BUILD.bazel | 1 - cmd/cody-gateway/internal/events/events.go | 3 +- cmd/cody-gateway/internal/limiter/BUILD.bazel | 1 - cmd/cody-gateway/internal/limiter/limiter.go | 5 +- cmd/embeddings/shared/BUILD.bazel | 1 - .../shared/repo_embedding_index_cache.go | 3 +- cmd/frontend/graphqlbackend/BUILD.bazel | 1 - .../graphqlbackend/outbound_webhook_logs.go | 10 +- .../graphqlbackend/outbound_webhooks.go | 10 +- cmd/frontend/graphqlbackend/package_repos.go | 4 +- .../graphqlbackend/repository_stats.go | 7 - .../resolvers/aggregates_resolvers.go | 6 - .../resolvers/insight_view_resolvers.go | 9 +- cmd/gitserver/internal/BUILD.bazel | 1 - cmd/gitserver/internal/cacert/BUILD.bazel | 1 - cmd/gitserver/internal/cacert/cacert.go | 4 +- cmd/gitserver/internal/git/BUILD.bazel | 1 - cmd/gitserver/internal/git/git.go | 4 +- cmd/gitserver/internal/search.go | 4 +- cmd/searcher/internal/search/BUILD.bazel | 1 - cmd/searcher/internal/search/store.go | 3 +- cmd/symbols/parser/parser.go | 7 - cmd/symbols/squirrel/hover.go | 5 +- cmd/symbols/squirrel/service_test.go | 3 +- cmd/symbols/squirrel/util.go | 18 -- .../executorqueue/queue_allocation.go | 16 +- cmd/worker/internal/permissions/BUILD.bazel | 1 - .../permissions/bitbucket_projects_test.go | 4 +- dev/buildchecker/checker.go | 7 - dev/ci/internal/ci/changed/files.go | 16 +- dev/ci/internal/ci/pipeline.go | 5 +- .../internal/ci/web-integration-workloads.go | 17 -- .../internal/stack/cloudrun/BUILD.bazel | 1 - .../internal/stack/cloudrun/cloudrun.go | 4 +- dev/sg/internal/run/prefix_suffix_saver.go | 9 +- internal/api/internalapi/BUILD.bazel | 1 - internal/api/internalapi/client.go | 4 +- internal/authz/perms.go | 3 +- internal/cmd/tracking-issue/api.go | 5 +- internal/cmd/tracking-issue/context.go | 7 +- internal/cmd/tracking-issue/emoji.go | 3 +- internal/cmd/tracking-issue/labels.go | 10 -- internal/cmd/tracking-issue/matcher.go | 13 +- internal/cmd/tracking-issue/render.go | 3 +- internal/codycontext/context.go | 11 -- internal/collections/set_test.go | 3 +- internal/collections/slice_utils.go | 12 +- internal/collections/slice_utils_test.go | 43 ----- internal/completions/httpapi/handler.go | 7 - internal/completions/httpapi/limiter.go | 7 - internal/database/BUILD.bazel | 1 - internal/database/dbconn/rds/BUILD.bazel | 1 - internal/database/dbconn/rds/rds.go | 4 +- internal/database/event_logs.go | 3 +- internal/database/telemetry_export_store.go | 3 +- internal/embeddings/embed/files.go | 7 - internal/embeddings/similarity_search.go | 14 -- internal/insights/query/compute_executor.go | 9 +- internal/repoupdater/BUILD.bazel | 1 - internal/repoupdater/client.go | 4 +- .../requestclient/geolocation/BUILD.bazel | 1 - .../requestclient/geolocation/geolocation.go | 4 +- internal/search/symbol/BUILD.bazel | 1 - internal/search/symbol/symbol.go | 4 +- internal/search/zoekt/BUILD.bazel | 1 - internal/search/zoekt/indexed_search.go | 3 +- internal/service/svcmain/BUILD.bazel | 1 - internal/service/svcmain/svcmain.go | 3 +- internal/syncx/BUILD.bazel | 16 -- internal/syncx/oncefunc.go | 91 ---------- internal/syncx/oncefunc_test.go | 160 ------------------ internal/xcontext/BUILD.bazel | 8 - internal/xcontext/detach.go | 26 --- .../internal/visualization/visualizer.go | 16 +- 74 files changed, 91 insertions(+), 616 deletions(-) delete mode 100644 internal/syncx/BUILD.bazel delete mode 100644 internal/syncx/oncefunc.go delete mode 100644 internal/syncx/oncefunc_test.go delete mode 100644 internal/xcontext/BUILD.bazel delete mode 100644 internal/xcontext/detach.go diff --git a/cmd/cody-gateway/internal/events/BUILD.bazel b/cmd/cody-gateway/internal/events/BUILD.bazel index 65913e65f8430..e4d1769d75673 100644 --- a/cmd/cody-gateway/internal/events/BUILD.bazel +++ b/cmd/cody-gateway/internal/events/BUILD.bazel @@ -16,7 +16,6 @@ go_library( "//internal/codygateway", "//internal/goroutine", "//internal/trace", - "//internal/xcontext", "//lib/errors", "@com_github_sourcegraph_log//:log", "@com_google_cloud_go_bigquery//:bigquery", diff --git a/cmd/cody-gateway/internal/events/events.go b/cmd/cody-gateway/internal/events/events.go index 779d768b26006..30e943e9029c8 100644 --- a/cmd/cody-gateway/internal/events/events.go +++ b/cmd/cody-gateway/internal/events/events.go @@ -13,7 +13,6 @@ import ( sgactor "github.com/sourcegraph/sourcegraph/internal/actor" "github.com/sourcegraph/sourcegraph/internal/codygateway" "github.com/sourcegraph/sourcegraph/internal/trace" - "github.com/sourcegraph/sourcegraph/internal/xcontext" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -114,7 +113,7 @@ func (l *bigQueryLogger) LogEvent(spanCtx context.Context, event Event) (err err if err := l.tableInserter.Put( // Create a cancel-free context to avoid interrupting the log when // the parent context is cancelled. - xcontext.Detach(spanCtx), + context.WithoutCancel(spanCtx), bigQueryEvent{ Name: string(event.Name), Source: event.Source, diff --git a/cmd/cody-gateway/internal/limiter/BUILD.bazel b/cmd/cody-gateway/internal/limiter/BUILD.bazel index ad5ba8d04afbc..06959012f6950 100644 --- a/cmd/cody-gateway/internal/limiter/BUILD.bazel +++ b/cmd/cody-gateway/internal/limiter/BUILD.bazel @@ -12,7 +12,6 @@ go_library( importpath = "github.com/sourcegraph/sourcegraph/cmd/cody-gateway/internal/limiter", visibility = ["//cmd/cody-gateway:__subpackages__"], deps = [ - "//internal/xcontext", "//lib/errors", "@io_opentelemetry_go_otel//:otel", "@io_opentelemetry_go_otel//attribute", diff --git a/cmd/cody-gateway/internal/limiter/limiter.go b/cmd/cody-gateway/internal/limiter/limiter.go index 3e93f8b6c8a41..7a9977d89c966 100644 --- a/cmd/cody-gateway/internal/limiter/limiter.go +++ b/cmd/cody-gateway/internal/limiter/limiter.go @@ -2,7 +2,6 @@ package limiter import ( "context" - "github.com/sourcegraph/sourcegraph/internal/xcontext" "time" "go.opentelemetry.io/otel" @@ -104,7 +103,7 @@ func (l StaticLimiter) TryAcquire(ctx context.Context) (_ func(context.Context, if l.RateLimitAlerter != nil { // Call with usage 1 for 100% (rate limit exceeded) - go l.RateLimitAlerter(xcontext.Detach(ctx), 1, retryAfter.Sub(l.NowFunc())) + go l.RateLimitAlerter(context.WithoutCancel(ctx), 1, retryAfter.Sub(l.NowFunc())) } return nil, RateLimitExceededError{ @@ -132,7 +131,7 @@ func (l StaticLimiter) TryAcquire(ctx context.Context) (_ func(context.Context, // same time block since the TTL would have been set. return func(ctx context.Context, usage int) (err error) { // NOTE: This is to make sure we still commit usage even if the context was canceled. - ctx = xcontext.Detach(ctx) + ctx = context.WithoutCancel(ctx) var incrementedTo, ttlSeconds int // We need to start a new span because the previous one has ended diff --git a/cmd/embeddings/shared/BUILD.bazel b/cmd/embeddings/shared/BUILD.bazel index 40668b409a0e0..0626cb338f274 100644 --- a/cmd/embeddings/shared/BUILD.bazel +++ b/cmd/embeddings/shared/BUILD.bazel @@ -38,7 +38,6 @@ go_library( "//internal/observation", "//internal/service", "//internal/trace", - "//internal/xcontext", "//lib/errors", "@com_github_hashicorp_golang_lru_v2//:golang-lru", "@com_github_prometheus_client_golang//prometheus", diff --git a/cmd/embeddings/shared/repo_embedding_index_cache.go b/cmd/embeddings/shared/repo_embedding_index_cache.go index cb8552c32946b..28422bd554548 100644 --- a/cmd/embeddings/shared/repo_embedding_index_cache.go +++ b/cmd/embeddings/shared/repo_embedding_index_cache.go @@ -19,7 +19,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/embeddings" "github.com/sourcegraph/sourcegraph/internal/embeddings/background/repo" "github.com/sourcegraph/sourcegraph/internal/trace" - "github.com/sourcegraph/sourcegraph/internal/xcontext" ) type downloadRepoEmbeddingIndexFn func(ctx context.Context, repoID api.RepoID, repoName api.RepoName) (*embeddings.RepoEmbeddingIndex, error) @@ -159,7 +158,7 @@ func (c *CachedEmbeddingIndexGetter) Get(ctx context.Context, repoID api.RepoID, // Run the fetch in the background, but outside the singleflight so context // errors are not shared. go func() { - detachedCtx := xcontext.Detach(ctx) + detachedCtx := context.WithoutCancel(ctx) // Run the fetch request through a singleflight to keep from fetching the // same index multiple times concurrently v, err, _ = c.sf.Do(fmt.Sprintf("%d", repoID), func() (interface{}, error) { diff --git a/cmd/frontend/graphqlbackend/BUILD.bazel b/cmd/frontend/graphqlbackend/BUILD.bazel index b654ba44f587a..c422002b87939 100644 --- a/cmd/frontend/graphqlbackend/BUILD.bazel +++ b/cmd/frontend/graphqlbackend/BUILD.bazel @@ -326,7 +326,6 @@ go_library( "//internal/src-prometheus", "//internal/suspiciousnames", "//internal/symbols", - "//internal/syncx", "//internal/temporarysettings", "//internal/trace", "//internal/txemail", diff --git a/cmd/frontend/graphqlbackend/outbound_webhook_logs.go b/cmd/frontend/graphqlbackend/outbound_webhook_logs.go index a9fc1c0b8c208..c6b8bebd9f9b5 100644 --- a/cmd/frontend/graphqlbackend/outbound_webhook_logs.go +++ b/cmd/frontend/graphqlbackend/outbound_webhook_logs.go @@ -3,6 +3,7 @@ package graphqlbackend import ( "context" "strconv" + "sync" "github.com/graph-gophers/graphql-go" "github.com/graph-gophers/graphql-go/relay" @@ -10,7 +11,6 @@ import ( "github.com/sourcegraph/sourcegraph/cmd/frontend/graphqlbackend/graphqlutil" "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/gqlutil" - "github.com/sourcegraph/sourcegraph/internal/syncx" "github.com/sourcegraph/sourcegraph/internal/types" ) @@ -74,14 +74,14 @@ func newOutboundWebhookLogConnectionResolver( limit := opts.Limit logStore := store.ToLogStore() - nodes := syncx.OnceValues(func() ([]*types.OutboundWebhookLog, error) { + nodes := sync.OnceValues(func() ([]*types.OutboundWebhookLog, error) { opts.Limit += 1 return logStore.ListForOutboundWebhook(ctx, opts) }) return &outboundWebhookLogConnectionResolver{ nodes: nodes, - resolvers: syncx.OnceValues(func() ([]OutboundWebhookLogResolver, error) { + resolvers: sync.OnceValues(func() ([]OutboundWebhookLogResolver, error) { logs, err := nodes() if err != nil { return nil, err @@ -101,7 +101,7 @@ func newOutboundWebhookLogConnectionResolver( return resolvers, nil }), - totalCount: syncx.OnceValues(func() (int32, error) { + totalCount: sync.OnceValues(func() (int32, error) { total, errored, err := logStore.CountsForOutboundWebhook(ctx, opts.OutboundWebhookID) if opts.OnlyErrors { return int32(errored), err @@ -199,7 +199,7 @@ func newOutboundWebhookJobResolver( id int64, ) OutboundWebhookJobResolver { return &outboundWebhookJobResolver{ - job: syncx.OnceValues(func() (*types.OutboundWebhookJob, error) { + job: sync.OnceValues(func() (*types.OutboundWebhookJob, error) { return store.GetByID(ctx, id) }), } diff --git a/cmd/frontend/graphqlbackend/outbound_webhooks.go b/cmd/frontend/graphqlbackend/outbound_webhooks.go index e2fc13c9fec1d..6bbc2a321cd9f 100644 --- a/cmd/frontend/graphqlbackend/outbound_webhooks.go +++ b/cmd/frontend/graphqlbackend/outbound_webhooks.go @@ -4,6 +4,7 @@ import ( "context" "sort" "strconv" + "sync" "github.com/graph-gophers/graphql-go" "github.com/graph-gophers/graphql-go/relay" @@ -13,7 +14,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/encryption" "github.com/sourcegraph/sourcegraph/internal/encryption/keyring" - "github.com/sourcegraph/sourcegraph/internal/syncx" "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/internal/webhooks/outbound" "github.com/sourcegraph/sourcegraph/lib/errors" @@ -252,14 +252,14 @@ func newOutboundWebhookConnectionResolver( ) OutboundWebhookConnectionResolver { limit := opts.Limit - nodes := syncx.OnceValues(func() ([]*types.OutboundWebhook, error) { + nodes := sync.OnceValues(func() ([]*types.OutboundWebhook, error) { opts.Limit += 1 return store.List(ctx, opts) }) return &outboundWebhookConnectionResolver{ nodes: nodes, - resolvers: syncx.OnceValues(func() ([]OutboundWebhookResolver, error) { + resolvers: sync.OnceValues(func() ([]OutboundWebhookResolver, error) { webhooks, err := nodes() if err != nil { return nil, err @@ -276,7 +276,7 @@ func newOutboundWebhookConnectionResolver( return resolvers, nil }), - totalCount: syncx.OnceValues(func() (int32, error) { + totalCount: sync.OnceValues(func() (int32, error) { count, err := store.Count(ctx, opts.OutboundWebhookCountOpts) return int32(count), err }), @@ -327,7 +327,7 @@ func newOutboundWebhookResolverFromDatabase(ctx context.Context, store database. return &outboundWebhookResolver{ store: store, id: marshalOutboundWebhookID(id), - webhook: syncx.OnceValues(func() (*types.OutboundWebhook, error) { + webhook: sync.OnceValues(func() (*types.OutboundWebhook, error) { return store.GetByID(ctx, id) }), } diff --git a/cmd/frontend/graphqlbackend/package_repos.go b/cmd/frontend/graphqlbackend/package_repos.go index 21091c8fbbf3f..f028415c280b0 100644 --- a/cmd/frontend/graphqlbackend/package_repos.go +++ b/cmd/frontend/graphqlbackend/package_repos.go @@ -2,6 +2,7 @@ package graphqlbackend import ( "context" + "sync" "github.com/graph-gophers/graphql-go" "github.com/graph-gophers/graphql-go/relay" @@ -14,7 +15,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/extsvc" "github.com/sourcegraph/sourcegraph/internal/gitserver" "github.com/sourcegraph/sourcegraph/internal/observation" - "github.com/sourcegraph/sourcegraph/internal/syncx" "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -87,7 +87,7 @@ type packageRepoReferenceConnectionResolver struct { } func (r *packageRepoReferenceConnectionResolver) Nodes(ctx context.Context) ([]*packageRepoReferenceResolver, error) { - once := syncx.OnceValues(func() (map[api.RepoName]*types.Repo, error) { + once := sync.OnceValues(func() (map[api.RepoName]*types.Repo, error) { allNames := make([]string, 0, len(r.deps)) for _, dep := range r.deps { name, err := dependencyRepoToRepoName(dep) diff --git a/cmd/frontend/graphqlbackend/repository_stats.go b/cmd/frontend/graphqlbackend/repository_stats.go index 87af91518874c..92deae52e6109 100644 --- a/cmd/frontend/graphqlbackend/repository_stats.go +++ b/cmd/frontend/graphqlbackend/repository_stats.go @@ -54,13 +54,6 @@ func (r *repositoryStatsResolver) Indexed(ctx context.Context) (int32, error) { return min(indexedRepos, total), nil } -func min(a, b int32) int32 { - if a < b { - return a - } - return b -} - func (r *repositoryStatsResolver) IndexedLinesCount(ctx context.Context) (BigInt, error) { _, indexedLinesCount, err := r.computeIndexedStats(ctx) if err != nil { diff --git a/cmd/frontend/internal/insights/resolvers/aggregates_resolvers.go b/cmd/frontend/internal/insights/resolvers/aggregates_resolvers.go index b5209efe75423..188fdc180cd23 100644 --- a/cmd/frontend/internal/insights/resolvers/aggregates_resolvers.go +++ b/cmd/frontend/internal/insights/resolvers/aggregates_resolvers.go @@ -194,12 +194,6 @@ func getProactiveResultLimit() int { } -func min(x, y int) int { - if x < y { - return x - } - return y -} func getExtendedTimeout(ctx context.Context, db database.DB) int { searchLimit := limits.SearchLimits(conf.Get()).MaxTimeoutSeconds diff --git a/cmd/frontend/internal/insights/resolvers/insight_view_resolvers.go b/cmd/frontend/internal/insights/resolvers/insight_view_resolvers.go index a14206f41d69a..c761343e662e2 100644 --- a/cmd/frontend/internal/insights/resolvers/insight_view_resolvers.go +++ b/cmd/frontend/internal/insights/resolvers/insight_view_resolvers.go @@ -1594,14 +1594,7 @@ func sortSeriesResolvers(ctx context.Context, seriesOptions types.SeriesDisplayO } } - return resolvers[:minInt(int32(len(resolvers)), limit)], nil -} - -func minInt(a, b int32) int32 { - if a < b { - return a - } - return b + return resolvers[:min(int32(len(resolvers)), limit)], nil } func lowercaseGroupBy(groupBy *string) *string { diff --git a/cmd/gitserver/internal/BUILD.bazel b/cmd/gitserver/internal/BUILD.bazel index fe4b743186d09..e523643f6f9c3 100644 --- a/cmd/gitserver/internal/BUILD.bazel +++ b/cmd/gitserver/internal/BUILD.bazel @@ -65,7 +65,6 @@ go_library( "//internal/ratelimit", "//internal/search/streaming/http", "//internal/security", - "//internal/syncx", "//internal/trace", "//internal/types", "//internal/unpack", diff --git a/cmd/gitserver/internal/cacert/BUILD.bazel b/cmd/gitserver/internal/cacert/BUILD.bazel index 14e0d24456036..81601754a1871 100644 --- a/cmd/gitserver/internal/cacert/BUILD.bazel +++ b/cmd/gitserver/internal/cacert/BUILD.bazel @@ -11,7 +11,6 @@ go_library( ], importpath = "github.com/sourcegraph/sourcegraph/cmd/gitserver/internal/cacert", visibility = ["//cmd/gitserver:__subpackages__"], - deps = ["//internal/syncx"], ) go_test( diff --git a/cmd/gitserver/internal/cacert/cacert.go b/cmd/gitserver/internal/cacert/cacert.go index c28f87ea40126..b87a33ed77a79 100644 --- a/cmd/gitserver/internal/cacert/cacert.go +++ b/cmd/gitserver/internal/cacert/cacert.go @@ -3,13 +3,13 @@ package cacert import ( - "github.com/sourcegraph/sourcegraph/internal/syncx" + "sync" ) // System returns PEM encoded system certificates. Note: This function only // works on Linux. Other operating systems do not rely on PEM files at known // locations, instead they rely on system calls. -var System = syncx.OnceValues(func() ([][]byte, error) { +var System = sync.OnceValues(func() ([][]byte, error) { c, err := loadSystemRoots() if err != nil { return nil, err diff --git a/cmd/gitserver/internal/git/BUILD.bazel b/cmd/gitserver/internal/git/BUILD.bazel index b9b4bfa99f369..9153f79ad155a 100644 --- a/cmd/gitserver/internal/git/BUILD.bazel +++ b/cmd/gitserver/internal/git/BUILD.bazel @@ -20,7 +20,6 @@ go_library( "//internal/conf", "//internal/fileutil", "//internal/gitserver/gitdomain", - "//internal/syncx", "//internal/trace", "//internal/wrexec", "//lib/errors", diff --git a/cmd/gitserver/internal/git/git.go b/cmd/gitserver/internal/git/git.go index c5eb2247c84b1..fff1772016699 100644 --- a/cmd/gitserver/internal/git/git.go +++ b/cmd/gitserver/internal/git/git.go @@ -12,6 +12,7 @@ import ( "sort" "strconv" "strings" + "sync" "syscall" "time" @@ -20,7 +21,6 @@ import ( "github.com/sourcegraph/sourcegraph/cmd/gitserver/internal/common" "github.com/sourcegraph/sourcegraph/internal/fileutil" "github.com/sourcegraph/sourcegraph/internal/gitserver/gitdomain" - "github.com/sourcegraph/sourcegraph/internal/syncx" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -174,7 +174,7 @@ func RemoveBadRefs(ctx context.Context, dir common.GitDir) (errs error) { // older versions of git do not remove tags case insensitively, so we generate // every possible case of HEAD (2^4 = 16) -var badRefs = syncx.OnceValue(func() []string { +var badRefs = sync.OnceValue(func() []string { refs := make([]string, 0, 1<<4) for bits := uint8(0); bits < (1 << 4); bits++ { s := []byte("HEAD") diff --git a/cmd/gitserver/internal/search.go b/cmd/gitserver/internal/search.go index c4110998f3fcb..3d0dd14581374 100644 --- a/cmd/gitserver/internal/search.go +++ b/cmd/gitserver/internal/search.go @@ -4,6 +4,7 @@ import ( "context" "math" "strconv" + "sync" "sync/atomic" "time" @@ -17,7 +18,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/gitserver/protocol" "github.com/sourcegraph/sourcegraph/internal/gitserver/search" "github.com/sourcegraph/sourcegraph/internal/honey" - "github.com/sourcegraph/sourcegraph/internal/syncx" "github.com/sourcegraph/sourcegraph/internal/trace" ) @@ -69,7 +69,7 @@ func (s *Server) searchWithObservability(ctx context.Context, tr trace.Trace, ar } }() - observeLatency := syncx.OnceFunc(func() { + observeLatency := sync.OnceFunc(func() { searchLatency.Observe(time.Since(searchStart).Seconds()) }) diff --git a/cmd/searcher/internal/search/BUILD.bazel b/cmd/searcher/internal/search/BUILD.bazel index ba7a6fc130ac2..3d37fa5b4f5d6 100644 --- a/cmd/searcher/internal/search/BUILD.bazel +++ b/cmd/searcher/internal/search/BUILD.bazel @@ -43,7 +43,6 @@ go_library( "//internal/search/zoekt", "//internal/searcher/v1:searcher", "//internal/trace", - "//internal/xcontext", "//lib/errors", "//schema", "@com_github_bmatcuk_doublestar//:doublestar", diff --git a/cmd/searcher/internal/search/store.go b/cmd/searcher/internal/search/store.go index f85e9ccd71ec1..96a656cab1669 100644 --- a/cmd/searcher/internal/search/store.go +++ b/cmd/searcher/internal/search/store.go @@ -29,7 +29,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/metrics" "github.com/sourcegraph/sourcegraph/internal/observation" "github.com/sourcegraph/sourcegraph/internal/trace" - "github.com/sourcegraph/sourcegraph/internal/xcontext" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -195,7 +194,7 @@ func (s *Store) PrepareZipPaths(ctx context.Context, repo api.RepoName, commit a // TODO: consider adding a cache method that doesn't actually bother opening the file, // since we're just going to close it again immediately. cacheHit := true - bgctx := xcontext.Detach(ctx) + bgctx := context.WithoutCancel(ctx) f, err := s.cache.Open(bgctx, []string{key}, func(ctx context.Context) (io.ReadCloser, error) { cacheHit = false return s.fetch(ctx, repo, commit, filter, paths) diff --git a/cmd/symbols/parser/parser.go b/cmd/symbols/parser/parser.go index 7abad359492b9..214c2b077201c 100644 --- a/cmd/symbols/parser/parser.go +++ b/cmd/symbols/parser/parser.go @@ -129,13 +129,6 @@ func (p *parser) Parse(ctx context.Context, args search.SymbolsParameters, paths return symbolOrErrors, nil } -func min(a, b int) int { - if a < b { - return a - } - return b -} - func (p *parser) handleParseRequest( ctx context.Context, symbolOrErrors chan<- SymbolOrError, diff --git a/cmd/symbols/squirrel/hover.go b/cmd/symbols/squirrel/hover.go index 2ff238f5ddcb1..7e2c97ed1e1cf 100644 --- a/cmd/symbols/squirrel/hover.go +++ b/cmd/symbols/squirrel/hover.go @@ -2,6 +2,7 @@ package squirrel import ( "math" + "slices" "strings" ) @@ -19,7 +20,7 @@ func findHover(node Node) string { // Skip over Java annotations and the like. for ; prev != nil; prev = prev.PrevNamedSibling() { - if !contains(style.skipNodeTypes, prev.Type()) { + if !slices.Contains(style.skipNodeTypes, prev.Type()) { break } } @@ -27,7 +28,7 @@ func findHover(node Node) string { // Collect comments backwards. comments := []string{} lastStartRow := -1 - for ; prev != nil && contains(style.nodeTypes, prev.Type()); prev = prev.PrevNamedSibling() { + for ; prev != nil && slices.Contains(style.nodeTypes, prev.Type()); prev = prev.PrevNamedSibling() { if lastStartRow == -1 { lastStartRow = int(prev.StartPoint().Row) } else if lastStartRow != int(prev.EndPoint().Row+1) { diff --git a/cmd/symbols/squirrel/service_test.go b/cmd/symbols/squirrel/service_test.go index f65d2a22e93a1..fcc029f27b154 100644 --- a/cmd/symbols/squirrel/service_test.go +++ b/cmd/symbols/squirrel/service_test.go @@ -4,6 +4,7 @@ import ( "context" "os" "path/filepath" + "slices" "sort" "testing" @@ -140,7 +141,7 @@ func TestNonLocalDefinition(t *testing.T) { gotSymbolInfo, err := squirrel.SymbolInfo(context.Background(), ref.repoCommitPathPoint) fatalIfErrorLabel(t, err, "symbolInfo") - if contains(ref.tags, "nodef") { + if slices.Contains(ref.tags, "nodef") { if gotSymbolInfo != nil { t.Fatalf("unexpected definition for %s", ref.symbol) } diff --git a/cmd/symbols/squirrel/util.go b/cmd/symbols/squirrel/util.go index caaf0a49fb93f..baac38269151d 100644 --- a/cmd/symbols/squirrel/util.go +++ b/cmd/symbols/squirrel/util.go @@ -196,24 +196,6 @@ func nodeLength(node *sitter.Node) int { return length } -// Of course. -func min(a, b int) int { - if a < b { - return a - } - return b -} - -// When generic? -func contains(slice []string, str string) bool { - for _, s := range slice { - if s == str { - return true - } - } - return false -} - // Node is a sitter.Node plus convenient info. type Node struct { RepoCommitPath types.RepoCommitPath diff --git a/cmd/worker/internal/executorqueue/queue_allocation.go b/cmd/worker/internal/executorqueue/queue_allocation.go index 012625eb1ce79..eea4d00991112 100644 --- a/cmd/worker/internal/executorqueue/queue_allocation.go +++ b/cmd/worker/internal/executorqueue/queue_allocation.go @@ -1,6 +1,8 @@ package executorqueue import ( + "slices" + "github.com/inconshreveable/log15" executortypes "github.com/sourcegraph/sourcegraph/internal/executor/types" @@ -16,7 +18,7 @@ var validCloudProviderNames = []string{"aws", "gcp"} func normalizeAllocations(m map[string]map[string]float64, awsConfigured, gcpConfigured bool) (map[string]QueueAllocation, error) { for queueName := range m { - if !contains(executortypes.ValidQueueNames, queueName) { + if !slices.Contains(executortypes.ValidQueueNames, queueName) { return nil, errors.Errorf("invalid queue '%s'", queueName) } } @@ -51,7 +53,7 @@ func normalizeQueueAllocation(queueName string, queueAllocation map[string]float } for cloudProvider, allocation := range queueAllocation { - if !contains(validCloudProviderNames, cloudProvider) { + if !slices.Contains(validCloudProviderNames, cloudProvider) { return QueueAllocation{}, errors.Errorf("invalid cloud provider '%s', expected 'aws' or 'gcp'", cloudProvider) } @@ -78,13 +80,3 @@ func normalizeQueueAllocation(queueName string, queueAllocation map[string]float PercentageGCP: queueAllocation["gcp"], }, nil } - -func contains(slice []string, value string) bool { - for _, v := range slice { - if value == v { - return true - } - } - - return false -} diff --git a/cmd/worker/internal/permissions/BUILD.bazel b/cmd/worker/internal/permissions/BUILD.bazel index ace2cd2af25e4..e2ad44f3d4eee 100644 --- a/cmd/worker/internal/permissions/BUILD.bazel +++ b/cmd/worker/internal/permissions/BUILD.bazel @@ -64,7 +64,6 @@ go_test( "//internal/api", "//internal/auth", "//internal/authz", - "//internal/collections", "//internal/conf", "//internal/database", "//internal/database/dbmocks", diff --git a/cmd/worker/internal/permissions/bitbucket_projects_test.go b/cmd/worker/internal/permissions/bitbucket_projects_test.go index b04775d8985a1..43d643ee39d45 100644 --- a/cmd/worker/internal/permissions/bitbucket_projects_test.go +++ b/cmd/worker/internal/permissions/bitbucket_projects_test.go @@ -1,6 +1,7 @@ package permissions import ( + "cmp" "context" "encoding/json" "testing" @@ -12,7 +13,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/api" "github.com/sourcegraph/sourcegraph/internal/authz" - "github.com/sourcegraph/sourcegraph/internal/collections" "github.com/sourcegraph/sourcegraph/internal/conf" "github.com/sourcegraph/sourcegraph/internal/database" "github.com/sourcegraph/sourcegraph/internal/database/dbmocks" @@ -183,7 +183,7 @@ func TestSetPermissionsForUsers(t *testing.T) { err := perms.LoadUserPendingPermissions(ctx, userPerms) require.NoError(t, err) - require.Equal(t, []int32{1, 2}, userPerms.IDs.Sorted(collections.NaturalCompare[int32])) + require.Equal(t, []int32{1, 2}, userPerms.IDs.Sorted(cmp.Less[int32])) } } diff --git a/dev/buildchecker/checker.go b/dev/buildchecker/checker.go index 6f35c99b14a78..b8e9665e53fbc 100644 --- a/dev/buildchecker/checker.go +++ b/dev/buildchecker/checker.go @@ -130,10 +130,3 @@ func isBuildFailed(build buildkite.Build, timeout time.Duration) bool { } return false } - -func max(x, y int) int { - if x < y { - return y - } - return x -} diff --git a/dev/ci/internal/ci/changed/files.go b/dev/ci/internal/ci/changed/files.go index 432d8ec883985..b474e6df44952 100644 --- a/dev/ci/internal/ci/changed/files.go +++ b/dev/ci/internal/ci/changed/files.go @@ -1,15 +1,9 @@ package changed -import "path/filepath" - -func contains(s []string, str string) bool { - for _, v := range s { - if v == str { - return true - } - } - return false -} +import ( + "path/filepath" + "slices" +) // Changes in the root directory files should trigger client tests. var clientRootFiles = []string{ @@ -25,5 +19,5 @@ var clientRootFiles = []string{ } func isRootClientFile(p string) bool { - return filepath.Dir(p) == "." && contains(clientRootFiles, p) + return filepath.Dir(p) == "." && slices.Contains(clientRootFiles, p) } diff --git a/dev/ci/internal/ci/pipeline.go b/dev/ci/internal/ci/pipeline.go index 1f2327b5ffbbe..4aee6d9fc1739 100644 --- a/dev/ci/internal/ci/pipeline.go +++ b/dev/ci/internal/ci/pipeline.go @@ -6,6 +6,7 @@ import ( "bufio" "fmt" "os" + "slices" "strconv" "strings" "time" @@ -208,7 +209,7 @@ func GeneratePipeline(c Config) (*bk.Pipeline, error) { if err != nil { panic(fmt.Sprintf("ExtractBranchArgument: %s", err)) } - if !contains(images.SourcegraphDockerImages, patchImage) { + if !slices.Contains(images.SourcegraphDockerImages, patchImage) { panic(fmt.Sprintf("no image %q found", patchImage)) } @@ -230,7 +231,7 @@ func GeneratePipeline(c Config) (*bk.Pipeline, error) { if err != nil { panic(fmt.Sprintf("ExtractBranchArgument: %s", err)) } - if !contains(images.SourcegraphDockerImages, patchImage) { + if !slices.Contains(images.SourcegraphDockerImages, patchImage) { panic(fmt.Sprintf("no image %q found", patchImage)) } ops = operations.NewSet( diff --git a/dev/ci/internal/ci/web-integration-workloads.go b/dev/ci/internal/ci/web-integration-workloads.go index 1ef8d642aa328..36eb7c54782e6 100644 --- a/dev/ci/internal/ci/web-integration-workloads.go +++ b/dev/ci/internal/ci/web-integration-workloads.go @@ -9,15 +9,6 @@ import ( // Code in this file is used to split web integration tests workloads. -func contains(s []string, str string) bool { - for _, v := range s { - if v == str { - return true - } - } - return false -} - func getWebIntegrationFileNames() []string { var fileNames []string @@ -54,14 +45,6 @@ func chunkItems(items []string, size int) [][]string { return chunks } -func min(x int, y int) int { - if x < y { - return x - } - - return y -} - // getChunkedWebIntegrationFileNames gets web integration test filenames and splits them in chunks for parallelizing client integration tests. func getChunkedWebIntegrationFileNames(chunkSize int) []string { testFiles := getWebIntegrationFileNames() diff --git a/dev/managedservicesplatform/internal/stack/cloudrun/BUILD.bazel b/dev/managedservicesplatform/internal/stack/cloudrun/BUILD.bazel index 3371dcd149835..8db04a2ed0ce0 100644 --- a/dev/managedservicesplatform/internal/stack/cloudrun/BUILD.bazel +++ b/dev/managedservicesplatform/internal/stack/cloudrun/BUILD.bazel @@ -26,7 +26,6 @@ go_library( "//dev/managedservicesplatform/internal/stack/options/googleprovider", "//dev/managedservicesplatform/internal/stack/options/randomprovider", "//dev/managedservicesplatform/spec", - "//internal/syncx", "//lib/errors", "//lib/pointers", "@com_github_hashicorp_terraform_cdk_go_cdktf//:cdktf", diff --git a/dev/managedservicesplatform/internal/stack/cloudrun/cloudrun.go b/dev/managedservicesplatform/internal/stack/cloudrun/cloudrun.go index bfc199b847c82..4e84b32cffd32 100644 --- a/dev/managedservicesplatform/internal/stack/cloudrun/cloudrun.go +++ b/dev/managedservicesplatform/internal/stack/cloudrun/cloudrun.go @@ -5,6 +5,7 @@ import ( "html/template" "strconv" "strings" + "sync" "golang.org/x/exp/maps" "golang.org/x/exp/slices" @@ -31,7 +32,6 @@ import ( "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/stack/options/googleprovider" "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/internal/stack/options/randomprovider" "github.com/sourcegraph/sourcegraph/dev/managedservicesplatform/spec" - "github.com/sourcegraph/sourcegraph/internal/syncx" "github.com/sourcegraph/sourcegraph/lib/errors" "github.com/sourcegraph/sourcegraph/lib/pointers" ) @@ -159,7 +159,7 @@ func NewStack(stacks *stack.Set, vars Variables) (crossStackOutput *CrossStackOu var privateNetworkEnabled bool // privateNetwork is only instantiated if used, and is only instantiated // once. If called, it always returns a non-nil value. - privateNetwork := syncx.OnceValue(func() *privatenetwork.Output { + privateNetwork := sync.OnceValue(func() *privatenetwork.Output { privateNetworkEnabled = true return privatenetwork.New(stack, privatenetwork.Config{ ProjectID: vars.ProjectID, diff --git a/dev/sg/internal/run/prefix_suffix_saver.go b/dev/sg/internal/run/prefix_suffix_saver.go index 080577a9ec13c..ed02f3ed17eca 100644 --- a/dev/sg/internal/run/prefix_suffix_saver.go +++ b/dev/sg/internal/run/prefix_suffix_saver.go @@ -52,7 +52,7 @@ func (w *prefixSuffixSaver) Write(p []byte) (n int, err error) { // grow larger than w.N. It returns the un-appended suffix of p. func (w *prefixSuffixSaver) fill(dst *[]byte, p []byte) (pRemain []byte) { if remain := w.N - len(*dst); remain > 0 { - add := minInt(len(p), remain) + add := min(len(p), remain) *dst = append(*dst, p[:add]...) p = p[add:] } @@ -76,10 +76,3 @@ func (w *prefixSuffixSaver) Bytes() []byte { buf.Write(w.suffix[:w.suffixOff]) return buf.Bytes() } - -func minInt(a, b int) int { - if a < b { - return a - } - return b -} diff --git a/internal/api/internalapi/BUILD.bazel b/internal/api/internalapi/BUILD.bazel index 12d602c3e2386..cabf8db6d3c3e 100644 --- a/internal/api/internalapi/BUILD.bazel +++ b/internal/api/internalapi/BUILD.bazel @@ -14,7 +14,6 @@ go_library( "//internal/env", "//internal/grpc/defaults", "//internal/httpcli", - "//internal/syncx", "//lib/errors", "@com_github_prometheus_client_golang//prometheus", "@com_github_prometheus_client_golang//prometheus/promauto", diff --git a/internal/api/internalapi/client.go b/internal/api/internalapi/client.go index f465876d59bc7..b9f31635f2f8d 100644 --- a/internal/api/internalapi/client.go +++ b/internal/api/internalapi/client.go @@ -10,6 +10,7 @@ import ( "net/url" "strconv" "strings" + "sync" "time" "github.com/prometheus/client_golang/prometheus" @@ -24,7 +25,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/env" "github.com/sourcegraph/sourcegraph/internal/grpc/defaults" "github.com/sourcegraph/sourcegraph/internal/httpcli" - "github.com/sourcegraph/sourcegraph/internal/syncx" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -53,7 +53,7 @@ type internalClient struct { var Client = &internalClient{ URL: frontendInternal.String(), - getConfClient: syncx.OnceValues(func() (proto.ConfigServiceClient, error) { + getConfClient: sync.OnceValues(func() (proto.ConfigServiceClient, error) { logger := log.Scoped("internalapi") conn, err := defaults.Dial(frontendInternal.Host, logger) if err != nil { diff --git a/internal/authz/perms.go b/internal/authz/perms.go index b1ee88d1a1820..5251d45235c7c 100644 --- a/internal/authz/perms.go +++ b/internal/authz/perms.go @@ -1,6 +1,7 @@ package authz import ( + "cmp" "fmt" "strings" "time" @@ -199,7 +200,7 @@ type UserPendingPermissions struct { // GenerateSortedIDsSlice returns a sorted slice of the IDs set. func (p *UserPendingPermissions) GenerateSortedIDsSlice() []int32 { - return p.IDs.Sorted(collections.NaturalCompare[int32]) + return p.IDs.Sorted(cmp.Less[int32]) } func (p *UserPendingPermissions) Attrs() []attribute.KeyValue { diff --git a/internal/cmd/tracking-issue/api.go b/internal/cmd/tracking-issue/api.go index a841a98899df5..2813bc2d648f5 100644 --- a/internal/cmd/tracking-issue/api.go +++ b/internal/cmd/tracking-issue/api.go @@ -3,6 +3,7 @@ package main import ( "context" "fmt" + "slices" "sort" "strings" @@ -39,7 +40,7 @@ func LoadTrackingIssues(ctx context.Context, cli *graphql.Client, org string, tr issuesMap := map[string]*Issue{} for _, v := range issues { - if !contains(v.Labels, "tracking") { + if !slices.Contains(v.Labels, "tracking") { issuesMap[v.ID] = v } } @@ -79,7 +80,7 @@ func makeQueries(org string, trackingIssues []*Issue) (queries []string) { properSuperset := func(a, b []string) bool { for _, term := range b { - if !contains(a, term) { + if !slices.Contains(a, term) { return false } } diff --git a/internal/cmd/tracking-issue/context.go b/internal/cmd/tracking-issue/context.go index f2a058fa0face..01f233d9a184f 100644 --- a/internal/cmd/tracking-issue/context.go +++ b/internal/cmd/tracking-issue/context.go @@ -1,6 +1,9 @@ package main -import "strings" +import ( + "slices" + "strings" +) // IssueContext tracks a visible set of issues, tracking issues, and pull requests // with respect to a given tracking issue. The visible set of issues and pull requests @@ -65,7 +68,7 @@ func matchingTrackingIssues(trackingIssue *Issue, issues []*Issue, pullRequests } for _, pullRequest := range matchingPullRequests(pullRequests, matcher) { for _, issue := range pullRequest.TrackedBy { - if contains(issue.Labels, "tracking") { + if slices.Contains(issue.Labels, "tracking") { stack = append(stack, issue) } else { stack = append(stack, issue.TrackedBy...) diff --git a/internal/cmd/tracking-issue/emoji.go b/internal/cmd/tracking-issue/emoji.go index 6b0eb72d4e17c..7bef37941d432 100644 --- a/internal/cmd/tracking-issue/emoji.go +++ b/internal/cmd/tracking-issue/emoji.go @@ -1,6 +1,7 @@ package main import ( + "slices" "sort" "strings" @@ -45,7 +46,7 @@ var customerMatcher = regexp.MustCompile(`https://app\.hubspot\.com/contacts/276 // categorizeCustomerIssue adds a customer emoji if the repository matches sourcegraph/customer or if // the issue contains a hubspot URL. func categorizeCustomerIssue(labels []string, repository, body string, categories map[string]string) { - if repository == "sourcegraph/customer" || contains(labels, "customer") { + if repository == "sourcegraph/customer" || slices.Contains(labels, "customer") { if customer := customerMatcher.FindString(body); customer != "" { categories["customer"] = "[šŸ‘©](" + customer + ")" } else { diff --git a/internal/cmd/tracking-issue/labels.go b/internal/cmd/tracking-issue/labels.go index ee6c86124518a..d372dceadf14a 100644 --- a/internal/cmd/tracking-issue/labels.go +++ b/internal/cmd/tracking-issue/labels.go @@ -2,16 +2,6 @@ package main import "strings" -func contains(haystack []string, needle string) bool { - for _, candidate := range haystack { - if candidate == needle { - return true - } - } - - return false -} - func redactLabels(labels []string) (redacted []string) { for _, label := range labels { if strings.HasPrefix(label, "estimate/") || strings.HasPrefix(label, "planned/") { diff --git a/internal/cmd/tracking-issue/matcher.go b/internal/cmd/tracking-issue/matcher.go index 12d2a48aaed9e..901fae9b3aee0 100644 --- a/internal/cmd/tracking-issue/matcher.go +++ b/internal/cmd/tracking-issue/matcher.go @@ -1,6 +1,9 @@ package main -import "fmt" +import ( + "fmt" + "slices" +) type Matcher struct { labels []string @@ -23,7 +26,7 @@ func NewMatcher(labels []string, milestone string, assignee string, noAssignee b // with the tracking issue will never be matched. func (m *Matcher) Issue(issue *Issue) bool { return testAll( - !contains(issue.Labels, "tracking"), + !slices.Contains(issue.Labels, "tracking"), m.testAssignee(issue.Assignees...), m.testLabels(issue.Labels), m.testMilestone(issue.Milestone, issue.Labels), @@ -50,14 +53,14 @@ func (m *Matcher) testAssignee(assignees ...string) bool { return true } - return contains(assignees, m.assignee) + return slices.Contains(assignees, m.assignee) } // testLabels returns true if every label that this matcher was configured with exists // in the given label list. func (m *Matcher) testLabels(labels []string) bool { for _, label := range m.labels { - if !contains(labels, label) { + if !slices.Contains(labels, label) { return false } } @@ -69,7 +72,7 @@ func (m *Matcher) testLabels(labels []string) bool { // was configured with, if the given labels contains a planned/{milestone} label, or // the milestone on the tracking issue is not restricted. func (m *Matcher) testMilestone(milestone string, labels []string) bool { - return m.milestone == "" || milestone == m.milestone || contains(labels, fmt.Sprintf("planned/%s", m.milestone)) + return m.milestone == "" || milestone == m.milestone || slices.Contains(labels, fmt.Sprintf("planned/%s", m.milestone)) } // testAll returns true if all of the given values are true. diff --git a/internal/cmd/tracking-issue/render.go b/internal/cmd/tracking-issue/render.go index 2b2202c4425e5..946f6c5c285bd 100644 --- a/internal/cmd/tracking-issue/render.go +++ b/internal/cmd/tracking-issue/render.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "slices" "sort" "strconv" "strings" @@ -440,7 +441,7 @@ func (ar *AssigneeRenderer) resetDisplayFlags() { // doRenderIssue returns the given issue rendered in markdown. func (ar *AssigneeRenderer) doRenderIssue(issue *Issue, milestone string) string { url := issue.URL - if issue.Milestone != milestone && contains(issue.Labels, fmt.Sprintf("planned/%s", milestone)) { + if issue.Milestone != milestone && slices.Contains(issue.Labels, fmt.Sprintf("planned/%s", milestone)) { // deprioritized url = fmt.Sprintf("~%s~", url) } diff --git a/internal/codycontext/context.go b/internal/codycontext/context.go index 344eb4cf53f27..5704e012dd8b9 100644 --- a/internal/codycontext/context.go +++ b/internal/codycontext/context.go @@ -3,7 +3,6 @@ package context import ( "context" "fmt" - "math" "strconv" "strings" "sync" @@ -394,13 +393,3 @@ func fileMatchToContextMatches(fm *result.FileMatch) []FileChunkContext { EndLine: endLine, }} } - -func max(vals ...int) int { - res := math.MinInt32 - for _, val := range vals { - if val > res { - res = val - } - } - return res -} diff --git a/internal/collections/set_test.go b/internal/collections/set_test.go index 2c537100cb2ff..f491e2177cafa 100644 --- a/internal/collections/set_test.go +++ b/internal/collections/set_test.go @@ -1,6 +1,7 @@ package collections import ( + "cmp" "testing" "github.com/grafana/regexp" @@ -11,7 +12,7 @@ func TestSet(t *testing.T) { a := NewSet(1, 2, 3) b := NewSet(2, 3, 4) - cmp := NaturalCompare[int] + cmp := cmp.Less[int] t.Run("Set can be created from another Set", func(t *testing.T) { c := NewSet(a.Values()...) diff --git a/internal/collections/slice_utils.go b/internal/collections/slice_utils.go index 8b22a301d5aab..e43cd6530a7d7 100644 --- a/internal/collections/slice_utils.go +++ b/internal/collections/slice_utils.go @@ -6,14 +6,6 @@ import ( "github.com/sourcegraph/sourcegraph/lib/errors" ) -// Returns minimum of 2 numbers -func Min[T constraints.Ordered](a T, b T) T { - if a < b { - return a - } - return b -} - // NaturalCompare is a comparator function that will help sort numbers in natural order // when used in sort.Slice. // For example, 1, 2, 3, 10, 11, 12, 20, 21, 22, 100, 101, 102, 200, 201, 202, ... @@ -26,10 +18,10 @@ func SplitIntoChunks[T any](slice []T, size int) ([][]T, error) { if size < 1 { return nil, errors.Newf("size must be greater than 1") } - numChunks := Min(1+(len(slice)-1)/size, len(slice)) + numChunks := min(1+(len(slice)-1)/size, len(slice)) chunks := make([][]T, numChunks) for i := 0; i < numChunks; i++ { - maxIndex := Min((i+1)*size, len(slice)) + maxIndex := min((i+1)*size, len(slice)) chunks[i] = slice[i*size : maxIndex] } return chunks, nil diff --git a/internal/collections/slice_utils_test.go b/internal/collections/slice_utils_test.go index 9cf907091635b..72b6c516d2a1d 100644 --- a/internal/collections/slice_utils_test.go +++ b/internal/collections/slice_utils_test.go @@ -1,55 +1,12 @@ package collections import ( - "math" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" ) -func Test_Min(t *testing.T) { - t.Run("Returns first int that is smaller", func(t *testing.T) { - got := Min(1, 2) - want := 1 - if got != want { - t.Errorf("got %v, want %v", got, want) - } - }) - - t.Run("Returns second int that is smaller", func(t *testing.T) { - got := Min(2, 1) - want := 1 - if got != want { - t.Errorf("got %v, want %v", got, want) - } - }) - - t.Run("Works with a float as well", func(t *testing.T) { - got := Min(1.5, 1.52) - want := 1.5 - if got != want { - t.Errorf("got %v, want %v", got, want) - } - }) - - t.Run("Works with infinity", func(t *testing.T) { - got := Min(1.5, math.Inf(1)) - want := 1.5 - if got != want { - t.Errorf("got %v, want %v", got, want) - } - }) - - t.Run("Works with negative infinity", func(t *testing.T) { - got := Min(1.5, math.Inf(-1)) - want := math.Inf(-1) - if got != want { - t.Errorf("got %v, want %v", got, want) - } - }) -} - func Test_SplitIntoChunks(t *testing.T) { t.Run("Splits a slice into chunks of size 3", func(t *testing.T) { got, err := SplitIntoChunks([]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 3) diff --git a/internal/completions/httpapi/handler.go b/internal/completions/httpapi/handler.go index 38294dbb91948..a45556634e84e 100644 --- a/internal/completions/httpapi/handler.go +++ b/internal/completions/httpapi/handler.go @@ -132,13 +132,6 @@ func respondRateLimited(w http.ResponseWriter, err RateLimitExceededError) { http.Error(w, err.Error(), http.StatusTooManyRequests) } -func max(a, b int) int { - if a > b { - return a - } - return b -} - // newSwitchingResponseHandler handles requests to an LLM provider, and wraps the correct // handler based on the requestParams.Stream flag. func newSwitchingResponseHandler(logger log.Logger, feature types.CompletionsFeature) func(ctx context.Context, requestParams types.CompletionRequestParameters, cc types.CompletionsClient, w http.ResponseWriter) { diff --git a/internal/completions/httpapi/limiter.go b/internal/completions/httpapi/limiter.go index 660bc7befc226..a59bf00f065f7 100644 --- a/internal/completions/httpapi/limiter.go +++ b/internal/completions/httpapi/limiter.go @@ -194,10 +194,3 @@ func getConfiguredLimit(ctx context.Context, db database.DB, scope types.Complet return 0, nil } - -func min(a, b int) int { - if a < b { - return a - } - return b -} diff --git a/internal/database/BUILD.bazel b/internal/database/BUILD.bazel index 923abc5b2f553..edb2f9e2ba866 100644 --- a/internal/database/BUILD.bazel +++ b/internal/database/BUILD.bazel @@ -150,7 +150,6 @@ go_library( "//internal/trace", "//internal/types", "//internal/version", - "//internal/xcontext", "//lib/errors", "//lib/pointers", "//schema", diff --git a/internal/database/dbconn/rds/BUILD.bazel b/internal/database/dbconn/rds/BUILD.bazel index 2f3dbcac373ac..29cb336e71cbe 100644 --- a/internal/database/dbconn/rds/BUILD.bazel +++ b/internal/database/dbconn/rds/BUILD.bazel @@ -7,7 +7,6 @@ go_library( importpath = "github.com/sourcegraph/sourcegraph/internal/database/dbconn/rds", visibility = ["//:__subpackages__"], deps = [ - "//internal/syncx", "//lib/errors", "@com_github_aws_aws_sdk_go//aws/session", "@com_github_aws_aws_sdk_go//service/rds/rdsutils", diff --git a/internal/database/dbconn/rds/rds.go b/internal/database/dbconn/rds/rds.go index 6ca4b2cc97a09..b8db7d2aca664 100644 --- a/internal/database/dbconn/rds/rds.go +++ b/internal/database/dbconn/rds/rds.go @@ -5,13 +5,13 @@ import ( "net/url" "strconv" "strings" + "sync" "time" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/rds/rdsutils" "github.com/jackc/pgx/v4" "github.com/sourcegraph/log" - "github.com/sourcegraph/sourcegraph/internal/syncx" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -40,7 +40,7 @@ func (u *Updater) Update(cfg *pgx.ConnConfig) (*pgx.ConnConfig, error) { logger := log.Scoped("rds") if cfg.Password != "" { // only output the warning once, or it will emit a new entry on every connection - syncx.OnceFunc(func() { + sync.OnceFunc(func() { logger.Warn("'PG_CONNECTION_UPDATER' is 'EC2_ROLE_CREDENTIALS', but 'PGPASSWORD' is also set. Ignoring 'PGPASSWORD'.") }) } diff --git a/internal/database/event_logs.go b/internal/database/event_logs.go index bde4aceda8768..f0b413d5fc4e6 100644 --- a/internal/database/event_logs.go +++ b/internal/database/event_logs.go @@ -26,7 +26,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/trace" "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/internal/version" - "github.com/sourcegraph/sourcegraph/internal/xcontext" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -311,7 +310,7 @@ func (l *eventLogStore) BulkInsert(ctx context.Context, events []*Event) error { // Create a cancel-free context to avoid interrupting the insert when // the parent context is cancelled, and add our own timeout on the insert // to make sure things don't get stuck in an unbounded manner. - insertCtx, cancel := context.WithTimeout(xcontext.Detach(ctx), 5*time.Minute) + insertCtx, cancel := context.WithTimeout(context.WithoutCancel(ctx), 5*time.Minute) defer cancel() return batch.InsertValues( diff --git a/internal/database/telemetry_export_store.go b/internal/database/telemetry_export_store.go index 150545a876ac8..5f7e484652afa 100644 --- a/internal/database/telemetry_export_store.go +++ b/internal/database/telemetry_export_store.go @@ -22,7 +22,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/telemetry/sensitivemetadataallowlist" telemetrygatewayv1 "github.com/sourcegraph/sourcegraph/internal/telemetrygateway/v1" "github.com/sourcegraph/sourcegraph/internal/trace" - "github.com/sourcegraph/sourcegraph/internal/xcontext" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -155,7 +154,7 @@ func (s *telemetryEventsExportQueueStore) QueueForExport(ctx context.Context, ev // Create a cancel-free context to avoid interrupting the insert when // the parent context is cancelled, and add our own timeout on the insert // to make sure things don't get stuck in an unbounded manner. - insertCtx, cancel := context.WithTimeout(xcontext.Detach(ctx), 5*time.Minute) + insertCtx, cancel := context.WithTimeout(context.WithoutCancel(ctx), 5*time.Minute) defer cancel() err = batch.InsertValues( diff --git a/internal/embeddings/embed/files.go b/internal/embeddings/embed/files.go index bf610eb2107ff..e0c691ccfa816 100644 --- a/internal/embeddings/embed/files.go +++ b/internal/embeddings/embed/files.go @@ -147,10 +147,3 @@ func IsValidTextFile(fileName string) bool { basename := strings.ToLower(filepath.Base(fileName)) return strings.HasPrefix(basename, "license") } - -func min(a, b int) int { - if a < b { - return a - } - return b -} diff --git a/internal/embeddings/similarity_search.go b/internal/embeddings/similarity_search.go index b0e9da00b3254..fa1746bfe61ff 100644 --- a/internal/embeddings/similarity_search.go +++ b/internal/embeddings/similarity_search.go @@ -202,20 +202,6 @@ func (index *EmbeddingIndex) score(query []int8, i int, opts SearchOptions) Sear } } -func min(a, b int) int { - if a < b { - return a - } - return b -} - -func max(a, b int) int { - if a > b { - return a - } - return b -} - type SearchOptions struct { UseDocumentRanks bool } diff --git a/internal/insights/query/compute_executor.go b/internal/insights/query/compute_executor.go index 4f24828d70b6b..8b683f9412607 100644 --- a/internal/insights/query/compute_executor.go +++ b/internal/insights/query/compute_executor.go @@ -114,13 +114,6 @@ func sortAndLimitComputedGroups(timeSeries []GeneratedTimeSeries) []GeneratedTim return timeSeries[i].Points[0].Count > timeSeries[j].Points[0].Count } sort.SliceStable(timeSeries, descValueSort) - limit := minInt(20, len(timeSeries)) + limit := min(20, len(timeSeries)) return timeSeries[:limit] } - -func minInt(a, b int) int { - if a < b { - return a - } - return b -} diff --git a/internal/repoupdater/BUILD.bazel b/internal/repoupdater/BUILD.bazel index 151deb5db00be..e096ff7945acf 100644 --- a/internal/repoupdater/BUILD.bazel +++ b/internal/repoupdater/BUILD.bazel @@ -17,7 +17,6 @@ go_library( "//internal/httpcli", "//internal/repoupdater/protocol", "//internal/repoupdater/v1:repoupdater", - "//internal/syncx", "//internal/trace", "//lib/errors", "@com_github_sourcegraph_log//:log", diff --git a/internal/repoupdater/client.go b/internal/repoupdater/client.go index a0af422cc754b..c2ce1ab8bdb6c 100644 --- a/internal/repoupdater/client.go +++ b/internal/repoupdater/client.go @@ -9,6 +9,7 @@ import ( "net/http" "net/url" "os" + "sync" "github.com/sourcegraph/log" "go.opentelemetry.io/otel/attribute" @@ -22,7 +23,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/httpcli" "github.com/sourcegraph/sourcegraph/internal/repoupdater/protocol" proto "github.com/sourcegraph/sourcegraph/internal/repoupdater/v1" - "github.com/sourcegraph/sourcegraph/internal/syncx" "github.com/sourcegraph/sourcegraph/internal/trace" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -66,7 +66,7 @@ func NewClient(serverURL string) *Client { return &Client{ URL: serverURL, HTTPClient: defaultDoer, - grpcClient: syncx.OnceValues(func() (proto.RepoUpdaterServiceClient, error) { + grpcClient: sync.OnceValues(func() (proto.RepoUpdaterServiceClient, error) { u, err := url.Parse(serverURL) if err != nil { return nil, err diff --git a/internal/requestclient/geolocation/BUILD.bazel b/internal/requestclient/geolocation/BUILD.bazel index a7f40db097544..285018ac227fb 100644 --- a/internal/requestclient/geolocation/BUILD.bazel +++ b/internal/requestclient/geolocation/BUILD.bazel @@ -8,7 +8,6 @@ go_library( importpath = "github.com/sourcegraph/sourcegraph/internal/requestclient/geolocation", visibility = ["//:__subpackages__"], deps = [ - "//internal/syncx", "//lib/errors", "@com_github_oschwald_maxminddb_golang//:maxminddb-golang", ], diff --git a/internal/requestclient/geolocation/geolocation.go b/internal/requestclient/geolocation/geolocation.go index 0afa72b734c8f..0c216fdddf4b9 100644 --- a/internal/requestclient/geolocation/geolocation.go +++ b/internal/requestclient/geolocation/geolocation.go @@ -7,10 +7,10 @@ package geolocation import ( _ "embed" "net" + "sync" "github.com/oschwald/maxminddb-golang" - "github.com/sourcegraph/sourcegraph/internal/syncx" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -20,7 +20,7 @@ var mmdbData []byte // getLocationsDB holds the MMDB-format database embedded at mmdbData. // It is only evaluated once - subsequent calls will return the first initialized // *maxminddb.Reader instance. -var getLocationsDB = syncx.OnceValue(func() *maxminddb.Reader { +var getLocationsDB = sync.OnceValue(func() *maxminddb.Reader { db, err := maxminddb.FromBytes(mmdbData) if err != nil { panic(errors.Wrap(err, "initialize IP database")) diff --git a/internal/search/symbol/BUILD.bazel b/internal/search/symbol/BUILD.bazel index 63586f0d3e802..7df76a51b260d 100644 --- a/internal/search/symbol/BUILD.bazel +++ b/internal/search/symbol/BUILD.bazel @@ -14,7 +14,6 @@ go_library( "//internal/search/result", "//internal/search/zoekt", "//internal/symbols", - "//internal/syncx", "//internal/trace/policy", "//internal/types", "//lib/errors", diff --git a/internal/search/symbol/symbol.go b/internal/search/symbol/symbol.go index 9ce5cf1d9d1d0..000bdfd710170 100644 --- a/internal/search/symbol/symbol.go +++ b/internal/search/symbol/symbol.go @@ -3,6 +3,7 @@ package symbol import ( "context" "regexp/syntax" //nolint:depguard // zoekt requires this pkg + "sync" "time" "github.com/RoaringBitmap/roaring" @@ -17,7 +18,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/search/result" zoektutil "github.com/sourcegraph/sourcegraph/internal/search/zoekt" "github.com/sourcegraph/sourcegraph/internal/symbols" - "github.com/sourcegraph/sourcegraph/internal/syncx" "github.com/sourcegraph/sourcegraph/internal/trace/policy" "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/lib/errors" @@ -28,7 +28,7 @@ const DefaultSymbolLimit = 100 // NOTE: this lives inside a syncx.OnceValue because search.Indexed depends on // conf.Get, and running conf.Get() at init time can cause a deadlock. So, // we construct it lazily instead. -var DefaultZoektSymbolsClient = syncx.OnceValue(func() *ZoektSymbolsClient { +var DefaultZoektSymbolsClient = sync.OnceValue(func() *ZoektSymbolsClient { return &ZoektSymbolsClient{ subRepoPermsChecker: authz.DefaultSubRepoPermsChecker, zoektStreamer: search.Indexed(), diff --git a/internal/search/zoekt/BUILD.bazel b/internal/search/zoekt/BUILD.bazel index 62e1bf1f0b31e..6891be04bc1b3 100644 --- a/internal/search/zoekt/BUILD.bazel +++ b/internal/search/zoekt/BUILD.bazel @@ -29,7 +29,6 @@ go_library( "//internal/search/streaming", "//internal/trace", "//internal/types", - "//internal/xcontext", "//lib/errors", "@com_github_go_enry_go_enry_v2//:go-enry", "@com_github_grafana_regexp//:regexp", diff --git a/internal/search/zoekt/indexed_search.go b/internal/search/zoekt/indexed_search.go index ffbb4eef27214..f3593dc0c9248 100644 --- a/internal/search/zoekt/indexed_search.go +++ b/internal/search/zoekt/indexed_search.go @@ -28,7 +28,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/search/streaming" "github.com/sourcegraph/sourcegraph/internal/trace" "github.com/sourcegraph/sourcegraph/internal/types" - "github.com/sourcegraph/sourcegraph/internal/xcontext" "github.com/sourcegraph/sourcegraph/lib/errors" ) @@ -596,7 +595,7 @@ func zoektFileMatchToSymbolResults(repoName types.MinimalRepo, inputRev string, // contextWithoutDeadline returns a context which will cancel if the cOld is // canceled. func contextWithoutDeadline(cOld context.Context) (context.Context, context.CancelFunc) { - cNew := xcontext.Detach(cOld) + cNew := context.WithoutCancel(cOld) cNew, cancel := context.WithCancel(cNew) go func() { diff --git a/internal/service/svcmain/BUILD.bazel b/internal/service/svcmain/BUILD.bazel index 67a0fbc74fbcd..8d99590864858 100644 --- a/internal/service/svcmain/BUILD.bazel +++ b/internal/service/svcmain/BUILD.bazel @@ -16,7 +16,6 @@ go_library( "//internal/profiler", "//internal/service", "//internal/singleprogram", - "//internal/syncx", "//internal/tracer", "//internal/version", "@com_github_getsentry_sentry_go//:sentry-go", diff --git a/internal/service/svcmain/svcmain.go b/internal/service/svcmain/svcmain.go index 5308b5ab51cd4..c309ef58a01b7 100644 --- a/internal/service/svcmain/svcmain.go +++ b/internal/service/svcmain/svcmain.go @@ -23,7 +23,6 @@ import ( "github.com/sourcegraph/sourcegraph/internal/profiler" sgservice "github.com/sourcegraph/sourcegraph/internal/service" "github.com/sourcegraph/sourcegraph/internal/singleprogram" - "github.com/sourcegraph/sourcegraph/internal/syncx" "github.com/sourcegraph/sourcegraph/internal/tracer" "github.com/sourcegraph/sourcegraph/internal/version" ) @@ -233,7 +232,7 @@ func run( obctx := observation.ContextWithLogger(log.Scoped(service.Name()), obctx) // ensure ready is only called once and always call it. - ready := syncx.OnceFunc(allReadyWG.Done) + ready := sync.OnceFunc(allReadyWG.Done) defer ready() // Don't run executors for Cody App diff --git a/internal/syncx/BUILD.bazel b/internal/syncx/BUILD.bazel deleted file mode 100644 index ec3d20a3c345f..0000000000000 --- a/internal/syncx/BUILD.bazel +++ /dev/null @@ -1,16 +0,0 @@ -load("//dev:go_defs.bzl", "go_test") -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "syncx", - srcs = ["oncefunc.go"], - importpath = "github.com/sourcegraph/sourcegraph/internal/syncx", - visibility = ["//:__subpackages__"], -) - -go_test( - name = "syncx_test", - timeout = "short", - srcs = ["oncefunc_test.go"], - deps = [":syncx"], -) diff --git a/internal/syncx/oncefunc.go b/internal/syncx/oncefunc.go deleted file mode 100644 index d074ae54ef064..0000000000000 --- a/internal/syncx/oncefunc.go +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2022 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// package syncx contains an accepted proposal for the sync package in go1.20. -// See https://github.com/golang/go/issues/56102 and https://go.dev/cl/451356 -package syncx - -import "sync" - -// OnceFunc returns a function that invokes f only once. The returned function -// may be called concurrently. -// -// If f panics, the returned function will panic with the same value on every call. -func OnceFunc(f func()) func() { - var once sync.Once - var valid bool - var p any - return func() { - once.Do(func() { - defer func() { - p = recover() - if !valid { - // Re-panic immediately so on the first call the user gets a - // complete stack trace into f. - panic(p) - } - }() - f() - valid = true // Set only if f does not panic - }) - if !valid { - panic(p) - } - } -} - -// OnceValue returns a function that invokes f only once and returns the value -// returned by f. The returned function may be called concurrently. -// -// If f panics, the returned function will panic with the same value on every call. -func OnceValue[T any](f func() T) func() T { - var once sync.Once - var valid bool - var p any - var result T - return func() T { - once.Do(func() { - defer func() { - p = recover() - if !valid { - panic(p) - } - }() - result = f() - valid = true - }) - if !valid { - panic(p) - } - return result - } -} - -// OnceValues returns a function that invokes f only once and returns the values -// returned by f. The returned function may be called concurrently. -// -// If f panics, the returned function will panic with the same value on every call. -func OnceValues[T1, T2 any](f func() (T1, T2)) func() (T1, T2) { - var once sync.Once - var valid bool - var p any - var r1 T1 - var r2 T2 - return func() (T1, T2) { - once.Do(func() { - defer func() { - p = recover() - if !valid { - panic(p) - } - }() - r1, r2 = f() - valid = true - }) - if !valid { - panic(p) - } - return r1, r2 - } -} diff --git a/internal/syncx/oncefunc_test.go b/internal/syncx/oncefunc_test.go deleted file mode 100644 index 05e4f822dfd89..0000000000000 --- a/internal/syncx/oncefunc_test.go +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright 2022 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package syncx_test - -import ( - "bytes" - "runtime/debug" - "sync" - "testing" - - "github.com/sourcegraph/sourcegraph/internal/syncx" -) - -// We assume that the Once.Do tests have already covered parallelism. - -func TestOnceFunc(t *testing.T) { - calls := 0 - f := syncx.OnceFunc(func() { calls++ }) - allocs := testing.AllocsPerRun(10, f) - if calls != 1 { - t.Errorf("want calls==1, got %d", calls) - } - if allocs != 0 { - t.Errorf("want 0 allocations per call, got %v", allocs) - } -} - -func TestOnceValue(t *testing.T) { - calls := 0 - f := syncx.OnceValue(func() int { - calls++ - return calls - }) - allocs := testing.AllocsPerRun(10, func() { f() }) - value := f() - if calls != 1 { - t.Errorf("want calls==1, got %d", calls) - } - if value != 1 { - t.Errorf("want value==1, got %d", value) - } - if allocs != 0 { - t.Errorf("want 0 allocations per call, got %v", allocs) - } -} - -func TestOnceValues(t *testing.T) { - calls := 0 - f := syncx.OnceValues(func() (int, int) { - calls++ - return calls, calls + 1 - }) - allocs := testing.AllocsPerRun(10, func() { f() }) - v1, v2 := f() - if calls != 1 { - t.Errorf("want calls==1, got %d", calls) - } - if v1 != 1 || v2 != 2 { - t.Errorf("want v1==1 and v2==2, got %d and %d", v1, v2) - } - if allocs != 0 { - t.Errorf("want 0 allocations per call, got %v", allocs) - } -} - -func testOncePanic(t *testing.T, calls *int, f func()) { - // Check that the each call to f panics with the same value, but the - // underlying function is only called once. - for _, label := range []string{"first time", "second time"} { - var p any - panicked := true - func() { - defer func() { - p = recover() - }() - f() - panicked = false - }() - if !panicked { - t.Fatalf("%s: f did not panic", label) - } - if p != "x" { - t.Fatalf("%s: want panic %v, got %v", label, "x", p) - } - } - if *calls != 1 { - t.Errorf("want calls==1, got %d", *calls) - } -} - -func TestOnceFuncPanic(t *testing.T) { - calls := 0 - f := syncx.OnceFunc(func() { - calls++ - panic("x") - }) - testOncePanic(t, &calls, f) -} - -func TestOnceValuePanic(t *testing.T) { - calls := 0 - f := syncx.OnceValue(func() int { - calls++ - panic("x") - }) - testOncePanic(t, &calls, func() { f() }) -} - -func TestOnceValuesPanic(t *testing.T) { - calls := 0 - f := syncx.OnceValues(func() (int, int) { - calls++ - panic("x") - }) - testOncePanic(t, &calls, func() { f() }) -} - -func TestOnceFuncPanicTraceback(t *testing.T) { - // Test that on the first invocation of a OnceFunc, the stack trace goes all - // the way to the origin of the panic. - f := syncx.OnceFunc(onceFuncPanic) - - defer func() { - if p := recover(); p != "x" { - t.Fatalf("want panic %v, got %v", "x", p) - } - stack := debug.Stack() - // Add second case for bazel binary names - want := []string{"syncx_test.onceFuncPanic", "syncx_test_test.onceFuncPanic"} - if !bytes.Contains(stack, []byte(want[0])) && !bytes.Contains(stack, []byte(want[1])) { - t.Fatalf("want stack containing %v, got:\n%s", want, string(stack)) - } - }() - f() -} - -func onceFuncPanic() { - panic("x") -} - -func BenchmarkOnceFunc(b *testing.B) { - b.Run("OnceFunc", func(b *testing.B) { - b.ReportAllocs() - f := syncx.OnceFunc(func() {}) - for i := 0; i < b.N; i++ { - f() - } - }) - // Versus open-coding with Once.Do - b.Run("Once", func(b *testing.B) { - b.ReportAllocs() - var once sync.Once - f := func() {} - for i := 0; i < b.N; i++ { - once.Do(f) - } - }) -} diff --git a/internal/xcontext/BUILD.bazel b/internal/xcontext/BUILD.bazel deleted file mode 100644 index 420cfb3c110e4..0000000000000 --- a/internal/xcontext/BUILD.bazel +++ /dev/null @@ -1,8 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "xcontext", - srcs = ["detach.go"], - importpath = "github.com/sourcegraph/sourcegraph/internal/xcontext", - visibility = ["//:__subpackages__"], -) diff --git a/internal/xcontext/detach.go b/internal/xcontext/detach.go deleted file mode 100644 index 70466103872f2..0000000000000 --- a/internal/xcontext/detach.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package xcontext is a package to offer the extra functionality we need -// from contexts that is not available from the standard context package. -// -// Copied from an internal golang package: -// https://github.com/golang/tools/blob/a01290f9844baeb2bacb81f21640f46b78680918/internal/xcontext/xcontext.go#L7 -package xcontext - -import ( - "context" - "time" -) - -// Detach returns a context that keeps all the values of its parent context -// but detaches from the cancellation and error handling. -func Detach(ctx context.Context) context.Context { return detachedContext{ctx} } - -type detachedContext struct{ parent context.Context } - -func (v detachedContext) Deadline() (time.Time, bool) { return time.Time{}, false } -func (v detachedContext) Done() <-chan struct{} { return nil } -func (v detachedContext) Err() error { return nil } -func (v detachedContext) Value(key interface{}) interface{} { return v.parent.Value(key) } diff --git a/lib/codeintel/tools/lsif-visualize/internal/visualization/visualizer.go b/lib/codeintel/tools/lsif-visualize/internal/visualization/visualizer.go index dafebaa4e182c..228dd08593037 100644 --- a/lib/codeintel/tools/lsif-visualize/internal/visualization/visualizer.go +++ b/lib/codeintel/tools/lsif-visualize/internal/visualization/visualizer.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "io" + "slices" "strings" "github.com/grafana/regexp" @@ -39,7 +40,7 @@ func (v *Visualizer) Visualize(indexFile io.Reader, fromID, subgraphDepth int, e return true } - if contains(lineContext.Element.Label, exclude) { + if slices.Contains(exclude, lineContext.Element.Label) { return true } @@ -67,14 +68,14 @@ func (v *Visualizer) Visualize(indexFile io.Reader, fromID, subgraphDepth int, e } vertex, _ := v.Context.Stasher.Vertex(edge.OutV) - if contains(vertex.Element.Label, exclude) { + if slices.Contains(exclude, vertex.Element.Label) { return true } return forEachInV(edge, func(inV int) bool { if _, ok := vertices[inV]; ok { vertex, _ = v.Context.Stasher.Vertex(inV) - if contains(vertex.Element.Label, exclude) { + if slices.Contains(exclude, vertex.Element.Label) { return true } fmt.Printf("\tv%d -> v%d [label=\"(%d) %s\"];\n", edge.OutV, inV, lineContext.Element.ID, lineContext.Element.Label) @@ -102,12 +103,3 @@ func getReachableVerticesAtDepth(from int, forwardEdges, backwardEdges map[int][ getReachableVerticesAtDepth(v, forwardEdges, backwardEdges, depth-1, vertices) } } - -func contains(s string, ss []string) bool { - for _, str := range ss { - if str == s { - return true - } - } - return false -} From 411e0b7cb5a4ac1a3be4f589a06aedd211436b5c Mon Sep 17 00:00:00 2001 From: sourcegraph-buildkite <71296199+sourcegraph-buildkite@users.noreply.github.com> Date: Tue, 28 Nov 2023 16:24:59 -0800 Subject: [PATCH 199/222] Auto-update Wolfi base images to latest (#58322) Auto-update Wolfi base image hashes at 2023-11-28 03:10:20 UTC Co-authored-by: Buildkite <buildkite@sourcegraph.com> Co-authored-by: Mohammad Alam <mohammad.alam@sourcegraph.com> --- dev/oci_deps.bzl | 54 ++++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/dev/oci_deps.bzl b/dev/oci_deps.bzl index 53c833460b30b..0895cd51b34fd 100644 --- a/dev/oci_deps.bzl +++ b/dev/oci_deps.bzl @@ -41,31 +41,31 @@ def oci_deps(): """ oci_pull( name = "wolfi_base", - digest = "sha256:ddac091c8c7aa8672c3ad097fc0df016f5cf86a2e5e5e915a5e6f0327b2cc48e", + digest = "sha256:04fe3ffb3ccee7a6b5a958e9b68696d1df65402597473edd86e32eb9c1482178", image = "index.docker.io/sourcegraph/wolfi-sourcegraph-base", ) oci_pull( name = "wolfi_cadvisor_base", - digest = "sha256:d20378947f0b7df72ee6166a70ccf3839c7547dfe918a02f920ee5d4cb031f62", + digest = "sha256:97c40d7556aa59709d5b6fbfc1055271dbdd6a05b7c3dce052edf8959696602e", image = "index.docker.io/sourcegraph/wolfi-cadvisor-base", ) oci_pull( name = "wolfi_symbols_base", - digest = "sha256:d699c86891e976b68a7e4611951a90400805db552e222750e04cf3f846e09a2a", + digest = "sha256:ff850ff119266997b8a1be28c212b68d5d3049f0576e39777b05f11c49df06e6", image = "index.docker.io/sourcegraph/wolfi-symbols-base", ) oci_pull( name = "wolfi_server_base", - digest = "sha256:c842da00bc3a7056c49902406f9996e4ef874066f80f06c502beb4dc716792cf", + digest = "sha256:a03f800177465bf309918aed5e9ceac9ee5ee351a626947eabf9958c2ac1e307", image = "index.docker.io/sourcegraph/wolfi-server-base", ) oci_pull( name = "wolfi_gitserver_base", - digest = "sha256:a16a784a3147b768042b5496a08da429b01a5c81442d2f744216e6ee63c0a6e5", + digest = "sha256:207fd4e9d228091c656da0cb3871137565efbb01d85086619ac095eab57716a2", image = "index.docker.io/sourcegraph/wolfi-gitserver-base", ) @@ -77,133 +77,133 @@ def oci_deps(): oci_pull( name = "wolfi_postgres_exporter_base", - digest = "sha256:109a393c6bc3e5db15413ddb913890fdd26f0531a225ff12aedf5021f57c5bd0", + digest = "sha256:d87b630de2a16291f6644c501a25376513eddb778416a201e40945b18d91a96a", image = "index.docker.io/sourcegraph/wolfi-postgres-exporter-base", ) oci_pull( name = "wolfi_jaeger_all_in_one_base", - digest = "sha256:0be08d4aa088c945f1cbdf6d69a618d3b803786e21d540d24d0ca6a2f7a9a044", + digest = "sha256:6ef2ca500d978d37dd20d0010a020935534b681f19ebde3843c4c75935cb0af0", image = "index.docker.io/sourcegraph/wolfi-jaeger-all-in-one-base", ) oci_pull( name = "wolfi_jaeger_agent_base", - digest = "sha256:7486c7418c6905f84cc95b2bb58ab3fa0779033d5da3045217ecf96c211bed7d", + digest = "sha256:87d0549c5f3365688644b5dbbb44abc82eb683ae31fb089dd17b413a0df3c3bb", image = "index.docker.io/sourcegraph/wolfi-jaeger-agent-base", ) oci_pull( name = "wolfi_redis_base", - digest = "sha256:8ecedf267d9d017f7defe0ce9de7596b6e0f8d3dc434e4e54069d07a7f1d6f2f", + digest = "sha256:dabedab967e27330d474ed4eb0f47d7954a07b8a86f7fcdb3b7830865c16c9b4", image = "index.docker.io/sourcegraph/wolfi-redis-base", ) oci_pull( name = "wolfi_redis_exporter_base", - digest = "sha256:b60ee6c59823598a4bf6ff9e97a887947cb7b1a925d67f30e0448adcd540743b", + digest = "sha256:0ed382bc737790879b643b67ab48bf183418aee290605189925340e8dbd9c8a1", image = "index.docker.io/sourcegraph/wolfi-redis-exporter-base", ) oci_pull( name = "wolfi_syntax_highlighter_base", - digest = "sha256:874544e9e2ac04ac3e7004437b55882b96e4f9b444f81d359afb89361c01c8a9", + digest = "sha256:9e0bbaeed967ef87e3e9499962d0fae997f0d4446f68df00c4a60063f4e8e0c9", image = "index.docker.io/sourcegraph/wolfi-syntax-highlighter-base", ) oci_pull( name = "wolfi_search_indexer_base", - digest = "sha256:26c41915424166a79b4e622d2b804ef28409df9d10123b05722467911e15550b", + digest = "sha256:036b552907944acd986f6140b7165facdd15a99a630fba852fb7907b762f2f23", image = "index.docker.io/sourcegraph/wolfi-search-indexer-base", ) oci_pull( name = "wolfi_repo_updater_base", - digest = "sha256:69890df98e79031d3cb8bdb1b91d25eec585d987d9c3a77b7b2034f5f233107b", + digest = "sha256:288f60d65ad281516c030bdc03beb6d437ce0a7bead37a10a039e606a72b3708", image = "index.docker.io/sourcegraph/wolfi-repo-updater-base", ) oci_pull( name = "wolfi_searcher_base", - digest = "sha256:b4a4b8a0afe40c514b62ab7e9f0e4b499f193e0ea7d22dc3b702b34ad2781799", + digest = "sha256:9529888fa1cb0abe5806ce3b466523ae53518d12178640953e9a7d039bbe26f9", image = "index.docker.io/sourcegraph/wolfi-searcher-base", ) oci_pull( name = "wolfi_executor_base", - digest = "sha256:82b3d39633915ddff0ba45a9c04eb627e10d0b2e698ede36386240faa91c5a29", + digest = "sha256:17adec2e52fd5dc9a89d86b5224684c66b76380b2db9db10f6426bf83be26923", image = "index.docker.io/sourcegraph/wolfi-executor-base", ) # ??? oci_pull( name = "wolfi_bundled_executor_base", - digest = "sha256:414df1099deb034bd46aa10432a2571fa342b129a3e59fde20c2bd63e84c4ca2", + digest = "sha256:2ec4c35a901a919b50722d82f1d0eb19cfc341cacec85acac3b059eb4b864e87", image = "index.docker.io/sourcegraph/wolfi-bundled-executor-base", ) oci_pull( name = "wolfi_executor_kubernetes_base", - digest = "sha256:ceb89c7b756b0134a8d512be72276e7d536921fb2619117059970c5d252389fd", + digest = "sha256:94921f555efcd91ff75e22fdb5f24de035a1688b2e05a5f0506f7c13f12e4ef0", image = "index.docker.io/sourcegraph/wolfi-executor-kubernetes-base", ) oci_pull( name = "wolfi_batcheshelper_base", - digest = "sha256:bc26a76ce432e2d2263024d7e285ef9a28801fba0e23f2c1f71d56d6a30bc2a6", + digest = "sha256:e6c96b4d0ac78d6982fa903b2c4936d65def1a5da144f3c2fd3d1513318e1550", image = "index.docker.io/sourcegraph/wolfi-batcheshelper-base", ) oci_pull( name = "wolfi_prometheus_base", - digest = "sha256:75ea7711988255d037e6d6239d915d1d2594452fc343b0b98bfec014c6b6fa9a", + digest = "sha256:e0abf1763ac6967451ff1239744b320ff08c09bcc50bb1cc67b43eb3419bd5c0", image = "index.docker.io/sourcegraph/wolfi-prometheus-base", ) oci_pull( name = "wolfi_prometheus_gcp_base", - digest = "sha256:be32b3432ab03a153461bee8c604b23413cf28c978556c30a483f8630f491b82", + digest = "sha256:b7318f12e19caea342a5d2e9c4fae5d46eb50e804fc48bded6b11c7e642ddae1", image = "index.docker.io/sourcegraph/wolfi-prometheus-gcp-base", ) oci_pull( name = "wolfi_postgresql-12_base", - digest = "sha256:94cc57d7d62443784dc113ca6fdf072f4b3e58ec3636779b59dc9f96e238d56a", + digest = "sha256:8857309f8e3234782119d67880b1418943eaa8ca22b287c9ef71a6b982363844", image = "index.docker.io/sourcegraph/wolfi-postgresql-12-base", ) oci_pull( name = "wolfi_postgresql-12-codeinsights_base", - digest = "sha256:4915ea39e5ab816f935f85cb7e2ace2824d4aade17525f8d9d2863f27f8f27e7", + digest = "sha256:6954a84e772195968e7ef053db811052af20a0f107783c6c494a53272629ab91", image = "index.docker.io/sourcegraph/wolfi-postgresql-12-codeinsights-base", ) oci_pull( name = "wolfi_node_exporter_base", - digest = "sha256:a0615019fe6961519c994cfe0de2b595571f9b79a3e60a58b9d452279bcee79a", + digest = "sha256:e9ea035b2446e75fb0d55c1372883b97dd8407c26fbad0485e5dc6e04cfcfbe9", image = "index.docker.io/sourcegraph/wolfi-node-exporter-base", ) oci_pull( name = "wolfi_opentelemetry_collector_base", - digest = "sha256:d23cae6f2fe2db4c229c3db5dcbee25dac95de8b6d8c857d409fbc7c797f660d", + digest = "sha256:58bdd2fe8bed1ba35f1e9e7522ea1c4aa35e654ced9e89f515236afa3e564bfc", image = "index.docker.io/sourcegraph/wolfi-opentelemetry-collector-base", ) oci_pull( name = "wolfi_searcher_base", - digest = "sha256:b4a4b8a0afe40c514b62ab7e9f0e4b499f193e0ea7d22dc3b702b34ad2781799", + digest = "sha256:9529888fa1cb0abe5806ce3b466523ae53518d12178640953e9a7d039bbe26f9", image = "index.docker.io/sourcegraph/wolfi-searcher-base", ) oci_pull( name = "wolfi_s3proxy_base", - digest = "sha256:afec08789b60252c51163227e416a40deec5f34bce7b5db43b3f0647f7691ba5", + digest = "sha256:ad0c8791d1a9a3a2a2f7e30933da0aa031c55c3b5bc3263802fcee4d9d955031", image = "index.docker.io/sourcegraph/wolfi-blobstore-base", ) oci_pull( name = "wolfi_qdrant_base", - digest = "sha256:1d9cb0e1eef19467bc7b42ef36f40571eb37abb5f6eeb04742717cc837050ae0", + digest = "sha256:dcc08b0228a5abd8a542efc7ee86ec58299591a737cafe19e92af6c1e1301c26", image = "index.docker.io/sourcegraph/wolfi-qdrant-base", ) From b6f1340dcd679a4679b74a3738b61e863fae4a86 Mon Sep 17 00:00:00 2001 From: Camden Cheek <camden@ccheek.com> Date: Tue, 28 Nov 2023 18:33:18 -0600 Subject: [PATCH 200/222] Cleanup: replace a few custom functions with `pointers.DerefZero` (#58619) It's nice for the codebase to all be speaking a similar language, so this just takes a few instances of custom deref functions and converts them to the generic pointers.DerefZero. --- cmd/frontend/graphqlbackend/git_commits.go | 21 ++++++------------- dev/buildchecker/BUILD.bazel | 1 + dev/buildchecker/failures.go | 12 +++-------- .../internal/background/processor/BUILD.bazel | 1 + .../processor/job_worker_handler.go | 17 +++++---------- internal/database/event_logs.go | 17 +++++---------- internal/search/streaming/progress.go | 8 ------- 7 files changed, 21 insertions(+), 56 deletions(-) diff --git a/cmd/frontend/graphqlbackend/git_commits.go b/cmd/frontend/graphqlbackend/git_commits.go index 45db449ce7fa4..d0bc88428b168 100644 --- a/cmd/frontend/graphqlbackend/git_commits.go +++ b/cmd/frontend/graphqlbackend/git_commits.go @@ -39,19 +39,10 @@ type gitCommitConnectionResolver struct { err error } -func toValue[T any](v *T) any { - var result T - if v != nil { - return *v - } - - return result -} - // afterCursorAsInt will parse the afterCursor field and return it as an int. If no value is set, it // will return 0. It returns a non-nil error if there are any errors in parsing the input string. func (r *gitCommitConnectionResolver) afterCursorAsInt() (int, error) { - v := toValue(r.afterCursor).(string) + v := pointers.DerefZero(r.afterCursor) if v == "" { return 0, nil } @@ -88,12 +79,12 @@ func (r *gitCommitConnectionResolver) compute(ctx context.Context) ([]*gitdomain return r.gitserverClient.Commits(ctx, r.repo.RepoName(), gitserver.CommitsOptions{ Range: r.revisionRange, N: uint(n), - MessageQuery: toValue(r.query).(string), - Author: toValue(r.author).(string), - After: toValue(r.after).(string), + MessageQuery: pointers.DerefZero(r.query), + Author: pointers.DerefZero(r.author), + After: pointers.DerefZero(r.after), Skip: uint(afterCursor), - Before: toValue(r.before).(string), - Path: toValue(r.path).(string), + Before: pointers.DerefZero(r.before), + Path: pointers.DerefZero(r.path), Follow: r.follow, }) } diff --git a/dev/buildchecker/BUILD.bazel b/dev/buildchecker/BUILD.bazel index 8b6466a430c87..b74b71c30deaf 100644 --- a/dev/buildchecker/BUILD.bazel +++ b/dev/buildchecker/BUILD.bazel @@ -17,6 +17,7 @@ go_library( deps = [ "//dev/team", "//lib/errors", + "//lib/pointers", "@com_github_buildkite_go_buildkite_v3//buildkite", "@com_github_google_go_github_v55//github", "@com_github_honeycombio_libhoney_go//:libhoney-go", diff --git a/dev/buildchecker/failures.go b/dev/buildchecker/failures.go index 9fc07d26914c9..67afd08a645c2 100644 --- a/dev/buildchecker/failures.go +++ b/dev/buildchecker/failures.go @@ -5,6 +5,7 @@ import ( "time" "github.com/buildkite/go-buildkite/v3/buildkite" + "github.com/sourcegraph/sourcegraph/lib/pointers" ) // findConsecutiveFailures scans the given set of builds for a series of consecutive @@ -48,11 +49,11 @@ func findConsecutiveFailures( consecutiveFailures += 1 commit := CommitInfo{ Author: author, - Commit: maybeString(build.Commit), + Commit: pointers.DerefZero(build.Commit), } if build.Number != nil { commit.BuildNumber = *build.Number - commit.BuildURL = maybeString(build.WebURL) + commit.BuildURL = pointers.DerefZero(build.WebURL) } if build.CreatedAt != nil { commit.BuildCreated = build.CreatedAt.Time @@ -65,10 +66,3 @@ func findConsecutiveFailures( return } - -func maybeString(s *string) string { - if s != nil { - return *s - } - return "" -} diff --git a/internal/codeintel/uploads/internal/background/processor/BUILD.bazel b/internal/codeintel/uploads/internal/background/processor/BUILD.bazel index 150a5f1e0f1e0..bd5b4ac7a02f7 100644 --- a/internal/codeintel/uploads/internal/background/processor/BUILD.bazel +++ b/internal/codeintel/uploads/internal/background/processor/BUILD.bazel @@ -33,6 +33,7 @@ go_library( "//lib/codeintel/pathexistence", "//lib/codeintel/precise", "//lib/errors", + "//lib/pointers", "@com_github_jackc_pgconn//:pgconn", "@com_github_keegancsmith_sqlf//:sqlf", "@com_github_prometheus_client_golang//prometheus", diff --git a/internal/codeintel/uploads/internal/background/processor/job_worker_handler.go b/internal/codeintel/uploads/internal/background/processor/job_worker_handler.go index 75ea9cf487157..d396a9d972cb8 100644 --- a/internal/codeintel/uploads/internal/background/processor/job_worker_handler.go +++ b/internal/codeintel/uploads/internal/background/processor/job_worker_handler.go @@ -30,6 +30,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/workerutil/dbworker" dbworkerstore "github.com/sourcegraph/sourcegraph/internal/workerutil/dbworker/store" "github.com/sourcegraph/sourcegraph/lib/errors" + "github.com/sourcegraph/sourcegraph/lib/pointers" ) func NewUploadProcessorWorker( @@ -143,29 +144,21 @@ func (h *handler) PreDequeue(_ context.Context, _ log.Logger) (bool, any, error) } func (h *handler) PreHandle(_ context.Context, _ log.Logger, upload uploadsshared.Upload) { - uncompressedSize := h.getUploadSize(upload.UncompressedSize) + uncompressedSize := pointers.DerefZero(upload.UncompressedSize) h.uploadSizeGauge.Add(float64(uncompressedSize)) - gzipSize := h.getUploadSize(upload.UploadSize) + gzipSize := pointers.DerefZero(upload.UploadSize) atomic.AddInt64(&h.budgetRemaining, -gzipSize) } func (h *handler) PostHandle(_ context.Context, _ log.Logger, upload uploadsshared.Upload) { - uncompressedSize := h.getUploadSize(upload.UncompressedSize) + uncompressedSize := pointers.DerefZero(upload.UncompressedSize) h.uploadSizeGauge.Sub(float64(uncompressedSize)) - gzipSize := h.getUploadSize(upload.UploadSize) + gzipSize := pointers.DerefZero(upload.UploadSize) atomic.AddInt64(&h.budgetRemaining, +gzipSize) } -func (h *handler) getUploadSize(field *int64) int64 { - if field != nil { - return *field - } - - return 0 -} - func createLogFields(upload uploadsshared.Upload) []attribute.KeyValue { attrs := []attribute.KeyValue{ attribute.Int("uploadID", upload.ID), diff --git a/internal/database/event_logs.go b/internal/database/event_logs.go index f0b413d5fc4e6..a6cf14f29bab5 100644 --- a/internal/database/event_logs.go +++ b/internal/database/event_logs.go @@ -27,6 +27,7 @@ import ( "github.com/sourcegraph/sourcegraph/internal/types" "github.com/sourcegraph/sourcegraph/internal/version" "github.com/sourcegraph/sourcegraph/lib/errors" + "github.com/sourcegraph/sourcegraph/lib/pointers" ) type EventLogStore interface { @@ -1193,10 +1194,10 @@ func (l *eventLogStore) CodeIntelligenceRepositoryCountsByLanguage(ctx context.C } byLanguage[language] = CodeIntelligenceRepositoryCountsForLanguage{ - NumRepositoriesWithUploadRecords: safeDerefIntPtr(numRepositoriesWithUploadRecords), - NumRepositoriesWithFreshUploadRecords: safeDerefIntPtr(numRepositoriesWithFreshUploadRecords), - NumRepositoriesWithIndexRecords: safeDerefIntPtr(numRepositoriesWithIndexRecords), - NumRepositoriesWithFreshIndexRecords: safeDerefIntPtr(numRepositoriesWithFreshIndexRecords), + NumRepositoriesWithUploadRecords: pointers.DerefZero(numRepositoriesWithUploadRecords), + NumRepositoriesWithFreshUploadRecords: pointers.DerefZero(numRepositoriesWithFreshUploadRecords), + NumRepositoriesWithIndexRecords: pointers.DerefZero(numRepositoriesWithIndexRecords), + NumRepositoriesWithFreshIndexRecords: pointers.DerefZero(numRepositoriesWithFreshIndexRecords), } } if err := rows.Err(); err != nil { @@ -1206,14 +1207,6 @@ func (l *eventLogStore) CodeIntelligenceRepositoryCountsByLanguage(ctx context.C return byLanguage, nil } -func safeDerefIntPtr(v *int) int { - if v != nil { - return *v - } - - return 0 -} - var codeIntelligenceRepositoryCountsByLanguageQuery = ` SELECT -- Clean up indexer by removing sourcegraph/ docker image prefix for auto-index diff --git a/internal/search/streaming/progress.go b/internal/search/streaming/progress.go index cafbb075ffa2e..f8e49dfe4aca5 100644 --- a/internal/search/streaming/progress.go +++ b/internal/search/streaming/progress.go @@ -108,11 +108,3 @@ func (c *Stats) String() string { func (c *Stats) Equal(other *Stats) bool { return reflect.DeepEqual(c, other) } - -// Deref returns the zero-valued stats if its receiver is nil -func (c *Stats) Deref() Stats { - if c != nil { - return *c - } - return Stats{} -} From 7a2637369e1191ee513269e76579c49f97dfa2bc Mon Sep 17 00:00:00 2001 From: Chris Warwick <christopher.warwick@sourcegraph.com> Date: Tue, 28 Nov 2023 19:45:30 -0500 Subject: [PATCH 201/222] Cody: Changelog entry for additional Azure OpenAI authentication methods. (#58636) add azure openai auth change log entry for 5.2.4 release --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 55eed8ee61691..8bc35e49ee3af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,6 +59,8 @@ All notable changes to Sourcegraph are documented in this file. ### Added +- Added the ability to use Workload Identity, Managed Identity and Environmental credentials when using the Azure OpenAI completions and embeddings providers [#58289](https://github.com/sourcegraph/sourcegraph/pull/58289) + ### Fixed - Fixed two issues in Zoekt that could cause out of memory errors during search indexing. [sourcegraph/zoekt#686](https://github.com/sourcegraph/zoekt/pull/686), [sourcegraph/zoekt#689](https://github.com/sourcegraph/zoekt/pull/689) From 172d70097e377210c6db8b6b68e940350dcc69e0 Mon Sep 17 00:00:00 2001 From: Michael Lin <mlzc@hey.com> Date: Tue, 28 Nov 2023 21:33:58 -0800 Subject: [PATCH 202/222] ci: bump go to 1.21 in gitub actions (#58642) --- .github/workflows/licenses-check.yml | 2 +- .github/workflows/pr-auditor.yml | 2 +- .github/workflows/sg-binary-release.yml | 2 +- .github/workflows/sg-setup.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/licenses-check.yml b/.github/workflows/licenses-check.yml index 193a27a723851..a1c16c86f18e9 100644 --- a/.github/workflows/licenses-check.yml +++ b/.github/workflows/licenses-check.yml @@ -33,7 +33,7 @@ jobs: with: ruby-version: "3.2.2" # Not needed with a .ruby-version file - uses: actions/setup-ruby@v1 - uses: actions/setup-go@v2 - with: { go-version: "1.20" } + with: { go-version: "1.21" } - name: Install license_finder diff --git a/.github/workflows/pr-auditor.yml b/.github/workflows/pr-auditor.yml index e83c8ee658d42..defce42ce6ca6 100644 --- a/.github/workflows/pr-auditor.yml +++ b/.github/workflows/pr-auditor.yml @@ -13,7 +13,7 @@ jobs: with: repository: 'sourcegraph/pr-auditor' - uses: actions/setup-go@v4 - with: { go-version: '1.20' } + with: { go-version: '1.21' } - run: './check-pr.sh' env: diff --git a/.github/workflows/sg-binary-release.yml b/.github/workflows/sg-binary-release.yml index b443008226d9a..6fafc23678523 100644 --- a/.github/workflows/sg-binary-release.yml +++ b/.github/workflows/sg-binary-release.yml @@ -100,7 +100,7 @@ jobs: - name: Install Go uses: actions/setup-go@v2 with: - go-version: 1.20.8 + go-version: 1.21.4 - name: Build and upload macOS if: startsWith(matrix.os, 'macos-') == true diff --git a/.github/workflows/sg-setup.yml b/.github/workflows/sg-setup.yml index 464b19864e8f4..78a653c570274 100644 --- a/.github/workflows/sg-setup.yml +++ b/.github/workflows/sg-setup.yml @@ -24,7 +24,7 @@ jobs: - name: Install Go uses: actions/setup-go@v2 with: - go-version: 1.20.10 + go-version: 1.21.4 - name: Install asdf plugins uses: asdf-vm/actions/install@v1 From 2f3cef020ec78fd2fbe015fcbbb14f839297a7a8 Mon Sep 17 00:00:00 2001 From: Stefan Hengl <stefan@sourcegraph.com> Date: Wed, 29 Nov 2023 10:14:36 +0100 Subject: [PATCH 203/222] docs: update docs for repo predicates (#58492) The language reference listed deprecated tags, such as has and has.key, but missed the has.meta predicate which replaces both. Test plan: I verified that both links for the examples work --- doc/code_search/reference/language.md | 43 ++++++++------------------- internal/search/query/predicate.go | 6 ++-- 2 files changed, 15 insertions(+), 34 deletions(-) diff --git a/doc/code_search/reference/language.md b/doc/code_search/reference/language.md index 66a035b6d1cf1..8ff3ec8a22dd6 100644 --- a/doc/code_search/reference/language.md +++ b/doc/code_search/reference/language.md @@ -159,7 +159,7 @@ A pattern to search. By default, the pattern is searched literally. The kind of **Example:** [`foo.*bar.*baz` ā†—](https://sourcegraph.com/search?q=foo.*bar.*baz&patternType=regexp) [`"foo bar"` ā†—](https://sourcegraph.com/search?q=%22foo+bar%22&patternType=regexp) -<span class="toggle-container"><img class="toggle" src="../img/brackets.png"></span> Perform a structural search. See our [dedicated documentation](queries.md#structural-search) to learn more about structural search. +<span class="toggle-container"><img class="toggle" src="../img/brackets.png"></span> Perform a structural search. See our [dedicated documentation](queries.md#structural-search) to learn more about structural search. **Example:** [`fmt.Sprintf(":[format]", :[args])` ā†—](https://sourcegraph.com/search?q=repo:%5Egithub%5C.com/sourcegraph/sourcegraph%24+fmt.Sprintf%28%22:%5Bformat%5D%22%2C+:%5Bargs%5D%29&patternType=structural) @@ -545,8 +545,7 @@ Set whether the pattern should run a literal search, regular expression search, <script> ComplexDiagram( Choice(0, - Terminal("has(...)", {href: "#repo-has"}), - Terminal("has.key(...)", {href: "#repo-has-key"}), + Terminal("has.meta(...)", {href: "#repo-has-meta"}), Terminal("has.file(...)", {href: "#repo-has-file-and-content"}), Terminal("has.content(...)", {href: "#repo-has-content"}), Terminal("has.path(...)", {href: "#repo-has-path"}), @@ -555,7 +554,7 @@ ComplexDiagram( Terminal("has.description(...)", {href: "#repo-has-description"}))).addTo(); </script> -### Repo has +### Repo has meta <aside class="experimental"> <span class="badge badge-experimental">Experimental</span> Tagging repositories with key-value pairs is an experimental feature in Sourcegraph 4.0. It's a <b>preview</b> of functionality we're currently exploring to make searching large numbers of repositories easier. To enable this feature, enable the `repository-metadata` feature flag for your org. If you have any feedback, please let us know! @@ -563,36 +562,18 @@ ComplexDiagram( <script> ComplexDiagram( - Terminal("has"), + Terminal("has.meta"), Terminal("("), - Sequence( - Terminal("string", {href: "#string"}), - Terminal(":"), - Terminal("string", {href: "#string"})), - Terminal(")")).addTo(); -</script> - -Search only inside repositories that are associated with the provided key-value pair. - -**Example:** `repo:has(owning-team:security)` - -### Repo has key - -<aside class="experimental"> -<span class="badge badge-experimental">Experimental</span> Tagging repositories with key-value pairs is an experimental feature in Sourcegraph 4.0. It's a <b>preview</b> of functionality we're currently exploring to make searching large numbers of repositories easier. To enable this feature, enable the `repository-metadata` feature flag for your org. If you have any feedback, please let us know! -</aside> - -<script> -ComplexDiagram( - Terminal("has.key"), - Terminal("("), - Terminal("string", {href: "#string"}), + Choice(0, + Sequence(Terminal("string", {href: "#string"}), Terminal(":"), Terminal("string", {href: "#string"})), + Sequence(Terminal("string", {href: "#string"})), + ), Terminal(")")).addTo(); </script> -Search only inside repositories that are associated with at least one key-value with the provided key. +Search only inside repositories that are associated with the provided key-value pair, key, or tag. -**Example:** `repo:has.key(owning-team)` +**Example:** [`repo:has.meta(team:sourcegraph)` ā†—](https://sourcegraph.com/search?q=context:global+repo:has.meta%28team:sourcegraph%29&patternType=regexp&sm=1&groupBy=repo) or [`repo:has.meta(language)` ā†—](https://sourcegraph.com/search?q=context%3Aglobal+repo%3Ahas.meta%28language%29&patternType=regexp&sm=1&groupBy=repo) ### Repo has file and content @@ -732,8 +713,8 @@ ComplexDiagram( Search only inside files that have an owner associated matching given string. _Note:_ When no parameter is supplied, the predicate only includes files with _any_ owner assigned to them: -* `file:has.owner()` will include files with any owner assigned. -* `-file:has.owner()` will only include files without an owner. +* `file:has.owner()` will include files with any owner assigned. +* `-file:has.owner()` will only include files without an owner. ### File has contributor diff --git a/internal/search/query/predicate.go b/internal/search/query/predicate.go index e5f5dc0423aa2..939498ae72216 100644 --- a/internal/search/query/predicate.go +++ b/internal/search/query/predicate.go @@ -35,13 +35,13 @@ var DefaultPredicateRegistry = PredicateRegistry{ "contains.commit.after": func() Predicate { return &RepoContainsCommitAfterPredicate{} }, "has.commit.after": func() Predicate { return &RepoContainsCommitAfterPredicate{} }, "has.description": func() Predicate { return &RepoHasDescriptionPredicate{} }, - "has.tag": func() Predicate { return &RepoHasTagPredicate{} }, - "has": func() Predicate { return &RepoHasKVPPredicate{} }, - "has.key": func() Predicate { return &RepoHasKeyPredicate{} }, "has.meta": func() Predicate { return &RepoHasMetaPredicate{} }, "has.topic": func() Predicate { return &RepoHasTopicPredicate{} }, // Deprecated predicates + "has.tag": func() Predicate { return &RepoHasTagPredicate{} }, + "has": func() Predicate { return &RepoHasKVPPredicate{} }, + "has.key": func() Predicate { return &RepoHasKeyPredicate{} }, "contains": func() Predicate { return &RepoContainsPredicate{} }, }, FieldFile: { From 900e9c3b88d9085efd12e5295caecbdc35c8df31 Mon Sep 17 00:00:00 2001 From: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> Date: Wed, 29 Nov 2023 09:33:09 +0000 Subject: [PATCH 204/222] ci+embeddings: remove embeddings test (#58614) * remove embeddings test * remove embeddings deps from WORKSPACE * restore mistakenly removed tests * restore bazel test --- WORKSPACE | 4 - cmd/embeddings/shared/BUILD.bazel | 29 +----- cmd/embeddings/shared/assets.bzl | 14 --- cmd/embeddings/shared/context_qa_test.go | 113 ----------------------- 4 files changed, 1 insertion(+), 159 deletions(-) delete mode 100644 cmd/embeddings/shared/assets.bzl delete mode 100644 cmd/embeddings/shared/context_qa_test.go diff --git a/WORKSPACE b/WORKSPACE index d6cb8abfa6b28..4605a4cfe3ea8 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -368,10 +368,6 @@ load("//dev:oci_deps.bzl", "oci_deps") oci_deps() -load("//cmd/embeddings/shared:assets.bzl", "embbedings_assets_deps") - -embbedings_assets_deps() - load("@container_structure_test//:repositories.bzl", "container_structure_test_register_toolchain") container_structure_test_register_toolchain(name = "cst") diff --git a/cmd/embeddings/shared/BUILD.bazel b/cmd/embeddings/shared/BUILD.bazel index 0626cb338f274..e665d8b0570fa 100644 --- a/cmd/embeddings/shared/BUILD.bazel +++ b/cmd/embeddings/shared/BUILD.bazel @@ -48,48 +48,21 @@ go_library( ], ) -# The filename specified by the out field needs to include the sha for the test to find it. -# See //cmd/embeddings/shared:assets.bzl for the macro fetching those external dependencies. -copy_file( - name = "ln_test_data_embeddings_index", - src = "@github_com_sourcegraph_sourcegraph_embeddingindex//file:downloaded", - out = "testdata/github_com_sourcegraph_sourcegraph_cf360e12ff91b2fc199e75aef4ff6744.embeddingindex", - allow_symlink = True, -) - -# See //cmd/embeddings/shared:assets.bzl for the macro fetching those external dependencies. -copy_file( - name = "ln_test_data_query_embeddings_gob", - src = "@query_embeddings_gob//file:downloaded", - out = "testdata/query_embeddings.gob", - allow_symlink = True, -) - -# gazelle:exclude testdata go_test( name = "shared_test", - size = "medium", - timeout = "moderate", srcs = [ - "context_qa_test.go", "main_test.go", "repo_embedding_index_cache_test.go", ], + data = glob(["testdata/**"]), embed = [":shared"], - embedsrcs = [ - ":ln_test_data_embeddings_index", - ":ln_test_data_query_embeddings_gob", - ], # keep deps = [ - "//cmd/embeddings/qa", "//internal/api", "//internal/database/dbmocks", "//internal/embeddings", "//internal/embeddings/background/repo", "//internal/endpoint", "//internal/types", - "//internal/uploadstore/mocks", - "//lib/errors", "@com_github_sourcegraph_log//logtest", "@com_github_stretchr_testify//require", ], diff --git a/cmd/embeddings/shared/assets.bzl b/cmd/embeddings/shared/assets.bzl deleted file mode 100644 index b6552f588c073..0000000000000 --- a/cmd/embeddings/shared/assets.bzl +++ /dev/null @@ -1,14 +0,0 @@ -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file") - -def embbedings_assets_deps(): - http_file( - name = "github_com_sourcegraph_sourcegraph_embeddingindex", - url = "https://storage.googleapis.com/buildkite_public_assets/github_com_sourcegraph_sourcegraph_cf360e12ff91b2fc199e75aef4ff6744.embeddingindex", - sha256 = "830a3b4b05f889e442d1da0e97950136db907ffd395f5fef404d9b4a9aac84a7", - ) - - http_file( - name = "query_embeddings_gob", - url = "https://storage.googleapis.com/buildkite_public_assets/query_embeddings.gob", - sha256 = "48e816d9ad033d2661a5c2999232ceccb430427ed4ce6330824f7c123db05a03", - ) diff --git a/cmd/embeddings/shared/context_qa_test.go b/cmd/embeddings/shared/context_qa_test.go deleted file mode 100644 index 75325646e1d2a..0000000000000 --- a/cmd/embeddings/shared/context_qa_test.go +++ /dev/null @@ -1,113 +0,0 @@ -// This test should only be run with bazel test. It relies on large index files -// that are not committed to the repository. - -package shared - -import ( - "bytes" - "context" - "embed" - "encoding/gob" - "io" - "os" - "path/filepath" - "testing" - - "github.com/sourcegraph/sourcegraph/cmd/embeddings/qa" - "github.com/sourcegraph/sourcegraph/internal/api" - "github.com/sourcegraph/sourcegraph/internal/embeddings" - uploadstoremocks "github.com/sourcegraph/sourcegraph/internal/uploadstore/mocks" - "github.com/sourcegraph/sourcegraph/lib/errors" -) - -// This embed is handled by Bazel, and using the traditional go test command will fail. -// See //cmd/embeddings/shared:assets.bzl -// -//go:embed testdata/* -var fs embed.FS - -func TestRecall(t *testing.T) { - if os.Getenv("BAZEL_TEST") != "1" { - t.Skip("Cannot run this test outside of Bazel") - } - - ctx := context.Background() - - // Set up mock functions - queryEmbeddings, err := loadQueryEmbeddings(t) - if err != nil { - t.Fatal(err) - } - - lookupQueryEmbedding := func(ctx context.Context, query string) ([]float32, string, error) { - return queryEmbeddings[query], "openai/text-embedding-ada-002", nil - } - - mockStore := uploadstoremocks.NewMockStore() - mockStore.GetFunc.SetDefaultHook(func(ctx context.Context, key string) (io.ReadCloser, error) { - b, err := fs.ReadFile(filepath.Join("testdata", key)) - if err != nil { - return nil, err - } - - return io.NopCloser(bytes.NewReader(b)), nil - }) - getRepoEmbeddingIndex := func(ctx context.Context, repoID api.RepoID, repoName api.RepoName) (*embeddings.RepoEmbeddingIndex, error) { - return embeddings.DownloadRepoEmbeddingIndex(context.Background(), mockStore, repoID, repoName) - } - - searcher := func(args embeddings.EmbeddingsSearchParameters) (*embeddings.EmbeddingCombinedSearchResults, error) { - return searchRepoEmbeddingIndexes( - ctx, - args, - getRepoEmbeddingIndex, - lookupQueryEmbedding, - ) - } - - recall, err := qa.Run(embeddingsSearcherFunc(searcher)) - if err != nil { - t.Fatal(err) - } - - epsilon := 0.0001 - wantMinRecall := 0.4285 - - if d := wantMinRecall - recall; d > epsilon { - t.Fatalf("Recall decreased: want %f, got %f", wantMinRecall, recall) - } -} - -// loadQueryEmbeddings loads the query embeddings from the -// testdata/query_embeddings.gob file into a map. -func loadQueryEmbeddings(t *testing.T) (map[string][]float32, error) { - t.Helper() - - m := make(map[string][]float32) - - f, err := fs.Open("testdata/query_embeddings.gob") - if err != nil { - return nil, err - } - - dec := gob.NewDecoder(f) - for { - a := struct { - Query string - Embedding []float32 - }{} - err := dec.Decode(&a) - if errors.Is(err, io.EOF) { - break - } - m[a.Query] = a.Embedding - } - - return m, nil -} - -type embeddingsSearcherFunc func(args embeddings.EmbeddingsSearchParameters) (*embeddings.EmbeddingCombinedSearchResults, error) - -func (f embeddingsSearcherFunc) Search(args embeddings.EmbeddingsSearchParameters) (*embeddings.EmbeddingCombinedSearchResults, error) { - return f(args) -} From 2043d6a6ce999ac56824069ccf56d2dab48be3fd Mon Sep 17 00:00:00 2001 From: William Bezuidenhout <william.bezuidenhout@sourcegraph.com> Date: Wed, 29 Nov 2023 13:57:47 +0000 Subject: [PATCH 205/222] aspect+ci: omit bazel tests when running as part of the aspect workflow pipeline (#58590) * aspect+ci: no bazel test on aspect agents * Only run Bazel Test when not in Aspect Workflows * restore legacy docker queue and prechecks only when not in aspect * small refactor * fix build conditional * trigger new build * if aspect do not trigger async * generate wait step as part of backcompat * different approach * async false on aspect * remove rogue message change * set different message for build options when on aspect * do not run sonar cloud scan on aspect pipeline --- dev/ci/internal/ci/bazel_operations.go | 52 ++++++++++++-------------- dev/ci/internal/ci/operations.go | 5 ++- dev/ci/internal/ci/pipeline.go | 42 +++++++++++++++------ dev/ci/internal/ci/wolfi_operations.go | 1 - 4 files changed, 58 insertions(+), 42 deletions(-) diff --git a/dev/ci/internal/ci/bazel_operations.go b/dev/ci/internal/ci/bazel_operations.go index f5daa160e0278..73ca65199e86b 100644 --- a/dev/ci/internal/ci/bazel_operations.go +++ b/dev/ci/internal/ci/bazel_operations.go @@ -15,16 +15,18 @@ import ( "github.com/sourcegraph/sourcegraph/lib/errors" ) -func BazelOperations(buildOpts bk.BuildOptions, isMain bool) []operations.Operation { +func BazelOperations(buildOpts bk.BuildOptions, opts CoreTestOperationsOptions) []operations.Operation { ops := []operations.Operation{} - ops = append(ops, bazelPrechecks()) - if isMain { - ops = append(ops, bazelTest("//...", "//client/web:test", "//testing:codeintel_integration_test", "//testing:grpc_backend_integration_test")) - } else { - ops = append(ops, bazelTest("//...", "//client/web:test")) + if !opts.AspectWorkflows { + ops = append(ops, bazelPrechecks()) + if opts.IsMainBranch { + ops = append(ops, bazelTest("//...", "//client/web:test", "//testing:codeintel_integration_test", "//testing:grpc_backend_integration_test")) + } else { + ops = append(ops, bazelTest("//...", "//client/web:test")) + } } - ops = append(ops, triggerBackCompatTest(buildOpts), bazelGoModTidy()) + ops = append(ops, triggerBackCompatTest(buildOpts, opts.AspectWorkflows), bazelGoModTidy()) return ops } @@ -178,14 +180,22 @@ func bazelTest(targets ...string) func(*bk.Pipeline) { } } -func triggerBackCompatTest(buildOpts bk.BuildOptions) func(*bk.Pipeline) { +func triggerBackCompatTest(buildOpts bk.BuildOptions, isAspectWorkflows bool) func(*bk.Pipeline) { + if isAspectWorkflows { + buildOpts.Message += " (Aspect)" + } return func(pipeline *bk.Pipeline) { - pipeline.AddTrigger(":bazel::snail: Async BackCompat Tests", "sourcegraph-backcompat", + steps := []bk.StepOpt{ + bk.Async(true), bk.Key("trigger-backcompat"), - bk.DependsOn("bazel-prechecks"), bk.AllowDependencyFailure(), bk.Build(buildOpts), - ) + } + + if !isAspectWorkflows { + steps = append(steps, bk.DependsOn("bazel-prechecks")) + } + pipeline.AddTrigger(":bazel::snail: Async BackCompat Tests", "sourcegraph-backcompat", steps...) } } @@ -337,12 +347,11 @@ func bazelBuildCandidateDockerImages(apps []string, version string, tag string, } } -func bazelBuildCandidateDockerImage(app string, version string, tag string, rt runtype.RunType) operations.Operation { +func legacyBuildCandidateDockerImage(app string, version string, tag string, rt runtype.RunType) operations.Operation { return func(pipeline *bk.Pipeline) { cmds := []bk.StepOpt{} cmds = append(cmds, bk.Key(candidateImageStepKey(app)), - bk.Env("DOCKER_BAZEL", "true"), bk.Env("VERSION", version), bk.Agent("queue", "bazel"), ) @@ -377,16 +386,8 @@ func bazelBuildCandidateDockerImage(app string, version string, tag string, rt r if _, err := os.Stat(filepath.Join("docker-images", app)); err == nil { // Building Docker image located under $REPO_ROOT/docker-images/ buildScriptPath := filepath.Join("docker-images", app, "build.sh") - _, err := os.Stat(filepath.Join("docker-images", app, "build-bazel.sh")) - if err == nil { - // If the file exists. - buildScriptPath = filepath.Join("docker-images", app, "build-bazel.sh") - } - cmds = append(cmds, - bk.Cmd("ls -lah "+buildScriptPath), - bk.Cmd(buildScriptPath), - ) + cmds = append(cmds, bk.Cmd(buildScriptPath)) } else if _, err := os.Stat(filepath.Join("client", app)); err == nil { // Building Docker image located under $REPO_ROOT/client/ cmds = append(cmds, bk.AnnotatedCmd("client/"+app+"/build.sh", buildAnnotationOptions)) @@ -406,11 +407,6 @@ func bazelBuildCandidateDockerImage(app string, version string, tag string, rt r return "cmd/" + folder }() buildScriptPath := filepath.Join(cmdDir, "build.sh") - _, err := os.Stat(filepath.Join(cmdDir, "build-bazel.sh")) - if err == nil { - // If the file exists. - buildScriptPath = filepath.Join(cmdDir, "build-bazel.sh") - } cmds = append(cmds, bk.AnnotatedCmd(buildScriptPath, buildAnnotationOptions)) } @@ -426,7 +422,7 @@ func bazelBuildCandidateDockerImage(app string, version string, tag string, rt r // Retry in case of flakes when pushing // bk.AutomaticRetryStatus(3, 222), ) - pipeline.AddStep(fmt.Sprintf(":bazel::docker: :construction: Build %s", app), cmds...) + pipeline.AddStep(fmt.Sprintf(":old-man::docker: :construction: Build %s", app), cmds...) } } diff --git a/dev/ci/internal/ci/operations.go b/dev/ci/internal/ci/operations.go index 8cf85dc048f22..f928fc46976b7 100644 --- a/dev/ci/internal/ci/operations.go +++ b/dev/ci/internal/ci/operations.go @@ -28,6 +28,9 @@ type CoreTestOperationsOptions struct { CreateBundleSizeDiff bool // for addWebAppEnterpriseBuild IsMainBranch bool + + // AspectWorkflows is set to true when we generate steps as part of the Aspect Workflows pipeline + AspectWorkflows bool } // CoreTestOperations is a core set of tests that should be run in most CI cases. More @@ -45,7 +48,7 @@ func CoreTestOperations(buildOpts bk.BuildOptions, diff changed.Diff, opts CoreT ops := operations.NewSet() // Simple, fast-ish linter checks - ops.Append(BazelOperations(buildOpts, opts.IsMainBranch)...) + ops.Append(BazelOperations(buildOpts, opts)...) linterOps := operations.NewNamedSet("Linters and static analysis") if targets := changed.GetLinterTargets(diff); len(targets) > 0 { linterOps.Append(addSgLints(targets)) diff --git a/dev/ci/internal/ci/pipeline.go b/dev/ci/internal/ci/pipeline.go index 4aee6d9fc1739..cab1d02b5ea86 100644 --- a/dev/ci/internal/ci/pipeline.go +++ b/dev/ci/internal/ci/pipeline.go @@ -88,6 +88,10 @@ func GeneratePipeline(c Config) (*bk.Pipeline, error) { Env: env, } + // We generate the pipeline slightly differently when running as part of the Aspect Workflows pipeline. + // Primarily, we don't run any `bazel test` since Aspect has got that covered + isAspectWorkflowBuild := os.Getenv("ASPECT_WORKFLOWS_BUILD") == "1" + // Test upgrades from mininum upgradeable Sourcegraph version - updated by release tool const minimumUpgradeableVersion = "5.2.0" @@ -137,11 +141,14 @@ func GeneratePipeline(c Config) (*bk.Pipeline, error) { MinimumUpgradeableVersion: minimumUpgradeableVersion, ForceReadyForReview: c.MessageFlags.ForceReadyForReview, CreateBundleSizeDiff: true, + AspectWorkflows: isAspectWorkflowBuild, })) - securityOps := operations.NewNamedSet("Security Scanning") - securityOps.Append(sonarcloudScan()) - ops.Merge(securityOps) + if !isAspectWorkflowBuild { + securityOps := operations.NewNamedSet("Security Scanning") + securityOps.Append(sonarcloudScan()) + ops.Merge(securityOps) + } // Wolfi package and base images packageOps, baseImageOps := addWolfiOps(c) @@ -165,6 +172,10 @@ func GeneratePipeline(c Config) (*bk.Pipeline, error) { // If this is a browser extension release branch, run the browser-extension tests and // builds. ops = BazelOpsSet(buildOptions, + CoreTestOperationsOptions{ + IsMainBranch: buildOptions.Branch == "main", + AspectWorkflows: isAspectWorkflowBuild, + }, addBrowserExtensionIntegrationTests(0), // we pass 0 here as we don't have other pipeline steps to contribute to the resulting Percy build wait, addBrowserExtensionReleaseSteps) @@ -173,6 +184,10 @@ func GeneratePipeline(c Config) (*bk.Pipeline, error) { // If this is a browser extension nightly build, run the browser-extension tests and // e2e tests. ops = BazelOpsSet(buildOptions, + CoreTestOperationsOptions{ + IsMainBranch: buildOptions.Branch == "main", + AspectWorkflows: isAspectWorkflowBuild, + }, recordBrowserExtensionIntegrationTests, wait, addBrowserExtensionE2ESteps) @@ -214,11 +229,12 @@ func GeneratePipeline(c Config) (*bk.Pipeline, error) { } ops = operations.NewSet( - bazelBuildCandidateDockerImage(patchImage, c.Version, c.candidateImageTag(), c.RunType), + legacyBuildCandidateDockerImage(patchImage, c.Version, c.candidateImageTag(), c.RunType), trivyScanCandidateImage(patchImage, c.candidateImageTag())) // Test images ops.Merge(CoreTestOperations(buildOptions, changed.All, CoreTestOperationsOptions{ MinimumUpgradeableVersion: minimumUpgradeableVersion, + AspectWorkflows: isAspectWorkflowBuild, })) // Publish images after everything is done ops.Append( @@ -235,13 +251,13 @@ func GeneratePipeline(c Config) (*bk.Pipeline, error) { panic(fmt.Sprintf("no image %q found", patchImage)) } ops = operations.NewSet( - bazelBuildCandidateDockerImage(patchImage, c.Version, c.candidateImageTag(), c.RunType), + legacyBuildCandidateDockerImage(patchImage, c.Version, c.candidateImageTag(), c.RunType), wait, publishFinalDockerImage(c, patchImage)) case runtype.ExecutorPatchNoTest: executorVMImage := "executor-vm" ops = operations.NewSet( - bazelBuildCandidateDockerImage(executorVMImage, c.Version, c.candidateImageTag(), c.RunType), + legacyBuildCandidateDockerImage(executorVMImage, c.Version, c.candidateImageTag(), c.RunType), trivyScanCandidateImage(executorVMImage, c.candidateImageTag()), buildExecutorVM(c, true), buildExecutorDockerMirror(c), @@ -276,12 +292,15 @@ func GeneratePipeline(c Config) (*bk.Pipeline, error) { ForceReadyForReview: c.MessageFlags.ForceReadyForReview, CacheBundleSize: c.RunType.Is(runtype.MainBranch, runtype.MainDryRun), IsMainBranch: true, + AspectWorkflows: isAspectWorkflowBuild, })) // Security scanning - sonarcloud - securityOps := operations.NewNamedSet("Security Scanning") - securityOps.Append(sonarcloudScan()) - ops.Merge(securityOps) + if isAspectWorkflowBuild { + securityOps := operations.NewNamedSet("Security Scanning") + securityOps.Append(sonarcloudScan()) + ops.Merge(securityOps) + } // Publish candidate images to dev registry publishOpsDev := operations.NewNamedSet("Publish candidate images") @@ -403,10 +422,9 @@ func withAgentLostRetries(s *bk.Step) { }) } -func BazelOpsSet(buildOptions bk.BuildOptions, extra ...operations.Operation) *operations.Set { - var isMain = buildOptions.Branch == "main" +func BazelOpsSet(buildOptions bk.BuildOptions, opts CoreTestOperationsOptions, extra ...operations.Operation) *operations.Set { ops := operations.NewSet( - BazelOperations(buildOptions, isMain)..., + BazelOperations(buildOptions, opts)..., ) ops.Append(extra...) return ops diff --git a/dev/ci/internal/ci/wolfi_operations.go b/dev/ci/internal/ci/wolfi_operations.go index d2200fb73e3c5..5bf5fc3643e87 100644 --- a/dev/ci/internal/ci/wolfi_operations.go +++ b/dev/ci/internal/ci/wolfi_operations.go @@ -113,7 +113,6 @@ func buildWolfiBaseImage(target string, tag string, dependOnPackages bool) (func }), // We want to run on the bazel queue, so we have a pretty minimal agent. bk.Agent("queue", "bazel"), - bk.Env("DOCKER_BAZEL", "true"), bk.Key(stepKey), bk.SoftFail(222), } From 5d9740fb746073e13589c4ca88431bbe5f6fb428 Mon Sep 17 00:00:00 2001 From: Felix Kling <felix@felix-kling.de> Date: Wed, 29 Nov 2023 15:27:45 +0100 Subject: [PATCH 206/222] svelte: Fix suggestions interfering with sticky search result headers (#58654) Due to CSS stacking context issues the sticky search results headers are "bleeding into" the suggestions. Adding a z-index places the whole input above other elements on the page. --- client/web-sveltekit/src/lib/search/input/SearchInput.svelte | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/web-sveltekit/src/lib/search/input/SearchInput.svelte b/client/web-sveltekit/src/lib/search/input/SearchInput.svelte index 946225828c997..f1b6588d23546 100644 --- a/client/web-sveltekit/src/lib/search/input/SearchInput.svelte +++ b/client/web-sveltekit/src/lib/search/input/SearchInput.svelte @@ -223,9 +223,13 @@ <style lang="scss"> @use '$lib/breakpoints'; + form { width: 100%; position: relative; + // Necessary to ensure that the search input (especially the suggestions) are rendered above sticky headers + // in the search results page ("position: sticky" creates a new stacking context). + z-index: 1; padding: 0.75rem; &:focus-within { From de2290ec35bc8b7c60030154fcfac1a6a952d97e Mon Sep 17 00:00:00 2001 From: Camden Cheek <camden@ccheek.com> Date: Wed, 29 Nov 2023 09:19:40 -0600 Subject: [PATCH 207/222] sg: fix typo (#58656) --- dev/sg/sg_start.go | 2 +- doc/dev/background-information/sg/reference.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/sg/sg_start.go b/dev/sg/sg_start.go index db420cfbfccd9..f9faeeecd4abe 100644 --- a/dev/sg/sg_start.go +++ b/dev/sg/sg_start.go @@ -159,7 +159,7 @@ func constructStartCmdLongHelp() string { } fmt.Fprintf(&out, "\n\n") - fmt.Fprintf(&out, "Available comamndsets in `%s`:\n", configFile) + fmt.Fprintf(&out, "Available commandsets in `%s`:\n", configFile) var names []string for name := range config.Commandsets { diff --git a/doc/dev/background-information/sg/reference.md b/doc/dev/background-information/sg/reference.md index 014639648c23c..8cf4bd44abc7d 100644 --- a/doc/dev/background-information/sg/reference.md +++ b/doc/dev/background-information/sg/reference.md @@ -28,7 +28,7 @@ Global flags: Use this to start your Sourcegraph environment! -Available comamndsets in `sg.config.yaml`: +Available commandsets in `sg.config.yaml`: * api-only * app From eca0accebd5f8885caac3bf592c77c362ac972b5 Mon Sep 17 00:00:00 2001 From: Robert Lin <robert@bobheadxi.dev> Date: Wed, 29 Nov 2023 08:11:09 -0800 Subject: [PATCH 208/222] telemetry: support float64 attributes (#58643) In Javascript, there is no way to easily determine if a number is an integer or a float, as JS numbers are [floats](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number). This makes `value: Int!` hard to use, because there is no way to ask callers to provide metadata in integer values only. To support clients (typically in JS/TS) well, we need to accept `value: Float!` - however, this is a breaking change: ``` In element #0: In field "parameters": In field "metadata": In element #1: In field "value": Expected type "Float", found 0. (line 3, column 28) ``` To make this change smoothly, we accept `value: JSONValue` in the GraphQL input and validate that it is a numeric value in the backend - this allows clients to provide both integers and floats. For events export, the change is simpler - we add a new field `metadata = 5`, and mark the existing metadata field as deprecated (`legacy_metadata`). In proto, only the field index matters, so the rename is safe, and ensures there is no disruption for data going to BigQuery, since we can continue to use `metadata` as the JSON field and simply drop `legacy_metadata` entirely. For existing clients, out-of-band telemetry clients (namely Cody) will need to be updated to round values to integers unless interacting with a more recent Sourcegraph version, e.g. https://github.com/sourcegraph/cody/pull/1913#discussion_r1408726932 ## Test plan - Unit tests validating GraphQL schema works as expected, including back-compat - Unit tests on telemetry gateway field migration - Eixsting tests --- cmd/frontend/graphqlbackend/telemetry.go | 4 +- cmd/frontend/graphqlbackend/telemetry.graphql | 6 +- cmd/frontend/graphqlbackend/telemetry_test.go | 66 ++-- cmd/frontend/graphqlbackend/testing.go | 7 + .../telemetry/resolvers/telemetrygateway.go | 40 ++- .../resolvers/telemetrygateway_test.go | 4 +- .../internal/server/BUILD.bazel | 7 +- .../internal/server/migrate_events.go | 19 ++ .../internal/server/migrate_events_test.go | 43 +++ .../internal/server/server.go | 3 + .../telemetry/protocol.md | 20 +- internal/completions/client/observe.go | 4 +- .../database/telemetry_export_store_test.go | 2 +- internal/search/job/jobutil/log_job.go | 2 +- internal/telemetry/teestore/teestore_test.go | 4 +- internal/telemetry/telemetry.go | 4 +- internal/telemetry/telemetrygateway.go | 4 +- internal/telemetry/telemetrygateway_test.go | 2 +- .../telemetrygateway/v1/backcompat_test.go | 7 +- .../v1/telemetrygateway.pb.go | 288 ++++++++++-------- .../v1/telemetrygateway.proto | 11 +- .../v1/testdata/snapshots/2023-11-28.pb | Bin 0 -> 279 bytes 22 files changed, 363 insertions(+), 184 deletions(-) create mode 100644 cmd/telemetry-gateway/internal/server/migrate_events.go create mode 100644 cmd/telemetry-gateway/internal/server/migrate_events_test.go create mode 100644 internal/telemetrygateway/v1/testdata/snapshots/2023-11-28.pb diff --git a/cmd/frontend/graphqlbackend/telemetry.go b/cmd/frontend/graphqlbackend/telemetry.go index 08ea398b7f134..cb7273852514e 100644 --- a/cmd/frontend/graphqlbackend/telemetry.go +++ b/cmd/frontend/graphqlbackend/telemetry.go @@ -40,8 +40,8 @@ type TelemetryEventParametersInput struct { } type TelemetryEventMetadataInput struct { - Key string `json:"key"` - Value int32 `json:"value"` + Key string `json:"key"` + Value JSONValue `json:"value"` } type TelemetryEventBillingMetadataInput struct { diff --git a/cmd/frontend/graphqlbackend/telemetry.graphql b/cmd/frontend/graphqlbackend/telemetry.graphql index 8d9f36fb27212..2e9c4b2151c28 100644 --- a/cmd/frontend/graphqlbackend/telemetry.graphql +++ b/cmd/frontend/graphqlbackend/telemetry.graphql @@ -119,8 +119,12 @@ input TelemetryEventMetadataInput { """ Numeric value associated with the key. Enforcing numeric values eliminates risks of accidentally shipping sensitive or private data. + + The value type in the schema is JSONValue for flexibility, but we ONLY + accept numeric values (integers and floats) - any other value will be + rejected. """ - value: Int! + value: JSONValue! } """ diff --git a/cmd/frontend/graphqlbackend/telemetry_test.go b/cmd/frontend/graphqlbackend/telemetry_test.go index 4795882ca045e..a6edeba71b773 100644 --- a/cmd/frontend/graphqlbackend/telemetry_test.go +++ b/cmd/frontend/graphqlbackend/telemetry_test.go @@ -59,7 +59,7 @@ func TestTelemetryRecordEvents(t *testing.T) { }, }, { - name: "object privateMetadata", + name: "metadata with standard object privateMetadata", gqlEventsInput: ` { feature: "cody.fixup" @@ -96,6 +96,11 @@ func TestTelemetryRecordEvents(t *testing.T) { // Sanity check strucpb marshalling used in cmd/frontend/internal/telemetry/resolvers _, err := structpb.NewStruct(v) require.NoError(t, err) + + md := *gotEvents[0].Parameters.Metadata + require.Len(t, md, 2) + assert.Equal(t, int32(1), md[0].Value.Value) + assert.Equal(t, int32(0), md[1].Value.Value) }, }, { @@ -110,16 +115,6 @@ func TestTelemetryRecordEvents(t *testing.T) { } parameters: { version: 0 - metadata: [ - { - key: "contextSelection", - value: 1 - }, - { - key: "chatPredictions", - value: 0 - }, - ] privateMetadata: "some value" } } @@ -150,16 +145,6 @@ func TestTelemetryRecordEvents(t *testing.T) { } parameters: { version: 0 - metadata: [ - { - key: "contextSelection", - value: 1 - }, - { - key: "chatPredictions", - value: 0 - }, - ] privateMetadata: 12 } } @@ -178,6 +163,45 @@ func TestTelemetryRecordEvents(t *testing.T) { require.NoError(t, err) }, }, + { + name: "different numeric values in metadata", + gqlEventsInput: ` + { + feature: "cody.fixup" + action: "applied" + source: { + client: "VSCode.Cody", + clientVersion: "0.14.1" + } + parameters: { + version: 0 + metadata: [ + { + key: "contextSelection", + value: 1 + }, + { + key: "chatPredictions", + value: 0 + }, + { + key: "fooBar", + value: 3.14 + }, + ] + } + } + `, + assert: func(t *testing.T, gotEvents []TelemetryEventInput) { + // Check PrivateMetadata + require.Len(t, gotEvents, 1) + md := *gotEvents[0].Parameters.Metadata + require.Len(t, md, 3) + assert.Equal(t, int32(1), md[0].Value.Value) + assert.Equal(t, int32(0), md[1].Value.Value) + assert.Equal(t, 3.14, md[2].Value.Value) + }, + }, } { t.Run(tc.name, func(t *testing.T) { mockResolver := &mockTelemetryResolver{} diff --git a/cmd/frontend/graphqlbackend/testing.go b/cmd/frontend/graphqlbackend/testing.go index 957319793d751..b42e96bf6e099 100644 --- a/cmd/frontend/graphqlbackend/testing.go +++ b/cmd/frontend/graphqlbackend/testing.go @@ -130,6 +130,13 @@ func checkErrors(t *testing.T, want, got []*gqlerrors.QueryError) { // Compare without caring about the concrete type of the error returned if diff := cmp.Diff(want, got, cmpopts.IgnoreFields(gqlerrors.QueryError{}, "ResolverError", "Err")); diff != "" { + // diff truncates the error messages, so dump the full error messages + // in t.Log for inspection with 'go test -v'. + t.Log("Full errors:\n") + for _, e := range got { + t.Logf("- %+v\n", e) + } + // Fail the test with the diff as a summary t.Fatal(diff) } } diff --git a/cmd/frontend/internal/telemetry/resolvers/telemetrygateway.go b/cmd/frontend/internal/telemetry/resolvers/telemetrygateway.go index 031f734e69b8d..864ec9b7338da 100644 --- a/cmd/frontend/internal/telemetry/resolvers/telemetrygateway.go +++ b/cmd/frontend/internal/telemetry/resolvers/telemetrygateway.go @@ -12,6 +12,8 @@ import ( "github.com/sourcegraph/sourcegraph/lib/errors" ) +// newTelemetryGatewayEvents converts GraphQL telemetry input to the Telemetry +// Gateway wire format. func newTelemetryGatewayEvents( ctx context.Context, now time.Time, @@ -34,6 +36,31 @@ func newTelemetryGatewayEvents( event.Interaction.InteractionId = gqlEvent.Parameters.InteractionID } + // Parse metadata + var metadata map[string]float64 + if gqlEvent.Parameters.Metadata != nil && len(*gqlEvent.Parameters.Metadata) != 0 { + metadata = make(map[string]float64, len(*gqlEvent.Parameters.Metadata)) + for _, kv := range *gqlEvent.Parameters.Metadata { + switch v := kv.Value.Value.(type) { + case int: + metadata[kv.Key] = float64(v) + case int8: + metadata[kv.Key] = float64(v) + case int32: + metadata[kv.Key] = float64(v) + case int64: + metadata[kv.Key] = float64(v) + case float32: + metadata[kv.Key] = float64(v) + case float64: + metadata[kv.Key] = v + default: + return gatewayEvents, + errors.Newf("metadata %q has invalid value type %T", kv.Key, v) + } + } + } + // Parse private metadata var privateMetadata *structpb.Struct if gqlEvent.Parameters.PrivateMetadata != nil { @@ -60,17 +87,8 @@ func newTelemetryGatewayEvents( // Configure parameters event.Parameters = &telemetrygatewayv1.EventParameters{ - Version: gqlEvent.Parameters.Version, - Metadata: func() map[string]int64 { - if gqlEvent.Parameters.Metadata == nil || len(*gqlEvent.Parameters.Metadata) == 0 { - return nil - } - metadata := make(map[string]int64, len(*gqlEvent.Parameters.Metadata)) - for _, kv := range *gqlEvent.Parameters.Metadata { - metadata[kv.Key] = int64(kv.Value) - } - return metadata - }(), + Version: gqlEvent.Parameters.Version, + Metadata: metadata, PrivateMetadata: privateMetadata, BillingMetadata: func() *telemetrygatewayv1.EventBillingMetadata { if gqlEvent.Parameters.BillingMetadata == nil { diff --git a/cmd/frontend/internal/telemetry/resolvers/telemetrygateway_test.go b/cmd/frontend/internal/telemetry/resolvers/telemetrygateway_test.go index 60f2962f39b4b..146fd81401f4e 100644 --- a/cmd/frontend/internal/telemetry/resolvers/telemetrygateway_test.go +++ b/cmd/frontend/internal/telemetry/resolvers/telemetrygateway_test.go @@ -104,7 +104,7 @@ func TestNewTelemetryGatewayEvents(t *testing.T) { Metadata: &[]graphqlbackend.TelemetryEventMetadataInput{ { Key: "metadata", - Value: 123, + Value: graphqlbackend.JSONValue{Value: 123}, }, }, PrivateMetadata: &graphqlbackend.JSONValue{ @@ -126,7 +126,7 @@ func TestNewTelemetryGatewayEvents(t *testing.T) { "product": "Product" }, "metadata": { - "metadata": "123" + "metadata": 123 }, "privateMetadata": { "private": "super-sensitive" diff --git a/cmd/telemetry-gateway/internal/server/BUILD.bazel b/cmd/telemetry-gateway/internal/server/BUILD.bazel index 455fd3dc18821..59033594bcc71 100644 --- a/cmd/telemetry-gateway/internal/server/BUILD.bazel +++ b/cmd/telemetry-gateway/internal/server/BUILD.bazel @@ -5,6 +5,7 @@ go_library( name = "server", srcs = [ "metrics.go", + "migrate_events.go", "publish_events.go", "server.go", ], @@ -29,10 +30,14 @@ go_library( go_test( name = "server_test", - srcs = ["publish_events_test.go"], + srcs = [ + "migrate_events_test.go", + "publish_events_test.go", + ], embed = [":server"], deps = [ "//cmd/telemetry-gateway/internal/events", + "//internal/telemetrygateway/v1:telemetrygateway", "@com_github_hexops_autogold_v2//:autogold", "@com_github_stretchr_testify//assert", ], diff --git a/cmd/telemetry-gateway/internal/server/migrate_events.go b/cmd/telemetry-gateway/internal/server/migrate_events.go new file mode 100644 index 0000000000000..d5eeb58cf6b6d --- /dev/null +++ b/cmd/telemetry-gateway/internal/server/migrate_events.go @@ -0,0 +1,19 @@ +package server + +import telemetrygatewayv1 "github.com/sourcegraph/sourcegraph/internal/telemetrygateway/v1" + +// migrateEvents does an in-place migration of any legacy field usages to support +// older exporters. +func migrateEvents(events []*telemetrygatewayv1.Event) { + for _, ev := range events { + if ev.Parameters != nil && len(ev.Parameters.LegacyMetadata) > 0 { + if ev.Parameters.Metadata == nil { + ev.Parameters.Metadata = make(map[string]float64, len(ev.Parameters.LegacyMetadata)) + } + for k, v := range ev.Parameters.LegacyMetadata { + ev.Parameters.Metadata[k] = float64(v) + } + ev.Parameters.LegacyMetadata = nil // remove + } + } +} diff --git a/cmd/telemetry-gateway/internal/server/migrate_events_test.go b/cmd/telemetry-gateway/internal/server/migrate_events_test.go new file mode 100644 index 0000000000000..0eeb3553b3eef --- /dev/null +++ b/cmd/telemetry-gateway/internal/server/migrate_events_test.go @@ -0,0 +1,43 @@ +package server + +import ( + "testing" + + "github.com/stretchr/testify/assert" + + telemetrygatewayv1 "github.com/sourcegraph/sourcegraph/internal/telemetrygateway/v1" +) + +func TestMigrateEvents(t *testing.T) { + t.Run("legacy metadata format", func(t *testing.T) { + events := []*telemetrygatewayv1.Event{ + { + Parameters: &telemetrygatewayv1.EventParameters{ + LegacyMetadata: map[string]int64{ + "foo": 123, + }, + }, + }, + { + Parameters: &telemetrygatewayv1.EventParameters{ + LegacyMetadata: map[string]int64{ + "foo": 123, + }, + Metadata: map[string]float64{ + "bar": 456, + }, + }, + }, + } + migrateEvents(events) + + // first event + assert.Equal(t, float64(123), events[0].Parameters.Metadata["foo"]) + assert.Nil(t, events[0].Parameters.LegacyMetadata) + + // second event + assert.Equal(t, float64(123), events[1].Parameters.Metadata["foo"]) + assert.Equal(t, float64(456), events[1].Parameters.Metadata["bar"]) + assert.Nil(t, events[1].Parameters.LegacyMetadata) + }) +} diff --git a/cmd/telemetry-gateway/internal/server/server.go b/cmd/telemetry-gateway/internal/server/server.go index 9bda5b4c8d69d..243501a0a1271 100644 --- a/cmd/telemetry-gateway/internal/server/server.go +++ b/cmd/telemetry-gateway/internal/server/server.go @@ -118,6 +118,9 @@ func (s *Server) RecordEvents(stream telemetrygatewayv1.TelemeteryGatewayService return status.Error(codes.InvalidArgument, "got events when metadata not yet received") } + // Handle legacy exporters + migrateEvents(events) + // Publish events resp := handlePublishEvents( stream.Context(), diff --git a/doc/dev/background-information/telemetry/protocol.md b/doc/dev/background-information/telemetry/protocol.md index daf02f89969a4..cfcb70515c169 100644 --- a/doc/dev/background-information/telemetry/protocol.md +++ b/doc/dev/background-information/telemetry/protocol.md @@ -21,6 +21,7 @@ This page contains generated documentation for telemetry event data that gets ex - [EventInteraction.Geolocation](#telemetrygateway-v1-EventInteraction-Geolocation) - [EventMarketingTracking](#telemetrygateway-v1-EventMarketingTracking) - [EventParameters](#telemetrygateway-v1-EventParameters) + - [EventParameters.LegacyMetadataEntry](#telemetrygateway-v1-EventParameters-LegacyMetadataEntry) - [EventParameters.MetadataEntry](#telemetrygateway-v1-EventParameters-MetadataEntry) - [EventSource](#telemetrygateway-v1-EventSource) - [EventSource.Client](#telemetrygateway-v1-EventSource-Client) @@ -185,6 +186,7 @@ Sourcegraph.com instance. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | version | [int32](#int32) | | <p>Version of the event parameters, used for indicating the "shape" of this</p><p>event's metadata, beginning at 0. Useful for denoting if the shape of</p><p>metadata has changed in any way.</p> | +| legacy_metadata | [EventParameters.LegacyMetadataEntry](#telemetrygateway-v1-EventParameters-LegacyMetadataEntry) | repeated | <p>Legacy metadata format that only accepted int64 - use the new metadata</p><p>field instead, which accepts float values. Values sent through this proto</p><p>field will be merged into the new metadata attributes.</p><p>We don't use a [deprecated = true] tag because we use this field to handle</p><p>accepting exporters sending metadata in this format.</p> | | metadata | [EventParameters.MetadataEntry](#telemetrygateway-v1-EventParameters-MetadataEntry) | repeated | <p>Strictly typed metadata, restricted to integer values to avoid accidentally</p><p>exporting sensitive or private data.</p> | | private_metadata | [google.protobuf.Struct](#google-protobuf-Struct) | optional | <p>Additional potentially sensitive metadata - i.e. not restricted to integer</p><p>values.</p><p>šŸšØ SECURITY: This metadata is NOT exported from instances by default, as it</p><p>can contain arbitrarily-shaped data that may accidentally contain sensitive</p><p>or private contents.</p><p>This metadata is only exported on an allowlist basis based on terms of</p><p>use agreements and combinations of event feature and action, alongside</p><p>careful audit of callsites.</p> | | billing_metadata | [EventBillingMetadata](#telemetrygateway-v1-EventBillingMetadata) | optional | <p>Optional billing-related metadata.</p> | @@ -194,6 +196,22 @@ Sourcegraph.com instance. +<a name="telemetrygateway-v1-EventParameters-LegacyMetadataEntry"></a> + +### EventParameters.LegacyMetadataEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | <p></p> | +| value | [int64](#int64) | | <p></p> | + + + + + + <a name="telemetrygateway-v1-EventParameters-MetadataEntry"></a> ### EventParameters.MetadataEntry @@ -203,7 +221,7 @@ Sourcegraph.com instance. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | key | [string](#string) | | <p></p> | -| value | [int64](#int64) | | <p></p> | +| value | [double](#double) | | <p></p> | diff --git a/internal/completions/client/observe.go b/internal/completions/client/observe.go index 40574562fa163..3be655429896f 100644 --- a/internal/completions/client/observe.go +++ b/internal/completions/client/observe.go @@ -44,7 +44,7 @@ func (o *observedClient) Stream(ctx context.Context, feature types.CompletionsFe o.events.Record(ctx, "cody.completions", "stream", &telemetry.EventParameters{ Metadata: telemetry.EventMetadata{ - "feature": int64(feature.ID()), + "feature": float64(feature.ID()), }, PrivateMetadata: map[string]any{ "stop_reason": event.StopReason, @@ -69,7 +69,7 @@ func (o *observedClient) Complete(ctx context.Context, feature types.Completions defer o.events.Record(ctx, "cody.completions", "complete", &telemetry.EventParameters{ Metadata: telemetry.EventMetadata{ - "feature": int64(feature.ID()), + "feature": float64(feature.ID()), }, }) diff --git a/internal/database/telemetry_export_store_test.go b/internal/database/telemetry_export_store_test.go index 1fd9077c84266..41a8198a8522a 100644 --- a/internal/database/telemetry_export_store_test.go +++ b/internal/database/telemetry_export_store_test.go @@ -102,7 +102,7 @@ func TestTelemetryEventsExportQueueLifecycle(t *testing.T) { Action: "View", Timestamp: timestamppb.New(time.Date(2022, 11, 3, 1, 0, 0, 0, time.UTC)), Parameters: &telemetrygatewayv1.EventParameters{ - Metadata: map[string]int64{"public": 1}, + Metadata: map[string]float64{"public": 1}, }, }, { Id: "2", diff --git a/internal/search/job/jobutil/log_job.go b/internal/search/job/jobutil/log_job.go index d5f70d862e54e..a715a1a350f0b 100644 --- a/internal/search/job/jobutil/log_job.go +++ b/internal/search/job/jobutil/log_job.go @@ -150,7 +150,7 @@ func (l *LogJob) logEvent(ctx context.Context, clients job.RuntimeClients, durat // New event events.Record(ctx, "search.latencies", telemetry.Action(types[0]), &telemetry.EventParameters{ Metadata: telemetry.EventMetadata{ - "durationMs": duration.Milliseconds(), + "durationMs": float64(duration.Milliseconds()), }, }) // Legacy event diff --git a/internal/telemetry/teestore/teestore_test.go b/internal/telemetry/teestore/teestore_test.go index c38db5e6324a8..342afe3ffbf8d 100644 --- a/internal/telemetry/teestore/teestore_test.go +++ b/internal/telemetry/teestore/teestore_test.go @@ -227,7 +227,7 @@ func TestToEventLogs(t *testing.T) { }, }, Parameters: &telemetrygatewayv1.EventParameters{ - Metadata: map[string]int64{"public": 2}, + Metadata: map[string]float64{"public": 2}, PrivateMetadata: &structpb.Struct{Fields: map[string]*structpb.Value{ "private": structpb.NewStringValue("sensitive-data"), }}, @@ -295,7 +295,7 @@ func TestToEventLogs(t *testing.T) { }, }, Parameters: &telemetrygatewayv1.EventParameters{ - Metadata: map[string]int64{"public": 2}, + Metadata: map[string]float64{"public": 2}, PrivateMetadata: &structpb.Struct{Fields: map[string]*structpb.Value{ "private": structpb.NewStringValue("sensitive-data"), }}, diff --git a/internal/telemetry/telemetry.go b/internal/telemetry/telemetry.go index c4a7993d2e397..bcfb00d1eca31 100644 --- a/internal/telemetry/telemetry.go +++ b/internal/telemetry/telemetry.go @@ -15,11 +15,11 @@ type constString string // EventMetadata is secure, PII-free metadata that can be attached to events. // Keys must be const strings. -type EventMetadata map[constString]int64 +type EventMetadata map[constString]float64 // MetadataBool returns 1 for true and 0 for false, for use in EventMetadata's // restricted int64 values. -func MetadataBool(value bool) int64 { +func MetadataBool(value bool) float64 { if value { return 1 // true } diff --git a/internal/telemetry/telemetrygateway.go b/internal/telemetry/telemetrygateway.go index f06fd229dbd5a..2aa8b9d24037b 100644 --- a/internal/telemetry/telemetrygateway.go +++ b/internal/telemetry/telemetrygateway.go @@ -37,11 +37,11 @@ func newTelemetryGatewayEvent( } event.Parameters = &telemetrygatewayv1.EventParameters{ Version: int32(parameters.Version), - Metadata: func() map[string]int64 { + Metadata: func() map[string]float64 { if len(parameters.Metadata) == 0 { return nil } - m := make(map[string]int64, len(parameters.Metadata)) + m := make(map[string]float64, len(parameters.Metadata)) for k, v := range parameters.Metadata { m[string(k)] = v } diff --git a/internal/telemetry/telemetrygateway_test.go b/internal/telemetry/telemetrygateway_test.go index ac08947078757..3139450ba4caf 100644 --- a/internal/telemetry/telemetrygateway_test.go +++ b/internal/telemetry/telemetrygateway_test.go @@ -119,7 +119,7 @@ func TestMakeRawEvent(t *testing.T) { "product": "EXAMPLE" }, "metadata": { - "foobar": "3" + "foobar": 3 }, "privateMetadata": { "barbaz": "hello world!" diff --git a/internal/telemetrygateway/v1/backcompat_test.go b/internal/telemetrygateway/v1/backcompat_test.go index e5b3db2f1a7cd..b560272eb34a1 100644 --- a/internal/telemetrygateway/v1/backcompat_test.go +++ b/internal/telemetrygateway/v1/backcompat_test.go @@ -53,8 +53,11 @@ var ( }, }, Parameters: &telemetrygatewayv1.EventParameters{ - Version: 1, - Metadata: map[string]int64{"metadata": 1}, + Version: 1, + Metadata: map[string]float64{ + "metadata": 1, + "float": 1.3, + }, PrivateMetadata: must(structpb.NewStruct(map[string]any{"private": "data"})), BillingMetadata: &telemetrygatewayv1.EventBillingMetadata{ Product: "Product", diff --git a/internal/telemetrygateway/v1/telemetrygateway.pb.go b/internal/telemetrygateway/v1/telemetrygateway.pb.go index 09659081087e3..653b1eecd0d6d 100644 --- a/internal/telemetrygateway/v1/telemetrygateway.pb.go +++ b/internal/telemetrygateway/v1/telemetrygateway.pb.go @@ -508,9 +508,16 @@ type EventParameters struct { // event's metadata, beginning at 0. Useful for denoting if the shape of // metadata has changed in any way. Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + // Legacy metadata format that only accepted int64 - use the new metadata + // field instead, which accepts float values. Values sent through this proto + // field will be merged into the new metadata attributes. + // + // We don't use a [deprecated = true] tag because we use this field to handle + // accepting exporters sending metadata in this format. + LegacyMetadata map[string]int64 `protobuf:"bytes,2,rep,name=legacy_metadata,json=legacyMetadata,proto3" json:"legacy_metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // Strictly typed metadata, restricted to integer values to avoid accidentally // exporting sensitive or private data. - Metadata map[string]int64 `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Metadata map[string]float64 `protobuf:"bytes,5,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"` // Additional potentially sensitive metadata - i.e. not restricted to integer // values. // @@ -565,7 +572,14 @@ func (x *EventParameters) GetVersion() int32 { return 0 } -func (x *EventParameters) GetMetadata() map[string]int64 { +func (x *EventParameters) GetLegacyMetadata() map[string]int64 { + if x != nil { + return x.LegacyMetadata + } + return nil +} + +func (x *EventParameters) GetMetadata() map[string]float64 { if x != nil { return x.Metadata } @@ -1210,7 +1224,7 @@ type EventInteraction_Geolocation struct { func (x *EventInteraction_Geolocation) Reset() { *x = EventInteraction_Geolocation{} if protoimpl.UnsafeEnabled { - mi := &file_telemetrygateway_proto_msgTypes[19] + mi := &file_telemetrygateway_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1223,7 +1237,7 @@ func (x *EventInteraction_Geolocation) String() string { func (*EventInteraction_Geolocation) ProtoMessage() {} func (x *EventInteraction_Geolocation) ProtoReflect() protoreflect.Message { - mi := &file_telemetrygateway_proto_msgTypes[19] + mi := &file_telemetrygateway_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1367,116 +1381,126 @@ var file_telemetrygateway_proto_rawDesc = []byte{ 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x22, 0x86, 0x03, 0x0a, 0x0f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x22, 0xac, 0x04, 0x0a, 0x0f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x4e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x47, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x10, 0x62, 0x69, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, - 0x01, 0x52, 0x0f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x88, 0x01, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x62, 0x69, 0x6c, 0x6c, - 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4c, 0x0a, 0x14, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x7c, 0x0a, 0x09, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, - 0x75, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x0f, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, - 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x96, 0x01, 0x0a, 0x11, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x47, - 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, - 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x46, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x1a, 0x38, 0x0a, 0x0a, 0x46, 0x6c, 0x61, 0x67, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0xed, 0x03, 0x0a, 0x16, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x15, 0x0a, 0x03, - 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x6c, - 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, - 0x0e, 0x66, 0x69, 0x72, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x88, - 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x63, 0x6f, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x63, 0x6f, 0x68, 0x6f, 0x72, 0x74, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, - 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, - 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x88, - 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, - 0x0f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, - 0x0f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, - 0x69, 0x72, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, - 0x52, 0x0f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x55, 0x72, - 0x6c, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, - 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x63, 0x6f, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x42, 0x12, 0x0a, 0x10, - 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, - 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x75, 0x72, - 0x6c, 0x22, 0x9a, 0x02, 0x0a, 0x10, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, - 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0b, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x12, 0x61, 0x0a, 0x0f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x74, 0x65, 0x6c, + 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, + 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x4e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, + 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x47, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, + 0x10, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, - 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0b, 0x67, 0x65, - 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x1a, 0x30, 0x0a, 0x0b, - 0x47, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x85, - 0x01, 0x0a, 0x18, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x79, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x74, 0x65, + 0x65, 0x6e, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x48, 0x01, 0x52, 0x0f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4c, 0x65, 0x67, 0x61, + 0x63, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x22, 0x4c, 0x0a, 0x14, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, + 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x22, 0x7c, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x0a, + 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x61, + 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0f, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, + 0x6f, 0x75, 0x73, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x6e, 0x6f, + 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x96, + 0x01, 0x0a, 0x11, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, + 0x6c, 0x61, 0x67, 0x73, 0x12, 0x47, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x46, 0x6c, 0x61, 0x67, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x1a, 0x38, 0x0a, + 0x0a, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xed, 0x03, 0x0a, 0x16, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, + 0x6e, 0x67, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x66, 0x69, 0x72, + 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0e, 0x66, 0x69, 0x72, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x63, 0x6f, 0x68, 0x6f, + 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x63, + 0x6f, 0x68, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x08, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x0f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x0f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, + 0x69, 0x72, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, + 0x72, 0x6c, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x63, 0x6f, 0x68, 0x6f, + 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, + 0x65, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, + 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, + 0x72, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x9a, 0x02, 0x0a, 0x10, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x08, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0b, 0x67, 0x65, 0x6f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x02, 0x52, 0x0b, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, + 0x01, 0x01, 0x1a, 0x30, 0x0a, 0x0b, 0x47, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, + 0x43, 0x6f, 0x64, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x85, 0x01, 0x0a, 0x18, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x79, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, - 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x41, 0x5a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x41, 0x5a, 0x3f, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x74, 0x72, 0x79, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x76, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1491,7 +1515,7 @@ func file_telemetrygateway_proto_rawDescGZIP() []byte { return file_telemetrygateway_proto_rawDescData } -var file_telemetrygateway_proto_msgTypes = make([]protoimpl.MessageInfo, 20) +var file_telemetrygateway_proto_msgTypes = make([]protoimpl.MessageInfo, 21) var file_telemetrygateway_proto_goTypes = []interface{}{ (*Identifier)(nil), // 0: telemetrygateway.v1.Identifier (*RecordEventsRequestMetadata)(nil), // 1: telemetrygateway.v1.RecordEventsRequestMetadata @@ -1510,11 +1534,12 @@ var file_telemetrygateway_proto_goTypes = []interface{}{ (*RecordEventsRequest_EventsPayload)(nil), // 14: telemetrygateway.v1.RecordEventsRequest.EventsPayload (*EventSource_Server)(nil), // 15: telemetrygateway.v1.EventSource.Server (*EventSource_Client)(nil), // 16: telemetrygateway.v1.EventSource.Client - nil, // 17: telemetrygateway.v1.EventParameters.MetadataEntry - nil, // 18: telemetrygateway.v1.EventFeatureFlags.FlagsEntry - (*EventInteraction_Geolocation)(nil), // 19: telemetrygateway.v1.EventInteraction.Geolocation - (*timestamppb.Timestamp)(nil), // 20: google.protobuf.Timestamp - (*structpb.Struct)(nil), // 21: google.protobuf.Struct + nil, // 17: telemetrygateway.v1.EventParameters.LegacyMetadataEntry + nil, // 18: telemetrygateway.v1.EventParameters.MetadataEntry + nil, // 19: telemetrygateway.v1.EventFeatureFlags.FlagsEntry + (*EventInteraction_Geolocation)(nil), // 20: telemetrygateway.v1.EventInteraction.Geolocation + (*timestamppb.Timestamp)(nil), // 21: google.protobuf.Timestamp + (*structpb.Struct)(nil), // 22: google.protobuf.Struct } var file_telemetrygateway_proto_depIdxs = []int32{ 12, // 0: telemetrygateway.v1.Identifier.licensed_instance:type_name -> telemetrygateway.v1.Identifier.LicensedInstanceIdentifier @@ -1522,7 +1547,7 @@ var file_telemetrygateway_proto_depIdxs = []int32{ 0, // 2: telemetrygateway.v1.RecordEventsRequestMetadata.identifier:type_name -> telemetrygateway.v1.Identifier 1, // 3: telemetrygateway.v1.RecordEventsRequest.metadata:type_name -> telemetrygateway.v1.RecordEventsRequestMetadata 14, // 4: telemetrygateway.v1.RecordEventsRequest.events:type_name -> telemetrygateway.v1.RecordEventsRequest.EventsPayload - 20, // 5: telemetrygateway.v1.Event.timestamp:type_name -> google.protobuf.Timestamp + 21, // 5: telemetrygateway.v1.Event.timestamp:type_name -> google.protobuf.Timestamp 5, // 6: telemetrygateway.v1.Event.source:type_name -> telemetrygateway.v1.EventSource 6, // 7: telemetrygateway.v1.Event.parameters:type_name -> telemetrygateway.v1.EventParameters 8, // 8: telemetrygateway.v1.Event.user:type_name -> telemetrygateway.v1.EventUser @@ -1531,19 +1556,20 @@ var file_telemetrygateway_proto_depIdxs = []int32{ 11, // 11: telemetrygateway.v1.Event.interaction:type_name -> telemetrygateway.v1.EventInteraction 15, // 12: telemetrygateway.v1.EventSource.server:type_name -> telemetrygateway.v1.EventSource.Server 16, // 13: telemetrygateway.v1.EventSource.client:type_name -> telemetrygateway.v1.EventSource.Client - 17, // 14: telemetrygateway.v1.EventParameters.metadata:type_name -> telemetrygateway.v1.EventParameters.MetadataEntry - 21, // 15: telemetrygateway.v1.EventParameters.private_metadata:type_name -> google.protobuf.Struct - 7, // 16: telemetrygateway.v1.EventParameters.billing_metadata:type_name -> telemetrygateway.v1.EventBillingMetadata - 18, // 17: telemetrygateway.v1.EventFeatureFlags.flags:type_name -> telemetrygateway.v1.EventFeatureFlags.FlagsEntry - 19, // 18: telemetrygateway.v1.EventInteraction.geolocation:type_name -> telemetrygateway.v1.EventInteraction.Geolocation - 4, // 19: telemetrygateway.v1.RecordEventsRequest.EventsPayload.events:type_name -> telemetrygateway.v1.Event - 2, // 20: telemetrygateway.v1.TelemeteryGatewayService.RecordEvents:input_type -> telemetrygateway.v1.RecordEventsRequest - 3, // 21: telemetrygateway.v1.TelemeteryGatewayService.RecordEvents:output_type -> telemetrygateway.v1.RecordEventsResponse - 21, // [21:22] is the sub-list for method output_type - 20, // [20:21] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 17, // 14: telemetrygateway.v1.EventParameters.legacy_metadata:type_name -> telemetrygateway.v1.EventParameters.LegacyMetadataEntry + 18, // 15: telemetrygateway.v1.EventParameters.metadata:type_name -> telemetrygateway.v1.EventParameters.MetadataEntry + 22, // 16: telemetrygateway.v1.EventParameters.private_metadata:type_name -> google.protobuf.Struct + 7, // 17: telemetrygateway.v1.EventParameters.billing_metadata:type_name -> telemetrygateway.v1.EventBillingMetadata + 19, // 18: telemetrygateway.v1.EventFeatureFlags.flags:type_name -> telemetrygateway.v1.EventFeatureFlags.FlagsEntry + 20, // 19: telemetrygateway.v1.EventInteraction.geolocation:type_name -> telemetrygateway.v1.EventInteraction.Geolocation + 4, // 20: telemetrygateway.v1.RecordEventsRequest.EventsPayload.events:type_name -> telemetrygateway.v1.Event + 2, // 21: telemetrygateway.v1.TelemeteryGatewayService.RecordEvents:input_type -> telemetrygateway.v1.RecordEventsRequest + 3, // 22: telemetrygateway.v1.TelemeteryGatewayService.RecordEvents:output_type -> telemetrygateway.v1.RecordEventsResponse + 22, // [22:23] is the sub-list for method output_type + 21, // [21:22] is the sub-list for method input_type + 21, // [21:21] is the sub-list for extension type_name + 21, // [21:21] is the sub-list for extension extendee + 0, // [0:21] is the sub-list for field type_name } func init() { file_telemetrygateway_proto_init() } @@ -1756,7 +1782,7 @@ func file_telemetrygateway_proto_init() { return nil } } - file_telemetrygateway_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_telemetrygateway_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EventInteraction_Geolocation); i { case 0: return &v.state @@ -1790,7 +1816,7 @@ func file_telemetrygateway_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_telemetrygateway_proto_rawDesc, NumEnums: 0, - NumMessages: 20, + NumMessages: 21, NumExtensions: 0, NumServices: 1, }, diff --git a/internal/telemetrygateway/v1/telemetrygateway.proto b/internal/telemetrygateway/v1/telemetrygateway.proto index 9cc6ff0d9edec..1df2a3707bb63 100644 --- a/internal/telemetrygateway/v1/telemetrygateway.proto +++ b/internal/telemetrygateway/v1/telemetrygateway.proto @@ -130,9 +130,18 @@ message EventParameters { // event's metadata, beginning at 0. Useful for denoting if the shape of // metadata has changed in any way. int32 version = 1; + + // Legacy metadata format that only accepted int64 - use the new metadata + // field instead, which accepts float values. Values sent through this proto + // field will be merged into the new metadata attributes. + // + // We don't use a [deprecated = true] tag because we use this field to handle + // accepting exporters sending metadata in this format. + map<string, int64> legacy_metadata = 2; // Strictly typed metadata, restricted to integer values to avoid accidentally // exporting sensitive or private data. - map<string, int64> metadata = 2; + map<string, double> metadata = 5; + // Additional potentially sensitive metadata - i.e. not restricted to integer // values. // diff --git a/internal/telemetrygateway/v1/testdata/snapshots/2023-11-28.pb b/internal/telemetrygateway/v1/testdata/snapshots/2023-11-28.pb new file mode 100644 index 0000000000000000000000000000000000000000..be41482b7b17775ff4e6bd23643a9925460c4527 GIT binary patch literal 279 zcmd;LF*GtZ5n|)mH|OzuHYs+u)Wnj~qEsa|$K;aC{5&lwE><q)l+-dIK`u6DA5T}m z5Fz$3*Pviee?OyO4n`?qE<rB#f}+f_#FA7YHYt{r#F9iMVJ`N7qWqN7<PsqcXP`uS zeo>{CFc(K|YDpqUfgl4Ie6ZIN;9^b7$xkd1JbMNNzSvvwaa`gQ;!MoT&#TPMFD-Tw z<l^UIPlLEhh^3^cG}X(3i?u8<r!-XvLP<d=B?zSjp^PAu6@+qvP(d183I>J-Mh3<P aCI+SkW(MX47GS=Kfdx!hiiL|QG#CI`Z%u9h literal 0 HcmV?d00001 From efd7f0827873ee5b09f5012351f8538a0a073e24 Mon Sep 17 00:00:00 2001 From: Bolaji Olajide <25608335+BolajiOlajide@users.noreply.github.com> Date: Wed, 29 Nov 2023 17:36:46 +0100 Subject: [PATCH 209/222] Activate 5.2.4 release (#58659) * 5.2.4 activate * update doc --- dev/release/release-config.jsonc | 20 +++++++++++++++++++- dev/release/src/release.ts | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/dev/release/release-config.jsonc b/dev/release/release-config.jsonc index 4c09e4cdfd9da..a917c1ff3b136 100644 --- a/dev/release/release-config.jsonc +++ b/dev/release/release-config.jsonc @@ -22,6 +22,14 @@ "current": "5.2.0", "captainGitHubUsername": "unknwon", "captainSlackUsername": "joe" + }, + "5.2.4": { + "codeFreezeDate": "2023-11-22T10:18:45.722-08:00", + "securityApprovalDate": "2023-11-22T10:18:45.722-08:00", + "releaseDate": "2023-11-29T10:18:45.722-08:00", + "current": "5.2.4", + "captainGitHubUsername": "BolajiOlajide", + "captainSlackUsername": "bolaji.olajide" } }, "dryRun": { @@ -30,5 +38,15 @@ "trackingIssues": false, "calendar": false, "slack": false + }, + "in_progress": { + "captainGitHubUsername": "BolajiOlajide", + "captainSlackUsername": "bolaji.olajide", + "releases": [ + { + "version": "5.2.4", + "previous": "5.2.3" + } + ] } -} \ No newline at end of file +} diff --git a/dev/release/src/release.ts b/dev/release/src/release.ts index d3be69cb08067..18903df9a5968 100644 --- a/dev/release/src/release.ts +++ b/dev/release/src/release.ts @@ -1073,7 +1073,7 @@ ${patchRequestIssues.map(issue => `* #${issue.number}`).join('\n')}` }, { id: 'release:deactivate-release', - description: 'Activate a feature release', + description: 'De-activate a feature release', run: async config => { await verifyWithInput('Are you sure you want to deactivate all releases?') deactivateAllReleases(config) From 442a86b3e7953546c112ba6ef624f7b3af060361 Mon Sep 17 00:00:00 2001 From: Keegan Carruthers-Smith <keegan.csmith@gmail.com> Date: Wed, 29 Nov 2023 17:58:10 +0100 Subject: [PATCH 210/222] gomod: update zoekt to include go.mod 1.21 requirement (#58661) Contains the following changes: https://github.com/sourcegraph/zoekt/compare/d982320abe7b...0d03621d45a3 - 5c51794c39 Indexing: use one ctags process per shard - 8abf874fe1 gomod: require go1.21 - 0d03621d45 revert use of mmap-go Test Plan: tested on zoekt CI and this one --- deps.bzl | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deps.bzl b/deps.bzl index 320b609fd0901..65637046f67d1 100644 --- a/deps.bzl +++ b/deps.bzl @@ -5722,8 +5722,8 @@ def go_dependencies(): name = "com_github_sourcegraph_zoekt", build_file_proto_mode = "disable_global", importpath = "github.com/sourcegraph/zoekt", - sum = "h1:2xAotLrNXGdj1x8I5yPh89qsesICseLEfEdKpmY3V90=", - version = "v0.0.0-20231122214222-d982320abe7b", + sum = "h1:nhxLVoE/muGcygm76NwutJC4fQ1IVgkNXY7xOLGnDI8=", + version = "v0.0.0-20231129132138-0d03621d45a3", ) go_repository( name = "com_github_spaolacci_murmur3", diff --git a/go.mod b/go.mod index 6aebce779e669..f07c8d1808bf6 100644 --- a/go.mod +++ b/go.mod @@ -569,7 +569,7 @@ require ( github.com/sourcegraph/managed-services-platform-cdktf/gen/postgresql v0.0.0-20231121191755-214be625af21 github.com/sourcegraph/mountinfo v0.0.0-20231018142932-e00da332dac5 github.com/sourcegraph/sourcegraph/monitoring v0.0.0-20230124144931-b2d81b1accb6 - github.com/sourcegraph/zoekt v0.0.0-20231122214222-d982320abe7b + github.com/sourcegraph/zoekt v0.0.0-20231129132138-0d03621d45a3 github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/objx v0.5.0 // indirect diff --git a/go.sum b/go.sum index 144b1b7756e98..3e82e50ed2c46 100644 --- a/go.sum +++ b/go.sum @@ -1665,8 +1665,8 @@ github.com/sourcegraph/tiktoken-go v0.0.0-20230905173153-caab340cf008 h1:Wu8W50q github.com/sourcegraph/tiktoken-go v0.0.0-20230905173153-caab340cf008/go.mod h1:9NiV+i9mJKGj1rYOT+njbv+ZwA/zJxYdewGl6qVatpg= github.com/sourcegraph/yaml v1.0.1-0.20200714132230-56936252f152 h1:z/MpntplPaW6QW95pzcAR/72Z5TWDyDnSo0EOcyij9o= github.com/sourcegraph/yaml v1.0.1-0.20200714132230-56936252f152/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= -github.com/sourcegraph/zoekt v0.0.0-20231122214222-d982320abe7b h1:2xAotLrNXGdj1x8I5yPh89qsesICseLEfEdKpmY3V90= -github.com/sourcegraph/zoekt v0.0.0-20231122214222-d982320abe7b/go.mod h1:WVDDy51tFgeKy8zXtujTSbqzgyJrqhrLC9sjWiEfAII= +github.com/sourcegraph/zoekt v0.0.0-20231129132138-0d03621d45a3 h1:nhxLVoE/muGcygm76NwutJC4fQ1IVgkNXY7xOLGnDI8= +github.com/sourcegraph/zoekt v0.0.0-20231129132138-0d03621d45a3/go.mod h1:bWvtH95V0T8hHKS3wWyo5aYDXiDKlObq5kC7nltqXqk= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v0.0.0-20170901052352-ee1bd8ee15a1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= From 5ffc5146290b3031b53eb0b896cbca92b8711e9c Mon Sep 17 00:00:00 2001 From: Camden Cheek <camden@ccheek.com> Date: Wed, 29 Nov 2023 15:18:20 -0600 Subject: [PATCH 211/222] sg: remove duplicate watch target (#58668) --- sg.config.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/sg.config.yaml b/sg.config.yaml index 55453dfc7c5f9..0d2b40e4aaff5 100644 --- a/sg.config.yaml +++ b/sg.config.yaml @@ -252,7 +252,6 @@ commands: - lib - internal - cmd/symbols - - cmd/symbols - internal/rockskip embeddings: From 704c6febcbaaeb595e0f11ce822cb3498fb1bf58 Mon Sep 17 00:00:00 2001 From: Jason Hawk Harris <jasonhawkharris@gmail.com> Date: Wed, 29 Nov 2023 16:17:29 -0600 Subject: [PATCH 212/222] Code Navigation: fix test indicator positioning (#58666) * fix test indicator positioning * fixes bug causing folders with valid extensions for names to render icons * switch css file/icon classes --- .../RepoRevisionSidebarFileTree.module.scss | 18 ++++---- .../src/repo/RepoRevisionSidebarFileTree.tsx | 42 +++++++++++-------- client/web/src/repo/tree/TreePagePanels.tsx | 2 +- client/web/src/repo/utils.test.ts | 2 +- client/web/src/repo/utils.tsx | 9 +++- 5 files changed, 45 insertions(+), 28 deletions(-) diff --git a/client/web/src/repo/RepoRevisionSidebarFileTree.module.scss b/client/web/src/repo/RepoRevisionSidebarFileTree.module.scss index 962173149ff12..984d8177c9cdd 100644 --- a/client/web/src/repo/RepoRevisionSidebarFileTree.module.scss +++ b/client/web/src/repo/RepoRevisionSidebarFileTree.module.scss @@ -1,26 +1,30 @@ -.icon-container { +.file-container { display: flex; flex-direction: row; align-items: center; } -.icon { - flex-shrink: 0; - width: 1rem; - height: 1rem; +.icon-container { + display: flex; + flex-direction: row; } .test-indicator { border-radius: 100%; width: 0.5rem; height: 0.5rem; - margin-left: -0.65rem; - margin-bottom: 0.15rem; + margin-left: -0.75rem; margin-right: 0.15rem; background-color: var(--gray-05); align-self: end; } +.icon { + flex-shrink: 0; + width: 1rem; + height: 1rem; +} + .blue { color: var(--blue); } diff --git a/client/web/src/repo/RepoRevisionSidebarFileTree.tsx b/client/web/src/repo/RepoRevisionSidebarFileTree.tsx index 1f6c574c5ab38..703e3e70abae9 100644 --- a/client/web/src/repo/RepoRevisionSidebarFileTree.tsx +++ b/client/web/src/repo/RepoRevisionSidebarFileTree.tsx @@ -391,7 +391,7 @@ function renderNode({ const { entry, error, dotdot, name } = element const submodule = entry?.submodule const url = entry?.url - const fileInfo = getFileInfo(name) + const fileInfo = getFileInfo(name, isBranch) const fileIcon = FILE_ICONS.get(fileInfo.extension) if (error) { @@ -474,23 +474,29 @@ function renderNode({ } }} > - <div className={styles.iconContainer}> - {fileInfo.extension !== FileExtension.DEFAULT ? ( - <Icon - as={fileIcon?.icon} - className={classNames('mr-1', styles.icon, fileIcon?.iconClass)} - aria-hidden={true} - /> - ) : ( - <Icon - svgPath={ - isBranch ? (isExpanded ? mdiFolderOpenOutline : mdiFolderOutline) : mdiFileDocumentOutline - } - className={classNames('mr-1', styles.icon)} - aria-hidden={true} - /> - )} - {fileInfo.isTest && <div className={classNames(styles.testIndicator)} />} + <div className={styles.fileContainer}> + <div className={styles.iconContainer}> + {fileInfo.extension !== FileExtension.DEFAULT ? ( + <Icon + as={fileIcon?.icon} + className={classNames('mr-1', styles.icon, fileIcon?.iconClass)} + aria-hidden={true} + /> + ) : ( + <Icon + svgPath={ + isBranch + ? isExpanded + ? mdiFolderOpenOutline + : mdiFolderOutline + : mdiFileDocumentOutline + } + className={classNames('mr-1', styles.icon)} + aria-hidden={true} + /> + )} + {fileInfo.isTest && <div className={classNames(styles.testIndicator)} />} + </div> {name} </div> </Link> diff --git a/client/web/src/repo/tree/TreePagePanels.tsx b/client/web/src/repo/tree/TreePagePanels.tsx index e56940bd9190e..d93c97a47ece1 100644 --- a/client/web/src/repo/tree/TreePagePanels.tsx +++ b/client/web/src/repo/tree/TreePagePanels.tsx @@ -179,7 +179,7 @@ export const FilesCard: FC<FilePanelProps> = ({ entries, historyEntries, classNa </thead> <tbody> {entries.map(entry => { - const fileInfo = getFileInfo(entry.name) + const fileInfo = getFileInfo(entry.name, entry.isDirectory) const fileIcon = FILE_ICONS.get(fileInfo.extension) return ( diff --git a/client/web/src/repo/utils.test.ts b/client/web/src/repo/utils.test.ts index 1d6c9bac15f85..dff6675d4b99f 100644 --- a/client/web/src/repo/utils.test.ts +++ b/client/web/src/repo/utils.test.ts @@ -88,7 +88,7 @@ describe('getFileInfo', () => { for (const t of tests) { it(t.name, () => { - const fileInfo = getFileInfo(t.file) + const fileInfo = getFileInfo(t.file, t.isDirectory) expect(fileInfo.extension).toBe(t.expectedExtension) expect(fileInfo.isTest).toBe(t.expectedIsTest) }) diff --git a/client/web/src/repo/utils.tsx b/client/web/src/repo/utils.tsx index 23861698a20c3..3f8a773027306 100644 --- a/client/web/src/repo/utils.tsx +++ b/client/web/src/repo/utils.tsx @@ -51,7 +51,14 @@ export interface FileInfo { isTest: boolean } -export const getFileInfo = (file: string): FileInfo => { +export const getFileInfo = (file: string, isDirectory: boolean): FileInfo => { + if (isDirectory) { + return { + extension: 'default' as FileExtension, + isTest: false, + } + } + const extension = file.split('.').at(-1) const isValidExtension = Object.values(FileExtension).includes(extension as FileExtension) From 2ce49a9beba87cce9dc6abc073108addc35391ac Mon Sep 17 00:00:00 2001 From: creativefisher <57014955+creativefisher@users.noreply.github.com> Date: Wed, 29 Nov 2023 16:02:26 -0800 Subject: [PATCH 213/222] Updating links to marketing site (#58647) --- doc/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/index.md b/doc/index.md index 9c353e78312cb..8a657af401bb3 100644 --- a/doc/index.md +++ b/doc/index.md @@ -32,8 +32,8 @@ Sourcegraph makes it easy to read, write, and fix codeā€”even in big, complex co ## Community -* [Blog](https://about.sourcegraph.com/blog/) +* [Blog](https://sourcegraph.com/blog/) * [Discord](https://discord.gg/s2qDtYGnAE) * [Twitter](https://twitter.com/sourcegraph) * [Issue tracker](https://github.com/sourcegraph/sourcegraph/issues) -* [Contact us](https://about.sourcegraph.com/contact) +* [Contact us](https://sourcegraph.com/contact) From def5dbe1ce92ea5ea86a46866b358d3fdadea031 Mon Sep 17 00:00:00 2001 From: creativefisher <57014955+creativefisher@users.noreply.github.com> Date: Wed, 29 Nov 2023 16:03:04 -0800 Subject: [PATCH 214/222] Updating links to marketing pages (#58646) --- doc/code_search/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/code_search/index.md b/doc/code_search/index.md index 39352fe5f5224..52fc751fd3f5f 100644 --- a/doc/code_search/index.md +++ b/doc/code_search/index.md @@ -19,7 +19,7 @@ Sourcegraph code search helps developers perform these tasks more quickly and ef ## Recommended <div> - <a class="cloud-cta" href="https://about.sourcegraph.com/get-started?t=enterprise" target="_blank" rel="noopener noreferrer"> + <a class="cloud-cta" href="https://sourcegraph.com/get-started?t=enterprise" target="_blank" rel="noopener noreferrer"> <div class="cloud-cta-copy"> <h2>Get Sourcegraph on your code.</h2> <h3>A single-tenant instance managed by Sourcegraph.</h3> From 72ed632398527d371656d4933e113f24c6b08ef3 Mon Sep 17 00:00:00 2001 From: creativefisher <57014955+creativefisher@users.noreply.github.com> Date: Wed, 29 Nov 2023 16:04:17 -0800 Subject: [PATCH 215/222] Updated links to marketing site (#58645) --- doc/_resources/templates/root.html | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/doc/_resources/templates/root.html b/doc/_resources/templates/root.html index fe9883cc0d31d..4ab0487486c3e 100644 --- a/doc/_resources/templates/root.html +++ b/doc/_resources/templates/root.html @@ -250,7 +250,6 @@ <h2 class="sr-only">Sections</h2> <div class="nav-section"> <h2 class="sr-only">External</h2> <ul> - <li class="external"><a href="https://about.sourcegraph.com">About Sourcegraph</a></li> <li class="external"><a href="https://sourcegraph.com">Sourcegraph.com</a></li> </ul> </div> @@ -275,12 +274,11 @@ <h2 class="sr-only">External</h2> <footer> <nav class="links external"> <ul> - <li><a href="https://about.sourcegraph.com">About Sourcegraph</a></li> <li><a href="https://sourcegraph.com">Sourcegraph.com</a></li> <li><a href="https://github.com/sourcegraph/sourcegraph">Code (GitHub)</a></li> - <li><a href="https://about.sourcegraph.com/terms">Terms</a></li> - <li><a href="https://about.sourcegraph.com/security">Security</a></li> - <li><a href="https://about.sourcegraph.com/privacy">Privacy</a></li> + <li><a href="https://sourcegraph.com/terms">Terms</a></li> + <li><a href="https://sourcegraph.com/security">Security</a></li> + <li><a href="https://sourcegraph.com/privacy">Privacy</a></li> </ul> </nav> </footer> From 1c6c0ad5a47ff8e43f2ecfcdc83cb6e173ab695e Mon Sep 17 00:00:00 2001 From: creativefisher <57014955+creativefisher@users.noreply.github.com> Date: Wed, 29 Nov 2023 16:05:20 -0800 Subject: [PATCH 216/222] Update link to marketing page (#58644) --- doc/getting-started/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/getting-started/index.md b/doc/getting-started/index.md index 09b5275d232e6..4cbb7a9dbc264 100644 --- a/doc/getting-started/index.md +++ b/doc/getting-started/index.md @@ -8,7 +8,7 @@ Sourcegraph is a code intelligence platform that helps devs answer questions in ## Who should use Sourcegraph? -In addition to the [companies listed on about.sourcegraph.com](https://about.sourcegraph.com), companies with a few hundred developers all the way up to those with more than 40,000 use Sourcegraph daily. +In addition to the [companies listed on sourcegraph.com](https://sourcegraph.com), companies with a few hundred developers all the way up to those with more than 40,000 use Sourcegraph daily. More specifically, Sourcegraph is great for all developers, except: From c7ffe923a474df16239b3cd85e663c9f5b60a4d2 Mon Sep 17 00:00:00 2001 From: Robert Lin <robert@bobheadxi.dev> Date: Wed, 29 Nov 2023 16:53:06 -0800 Subject: [PATCH 217/222] telemetrygatewayexporter: fix queue cleanup window (#58667) I forgot to drill-down the config option to the cleanup worker, which means we always run the cleanup of already-exported events from time.Now(), which isn't itself all that harmful because we don't use the backlog exported events yet, but will be relevant for #57029 if I ever get around to that, and could come in handy for debugging. Since this could be a big change, I reduced the retention to just 1 day by default. --- cmd/worker/internal/telemetrygatewayexporter/queue_cleanup.go | 3 ++- .../telemetrygatewayexporter/telemetrygatewayexporter.go | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cmd/worker/internal/telemetrygatewayexporter/queue_cleanup.go b/cmd/worker/internal/telemetrygatewayexporter/queue_cleanup.go index 66708a256b0e0..4eb243e68a017 100644 --- a/cmd/worker/internal/telemetrygatewayexporter/queue_cleanup.go +++ b/cmd/worker/internal/telemetrygatewayexporter/queue_cleanup.go @@ -24,7 +24,8 @@ type queueCleanupJob struct { func newQueueCleanupJob(obctx *observation.Context, store database.TelemetryEventsExportQueueStore, cfg config) goroutine.BackgroundRoutine { job := &queueCleanupJob{ - store: store, + store: store, + retentionWindow: cfg.ExportedEventsRetentionWindow, prunedCounter: promauto.NewCounter(prometheus.CounterOpts{ Namespace: "src", Subsystem: "telemetrygatewayexporter", diff --git a/cmd/worker/internal/telemetrygatewayexporter/telemetrygatewayexporter.go b/cmd/worker/internal/telemetrygatewayexporter/telemetrygatewayexporter.go index d57dc680cadef..78daf9ecb7aa8 100644 --- a/cmd/worker/internal/telemetrygatewayexporter/telemetrygatewayexporter.go +++ b/cmd/worker/internal/telemetrygatewayexporter/telemetrygatewayexporter.go @@ -75,7 +75,7 @@ func (c *config) Load() { } c.ExportedEventsRetentionWindow = env.MustGetDuration("TELEMETRY_GATEWAY_EXPORTER_EXPORTED_EVENTS_RETENTION", - 2*24*time.Hour, "Duration to retain already-exported telemetry events before deleting") + 24*time.Hour, "Duration to retain already-exported telemetry events before deleting") c.QueueCleanupInterval = env.MustGetDuration("TELEMETRY_GATEWAY_EXPORTER_QUEUE_CLEANUP_INTERVAL", 30*time.Minute, "Interval at which to clean up telemetry export queue") From 7d1b2362b7899969fcc1d4870c5c0f8ca4165425 Mon Sep 17 00:00:00 2001 From: creativefisher <57014955+creativefisher@users.noreply.github.com> Date: Wed, 29 Nov 2023 17:23:39 -0800 Subject: [PATCH 218/222] =?UTF-8?q?Updated=20the=20description=20to=20clea?= =?UTF-8?q?rly=20distinguish=20managed=20cloud=20vs=20self-=E2=80=A6=20(#5?= =?UTF-8?q?8411)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/admin/deploy/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/admin/deploy/index.md b/doc/admin/deploy/index.md index 51e1de466642f..fc74dfac8a17e 100644 --- a/doc/admin/deploy/index.md +++ b/doc/admin/deploy/index.md @@ -24,7 +24,7 @@ Carefully consider your organization's needs and technical expertise when select ### [Sourcegraph Cloud](https://about.sourcegraph.com/get-started?t=enterprise) -**For Enterprises looking for a Cloud solution.** +**For Enterprises looking for a managed Cloud solution.** A cloud instance hosted and maintained by Sourcegraph @@ -43,7 +43,7 @@ A cloud instance hosted and maintained by Sourcegraph ### [Machine Images](machine-images/index.md) -**For Enterprises looking for a self-hosted solution on Cloud.** +**For Enterprises looking for a self-hosted solution on the Cloud infrastructure of their choice.** An option to run Sourcegraph on your own infrastructure using pre-configured machine images. From 33edb1bafa66e2a3000bd2f8098f5a7ddf64cc05 Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Thu, 30 Nov 2023 07:12:58 +0100 Subject: [PATCH 219/222] licensing: Add features for search, monitors and notebooks (#58584) licensing: Add features for monitors and notebooks Adding them to the list of available features. We still need to implement gating and enforcement. For now, since all current plans have no enforcement, all plans get this feature set. --- internal/licensing/data.go | 42 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/internal/licensing/data.go b/internal/licensing/data.go index 58ed5cbc8b0ec..a85558bc18f55 100644 --- a/internal/licensing/data.go +++ b/internal/licensing/data.go @@ -95,6 +95,15 @@ const ( // FeatureAllowAirGapped is whether or not air gapped mode is allowed on this instance. FeatureAllowAirGapped BasicFeature = "allow-air-gapped" + + // FeatureCodeMonitors is whether code monitors is allowed on this Sourcegraph instance. + FeatureCodeMonitors BasicFeature = "code-monitors" + + // FeatureNotebooks is whether the notebooks feature is allowed on this Sourcegraph instance. + FeatureNotebooks BasicFeature = "notebooks" + + // FeatureCodeSearch is whether the code search feature suite is allowed on this Sourcegraph instance. + FeatureCodeSearch BasicFeature = "code-search" ) var AllFeatures = []Feature{ @@ -111,6 +120,9 @@ var AllFeatures = []Feature{ &FeatureBatchChanges{}, FeatureSCIM, FeatureAllowAirGapped, + FeatureCodeMonitors, + FeatureNotebooks, + FeatureCodeSearch, } type PlanDetails struct { @@ -123,6 +135,9 @@ var planDetails = map[Plan]PlanDetails{ Features: []Feature{ &FeatureBatchChanges{MaxNumChangesets: 10}, &FeaturePrivateRepositories{Unrestricted: true}, + FeatureCodeMonitors, + FeatureNotebooks, + FeatureCodeSearch, }, }, PlanOldEnterprise: { @@ -141,6 +156,9 @@ var planDetails = map[Plan]PlanDetails{ FeatureCodeInsights, FeatureSCIM, FeatureCody, + FeatureCodeMonitors, + FeatureNotebooks, + FeatureCodeSearch, }, }, PlanTeam0: { @@ -150,6 +168,9 @@ var planDetails = map[Plan]PlanDetails{ FeatureSSO, &FeatureBatchChanges{MaxNumChangesets: 10}, &FeaturePrivateRepositories{Unrestricted: true}, + FeatureCodeMonitors, + FeatureNotebooks, + FeatureCodeSearch, }, }, PlanEnterprise0: { @@ -161,6 +182,9 @@ var planDetails = map[Plan]PlanDetails{ &FeaturePrivateRepositories{Unrestricted: true}, FeatureSCIM, FeatureCody, + FeatureCodeMonitors, + FeatureNotebooks, + FeatureCodeSearch, }, }, @@ -174,6 +198,9 @@ var planDetails = map[Plan]PlanDetails{ FeatureSSO, FeatureSCIM, FeatureCody, + FeatureCodeMonitors, + FeatureNotebooks, + FeatureCodeSearch, }, }, PlanEnterprise1: { @@ -187,6 +214,9 @@ var planDetails = map[Plan]PlanDetails{ FeatureSSO, FeatureSCIM, FeatureCody, + FeatureCodeMonitors, + FeatureNotebooks, + FeatureCodeSearch, }, }, PlanEnterpriseExtension: { @@ -200,6 +230,9 @@ var planDetails = map[Plan]PlanDetails{ FeatureSSO, FeatureSCIM, FeatureCody, + FeatureCodeMonitors, + FeatureNotebooks, + FeatureCodeSearch, }, }, PlanFree0: { @@ -208,6 +241,9 @@ var planDetails = map[Plan]PlanDetails{ FeatureMonitoring, &FeatureBatchChanges{MaxNumChangesets: 10}, &FeaturePrivateRepositories{Unrestricted: true}, + FeatureCodeMonitors, + FeatureNotebooks, + FeatureCodeSearch, }, }, PlanFree1: { @@ -215,6 +251,9 @@ var planDetails = map[Plan]PlanDetails{ FeatureMonitoring, &FeatureBatchChanges{MaxNumChangesets: 10}, &FeaturePrivateRepositories{MaxNumPrivateRepos: 1}, + FeatureCodeMonitors, + FeatureNotebooks, + FeatureCodeSearch, }, }, PlanAirGappedEnterprise: { @@ -229,6 +268,9 @@ var planDetails = map[Plan]PlanDetails{ FeatureSCIM, FeatureCody, FeatureAllowAirGapped, + FeatureCodeMonitors, + FeatureNotebooks, + FeatureCodeSearch, }, }, } From b5bb889eb0854374b6fa4089520328d7b2fb2165 Mon Sep 17 00:00:00 2001 From: Petri-Johan Last <petri.last@sourcegraph.com> Date: Thu, 30 Nov 2023 07:42:52 +0100 Subject: [PATCH 220/222] [fix] Add repo settings paths back (#58671) Add repo settings paths to non-enterprise sidebar items --- client/web/BUILD.bazel | 1 - .../enterprise/repo/settings/sidebaritems.ts | 30 ------------------- client/web/src/repo/settings/sidebaritems.ts | 10 +++++++ 3 files changed, 10 insertions(+), 31 deletions(-) delete mode 100644 client/web/src/enterprise/repo/settings/sidebaritems.ts diff --git a/client/web/BUILD.bazel b/client/web/BUILD.bazel index 90873d8fed5aa..61ff8a6d3c55a 100644 --- a/client/web/BUILD.bazel +++ b/client/web/BUILD.bazel @@ -1024,7 +1024,6 @@ ts_project( "src/enterprise/repo/settings/RepoSettingsLogsPage.tsx", "src/enterprise/repo/settings/RepoSettingsPermissionsPage.tsx", "src/enterprise/repo/settings/backend.ts", - "src/enterprise/repo/settings/sidebaritems.ts", "src/enterprise/repo/settings/utils.ts", "src/enterprise/search-jobs/SearchJobBadge/SearchJobBadge.tsx", "src/enterprise/search-jobs/SearchJobCard/SearchJobCard.tsx", diff --git a/client/web/src/enterprise/repo/settings/sidebaritems.ts b/client/web/src/enterprise/repo/settings/sidebaritems.ts deleted file mode 100644 index afb35c122d47f..0000000000000 --- a/client/web/src/enterprise/repo/settings/sidebaritems.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { RepoSettingsSideBarGroups } from '../../../repo/settings/RepoSettingsSidebar' -import { repoSettingsSideBarGroups, settingsGroup } from '../../../repo/settings/sidebaritems' - -export const enterpriseRepoSettingsSidebarGroups: RepoSettingsSideBarGroups = - repoSettingsSideBarGroups.reduce<RepoSettingsSideBarGroups>((enterpriseGroups, group) => { - if (group === settingsGroup) { - return [ - ...enterpriseGroups, - // Extend settings group items - { - ...group, - items: [ - ...group.items, - { - to: '/logs', - exact: true, - label: 'Logs', - }, - { - to: '/permissions', - exact: true, - label: 'Repo Permissions', - }, - ], - }, - ] - } - - return [...enterpriseGroups, group] - }, []) diff --git a/client/web/src/repo/settings/sidebaritems.ts b/client/web/src/repo/settings/sidebaritems.ts index 19121dfb389b5..b8dea44faa872 100644 --- a/client/web/src/repo/settings/sidebaritems.ts +++ b/client/web/src/repo/settings/sidebaritems.ts @@ -15,6 +15,16 @@ export const settingsGroup = { exact: true, label: 'Search Indexing', }, + { + to: '/logs', + exact: true, + label: 'Logs', + }, + { + to: '/permissions', + exact: true, + label: 'Repo Permissions', + }, ], } From 1300b7389657b7a4f9c4c40b971e926c6279d88f Mon Sep 17 00:00:00 2001 From: Quinn Slack <quinn@slack.org> Date: Thu, 30 Nov 2023 00:24:24 -0800 Subject: [PATCH 221/222] fix useProjectService TypeScript ESLint config (#58585) It seems the correct config is actually `EXPERIMENTAL_useProjectService`, as documented in https://typescript-eslint.io/blog/parser-options-project-true#project-services. The former was "working" because of the `process.env.TYPESCRIPT_ESLINT_EXPERIMENTAL_TSSERVER = 'true'` line. --- .eslintrc.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 9212d7bb9a7a2..75b90793d20f5 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -43,8 +43,8 @@ const config = { ecmaFeatures: { jsx: true, }, - EXPERIMENTAL_projectService: true, - project: __dirname + '/tsconfig.all.json', + EXPERIMENTAL_useProjectService: true, + project: true, }, settings: { react: { From 098afc40a8eeb5dcaf56685635d16a17c930ed28 Mon Sep 17 00:00:00 2001 From: Erik Seliger <erikseliger@me.com> Date: Thu, 30 Nov 2023 09:49:15 +0100 Subject: [PATCH 222/222] azuredevops: Add support for SSH cloning (#58655) In line with other code hosts, adding SSH clone support here via gitURLType. ## Test plan Verified locally by configuring it and seeing a repo clone successfully via ssh. --- CHANGELOG.md | 1 + cmd/gitserver/internal/cloneurl/clone_url.go | 6 +++++- cmd/gitserver/internal/cloneurl/clone_url_test.go | 4 ++-- internal/batches/sources/azuredevops_test.go | 2 +- internal/extsvc/azuredevops/types.go | 2 +- internal/repos/azuredevops.go | 7 ++++++- schema/azuredevops.schema.json | 6 ++++++ schema/schema.go | 6 ++++++ 8 files changed, 28 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8bc35e49ee3af..3fdbf2f3bf6e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,6 +60,7 @@ All notable changes to Sourcegraph are documented in this file. ### Added - Added the ability to use Workload Identity, Managed Identity and Environmental credentials when using the Azure OpenAI completions and embeddings providers [#58289](https://github.com/sourcegraph/sourcegraph/pull/58289) +- Added support for cloning via SSH from Azure DevOps. [#58655](https://github.com/sourcegraph/sourcegraph/pull/58655) ### Fixed diff --git a/cmd/gitserver/internal/cloneurl/clone_url.go b/cmd/gitserver/internal/cloneurl/clone_url.go index 3cbecb89db4a2..39509a6c6cd57 100644 --- a/cmd/gitserver/internal/cloneurl/clone_url.go +++ b/cmd/gitserver/internal/cloneurl/clone_url.go @@ -129,7 +129,11 @@ func awsCodeCloneURL(logger log.Logger, repo *awscodecommit.Repository, cfg *sch } func azureDevOpsCloneURL(logger log.Logger, repo *azuredevops.Repository, cfg *schema.AzureDevOpsConnection) string { - u, err := url.Parse(repo.CloneURL) + if cfg.GitURLType == "ssh" { + return repo.SSHURL + } + + u, err := url.Parse(repo.RemoteURL) if err != nil { logger.Warn("Error adding authentication to Azure DevOps repo remote URL.", log.String("url", cfg.Url), log.Error(err)) return cfg.Url diff --git a/cmd/gitserver/internal/cloneurl/clone_url_test.go b/cmd/gitserver/internal/cloneurl/clone_url_test.go index 55a55352f7092..d1e0d5c3f68c5 100644 --- a/cmd/gitserver/internal/cloneurl/clone_url_test.go +++ b/cmd/gitserver/internal/cloneurl/clone_url_test.go @@ -63,8 +63,8 @@ func TestAzureDevOpsCloneURL(t *testing.T) { } repo := &azuredevops.Repository{ - ID: "test-project", - CloneURL: "https://sgtestazure@dev.azure.com/sgtestazure/sgtestazure/_git/sgtestazure", + ID: "test-project", + RemoteURL: "https://sgtestazure@dev.azure.com/sgtestazure/sgtestazure/_git/sgtestazure", } got := azureDevOpsCloneURL(logtest.Scoped(t), repo, &cfg) diff --git a/internal/batches/sources/azuredevops_test.go b/internal/batches/sources/azuredevops_test.go index 7698c1b41449a..13a1cf2a6528b 100644 --- a/internal/batches/sources/azuredevops_test.go +++ b/internal/batches/sources/azuredevops_test.go @@ -24,7 +24,7 @@ var ( testProjectName = "testproject" testOrgName = "testorg" testPRID = "42" - testRepository = azuredevops.Repository{ID: "testrepoid", Name: testRepoName, Project: azuredevops.Project{ID: "testprojectid", Name: testProjectName}, APIURL: fmt.Sprintf("https://dev.azure.com/%s/%s/_git/%s", testOrgName, testProjectName, testRepoName), CloneURL: fmt.Sprintf("https://dev.azure.com/%s/%s/_git/%s", testOrgName, testProjectName, testRepoName)} + testRepository = azuredevops.Repository{ID: "testrepoid", Name: testRepoName, Project: azuredevops.Project{ID: "testprojectid", Name: testProjectName}, APIURL: fmt.Sprintf("https://dev.azure.com/%s/%s/_git/%s", testOrgName, testProjectName, testRepoName), RemoteURL: fmt.Sprintf("https://dev.azure.com/%s/%s/_git/%s", testOrgName, testProjectName, testRepoName)} testCommonPullRequestArgs = azuredevops.PullRequestCommonArgs{Org: testOrgName, Project: testProjectName, RepoNameOrID: testRepoName, PullRequestID: testPRID} testOrgProjectRepoArgs = azuredevops.OrgProjectRepoArgs{Org: testOrgName, Project: testProjectName, RepoNameOrID: testRepoName} ) diff --git a/internal/extsvc/azuredevops/types.go b/internal/extsvc/azuredevops/types.go index 1cb2a02dc554c..12766a519ff3b 100644 --- a/internal/extsvc/azuredevops/types.go +++ b/internal/extsvc/azuredevops/types.go @@ -226,7 +226,7 @@ type PullRequestStatusState string type Repository struct { ID string `json:"id"` Name string `json:"name"` - CloneURL string `json:"remoteURL"` + RemoteURL string `json:"remoteURL"` APIURL string `json:"url"` SSHURL string `json:"sshUrl"` WebURL string `json:"webUrl"` diff --git a/internal/repos/azuredevops.go b/internal/repos/azuredevops.go index 262eec33e4459..e13ff86562e82 100644 --- a/internal/repos/azuredevops.go +++ b/internal/repos/azuredevops.go @@ -158,6 +158,11 @@ func (s *AzureDevOpsSource) makeRepo(p azuredevops.Repository) (*types.Repo, err return nil, err } + cloneURL := p.RemoteURL + if s.config.GitURLType == "ssh" { + cloneURL = p.SSHURL + } + name := path.Join(fullURL.Host, fullURL.Path) return &types.Repo{ Name: api.RepoName(name), @@ -171,7 +176,7 @@ func (s *AzureDevOpsSource) makeRepo(p azuredevops.Repository) (*types.Repo, err Sources: map[string]*types.SourceInfo{ urn: { ID: urn, - CloneURL: p.CloneURL, + CloneURL: cloneURL, }, }, Metadata: p, diff --git a/schema/azuredevops.schema.json b/schema/azuredevops.schema.json index 508ea4e641fda..bde5315d5078e 100644 --- a/schema/azuredevops.schema.json +++ b/schema/azuredevops.schema.json @@ -19,6 +19,12 @@ "format": "uri", "examples": ["https://dev.azure.com"] }, + "gitURLType": { + "description": "The type of Git URLs to use for cloning and fetching Git repositories.\n\nIf \"http\", Sourcegraph will access repositories using Git URLs of the form http(s)://dev.azure.com/myrepo.git.\n\nIf \"ssh\", Sourcegraph will access repositories using Git URLs of the form git@ssh.dev.azure.com:v3/myrepo. See the documentation for how to provide SSH private keys and known_hosts: https://docs.sourcegraph.com/admin/repo/auth#repositories-that-need-http-s-or-ssh-authentication.", + "type": "string", + "enum": ["http", "ssh"], + "default": "http" + }, "enforcePermissions": { "description": "A flag to enforce Azure DevOps repository access permissions", "type": "boolean", diff --git a/schema/schema.go b/schema/schema.go index ac586790d228c..aacc1096068d9 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -224,6 +224,12 @@ type AzureDevOpsConnection struct { EnforcePermissions bool `json:"enforcePermissions,omitempty"` // Exclude description: A list of repositories to never mirror from Azure DevOps Services. Exclude []*ExcludedAzureDevOpsServerRepo `json:"exclude,omitempty"` + // GitURLType description: The type of Git URLs to use for cloning and fetching Git repositories. + // + // If "http", Sourcegraph will access repositories using Git URLs of the form http(s)://dev.azure.com/myrepo.git. + // + // If "ssh", Sourcegraph will access repositories using Git URLs of the form git@ssh.dev.azure.com:v3/myrepo. See the documentation for how to provide SSH private keys and known_hosts: https://docs.sourcegraph.com/admin/repo/auth#repositories-that-need-http-s-or-ssh-authentication. + GitURLType string `json:"gitURLType,omitempty"` // Orgs description: An array of organization names identifying Azure DevOps organizations whose repositories should be mirrored on Sourcegraph. Orgs []string `json:"orgs,omitempty"` // Projects description: An array of projects "org/project" strings specifying which Azure DevOps projects' repositories should be mirrored on Sourcegraph.