diff --git a/.coveragerc b/.coveragerc deleted file mode 100644 index 955b487..0000000 --- a/.coveragerc +++ /dev/null @@ -1,23 +0,0 @@ -[run] -source = examples,src -omit = - */tests/* - */__pycache__/* - */venv/* - */build/* - */dist/* - setup.py - -[report] -exclude_lines = - pragma: no cover - def __repr__ - raise AssertionError - raise NotImplementedError - if __name__ == .__main__.: - if TYPE_CHECKING: - @abstractmethod -show_missing = True -skip_covered = False -precision = 2 - diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 8de91d8..a9c9bf4 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -35,6 +35,9 @@ jobs: - name: Generate API reference run: uv run python docs/scripts/gen_api_docs.py + - name: Generate notebook pages + run: uv run python docs/scripts/gen_notebook_docs.py + - uses: actions/setup-node@v6 with: node-version: "22" diff --git a/.gitignore b/.gitignore index 989da51..a11dbc0 100644 --- a/.gitignore +++ b/.gitignore @@ -140,7 +140,9 @@ sketch* murano/sketch* .vscode* .draft/ -examples/artifacts + +# Default destination of the Save and Plot steps, written by the notebooks. +murano_outputs/ # OS files .DS_Store diff --git a/CHANGELOG.md b/CHANGELOG.md index 57b5e4d..6e3f8e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `SelectComponents` step and `ComponentSelection` artifact: rank an attribution result (for example `LogitAttribution`) by magnitude, signed value, or most-negative, keep the top `top_k` or everything past a `threshold`, and write the chosen addresses for a downstream step to read. `Patch` / `PathPatch` / `Ablate` accept a `targets_key` / `senders_key` naming that selection, so attribute-then-patch runs as one pipeline instead of two with a hand-copied node list. - `Intervene` gains `direction_layers` (`"all"`, `"best"`, or an explicit layer list) for the `direction_key` steering path, so a one-pipeline steer can apply only the best-separating layer's direction instead of every recorded layer, which keeps deep models coherent. +- `Sweep` step and `SweepResult` artifact: run a step chain once per item and harvest one or more metric keys. Every component study has this shape ("patch each head and measure what it restores", "zero each head and measure the damage", "steer at each layer"), and every notebook was hand-rolling it as a closure over the model, the task, and a baseline `Results`. `Sweep` forks the incoming `Results` per item, so the shared prefix runs once and the swept steps' writes stay out of the pipeline, and it derives its own read contract from the chain, so a missing upstream key fails pre-flight validation. A sweep over `Node` addresses publishes the same `{Node: float}` map an attribution does, so it feeds `SelectComponents` and `plot_head_matrix` with no adapter: attribute, sweep, select and path-patch now compose in one pipeline. +- `plot_sweep` in `murano.plotting`, auto-dispatched by `Plot`: a sweep over attention heads renders as the layer-by-head heatmap, anything else as one bar per item. The color scale diverges only when the values actually straddle zero. +- `AnswerRankStep`: how many tokens outscore the correct answer at the answer position. Rank 0 means the model would emit it greedily. Like its sibling metric steps it resolves the answer position from the attention mask, so it stays correct under either padding side. +- `Logits` accepts `fn`, `layers`, `modules` and `per_head`, forwarding them to the backend's `forward_logits`, which already took them. It is the forward-pass analogue of `Intervene`: a twelve-layer steering sweep now costs twelve forward passes instead of twelve decodes. +- `SAEModel.decoder`: the whole decoder matrix, for callers projecting every feature through the unembedding. Previously reachable only as `sae_model._sae.W_dec`. +- `murano.tasks`: the two toy tasks the tutorials share, defined once and tested. `ioi()` builds the indirect-object-identification task as a `CleanCorruptDataset`; `sentiment()` returns contrastive sentences; `positive_word_rate()` is the crude scorer the steering notebooks use. +- `plot_activation_projection` in `murano.plotting`: reduce one component's activations with any scikit-learn-style reducer (PCA, LDA, t-SNE, UMAP) and scatter them by class. It accepts both a contrastive `ActivationStore` and a `LabeledActivationStore`, so a single `Record` can feed both `Probe` and the plot. +- `zmid` on `plot_heatmap` and `plot_head_matrix`, anchoring a diverging colorscale at zero so a signed statistic no longer shades zero as if it had a sign. +- `notebooks/getting_started.ipynb`, plus fourteen runnable notebooks under `notebooks/applications/`: steering, probing, logit lens, logit attribution, attention, ablation, activation patching, circuit discovery, metrics, custom pipeline, weight ablation, and the three sparse-autoencoder notebooks. All fifteen share one template, enforced by `tests/test_notebook_structure.py`, which also rejects a step constructed inside a loop (that is a hand-rolled `Sweep`) and a pipeline built inside a function. +- The notebooks now render on the documentation site, generated from the executed `.ipynb` files by `docs/scripts/gen_notebook_docs.py` at deploy time. + +### Changed + +- The SAE notebooks move from `notebooks/sae/` into `notebooks/applications/` as `sae_features`, `sae_steering` and `sae_enrichment`, on the shared template. `sae_enrichment` replaces a 150-line bespoke ranking heuristic with the standardized mean difference between classes, which is four lines and surfaces the same sentiment features, along with the negation and junk features that ranking alone cannot tell apart. + +### Fixed + +- `Intervene`'s docstring recommended `direction_layers="best"` while the code defaulted to `"all"`, and never stated the default. It now documents the default and explains the trade-off: the best-*separating* layer is not necessarily an effective place to intervene, because a concept is often most separable in an early layer whose contribution later layers overwrite. +- `sae_steer`'s docstring quoted `alpha=200` as if it were a usable default. `alpha` is an absolute magnitude added at every decoded token, so it means nothing without the residual norm at the steering site, which spans tens to thousands across models. The docstring now says so, and points at `notebooks/applications/sae_steering.ipynb`, which measures that norm and finds no strength that both invokes the concept and preserves the text. The notebook's old `alpha=2000` output predates the fix that made generation-time interventions apply on every decoded token. +- `tests/test_notebook_structure.py` compared function *names* across notebooks, so `patch_head` and `recovered_fraction`, the same seventeen lines twice, lived in two notebooks unnoticed. It now compares normalized syntax trees. + +### Removed + +- The `examples/` directory. Its scripts became notebooks under `notebooks/`, and the one reusable class it held (`PlotterLens`) moved into the library as `murano.plotting.plot_activation_projection`. +- `.coveragerc`, which duplicated the `[tool.coverage]` configuration in `pyproject.toml` and took precedence over it. ## [0.1.0a2] - 2026-07-08 diff --git a/README.md b/README.md index ee57e67..4ba0aba 100644 --- a/README.md +++ b/README.md @@ -131,11 +131,12 @@ caught up-front. | `SteeringVector` | `record` | `steering` | Find a contrastive steering direction (mean diff). | | `Intervene` | `prompts` | `intervene` | Generate baseline + intervened outputs side-by-side. | | `WeightAblation` | `prompts`, `steering` | `intervene`, `weight_ablation` | Project a direction out of model weights, then generate. | -| `Logits` ‡ | `prompts` | `final_logits`, `attention_mask`, `target_ids` | Run a forward pass and expose output logits plus next-token targets. | +| `Logits` ‡ | `prompts` | `final_logits`, `attention_mask`, `target_ids` | Run a forward pass and expose output logits plus next-token targets. With `fn=`, apply an intervention during that pass. | | `Ablate` ‡ | `prompts` | `ablated_logits`, `attention_mask` | Zero, mean, or resample a component and return the logits. | +| `Sweep` ‡ | (the swept chain's) | `sweep` | Run a step chain once per item and harvest a metric into a `SweepResult`. | | `Probe` § | `record` | `probe` | Train a linear probe per layer via cross-validation. | | `GenerationMetric` | `intervene` | `metric` | Score baseline vs modified outputs with a user metric. | -| Metric steps ‡ | logits keys | a metric key | Score a run into a comparable number: `LogitDiffStep`, `KLDivergenceStep`, `AnswerLogProbStep`, `RecoveredMetricStep`. | +| Metric steps ‡ | logits keys | a metric key | Score a run into a comparable number: `LogitDiffStep`, `KLDivergenceStep`, `AnswerLogProbStep`, `AnswerRankStep`, `RecoveredMetricStep`. | | `Save` | (any present) | `output_dir` | Persist all results to organized subdirectories. | | `SAEEncode` † | `prompts` | `sae_record` | Encode residuals through an SAE loaded from HuggingFace. | | `SAETopActivations` | `sae_record` | `feature_examples` | Rank the top-K activating contexts per SAE feature. | @@ -182,10 +183,20 @@ src/murano/ plotting/ ``` -## Examples +## Notebooks -- `examples/quick_prototype.py` -- `examples/sae_example.py` +Start with [`notebooks/getting_started.ipynb`](notebooks/getting_started.ipynb), +then pick the application you need: + +- [`notebooks/applications/`](notebooks/applications/) — one self-contained + notebook per application: steering, probing, logit lens, logit attribution, + attention, ablation, activation patching, circuit discovery, metrics, custom + pipelines, weight ablation, and sparse autoencoders. +- [`notebooks/reproductions/`](notebooks/reproductions/) — published results + reproduced with Murano. + +Every notebook is executed before it is committed, and all of them render on the +[documentation site](https://ukplab.github.io/murano/docs/notebooks/getting_started/). ## Development diff --git a/docs/.gitignore b/docs/.gitignore index bc0db9e..1994b42 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -3,3 +3,5 @@ node_modules/ .astro/ src/content/docs/docs/reference/ doc_report.md +src/content/docs/docs/notebooks/ +public/notebook-figures/ diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs index b2b3867..81d3807 100644 --- a/docs/astro.config.mjs +++ b/docs/astro.config.mjs @@ -55,6 +55,10 @@ export default defineConfig({ { label: 'Pipelines', slug: 'docs/guides/pipeline' }, ], }, + { + label: 'Notebooks', + autogenerate: { directory: 'docs/notebooks' }, + }, { label: 'Reproductions', items: [ diff --git a/docs/scripts/gen_api_docs.py b/docs/scripts/gen_api_docs.py index cac2079..34f5595 100644 --- a/docs/scripts/gen_api_docs.py +++ b/docs/scripts/gen_api_docs.py @@ -21,6 +21,7 @@ ("murano.model", "model"), ("murano.pipeline", "pipeline"), ("murano.dataset", "dataset"), + ("murano.tasks", "tasks"), ("murano.artifacts", "artifacts"), ("murano.results", "results"), ("murano.io", "io"), @@ -45,6 +46,7 @@ ("murano.steps.logit_attribution", "steps/logit_attribution"), ("murano.steps.sae", "steps/sae"), ("murano.steps.metrics", "steps/metrics"), + ("murano.plotting.activations", "plotting/activations"), ("murano.plotting.steering", "plotting/steering"), ("murano.plotting.probing", "plotting/probing"), ("murano.plotting.logit_lens", "plotting/logit_lens"), diff --git a/docs/scripts/gen_notebook_docs.py b/docs/scripts/gen_notebook_docs.py new file mode 100644 index 0000000..77e8cf0 --- /dev/null +++ b/docs/scripts/gen_notebook_docs.py @@ -0,0 +1,206 @@ +"""Render the executed notebooks into Starlight pages. + +Run from the repo root: + python docs/scripts/gen_notebook_docs.py + +Outputs Markdown to docs/src/content/docs/docs/notebooks/ and figure images to +docs/public/notebook-figures/. Both are generated, gitignored, and rebuilt on +every docs deploy, exactly like the API reference. + +The notebooks are committed with their outputs, so nothing here runs a model. +Figures are stored only as Plotly JSON, which no Markdown renderer understands, +so each figure is rebuilt into a static PNG with kaleido (the same headless +exporter the `plot` extra pins for Slurm nodes). +""" + +from __future__ import annotations + +import base64 +import json +import re +import warnings +from pathlib import Path + +REPO_ROOT = Path(__file__).parent.parent.parent +NOTEBOOKS = REPO_ROOT / "notebooks" +OUT = REPO_ROOT / "docs" / "src" / "content" / "docs" / "docs" / "notebooks" +FIGURES = REPO_ROOT / "docs" / "public" / "notebook-figures" +FIGURE_URL = "/murano/notebook-figures" +GITHUB = "https://github.com/UKPLab/murano/blob/main/notebooks" + +# Ordered so the sidebar reads as a curriculum rather than an alphabet. +ORDER = [ + "getting_started.ipynb", + "applications/steering.ipynb", + "applications/probing.ipynb", + "applications/logit_lens.ipynb", + "applications/logit_attribution.ipynb", + "applications/attention.ipynb", + "applications/ablation.ipynb", + "applications/activation_patching.ipynb", + "applications/circuit_discovery.ipynb", + "applications/metrics.ipynb", + "applications/custom_pipeline.ipynb", + "applications/weight_ablation.ipynb", + "applications/sae_features.ipynb", + "applications/sae_steering.ipynb", + "applications/sae_enrichment.ipynb", +] + +_MAX_OUTPUT_LINES = 40 +_MAX_DESCRIPTION = 150 + + +def _title_and_description(cells: list[dict]) -> tuple[str, str]: + """Take the page title from the H1 and the description from the paragraph under it.""" + header = "".join(cells[0]["source"]) + title = header.splitlines()[0].lstrip("# ").strip() + body = header.split("\n", 1)[1].strip() + first_paragraph = body.split("\n\n", 1)[0].replace("\n", " ").strip() + description = re.sub(r"[*`]", "", first_paragraph) + if len(description) > _MAX_DESCRIPTION: + # Cut at a word boundary; a description sliced mid-word reads as a bug. + description = description[:_MAX_DESCRIPTION].rsplit(" ", 1)[0] + "..." + return title, description + + +def _stream_text(cell: dict) -> str: + text = "".join( + "".join(out.get("text", "")) + for out in cell.get("outputs", []) + if out.get("output_type") == "stream" and out.get("name") == "stdout" + ) + for out in cell.get("outputs", []): + if out.get("output_type") == "execute_result": + text += "".join(out.get("data", {}).get("text/plain", "")) + return text.rstrip() + + +def _write_figures(cell: dict, slug: str, counter: list[int]) -> list[str]: + """Write each figure in a cell as a PNG; return the image paths. + + A Plotly figure lives in the notebook only as its JSON spec, which no Markdown + renderer understands, so it is rebuilt through kaleido. A notebook that already + rasterized its figures carries them as base64 ``image/png`` instead, and those + are written straight out: dropping them would leave the page silently figureless. + """ + import plotly.graph_objects as go + import plotly.io as pio + + paths = [] + for out in cell.get("outputs", []): + data = out.get("data", {}) + spec = data.get("application/vnd.plotly.v1+json") + png = data.get("image/png") + if not spec and not png: + continue + + counter[0] += 1 + name = f"{slug}-{counter[0]}.png" + if spec: + # The mime bundle carries a "config" key that go.Figure does not accept, + # so rebuild from data and layout only. + figure = go.Figure(data=spec.get("data", []), layout=spec.get("layout", {})) + with warnings.catch_warnings(): + # kaleido<1 ships a self-contained Chromium and is the only exporter + # that works headless; its deprecation notice is not actionable here. + warnings.simplefilter("ignore", DeprecationWarning) + pio.write_image( + figure, FIGURES / name, format="png", width=900, scale=2 + ) + else: + payload = png if isinstance(png, str) else "".join(png) + (FIGURES / name).write_bytes(base64.b64decode(payload)) + paths.append(f"{FIGURE_URL}/{name}") + return paths + + +def _render(path: Path, order: int) -> str: + notebook = json.loads(path.read_text()) + cells = notebook["cells"] + title, description = _title_and_description(cells) + relative = path.relative_to(NOTEBOOKS).as_posix() + slug = path.stem + + # The header cell becomes the frontmatter plus the intro block: title, then + # everything under it (overview, questions, outline, model, extras). + intro = "".join(cells[0]["source"]).split("\n", 1)[1].strip() + + lines = [ + "---", + # json.dumps yields a double-quoted scalar, which YAML accepts and which + # survives the colons these titles contain. + f"title: {json.dumps(title)}", + f"description: {json.dumps(description)}", + "sidebar:", + f" order: {order}", + "---", + "", + ":::note", + f"Generated from [`notebooks/{relative}`]({GITHUB}/{relative}), which you " + "can run yourself. The outputs below are the ones it produced.", + ":::", + "", + intro, + "", + ] + + counter = [0] + for cell in cells[1:]: + if cell["cell_type"] == "markdown": + lines += ["".join(cell["source"]), ""] + continue + + source = "".join(cell["source"]).strip() + if source: + lines += ["```python", source, "```", ""] + + text = _stream_text(cell) + if text: + shown = text.splitlines() + if len(shown) > _MAX_OUTPUT_LINES: + dropped = len(shown) - _MAX_OUTPUT_LINES + shown = shown[:_MAX_OUTPUT_LINES] + [f"... ({dropped} more lines)"] + lines += ["```text", *shown, "```", ""] + + for image in _write_figures(cell, slug, counter): + lines += [f"![{title} figure {counter[0]}]({image})", ""] + + return "\n".join(lines).rstrip() + "\n" + + +def main() -> None: + try: + import plotly # noqa: F401 + except ImportError as exc: # pragma: no cover - deploy-time guard + raise SystemExit( + "gen_notebook_docs needs the plot extra: uv sync --all-extras" + ) from exc + + OUT.mkdir(parents=True, exist_ok=True) + FIGURES.mkdir(parents=True, exist_ok=True) + + missing = [name for name in ORDER if not (NOTEBOOKS / name).exists()] + if missing: + raise SystemExit(f"listed in ORDER but not on disk: {missing}") + + found = { + p.relative_to(NOTEBOOKS).as_posix() + for p in [NOTEBOOKS / "getting_started.ipynb"] + + sorted((NOTEBOOKS / "applications").glob("*.ipynb")) + } + unlisted = found - set(ORDER) + if unlisted: + raise SystemExit(f"notebooks missing from ORDER: {sorted(unlisted)}") + + for position, name in enumerate(ORDER, 1): + page = _render(NOTEBOOKS / name, order=position) + (OUT / f"{Path(name).stem}.md").write_text(page) + print(f" {name} -> {OUT.relative_to(REPO_ROOT)}/{Path(name).stem}.md") + + figures = len(list(FIGURES.glob("*.png"))) + print(f"\n{len(ORDER)} notebook pages, {figures} figures") + + +if __name__ == "__main__": + main() diff --git a/docs/src/pages/reproductions/function_vectors.mdx b/docs/src/pages/reproductions/function_vectors.mdx index 15cc8cc..07ed17f 100644 --- a/docs/src/pages/reproductions/function_vectors.mdx +++ b/docs/src/pages/reproductions/function_vectors.mdx @@ -1,7 +1,7 @@ --- layout: ../../layouts/ReproLayout.astro title: "Function Vectors: a portable task representation" -description: Reproducing Todd et al. (ICLR 2024): a small set of attention heads carry a compact, portable representation of an in-context task, summing them gives a function vector, and adding it to a zero-shot prompt makes GPT-J perform the task, all with Murano recording, causal mediation, and interventions. +description: "Reproducing Todd et al. (ICLR 2024): a small set of attention heads carry a compact, portable representation of an in-context task, summing them gives a function vector, and adding it to a zero-shot prompt makes GPT-J perform the task, all with Murano recording, causal mediation, and interventions." ---
diff --git a/docs/src/pages/reproductions/geometry_of_truth.mdx b/docs/src/pages/reproductions/geometry_of_truth.mdx index 57bc367..0aa006b 100644 --- a/docs/src/pages/reproductions/geometry_of_truth.mdx +++ b/docs/src/pages/reproductions/geometry_of_truth.mdx @@ -1,7 +1,7 @@ --- layout: ../../layouts/ReproLayout.astro title: "The Geometry of Truth: a linear truth direction" -description: Reproducing Marks & Tegmark (2023): true and false statements separate linearly in the residual stream, a mass-mean probe reads the truth direction, it generalizes across topics, and adding it flips the model's judgement, all with Murano recording, probing, and interventions. +description: "Reproducing Marks & Tegmark (2023): true and false statements separate linearly in the residual stream, a mass-mean probe reads the truth direction, it generalizes across topics, and adding it flips the model's judgement, all with Murano recording, probing, and interventions." ---
diff --git a/docs/src/pages/reproductions/ioi.mdx b/docs/src/pages/reproductions/ioi.mdx index aacc750..0fa5aaf 100644 --- a/docs/src/pages/reproductions/ioi.mdx +++ b/docs/src/pages/reproductions/ioi.mdx @@ -1,7 +1,7 @@ --- layout: ../../layouts/ReproLayout.astro title: "IOI: a Circuit for Indirect Object Identification" -description: Reproducing Wang et al. (ICLR 2023): localizing the name-mover, negative name-mover, and S-inhibition heads of GPT-2 small with Murano path patching, attention analysis, and OV circuits. +description: "Reproducing Wang et al. (ICLR 2023): localizing the name-mover, negative name-mover, and S-inhibition heads of GPT-2 small with Murano path patching, attention analysis, and OV circuits." ---
diff --git a/examples/activation_visualization.py b/examples/activation_visualization.py deleted file mode 100644 index a6eacf1..0000000 --- a/examples/activation_visualization.py +++ /dev/null @@ -1,166 +0,0 @@ -""" -Activation visualization using the Pipeline API. - -Demonstrates: - 1. Loading a contrastive dataset via MuranoDataset. - 2. Recording activations with the Record step. - 3. Visualizing the resulting ActivationStore with PlotterLens - (PCA / LDA dimensionality reduction + Plotly scatter plot). - -Requires the ``probe`` and ``plot`` extras: - pip install murano-interp[probe,plot] -""" - -from __future__ import annotations - -import os - -import pandas as pd -import torch -from sklearn.preprocessing import Normalizer -from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA - -from murano import MuranoModel, Pipeline -from murano.dataset import MuranoDataset -from murano.nodes import AddressLike -from murano.steps.load import Load -from murano.steps.record import ActivationStore, Record - - -class PlotterLens: - """Dimensionality reduction + Plotly scatter plot for ActivationStore. - - Args: - reducer: Any sklearn-style object supporting ``fit_transform(X[, y])``. - Examples: PCA(n_components=2), LDA(), TSNE(), UMAP(). - save_path: Path to save the resulting Plotly figure (HTML or image). - """ - - def __init__(self, reducer, save_path: str): - self.reducer = reducer - self.save_path = save_path - - def observe( - self, - store: ActivationStore, - layer: AddressLike, - title: str = "Activation Visualization", - ) -> None: - """Reduce activations for a single layer and plot. - - Args: - store: ActivationStore produced by the Record step. - layer: A component address (a :class:`~murano.Node`, a - ``(layer, module)`` tuple, or an address string), or a bare - layer index that is resolved to its node when a single module - was recorded. - title: Plot title. - """ - if isinstance(layer, int) and not isinstance(layer, bool): - matches = [node for node in store.positive if node.layer == layer] - if len(matches) != 1: - raise KeyError( - f"Layer {layer} maps to {len(matches)} nodes ({matches}); " - f"pass an explicit address (e.g. (layer, module) or a Node)." - ) - key: AddressLike = matches[0] - else: - key = layer - pos = store.positive[key] # [N_pos, d_model] - neg = store.negative[key] # [N_neg, d_model] - - X = torch.cat([pos, neg], dim=0).numpy() - y = ["positive"] * len(pos) + ["negative"] * len(neg) - - X = Normalizer().fit_transform(X) - - # Fit reducer — pass labels for supervised methods (LDA) - reduced = self.reducer.fit_transform(X, y) - - n_dims = reduced.shape[1] - columns = [f"Component {i + 1}" for i in range(n_dims)] - df = pd.DataFrame(reduced, columns=columns) - df["label"] = y - - import plotly.express as px # pyright: ignore[reportMissingImports] - - if n_dims == 1: - # Single component — scatter along x with a constant y offset per label - df["y_offset"] = df["label"].map({"positive": 0, "negative": 1}) - fig = px.scatter( - df, - x="Component 1", - y="y_offset", - color="label", - title=title, - labels={"Component 1": "Dim 1", "y_offset": ""}, - ) - fig.update_yaxes(showticklabels=False) - else: - fig = px.scatter( - df, - x="Component 1", - y="Component 2", - color="label", - title=title, - labels={"Component 1": "Dim 1", "Component 2": "Dim 2"}, - ) - fig.update_yaxes(scaleanchor="x", scaleratio=1) - - fig.update_traces(marker=dict(size=6, opacity=0.7)) - fig.update_layout(width=800, height=800) - - os.makedirs(os.path.dirname(self.save_path), exist_ok=True) - if self.save_path.endswith(".html"): - fig.write_html(self.save_path) - else: - fig.write_image(self.save_path) - - print(f"Plot saved to {self.save_path}") - - -def main(): - model = MuranoModel("gpt2") - - # Small synthetic contrastive dataset - positive_texts = [ - "I love this product", - "This is amazing", - "What a wonderful day", - "I am so happy", - "This is fantastic", - ] - negative_texts = [ - "I hate this product", - "This is terrible", - "What a horrible day", - "I am so sad", - "This is awful", - ] - - dataset = MuranoDataset( - positive_texts=positive_texts, - negative_texts=negative_texts, - ) - - # Pipeline: Load → Record (layer 6, last token) - pipe = Pipeline( - [ - Load(dataset), - Record(model, layers=[6], position="last", batch_size=4), - ] - ) - results = pipe.run() - - store: ActivationStore = results["record"] - - # Visualise layer 6 with LDA - plotter = PlotterLens( - reducer=LDA(n_components=2), - save_path="plots/activation_lda.html", - ) - plotter.observe(store, layer=6, title="LDA of Layer 6 Activations") - - -if __name__ == "__main__": - main() diff --git a/examples/logit_lens.py b/examples/logit_lens.py deleted file mode 100644 index 0beff45..0000000 --- a/examples/logit_lens.py +++ /dev/null @@ -1,40 +0,0 @@ -"""Visualize layer-wise next-token predictions with the logit lens. - -Demonstrates: - 1. Loading prompts via LoadPrompts. - 2. Computing per-layer next-token distributions with the LogitLens step. - 3. Rendering the result as a heatmap with plot_logit_lens. - -Cross-architecture: works on any model nnterp can standardize (Llama, GPT-2, -Mistral, Qwen, OPT, etc.). The example below uses Llama-3.2-1B, but you can -swap the model_id for any HuggingFace causal-LM. - -Requires the ``plot`` extra: - pip install murano-interp[plot] -""" - -from __future__ import annotations - -from murano import MuranoModel, Pipeline -from murano.plotting import plot_logit_lens -from murano.steps.logit_lens import LogitLens -from murano.steps.prompts import LoadPrompts - - -def main(): - model = MuranoModel("meta-llama/Llama-3.2-1B-Instruct") - - pipe = Pipeline( - [ - LoadPrompts(["The Eiffel Tower is in the city of"]), - LogitLens(model), - ] - ) - results = pipe.run() - fig = plot_logit_lens(results["logit_lens"], title="Logit Lens: Llama-3.2-1B") - fig.write_html("/tmp/logit_lens.html") - print("Saved /tmp/logit_lens.html") - - -if __name__ == "__main__": - main() diff --git a/examples/quick_prototype.py b/examples/quick_prototype.py deleted file mode 100644 index cd3e18a..0000000 --- a/examples/quick_prototype.py +++ /dev/null @@ -1,40 +0,0 @@ -"""Quick-tier Murano prototype. - -Run after installing the project with: - pip install -e . -""" - -from __future__ import annotations - -import murano - - -def main() -> None: - model = murano.Model("meta-llama/Llama-3.2-1B-Instruct") - - acts = model.record("The Eiffel Tower is located in", layers=[5, 10, 15]) - print("Layer 10 activation shape:", acts.positive[(10, "residual")].shape) - - direction = model.find_direction( - positive=[ - "What a wonderful, delightful day", - "This is fantastic and uplifting", - ], - negative=[ - "What a miserable, dreadful day", - "This is awful and depressing", - ], - layers=[10, 11, 12, 13], - ) - print("Best layer:", direction.best_layer) - print("Scores:", direction.separation_scores) - - prompt = "The movie was" - clean = model.generate(prompt) - ablated = model.generate(prompt, ablate=direction) - print("Clean:", clean) - print("Ablated:", ablated) - - -if __name__ == "__main__": - main() diff --git a/examples/record_intervene.py b/examples/record_intervene.py deleted file mode 100644 index 6e2723a..0000000 --- a/examples/record_intervene.py +++ /dev/null @@ -1,83 +0,0 @@ -""" -Record, steer, and intervene using the Pipeline API. - -Demonstrates: - 1. Loading a contrastive sentiment dataset (from sentiment_data.py). - 2. Recording activations and computing a steering vector. - 3. Applying the steering vector during generation and comparing outputs. - -Usage: - python examples/record_intervene.py -""" - -from __future__ import annotations - -from murano import MuranoModel, Pipeline -from murano.dataset import MuranoDataset -from murano.steps.intervene import InterveneResult, Intervene, steer_direction -from murano.steps.load import Load -from murano.steps.record import Record -from murano.steps.train import SteeringResult, SteeringVector -from sentiment_data import NEGATIVE_SAMPLES, POSITIVE_SAMPLES - - -def main(): - model = MuranoModel("gpt2") - - # --- Build contrastive dataset --- - train_dataset = MuranoDataset( - positive_texts=POSITIVE_SAMPLES, - negative_texts=NEGATIVE_SAMPLES, - ) - - # --- Pipeline 1: Record + SteeringVector --- - train_pipe = Pipeline( - [ - Load(train_dataset), - Record(model, layers=[8], position="last", batch_size=8), - SteeringVector(normalize=True), - ] - ) - train_results = train_pipe.run() - steering: SteeringResult = train_results["steering"] - - print(f"Best steering layer: {steering.best_layer}") - print(f"Separation scores: {steering.separation_scores}") - - # --- Pipeline 2: Intervene (steer during generation) --- - eval_texts = [ - "I think that the food was", - "The food was", - "My friend is a", - ] - eval_dataset = MuranoDataset( - positive_texts=eval_texts, - negative_texts=[], - ) - - steer_fn = steer_direction( - steering.direction_per_layer, - alpha=6.0, - ) - - eval_pipe = Pipeline( - [ - Load(eval_dataset), - Intervene( - model, fn=steer_fn, layers=[8], gen_kwargs={"max_new_tokens": 15} - ), - ] - ) - eval_results = eval_pipe.run() - intervene_result: InterveneResult = eval_results["intervene"] - - # --- Print comparison --- - print("\n=== Generation Comparison ===") - for i, prompt in enumerate(eval_texts): - print(f'\nPrompt: "{prompt}"') - print(f' Clean: "{intervene_result.clean_generations[i]}"') - print(f' Steered: "{intervene_result.modified_generations[i]}"') - - -if __name__ == "__main__": - main() diff --git a/examples/sae_example.py b/examples/sae_example.py deleted file mode 100644 index 6aa8865..0000000 --- a/examples/sae_example.py +++ /dev/null @@ -1,71 +0,0 @@ -"""Inspect SAE features via top-activating contexts. - -Pipeline: - 1. Load prompts - 2. Encode prompts through an SAE loaded from HuggingFace via sae-lens - 3. For each feature, find the top-K (text, token) positions where it activated - 4. Save results to disk and print the table - -Defaults to Gemma 2 2B + gemma-scope layer-8 residual SAEs. The target layer -and hook point are read from the SAE's own config. - -Requires the ``sae`` extra: - pip install murano-interp[sae] -""" - -from __future__ import annotations - -from murano import MuranoModel, Pipeline -from murano.steps import SAEEncode, SAETopActivations, Save -from murano.steps.prompts import LoadPrompts - - -MODEL_ID = "google/gemma-2-2b-it" -SAE_RELEASE = "gemma-scope-2b-pt-res-canonical" -SAE_ID = "layer_8/width_16k/canonical" -K = 10 -OUTPUT_DIR = "/tmp/murano_sae_example" - - -PROMPTS = [ - "The Eiffel Tower is located in the city of", - "Photosynthesis converts sunlight into", - "She baked a cherry pie for", - "The Roman Empire fell in the year", - "Quantum computers store information in", - "Mozart composed his first symphony at the age of", - "Mount Everest is the tallest mountain in", - "DNA carries the genetic instructions of", -] - - -def main() -> None: - model = MuranoModel(MODEL_ID) - - results = Pipeline( - [ - # -> 'prompts': the input texts wrapped as a PromptBatch - LoadPrompts(PROMPTS), - # -> 'sae_record': per-token raw SAE feature activations - SAEEncode(model, release=SAE_RELEASE, sae_id=SAE_ID), - # -> 'feature_examples': top-K activating contexts for the first K features - SAETopActivations(model, k=K, feat_ids=list(range(K))), - # -> 'output_dir': persists everything above under OUTPUT_DIR - Save(output_dir=OUTPUT_DIR, model_id=MODEL_ID), - ] - ).run() - - examples = results["feature_examples"] - for feat_id in examples.feat_ids: - print(f"\n── feature {feat_id} ──") - for context, token, act_val in zip( - examples.contexts[feat_id], - examples.tokens[feat_id], - examples.act_vals[feat_id], - ): - print(f" {act_val:8.4f} [{token!r:>14}] {context}") - print(f"\nArtifacts saved to {results['output_dir']}") - - -if __name__ == "__main__": - main() diff --git a/examples/sentiment_data.py b/examples/sentiment_data.py deleted file mode 100644 index 3da4543..0000000 --- a/examples/sentiment_data.py +++ /dev/null @@ -1,112 +0,0 @@ -""" -Sentiment datasets for steering vector experiments. - -Contains positive and negative sentiment examples for computing -steering vectors that can steer model behavior toward positive or negative sentiment. -""" - -POSITIVE_SAMPLES = [ - "I absolutely love this!", - "You are the best friend ever.", - "This is wonderful and amazing.", - "I am so happy to see you.", - "What a beautiful day it is.", - "I really admire your work.", - "You are a fantastic person.", - "I love you so much.", - "This is the best thing ever.", - "I am grateful for your kindness.", - "This makes me incredibly happy.", - "You have such a wonderful personality.", - "I'm so excited about this opportunity.", - "This is absolutely perfect!", - "You did an excellent job.", - "I'm thrilled to be here.", - "This is exactly what I needed.", - "You're such a kind and caring person.", - "I feel so blessed today.", - "This is truly remarkable.", - "You make everything better.", - "I'm so proud of your achievements.", - "This brings me great joy.", - "You have a beautiful heart.", - "I'm incredibly grateful for this.", - "This is absolutely fantastic!", - "You're an amazing human being.", - "I feel so lucky right now.", - "This is beyond wonderful.", - "You inspire me every day.", - "I'm so happy and content.", - "This is pure perfection.", - "You have such a positive energy.", - "I'm filled with gratitude.", - "This is absolutely delightful.", - "You're a true blessing in my life.", - "I feel so peaceful and happy.", - "This is incredibly uplifting.", - "You bring so much joy to others.", - "I'm so thankful for everything.", - "This is absolutely marvelous.", - "You have such a warm heart.", - "I feel so optimistic today.", - "This is truly inspiring.", - "You're such a wonderful soul.", - "I'm so excited and happy.", - "This is absolutely brilliant.", - "You make the world a better place.", - "I feel so blessed and grateful.", - "This is pure happiness.", -] - -NEGATIVE_SAMPLES = [ - "I absolutely hate this!", - "You are the worst person ever.", - "This is terrible and awful.", - "I am so angry to see you.", - "What a horrible day it is.", - "I really despise your work.", - "You are a terrible person.", - "I hate you so much.", - "This is the worst thing ever.", - "I am disgusted by your behavior.", - "This makes me incredibly sad.", - "You have such a terrible personality.", - "I'm so disappointed about this.", - "This is absolutely horrible!", - "You did a terrible job.", - "I'm devastated to be here.", - "This is exactly what I didn't need.", - "You're such a mean and uncaring person.", - "I feel so cursed today.", - "This is truly awful.", - "You make everything worse.", - "I'm so ashamed of your actions.", - "This brings me great sorrow.", - "You have an ugly heart.", - "I'm incredibly frustrated with this.", - "This is absolutely terrible!", - "You're a horrible human being.", - "I feel so unlucky right now.", - "This is beyond awful.", - "You depress me every day.", - "I'm so sad and miserable.", - "This is pure imperfection.", - "You have such a negative energy.", - "I'm filled with resentment.", - "This is absolutely dreadful.", - "You're a true curse in my life.", - "I feel so anxious and unhappy.", - "This is incredibly depressing.", - "You bring so much sadness to others.", - "I'm so bitter about everything.", - "This is absolutely appalling.", - "You have such a cold heart.", - "I feel so pessimistic today.", - "This is truly disheartening.", - "You're such a terrible soul.", - "I'm so upset and angry.", - "This is absolutely awful.", - "You make the world a worse place.", - "I feel so cursed and bitter.", - "This is pure misery.", -] diff --git a/notebooks/README.md b/notebooks/README.md index e95be21..a1c5bf6 100644 --- a/notebooks/README.md +++ b/notebooks/README.md @@ -1,15 +1,103 @@ -# Murano tutorials +# Murano notebooks -Hands-on Jupyter notebooks that walk through Murano workflows end-to-end. +Hands-on Jupyter notebooks that walk through Murano workflows end-to-end. Every +one of them is executed before it is committed, so the outputs you see are the +ones the code produced. They also render on the +[documentation site](https://ukplab.github.io/murano/docs/notebooks/getting_started/). -## SAE (Sparse Autoencoders) +New to Murano? Start with [`getting_started.ipynb`](getting_started.ipynb): it +covers the quick API, the `Pipeline` / `Step` / `Results` core, saving, and +plotting in one sitting. Everything else assumes it. -Requires the `[sae]` and `[notebook]` extras: +Each notebook states the extras it needs at the top, and shares the same shape: an +overview, the questions it answers, a numbered outline, and a "What next". To +install everything: ```bash -pip install -e ".[sae,notebook]" +pip install -e ".[all]" ``` -- [`sae/01_basics.ipynb`](sae/01_basics.ipynb) — Load a pre-trained SAE from HuggingFace, encode prompts through it, and inspect what each feature fires on. -- [`sae/02_feature_steering.ipynb`](sae/02_feature_steering.ipynb) — Find an SAE feature for a concept (the "Golden Gate Bridge" workflow), extract its decoder direction, and steer model generations with it. -- [`sae/03_sst2_feature_enrichment.ipynb`](sae/03_sst2_feature_enrichment.ipynb) — Rank SST-2 SAE features by sentiment selectivity and visualize feature logit effects plus token activations. +The datasets are not copied between notebooks. They come from +[`murano.tasks`](../src/murano/tasks.py): `ioi()` builds the +indirect-object-identification task, `sentiment()` returns contrastive sentences. +Neither is a component sweep hand-rolled: a study that runs the same chain once per +component uses the [`Sweep`](../src/murano/steps/sweep.py) step, and every pipeline +is built at cell level so a reader can see the steps. + +## Getting started + +- [`getting_started.ipynb`](getting_started.ipynb) — record activations, find a + steering direction, generate with it, then rebuild the same experiment as an + explicit pipeline and write a custom step. Extras: `[plot]`. + +## Applications + +One self-contained notebook per application. Most run on GPT-2 small and take about +a minute each, dominated by loading the model; the exceptions are called out below. + +**Concepts and directions** + +- [`applications/steering.ipynb`](applications/steering.ipynb) — derive a + sentiment direction and steer generation with it, including the two ways to get + it wrong. Extras: `[plot]`. +- [`applications/probing.ipynb`](applications/probing.ipynb) — train a linear + probe per layer, then project the same activations to see the structure the + probe exploits. Extras: `[probe,plot]`. +- [`applications/logit_lens.ipynb`](applications/logit_lens.ipynb) — read each + layer's running next-token prediction. Extras: `[plot]`. + +**Finding the components responsible for a behavior** + +- [`applications/logit_attribution.ipynb`](applications/logit_attribution.ipynb) + — attribute a logit difference to individual heads and MLPs, then rank them. + Extras: `[plot]`. +- [`applications/attention.ipynb`](applications/attention.ipynb) — summarize + every head with one number, inspect a single head's pattern, ablate it, and read + what it writes through its OV circuit. Extras: `[plot]`. +- [`applications/ablation.ipynb`](applications/ablation.ipynb) — zero, mean and + resample ablation on the same head, and why they disagree. No extras. +- [`applications/activation_patching.ipynb`](applications/activation_patching.ipynb) + — patch clean activations into a corrupted run and measure how much behavior + each head restores. Extras: `[plot]`. +- [`applications/circuit_discovery.ipynb`](applications/circuit_discovery.ipynb) + — compose attribution, sweeping, selection and path patching into one experiment + that recovers the indirect-object-identification circuit. Extras: `[plot]`. + +**Measuring and composing** + +- [`applications/metrics.ipynb`](applications/metrics.ipynb) — every metric step + on one intervention, and why they disagree. No extras. +- [`applications/custom_pipeline.ipynb`](applications/custom_pipeline.ipynb) — + mix probing and steering to answer a question no single step answers, by writing + the step that is missing. Extras: `[probe,plot]`. +- [`applications/weight_ablation.ipynb`](applications/weight_ablation.ipynb) — + project a direction out of the weights themselves, not just the activations. + Needs a Llama-family model (Llama-3.2-1B) rather than GPT-2, and a few GB of GPU + memory. No extras. + +**Sparse autoencoders** + +- [`applications/sae_features.ipynb`](applications/sae_features.ipynb) — encode + prompts through a pre-trained SAE, confirm the code is sparse, and read what a + feature means through its decoder. Extras: `[sae]`. +- [`applications/sae_steering.ipynb`](applications/sae_steering.ipynb) — find the + feature for a concept, then steer with it, and find that no strength both invokes + the concept and preserves the text. Extras: `[sae]`. +- [`applications/sae_enrichment.ipynb`](applications/sae_enrichment.ipynb) — rank + thousands of features by how well they separate two classes, and see why + selectivity is not meaning. Extras: `[sae,data,plot]`. + +`sae_features` and `sae_steering` run **Gemma 2 2B**, which is gated on the Hub: +accept its licence once, then `hf auth login`. Expect a few GB of GPU memory. + +## Reproductions + +Published results, reproduced with Murano. These use larger models than the +application notebooks. + +- [`reproductions/wang2023_ioi.ipynb`](reproductions/wang2023_ioi.ipynb) — the + indirect-object-identification circuit in GPT-2 small. +- [`reproductions/marks2023_geometry_of_truth.ipynb`](reproductions/marks2023_geometry_of_truth.ipynb) + — the linear structure of truth in Llama-2-13B. +- [`reproductions/todd2024_function_vectors.ipynb`](reproductions/todd2024_function_vectors.ipynb) + — function vectors in GPT-J-6B. diff --git a/notebooks/applications/ablation.ipynb b/notebooks/applications/ablation.ipynb new file mode 100644 index 0000000..c9c186b --- /dev/null +++ b/notebooks/applications/ablation.ipynb @@ -0,0 +1,470 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "92debfaa", + "metadata": {}, + "source": [ + "# Ablation: deleting a component, and why the delete matters\n", + "\n", + "To test whether a component matters, remove it and see what breaks. The catch is\n", + "that \"remove\" is not one operation. You can zero the component, replace it with its\n", + "average, or resample it from a different prompt, and these can disagree completely\n", + "about whether the same head is important.\n", + "\n", + "This notebook runs all three on the same head and shows them disagreeing.\n", + "\n", + "**Key questions**\n", + "\n", + "- What does it mean to delete a component from a network that never sees zeros?\n", + "- Do zero, mean and resample ablation agree about which head matters?\n", + "- How does ablation differ from activation patching?\n", + "\n", + "**Structure**\n", + "\n", + "1. Set up\n", + "2. Establish the baseline\n", + "3. Compare zero, mean and resample\n", + "4. Ablate whole components, not just heads\n", + "5. Ablation versus patching\n", + "6. Save\n", + "\n", + "**Model and data.** GPT-2 small in float32. It is small enough that bfloat16 rounding visibly degrades its predictions, so the notebooks load it explicitly in float32. Eight indirect-object prompt pairs from `murano.tasks.ioi`.\n", + "\n", + "**Requirements.** No extras: `pip install murano-interp`" + ] + }, + { + "cell_type": "markdown", + "id": "363256e5", + "metadata": {}, + "source": [ + "## 1. Set up" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "0fd6d23d", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:37:34.797079Z", + "iopub.status.busy": "2026-07-10T11:37:34.797012Z", + "iopub.status.idle": "2026-07-10T11:38:22.378420Z", + "shell.execute_reply": "2026-07-10T11:38:22.377832Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gpt2: 12 layers, 12 heads\n" + ] + } + ], + "source": [ + "import torch\n", + "\n", + "from murano import MuranoModel, Pipeline, keys\n", + "from murano.nodes import Node, NodeSet\n", + "from murano.steps import (\n", + " Ablate,\n", + " KLDivergenceStep,\n", + " LoadPrompts,\n", + " LogitDiffStep,\n", + " Logits,\n", + " Save,\n", + " Sweep,\n", + ")\n", + "\n", + "OUTPUT_DIR = \"murano_outputs/ablation\"\n", + "\n", + "# GPT-2 is small enough that bfloat16 rounding degrades its predictions.\n", + "model = MuranoModel(\"gpt2\", dtype=torch.float32)\n", + "print(f\"{model.model_id}: {model.n_layers} layers, {model.n_heads} heads\")" + ] + }, + { + "cell_type": "markdown", + "id": "48ab5edb", + "metadata": {}, + "source": [ + "This notebook uses the **indirect-object-identification** task from\n", + "`murano.tasks`. Each clean prompt names two people and then has the *subject*\n", + "give a drink, so the next token should be the other name, the *indirect object*.\n", + "The corrupt prompt swaps who gives, which flips the answer.\n", + "\n", + "```\n", + "clean : When Mary and John went to the store, John gave a drink to ___ -> \" Mary\"\n", + "corrupt: When Mary and John went to the store, Mary gave a drink to ___ -> \" John\"\n", + "```\n", + "\n", + "The metric throughout is the **logit difference**: the correct name's logit minus\n", + "the incorrect name's. Positive means the model prefers the right answer." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "eed04f14", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:38:22.379711Z", + "iopub.status.busy": "2026-07-10T11:38:22.379463Z", + "iopub.status.idle": "2026-07-10T11:38:22.384873Z", + "shell.execute_reply": "2026-07-10T11:38:22.384520Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "clean : When Mary and John went to the store, John gave a drink to -> ' Mary'\n", + "corrupt: When Mary and John went to the store, Mary gave a drink to -> ' John'\n", + "8 prompt pairs\n" + ] + } + ], + "source": [ + "from murano.tasks import ioi\n", + "\n", + "task = ioi(n=8)\n", + "print(\"clean :\", task.clean[0], \"->\", repr(task.correct[0]))\n", + "print(\"corrupt:\", task.corrupt[0], \"->\", repr(task.incorrect[0]))\n", + "print(f\"{len(task.clean)} prompt pairs\")" + ] + }, + { + "cell_type": "markdown", + "id": "0242e754", + "metadata": {}, + "source": [ + "## 2. Establish the baseline\n", + "\n", + "Every number below is read against the model's undamaged logit difference." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "89ad10c8", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:38:22.385640Z", + "iopub.status.busy": "2026-07-10T11:38:22.385565Z", + "iopub.status.idle": "2026-07-10T11:38:22.653016Z", + "shell.execute_reply": "2026-07-10T11:38:22.652570Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "clean logit difference: +2.3971\n", + "target component : L9.self_attn.h9\n" + ] + } + ], + "source": [ + "HEAD = Node(9, \"self_attn\", head=9)\n", + "\n", + "baseline = Pipeline(\n", + " [\n", + " LoadPrompts(task.clean),\n", + " Logits(model),\n", + " LogitDiffStep(task.correct, task.incorrect, model=model),\n", + " ]\n", + ").run()\n", + "clean_score = baseline[keys.LOGIT_DIFF].value\n", + "print(f\"clean logit difference: {clean_score:+.4f}\")\n", + "print(f\"target component : {HEAD}\")" + ] + }, + { + "cell_type": "markdown", + "id": "04ccd172", + "metadata": {}, + "source": [ + "## 3. Compare zero, mean and resample\n", + "\n", + "`Ablate` supports three replacements, and the choice is a modelling decision:\n", + "\n", + "- **zero** writes zeros. Simple, and badly off-distribution: no real forward pass\n", + " ever produces a zero head output, so the model is being asked about an input it\n", + " has never seen.\n", + "- **mean** writes the component's average over the batch. On-distribution, but it\n", + " erases what varies across prompts, which is often exactly the signal.\n", + "- **resample** writes the component's value from a *different* prompt. Here we\n", + " resample from the corrupt prompts, which ask the model to name the other person.\n", + "\n", + "We score each two ways: the logit difference (did the behavior break?) and the KL\n", + "divergence from the clean output distribution (how much did anything change?)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9d0bbf4b", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:38:22.653955Z", + "iopub.status.busy": "2026-07-10T11:38:22.653850Z", + "iopub.status.idle": "2026-07-10T11:38:22.781014Z", + "shell.execute_reply": "2026-07-10T11:38:22.780763Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "method logit diff change KL\n", + "--------------------------------------------------------\n", + "zero +2.3897 -0.0073 0.0284\n", + "mean (over the batch) +2.3582 -0.0389 0.0341\n", + "resample (from corrupt) +1.6128 -0.7843 0.0313\n", + "resample (shuffle batch) +2.2947 -0.1024 0.0854\n" + ] + } + ], + "source": [ + "methods = {\n", + " \"zero\": {\"method\": \"zero\"},\n", + " \"mean (over the batch)\": {\"method\": \"mean\"},\n", + " \"resample (from corrupt)\": {\"method\": \"resample\", \"source\": task.corrupt},\n", + " \"resample (shuffle batch)\": {\"method\": \"resample\", \"seed\": 0},\n", + "}\n", + "\n", + "# One Sweep, two harvested columns: the swept chain runs once per method and each\n", + "# ablated forward pass is scored both ways.\n", + "damage = Pipeline(\n", + " [\n", + " Sweep(\n", + " over=list(methods),\n", + " steps=lambda name: [\n", + " Ablate(model, targets=[HEAD], **methods[name]),\n", + " LogitDiffStep(\n", + " task.correct,\n", + " task.incorrect,\n", + " logits_key=keys.ABLATED_LOGITS,\n", + " model=model,\n", + " ),\n", + " KLDivergenceStep(p_key=keys.FINAL_LOGITS, q_key=keys.ABLATED_LOGITS),\n", + " ],\n", + " read=[keys.LOGIT_DIFF, keys.KL_DIV],\n", + " )\n", + " ]\n", + ").run(baseline.copy())\n", + "\n", + "swept = damage[keys.SWEEP]\n", + "divergence = swept.column(keys.KL_DIV)\n", + "\n", + "print(f\"{'method':<26} {'logit diff':>11} {'change':>9} {'KL':>8}\")\n", + "print(\"-\" * 56)\n", + "for name, score in swept.scores.items():\n", + " print(\n", + " f\"{name:<26} {score:>+11.4f} {score - clean_score:>+9.4f} \"\n", + " f\"{divergence[name]:>8.4f}\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "0bf9b61a", + "metadata": {}, + "source": [ + "The three methods do not agree, and the disagreement is the point.\n", + "\n", + "**Zero ablation says L9H9 does nothing** (the logit difference barely moves), even\n", + "though `attention.ipynb` showed its attention pattern is a textbook name mover and\n", + "its OV circuit copies names 8 times out of 8.\n", + "\n", + "**Resampling from the corrupt prompts says L9H9 matters a great deal.** Replacing\n", + "its output with what it computes on a prompt whose answer is the *other* name costs\n", + "most of the behavior.\n", + "\n", + "Why the gap? Zeroing takes the head off the data manifold, and the rest of the\n", + "network partly compensates for a signal that is merely missing. Resampling keeps\n", + "the head's output plausible while making it carry the *wrong* information, which is\n", + "the counterfactual the task is actually about.\n", + "\n", + "The lesson generalizes: **an ablation encodes a hypothesis about what the component\n", + "is for.** Zero asks \"what if this head were absent?\" Resample asks \"what if this\n", + "head believed a different prompt?\" Only the second is a question about the circuit.\n", + "\n", + "Note also that the KL column stays small in every row. The output distribution\n", + "barely moves in aggregate, while the answer flips. A distribution-level metric can\n", + "miss a task-level failure entirely." + ] + }, + { + "cell_type": "markdown", + "id": "e70ec500", + "metadata": {}, + "source": [ + "## 4. Ablate whole components, not just heads\n", + "\n", + "`targets` accepts any component address, or a `NodeSet` of several. The same step\n", + "deletes a single head, an entire attention block, or an MLP." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "4066ec1d", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:38:22.782567Z", + "iopub.status.busy": "2026-07-10T11:38:22.782479Z", + "iopub.status.idle": "2026-07-10T11:38:22.858835Z", + "shell.execute_reply": "2026-07-10T11:38:22.858412Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "target logit diff change\n", + "----------------------------------------------\n", + "one head +1.6128 -0.7843\n", + "two heads (NodeSet) +1.1563 -1.2408\n", + "the whole L9 attention +1.2007 -1.1963\n", + "the L8 MLP +2.7033 +0.3062\n" + ] + } + ], + "source": [ + "targets = {\n", + " \"one head\": [HEAD],\n", + " \"two heads (NodeSet)\": NodeSet(\n", + " [Node(9, \"self_attn\", head=9), Node(10, \"self_attn\", head=0)]\n", + " ),\n", + " \"the whole L9 attention\": [Node(9, \"self_attn\")],\n", + " \"the L8 MLP\": [Node(8, \"mlp\")],\n", + "}\n", + "\n", + "scope = Pipeline(\n", + " [\n", + " Sweep(\n", + " over=list(targets),\n", + " steps=lambda name: [\n", + " Ablate(\n", + " model,\n", + " targets=targets[name],\n", + " method=\"resample\",\n", + " source=task.corrupt,\n", + " ),\n", + " LogitDiffStep(\n", + " task.correct,\n", + " task.incorrect,\n", + " logits_key=keys.ABLATED_LOGITS,\n", + " model=model,\n", + " ),\n", + " ],\n", + " read=keys.LOGIT_DIFF,\n", + " )\n", + " ]\n", + ").run(baseline.copy())\n", + "\n", + "print(f\"{'target':<24} {'logit diff':>11} {'change':>9}\")\n", + "print(\"-\" * 46)\n", + "for name, score in scope[keys.SWEEP].scores.items():\n", + " print(f\"{name:<24} {score:>+11.4f} {score - clean_score:>+9.4f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "6799ff90", + "metadata": {}, + "source": [ + "## 5. Ablation versus patching\n", + "\n", + "The two interventions are mirror images, and they answer different questions.\n", + "\n", + "| | base run | what is written in | question answered |\n", + "| --- | --- | --- | --- |\n", + "| **`Ablate`** | clean | a replacement (zero, mean, or another prompt) | is this component *necessary*? |\n", + "| **`Patch`** | corrupt | the clean activation | is this component *sufficient*? |\n", + "\n", + "Necessity and sufficiency are not the same property, and a redundant circuit can be\n", + "sufficient without any single part being necessary. That is exactly why zeroing\n", + "L9H9 looked harmless: other heads cover for it.\n", + "\n", + "`activation_patching.ipynb` runs the other direction." + ] + }, + { + "cell_type": "markdown", + "id": "ed802d4f", + "metadata": {}, + "source": [ + "## 6. Save" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "088f9ec7", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:38:22.859737Z", + "iopub.status.busy": "2026-07-10T11:38:22.859658Z", + "iopub.status.idle": "2026-07-10T11:38:22.872600Z", + "shell.execute_reply": "2026-07-10T11:38:22.872301Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved to: murano_outputs/ablation\n" + ] + } + ], + "source": [ + "run_dir = Save(\n", + " output_dir=\"murano_outputs\", run_name=\"ablation\", model_id=model.model_id\n", + ")(baseline)[keys.OUTPUT_DIR]\n", + "\n", + "print(\"saved to:\", run_dir)" + ] + }, + { + "cell_type": "markdown", + "id": "d681ed8b", + "metadata": {}, + "source": [ + "## What next\n", + "\n", + "- [`activation_patching.ipynb`](activation_patching.ipynb) runs the reverse intervention: restore a component instead of deleting it.\n", + "- [`metrics.ipynb`](metrics.ipynb) covers KL divergence and the other ways to score the damage." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/applications/activation_patching.ipynb b/notebooks/applications/activation_patching.ipynb new file mode 100644 index 0000000..d6239fb --- /dev/null +++ b/notebooks/applications/activation_patching.ipynb @@ -0,0 +1,1546 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "6299c342", + "metadata": {}, + "source": [ + "# Activation patching: which components carry the signal?\n", + "\n", + "Take a prompt the model gets right (**clean**) and one it gets wrong (**corrupt**).\n", + "Run the corrupt prompt, but splice in a single component's activation from the\n", + "clean run. If the model's answer snaps back toward correct, that component was\n", + "carrying the information the corrupt prompt destroyed.\n", + "\n", + "Repeat for every component and you have a causal map, with no assumption that the\n", + "component writes to the logits directly.\n", + "\n", + "**Key questions**\n", + "\n", + "- Which heads restore the behavior when patched from the clean run?\n", + "- Do they match the ones direct logit attribution found, or are they different?\n", + "\n", + "**Structure**\n", + "\n", + "1. Set up\n", + "2. Establish the two baselines\n", + "3. Patch a single head\n", + "4. Sweep every head\n", + "5. Save\n", + "\n", + "**Model and data.** GPT-2 small in float32. It is small enough that bfloat16 rounding visibly degrades its predictions, so the notebooks load it explicitly in float32. Eight indirect-object prompt pairs from `murano.tasks.ioi`.\n", + "\n", + "**Requirements.** `pip install murano-interp[plot]`" + ] + }, + { + "cell_type": "markdown", + "id": "1512e6af", + "metadata": {}, + "source": [ + "## 1. Set up" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2a3f5d7f", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:29:55.184069Z", + "iopub.status.busy": "2026-07-10T11:29:55.183999Z", + "iopub.status.idle": "2026-07-10T11:30:42.252527Z", + "shell.execute_reply": "2026-07-10T11:30:42.250736Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gpt2: 12 layers, 12 heads\n" + ] + } + ], + "source": [ + "import torch\n", + "\n", + "from murano import MuranoModel, NodeSet, Pipeline, keys\n", + "from murano.nodes import Node\n", + "from murano.plotting import plot_sweep, save_figure\n", + "from murano.steps import (\n", + " LoadPaired,\n", + " LogitDiffStep,\n", + " Logits,\n", + " Patch,\n", + " RecoveredMetricStep,\n", + " Save,\n", + " Sweep,\n", + ")\n", + "\n", + "OUTPUT_DIR = \"murano_outputs/activation_patching\"\n", + "\n", + "# GPT-2 is small enough that bfloat16 rounding degrades its predictions.\n", + "model = MuranoModel(\"gpt2\", dtype=torch.float32)\n", + "print(f\"{model.model_id}: {model.n_layers} layers, {model.n_heads} heads\")" + ] + }, + { + "cell_type": "markdown", + "id": "bfeb5160", + "metadata": {}, + "source": [ + "This notebook uses the **indirect-object-identification** task from\n", + "`murano.tasks`. Each clean prompt names two people and then has the *subject*\n", + "give a drink, so the next token should be the other name, the *indirect object*.\n", + "The corrupt prompt swaps who gives, which flips the answer.\n", + "\n", + "```\n", + "clean : When Mary and John went to the store, John gave a drink to ___ -> \" Mary\"\n", + "corrupt: When Mary and John went to the store, Mary gave a drink to ___ -> \" John\"\n", + "```\n", + "\n", + "The metric throughout is the **logit difference**: the correct name's logit minus\n", + "the incorrect name's. Positive means the model prefers the right answer." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "7c68a66a", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:30:42.254126Z", + "iopub.status.busy": "2026-07-10T11:30:42.253891Z", + "iopub.status.idle": "2026-07-10T11:30:42.260954Z", + "shell.execute_reply": "2026-07-10T11:30:42.260689Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "clean : When Mary and John went to the store, John gave a drink to -> ' Mary'\n", + "corrupt: When Mary and John went to the store, Mary gave a drink to -> ' John'\n", + "8 prompt pairs\n" + ] + } + ], + "source": [ + "from murano.tasks import ioi\n", + "\n", + "task = ioi(n=8)\n", + "print(\"clean :\", task.clean[0], \"->\", repr(task.correct[0]))\n", + "print(\"corrupt:\", task.corrupt[0], \"->\", repr(task.incorrect[0]))\n", + "print(f\"{len(task.clean)} prompt pairs\")" + ] + }, + { + "cell_type": "markdown", + "id": "898076da", + "metadata": {}, + "source": [ + "## 2. Establish the two baselines\n", + "\n", + "`LoadPaired` writes both prompt sets into `Results`. We run the model twice, once\n", + "per set, into different keys, and score each. Everything after this is measured\n", + "against these two numbers." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b86c5d83", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:30:42.261850Z", + "iopub.status.busy": "2026-07-10T11:30:42.261768Z", + "iopub.status.idle": "2026-07-10T11:30:42.436351Z", + "shell.execute_reply": "2026-07-10T11:30:42.436108Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "clean logit difference: +2.3971 (right name)\n", + "corrupt logit difference: -3.1112 (wrong name)\n" + ] + } + ], + "source": [ + "baseline = Pipeline(\n", + " [\n", + " LoadPaired(task),\n", + " Logits(model),\n", + " Logits(\n", + " model,\n", + " prompts_key=keys.CORRUPT_PROMPTS,\n", + " logits_key=keys.CORRUPT_LOGITS,\n", + " mask_key=keys.CORRUPT_MASK,\n", + " targets=None,\n", + " ),\n", + " LogitDiffStep(task.correct, task.incorrect, output_key=\"ld_clean\", model=model),\n", + " LogitDiffStep(\n", + " task.correct,\n", + " task.incorrect,\n", + " logits_key=keys.CORRUPT_LOGITS,\n", + " mask_key=keys.CORRUPT_MASK,\n", + " output_key=\"ld_corrupt\",\n", + " model=model,\n", + " ),\n", + " ]\n", + ").run()\n", + "\n", + "print(f\"clean logit difference: {baseline['ld_clean'].value:+.4f} (right name)\")\n", + "print(f\"corrupt logit difference: {baseline['ld_corrupt'].value:+.4f} (wrong name)\")" + ] + }, + { + "cell_type": "markdown", + "id": "3fb41834", + "metadata": {}, + "source": [ + "## 3. Patch a single head\n", + "\n", + "`Patch` runs the **corrupt** prompt as its base and splices in activations from the\n", + "**clean** run. That is the \"denoising\" direction: start broken, add back one piece,\n", + "see how much behavior returns.\n", + "\n", + "`RecoveredMetricStep` normalizes the result:\n", + "\n", + "```\n", + "recovered = (patched - corrupt) / (clean - corrupt)\n", + "```\n", + "\n", + "so 0 means the patch changed nothing and 1 means it fully restored clean behavior.\n", + "\n", + "`Results.copy()` forks the baseline, so the two forward passes above are not\n", + "re-run for every head we try." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "151d32f9", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:30:42.437972Z", + "iopub.status.busy": "2026-07-10T11:30:42.437805Z", + "iopub.status.idle": "2026-07-10T11:30:42.468855Z", + "shell.execute_reply": "2026-07-10T11:30:42.466378Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "patching L8H6: recovered +0.240\n" + ] + } + ], + "source": [ + "patched = Pipeline(\n", + " [\n", + " Patch(model, targets=[Node(8, \"self_attn\", head=6)]),\n", + " LogitDiffStep(\n", + " task.correct,\n", + " task.incorrect,\n", + " logits_key=keys.PATCHED_LOGITS,\n", + " mask_key=keys.PATCHED_MASK,\n", + " output_key=\"ld_patched\",\n", + " model=model,\n", + " ),\n", + " RecoveredMetricStep(\"ld_clean\", \"ld_corrupt\", \"ld_patched\"),\n", + " ]\n", + ").run(baseline.copy())\n", + "\n", + "print(f\"patching L8H6: recovered {patched[keys.RECOVERED].value:+.3f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "fb7ec93a", + "metadata": {}, + "source": [ + "## 4. Sweep every head\n", + "\n", + "That was a fork, three steps, and a read. Doing it once per head is what `Sweep`\n", + "is: it takes the items to sweep, a callback building the chain for one item, and\n", + "the key to harvest. It forks the incoming `Results` per item, so each head is\n", + "measured against the same two baselines and the intermediate keys never leak back\n", + "into the pipeline.\n", + "\n", + "144 patched forward passes on GPT-2 small take a couple of seconds, so there is no\n", + "reason to guess which heads to try." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "a8bcbd65", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:30:42.469889Z", + "iopub.status.busy": "2026-07-10T11:30:42.469801Z", + "iopub.status.idle": "2026-07-10T11:30:44.986022Z", + "shell.execute_reply": "2026-07-10T11:30:44.985652Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "144 heads scored, harvested from 'recovered'\n" + ] + } + ], + "source": [ + "swept = Pipeline(\n", + " [\n", + " Sweep(\n", + " over=NodeSet.product(\n", + " range(model.n_layers), [\"self_attn\"], heads=range(model.n_heads)\n", + " ),\n", + " steps=lambda head: [\n", + " Patch(model, targets=[head]),\n", + " LogitDiffStep(\n", + " task.correct,\n", + " task.incorrect,\n", + " logits_key=keys.PATCHED_LOGITS,\n", + " mask_key=keys.PATCHED_MASK,\n", + " output_key=\"ld_patched\",\n", + " model=model,\n", + " ),\n", + " RecoveredMetricStep(\"ld_clean\", \"ld_corrupt\", \"ld_patched\"),\n", + " ],\n", + " read=keys.RECOVERED,\n", + " )\n", + " ]\n", + ").run(baseline.copy())\n", + "\n", + "recovered = swept[keys.SWEEP]\n", + "print(f\"{len(recovered.scores)} heads scored, harvested from {recovered.primary!r}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "05699529", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:30:44.988774Z", + "iopub.status.busy": "2026-07-10T11:30:44.988674Z", + "iopub.status.idle": "2026-07-10T11:30:49.147867Z", + "shell.execute_reply": "2026-07-10T11:30:49.147514Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "colorbar": { + "title": { + "side": "right", + "text": "recovered" + } + }, + "colorscale": [ + [ + 0.0, + "rgb(103,0,31)" + ], + [ + 0.1, + "rgb(178,24,43)" + ], + [ + 0.2, + "rgb(214,96,77)" + ], + [ + 0.3, + "rgb(244,165,130)" + ], + [ + 0.4, + "rgb(253,219,199)" + ], + [ + 0.5, + "rgb(247,247,247)" + ], + [ + 0.6, + "rgb(209,229,240)" + ], + [ + 0.7, + "rgb(146,197,222)" + ], + [ + 0.8, + "rgb(67,147,195)" + ], + [ + 0.9, + "rgb(33,102,172)" + ], + [ + 1.0, + "rgb(5,48,97)" + ] + ], + "type": "heatmap", + "x": [ + "H0", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9", + "H10", + "H11" + ], + "y": [ + "L0", + "L1", + "L2", + "L3", + "L4", + "L5", + "L6", + "L7", + "L8", + "L9", + "L10", + "L11" + ], + "z": [ + [ + -0.0031737534347990263, + 0.04593554048080867, + 0.001730492912597036, + 0.017727553758251437, + 0.00504552520849453, + 0.002293011319103066, + -0.008045103968949122, + -0.002878729930740462, + -0.002437406625666941, + -0.004895589554436598, + 0.009194899209825252, + -0.003937282573823832 + ], + [ + -0.00043162769695892055, + -0.0006139397566852517, + 0.0003859198301329458, + -0.000151493876790636, + 0.00131011904648542, + 0.007901920613399572, + -0.0028920613918980384, + -0.00032411032840236635, + -0.0008407477322232323, + 0.00202309251462695, + 0.0002621276908125976, + 0.0033861911340242953 + ], + [ + -0.0036017452787149716, + 0.0027180598534127937, + 0.002353262598100942, + -0.00111274416700962, + -0.0009150230158154413, + -0.0009290470204097745, + 0.003590837719586046, + -8.864555990492072e-05, + 2.8394280907044915e-05, + -0.0055883061270529805, + -0.002401394366955567, + 0.003584431692796042 + ], + [ + 0.12911918343588458, + 0.0012541961639672766, + 0.002033826937896687, + -0.0010272150525701066, + 0.03720603046048425, + -0.008086310303436175, + 0.011484794083462911, + -0.00016430593037064406, + 2.0430031384337196e-05, + -0.0016600266179069918, + 0.0001504550616355002, + 0.0007437916510772254 + ], + [ + -0.0022949158135541483, + -0.0004889356663505783, + -0.0025669122483405363, + 0.05300017607916879, + -0.019652651376577245, + -0.0012614678700532272, + -0.0080875222544505, + -0.004802269326333566, + 0.0036126528378438976, + -0.0005772349545371204, + -0.0015312135386701539, + 0.003748218215589118 + ], + [ + 0.00024256333872420686, + 0.0011953299718429151, + 0.002492983236466706, + 0.0036902177027607033, + 0.0017968039466665373, + 0.26820458633428274, + 0.0013385133273924649, + -0.0007652604976166983, + -0.026005871729528545, + 0.056014644523513665, + 0.011425408483760982, + -0.0038223203633221377 + ], + [ + 0.06799495343597635, + 0.019914605931530653, + 0.0015575301892669271, + -0.0018435506286476478, + -0.007593565648183432, + -0.007854135116263327, + -0.027314605689140452, + -5.194075775678948e-05, + -0.0008798764364000138, + 0.09031735976125257, + -0.002230682409794919, + -0.0018560164105092774 + ], + [ + 0.00010318897207682176, + 0.02138106665886401, + -5.436465978543966e-05, + 0.15466260928551853, + 0.0011172456993485418, + -0.008872866511733158, + 0.001061669088548777, + -0.00017296272333010897, + -0.004552607417382598, + 0.22351493149620028, + 0.007487260230641203, + -0.00040236773675592915 + ], + [ + -0.00032791931730453093, + -0.0002198825411704088, + -0.008683629017639255, + -0.005265407749664939, + 0.0010440092309114686, + 0.01942168814041872, + 0.23976165425080564, + 0.0028731895832464047, + 0.0036562830743596007, + 0.0044553050645182125, + 0.2633645733906459, + -0.0010498958501239048 + ], + [ + 0.00131011904648542, + -0.0014522635868798339, + 0.005209311731287606, + 0.02093662690832508, + -0.014650063861161662, + 0.0082428251201433, + -0.07002878037387304, + 0.0815241357447465, + 0.0012663156741105274, + 0.09893623596755503, + 0.002584398970118655, + -0.0001210219655733195 + ], + [ + 0.11866385517116125, + 0.02200487515952305, + 0.009492866023490035, + 0.0042665869780018776, + -0.0023407968162393127, + 0.0012500409033467336, + 0.04990796963404793, + -0.46017451055791125, + 0.00028325026563369194, + 0.0017275496029908182, + 0.06537558102230145, + 0.004429680957358196 + ], + [ + 0.004333590555508135, + -0.047764374561425224, + -0.062079766806773976, + 0.010116847660008265, + -0.0007204183100866701, + -0.000268187445884223, + -0.014057592951015883, + 0.0022634050871816963, + 0.012491579104648681, + 0.0024522963095572206, + -0.2220065718909431, + 0.0035312789840249276 + ] + ], + "zmid": 0.0 + } + ], + "layout": { + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Recovered logit difference by patched head" + }, + "xaxis": { + "title": { + "text": "Head" + } + }, + "yaxis": { + "autorange": "reversed", + "title": { + "text": "Layer" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# The scores straddle zero, so plot_sweep centers a diverging scale on it: a head\n", + "# with no effect is drawn in the neutral color rather than shaded as if it had a sign.\n", + "fig = plot_sweep(recovered, title=\"Recovered logit difference by patched head\")\n", + "save_figure(fig, f\"{OUTPUT_DIR}/plots/recovered_heads.png\")\n", + "fig" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "0fc7c32f", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:30:49.149104Z", + "iopub.status.busy": "2026-07-10T11:30:49.149011Z", + "iopub.status.idle": "2026-07-10T11:30:49.151044Z", + "shell.execute_reply": "2026-07-10T11:30:49.150794Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "head recovered\n", + "-----------------------\n", + "L10H7 -0.460\n", + "L5H5 +0.268\n", + "L8H10 +0.263\n", + "L8H6 +0.240\n", + "L7H9 +0.224\n", + "L11H10 -0.222\n", + "L7H3 +0.155\n", + "L3H0 +0.129\n" + ] + } + ], + "source": [ + "ranked = sorted(recovered.scores.items(), key=lambda item: -abs(item[1]))\n", + "\n", + "print(f\"{'head':<10} {'recovered':>12}\")\n", + "print(\"-\" * 23)\n", + "for node, score in ranked[:8]:\n", + " print(f\"{f'L{node.layer}H{node.head}':<10} {score:>+12.3f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "6a5c5b36", + "metadata": {}, + "source": [ + "### Reading the map\n", + "\n", + "The heads that light up here are **not** the same as the ones direct logit\n", + "attribution ranked highest, and that difference is the point.\n", + "\n", + "- Heads in layers 7 and 8 (such as L8H6, L8H10, L7H9) recover a lot of behavior\n", + " even though they contribute little *directly* to the logits. They matter because\n", + " of what they feed downstream.\n", + "- L10H7 recovers a strongly **negative** fraction: patching it in from the clean run\n", + " makes the corrupt run worse, consistent with the negative name mover found by\n", + " attribution and ablation.\n", + "- Layer 5 contains a duplicate-token head that notices the repeated name.\n", + "\n", + "So attribution answers \"who wrote the answer\" and patching answers \"who carried the\n", + "information\". `circuit_discovery.ipynb` connects the two." + ] + }, + { + "cell_type": "markdown", + "id": "73237b3d", + "metadata": {}, + "source": [ + "## 5. Save" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "243996db", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:30:49.151710Z", + "iopub.status.busy": "2026-07-10T11:30:49.151634Z", + "iopub.status.idle": "2026-07-10T11:30:49.179845Z", + "shell.execute_reply": "2026-07-10T11:30:49.179621Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved to: murano_outputs/activation_patching\n", + "the sweep itself: ['sweep.json']\n" + ] + } + ], + "source": [ + "run_dir = Save(\n", + " output_dir=\"murano_outputs\",\n", + " run_name=\"activation_patching\",\n", + " model_id=model.model_id,\n", + ")(swept)[keys.OUTPUT_DIR]\n", + "\n", + "print(\"saved to:\", run_dir)\n", + "print(\"the sweep itself:\", sorted(p.name for p in (run_dir / \"sweep\").iterdir()))" + ] + }, + { + "cell_type": "markdown", + "id": "ab760f7d", + "metadata": {}, + "source": [ + "## What next\n", + "\n", + "- [`ablation.ipynb`](ablation.ipynb) runs the reverse intervention and asks about necessity rather than sufficiency.\n", + "- [`circuit_discovery.ipynb`](circuit_discovery.ipynb) connects the heads found here to the ones attribution found." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/applications/attention.ipynb b/notebooks/applications/attention.ipynb new file mode 100644 index 0000000..0aac983 --- /dev/null +++ b/notebooks/applications/attention.ipynb @@ -0,0 +1,4965 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "535c9846", + "metadata": {}, + "source": [ + "# Attention: summarize every head, then test one\n", + "\n", + "GPT-2 small has 144 attention heads. Staring at 144 attention matrices is not\n", + "analysis. The useful move is to reduce each head's pattern to a single number,\n", + "scan the resulting 12x12 grid for something unusual, and only then look at the\n", + "individual head.\n", + "\n", + "Then, crucially, check whether the interesting-looking head actually *does*\n", + "anything.\n", + "\n", + "**Key questions**\n", + "\n", + "- Which heads are diffuse, and which focus on one token?\n", + "- Which heads attend to the very first token (an \"attention sink\")?\n", + "- Does an interesting-looking head matter causally, and what does it write?\n", + "\n", + "**Structure**\n", + "\n", + "1. Set up\n", + "2. Record and reduce every head\n", + "3. Inspect one head\n", + "4. Ablate a head and measure the damage\n", + "5. Read what the head writes with the OV circuit\n", + "6. Save\n", + "\n", + "**Model and data.** GPT-2 small in float32. It is small enough that bfloat16 rounding visibly degrades its predictions, so the notebooks load it explicitly in float32. Eight indirect-object prompt pairs from `murano.tasks.ioi`. Loaded with eager attention so the per-head weights are exposed.\n", + "\n", + "**Requirements.** `pip install murano-interp[plot]`" + ] + }, + { + "cell_type": "markdown", + "id": "0d71778b", + "metadata": {}, + "source": [ + "## 1. Set up\n", + "\n", + "Attention weights are not exposed by the fused attention kernels, so the model has\n", + "to be loaded with `enable_attention_probs=True`. It is off by default because\n", + "eager attention is slower." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b2388169", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:36:14.297539Z", + "iopub.status.busy": "2026-07-10T11:36:14.297477Z", + "iopub.status.idle": "2026-07-10T11:37:06.050399Z", + "shell.execute_reply": "2026-07-10T11:37:06.049932Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gpt2: 12 layers, 12 heads\n" + ] + } + ], + "source": [ + "import torch\n", + "\n", + "from murano import MuranoModel, NodeSet, Pipeline, keys\n", + "from murano.nodes import Node\n", + "from murano.plotting import plot_attention_pattern, plot_head_matrix, save_figure\n", + "from murano.steps import (\n", + " AblateAttention,\n", + " LoadPrompts,\n", + " LogitDiffStep,\n", + " Logits,\n", + " RecordAttention,\n", + " Save,\n", + " Sweep,\n", + " ov_circuit,\n", + ")\n", + "\n", + "OUTPUT_DIR = \"murano_outputs/attention\"\n", + "\n", + "# GPT-2 is small enough that bfloat16 rounding degrades its predictions.\n", + "model = MuranoModel(\"gpt2\", dtype=torch.float32, enable_attention_probs=True)\n", + "print(f\"{model.model_id}: {model.n_layers} layers, {model.n_heads} heads\")" + ] + }, + { + "cell_type": "markdown", + "id": "0566331d", + "metadata": {}, + "source": [ + "This notebook uses the **indirect-object-identification** task from\n", + "`murano.tasks`. Each clean prompt names two people and then has the *subject*\n", + "give a drink, so the next token should be the other name, the *indirect object*.\n", + "The corrupt prompt swaps who gives, which flips the answer.\n", + "\n", + "```\n", + "clean : When Mary and John went to the store, John gave a drink to ___ -> \" Mary\"\n", + "corrupt: When Mary and John went to the store, Mary gave a drink to ___ -> \" John\"\n", + "```\n", + "\n", + "The metric throughout is the **logit difference**: the correct name's logit minus\n", + "the incorrect name's. Positive means the model prefers the right answer." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "4f593085", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:37:06.052000Z", + "iopub.status.busy": "2026-07-10T11:37:06.051723Z", + "iopub.status.idle": "2026-07-10T11:37:06.058421Z", + "shell.execute_reply": "2026-07-10T11:37:06.058108Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "clean : When Mary and John went to the store, John gave a drink to -> ' Mary'\n", + "corrupt: When Mary and John went to the store, Mary gave a drink to -> ' John'\n", + "8 prompt pairs\n" + ] + } + ], + "source": [ + "from murano.tasks import ioi\n", + "\n", + "task = ioi(n=8)\n", + "print(\"clean :\", task.clean[0], \"->\", repr(task.correct[0]))\n", + "print(\"corrupt:\", task.corrupt[0], \"->\", repr(task.incorrect[0]))\n", + "print(f\"{len(task.clean)} prompt pairs\")" + ] + }, + { + "cell_type": "markdown", + "id": "3fbb0e85", + "metadata": {}, + "source": [ + "## 2. Record and reduce every head\n", + "\n", + "`RecordAttention` captures the post-softmax weights for every head:\n", + "`[batch, head, query, key]` per layer.\n", + "\n", + "`AttentionResult` then offers reductions that collapse each head's pattern to one\n", + "number, giving a `[n_layers, n_heads]` grid:\n", + "\n", + "- `entropy()` is high for diffuse heads, low for focused ones.\n", + "- `sink()` is the mass placed on the first token, a known transformer quirk.\n", + "- `distance()` is how far back a head typically looks." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "23b98c5c", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:37:06.059365Z", + "iopub.status.busy": "2026-07-10T11:37:06.059284Z", + "iopub.status.idle": "2026-07-10T11:37:06.195677Z", + "shell.execute_reply": "2026-07-10T11:37:06.195410Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "one number per head: (12, 12)\n" + ] + } + ], + "source": [ + "results = Pipeline([LoadPrompts(task.clean), RecordAttention(model)]).run()\n", + "\n", + "attention = results[keys.ATTENTION_PATTERN]\n", + "print(\"one number per head:\", tuple(attention.entropy().shape))" + ] + }, + { + "cell_type": "markdown", + "id": "7e95b745", + "metadata": {}, + "source": [ + "### Entropy: which heads are focused?" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8d772eca", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:37:06.197991Z", + "iopub.status.busy": "2026-07-10T11:37:06.197891Z", + "iopub.status.idle": "2026-07-10T11:37:10.605126Z", + "shell.execute_reply": "2026-07-10T11:37:10.604728Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "colorbar": { + "title": { + "side": "right", + "text": "entropy" + } + }, + "colorscale": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ], + "type": "heatmap", + "x": [ + "H0", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9", + "H10", + "H11" + ], + "y": [ + "L0", + "L1", + "L2", + "L3", + "L4", + "L5", + "L6", + "L7", + "L8", + "L9", + "L10", + "L11" + ], + "z": [ + [ + 1.5069841146469116, + 0.24198485910892487, + 1.522496223449707, + 0.5224869847297668, + 1.096545934677124, + 0.6777548789978027, + 1.472023844718933, + 1.495963215827942, + 1.471724510192871, + 1.638397455215454, + 1.6451919078826904, + 1.6647943258285522 + ], + [ + 1.3572218418121338, + 1.4397529363632202, + 1.6106151342391968, + 1.4383338689804077, + 1.4923356771469116, + 1.2776031494140625, + 1.2889033555984497, + 1.464940071105957, + 1.4146674871444702, + 1.1947572231292725, + 1.5870463848114014, + 0.808498740196228 + ], + [ + 1.4898420572280884, + 1.1124036312103271, + 0.9686129689216614, + 1.293590784072876, + 1.1409449577331543, + 1.2681289911270142, + 1.0326178073883057, + 1.6182186603546143, + 0.9854255318641663, + 1.286551594734192, + 1.5928479433059692, + 1.023549199104309 + ], + [ + 0.25239652395248413, + 1.0591617822647095, + 1.1228500604629517, + 0.8360298275947571, + 0.41033273935317993, + 1.2808693647384644, + 1.340203881263733, + 1.1584055423736572, + 1.090408205986023, + 0.9495691061019897, + 0.9694929122924805, + 1.1045572757720947 + ], + [ + 0.7893999218940735, + 0.8650029301643372, + 0.7675824761390686, + 1.1038025617599487, + 0.9809845685958862, + 0.8461106419563293, + 1.2387725114822388, + 1.133068323135376, + 0.8547440767288208, + 1.0242875814437866, + 0.44209060072898865, + 0.0006706936401315033 + ], + [ + 0.38362136483192444, + 0.014124279841780663, + 0.9822370409965515, + 1.1782915592193604, + 1.0105873346328735, + 0.18393002450466156, + 0.6127103567123413, + 0.6202535033226013, + 0.5414084792137146, + 0.5535985231399536, + 1.138934850692749, + 0.8104895949363708 + ], + [ + 1.2472312450408936, + 0.5375853776931763, + 0.7948512434959412, + 1.0544178485870361, + 1.3782604932785034, + 1.025945782661438, + 0.7545763850212097, + 1.1401551961898804, + 0.9715476632118225, + 0.07170181721448898, + 0.344738632440567, + 0.9147149324417114 + ], + [ + 0.6670228242874146, + 0.1430211216211319, + 0.030403265729546547, + 0.9534943699836731, + 0.5349896550178528, + 0.776130199432373, + 0.5678857564926147, + 0.30972954630851746, + 0.868547260761261, + 0.7951176762580872, + 0.09536627680063248, + 0.35749155282974243 + ], + [ + 0.6175786256790161, + 0.13337329030036926, + 1.16288161277771, + 0.6907051801681519, + 0.7764445543289185, + 1.2172752618789673, + 0.6952576041221619, + 0.6677049994468689, + 1.1008938550949097, + 0.8375105261802673, + 0.9984537363052368, + 0.694088876247406 + ], + [ + 0.6925663352012634, + 0.22210539877414703, + 0.6303364038467407, + 1.1504573822021484, + 0.4877866208553314, + 0.7332797646522522, + 0.37166476249694824, + 0.9283431172370911, + 0.7892270684242249, + 0.3546150028705597, + 0.8795403242111206, + 0.2533755600452423 + ], + [ + 0.7046064734458923, + 0.3836859166622162, + 0.6236857175827026, + 0.7080158591270447, + 1.0081158876419067, + 0.6830340027809143, + 0.5669656991958618, + 0.7851279973983765, + 0.22186076641082764, + 1.0408380031585693, + 0.4569852948188782, + 0.538749098777771 + ], + [ + 1.6679011583328247, + 0.9299420118331909, + 0.6088396310806274, + 1.2542680501937866, + 0.8847700357437134, + 0.45058003067970276, + 0.4949674606323242, + 0.5908271670341492, + 1.3683817386627197, + 0.371095210313797, + 1.0389314889907837, + 0.9838396906852722 + ] + ] + } + ], + "layout": { + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Attention entropy" + }, + "xaxis": { + "title": { + "text": "Head" + } + }, + "yaxis": { + "autorange": "reversed", + "title": { + "text": "Layer" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_head_matrix(\n", + " attention.entropy(), title=\"Attention entropy\", value_label=\"entropy\"\n", + ")\n", + "save_figure(fig, f\"{OUTPUT_DIR}/plots/entropy.png\")\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "7bd03342", + "metadata": {}, + "source": [ + "### Sink: which heads park on the first token?" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "65ad93b9", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:37:10.606543Z", + "iopub.status.busy": "2026-07-10T11:37:10.606433Z", + "iopub.status.idle": "2026-07-10T11:37:10.665103Z", + "shell.execute_reply": "2026-07-10T11:37:10.664739Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "colorbar": { + "title": { + "side": "right", + "text": "mass" + } + }, + "colorscale": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ], + "type": "heatmap", + "x": [ + "H0", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9", + "H10", + "H11" + ], + "y": [ + "L0", + "L1", + "L2", + "L3", + "L4", + "L5", + "L6", + "L7", + "L8", + "L9", + "L10", + "L11" + ], + "z": [ + [ + 0.4474213719367981, + 0.07402441650629044, + 0.43477901816368103, + 0.1140354722738266, + 0.24722763895988464, + 0.13082274794578552, + 0.34310129284858704, + 0.27175799012184143, + 0.27203169465065, + 0.41299566626548767, + 0.3549928367137909, + 0.3917577564716339 + ], + [ + 0.3576466739177704, + 0.43467360734939575, + 0.3593722879886627, + 0.5460614562034607, + 0.5341036915779114, + 0.5060926079750061, + 0.6043351292610168, + 0.5392866730690002, + 0.5604767203330994, + 0.659285843372345, + 0.07273883372545242, + 0.2448430061340332 + ], + [ + 0.3973420560359955, + 0.6828603744506836, + 0.2546202540397644, + 0.3724760115146637, + 0.45284321904182434, + 0.31901660561561584, + 0.6936983466148376, + 0.3037795126438141, + 0.3714173436164856, + 0.2339206039905548, + 0.410263329744339, + 0.7345654368400574 + ], + [ + 0.9038836359977722, + 0.6661261916160583, + 0.24069496989250183, + 0.6141617894172668, + 0.9126604795455933, + 0.5932862162590027, + 0.2584276497364044, + 0.3924446105957031, + 0.37970370054244995, + 0.5349043011665344, + 0.7094805836677551, + 0.5160135626792908 + ], + [ + 0.47487396001815796, + 0.6471182107925415, + 0.8185078501701355, + 0.39487752318382263, + 0.7203968167304993, + 0.736644446849823, + 0.6177515387535095, + 0.34131863713264465, + 0.7653947472572327, + 0.6879339218139648, + 0.9077581763267517, + 0.1428721696138382 + ], + [ + 0.8730344772338867, + 0.9980515241622925, + 0.5915270447731018, + 0.606630265712738, + 0.6488121151924133, + 0.9136456251144409, + 0.7811370491981506, + 0.798258364200592, + 0.8482775092124939, + 0.8707952499389648, + 0.5898598432540894, + 0.7724900841712952 + ], + [ + 0.45969632267951965, + 0.8267875909805298, + 0.813000500202179, + 0.6771170496940613, + 0.5184772610664368, + 0.7232645153999329, + 0.7952827215194702, + 0.6284241080284119, + 0.6191235780715942, + 0.986925482749939, + 0.9323649406433105, + 0.6990178227424622 + ], + [ + 0.7519806027412415, + 0.9755598306655884, + 0.9957677721977234, + 0.7182568311691284, + 0.8404951095581055, + 0.807525634765625, + 0.8782077431678772, + 0.9364267587661743, + 0.6887345910072327, + 0.7480884194374084, + 0.9823296666145325, + 0.9153206944465637 + ], + [ + 0.8606982827186584, + 0.9773014783859253, + 0.6576153039932251, + 0.7777742743492126, + 0.743655800819397, + 0.544575572013855, + 0.6905965209007263, + 0.7342047095298767, + 0.6412891149520874, + 0.787669837474823, + 0.6887205243110657, + 0.8257508873939514 + ], + [ + 0.8020720481872559, + 0.9579970240592957, + 0.8416760563850403, + 0.5094753503799438, + 0.8789910078048706, + 0.8238739371299744, + 0.842065691947937, + 0.7438518404960632, + 0.7281861305236816, + 0.8378214836120605, + 0.661988377571106, + 0.9498783946037292 + ], + [ + 0.7486425042152405, + 0.8706935048103333, + 0.7991682887077332, + 0.7978584170341492, + 0.6820263266563416, + 0.7704396843910217, + 0.8232014775276184, + 0.6845959424972534, + 0.9597315788269043, + 0.6659963726997375, + 0.850836455821991, + 0.7857492566108704 + ], + [ + 0.31063225865364075, + 0.7270561456680298, + 0.8382086157798767, + 0.5401487946510315, + 0.7669261693954468, + 0.9007056951522827, + 0.8728065490722656, + 0.8616519570350647, + 0.07178401947021484, + 0.9111050367355347, + 0.5749741792678833, + 0.6953001618385315 + ] + ] + } + ], + "layout": { + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Attention to the first token" + }, + "xaxis": { + "title": { + "text": "Head" + } + }, + "yaxis": { + "autorange": "reversed", + "title": { + "text": "Layer" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_head_matrix(\n", + " attention.sink(), title=\"Attention to the first token\", value_label=\"mass\"\n", + ")\n", + "save_figure(fig, f\"{OUTPUT_DIR}/plots/sink.png\")\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "c1a875da", + "metadata": {}, + "source": [ + "### Distance: which heads look far back?" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "e7e4367a", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:37:10.666072Z", + "iopub.status.busy": "2026-07-10T11:37:10.665982Z", + "iopub.status.idle": "2026-07-10T11:37:10.719072Z", + "shell.execute_reply": "2026-07-10T11:37:10.718715Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "colorbar": { + "title": { + "side": "right", + "text": "tokens" + } + }, + "colorscale": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ], + "type": "heatmap", + "x": [ + "H0", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9", + "H10", + "H11" + ], + "y": [ + "L0", + "L1", + "L2", + "L3", + "L4", + "L5", + "L6", + "L7", + "L8", + "L9", + "L10", + "L11" + ], + "z": [ + [ + 4.050652980804443, + 0.6365832090377808, + 3.879328489303589, + 0.4183821976184845, + 1.8109190464019775, + 1.4454050064086914, + 3.744213581085205, + 1.9941550493240356, + 2.9127821922302246, + 3.890371322631836, + 3.4488043785095215, + 3.715097427368164 + ], + [ + 2.4762701988220215, + 2.999401092529297, + 2.9847733974456787, + 4.462662696838379, + 4.066082954406738, + 3.8006975650787354, + 4.562899112701416, + 4.278512477874756, + 4.266453266143799, + 4.689868450164795, + 2.383082866668701, + 1.6691420078277588 + ], + [ + 3.2912182807922363, + 5.054566383361816, + 1.5150471925735474, + 2.348128080368042, + 2.9679837226867676, + 2.182887554168701, + 4.502819538116455, + 2.487011671066284, + 2.422300100326538, + 1.9696840047836304, + 3.149101972579956, + 4.976055145263672 + ], + [ + 6.016904354095459, + 4.343001842498779, + 2.0555641651153564, + 4.308716297149658, + 6.114193439483643, + 4.772061824798584, + 2.6341347694396973, + 2.760465621948242, + 2.7554476261138916, + 3.7142605781555176, + 4.577301979064941, + 3.412421941757202 + ], + [ + 3.0123212337493896, + 4.286462306976318, + 5.595661163330078, + 3.5816681385040283, + 5.049890995025635, + 4.785141944885254, + 4.720573902130127, + 1.9658441543579102, + 5.195764064788818, + 4.760070323944092, + 5.942091941833496, + 0.928655743598938 + ], + [ + 6.010618686676025, + 6.488833904266357, + 4.955667018890381, + 4.379199981689453, + 4.281063556671143, + 6.125655174255371, + 5.3019585609436035, + 5.240534782409668, + 5.727726459503174, + 5.964060306549072, + 4.044322490692139, + 5.112252712249756 + ], + [ + 3.635258436203003, + 5.877810955047607, + 5.560111999511719, + 4.930035591125488, + 4.415028095245361, + 5.0065484046936035, + 5.278387546539307, + 4.479467868804932, + 4.408952236175537, + 6.438796520233154, + 6.039517402648926, + 4.542716026306152 + ], + [ + 5.02151346206665, + 6.374583721160889, + 6.4807000160217285, + 4.871849060058594, + 5.801621913909912, + 5.421725749969482, + 5.955564022064209, + 6.231327533721924, + 4.520956993103027, + 5.096770286560059, + 6.445006847381592, + 6.238829135894775 + ], + [ + 5.645273685455322, + 6.385397911071777, + 4.889590263366699, + 5.573878765106201, + 4.674368858337402, + 3.8051204681396484, + 4.9993815422058105, + 4.577239513397217, + 4.478594779968262, + 5.450562477111816, + 4.824700355529785, + 5.6468963623046875 + ], + [ + 5.687073707580566, + 6.298924446105957, + 5.728263854980469, + 3.4822304248809814, + 6.039798259735107, + 5.573752403259277, + 6.1591010093688965, + 5.269371032714844, + 5.77322244644165, + 6.109936714172363, + 4.44466495513916, + 6.3298468589782715 + ], + [ + 5.80151891708374, + 6.178566932678223, + 5.854663848876953, + 5.795825958251953, + 4.8760986328125, + 5.094698429107666, + 5.830139636993408, + 5.47438383102417, + 6.324023723602295, + 4.550811767578125, + 6.1088409423828125, + 5.060173034667969 + ], + [ + 3.5426156520843506, + 5.397155284881592, + 5.985758304595947, + 3.870089054107666, + 5.545562744140625, + 6.056328296661377, + 6.120314121246338, + 5.829747200012207, + 2.0038485527038574, + 6.192402362823486, + 4.775374412536621, + 4.789912700653076 + ] + ] + } + ], + "layout": { + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Mean attention distance" + }, + "xaxis": { + "title": { + "text": "Head" + } + }, + "yaxis": { + "autorange": "reversed", + "title": { + "text": "Layer" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_head_matrix(\n", + " attention.distance(), title=\"Mean attention distance\", value_label=\"tokens\"\n", + ")\n", + "save_figure(fig, f\"{OUTPUT_DIR}/plots/distance.png\")\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "a851f813", + "metadata": {}, + "source": [ + "## 3. Inspect one head\n", + "\n", + "Head 9.9 is one of GPT-2's **name movers**. Rows are query positions, columns are\n", + "key positions, and the lower triangle is all a causal model can see.\n", + "\n", + "The figure is dominated by a dark first column. That is the attention sink from the\n", + "grid above: nearly every query position dumps most of its mass on token 0, which\n", + "carries no information here. Ignore it and read the **bottom row**, the position\n", + "that actually predicts the answer." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1a81e4f7", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:37:10.719985Z", + "iopub.status.busy": "2026-07-10T11:37:10.719893Z", + "iopub.status.idle": "2026-07-10T11:37:10.777816Z", + "shell.execute_reply": "2026-07-10T11:37:10.777438Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "colorbar": { + "title": { + "side": "right", + "text": "Attention weight" + } + }, + "colorscale": [ + [ + 0.0, + "rgb(247,251,255)" + ], + [ + 0.125, + "rgb(222,235,247)" + ], + [ + 0.25, + "rgb(198,219,239)" + ], + [ + 0.375, + "rgb(158,202,225)" + ], + [ + 0.5, + "rgb(107,174,214)" + ], + [ + 0.625, + "rgb(66,146,198)" + ], + [ + 0.75, + "rgb(33,113,181)" + ], + [ + 0.875, + "rgb(8,81,156)" + ], + [ + 1.0, + "rgb(8,48,107)" + ] + ], + "type": "heatmap", + "x": [ + "0:When", + "1: Mary", + "2: and", + "3: John", + "4: went", + "5: to", + "6: the", + "7: store", + "8:,", + "9: John", + "10: gave", + "11: a", + "12: drink", + "13: to" + ], + "y": [ + "0:When", + "1: Mary", + "2: and", + "3: John", + "4: went", + "5: to", + "6: the", + "7: store", + "8:,", + "9: John", + "10: gave", + "11: a", + "12: drink", + "13: to" + ], + "z": [ + [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.993103563785553, + 0.006896433886140585, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.9493064284324646, + 0.04410194978117943, + 0.00659157196059823, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.977985143661499, + 0.006887920666486025, + 0.003478809492662549, + 0.011648129671812057, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.9919711351394653, + 0.000904854794498533, + 0.00022113263548817486, + 0.0013842819025740027, + 0.005518621299415827, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.9743735790252686, + 0.0055399551056325436, + 0.000302253698464483, + 0.013515244238078594, + 0.001877429662272334, + 0.0043915752321481705, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.9949526786804199, + 0.0008083000429905951, + 0.00020774774020537734, + 0.0007512068841606379, + 0.0002621358435135335, + 0.0003730924509000033, + 0.002644935389980674, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.9875166416168213, + 0.0018183027859777212, + 0.0014484928688034415, + 0.0013068782864138484, + 0.00047936124610714614, + 0.0003079405287280679, + 0.00039269623812288046, + 0.006729780230671167, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.5176441669464111, + 0.22277361154556274, + 0.006616073660552502, + 0.23784509301185608, + 0.0015227333642542362, + 0.0009632863220758736, + 0.0028099024202674627, + 0.0036987459752708673, + 0.006126420106738806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.9257864952087402, + 0.009007508866488934, + 0.007507399655878544, + 0.017483273521065712, + 0.028354916721582413, + 0.0021566974464803934, + 0.0012199096381664276, + 0.0026279627345502377, + 0.0024590790271759033, + 0.0033966894261538982, + 0.0, + 0.0, + 0.0, + 0.0 + ], + [ + 0.585465669631958, + 0.24359165132045746, + 0.005258525256067514, + 0.07913323491811752, + 0.0014566041063517332, + 0.0009922364261001348, + 0.004566336050629616, + 0.00494025694206357, + 0.005233732517808676, + 0.06104620173573494, + 0.0083155557513237, + 0.0, + 0.0, + 0.0 + ], + [ + 0.9790651798248291, + 0.003070288337767124, + 0.0015666079707443714, + 0.0008078496903181076, + 0.0005621651653200388, + 0.00040259514935314655, + 0.0002400005905656144, + 0.004908262751996517, + 0.0009938228176906705, + 0.00037528426037169993, + 0.0026320097967982292, + 0.005375891458243132, + 0.0, + 0.0 + ], + [ + 0.974141001701355, + 0.0013712242944166064, + 0.0007611144683323801, + 0.0009202382643707097, + 0.00026254940894432366, + 0.001126333954744041, + 0.0002839891822077334, + 0.0022004535421729088, + 0.0019002690678462386, + 0.0004956412594765425, + 0.0017650898080319166, + 0.00475294329226017, + 0.010019221343100071, + 0.0 + ], + [ + 0.3589305579662323, + 0.3624933660030365, + 0.0037273073103278875, + 0.13169705867767334, + 0.0001318603754043579, + 0.00015090878878254443, + 0.003157883882522583, + 0.0008014591294340789, + 0.0040787095203995705, + 0.12851737439632416, + 0.000380189623683691, + 0.0029312619008123875, + 0.0012724967673420906, + 0.0017296302830800414 + ] + ] + } + ], + "layout": { + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Attention L9 H9" + }, + "xaxis": { + "constrain": "domain", + "side": "top", + "title": { + "text": "Key token" + } + }, + "yaxis": { + "autorange": "reversed", + "constrain": "domain", + "scaleanchor": "x", + "title": { + "text": "Query token" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_attention_pattern(attention, layer=9, head=9)\n", + "save_figure(fig, f\"{OUTPUT_DIR}/plots/head_9_9.png\")\n", + "fig" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "82a4ba76", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:37:10.778739Z", + "iopub.status.busy": "2026-07-10T11:37:10.778635Z", + "iopub.status.idle": "2026-07-10T11:37:10.783245Z", + "shell.execute_reply": "2026-07-10T11:37:10.782916Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "query x key: (14, 14)\n", + "\n", + "from the final position, head 9.9 attends most to:\n", + " position 1 ' Mary' 0.362\n", + " position 0 'When' 0.359 <- attention sink\n", + " position 3 ' John' 0.132\n", + " position 9 ' John' 0.129\n" + ] + } + ], + "source": [ + "pattern = attention.head_pattern(layer=9, head=9)\n", + "print(\"query x key:\", tuple(pattern.shape))\n", + "\n", + "tokens = model.tokenizer.convert_ids_to_tokens(\n", + " model.tokenizer(task.clean[0])[\"input_ids\"]\n", + ")\n", + "\n", + "top = torch.topk(pattern[-1], 4)\n", + "print(\"\\nfrom the final position, head 9.9 attends most to:\")\n", + "for value, index in zip(top.values, top.indices):\n", + " token = tokens[int(index)].replace(\"\\u0120\", \" \")\n", + " note = \" <- attention sink\" if int(index) == 0 else \"\"\n", + " print(f\" position {int(index):>2} {token!r:<10} {float(value):.3f}{note}\")" + ] + }, + { + "cell_type": "markdown", + "id": "6e8c705a", + "metadata": {}, + "source": [ + "The bottom row is the exception to the sink: head 9.9 splits its attention between\n", + "token 0 and the **indirect object's name**, and gives the subject's name noticeably\n", + "less. That is the name-mover signature, and it is a hypothesis about mechanism." + ] + }, + { + "cell_type": "markdown", + "id": "b3a2d720", + "metadata": {}, + "source": [ + "## 4. Ablate a head and measure the damage\n", + "\n", + "A suggestive pattern is a hypothesis, not a result. The test is to delete the head\n", + "and see whether the behavior degrades. `AblateAttention` overwrites a head's\n", + "attention weights, here with zeros, and reads the resulting logits." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "c3f58a7d", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:37:10.784031Z", + "iopub.status.busy": "2026-07-10T11:37:10.783950Z", + "iopub.status.idle": "2026-07-10T11:37:10.808865Z", + "shell.execute_reply": "2026-07-10T11:37:10.808607Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "clean logit difference: +2.3971\n" + ] + } + ], + "source": [ + "baseline = Pipeline(\n", + " [\n", + " LoadPrompts(task.clean),\n", + " Logits(model),\n", + " LogitDiffStep(task.correct, task.incorrect, model=model),\n", + " ]\n", + ").run()\n", + "\n", + "clean_score = baseline[keys.LOGIT_DIFF].value\n", + "print(f\"clean logit difference: {clean_score:+.4f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "2c769987", + "metadata": {}, + "source": [ + "`Sweep` runs that ablate-and-score chain once per head, forking the baseline each\n", + "time. The candidates are the heads the entropy and distance grids flagged, plus one\n", + "early head, `L0H0`, which shows none of the name-mover signature." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "77cf4eb4", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:37:10.811030Z", + "iopub.status.busy": "2026-07-10T11:37:10.810940Z", + "iopub.status.idle": "2026-07-10T11:37:10.877978Z", + "shell.execute_reply": "2026-07-10T11:37:10.877796Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "head logit diff change\n", + "----------------------------------\n", + "L10H0 +1.6410 -0.7560\n", + "L9H9 +2.3897 -0.0073\n", + "L9H6 +2.5959 +0.1989\n", + "L10H7 +3.5912 +1.1941\n", + "L0H0 +2.0301 -0.3670\n" + ] + } + ], + "source": [ + "candidates = NodeSet(\n", + " [\n", + " Node(10, \"self_attn\", head=0),\n", + " Node(9, \"self_attn\", head=9),\n", + " Node(9, \"self_attn\", head=6),\n", + " Node(10, \"self_attn\", head=7),\n", + " Node(0, \"self_attn\", head=0),\n", + " ]\n", + ")\n", + "\n", + "damage = Pipeline(\n", + " [\n", + " Sweep(\n", + " over=candidates,\n", + " steps=lambda head: [\n", + " AblateAttention(model, targets=[head], method=\"zero\"),\n", + " LogitDiffStep(\n", + " task.correct,\n", + " task.incorrect,\n", + " logits_key=keys.ATTN_ABLATED_LOGITS,\n", + " mask_key=keys.ATTN_ABLATED_MASK,\n", + " model=model,\n", + " ),\n", + " ],\n", + " read=keys.LOGIT_DIFF,\n", + " )\n", + " ]\n", + ").run(baseline.copy())\n", + "\n", + "print(f\"{'head':<10} {'logit diff':>12} {'change':>10}\")\n", + "print(\"-\" * 34)\n", + "for node, score in damage[keys.SWEEP].scores.items():\n", + " label = f\"L{node.layer}H{node.head}\"\n", + " print(f\"{label:<10} {score:>+12.4f} {score - clean_score:>+10.4f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "805a9fa2", + "metadata": {}, + "source": [ + "Two things stand out.\n", + "\n", + "**L10H0 is load-bearing.** Removing it drops the logit difference: it was pushing\n", + "toward the correct name.\n", + "\n", + "**L10H7 is a negative name mover.** Removing it *raises* the logit difference. The\n", + "head was actively suppressing the correct answer, and deleting it makes the model\n", + "better at this task. This is the same head direct logit attribution flagged with a\n", + "negative contribution.\n", + "\n", + "Note also that zeroing L9H9 alone barely moves the metric, even though its\n", + "attention pattern looks like a textbook name mover. Other heads compensate, and\n", + "zeroing is a blunt instrument: `ablation.ipynb` shows that a better-chosen\n", + "ablation reveals L9H9 clearly.\n", + "\n", + "**And `L0H0` is not free.** It has no role in this task, yet zeroing it costs more\n", + "logit difference than zeroing L9H9 does. Nothing was deleted from the circuit; the\n", + "model was simply handed a layer-0 attention pattern no forward pass ever produces,\n", + "and every later layer read the damage. Treat a nonzero ablation effect as evidence\n", + "that *something* changed, never as evidence that the head you deleted was doing the\n", + "thing you were looking for." + ] + }, + { + "cell_type": "markdown", + "id": "0f274ab4", + "metadata": {}, + "source": [ + "## 5. Read what the head writes with the OV circuit\n", + "\n", + "Attention weights say *where* a head looks. They say nothing about *what* it\n", + "writes. That is the OV circuit: the linear map a head applies to whatever it reads\n", + "before adding it back to the residual stream.\n", + "\n", + "`ov_circuit(model, layer, head)` returns that map. Compose it with the unembedding\n", + "and you can ask a sharp question: **if this head reads the token `\" Mary\"`, does it\n", + "make the model more likely to say `\" Mary\"`?** A head for which the answer is yes\n", + "is a *copying* head.\n", + "\n", + "One subtlety decides whether this works. GPT-2's layer-0 MLP acts as an extended\n", + "embedding, so the vector a layer-9 head actually reads is not the raw token\n", + "embedding but the residual stream after layer 0. Use that \"effective embedding\"." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "18356593", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:37:10.882057Z", + "iopub.status.busy": "2026-07-10T11:37:10.881962Z", + "iopub.status.idle": "2026-07-10T11:37:11.077175Z", + "shell.execute_reply": "2026-07-10T11:37:11.076731Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "head raw embedding effective embedding\n", + "------------------------------------------------\n", + "L9H9 0/8 7/8\n", + "L9H6 0/8 1/8\n", + "L10H0 3/8 3/8\n", + "L10H7 0/8 0/8\n", + "L11H10 7/8 0/8\n", + "L0H0 0/8 0/8\n", + "L5H5 0/8 0/8\n" + ] + } + ], + "source": [ + "NAMES = [\" Mary\", \" John\", \" Alice\", \" Bob\", \" Sarah\", \" Tom\", \" Emma\", \" James\"]\n", + "\n", + "raw_embedding = model.hf_model.wte.weight.detach().float().cpu()\n", + "effective = {\n", + " name: model.record(name, layers=[0]).positive[(0, \"residual\")][0].float().cpu()\n", + " for name in NAMES\n", + "}\n", + "\n", + "\n", + "def copying_score(layer: int, head: int, embeddings) -> int:\n", + " \"\"\"How many names the head promotes into its own top-5 output tokens.\"\"\"\n", + " ov = ov_circuit(model, layer, head)\n", + " hits = 0\n", + " for name in NAMES:\n", + " token_id = model.tokenizer(name)[\"input_ids\"][0]\n", + " vocab = model.project_on_vocab(ov @ embeddings[name]).detach().float().cpu()\n", + " hits += int(token_id in torch.topk(vocab, 5).indices.tolist())\n", + " return hits\n", + "\n", + "\n", + "raw = {name: raw_embedding[model.tokenizer(name)[\"input_ids\"][0]] for name in NAMES}\n", + "\n", + "print(f\"{'head':<10} {'raw embedding':>15} {'effective embedding':>21}\")\n", + "print(\"-\" * 48)\n", + "for layer, head in [(9, 9), (9, 6), (10, 0), (10, 7), (11, 10), (0, 0), (5, 5)]:\n", + " label = f\"L{layer}H{head}\"\n", + " print(\n", + " f\"{label:<10} {copying_score(layer, head, raw):>12}/{len(NAMES)} \"\n", + " f\"{copying_score(layer, head, effective):>18}/{len(NAMES)}\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "9c6130d2", + "metadata": {}, + "source": [ + "Read the right-hand column. **L9H9 promotes almost every name it reads into its own\n", + "top-5 output tokens.** Whatever name it attends to, it pushes that name toward the\n", + "logits. That is what \"name mover\" means, and it is a statement about the head's\n", + "weights, independent of any prompt.\n", + "\n", + "**L10H7, the negative name mover, copies nothing.** It attends to the name and\n", + "writes something that does *not* promote it. The two columns also show why the\n", + "effective embedding matters: with the raw token embedding, L11H10 looks like a\n", + "strong copier and L9H9 like none at all. Both readings are artifacts." + ] + }, + { + "cell_type": "markdown", + "id": "c6671485", + "metadata": {}, + "source": [ + "## 6. Save" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "0981c2ee", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:37:11.078178Z", + "iopub.status.busy": "2026-07-10T11:37:11.078094Z", + "iopub.status.idle": "2026-07-10T11:37:11.111520Z", + "shell.execute_reply": "2026-07-10T11:37:11.111191Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved to: murano_outputs/attention\n" + ] + } + ], + "source": [ + "run_dir = Save(\n", + " output_dir=\"murano_outputs\", run_name=\"attention\", model_id=model.model_id\n", + ")(results)[keys.OUTPUT_DIR]\n", + "\n", + "print(\"saved to:\", run_dir)" + ] + }, + { + "cell_type": "markdown", + "id": "afe9367f", + "metadata": {}, + "source": [ + "## What next\n", + "\n", + "- [`ablation.ipynb`](ablation.ipynb) shows that the *choice* of ablation decides the answer.\n", + "- [`activation_patching.ipynb`](activation_patching.ipynb) measures every head's causal contribution at once.\n", + "- [`circuit_discovery.ipynb`](circuit_discovery.ipynb) shows how the heads found here feed one another." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/applications/circuit_discovery.ipynb b/notebooks/applications/circuit_discovery.ipynb new file mode 100644 index 0000000..6c91442 --- /dev/null +++ b/notebooks/applications/circuit_discovery.ipynb @@ -0,0 +1,1766 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "aa93b34c", + "metadata": {}, + "source": [ + "# Circuit discovery: composing steps into one experiment\n", + "\n", + "The other notebooks each ran one analysis. This one chains several into a single\n", + "experiment that recovers a real circuit.\n", + "\n", + "The logic: **direct logit attribution** finds the heads that write the answer into\n", + "the logits (the *name movers*); **activation patching** finds heads that carry the\n", + "signal but never touch the logits directly; **path patching** tests the connection\n", + "between them.\n", + "\n", + "**Key questions**\n", + "\n", + "- Are the two groups of heads connected, or independently important?\n", + "- Does the upstream group write into the downstream heads' query, key, or value?\n", + "- How do we know the effect is real and not an artifact of the method?\n", + "\n", + "**Structure**\n", + "\n", + "1. Set up\n", + "2. Find who writes the answer\n", + "3. Find who carries the signal\n", + "4. Test the connection with path patching\n", + "5. Package the finding as a step\n", + "6. Save\n", + "\n", + "**Model and data.** GPT-2 small in float32. It is small enough that bfloat16 rounding visibly degrades its predictions, so the notebooks load it explicitly in float32. Eight indirect-object prompt pairs from `murano.tasks.ioi`.\n", + "\n", + "**Requirements.** `pip install murano-interp[plot]`" + ] + }, + { + "cell_type": "markdown", + "id": "672333d0", + "metadata": {}, + "source": [ + "## 1. Set up" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "c3d4e1c3", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:31:14.675345Z", + "iopub.status.busy": "2026-07-10T11:31:14.675244Z", + "iopub.status.idle": "2026-07-10T11:31:58.108512Z", + "shell.execute_reply": "2026-07-10T11:31:58.107439Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gpt2: 12 layers, 12 heads\n" + ] + } + ], + "source": [ + "import torch\n", + "\n", + "from murano import MuranoModel, NodeSet, Pipeline, keys\n", + "from murano.nodes import Node, Side\n", + "from murano.plotting import plot_sweep, save_figure\n", + "from murano.results import Results\n", + "from murano.steps import (\n", + " LoadPaired,\n", + " LogitAttribution,\n", + " LogitDiffStep,\n", + " Logits,\n", + " Patch,\n", + " PathPatch,\n", + " RecoveredMetricStep,\n", + " Save,\n", + " SelectComponents,\n", + " Sweep,\n", + ")\n", + "from murano.steps.base import Step\n", + "\n", + "OUTPUT_DIR = \"murano_outputs/circuit_discovery\"\n", + "\n", + "# GPT-2 is small enough that bfloat16 rounding degrades its predictions.\n", + "model = MuranoModel(\"gpt2\", dtype=torch.float32)\n", + "print(f\"{model.model_id}: {model.n_layers} layers, {model.n_heads} heads\")" + ] + }, + { + "cell_type": "markdown", + "id": "a82d5751", + "metadata": {}, + "source": [ + "This notebook uses the **indirect-object-identification** task from\n", + "`murano.tasks`. Each clean prompt names two people and then has the *subject*\n", + "give a drink, so the next token should be the other name, the *indirect object*.\n", + "The corrupt prompt swaps who gives, which flips the answer.\n", + "\n", + "```\n", + "clean : When Mary and John went to the store, John gave a drink to ___ -> \" Mary\"\n", + "corrupt: When Mary and John went to the store, Mary gave a drink to ___ -> \" John\"\n", + "```\n", + "\n", + "The metric throughout is the **logit difference**: the correct name's logit minus\n", + "the incorrect name's. Positive means the model prefers the right answer." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "7cb6ebe0", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:31:58.110157Z", + "iopub.status.busy": "2026-07-10T11:31:58.109905Z", + "iopub.status.idle": "2026-07-10T11:31:58.116966Z", + "shell.execute_reply": "2026-07-10T11:31:58.116608Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "clean : When Mary and John went to the store, John gave a drink to -> ' Mary'\n", + "corrupt: When Mary and John went to the store, Mary gave a drink to -> ' John'\n", + "8 prompt pairs\n" + ] + } + ], + "source": [ + "from murano.tasks import ioi\n", + "\n", + "task = ioi(n=8)\n", + "print(\"clean :\", task.clean[0], \"->\", repr(task.correct[0]))\n", + "print(\"corrupt:\", task.corrupt[0], \"->\", repr(task.incorrect[0]))\n", + "print(f\"{len(task.clean)} prompt pairs\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "73619a45", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:31:58.117759Z", + "iopub.status.busy": "2026-07-10T11:31:58.117676Z", + "iopub.status.idle": "2026-07-10T11:31:58.290001Z", + "shell.execute_reply": "2026-07-10T11:31:58.289554Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "clean +2.3971 / corrupt -3.1112\n" + ] + } + ], + "source": [ + "baseline = Pipeline(\n", + " [\n", + " LoadPaired(task),\n", + " Logits(model),\n", + " Logits(\n", + " model,\n", + " prompts_key=keys.CORRUPT_PROMPTS,\n", + " logits_key=keys.CORRUPT_LOGITS,\n", + " mask_key=keys.CORRUPT_MASK,\n", + " targets=None,\n", + " ),\n", + " LogitDiffStep(task.correct, task.incorrect, output_key=\"ld_clean\", model=model),\n", + " LogitDiffStep(\n", + " task.correct,\n", + " task.incorrect,\n", + " logits_key=keys.CORRUPT_LOGITS,\n", + " mask_key=keys.CORRUPT_MASK,\n", + " output_key=\"ld_corrupt\",\n", + " model=model,\n", + " ),\n", + " ]\n", + ").run()\n", + "\n", + "print(\n", + " f\"clean {baseline['ld_clean'].value:+.4f} / corrupt {baseline['ld_corrupt'].value:+.4f}\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "2308cc3b", + "metadata": {}, + "source": [ + "## 2. Find who writes the answer\n", + "\n", + "Attribution over the clean prompts, then take the strongest heads. These write\n", + "directly into the logits.\n", + "\n", + "`SelectComponents` writes a `ComponentSelection` under a key of our choosing, and\n", + "every causal step can read its targets from such a key rather than a hand-copied\n", + "node list. We will use that twice." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "d6736687", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:31:58.291105Z", + "iopub.status.busy": "2026-07-10T11:31:58.291013Z", + "iopub.status.idle": "2026-07-10T11:31:58.420305Z", + "shell.execute_reply": "2026-07-10T11:31:58.419873Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " L10.self_attn.h0 +1.546\n", + " L10.self_attn.h7 -1.491\n", + " L9.self_attn.h9 +1.316\n", + " L9.self_attn.h6 +1.066\n" + ] + } + ], + "source": [ + "attributed = Pipeline(\n", + " [\n", + " LoadPaired(task),\n", + " LogitAttribution(model, correct=task.correct, incorrect=task.incorrect),\n", + " SelectComponents(\n", + " top_k=4, by=\"abs\", modules=\"self_attn\", output_key=\"name_movers\"\n", + " ),\n", + " ]\n", + ").run()\n", + "\n", + "name_movers = attributed[\"name_movers\"].nodes\n", + "contributions = attributed[keys.LOGIT_ATTRIBUTION].contributions\n", + "for node in name_movers:\n", + " print(f\" {str(node):<24} {contributions[node]:+.3f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "0d235d37", + "metadata": {}, + "source": [ + "## 3. Find who carries the signal\n", + "\n", + "Now patch every head from the clean run into the corrupt run, and keep the ones\n", + "that restore behavior. Only layers strictly before the earliest name mover can feed\n", + "into it, so that is where we look.\n", + "\n", + "`Sweep` runs the patch-and-score chain once per head, forking `baseline` each time.\n", + "`SelectComponents` then ranks the scores it collected. A component sweep publishes\n", + "the same `{Node: float}` map an attribution does, so the two steps compose in one\n", + "pipeline with no node list carried by hand between them." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "6c4b04e5", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:31:58.421249Z", + "iopub.status.busy": "2026-07-10T11:31:58.421149Z", + "iopub.status.idle": "2026-07-10T11:32:00.256107Z", + "shell.execute_reply": "2026-07-10T11:32:00.255795Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "searching layers 0..8 for upstream carriers\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "head recovered direct\n", + "----------------------------------------------\n", + "L5.self_attn.h5 +0.268 -0.007\n", + "L8.self_attn.h10 +0.263 +0.155\n", + "L8.self_attn.h6 +0.240 -0.075\n", + "L7.self_attn.h9 +0.224 +0.221\n", + "L7.self_attn.h3 +0.155 +0.090\n", + "L3.self_attn.h0 +0.129 +0.005\n" + ] + } + ], + "source": [ + "first_mover_layer = min(node.layer for node in name_movers)\n", + "print(f\"searching layers 0..{first_mover_layer - 1} for upstream carriers\\n\")\n", + "\n", + "found = Pipeline(\n", + " [\n", + " Sweep(\n", + " over=NodeSet.product(\n", + " range(first_mover_layer), [\"self_attn\"], heads=range(model.n_heads)\n", + " ),\n", + " steps=lambda head: [\n", + " Patch(model, targets=[head]),\n", + " LogitDiffStep(\n", + " task.correct,\n", + " task.incorrect,\n", + " logits_key=keys.PATCHED_LOGITS,\n", + " mask_key=keys.PATCHED_MASK,\n", + " output_key=\"ld_patched\",\n", + " model=model,\n", + " ),\n", + " RecoveredMetricStep(\"ld_clean\", \"ld_corrupt\", \"ld_patched\"),\n", + " ],\n", + " read=keys.RECOVERED,\n", + " ),\n", + " SelectComponents(\n", + " source_key=keys.SWEEP, top_k=4, by=\"abs\", output_key=\"upstream\"\n", + " ),\n", + " ]\n", + ").run(baseline.copy())\n", + "\n", + "carried = found[keys.SWEEP]\n", + "upstream = found[\"upstream\"].nodes\n", + "\n", + "ranked = sorted(carried.scores.items(), key=lambda item: -abs(item[1]))\n", + "print(f\"{'head':<24} {'recovered':>10} {'direct':>10}\")\n", + "print(\"-\" * 46)\n", + "for node, score in ranked[:6]:\n", + " print(f\"{str(node):<24} {score:>+10.3f} {contributions.get(node, 0.0):>+10.3f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "47674cfa", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:32:00.257170Z", + "iopub.status.busy": "2026-07-10T11:32:00.257074Z", + "iopub.status.idle": "2026-07-10T11:32:04.255190Z", + "shell.execute_reply": "2026-07-10T11:32:04.254803Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "colorbar": { + "title": { + "side": "right", + "text": "recovered" + } + }, + "colorscale": [ + [ + 0.0, + "rgb(103,0,31)" + ], + [ + 0.1, + "rgb(178,24,43)" + ], + [ + 0.2, + "rgb(214,96,77)" + ], + [ + 0.3, + "rgb(244,165,130)" + ], + [ + 0.4, + "rgb(253,219,199)" + ], + [ + 0.5, + "rgb(247,247,247)" + ], + [ + 0.6, + "rgb(209,229,240)" + ], + [ + 0.7, + "rgb(146,197,222)" + ], + [ + 0.8, + "rgb(67,147,195)" + ], + [ + 0.9, + "rgb(33,102,172)" + ], + [ + 1.0, + "rgb(5,48,97)" + ] + ], + "type": "heatmap", + "x": [ + "H0", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9", + "H10", + "H11" + ], + "y": [ + "L0", + "L1", + "L2", + "L3", + "L4", + "L5", + "L6", + "L7", + "L8" + ], + "z": [ + [ + -0.0031737534347990263, + 0.04593554048080867, + 0.001730492912597036, + 0.017727553758251437, + 0.00504552520849453, + 0.002293011319103066, + -0.008045103968949122, + -0.002878729930740462, + -0.002437406625666941, + -0.004895589554436598, + 0.009194899209825252, + -0.003937282573823832 + ], + [ + -0.00043162769695892055, + -0.0006139397566852517, + 0.0003859198301329458, + -0.000151493876790636, + 0.00131011904648542, + 0.007901920613399572, + -0.0028920613918980384, + -0.00032411032840236635, + -0.0008407477322232323, + 0.00202309251462695, + 0.0002621276908125976, + 0.0033861911340242953 + ], + [ + -0.0036017452787149716, + 0.0027180598534127937, + 0.002353262598100942, + -0.00111274416700962, + -0.0009150230158154413, + -0.0009290470204097745, + 0.003590837719586046, + -8.864555990492072e-05, + 2.8394280907044915e-05, + -0.0055883061270529805, + -0.002401394366955567, + 0.003584431692796042 + ], + [ + 0.12911918343588458, + 0.0012541961639672766, + 0.002033826937896687, + -0.0010272150525701066, + 0.03720603046048425, + -0.008086310303436175, + 0.011484794083462911, + -0.00016430593037064406, + 2.0430031384337196e-05, + -0.0016600266179069918, + 0.0001504550616355002, + 0.0007437916510772254 + ], + [ + -0.0022949158135541483, + -0.0004889356663505783, + -0.0025669122483405363, + 0.05300017607916879, + -0.019652651376577245, + -0.0012614678700532272, + -0.0080875222544505, + -0.004802269326333566, + 0.0036126528378438976, + -0.0005772349545371204, + -0.0015312135386701539, + 0.003748218215589118 + ], + [ + 0.00024256333872420686, + 0.0011953299718429151, + 0.002492983236466706, + 0.0036902177027607033, + 0.0017968039466665373, + 0.26820458633428274, + 0.0013385133273924649, + -0.0007652604976166983, + -0.026005871729528545, + 0.056014644523513665, + 0.011425408483760982, + -0.0038223203633221377 + ], + [ + 0.06799495343597635, + 0.019914605931530653, + 0.0015575301892669271, + -0.0018435506286476478, + -0.007593565648183432, + -0.007854135116263327, + -0.027314605689140452, + -5.194075775678948e-05, + -0.0008798764364000138, + 0.09031735976125257, + -0.002230682409794919, + -0.0018560164105092774 + ], + [ + 0.00010318897207682176, + 0.02138106665886401, + -5.436465978543966e-05, + 0.15466260928551853, + 0.0011172456993485418, + -0.008872866511733158, + 0.001061669088548777, + -0.00017296272333010897, + -0.004552607417382598, + 0.22351493149620028, + 0.007487260230641203, + -0.00040236773675592915 + ], + [ + -0.00032791931730453093, + -0.0002198825411704088, + -0.008683629017639255, + -0.005265407749664939, + 0.0010440092309114686, + 0.01942168814041872, + 0.23976165425080564, + 0.0028731895832464047, + 0.0036562830743596007, + 0.0044553050645182125, + 0.2633645733906459, + -0.0010498958501239048 + ] + ], + "zmid": 0.0 + } + ], + "layout": { + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Recovered logit difference, upstream heads only" + }, + "xaxis": { + "title": { + "text": "Head" + } + }, + "yaxis": { + "autorange": "reversed", + "title": { + "text": "Layer" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# The recovered fractions straddle zero, so plot_sweep centers a diverging scale\n", + "# on it and a head with no effect lands in the neutral color.\n", + "fig = plot_sweep(carried, title=\"Recovered logit difference, upstream heads only\")\n", + "save_figure(fig, f\"{OUTPUT_DIR}/plots/upstream_sweep.png\")\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "68c36cee", + "metadata": {}, + "source": [ + "Look at the two columns together. Some of these heads recover a substantial\n", + "fraction of the behavior while contributing essentially nothing *directly* to the\n", + "logits: their `direct` score is near zero, or even negative. Whatever they do, they\n", + "do it through something else.\n", + "\n", + "Others, in layers 7 and 8, score on both. A head is allowed to write to the logits\n", + "*and* feed a downstream head; the two columns measure different things and neither\n", + "subsumes the other. The heads worth chasing are the ones where the gap is large." + ] + }, + { + "cell_type": "markdown", + "id": "ad64ac29", + "metadata": {}, + "source": [ + "## 4. Test the connection with path patching\n", + "\n", + "`PathPatch` isolates one edge of the computation graph. It patches a **sender**'s\n", + "output, but only along the direct path into a named **receiver**, freezing\n", + "everything else so no other route can carry the change.\n", + "\n", + "A receiver is a specific slot: `Node(layer, \"self_attn\", head=h, side=Side.Q)` is\n", + "that head's *query* input. Query, key, and value are separate slots, and which one\n", + "an upstream head writes into tells you what it is doing.\n", + "\n", + "One direction matters: **senders must be upstream of the receiver.** A layer-10\n", + "head cannot feed a layer-9 head. We check that below.\n", + "\n", + "Note also that `Patch` and `PathPatch` take their base from opposite sides. `Patch`\n", + "bases on the corrupt run and splices clean activations in. `PathPatch` bases on the\n", + "clean run and splices corrupt activations in, so a *drop* in the metric means the\n", + "path was carrying the signal." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "a1cf6c10", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:32:04.256403Z", + "iopub.status.busy": "2026-07-10T11:32:04.256253Z", + "iopub.status.idle": "2026-07-10T11:32:04.258201Z", + "shell.execute_reply": "2026-07-10T11:32:04.257967Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "receiver (strongest name mover): L10.self_attn.h0\n", + "senders (upstream carriers) : ['L5.self_attn.h5', 'L8.self_attn.h10', 'L8.self_attn.h6', 'L7.self_attn.h9']\n" + ] + } + ], + "source": [ + "receiver_head = max(name_movers, key=lambda node: contributions[node])\n", + "print(\"receiver (strongest name mover):\", receiver_head)\n", + "print(\"senders (upstream carriers) :\", [str(n) for n in upstream])" + ] + }, + { + "cell_type": "markdown", + "id": "c92f33b3", + "metadata": {}, + "source": [ + "### Which slot do the upstream heads write into?\n", + "\n", + "One more sweep, this time over the three slots rather than over components.\n", + "`PathPatch` reads its senders from the `upstream` selection the last sweep wrote,\n", + "so nothing is passed by hand. `ld_clean` already sits in the forked results, which\n", + "is what each slot's patched score is compared against." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0fa050f9", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:32:04.259018Z", + "iopub.status.busy": "2026-07-10T11:32:04.258935Z", + "iopub.status.idle": "2026-07-10T11:32:04.341570Z", + "shell.execute_reply": "2026-07-10T11:32:04.340637Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "slot change in logit difference\n", + "--------------------------------------\n", + "Q -0.5784\n", + "K -0.0066\n", + "V -0.0007\n" + ] + } + ], + "source": [ + "slots = Pipeline(\n", + " [\n", + " Sweep(\n", + " over=[Side.Q, Side.K, Side.V],\n", + " steps=lambda side: [\n", + " PathPatch(\n", + " model,\n", + " senders_key=\"upstream\",\n", + " receiver=Node(\n", + " receiver_head.layer,\n", + " \"self_attn\",\n", + " head=receiver_head.head,\n", + " side=side,\n", + " ),\n", + " ),\n", + " LogitDiffStep(\n", + " task.correct,\n", + " task.incorrect,\n", + " logits_key=keys.PATH_PATCHED_LOGITS,\n", + " mask_key=keys.PATH_PATCHED_MASK,\n", + " output_key=\"ld_path\",\n", + " model=model,\n", + " ),\n", + " ],\n", + " read=\"ld_path\",\n", + " )\n", + " ]\n", + ").run(found.copy())\n", + "\n", + "clean = found[\"ld_clean\"].value\n", + "print(f\"{'slot':<8} {'change in logit difference':>28}\")\n", + "print(\"-\" * 38)\n", + "for side, patched in slots[keys.SWEEP].scores.items():\n", + " print(f\"{side.name:<8} {patched - clean:>+28.4f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "0e673115", + "metadata": {}, + "source": [ + "The upstream heads write into the **query**, not the key or the value. The key\n", + "moves the metric by about one percent as much, and the value by a tenth of that\n", + "again.\n", + "\n", + "That is a mechanistic claim about what they compute. The name mover's value carries\n", + "*what* to copy; its query decides *where to look*. So these upstream heads are not\n", + "supplying the name. They are telling the name mover which name to skip, by marking\n", + "the subject as already-mentioned.\n", + "\n", + "The layer 7 and 8 members of this set are the **S-inhibition heads**. The layer 5\n", + "head is a **duplicate-token head**: it spots that one name occurs twice, which is\n", + "the signal the S-inhibition heads need in the first place." + ] + }, + { + "cell_type": "markdown", + "id": "2fc439fe", + "metadata": {}, + "source": [ + "### A control: the effect must vanish for downstream senders\n", + "\n", + "Path patching from heads that sit *after* the receiver cannot possibly affect it.\n", + "If the method is sound, the measured change is exactly zero. Not small, zero." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "f0ff76e2", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:32:04.342431Z", + "iopub.status.busy": "2026-07-10T11:32:04.342346Z", + "iopub.status.idle": "2026-07-10T11:32:04.374031Z", + "shell.execute_reply": "2026-07-10T11:32:04.373653Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "downstream senders ['L11.self_attn.h0']\n", + "change in logit difference: +0.000000\n", + "\n", + "zero to floating-point precision, as it must be\n" + ] + } + ], + "source": [ + "# Any head strictly after the receiver will do. If the receiver sat in the last\n", + "# layer there would be no downstream sender at all, and a \"control\" that quietly\n", + "# tested a same-layer head would still pass while proving nothing.\n", + "next_layer = receiver_head.layer + 1\n", + "assert next_layer < model.n_layers, (\n", + " \"receiver is in the last layer: no sender is downstream\"\n", + ")\n", + "downstream = [Node(next_layer, \"self_attn\", head=0)]\n", + "\n", + "control = Pipeline(\n", + " [\n", + " PathPatch(\n", + " model,\n", + " senders=downstream,\n", + " receiver=Node(\n", + " receiver_head.layer, \"self_attn\", head=receiver_head.head, side=Side.Q\n", + " ),\n", + " ),\n", + " LogitDiffStep(\n", + " task.correct,\n", + " task.incorrect,\n", + " logits_key=keys.PATH_PATCHED_LOGITS,\n", + " mask_key=keys.PATH_PATCHED_MASK,\n", + " output_key=\"ld_path\",\n", + " model=model,\n", + " ),\n", + " ]\n", + ").run(found.copy())\n", + "\n", + "effect = control[\"ld_path\"].value - clean\n", + "print(f\"downstream senders {[str(n) for n in downstream]}\")\n", + "print(f\"change in logit difference: {effect:+.6f}\")\n", + "\n", + "assert abs(effect) < 1e-9, \"a downstream sender must not affect an upstream receiver\"\n", + "print(\"\\nzero to floating-point precision, as it must be\")" + ] + }, + { + "cell_type": "markdown", + "id": "7de28a98", + "metadata": {}, + "source": [ + "## 5. Package the finding as a step\n", + "\n", + "The pipeline abstraction pays off when a bespoke analysis becomes a reusable component. A step needs only `reads`, `writes`, and `__call__`." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "add102b1", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:32:04.376439Z", + "iopub.status.busy": "2026-07-10T11:32:04.376315Z", + "iopub.status.idle": "2026-07-10T11:32:04.379420Z", + "shell.execute_reply": "2026-07-10T11:32:04.379013Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " name_movers: ['L10.self_attn.h0', 'L10.self_attn.h7', 'L9.self_attn.h9', 'L9.self_attn.h6']\n", + " upstream: ['L5.self_attn.h5', 'L8.self_attn.h10', 'L8.self_attn.h6', 'L7.self_attn.h9']\n", + " writes_into: Q\n", + " receiver: L10.self_attn.h0\n" + ] + } + ], + "source": [ + "class CircuitSummary(Step):\n", + " \"\"\"Collect the discovered circuit into one artifact.\"\"\"\n", + "\n", + " reads = [\"name_movers\"]\n", + " writes = [\"circuit\"]\n", + "\n", + " def __init__(self, upstream: list[Node], receiver: Node, slot: Side):\n", + " self.upstream = upstream\n", + " self.receiver = receiver\n", + " self.slot = slot\n", + "\n", + " def __call__(self, results: Results) -> Results:\n", + " results[\"circuit\"] = {\n", + " \"name_movers\": [str(node) for node in results[\"name_movers\"].nodes],\n", + " \"upstream\": [str(node) for node in self.upstream],\n", + " \"writes_into\": self.slot.name,\n", + " \"receiver\": str(self.receiver),\n", + " }\n", + " return results\n", + "\n", + "\n", + "attributed = CircuitSummary(upstream, receiver_head, Side.Q)(attributed)\n", + "for key, value in attributed[\"circuit\"].items():\n", + " print(f\"{key:>12}: {value}\")" + ] + }, + { + "cell_type": "markdown", + "id": "591e6347", + "metadata": {}, + "source": [ + "### What we found\n", + "\n", + "Reading the results back as one mechanism:\n", + "\n", + "- A group of heads in layers 7 and 8 identify the repeated **subject** name.\n", + "- They write that information into the **query** of the name movers in layers 9\n", + " and 10.\n", + "- The name movers then attend to the *other* name, the indirect object, and copy it\n", + " into the logits, exactly the copying behavior `attention.ipynb` read off the OV\n", + " circuit.\n", + "- Some name movers are negative and suppress the answer instead.\n", + "\n", + "This is the indirect-object-identification circuit." + ] + }, + { + "cell_type": "markdown", + "id": "af1784ec", + "metadata": {}, + "source": [ + "## 6. Save" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "831fab4c", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:32:04.380238Z", + "iopub.status.busy": "2026-07-10T11:32:04.380159Z", + "iopub.status.idle": "2026-07-10T11:32:04.403862Z", + "shell.execute_reply": "2026-07-10T11:32:04.403447Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved to: murano_outputs/circuit_discovery\n" + ] + } + ], + "source": [ + "run_dir = Save(\n", + " output_dir=\"murano_outputs\", run_name=\"circuit_discovery\", model_id=model.model_id\n", + ")(attributed)[keys.OUTPUT_DIR]\n", + "\n", + "print(\"saved to:\", run_dir)" + ] + }, + { + "cell_type": "markdown", + "id": "db8e3dcd", + "metadata": {}, + "source": [ + "## What next\n", + "\n", + "- [`../reproductions/wang2023_ioi.ipynb`](../reproductions/wang2023_ioi.ipynb) reproduces the full circuit, with more prompt templates and every head class.\n", + "- [`custom_pipeline.ipynb`](custom_pipeline.ipynb) builds a different custom experiment, around probing and steering." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/applications/custom_pipeline.ipynb b/notebooks/applications/custom_pipeline.ipynb new file mode 100644 index 0000000..8e69baf --- /dev/null +++ b/notebooks/applications/custom_pipeline.ipynb @@ -0,0 +1,1661 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "eee1b38e", + "metadata": {}, + "source": [ + "# A custom pipeline: readable is not the same as steerable\n", + "\n", + "Everything so far used the steps as they ship. This notebook answers a question no\n", + "single step answers, by mixing several and writing the one that is missing.\n", + "\n", + "The question comes from two earlier notebooks that seem to disagree. `probing.ipynb`\n", + "finds sentiment is linearly readable at almost every layer, including layer 0.\n", + "`steering.ipynb` finds that steering at layer 0 does nothing at all. So: **at which\n", + "layer is sentiment both readable and causally effective?** No single step answers\n", + "that. Three of them, composed, do.\n", + "\n", + "**Key questions**\n", + "\n", + "- How readable is sentiment at each layer, and how *effective* is intervening there?\n", + "- Do the two profiles peak in the same place?\n", + "- How do I write a step when the built-in ones do not fit?\n", + "\n", + "**Structure**\n", + "\n", + "1. Set up\n", + "2. Watch the pipeline run\n", + "3. Readability: probe every layer\n", + "4. Effectiveness: intervene during a forward pass\n", + "5. Put the two profiles side by side\n", + "6. Package the experiment as a step\n", + "7. Save and reload\n", + "\n", + "**Model and data.** GPT-2 small in float32. It is small enough that bfloat16 rounding visibly degrades its predictions, so the notebooks load it explicitly in float32. 20 positive and 20 negative sentences from `murano.tasks`, and five held-out prompts.\n", + "\n", + "**Requirements.** `pip install murano-interp[probe,plot]`" + ] + }, + { + "cell_type": "markdown", + "id": "b44d8312", + "metadata": {}, + "source": [ + "## 1. Set up" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7b92f25a", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:32:28.598022Z", + "iopub.status.busy": "2026-07-10T11:32:28.597958Z", + "iopub.status.idle": "2026-07-10T11:33:19.051062Z", + "shell.execute_reply": "2026-07-10T11:33:19.049925Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gpt2: 12 layers, 12 heads\n" + ] + } + ], + "source": [ + "import torch\n", + "\n", + "from murano import MuranoModel, Pipeline, keys\n", + "from murano.dataset import LabeledDataset, MuranoDataset\n", + "from murano.plotting import plot_line_chart, save_figure\n", + "from murano.results import Results\n", + "from murano.steps import (\n", + " Load,\n", + " LoadPrompts,\n", + " LogitDiffStep,\n", + " Logits,\n", + " Probe,\n", + " Record,\n", + " Save,\n", + " SteeringVector,\n", + " Sweep,\n", + ")\n", + "from murano.steps.base import Step\n", + "from murano.steps.intervene import steer_direction\n", + "from murano.tasks import sentiment\n", + "\n", + "OUTPUT_DIR = \"murano_outputs/custom_pipeline\"\n", + "\n", + "# GPT-2 is small enough that bfloat16 rounding degrades its predictions.\n", + "model = MuranoModel(\"gpt2\", dtype=torch.float32)\n", + "print(f\"{model.model_id}: {model.n_layers} layers, {model.n_heads} heads\")" + ] + }, + { + "cell_type": "markdown", + "id": "bdafe539", + "metadata": {}, + "source": [ + "## 2. Watch the pipeline run\n", + "\n", + "`setup_logging` turns on Murano's logger, so every step announces itself as it runs.\n", + "Useful when a pipeline is long enough that you want to see where the time goes." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "012d9443", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:19.052363Z", + "iopub.status.busy": "2026-07-10T11:33:19.052110Z", + "iopub.status.idle": "2026-07-10T11:33:19.054227Z", + "shell.execute_reply": "2026-07-10T11:33:19.053866Z" + } + }, + "outputs": [], + "source": [ + "import logging\n", + "\n", + "from murano import setup_logging\n", + "\n", + "setup_logging(logging.INFO)" + ] + }, + { + "cell_type": "markdown", + "id": "73eaafea", + "metadata": {}, + "source": [ + "## 3. Readability: probe every layer\n", + "\n", + "The first half is a standard probing pipeline. What we keep is the accuracy at\n", + "*every* layer, not just the best one: that curve is the readability profile." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "55596b9d", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:19.055076Z", + "iopub.status.busy": "2026-07-10T11:33:19.054993Z", + "iopub.status.idle": "2026-07-10T11:33:20.024393Z", + "shell.execute_reply": "2026-07-10T11:33:20.024104Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:19 [INFO] murano: Running step: Load\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:19 [INFO] murano: Running step: Record\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:19 [INFO] murano: Recording: 40 labeled texts, 12 layers\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:19 [INFO] murano: Running step: Probe\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:19 [INFO] murano: Key L0.resid_post: accuracy=0.8250 (+/- 0.1500)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:19 [INFO] murano: Key L1.resid_post: accuracy=0.8500 (+/- 0.1458)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:19 [INFO] murano: Key L2.resid_post: accuracy=0.7750 (+/- 0.0935)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:19 [INFO] murano: Key L3.resid_post: accuracy=0.8500 (+/- 0.1225)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:19 [INFO] murano: Key L4.resid_post: accuracy=0.8500 (+/- 0.1225)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:19 [INFO] murano: Key L5.resid_post: accuracy=0.9250 (+/- 0.0612)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:19 [INFO] murano: Key L6.resid_post: accuracy=0.8250 (+/- 0.1000)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:19 [INFO] murano: Key L7.resid_post: accuracy=0.9000 (+/- 0.0935)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:19 [INFO] murano: Key L8.resid_post: accuracy=0.9250 (+/- 0.0612)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:19 [INFO] murano: Key L9.resid_post: accuracy=0.9250 (+/- 0.0612)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:19 [INFO] murano: Key L10.resid_post: accuracy=0.9000 (+/- 0.0500)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:20 [INFO] murano: Key L11.resid_post: accuracy=0.9000 (+/- 0.0935)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:20 [INFO] murano: Best layer: L5.resid_post (accuracy=0.9250)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "probe accuracy per layer: {0: 0.825, 1: 0.85, 2: 0.775, 3: 0.85, 4: 0.85, 5: 0.925, 6: 0.825, 7: 0.9, 8: 0.925, 9: 0.925, 10: 0.9, 11: 0.9}\n" + ] + } + ], + "source": [ + "positive, negative = sentiment(n_per_class=20)\n", + "\n", + "probe_results = Pipeline(\n", + " [\n", + " Load(\n", + " LabeledDataset.from_lists(\n", + " texts=positive + negative,\n", + " labels=[0] * len(positive) + [1] * len(negative),\n", + " label_names=[\"positive\", \"negative\"],\n", + " )\n", + " ),\n", + " Record(model, layers=\"all\", position=\"last\", batch_size=8),\n", + " Probe(cv=5, refit=False),\n", + " ]\n", + ").run()\n", + "\n", + "readability = {\n", + " node.layer: accuracy\n", + " for node, accuracy in probe_results[keys.PROBE].accuracy_per_layer.items()\n", + "}\n", + "print(\n", + " \"\\nprobe accuracy per layer:\",\n", + " {k: round(v, 3) for k, v in sorted(readability.items())},\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "bee9af65", + "metadata": {}, + "source": [ + "We also need the steering direction itself, from the same sentences." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f3fa66a2", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:20.025506Z", + "iopub.status.busy": "2026-07-10T11:33:20.025374Z", + "iopub.status.idle": "2026-07-10T11:33:20.086812Z", + "shell.execute_reply": "2026-07-10T11:33:20.086479Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:20 [INFO] murano: Running step: Load\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:20 [INFO] murano: Running step: Record\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:20 [INFO] murano: Recording: 20 pos, 20 neg texts, 12 layers\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:20 [INFO] murano: Running step: SteeringVector\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:20 [INFO] murano: Best key: L8.resid_post (score=1.6600)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "best separating layer: L8.resid_post\n" + ] + } + ], + "source": [ + "steering_results = Pipeline(\n", + " [\n", + " Load(MuranoDataset.contrastive(positive=positive, negative=negative)),\n", + " Record(model, layers=\"all\", position=\"last\", batch_size=8),\n", + " SteeringVector(normalize=True),\n", + " ]\n", + ").run()\n", + "\n", + "steering = steering_results[keys.STEERING]\n", + "print(\"\\nbest separating layer:\", steering.best_layer)" + ] + }, + { + "cell_type": "markdown", + "id": "29036024", + "metadata": {}, + "source": [ + "## 4. Effectiveness: intervene during a forward pass\n", + "\n", + "We need, one layer at a time: apply the steering direction *during* a forward pass\n", + "and read the resulting logits. `Intervene` applies exactly that edit, but it\n", + "generates text, which is slow and scores coarsely. `Logits` runs a forward pass, and\n", + "it takes the same `fn` that `Intervene` does. So a twelve-layer study costs twelve\n", + "forward passes rather than twelve decodes.\n", + "\n", + "`Sweep` then runs that pair of steps once per layer." + ] + }, + { + "cell_type": "markdown", + "id": "6adb634c", + "metadata": {}, + "source": [ + "The score is a logit difference between two ordinary words, `\" good\"` and `\" bad\"`,\n", + "at the last prompt position. That is continuous, unlike counting positive words in a\n", + "generation, which is what makes a twelve-point curve legible." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "af75e274", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:20.087674Z", + "iopub.status.busy": "2026-07-10T11:33:20.087571Z", + "iopub.status.idle": "2026-07-10T11:33:20.107993Z", + "shell.execute_reply": "2026-07-10T11:33:20.106596Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "clean logit(' good') - logit(' bad') = +2.4945\n" + ] + } + ], + "source": [ + "EVAL_PROMPTS = [\n", + " \"I think that the food was\",\n", + " \"The movie was\",\n", + " \"My friend is a\",\n", + " \"Today I feel\",\n", + " \"The service was\",\n", + "]\n", + "\n", + "setup_logging(logging.WARNING) # twelve forward passes would flood the output\n", + "\n", + "clean = (\n", + " Pipeline(\n", + " [\n", + " LoadPrompts(EVAL_PROMPTS),\n", + " Logits(model),\n", + " LogitDiffStep(\" good\", \" bad\", output_key=\"valence\", model=model),\n", + " ]\n", + " )\n", + " .run()[\"valence\"]\n", + " .value\n", + ")\n", + "print(f\"clean logit(' good') - logit(' bad') = {clean:+.4f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "432bd52d", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:20.108935Z", + "iopub.status.busy": "2026-07-10T11:33:20.108842Z", + "iopub.status.idle": "2026-07-10T11:33:20.221256Z", + "shell.execute_reply": "2026-07-10T11:33:20.221003Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "layer probe accuracy steering effect\n", + "-----------------------------------------\n", + " 0 0.825 +0.5777\n", + " 1 0.850 +0.5443\n", + " 2 0.775 +0.9168\n", + " 3 0.850 +0.5388\n", + " 4 0.850 +0.6724\n", + " 5 0.925 +0.9020\n", + " 6 0.825 +1.1579\n", + " 7 0.900 +0.9707\n", + " 8 0.925 +1.0385\n", + " 9 0.925 +0.7725\n", + " 10 0.900 +0.5771\n", + " 11 0.900 +0.4133\n" + ] + } + ], + "source": [ + "direction = steering.direction_per_layer\n", + "\n", + "swept = Pipeline(\n", + " [\n", + " LoadPrompts(EVAL_PROMPTS),\n", + " Sweep(\n", + " over=list(range(model.n_layers)),\n", + " steps=lambda layer: [\n", + " Logits(\n", + " model,\n", + " fn=steer_direction(direction, alpha=8.0),\n", + " layers=[layer],\n", + " modules=\"residual\",\n", + " logits_key=\"steered_logits\",\n", + " targets=None,\n", + " ),\n", + " LogitDiffStep(\n", + " \" good\",\n", + " \" bad\",\n", + " logits_key=\"steered_logits\",\n", + " output_key=\"valence\",\n", + " model=model,\n", + " ),\n", + " ],\n", + " read=\"valence\",\n", + " ),\n", + " ]\n", + ").run()\n", + "\n", + "effectiveness = {\n", + " layer: value - clean for layer, value in swept[keys.SWEEP].scores.items()\n", + "}\n", + "\n", + "print(f\"{'layer':>5} {'probe accuracy':>16} {'steering effect':>17}\")\n", + "print(\"-\" * 41)\n", + "for layer in range(model.n_layers):\n", + " print(f\"{layer:>5} {readability[layer]:>16.3f} {effectiveness[layer]:>+17.4f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "85785b0d", + "metadata": {}, + "source": [ + "## 5. Put the two profiles side by side\n", + "\n", + "`plot_line_chart` takes one x-axis and a named series per line." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "50f96376", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:20.223958Z", + "iopub.status.busy": "2026-07-10T11:33:20.223851Z", + "iopub.status.idle": "2026-07-10T11:33:23.629300Z", + "shell.execute_reply": "2026-07-10T11:33:23.628927Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "mode": "lines", + "name": "probe accuracy (readable)", + "type": "scatter", + "x": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "y": [ + 0.825, + 0.85, + 0.775, + 0.85, + 0.85, + 0.925, + 0.825, + 0.9, + 0.925, + 0.925, + 0.9, + 0.9 + ] + }, + { + "mode": "lines", + "name": "steering effect (effective)", + "type": "scatter", + "x": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "y": [ + 0.5776638984680176, + 0.5442788600921631, + 0.9167675971984863, + 0.5387797355651855, + 0.6723794937133789, + 0.9020459651947021, + 1.1578717231750488, + 0.9707365036010742, + 1.038459300994873, + 0.7725389003753662, + 0.577052116394043, + 0.4132523536682129 + ] + } + ], + "layout": { + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Where sentiment is readable, and where it is effective" + }, + "xaxis": { + "title": { + "text": "layer" + } + }, + "yaxis": { + "title": { + "text": "score" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "layers = list(range(model.n_layers))\n", + "fig = plot_line_chart(\n", + " x_data=layers,\n", + " y_series={\n", + " \"probe accuracy (readable)\": [readability[i] for i in layers],\n", + " \"steering effect (effective)\": [effectiveness[i] for i in layers],\n", + " },\n", + " title=\"Where sentiment is readable, and where it is effective\",\n", + " x_label=\"layer\",\n", + " y_label=\"score\",\n", + ")\n", + "save_figure(fig, f\"{OUTPUT_DIR}/plots/readable_vs_effective.png\")\n", + "fig" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "2541eeed", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:23.630628Z", + "iopub.status.busy": "2026-07-10T11:33:23.630527Z", + "iopub.status.idle": "2026-07-10T11:33:23.632885Z", + "shell.execute_reply": "2026-07-10T11:33:23.632512Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "most readable layer : 5 (accuracy 0.925)\n", + "most effective layer: 6 (effect +1.1579)\n", + "layer 0 is readable at 0.825 but only +0.5777 effective\n" + ] + } + ], + "source": [ + "most_readable = max(readability, key=readability.get)\n", + "most_effective = max(effectiveness, key=effectiveness.get)\n", + "\n", + "print(\n", + " f\"most readable layer : {most_readable} (accuracy {readability[most_readable]:.3f})\"\n", + ")\n", + "print(\n", + " f\"most effective layer: {most_effective} (effect {effectiveness[most_effective]:+.4f})\"\n", + ")\n", + "print(\n", + " f\"layer 0 is readable at {readability[0]:.3f} but only {effectiveness[0]:+.4f} effective\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "70fe9b77", + "metadata": {}, + "source": [ + "The two curves have different shapes, and that is the answer.\n", + "\n", + "**Readability is nearly flat.** A probe reads sentiment off every layer at roughly the\n", + "same accuracy, including layer 0, because words like \"love\" carry the label in their\n", + "token embeddings before any attention or MLP has run.\n", + "\n", + "**Effectiveness is not flat.** It varies by about a factor of three across the network.\n", + "It climbs through the early layers, peaks in the middle, and then falls away, reaching\n", + "its *lowest* value at the final layer. That last point is the cleanest case: the final\n", + "layer is among the most readable and the least effective, because nothing downstream is\n", + "left to act on the change we make there.\n", + "\n", + "So a layer being readable tells you almost nothing about whether intervening there will\n", + "work. A probe answers *where the information is*. Only an intervention answers *where\n", + "the model uses it*.\n", + "\n", + "One loose end worth naming. `steering.ipynb` concluded that steering at layer 0 does\n", + "\"nothing at all\", and here layer 0 scores about half the peak. Both are honest readings\n", + "of their own metric: a positive-word count over four generations cannot see a modest\n", + "shift in the logits, while this continuous score can. The metric decided the conclusion,\n", + "which is the lesson of `metrics.ipynb`." + ] + }, + { + "cell_type": "markdown", + "id": "524ccae2", + "metadata": {}, + "source": [ + "## 6. Package the experiment as a step\n", + "\n", + "Once the analysis works, wrap it so the next person runs it in one line." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "0666efdf", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:23.633651Z", + "iopub.status.busy": "2026-07-10T11:33:23.633573Z", + "iopub.status.idle": "2026-07-10T11:33:23.636368Z", + "shell.execute_reply": "2026-07-10T11:33:23.636026Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'most_readable_layer': 5, 'most_effective_layer': 6, 'they_agree': False}\n" + ] + } + ], + "source": [ + "from murano.artifacts import MetricScore\n", + "\n", + "\n", + "class ReadableVsEffective(Step):\n", + " \"\"\"Summarize where a concept is readable against where it is effective.\"\"\"\n", + "\n", + " reads = [keys.PROBE]\n", + " writes = [\"profile\"]\n", + "\n", + " def __init__(self, effectiveness: dict[int, float]):\n", + " self.effectiveness = effectiveness\n", + "\n", + " def __call__(self, results: Results) -> Results:\n", + " accuracy = {\n", + " node.layer: value\n", + " for node, value in results[keys.PROBE].accuracy_per_layer.items()\n", + " }\n", + " readable = max(accuracy, key=accuracy.get)\n", + " effective = max(self.effectiveness, key=self.effectiveness.get)\n", + " results[\"profile\"] = {\n", + " \"most_readable_layer\": readable,\n", + " \"most_effective_layer\": effective,\n", + " \"they_agree\": readable == effective,\n", + " }\n", + " results[\"gap\"] = MetricScore(\n", + " metric_name=\"readable_minus_effective_layer\",\n", + " value=float(readable - effective),\n", + " )\n", + " return results\n", + "\n", + "\n", + "probe_results = ReadableVsEffective(effectiveness)(probe_results)\n", + "print(probe_results[\"profile\"])" + ] + }, + { + "cell_type": "markdown", + "id": "3a19a095", + "metadata": {}, + "source": [ + "## 7. Save and reload\n", + "\n", + "`Save` writes every artifact it recognizes, and the `load_*` functions read them back,\n", + "so an analysis can be split across sessions or shared as files." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "e8f57e59", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:23.637086Z", + "iopub.status.busy": "2026-07-10T11:33:23.637010Z", + "iopub.status.idle": "2026-07-10T11:33:23.684152Z", + "shell.execute_reply": "2026-07-10T11:33:23.683773Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "13:33:23 [WARNING] murano: No serializer registered for results['profile'] (type dict); it was not saved. Register one in _serializer_registry().\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved to: murano_outputs/custom_pipeline\n", + "reloaded: readable_minus_effective_layer = -1.0\n" + ] + } + ], + "source": [ + "from murano import load_metric_score\n", + "\n", + "run_dir = Save(\n", + " output_dir=\"murano_outputs\", run_name=\"custom_pipeline\", model_id=model.model_id\n", + ")(probe_results)[keys.OUTPUT_DIR]\n", + "print(\"saved to:\", run_dir)\n", + "\n", + "reloaded = load_metric_score(f\"{run_dir}/metrics/gap.json\")\n", + "print(\"reloaded:\", reloaded.metric_name, \"=\", reloaded.value)" + ] + }, + { + "cell_type": "markdown", + "id": "69918354", + "metadata": {}, + "source": [ + "## What next\n", + "\n", + "- [`probing.ipynb`](probing.ipynb) and `steering.ipynb` are the two halves this notebook joins.\n", + "- [`circuit_discovery.ipynb`](circuit_discovery.ipynb) builds a different custom experiment, around attribution and patching." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/applications/logit_attribution.ipynb b/notebooks/applications/logit_attribution.ipynb new file mode 100644 index 0000000..7d18b9b --- /dev/null +++ b/notebooks/applications/logit_attribution.ipynb @@ -0,0 +1,1322 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d8196aa4", + "metadata": {}, + "source": [ + "# Direct logit attribution: who wrote the answer?\n", + "\n", + "The final logits are a linear readout of the residual stream, and the residual\n", + "stream is just the sum of what every component wrote into it. So the logit\n", + "difference between two answers decomposes **exactly** into one number per\n", + "component: each attention head, each MLP, and the embedding.\n", + "\n", + "That decomposition is direct logit attribution (DLA). It measures only the\n", + "*direct* path from a component to the logits, ignoring effects routed through\n", + "later components.\n", + "\n", + "**Key questions**\n", + "\n", + "- Which heads push the model toward the correct answer?\n", + "- Do any heads push *against* it?\n", + "- Does the decomposition actually add up?\n", + "\n", + "**Structure**\n", + "\n", + "1. Set up\n", + "2. Attribute the logit difference\n", + "3. Check that it adds up\n", + "4. Plot the contributions\n", + "5. Select the top components\n", + "6. Save\n", + "\n", + "**Model and data.** GPT-2 small in float32. It is small enough that bfloat16 rounding visibly degrades its predictions, so the notebooks load it explicitly in float32. Eight indirect-object prompt pairs from `murano.tasks.ioi`.\n", + "\n", + "**Requirements.** `pip install murano-interp[plot]`" + ] + }, + { + "cell_type": "markdown", + "id": "16a7950c", + "metadata": {}, + "source": [ + "## 1. Set up" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b56ef99a", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:34:55.379971Z", + "iopub.status.busy": "2026-07-10T11:34:55.379894Z", + "iopub.status.idle": "2026-07-10T11:35:45.162436Z", + "shell.execute_reply": "2026-07-10T11:35:45.161876Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gpt2: 12 layers, 12 heads\n" + ] + } + ], + "source": [ + "import torch\n", + "\n", + "from murano import MuranoModel, Pipeline, keys\n", + "from murano.steps import LoadPrompts, LogitAttribution, Plot, Save, SelectComponents\n", + "\n", + "OUTPUT_DIR = \"murano_outputs/logit_attribution\"\n", + "\n", + "# GPT-2 is small enough that bfloat16 rounding degrades its predictions.\n", + "model = MuranoModel(\"gpt2\", dtype=torch.float32)\n", + "print(f\"{model.model_id}: {model.n_layers} layers, {model.n_heads} heads\")" + ] + }, + { + "cell_type": "markdown", + "id": "bf9a7512", + "metadata": {}, + "source": [ + "This notebook uses the **indirect-object-identification** task from\n", + "`murano.tasks`. Each clean prompt names two people and then has the *subject*\n", + "give a drink, so the next token should be the other name, the *indirect object*.\n", + "The corrupt prompt swaps who gives, which flips the answer.\n", + "\n", + "```\n", + "clean : When Mary and John went to the store, John gave a drink to ___ -> \" Mary\"\n", + "corrupt: When Mary and John went to the store, Mary gave a drink to ___ -> \" John\"\n", + "```\n", + "\n", + "The metric throughout is the **logit difference**: the correct name's logit minus\n", + "the incorrect name's. Positive means the model prefers the right answer." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "13052803", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:35:45.163870Z", + "iopub.status.busy": "2026-07-10T11:35:45.163577Z", + "iopub.status.idle": "2026-07-10T11:35:45.170952Z", + "shell.execute_reply": "2026-07-10T11:35:45.170536Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "clean : When Mary and John went to the store, John gave a drink to -> ' Mary'\n", + "corrupt: When Mary and John went to the store, Mary gave a drink to -> ' John'\n", + "8 prompt pairs\n" + ] + } + ], + "source": [ + "from murano.tasks import ioi\n", + "\n", + "task = ioi(n=8)\n", + "print(\"clean :\", task.clean[0], \"->\", repr(task.correct[0]))\n", + "print(\"corrupt:\", task.corrupt[0], \"->\", repr(task.incorrect[0]))\n", + "print(f\"{len(task.clean)} prompt pairs\")" + ] + }, + { + "cell_type": "markdown", + "id": "f3116f0e", + "metadata": {}, + "source": [ + "## 2. Attribute the logit difference\n", + "\n", + "`LogitAttribution` takes the correct and incorrect answers and returns the signed\n", + "contribution of every component to `logit(correct) - logit(incorrect)`.\n", + "\n", + "Positive means the component pushes toward the right name. Negative means it\n", + "actively pushes toward the wrong one." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c57ece0d", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:35:45.171765Z", + "iopub.status.busy": "2026-07-10T11:35:45.171625Z", + "iopub.status.idle": "2026-07-10T11:35:45.549721Z", + "shell.execute_reply": "2026-07-10T11:35:45.549185Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "target : logit_diff\n", + "total : 2.3971\n" + ] + } + ], + "source": [ + "results = Pipeline(\n", + " [\n", + " LoadPrompts(task.clean),\n", + " LogitAttribution(model, correct=task.correct, incorrect=task.incorrect),\n", + " ]\n", + ").run()\n", + "\n", + "attribution = results[keys.LOGIT_ATTRIBUTION]\n", + "print(\"target :\", attribution.target)\n", + "print(\"total :\", f\"{attribution.total:.4f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "de79012b", + "metadata": {}, + "source": [ + "## 3. Check that it adds up\n", + "\n", + "If the decomposition is exact, the component contributions plus the embedding and\n", + "the catch-all `other` term must reconstruct the total logit difference.\n", + "`completeness_error` is that residual. It should be a rounding error.\n", + "\n", + "The one approximation is the final layer norm, which is frozen at its observed\n", + "scale so the readout stays linear." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "47aacfd2", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:35:45.550741Z", + "iopub.status.busy": "2026-07-10T11:35:45.550591Z", + "iopub.status.idle": "2026-07-10T11:35:45.552668Z", + "shell.execute_reply": "2026-07-10T11:35:45.552332Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total logit difference : 2.397078\n", + "completeness error : 4.51e-05\n", + "\n", + "the decomposition is exact to float precision\n" + ] + } + ], + "source": [ + "print(f\"total logit difference : {attribution.total:.6f}\")\n", + "print(f\"completeness error : {attribution.completeness_error:.2e}\")\n", + "\n", + "assert abs(attribution.completeness_error) < 1e-3, \"decomposition does not close\"\n", + "print(\"\\nthe decomposition is exact to float precision\")" + ] + }, + { + "cell_type": "markdown", + "id": "d8602733", + "metadata": {}, + "source": [ + "## 4. Plot the contributions\n", + "\n", + "`Plot` draws the largest contributors, signed. Blue bars push toward the correct answer, red bars push away." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "9881efaa", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:35:45.553474Z", + "iopub.status.busy": "2026-07-10T11:35:45.553400Z", + "iopub.status.idle": "2026-07-10T11:35:49.069411Z", + "shell.execute_reply": "2026-07-10T11:35:49.068980Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "marker": { + "color": [ + "#1f77b4", + "#d62728", + "#1f77b4", + "#d62728", + "#1f77b4", + "#1f77b4", + "#1f77b4", + "#1f77b4", + "#1f77b4", + "#d62728", + "#1f77b4", + "#d62728", + "#d62728", + "#d62728", + "#1f77b4", + "#1f77b4", + "#1f77b4", + "#d62728", + "#d62728", + "#1f77b4" + ] + }, + "orientation": "h", + "type": "bar", + "x": [ + 0.1549883484840393, + -0.15862257778644562, + 0.1643160730600357, + -0.16575846076011658, + 0.18882504105567932, + 0.1896304488182068, + 0.20599669218063354, + 0.22148513793945312, + 0.23182271420955658, + -0.2738479971885681, + 0.38225769996643066, + -0.4355315566062927, + -0.45845866203308105, + -0.47462695837020874, + 0.49171698093414307, + 1.0661284923553467, + 1.3163723945617676, + -1.4780843257904053, + -1.4912439584732056, + 1.5458732843399048 + ], + "y": [ + "L8.self_attn.h10", + "L9.self_attn.h5", + "L11.self_attn.h2", + "L8.mlp", + "L9.self_attn.h8", + "L9.mlp", + "L9.self_attn.h2", + "L7.self_attn.h9", + "L10.self_attn.h1", + "L10.self_attn.h6", + "L11.self_attn.h3", + "L11.self_attn.h10", + "L10.self_attn.h2", + "L11.self_attn.h1", + "L10.self_attn.h10", + "L9.self_attn.h6", + "L9.self_attn.h9", + "other", + "L10.self_attn.h7", + "L10.self_attn.h0" + ] + } + ], + "layout": { + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Direct Logit Attribution (logit_diff, total=2.40)" + }, + "xaxis": { + "title": { + "text": "Contribution (logits)" + } + }, + "yaxis": { + "title": { + "text": "Component" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "Plot(output_dir=OUTPUT_DIR)(results);" + ] + }, + { + "cell_type": "markdown", + "id": "3bdc9c0d", + "metadata": {}, + "source": [ + "Some heads have clearly negative contributions. These are not noise. GPT-2 small\n", + "contains **negative name movers**, heads that systematically suppress the correct\n", + "name. They are a real and reproducible part of the circuit." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "99d93f26", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:35:49.070820Z", + "iopub.status.busy": "2026-07-10T11:35:49.070718Z", + "iopub.status.idle": "2026-07-10T11:35:49.073693Z", + "shell.execute_reply": "2026-07-10T11:35:49.073367Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pushes TOWARD the correct name:\n", + " L10.self_attn.h0 +1.546\n", + " L9.self_attn.h9 +1.316\n", + " L9.self_attn.h6 +1.066\n", + " L10.self_attn.h10 +0.492\n", + " L11.self_attn.h3 +0.382\n", + "\n", + "pushes AWAY from the correct name:\n", + " L10.self_attn.h2 -0.458\n", + " L11.self_attn.h1 -0.475\n", + " L10.self_attn.h7 -1.491\n" + ] + } + ], + "source": [ + "contributions = sorted(\n", + " attribution.contributions.items(), key=lambda kv: kv[1], reverse=True\n", + ")\n", + "\n", + "print(\"pushes TOWARD the correct name:\")\n", + "for node, value in contributions[:5]:\n", + " print(f\" {str(node):<24} {value:+.3f}\")\n", + "\n", + "print(\"\\npushes AWAY from the correct name:\")\n", + "for node, value in contributions[-3:]:\n", + " print(f\" {str(node):<24} {value:+.3f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "7be21ff3", + "metadata": {}, + "source": [ + "## 5. Select the top components\n", + "\n", + "`SelectComponents` turns an attribution into a `ComponentSelection`, ranked by\n", + "absolute contribution so the negative heads survive the cut. `Patch`, `PathPatch`\n", + "and `Ablate` accept that selection by key, which is how attribution feeds into a\n", + "causal experiment." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "e6a17cae", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:35:49.074550Z", + "iopub.status.busy": "2026-07-10T11:35:49.074475Z", + "iopub.status.idle": "2026-07-10T11:35:49.076432Z", + "shell.execute_reply": "2026-07-10T11:35:49.076132Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "selected 8 heads by |contribution|:\n", + "\n", + " L10.self_attn.h0 +1.546\n", + " L10.self_attn.h7 -1.491\n", + " L9.self_attn.h9 +1.316\n", + " L9.self_attn.h6 +1.066\n", + " L10.self_attn.h10 +0.492\n", + " L11.self_attn.h1 -0.475\n", + " L10.self_attn.h2 -0.458\n", + " L11.self_attn.h10 -0.436\n" + ] + } + ], + "source": [ + "results = SelectComponents(top_k=8, by=\"abs\", modules=\"self_attn\")(results)\n", + "\n", + "selection = results[keys.SELECTION]\n", + "print(f\"selected {len(selection.nodes)} heads by |contribution|:\\n\")\n", + "for node in selection.nodes:\n", + " print(f\" {str(node):<24} {attribution.contributions[node]:+.3f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "1a14f573", + "metadata": {}, + "source": [ + "### The caveat that motivates the next notebook\n", + "\n", + "DLA sees only the **direct** path to the logits. A head that matters enormously by\n", + "feeding another head, and never writes to the logits itself, scores near zero here.\n", + "The indirect-object circuit has exactly such heads. Finding them needs an\n", + "intervention, not a decomposition." + ] + }, + { + "cell_type": "markdown", + "id": "816e079d", + "metadata": {}, + "source": [ + "## 6. Save" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "4e0132f8", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:35:49.077201Z", + "iopub.status.busy": "2026-07-10T11:35:49.077131Z", + "iopub.status.idle": "2026-07-10T11:35:49.098005Z", + "shell.execute_reply": "2026-07-10T11:35:49.097674Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved to: murano_outputs/logit_attribution\n" + ] + } + ], + "source": [ + "run_dir = Save(\n", + " output_dir=\"murano_outputs\", run_name=\"logit_attribution\", model_id=model.model_id\n", + ")(results)[keys.OUTPUT_DIR]\n", + "\n", + "print(\"saved to:\", run_dir)" + ] + }, + { + "cell_type": "markdown", + "id": "62790ddd", + "metadata": {}, + "source": [ + "## What next\n", + "\n", + "- [`activation_patching.ipynb`](activation_patching.ipynb) measures each head's total causal effect, including the indirect paths DLA cannot see.\n", + "- [`circuit_discovery.ipynb`](circuit_discovery.ipynb) traces how the heads found by patching reach the ones found here." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/applications/logit_lens.ipynb b/notebooks/applications/logit_lens.ipynb new file mode 100644 index 0000000..9104349 --- /dev/null +++ b/notebooks/applications/logit_lens.ipynb @@ -0,0 +1,1460 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "34e35cc7", + "metadata": {}, + "source": [ + "# Logit lens: the model's running guess at every layer\n", + "\n", + "A decoder-only transformer builds its prediction incrementally: each layer adds to\n", + "the residual stream, and only the last one is read out. The **logit lens** cheats\n", + "by taking an intermediate layer's residual stream, pushing it through the final\n", + "norm and unembedding, and asking \"if we stopped here, what would you predict?\"\n", + "\n", + "Reading those predictions layer by layer shows when the answer appears.\n", + "\n", + "**Key questions**\n", + "\n", + "- At which layer does the model commit to the right next token?\n", + "- How confident is it before then?\n", + "- Does the answer arrive gradually, or snap into place?\n", + "\n", + "**Structure**\n", + "\n", + "1. Set up\n", + "2. Run the lens\n", + "3. Plot the layer-by-layer prediction\n", + "4. Read the prediction off each layer\n", + "5. Save and reload\n", + "\n", + "**Model and data.** GPT-2 small in float32. It is small enough that bfloat16 rounding visibly degrades its predictions, so the notebooks load it explicitly in float32. One factual prompt. The step is architecture-agnostic, so swapping `model_id` for any causal LM nnterp can standardize (Llama, Mistral, Qwen, OPT) works unchanged.\n", + "\n", + "**Requirements.** `pip install murano-interp[plot]`" + ] + }, + { + "cell_type": "markdown", + "id": "e755c276", + "metadata": {}, + "source": [ + "## 1. Set up" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "8215e63f", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:37.549674Z", + "iopub.status.busy": "2026-07-10T11:33:37.549607Z", + "iopub.status.idle": "2026-07-10T11:34:25.940901Z", + "shell.execute_reply": "2026-07-10T11:34:25.940485Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gpt2: 12 layers, 12 heads\n" + ] + } + ], + "source": [ + "import torch\n", + "\n", + "from murano import MuranoModel, Pipeline, keys\n", + "from murano.steps import LoadPrompts, LogitLens, Plot, Save\n", + "\n", + "OUTPUT_DIR = \"murano_outputs/logit_lens\"\n", + "\n", + "# GPT-2 is small enough that bfloat16 rounding degrades its predictions.\n", + "model = MuranoModel(\"gpt2\", dtype=torch.float32)\n", + "print(f\"{model.model_id}: {model.n_layers} layers, {model.n_heads} heads\")\n", + "\n", + "PROMPT = \"The Eiffel Tower is in the city of\"" + ] + }, + { + "cell_type": "markdown", + "id": "e390cbb6", + "metadata": {}, + "source": [ + "## 2. Run the lens\n", + "\n", + "`LogitLens` projects every layer's residual stream through the unembedding and\n", + "records, for each layer and each token position, the predicted token and its\n", + "probability." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "03f913e3", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:34:25.942478Z", + "iopub.status.busy": "2026-07-10T11:34:25.942236Z", + "iopub.status.idle": "2026-07-10T11:34:26.290753Z", + "shell.execute_reply": "2026-07-10T11:34:26.290506Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "layers x batch x positions: (12, 1, 10)\n", + "input tokens: ['The', ' E', 'iff', 'el', ' Tower', ' is', ' in', ' the', ' city', ' of']\n" + ] + } + ], + "source": [ + "results = Pipeline([LoadPrompts([PROMPT]), LogitLens(model)]).run()\n", + "\n", + "lens = results[keys.LOGIT_LENS]\n", + "print(\"layers x batch x positions:\", tuple(lens.max_probs.shape))\n", + "print(\"input tokens:\", lens.input_words[0])" + ] + }, + { + "cell_type": "markdown", + "id": "5e47be4d", + "metadata": {}, + "source": [ + "## 3. Plot the layer-by-layer prediction\n", + "\n", + "Rows are layers, columns are token positions. Each cell shows the token that layer\n", + "would predict at that position, shaded by its probability. Read the rightmost\n", + "column bottom-to-top to watch the final answer form." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "71d3f35c", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:34:26.292882Z", + "iopub.status.busy": "2026-07-10T11:34:26.292709Z", + "iopub.status.idle": "2026-07-10T11:34:29.949662Z", + "shell.execute_reply": "2026-07-10T11:34:29.949160Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "colorscale": [ + [ + 0.0, + "rgb(49,54,149)" + ], + [ + 0.1, + "rgb(69,117,180)" + ], + [ + 0.2, + "rgb(116,173,209)" + ], + [ + 0.3, + "rgb(171,217,233)" + ], + [ + 0.4, + "rgb(224,243,248)" + ], + [ + 0.5, + "rgb(255,255,191)" + ], + [ + 0.6, + "rgb(254,224,144)" + ], + [ + 0.7, + "rgb(253,174,97)" + ], + [ + 0.8, + "rgb(244,109,67)" + ], + [ + 0.9, + "rgb(215,48,39)" + ], + [ + 1.0, + "rgb(165,0,38)" + ] + ], + "text": [ + [ + "\n", + " E", + "iff", + "el", + " Tower", + " not", + " the", + " same", + "scape", + " the" + ], + [ + " the", + "Z", + "ness", + "ter", + " Tower", + " not", + " order", + " same", + "scape", + " the" + ], + [ + " the", + "leg", + "ness", + "ter", + " Tower", + " now", + " order", + " same", + "scape", + " the" + ], + [ + " the", + "leg", + "ness", + "stra", + " Tower", + " also", + " the", + " same", + " hall", + " the" + ], + [ + " the", + "leg", + "ness", + "horn", + " Tower", + " also", + " front", + " same", + "scape", + " the" + ], + [ + " the", + "FP", + "ler", + " Tower", + " Towers", + " also", + " the", + " same", + "scape", + " the" + ], + [ + " the", + "FP", + "ler", + " Tower", + " Tower", + " also", + " front", + " midst", + "scape", + " East" + ], + [ + " the", + "FP", + "ler", + " Tower", + " Tower", + " located", + " front", + " midst", + " centre", + " Ing" + ], + [ + " the", + "TS", + "ler", + " Tower", + " Tower", + " located", + " front", + " midst", + " centre", + " Rome" + ], + [ + " the", + "FP", + "el", + " Tower", + " tower", + " located", + " London", + " midst", + " centre", + " London" + ], + [ + " the", + "nerg", + "el", + " Tower", + " is", + " located", + " the", + " midst", + "'s", + " Paris" + ], + [ + "\n", + "-", + "el", + " Tower", + " is", + " a", + " the", + " middle", + " centre", + " Paris" + ] + ], + "texttemplate": "%{text}", + "type": "heatmap", + "x": [ + "The", + " E", + "iff", + "el", + " Tower", + " is", + " in", + " the", + " city", + " of" + ], + "y": [ + "Layer 0", + "Layer 1", + "Layer 2", + "Layer 3", + "Layer 4", + "Layer 5", + "Layer 6", + "Layer 7", + "Layer 8", + "Layer 9", + "Layer 10", + "Layer 11" + ], + "z": [ + [ + 0.02498376928269863, + 0.12145557254552841, + 0.7902554869651794, + 0.2775298058986664, + 0.9977331161499023, + 0.32375699281692505, + 0.4152146875858307, + 0.7520504593849182, + 0.5445771217346191, + 0.6899943947792053 + ], + [ + 0.04746941104531288, + 0.08490721881389618, + 0.3476633131504059, + 0.5692902207374573, + 0.9837422370910645, + 0.26374703645706177, + 0.6872089505195618, + 0.8453981876373291, + 0.6062510013580322, + 0.8129416108131409 + ], + [ + 0.02606300264596939, + 0.3097182810306549, + 0.7040874361991882, + 0.2206699401140213, + 0.9181658029556274, + 0.34884917736053467, + 0.6373887062072754, + 0.9504274129867554, + 0.5847728848457336, + 0.720194399356842 + ], + [ + 0.026351677253842354, + 0.3843395709991455, + 0.5039886832237244, + 0.25915706157684326, + 0.6246116161346436, + 0.38496822118759155, + 0.27967482805252075, + 0.9723502993583679, + 0.2764831483364105, + 0.6877995729446411 + ], + [ + 0.02613663300871849, + 0.3009120523929596, + 0.21216891705989838, + 0.18413451313972473, + 0.7355309724807739, + 0.4865720272064209, + 0.3781245946884155, + 0.9603126049041748, + 0.4140830636024475, + 0.41445526480674744 + ], + [ + 0.02568391151726246, + 0.13498598337173462, + 0.2606237828731537, + 0.27143874764442444, + 0.7304719090461731, + 0.388689786195755, + 0.394282728433609, + 0.6723204851150513, + 0.29786041378974915, + 0.057537514716386795 + ], + [ + 0.025425413623452187, + 0.20422039926052094, + 0.5427743792533875, + 0.7381373643875122, + 0.3724290430545807, + 0.4328157901763916, + 0.3977821171283722, + 0.6245152354240417, + 0.1869906336069107, + 0.05666780844330788 + ], + [ + 0.025334399193525314, + 0.2112569510936737, + 0.7032213807106018, + 0.9907068610191345, + 0.2363899052143097, + 0.40017619729042053, + 0.4634341299533844, + 0.7642996907234192, + 0.24114786088466644, + 0.13559548556804657 + ], + [ + 0.025312844663858414, + 0.11660318821668625, + 0.4457952082157135, + 0.9970935583114624, + 0.14586925506591797, + 0.6360750198364258, + 0.1932843178510666, + 0.8479131460189819, + 0.3974420130252838, + 0.19162553548812866 + ], + [ + 0.02531810849905014, + 0.0647195503115654, + 0.8146638870239258, + 0.9981274008750916, + 0.2534200847148895, + 0.6489879488945007, + 0.13464175164699554, + 0.6901047229766846, + 0.6442652940750122, + 0.28538015484809875 + ], + [ + 0.025502031669020653, + 0.04439900070428848, + 0.9033234715461731, + 0.9942382574081421, + 0.16611620783805847, + 0.19855935871601105, + 0.19015933573246002, + 0.2531276047229767, + 0.3555399477481842, + 0.1834113597869873 + ], + [ + 0.013599139638245106, + 0.04670831188559532, + 0.995876669883728, + 0.9699336290359497, + 0.09402073174715042, + 0.13139276206493378, + 0.24014486372470856, + 0.11476621776819229, + 0.18497911095619202, + 0.069968581199646 + ] + ], + "zmid": 0.5 + } + ], + "layout": { + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Logit Lens" + }, + "xaxis": { + "title": { + "text": "Input tokens" + } + }, + "yaxis": { + "title": { + "text": "Layer" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "Plot(output_dir=OUTPUT_DIR)(results);" + ] + }, + { + "cell_type": "markdown", + "id": "dc55daae", + "metadata": {}, + "source": [ + "## 4. Read the prediction off each layer\n", + "\n", + "The heatmap is the overview. For the actual sequence of guesses at the final\n", + "position, index the result directly." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "4676593e", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:34:29.950851Z", + "iopub.status.busy": "2026-07-10T11:34:29.950751Z", + "iopub.status.idle": "2026-07-10T11:34:29.953192Z", + "shell.execute_reply": "2026-07-10T11:34:29.952862Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "prompt: 'The Eiffel Tower is in the city of'\n", + "\n", + " layer prediction probability\n", + " L0.resid_post ' the' 0.690 ####################\n", + " L1.resid_post ' the' 0.813 ########################\n", + " L2.resid_post ' the' 0.720 #####################\n", + " L3.resid_post ' the' 0.688 ####################\n", + " L4.resid_post ' the' 0.414 ############\n", + " L5.resid_post ' the' 0.058 #\n", + " L6.resid_post ' East' 0.057 #\n", + " L7.resid_post ' Ing' 0.136 ####\n", + " L8.resid_post ' Rome' 0.192 #####\n", + " L9.resid_post ' London' 0.285 ########\n", + " L10.resid_post ' Paris' 0.183 #####\n", + " L11.resid_post ' Paris' 0.070 ##\n" + ] + } + ], + "source": [ + "final_position = -1\n", + "print(f\"prompt: {PROMPT!r}\\n\")\n", + "print(f\"{'layer':>16} {'prediction':<16} probability\")\n", + "for layer_index, address in enumerate(lens.addresses):\n", + " word = lens.predicted_words[layer_index][0][final_position]\n", + " prob = float(lens.max_probs[layer_index, 0, final_position])\n", + " bar = \"#\" * int(prob * 30)\n", + " print(f\"{str(address):>16} {word!r:<16} {prob:5.3f} {bar}\")" + ] + }, + { + "cell_type": "markdown", + "id": "6ae2e341", + "metadata": {}, + "source": [ + "## 5. Save and reload\n", + "\n", + "Every artifact round-trips through disk, so an analysis can be split across sessions." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "0cc465ef", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:34:29.953941Z", + "iopub.status.busy": "2026-07-10T11:34:29.953866Z", + "iopub.status.idle": "2026-07-10T11:34:30.040929Z", + "shell.execute_reply": "2026-07-10T11:34:30.040597Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved to: murano_outputs/logit_lens\n", + "reloaded shape: (12, 1, 10)\n", + "matches: True\n" + ] + } + ], + "source": [ + "from murano import load_logit_lens\n", + "\n", + "run_dir = Save(\n", + " output_dir=\"murano_outputs\", run_name=\"logit_lens\", model_id=model.model_id\n", + ")(results)[keys.OUTPUT_DIR]\n", + "\n", + "reloaded = load_logit_lens(f\"{run_dir}/logit_lens/logit_lens.pt\")\n", + "print(\"saved to:\", run_dir)\n", + "print(\"reloaded shape:\", tuple(reloaded.max_probs.shape))\n", + "print(\"matches:\", torch.allclose(reloaded.max_probs, lens.max_probs))" + ] + }, + { + "cell_type": "markdown", + "id": "c4629496", + "metadata": {}, + "source": [ + "## What next\n", + "\n", + "- [`logit_attribution.ipynb`](logit_attribution.ipynb) decomposes the final logit into per-component contributions, answering *which* components put the answer there." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/applications/metrics.ipynb b/notebooks/applications/metrics.ipynb new file mode 100644 index 0000000..7bf6e02 --- /dev/null +++ b/notebooks/applications/metrics.ipynb @@ -0,0 +1,645 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8590f738", + "metadata": {}, + "source": [ + "# Metrics: turning a change into a number you can defend\n", + "\n", + "Every intervention in Murano produces logits. A metric turns those logits into a\n", + "scalar, and the scalar is what you argue with. Choosing it badly is the easiest way\n", + "to reach a confident wrong conclusion, because different metrics disagree about the\n", + "same intervention.\n", + "\n", + "This notebook runs every metric step on one intervention and shows them disagreeing.\n", + "\n", + "**Key questions**\n", + "\n", + "- What does each metric step actually measure?\n", + "- Can a metric say nothing changed while the behavior flips?\n", + "- Can a metric say nothing changed while the logit difference moves?\n", + "\n", + "**Structure**\n", + "\n", + "1. Set up\n", + "2. Logit difference: did the answer flip?\n", + "3. KL divergence: did the distribution move?\n", + "4. Answer log-probability: how sure is the model?\n", + "5. Recovered fraction: normalizing against two baselines\n", + "6. Comparing two tensors directly\n", + "7. Answer rank: the metric that saturates\n", + "8. Save\n", + "\n", + "**Model and data.** GPT-2 small in float32. It is small enough that bfloat16 rounding visibly degrades its predictions, so the notebooks load it explicitly in float32. Eight indirect-object prompt pairs from `murano.tasks.ioi`.\n", + "\n", + "**Requirements.** No extras: `pip install murano-interp`" + ] + }, + { + "cell_type": "markdown", + "id": "c3b76a07", + "metadata": {}, + "source": [ + "## 1. Set up" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "619aeaf5", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:38:45.239770Z", + "iopub.status.busy": "2026-07-10T11:38:45.239700Z", + "iopub.status.idle": "2026-07-10T11:39:31.643074Z", + "shell.execute_reply": "2026-07-10T11:39:31.642630Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gpt2: 12 layers, 12 heads\n" + ] + } + ], + "source": [ + "import torch\n", + "\n", + "from murano import MuranoModel, Pipeline, keys\n", + "from murano.nodes import Node\n", + "from murano.steps import (\n", + " Ablate,\n", + " AnswerLogProbStep,\n", + " AnswerRankStep,\n", + " ComparisonComputationStep,\n", + " KLDivergenceStep,\n", + " LoadPaired,\n", + " LoadPrompts,\n", + " LogitDiffStep,\n", + " Logits,\n", + " RecoveredMetricStep,\n", + " Save,\n", + ")\n", + "\n", + "OUTPUT_DIR = \"murano_outputs/metrics\"\n", + "\n", + "# GPT-2 is small enough that bfloat16 rounding degrades its predictions.\n", + "model = MuranoModel(\"gpt2\", dtype=torch.float32)\n", + "print(f\"{model.model_id}: {model.n_layers} layers, {model.n_heads} heads\")" + ] + }, + { + "cell_type": "markdown", + "id": "fdc28d8a", + "metadata": {}, + "source": [ + "This notebook uses the **indirect-object-identification** task from\n", + "`murano.tasks`. Each clean prompt names two people and then has the *subject*\n", + "give a drink, so the next token should be the other name, the *indirect object*.\n", + "The corrupt prompt swaps who gives, which flips the answer.\n", + "\n", + "```\n", + "clean : When Mary and John went to the store, John gave a drink to ___ -> \" Mary\"\n", + "corrupt: When Mary and John went to the store, Mary gave a drink to ___ -> \" John\"\n", + "```\n", + "\n", + "The metric throughout is the **logit difference**: the correct name's logit minus\n", + "the incorrect name's. Positive means the model prefers the right answer." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "21b75d39", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:39:31.644633Z", + "iopub.status.busy": "2026-07-10T11:39:31.644384Z", + "iopub.status.idle": "2026-07-10T11:39:31.652248Z", + "shell.execute_reply": "2026-07-10T11:39:31.651956Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "clean : When Mary and John went to the store, John gave a drink to -> ' Mary'\n", + "corrupt: When Mary and John went to the store, Mary gave a drink to -> ' John'\n", + "8 prompt pairs\n" + ] + } + ], + "source": [ + "from murano.tasks import ioi\n", + "\n", + "task = ioi(n=8)\n", + "print(\"clean :\", task.clean[0], \"->\", repr(task.correct[0]))\n", + "print(\"corrupt:\", task.corrupt[0], \"->\", repr(task.incorrect[0]))\n", + "print(f\"{len(task.clean)} prompt pairs\")" + ] + }, + { + "cell_type": "markdown", + "id": "bd6e7822", + "metadata": {}, + "source": [ + "One intervention runs through the whole notebook: zero-ablate head L9H9 on the\n", + "clean prompts. `Logits` writes the clean logits, `Ablate` writes the damaged ones,\n", + "and every metric below reads that same pair." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "2524e3ae", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:39:31.653286Z", + "iopub.status.busy": "2026-07-10T11:39:31.653117Z", + "iopub.status.idle": "2026-07-10T11:39:31.821149Z", + "shell.execute_reply": "2026-07-10T11:39:31.820689Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "clean logits : (8, 14, 50257)\n", + "ablated logits: (8, 14, 50257)\n" + ] + } + ], + "source": [ + "HEAD = Node(9, \"self_attn\", head=9)\n", + "\n", + "results = Pipeline(\n", + " [\n", + " LoadPrompts(task.clean),\n", + " Logits(model),\n", + " Ablate(model, targets=[HEAD], method=\"zero\"),\n", + " ]\n", + ").run()\n", + "\n", + "print(\"clean logits :\", tuple(results[keys.FINAL_LOGITS].shape))\n", + "print(\"ablated logits:\", tuple(results[keys.ABLATED_LOGITS].shape))" + ] + }, + { + "cell_type": "markdown", + "id": "41fadab2", + "metadata": {}, + "source": [ + "## 2. Logit difference: did the answer flip?\n", + "\n", + "`LogitDiffStep` subtracts the incorrect answer's logit from the correct one, at the\n", + "answer position. It is the standard metric for circuit work because it is *task\n", + "aware*: it asks about the two tokens the task is about, and ignores the other\n", + "50,255." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b26cdda8", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:39:31.822219Z", + "iopub.status.busy": "2026-07-10T11:39:31.822123Z", + "iopub.status.idle": "2026-07-10T11:39:31.837157Z", + "shell.execute_reply": "2026-07-10T11:39:31.836636Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "clean : +2.3971\n", + "ablated : +2.3897 (change -0.0073)\n" + ] + } + ], + "source": [ + "results = LogitDiffStep(\n", + " task.correct, task.incorrect, output_key=\"ld_clean\", model=model\n", + ")(results)\n", + "results = LogitDiffStep(\n", + " task.correct,\n", + " task.incorrect,\n", + " logits_key=keys.ABLATED_LOGITS,\n", + " output_key=\"ld_ablated\",\n", + " model=model,\n", + ")(results)\n", + "\n", + "clean = results[\"ld_clean\"].value\n", + "ablated = results[\"ld_ablated\"].value\n", + "print(f\"clean : {clean:+.4f}\")\n", + "print(f\"ablated : {ablated:+.4f} (change {ablated - clean:+.4f})\")" + ] + }, + { + "cell_type": "markdown", + "id": "03da7ed4", + "metadata": {}, + "source": [ + "## 3. KL divergence: did the distribution move?\n", + "\n", + "`KLDivergenceStep` compares the two output *distributions* at the answer position.\n", + "It is task agnostic: it does not know which tokens matter, only how much\n", + "probability mass moved anywhere.\n", + "\n", + "Sanity first. A distribution against itself must score zero." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "df0c6044", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:39:31.838074Z", + "iopub.status.busy": "2026-07-10T11:39:31.837981Z", + "iopub.status.idle": "2026-07-10T11:39:31.963896Z", + "shell.execute_reply": "2026-07-10T11:39:31.963637Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "KL(clean || clean) = 0.000000 (must be 0)\n", + "KL(clean || ablated) = 0.028441\n" + ] + } + ], + "source": [ + "results = KLDivergenceStep(\n", + " p_key=keys.FINAL_LOGITS, q_key=keys.FINAL_LOGITS, output_key=\"kl_self\"\n", + ")(results)\n", + "results = KLDivergenceStep(\n", + " p_key=keys.FINAL_LOGITS, q_key=keys.ABLATED_LOGITS, output_key=\"kl_ablated\"\n", + ")(results)\n", + "\n", + "print(f\"KL(clean || clean) = {results['kl_self'].value:.6f} (must be 0)\")\n", + "print(f\"KL(clean || ablated) = {results['kl_ablated'].value:.6f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "7c0c8f5c", + "metadata": {}, + "source": [ + "Hold these two numbers side by side. The KL divergence is small: the output\n", + "distribution barely moved. The logit difference also barely moved, because zeroing\n", + "this head happens to be a weak intervention.\n", + "\n", + "The trap appears when they disagree. A task-aware metric can collapse while KL\n", + "stays tiny, because the two answer tokens carry a vanishing share of the total\n", + "probability mass. **A small KL is not evidence that a component does not matter.**\n", + "`ablation.ipynb` shows exactly this: resampling L9H9 destroys the logit difference\n", + "while the KL stays around 0.03." + ] + }, + { + "cell_type": "markdown", + "id": "c90eb58e", + "metadata": {}, + "source": [ + "## 4. Answer log-probability: how sure is the model?\n", + "\n", + "`AnswerLogProbStep` reports the log-probability of the correct token, or with\n", + "`as_loss=True`, its negative, which is the per-example cross-entropy of the answer.\n", + "\n", + "Unlike the logit difference, this is sensitive to the *whole* distribution: making\n", + "some third token more likely lowers it, even if the correct token still beats the\n", + "incorrect one." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "87ebf391", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:39:31.964797Z", + "iopub.status.busy": "2026-07-10T11:39:31.964703Z", + "iopub.status.idle": "2026-07-10T11:39:31.995098Z", + "shell.execute_reply": "2026-07-10T11:39:31.994797Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "log-prob -0.9642\n", + "negative log-prob (loss) +0.9642\n" + ] + } + ], + "source": [ + "results = AnswerLogProbStep(correct=task.correct, output_key=\"alp\", model=model)(\n", + " results\n", + ")\n", + "results = AnswerLogProbStep(\n", + " correct=task.correct, as_loss=True, output_key=\"alp_loss\", model=model\n", + ")(results)\n", + "\n", + "print(f\"{'log-prob':<26} {results['alp'].value:+.4f}\")\n", + "print(f\"{'negative log-prob (loss)':<26} {results['alp_loss'].value:+.4f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "2edc0c75", + "metadata": {}, + "source": [ + "## 5. Recovered fraction: normalizing against two baselines\n", + "\n", + "Raw scores are hard to compare across tasks and models. `RecoveredMetricStep`\n", + "rescales a score against a clean and a corrupt baseline:\n", + "\n", + "```\n", + "recovered = (patched - corrupt) / (clean - corrupt)\n", + "```\n", + "\n", + "0 means the intervention achieved nothing, 1 means it fully restored clean\n", + "behavior. Values outside `[0, 1]` are meaningful: negative means it made things\n", + "worse than corrupt." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ed52fa01", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:39:31.995801Z", + "iopub.status.busy": "2026-07-10T11:39:31.995723Z", + "iopub.status.idle": "2026-07-10T11:39:32.032689Z", + "shell.execute_reply": "2026-07-10T11:39:32.032397Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "clean : +2.3971\n", + "corrupt : -3.1112\n", + "recovered : 1.0000 (a clean run recovers 1.0)\n" + ] + } + ], + "source": [ + "paired = Pipeline(\n", + " [\n", + " LoadPaired(task),\n", + " Logits(model),\n", + " Logits(\n", + " model,\n", + " prompts_key=keys.CORRUPT_PROMPTS,\n", + " logits_key=keys.CORRUPT_LOGITS,\n", + " mask_key=keys.CORRUPT_MASK,\n", + " targets=None,\n", + " ),\n", + " LogitDiffStep(task.correct, task.incorrect, output_key=\"ld_clean\", model=model),\n", + " LogitDiffStep(\n", + " task.correct,\n", + " task.incorrect,\n", + " logits_key=keys.CORRUPT_LOGITS,\n", + " mask_key=keys.CORRUPT_MASK,\n", + " output_key=\"ld_corrupt\",\n", + " model=model,\n", + " ),\n", + " ]\n", + ").run()\n", + "\n", + "# Score the clean run against itself: by construction it recovers exactly 1.0.\n", + "paired[\"ld_patched\"] = paired[\"ld_clean\"]\n", + "paired = RecoveredMetricStep(\"ld_clean\", \"ld_corrupt\", \"ld_patched\")(paired)\n", + "\n", + "print(f\"clean : {paired['ld_clean'].value:+.4f}\")\n", + "print(f\"corrupt : {paired['ld_corrupt'].value:+.4f}\")\n", + "print(f\"recovered : {paired[keys.RECOVERED].value:.4f} (a clean run recovers 1.0)\")" + ] + }, + { + "cell_type": "markdown", + "id": "55b8bbb6", + "metadata": {}, + "source": [ + "## 6. Comparing two tensors directly\n", + "\n", + "`ComparisonComputationStep` is the escape hatch: give it two tensors already in\n", + "`Results` and it returns their element-wise difference or their row-wise cosine\n", + "similarity. It is not a metric step, it writes a tensor, not a `MetricScore`.\n", + "\n", + "The cosine result below is a warning worth internalizing." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "2ac43d6f", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:39:32.033441Z", + "iopub.status.busy": "2026-07-10T11:39:32.033364Z", + "iopub.status.idle": "2026-07-10T11:39:32.097493Z", + "shell.execute_reply": "2026-07-10T11:39:32.097148Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "difference shape=(8, 14, 50257) mean=+0.470193\n", + "cosine_similarity shape=(8, 14) mean=+0.999999\n" + ] + } + ], + "source": [ + "for kind in [\"difference\", \"cosine_similarity\"]:\n", + " results = ComparisonComputationStep(\n", + " key_a=keys.FINAL_LOGITS,\n", + " key_b=keys.ABLATED_LOGITS,\n", + " output_key=f\"cmp_{kind}\",\n", + " comparison_type=kind,\n", + " )(results)\n", + " out = results[f\"cmp_{kind}\"]\n", + " print(f\"{kind:<18} shape={tuple(out.shape)} mean={float(out.float().mean()):+.6f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "01b01968", + "metadata": {}, + "source": [ + "The cosine similarity between the clean and ablated logits is essentially exactly\n", + "**1.0**, even though the ablation demonstrably changed the model's output.\n", + "\n", + "That is not a bug. A logit vector over 50,257 tokens is dominated by the same\n", + "enormous shared structure in every forward pass: almost every token is very\n", + "unlikely, and the vector points in nearly the same direction regardless. Cosine\n", + "similarity on logits is close to useless.\n", + "\n", + "Use the **difference** when you want to know which tokens moved, KL when you want\n", + "the distributions compared honestly, and the logit difference when you have a task." + ] + }, + { + "cell_type": "markdown", + "id": "4a6af092", + "metadata": {}, + "source": [ + "## 7. Answer rank: the metric that saturates\n", + "\n", + "`AnswerRankStep` counts how many tokens outscore the correct answer at the answer\n", + "position. Rank 0 means the model would emit the answer greedily.\n", + "\n", + "It reads the answer position from the attention mask rather than taking the last\n", + "column, which is the same resolution every metric step here uses. That matters:\n", + "under right-side padding the last column is a padding position, and a metric that\n", + "scored it would report a confident number about a token the model never predicted." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "ee0aa89a", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:39:32.100420Z", + "iopub.status.busy": "2026-07-10T11:39:32.100309Z", + "iopub.status.idle": "2026-07-10T11:39:32.164969Z", + "shell.execute_reply": "2026-07-10T11:39:32.161873Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean rank of the correct name, clean : 0.00\n", + "mean rank of the correct name, ablated : 0.00\n", + "per-example (clean): [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]\n" + ] + } + ], + "source": [ + "results = AnswerRankStep(task.correct, model=model)(results)\n", + "results = AnswerRankStep(\n", + " task.correct,\n", + " logits_key=keys.ABLATED_LOGITS,\n", + " mask_key=keys.ATTENTION_MASK,\n", + " output_key=\"answer_rank_ablated\",\n", + " model=model,\n", + ")(results)\n", + "\n", + "print(f\"mean rank of the correct name, clean : {results['answer_rank'].value:.2f}\")\n", + "print(\n", + " f\"mean rank of the correct name, ablated : {results['answer_rank_ablated'].value:.2f}\"\n", + ")\n", + "print(f\"per-example (clean): {results['answer_rank'].per_example}\")" + ] + }, + { + "cell_type": "markdown", + "id": "a8bb2c21", + "metadata": {}, + "source": [ + "Both numbers are 0: the correct name is the model's top prediction before *and* after\n", + "the ablation. The metric sees nothing.\n", + "\n", + "That is not a failure of the code, it is the notebook's thesis arriving one last time.\n", + "Rank is quantized. It cannot distinguish \"barely winning\" from \"winning by a mile\", so\n", + "a weak intervention is invisible to it while the logit difference registers a change\n", + "and the KL divergence registers another. **Every metric is a lens, and each one is\n", + "blind to something.** Pick the one that can see the effect you are claiming, and say\n", + "which one you picked.\n", + "\n", + "When no shipped metric can see your effect, write a `Step`: read the keys, write a\n", + "`MetricScore`, and every other step composes with it unchanged.\n", + "`custom_pipeline.ipynb` does exactly that." + ] + }, + { + "cell_type": "markdown", + "id": "7f1a27ef", + "metadata": {}, + "source": [ + "## 8. Save" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "4eb002d8", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:39:32.165947Z", + "iopub.status.busy": "2026-07-10T11:39:32.165855Z", + "iopub.status.idle": "2026-07-10T11:39:37.222506Z", + "shell.execute_reply": "2026-07-10T11:39:37.222208Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved to: murano_outputs/metrics\n" + ] + } + ], + "source": [ + "run_dir = Save(\n", + " output_dir=\"murano_outputs\", run_name=\"metrics\", model_id=model.model_id\n", + ")(results)[keys.OUTPUT_DIR]\n", + "\n", + "print(\"saved to:\", run_dir)" + ] + }, + { + "cell_type": "markdown", + "id": "1278b5bb", + "metadata": {}, + "source": [ + "## What next\n", + "\n", + "- [`ablation.ipynb`](ablation.ipynb) uses these metrics to show that the choice of ablation decides the answer.\n", + "- [`activation_patching.ipynb`](activation_patching.ipynb) builds a causal map out of the recovered fraction.\n", + "- [`custom_pipeline.ipynb`](custom_pipeline.ipynb) writes the metric step the library does not ship." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/applications/probing.ipynb b/notebooks/applications/probing.ipynb new file mode 100644 index 0000000..a5ec5e0 --- /dev/null +++ b/notebooks/applications/probing.ipynb @@ -0,0 +1,4889 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "aa875144", + "metadata": {}, + "source": [ + "# Probing: where is a concept linearly readable?\n", + "\n", + "A **linear probe** is a classifier trained on a model's internal activations. If a\n", + "simple linear model can read \"positive\" versus \"negative\" off layer 6's residual\n", + "stream, then the concept is linearly encoded there. Probe every layer and you get\n", + "a map of where the information appears.\n", + "\n", + "**Key questions**\n", + "\n", + "- At which layer does sentiment become linearly decodable?\n", + "- Does the probe generalize, or is it memorizing?\n", + "- What does the structure the probe exploits actually look like?\n", + "\n", + "**Structure**\n", + "\n", + "1. Set up\n", + "2. Train a probe per layer\n", + "3. Plot accuracy and the confusion matrix\n", + "4. Look at the structure the probe found\n", + "5. Did the model build the concept, or was it always there?\n", + "6. Save\n", + "\n", + "**Model and data.** GPT-2 small in float32. It is small enough that bfloat16 rounding visibly degrades its predictions, so the notebooks load it explicitly in float32. 20 positive and 20 negative sentences from `murano.tasks`.\n", + "\n", + "**Requirements.** `pip install murano-interp[probe,plot]`" + ] + }, + { + "cell_type": "markdown", + "id": "052780db", + "metadata": {}, + "source": [ + "## 1. Set up" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "20cfb96f", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:32:16.828173Z", + "iopub.status.busy": "2026-07-10T11:32:16.828111Z", + "iopub.status.idle": "2026-07-10T11:33:05.488800Z", + "shell.execute_reply": "2026-07-10T11:33:05.487678Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gpt2: 12 layers, 12 heads\n" + ] + } + ], + "source": [ + "import torch\n", + "\n", + "from murano import MuranoModel, Pipeline, keys\n", + "from murano.dataset import LabeledDataset\n", + "from murano.steps import Load, Plot, Probe, Record, Save\n", + "from murano.tasks import sentiment\n", + "\n", + "OUTPUT_DIR = \"murano_outputs/probing\"\n", + "\n", + "# GPT-2 is small enough that bfloat16 rounding degrades its predictions.\n", + "model = MuranoModel(\"gpt2\", dtype=torch.float32)\n", + "print(f\"{model.model_id}: {model.n_layers} layers, {model.n_heads} heads\")" + ] + }, + { + "cell_type": "markdown", + "id": "dbf68629", + "metadata": {}, + "source": [ + "## 2. Train a probe per layer\n", + "\n", + "`Record` on a `LabeledDataset` produces a `LabeledActivationStore`: activations\n", + "plus the label of each example. `Probe` fits one classifier per layer with\n", + "`cv`-fold cross-validation, so the reported accuracy is on held-out folds.\n", + "\n", + "`refit=True` additionally fits a final classifier per layer on all the data and\n", + "keeps it, which is what the confusion matrix below needs." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "42e9619a", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:05.490326Z", + "iopub.status.busy": "2026-07-10T11:33:05.490077Z", + "iopub.status.idle": "2026-07-10T11:33:06.567073Z", + "shell.execute_reply": "2026-07-10T11:33:06.566706Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "best layer: L5.resid_post \n", + "\n", + " L0.resid_post: 0.825 +/- 0.150\n", + " L1.resid_post: 0.850 +/- 0.146\n", + " L2.resid_post: 0.775 +/- 0.094\n", + " L3.resid_post: 0.850 +/- 0.122\n", + " L4.resid_post: 0.850 +/- 0.122\n", + " L5.resid_post: 0.925 +/- 0.061 <-- best\n", + " L6.resid_post: 0.825 +/- 0.100\n", + " L7.resid_post: 0.900 +/- 0.094\n", + " L8.resid_post: 0.925 +/- 0.061\n", + " L9.resid_post: 0.925 +/- 0.061\n", + " L10.resid_post: 0.900 +/- 0.050\n", + " L11.resid_post: 0.900 +/- 0.094\n" + ] + } + ], + "source": [ + "positive, negative = sentiment(n_per_class=20)\n", + "dataset = LabeledDataset.from_lists(\n", + " texts=positive + negative,\n", + " labels=[0] * len(positive) + [1] * len(negative),\n", + " label_names=[\"positive\", \"negative\"],\n", + ")\n", + "\n", + "results = Pipeline(\n", + " [\n", + " Load(dataset),\n", + " Record(model, layers=\"all\", position=\"last\", batch_size=8),\n", + " Probe(cv=5, refit=True),\n", + " ]\n", + ").run()\n", + "\n", + "probe = results[keys.PROBE]\n", + "print(\"best layer:\", probe.best_layer, \"\\n\")\n", + "for layer, accuracy in sorted(probe.accuracy_per_layer.items()):\n", + " spread = probe.cv_scores[layer].std()\n", + " marker = \" <-- best\" if layer == probe.best_layer else \"\"\n", + " print(f\" {layer}: {accuracy:.3f} +/- {spread:.3f}{marker}\")" + ] + }, + { + "cell_type": "markdown", + "id": "e61030cb", + "metadata": {}, + "source": [ + "## 3. Plot accuracy and the confusion matrix\n", + "\n", + "`Plot` draws probe accuracy per layer, with the best layer highlighted and the\n", + "cross-validation spread as error bars. Because the probe kept its classifiers and\n", + "the activation store is still in `Results`, it also draws the confusion matrix at\n", + "the best layer." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "58e06de1", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:06.568078Z", + "iopub.status.busy": "2026-07-10T11:33:06.567982Z", + "iopub.status.idle": "2026-07-10T11:33:10.269481Z", + "shell.execute_reply": "2026-07-10T11:33:10.269126Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "error_y": { + "array": [ + 0.15, + 0.1457737973711325, + 0.09354143466934853, + 0.1224744871391589, + 0.1224744871391589, + 0.06123724356957946, + 0.09999999999999999, + 0.09354143466934853, + 0.06123724356957945, + 0.06123724356957945, + 0.049999999999999996, + 0.09354143466934853 + ], + "type": "data", + "visible": true + }, + "marker": { + "color": [ + "#4c72b0", + "#4c72b0", + "#4c72b0", + "#4c72b0", + "#4c72b0", + "#c44e52", + "#4c72b0", + "#4c72b0", + "#4c72b0", + "#4c72b0", + "#4c72b0", + "#4c72b0" + ] + }, + "type": "bar", + "x": [ + "L0.resid_post", + "L1.resid_post", + "L2.resid_post", + "L3.resid_post", + "L4.resid_post", + "L5.resid_post", + "L6.resid_post", + "L7.resid_post", + "L8.resid_post", + "L9.resid_post", + "L10.resid_post", + "L11.resid_post" + ], + "y": [ + 0.825, + 0.85, + 0.775, + 0.85, + 0.85, + 0.925, + 0.825, + 0.9, + 0.925, + 0.925, + 0.9, + 0.9 + ] + } + ], + "layout": { + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Probe Accuracy by Layer" + }, + "xaxis": { + "title": { + "text": "Layer" + } + }, + "yaxis": { + "range": [ + 0, + 1.05 + ], + "title": { + "text": "Accuracy" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "colorscale": [ + [ + 0.0, + "rgb(247,251,255)" + ], + [ + 0.125, + "rgb(222,235,247)" + ], + [ + 0.25, + "rgb(198,219,239)" + ], + [ + 0.375, + "rgb(158,202,225)" + ], + [ + 0.5, + "rgb(107,174,214)" + ], + [ + 0.625, + "rgb(66,146,198)" + ], + [ + 0.75, + "rgb(33,113,181)" + ], + [ + 0.875, + "rgb(8,81,156)" + ], + [ + 1.0, + "rgb(8,48,107)" + ] + ], + "text": [ + [ + 20, + 0 + ], + [ + 0, + 20 + ] + ], + "texttemplate": "%{text}", + "type": "heatmap", + "x": [ + "positive", + "negative" + ], + "y": [ + "positive", + "negative" + ], + "z": [ + [ + 20, + 0 + ], + [ + 0, + 20 + ] + ] + } + ], + "layout": { + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Confusion Matrix (Layer L5.resid_post)" + }, + "xaxis": { + "title": { + "text": "Predicted" + } + }, + "yaxis": { + "autorange": "reversed", + "title": { + "text": "True" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "Plot(output_dir=OUTPUT_DIR)(results);" + ] + }, + { + "cell_type": "markdown", + "id": "02022706", + "metadata": {}, + "source": [ + "**Read the confusion matrix carefully.** It uses the classifier that `refit=True`\n", + "fit on *all* the data, and evaluates it on that same data. It is therefore\n", + "in-sample and will look flattering, often perfect. It is useful for seeing *which*\n", + "class a probe confuses, not for estimating how well the probe generalizes.\n", + "\n", + "The honest number is the cross-validated accuracy in the bar chart, where every\n", + "prediction comes from a fold the classifier never saw." + ] + }, + { + "cell_type": "markdown", + "id": "95f846b1", + "metadata": {}, + "source": [ + "## 4. Look at the structure the probe found\n", + "\n", + "Accuracy tells you the concept is readable. It does not show you what the\n", + "activations look like. `plot_activation_projection` reduces one layer's\n", + "activations to a couple of dimensions and scatters them by class.\n", + "\n", + "It is not auto-dispatched by `Plot`, because it needs you to choose a layer and a\n", + "reducer. You supply any scikit-learn-style reducer, so the choice of method stays\n", + "yours.\n", + "\n", + "**LDA** is supervised: it finds the axis that best separates the labels. One\n", + "component is enough, so the classes are fanned out vertically only to keep the\n", + "points from overlapping." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "e8c0dcd1", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:10.270495Z", + "iopub.status.busy": "2026-07-10T11:33:10.270354Z", + "iopub.status.idle": "2026-07-10T11:33:11.731711Z", + "shell.execute_reply": "2026-07-10T11:33:11.731370Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "customdata": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 + ], + "hovertemplate": "positive
example %{customdata}", + "marker": { + "color": "#4c72b0", + "opacity": 0.75, + "size": 8 + }, + "mode": "markers", + "name": "positive", + "type": "scatter", + "x": { + "bdata": "tmToPyzvHUAy7YC9qynbP7p+Az/KGXE/6dPJP8X2zj88zwE/nPXxP7ZEE0Bck0c/U+0aQEja3j/nzaI/sJzDP+RPkT/4MyJA4P3Uv6fWhT8=", + "dtype": "f4" + }, + "y": { + "bdata": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "dtype": "f8" + } + }, + { + "customdata": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 + ], + "hovertemplate": "negative
example %{customdata}", + "marker": { + "color": "#c44e52", + "opacity": 0.75, + "size": 8 + }, + "mode": "markers", + "name": "negative", + "type": "scatter", + "x": { + "bdata": "GJEQwMpEHMCA7zS9ZjzSv/gWLD4IIz+/cv+9v59D/b9Uc9Q9+oeMv8tu1r9e2sS/GBn/v7fhtr94ct+/fDIPwKom1r8uhB3A2iivP4kRor8=", + "dtype": "f4" + }, + "y": { + "bdata": "AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw==", + "dtype": "f8" + } + } + ], + "layout": { + "legend": { + "title": { + "text": "Class" + } + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "LDA (supervised) (L5.resid_post)" + }, + "xaxis": { + "title": { + "text": "Component 1" + } + }, + "yaxis": { + "showticklabels": false, + "title": { + "text": "" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n", + "\n", + "from murano.plotting import plot_activation_projection, save_figure\n", + "\n", + "store = results[keys.RECORD]\n", + "\n", + "fig = plot_activation_projection(\n", + " store,\n", + " probe.best_layer,\n", + " LinearDiscriminantAnalysis(n_components=1),\n", + " label_names=dataset.label_names,\n", + " title=\"LDA (supervised)\",\n", + ")\n", + "save_figure(fig, f\"{OUTPUT_DIR}/plots/projection_lda.png\")\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "daa9cdea", + "metadata": {}, + "source": [ + "**PCA** is unsupervised: it never sees the labels, it just finds the two directions\n", + "of greatest variance. Run it on the same activations and compare." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "39f77ced", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:11.732689Z", + "iopub.status.busy": "2026-07-10T11:33:11.732554Z", + "iopub.status.idle": "2026-07-10T11:33:11.876285Z", + "shell.execute_reply": "2026-07-10T11:33:11.875946Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "customdata": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 + ], + "hovertemplate": "positive
example %{customdata}", + "marker": { + "color": "#4c72b0", + "opacity": 0.75, + "size": 8 + }, + "mode": "markers", + "name": "positive", + "type": "scatter", + "x": { + "bdata": "AgDEvuoFG753qGQ9jaWzPX31zD7illq8dxY0vLK+hLt2mwI9wKazvQMRSr5y68I8v7E2vnY67bzEs6w9tR/OPofI3b3GfDC90gjiPqUrJ74=", + "dtype": "f4" + }, + "y": { + "bdata": "1DqMPcFaVD5MWhG+4UzvvSYgmj0+yFM+BS2EvnQPdz77WDC+RBeHvtnZqD54IRY9C9A1vhMtaD6A8eK9ZNOMPRiIWD6LdwS++eBvPf/Mhr4=", + "dtype": "f4" + } + }, + { + "customdata": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 + ], + "hovertemplate": "negative
example %{customdata}", + "marker": { + "color": "#c44e52", + "opacity": 0.75, + "size": 8 + }, + "mode": "markers", + "name": "negative", + "type": "scatter", + "x": { + "bdata": "6Q7MvknJDr3dA588XMDfPfDSzz4qzHk88WYXveSTGDz/qqw92F6EPepenr7MPUg9Ri9gviR3gL2ZJAu9p1GGPaNM+r1WVjW90IvePoldHb4=", + "dtype": "f4" + }, + "y": { + "bdata": "/24ZvDQhgz6b+ka+jmqqvQASqT1fPU8+hPp7vlRRdz7xGvC9iP3ovfC0iz5i7V89qsrwvao/Sj68mjm+TqsEvloUgD52hF2+fBGJPbNUoL4=", + "dtype": "f4" + } + } + ], + "layout": { + "legend": { + "title": { + "text": "Class" + } + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "PCA (unsupervised) (L5.resid_post)" + }, + "xaxis": { + "title": { + "text": "Component 1" + } + }, + "yaxis": { + "title": { + "text": "Component 2" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.decomposition import PCA\n", + "\n", + "fig = plot_activation_projection(\n", + " store,\n", + " probe.best_layer,\n", + " PCA(n_components=2),\n", + " label_names=dataset.label_names,\n", + " title=\"PCA (unsupervised)\",\n", + ")\n", + "save_figure(fig, f\"{OUTPUT_DIR}/plots/projection_pca.png\")\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "1125b206", + "metadata": {}, + "source": [ + "The classes are thoroughly mixed.\n", + "\n", + "That is not a contradiction, and it is worth sitting with. At this layer a linear\n", + "probe separates sentiment with high accuracy, so the concept *is* linearly\n", + "decodable. But sentiment is not one of the two largest directions of variance, so\n", + "PCA, which only looks for variance, walks straight past it.\n", + "\n", + "**Decodable and dominant are different properties.** A probe measures the first.\n", + "An unsupervised projection shows you the second. Reaching for PCA to \"see whether\n", + "the concept is there\" will quietly mislead you." + ] + }, + { + "cell_type": "markdown", + "id": "ddba044a", + "metadata": {}, + "source": [ + "## 5. Did the model build the concept, or was it always there?\n", + "\n", + "Layer 0 is the block output immediately after the token embeddings, before any\n", + "attention or MLP has run. If sentiment were assembled by the network, the probe\n", + "should be near chance there." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "ec14c99a", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:11.877284Z", + "iopub.status.busy": "2026-07-10T11:33:11.877185Z", + "iopub.status.idle": "2026-07-10T11:33:11.879052Z", + "shell.execute_reply": "2026-07-10T11:33:11.878790Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "layer 0 : 0.825\n", + "L5.resid_post : 0.925 (best)\n" + ] + } + ], + "source": [ + "best = probe.best_layer\n", + "print(f\"layer 0 : {probe.accuracy_per_layer[0]:.3f}\")\n", + "print(f\"{best} : {probe.accuracy_per_layer[best]:.3f} (best)\")" + ] + }, + { + "cell_type": "markdown", + "id": "e9d33bb8", + "metadata": {}, + "source": [ + "It is not near chance. The probe already reads sentiment off layer 0 with high\n", + "accuracy, because words like \"love\" and \"terrible\" carry the label in their token\n", + "embeddings alone. The later layers do not create the concept; they sharpen a\n", + "distinction that the vocabulary already supplies.\n", + "\n", + "Projecting layer 0 makes the same point from the other side: the leading direction\n", + "of variance is dominated by a couple of outlying sentences, and has nothing to do\n", + "with the classes." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "6a7235ac", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:11.879717Z", + "iopub.status.busy": "2026-07-10T11:33:11.879626Z", + "iopub.status.idle": "2026-07-10T11:33:11.925223Z", + "shell.execute_reply": "2026-07-10T11:33:11.924966Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "customdata": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 + ], + "hovertemplate": "positive
example %{customdata}", + "marker": { + "color": "#4c72b0", + "opacity": 0.75, + "size": 8 + }, + "mode": "markers", + "name": "positive", + "type": "scatter", + "x": { + "bdata": "+5TDvlBrVTwtbTc9Ya84PV28Wj2ByiY9V7kvPb8gxjxRnzE9A19EPcH8x76yciE9Uz8cPT9X3jwYBAA9BsthPSpk9jzWNSQ9ZdCCPcH5Pj0=", + "dtype": "f4" + }, + "y": { + "bdata": "nVX+PESPibxaPh499OwUu2fhzj3R0L88J7q0PNdqKr0Swdm7hx8aPdbwzTsrvm29SXXJPJdCZLy4tTm8x7u1PRQNdr05D4o8/867PXkLK7k=", + "dtype": "f4" + } + }, + { + "customdata": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 + ], + "hovertemplate": "negative
example %{customdata}", + "marker": { + "color": "#c44e52", + "opacity": 0.75, + "size": 8 + }, + "mode": "markers", + "name": "negative", + "type": "scatter", + "x": { + "bdata": "porGvs+4OD15qT89q1pFPavScT0bQi49zZoRPRfU9zwNGkg989lpPXUkvb7daCc9mMcYPeYCvjxkLSQ9CdhTPQ2MCD0dNU49/7KHPYDoPD0=", + "dtype": "f4" + }, + "y": { + "bdata": "WRc1usBpbL1UrlQ5xSI2vWNYwT1fvzI8sXg+PPZORr1dVd+8AKkMPdcljbvxP6K96EUXvdfGhL3edaG9razlPGgEv7268pg8m/SyPYbOqbw=", + "dtype": "f4" + } + } + ], + "layout": { + "legend": { + "title": { + "text": "Class" + } + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "PCA at layer 0 (token embeddings) (L0.resid_post)" + }, + "xaxis": { + "title": { + "text": "Component 1" + } + }, + "yaxis": { + "title": { + "text": "Component 2" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_activation_projection(\n", + " store,\n", + " 0,\n", + " PCA(n_components=2),\n", + " label_names=dataset.label_names,\n", + " title=\"PCA at layer 0 (token embeddings)\",\n", + ")\n", + "save_figure(fig, f\"{OUTPUT_DIR}/plots/projection_pca_layer0.png\")\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "e8cef797", + "metadata": {}, + "source": [ + "This matters beyond probing. `steering.ipynb` derives a direction from the same\n", + "kind of data and finds that layer 0 *separates* the classes best of all, and yet\n", + "steering there changes nothing, because eleven layers of computation overwrite it.\n", + "\n", + "Readable is not the same as dominant, and neither is the same as causally\n", + "effective. A probe answers only the first question." + ] + }, + { + "cell_type": "markdown", + "id": "b01c4b2d", + "metadata": {}, + "source": [ + "## 6. Save" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "17aac1f1", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:11.926198Z", + "iopub.status.busy": "2026-07-10T11:33:11.926117Z", + "iopub.status.idle": "2026-07-10T11:33:11.965660Z", + "shell.execute_reply": "2026-07-10T11:33:11.965388Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved to: murano_outputs/probing\n" + ] + } + ], + "source": [ + "run_dir = Save(\n", + " output_dir=\"murano_outputs\", run_name=\"probing\", model_id=model.model_id\n", + ")(results)[keys.OUTPUT_DIR]\n", + "\n", + "print(\"saved to:\", run_dir)" + ] + }, + { + "cell_type": "markdown", + "id": "821e5338", + "metadata": {}, + "source": [ + "## What next\n", + "\n", + "- [`steering.ipynb`](steering.ipynb) shows the same direction is *causally* usable, and that readable is not the same as effective.\n", + "- [`custom_pipeline.ipynb`](custom_pipeline.ipynb) plots readability against steerability, layer by layer." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/applications/sae_enrichment.ipynb b/notebooks/applications/sae_enrichment.ipynb new file mode 100644 index 0000000..d8d593b --- /dev/null +++ b/notebooks/applications/sae_enrichment.ipynb @@ -0,0 +1,446 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "13ca8774", + "metadata": {}, + "source": [ + "# SAE enrichment: which features separate two classes?\n", + "\n", + "The previous two notebooks knew which concept they wanted. This one does not. Given a\n", + "labeled dataset and a bank of thousands of features, which features distinguish the\n", + "labels, and are they *about* the labels?\n", + "\n", + "The answer is a warning as much as a recipe: selectivity and meaning are different\n", + "properties, and the gap between them is where SAE interpretation goes wrong.\n", + "\n", + "**Key questions**\n", + "\n", + "- How do I rank thousands of features by how well they separate two classes?\n", + "- Does a feature that separates the classes necessarily encode the class concept?\n", + "- Where in a sentence does a selective feature actually fire?\n", + "\n", + "**Structure**\n", + "\n", + "1. Set up\n", + "2. Encode a labeled dataset\n", + "3. Rank features by class selectivity\n", + "4. Read what the selective features promote\n", + "5. See where a feature fires\n", + "\n", + "**Model and data.** GPT-2 small in float32 with the `gpt2-small-res-jb` SAE at layer 8, and 512 SST-2 sentences (`stanfordnlp/sst2`) labeled positive or negative.\n", + "\n", + "**Requirements.** `pip install murano-interp[sae,data,plot]`" + ] + }, + { + "cell_type": "markdown", + "id": "b193284f", + "metadata": {}, + "source": [ + "## 1. Set up" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "67c52171", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:47:15.334293Z", + "iopub.status.busy": "2026-07-10T11:47:15.334230Z", + "iopub.status.idle": "2026-07-10T11:48:01.692506Z", + "shell.execute_reply": "2026-07-10T11:48:01.692007Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "openai-community/gpt2: 12 layers\n" + ] + } + ], + "source": [ + "import warnings\n", + "\n", + "import plotly.io as pio\n", + "import torch\n", + "\n", + "from murano import MuranoModel, Pipeline, keys\n", + "from murano.dataset import LabeledDataset\n", + "from murano.plotting import (\n", + " plot_sae_feature_logit_effects,\n", + " plot_sae_token_activations,\n", + " save_figure,\n", + ")\n", + "from murano.steps import Load, SAEEncode\n", + "\n", + "# The logit-effects figure carries one point per vocabulary token. Left as Plotly\n", + "# JSON it makes this notebook a megabyte on disk, so render inline as a static\n", + "# image; save_figure still writes the full-resolution PNG.\n", + "pio.renderers.default = \"png\"\n", + "\n", + "# sae-lens warns that this release carries loader kwargs it will not apply; the\n", + "# SAE loads correctly and the warning is not actionable here.\n", + "warnings.filterwarnings(\n", + " \"ignore\",\n", + " message=r\"\\s*This SAE has non-empty model_from_pretrained_kwargs\\.\",\n", + " category=UserWarning,\n", + ")\n", + "\n", + "OUTPUT_DIR = \"murano_outputs/sae_enrichment\"\n", + "\n", + "MODEL_ID = \"openai-community/gpt2\"\n", + "SAE_RELEASE = \"gpt2-small-res-jb\"\n", + "SAE_ID = \"blocks.8.hook_resid_pre\"\n", + "N_EXAMPLES = 512\n", + "\n", + "# GPT-2 is small enough that bfloat16 rounding degrades its predictions.\n", + "model = MuranoModel(MODEL_ID, dtype=torch.float32)\n", + "print(f\"{model.model_id}: {model.n_layers} layers\")" + ] + }, + { + "cell_type": "markdown", + "id": "9595b15f", + "metadata": {}, + "source": [ + "## 2. Encode a labeled dataset\n", + "\n", + "`LabeledDataset.from_hub` pulls SST-2 straight off the Hub; `Load` and `SAEEncode` are the same two steps as before." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "7a298a80", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:48:01.693749Z", + "iopub.status.busy": "2026-07-10T11:48:01.693653Z", + "iopub.status.idle": "2026-07-10T11:48:14.162332Z", + "shell.execute_reply": "2026-07-10T11:48:14.161807Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "512 sentences, 266 positive\n", + "activations (512, 53, 24576) [sentences, tokens, features]\n" + ] + } + ], + "source": [ + "dataset = LabeledDataset.from_hub(\n", + " \"stanfordnlp/sst2\",\n", + " text_column=\"sentence\",\n", + " label_column=\"label\",\n", + " split=\"train\",\n", + " n=N_EXAMPLES,\n", + " label_names=[\"negative\", \"positive\"],\n", + ")\n", + "\n", + "encode = SAEEncode(model, release=SAE_RELEASE, sae_id=SAE_ID)\n", + "results = Pipeline([Load(dataset), encode]).run()\n", + "\n", + "record = results[keys.SAE_RECORD]\n", + "labels = torch.tensor([int(label) for label in dataset.labels])\n", + "print(f\"{len(dataset.texts)} sentences, {int((labels == 1).sum())} positive\")\n", + "print(f\"activations {tuple(record.activations.shape)} [sentences, tokens, features]\")" + ] + }, + { + "cell_type": "markdown", + "id": "86e4981e", + "metadata": {}, + "source": [ + "## 3. Rank features by class selectivity\n", + "\n", + "Pool each feature over a sentence's real tokens, then ask how far apart the two classes\n", + "sit, in units of the feature's own spread:\n", + "\n", + "```\n", + "effect(f) = (mean_positive(f) - mean_negative(f)) / std(f)\n", + "```\n", + "\n", + "That is a standardized mean difference, and it is the whole ranking. Nothing here is\n", + "specific to sentiment: swap the labels and the same four lines rank features for any\n", + "binary split.\n", + "\n", + "The BOS position is dropped. Residual-stream SAEs reliably grow a strong BOS-anchored\n", + "feature which fires on every sentence, and it would otherwise dominate the pooled mean\n", + "while telling us nothing about the labels." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "071cce18", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:48:14.163699Z", + "iopub.status.busy": "2026-07-10T11:48:14.163395Z", + "iopub.status.idle": "2026-07-10T11:48:14.439329Z", + "shell.execute_reply": "2026-07-10T11:48:14.438905Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "scored 24576 features\n", + "most positive-selective: #16752 effect +0.375\n", + "most negative-selective: #7964 effect -0.332\n" + ] + } + ], + "source": [ + "activations = record.activations.float().cpu()\n", + "tokens = record.tokens.cpu()\n", + "content = record.attention_mask.bool().cpu()\n", + "if model.tokenizer.bos_token_id is not None:\n", + " content = content & (tokens != model.tokenizer.bos_token_id)\n", + "\n", + "per_sentence = (activations * content.unsqueeze(-1)).sum(1) / content.sum(1).clamp_min(\n", + " 1\n", + ").unsqueeze(-1)\n", + "\n", + "positive, negative = labels == 1, labels == 0\n", + "delta = per_sentence[positive].mean(0) - per_sentence[negative].mean(0)\n", + "effect = delta / per_sentence.std(0).clamp_min(1e-6)\n", + "\n", + "print(f\"scored {effect.numel()} features\")\n", + "print(f\"most positive-selective: #{int(effect.argmax())} effect {effect.max():+.3f}\")\n", + "print(f\"most negative-selective: #{int(effect.argmin())} effect {effect.min():+.3f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "ac483c10", + "metadata": {}, + "source": [ + "## 4. Read what the selective features promote\n", + "\n", + "Ranking is cheap; interpretation is not. Project each top feature's decoder direction\n", + "through the unembedding, exactly as `sae_features.ipynb` did, and read the tokens it\n", + "promotes. `SAEModel.decoder` hands over the whole bank at once." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "46b886c4", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:48:14.440289Z", + "iopub.status.busy": "2026-07-10T11:48:14.440190Z", + "iopub.status.idle": "2026-07-10T11:48:14.556078Z", + "shell.execute_reply": "2026-07-10T11:48:14.555725Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "POSITIVE-selective:\n", + " #16752 effect +0.375 ['seamlessly', 'affordable', 'achievable', '2050', 'isine', '.\",\"']\n", + " #64 effect +0.369 ['kindness', 'generosity', 'invaluable', 'gracious', 'generous', 'kindly']\n", + " #5201 effect +0.320 ['slogans', 'onyms', 'TextColor', 'Pets', 'emot', 'igraph']\n", + " #12078 effect +0.317 ['penchant', 'charisma', 'pedigree', 'temperament', 'personality', 'knack']\n", + " #6168 effect +0.281 ['ever', 'ever', 'EVER', 'anywhere', 'OPLE', 'foray']\n", + "\n", + "NEGATIVE-selective:\n", + " #7964 effect -0.332 ['adequately', 'timely', 'properly', 'trustworthy', 'atisf', 'responsive']\n", + " #19912 effect -0.308 ['anymore', 'nor', 'nor', 'whatsoever', 'slightest', 'anything']\n", + " #14082 effect -0.287 ['anymore', 'ever', 'ever', 'nor', 'neys', 'EVER']\n", + " #17929 effect -0.282 ['average', 'usual', 'usual', 'realizes', 'iably', 'Num']\n", + " #15591 effect -0.267 ['nothing', 'meaningless', 'nothing', 'negligible', 'insignificant', 'nowhere']\n", + "\n" + ] + } + ], + "source": [ + "decoder = encode.sae_model.decoder.float().cpu()\n", + "unembedding = model.unembed_weight.detach().float().cpu()\n", + "\n", + "\n", + "def promoted(feature_id, k=6):\n", + " logits = decoder[feature_id] @ unembedding.T\n", + " return [model.tokenizer.decode([int(i)]).strip() for i in logits.topk(k).indices]\n", + "\n", + "\n", + "for name, ranked in [\n", + " (\"POSITIVE-selective\", effect.topk(5).indices),\n", + " (\"NEGATIVE-selective\", (-effect).topk(5).indices),\n", + "]:\n", + " print(f\"{name}:\")\n", + " for feature_id in ranked.tolist():\n", + " print(\n", + " f\" #{feature_id:<6} effect {effect[feature_id]:+.3f} {promoted(feature_id)}\"\n", + " )\n", + " print()" + ] + }, + { + "cell_type": "markdown", + "id": "30decedc", + "metadata": {}, + "source": [ + "Read those two lists carefully, because they are not what the ranking promised.\n", + "\n", + "Some features are exactly what you would hope for: one promotes *kindness, generosity,\n", + "gracious*; another promotes *nothing, meaningless, negligible*. Those are sentiment\n", + "features, and the ranking found them.\n", + "\n", + "But the lists also contain features that separate the classes without encoding\n", + "sentiment at all:\n", + "\n", + "- a **negation** feature (*anymore, nor, whatsoever, slightest*) ranks as\n", + " negative-selective, because negative reviews negate more, not because negation is\n", + " negative;\n", + "- a feature promoting *adequately, timely, properly, trustworthy* also ranks as\n", + " negative-selective, since those words appear in negative reviews mainly as the thing\n", + " the film failed to be;\n", + "- at least one feature promotes plain junk (*TextColor, igraph*), and separates the\n", + " classes by accident.\n", + "\n", + "**Selectivity is a correlation and nothing more.** A feature that separates the labels\n", + "has told you it carries *some* signal that co-varies with them. Which signal is a\n", + "separate question, and the only cheap instrument for it is the one above: look at what\n", + "the feature promotes, and disbelieve the ranking when the two disagree." + ] + }, + { + "cell_type": "markdown", + "id": "a95413ea", + "metadata": {}, + "source": [ + "## 5. See where a feature fires\n", + "\n", + "The logit lens says what a feature writes. To see what makes it *read*, plot its\n", + "activation across the tokens of the sentences it fires on hardest.\n", + "\n", + "Note which feature we plot. Not the top-ranked one, whose promoted tokens were a mixed\n", + "bag, but the one two rows down whose tokens are unambiguously about sentiment. Choosing\n", + "after reading, rather than trusting the rank, is the whole content of the last section;\n", + "the assertion keeps that choice honest if the ranking ever shifts." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "9a72feeb", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:48:14.557085Z", + "iopub.status.busy": "2026-07-10T11:48:14.556998Z", + "iopub.status.idle": "2026-07-10T11:48:17.716111Z", + "shell.execute_reply": "2026-07-10T11:48:17.715725Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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lkic65uGoWeoqup3HoXTF25+0eZV0/1QpUKxdOVA4U1X/KycBEiABEiABEiABEhA0wQovJomzPJJgARIgARIgARIgATSlQCFN13xs3ISIAESIAESIAESIAFNE6DwapowyycBEiABEiABEiABEkhXAhTedMXPykmABEiABEiABEiABDRNgMKracIsnwRIgARIgARIgARIIF0JUHjTFT8rJwESIAESIAESIAES0DQBCq+mCbN8EiABEiABEiABEiCBdCVA4U1X/KycBEiABEiABEiABEhA0wQovJomzPJJgARIgARIgARIgATSlQCFN13xs3ISIAESIAESIAESIAFNE6DwapowyycBEiABEiABEiABEkhXAhTedMXPykmABEiABEiABEiABDRNgMKracIsnwRIgARIgARIgARIIF0JUHjTFT8rJwESIAESIAESIAES0DQBCq+mCbN8EiABEiABEiABEiCBdCVA4U1X/KycBEiABEiABNRDoH3/qXBxcsT4gR3UUyCA+at2YeWW/Ti4NkBtZX4qKOTZS/QeNhf/XroFQwNDBB8OwsGTlzB40jIE/xeC+lU9MG9cb7XXywIzJgEKb8bsd7aaBEiABEhAzwhoQngPnLiE4+euY1CPZoLWnOXbsWHnUfyzapzK9IZOWY4L1+5i/nhvWFqYwdbaEh6NfNGoRjl0+7UOzM1MYGlupnI9eX/ywuzRPVC7UmmVy2IBukuAwqu7fcfISYAESIAEdIBAzIePMDE20nikmhDexEGrU3jb+ExGvlzZMLLfr6Ka2Ng4uHi0xYa5v+PH0oXVxovCqzaUOl0QhVenu4/BkwAJkAAJaBsBSdpG9muDXQf+xbmrwejRpg56ta2HgRMW4fiZ63j+MgI5smVGp+bV4dW8hgh/37EL6PLbDNzcPx/GRkYIfhCCCk0GoN0vVTFxUEdxzfg563D2yh2snz0o2SYnFl4pZWDI5OXYf+Ii4mLj8GOZwhjTvx1cs2dR3L//+EUMm7oC9x89RRF3V3i3b4BOA6fh7LYZIj0iYUrDmq2H4DNq/hd1B/zWEe2bVE02nr1Hz2PSvI24fuchsjjaokH1chjYramYuS1UrTtevnrzza5bMKEP6lcti1v3HmPU9FU4euYazE1NUKFUYYzybSPik464uDjMX70LSzbsxcMnz+Fob4MmtT0xrE8rlK7fFw9DXijqyexoi8t/z9G2IcN40oAAhTcNILMKEiABEiCBjENAEt4sjnbiT/Vli7nj7btofPgYi0XrdqNKhWJwsLPGuSvt9QgdAAAG30lEQVR3MGBsEAKHdUG9KmUR+TYK7lW64q8Fw1DqBzes2LQf42avhYO9DY5umCTg1fMaiWqexeHTqWGKwitJYN2OIxAbF4dxfu1gbGyM4YEr8OLla+xfPR5GRoZ4HBqG8r/0R/umVdGxaXXcefBECPK9h6HJCq9UaWpneA+fugJJwCUxlUQ79Hk4Bk1cCo/i7ooc45beASiYLydG+LQW7fnw8SNylGuPjX8MhmepQuKzZy9eoVLL39Ckjid+bVhZfBYYtElI8N/LRotfDibMXY+Fa3djpE9rIcMvXkbgwvW7il8mOMObcZ69b7WUwstxQAIkQAIkQAJqJCAJr1/XJujn1eibpY6dtVYszgoK6Cuuq91hGGpVLI2+HRugx5A5yJfLGTOXbMWpLYGwsbaAe6Wu+HPeYCHRyR0JZ3il2dAm3cfi2MbJyOvqLC6XZnxL1/fBggneIp9VEsWt+07hyPqJMDAwENdIs6S/BSxRWXiluiVx/71XC0Wox85eQyvvibh7eBEMDQ2QGuGdsmAT/jl+AdsXjVCUE/0+BvkrdcGffwxGYXdXFK7WHUP7tFIIbmI2FF41Dm4dLorCq8Odx9BJgARIgAS0j4AkvJLEJl4kNWvZNqz+66D4s7skbdJRvHBe7Fo6SpyPnrkGl2/cx9pZ/ihexxuLJvmIP+VLKQPSn+k79A/EzQMLvpoPnFB4F6/fi6lBm3Bp1+wvAHk29UPzOj+ib6eG6Ow/A+bmJpg1sofiGmkRWc12Q1UWXrdKXfAm8l2ynfMpXSI1wtuu/1TsPnQ22XKkuN3zZkeNtkNwaF0A3PNkT/Y6Cq/2PSPpERGFNz2os04SIAESIAG9JSAJ74rAASJ94dOx6q+DGD1jNf4Y2wsli7rBxsoCUxduwrZ/Tit2PBB5vP4zsHPpKNTtNAI39s3DlIWbRDpAZgebb+bvSvUkFt7AoM24uGtWUuGt+5OYRfbynw4Lc1ONCG/en70wuHeLr866SkGlRnjb9psMU1MTxSx44kHzSdApvHr7OKmtYRRetaFkQSRAAiRAAiQAsdNAYuH1Hb0AUe9jMGd0TwWijn7TxGKxT1t8fcrjbVLLU+ShrpzuhyP/XhW5vtJiq2/l7yYW3k8pDSc2TUHuHE6izk8pDQsD+qBWxVLfldKwYM3fWLl5Pw6smfDNrm7UdTRMTUywbvZvX70uNcI7cd5GLFm/ByeltA4riyRlvY2KTjGloUCVrpgypLPIleaRcQlQeDNu37PlJEACJEACGiCQnPBKi72W/fkPdiwZCUc7a/y19yR6DZ2D/Hmyf7GnrZTHK81aDundEj3b1kVUdAzcK3cRC7o2zx/61fzdxMIr/btOh+GidWP92otFaiktWpPyiaWXPkiL1s5tn4FsWb/cpUEqS0ov6D54NrYsHAoXp0ywsjAXuy4kPqRFa817T0CHplXRplEVcc21O/+JXSrG+rUTl6dGeKVFa5VbDUKBvNkxsHtTZMviKH5J2LDziNgJw97WSuxeEbRuj9jeTFrs9vJVJM5fDUbHZtVEPdXbDEGJIvkwoGtjmBgbi0WDPDIeAQpvxutztpgESIAESECDBJITXiln13/CYuw9ch6mpsYo/UN+5MqeVWxHlvAlDmNmroGU6yvl9Ur5vdLRuNsYnL8S/M383eSEV5rRHTx5GaStxxAHeJYuhLED2n+xLdk/xy4otiUrWiAXOreoiV7D5uLq3j+EmCd+05ok3t7D5+GfY+fx6vVbfGtbMkl6Jy/4Exev3YWhkSHyuTqjWZ0f0aVVrVQLr3ShJOBjZq7F4dOXxS8A2Z0zoaJHUQzv+6sQaWlHCukXiqV/7sPjkDAxG960tieGeLcU9Uhvb/t90jLcf/gU9nZW3JZMg2Nfm4um8Gpz7zA2EiABEiABEkhDAmu3Hcawqctxfd88xc4NaVg9qyIBjRGg8GoMLQsmARIgARIgAe0mIO33K/25X5oVlVIpBo5fhIbVyynefqbd0TM6Ekg9AQpv6lnxShIgARIgARLQKwJDp67Apr+P4VVEJLI7Z0bjmuXh21nKddX8q5D1CiQbo/UEKLxa30UMkARIgARIgARIgARIQBUCFF5V6PFeEiABEiABEiABEiABrSdA4dX6LmKAJEACJEACJEACJEACqhCg8KpCj/eSAAmQAAmQAAmQAAloPQEKr9Z3EQMkARIgARIgARIgARJQhQCFVxV6vJcESIAESIAESIAESEDrCVB4tb6LGCAJkAAJkAAJkAAJkIAqBCi8qtDjvSRAAiRAAiRAAiRAAlpPgMKr9V3EAEmABEiABEiABEiABFQhQOFVhR7vJQESIAESIAESIAES0HoC/wcnCKvrvx6oWgAAAABJRU5ErkJggg==" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "FEATURE_ID = 64\n", + "\n", + "assert FEATURE_ID in effect.topk(5).indices.tolist(), (\n", + " \"feature 64 fell out of the top 5; re-read the table above and pick again\"\n", + ")\n", + "\n", + "logit_fig = plot_sae_feature_logit_effects(\n", + " FEATURE_ID,\n", + " decoder=decoder,\n", + " unembedding=unembedding,\n", + " token_labels=[\n", + " model.tokenizer.decode([i]) for i in range(model.tokenizer.vocab_size)\n", + " ],\n", + " token_ids=list(range(model.tokenizer.vocab_size)),\n", + " title=f\"Feature #{FEATURE_ID}: vocabulary logit effects\",\n", + ")\n", + "save_figure(logit_fig, f\"{OUTPUT_DIR}/plots/feature_logit_effects.png\")\n", + "logit_fig" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "aa3497f4", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:48:17.717113Z", + "iopub.status.busy": "2026-07-10T11:48:17.717025Z", + "iopub.status.idle": "2026-07-10T11:48:18.597357Z", + "shell.execute_reply": "2026-07-10T11:48:18.596987Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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tP6qBmxtrPHjzNWRAkVZsEX+TeaTk96Lsl06uFyFbcE6HWYs+g3b9p+An1+AGrI7vF9byFBbmatRP2ehqR6K0amzsVtVrrNio15qzkMJSf84fh79Rs/Dn7sWwcnR3ugdLsGrBKYSpno8eQE312QqSOrbuRlcnB1NvjLiKlCUoeeyQIy0kX4xFTmxPsj9eBVq+Vt0AkW5xg07DmPjriNqtWrpeZfePZVykjaXXndRBYryd1k5ecW63bh87S4CAoPgnspNzSco95T0RjW2GeqhKPvKgjRrNu7H81dv1PB5fdsZKieuAkVzrkPqu/h/O3D+yk3V09Te3g45s2aABOoSfnKjAAUoQAEKUIACFKAABShAAQpQQPsCDBS130asIQUoQAEKUIACFKAABShAAQpQgAIUoAAFNCPAQFEzTcGKUIACFKAABShAAQpQgAIUoAAFKEABClBA+wIMFLXfRqwhBShAAQpQgAIUoAAFKEABClCAAhSgAAU0I8BAUTNNwYpQgAIUoAAFKEABClCAAhSgAAUoQAEKUED7AgwUtd9GrCEFKEABClCAAhSgAAUoQAEKUIACFKAABTQjwEBRM03BilCAAhSgAAUoQAEKUIACFKAABShAAQpQQPsCDBS130asIQUoQAEKUIACFKAABShAAQpQgAIUoAAFNCPAQFEzTcGKUIACFKAABShAAQpQgAIUoAAFKEABClBA+wIMFLXfRqwhBShAAQpQgAIUoAAFKEABClCAAhSgAAU0I8BAUTNNwYpQgAIUoAAFKEABClCAAhSgAAUoQAEKUED7AgwUtd9GrCEFKEABClCAAhSgAAUoQAEKUIACFKAABTQjwEBRM03BilCAAhSgAAUoQAEKUIACFKAABShAAQpQQPsCDBS130asIQUoQAEKUIACFKAABShAAQpQgAIUoAAFNCPAQFEzTcGKUIACFKAABShAAQpQgAIUoAAFKEABClBA+wIMFLXfRqwhBShAAQpQgAIUoAAFKEABClCAAhSgAAU0I8BAUTNNwYpQgAIUoAAFKEABClCAAhSgAAUoQAEKUED7AgwUtd9GrCEFKEABClCAAhSgAAUoQAEKUIACFKAABTQjwEBRM03BilCAAhSgAAUoQAEKUIACFKAABShAAQpQQPsCDBS130asIQUoQAEKUIACFKAABShAAQpQgAIUoAAFNCPAQFEz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QF8JIWWCF9fvHsgQyw69MzuhQcq86s9BWyb+Wh+vyw9ETEtrI1UTV0MBClCAAhSgAAUoQAEKUIACFKAABShAAfMQiJaBonnQshQUoAAFKEABClCAAhSgAAUoQAEKUIACFIh+AgwUo1+dco8oQAEKUIACFKAABShAAQpQgAIUoAAFKGAyAQaKJqPliilAAQpQgAIUoAAFKEABClCAAhSgAAUoEP0EGChGvyTp1b0AAAJJSURBVDrlHlGAAhSgAAUoQAEKUIACFKAABShAAQpQwGQCDBRNRssVU4ACFKAABShAAQpQgAIUoAAFKEABClAg+gkwUIx+dco9ogAFKEABClCAAhSgAAUoQAEKUIACFKCAyQQYKJqMliumAAUoQAEKUIACFKAABShAAQpQgAIUoED0E2CgGP3qlHtEAQpQgAIUoAAFKEABClCAAhSgAAUoQAGTCTBQNBktV0wBClCAAhSgAAUoQAEKUIACFKAABShAgegnoDdQvPf8U/Tba+4RBShAAQpQgAIUoAAFKEABClCAAhSgAAUoEKJAtrQJdcroDRTpSgEKUIACFKAABShAAQpQgAIUoAAFKEABClAgUICBIo8FClCAAhSgAAUoQAEKUIACFKAABShAAQpQINQCDBRDTcUPUoACFKAABShAAQpQgAIUoAAFKEABClCAAgwUeQxQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACoRZgoBhqKn6QAhSgAAUoQAEKUIACFKAABShAAQpQgAIUYKDIY4ACFKAABShAAQpQgAIUoAAFKEABClCAAhQItQADxVBT8YMUoAAFKEABClCAAhSgAAUoQAEKUIACFKAAA0UeAxSgAAUoQAEKUIACFKAABShAAQpQgAIUoECoBRgohpqKH6QABShAAQpQgAIUoAAFKEABClCAAhSgAAUYKPIYoAAFKEABClCAAhSgAAUoQAEKUIACFKAABUItwEAx1FT8IAUoQAEKUIACFKAABShAAQpQgAIUoAAFKPA/7gn1VKe8QB4AAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "token_fig = plot_sae_token_activations(\n", + " activations=activations,\n", + " token_ids=tokens,\n", + " attention_mask=record.attention_mask,\n", + " feature_id=FEATURE_ID,\n", + " decode_token=lambda token_id: model.tokenizer.decode([int(token_id)]),\n", + " bos_token_id=model.tokenizer.bos_token_id,\n", + " num_examples=8,\n", + " title=f\"Feature #{FEATURE_ID}: where it fires\",\n", + ")\n", + "save_figure(token_fig, f\"{OUTPUT_DIR}/plots/feature_token_activations.png\")\n", + "token_fig" + ] + }, + { + "cell_type": "markdown", + "id": "f138f4bd", + "metadata": {}, + "source": [ + "## What next\n", + "\n", + "- [`sae_features.ipynb`](sae_features.ipynb) introduces the logit lens on a decoder direction that this notebook leans on.\n", + "- [`probing.ipynb`](probing.ipynb) asks the same question of raw activations rather than SAE features." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/sae/01_basics.ipynb b/notebooks/applications/sae_features.ipynb similarity index 65% rename from notebooks/sae/01_basics.ipynb rename to notebooks/applications/sae_features.ipynb index 00806b4..5ae31fd 100644 --- a/notebooks/sae/01_basics.ipynb +++ b/notebooks/applications/sae_features.ipynb @@ -2,51 +2,68 @@ "cells": [ { "cell_type": "markdown", - "id": "e414bcd6", + "id": "dfeba6bf", "metadata": {}, "source": [ - "# SAE basics: encode prompts and inspect features\n", + "# SAE features: reading a model's concepts\n", "\n", - "A **Sparse Autoencoder (SAE)** takes a language model's internal activations and breaks them into a long list of features. Each feature roughly corresponds to one concept (a name, a topic, a grammatical role), and for any given input only a small fraction are active, which makes the model's internal state easier to read.\n", + "A **sparse autoencoder** (SAE) re-expresses one layer's residual stream as a long,\n", + "mostly-zero vector of *features*. The hope is that each feature carries one concept,\n", + "where a raw residual dimension carries a superposition of many.\n", "\n", - "This notebook walks through the simplest SAE workflow with Murano:\n", + "Murano loads a pre-trained SAE from HuggingFace and reads the layer it was trained on\n", + "straight off its config, so you never match hook sites by hand.\n", "\n", - "1. Load a pre-trained SAE from HuggingFace.\n", - "2. Encode a few prompts through it.\n", - "3. For each prompt, see which feature fires strongest and what concept it represents.\n", + "This notebook encodes five sentences through an SAE and asks what fired, and what\n", + "the thing that fired *means*.\n", "\n", - "We use Gemma 2 2B with the gemma-scope SAE at layer 20.\n", + "**Key questions**\n", "\n", - "**Install**: `pip install -e \".[sae,notebook]\"`" + "- How sparse is a sparse autoencoder, in practice?\n", + "- Which feature best characterizes a whole sentence?\n", + "- A feature id is a number: how do I find out what concept it carries?\n", + "\n", + "**Structure**\n", + "\n", + "1. Set up\n", + "2. Encode prompts through the SAE\n", + "3. Confirm the code really is sparse\n", + "4. Find each sentence's defining feature\n", + "5. Read what a feature means\n", + "6. Save\n", + "\n", + "**Model and data.** Gemma 2 2B Instruct with the 16k gemma-scope SAE at layer 20. The model is **gated** on the Hub: accept its licence once, then `hf auth login`. Unlike the GPT-2 notebooks this one loads a 2B model, so expect a few GB of GPU memory. Five sentences, each naming a landmark in a different country.\n", + "\n", + "**Requirements.** `pip install murano-interp[sae]`" ] }, { "cell_type": "markdown", - "id": "40e8bf15", + "id": "a3f8b21a", "metadata": {}, "source": [ - "## Setup\n", + "## 1. Set up\n", "\n", - "Pick the model, the SAE release, and the SAE id. `SAEEncode` reads the target layer from the SAE's own config, so we don't have to specify it." + "`SAEEncode` reads its target layer from the SAE's own config, so the layer is never passed twice." ] }, { "cell_type": "code", "execution_count": 1, - "id": "7a547f2a", + "id": "f656c544", "metadata": { "execution": { - "iopub.execute_input": "2026-06-30T10:02:27.891059Z", - "iopub.status.busy": "2026-06-30T10:02:27.890922Z", - "iopub.status.idle": "2026-06-30T10:04:50.848642Z", - "shell.execute_reply": "2026-06-30T10:04:50.847843Z" + "iopub.execute_input": "2026-07-10T11:48:40.750395Z", + "iopub.status.busy": "2026-07-10T11:48:40.750313Z", + "iopub.status.idle": "2026-07-10T11:49:29.816817Z", + "shell.execute_reply": "2026-07-10T11:49:29.816322Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "0900d65d8b234d979bd163aca22a3aa3", + "model_id": "5564838095df406285fd349a45d873e5", "version_major": 2, "version_minor": 0 }, @@ -56,40 +73,48 @@ }, "metadata": {}, "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "google/gemma-2-2b-it: 26 layers\n" + ] } ], "source": [ - "from murano import MuranoModel, Pipeline\n", - "from murano.steps import SAEEncode, SAEFeatureLabel, top_sae_features_per_prompt\n", + "from murano import MuranoModel, Pipeline, keys\n", + "from murano.steps import SAEEncode, SAEFeatureLabel, Save, top_sae_features_per_prompt\n", "from murano.steps.prompts import LoadPrompts\n", "\n", + "OUTPUT_DIR = \"murano_outputs/sae_features\"\n", + "\n", "MODEL_ID = \"google/gemma-2-2b-it\"\n", "SAE_RELEASE = \"gemma-scope-2b-pt-res-canonical\"\n", "SAE_ID = \"layer_20/width_16k/canonical\"\n", "\n", - "model = MuranoModel(MODEL_ID)" + "model = MuranoModel(MODEL_ID)\n", + "print(f\"{model.model_id}: {model.n_layers} layers\")" ] }, { "cell_type": "markdown", - "id": "b335d470", + "id": "252814c1", "metadata": {}, "source": [ - "## Encode prompts through the SAE\n", - "\n", - "A tiny pipeline: load prompts, then encode them through the SAE. We use five sentences, each about a landmark in a different country." + "## 2. Encode prompts through the SAE" ] }, { "cell_type": "code", "execution_count": 2, - "id": "9266d18d", + "id": "a17a6deb", "metadata": { "execution": { - "iopub.execute_input": "2026-06-30T10:04:50.850822Z", - "iopub.status.busy": "2026-06-30T10:04:50.850464Z", - "iopub.status.idle": "2026-06-30T10:05:42.744426Z", - "shell.execute_reply": "2026-06-30T10:05:42.743696Z" + "iopub.execute_input": "2026-07-10T11:49:29.818534Z", + "iopub.status.busy": "2026-07-10T11:49:29.818252Z", + "iopub.status.idle": "2026-07-10T11:49:39.781796Z", + "shell.execute_reply": "2026-07-10T11:49:39.781229Z" } }, "outputs": [ @@ -97,9 +122,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Encoded 5 prompts at layer 20.\n", - "Every token is now a 16384-feature SAE vector.\n", - "activations shape = (5, 13, 16384) [prompts, tokens, features]\n" + "encoded 5 prompts at L20.resid_post\n", + "every token is now a 16384-feature vector\n", + "activations (5, 13, 16384) [prompts, tokens, features]\n" ] } ], @@ -118,36 +143,34 @@ " SAEEncode(model, release=SAE_RELEASE, sae_id=SAE_ID),\n", " ]\n", ").run()\n", - "record = results[\"sae_record\"]\n", "\n", + "record = results[keys.SAE_RECORD]\n", "n_prompts, n_tokens, n_features = record.activations.shape\n", - "print(f\"Encoded {n_prompts} prompts at layer {record.hook.layer}.\")\n", - "print(f\"Every token is now a {n_features}-feature SAE vector.\")\n", - "print(\n", - " f\"activations shape = {tuple(record.activations.shape)} [prompts, tokens, features]\"\n", - ")" + "print(f\"encoded {n_prompts} prompts at {record.hook}\")\n", + "print(f\"every token is now a {n_features}-feature vector\")\n", + "print(f\"activations {tuple(record.activations.shape)} [prompts, tokens, features]\")" ] }, { "cell_type": "markdown", - "id": "2daf67c8", + "id": "f56ce534", "metadata": {}, "source": [ - "## SAEs are sparse\n", + "## 3. Confirm the code really is sparse\n", "\n", - "Even though the SAE has thousands of features, only a small fraction fire on any given token, so each token's feature vector is mostly zeros. Below we count how many fire per real (non-padding) token." + "The claim in the name is checkable: count how many features fire on each real token." ] }, { "cell_type": "code", "execution_count": 3, - "id": "85ff7a9d", + "id": "e8f70889", "metadata": { "execution": { - "iopub.execute_input": "2026-06-30T10:05:42.746571Z", - "iopub.status.busy": "2026-06-30T10:05:42.746232Z", - "iopub.status.idle": "2026-06-30T10:05:42.758750Z", - "shell.execute_reply": "2026-06-30T10:05:42.757747Z" + "iopub.execute_input": "2026-07-10T11:49:39.783172Z", + "iopub.status.busy": "2026-07-10T11:49:39.782870Z", + "iopub.status.idle": "2026-07-10T11:49:39.792719Z", + "shell.execute_reply": "2026-07-10T11:49:39.792404Z" } }, "outputs": [ @@ -155,39 +178,41 @@ "name": "stdout", "output_type": "stream", "text": [ - "On average 751 of 16384 features fire per token (4.6% active).\n" + "751 of 16384 features fire per token (4.6% active)\n" ] } ], "source": [ "active_per_token = (record.activations > 0).sum(dim=-1)\n", "mean_active = active_per_token[record.attention_mask.bool()].float().mean().item()\n", - "print(\n", - " f\"On average {mean_active:.0f} of {n_features} features fire per token \"\n", - " f\"({100 * mean_active / n_features:.1f}% active).\"\n", - ")" + "\n", + "print(f\"{mean_active:.0f} of {n_features} features fire per token\", end=\" \")\n", + "print(f\"({100 * mean_active / n_features:.1f}% active)\")" ] }, { "cell_type": "markdown", - "id": "0274274c", + "id": "c4721a38", "metadata": {}, "source": [ - "## What is each sentence about?\n", + "## 4. Find each sentence's defining feature\n", "\n", - "To read what a sentence is about *as a whole*, we average each feature's activation across its content tokens and take the top one. `top_sae_features_per_prompt` does this and automatically drops the few high-frequency \"broad\" features that fire on almost every token (and would otherwise dominate the average). The result is one feature id per prompt; we learn what it means in the next cell." + "To read what a sentence is *about*, average each feature over the sentence's tokens\n", + "and take the largest. `top_sae_features_per_prompt` does that, and drops the few\n", + "high-frequency features that fire on nearly every token and would otherwise win every\n", + "average by default." ] }, { "cell_type": "code", "execution_count": 4, - "id": "9b4c77e1", + "id": "7feb0b25", "metadata": { "execution": { - "iopub.execute_input": "2026-06-30T10:05:42.760202Z", - "iopub.status.busy": "2026-06-30T10:05:42.760027Z", - "iopub.status.idle": "2026-06-30T10:05:42.772737Z", - "shell.execute_reply": "2026-06-30T10:05:42.771990Z" + "iopub.execute_input": "2026-07-10T11:49:39.793511Z", + "iopub.status.busy": "2026-07-10T11:49:39.793422Z", + "iopub.status.idle": "2026-07-10T11:49:39.802520Z", + "shell.execute_reply": "2026-07-10T11:49:39.802264Z" } }, "outputs": [ @@ -216,32 +241,32 @@ "source": [ "top_feats = top_sae_features_per_prompt(record, n=1, reduce=\"mean\")\n", "for prompt, feats in zip(record.texts, top_feats):\n", - " print(f\"{prompt}\")\n", - " print(f\" -> top feature #{feats[0]}\\n\")" + " print(f\"{prompt}\\n -> top feature #{feats[0]}\\n\")" ] }, { "cell_type": "markdown", - "id": "d40a8733", + "id": "2edfb67d", "metadata": {}, "source": [ - "## What does each feature mean?\n", + "## 5. Read what a feature means\n", "\n", - "A feature id is just a number. To learn what it represents, `SAEFeatureLabel` reads the feature's direction and projects it through the model's unembedding (the layer that turns hidden states into output-token logits). The token it pushes hardest is the one this feature *promotes*.\n", - "\n", - "Each prompt is about a landmark in a different country, and each top feature promotes that country's name or nationality. That is the SAE doing its job: it has decomposed each sentence into a clean, interpretable concept." + "A feature id is a number. To learn what it carries, `SAEFeatureLabel` takes the\n", + "feature's decoder direction and projects it through the unembedding: the tokens it\n", + "pushes hardest are the tokens it *promotes*. This is the logit lens, applied to a\n", + "feature rather than to a residual stream." ] }, { "cell_type": "code", "execution_count": 5, - "id": "f629b3af", + "id": "6231de15", "metadata": { "execution": { - "iopub.execute_input": "2026-06-30T10:05:42.774127Z", - "iopub.status.busy": "2026-06-30T10:05:42.773965Z", - "iopub.status.idle": "2026-06-30T10:05:43.836167Z", - "shell.execute_reply": "2026-06-30T10:05:43.835417Z" + "iopub.execute_input": "2026-07-10T11:49:39.803281Z", + "iopub.status.busy": "2026-07-10T11:49:39.803197Z", + "iopub.status.idle": "2026-07-10T11:49:40.647697Z", + "shell.execute_reply": "2026-07-10T11:49:40.647379Z" } }, "outputs": [ @@ -274,19 +299,70 @@ "\n", "for prompt, feats in zip(record.texts, top_feats):\n", " fid = feats[0]\n", - " promoted = labels.tokens[fid][0].strip()\n", - " print(f\"{prompt}\")\n", - " print(f\" -> feature #{fid} means {promoted!r}\\n\")" + " print(f\"{prompt}\\n -> feature #{fid} means {labels.tokens[fid][0].strip()!r}\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "17613680", + "metadata": {}, + "source": [ + "Each sentence names a landmark in a different country, and each defining feature\n", + "promotes that country's name or nationality. The SAE has pulled one clean concept out\n", + "of a residual stream that mixed dozens.\n", + "\n", + "Note what this does *not* establish. A feature that promotes `\" France\"` at the\n", + "unembedding is a feature the model uses to say \"France\". Whether it is the feature the\n", + "model uses to *know* France is a further, causal claim, and reading it off the decoder\n", + "cannot settle it. `sae_steering.ipynb` makes that claim testable by intervening." ] }, { "cell_type": "markdown", - "id": "270fb3f5", + "id": "ba55969a", "metadata": {}, "source": [ - "## What's next\n", + "## 6. Save" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "67397f09", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:49:40.648709Z", + "iopub.status.busy": "2026-07-10T11:49:40.648615Z", + "iopub.status.idle": "2026-07-10T11:49:40.690440Z", + "shell.execute_reply": "2026-07-10T11:49:40.690197Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved to: murano_outputs/sae_features\n" + ] + } + ], + "source": [ + "run_dir = Save(\n", + " output_dir=\"murano_outputs\", run_name=\"sae_features\", model_id=model.model_id\n", + ")(results)[keys.OUTPUT_DIR]\n", "\n", - "Notebook [`02_feature_steering.ipynb`](02_feature_steering.ipynb) shows how to find a feature for a specific concept and steer the model's generations with it." + "print(\"saved to:\", run_dir)" + ] + }, + { + "cell_type": "markdown", + "id": "aea5978f", + "metadata": {}, + "source": [ + "## What next\n", + "\n", + "- [`sae_steering.ipynb`](sae_steering.ipynb) turns a feature from something you read into something you write with.\n", + "- [`sae_enrichment.ipynb`](sae_enrichment.ipynb) ranks thousands of features by how well they separate two classes." ] } ], @@ -306,36 +382,51 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.12" + "version": "3.13.13" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { - "0900d65d8b234d979bd163aca22a3aa3": { + "17915ca5214147ffabecb9138e7040e4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HBoxModel", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "2da0b293ae704d54b5b9b1f3abe39f9d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", + "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_6c5f106237f6470d976f3d209f0e891b", - "IPY_MODEL_d35f12901ea8474aa7e98ead68bb0766", - "IPY_MODEL_828d543e68304cadb6729d592c74046f" - ], - "layout": "IPY_MODEL_b34ea74ca06a41f5ab0b01d2ca7a32e8", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_450dbd3136ee4e46965a2a035a2d9b56", + "placeholder": "​", + "style": "IPY_MODEL_4490c6e836f849b09e983ab7e06a0c6d", "tabbable": null, - "tooltip": null + "tooltip": null, + "value": " 2/2 [00:00<00:00,  1.55it/s]" } }, - "35d448926d704f6ab50e9ecb09047254": { + "3bcb1282d54e43ee9a92c1576f2dfdf6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -353,7 +444,7 @@ "text_color": null } }, - "4f2feddeff844fcbb5eb56bf342954ac": { + "4490c6e836f849b09e983ab7e06a0c6d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -371,53 +462,7 @@ "text_color": null } }, - "6c5f106237f6470d976f3d209f0e891b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_b0dbbac47f01438f979f9a214729c9c7", - "placeholder": "​", - "style": "IPY_MODEL_35d448926d704f6ab50e9ecb09047254", - "tabbable": null, - "tooltip": null, - "value": "Loading checkpoint shards: 100%" - } - }, - "828d543e68304cadb6729d592c74046f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_87932cf9f4124e669a745a50fc7b56d7", - "placeholder": "​", - "style": "IPY_MODEL_4f2feddeff844fcbb5eb56bf342954ac", - "tabbable": null, - "tooltip": null, - "value": " 2/2 [00:00<00:00,  1.35it/s]" - } - }, - "87932cf9f4124e669a745a50fc7b56d7": { + "450dbd3136ee4e46965a2a035a2d9b56": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -470,23 +515,31 @@ "width": null } }, - "8840bbb4961d47b79a8c66b36c4e2fd1": { + "5564838095df406285fd349a45d873e5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", + "model_name": "HBoxModel", "state": { + "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", + "_model_name": "HBoxModel", "_view_count": null, - "_view_module": "@jupyter-widgets/base", + "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ed48b1bb903b4da08806bc24c8af1bb0", + "IPY_MODEL_ec1d8cede7db4c71928817b8e057ac3e", + "IPY_MODEL_2da0b293ae704d54b5b9b1f3abe39f9d" + ], + "layout": "IPY_MODEL_b0b2b9bad58f43c69ae35dda0f828e8d", + "tabbable": null, + "tooltip": null } }, - "b0dbbac47f01438f979f9a214729c9c7": { + "91872afbf48542ff81ab3986f4e47076": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -539,7 +592,7 @@ "width": null } }, - "b34ea74ca06a41f5ab0b01d2ca7a32e8": { + "a71f20ebaf23409e80a1a0c84b197544": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -592,7 +645,7 @@ "width": null } }, - "cdc53b598c164f2a92dd443c9bcb28a3": { + "b0b2b9bad58f43c69ae35dda0f828e8d": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -645,7 +698,7 @@ "width": null } }, - "d35f12901ea8474aa7e98ead68bb0766": { + "ec1d8cede7db4c71928817b8e057ac3e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", @@ -661,15 +714,38 @@ "bar_style": "success", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_cdc53b598c164f2a92dd443c9bcb28a3", + "layout": "IPY_MODEL_a71f20ebaf23409e80a1a0c84b197544", "max": 2.0, "min": 0.0, "orientation": "horizontal", - "style": "IPY_MODEL_8840bbb4961d47b79a8c66b36c4e2fd1", + "style": "IPY_MODEL_17915ca5214147ffabecb9138e7040e4", "tabbable": null, "tooltip": null, "value": 2.0 } + }, + "ed48b1bb903b4da08806bc24c8af1bb0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_91872afbf48542ff81ab3986f4e47076", + "placeholder": "​", + "style": "IPY_MODEL_3bcb1282d54e43ee9a92c1576f2dfdf6", + "tabbable": null, + "tooltip": null, + "value": "Loading checkpoint shards: 100%" + } } }, "version_major": 2, diff --git a/notebooks/applications/sae_steering.ipynb b/notebooks/applications/sae_steering.ipynb new file mode 100644 index 0000000..48834cb --- /dev/null +++ b/notebooks/applications/sae_steering.ipynb @@ -0,0 +1,1169 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d496ac79", + "metadata": {}, + "source": [ + "# SAE steering: writing with a feature, and where it breaks\n", + "\n", + "Once you can *read* SAE features you can try to *write* with them: add a feature's\n", + "decoder direction to the residual stream during generation and see whether the model\n", + "bends toward that concept. This is the mechanism behind Anthropic's\n", + "[Golden Gate Claude](https://transformer-circuits.pub/2024/scaling-monosemanticity/).\n", + "\n", + "We find a **California** feature, confirm it really is the California feature, and then\n", + "steer with it. Most of the notebook is about the two things that decide whether that\n", + "works: which feature you picked, and how hard you push. The second one does not have a\n", + "happy ending here, and the reason is worth more than a working demo would have been.\n", + "\n", + "**Key questions**\n", + "\n", + "- How do I find the feature for a concept I care about?\n", + "- Why is the feature that fires hardest on a word often the wrong one?\n", + "- How hard should I push, and what if no strength works?\n", + "\n", + "**Structure**\n", + "\n", + "1. Set up\n", + "2. Shortlist the features that fire on the concept\n", + "3. Pick the feature by what it promotes\n", + "4. Calibrate the strength against the residual stream\n", + "5. Steer, and watch the window close\n", + "6. Save\n", + "\n", + "**Model and data.** Gemma 2 2B Instruct with the 16k gemma-scope SAE at layer 20. The model is **gated** on the Hub: accept its licence once, then `hf auth login`. Unlike the GPT-2 notebooks this one loads a 2B model, so expect a few GB of GPU memory. Six probe sentences about California, and four unrelated questions.\n", + "\n", + "**Requirements.** `pip install murano-interp[sae]`" + ] + }, + { + "cell_type": "markdown", + "id": "785d73f7", + "metadata": {}, + "source": [ + "## 1. Set up" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "881b8f9b", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:50:05.188718Z", + "iopub.status.busy": "2026-07-10T11:50:05.188656Z", + "iopub.status.idle": "2026-07-10T11:50:59.578412Z", + "shell.execute_reply": "2026-07-10T11:50:59.577886Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "24b4dae61a0d4e4e9ce75fa5b0670f3d", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Loading checkpoint shards: 0%| | 0/2 [00:00 steered {steered:.2f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "92e11520", + "metadata": {}, + "source": [ + "### Attempt 1: steer at the best-separating layer\n", + "\n", + "The obvious move is to intervene where the concept separates best. Here that is\n", + "layer 0." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e6f37710", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:31:51.497109Z", + "iopub.status.busy": "2026-07-10T11:31:51.497036Z", + "iopub.status.idle": "2026-07-10T11:31:51.871626Z", + "shell.execute_reply": "2026-07-10T11:31:51.871348Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "Intervene: 0%| | 0/4 [00:00 steered 0.50\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "show(\n", + " Pipeline(\n", + " [\n", + " LoadPrompts(EVAL_PROMPTS),\n", + " Intervene(\n", + " model,\n", + " direction_key=keys.STEERING,\n", + " mode=\"steer\",\n", + " alpha=6.0,\n", + " direction_layers=\"best\",\n", + " gen_kwargs={\n", + " \"max_new_tokens\": 15,\n", + " \"do_sample\": False,\n", + " },\n", + " ),\n", + " ]\n", + " ).run(results.copy())[keys.INTERVENE]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "0a0ebd24", + "metadata": {}, + "source": [ + "The wording shifts a little, but the sentiment does not: the positive-word rate is\n", + "unchanged. Nudging layer 0 rearranges the sentence without making it any warmer.\n", + "\n", + "This is the single most useful lesson in this notebook. **Separation tells you\n", + "where a concept is readable, not where it is effective.** Layer 0's residual\n", + "stream is dominated by token embeddings, and the words \"love\" and \"hate\" are\n", + "lexically obvious there, which is exactly why the separation score is highest.\n", + "But eleven more layers of computation sit downstream, and they overwrite whatever\n", + "we nudge at layer 0.\n", + "\n", + "A probe would have been delighted with layer 0. A causal intervention is not." + ] + }, + { + "cell_type": "markdown", + "id": "5cba8a5a", + "metadata": {}, + "source": [ + "### Attempt 2: steer at every layer\n", + "\n", + "Applying the direction at every layer keeps it present all the way to the\n", + "unembedding." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "c775d957", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:31:51.872419Z", + "iopub.status.busy": "2026-07-10T11:31:51.872336Z", + "iopub.status.idle": "2026-07-10T11:31:52.215040Z", + "shell.execute_reply": "2026-07-10T11:31:52.214766Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "Intervene: 0%| | 0/4 [00:00 steered 0.75\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "comparison = Pipeline(\n", + " [\n", + " LoadPrompts(EVAL_PROMPTS),\n", + " Intervene(\n", + " model,\n", + " direction_key=keys.STEERING,\n", + " mode=\"steer\",\n", + " alpha=4.0,\n", + " direction_layers=\"all\",\n", + " gen_kwargs={\"max_new_tokens\": 15, \"do_sample\": False},\n", + " ),\n", + " ]\n", + ").run(results.copy())[keys.INTERVENE]\n", + "\n", + "show(comparison)" + ] + }, + { + "cell_type": "markdown", + "id": "2464c2e8", + "metadata": {}, + "source": [ + "Now the sentiment moves, and the rate moves with it. The completions turn\n", + "approving without falling apart.\n", + "\n", + "### Attempt 3: push too hard\n", + "\n", + "`alpha` is not free. Turn it up and the direction swamps the rest of the residual\n", + "stream, and the model stops producing language at all." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ffe7a3a9", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:31:52.215777Z", + "iopub.status.busy": "2026-07-10T11:31:52.215701Z", + "iopub.status.idle": "2026-07-10T11:31:52.493010Z", + "shell.execute_reply": "2026-07-10T11:31:52.492710Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "Intervene: 0%| | 0/4 [00:00 steered 0.50\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "show(\n", + " Pipeline(\n", + " [\n", + " LoadPrompts(EVAL_PROMPTS),\n", + " Intervene(\n", + " model,\n", + " direction_key=keys.STEERING,\n", + " mode=\"steer\",\n", + " alpha=16.0,\n", + " direction_layers=\"all\",\n", + " gen_kwargs={\n", + " \"max_new_tokens\": 12,\n", + " \"do_sample\": False,\n", + " },\n", + " ),\n", + " ]\n", + " ).run(results.copy())[keys.INTERVENE]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "f1e039ce", + "metadata": {}, + "source": [ + "That degenerate output is what over-steering looks like. Somewhere between these\n", + "extremes is a usable range, and finding it is empirical: there is no substitute\n", + "for looking at the text.\n", + "\n", + "We keep the `alpha=4.0`, every-layer result from attempt 2 as `comparison`." + ] + }, + { + "cell_type": "markdown", + "id": "a5757e7d", + "metadata": {}, + "source": [ + "## 5. Score the effect\n", + "\n", + "Reading four generations is not evidence. `GenerationMetric` applies a scoring\n", + "function to both sides of the comparison, so the shift becomes a number.\n", + "\n", + "`positive_word_rate` is deliberately crude: a keyword count over a handful of\n", + "prompts. It is enough to show the *direction* of the effect and far too small to\n", + "quantify it. Swap in a sentiment classifier and a real evaluation set before\n", + "reporting anything." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "9a9d5675", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:31:52.493787Z", + "iopub.status.busy": "2026-07-10T11:31:52.493668Z", + "iopub.status.idle": "2026-07-10T11:31:52.495435Z", + "shell.execute_reply": "2026-07-10T11:31:52.495238Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "positive_word_rate\n", + " clean: 0.50\n", + " modified: 0.75\n" + ] + } + ], + "source": [ + "results[keys.INTERVENE] = comparison\n", + "scored = GenerationMetric(\n", + " metric_name=\"positive_word_rate\", score_fn=positive_word_rate\n", + ")(results)\n", + "\n", + "metric = scored[keys.METRIC]\n", + "print(metric.metric_name)\n", + "print(f\" {metric.baseline_label}: {metric.baseline_score:.2f}\")\n", + "print(f\" {metric.modified_label}: {metric.modified_score:.2f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "f177492b", + "metadata": {}, + "source": [ + "Had we scored attempt 1 instead, both numbers would be identical. The metric is\n", + "what turns \"the text looks different\" into a claim you can defend." + ] + }, + { + "cell_type": "markdown", + "id": "632305a3", + "metadata": {}, + "source": [ + "## 6. Save\n", + "\n", + "Every recognized artifact lands under one tree." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "88937f9e", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:31:52.496141Z", + "iopub.status.busy": "2026-07-10T11:31:52.496073Z", + "iopub.status.idle": "2026-07-10T11:31:52.542055Z", + "shell.execute_reply": "2026-07-10T11:31:52.541791Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved to: murano_outputs/steering\n" + ] + } + ], + "source": [ + "run_dir = Save(\n", + " output_dir=\"murano_outputs\", run_name=\"steering\", model_id=model.model_id\n", + ")(scored)[keys.OUTPUT_DIR]\n", + "\n", + "print(\"saved to:\", run_dir)" + ] + }, + { + "cell_type": "markdown", + "id": "4d619f50", + "metadata": {}, + "source": [ + "## What next\n", + "\n", + "- [`probing.ipynb`](probing.ipynb) asks the complementary question: can we *read* the concept off the activations?\n", + "- [`weight_ablation.ipynb`](weight_ablation.ipynb) bakes a direction into the weights permanently.\n", + "- [`custom_pipeline.ipynb`](custom_pipeline.ipynb) measures readability and steerability layer by layer, and shows they disagree." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/applications/weight_ablation.ipynb b/notebooks/applications/weight_ablation.ipynb new file mode 100644 index 0000000..faf3f22 --- /dev/null +++ b/notebooks/applications/weight_ablation.ipynb @@ -0,0 +1,494 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "33909585", + "metadata": {}, + "source": [ + "# Weight ablation: edit the model, not the run\n", + "\n", + "Every other intervention in Murano is applied to *activations*, at run time, by a\n", + "hook. Remove the hook and the model is exactly as it was.\n", + "\n", + "**Weight ablation** is permanent. It projects a direction out of the weight matrices\n", + "themselves, so every matrix that reads from the residual stream can no longer see\n", + "that direction, and every matrix that writes to it can no longer produce it. The\n", + "result is an ordinary transformer that has simply lost a concept, and you can save\n", + "it and hand it to someone with no interpretability tooling at all.\n", + "\n", + "**Key questions**\n", + "\n", + "- Can a concept be removed from the weights rather than suppressed per-run?\n", + "- How many matrices does that touch?\n", + "- Does the edited model still produce fluent text?\n", + "\n", + "**Structure**\n", + "\n", + "1. Set up\n", + "2. Derive the direction\n", + "3. Project it out of the weights\n", + "4. Compare and score\n", + "5. Save the edited model\n", + "\n", + "**Model and data.** Weight ablation needs a Llama-family layout (separate q/k/v/o projections and a gated MLP), so this is the one notebook that does not run on GPT-2. It uses Llama-3.2-1B in float32 and needs a few GB of GPU memory. We load it from an ungated mirror so the notebook runs without a license prompt; `meta-llama/Llama-3.2-1B-Instruct` is the same weights if you have access. Contrastive sentences come from `murano.tasks`.\n", + "\n", + "**Requirements.** No extras: `pip install murano-interp`" + ] + }, + { + "cell_type": "markdown", + "id": "d9f9c3a4", + "metadata": {}, + "source": [ + "## 1. Set up" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7d1ff6c7", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:33:47.783003Z", + "iopub.status.busy": "2026-07-10T11:33:47.782941Z", + "iopub.status.idle": "2026-07-10T11:34:37.604291Z", + "shell.execute_reply": "2026-07-10T11:34:37.603222Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "unsloth/Llama-3.2-1B-Instruct: 16 layers, d_model=2048\n" + ] + } + ], + "source": [ + "import torch\n", + "\n", + "from murano import MuranoModel, Pipeline, keys\n", + "from murano.artifacts import PromptBatch\n", + "from murano.dataset import MuranoDataset\n", + "from murano.steps import (\n", + " GenerationMetric,\n", + " Load,\n", + " Record,\n", + " SteeringVector,\n", + " WeightAblation,\n", + ")\n", + "from murano.tasks import positive_word_rate, sentiment\n", + "\n", + "OUTPUT_DIR = \"murano_outputs/weight_ablation\"\n", + "\n", + "# GPT-2 is small enough that bfloat16 rounding degrades its predictions.\n", + "model = MuranoModel(\"unsloth/Llama-3.2-1B-Instruct\", dtype=torch.float32)\n", + "print(f\"{model.model_id}: {model.n_layers} layers, d_model={model.d_model}\")" + ] + }, + { + "cell_type": "markdown", + "id": "d5568cc4", + "metadata": {}, + "source": [ + "## 2. Derive the direction\n", + "\n", + "Exactly as in `steering.ipynb`: contrastive prompts, record the last token, take the difference of class means." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "1159a543", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:34:37.605805Z", + "iopub.status.busy": "2026-07-10T11:34:37.605544Z", + "iopub.status.idle": "2026-07-10T11:34:37.945534Z", + "shell.execute_reply": "2026-07-10T11:34:37.945041Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "best separating layer: L12.resid_post\n" + ] + } + ], + "source": [ + "positive, negative = sentiment(n_per_class=8)\n", + "\n", + "results = Pipeline(\n", + " [\n", + " Load(MuranoDataset.contrastive(positive=positive, negative=negative)),\n", + " Record(model, layers=\"all\", position=\"last\", batch_size=4),\n", + " SteeringVector(normalize=True),\n", + " ]\n", + ").run()\n", + "\n", + "print(\"best separating layer:\", results[keys.STEERING].best_layer)" + ] + }, + { + "cell_type": "markdown", + "id": "a38b7648", + "metadata": {}, + "source": [ + "## 3. Project it out of the weights\n", + "\n", + "`WeightAblation` reads the `steering` key, builds a projection operator from the\n", + "best layer's direction, and rewrites the token embedding, every attention\n", + "`q_proj` / `k_proj` / `v_proj` (which read the residual stream), every `o_proj`\n", + "(which writes to it), and every MLP `gate_proj` / `up_proj` / `down_proj`.\n", + "\n", + "It validates the architecture *before* touching anything, so an unsupported model\n", + "fails cleanly rather than ending up half-edited. It also generates from the clean\n", + "and the ablated model, so the comparison comes for free." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "0dae8941", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:34:37.946595Z", + "iopub.status.busy": "2026-07-10T11:34:37.946498Z", + "iopub.status.idle": "2026-07-10T11:34:47.485537Z", + "shell.execute_reply": "2026-07-10T11:34:47.485191Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "WeightAblation (clean): 0%| | 0/3 [00:00 results\n", + "```\n", + "\n", + "Every step declares which keys it `reads` and which it `writes`. `Pipeline` runs\n", + "them in order over a shared `Results` object, so each step sees everything the\n", + "earlier ones produced." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7116b2f6", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:30:33.755634Z", + "iopub.status.busy": "2026-07-10T11:30:33.755546Z", + "iopub.status.idle": "2026-07-10T11:30:33.757344Z", + "shell.execute_reply": "2026-07-10T11:30:33.757125Z" + } + }, + "outputs": [], + "source": [ + "from murano.dataset import MuranoDataset\n", + "from murano.steps import Intervene, Load, LoadPrompts, Record, SteeringVector\n", + "\n", + "dataset = MuranoDataset.contrastive(positive=positive, negative=negative)\n", + "\n", + "pipeline = Pipeline(\n", + " [\n", + " Load(dataset),\n", + " Record(model, layers=\"all\", position=\"last\", batch_size=8),\n", + " SteeringVector(normalize=True),\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "1dd6b77c", + "metadata": {}, + "source": [ + "`validate()` is a dry run. It walks the chain and checks that every key a step\n", + "reads was written by an earlier one, so a typo fails in milliseconds rather than\n", + "after a long forward pass." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "aea3230e", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:30:33.758177Z", + "iopub.status.busy": "2026-07-10T11:30:33.758102Z", + "iopub.status.idle": "2026-07-10T11:30:33.759638Z", + "shell.execute_reply": "2026-07-10T11:30:33.759415Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "keys the pipeline will produce: ['dataset', 'prompts', 'record', 'steering']\n" + ] + } + ], + "source": [ + "print(\"keys the pipeline will produce:\", pipeline.validate())" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "39f06c3e", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:30:33.760333Z", + "iopub.status.busy": "2026-07-10T11:30:33.760264Z", + "iopub.status.idle": "2026-07-10T11:30:33.778122Z", + "shell.execute_reply": "2026-07-10T11:30:33.777793Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "best layer: L4.resid_post\n", + "results now holds: Results(['dataset', 'prompts', 'record', 'steering'])\n" + ] + } + ], + "source": [ + "results = pipeline.run()\n", + "\n", + "print(\"best layer:\", results[keys.STEERING].best_layer)\n", + "print(\"results now holds:\", results)" + ] + }, + { + "cell_type": "markdown", + "id": "19cfa114", + "metadata": {}, + "source": [ + "`Intervene` can read the direction straight out of `Results` via `direction_key`,\n", + "so deriving and applying compose into a single pipeline.\n", + "\n", + "`direction_layers` chooses where to apply it, `alpha` how hard to push. Neither\n", + "has a setting that is right everywhere: applying every layer at once can\n", + "over-steer a deep model into degenerate text, while the best-*separating* layer\n", + "is not always a good place to intervene. `steering.ipynb` walks through both\n", + "failure modes.\n", + "\n", + "`LoadPrompts` replaces the prompts without touching the `steering` key." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "49a3a21f", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-10T11:30:33.778869Z", + "iopub.status.busy": "2026-07-10T11:30:33.778791Z", + "iopub.status.idle": "2026-07-10T11:30:33.915233Z", + "shell.execute_reply": "2026-07-10T11:30:33.914918Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "Intervene: 0%| | 0/2 [00:00 Results:\n", + " comparison = results[keys.INTERVENE]\n", + "\n", + " def mean_words(texts):\n", + " return sum(len(text.split()) for text in texts) / len(texts)\n", + "\n", + " results[\"mean_length\"] = {\n", + " \"clean\": mean_words(comparison.clean_generations),\n", + " \"steered\": mean_words(comparison.modified_generations),\n", + " }\n", + " return results\n", + "\n", + "\n", + "print(MeanGenerationLength()(steered)[\"mean_length\"])" + ] + }, + { + "cell_type": "markdown", + "id": "a8f291b6", + "metadata": {}, + "source": [ + "## What next\n", + "\n", + "- [`applications/steering.ipynb`](applications/steering.ipynb) takes section 3 further, with a real dataset and an evaluation metric.\n", + "- [`applications/probing.ipynb`](applications/probing.ipynb) asks *where* a concept is linearly readable.\n", + "- [`applications/custom_pipeline.ipynb`](applications/custom_pipeline.ipynb) combines several steps into an experiment no single step performs." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/reproductions/marks2023_geometry_of_truth.ipynb b/notebooks/reproductions/marks2023_geometry_of_truth.ipynb index 5859740..8e88b7d 100644 --- a/notebooks/reproductions/marks2023_geometry_of_truth.ipynb +++ b/notebooks/reproductions/marks2023_geometry_of_truth.ipynb @@ -77,7 +77,9 @@ ], "source": [ "# Install deps, enable Apple-Silicon fallback, clone datasets, make output dirs.\n", - "import os, subprocess, sys\n", + "import os\n", + "import subprocess\n", + "import sys\n", "\n", "# Let ops torch/nnterp haven't implemented for the Metal (MPS) backend fall back\n", "# to CPU instead of raising. Must precede the first MPS op; harmless on CUDA/CPU.\n", @@ -93,7 +95,9 @@ " except ImportError:\n", " pass\n", " try:\n", - " subprocess.run([sys.executable, \"-m\", \"pip\", \"install\", \"-q\", spec or pkg], check=True)\n", + " subprocess.run(\n", + " [sys.executable, \"-m\", \"pip\", \"install\", \"-q\", spec or pkg], check=True\n", + " )\n", " except Exception as e:\n", " msg = f\"could not install {pkg} ({e}).\"\n", " if fatal:\n", @@ -102,14 +106,23 @@ "\n", "\n", "ensure(\"murano\", \"murano-interp[probe,plot]\")\n", - "ensure(\"nbformat\") # required for inline plotly rendering\n", - "ensure(\"kaleido\") # required for figure -> PDF export\n", + "ensure(\"nbformat\") # required for inline plotly rendering\n", + "ensure(\"kaleido\") # required for figure -> PDF export\n", "ensure(\"ipywidgets\", fatal=False) # nicer tqdm bars; optional\n", "\n", "GOT_DIR = \"geometry-of-truth\"\n", "if not os.path.isdir(GOT_DIR):\n", - " subprocess.run([\"git\", \"clone\", \"--depth\", \"1\",\n", - " \"https://github.com/saprmarks/geometry-of-truth.git\", GOT_DIR], check=True)\n", + " subprocess.run(\n", + " [\n", + " \"git\",\n", + " \"clone\",\n", + " \"--depth\",\n", + " \"1\",\n", + " \"https://github.com/saprmarks/geometry-of-truth.git\",\n", + " GOT_DIR,\n", + " ],\n", + " check=True,\n", + " )\n", "\n", "PLOTS_DIR, TABLES_DIR = \"plots\", \"tables\"\n", "os.makedirs(PLOTS_DIR, exist_ok=True)\n", @@ -195,7 +208,9 @@ " except Exception as e:\n", " if DEVICE == \"cpu\":\n", " raise\n", - " print(f\"warning: could not load on {DEVICE} ({e});\\n falling back to CPU (slower but fits in RAM).\")\n", + " print(\n", + " f\"warning: could not load on {DEVICE} ({e});\\n falling back to CPU (slower but fits in RAM).\"\n", + " )\n", " return MuranoModel(model_ref, device_map=\"cpu\", dtype=dtype), \"cpu\"\n", "\n", "\n", @@ -209,10 +224,16 @@ "INTERVENE_LAYERS = list(range(8, PROBE_LAYER + 1))\n", "\n", "# Layers at which to show the truth direction emerging across depth.\n", - "EMERGENCE_LAYERS = sorted({int(round(x)) for x in np.linspace(2, model.n_layers - 2, 5)})\n", + "EMERGENCE_LAYERS = sorted(\n", + " {int(round(x)) for x in np.linspace(2, model.n_layers - 2, 5)}\n", + ")\n", "\n", - "print(f\"{MODEL_ID}: {model.n_layers} layers, d_model={model.d_model}, device={DEVICE}, dtype={dtype}\")\n", - "print(f\"probe layer={PROBE_LAYER} | intervene={INTERVENE_LAYERS} | emergence={EMERGENCE_LAYERS}\")\n", + "print(\n", + " f\"{MODEL_ID}: {model.n_layers} layers, d_model={model.d_model}, device={DEVICE}, dtype={dtype}\"\n", + ")\n", + "print(\n", + " f\"probe layer={PROBE_LAYER} | intervene={INTERVENE_LAYERS} | emergence={EMERGENCE_LAYERS}\"\n", + ")\n", "\n", "\n", "def get_pcs(X, k=2):\n", @@ -282,7 +303,14 @@ "source": [ "import hashlib\n", "\n", - "CORE = [\"cities\", \"neg_cities\", \"larger_than\", \"smaller_than\", \"sp_en_trans\", \"neg_sp_en_trans\"]\n", + "CORE = [\n", + " \"cities\",\n", + " \"neg_cities\",\n", + " \"larger_than\",\n", + " \"smaller_than\",\n", + " \"sp_en_trans\",\n", + " \"neg_sp_en_trans\",\n", + "]\n", "\n", "\n", "def _seed(name):\n", @@ -311,10 +339,16 @@ " key = (name, tuple(layers))\n", " if key not in _store_cache:\n", " true, false = load_tf(name)\n", - " _store_cache[key] = Pipeline([\n", - " Load(LabeledDataset(texts=true + false, labels=[1] * len(true) + [0] * len(false))),\n", - " Record(model, layers=list(layers), position=\"last\", batch_size=BATCH),\n", - " ]).run()[\"record\"]\n", + " _store_cache[key] = Pipeline(\n", + " [\n", + " Load(\n", + " LabeledDataset(\n", + " texts=true + false, labels=[1] * len(true) + [0] * len(false)\n", + " )\n", + " ),\n", + " Record(model, layers=list(layers), position=\"last\", batch_size=BATCH),\n", + " ]\n", + " ).run()[\"record\"]\n", " return _store_cache[key]\n", "\n", "\n", @@ -1389,8 +1423,13 @@ " X = X - X.mean(0)\n", " proj = X @ get_pcs(X, k=2)\n", " y = store.labels.float().cpu()\n", - " return pd.DataFrame({\"PC1\": proj[:, 0], \"PC2\": proj[:, 1],\n", - " \"truth\": [\"true\" if v == 1 else \"false\" for v in y]})\n", + " return pd.DataFrame(\n", + " {\n", + " \"PC1\": proj[:, 0],\n", + " \"PC2\": proj[:, 1],\n", + " \"truth\": [\"true\" if v == 1 else \"false\" for v in y],\n", + " }\n", + " )\n", "\n", "\n", "fig = make_subplots(rows=1, cols=len(PANEL_SETS), subplot_titles=PANEL_SETS)\n", @@ -1398,13 +1437,33 @@ " fr = pca_frame(probe_stores[name], PROBE_LAYER).sample(frac=1, random_state=0)\n", " for truth, colr in [(\"true\", \"#3b6bd6\"), (\"false\", \"#d64545\")]:\n", " sub = fr[fr.truth == truth]\n", - " fig.add_trace(go.Scatter(x=sub.PC1, y=sub.PC2, mode=\"markers\", name=truth,\n", - " marker=dict(color=colr, size=5), showlegend=(j == 1)),\n", - " row=1, col=j)\n", + " fig.add_trace(\n", + " go.Scatter(\n", + " x=sub.PC1,\n", + " y=sub.PC2,\n", + " mode=\"markers\",\n", + " name=truth,\n", + " marker=dict(color=colr, size=5),\n", + " showlegend=(j == 1),\n", + " ),\n", + " row=1,\n", + " col=j,\n", + " )\n", "# No title; legend overlaid in the bottom-right of the rightmost panel.\n", - "fig.update_layout(width=920, height=300, margin=dict(l=30, r=20, t=30, b=30),\n", - " legend=dict(x=1, y=0, xanchor=\"right\", yanchor=\"bottom\", font=dict(size=16),\n", - " bgcolor=\"rgba(255,255,255,0.65)\", borderwidth=0))\n", + "fig.update_layout(\n", + " width=920,\n", + " height=300,\n", + " margin=dict(l=30, r=20, t=30, b=30),\n", + " legend=dict(\n", + " x=1,\n", + " y=0,\n", + " xanchor=\"right\",\n", + " yanchor=\"bottom\",\n", + " font=dict(size=16),\n", + " bgcolor=\"rgba(255,255,255,0.65)\",\n", + " borderwidth=0,\n", + " ),\n", + ")\n", "fig.update_annotations(font_size=20) # larger dataset (subplot) titles\n", "save_pdf(fig, \"fig1_pca_separation.pdf\")\n", "fig" @@ -2373,22 +2432,47 @@ " proj = X @ get_pcs(X, k=2) # per-dataset PCs, as the paper plots each pair\n", " y = store.labels.float().cpu()\n", " for i in range(len(y)):\n", - " rows.append(dict(PC1=float(proj[i, 0]), PC2=float(proj[i, 1]),\n", - " cls=f\"{ds}: {'true' if y[i]==1 else 'false'}\"))\n", + " rows.append(\n", + " dict(\n", + " PC1=float(proj[i, 0]),\n", + " PC2=float(proj[i, 1]),\n", + " cls=f\"{ds}: {'true' if y[i] == 1 else 'false'}\",\n", + " )\n", + " )\n", " return pd.DataFrame(rows)\n", "\n", "\n", "fr = four_class_frame().sample(frac=1, random_state=0)\n", - "cmap = {\"cities: true\": \"#3b6bd6\", \"cities: false\": \"#d64545\",\n", - " \"neg_cities: true\": \"#e8b800\", \"neg_cities: false\": \"#7a4fd6\"}\n", - "fig = px.scatter(fr, x=\"PC1\", y=\"PC2\", color=\"cls\", color_discrete_map=cmap,\n", - " title=\"cities vs neg_cities\")\n", + "cmap = {\n", + " \"cities: true\": \"#3b6bd6\",\n", + " \"cities: false\": \"#d64545\",\n", + " \"neg_cities: true\": \"#e8b800\",\n", + " \"neg_cities: false\": \"#7a4fd6\",\n", + "}\n", + "fig = px.scatter(\n", + " fr,\n", + " x=\"PC1\",\n", + " y=\"PC2\",\n", + " color=\"cls\",\n", + " color_discrete_map=cmap,\n", + " title=\"cities vs neg_cities\",\n", + ")\n", "# Centered title; legend overlaid in the top-right of the figure.\n", - "fig.update_layout(width=620, height=460, legend_title_text=\"\",\n", - " title=dict(x=0.5, xanchor=\"center\"),\n", - " margin=dict(l=30, r=20, t=40, b=30),\n", - " legend=dict(x=0.99, y=0.99, xanchor=\"right\", yanchor=\"top\",\n", - " bgcolor=\"rgba(255,255,255,0.65)\", borderwidth=0))\n", + "fig.update_layout(\n", + " width=620,\n", + " height=460,\n", + " legend_title_text=\"\",\n", + " title=dict(x=0.5, xanchor=\"center\"),\n", + " margin=dict(l=30, r=20, t=40, b=30),\n", + " legend=dict(\n", + " x=0.99,\n", + " y=0.99,\n", + " xanchor=\"right\",\n", + " yanchor=\"top\",\n", + " bgcolor=\"rgba(255,255,255,0.65)\",\n", + " borderwidth=0,\n", + " ),\n", + ")\n", "save_pdf(fig, \"fig3c_negation.pdf\")\n", "fig" ] @@ -2698,7 +2782,7 @@ }, "showarrow": false, "text": "layer 38", - "x": 0.9159999999999999, + "x": 0.916, "xanchor": "center", "xref": "paper", "y": 1, @@ -3587,20 +3671,43 @@ ], "source": [ "emb = record_at(\"cities\", EMERGENCE_LAYERS)\n", - "fig = make_subplots(rows=1, cols=len(EMERGENCE_LAYERS),\n", - " subplot_titles=[f\"layer {l}\" for l in EMERGENCE_LAYERS])\n", + "fig = make_subplots(\n", + " rows=1,\n", + " cols=len(EMERGENCE_LAYERS),\n", + " subplot_titles=[f\"layer {n}\" for n in EMERGENCE_LAYERS],\n", + ")\n", "for j, layer in enumerate(EMERGENCE_LAYERS, start=1):\n", " fr = pca_frame(emb, layer).sample(frac=1, random_state=0)\n", " for truth, colr in [(\"true\", \"#3b6bd6\"), (\"false\", \"#d64545\")]:\n", " sub = fr[fr.truth == truth]\n", - " fig.add_trace(go.Scatter(x=sub.PC1, y=sub.PC2, mode=\"markers\", name=truth,\n", - " marker=dict(color=colr, size=4), showlegend=(j == 1)),\n", - " row=1, col=j)\n", + " fig.add_trace(\n", + " go.Scatter(\n", + " x=sub.PC1,\n", + " y=sub.PC2,\n", + " mode=\"markers\",\n", + " name=truth,\n", + " marker=dict(color=colr, size=4),\n", + " showlegend=(j == 1),\n", + " ),\n", + " row=1,\n", + " col=j,\n", + " )\n", "# No title; keep only the per-layer subtitles, legend overlaid bottom-right.\n", - "fig.update_layout(width=1050, height=220, margin=dict(l=20, r=20, t=26, b=20),\n", - " legend=dict(x=1, y=0, xanchor=\"right\", yanchor=\"bottom\",\n", - " bgcolor=\"rgba(255,255,255,0.65)\", borderwidth=0))\n", - "fig.update_xaxes(showticklabels=False); fig.update_yaxes(showticklabels=False)\n", + "fig.update_layout(\n", + " width=1050,\n", + " height=220,\n", + " margin=dict(l=20, r=20, t=26, b=20),\n", + " legend=dict(\n", + " x=1,\n", + " y=0,\n", + " xanchor=\"right\",\n", + " yanchor=\"bottom\",\n", + " bgcolor=\"rgba(255,255,255,0.65)\",\n", + " borderwidth=0,\n", + " ),\n", + ")\n", + "fig.update_xaxes(showticklabels=False)\n", + "fig.update_yaxes(showticklabels=False)\n", "save_pdf(fig, \"fig7_pca_emergence.pdf\")\n", "fig" ] @@ -5301,10 +5408,16 @@ "source": [ "from sklearn.linear_model import LogisticRegression\n", "\n", - "MEDLEYS = {\"cities+neg_cities\": [\"cities\", \"neg_cities\"],\n", - " \"larger_than+smaller_than\": [\"larger_than\", \"smaller_than\"]}\n", - "COLS = [(\"LR\", \"cities+neg_cities\"), (\"LR\", \"larger_than+smaller_than\"),\n", - " (\"MM\", \"cities+neg_cities\"), (\"MM\", \"larger_than+smaller_than\")]\n", + "MEDLEYS = {\n", + " \"cities+neg_cities\": [\"cities\", \"neg_cities\"],\n", + " \"larger_than+smaller_than\": [\"larger_than\", \"smaller_than\"],\n", + "}\n", + "COLS = [\n", + " (\"LR\", \"cities+neg_cities\"),\n", + " (\"LR\", \"larger_than+smaller_than\"),\n", + " (\"MM\", \"cities+neg_cities\"),\n", + " (\"MM\", \"larger_than+smaller_than\"),\n", + "]\n", "\n", "# Paper's generalization protocol (generalization.ipynb): split the two training-\n", "# medley datasets 80/20, fit probes on the pooled 80% train half, then score each\n", @@ -5349,7 +5462,8 @@ " for d in members:\n", " X, y = _centered(d)\n", " m = _train_mask(len(y))\n", - " train_X.append(X[m]); train_y.append(y[m])\n", + " train_X.append(X[m])\n", + " train_y.append(y[m])\n", " val[d] = (X[~m], y[~m])\n", " Xtr, ytr = torch.cat(train_X), torch.cat(train_y)\n", "\n", @@ -5378,12 +5492,12 @@ "# [LR / cities+neg_cities, LR / larger_than+smaller_than,\n", "# MM / cities+neg_cities, MM / larger_than+smaller_than].\n", "PAPER = { # test set -> [LR/cn, LR/ls, MM/cn, MM/ls]\n", - " \"cities\": [100, 84, 100, 89],\n", - " \"neg_cities\": [100, 99, 100, 97],\n", - " \"larger_than\": [ 88, 100, 93, 100],\n", - " \"smaller_than\": [ 86, 100, 86, 100],\n", - " \"sp_en_trans\": [100, 95, 98, 97],\n", - " \"neg_sp_en_trans\": [ 94, 81, 96, 85],\n", + " \"cities\": [100, 84, 100, 89],\n", + " \"neg_cities\": [100, 99, 100, 97],\n", + " \"larger_than\": [88, 100, 93, 100],\n", + " \"smaller_than\": [86, 100, 86, 100],\n", + " \"sp_en_trans\": [100, 95, 98, 97],\n", + " \"neg_sp_en_trans\": [94, 81, 96, 85],\n", "}\n", "PAPER_M = np.array([PAPER[t] for t in CORE], dtype=float)\n", "\n", @@ -5396,21 +5510,51 @@ "fig = make_subplots(rows=1, cols=2, horizontal_spacing=0.03)\n", "for c, M in enumerate([PAPER_M, REPRO], start=1):\n", " sfx = \"\" if c == 1 else \"2\"\n", - " fig.add_trace(go.Heatmap(z=M, x=xpos, y=CORE, zmin=0, zmax=100,\n", - " colorscale=\"Blues\", showscale=(c == 2),\n", - " colorbar=dict(title=\"acc %\")), row=1, col=c)\n", + " fig.add_trace(\n", + " go.Heatmap(\n", + " z=M,\n", + " x=xpos,\n", + " y=CORE,\n", + " zmin=0,\n", + " zmax=100,\n", + " colorscale=\"Blues\",\n", + " showscale=(c == 2),\n", + " colorbar=dict(title=\"acc %\"),\n", + " ),\n", + " row=1,\n", + " col=c,\n", + " )\n", " for i in range(len(CORE)):\n", " for j in range(len(COLS)):\n", - " fig.add_annotation(x=xpos[j], y=CORE[i], text=f\"{M[i, j]:.0f}\",\n", - " showarrow=False, row=1, col=c,\n", - " font=dict(size=13, color=\"white\" if M[i, j] >= 55 else \"#222\"))\n", + " fig.add_annotation(\n", + " x=xpos[j],\n", + " y=CORE[i],\n", + " text=f\"{M[i, j]:.0f}\",\n", + " showarrow=False,\n", + " row=1,\n", + " col=c,\n", + " font=dict(size=13, color=\"white\" if M[i, j] >= 55 else \"#222\"),\n", + " )\n", " # Panel title and the LR / MM group headers, centered over their two columns.\n", - " fig.add_annotation(x=0.5, y=1.22, xref=f\"x{sfx} domain\", yref=f\"y{sfx} domain\",\n", - " text=f\"{panel_titles[c - 1]}\", showarrow=False,\n", - " font=dict(size=20))\n", + " fig.add_annotation(\n", + " x=0.5,\n", + " y=1.22,\n", + " xref=f\"x{sfx} domain\",\n", + " yref=f\"y{sfx} domain\",\n", + " text=f\"{panel_titles[c - 1]}\",\n", + " showarrow=False,\n", + " font=dict(size=20),\n", + " )\n", " for label, xc in [(\"LR\", 0.5), (\"MM\", 2.5)]:\n", - " fig.add_annotation(x=xc, y=1.1, xref=f\"x{sfx}\", yref=f\"y{sfx} domain\",\n", - " text=f\"{label}\", showarrow=False, font=dict(size=17))\n", + " fig.add_annotation(\n", + " x=xc,\n", + " y=1.1,\n", + " xref=f\"x{sfx}\",\n", + " yref=f\"y{sfx} domain\",\n", + " text=f\"{label}\",\n", + " showarrow=False,\n", + " font=dict(size=17),\n", + " )\n", "\n", "fig.update_layout(width=860, height=470, margin=dict(l=115, r=70, t=84, b=96))\n", "fig.update_xaxes(tickvals=xpos, ticktext=col_meds, tickfont=dict(size=11))\n", @@ -5480,8 +5624,10 @@ "\n", "rows = []\n", "for t in CORE:\n", - " rows.append(f\" {esc(t):22s} & {paper_lr[t]:.0f} & {paper_mm[t]:.0f} & \"\n", - " f\"{repro_lr[t]:.0f} & {repro_mm[t]:.0f} \\\\\\\\\")\n", + " rows.append(\n", + " f\" {esc(t):22s} & {paper_lr[t]:.0f} & {paper_mm[t]:.0f} & \"\n", + " f\"{repro_lr[t]:.0f} & {repro_mm[t]:.0f} \\\\\\\\\"\n", + " )\n", "avg_p_lr = np.mean([paper_lr[t] for t in HELDOUT])\n", "avg_p_mm = np.mean([paper_mm[t] for t in HELDOUT])\n", "avg_r_lr = np.mean([repro_lr[t] for t in HELDOUT])\n", @@ -5566,21 +5712,32 @@ "# exactly (true_mean - false_mean).\n", "t_c, f_c = load_tf(\"cities\")\n", "t_n, f_n = load_tf(\"neg_cities\")\n", - "direction = (Pipeline([\n", - " Load(MuranoDataset(positive_texts=t_c + t_n, negative_texts=f_c + f_n)),\n", - " Record(model, layers=[PROBE_LAYER], position=\"last\", batch_size=BATCH),\n", - " SteeringVector(normalize=False),\n", - "]).run()[\"steering\"].direction_per_layer[(PROBE_LAYER, \"residual\")].to(DEVICE, dtype))\n", + "direction = (\n", + " Pipeline(\n", + " [\n", + " Load(MuranoDataset(positive_texts=t_c + t_n, negative_texts=f_c + f_n)),\n", + " Record(model, layers=[PROBE_LAYER], position=\"last\", batch_size=BATCH),\n", + " SteeringVector(normalize=False),\n", + " ]\n", + " )\n", + " .run()[\"steering\"]\n", + " .direction_per_layer[(PROBE_LAYER, \"residual\")]\n", + " .to(DEVICE, dtype)\n", + ")\n", "\n", "# Paper's 4-shot prompt for sp_en_trans (interventions.py, llama-2-13b entry).\n", - "prompt = (\"The Spanish word 'jirafa' means 'giraffe'. This statement is: TRUE\\n\"\n", - " \"The Spanish word 'escribir' means 'to write'. This statement is: TRUE\\n\"\n", - " \"The Spanish word 'gato' means 'cat'. This statement is: TRUE\\n\"\n", - " \"The Spanish word 'aire' means 'silver'. This statement is: FALSE\\n\")\n", + "prompt = (\n", + " \"The Spanish word 'jirafa' means 'giraffe'. This statement is: TRUE\\n\"\n", + " \"The Spanish word 'escribir' means 'to write'. This statement is: TRUE\\n\"\n", + " \"The Spanish word 'gato' means 'cat'. This statement is: TRUE\\n\"\n", + " \"The Spanish word 'aire' means 'silver'. This statement is: FALSE\\n\"\n", + ")\n", "true_id = model.tokenizer.encode(\" TRUE\")[-1]\n", "false_id = model.tokenizer.encode(\" FALSE\")[-1]\n", "LEN_SUFFIX = len(model.tokenizer.encode(\"This statement is:\"))\n", - "model.tokenizer.padding_side = \"left\" # keep the suffix at the sequence end under padding\n", + "model.tokenizer.padding_side = (\n", + " \"left\" # keep the suffix at the sequence end under padding\n", + ")\n", "\n", "# Eval set: sp_en_trans, split by ground-truth label (the paper intervenes on the\n", "# true and false subsets separately). Few-shot statements are excluded, as in the\n", @@ -5601,36 +5758,53 @@ " return act\n", " act = act.clone()\n", " for offset in (-1, 0): # the token before the period, and the period\n", - " act[:, -LEN_SUFFIX + offset, :] += (direction if mode == \"add\" else -direction)\n", + " act[:, -LEN_SUFFIX + offset, :] += (\n", + " direction if mode == \"add\" else -direction\n", + " )\n", " return act\n", "\n", " outs = []\n", " for i in range(0, len(queries), BATCH):\n", - " toks = model.tokenizer(queries[i:i + BATCH], return_tensors=\"pt\",\n", - " padding=True, return_token_type_ids=False)\n", - " logits = model.forward_logits(toks, fn=fn, layers=INTERVENE_LAYERS, modules=\"residual\")\n", + " toks = model.tokenizer(\n", + " queries[i : i + BATCH],\n", + " return_tensors=\"pt\",\n", + " padding=True,\n", + " return_token_type_ids=False,\n", + " )\n", + " logits = model.forward_logits(\n", + " toks, fn=fn, layers=INTERVENE_LAYERS, modules=\"residual\"\n", + " )\n", " probs = logits[:, -1, :].float().softmax(-1)\n", " outs.append((probs[:, true_id] - probs[:, false_id]).detach().cpu())\n", " return torch.cat(outs).mean().item()\n", "\n", "\n", "# The paper's four probability-difference terms (Sec. 6.1):\n", - "PD_plus = pd_diff(true_stmts, \"none\") # PD+ : true statements, no intervention\n", - "PD_minus = pd_diff(false_stmts, \"none\") # PD- : false statements, no intervention\n", - "PD_star_minus = pd_diff(false_stmts, \"add\") # PD*- : false + dir (push false -> true)\n", - "PD_star_plus = pd_diff(true_stmts, \"subtract\") # PD*+ : true - dir (push true -> false)\n", + "PD_plus = pd_diff(true_stmts, \"none\") # PD+ : true statements, no intervention\n", + "PD_minus = pd_diff(false_stmts, \"none\") # PD- : false statements, no intervention\n", + "PD_star_minus = pd_diff(false_stmts, \"add\") # PD*- : false + dir (push false -> true)\n", + "PD_star_plus = pd_diff(\n", + " true_stmts, \"subtract\"\n", + ") # PD*+ : true - dir (push true -> false)\n", "\n", "# Normalized Indirect Effect: the fraction of the natural true/false gap the\n", "# intervention closes (NIE=1: flips the label as confidently as a genuine one).\n", - "NIE_ft = (PD_star_minus - PD_minus) / (PD_plus - PD_minus) # false -> true (add)\n", - "NIE_tf = (PD_star_plus - PD_plus) / (PD_minus - PD_plus) # true -> false (subtract)\n", + "NIE_ft = (PD_star_minus - PD_minus) / (PD_plus - PD_minus) # false -> true (add)\n", + "NIE_tf = (PD_star_plus - PD_plus) / (PD_minus - PD_plus) # true -> false (subtract)\n", "\n", - "print(\"intervene layers:\", INTERVENE_LAYERS,\n", - " f\"| {len(true_stmts)} true / {len(false_stmts)} false eval statements\")\n", + "print(\n", + " \"intervene layers:\",\n", + " INTERVENE_LAYERS,\n", + " f\"| {len(true_stmts)} true / {len(false_stmts)} false eval statements\",\n", + ")\n", "print(f\"PD+ (true, none) = {PD_plus:+.3f}\")\n", "print(f\"PD- (false, none) = {PD_minus:+.3f}\")\n", - "print(f\"PD*- (false, +dir) = {PD_star_minus:+.3f} -> NIE(false->true) = {NIE_ft:.2f}\")\n", - "print(f\"PD*+ (true, -dir) = {PD_star_plus:+.3f} -> NIE(true->false) = {NIE_tf:.2f}\")" + "print(\n", + " f\"PD*- (false, +dir) = {PD_star_minus:+.3f} -> NIE(false->true) = {NIE_ft:.2f}\"\n", + ")\n", + "print(\n", + " f\"PD*+ (true, -dir) = {PD_star_plus:+.3f} -> NIE(true->false) = {NIE_tf:.2f}\"\n", + ")" ] }, { diff --git a/notebooks/sae/02_feature_steering.ipynb b/notebooks/sae/02_feature_steering.ipynb deleted file mode 100644 index f65221a..0000000 --- a/notebooks/sae/02_feature_steering.ipynb +++ /dev/null @@ -1,763 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "0d9d7166", - "metadata": {}, - "source": [ - "# Steering generations with an SAE feature\n", - "\n", - "Once you can *read* SAE features (see [01_basics.ipynb](01_basics.ipynb)), you can also *write* with them: add a feature's **decoder direction** to the residual stream during generation, and the model is nudged toward that concept, even when answering unrelated questions.\n", - "\n", - "This is the idea behind Anthropic's [Golden Gate Claude](https://transformer-circuits.pub/2024/scaling-monosemanticity/) from *Scaling Monosemanticity*. We reproduce it on Gemma 2 2B with a gemma-scope SAE, steering toward a **California** feature.\n", - "\n", - "The workflow:\n", - "\n", - "1. **Encode** a few prompts that mention the concept.\n", - "2. **Pick** the feature whose decoder direction promotes the concept, using the logit lens from notebook 01.\n", - "3. **Steer** with `sae_steer`, which adds the feature's direction at the exact layer the SAE was trained on and returns a clean-vs-steered comparison.\n", - "\n", - "If you haven't worked through [01_basics.ipynb](01_basics.ipynb), do that first." - ] - }, - { - "cell_type": "markdown", - "id": "14062fe1", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "Pick the model and SAE. As in notebook 01, `SAEEncode` reads the target layer from the SAE's own config." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "47950ac2", - "metadata": { - "execution": { - "iopub.execute_input": "2026-06-30T10:06:40.107526Z", - "iopub.status.busy": "2026-06-30T10:06:40.107185Z", - "iopub.status.idle": "2026-06-30T10:08:57.834270Z", - "shell.execute_reply": "2026-06-30T10:08:57.833511Z" - } - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "b2a1cbd8549544029204a074f9b728c7", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Loading checkpoint shards: 0%| | 0/2 [00:00 2\n", - " and token not in STOPWORDS\n", - " and any(char.isalpha() for char in token)\n", - " for raw, token, pos in zip(raw_tokens, clean_tokens, positions, strict=True)\n", - " ]\n", - " ).reshape(mask.shape)\n", - " mask = mask & content\n", - " if not bool(mask.any()):\n", - " raise ValueError(\"no readable content tokens remain after filtering\")\n", - "\n", - " # Build smoothed label-token weights directly from this SST-2 slice.\n", - " flat_mask = mask.reshape(-1)\n", - " labels_by_token = labels_t[:, None].expand(n_examples, seq).reshape(-1)\n", - " token_counts: dict[str, list[int]] = {}\n", - " for token, label, ok in zip(\n", - " clean_tokens, labels_by_token.tolist(), flat_mask.tolist(), strict=True\n", - " ):\n", - " if ok:\n", - " token_counts.setdefault(token, [0, 0])[int(label)] += 1\n", - " vocab = max(1, len(token_counts))\n", - " totals = [sum(pair[label] for pair in token_counts.values()) for label in (0, 1)]\n", - " label_weight = torch.zeros(n_examples * seq)\n", - " for i, token in enumerate(clean_tokens):\n", - " if not bool(flat_mask[i]):\n", - " continue\n", - " neg_count, pos_count = token_counts[token]\n", - " log_odds = torch.log(torch.tensor((pos_count + 1) / (totals[1] + vocab)))\n", - " log_odds -= torch.log(torch.tensor((neg_count + 1) / (totals[0] + vocab)))\n", - " support = min(max(pos_count, neg_count), 4) / 4\n", - " if abs(float(log_odds)) >= 0.5:\n", - " label_weight[i] = float(log_odds) * support\n", - "\n", - " # Score features by label-token contribution plus strict sentence-level selectivity.\n", - " token_counts_by_row = mask.sum(dim=1).clamp_min(1)\n", - " pooled = (acts * mask.to(acts.dtype).unsqueeze(-1)).sum(dim=1)\n", - " pooled = pooled / token_counts_by_row.to(acts.dtype).unsqueeze(-1)\n", - " pos, neg = labels_t == 1, labels_t == 0\n", - " pos_mean, neg_mean = pooled[pos].mean(0), pooled[neg].mean(0)\n", - " delta = pos_mean - neg_mean\n", - " effect = delta / pooled.std(0, unbiased=False).clamp_min(1e-6)\n", - " pos_nz = (pooled[pos] > 0).sum(0)\n", - " neg_nz = (pooled[neg] > 0).sum(0)\n", - " pos_rate = pos_nz / pos.sum()\n", - " neg_rate = neg_nz / neg.sum()\n", - " flat_acts = acts.reshape(-1, n_features)\n", - "\n", - " rows = []\n", - " per_sign = max(3, TOP_FEATURES // 2)\n", - " for assoc, assoc_label, weight in (\n", - " (\"positive\", 1, label_weight.clamp_min(0)),\n", - " (\"negative\", 0, (-label_weight).clamp_min(0)),\n", - " ):\n", - " anchor_mask = flat_mask & (weight > 0)\n", - " side_mask = anchor_mask & (labels_by_token == assoc_label)\n", - " if not bool(side_mask.any()):\n", - " continue\n", - " class_gap = (pos_rate - neg_rate) if assoc_label else (neg_rate - pos_rate)\n", - " other_rate = neg_rate if assoc_label else pos_rate\n", - " signed_effect = effect if assoc_label else -effect\n", - " anchor_score = (flat_acts[side_mask] * weight[side_mask, None]).sum(0)\n", - " anchor_score = anchor_score / weight[side_mask].sum().clamp_min(1e-6)\n", - " score_gap = class_gap.clamp_min(0.05)\n", - " score_effect = signed_effect.clamp_min(0.05)\n", - " base_score = anchor_score * score_gap * score_effect / (1 + other_rate)\n", - " assoc_rows = []\n", - " accepted_features = set()\n", - " for min_effect, min_gap, max_other_rate, min_purity in threshold_passes:\n", - " keep = (\n", - " (signed_effect >= min_effect)\n", - " & (class_gap >= min_gap)\n", - " & (other_rate <= max_other_rate)\n", - " )\n", - " score = base_score.masked_fill(~keep, -torch.inf)\n", - "\n", - " # Keep strict passes first; later passes only fill missing slots.\n", - " for feature_id in torch.argsort(score, descending=True)[: per_sign * 80]:\n", - " feature_id = int(feature_id)\n", - " if feature_id in accepted_features:\n", - " continue\n", - " if (\n", - " not torch.isfinite(score[feature_id])\n", - " or float(score[feature_id]) <= 0\n", - " ):\n", - " continue\n", - " contrib = flat_acts[:, feature_id] * weight\n", - " top_all = (\n", - " contrib.masked_fill(~anchor_mask, -torch.inf)\n", - " .topk(min(K_CONTEXTS, int(anchor_mask.sum())))\n", - " .indices\n", - " )\n", - " purity = float(\n", - " (labels_by_token[top_all] == assoc_label).float().mean().item()\n", - " )\n", - " vals, idxs = contrib.masked_fill(~side_mask, -torch.inf).topk(12)\n", - " hits, plot_examples, seen_hits, seen_tokens = [], [], set(), set()\n", - " for val, flat_i in zip(vals.tolist(), idxs.tolist(), strict=True):\n", - " if val <= 0:\n", - " continue\n", - " n, j = divmod(int(flat_i), seq)\n", - " token = tokenizer.decode([int(tokens_cpu[n, j])]).strip()\n", - " text = store.texts[n].strip()\n", - " key = (token.lower(), text)\n", - " if key in seen_hits:\n", - " continue\n", - " seen_hits.add(key)\n", - " seen_tokens.add(token.lower())\n", - " hits.append(f\"{token!r} ({val:.2f}): {text}\")\n", - "\n", - " # Plot contribution evidence, not raw top activations.\n", - " valid = store.attention_mask[n].bool().cpu()\n", - " if tokenizer.bos_token_id is not None:\n", - " valid = valid & (tokens_cpu[n] != tokenizer.bos_token_id)\n", - " idx_map = [idx for idx, ok in enumerate(valid.tolist()) if ok]\n", - " ex_tokens = [\n", - " tokenizer.decode([int(tokens_cpu[n, idx])]) for idx in idx_map\n", - " ]\n", - " ex_values = [\n", - " float(acts[n, idx, feature_id] * float(weight[n * seq + idx]))\n", - " for idx in idx_map\n", - " ]\n", - " local_max = idx_map.index(j)\n", - " plot_examples.append(\n", - " {\n", - " \"tokens\": ex_tokens,\n", - " \"activations\": ex_values,\n", - " \"max_activation\": float(val),\n", - " \"max_token\": tokenizer.decode([int(tokens_cpu[n, j])]),\n", - " \"max_activation_token_index\": local_max,\n", - " }\n", - " )\n", - " if len(hits) == 3:\n", - " break\n", - " if purity < min_purity or len(hits) < 2 or len(seen_tokens) < 2:\n", - " continue\n", - " assoc_rows.append(\n", - " {\n", - " \"feature_id\": feature_id,\n", - " \"assoc\": assoc,\n", - " \"score\": float(score[feature_id]),\n", - " \"delta\": float(delta[feature_id]),\n", - " \"effect\": float(effect[feature_id]),\n", - " \"pos_nz\": int(pos_nz[feature_id]),\n", - " \"neg_nz\": int(neg_nz[feature_id]),\n", - " \"pos_rate\": float(pos_rate[feature_id]),\n", - " \"neg_rate\": float(neg_rate[feature_id]),\n", - " \"purity\": purity,\n", - " \"hits\": hits,\n", - " \"plot_examples\": plot_examples,\n", - " }\n", - " )\n", - " accepted_features.add(feature_id)\n", - " if len(assoc_rows) >= per_sign:\n", - " break\n", - " if len(assoc_rows) >= per_sign:\n", - " break\n", - " rows.extend(assoc_rows)\n", - "\n", - " rows = sorted(rows, key=lambda row: (row[\"assoc\"], -row[\"score\"]))\n", - " for assoc in (\"positive\", \"negative\"):\n", - " rank = 1\n", - " for row in rows:\n", - " if row[\"assoc\"] == assoc:\n", - " row[\"rank\"] = rank\n", - " rank += 1\n", - " rows = sorted(rows, key=lambda row: (row[\"assoc\"] != \"positive\", row[\"rank\"]))\n", - " return rows, {\"0\": int(counts[0]), \"1\": int(counts[1])}" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "a5f8eb6d", - "metadata": {}, - "outputs": [], - "source": [ - "# Load SST-2 and encode SAE activations through the existing Murano pipeline.\n", - "import warnings\n", - "\n", - "from murano.model import MuranoModel\n", - "from murano.pipeline import Pipeline\n", - "from murano.steps import Load, SAEEncode\n", - "\n", - "warnings.filterwarnings(\n", - " \"ignore\",\n", - " message=r\"\\s*This SAE has non-empty model_from_pretrained_kwargs\\.\",\n", - " category=UserWarning,\n", - " module=r\"sae_lens\\.saes\\.sae\",\n", - ")\n", - "\n", - "dataset = LabeledDataset.from_hub(\n", - " DATASET,\n", - " text_column=\"sentence\",\n", - " label_column=\"label\",\n", - " split=SPLIT,\n", - " n=N_EXAMPLES,\n", - " label_names=[\"negative\", \"positive\"],\n", - ")\n", - "model = MuranoModel(MODEL_ID)\n", - "sae_encode = SAEEncode(model, release=SAE_RELEASE, sae_id=SAE_ID)\n", - "results = Pipeline([Load(dataset), sae_encode]).run()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "b4df7986", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'assoc': 'positive',\n", - " 'rank': 1,\n", - " 'feature_id': 2259,\n", - " 'score': 0.017903897911310196,\n", - " 'effect': 0.24502712488174438,\n", - " 'purity': 1.0,\n", - " 'hits': [\"'cinema' (18.60): this cinema verite speculation on the assassination of john f. kennedy may have been inspired by blair witch , but it takes its techniques into such fresh territory that the film never feels derivative\",\n", - " \"'young' (13.30): as a young woman of great charm , generosity and diplomacy\",\n", - " \"'stuff' (13.09): cool stuff packed into espn 's ultimate x.\"]},\n", - " {'assoc': 'positive',\n", - " 'rank': 2,\n", - " 'feature_id': 16587,\n", - " 'score': 0.012702537700533867,\n", - " 'effect': 0.13122591376304626,\n", - " 'purity': 0.8999999761581421,\n", - " 'hits': [\"'manages' (25.84): khouri manages , with terrific flair , to keep the extremes of screwball farce and blood-curdling family intensity on one continuum .\",\n", - " \"'terrific' (25.37): is terrific as rachel\",\n", - " \"'rock' (24.78): the rock 's fighting skills are more in line with steven seagal\"]},\n", - " {'assoc': 'positive',\n", - " 'rank': 3,\n", - " 'feature_id': 920,\n", - " 'score': 0.012323752976953983,\n", - " 'effect': 0.10797657072544098,\n", - " 'purity': 0.8999999761581421,\n", - " 'hits': [\"'small' (23.26): enables shafer to navigate spaces both large ... and small ... with considerable aplomb\",\n", - " \"'manages' (23.15): one of those rare films that seems as though it was written for no one , but somehow manages to convince almost everyone that it was put on the screen , just for them .\",\n", - " \"'performances' (22.42): the direction has a fluid , no-nonsense authority , and the performances by harris , phifer and cam ` ron seal the deal .\"]},\n", - " {'assoc': 'positive',\n", - " 'rank': 4,\n", - " 'feature_id': 13626,\n", - " 'score': 0.011534028686583042,\n", - " 'effect': 0.14401638507843018,\n", - " 'purity': 1.0,\n", - " 'hits': [\"'entertainment' (24.75): acquires an undeniable entertainment value as the slight , pale mr. broomfield continues to force himself on people and into situations that would make lesser men run for cover .\",\n", - " \"'entertainment' (21.84): has the right stuff for silly summer entertainment and has enough laughs to sustain interest to the end .\",\n", - " \"'feature' (20.42): famuyiwa 's feature deals with its subject matter in a tasteful , intelligent manner , rather than forcing us to endure every plot contrivance that the cliché-riddled genre can offer .\"]},\n", - " {'assoc': 'positive',\n", - " 'rank': 5,\n", - " 'feature_id': 12677,\n", - " 'score': 0.011011037044227123,\n", - " 'effect': 0.13755296170711517,\n", - " 'purity': 1.0,\n", - " 'hits': [\"'entertaining' (23.27): it 's a testament to the film 's considerable charm that it succeeds in entertaining , despite playing out like a feature-length sitcom replete with stereotypical familial quandaries .\",\n", - " \"'people' (18.29): is the refreshingly unhibited enthusiasm that the people , in spite of clearly evident poverty and hardship , bring to their music\",\n", - " \"'entertainment' (17.18): acquires an undeniable entertainment value as the slight , pale mr. broomfield continues to force himself on people and into situations that would make lesser men run for cover .\"]},\n", - " {'assoc': 'positive',\n", - " 'rank': 6,\n", - " 'feature_id': 352,\n", - " 'score': 0.009850881062448025,\n", - " 'effect': 0.1870572566986084,\n", - " 'purity': 1.0,\n", - " 'hits': [\"'good' (10.11): , good action , good acting , good dialogue , good pace , good cinematography .\",\n", - " \"'entertainment' (9.94): does a great combination act as narrator , jewish grandmother and subject -- taking us through a film that is part biography , part entertainment and part history .\",\n", - " \"'original' (8.60): hashiguchi covers this territory with wit and originality , suggesting that with his fourth feature -- the first to be released in the u.s. -- a major director is emerging in world cinema .\"]},\n", - " {'assoc': 'positive',\n", - " 'rank': 7,\n", - " 'feature_id': 24471,\n", - " 'score': 0.008838883601129055,\n", - " 'effect': 0.11735615879297256,\n", - " 'purity': 1.0,\n", - " 'hits': [\"'feature' (19.45): spiffy animated feature\",\n", - " \"'original' (18.96): manages to accomplish what few sequels can -- it equals the original and in some ways even betters it\",\n", - " \"'performance' (17.82): a perfect performance\"]},\n", - " {'assoc': 'positive',\n", - " 'rank': 8,\n", - " 'feature_id': 22446,\n", - " 'score': 0.008764185011386871,\n", - " 'effect': 0.11339113116264343,\n", - " 'purity': 1.0,\n", - " 'hits': [\"'manages' (23.82): a headline-fresh thriller set among orthodox jews on the west bank , joseph cedar 's time of favor manages not only to find a compelling dramatic means of addressing a complex situation , it does so without compromising that complexity .\",\n", - " \"'entertaining' (21.52): it 's a testament to the film 's considerable charm that it succeeds in entertaining , despite playing out like a feature-length sitcom replete with stereotypical familial quandaries .\",\n", - " \"'modern' (20.99): the film is filled with humorous observations about the general absurdity of modern life as seen through the eyes outsiders , but deftly manages to avoid many of the condescending stereotypes that so often plague films dealing with the mentally ill\"]},\n", - " {'assoc': 'positive',\n", - " 'rank': 9,\n", - " 'feature_id': 19679,\n", - " 'score': 0.007676468230783939,\n", - " 'effect': 0.12620142102241516,\n", - " 'purity': 0.8999999761581421,\n", - " 'hits': [\"'great' (19.63): the most wondrous love story in years , it is a great film .\",\n", - " \"'people' (18.75): acquires an undeniable entertainment value as the slight , pale mr. broomfield continues to force himself on people and into situations that would make lesser men run for cover .\",\n", - " \"'good' (16.56): more of the same from taiwanese auteur tsai ming-liang , which is good news to anyone who 's fallen under the sweet , melancholy spell of this unique director 's previous films .\"]},\n", - " {'assoc': 'positive',\n", - " 'rank': 10,\n", - " 'feature_id': 3841,\n", - " 'score': 0.006261645816266537,\n", - " 'effect': 0.18079645931720734,\n", - " 'purity': 1.0,\n", - " 'hits': [\"'people' (10.75): it forces you to watch people doing unpleasant things to each other and themselves\",\n", - " \"'worth' (10.30): is worth searching out\",\n", - " \"'thriller' (9.56): a headline-fresh thriller set among orthodox jews on the west bank , joseph cedar 's time of favor manages not only to find a compelling dramatic means of addressing a complex situation , it does so without compromising that complexity .\"]},\n", - " {'assoc': 'negative',\n", - " 'rank': 1,\n", - " 'feature_id': 8293,\n", - " 'score': 0.02445448562502861,\n", - " 'effect': -0.28014931082725525,\n", - " 'purity': 1.0,\n", - " 'hits': [\"'dumb' (22.82): first , for a movie that tries to be smart , it 's kinda dumb .\",\n", - " \"'bad' (19.95): stiff or just plain bad\",\n", - " \"'bad' (15.14): the energy it takes to describe how bad it is\"]},\n", - " {'assoc': 'negative',\n", - " 'rank': 2,\n", - " 'feature_id': 15362,\n", - " 'score': 0.013460644520819187,\n", - " 'effect': -0.2160179764032364,\n", - " 'purity': 1.0,\n", - " 'hits': [\"'dumb' (18.21): the film 's hero is a bore and his innocence soon becomes a questionable kind of inexcusable dumb innocence\",\n", - " \"'thing' (18.14): only thing to fear about `` fear dot com ''\",\n", - " \"'worst' (17.18): was produced by jerry bruckheimer and directed by joel schumacher , and reflects the worst of their shallow styles : wildly overproduced , inadequately motivated every step of the way and demographically targeted to please every one ( and no one )\"]},\n", - " {'assoc': 'negative',\n", - " 'rank': 3,\n", - " 'feature_id': 15629,\n", - " 'score': 0.010046347975730896,\n", - " 'effect': -0.18083274364471436,\n", - " 'purity': 1.0,\n", - " 'hits': [\"'build' (31.11): build some robots , haul 'em to the theater with you for the late show , and put on your own mystery science theatre 3000 tribute to what is almost certainly going to go down as the worst -- and only -- killer website movie of this or any other year\",\n", - " \"'already' (20.48): as they come , already having been recycled more times than i 'd care to count\",\n", - " \"'worst' (18.15): the worst film a man has made about women since valley of the dolls\"]},\n", - " {'assoc': 'negative',\n", - " 'rank': 4,\n", - " 'feature_id': 9641,\n", - " 'score': 0.009923317469656467,\n", - " 'effect': -0.20829728245735168,\n", - " 'purity': 1.0,\n", - " 'hits': [\"'worst' (99.29): was produced by jerry bruckheimer and directed by joel schumacher , and reflects the worst of their shallow styles : wildly overproduced , inadequately motivated every step of the way and demographically targeted to please every one ( and no one )\",\n", - " \"'worst' (69.86): build some robots , haul 'em to the theater with you for the late show , and put on your own mystery science theatre 3000 tribute to what is almost certainly going to go down as the worst -- and only -- killer website movie of this or any other year\",\n", - " \"'worse' (52.70): like one of ( spears ' ) music videos in content -- except that it goes on for at least 90 more minutes and , worse , that you have to pay if you want to see it\"]},\n", - " {'assoc': 'negative',\n", - " 'rank': 5,\n", - " 'feature_id': 11622,\n", - " 'score': 0.009329746477305889,\n", - " 'effect': -0.12447112053632736,\n", - " 'purity': 0.8999999761581421,\n", - " 'hits': [\"'build' (28.46): build some robots , haul 'em to the theater with you for the late show , and put on your own mystery science theatre 3000 tribute to what is almost certainly going to go down as the worst -- and only -- killer website movie of this or any other year\",\n", - " \"'happening' (26.71): is worse : the part where nothing 's happening , or the part where something 's happening\",\n", - " \"'less' (26.70): the result , however well-intentioned , is ironically just the sort of disposable , kitchen-sink homage that illustrates why the whole is so often less than the sum of its parts in today 's hollywood .\"]},\n", - " {'assoc': 'negative',\n", - " 'rank': 6,\n", - " 'feature_id': 8930,\n", - " 'score': 0.009280992671847343,\n", - " 'effect': -0.1878814846277237,\n", - " 'purity': 0.8999999761581421,\n", - " 'hits': [\"'run' (15.50): make the film more silly than scary , like some sort of martha stewart decorating program run amok\",\n", - " \"'tries' (14.35): time literally stops on a dime in the tries-so-hard-to-be-cool `` clockstoppers , '' but that does n't mean it still wo n't feel like the longest 90 minutes of your movie-going life\",\n", - " \"'seem' (13.36): kirshner and monroe seem to be in a contest to see who can out-bad-act the other .\"]},\n", - " {'assoc': 'negative',\n", - " 'rank': 7,\n", - " 'feature_id': 8139,\n", - " 'score': 0.009070736356079578,\n", - " 'effect': -0.1303018480539322,\n", - " 'purity': 1.0,\n", - " 'hits': [\"'build' (21.27): build some robots , haul 'em to the theater with you for the late show , and put on your own mystery science theatre 3000 tribute to what is almost certainly going to go down as the worst -- and only -- killer website movie of this or any other year\",\n", - " \"'happening' (20.26): i 'm not sure which half of dragonfly is worse : the part where nothing 's happening , or the part where something 's happening\",\n", - " \"'thing' (19.08): the weird thing about the santa clause 2 , purportedly a children 's movie , is that there is nothing in it to engage children emotionally .\"]},\n", - " {'assoc': 'negative',\n", - " 'rank': 8,\n", - " 'feature_id': 12826,\n", - " 'score': 0.008550302125513554,\n", - " 'effect': -0.20519515872001648,\n", - " 'purity': 1.0,\n", - " 'hits': [\"'bad' (74.85): the kind of under-inspired , overblown enterprise that gives hollywood sequels a bad name\",\n", - " \"'bad' (69.38): what we get in feardotcom is more like something from a bad clive barker movie .\",\n", - " \"'build' (65.02): build some robots , haul 'em to the theater with you for the late show , and put on your own mystery science theatre 3000 tribute to what is almost certainly going to go down as the worst -- and only -- killer website movie of this or any other year\"]},\n", - " {'assoc': 'negative',\n", - " 'rank': 9,\n", - " 'feature_id': 4438,\n", - " 'score': 0.00854902621358633,\n", - " 'effect': -0.1359509378671646,\n", - " 'purity': 1.0,\n", - " 'hits': [\"'build' (35.84): build some robots , haul 'em to the theater with you for the late show , and put on your own mystery science theatre 3000 tribute to what is almost certainly going to go down as the worst -- and only -- killer website movie of this or any other year\",\n", - " \"'thing' (28.99): the weird thing about the santa clause 2 , purportedly a children 's movie , is that there is nothing in it to engage children emotionally .\",\n", - " \"'worst' (27.98): the worst film a man has made about women since valley of the dolls\"]},\n", - " {'assoc': 'negative',\n", - " 'rank': 10,\n", - " 'feature_id': 1181,\n", - " 'score': 0.007744393311440945,\n", - " 'effect': -0.19073373079299927,\n", - " 'purity': 1.0,\n", - " 'hits': [\"'build' (37.81): build some robots , haul 'em to the theater with you for the late show , and put on your own mystery science theatre 3000 tribute to what is almost certainly going to go down as the worst -- and only -- killer website movie of this or any other year\",\n", - " \"'worse' (27.72): is worse : the part where nothing 's happening , or the part where something 's happening\",\n", - " \"'run' (19.83): spliced together bits and pieces of midnight run and 48 hours ( and , for that matter , shrek )\"]}]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Rank semantic sentiment features and save the same lightweight artifacts as the script.\n", - "from murano.steps import SAETopActivations, Save\n", - "\n", - "rows, label_counts = rank_features(\n", - " results[\"sae_record\"], list(dataset.labels), model.tokenizer\n", - ")\n", - "results = Pipeline(\n", - " [\n", - " SAETopActivations(\n", - " model, k=K_CONTEXTS, feat_ids=[row[\"feature_id\"] for row in rows]\n", - " ),\n", - " Save(output_dir=OUTPUT_DIR, model_id=MODEL_ID),\n", - " ]\n", - ").run(results)\n", - "contrast_path = Path(results[\"output_dir\"]) / \"sentiment_feature_contrast.json\"\n", - "contrast_path.write_text(\n", - " json.dumps(\n", - " {\n", - " \"label_counts\": label_counts,\n", - " \"score\": \"activation * label_token_weight * strict_class_selectivity\",\n", - " \"features\": rows,\n", - " },\n", - " indent=2,\n", - " )\n", - " + \"\\n\"\n", - ")\n", - "feature_summary = [\n", - " {\n", - " \"assoc\": row[\"assoc\"],\n", - " \"rank\": row[\"rank\"],\n", - " \"feature_id\": row[\"feature_id\"],\n", - " \"score\": row[\"score\"],\n", - " \"effect\": row[\"effect\"],\n", - " \"purity\": row[\"purity\"],\n", - " \"hits\": row[\"hits\"],\n", - " }\n", - " for row in rows\n", - "]\n", - "feature_summary" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "171c7ccb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[('positive', 1, 2259, 0.017903897911310196),\n", - " ('negative', 1, 8293, 0.02445448562502861)]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Choose one highest-score positive feature and one highest-score negative feature.\n", - "positive_targets = sorted(\n", - " (row for row in rows if row[\"assoc\"] == \"positive\"),\n", - " key=lambda row: row[\"score\"],\n", - " reverse=True,\n", - ")\n", - "negative_targets = sorted(\n", - " (row for row in rows if row[\"assoc\"] == \"negative\"),\n", - " key=lambda row: row[\"score\"],\n", - " reverse=True,\n", - ")\n", - "if not positive_targets or not negative_targets:\n", - " raise RuntimeError(\n", - " f\"Need positive and negative targets; got {len(positive_targets)} positive and {len(negative_targets)} negative.\"\n", - " )\n", - "target_rows = positive_targets[:1] + negative_targets[:1]\n", - "[(row[\"assoc\"], row[\"rank\"], row[\"feature_id\"], row[\"score\"]) for row in target_rows]" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "d7d17bb7", - "metadata": {}, - "outputs": [], - "source": [ - "# Extract raw decoder and unembedding matrices; plotting APIs own the projections/prep.\n", - "decoder = sae_encode.sae_model._sae.W_dec.detach().float().cpu()\n", - "unembedding = model._lm.lm_head.weight.detach().float().cpu()\n", - "token_labels = [\n", - " model.tokenizer.decode([token_id]) for token_id in range(model.tokenizer.vocab_size)\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "5ea9b616", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABXgAAAPoCAYAAABkvZZOAAAQAElEQVR4AeydB2AURRuGv1MRsCBSFQQpIlV6771XqT8gvffee++9dxGRKtJ7ld6LgIAgRUBQECwgAvrvO8lsNpe7y11ySS7JC5nd2enz7N7szDffzrzyH/+RAAmQAAmQAAmQAAmQAAmQAAmQAAlEdQKsHwmQAAmQQBQl8IrwHwmQAAmQAAmQAAmQAAmYBGghARIgARIgARIgARIgARKITAQo4I1Md4tlJQFfIsCykAAJkAAJkAAJkAAJkAAJkAAJkAAJRH0CrKHPE6CA1+dvEQtIAiRAAiRAAiRAAiRAAiRAAr5PgCUkARIgARIgARKIGAIU8EYMd+ZKAiRAAiRAAtGVAOtNAiRAAiRAAiRAAiRAAiRAAiTgRQIU8HoRJpPyJgGmRQIkQAIkQAIkQAIkQAIkQAIkQAIkEPUJsIYkQAKhJUABb2gJMj4JkAAJkAAJkAAJkAAJkEDYE2AOJEACJEACJEACJEACDglQwOsQCx1JgARIgAQiKwGWmwRIgARIgARIgARIgARIgARIgASiE4HoKuCNTveYdSUBEiABEiABEiABEiABEiABEiCB6EqA9SYBEiCBKE+AAt4of4tZQRIgARIgARIgARIggeAJMAQJkAAJkAAJkAAJkAAJRE4CFPBGzvvGUpMACUQUAeZLAiRAAiRAAiRAAiRAAiRAAiRAAiQQ9QlEohpSwBuJbhaLSgIkQAIkQAIkQAIkQAIkQAIk4FsEWBoSIAESIAESiGgCFPBG9B1g/iRAAiRAAiRAAtGBAOtIAiRAAiRAAiRAAiRAAiRAAmFCgALeMMHKREkgpAQYjwRIgARIgARIgARIgARIgARIgARIIOoTYA1JwHsEKOD1HkumRAIkQAIkQAIkQAIkQAIkQALeJcDUSIAESIAESIAESCAYAhTwBgOI3iRAAiRAAiQQGQiwjCRAAiRAAiRAAiRAAiRAAiRAAtGTAAW80eu+s7YkQAIkQAIkQAIkQAIkQAIkQAIkQAJRnwBrSAIkEI0IUMAbjW42q0oCJEACJEACJEACJEACgQnwigRIgARIgARIgARIILIToIA3st9Blp8ESIAEwoMA8yABEiABEiABEiABEiABEiABEiABEvBJAl4V8PpkDVkoEiABEiABEiABEiABEiABEiABEiABrxJgYiRAAiRAAr5DgAJe37kXLAkJkAAJkAAJkAAJRDUCrA8JkAAJkAAJkAAJkAAJkEAYE6CAN4wBM3kSIAF3CDAMCZAACZAACZAACZAACZAACZAACZBA1CfAGoYFAQp4w4Iq0yQBEiABEiABEiABEiABEiABEgg5AcYkARIgARIgARJwmwAFvG6jYkASIAESIAESIAFfI8DykAAJkAAJkAAJkAAJkAAJkEB0J0ABb3R/AqJH/VlLEiABEiABEiABEiABEiABEiABEiCBqE+ANSSBaEmAAt5oedtZaRIgARIgARIgARIgARKIzgRYdxIgARIgARIgARKIOgQo4I0695I1IQESIAES8DYBpkcCJEACJEACJEACJEACJEACJEACPk6AAl4v3CAmQQIkQAIkQAIkQAIkQAIkQAIkQAIkEPUJsIYkQAIk4IsEKOD1xbvCMpEACZAACZAACZAACURmAiw7CZAACZAACZAACZAACYQbAQp4ww01MyIBEiABewK8JgESIAESIAESIAESIAESIAESIAESiPoEwraGFPCGLV+mTgIkQAIkQAIkQAIkQAIkQAIkQALuEWAoEiABEiABEggBAQp4QwCNUUiABEiABEiABEggIgkwbxIgARIgARIgARIgARIgARLQBCjg1SR4JoGoR4A1IgESIAESIAESIAESIAESIAESIAESiPoEWMNoToAC3mj+ALD6JEACJEACJEACJEACJEAC0YUA60kCJEACJEACJBAVCVDAGxXvKutEAiRAAiRAAqEhwLgkQAIkQAIkQAIkQAIkQAIkQAKRhgAFvJHmVvleQVkiEiABEiABEiABEiABEiABEiABEiCBqE+ANSQBEvBtAhTw+vb9YelIgARIgARIgARIgARIILIQYDlJgARIgARIgARIgAQigAAFvBEAnVmSAAmQQPQmwNqTAAmQAAmQAAmQAAmQAAmQAAmQAAl4i4DvCni9VUOmQwIkQAIkQAIkQAIkQAIkQAIkQAIk4LsEWDISIAESIIFQEaCAN1T4GJkESIAESIAESIAESCC8CDAfEiABEiABEiABEiABEiCBoAQo4A3KhC4kQAKRmwBLTwIkQAIkQAIkQAIkQAIkQAIkQAIkEPUJsIb+BCjg9QfBEwmQAAmQAAmQAAmQAAmQAAmQQFQkwDqRAAmQAAmQQNQmQAFv1L6/rB0J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EKCAN3w4MxcSIAESECEDEiABEiABEohkBBIliGuW+Pc/n8jxs1dkzbZDMvXz9bJuxxG5/+CR6Z8zcxrZtGiwpE2V1HSjhQRIgARIgARIgASiJYFwrjQFvOEMnNmRAAmQAAmQAAmQAAmQQGQh8O2KMbJiei9p8GkJyZT2Q3kjdkyz6IkN4S+WY/hf5SKyakZvWT9vgKT/iJurmYBoIQE3CDAICZAACZAACXiDAAW83qDINEggHAh8u3KM/HxsiTLJkyQMhxyZBQmQAAmQgI8QYDFIIMIIvPKKTQrnziRjejeWHUuGy7V981VfBH2SM5unydbFQ2Vi/+ZSMFdGsdlsEVZOZkwCJEACJEACJEAC0ZkABbzR+e6z7lGMAKtDAiRAAiRAAiRAAiRAAiRAAiRAAiQQ9QmwhiQQmAAFvIF58IoESIAESIAESIAESIAESIAEogYB1oIESIAESIAESCBaEKCAN1rcZlaSBEiABEiABJwToA8JkAAJkAAJkAAJkAAJkAAJkEDkJUABb+S9d+FdcuZHAiRAAiRAAiRAAiRAAiRAAiRAAiQQ9QmwhiRAApGMAAW8keyGsbgkQAIkQAIkQAIkQAIk4BsEWAoSIAESIAESIAESIAFfIEABry/cBZaBBEiABKIyAdaNBEiABEiABEiABEiABEiABEiABEggzAj4jIA3zGrIhEmABEiABEiABEiABEiABEiABEiABHyGAAtCAiRAAiTgXQIU8HqXJ1MjARIgARIgARIgARLwDgGmQgIkQAIkQAIkQAIkQAIk4AYBCnjdgMQgJEACvkyAZSMBEiABEiABEiABEiABEiABEiABEoj6BFhDZwQo4HVGhu4kQAIkQAIkQAIkQAIkQAIkQAKRjwBLTAIkQAIkQALRjAAFvNHshrO6JEACJEACJEACfgR4JAESIAESIAESIAESIAESIIGoQIAC3qhwF1mHsCTAtEmABEiABEiABEiABEiABEiABEiABKI+AdaQBCItAQp4I+2tY8FJgARIgARIgEAtJYMAABAASURBVARIgARIgATCnwBzJAESIAESIAESIAHfIkABr2/dD5aGBEiABEggqhBgPUiABEiABEiABEiABEiABEiABEggHAhQwBsOkF1lQT8SIAESIAESIAESIAESIAESIAESIIGoT4A1JAESIIGwIkABb1iRZbokQAIkQAIk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GxIgARKI3gRYe7cJUMDrNioGJAESIAESIAESIAESIAESIAES8DUCLA8JkAAJkAAJRHcCFPBG9yeA9ScBEiABEiCB6EGAtSQBEiABEiABEiABEiABEiCBKEmAAt4oeVtZqZATYEwSIAESIAESIAESIAESIAESIAESIIGoT4A1JIGoQ4AC3qhzL1kTEiABEiABEiABEiABEiABbxNgeiRAAiRAAiRAAiTg4wQo4PXxG8TikQAJkAAJRA4CLCUJkAAJkAAJkAAJkAAJkAAJkAAJRAQBCnjDlzpzIwESIAESIAESIAESIAESIAESIAESiPoEWEMSIAESCDcCFPB6AfVvfz4TGjLQjxKfBT4LfBb4DFjbAT4PfB7086CfBZ5JIDABXpEACZAACZAACZAACZBA6AhQwBs6foxNAiRAAuFDgLmQAAmQAAmQAAmQAAmQAAmQAAmQAAlEfQIhqCEFvCGAxigkQAIkQAIkQAIkQAIkQAIkQAIkEJEEmDcJkAAJkAAJaAIU8GoSPJMACZAACZAACZBA1CPAGpEACZAACZAACZAACZAACURxAhTwRvEbzOqRgHsEGIoESIAESIAESIAESIAESIAESIAESCDqE2ANoyIBCnij4l1lnUiABEiABEiABEiABEiABEggNAQYlwRIgARIgARIINIQoIA30twqFpQESIAESIAEfI8AS0QCJEACJEACJEACJEACJEACJBCxBCjgjVj+0SV31pMESIAESIAESIAESIAESIAESIAESCDqE2ANSYAEIoAABbwRAJ1ZkgAJkAAJkAAJkAAJkED0JsDakwAJkAAJkAAJkAAJeIsABbzeIsl0SIAESIAEvE+AKZIACZAACZAACZAACZAACZAACZAACbgkECUEvC5rSE8SIAESIAESIAESIAESIAESIAESIIEoQYCVIAESIAESCEqAAt6gTOhCAiRAAiRAAiRAAiQQuQmw9CRAAiRAAiRAAiRAAiQQbQhQwBttbjUrSgIkEJQAXUiABEiABEiABEiABEiABEiABEiABKI+gahdQwp4o/b9Ze1IgARIgARIgARIgARIgARIgATcJcBwJEACJEACJBAJCVDAGwlvGotMAiRAAiRAAiQQsQSYOwmQAAmQAAmQAAmQAAmQAAn4CgEKeH3lTrAcUZFAuNfpwaPfZdK8r6VR5zGSs0JbqdlqqEycu9os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CZAACZAACZAACZAACZg/Aa7QrAhQ4A0jl5MHKYWRC8FpkAAJkAAJkAAJkAAJkAAJeBFghARIgARIgARIIOwToMAbhq4RD1IKQxeDUyEBEiABEggMAdYlARIgARIggXBJ4OsPT7i4ufpyVz48D5fr4aRJgARIgAQiJgEKvBHzuv+hVXNYEiABEiABEiABEiABEiABEgg7BN58/Yym51b5cqNu7Qs7k+RMSCBcEuCkSYAEficBCry/kzbHIgESIAESIAESIAESIAES+EmAMRIgARIgARIgARIggWAToMAbbITsgARIgARIILQJsH8SIAESIAESIAESIAESIAESIAESIAHTBMxJ4DW9QuaSAAmQAAmQAAmQAAmQAAmQAAmQAAmYEwGuhQRIgARIwIgABV4jGIySAAmQAAmQAAmQAAmYEwGuhQRIgARIgARIgARIgATMnwAFXvO/xlwhCZDArwiwnARIgARIgARIgARIgARIgARIgARIwPwJmOkKKfCa6YXlskiABEiABEiABEiABEiABEiABIJGgK1IgARIgARIIDwRoMAbnq4W50oCJEACJEACJBCWCHAuJEACJEACJEACJEACJEACJPDHCVDg/eOXgBMwfwJcIQmQAAmQAAmQAAmQAAmQAAmQAAmQgPkT4ApJ4M8QoMD7Z7hzVBIgARIgARIgARIgARIggYhKgOsmARIgARIgARIggRAkQIE3BGGyKxIgARIgARIISQLsiwRIgARIgARIgARIgARIgARIgAR+RYAC768Ihf1yzpAESIAESIAESIAESIAESIAESIAESMD8CXCFJEACJGCSAAVek1iYSQIkQAIkQAIkQAIkQALhlQDnTQIkQAIkQAIkQAIkEJEIUOCNSFebayUBEiABYwKMkwAJkAAJkAAJkAAJkAAJkAAJkAAJhHsCvxR4w/0KuQASIAESIAESIAESIAESIAESIAESIIFfEmAFEiABEiCB8EmAAm/4vG6cNQmQAAmQAAmQAAn8KQIclwRIgARIgARIgARIgARIIAwRoMAbhi4Gp0IC5kWAqyEBEiABEiABEiABEiABEiABEiABEjB/AlzhnyZAgTcErkCcGJagIwPDR4mfBX4W+FngZ8D4OcDPAz8Phs+D4bPAkARIgAQiLAEunARIgARIgARIIFQIUOANFazslARIgARIgARIIKgE2I4ESIAESIAESIAESIAESIAESCDgBCjwBpyV3zWvXgXofjeDsDee358QlkRQAns/3gMdGUTQjz+XTQIkQAIkQAIkQAIkQAIhRYD9kAAJ/IIABd5fAGIxCZAACZAACZAACZAACZBAeCDAOZIACZAACZAACZBAxCRAgTdiXneumgRIgAQiLgGunARIgARIgARIgARIgARIgARIgATMiAAFXj8uJrNJgARIgARIgARIgARIgARIgARIgATMnwBXSAIkQALhnQAF3vB+BTl/EiABEiABEiABEiCB30GAY5AACZAACZAACZAACZBAmCRAgTdMXhZOigRIIPwS4MxJgARIgARIgARIgARIgARIgARIgATMn0DYWSEF3rBzLTgTEiABEiABEiABEiABEiABEiABcyPA9ZAACZAACZBAKBOgwBvKgNk9CZAACZAACZAACQSEAOuQu6PjIwAAEABJREFUAAmQQEQmkOnAJGTc79v9+PEjImPh2kmABEiABEggQAQo8AYIEyuRQJghwImQAAmQAAmQAAmQAAmQAAmQAAmQAAmYPwGukAQCTIACb4BRsSIJkAAJkAAJkAAJkAAJkAAJhDUCnE9oEPji6Ymm5/7z5bpc2hgaw7FPEiABEiABEggWAQq8wcLHxiRAAiRAAiQQTghwmiRAAiRAAiRAAgEm8MMCcHF76Mudffc4wH2wIgmQAAmQAAn8LgIUeH8X6XAyDqdJAiRAAiRAAiRAAiRAAiRAAiRAAiRg/gS4QhIgAfMhQIHXfK4lV0ICJEACJEACJEACJEACIU2A/ZEACZAACZAACZAACYRxAhR4w/gF4vRIgARIIHwQ4CxJgARIgARIgARIgARIgARIgARIgAT+BIHfK/D+iRVyTBIgARIgARIgARIgARIgARIgARIggd9LgKORAAmQAAn8NgIUeH8bag5EAiRAAiRAAiRAAiTgkwDTJEACJEACJEACJEACJEACwSNAgTd4/NiaBP4Ige/ff+C/LYdQs50TslbohPQl26Jq6xFYuHo3vnl6BmpOUn/j7hPoP3Yh6nQcrfpLV6INSjQYgO4j5uDpize/7O/J89eopo2fOG9jjJu9xt/6J8/fwMipK9Co23jkr9ETqYq0RKHavVX69MVbfrU1mX/I5TJkTHFHTl81WYeZJGBuBOQ+ad57MvLV6IHUxVqhVMOBcNLuqbfv3YO8VHmmLF67F52GzETllsPUM0Xuq/zaPfrl67cA9RuQ+1GeFfKMqNh8CNIUb41yTRwxYNxCyJr8GiQknxl+jcF8EiABEiABEiABEiABEiCBMEOAEwkCAQq8QYDGJiTwpwn0dHJG12GzcezMNdhEt0LKZAkhIoiItG36T4WINQGZ48vX71Ch2RC0HTBVicOnLtxAgri2sEuWANfvPMSKTQdRuE4fuGiiLPz42Xv0PMpqIo1/dQxN2w+apoTo6Ys2Y++xC4gcORIyp7fD42evsEfrR4SluSt3Gqr7G75ye6/EKH8rsZAEzIyA3JNyn2w/cBrvP3xCprQpcPv+E0zT7ikRTV++eRfoFd91fYZKLYaiz+j5WLPtCC5dvw/75AlRNJ8DokWNEqDnSUDux0PaC5ni9ftj0tx12vPlkZr7zbuPsWDVbiUqT5m/wdfcQ/KZ4atzZpAACZAACYRzApw+CZAACZAACZCAgQAFXgMJhiQQTgjIzl0ReeLFjomNc4fg+LqJ2LXECUdWj0fWDPbYtv8UZizZEqDVxIsTE2lTJkGF4rkxf1x33NjnjL3L/sKepX/h9KYpKF8sFz66f0ZHx+n4+s37zmBPz+8YO2s1GnYbj8iRIqk+fjVo7qzpkDtrWowb0AJXd8/C0TUTsGX+MFzR4t1bVlfNB09cjMs3Hqi4f17XobPw4vVbtWb/6rGMBMyFgAixvUbNVcuZ6NgaV3bNVPfP+W3TUKtCIdx58BQ9RsxR5QH1ZEdt9TYjce7KHTSqXgLb/x2B2wfnYudiJ6yaPgCHVo2DlWXUX3b3q/vx/cdP6Dp8Nt59cEereuW0uc/C5nlDcVlbw7DuDSEve0bPXIWdB894Gyt3SDwzvPXIBAmQAAmQwG8ncPw4MFf798unO3fut0+FA5IACZAACZCAuRKgwGuuV5brChSB8FTZefkONd1hPRohX/b0Ki5eGk2onTS4tUThvHw7vgTga9UWFhaYNaozFk7ogUol86jdeqoDzUuaKC5m/dUZsWJY4+HTV7h4/Z6W+/N30IRFmDxvvdrtu37OYGROZ/ez0I9YmwbllSDVtFZpxI5l41XL2soS/TvURfH8WfHjxw8cOHHRq8xUxHnFDrXjt2XdskgYz9ZUFeaRgNkREBMs8mKlUY2SSoy1sLBQa5R7aZJjG8g9u+vwObUDVxUEwHOathLPX7lBXrCIaJwjc2pEiRw5AC1/VgnI/bhqy2GImJwnWzqM6tPUSzS2jm6J9o0qYXCXBqrD8XPWqtDghdQzw9AfQxIgARIggT9A4PVr4M4d3+7Nr82A/YHZckgSIIEIQIBLJAFzJECB1xyvKtdktgQeP3uthNY4tjFQvWwBX+uUHbwi+j576YajIWCT1ipaVES3iqbG+fDxkwoNXgtNXC1dKDu2/zsSqVIkwpcvXw1FQQ7jauuSxrLbT0JT7tptV4yatgJZMqTEkG7/wyePL6aqMY8EzI6AmEORRTWqXlwCb0522dapWFjlbdrrosJfeSK4rt1+VAnDPVrV+FV1k+UBvR+PnL6i2tcsX1CFPr1W9csjcYI46vl2/9Fzn8V+pgPyzPCzMQtIgARIwH8CLCUBEiABEiABEiCBcEOAAm+4uVScKAkA56/eURgc0qf0tttWZeq9HA6pVcy/Q4tUhQB4i9buhYjF8WLHRE6HNN5aZEidDEun9IFBYPnhrTTwCdkhvHX/KdWwRIGsKvTpiZjbbuA0RIoUCdNHdISlJkDLjkaf9Zgmgd9H4PeMJKYNbt57rHbXZs+ku8d9jpwjs+4ePXPpls8ik2m532THvLwsknvJZCV/MgNzP755+0H1lDxxfBX69KJGiYxcWXTzP3/1rs9ik+mAPDNMNmQmCZAACZAACZAACZAACZAACZgZAQq8v+OCcgwSCCECDx6/UD2lTJZQhaY8Q9ndh09NFQcoT8QYMb/Qb8wC2FhbYdLgNohpEz1AbQNb6bPHV2zYdRw12jrB48tX9GxdE/lzZDDZzYgpy3D9ziMM6lwfIjCbrMRMEjBDAmJ/V5aVMnlCZa9W4j6dHIwmeXcfBOzev3jtnlRHjsyp1UGKTXtNQv4aPZG6WCtUaz0Cc5ZtV/ekqmTCC8z9aBtTZ5LFv0PgPrp7qFHk8EcV8cMLzDPDjy6YTQIkQAIkQAIkQAKhR4A9kwAJkMAfIECB9w9A55AkEFQCbu8+qqY21pYqNOXFsNYJsW5vdXVN1TGVV7nlMCTO21i5TGXaY9zsNWhcsyT2rxijDlsz1SaoeSOnrlDjyHj2RVpAduXK7r0NzoPRt11tk93uPnIOC1btRpnCOSCHNJmsxEwSMFMCb9/r7ucY2gsXv5YYQ/8S5smLgNk0NIjG91yfoW7H0eqAs2hRo8AuaQKcvnQLQyYvUUKv4bljPG5g78fcWdOq5mu2HVGhT09MPRx0uaSyP33WCb0qofeC8szQN2VAAmGWACdGAiRAAiRAAiRAAiRAAiFFgAJvSJFkPyTwGwh8/PRZjWIZNaoKTXnRDTZz3b3bzDVV1zgvawZ7FM3noHbziS1MKVu+8QD6j1mApwEUjKRNQFzKZAnUWGIv2E6Ly9ezD7lchuOExTh5/oavLtQhUMPnIH6cWPh7aFtf5WacwaWRgCLw0V1370eL5ve9L4cVSmUxWyK74SXun5P7SspHz1yFprVL49SmKTi0apx6qXN+6zRl51vMJciBilLP4KRd90Dejw2qFkOi+LGVbfDW/f5RtnbdNSH31IWbmDJ/A2T3sMHci3V0K8NQXmFgnxleDRkhARIgARIgARIgARIgARIggfBBIFizpMAbLHxsTAK/l4CNXvjw+PrVz4E/6w8dixIlip91TBWM6dccq6YPwPZ/R+Dc1qm4tHMGmtcugz1Hz6Nqq+F4+97dVLMg5TWtVVqNtXHuELisn4zbB+fBqXdT3HF9iprtRuHEuete/YqN0E5DZkK+2i2mIkTk9SpkhAQiCAExlSJL9e8wQ7GJK3XEBcSm7ke9SYS2DStgZM/GSJ44njRVLn7cWBih5UWNEhkbdh7HK7f3Kj+o96Pct/9O7IkUSeJj814XlG3siNRFW6GK9mwRgblOxSJeNnjlEEk1mJEXmGeGUTNGSYAESIAESMAMCXBJJEACJEACJOCbAAVe30yYQwJ/jMD0RZtRrF4/X86wq9VgB9fDw2+B1/2Th5q/f1/lVhV+4cWLHROj+jSF7LxzffIS0xdt+kWLoBfL18Jb1y8Hp15N8M3TE6OmrfTqbOaSrZDdvS3qlkG5ojm98hkhgYhEwGB+wfACx9TaP+p3+RqeE6bqGOdZWel2A1cqkdc42ysuO27T2idV9+TVmw9UfnDuR7H1e2DlWEx0bI16lYuqXfz/q1YcK6f1U6ZZDDbGZVe/Gswfz79nhj/NIlYRV0sCJEACJEACJEACJEACJBBhCFDgjTCXmgsNDwTkcLMbdx/BpzN83do+eSK1jMfPXqnQlPfoqa4spT8HsRnaBSTMrz/w7PTFWwGpHqw6hXJnUu3F/qdhzWNnrVZ5l288QN1Oo305sd0pFUb+s1yVDZ28VJJ0JGBWBNJpQqss6P6j5/j+/YdEfblH+udCmpRJfJWZyogfO5bK/vbtmwpNebFj2ajsj/oXR8G9H62jW6JR9RL4Z1g7tYt/8uA2KJ4/q9qhLwcoijgt5mLUoAHwTD0zAtCMVUiABEiABEiABEiABEggwhHggs2bAAVe876+YXp15+8+QeKmo5Crx9QwPc/fOTnHLg3w9OQSX65IXgc1jbzZ0qnwzKXb+PrNU8V9eif05g3k0DKfZUFJv3j9TjX7/MXvXcOqQgh4z1+6qV48Pb/j+w+diGUQel3O31A7eWU3r7EzmI44d+WOKr9yS7fTUHVEjwT0BDw9PTG861x0azgRL54G7BAyfdMwEYjwmSltCnz2+IpzV++YnNOJs9dUfkDvfYcMKVX9q7dcVWjKc338QmWLiQWJhNb9uGHXcekeFUvkgZiFUIkAeKaeGQFoxiokQAIkQAJ+E2AJCZAACZAACZBAOCRAgTcMXrQztx9h0KIdqDhsPnJ0+wcpW41Fvt7TUXv0Ekzbcgwv334MU7NuP2OdEmpFrDW4DB0momj/2ag7dilWHrqgvuIbpiYdTieTIJ6t2u0m9jDFLqbPZVy8fg8ihFpGi4qi+bJ4KxZB+Mnz197yfpX4poli2w+cVtUypk6uwtD0Nu11Ud2ntkuM6JbRVNyU4G2cZ9hhvGbWICWMix1h1ZAeCRgR+PTxC65fuIcXj9/g6SPdLnej4nARrV62gJrnsg37VWjsifC7etsRlVWyYHYVGnuy89c4LfFKmpgq4cI1e+D2zve/K8fOXMPDp68gh585pNeJwT/vPd8voqQsKPfj8bPX8df0/2QqaPO/8ioMqGfqmRHQtqxHAiRAAiRAAiRAAiRAAiRAAuZCgAJvGLqSHl+/odOsDag0fCHm7T6Fs3ee4Omb95D8B8/dcOTqfTit3Iu8vaZjw4krYWjmuqmkThwXRR3slUtkGwMPXrjh0OV76Oa8CeWGLsDbj591FekHi0D7RhVV+6GTlygxVyU07/b9J+g5cq4WAxrXKKlEGZXQPNnlWrRuX+St1gOrth7WcnS/yzYegOOERbh+55Euw8i/9/AZWvadgjOXbkHsf3ZoUtmoNPDRa7cfolW/KTjocglyUJNxD+8/fsKIf5ZjzrLtKrt3m1oqpEcCgSEwsM0MLFlpKI0AABAASURBVJ6+zWSTGLGio23fmqjRpDiy5Epjsk5Yz2xSq5S6F5es24elmshruI9EnO3p5IzHz14jczo7lCnsXeBt2fdv5K/RE/3GLPC2xBIFsqJgroyQZ0ftDqNw/updr/JL1++j91/zVLp1g/KwstTZ61UZIeR5en7H4rV70aDLGIj94A6NK8HYPAOfGSEEmt2QAAmQAAmQAAmQwO8gwDFIgAT+KAEKvH8Uv/fBW/2zBmuOXlKZdQpnwb/d68JlQifcce6DLUOa468m5ZEmSTx8+vIV7aavw9L9Z1XdsOLVL5INq/o1Uu7gmHa4Nbs35naphRTxbXHlwTP0mr81rEw1XM+jZMFs6NaiGl65vUe11iNQoGYvlG3siMJ1+kB28IrAM6BjXW9rFDu1Ith+8/TE/uMXvcrksLa5K3eieP1+qh+xcVuj7UjkqtJVpXcePIMkCeNi4fjuSBtAu55enfuK/MCWvSdRr9MYZCnXEXU6/KVcodq9kal0e8xYvEWJSCN7NkatCoV8tWYGCfhH4PmTN7h387F/VVCiUm7Ua1UWFhYW/tYLq4Vy8OGsUZ3U/Hs5zUXmsh1QueUwZK/YGWu3H4VtTGtMG95elRuvYdv+0yq585D3fzMsLCwwfURHJQqLjevyTQdDXgTJs6RM40FK+JXnTedmVVX74HpyiKQ8Ywwub/Xu6DN6Pr59+47+HepicJf/+RiCzwwfQJgkAbMgwEWQAAmQAAmQAAmQAAmEPAEKvCHPNEg9rj5yCbvP6w6xmtyqMqa1q47yudLDLmFsWFtGQ+60ydCybB7sGNYCVfNmVGMMX7EXz9w+qHhY9MSOYpW8mTC+RSU1vc0nr8JwUI/KoBdkAgM61sPcsV1RNJ8D3D95KGFXdtm2+V8FbHQeDIkbd54xTQrYJU2AyJEjQXbtGcoaVCuGsf1boEqpfPj02UPZsD1/5S5iWEdHpZJ5MG5ACxz8bywMNoARjJ8MqZNjgSYUN6haDIkSxMHhU1dw7Ow1eHp+hxyUNLBTfW2scZA1BGMYNjUPAoFexaEd5wLdJjw2KFM4B/Yu+ws1yhVArBjWOHPpNr58/abu4W0LRyix1ue6yhfLpbLKFc2pQmMvaaK42LJgGEb3bY4KxXPjzbsP6plSTmsza1RnLJvSB9GiRjFuEuR4tGhR4XLupy1t2bX7v2rFsX/lGHRvWR2RIll465vPDG84mCABEiABEiABEiABEiABEiABPwmEY4HXzzWFy4LZ20+oedcvmg3/K55DxU15MaJb4u/WVRA/lg3euX/G/F0nvVU7d+exsoc7eOkulS/CcZ0xS5Gl89/I3HESKo9YiMkbDvsrtF68/xR9FmxFiYHOSN1mHEoOcob0d/vJK9VnYL2CGe2UsCjtLj14JoG/bs2Ri2oN1Z0W+Vlv6LLdqs7IlXt91Xn48i0cF+9AKce5SNN2PLJ2+RtVRv6rdhBvP33dV/3wmlFFE2XF3uyF7dOU7dlb+50hu199iruyPtnZ57JhMh4dX4S6lYpIlnLRtZcHzWqXVmLx+W26fu4enq8JrWMxf1x3NK1VGnK4k6r8C29wlwZqHn3b1TZZ08LCQh2g9PeQtkqgEnudMp8T6yfhv+n90bV5VSVCm2zsT+YGTdCWvgrnzuRPrfBb1KrySAzuMFMt4InrS0wYuBgda41FwxKO2LPR+/1/9+ZjzJ20AX1bTEOLiiPQr+VULJq2FY8fvFDtfXqfP33Blv8OY0jH2WhffTRaV3FC/1bT8M+wFdix7hi+asKhoY3UkzGP77uId2/dMXfietV/y0ojVfulM7fhnZtvO66G9hKePnINU4YuR/eGk9CqshOGdXHGhqUH8eHdJyk26T59/IzdG1wwpu+/6FRnnJqj8Ph3ymYIj9vXHqJPs3+wZuEe1X7bqiOKjcxV3JljP+95YSl5j+7reIg5B0n/M3ylamvK++LxTY0p9a6cu+utSlDW462DICbksDURX09o984Tl8UQN1d74SO2q011uXBCD3VvysscU+XyHGhRtwyk3qUdM3B2yz9YNLGnEpEtLLyLrqbaG+f5dz+2aVAe948sUHORe/b63jmYPLiNn98OsLAInWeG8XwZJwESIAESIAESCC8EOE8SIAESIAH/CETyr5Blv4fAnaevIaKqjNasVC4J/HU2msjbskxuVWfTyWsq9OmJGDtk2S50nr0BNx+/RJrEcRElcmScvvUIY9ccQIt/1vhsotKbXK6i0rAFWLzvLJ65vUfG5Am19q/gvMMFpQfPxcYTgbf9GyXSz4+Z7OpVA4WSd/y6K0pogvTcXadw/dELZEgaH7GsrXBWE76X7j+LA5e9CzShNA12SwIhSuD1i/e4dcUVQzvPwZmj1+H2+r3qP7qN7iA6SRzffwlDO8zGXk30dXv9DilSJcLj+y+xffVRDGwzHSLMSj2De/PqPQa3n4WlM7arvmPFsUGCxLHx7PFrSF97Np5GVBM7N+/ceAyn7vOxd9MpSB/JUyVUAvKWlUcwoPV03LzsahjCWyhC88RBS3DiwGX80P5LmDQObly8j5XOO7V20+B61/fLn1tXHyoRef7kjbjgchNW1tGQOFk83LvxVBOgj8NdE3+jRo2MgqWyIlMOezVehmz2qNOitJdLnCyuyjflFS2XQ2WfPnIVn909VNynd/roVbh/+IwkdvGROUcqr+KgrMerMSMkQAKhR4A9kwAJkAAJkAAJkAAJkEAEJPBTeYuAiw8rSz5/74maSkxNuM1un0TFf+WVzJpGVRFx+M17dxU39vZeuI3Fe89iQbc6OP9PN2xwbIoLU7thTqeayj7jQU3o3KfVMW5zQxNEu87ZBMtoUZX936szemLr0Oa4OqMHBtYtic9fvqGb82bce/bauNkv4+uPX1Zfw7e2jAoHu0S/rB+cCo5LduDDJw841i+F6zL/YS1wZGx73JzVC0t61UebcvmC0z3bmgmB8LYMN02MnTF6NaxtrNBjZEM4bx6EZfudUKh0drWUh/eeY/boNYiq3WO9RjXGnA0DMWJGO8zeOAD125SD7EKdPWYtnj36uQt/07KDeHT/OQqVyoZpq/ti3MKuGD23M+ZtGYxh09qiWbfKqm+f3ublhxDTNjpGOXfE7PUDMGK6Ns6GASheMRfevHyHmdo8v33z9NZs/9bTSmhOmS4JxszrhCnLemG0cydM/a+PEmdfPX+Lf4atVM8JQ0PZuTtt5H94+ewtpN1fWv2Ji7rDaXYHtf6uwxogTcbksEuTBLWalUSaTClU09QZkqm05IlLapdA5Zvy7LX5pEidCF+1Z5sIz6bqnNh/SWUXKaNjLYmgrEfa0ZEACZAACZAACZAACZAACZAACfxeAhFlNAq8YeBKv3yr+1pzyoSxvUwZ/GpaiWLH8Kry1A87vB0qFUDF3Bm86kmkWv7MqJJHl+fTXMKUTUfVAW79ahVT9n+lvjgRnrtWLYRaBR1U+YpDFyTbX/fjxw9cdX0O2UXcde5mVbdxyZywNLEjUBWGgKfGfPhC9dRUGyuGJpirhOZZW0ZDmexpkTqx37v5tGr8JYEwSUA+21G1e2fM/M7IWzQzbGJE9zZPMXPg4fEVdVuUQu7CGb3KRBCu3qgYCmnipJQf2H7Gq+yx60sVL1g6G+LGj6Xi4kWKZIH0WezgYLRbVfKNXaue1ZEqXVL1skjyI0eOjNa9a6gdwE8fvsL+LaclW7nv339gzUKdKZW2fWsqQVYVaF68hLboMLAOEiaJo8TmK2dva7m632OasPr88WvE0ebWf1wz2GtirK4EsIoeDQVKZDEkgxWWqJxHtT+27+fhgypD8z68+4Szx66rdRavlFvLAYK6HtWYHgmQAAmQAAmQQFglwHmRAAmQAAmQQLgmQIE3DFw+N/fPaha21lYqDIgXP5a1V7VXJnbwSmGdQqYFEIeUiaUYj169U6F43zw9sfXUdYmiRNbUKvTp5UyTTGVd0YuoKmHkrTx8AXXHLlV2ftO0Ha9s987Z7qJ25ZXOlgYD65Q0qh3yUQsLC+TRz7Ga0yKcuP4AIoyF/EjskQR+P4Fi5XPCyuqnSQbDDDy1e/fUwcsqmTVvOhX69NJkSq6yHtz5aQYhVfqkKm/OuLU4vOscjO3tqgI/PHtN2E1qF99XaeTIkVCsgk4EPX30p+mYW5cfQHboxo4bU4nCPhtGiRIZ9umTqez7t56qULwzR65KoPWZE7ZxYqh4aHiFSmVFJG3uF0/ewts3H7wNcfLgJcju3iy503iJ4EFdj7eOmQjHBDh1EiABEiABEiABEiABEiABEgh7BCjwhoFrEj1aVDWL959M24BUhT6895+/eOXIDluvhD5iYWGBVIni6FPeA6uokVWGu8dXFYr36v0ntTtX4kX7z1YHmCVuOspbOHjJTinGq3e6HccqYeSJuYhDl+/hwt0nSB7PFhVypUe3aoWxsFsdLO5ZH1bRohjVDp3o9PbVkSFZfFzTROjqoxaj2IA5+HfvGbh7/OQVOiMb9cooCYQCAbEta6rbd27ukN25Utan2RRvB4w1LOGo0ounbpFib4eg1WxSEnmLZcb7t+6YMWo1utQZj1Xzd+P1y58vflQjH57YzvWR5ZVMlCyOirvpbQRL4uWLtxIou8GG+fgMXQ7ozCDI4W2qsua9eOqm+fC2c1dlhLAn4nGeIpnVy6Cje73v4j26TzevIuWye40a1PV4dcAICZAACZAACZAACZAACZCA+RDgSkggjBCgwBsGLkQSvbmFJ290BycFZErPjOraxbf11SRBLBv1tWJfBX5kvP34yaukqIM9/HOZUyT0qmscGVCnBJ4uGgTXBQNwcEw7LOxeF5JXIXcGyNe+jeuGVjy5xmJN/8ZoXjo3EtrGwM3HL9Fv4TYU6D0TIvRyR29okWe/oU0gurWlySE+ai9nDAUOudPAP2eXJrGhKqJZRkHXofXRoF15SP67tx+xbtF+9Gg4CYunb4XYwPWqbBSJEtXvFzW2cXU7bd9rorOhiRxQJvEYttb+zk3mHT9hbKmq3HtNeJZIjJjezVFIXki7ImV1Au5xIzMNsuv4ypk7iG5jifzFs3oNGdT1eHXACAmQAAmQQIQkwEWTAAmQAAmQAAmQQGgSoMAbmnQD2HcWvcmEF5rAcvH+0wC1OnDprqonNmXjxLRWcWNPvi5tnP5VPLbNT/MQU1pXxap+jfx041tU+lV3oV7u347c+LY2GNOsAuRQubUDGyux+vnbD0ro/XvjkVCfGwcggd9JIEasnwJo+361MGhiCz9d657VvU0tcuTIqPa/ohgzrzMmL+uJUtXyKpME21YdxeQhy9WuVm8NtISH0bcHtKS3308fdN9CsInx83lirbcXbBvbxs95GeZcrmZ+r/5iaC+pJPH5089vGkg6NFyOAukRS3vRdvPSA4gNYRnj+P6Lav0FS2dTYrjkiQvqeqRtAByrkAAJkAAJkED4JXD+PLB7t2/n7h5+18SZkwBL/aHAAAAQAElEQVQJkAAJkEA4IUCBNwxcqPTJ4nuZU3DecfIXM4IypbBg72lVr3xO0zY3VWEgvHgxbRAzum6H4K2nrwLRMuSrRtPvEPz2/bufnT82sh/sZyWtoFDGlEqo7lmjqJYCROD1TxxWleiRQDgiEFN7oSG7TGXKj111hwxKPLAuUdK4EAG49+gmsLK2xKXTt3HlnO5FknFfzx76/XxwvftMVY2b8Oe3ChIm1u3KfaK1M5iSUJV+4dnGtVE1Htx+osLQ9KJEiYzC+l28hoPoDmw7p4YsUka3u1clNC+o69Ga8pcESIAESIAEzJvAhQvA3r2+HQVe877uXF0oE2D3JEACJBAwAhR4A8YpVGtZWFigfcUCaoz/Dl/AykPa/xyplG/v+/cf6LtgGx48d4Nl1ChoUSaP70pByIkcORLK5kirWk5cd0jtXFOJP+DF1+/ce/BCZ4PT5xRef/iEY9cf+Mz2N923VjHY2ljB4+s3vDb6Sru/jVhIAuGAgNy7OQtmVDNd++/+YN+7uQpmQNY8aVR/r/X2c1VC7z289xy3rj7Up34G8mxyOXBZZWTPq3uWSEIOeIunCb7fPb9j/eL9khUglymbvap3cEfADoCztNQdQOeuPR9Uw0B6RcvlUC1OHboKEZUf3n2KpHbxkVE/D+h/groefXMGJEACJBA6BNgrCZAACZAACZAACZBAhCZAgTeMXP6mJXOimEMqNZtuzpvQceZ67Dp3S+3Wlcw3790h4m/tMUuw6ojuIKDhDcvALoFud5zUCa5rVTavstt74oYr6o5dhmPXHngTi95+/IxlB8/j+sMXwR3K3/Y5UyeFjVU0iMkKn2K32NAdvnw33I0OiDPuTOztXnV9bpyl4iu0ecv87RPGQdK4sVQePRIwFwLlaxZQ9+71C/fwV88FuHrurrd79+P7z9i39TRc7/68N9YvOYAzR676QnD3xmNcv6B7gZIus52vcsmYO2G9OjRN4uLkvlwxZwdkB2/cBLYoXjGXZCtnYWGBCnUKqvgGbUzn8evwxPWlShu8F0/fYO2/+wxJFZaulhex48bEs0evsGDyJnzVXs6oAs2T8a6ev4fnT95oKd1vfP1O4fMnbno7TE5X+mvfPl0SpNTco/vPsXH5YdWgSLmcKjT2LCyCth7jPhgnARIgARIgARIgARIgARIgARIggZAk4FPgDcm+2VcgCFhYWGBhtzqokCu9arX22GU0mbQSmTpOQvmh85G589/oOmeTEl2jRo6EUU3KQQ4SU5VDyMudNhkmtqqM6NGi4vCVe6j512Jk6zpFE3uXouKw+ciozaXn3M1wMzqQLYSG9taNVbQo6FKlkMoTsbueJjb/9d9eTFp/CFWdFmH7mRuoUziLKvfpyUFqJQc5o8RAZzXvumOXouzgeeiuzVu4/aVx+10HvvmcG9MkEFoE0jmkQOs+NWBpGRWXz97ByO7z0LH2WIzqtQCDO8xE22qj4DxuHT5qL4oMc5B6EwYtRcdaunpSV9oNajtDE0g/oGazkkicPJ6huleYPX96vH3zAT0aTVb9S7v+Ladh84rDiG5jhU6D6qjQq4EWqVS3MEpXy6fFgH1bTqNXk7/Rr8VU1b5Psyno1mCiOuBNVdB7tnFioNOQepCD2/ZvPY0+Taeo+jJep9rjMLLbXDx//FpfG8hbNBNix4uphGdZg9Qb2X0uDu4461XnV5FiFXKpKkd3n1eCebEKvgVeqRCU9Ug7OhIgARIgARIgARIIYwQ4HRIgARIgATMhQIE3DF1Ia6toWNi9rhJ6K+XJAGtNrPn85RvO332iduMliRsLrcrkwZFxHdCqbN5QmXnDYtlxZGx7DKhTAoUypcQPbZRDl+/h3nM3VMydHiMbl0PG5Am13ND97Va1EGZ2qI7q+TPj6Zv3mLrlOFYevoh86ZJj+9AWqFs4q8kJjG9eUZtnBjxzew+Z91XXF4gTIzo6Vy6Ig6PboVT2n18dN9kBM0kgnBIoWSk3JizujnqtyiBTjlTqmXH59G08e/wGeTTxs0mXykiRKrHX6qr9rwhKaG0so0eD1Lt99SE8Pb8rIXbgRO0ea1Haq65xJG78mPh7eS9Ub1gMrree4sqZO/j+/TtKVsmDoVNbq7GN60vcwsICrXpWg9PsDqhYtxDSZEqG50/fqHG/ffuu5tG2Xw2p6s05aOsYt6Ar/teuPBIkiYt7Nx6pNjFjW6Nm0xKwS5vEq761Ji73H98MDjlT4/WLd6re1XP3EE17jnpV+kWkUKmsiKS9QJNqWfOmRdz4pnf7W1gEbT3SLx0JhE8CnDUJkAAJkAAJkAAJkAAJkEBYJkCBNwxenQq5M2B+1zq449wXTxcN8nJn/+6CUU3L+2uWIUfqpKq+1PVraWLvV/r9p21Vk1WSxouFbtUKY+2Axrg0tbvq7+qMnmpObcrlVbZsjRvO6lhT1ZE2xvm/imdPlUS1OzO5i6+qFhYWqFkwC2Z3qomDY9rhyb8DcWJCRwxpUBqpEsdF8SypVdvB9Ut5a9ukVC4s6FYHMl9Z46Vp3fFfv4Zw1OpJO2+VmQhZAuwtVAjM2zIYy/Y7IVnKBL/sX2zd1mhSAoP/boVZ6waodnM2DESPEQ1RsXZB2MS08uoja550aNu3JiYv7aHqzd86GMOmtlFCbJbcOhu8XpWNIl++eKqdwjLOrA0DsHTfSIz/txva9K4Bu9Q/BWSjJl7R1BmSoUmnShg5swMWbBuixpXxZR5FTZhDkIYxba1R9X9FMWhSCzhvclRtxs7vgrotyyCWVgajHxl/0OSWak7CTFyBElm8avyKpewaXrJnhBqj/7hmXu38igRlPX71xXwSIAESIAESIAESIAESIAESCDcEONEwRyBSmJsRJ0QCJEACJEACJEACJEACJEACJBDuCXABJEACJEACJEACv4cABd7fw5mjkAAJkAAJkAAJmCbAXBIgARIgARIgARIgARIgARIggWAQoMAbDHhs+jsJcCwSIAESIAESIAESIAESIAESIAESIAHzJ8AVkgAJBJYABd7AEmN9EiABEiABEiABEiABEiCBP0+AMyCBP0TgpNtDuLi5+nJ/aDoclgRIgARIgARAgZcfAhIgARIgAbMmwMWRAAmQAAmQAAmQQEgSaHdxHZqeW+XLvf3mEZLDsC8SIAESIAESCDABCrw6VPRJgARIgAT8IVC5XhEs2++EToPq+FOLRSRAAiRAAiRAAiRAAiQQ5glwgiRAAiRgdgQo8JrdJeWCSIAESIAESIAESIAEgk+APZAACZAACZAACZAACZBA+CBAgTd8XCfOkgRIIKwS4LxIgARIgARIgARIgARIgARIgARIgATMn0AYXiEF3jB8cTg1EiABEiABEiABEiABEiABEiCB8EWAsyUBEiABEiCB302AAu/vJs7xSIAESIAESIAESAAgAxIgARIgARIgARIgARIgARIIEQIUeEMEIzshgdAiwH5JgARIgARIgARIgARIgATCA4Em51Yg4/5JvtzFD8/Cw/Q5RxIggT9OgBMggaAToMAbdHZsSQIkQAIkQAIkQAIkQAIkQAK/lwBHIwESIAESIAESIAEfBCjw+gDCJAmQAAmQAAmYAwGugQRIgARIgARIgARIgARIgARIIGIQoMAbMa6zX6tkPgmQAAmQAAmQAAmQAAmQAAmQAAmQgPkT4ApJgATMmAAFXjO+uFwaCZAACZAACZAACZAACQSOAGuTAAmQAAmQAAmQAAmENwIUeMPbFeN8SYAESCAsEOAcSIAESIAESIAESIAESIAESIAESIAEwgSBUBV4w8QKOQkSIAESIAESIAESIAESIAESIAESIIFQJcDOSYAESIAE/hwBCrwhwT5TJoCODELis8Q+zIpAKRt70JGBWX2ouRgSCD4B9kACJEACJEACJEACJEACJBDCBCjwhjBQdkcCJBASBNgHCZAACZAACZAACZAACZAACZAACZCA+RPgCkOCAAXekKB49SpARwYh8VliH2ZFYO/He6AjA7P6UHMxJEACJEACJPCnCHBcEiABEiABEiABPwlQ4PUTDQtIgARIgARIgATCGwHOlwRIgARIgARIgARIgARIgAQiGgEKvBHtinO9QoCOBEiABEiABEiABEiABEiABEiABEjA/AlwhSQQIQhQ4I0Ql5mLJAESIAESIAESIAESIAES8JsAS0iABEiABEiABEgg/BKg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eNl5QAmwHgmQAAmQAAmQAAmQAAmQAAmQAAmQgPkT4ApJgARCngAF3pBnyh5JgARIgARIgARIgARIgASCR4CtSYAESIAESIAESIAEAkiAAm8AQbEaCZAACZBAWCTAOZEACZAACZAACZAACZAACZAACZBAxCYQMQTeiH2NuXoSIAESIAESIAESIAESIAESIAESiBgEuEoSIAESiIAEKPBGwIvOJZMACZAACZAACZBARCfA9ZMACZAACZAACZAACZCAuRCgwGsuV5LrIAESCA0C7JMESIAESIAESIAESIAESIAESIAESMD8CYTrFVLgDdeXj5MnARIgARIgARIgARIgARIgARL4fQQ4EgmQAAmQAAmEPQIUeMPeNeGMSIAESIAESIAEwjsBzp8ESIAESIAESIAESIAESIAEfhMBCry/CTSHIQFTBJhHAiRAAiRAAiRAAiRAAiRAAiRAAiRg/gS4QhIITQIUeEOTLvsmARIgARIgARIgARIgARIggYATYE0SIAESIAESIAESCDQBCryBRsYGJEACJEACJPCnCXB8EiABEiABEiABEiABEiABEiABEtARoMCr42CePldFAiRAAiRAAiRAAiRAAiRAAiRAAiRg/gS4QhIggQhNgAJvhL78XDwJkAAJkAAJkAAJkEBEIsC1kgAJkAAJkAAJkAAJmB8BCrzmd025IhIgARIILgG2JwESIAESIAESIAESIAESIAESIAESCCcEgiHwhpMVcpphjkDXOZuQuOkoTNtyzNvcZm8/ofI7zdrgLZ8JEiAB8ybQuooTGpZwxOMHL70tdPH0bWhfYwxOHb7qLZ8JEiABEiABEiABEiCB302A45EACZAACYRlAhR4w/LV0ea2YPdpJXqKIGrsHDpNRmlHZ4gYuvPMDXzz9NRq8zeiEPj+/Qf+23IINds5IWuFTkhfsi2qth6Bhat3B/qzIJ+djbtPoP/YhajTcbTqL12JNijRYAC6j5iDpy/e+In1o/tnTJq7DuWaOELa5KjUBQ27jceuw+d8tbl0/T4S520cYGfcR3Dm6GsizDBJYOqIlUpkFaHV4BqVHIxOdcZhSIdZWDR1C25dcTXZNrQyb1y6h3duH3D3xqPQGiJc9nv64i007z0Z+Wr0QOpirVCq4UA4TV2Bt+/dQ2Q9z1+5IUu5jupelfvbuFPnFTtUfkDvZXlGSPvMZdoH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QAKhhQDnQQIkQAIkQAIkEKIEKPCGKF52TgIkQAIkQAIkEFgCrBc4AnFiRUOOTLQXHzharEUCJEACJEACJEACJEAClk+AAq/lX2NLWyHXQwIkQAIkQAIkQAIkQAIkQAIkEAIEZt07gbT7J/hzq59cDIHR2CUJ/JAAK5AACQSSAAXeQIJiNRIgARIgARIgARIgARIggdBIgHMiARIgARIgARIggfBNgAJv+L7+XD0JkAAJhB8CXCkJkAAJkAAJkAAJkAAJkAAJkAAJWCABCrx+LiqTJEACJEACJEACJEACJEACJEACJEAClk+AKyQBEiABSyFAgddSriTXQQIkQAIkQAIkQAIkEBIE2CcJkAAJkAAJkAAJkAAJhGoCFHhD9eXh5EiABMIOAc6UBEiABEiABEiABEiABEiABEiABEjA8gmEvhVS4A1914QzIgESIAESIAESIAESIAESIAESCOsEOH8SIAESIAES+E0EKPD+JtAchgRIgARIgARIgARMEWAeCZAACZAACZAACZAACZAACfwKAQq8v0KPbUng9xHgSCRAAiRAAiRAAiRAAiRAAiRAAiRAApZPgCskgSAToMAbZGRsQAIkQAIkQAIkQAIkQAIkQAJ/mgDHJwESIAESIAESIAEdAQq8Og70SYAESIAESMAyCXBVJEACJEACJEACJEACJEACJEACFk2AAq9FX97AL441SYAESIAESIAESIAESIAESIAESIAELJ8AV0gCJGB5BCjwWt415YpIgARIgARIgARIgARI4FcJsD0JkAAJkAAJkAAJkEAYIUCBN4xcKE6TBEiABEInAc6KBEiABEiABEiABEiABEiABEiABEjgTxL4PQLvn1zh7xg7XTqAjgx+x2+NY4QpAsUdnEBHBmHqR8vJkgAJkAAJkAAJkMCvEmB7EiABEiCB306AAu9vR84BSYAESIAESIAESIAESIAESIAESIAESIAESIAESCB4CFDgDQ6OV64AdGQQHL8l9uGXQJhO7/W4CzoyCNM/Yk6eBEiABEiABEiABEiABEiABH4PAY7yCwQo8P4CPDYlARIgARIgARIgARIgARIgARL4nQQ4FgmQAAmQAAmQgF8CFHj9EmGaBEiABEiABEgg7BPgCkiABEiABEiABEiABEiABEggnBCgwBtOLjSXaZoAc0mABEiABEiABEiABEiABEiABEiA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SIAESIAESIAESCDoBNiCBEKIwJcvgIuLaRdCQ7JbEgguAnc8XvkTd0XwPfr6fnANwX5IgARIgAR+gQAF3l+AZ2iaLh1ARwaGHwQj4YJAIBZZ3MEJdGQQiJ8Kq5AACZAACZAACZAACZAACZAACYRWAmFgXhR4w8BF4hRJgARIgARIgARIgARIgARIgARCNwHOjgRIgARIgAT+FAEKvMFB/soVgI4MguO3xD4sisBej7ugIwOL+lFzMcFBgH2QAAmQAAmQAAmQAAmQAAmQQLASoMAbrDjZGQkEFwH2QwIkQAIkQAIkQAIkQAIkQAIkQAIkYPkEuEIS+HUCFHh/nSF7IAESIAESIAESIAESIAESIIGQJcDeSYAESIAESIAESMAMAQq8ZsAwmwRIgARIgATCIgHOmQRIgARIgARIgARIgARIgARIIHwRoMAbvq63frUMSYAESIAESIAESIAESIAESIAESIAELJ8AV0gCJBAOCFDgDQcXmUskARIgARIgARIgARIggYAJsJQESIAESIAESIAESCCsEqDAG1avHOdNAiRAAn+CAMckARIgARIgARIgARIgARIgARIgARIIVQRCROANVSvkZEiABEiABEiABEiABEiABEiABEiABEKEADslARIgARL48wQo8P75a8AZkAAJkAAJkAAJkIClE+D6SIAESIAESIAESIAESIAEQogABd4QAstuSYAEfoYA25AACZAACZAACZAACZAACZAACZAACVg+Aa4wOAlQ4A1OmuyLBEiABEiABEiABEiABEiABEgg+AiwJxIgARIgARIggR8SoMD7Q0SsQAIkQAIkQAIkENoJcH4kQAIkQAIkQAIkQAIkQAIkEF4JUOANr1c+fK6bqyYBEiABEiABEiABEiABEiABEiABErB8AlwhCYQrAhR4w9Xl5mJJgARIgARIgARIgARIgAS+E2CMBEiABEiABEiABMI+AQq8Yf8acgUkQAIkQAIhTYD9kwAJkAAJkAAJkAAJkAAJkAAJkEAoJUCBNxgvDLsiARIggbBGwNvbG4M7zkWnuuPx3O11kKbv9vAl6hbthyZlBgep3a9U7vzPeDXmjUsPfqUbtiUBEiABEiABEiABEiCBXyLAxiRAAiQQmghQ4A1NV+MHc3n00h2TNh5BtRGLkbvbdCRrNhpZOk5G+UHzMWDZLlx7+PwHPbDYUgh8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" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAACigAAAHgCAYAAAA1nXeEAAAQAElEQVR4AezdB3wURRuA8fcSQEAQpIiIYsGOlc9eEQUsKGJBFAtgQWnSkV6kS1GQoggCilJUQAEBASmCHVBUUER67y0Q0r57J9nNXnKXXJJLctk8/Ni72dnZ2Zn/7u1usm/mIhL4hwACCCCAAAIIIIAAAggggAACbhegfwgggAACCCCAAAIIIIAAAggg4H4BeogAAggggAACCISdQITwDwEEEEAAAQRCLEB1CCCAAAIIIIAAAggggAACCCDgfgF6iAACCCCAAAIIIIAAAggggAAC7hegh1kVIEAxq4KsjwACCCCAAAIIIIAAAgggkP0CbAEBBBBAAAEEEEAAAQQQQAABBNwvQA8RQAABBBBAAAEEXCdAgKLrdikdQgABBLIuQA0IIIAAAggggAACCCCAAAIIIOB+AXqIAAIIIIAAAggggAACCCCAAALuF6CHCOS2AAGKub0H2D4CCCCAAAIIIIAAAgjkBwH6iAACCCCAAAIIIIAAAggggAAC7heghwgggAACCCCAAAIIIJBCgADFFCDMIoCAGwToAwIIIIAAAggggAACCCCAAAIIuF+AHiKAAAIIIIAAAggggAACCCCAgPsF6CECCOR1AQIU8/oepP0IIIAAAggggAACCOSEANtAAAEEEEAAAQQQQAABBBBAAAH3C9BDBBBAAAEEEEAAAQQQQCDEAgQohhiU6hAIhQB1IIAAAggggAACCCCAAAIIIICA+wXoIQIIIIAAAggggAACCCCAAAIIuF+AHiKAAAL5XYAAxfx+BNB/BBBAAAEEEEAgfwjQSwQQQAABBBBAAAEEEEAAAQQQcL8APUQAAQQQQAABBBBAAAEEEAgzAQIUw2yHuKM59AIBBBBAAAEEEEAAAQQQQAABBNwvQA8RQAABBBBAAAEEEEAAAQQQQMD9AvQQAQQQQACBrAkQoJg1P9ZGAAEEEEAAAQRyRoCtIIAAAggggAACCCCAAAIIIICA+wXoIQIIIIAAAggggAACCCCAAAIuEyBA0c8OJQsBBBBAAAEEEEAAAQQQQAABBNwvQA8RQAABBBBAAAEEEEAAAQQQQMD9AvQQAQQQQAABBHJXgADF3PVn6wgggAACCOQXAfqJAAIIIIAAAggggAACCCCAAALuF6CHCCCAAAIIIIAAAggggAACCCDgfoEM9ZAAxQxxURgBBBBAAAEEEEAAAQQQQACBcBGgHQgggAACCCCAAAIIIIAAAggg4H4BeogAAggggAACCORtAQIU8/b+o/UIIIAAAjklwHYQQAABBBBAAAEEEEAAAQQQQMD9AvQQAQQQQAABBBBAAAEEEEAAAQTcL0APc1SAAMUc5WZjCCCAAAIIIIAAAggggAAClgDvCCCAAAIIIIAAAggggAACCCDgfgF6iAACCCCAAAIIIJC/BQhQzN/7n94jgED+EaCnCCCAAAIIIIAAAggggAACCCDgfgF6iAACCCCAAAIIIIAAAggggAAC7heghwjkKQECFPPU7qKxCCCAAAIIIIAAAgggED4CtAQBBBBAAAEEEEAAAQQQQAABBNwvQA8RQAABBBBAAAEEEEAgKwIEKGZFj3URQCDnBNgSAggggAACCCCAAAIIIIAAAgi4X4AeIoAAAggggAACCCCAAAIIIICA+wXoIQII5CsBAhTz1e6mswgggAACCCCAAAIIJAuQQgABBBBAAAEEEEAAAQQQQAAB9wvQQwQQQAABBBBAAAEEEEAgNwUIUMxNfbadnwToKwIIIIAAAggggAACCCCAAAIIuF+AHiKAAAIIIIAAAggggAACCCCAgPsF6CECCCCAQAYECFDMABZFEUAAAQQQQAABBMJJgLYggAACCCCAAAIIIIAAAggggID7BeghAggggAACCCCAAAIIIIBAXhYgQDEv772cbDvbQgABBBBAAAEEEEAAAQQQQAAB9wvQQwQQQAABBBBAAAEEEEAAAQQQcL8APUQAAQQQQCAHBQhQzEFsNoUAAggggAACCDgFSCOAAAIIIIAAAggggAACCCCAgPsF6CECCCCAAAIIIIAAAggggAAC+VkgvwQo5ud9TN8RQAABBBBAAAEEEEAAAQQQyC8C9BMBBBBAAAEEEEAAAQQQQAABBNwvQA8RQAABBBBAIA8JEKCYh3YWTUUAAQQQQCC8BGgNAggggAACCCCAAAIIIIAAAgi4X4AeIoAAAggggAACCCCAAAIIIICA+wWyr4cEKGafLTUjgAACCCCAAAIIIIAAAgggkDEBSiOAAAIIIIAAAggggAACCCCAgPsF6CECCCCAAAIIIJCPBAhQzEc7m64igAACCPgKMIcAAggggAACCCCAAAIIIIAAAu4XoIcIIIAAAggg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+y0elO+jzNlSnaPtZXpXX/ySsSJOl/xB5dWXuVi6K0Zlrors7gFRyrZLWRhHinfA9sKtUTMgS5R02ZOxdkBW/J69NnYXaYtb5X7EnqJt8VuWasjtkSRKfka8kQAzkAAJkAAJkAAJkAAJkAAJkAAJkAAJWD8BSkgCJEACJEACJEACJEACJEACJEACJGD9BCghCZAACXx2BKig+NkdcgpMAiRAAiRAAiRAAiQAkAEJkAAJkAAJkAAJkAAJkAAJkAAJkID1E6CEJEACJEACJEACJEACJEACJEACn5oAFRQ/9RH4HNqnjCRAAiRAAiRAAiRAAiRAAiRAAiRAAtZPgBKSAAmQAAmQAAmQAAmQAAmQAAmQAAlYPwFKSAIkQAIkQALvSIAKiu8IjNlJgARIgARIgARIID4QYB9IgARIgARIgARIgARIgARIgARIgASsnwAlJAESIAESIAESIAESIAESIAESIAFLJ0AFxTcfQeYgARIgARIgARIgARIgARIgARIgARKwfgKUkARIgARIgARIgARIgARIgARIgARIwPoJUEISIAESIAESIIGPTIAKih8ZOJsjARIgARIgARIQAjQkQAIkQAIkQAIkQAIkQAIkQAIkQALWT4ASkgAJkAAJkAAJkAAJkAAJkAAJkAAJWD+BmCWkgmLMfJhKAiRAAiRAAiRAAiRAAiRAAiRAApZBgL0kARIgARIgARIgARIgARIgARIgARKwfgKUkARIgARIgARIgAQsjAAVFC3sgLG7JEACJEAC8YMAe0ECJEACJEACJEACJEACJEACJEACJGD9BCghCZAACZAACZAACZAACZAACZAACZCA9ROghB+WABUUPyxf1k4CJEACJEACJEACJEACJEACJPB2BJiLBEiABEiABEiABEiABEiABEiABEjA+glQQhIgARIgARIgARIggc+MABUUP7MDTnFJgARIQEeANgmQAAmQAAmQAAmQAAmQAAmQAAmQgPUToIQkQAIkQAIkQAIkQAIkQAIkQAIkQALWT4ASkkD8JkAFxfh9fNg7EiABEiABEiABEiABEiABSyHAfpIACZAACZAACZAACZAACZAACZAACVg/AUpIAiRAAiRAAiRAAiRAAiTwTgSooPhOuJiZBEggvhBgP0iABEiABEiABEiABEiABEiABEiABKyfACUkARIgARIgARIgARIgARIgARIgARKwfgKUkARIwLoJUEHRuo8vpSMBEiABEiABEiABEiCBtyXAfCRAAiRAAiRAAiRAAiRAAiRAAiRAAtZPgBKSAAmQAAmQAAmQAAmQAAmQwEcl8N4KivceBYGGDDgG3nUMMD/HDMcAxwDHAMcAxwDHAMcAxwDHAMcAxwDHAMeA9Y8BHmMeY44BjgGOAY4BjgGOAY4BjgGOAY4BjgGOAY4B6x8DPMY8xhwDHAPWPQbeV5vx/RUUH2uAaXCPDMiAY4BjgGOAY4BjgGOAY+DTjgHyJ3+OAY4BjgGOAY4BjgGOAY4BjgGOAY4BjgGOAesfAzzGPMYcAxwDHAMcAxwDHAMcAxwDHAMcAxwDH3UMfHIFRR8PJ9B8fgx4zHnMOQY4BjgGOAY4BjgGOAY4BjgGOAY4BjgGOAasfwzwGPMYcwxwDHAMcAxwDHAMcAxwDHAMcAxwDHAMcAxY/xjgMeYx5hjgGOAY4BiIaQx8egVFT+0A0cCHDMiAY4BjgGOAY4BjgGPg/cYA+ZEfxwDHAMcAxwDHAMcAxwDHAMcAxwDHAMcAx4D1jwEeYx5jjgGOAY4BjgGOAY4BjgGOAY4BjgGOAY4BixoDn1xB8X078GnKf9xWHzwNBs3HZ/BxjzJbIwESIAESIAESIAESIAESIAESiH8E2CMSIAESIAESIAESIAESIAESIAESIAHrJ0AJSYAESIAESIAE4jMB2/jcOfaNBEiABEiABEjAggiwqyRAAiRAAiRAAtQkmqEAABAASURBVCRAAiRAAiRAAiRAAtZPgBKSAAmQAAmQAAmQAAmQAAmQAAmQAAlYP4E4lJAKinEIk1WRAAmQAAmQAAmQAAmQAAmQAAmQQFwSYF0kQAIkQAIkQAIkQAIkQAIkQAIkQALWT4ASkgAJkAAJkAAJkIA1E6CCojUfXcpGAiRAAiTwLgSYlwRIgARIgARIgARIgARIgARIgARIwPoJUEISIAESIAESIAESIAESIAESIAESIAHrJ0AJ4xEBKijGo4PBrpAACZAACZAACZAACZAACZCAdRGgNCRAAiRAAiRAAiRAAiRAAiRAAiRAAtZPgBKSAAmQAAmQAAmQAAmQQPQEqKAYPRumkAAJkIBlEWBvSYAESIAESIAESIAESIAESIAESIAErJ8AJSQBEiABEiABEiABEiABEiABEiABErB+ApSQBKyIABUUrehgUhQSIAESIAESIAESIAESIIG4JcDaSIAESIAESIAESIAESIAESIAESIAErJ8AJSQBEiABEiABEiABEiABEvhwBKig+OHYsmYSIIF3I8DcJEACJEACJEACJEACJEACJEACJEAC1k+AEpIACZAACZAACZAACZAACZAACZAACVg/AUpIAiRAAgYCVFA0oKCHBEiABEiABEiABEiABKyNAOUhARIgARIgARIgARIgARIgARIgARKwfgKUkARIgARIgARIgARIgARIgATiLwEqKMbfY8OeWRoB9pcESIAESIAESIAESIAESIAESIAESMD6CVBCEiABEiABEiABEiABEiABEiABEiAB6ydACUmABEiABOKMABUU4wwlKyIBEiABEiABEiABEohrAqyPBEiABEiABEiABEiABEiABEiABEjA+glQQhIgARIgARIgARIgARIgARIgAeslQAVF6z227yoZ85MACZAACZAACZAACZAACZAACZAACVg/AUpIAiRAAiRAAiRAAiRAAiRAAiRAAiRg/QQoIQmQAAmQAAnEGwJUUIw3h4IdIQESIAESIAESsD4ClIgESIAESIAESIAESIAESIAESIAESMD6CVBCEiABEiABEiABEiABEiABEiABEiCB6AhYj4JidBIyngRIgARIgARIgARIgARIgARIgARIwHoIUBISIAESIAESIAESIAESIAESIAESIAHrJ0AJSYAESIAESIAErIYAFRSt5lBSEBIgARIgARKIewKskQRIgARIgARIgARIgARIgARIgARIwPoJUEISIAESIAESIAESIAESIAESIAESIAHrJ/CpJKSC4qciz3ZJgARIgARIgARIgARIgARIgAQ+RwKUmQRIgARIgARIgARIgARIgARIgARIwPoJUEISIAESIAESIAESIIEIAlRQjABBhwRIgARIwBoJUCYSIAESIAESIAESIAESIAESIAESIAHrJ0AJSYAESIAESIAESIAESIAESIAESIAErJ8AJbRUAlRQtNQjx36TAAmQAAmQAAmQAAmQAAmQwKcgwDZJgARIgARIgARIgARIgARIgARIgASsnwAlJAESIAESIAESIAESIIE4IkAFxTgCyWpIgARI4EMQYJ0kQAIkQAIkQAIkQAIkQAIkQAIkQALWT4ASkgAJkAAJkAAJkAAJkAAJkAAJkAAJWD8BSkgCnysBKih+rkeecpMACZAACZAACZAACZDA50mAUpMACZAACZAACZAACZAACZAACZAACVg/AUpIAiRAAiRAAiRAAiRAAiQQTwhQQTGeHAh2gwSskwClIgESIAESIAESIAESIAESIAESIAESsH4ClJAESIAESIAESIAESIAESIAESIAESMD6CVBCEiABEogdASooxo4bS5EACZAACZAACZAACZDApyHAVkmABEiABEiABEiABEiABEiABEiABKyfACUkARIgARIgARIgARIgARIgASshQAVFKzmQFOPDEGCtJEACJEACJEACJEACJEACJEACJEAC1k+AEpIACZAACZAACZAACZAACZAACZAACVg/AUpIAiRAAiTwaQhQQfHTcGerJEACJPDJCUy8tQndLy+k+cQMRt9YF+uxcCboNvpcWUITDxgcf3Ej1sfxMyz41iJPurUZo7TfCM26T8phxcMjb33MImcMfhWGh2HPaeIBg5d4FfnwMEwCJEACJEACJEACJEACJEACH5IA6yYBEiABEiABEiABEiABEiABEiABRYAKigpD/LHWbd2PTKWaGszMf/6L0rmQ0DDkrfqdIU+zriOi5Nl54CR6DZ2Gms37IW+Vtij7dVe06D4Ksxetx/MXwSb5nz0PMtQlbc9YGFVZpuugqYY8tVr8ZCgveaWMmH/X7lB1T527Ev/rOBQFqrdD0Zod8XW7wdiw7aChjLEnOCQUY/9cggbtfkGhGu3RtPNwSPnnQcHYse+Eoc3BY+caF6OfBEggDgicD7qDI8+v0XxiBqJkGNvD+TQ8CMdeXKeJBwyeaMcitseR5aIncE6bp+Q3QnMbn5LBzZDH0R+kN6S8fPUKoa/CaeIBg1dUUHzDaGUyCVg6AfafBEiABEiABEiABEiABEiABEiABEjA+glQQhIgARIgARKwTAJUUIxnx6104Vzw8/Yy9Grdln0Gv96z59ApPHv2Qh9E1TIFDH7x/DppARp3GoaFK7fi5NkrEAXEazfvYcuuIxgwZja+aT8EN+/cl6xxapas3YHWPUdj+OQF2H3wFB4/eY57Dx/j4NGzaNPrN8xfttmkvXsPHuPbDkMwbvpS7D96Bg8fP8X2fcdV+f91GIoZC9eY5GeABEiABEiABOIFAXaCBEiABEiABEiABEiABEiABEiABEjA+glQQhIgARIgARIgARIgARIgARIgARIggTghEK8VFONEQgurxNbWBrUrFzX0WhT97t5/ZAiLZ/Pu15/Zc3F2RLlieSRamTmLN+D3eSuVX6wE9nbInikVXF2cJKjM8TOX0GXAFISFh6twXFnb9hxTiokZ0waicd0KKFEwu0nVv06er5QW9ZETZv6Lwycu6INwdEiAHJlSK/foqYvYuOOwIY0eEiABEiABEiABEiABEiABEiAB6yVAyUiABEiABEiABEiABEiABEiABEiABKyfACUkARIgARIgARL4PAlQQTEeHvc6VYrBxsbG0LPl/+02+MXz35b94igjyol65cMXwSEYOXWhihcrdWAAVs8ejL/G98LWf0ahZcOqEq3M3sOnsXrTXuWPSyttyiSYMaoburb6ChMHt0f7pjUN1cuOiqIcKRG37z3EwhVbxKuMKDX+N28o5o3/EdsWjULdaiVVPC0SIAESIIE4J8AKSYAESIAESIAESIAESIAESIAESIAErJ8AJSQBEiABEiABEiABEiABEiABEiABErB+AhYhIRUU4+FhShrgi6L5sxp6ttZIIfHMhWu4dvOeIa1q2YIG/5ZdR/D02QtDuNU3VZHY30eFnRwT4PvGXyDA31uFxVq9Me4VFP/3ZQW4uzpL9cpUKV1AuXrr0rVbyrtr/wkEBYcqv1iiPOmT0EO8arfHbm3rwtWoHpVAiwRIgARIgARIgARIgARIgATiJQF2igRIgARIgARIgARIgARIgARIgARIwPoJUEISIAESIAESIAESIIHYEKCCYmyofYQytSq9/szzviOnceO2Tilx887Xnz329/FCodyZDL25fvOuwS+egnlep0lYPh8tn1AWv5grN+6IE6cmV9Y0JvXplQ71kS9eBCvvvQePlau38uVIr/cq19nRAZnSBCo/LRIgARIwIcAACZAACZAACZAACZAACZAACZAACZCA9ROghCRAAiRAAiRAAiRAAiRAAiRAAiRAAtZPgBJ+FgSooBhPD3OZIrng5+1l6N2qDbrdDrfuOWqIq1quIOzsXh/Ch0+eG9LE45vQUxwT4+nhagg/ePjU4H+TJzQ07E1ZVLqvl24XRBXQLFvb1/3Tgob/x09f7/QokQk93MUxMQk93UzCDJAACZAACZAACZAACZAACXwYAqyVBEiABEiABEiABEiABEiABEiABEjA+glQQhIgARIgARIgARIgARL4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XNiK5bdParUA7nYO6J++nPLHxgrW+vHfvXNoc2SJoXjtgKzI55nMEKaHBEiABEiABEiABCyDAHtJAiRAAiRAAiRAAiRAAiRAAiRAAiRg/QQoIQmQAAmQAAmQAAmQAAmQAAmQQFwSoIJiXNL8hHU52dqjmHdKQw/CXr00+N/kqbVvFhKu6a9M1s2j8POZ9XilFaqWKBN2FGmDrO6JtNDb/+95dFXVJXUGrBuIOvtm48Dj6whwdMO4rNUxNXstvPGPGUiABEiABEiABEiABEiABEiABEiABKyfACUkARIgARIgARIgARIgARIgARIgARKwfgKUkARIgARI4LMmQAXFz/rwRy98Olcf5PdMhgS2dtFneocU2dWxrG86JHJ0f4dSzEoCJEACJEACJBCXBFgXCZAACZAACZAACZAACZAACZAACZCA9ROghCRAAiRAAiRAAiRAAiRAAiRAAiQQnwhQQfHDHA2LqjWTmz/yeSZDKueEcLNzUH0/8+weep9ei1xbxmDe9cMq7m0td3tH5PdKhuzuAfB3cIUtbNSOjLOuHVC7KVbcPQ1PwkPetjrmIwESIAESIAESIAESIAESIAESIIH4SoD9IgESIAESIAESIAESIAESIAESIAESsH4ClJAESIAESIAESOA9CNi+R1kWtRICAzOUx5oCTbC/WDtcKdMde4q2RVoXHyXd8/BQdDy+DNeDn6jw21gZXf2wOn8TbCrUAqdK/oDrZXuiT7rS0P/tengF/U//pw/SJQESIAESIIG3JMBsJEACJEACJEACJEACJEACJEACJEAC1k+AEpIACZAACZAACZAACZAACZAACZAACVgTAVuzwjDysyYgyomdUhc1MAh6GYZlt04Ywu/qcbS1Q8dURZHC2ctQdPGtYwY/PSRAAiRAAiRAAiRAAiRAAiRAAp+IAJslARIgARIgARIgARIgARIgARIgARKwfgKUkARIgARIgARIgAQ+IQEqKH5C+PG56ZuRdkwUJcX36W/4q1d4GPrCUEVweJjBTw8JkAAJfC4EKCcJkAAJkAAJkAAJkAAJkAAJkAAJkID1E6CEJEACJEACJEACJEACJEACJEACJEAC1k+AEr49ASoovj0rq8q55f5FTLu6D7dCnkaRa9ntkxh1YZtJfOGEKQzhyZd3o+7+ufjm4N/412hnxV/ObcKOh5cR8irckFc8N4Of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CCCAAAIIIIAAAggggAACzheIN0ICFOORkIEAAggggAACCCCAAAIIIICArwvQfwQQQAABBBBAAAEEEEAAAQQQcL4AI0QAAQQQQAABBLxfgABF739G9BABBBBAwNsF6B8CCCCAAAIIIIAAAggggAACCDhfgBEigAACCCCAAAIIIIAAAggggIDzBRhhsgsQoJjspDSIAAIIIIAAAggggAACCCBwrQLURwABBBBAAAEEEEAAAQQQQAAB5wswQgQQQAABBBBAAAHnCxCg6PxnzAgRQACBSwlwHQEEEEAAAQQQQAABBBBAAAEEnC/ACBFAAAEEEEAAAQQQQAABBBBAwPkCjBABrxMgQNHrHgkdQgABBBBAAAEEEEAAAd8XYAQIIIAAAggggAACCCCAAAIIIOB8AUaIAAIIIIAAAggggAAClxIgQPFSQly/YoGTEZH69Jvf1K73GD364puqXOdVPdy4h1r3HKWRH0/TyVORCbZ57tw5/Tj7X/UY9D81bDXQ1rvv2S5q2mmIhn34jdZv3plgPTIREAQIIIAAAggggAACCCCAAAIIIOB8AUaIAAIIIIAAAggggAACCCCAAALOF2CECCDgOAECFB33SG/sgExw4gtt31H/ERP10+x/tX7zDhuQuHHrLs38c7Fm/rFYaUODE+xkv+Gfq33vMfr6hz/134r1tt6OXfv118KV+uDzGcqUMSzBemQigAACCCCAAAIIJL8ALSKAAAIIIIAAAggggAACCCCAgPMFGCECCCCAAAIIIIAAAgggcL0FCFC83sI3sH0T1Ff6rpdktvlL1qZIT2b8vkAr1m5J9F7331k5wWtbtu/RxG9nJXjNZN5WubSyZ8lkkk7cGBMCCCCAAAIIIIAAAggggAACCDhfgBEigAACCCCAAAIIIIAAAggggIDzBRghAggggMBFAgQoXgTipNM1G7an+HA2bNrhuWdgQIBG92ulud8M1epZ4zV36lA1fPxuz/XYibWb4/a1VZPHNHPi21r1+4da9MNo9evUJHZx0ggggAACCCCAwCUEuIwAAggggAACCCCAAAIIIIAAAs4XYIQIIIAAAggggAACCCCAAALeLkCAorc/oWvo35qN266h9hVUjVX02ImTnrOCeXPorjsqKmvmDDYva6YMypwxnU1fvDt2PCJO1hO1qytf7mzy8/NT2tBg5cmZNc51ThBwosDK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" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABXgAAAPoCAYAAABkvZZOAAAQAElEQVR4AeydB2AURRuGvxPpogjSRIoCIkV6771XqdJ77733DtJ7F5GO9N577yIgP4ggIioIdqT9+04ym81xd7lLLskleSFzOzt9nt2dnfnm25nXXvIfCZAACZAACZAACZAACZAACZAACZBAZCfA+pEACZAACURSAq8J/5EACZAACZAACZAACZCASYAWEiABEiABEiABEiABEiCBiESAAt6IdLVYVhLwJQIsCwmQAAmQAAmQAAmQAAmQAAmQAAmQQOQnwBr6PAEKeH3+ErGAJEACJEACJEACJEACJEACJOD7BFhCEiABEiABEiCB8CFAAW/4cGeuJEACJEACJBBVCbDeJEACJEACJEACJEACJEACJEACXiRAAa8XYTIpbxJgWiRAAiRAAiRAAiRAAiRAAiRAAiRAApGfAGtIAiQQUgIU8IaUIOOTAAmQAAmQAAmQAAmQAAmEPgHmQAIkQAIkQAIkQAIk4JAABbwOsdCRBEiABEggohJguUmABEiABEiABEiABEiABEiABEggKhGIqgLeqHSNWVcSIAESIAESIAESIAESIAESIAESiKoEWG8SIAESiPQEKOCN9JeYFSQBEiABEiABEiABEgiaAEOQAAmQAAmQAAmQAAmQQMQkQAFvxLxuLDUJkEB4EWC+JEACJEACJEACJEACJEACJEACJEACkZ9ABKohBbwR6GKxqCRAAiRAAiRAAiRAAiRAAiRAAr5FgKUhARIgARIggfAmQAFveF8B5k8CJEACJEACJBAVCLCOJEACJEACJEACJEACJEACJBAqBCjgDRWsTJQEgkuA8UiABEiABEiABEiABEiABEiABEiABCI/AdaQBLxHgAJe77FkSiRAAiRAAiRAAiRAAiRAAiTgXQJMjQRIgARIgARIgASCIEABbxCA6E0CJEACJEACEYEAy0gCJEACJEACJEACJEACJEACJBA1CVDAG7WuO2tLAiRAAiRAAiRAAiRAAiRAAiRAAiQQ+QmwhiRAAlGIAAW8Uehis6okQAIkQAIkQAIkQAIkEJgAz0iABEiABEiABEiABCI6AQp4I/oVZPlJgARIICwIMA8SIAESIAESIAESIAESIAESIAESIAGfJOBVAa9P1pCFIgESIAESIAESIAESIAESIAESIAES8CoBJkYCJEACJOA7BCjg9Z1rwZKQAAmQAAmQAAmQQGQjwPqQAAmQAAmQAAmQAAmQAAmEMgEKeEMZMJMnARJwhwDDkAAJkAAJkAAJkAAJkAAJkAAJkAAJRH4CrGFoEKCANzSoMk0SIAESIAESIAESIAESIAESIIHgE2BMEiABEiABEiABtwlQwOs2KgYkARIgARIgARLwNQIsDwmQAAmQAAmQAAmQAAmQAAlEdQIU8Eb1OyBq1J+1JAESIAESIAESIAESIAESIAESIAESiPwEWEMSiJIEKOCNkpedlSYBEiABEiABEiABEiCBqEyAdScBEiABEiABEiCByEOAAt7Icy1ZExIgARIgAW8TYHokQAIkQAIkQAIkQAIkQAIkQAIk4OMEKOD1wgViEiRAAiRAAiRAAiRAAiRAAiRAAiRAApGfAGtIAiRAAr5IgAJeX7wqLBMJkAAJkAAJkAAJkEBEJsCykwAJkAAJkAAJkAAJkECYEaCAN8xQMyMSIAESsCfAcxIgARIgARIgARIgARIgARIgARIggchPIHRrSAFv6PJl6iRAAiRAAiRAAiRAAiRAAiRAAiTgHgGGIgESIAESIIFgEKCANxjQGIUESIAESIAESIAEwpMA8yYBEiABEiABEiABEiABEiABTYACXk2CRxKIfARYIxIgARIgARIgARIgARIgARIgARIggchPgDWM4gQo4I3iNwCrTwIkQAIkQAIkQAIkQAIkEFUIsJ4kQAIkQAIkQAKRkQAFvJHxqrJOJEACJEACJBASAoxLAiRAAiRAAiRAAiRAAiRAAiQQYQhQwBthLpXvFZQlIgESIAESIAESIAESIAESIAESIAESiPwEWEMSIAHfJkABr29fH5aOBEiABEiABEiABEiABCIKAZaTBEiABEiABEiABEggHAhQwBsO0JklCZAACURtAqw9CZAACZAACZAACZAACZAACZAACZCAtwj4roDXWzVkOiRAAiRAAiRAAiRAAiRAAiRAAiRAAr5LgCUjARIgARIIEQEKeEOEj5FJgARIgARIgARIgATCigDzIQESIAESIAESIAESIAESeJUABbyvMqELCZBAxCbA0pMACZAACZAACZAACZAACZAACZAACUR+AqyhPwEKeP1B8EACJEACJEACJEACJEACJEACJBAZCbBOJEACJEACJBC5CVDAG7mvL2tHAiRA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IIGIS4AC3oh77cK65MyPBEiABEiABEiABEiABEiABEiABEgg8hNgDUmABCIYAQp4I9gFY3FJgARIgARIgARIgARIwDcIsBQkQAIkQAIkQAIkQAK+QIACXl+4CiwDCZAACURmAqwbCZAACZAACZAACZAACZAACZAACZBAqBHwGQFvqNWQCZMACZAACZAACZAACZAACZAACZAACfgMARaEBEiABEjAuwQo4PUuT6ZGAiRAAiRAAiRAAiTgHQJMhQRIgARIgARIgARIgARIwA0CFPC6AYlBSIAEfJkAy0YCJEACJEACJEACJEACJEACJEACJBD5CbCGzghQwOuMDN1JgARIgARIgARIgARIgARIgAQiHgGWmARIgARIgASiGAEKeKPYBWd1SYAESIAESIAE/AjwlwRIgARIgARIgARIgARIgAQiAwEKeCPDVWQdQpMA0yYBEiABEiABEiABEiABEiABEiABEoj8BFhDEoiwBCjgjbCXjgUnARIgARIgARIgARIgARIIewLMkQRIgARIgARIgAR8iwAFvL51PVgaEiABEiCByEKA9SABEiABEiABEiABEiABEiABEiCBMCBAAW8YQHaVBf1IgARIgARIgARIgARIgARIgARIgAQiPwHWkARIgARCiwAFvKFFlumSAAmQAAmQAAmQAAmQgOcEGIMESIAESIAESIAESIAEPCJAAa9HuBiYBEiABHyFAMtBAiRAAiRAAiRAAiRAAiRAAiRAAiQQ+QkEXUMKeINmxBAkQAIkQAIkQAIkQAIkQAIkQAIk4NsEWDoSIAESIIEoS4AC3ih76VlxEiABEiABEiCBqEiAdSYBEiABEiABEiABEiABEohcBCjgjVzXk7UhAW8RYDokQAIkQAIkQAIkQAIkQAIkQAIkQAKRnwBrGAkIUMAbCS4iq0ACJEACJEACJEACJEACJEACoUuAqZMACZAACZAACfgqAQp4ffXKsFwkQAIkQAIkEBEJsMwkQAIkQAIkQAIkQAIkQAIkQAJhSoAC3p50froAABAASURBVDDFzcw0AR5JgARIgARIgARIgARIgARIgARIgAQiPwHWkARIIPQJUMAb+oyZAwmQAAmQAAn4BIGnz57L1Rs/yJEzV5R58OgPp+XyJKzTROhBAiRAAu4TYEgSIIFQJPD3v0/k7OUb6v1//Nw1+ffJU6e5eRLWaSL0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RxIgARIgARIgARKIfARYIxIgARIgARIgARIgARIggUhOgALeSH6BWT0ScI8AQ5EACZAACZAACZAACZAACZAACZAACUR+AqxhZCRAAW9kvKqsEwmQAAmQAAmQAAmQAAmQAAmEhADjkgAJkAAJkAAJRBgCFPBGmEvFgpIACZAACZCA7xFgiUiABEiABEiABEiABEiABEiABMKXAAW84cs/quTOepIACZAACZAACZAACZAACZAACZAACUR+AqwhCZBAOBCggDccoDNLEiABEiABEiABEiABEojaBFh7EiABEiABEiABEiABbxGggNdbJJkOCZAACZCA9wkwRRIgARIgARIgARIgARIgARIgARIgAZcEIoWA12UN6UkCJEACJEACJEACJEACJEACJEACJBApCLASJEACJEACrxKggPdVJnQhARIgARIgARIgARKI2ARYehIgARIgARIgARIgARKIMgQo4I0yl5oVJQESeJUAXUiABEiABEiABEiABEiABEiABEiABCI/gchdQwp4I/f1Ze1IgARIgARIgARIgARIgARIgATcJcBwJEACJEACJBABCVDAGwEvGotMAiRAAiRAAiQQvgSYOwmQAAmQAAmQAAmQAAmQAAn4CgEKeH3lSrAckZFAmNfpwaPfZfL8r6RJ13GSq2J7qdVmuEyat9Ysx39Pn8mStbulXf9pUrBaFynboK8MGLdI7v/6mxmGFhIggchHgG1D5LumrBEJkAAJkAAJkAAJkIBPEWBhSCBcCVDAG674mTkJvErg+nc/SIbizYM0qzYdCBT59z/+lvodR8ucL7fI6UvX5cMPUkic2DHll4ePzHB9xyyQ0dOXy76j5yVxoviSPGlCuXDlpiR8+00zDC0kQAK+SYBtg29eF5aKBEiABDwjwNAkQAIkQAIkQAIk4H0CFPB6nylTJIFwIbBp93H5/oefJd37yeXg2omybFof+XxSLxnVu7kqz43b92Tr3pMS/fVosnbuIFk3b4gsnNBDNi0aLq9Hi6bChMXP6BkrpHbbEWGRFfMggYhLwIslZ9vgRZhMigRIgARIgARIgARIgARIgAR8kAAFvD54UdwtEsNFbgIQul7Zt0CcmdqViwYCcOvOT+q8YO7MkuCteMpu/bn5/T11miFdSsmYLpWyh8fPnsNnwyNb5kkCkYYA24ZIcylZERIgARIgARIgARJw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AAmQAAmQAAmQAAmQAAmQAAmQQEAEKPAGRCjs53OEJEACJEACJEACJEACJEACJEACJEAC4Z8AZ0gCJEACZglQ4DWLhUYSIAESIAESIAESIAESsFYCHDcJkEC4IeDlBcyZY+qWLQs3U+RESIAESIAEfp0ABd5fZ8gWSIAESMA6CXDUJEACJEACJEACJEACYZvA16/A7dum7v79sD1ujo4ESIAESCBECQQo8IboaNgZCZAACZAACZAACZAACZAACZAACZBAqBBgpyRAAiRAAtZJgAKvdV43jpoESIAESIAESIAEQosA+yUBEiABEiABEiABEiABEghDBCjwhqGLwaGQQPgiwNmQAAmQAAmQAAmQAAmQAAmQAAmQAAmEfwKcYWgToMAb2leA/ZMACZAACZAACZAACZAACZBARCDAOZIACZAACZAACQQLAQq8QYA1VlQH0JGB/qPEzwI/C/ws8DNg+Bzg5+HHPw+G/MJTXP9ZYEgCJEACJEACJEACJEACJEACQUmAAm9Q0mRbIUmAfZEACZAACZAACZAACZAACZAACZAACYR/ApwhCZBAAAQo8AYAKFDZV64AdGQQqA8LC0UkArs97oKODCLSZ55zJQESIIHQJcDeSeAXCbi7A337mrqhQ3+xYVYnARIgARIggeAlQIE3ePmydRIgARIggbBGgOMhARIgARIgARIgARIgARIgARIggXBEgAKvhYtJMwmQAAmQAAmQAAmQAAmQAAmQAAmQQPgnwBmSAAmQgLUToMBr7VeQ4ycBEiABEiABEiABEggJAuyDBEiABEiABEiABEiABMIkAQq8YfKycFAkQALWS4AjJwESIAESIAESIAESIAESIAESIAESCP8Ews4MKfCGnWvBkZAACZAACZAACZAACZAACZAACYQ3ApwPCZAACZAACQQzAQq8wQyYzZMACZAACZAACZBAYAiwDAmQAAmQAAmQAAmQAAmQAAn8DAEKvD9DjXVIIPQIsGcSIAESIAESIAESIAESIAESIAESIIHwT4AzJIFAE6DAG2hULEgCJEACJEACJEACJEACJEACYY0Ax0MCJEACJEACJBDRCVDgjeifAM6fBEiABEggYhDgLEmABEiABEiABEiABEiABEiABMIlAQq84fKy/vykWJMESIAESIAESIAESIAESIAESIAESCD8E+AMSYAEwg8BCrzh51pyJiRAAiRAAiRAAiRAAiQQ1ATYHgmQAAmQAAmQAAmQQBgnQIE3jF8gDo8ESIAErIMAR0kCJEACJEACJEACJEACJEACJEACJBAaBEJW4A2NGbJPEiABEiABEiABEiABEiABEiABEiCBkCXA3kiABEiABEKMAAXeEEPNjkiABEiABEiABEiABIwJME0CJEACJEACJEACJEACJPBrBCjw/hq/IKudvvU4JGw8AjefvPLTZtOJq5V98Z4zfuxMkEAEI8DpksBPEZg+ag3q/9EfG5cd+Kn6rEQCJEACJEACJEACJEACJEACJBCiBNjZTxCgwPsT0FiFBEKbwNev37ByywFUbzUc2cq1Q/riLVG5xVDMX70TXt7ePz289x4f4fq/9WjWcwKK1+uDlIWbImHehmg7YFqg2pRxVXUZpurUajfKYp2HT1+h+8j/oWjtXkhdYchMugAAEABJREFUtDl+r9EdHQbNwJ0HzyzW0Wf86hj17Vh7uGPdMSVc/t1zQYBTWb94nyo7YdDyAMuyQNgncOrCTfzV3RX5qnVR90+J+n0xfPJyvH3/IdCDv3jtnrpP5f4OjPvv4FmLbctzR/+sCOzz58nz16iiPbOk7zEz11hs2zBDni+L1u5Gu4HTUbHZYPXck/r5q3XF5y9ehkUZJwESIAESiBAEOEnMmQOz7ssXwiEBEiABEohgBCjwRrALzumGDwJdh89Gx8EzceT0VTg7OSJFkvg4ce46eo+eD5fekyFCyI/OdN+xCyhcswdGz1iNrXtO4pEmwmbLmApF8mWBx4dPgWpu3Jy1OHb2mr9lL9+4jxKaeLx43R7cf/wcmdMlx8vX77Bq60Fll3lYaiAoxmipbdpJwBoILN+0X4mb2/edwnv3j8iUNhlu3XuCKQs3o/xfA/HyzbtgmYadrek/F9y1F0Jt+k1Vz51PnoH/Q3L34XMo3ag/jmvPrMAOVl7+VGg6CD1GzcWabYcgAnXKpPHV88k+sp3/z7zAdsJyJEACJEACJGBtBO7cAW7fNnXfvlnbTDheEiABEiCBXyRg+hfbLzbI6iRgjQSsacyycldEnjgxo2HjnIE4um4c/ls8HIdWj0W2DCmxbe9JTFu85YemtPfoBdTtMAbumpDbv0NdHFk7Dtf3zMImrf1VU/tgwbiuAbYnwu74OevxW5bUFst+/foNLn0m4537BzT+syQu/zcDm/83CJd3TseQLg3w0fMzmveapELjRoJijMZtMk0C1kRARM5uI+aoIY/r30K7f6Zjy9zBOLdtCv4s9ztu33+KLkNnqfyAvKwZUuDpicX+ur3LR6lm4saKjkJ5Mqu43pMXNRWaDsa6HUdQu2IRONhH1mdZDL29v6oXSPU7jYVtpEgoVyy3xbKGGbLaV74ZcPbybTSo+ge2LxiKW/vnYMei4ZDn04FVY+DoEHD/hm0yTgIkQAIkQAIkQAIkEHEJcOYkEB4JUOANj1eVcwrXBGYv+1fNb7AmiObLkV7FxUuTIhHGD2ghUcxetj3QX1n28vZGz1Fz8U170z93TCe0b1wJqZIlUO0E1pNtEzoNmQXnKI5oWa+cxWo7DpxWqw0zpE6CkT0bI4qTgyprZ2uLVvXLo2KJvHj+yg2L1+5Wdr0XFGPUt8WQBKyVgGyF4K2JpA2qFVdCp42NjZpKzOjOGN/fBYkTxIZspSCrW1XGL3qTF2xWLTSvUwaySlYlNO/Bk5eQ1bTX7zxC1xbVIc8dz88Br+Dt989CtQVM8iTxsH7WALV6X2suwJ/hU1ao50LnZlUhwnbOzKkhz4wAK7IACZAACfwaAdYmARIgARIgARIgAashQIHXai6V6UAPXLyDjrM2oeLQ+fit82SkbDEahXrNQMspa3Hh3lOTCmdvP1YHtg1Y8p/KW33oImr+vQRZ209A5rbjVTuuGw7C46OnyqcX9gg8fvYaF67dRawYUVG1dAGTAcoKXhF9n710w+FTV0zyzRk27zqB+49fqPaK5c9mrkiAtl5/z8Pdh88wrl9zxIkV3WL5XYfPqTxZ8WdOoJHVeVJgy54TEvi6oBijb2OM+CHwweMT1i/aC9nLt0eTSWhWYRhaV/sbgzvMxublB+Bp9NX7R/deqP186//R32I4eegKP308e/QKi6ZuxbDO/0Pn+uPRpMxgdKwzFiO6zcORPRfUywU/FbTEuP5LVPse7h/xURvjnPEb0KWBq7JNHbFaK/H9552bB5ZM34ZB7Wep8fdqNhn/G78R7u8+IrK97feCwRILuUZlawPprUHVYhL4cbKCtWb5Qsq2afdxFf6KJ8+E9TuOqJWxTWuV9tNUskRxUbtiUUwa3Ao9W9XA589efvItJaSdkr/nwPYFw9RLpM+BEIVl9e7a7YeVeN2leTVLTdNOAiRAAiRAAiRAAiRAAiRAAhGaAAXekLj8wdTH32v3YeXB87h47xmiOdojc9L4uPfcDRuPX0HpAf/D8esPzPZ868krDFz6H9rP3IAbj18iTcLYajXUqZuPMHrNPjSdtMZsPRpDn8C5K7fVILKkT+FnRZ0y+ng5fbZIkIOYfEz+Blt9xNQa5X73t5ylzBWbD0AEmHpViimRWFYYWip7/sodlZUjUyoVGnt5fVYkn7l0G1+8vH2zf3WMvg0xYkLg6vl7WPm/nTh//AY83n9EijQJEcnWBtcv3MPSGf9i4sBlfupEixEFNZuWNOtixo6mykaP4axCvbdr80lsW3UYV8/dxTft/9QZksDD/RMunbqFyUNWYNOyA/qiJuH9m08xpOMc7N54AiIUSwGnKPYSKHfj0gP0aTEVW1YcwuN7z9X4v3zxwp4tJzG8y/8QKVL4+DX3zv0Dbtx9rJ7VOTKZ3wYlZ+Y0isnpizdV+Cve9MVbIPdyg6rFISuEjdsa06epJvIWUWZZ/a8iAXgZUifBkok9EFt7QSVFv4kXgNu696R6ASAvtAKzDUQAzTGbBEiABEiABEiABIKfAHsgARIggVAgED7+8g0FcGGhyzbl82Nptzq4Nas79v/dClsHN8Up1/bImz6ZGt4/6w6o0Njbff4WFu0+g3mdauLcpE7Y0L8xzk/uhFntqsPGxgb7L93BHq2McT2mQ5+ArKqTUaRIEl8Cs06fd+fhU7P5xsZzPqLrb1nSYNnGfajZZiRylG+PTKVao0Gnsdi0y/JqwPuPXqD/PwvVIW9DuzY0btokLXuIijFlsoQSmLhozk6Q/T49P3/B/UfPffN/ZYy+jTBilkCOfGlR46+SmLqmF6at7YVBk10wTYu79Kyuyp89dh2Xz95RcfGix3TGn02Km7iEyeLC7fV7xIwTDTU0AVjK6l2RMjnRols1/G9Lf0xc2k31MX1tH5Sskk8VWbtgN0SUVQkj73/jN+DF0zdo2K48Jq7ojqV7h6NZlyqqlJf2EmD636vx5uU7lKicBzM39FNtj1/UBa5LusBby9+5wfLnVzViJZ7+3kmhvciztY1kdtRy6Jhk3LkfuHtfyppzclCbPAukH9k6xVyZkLJduHpXdZUzc2p1KFvjbuORv1pXpC7aHFVaDMWspdshzwtViB4JWBkBDpcESIAESIAESIAESIAEgoqA+b8Sg6p1thOsBCrlzYQSOdKqFV36jhLEjIquVXRf07359JXebBK2qVAA5XNn8GOvkj8zKuXR2S7ef+Ynj4mwQcDtnYcaiHMUBxWa86JGcVJmt7e6siphwfvk+QX3NCFVVsYt3bAXXYbNxqFTV5AofmyI2CpbKrj0noROQ2aatODl7Y3W/abgwydPTBvWVpU3KWRgkFV+sgpRTFGjOEpg1kWLqhv/m7fuKv9XxqgasG4vwNHLytv6/myXIHkr5+i2ZTHXmK2tLWr8VRyxNGHWML94hdzIkD2lMj19YPlZIgXevHqP+RM3SRSte9dA1Oi6a6gMmpcsVQIlwDoafG7tHezQoE05RLa3w2dPL7x44qaVNP15/vgNhs9ogwq1CiFegph+CuzedAIytniJY2mib1VEimTjmx8vYSy49NCJ1L5GK468fa+7n/27d6I667g/efHml2Yqe3jLfVe5ZD4kTxLvl9r61cp6Yfvug2eo1XYUduw/rb69kDxxPJy6eBMDXRcroVf/bPzV/lifBEiABEiABEiABEiABEiABEKJwC91S4H3l/CFzcoZfP4gf/zqHby9v5odZM3fs5q1Z0mhW1n5SKtrtgCNoUrA4+Mn1b9D5MgqNOc5Oeq+vu7+4aO5bD+25690opqsgJu0YBNG926Kq7tmYvuCoTi+wRV7l/+tDkKSbRgWGR18NnbWWpy+dAty8FHubGn9tGsu8fb9B1+zvSbq+SaMIk6OOvHa/YNurr8yRqOmmfxBAklS6sS9NwE8D6aPXA33tx/whyYKZ88b8GdBPwxHJ3vETxRLJd+8fKtCYy9H/nRIlCyusVmlTx26qsLi5XP7EXeVUfPSZ02OhMniaDHr//HwuR/s7S3f+1F87h157ss9/TOzdvf4CDnMTeq2ql9BglB1+vt/1PRVaFyjJE5umogDq8aoZ9O5rVPUtjCywl8OcAvVgbLzYCNw4tx15KrUEQnzNsSB45cC1c977XPs+r/1aNZzAorX64OUhZuq+m0HTDNb/+vXb1i55QCqtxqObOXaIX3xlqjcYqi6F7y0l5lmK2lGuS/Hz1mHMo36I90fLshZoQPqdxqrDjvUsvlDAiRAAsFEgM2SAAmQAAmQgCkBCrymTKzeEsNgldw3mO5yaGNjg1QJYpmdp2NkW2X/4PlFhfTCFgFnJ93KV88vlq/PJ8/PatB2dnYq9M/7YHCg3pQhrdFEE1BiRIviWyVjmqTo2kJ3sNFCA4H3yOmrmDRvI3JlTYvAHnwUPer3dj/7cyiT7/h9vob+s2P0nUQ4j2TPl05tWyBbF1hytVuU/ikKUZx1n7ev30yfI/oG/1t/DBdP3ULcBDEg2yjo7YENnaLq+rDURUafVcTm2nvzSrfKO35i888zqZMwcfgQeJ2j6Dj5dzDZR597X+Ytq/Il/FE3f80uyMuYwnky4zef/bx/tI2gLO/xwVM117J+OQzr2hBJE36/nnFjR4dsDRPZzhYbdhzFK7f3qiw9HwJWHsi3PiZrLx6rtxqBx89eB3o2+45dQOGaPTB6xmps3XMSj56+QraMqVAkXxZ4+LwoMW6s6/DZ6Dh4JuR3m/yeTZEkPkRY7j16Plx6T4YIwMZ1RESu4jIUY2auwYVr95A6eUK1zZUchtioyz+YvnircRWmSYAESIAESIAESIAESCDYCFDgDTa0wduw/OGz4dhldJ+3FdVGLES+7lORovloJGw8Amla/eNv5/GiO6s/QvwtxMxQITB14WYUrd3LxMkfmjIg2TZBQk9/BHi9IOrfV7mlDXGODrrVgLaamFq2aG4xmbj8OXy27bh+D7KSSb4K3W7gNEj704e39bNFiEllA4N8fV4vUulFXINs36i7h27lrv7r5j8zRt/GGAmQwNOHr7B+8T6M7bMIvZpNRuuqo1DfZ8uHzf4cfiYNy6FnS2f+K1G06lMTUXwEYWUw8K6evwspN6LrPHRvPAHNKw7z7ePmpQcGJU2jjk66Fd2mOcAH94/KLAe/qYgZL3osZzNW6zPp7wf/7h29eKV/TvzoLD9/8YJszyD1WtYrJ0GoO0dH3TOqwh95zY4lQdyYSJsysXo2Xblx32wZGq2PgGzR06S7K0ZMWYEcmVNB9mAOzCz2Hr2Auh3GQL4B0r9DXRxZOw7X98zCpjkDsWpqHywY19WkGVm5u3zTfsSJGQ0btXJH143Df4uH49DqsciWISW27T2JaYu3mNQb7LoEl67fR74c6dU3Xv5dOAxntkxS/cj9OmTiUpw8f8OkHg0kQAIkQAIkQAIkEFoE2G/4JhApfE8v/M5u4JL/0GrqOizbfw5xo0eFS+m8mNG2Gtb0aYhFXev4O3ER84Qn+EYAABAASURBVPwtwMxQIyB/1F6/8wjGzvPzFzWmlEkTqPDxs1cqNOfJaiWxywokCf1zcqCZf/mSFyO6TiCTlwoiHstKXllNJWJt95H/Q612o/y4UdNWSjVcunbP135Ri4sxTfKEEkA/RpUw8GQFov4r2ek00UayfmaMUo8uYAJPHrzE0I5zIHv0Prz3HLkKZkC91mXRb3xT9JvQHAVLZLPYyNev3zB15Gp4fvyMsn8WQJacqcyWPbH/MoZ1+h9ELJbVp4XL/Ibm3aqq9qWPJCni4Wf/ixU3qqr6/u0HFZrzPn/S3Tvm8qzJpr8fZM9sYW9u7I98ngtpUiQylx2gbYUmcj176YaMaZKhdJHfAiwfEgXixoyuuvHy8lKhOS+mzzPKw+AbCebK0WYdBOR3TVWXYWq/5eIFs2P19L5w9udFj35W8gKy56i5kPpzx3RC+8aVkCqZ7nemvoy5cPYy3UuqwV0aKLFWX0buo/EDWqjk7GXbIS9AVELzXrx6C9m6yMbGBlOGtEGyRHE1q+5HVgr3alVDJaYv4SpeBYKetRHgeEmABEiABEiABKyQAAVeK7xod56+xuwdJ9Qq3BXd62JOhz/hUjafOjStUKYUyJzs5wUTK8QRroYsK46enlgMY1c4bxY1z7zZ06nw9MVb+OLlreLG3rGz15QpV9Y0KvTPk1VGIhx5e3/FpRv3zBZ98PiFsstKWtlmQS+0PH3xBgeOXzJx56/eVeVfv3X3zXvrrhPg8viMXz9GVdDAO3LqikplSpsMIiBL4mfGKPXoAiYgK3fdXr+HbPMwflFn1HEpg2LlcyFLrjRKsHVytrx6duOSfZDVtwmSxEG9VpZXey6etlUJLjX+KokhU1qiWsNi+L1EdtV+Fk0UFjEm4JGaLxHPZ6sZOYjNfAngzav3lrKsyi6rcuW++OT5BWev3DY79mNnrip7YO59VdDAE9FYL0a51Curfr8YZJuJhowpS4YUqqMrNy2v9H7g84wKzMsg1Ri9ME3AxsYGbRtVhEu9cljs2h1ODvbw/GJZ4NdPZvOuE7ivfRaqli6AYvmz6c3+hvKy8sK1u4gVI6raz9m4sKzglRW68uLjsM/vJymz//hFtWq8dOGcZg8irF2pKBzsI+PffachLy6lDh0JkAAJkAAJkAAJkAAJBCcBCrzBSTeY2j5396lqWQ5TK5zFdNXcBZ98VSg0PfYd5ATixYmh/nB95fZe7Tlp3IH8oXr83HX1h2WRfH4P0hNB+Mlz030MKxTPo5qZunCzEuJUwsDbuPOYShX1aa9ri+omArShIL1sUk9Vvki+LL7lCuXOpGyVS+ZX4YrN+9Ufxyph4C3ZsFelSvyeQ4V670fHqK/H0H8Cd64/UQWKlssFW1tbFTf07vrkG9okfv/WE6xdsEeJgG16/wl7B/P7PYt4/OKpm1RBySq6z5lK+Hge7z/h8f2XPqkfD7Ll0b3E2LvttNnProi7d64/+vGGw2gNEa5kaEs36O4TieudCL+rtx1SyeIF/d4/YpSVvxJacnKf377/FAnjxUKtCoUtFQtxe4U/dJ8b2RtYtocxHoDsmfrw6SvE1gS6LOl1YrBxGaatj0DdykUhey7b2ur+mRqYF0Fb95xQE61R7ncVBsY75/OyRD479pHNP8dy+uxFferCTd8mz129o+LZM5n+G0wyZC/7DKmTqN9zhvUkj44ESIAESIAEwi0BTowESCBUCej+5RyqQ2DnP0ogSexoqsozTeR7+dZDxfXe/RduGLJ8lz7JMBwSaN2gvJrVINfFEDFXJTTv1r0n6DpsjhYDGlYrrgQPldA8OTSpSK2eyFulC1ZtPahZvv80q11G7T24fsdRtOwzGbJSSZ+74b+jmKIJv5Ju1aCCBL/kCubKiLw50uPa7UfoN3YhZMsHadDL2xszl27Dlt0n1GqtprX8HgoWkmOU8UQUFze+7uvvD+488zNlb++vWL9oL25fMxVHv3zxwtQRq+Hl5Y3K9YogfTbLoppzNCc4RtGtAr5/y28fHz0+YeaYtX76/dFEodK/IUbsqHj++DVmj13v5yCkV8/fYtrI1fjsGfDKvx/tN7TKN/qzBGRF++J1eyAvQ/SilwifckiUrEbMnC45ShXyK/A26zkB+at1Ra+/51kcurzgkUy59ywJXZIf0u6PAtkgzw15vtVoMwLnruiENRmHbP0i28RIvEXdsnD02VNc0nQRj4D+s/FbljRYtnEfarYZiRzl2yNTqdZo0GksNu06bgJFVvyK0b8tjfR5dx4+laLKPXisezGlz1NGI0+/pdK9h36ffUbFImSSkyYBEiABEiABEiABEgh6AhR4g55psLeYJ11S5EydGG/cP6Jgz+loPW0dhizbiVqjlyB/92nIlSYJUieMHezjYAehQ6B4wezo1LQKZBVvlRZDUaB6N5Ru2B+FavaArOAVgadP21p+Bnf11gPc1f7I9NKEVDmExjBTDimaM7oTZPsF+QNY/iAu12QgspZpi1Z9p6hTx3u0rAH9KlzDuj8Tnzq0DaTPBWt2IXPp1qjUfAgyl2qDQa5LVHMjezZB0oRxVFzvSfmQHKO+3/AelqisO7hqw6K9GNBmOpZM36aJoqvQraErtq0+jDLVdSuuDTlsW3UYD24/U6t3I9naqJW8sprX0O1Yp1v1HTmyHYpXzK2qj+m9EH/3mI9lM//FhEHL0L72P3j51A25C+tWd6tC371AxWTlcO1mJdVY9m49hZZVRmBwh9no2sgVneqNw3s3D1RtUDRQbVlDoTgxo2HGiHZqvt2Gz0Hm0m1QsdlgJWKt3X4YsmpwypDWKt9wPtv2nlLJHQfOqNDY23PkvHp2yLYoTWqUNM4O1bSNjQ2mDm0Lea7JgVZlGw+AvKyS512phv0gwq88E9s3qRyq42TnoUtAVrDLKnXZFkFWuHcZNhuHTl1BovixIdub7Dp8Di69J6HTkJl+BiovR8TgHEX3Ikrixi5qFCdlcjN4of72ve7letQojirPnKfPk+2K9PlfvwEfPnnRkQE/A2H8M6DdqjBxmuGbOO2G1gI/+d7azW1sk7S39zc/5cQmzusH7Zba/6oNSNoz5/is4bOWnwF+BvgZ+PHPgPaIt+ofKxZ4rZr7Lw3exsYG8zvVRLUCmSG/2NcfvYzZO07CztYWE1pUwtTWVVEgfbJf6oOVwzaBPm1rY87ojiiSL4taBSvCrqzskz0LN84eoFb5Gc5ADk1KnjgebG0jQVbEGeZJXFbI7V85Gt1cqqs2RTSRw9Xka7Kb5gxUdikXFE7GsWvJSLW/YsqkCXDh6l28c/+AXFnTQrZ3qFelmNluQnKMZgcQDo15NHG1dZ8aSJoyPm5deYQtKw7h+oX7SnQdOr01KtQubDLrt290woasHl2/aB9Wz9tl4nZu1H1VWirXbVkGleoVQfQYzjh/4iY2LTuAl8/eqtW//Sc0Q57CmaXYT7vilfKin2szZMqZCk6aSHP9wj18eO+JEpXyoL9rc6TNnPyn2w6LFUsVyondS0eiWpkC6qWM7Mcthz9VKpEP2+YPVUKo8bjLFs2lTGUsHJw2bfEWld+g2h/QH1imDGHES5wgNrbMG4xRPf9CuWK58eadO2T1fxltXjNGtMfSiT0QllYdhxFsEWoY+sM55UDSSQs2YXTvpri6aya2LxiK4xtcsXf53+reWLH5ABat3e3LxuPjJxV3iBxZheY8J0d7ZXb/8FGF4nl80NWzt/evnoMUhbtPWUnIXtcfPL1BRwb8DITdz8DHz97QdFMTJ39ziTObJwKvprIa53lZsnt/NWlf6npZsCuh2Ez7X7/CbDvSVvj8jIXdzw1589rwMxA+PgPy7zVrdhR4w8jVuz6jG54u7Ie0ifyuXJynCblib1j8Nz8jTRgrGma0rY5bs3qoeg/n9cay7nVRp0h2VW68JvRKPRF9lUHzZNWv2M5M6KClzP+0Ll9AtTepZWXzBWgNMwRE0Fk1tQ/Ob5+i9rq9uXe22rNQhF7jQcrKPvkj99HRhbC0v6bsvSkrdaXNG1pbh1aPxYSBLdWWCsbt+ZeW1XSyJ6+0Y6lc3NjR1Vjlj+57h+ap8W/VBBypa6mO2INqjNKWtTtZXbt073D0HtMkwKlUa1gMUrbzkLomZYuW/Q1j5ndU+VJmwrJuaNSuAhIkjo34iWIpe62m31d1NmpXXtmkrCU3Zl57335kFW/9VmUxbW0v33rDZ7SGjCmKsyOKlftN2bPmTuNbRyLdhjdQ9pJVdKuMxWbJZdbE3QETmmPyyh6qzoz1vdGsSxVEje6E3IUyKlsVTWS2VN/a7HLY2gxN2Dy2fjyeHF+knLzwSZ08odmpzP+ni7rHRPQyV0DuVblnh3ZpaC47QJus/JX64gx/5wRUcUCHumpcPVvVCKioz9YtpSBzufjvNJzZMgkLx3WFCN02NjYB1meB8E1ABH/9DKcMaQ1ZiS6/9/S2jGmSomuLaiq50EDgdXZyVDbPL19UaM775PlZme3s7FQonnzmJfz8OeB6ke2+728eKZINojjY0pEBPwNh+DPgZG8L+bVi7CJpBnFaYJIv97Y5u10kG5OyUs7ONtIP2W1tzbcTKRLMtiN98FnDZy0/A/wM8DPw458BWPl/2q8FK58Bh08CJEACP0iAxUmABEiABMIPAUeHyGoy8i2VskV128Iog4GXP0cGlbp4/R68vL1VXLZvkIinp2WhVi8e67dckPL6F6l68Vdsxs5cPU3rQRRHOzoy4GcgjH8GbLQb2sRpBhFOtQDGzla7uY1tklbCrJm27ESw/QG7pfYjaQOSfsw5PmvseJ+F8fuMn1F+RkPyMxDYvrRHs1X/UOC16svHwZMACZAACZAACZBAxCYQN1b0AAHItkNSSLaX0Yuvsk2Q2B4/eyWBWffoqS7P8EC1lEnjq7KPnr1WoTnvoU+bKZMmMJdNGwmQQNgjwBGRAAmQAAmQgFUToMBr1ZePgycBEiABEiABEgg5AuwpLBKQFbXpUiaGt/dXXLpxz+wQHzx+oeyy2jd61Cgqnjd7OhXKXtZfvHSrepXBwDt29ppK5cqaRoXi5c6aVgIcP3ddhcbe2/cfcOHqHWXWl1UJeiRAAiQQUgTWrQPmzDF1L3TPwpAaBvshARIgARIIOQIUeEOONXuKKAQ4TxIgARIgARIggRAlUKF4HtXf1IWbIat0VcLA27jzmEoVzZdVheLFixMDxfJnwyu399iw46iY/Dg5wFREXAf7yChiUK/k7zkQK0ZU7Dp0Fvd9hGPDiis378cnzy/InS0tpA/DPMZJgATCCIHbt4G+fU3dggVhZIC/OIzHjwGZo7Hz9PzFhlmdBEjAhAANJBBGCFDgDYoLkSkTQEcGQfFZYhvhikAJ55SgI4Nw9aHmZEggjBJoVrsM4sSMhvWaUNuyz2Q8e+nmO9IN/x3FFE34FUOrBhUk8HWtG5RX8UGui/2syL117wm6Dpuj8hpWK47YmqCrEponK4ZCtvJfAAAQAElEQVQb/1lCrRjuMGgGHjx5qVl1PweOX8LomWtUolV9XdsqQS/CEyAAEiABEiABEiABEghOAhR4g5Mu2yYBEiABEiCBwBNgSRIggZ8kkCBuTMwZ3Qmy/cKmXceRo3x7lGsyEFnLtEWrvlPg8eETerSsgUK5tZfyBn0UL5gdnZpWUat4q7QYigLVu6F0w/4oVLMHZAVv5nTJ0adtLYMaumjXFtXxu9aWbOGQr2oXlG08AL9V7Iha7UbB3eMj6lYuiiql8usK0ycBEiABEiABEiABEiCBYCZAgTcoAF+5AoSYY19hlnVQfJbYRrgisNvjLujIIFx9qDkZEgjDBArmyoj9K0ejm0t1FMmXBbIKVw5XE7F105yBym5u+H3a1tbE4Y6qjhzAJsKurNJ1qVcOG2cPgMSN68m2Dcsm9cSQLg3wW5Y0uHnvCZ48f43kieNhWLdGcB3gYlyFaRIgARIgARL4CQKsQgIkQAKBI0CBN3CcWIoESIAESIAESIAESCAUCGyZOxhPTyxWAmxA3SeMF0ut1F01tQ9u7J2NQ6vHYsLAlsibI72/VSuVyAepc377FNXXTa3usK4NzYq7+oZE5JVtGLbOG4xb++aoesc3uMKlblnY2Njoi4VMyF5IgARIgARIgARIgAQiNAEKvBH68nPyJEACEYkA50oCJEACJEACJEACJEACJEACJEACJBD+CBgLvOFvhpwRCZAACZAACZAACZAACZAACZAACZCAMQGmSYAESIAEwgkBCrzh5EJyGiRAAiRAAiRAAiQQPATYKgmQAAmQAAmQAAmQAAmQQFgmQIE3LF8djo0ErIkAx0oCJEACJEACJEACJEACJEACJEACJBD+CXCGYY4ABd4wd0k4IBIgARIgARIgARIgARIgARKwfgKcAQmQAAmQAAmQQMgQoMAbMpzZCwmQAAmQAAmQgHkCtJIACZAACZAACZAACZAACZAACfwCAQq8vwCPVUOSAPsiARIgARIgARIgARIgARIgARIgARII/wQ4QxIggR8lQIH3R4mxPAmQAAmQAAmQAAmQAAmQQOgT4AhIgARIgARIgARIgAQUAQq8CgM9EiABEiCB8EqA8yIBEiABEiABEiABEiABEiABEiCB8EyAAq/u6tInARIgARIgARIgARIgARIgARIgARII/wQ4QxIgARIIdwQo8Ia7S8oJkQAJkAAJkAAJkAAJ/DoBtkACJEACJEACJEACJEAC1kGAAq91XCeOkgRIIKwS4LhIgARIgARIgARIgARIgARIgARIgATCP4EwPEMKvGH44nBoJEACJEACJEACJEACJEACJEAC1kWAoyUBEiABEiCBkCZAgTekiVtZfzO2HUXCxiPQbsYGqxj5XxNWqfGuOHDeKsbLQZIACZAACURYApw4CZAACZAACZAACZAACZAACQQJAQq8QYKRjZBAcBEw3+7Xr9+wcssBVG81HNnKtUP64i1RucVQzF+9E17e3uYrBcL63uMjXP+3Hs16TkDxen2QsnBTJMzbEG0HTDOp/eDJS0ycuwHNe03EH3X7IFXhZshTuROqtRyG1VsPmZQ3NDx8+grdR/4PRWv3QuqizfF7je7oMGgG7jx4ZlgswPiB45fU+GSMh05dCbA8C5BAeCBw6sJN/NXdFfmqdVH3T4n6fTF88nK8ff8h0NO7eO2e770j909A7r+DZ03a/plxPHn+GmNmrkH5vwYiTbEWKNOoP/qMmQ9py6QDI4M89xat3Y12A6ejYrPB6rkn485frSs+f/EyKs0kCZAACZAACZAACZAA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Vh8p0iaEc1QnLN07HD1GNfKDQoRhsU9Z1cOPPVuedGjZszpcl3RR9eZuHYDBk13QvGsVZM1tus9u7LjR0WFgHUg5aW/RriHoPaYJipX7TbUrbYnd1tZWpcX70T6kTtToTkownvfvIDUuabNJp0qS5etsbGwg+/G27VsLYxd0hIxFyg2f0RqN2pVH5pypfMtKpGLtwqotEaIlTUcCJEACJEACJEACv06ALZAACZAACZBA2CNAgTfsXROOiARIgARIgARIwNoJcPwkQAIkQAIkQAIkQAIkQAIkEEIEKPCGEGh2QwLmCNBGAiRAAiRAAiRAAiRAAiRAAiRAAiQQ/glwhiQQnAQo8AYnXbZNAiRAAiRAAiRAAiRAAiRAAoEnwJIkQAIkQAIkQAIk8MMEKPD+MDJWIAESIAESIIHQJsD+SYAESIAESIAESIAESIAESIAESEBHgAKvjkP49DkrEiABEiABEiABEiABEiABEiABEiCB8E+AMyQBEojQBCjwRujLz8mTAAmQAAmQAAmQAAlEJAKcKwmQAAmQAAmQAAmQQPgjQIE3/F1TzogESIAEfpUA65MACZAACZAACZAACZAACZAACZAACVgJgV8QeK1khhwmCZAACZAACZAACZAACZAACZCA9RA4dAjYudPUffhgPXMIdyPlhEiABEiABMIyAQq8YfnqcGwkQAIkQAIkQAIkYE0EOFYSIAESCAoCBw4Au3ebukWLgL59Td3r10HRK9sgARIgARIgAaslQIHXai8dB04C1kuAIycBEiABEiABEiABEiABEiABEiABEgj/BDjDkCFAgTdkOLMXEiABEiABEiABEiABEiABEiAB8wRoJQESIAESIAES+AUCFHh/AR6rkgAJkAAJkAAJhCQB9kUCJEACJEACJEACJEACJEACJGBMgAKvMRGmrZ8AZ0ACJEACJEACJEACJEACJEACJEACJBD+CXCGJEACigAFXoWBHgmQAAmQAAmQAAmQAAmQQHglwHmRAAmQAAmQAAmQQHgmQIE3PF9dzo0ESIAESOBHCLAsCZAACZAACZAACZDSMyw8AAAQAElEQVQACZAACZAACVgdAQq8P3zJWIEESIAESIAESIAESIAESIAESIAESCD8E+AMSYAESMA6CFDgtY7rxFGSAAmQAAmQAAmQAAmEVQIcFwmQAAmQAAmQAAmQAAmEIgEKvEEBP1MmgI4MguKzxDbCFYESzilh6BiPmDzC1YeakyEBEiABEiABEiABEiABEiABEgiQQEgXoMAb0sTZHwmQAAmQAAmQAAmQAAmQAAmQAAkAZEACJEACJEACQUKAAm9QYLxyBaAjg6D4LLGNcEVgt8dd0JFBuPpQczKhRIDdkgAJkAAJkAAJkAAJkAAJkIBlAhR4LbNhDglYFwGOlgRIgARIgARIgARIgARIgARIgARIIPwT4AxJwIgABV4jIEySAAmQAAmQAAmQAAmQAAmQQHggwDmQAAmQAAmQAAlEDAIUeCPGdeYsSYAESIAESMASAdpJgARIgARIgARIgARIgARIgASsmAAFXiu+eCE7dPZGAiRAAiRAAiRAAiRAAiRAAiRAAgETuP3hNY67PTBxb758CrgyS4QBAhwCCZCAtRGgwGttV4zjJQESIAESIAESIAESIIGwQIBjIAESIAELBOY+OInGZ1eZuNPvHlmoQTMJkAAJkMCvEKDA+yv0WJcESIAESCBAAixAAiRAAj9L4MS568hVqSMS5m2IA8cv+dvMvUfP0f+fhajcYiiylmmLzKVao2abkRjkugTPXrpZrPv16zes3HIA1VsNR7Zy7ZC+eEvVxvzVO+Hl7W2xnseHTxg/Zx3KNOqPdH+4IGeFDqjfaSz+O3jWYh1mkAAJkAAJkAAJkAAJkEBwEAgrAm9wzI1tkgAJkAAJkAAJkAAJWCGBb9++YfKCTZroOgKPn732dwYi0E5fvBXF6vTCnBU7IKJwFCcHJEkYF4dOXcHMpdtQqmE/XLh212w7XYfPRsfBM3Hk9FU4OzkiRZL4qo3eo+fDpfdkSPvGFd97fEQVl6EYM3ON1u49pE6eEDY2Nth9+BwadfkHMh7jOkyTAAmQAAn4EmCEBEiABEggiAlQ4A1ioGyOBEiABEiABEiABEjg5wm8eeuOJt1dMWLKCuTInAo5M6f2t7Gv375i58EzcHJ0wODO9XF68yQc3+CK/xYPx4mNE1A4T2a8ePUW7QZMNxFrZeXu8k37ESdmNGycMxBH141T9Q6tHotsGVJi296TmLZ4i0n/g12X4NL1+8iXI73q69+Fw3BmyySsmtoHUZ2dMGTiUpw8f8OkHg0kQAIkQAIkQAIkQAIkEBwEKPAGB1W2SQIkEHIE2BMJkAAJkEC4ISArd6u6DMOO/adRvGB2rJ7eF85ODv7Oz87WFpOGtMa/C4ahdYMKSJwgtm/5pAnjYEyfZip9/c4j3Lz3WMX13uxl/6ro4C4NlFirEpqXJkUijB/QQosBs5dtx+cvXiounojFKzYfUCt2pwxpg2SJ4opZuSL5sqBXqxoqPn3JVhXSIwESIAESIAESIAESCCICbMYiAQq8FtEwgwRIgARIgARIgARIICQJ2NjYoG2jinCpVw6LXbvDycEengbiqqWxJEkQB8mTxDObLdsnxI8TU+W9eP1OheLJ1g+ybUOsGFFRtXQBMflxsoJXVujK/r2HT13xzdt//KLam7d04Zxm+6xdqSgc7CPj332n8dHzs289RkiABEKOAHsiARIgARIggYhGgAJvRLvinC8JkAAJkAAJkIAQoAujBOpWLophXRvC1lb3z1RZ1fsrQ/3k+QWv3d6rJuLHiaFC8c5duS0BsqRPAfvIdipu7OXMotse4tSFm75Z567eUfHsmVKp0NiLES0KMqROokRgw3rG5ZgmARIgARIgARIgARIggaAioPuXc1C1xnZIINwR4IRIgARIgARIgASsmcCJc9eV2CorfNOlTOw7lfuPX6h4iiTxVWjO0+fdefjUN/vB45cqrs9TCSMvZdIEynLv4TMV0iMBEiABEiABErAGAhwjCVgvAQq81nvtOHISIAESIAESIAESIAF/CMjq30kLNqoSTf4sqUK95/bOQ0Wdo1je4zdqFCdVxu2trqwk3r7XxaNGcZSkWafPe/3W3Tf/mxb74vUVdOGAAa9jsH+O5X7RbhmTn28WMr5ayPhRu4VmTMZhaLBU50f7tlTeUvuW7DI2S3lePp9dL++vUszEWapnyS4NWMqzZJe++Rzkc5CfAX4GwuJnQJ5p1uwo8Frz1ePYSYAESIAEwiwBDowESCB0CXhrAkb7QTNw4Pgl/JYlNZrVKeNnQB4fP6m0Q+TIKjTnOTnaK7P7h48qFM/jg66evb1/9XSisbtPWann7f0Nbz2+0JEBPwOB+AzI/fJVE3ON3Rftvja2SfqL1zdIaOw+f/lq1m6pvIiPxm1I2lvzxGmBSXuW6ljqw9KYLNm/aKKsuX4tjUfKemme9mMy1vcfvdTn74Ont0melLfUl6U5Sh1L47DUlscnbzUGPg/5+4CfAX4GwtpnQP69Zs2OAm/oXj3Vu5e3N6oOX4h83afiwcu3ykaPBEiABEKawKN7L9C+1liM6DYPsuotpPtnfyRAAiQQVAS+aqqDiLtrth2CbKWwYFxXdWCbYfvOTroVuJ5fvhia/cQ/+RySZmf3fY9e5yi6ep8/B1wvsp2tb3s2NkBku0h0ZMDPQCA+A3K/aLcMjF0kLcPYJulImqf9mJbXMszaNaP2Y1LexsbG1AbAxkaziwNgA/h1Fuxa137LASodScswaQOAJbuNhfJat6o9G62usdOqmM2z82FvpxUwrqPSluxaZyrfTF9altm+LI3bztYmIt8DnLtdJDIggzD7GYCV/xfJyscfLobv/vEzjl1/gPvP3XDn2etwMSdOIngJyB+uK7ccQPVWw5GtXDukL94SlVsMxfzVO9U+gz/ae8rCTZEwb0OLrt3A6WabfPL8NcbMXIPyfw1EmmItUKZRf/QZMx/+HSrToNNYi/3IGH6r2NFPX7OX/+tvealj6PQrq/w0wkSgCDx9+AqvX7zFtXN34elpWbgIVGMsFGwE5P76q7sr8lXrgtRFm6NE/b4YPnk53r7/8NN9yjNl0drdkHu9YrPB6pki91X+al3x+YuX2Xa37jmJZj0nIG+Vzshapi2adBuP2cu2w9w9mLlU60Dfx8O0uZjtkEYSCCQBeUHVY9RcrPv3MBLFj40F47ogfpyYJrWjOeu2X/Dveffho6eqp99yQRJRferpxV+xGTtz9Ww14SSGc2QE7FiGjPgZkPtFCYeaqmgYijhomNbH5eWJPm4Y2mtCimFaH7dU3lL72u0Lcfr6hqGlOpb6sDQmS/bImiBq2J8+bomR5FvKi+Zkp55BURztIOWMnaW+LM1R6lvqy1JbzlrfvMd5j/MzwM9AWPwMGP97ztrSkaxtwOFxvDGjOsG1eUV0rlIIRTKnDI9T5JyCmEDX4bPRcfBMHDl9Fc5Ojmp1khwi03v0fLj0ngwRawLb5Tv3D/j0E2KefOW1WJ3eGD9nHa7dfoRMaZPhxp3HmLdqJ0Qgmjh3g9khvH6rO8ncbGYQGCPZRpDHWhCwMm4iR/50qFSvCFr3+ROOPl9LNi7DdOgSWL5pv7q/tu87hffuH9V9d+veE0xZuFm9aHn55t0PD/DOg2eo0HQQRBCT1Y4Xr91DyqTxUSRfFthHtjN5nnh7f1XCroi7IvLa2dkidsxo+Hf/aQwYvxhlGw/A/Ucvfngc+gp2vIf1KBj+BAERd3v9PR9L1u9BjkypsH3BUGRMk8xsSyl9DkJ7/OyV2XwxPnqqy5NVwJIWl1K7PyR85M9L+Yc+bab06UPK05EACZAACZAACZAACZDATxEIRCUqIYGAFBJF6hXLid41/9DepGqvqUOiQ/ZhtQRk5a6IPHE0QWXjnIE4um4c/ls8HIdWj0W2DCmxbe9JTFu8JdDze/VGJ7hmzZACT08sNuumDm3jp733Hh/RcchMiDjcvHYZXP5vBjb/bxAu/TcdgzvXh60m0Iyavgo7NMHHT0Utoe9Pyprr78yWSVqp7z8udcuaHZNh3WHdGqkK5YrlNvkKrsqgFygCItTVb1UWv5fMEajyLBSyBESI7TZijup0XP8W2n03HVvmDsa5bVPwZ7nfcfv+U3QZOkvlB9aTVfhVXYbh7OXbaFD1DyWG3do/BzsWDceqqX1wYNUYODr43Wd09vLtEGE3WaK4qv8ja8dh/8rR2L10JHJlSYObmuDcZsBUiBCsH8flnTP8vY/vH56PBHF1Kyyrli6gr8aQBH6IgIi78qJi4dpdkD13V0zp7fu5MtdQ3uzplPn0xVv44uWt4sbesbPXlClX1jQqFC931rQS4Pi56yo09mQ1/YWrd5RZX1Yl6JEACZBAMBNg8yRAAiRAAhGXAAXeiHvtOXMrJTB72b9q5IO7NEC+HOlVXLw0KRJh/IAWElVfk/5s4WvVqoCB9/L1W5WKFzuGCgPjrdpyECIM5dH+OB7Ro7GvABTFyQGtG1TAgA51VTNjZ61VoaH3/JUbHOwjI3aMqIbmn457eXtj1tJtqn7L+uVUSI8EwiMB2YLF2/srGlQrrsRYGxvdC8GY0Z0xvr8LEieIjf8OnoWswA3s/IdPWQG5Jzs3qwoRjXNmTg07W1uL1b20+23m0u0qf2TPv5A7m07oEkPmdMmxcmpvNQ7ZRuK/g2fEHCi3YtN+PHvphqL5skLaCVQlFvpZAuGynl7cXbxuD/JqvxtXai8o5N7wb7Lx4sRAsfzZ8MrtPTbsOGpS9MK1u0rEld9ZRbTPpr5Ayd9zIJb2O2zXobO4//iF3uwbrty8X30zRu4P6cM3gxESIAESIAESIAESIAESCCYCFHiDCeyPNpuu1T9I2HgEbjx+abbqwct30X7mBhTrMxOpXcagaO+Z6DR7Ew5e0q0QMa509vZj1d6AJf+prHk7T6HKsAVIq/VTRKvbZvoGHLl6X+XJH0WS39h1JbJ2mKBc1eELsXz/OR60pAiFHe/xs9eQPzjlD0tzq9xkBa+IviKUHD51JVADf/3WXZXzK/Aqk0Xv0KnLKq962YIqNPaa1ymLhPFiqbHee/TcN1tW/Mp2ELJSz8ZGJ075Zv5kZM22w3jw5CXkq7i/58r0k61Yb7Ublx5g3oRN6N18CpqWHYLO9cdjTK+F2LXxhO+kbl19iPp/9MfiaTph7tzxGxjSYTaalh+Kv8oOxt0bT1RZfTk5aE0ZfDy9feGUrcqyY90xVb95xeHo0WQipgxbhStndc8ieZ5I/j99F6F19VHKDek4B/u2nfb3eXLq0FVMHLRMjV/aHayNb8OS/XB/91H1SQ/YfficwtCgajEVGnqODpFRs3whZdq0+7gKA/LkJc3a7YeVINulebWAiqv8KzcfqJc7cWJGQ+nCOZXN0JO9Sds1rqRMso2EigTgff36DdOX6D5bfEkTACxmmyUgzx1ZuasXd5dP6gn9/rpmKxgYWzcor1KDXBcrMVclNE+2Puk6TLdiQ+YBBgAAEABJREFUvqH2UiW2JuhqZvUjn/PGf5ZQq9Q7DJqhfgepDM2T7YtGz1yjxYBW9XVtqwQ9EiABEiABEiABEgizBDiw8ECAAq8VXMXRa/ah5t9LsPrQRXh8+owsKRLi8Zv3WHHgPGqOXgrXDQctzuL2k1fovWA7+izcjltPXyNTsvh45uaOdUcuovboJThz6zE6ztqk8s/deYI0CWLj02cvdehb5zmbMXfnSYttMyPkCZy7clt1miV9CrU3pkoYeTmzpFYWWUGnIgF4snJJivzIKqM3PqJw0oRxpaqJi2xnC/3XWc9d0Ql/Uki/PcOP9CX1LDn5o366z3YU7XxEJUtlw6N9rusmDGo3E/+tP4Znj18jZfrE+PThM84eu46zx02/Ouz2+r0qO7rnAly7cA+eHz/js6cXosdyDhSepw9eQvqcP3ETntx/iWSpE+DNq/c4vOscRnWfj5tXHmLGqDWQ/NvXHiNRsnj48tkb187fxczRa7FjvekKOelYhONx/Rbj2L5L+Kb9Hz9xLFzXxrdi9g70aTEFD+48k2IR2snLkRt3H6vVtTky6e5xYyA5M6dRptMXb6owIG/r3pNKdJeXRbJCMaDykq+/95MniSdJsy5vdt03C85fvWs239i4cecxtb2E7JMqKyON85kmgYAIyP7PIu5KOdmPXg79lEMCzbmkBZpIMV9XvGB2dGpaRa3irdJiKApU74bSDfujUM0e6iWlrCjv07aWb3l9pGuL6vg9dyYcO3sN+ap2UXtPyyGhtdqNgrvHR9StXBRVSuXXF2dIAuGDAGdBAiRAAiRAAiQQZglQ4A2zl0Y3MBF1RcCN5uSAlb3q46RrB2zq3xjXpnXFqp71ESuqE0QAXn/0sq6Ckb/r/C1sPnkVmwc0waWpXVTdy1M7o3j2NPji/RWNJqzEjrM3sLBLbZyb1AkbtLYvT+mMJiVyqZambDEvyKhMeiFOQP9V0BRJ4lvsW5935+FTi2UMM167vVfJc5dvo1GXfyB/nDbtMQGyh+6qrQdh7tCmGNF0gqC5PNWY5nl88NR84OXrdyoUT9+X2zsPtOwzWfXVoNNYDJ6wFLJnouzdKeUC6+SP+qu3HkK2p6hUIl9gq4WLctvWHMHODcfUXGo3L4WZG/pg0GQXzFjfG6PmtMefjYurPEPvlibALpqyFZlzpsLgKS0xf8cgLN07HLHjRjcsZjEuwvHx/RdV3Rlaf4O1/qTf7PnSwcvLG7Jq9/SRq+g2siGmremFQZNaqPGUqppPtblp6UEVGnp7t57C9tWHkSJdIvz9v3aYuLQbRs1uh8kre6BgiWx49fwtJg1eoVbKGdaLaHHZf1fmnCJpfLXHtcSNXUotT2x37gfu3r/gI8DmzJwaspdo427jkb9aV6Qu2hwidM1auh2en79Ik77O9943uK99M30iHh8+qZhs/aAiAXhTF25WJWQlpY1N0KzsVw3SizAE5JshvzLZPm1rY87ojupgwQ8fPZWwK6t0XeqVw8bZAyBx4/blpciyST0xpEsD/Oaz9/ST56+RPHE8yL7wrgNcjKswTQIkQAIkQAIkQAIkQALBRoACb7Ch/fWGZXXimLX7VEMD6hRH0SypVFw8OcSqSFZNpKlXSpIYuXqPWomlEkZet6pFkCddUl+r7K/YrkIBlX751gNtyxdAmd90B42IUU5N71tLJw490f6If6mJcWIPQsemfpKACKNS1TmKgwRmXdQoTsrupl1bFQnA89aEfily8ORltX/ngeOX1EFtE+duQIdBM/BHnd44eOKSFPF1sq+gJNZsOySBibt66wH2H7+o7B8/6YReScghNjY2Nrh17wlk1Z70tevwOcxYshU9R81Tfc1cuk2KBspN8RGGWtQpi0iRIo4wJM+GfzVRVCDVbFoS1Rr9AXv77wdhpUibEKnSJ5ZsP+7Zo1coVDoH+k9ojvRZk/up46egP4k/G5dQdfVFbG1tUbleEZV898YDFWsXRu7fM6q0eJEj26FOizISxesXb/H2jW5LEDHIV/PXzN8tUbTsWR3J0yRScfHixI+BNn1rIn6iWHh07zkun7kl5gjr3r73UHOPGsVRheY8vQj15MUbc9kmNr1ofPfBM9RqO0odiijPfxGoTl28iYGui5XQq3/uSAMZUidV+2fLtijGzwXJF7done6ailAmaf/cniPnlZgmW7rUrFDIv6LMi8AE5DBBOVizSL4sZilUK1PA30P8pK7ePTy6wGwb8pJQDhY8v32Kauvm3tkY1rWhWXFX34CIvK3ql8fWeYNxa98cVe/4Ble41C3LQ3P1kBiSAAmQAAmQAEAGJEACIUCAAm8IQP7ZLk7eeIj7L9zgpAk3tQpnN9tM1fyZIYLt/eduOHb9odkypXJ+PwRHXyB7yoT6qFrN65vwicRwdkTK+LFU6oEmyqgIvVAn4PFRtzLOIfJ3Mc94UE6O9srk/uGjCgPy5Kup/y4chjUz+uHQ6rG4e3AeDq/5B5OHtEbyJPEgq3RlRe/9Ry98m5Kvnso+uodPXUGLXpOUQPNBE3JPnr8BEYZlJaB+v8IoTt8FqQK/ZcDRdeNUX/8tHo47B+fi1OaJWDGlFwrnyQwvb28Mcl2CzYHYQ/SQ1rf0FzdWdNStUtR3bBEhIitxnz95AxFXK9T6/YemXLJKvh8qb1z4t4K6r98b2lOmS+SbzJHfNN85miMSJImjyrx46qZC8W5euq9W6MaMHQ2p0pkK0nZ2tkiZPokUxb2bT1UYUT39qlhDId+YRRRH3Ysfb+2ljfHKW+OyktavsJXV+o1rlMTJTRNxYNUY7F3+N85tnQLZukG2WOn3z0IprpyjQ2SIoCWJVn2nYPXWQ3iqCcqyUl9e2rTpPw17NdFW8p2jfL/3JW3OTfPZYqWFJojJ7zJzZWgjARKIKAQ4TxIgARIgARIgARIggZ8lQIH3Z8mFQL1Hr3VfnU8eL4YSec116Whvh5ypdeLKg5duJkVEHE4WN4aJ3d7OztcWP4azb9ww4qgJy5L+YPQVXbHRhQ4BZyedYOL55YvFAXzy/Kzy7AyusTL448kBZYVyZ1JbHYiAkzp5QtSqUBj/LRqhRN73Hh+xYO0u3xZEVF0wriuSJYqrxFjZrzB1keao1HyI2tqhZvnC0O/BKwfC+VbUIimSxIf0JQfCOTnYI0mCOOoU89XT+6JC8TxaCWD6Yt2BSyphwZvhIww1qVkS0o6FYuHS/OKZ7l5Pmjo+HKPoRL3ATNRJe3GTNlPSwBQ1W8ZBE/fiJYxlkhfZ4IVDjNhRTfLFENnneeLp+f2z+9Ln5ZGb9qyr/0d/mHPH9+lWgr97+0GaASKorxdLP/vzPP7oc+8LIllZKKF/zsNnGxU52ExWKiZNGMe3eNzY0TG0a0NE1kT2DTuOqv1J9Zkd/qqCZrVLK1v7QdORs0IHZC3bFrLtiuz/O6JHY1U0TszoKrTknb18G7KKX+b2lyYwWypHOwmQAAmQAAmQAAmQAAmQAAmQgP8EwqXA6/+UrSf3rc8+hnGiO/s76FiaaCMF3NxNV2xGD4T4IyKw1KcLfQKyF2XR2r1g7OTQGBldNGfd9guGIpnYDZ3+a9H+fZXbsLx/8RjRoqBR9RKqiOzRqyI+nuzbuW/FaIzr3wK1KxZRexfWq1IMshq3Z6sa0O8XnDxJPJ8aAQdtG1ZUhU5fvKVW86qEGU+2gPjv4Fk4OkRG05qlzZQI3yaPd7p7PWpU3echsLN1ihJ4Mdhcm05RdS8YzOXpbQ4OuhXk+rR/4Qf3Tyo7aowoyJI7jb8ubvyYqmxE9fTbL3wyEHGNWXj4/M7QPyeM843Tjo66bwJU+COvcZZKyyr9tCkTq3vxyo37yiaebIcyskcT7Fw8Ah3/qoxShXKixO850LddHWyZN1iKKBfQvT9lgW7v3cZ/lvD3a/CqMXp+CMhe6e0GTvdj8y9xWbt+CfM2hHy7wr9yzCMBEiABEiABayTAMZMACZAACQAUeMPwpyCqJl7J8Nw/ft/DVNLGzs1nFZazk6l4EykSL7Exr7CcfvPWHdfvPDJx+q9bp0yaQA3/8bNXKjTnPXqqy0uRJL657B+2pUqm61NW8RpXjqJ95hpU/QOTBrfCqql9IIfKFMufTW3rcO32I4jQJCt1jetZSqdKnlBlyR6z7h468U8ZjLzJPsJQnUpFISsNjbLDfTJKNCc1x0+f/H82qEJB6AX18ySKj0AdI6Yz+o1r6q8rUz1/EM7E+ppKpwmtMup7j55D9i6WuLF75PNckEMHjfPMpeP6rLD18vIyl61sMX1eMHqY+T2UNUMKJeountAdSyf2UGKvrO4/fem2qpsnWzoVmvNkH+4te06oFcIt65UzV4Q2fwjIyufTF2/6U8Jvlgj1YtEfrCfxCOg4ZRIgARIgARIgARIgARIItwSo/oXhS5vOZ+XjlQfP8emz+T/Avby9cemebm/KtAljh+HZcGiBIdC/Q111SIv+MBh9WDiv7mCZvNl1gsnpi7cgB5aZa/PY2WvKnCtrGhX+qid7a0obcgiShIFxG/47qoqV/yOPEnBUIhDei1dvVSlZragXlpTBwJOVwet3HFEH2LRrVMkgJyii1tGGfhuER/de4ssX888Ga5hJ/IS6VblPHr6Cf6vSrWEuwT1GeVmSKW0yfPL8grNXdAKqcZ/HzlxVpsDe+1k0gVYqXLn5QAKz7sHjF8ouwq2KBODJXtzb955UpSqVML8yWDLl2wryIqdamYJIFJ+/u4RJcLqPn3Rb97x20239FJx9sW0SIAESIAESIAESIAESsA4C4WuUFHjD8PXMmjwBMiaNhy/eX7H26CWzI11/9Ao+aH/wyz67udKYHlJkthKNVksgXpwYar/aV9of6bIvpvFELly7i+PnrsPBPjKK5MvqJ1sE4SfPX/uxBZSQPT0Xrt2tisnKXBUJwDt65hpGTl2pSrnUK6vCwHozl25TRUv+nkOF5rzpi7fA2/srKhbPq/YHNlcmvNvSZEwC2U/30wdP7N92xmqnmyZTUsSJHwNfteu5ftFeq51HSA1cDj2TvpZuMGUlwu/qbYckG8ULmt4/svJXZRp4FbQXMJKcv2YX3N55SNSPO3L6Kh4+fYXYMaIiS/oUfvLMJby0F44dBs3AgycvUVETd2Uvb3Pl5FC2VVsPqqw2DSuokF7wEpiz/F/VQbzY/u+LrArRIwESIAES8EuAKRIgARIgARKwAgIUeMPwRYoUyQaD6pZUIxyxYjdO33qk4nrv7O3HGLx8p0r2rFEMdra2Kk4vfBNo3aC8muAg18VKzFUJzZOvPHcdNkeLAQ2rFVeijEpo3tv3H1CkVk/krdIFemFFM6ufBp3GYv/xiyqu97w1wU32/W3UZRxk78b0qZKgbpWi+myzodRZpInBdTv8DdkLVIQb4+0Z+oyZj2Ub9+Gz0arTG3cfo9ff81Sek4M9OjeraraPl2/eqTKSKQdDSRgRnaOjPSrXLaymvvJ//+HGJUNf2dEAABAASURBVL8rMN+5eeDc8RsqPyx7NjY2KFezoBrihsX7MHvsOjx58FKl9d6Lp2+wdsEefTJCh4189qpdvG4Plmgir6yAFSAiznYdPhuPn71G5nTJUaqQX4G3Wc8JyF+tq7rHpLze/VEgGwrmygh5dtRoMwLnrtzRZ+HitXvoPvJ/Kt2iblm137VKWPDuP3qBuh3GYMvuE4gTMxoGdapvoSTUIYrywkn27ZXxWixoZRnBOdxDp65g/Jx1vk76equJ8oY2c/GRU1egSouhGDtrjVRB3hwZVEiPBEiABEiABEiABEiABEggfBGgwBvGr2fx7GkwrGEZvNIEugpD5qP6yEWoNXqJCssNnoeXbz3QtkIB1CqULYzPhMMDECQQihfMjk5Nq0BW8cof7gWqd0Pphv1RqGYPyApeEUz6tK3lpy85lOzuw2fqsKS9Ry/4ydt37CJqt/sbWcu0Rc22o1C91XCkL9ESlTVR4OCJS5D9PGeObI8ojg5+6slXrOWgH73LW7UzeoyaCy+vr+jdphYGdKjnp7wk7j58ji7DZiNjyVao1nIYpG7Wsm2V+LxgzS5EjxoFEwa1hHwVXcobu9nLtquvqOfNkR75NGecH5HSVRoUQ6HSOfH+7QcMajcTwzr/DyO6zcNALd6m+t/YtHS/VeCoUKsQSlbJp8a6Z8spdGs0Ab2aTlZz6dFkIjrVHYd1C/eq/IjuiXA6Y0Q7tT1Jt+FzkLl0G1RsNhg5yrfH2u2HIYciThnSWuUbstq295RK7jjgd7W3jY0Npg5tq0ThS9fvo2zjAepelGdJqYb9IMKvPG/aN6ms6us9eYFTqfkQdf/KPSz3cr5qXSDPi+wZU2L97AFInjievrifUMToxet1gj333vWDxt+EbL8xZuYa6J0Ufv3W3TettxuHk+Zv8n0RKC/P2jaqIFXpSIAESIAESIAESIAEgp8AeyCBECVAgTdEcf9cZy5l8mLPCBe0KJ0Hn728ceb2ExVKesvAvzDQZ5Xvz7XOWtZIoE/b2pgzuiOK5MuCDx89lbAr+9a61CuHjZq4InHDeWVMk0wJLra2kSCr9gzzlkzsjhrlCyFGdGcl0Jw8fwOJ48dG5ZL51OFpu5eONCu42ttHxvGz1yGH/YgT0adelWLYu+JvyApcWYFu2I/Eh3drBFl5mzF1UpzQ+pF6IjrI9g+y4u/wmn+g/xq6lDd07h4fMX/1TmVq04AihfBt168m+rk2wx8VcuPdGw9cPXsXD+88R54imVChTmHFKqx7NjY2aN61CobPbIPytX5HmkxJ8PzpG1w6dUu9LJC5texVLaxPI8TGV6pQTsg9Wa1MAfVCRPbj/vzFC5VK5MO2+UOVWGs8mLJFcylTmSK/qdDQS5wgNrbMG4xRPf9CuWK58eadu3qmlNHqzBjRXh2eZh/ZzrAKImnPkafPX/ve+7ItS57s6VQbMoZ0PgfC+ankk5i7coda4S/PJONnkU8RBmYItGlUEQvGdUWdSkUQ2P2QpRnZridL+uRoVb88Dq4ZC+NvVUgZOhIggdAmwP5JgARIgARIgARI4NcJUOD9dYZB0sKNmd3xdGE/pEscF+b+y5QsPoY3KgsRdG9qZSWUdO60ScwVR87UiVV7ZyZ0MJvvaG+n8qXPGM6OZsvsHemiyhTKFPDei2YboDFYCYigs2pqH5zfPkUdzHZz72wM69oQxuKuDEJW9h3f4IpHRxeiVgW/wp+Iq1OHtsGh1WNVOw+OLMCBVWMw+++OqF2xiNrPV9owdi51y+LeoXmqjhwGd233LLgOcEHaFImMi/qmZTXw0C4NsXX+EDUWqXdi4wSsmNILsqVDXH/2h5R5SR9Sp0LxPL5tRvRIlt9So2XP6hi7oCMW7RqCuVsHoMvQ+shV8PtXsdNkTIqle4djyqoe/uKyVM6SXd+YvYOdal/6cI5m/nkyZl57VSZLzlT6an7C1BmSoFG7Chg2vQ3mbRuoyrou6aLmVqSMqTDpp3JESBjMUVa4z9DE12Prx+PJ8UXKyQsfS3vezv+ni7pPR/duatDK96i8ZGlaqxSk3MV/p+HMlklYqImJIiLb2Nh8L+gTk/InN01Ubcr9KG7z/wZB2pCXSD7FzAZdW1RX9fYuH2U2n0bzBIS5CPUTB7XCvpWjlbifKlkCxVL4W3L3tGf0riUjMaRLAyRJEMd847SSAAmQAAmQAAmQAAmQAAlYPQEKvFZ/Cb9PgDESIAESIAESIIHwTSBOzGhKTA/fs+TsSIAESIAESIAEAiLAfBIgARIwJECB15AG4yRAAiRAAiRAAiQQxgnINj1H1o4L46Pk8MIIAQ6DBEiABEiABEiABEggAhCgwBsBLjKnSAIkQAL+E2AuCZAACZAACZAACZAACZAACZAACZCAtRIIvMBrrTPkuEmABEiABEiABEggnBJ45/4B1+88wpHTV3Ho1JUAXTjFwGmRAAmQAAkENQG2RwIkQAIkYFUEKPAGxeXKlAmgI4Og+CyxjXBFoIRzStCRQbj6UHMyYYbAzXtPULfDaKQv3hJFa/dC9VbDUaP1iABdUE+A7ZEACZAACZAACZAACZAACYQ+AQq8oX8NOAISCO8EOD8SIAESIIEgJPDe4yOquQzD3qMXgrBVNkUCJEACJEACJEACJEACv0yADYQSAQq8QQH+yhWAjgyC4rPENsIVgd0ed0FHBuHqQ83JhAkCUxZuxss379RYShfOiVE9/8KKKb2wZka/AJ2qRI8ESIAEQp2ANgBPT6BvX1PXv7+WyR8SIAESIAESIIEfIUCB90dosSwJkAAJkAAJkEDIEWBPZgkcPX1V2V3qlsUi1+5oWqsUiuXPhkK5MwXoVEV6JEACJEACJEACJEACJEAC4YoABd5wdTkj5mQ4axIgARIgARKISATuP36hplu/6h8qpEcCJEACJEACJEACEYUA50kCJGCeAAVe81xoJQESIAESIAESIIEwSeC123s1rkTxY6uQHgmQgAkBGkiABEiABEiABEggQhGgwBuhLjcnSwIkQAIk8J0AYyRgnQSSJoqrBv7giW4lr0rQIwESIAESIAESIAESIAESiLAEKPAGdOmZTwIkQAIkQAIkQAJhiED5YrnVaG7ceaxCeiRAAiRAAiRAAkFEgM2QAAmQgJUSoMBrpReOwyYBEiABEiABEoiYBBrXKAkH+8iYvGATXvls1xAxSYTerNkzCZAACZAACZAACZAACYQlAhR4w9LV4FhIgATCEwHOhQRIgASChUDyxPEwpk8z3Lz7GMXq9MI/s9fizKXbePbSDd++fQuWPtkoCZAACZAACZAACZAACZCARQKhnkGBN9QvAQdAAiRAAiRAAiRAAoEn0GPUXMxatg1e3l/x8vU7/DNrLcr/NRA5yrdHonyNkDBvQ4su8L2wJAmQAAmQQNATYIskQAIkQAIkEDwEKPAGD1e2SgIkQAIkQAIkQAI/RyCAWovW7sal6/e5WjcATswmARIgARIgARIgARIggYhCgAJvRLnSnGe4I8AJkQAJkAAJREwCPVvVwM+6iEmMsyYBEiABEiABEiAB6ybA0ZNAQAQo8AZEiPkkQAIkQAIkQAIkEIYIdG1RHT/rwtA0OBQSIIGgJ8AWSYAESIAESIAEIigBCrwR9MJz2iRAAiRAAhGVAOdNAiRAAiRAAiRAAqFD4MVnDxx3e2DiHn16FzoDYq8kQAIkEE4IUOANJxcyyKfBBkmABEiABEiABEiABEiABEiABEggCAnsfXUbjc+uMnFbn18Lwl7Y1A8TYAUSIAGrJ0CB1+ovISdAAiRAAiRAAiRAAiRAAsFPgD2QAAmQAAmQAAmQAAmETQIUeMPmdeGoSIAESEARaF5xGOr/0R+P7r1QaSvwQmyIneuNU2xuXHoQYn2yIxIICwQS5m2In3VhYfwcAwmQAAmQAAmQAAmQAAmQQNASCCWBN2gnEZFaO3L1PhI2HoEkTUfhmZt7RJo652pA4OvXb1i55QCqtxqObOXaIX3xlqjcYijmr94JL29vg5KBi6Ys3NRfsaDdwOlmG3ry/DXGzFyD8n8NRJpiLVCmUX/0GTMfpy7cNFtejA06jfW3r98qdpRiJu7eo+fo/89CNc+sZdoic6nWqNlmJAa5LsGzl24m5WkggfBKQO6vv7q7Il+1LkhdtDlK1O+L4ZOX4+37Dz89ZXmmLFq7G3KvV2w2WD1TREDMX60rPn/xMtvu1j0n0aznBOSt0hlyTzbpNh6zl22Hx4dPZssbGuXZUUV7Zkkf8gwxzGOcBEiABEiABEggvBHgfEiABEiABIKbAAXe4CYcxO0vP3BOtejt/RUrDpxXcXoRj0DX4bPRcfBMHDl9Fc5OjkiRJD5OnLuO3qPnw6X3ZIhYE1gq79w/4JPnl8AW9y134PglFKvTG+PnrMO124+QKW0y3LjzGPNW7fw/e2cBEMXWxfE/0mB3d2N3d3frsws7nt2NHRjY3Z/P7u7GxG6xsUVBREC/OWd3cdmgBIXlvMftc278ZmfWPXPnDMhANGvZ9kBZ7cwHzy/axRDztJb5a/YoYw3Ckg0HeJ12ttZIlTwxTl+6jYXr9qJSy2G4ftc9xL5EQAhEdwL/23mCz699xy/hi5cPn3cPn7yCy6pdfKPl3cewv6Dk8bPXqNFuFAZMXIbNe0/jxt0nSJ86KUoXcYCVpYXe9YS+f8iwS4GMvBYW5kgYPw72n7iMETPWoGrrEXj64q1R1EfOuKGycjPIVblmGRWShmAJDOzcEMZC/04N0KhGSeTJnh7WVpbcj6VyjKYN7YDLu2ZzWSIhIASEgBAQAkJACAgBIRBBBKSbKEJADLxR5ECEZhqe3t+w0/U2sqVKDFvlR9vG09fx8+fP0KiKjAkRoJ27ZORJpBhUdiwZiXNbp+PgGiec3jQVubOlx95jFzFvze5Qr/j9xy8smytbOnhcWGMwzB3blWU00RdvH/QasxBkHO7QpApuHVyAXUtH4ebB+Rj9b3OYm8fCxPkbcUAx+Gh0NKlmPJI1NN6V3UENED9+/sChU1dga2PNfZOBwnW7M6/5wo6ZKFUoJ96+90T3EfP1DFGaMSUVAqZAgAyx/cYv4aVMH95ROe/mY/ey0XDb64IG1Urg0VMP9Bm7iNtDG9FO2rqO43D11iO0qFsO+1aOxcMTS3BgtRM2zh2CkxunwMZaZSTU9Ln4f/tAht00KRLz+Ge3TMeJ/ybjyLoJKOCQCQ8Ug3PXEXNBhmCNDqVUnrxgE5r3ngrzWLFQrWxBqpYQDgJ9O9aHsdDfsQFcxnTlY3j70AIM6dYEfv4BWLf9GBInjBuO0URFCAgBIRARBKQPISAEhIAQEAJCIDIJiIE3MulGcN9bz93EV18/VM6XBeXzZMT9l+9w+pZ7BI8i3UV1AovX7+cpju7TAkXyZuU8RZnSpcCMER0py49JfzfyWDULaEXvPnhyKUnCeJyGJtq4+xTIMFQoTxaMH9A60ABEO2u7tKiBET1sM9mEAAAQAElEQVSbcTdTF23hVDt68/4T7ypLGC+2drXRvIW5OWaP6YL9K8eB+k6ZLGGgbOrkiTBlSHsu33v8QjEsveS8RELAFAmQCxYykraoV56NsWZmZrzM+HHtMWO4I+jcOHjqKu/A5YZQRE4uG0Dn5L/t64KMxvlyZgSdc8ZU/QMCsHDdPm6eMLAtCubOzHmKcmZJi//mDuZ5kBuJg8qNGarXhGHTVsF56TakTZUE2xaNAMlr2gJTyUQoAbom925XB91a1cTlmw+xfsfxCO1fOhMCQkAICAEhIASEgBAQAkIgahAQA2/UOA6hmsW641dZrnrBbKikGHmpsD4YNw0L9p5jf727L9yBz3c/jFp3COWHLUZGxymoMWYFhqzah5fvVY/zevv4YvLm42g0aS0yd56GIv3motWMDXC994yGMRh8FQPiqiOX0HTKeuTuORO5esxE82n/A7mOCAj4oaejmc/+y/e4be7usyg3dDHStJuIvL1mcV1oopgs8/L1B3ZFkEAxjtatXEwPBe3gJaMv+aQ9c+m2Xruhig+eKl/OYTHwnr50i7uqX7U4p7pRh6ZVkTxJAp4r+c7VtNOOX3IHkSxxfJiZqYxTmrbg0lTJErFRyJBMxrTJkTRRfG56+0H1eeaCiUW0K/ru9SeYPmwNejebhk51J2BCv+VYv3A/3rz6aHC1r1+8x+q5ezDu36X4t/kMtKkyGr2aTsV4Re/sUf0nAA7vuMAvLWtebrjR9MDW80HGunHpIeZP3IyR3ReiR+OpaFt1NPq1nonZo/+Hx/dfBpHVFOjFcSO6zufiq2fvMG3oanRrMJnHpDlwgzqiPhZN2YqB7VxAejTO9rUneLe2haW5WipmJOTagFbaom5ZSoIE2mXbqHpJrtt5xJXTkCK6SbNl3xk2yPbpUC8kcW6//eAZ39xJFD8OKpfKx3XaUWx7W3RvXYuryI0EZ9RRu8aVUbFEXuxTbtZkSJMM35XvJXWTJJFMQPN9QTuvI3ko6V4ICAEhIASEgBAQAhFKQDoTAkIgdATEwBs6Tn9d6vLDF7jm7oFMKRKhYOZUqFs4O+ysLbFLMd5+DuGFNtfcX6GJYoRduO88vik/qLOmSoKbT19j+aFLqD9xDb+srZbTKjhvP4UX7z3ZBcTLD19w8OoD1FHqbz55rbf+L4pB+B/FmDtwxT6cuPkYKRLEgZVibDly7SF6L96pjLcOX79919OjCo9PXug2fxvGbTiCO8/fwE8xBse3t6EmCSEQcLv9iCUcsqZTeFtwXjfK55CRq2gHHWdCiN5/+sISSRKFfgfvR7VROHXyxKyrG5G/xwK5MnG12+3HnFKkcc8QlrFIL7hABuMP6jUkDcMaguszKra5XbjHhtor5+7BPo4d4sazAxlXd64/iZFdFsBTOWd1531410Xs3XgGd9zc8VP5P2O2VPD2+oabilF2zpgNIF1tnfRZU6BRu4p6ofY/pQPF4sa3C8xT5r9lh3By/xU8uf8KtnbWSJsxOd68+Ihzx25gmOM8kFGa5HTDh7df8ODWM4zqsQiXz9zFJ/X8be2tAkWP7rmEUV0X4piS+nj7IG2mFPj49jM2LD7ARuU48ewDZU0989nrK+67v+TdtXlzqM5x3TXny6k65y7feKDbZLC859hFdvNDxj+Nr1aDglqVmnM/rfI9olUdJFs4j+rJgmt33IPUZ8uYCmtnDYBm9744GAqCJ1IL6VIl5f5vPXjKqURCwAQJyJKEgBAQAkJACAgBIRCjCYiBN5oc/vUn3HimTUrm5tTe1hq0k5d20dKOWa40Es3aeQZmP3/i4oweODu1G/aNbocL07shRcK4ePLmIyqOWIJYZsDJSZ25fffItrji3AOFs6bhHuftPcepdjRizQGcuf0E9YrlxLVZvXBgbAdcdu7Jac60yXBaaRu1/pC2SmB+8X5XbD13C20qFMCJiZ3wcsVQHJ/YObBdMsYJPH35lhs1P9a5oBNp2h4/99BpMVz8oDaOut16hFZ9pqFx94loN2Am+9DduOcUDL20KV4clWHNUJtmFO+vvpx9p7WrVjPWp8/e6DRkDo/VovdUjJ65Dqu2HAb57mSlMEQX3O7BPyCAd/hmSZ8yDJrRS3TlrN34p1MVLNk5DBMWd8O0Vf9i8vIeSJIyAT57euPQjgt6CypdJR869quHpbuHY9a6fhg1xxHztwxBxTpFWHbLyiPw8/PnPEWZsqdGgzbl9cI3n+/UjFwFM6FYedU1iCuUqGaTkhg4uTWW7R2BqSt7Yez8Lpj9X39kzZ0O9N/mFUco0Quf3n/BvImbYKfc3OkzrjkW7xqGdcecUKJiXpZ9+fQtlk3fgR/KtavTwPqY898AjJrdkdOh09spRuE7MGY85g4MRtG3kvzv0uzTpU4K2s1Ned1AL0ajusdPQ3fuX1cbYPPlzAh64VnrfjNQtF5fZCzTAXU6jsWidfvgq9wUpD41IfDc1zqvNW2a1Ft905FcP2jqJP27BPz9A3gCXl4+nEokBISAEBACQkAICAEhIASEgGkRiGVay4mA1UTBLmgn7DbFIGpmZoYmpXIHzrBBcQfOrz1+ldPgoqntaiB14niBIknjx0HLsvm4/E4xDk1qXQ1ZUv7ajZkkfmz0rKl6/J522bKgOnrw6j3+d/IakieIA+eOtUCy6ibkSZ8cC7rW5SK9BI52+nJBKyL9mYre5LbVQbuJY5F1WatdssYJkGGUWu3trCkxGGLb2XL9J+W4ciaEKCBA5U7j1MVbIP+dJ11v8ovaZi3bjp6jFqBc08E4deFmkF40fjc37z0dpF5TuPPwGU643uCizzeVoZcK9KIfMzMzPHzyCjsOnQeNdfiMGxas3YOBE5fzWAvX7SXRUAV6yeDslTtYtk2DipyaalSycj7UbFoKNlrHPk2G5KjRuAQv+c61J5xqR2kyJEOF2oWC6FhZW6BF12qwtLLAd19/vH31SVtFL3/twgMc3HYetvbW6Dq0kV570bK5kK9oVsXo+MtdQoJEcVC/VTmWJRcMnNGJ6NhZWlpg0jLlZlLpnLCPrfrcasQ2LT+CAMVwX6ZqfpSrUVBTzSkZmuu2KMP5mBJ5fvHmpca2s+HUUETuEaj+1VvDLjuoTTtojMbuz16jcbeJoJciWinHJG3KJLh04wFGOq9hQ6/mukO62TKm5h24z16907suUDuF1VuPUIKvPr/Ofa6Q6K8RuKLcwKPB5SVrREGCEBACQkAICAEtApIVAkJACJgIATHwRoMDufX8LZChtIxDBt51q5lyuVwZkUwxxN55/hYX7z/XVOulGZMnRLbUSfTqc6VLxnXx7G0Cd+tyhTrKrn4E98lbT3WNKtlz8S5nSuZIB1srS85rR2S0TagYa75998f9l++0mzhPbRrjNFdIFGoC3j7fWNbaUp87NyiRrY2VEgNeX0O3U4tewLN/1ThsXjAMpzdNhfup5TizeRrmjOnCu2Jply7t6H36QrV7mDpvVrsMkiWOD/Lz23HQbPa1+1Ux5F68dh9kGKadgAnjqV6iZmf7yyBVLH82nNs6ncc6uMYJj08tw6Vds7DBZRBKFcrJO3FHOa/FrlD4ECXDdA/FAE1G4vwOGdG+aRWamsmGgiWzG1xbWsXISw2f1P60KR9SsLG1QtIUCVjs47ug5zdXqiOvzz5YMGkzl1r3rAUy3HIhFFHq9KpHwt+/8VQMtaqbCLpqZLy1UX9etdvI+HvhhMrPc2nFwKvdpsmXrJRXk40RqWZXrJWBa64GgJ2N6sYPnRu6O281MtqpZoftxPkb0bphRVzcOQsnN07Bsf9NgtseF5DrBnKxMmzaqkA1G2tLdG5encudh7pg057T8FAMyrRTn27adB0+D8fOXuN2e7tf5z5XSPRXCJC7njEz1/LYxtx7cKNEwRKQRiEgBISAEBACQkAICAEhEJUJiIE3Kh8d9dxotyxlG5ZwoCQw0GO6GkNpcC9by6QYeAOVtDJWFqodd8kVI7FWdWDWxkrV7qWzC+ul+tHczWdu8Evckrcer5d+UD8G+v6LvpGxcJbUIB+tgQNJJtQE7G1VBhNfPz+jOt98VY/TW1hYGJXRbcibIwNKFsyBTOlSgAw49OKyxjVK4eDq8Wzk/eLtg5VbDgeqJU4QFyun90WaFInZGFu55XBkLN0BtTqMYdcOjaqXgsYHL70QLlBRyZALCRqLXghna20FeoFa2aK5sWn+UNQoX0iRAOav2cOpsejHj58g4y7tIKb+aC7UlzH5P1QfqcMkThbfYP9WNipjv59yQ8WggJFK29iqz9LPn0YElOol07fj0/svyF88G8pWy6/UhP7PXt2/SsPwINnypFc168SeH70Uo7DqkfJkqRLqtKqKiZLG413IqpLpxxpjaXAvJvNRn/tEIzQ+db3VblQ6Na+GcX1bInXyRKTKgXZ6jlXqLJXvie0HzkHjq5sae7atg/ZNKnNdj1Hzka9GT+Sq2o3drpD/3/EDWpMYEsWPy6lEEU+AXOmEFBp0GY/c1bqjZvvRge5vOpj4jbCIJy09CgEhIASEgBAQAkJACAgBgwSiXKUYeKPcIQk6odvP3uDCvWdc2WvRTj1D6vy957lti2Js/WrkpWax1UZBFjQQhdUwpnmpW/qkCVDaIX2wIa6tajep9rCxbVW7zLTrJK8iMHfVLpRpMkgvkJ9Zkohjb0sJfH2NG3g1j0UH9yg3dxKKKF4cO7SqX4ElyUcvZ9QR+e08vmEypg/viCY1S6N0EQf8U6csaDfuwM4NofEXnFa9E1ytFmzSrWVNbr984yHv5uWCTkS7OwdMXIat+88gRdKEiqG5D5ImMmz81FGN1kUbW/1zKaQF3bnmjnUL92N83+Xo33omOtQch+blhnN4cFN1XTHWx+lDbnA9fgNxlRtA5APXkBwdi7NHr2PJ9G0Y23sxejefjjZVRnP/7WuMM6QSpI5eyhakQl3w/vJNnQPixAv6UrfABiUTP3EcJY4Zfxr3C9+0jLi6K/dW+77VXCd023XLNuqbAzXKFdZt4jLt0s+cPiWfi7fv/3o5F7nVmTCgDQ6tGY9ebWujUsl8qFAiL4Z2b4rdy0ezLkVhOfdJXkLoCdCTCyEFesLi7XvPwE7pmBUvYPhJgEAhyQgBISAEhEAEE5DuhIAQEAJCQAj8GQJi4P0znMM9yrpQ+Nelzn2++2HL2ZuU1QsR7eI2nr0Nj0HG3Y2DWiC4UDRbWpaVKHQEPnp64d7jF3pB87h1+tTJuKOXr99zaih64aFqS5dK9Yi8IZmw1GVIoxqTdvHq6tkpxvoWdcth9ujO2Dh3CJxHOIJ245Jbh7uPXoAMTbRTV1fPWDlD2uTcRIZDL+9fRj6uVCKqHzRpBdZuOwradbxv5Vhkz5RGaTH9PzMzszAtklwcjOu9FLvWnwTt+ixVJT869KuLYTM7cEiVTt9tC9T/fXz/BSvn7OaS44B6iJdA5W6DK7Si1S57MGfMBhzbc1kxBMdB9QbFkUDvCgAAEABJREFU0WNEE+6//8RWWpJhyyZO/stg/8Xzq1Fl369+RttMrSGLYmilNT158Qa0g53yuuGF+rpAO/F12wyVE6t32Pr7+xtq5rr4ce059dZ5koMqc2VLx0bdNTP7Y92sAWzspd39l28+omYUyp2FU4lCQSCMInRDLbShTqWiWD97IO+6DuMwIi4EhIAQEAJCQAgIASEgBIRANCEgBt4ofKB8/fxBbhBoihsHNofHqmEGQ+86JUkE/zt1jdPIjlInisdDPPT4wKlEEUdgeM9m8LiwRi+UKuwAGqVwHpXBhHa40gvLqE43nL+q8pFcIFcm3aZwlcm3JikmT5KAklCF7QfPsVz1coXC5I5Ds9uMditqDEvckRKRcZd27q7achjkc3eDy2DQDkOlSf4MEFgzbw+IWcO2FTHGpRPqtSyLEhXywCFfBg7UZkCNq+ZP2AQvxbBKL3Yz5vvX4/l77Nt8FmZmZhgytQ3+HdMM1RqVQOHSObn/tJlUNwa4wzBG1taWisFYZVR+/cLwdYZ2sX/+5BXGnqOvON0syZE5Db75+uHqbZUBVXc156/c4arQnvsOioGWFG4/eEaJwfDs5VuuJ8MtZ0KIyBf3vmMXWapWBcM7g7lRot8iQDfUQhsWTeyJ8sXz/NZ4oiwEhIAQEAJCQAgIASHwZwnIaEIgrARihVVB5P8cgR2ut/HBywdZUyZGKYf0RgduVS4/G1noRWvk0sGoYAQ1VC+YjXs6c/sJTtx8zHmJ/gyBJIpxnXbIkj9M8oupO+r1u+5wdbsHaytLlC6SK0gzGYRfvTFsLAsiqFUgn56rthzhGhqXMyFE567cxYS5/7GU4z9VOQ1ttHDdXhatWCLoC7TIGEnG3TVbj6Jw3qz4b+4Q6BqAWVEiJvDpwxe89fjE+Yp1CnGqHZELhJdP9V+ASDL7t57FjUsPET9RHLTpqXKZQfW64dG9l1yVKn0yOBTQv5ngfu8Vt4c3ylNE1efJ/VcMdnHljMqYabDRRCvppWe0tHXbj1ESJJDhd9Pe01xXvnjQ84cqaecvpdqhhnIDhsorNh/Gp8/elA0Szl6+g+ce75EwXmw4ZE0XpM1QwT8gAD1HLcCzV+9QUzHuki9vQ3JSJwSEgBAQAhFGQDoSAkJACAgBISAEhAATiMWxRFGSwIaTqh25zcvmZQOusUmmThwPVfOrdnaG1qWDsb5CU58xeUJUK5CVRdvN2oTZO8/g45dfj1GTMe7qo5dYcfgSy0gUsQS6tKjOHY5yXsPGXC4o0cMnr9B33BIlB7SsV56NMlxQIk/l+JRuPBCF6/TBxj2nlJpffy16T8UJ1xu/KpRcQMAPkN/fVn2m49b9p8iaIRWa1SmjtBj/I53VijG4Wc9JIF+gXVvWgK57hiFTVmD9juP47hf0kfD77i8xaNJybrO1tsK/7esGDkSfJ23j7v9mD2TXD4ECktEjYB/HFjZ21lz/9OFrTjWRj/c3LJyyRVMMkr5+8R7/W3SQ67oMbojYcW05byhKnCQuV3/68BmeH4PupH3z6iPWLdjH7eGNqjcuyarH917G0T1BryV3rz/B+sUHuD0mRa0aVADtbqcbHWu3H+Md2rR+Ms72dVqMl68/IGeWtKhUMi9VB4b2A2eiaL2+fI4FViqZcsVyo3iB7KBrR8Ou4+F2+9cNuxt3n6D/hKWKFNCxWVXYWKte5scVBqKnL96iWc8p2H3kAhLFj4NRvZsbkJIqISAEhIAQEAJCQAgIASEgBISAEIgMAmLgjQyqEdDnw1fvceqWO2ytLNGkdNAf64a6b1U+P1eTSwdy7cCFsERhlJ3eoSaKZ08L72/fMWHjUeTsMRM1x65A48lrkUvJVxu9HPuv3A9jryIeGgLli+dB73Z1QLt463Qci2L1+6Fyy+Eo2WgAaAcvGXiGdGscpKs7D5/B/flrflnSsXPXg7QdP38DTbpPQq4q3dCo20TU7+yErBU6obbS96kLN0H+PBdO6AE7G+sgevRCuMbdJ0ITCtf9F2SI9ff/gcFdG2NEz3+CyFPB/fkb9Bm3GNkrdka9TuNYN1fVbijdeCBWbj6MuLHtMHNUJ9Cj6CRPYf+JyyCDFuXJ6JypbEckL9zSYEhdrA2JxfhgaWmB8jULMocpg1dh0gDFsL5wv8J2PXo0mYZ3Hp9QsFQObteOVs3ZA1+f70iSMgEe3HqGLSuP6oXLZ++ySpZcaZExe2p25dC3pTPmjN2AtfP3Yny/5ejTfAYy5UiD5GkSsWx4ogxZUqJMtfxsxFw8ZSt6NJ6KMb2WqNKei5HVIR3yF1c9TRCe/qOjDhlOF4zvzjf8+jktQc7KXVGz/Wjkrd4DW/adAb0U0WVMF27XXt/eYyoD+YGTQXdDm5mZYe7YbmwUvnnvKaq2HsHnIl1LKrUcxoZfut70aFNbuzu+gVOrwxg+f+n8p3O5SL0+oOtFnuzpsW3xCKRNmSSIjhQilwA9oUH8yfDvsmoXyE0OGey/69xMi9xZSO9CQAgIASEgBIRAtCEgExUCQsDkCIiBN4oe0rXHr/LMahfJgYSxje+iYyElqpAnE9InTcAuHXa6Rv6jy4ni2GHLkJZY0bsRGpXMhSwpEsHtsQdO3nRHmiTx0blaUfSsVVyZmfxFBoEh3ZpgyeReKF3EAV99fNmwSzv7HP+phh2KcYXy2uPSi8jI4GJuHgu0a0+7be2s/mhYvSTixbVnA83Fa/eRMmlC1K5YhF+edmTdhCAGV42ulZUlXK/ew0nXmxxo1+4/dcri2IZJoB24sQy83c+pXyt0al4N2TOmxgVlHNK1tbbiF7PRjr8zm6dB8xi6Zhx69FyTlzT0BJp1qoJa/5RG3Hj2uHbhAXauP4l3rz1RW6kbPrM9CpXKqdeZ5ydvrnv78iM2LT9sMLidv8cyZmZm6OvUHMUr5FaMsMDZI9exb9M50Ges06AG6D6sEbLnTs+y4Y1oF3Gb3jWRMVsq+H/3x91ryk0vOys0dayCrkMaIkWaJOHtOtrqVSqZD3RO1qtSjG+IkD9uMuLVqlAEe1eMZWOt7uKqlinAVVVK5+dUO0qZLCF2Lx+NiQPbolrZgvj42Qt0Tami6CwY34Nfnmal3DDQ1omlXEc83nzg857OYXLLUihPFu6D5pBF/UI4bR3JRw4Buj5OXbQZ+Wv05Bt0ZPh3mvM/dB7qAjLYZyzdAV2Hz8Prd58iZwLSq8kTkAUKASEgBISAEBACQkAIRA8CYuCNosdpZLOK/EK12Z1qh2qGZmZmODetG+uQwZWUulQvxuW5XepSUS+UV4zC9OK2faPb6bVRRdL4cVifZKisG8zMzFCtYDa4dK6LE5M64/nywSxP/Y1pXgklsgf12RjSfHT7l3LwBMigs3HuEFzb58IvZXtwbDHG9W3Jj3DrasZTDPKu253x4twqNK5RKkgz+dadO7YrTm+ayv08O7sSJzdOweJJvdCkZmn25xtEQV1wbFYVT04vZx16MdzdI4vgPMIRmdOlUEvoJ7QbeGyfltizYgzPhfQu7JiJDS6DQC4dEieMq6dEhiySC014fm6lnn50r1i6ewTWHXNCqnRJDC4lU/bU3D5zfb8g7bSLt3nnqpi3ZRC3Ux9OC7qgXsuysLO3Qdlq+bk+V8FMgXrUTnLBhXb//romJUwcFz1HNsWyPSO4r9WHx2DwlDbcN3XaaWB9rjc3N6diYAhpTYGCSqZq/eJwWtgVC7YP4b6mruyNui3KgG4gtOxWjeuyOKRRJGPOH+1wX6AYX89vm4FXrqs50A0fYz5vV0zrw+fp5MGGr/V0k6Vd40oguRv75+HK7tlYNb0v6NwzMzPTA0vyF3fO4j415+WupaNAfZgrxl89BSMVI3o24z4Gdm5oREKqgyNA/pErtxyG6Yu34t3HzwZF/QMCsHX/GdTuOIZ9IxsUkkohIASEgBAQAkJACAgBISAEoj2BWH9mBTKKEBACQkAICAEhIASEQEQQ+PHjJ/4dsxDkvzxBvNjo1qom76BeNLEnNs0bAnKrM2FAG35igm7wPX3xFo6DZ4P0ImJ86UMICAEhIASEQPAEpFUICAEhIAT+NAEx8P5p4jKeEBACQkAICAEhIAR+g8CBk5dx6uItkHF3/8pxGNnrH95BXadSUZQq7MCubto3qQx6YmLvirEsd/XWI2w7cPY3Ro0EVelSCAgBISAEhIAQEAJCQAgIgQghIAbeCMEonQgBIRBZBKRfISAEhIAQCEqAXqpHNX071kfaVIbdt1A7BXLdQXKUp5dWUipBCAgBISAEhIAQEAJCQAhERQIyp/ATEANv+NmJphAQAkJACAgBISAE/jiB63fdecyqpVUv0ONCMJFG7sqth8FISZMQEAJCINoQkIkKASEgBISAEBACOgTEwKsDJFzFHDkACcIgXB8eUTJlAhXs00OCMDDlz3jUXpvpzs7jzUdeXLy49pyGFCVOFJdF3rz7xKlEQkAICAEhIASEgBAQAkJACJgWATHwmtbxlNWElYDICwEhIASEgBCIZgSSJIrHM3749BWnIUXv3n9mkXhxQmcQZmGJhIAQEAJCQAgIASFgagRkPULAhAmIgTciDu7t24AEYRARnyXpw6QIHPF2hwRhYFIfallMlCCQMllCnsf5K3c5DSnaf/Iyi+TOlp5TiYSAEAiegLQKASEgBISAEBACQiC6ERADb3Q7YjJfISAEhIAQiAoEZA5C4K8RKF88L489bfEWPHwS/C7eo2evYcqCTSxft0oxTiUSAkJACAgBISAEhIAQEAJCwLQIiIE3Uo+ndC4EhIAQEAJCQAgIgYgl0L5JZaRLlRTeX7+hRrtRGDNrHS5df4CXrz/A97sf7j56gb3HLmLgxOX4p9cUfPH2Qb6cGVG/avGInYj0JgSEgBAQAkJACGgRkKwQEAJC4O8REAPv32MvIwsBISAEhIAQEAJCIMwE4tjbYubITrC2soTnl6+Yv2YParYfjQK1eiFdyXYo23QQ2g2YiVVbDnPfOTKnweJJvWBhbs7l6BRdcLvH60peuCVOut4Mcepk6G7b3xlF6vVBxjIdUKH5UDjN+R9zMqb848dP/Lf7JOp3dkLuat2RtXwn1O44Fis2HYJ/QIAxNTawz1iyFVVaDUeWco7IV6MnmveeioOnrhrV4QaJhIAQEAJCQAgIASEgBIRABBMQA28EA5XuhIAQEAIRQUD6EAJCQAgER6B4gew4tHY8ShdxgLm54X/O2Vhbop9jfexdMRZpUiQOrrso1/bz50/MWblTMbqO553JoZng/3aeYEP3vuOX8MXLBzkyp2EXFi6rdqF625F491H1sjndvvo6LUav0Qtx9vId2Nva8O5oMiwPnrwCjoPngAzAujq0K7qO41hMWbgZ1+8+Qca0yWFmZoYjZ9zQqs80Nrrr6khZCAgBISAEhIAQEAJCQAgYIhARdYZ/EUREz9KHEBACQkAICAEhIASEQKQRyJI+JTbOHYK7hxdyOn14Rwzp2mrUZLYAABAASURBVBgDOzfEjBGOuLrHBQM6NQQZeiNtEpHQ8UdPL7Tp74zxLhuQN2cGkHuJkIZ5/Ow1+o1fwmLE4dbB+di9bDTc9rqgQbUSePTUA33GLuJ27Yh27pJhOFH8ONixZCTObZ2Og2uccHrTVNBL6cjVxbw1u7VVOD/aeS1u3nuKInmzwnW7M/avGocru2fzcYhtb8tuMy5eu8+yEgkBISAEIoiAdCMEhIAQEAJCwCgBMfAaRSMNQkAICAEhIASEgBCI+gTIoEg7eVvULYfe7euib8f6aF6nLOLHtY/6k9eZIe3cres4DgdOXEb54nmwaf5Q2Nta60jpF8mdQkDAD7SoVx7EwczMjIWIwYzhjkiZLCG7Trhx9wnXa6LF6/dzdnSfFmys5YISZUqXQjGSd1RywOL1+/Ddz5/zFL1974kNu07yjl2XMV2D7I6m4zBIMbCT3Py1eyiRIASEgBAQAkJACAgBISAEIp2AGHgjHbEMIASiIAGZkhAQAkJACAiBKEjAzMwM3VrVhOM/1bDGuT9sra3gq2VcNTZlco1AbS3qlqUkSLCxtkSj6iW5bucRV04popfSXb/rjgTxYqNu5WJUFSTQDl7aofv63SecuXQ7sO2E6w32zVu5VD6kTZUksF6TaVKrDPtH3n/8Mnx8v2uqJRUCQkAICAEhIASEwN8hIKPGCAJi4I0Rh1kWKQSEgBAQAkJACJgKgTVbj+KfXlNw+IxbqJY00nkNGnefCDJMhkrhLws1q10G4/q2DPQtTLt6g5vSZ6+vuO/+kl8ilzdHRoOi+XJm4vrLNx5wSpHb7UeUwCFrOlhZWnBeN8rnoOqPXt6maXO785izeXJk4FQ3ihfHDtkypmIjsLaerpyUhUBUIyDzEQJCQAgIASEgBKIvATHwRt9jJzMXAkJACAgBIfCnCch4UYAAGXaPnr0G16t3QzWbZIni46TrTXYrECqFaCZE/ndpyulSJw00ClNZO6RX2qj8+KkHJRyevnzLabpUSTk1FGnaHj//pffs5TsW1bRxQSdKnzoZ1zx5/ppTiYSAEBACQkAICAEhIASEQGQSEANvZNKNsX3LwoWAEBACQkAICIHIInBdvYO0VCGHUA1RMHcWlnO7pdqxygUTijy/ePNqYtvZcGooIj/FVP/q7UdKOHz6rNKztzPu4ze2na1K1lMlS4VQjaeeywdPL1KRIASEgBAQAkLAhAnI0oSAEIgKBMTAGxWOgsxBCAgBISAEhIAQEAKhJPD2w2eWpB2rnAkhSpk0IUu88HjPqalF3l+/8ZKsrCw5NRTZ2aiMuPQiNt/vfizi7aPSs7Y0rmdrY8WyXl99OKUoNOPZqsfzUs+N9PwDfuKdp2/MDbJ2OfYGPgM/fgKGAp0vhuq/+/8wKO/rZ7j+2/eAMMn7Gek/QJkMBSXR68+YTljnZGyu342szRgjmqOfcr2hVDd8/PKdP4efv/rprYNkjY1lbI2kY2wexvoyxsXLx5/nJtdJ+Z6Qz4B8Bv7WZ4D+vRadgxh4o/PRk7kLASEgBEyMgCxHCAiBkAlYqw2Z30Px8jHt3qysDPuZ1ZaJjnl7O9XO3e9qw62hNWi/7EzDz95WpefrpzL4GtL7pn5JmoXFL3ahGU+jZ2lhbqhbqRMCMYqAxcvnSDhpjF6It3ppjOIgixUCQkAICAEhEJkEoqOBNzJ5SN9CQAgIASEgBISAEIjSBJIljs/ze/TkFachRfefvGSRFEkTcWpqkcb9gsaoamh9ml23cexVLhdIRpP39TVu4P3q40uiiK02IlMhNOMZ0rMwN0PieNYShEGM+wzEj22FWGbQC5YWsfTqNHJ0vmjy2qmVER1rS8N92ViZGxzDmLyxOZkrk6CgJHr9GdMxNoaxORmrtzKyNmOMaI6WyvWGUt2QII4V6DoU185Sbx0ka2wsY2skHWPzMNaXMS6xbS14bjQ/nSD1ct2Uz4B8Bv7IZ4D+nRedQ6zoPHmZuxAQAkJACAgBISAEYhqBovmz8ZLnr92D7yHs4vXzD8D8NXtYPr9DRk5NLcqSPiUA4MmLN/hBzwsbWOCL1++5NlO6FJxSpHkR2kt1G9XpBo1bC+0XqqVXv7DtxesPuuKB5efqPtOrX7YW2CAZISAEhIAQEAJCQAgIASEQCQTEwBsJUGNSl21nbkTy1uOx4eS1mLRsWWt0JSDzFgJCQAiYAIG2DSvxKs5evoNWfabDQ+vFYdygjt68/4SW/07DqQs3uaZOpaKcmlpEO3FzZE6Db75+uHr7kcHlnb9yh+sL5MrEKUWF86hePnf5xkOQIZzqdMP5q3e5SluvYK7MXOfqdo9T3cjzy1doXoSnkdWVkbIQEAJCQAgIASEgBIRAJBOIYd2LgfcvH/Dhq/ezgbTLvK1GZ3L9iQfLkCF1+/lbRuXIyEoyRfvPMyojDaZBgHYo/bf7JOp3dkLuat2RtXwn1O44Fis2HYJ/QECYF5m+VDskL9zSaOg+cr7BPl+9+YApCzejetuRyFS2I6q0Go4hU1bg0vUHBuWp8oLyg3jcnP+hRe+pKFqvLzKUao8SDftzOTg90pUgBIQA+Pxq298ZRer1QcYyHVCh+VA4KecUGZXCy4euKau3HAGd6zXbj+ZrCl0TiirnaHA7RL94+8B56Ta0HzgT5f8ZgvTqa0m3EfrfQzTGuh3HFYPkNJRsNIDP/XLNBqPzUBfQ9Sy4ubvdfoz+E5aiTJNByFzOEY26TsDEef/huYm+NCw4FtSWK1s6dG9di7I4fv46Ctbuzddh4j5x/kY+jtWV63KBmr25nQQrl8qH8sXzUNYkQ93KxXhd67Yf41Q7IsPvpr2nuap88bycUpQkUTyULZob7z99wfYD56gqSLh+1x2uyneWtZUlShfJFdhWsUReJIgXG4dPX8XTl28D6zWZ/3adAI1ZMHdm0BiaekmFgBCImgRkVkJACAgBISAETIGAGHj/8lEsmTM9z+DUrSecGoqOuD0MrD549X5gXjdz9o6qjzIOqj5126VsOgT6Oi1Gr9ELQbu36CUx9OgoGU4HT14Bx8FzjD6iaojAZ6+v/EPUUFtwdSddb6Js08GYsWQr7j56gRyZ0+D+45dYvvEQyEA0a9l2PfUuw1zYED131S4cOXsN5uaxkDNrWtDjsYfPuLHekg0H9PSkQggIARWB/+08wefJvuOX8MXLh8+7h09ewUU5p8ig9+7jZ5VgGOLHz16jRrtRGDBxGTYrRrAbd58gfeqkikHLAVaWFkavJ2RYLKUYaicv2IQ9Ry/ihWJszZ09A+tp/J1qpkFj0A2pvuMW4+Cpq4rsOz73X7/7hO0Hz/H1jMb/+fOnRiUwnbd6N6q1GYk1W4/ivbK+LOlT4NTFW5i1fIdyDRqEo8q1JFA48jJRruch3RpjSNfGsDA3R0DAD1y5+Qhb9p0BXXvpOFLZX7nhZ2Zmhpb1y8N5ZKcot4aInFCrBhVAvnHpc7J2+zFoPkufPnuDvjNfvv6AnFnSolLJvEGG7dKiOpdHOa9hYy4XlIjOq77jlig5oGW98kioGHS5oEQ0TmtlvACFe89RC/Ds1TulVvV3UvlunKzc+KRS5+aqvikvQQgIASEgBISAEBACQkAIRCYBMfBGJt1Q9F1KMfDSj7N3yg+QO8/fGNQ4el1l4I1taw0y9vorP9gMCZ6+rTLwllb6NNQudZFN4M/0TzvdyMiTKH4c7FgyEue2TsfBNU44vWkqcmdLj73HLmLemt2hnsz7j19YlnaEeVxYA0Nh7tiuLKOJaNderzELQcbhDk2q4NbBBdi1dBRuHpyP0f82Z8Mt7SI7cOKyRoXTgrmzoGDuzJgypB1uH1qAM5unYfey0bil5P9tX5dlRkxfjZv3nnJeIiEgBH4RICNpv/Eqg9P04R2V824+nz9ue13QoFoJPHrqgT5jF/1SCEWOduHXdRyHq7ceoUXdcti3ciwenliCA6udsHHuEJzcOAU21pZ6PR07dx3Nek6B19dvGN6zGc5umY57Rxdhp3JNIr2V0/sG0Xn8zAP0qHv54nmwaf5Q3D2yiOd+88B8zFQbHmkHsWaXpUb58s2HGDt7PRuaZ4xw5GvM3hVjcW2fC5rVLgMyJNONo5i4k5f+7dBbuW66bnfGoC6NUCx/NqRNmQS02zRlsoQokjcr+nasD2qfNrQDEieIq8Fqkmki5TtxwfjuMDMzQz+nJchZuSvfDMlbvQcbvuPFsYPLmC7crg2APpO929XhXbx1Oo5Fsfr9ULnlcN5lTjt4yShMxnRtHcoT2xIFc/DnukjdPqjaegTy1+yFxt0nwsvbhz+fpuoSg9YvQQgIASEgBISAEBACQiBqERAD718+HnEUo23hLKl4Fmdu6xu1Pnj54NzdZ8iQLAFKZE8LLt/Rl3vk8QHP3nlyP5pdwVyQyOQILF6/n9c0uk8L/gHPBSWiF8fMGNFRyQGL1+8L8cU7LKhE7z6oPjdJEsZTSqH727j7FMgwVChPFowf0DrQAGSnfJ67tKiBEYrBh3qaumgLJYHBsVlVNuq0blAR8ePaB9bb2VhjcNfG/Kgs7bqinYGBjZIRAkKACZALloCAH2hRrzwbY83MzLiezqUZwx1BRj3aHUs7cLkhFJGTywaQn1a6wUJG43w5M/KO0OBU/ZWbjAMnLuMdksum9EaP1rWQIU2y4FRQoURebJo3BOtnD0SpQjnZCEkKsWKZsSGscY1SVNTbjbtw7V6u76hcO5rXKct5ipImig8yDFcrWxDkmoKueVQfEwMd9z4d6mHbohFszH1yejku75rNNwAHdm6INCkSxxgslUrmw5F1E1CvSjHEjW0H8q373c8ftSoUAd0YIGOtIRhDujXBksm9ePf5Vx9fkGGXduk6/lMNOxaP4J3BunpkSKfP8xjluzi/QyY8ePKKvxfTKkb2cf1awVm5IaGrI+UYSkCWLQSEgBAQAkJACAiBP0BADLx/AHJIQ5TMkY5Fzt97xql2RDt2qVw6ZwaUy5WRsjjg9oBT7ej0LXcuFsiYEoni2HFeE3388hUuu8+i0aS1yN1zJrJ1nc55qvukGJA1ctqp5uVpn79+g5fyY2fA8j0o1n8ekrcej+4LtmuLGs2vOHyJ5Qv1mYMX71VGRBL++u07Fuw9hxpjVsChuzOydpmOCsOXoJPLFiw9eCHUhknqK6YFesSUfniS7z+Nv0FtBrSDl3Zt0WPPZy7d1m4ymv/g6cVtYTHwnr50i3XqVy3OqW7UoWlVJE+SgH8k01vNdduNlTWPwH7x9jEmIvVCwCQJhGZRR864sViLumU51Y5ol22j6iW5aucRV05DiugmDT3SrzEQhiSvad91+AL7HaVrUNmiuTXVIaalCjsYlaGd/dT4Vn3DifIUTrjeoAQNq5XgVDciAybVkcsKSiWYJgF60oOeLildxPhnSLNyche0YHwPnN82A69cV3Mg423GtMk1IgZTMgLT7nPaHU5jPTi2GOP6tjRo3NV0QEZmfJ5PAAAQAElEQVRecsOwZ/loPDy+hJ+AoR3TjsoNCTMzM42YpEJACAgBISAEhIAQEAJCINIJiIE30hGHPEDJHOlZ6PTtJ3q+Do9cUxlzi2dPg3K5VQbeg1fus7x2dPaualdvqZwqY7Gm7cGr96g5biWcNhzBxQfPkSpRPKRIEBenbrlzXW2nVXB//UEjrpfefPoGdcavxuqjV+D+5iO3x7ax4jS4aKfrbQxZtR/J4sfGf4Na8Lgk//qTF6qNXo7R6w/j8sMXSBzXDmkSx+U57FB0Vh+9yo/ikqwEfQJutx9xpUPWdEY55XNQfU5C+8Ky95++cJ9heRHMR7VROHVywzvDLC3MUSBXJu7X7fZjTkOKyHC959hFFitXLPRGI1aQSAiYOAFyh3Lf/SXvrs2bQ3WO6y45X07VOXf5hup7Q7ddt0zn28+fP0GGWjJU6bYbK+85eoGbjBlduTGM0Rv1TUDamatR9fMPQOC1xsguVNqRSTs16UZSePwPa8aSVAgIASEgBISAEBACUYyATEcICAEhECYCYuANE67IESYXDbZWliA/vLeevg4cJCDgB45dVxn0imVLi4zJEyJTikR4/Pojbrh7BMpR5sRNd0pQyiEDpxR9++6PTnO3gtw31C6cHbfn9cW+0e1wbIIjbrj8ixZl8+H+y3dwdNlqdNcs7dx99vYTxjSvhIszesBj1TBMbhv8S0OOXnuIbvO3IYG9DTYOas7zpvlQcNl1BveUMesXc8DVWb1wfGJnHHZyxIOFA7BrRBuMb1WFxCQYIfD05VtuoZeqccZApGl7/NzDQKt+1Qe1gdft1iO06jON/Qe2GzAT5EN3455TePfxs55SvDj2XGeojRuUyPurrxID7z7o63ODOvrm68cvWarXyQm+3/3YZ2TRfNnUrZIIASFABB4/U303pEudlH1cU51uoBejUd3jp6E796/fUX1v5MuZEa5u99C63wwUrdcXGct0APkiXbRuH5+T1Kd20Ny0ocfS1+84jkZdJ4D8nOao1AUtek/FzsOh20Gs3ef5K3e4WLJQTk4pohtFcextKWv0OkJGYJ9vqmvNW7WRmBUkEgIxhoAsVAgIASFgGgTcvrxC9mMz9MLQOyr3dKaxSlmFEBACQiDyCIiBN/LYhrpnelFK6Vwqw6xmJy4pn7v3jH3u5s+YAikSxqUqVMmXmdODWm4ayCj87rM3yEhcNGsabqdo89kboLY0ieNhXtd63E71FBLHtVcMtdXYYHz9iQc2nlE9Bktt2uHJm4/YP6Y9OlcritRKP9pthvK0K7fDnM3sX3H9gH+QNVWSIGIPPFS7hesVy4nkCeIEtpEfxkJZUkPjriKwQTJBCNDbwKnC3s6aEoMhtp3KIPLJ09tgu24l3UigulMXb4H8d550vckvaqM3sdPbwcs1HYxTF26SSGDQPE5Nb2oPrNTK3Hn4DJpHqzXGF61mjJvzPyQv3JJD+lLt0HmoC+/43b54BDSPXGvLS/43CYh6tCfg+UV1Pse2szG6FvIZSo2v3n6kJMSgMRq7K8bjxt0mgl6KaGVpwS/qunTjAUY6r2FDr+a6Qx3SDRnaLUs7ftdtP4Y+4xbj9KXbSJE0IcgYe/iMGxwHz0bvMQtJPFSBri/UBz1FULdS0SA6xfKrbvbovnxNI7R+xzGQkZfKhq41VC9BCAgBISAEhIAQEAJCQAgIASFg6gQCDbymvtCovr5S2VWuFbQNvEeuPeRpV8irMupSoWIe1SO4B6/+egT3tPqla8Wyp4W18uOc5CjsuaDaEdW0dB7QTiiq0w5kWG5YXOXPjlwqaLdp8hWU8WjnsKZsLLWIZYY7z9+itfNGFlnRuxHyZkjBee0oT7pkXOyzZBc2n75udOcwC0mkR8Db5xvXWVtacmooslW70PD6Gjo/tr3b1cH+VeOwecEwnN40Fe6nluPM5mmYM6YL0ioGetqlSzt6n754Gzhcs9plkCxxfJCf346DZrOv3a/ffHHx2n2QYZh2AiaMF5vl7Wz1DVLplH7Jl2KRvFl5DPp8kmF5+LTVuOB2j/UkEgJC4BcB76+qc9/Kyvi5b2ejuvFDN21oN/wvbcO5N+8/cQPt1m/dsCIu7pyFkxun4Nj/JsFtjwu7bqDdusOmrWI5ijQ61P/slTsxeXA73Dm8EPtWjuUXfJEuuU3YsOskVm85QirBBnIl02HQLJZx6tcK9nZBrxddW9XkNuel2zBt8RY8euoBL28ffhnb6JnrQC9yJGMzCdnZqtZPeQlCQAgIASEgBIRA8ASkVQgIASEgBEyLgBh4o8jxLO2g8sN76tYTkE9EmlaggTe3yqhLdcUVQ3Bs5Ucs7ZR9/Un1cqyzd55QE0qpX9bGBSV68eGLEgOZkifk1FCUR22EffbO01AzyDWEwQadyo/e39Bw4hp2M9G7dkmUyqlaj44Y+tQtjRqFsvHO5O4LdyD/v3MwefNxeHxUzVVXXspBCdjbqowfvn5+QRu0St98v3PJwsKC09BEeXNkQMmCOZApXQrYWFuCXkbTuEYpHFw9ng2w9NKzlVsOB3aVOEFcrJzeF2lSJMauI66o3HI4MpbugFodxrBrh0bVS0Hjg5deCBeoqM60blARG+cOwY4lI+G6zRkPTyyFU//WePTMA/U7j8f5q3fVkpIIASFABDSGz+/fjZ/7Pupzn+Q1Rk/KGwveajcqnZpX45dJpU6eKFA0ccK4GNu3Jd8c3H7gHN6rXbl89fENlHFRbgK1UQzD8bRe7Jk9U2r07ViPZVaFYOAlX8H/9JoCzy9fMaRbEzYos6JWVKJADjiPcGSf49MWbUGJhv2RuZwjSG/5xoOYMdwRsdQvs0oYP46WpmQjiIB0IwSEgBAQAkJACAgBISAEhEA0ICAG3ihykHKkSYqUieLi89dvuP7kNZ6++YTbz94gabzYyJ8xZeAszc1j/XLTcOU+aKfWWfUO3jJqNw8a4Y9eXzmbKK49p4aiBPa2XP1B+YHNGZ0oNC9UIxUy0r5X97H04EWjBlsbKwss6l4fw5tWQM60yUA6zttPoWj/eRi57iC8tIwH1G9MC3NX7UKZJoP0gmZXKz0CTUx8fY0beTQGmOAe5aY+QhPIcNOqfgUWJR+9nFFH5Lfz+IbJmD68I5rULA3akftPnbLY4DKI3Sxo/AXTLmC1itGEHgvv2LQKnPq1gn9AAMa7bDAqKw1CICYS0Lhf+KZlxNXl4K18f1Cd5jpB+eCCjY1qN3CNcoUNitEu/czpU/I5efv+U5ahG0CUoe+iqmUKUlYvFM2rcqtw494T1tUTUCpuKf21+Hca6OVx7ZtUBj1JoFQb/KPryvltMzC0e1PUrFCYrzVdW9bgJw9yZ0sHMmzTmhMniGdQXyqFgBAQAkJACAgBISAEhIAQiCgC0k9UJSAG3ih0ZEqrd72euuWOI9dV7hkq5c0E8k+rPc0KeVQuG1zvP2e3CB+9fNgQnEsxmGrLxbVT7fb08lHt6NRu0+Q/eftwNo5t+B5tNTMzY/2fSkxuGQpnTYM3nl7osXAHfvygWqVB549cQ/SoWRxHnDri/LRuaFU+P3z9/LFonyvaz94cuIMZMfC/jwq7e49fQDfQ49CEI31qlYuLl6/fU9FgeOGhakuXKqnB9rBWZkijGpN28erq0iPRLeqWw+zRnXlHLu20K1s0N8itw91HL9gnZ+5s6XXVjJZLFMzBbeT/U7NmrpBICMRwAlkUQyshIP+3xq6tL9TXBdqJT7IhhcTxVb7d/f39jYrGV98g9FbffEucQKVjVEFpiKfWoadRNDeclOrAPzLuNuk+CXS9Gz+gNSYMaBPYZiyTPEkC9GpbG0sn9+ZrzajezUG7hcnFA+mQuxfd70qqlyAEhIAQEAJ/iYAMKwSEgBAQAkJACPxRAmLg/aO4gx9M84Kxiw+ew+3xKxYunycTp9pRBcXoS+VTt91x6eFzyqJUznQwM1MZW7lCibKkTKTEwPUnHpwaim48ec3VmVOoZLkQhoh+wJP4yKblUa1gNizsWg8JY9uCjNQzd5yipmBDuqQJMLVdDazu2xT2NlY4cfMxTt9+EqyOKTcO79kMHhfW6IVShR142YXzZOH08o2HgS8W4gqt6LzavUGBXPqfHS2xUGffffjMsmRg4Uwoou0Hz7FU9XKF+BFvLoQievPuE0sFBPzAj58/OS+REBAC4JslOTKnwTdfP1y9/cggkvNXVH7XQ3vuO2RLx/3cfvCMU0PRs5cq39sawy7tJCZjM52jN+8bvlZrdGi3b9zYdkG6pbGa9JjELh/mjOmCDk2qBGkPa2Hr/rOsUrNiEU4lEgJCQAgIASEgBISAEBACQkAIxEQCYuCNQke9jEMGns3dF+9w69kbWJrHQrncGblOOyIDaskc6fDy/WecUbtn0Oz+1ZarVSg7F7edu2nwMVn6gb75zA2WqVZAZTjkQjgia0vVo77kZmJul7rcw9StJ3H+ruqxXq4IJqqcLzPKql1MvArqjzcYrZjXlCRRPNAOWfKHSX4xdQlcv+sOV7d7sLayROkiuYI0+/kH4NWbD0HqQirQo8+r1H40adyQ5Kn93JW7mDD3P8rC8Z+qnIY22nnElUXJB7CttRXnY3o0Z+wGNC83nMP04WtDhYN2eHZrMJl1SHfvZpURLFTKIhRlCdStXIzntm77MU61IzL8btp7mqvKF8/LqXZEO3+1y5SvodyAoXTF5sP49NmbskHC2ct38NzjPeiFiQ5ZVcZgEqhRvhAlIJcympt8XKGOdhw6z7kyOtcgMu427j4Rnzy9Md+pO8jPNwuGM1q4bi/7AKebT/WrFg9nL6ImBISAEBACQkAIRGUCb757I/uxGXqhyeX1UXnaMrfwExBNISAEwklADLzhBBcZaskTxAH54n346j3uKUZeeqFaHCOuEzSG34NXH/BUyubSNwTXK+aA4tnT4vHrjxi0Yh+7QWBhJfru548hq/bj3st3yJ46CZqW1jcIKGLh+qNdx91rFmdXC10XbGc/u5qOZu04jQOX72mKgek1dw+43nvO5UKZUnEqkWECXVpU54ZRzmvYmMsFJXr45BX6jlui5ICW9cqzUYYLSkQvMSrdeCAK1+mDjXtOKTW//lr0nooTrjd+VSg5Mv6T399WfaaDHqfOmiEVmtUpo7QY/yOd1YoxuFnPSSBfoF1b1oC2e4Y7D5+jw6BZPJauUYjcP4ydvR6L1u3jAfo7NuBUoqAErpy9C8+PqpcrBm0JWiK5T+qXLAZtkVJ0JtCqQQXQDto1W49irWLk1ZxHZJzt67QYL19/QM4saVGpZNDrefuBM1G0Xl8MmrQ8yPLLFcuN4gWyg64dDbuOh9vtx4HtN+4+Qf8JS7ncsVlVfvkiF5SofZMqSBQ/DrYdOIdOQ+bgtXrnvdIE2r3vsmoXZdG5RQ1OKdI27i6e1BP1qqiM1dQW1uDl7YORyvVvlLPqhseUwe0QE28IfVe+x2cu247qbUciX42eSFGkFZIXg8sw2AAAEABJREFUbhliCCtvkRcCUZOAzEoICAEhIASEgBAQAkJAm4AYeLVpRIF8aQeVv1Kf736okEffaKuZYkW16wbvb9+RNWVifkGbpk2Tkj/CuZ3r8svM1h6/ilKDFqDx5LUcSg1eiFVHLyNN4nigl55ZW1po1CIkHdKoLMgfL+0yJn+8GkMEuZVoPXMj8vScxfOg+TSYuAZVRi7Fu8/e6FuvNDIkTxghczDVTsoXz8MvJKJdvHU6jkWx+v1QueVwlGw0ALSDlww8Q7o1DrL8Ow+fwf35a97Jfezc9SBtx8/fAPnDzFWlGxp1m4j6nZ2QtUIn1Fb6PnXhJsif58IJPWBnE9RPM+3eo914mlC47r8YMHEZ/P1/YHDXxhjR858g4wA/sfvIhV9jdZ2ARkoo0bA/clTsgnmrd7MRaVzflmhQrYSOrhTzFc2KHwE/cOrg1RBhnDygkkmf5dcLGkNUMkUBE1sTGVUXjO/O7nj6OS1BzspdUbP9aOSt3gNb9p1BvDh2cBnThdu1l7732CUuHjh5hVNNZGZmhrlju7FR+Oa9p6jaegToRhBdSyq1HMaGX7re9GhTW6PCKb18bcnk3iD3CzsPu/L41dqMBF1DOg914Rs8Azo1REm1T21S6jNuMcjdi39AANoNmBmsEXLW8h2kEhi6j5wPzXWG0jzKeulmED3RsGpGP1QpUyBQNqZkApRrQV3HsZg0fyOu3HwEj7cf+aZqTFm/rFMICAEhIASEgBAQAkJACAiBoARivIE3KI6/XyqV/ddjsBXURlxDs8qZNhnIOEttpdUvZ6O8bkiZKC72jGyL8a2qIHf65Lwz+LHHB+RInQSj/6mIo+MdkTVVEl213y7Ti9QWdauHePY2OHrtIVx2n+U+6eVqzcvkhZ21JU7edMflhy/hp/xQbV2+ADYObI6BDYLfJcqdSIQh3ZpgyeReKF3EAfQSIzLs0s4+x3+qYcfiEbzLTxtT9kxpkDZlEpiT249iubWbsHZWfzSsXhL0YiQy6F68dh8pkyZE7YpF+OVpR9ZNAPn+DKKkFKysLOF69R5Out7kQLt2/6lTFsc2TMK/7evqvRwwW8bUWD71XzSrXQbJkiTAqYu3cPbKHZChooRiCBravSlO/DcFtAale/nTIVC4tOoFdCf3q4y3Os2BRc8PX3D59G0kS5UIGXPIbvhAMCaSqVQyH+icpB2wZGAlf9y0k7NWhSLYu2IsG2t1l1pVbQCtUjq/bhNSJkuI3ctHY+LAtqhWtiA+fvbiawoZTReM74F1swbAysANQNr5e+K/yejnWJ+vQ7QLmK4hdH7vXDKS67UHIxcS2uWw5MnliOY6Q2nSRPH5hWunNk6FoTWFpe/oKrt+x3E27NL8yT8yfR7+Va67Azs3REiBdCQIASEgBISAEIipBGTdQkAICAFTJRDLVBcWXddVpUBWeKwaxiEkw+uFGT1YbnzrqsEu18bKAh0qF8ayXo3gNrs3Ljr3xMo+TdClejHENuICYsW/jbnvVhWC3xmlkWtaOo/eHFIkjIu78/txPz1rqXZkkiuJGR1r4dy0blz/cNEA7BzeGlPaVUdptQ9evY6kwiCBWopBZ+PcIbi2z4Vfyvbg2GLQ7lcy9OoqxItjB9ftznhxbhV0/V6Sb925Y7vi9Kap3M+zsytxcuMULJ7UC01qlmZ/vrr9UdmxWVU8Ob2cdejFcHePLILzCEdkTpeCmvWCmZkZqpcrhJkjO7GBinRoPue3zcB/cwezwYaM0HqKMbzCDGZMIGnKhMikGGyfPvTAg9vGX4p18sBV+PsHoHSVfPD18WNdQ9HrF++xeu4ejPt3Kf5tPgNtqoxGr6ZTMb7fcpw9et3gbkAytFHbBEWGZNtVHYP+rWdiyqBV2Lb6GD689Qwy1NvXn7By9i4M7uCC9jXGoWuDSRjVYxEWT9uGi6duB5ElQ/+R3Rcxc9R6DHGciy51J6JDTSfWXTlrFz6+/xJEXrvg4/0Nh7a7YtLAlejeaAo61nLCiK7zQXqvnr0LFCUfxs3LDYe3lw9IZ8mM7ejTwpl9Fc8dvylQjjIf3n3GxuWHMbrnYp47ybk4bcTNK4+o+a8GuuGyYHwPnFfOnVeuq0FhiXLDh3xXG5rYiml9+DydPLidoWZ2b9CucSWQ3I3983Bl92ysmt4XZDQ0M1N9/gwpku9b2qlL16H7yvWHriF0fhfOm1VP/Nj/JvIc6LwPKfRuVyeI/nwn5ftC6+WT57ZOB90QoutaEMEYVNh+6Byvlq7frjucQZ8HenKib8f6CCmwokQhEZB2ISAEhIAQEAJCQAgIASEQrQiIgTdaHS6ZrBAQAlGHwJ+ZyU/85IH8/Mhoq9qBefqgG9cZik7sV7WVrpYfft/9DYlw3eFdF7F34xnccXNXRviJjNlSKYbPb7h56SHmjNmAnetPspwmCggIUOr/p4QNuKHI+Pv9QNosKfDZ8yuunr+HzSuOAlrGwNtKv4Pbu2D/lnN47v4GqdMlgV1sGzy8/RxHlbGvX3wA7f98vH1BBlnX4zfx9tVHJEwaD4mSxsdTxaC9f+s5jOiyAN5fvmmrcP6B0t+g9nOwzHkHrrneh42dFZKnSgT3ex4gva+K8ZcFtaKnDzwwptcSHNlxAWTopiZbRY9SCs8ev8bIrguxdeVRpZ8XSJ0hKT5/8sKZQ24Y32cZ1szbR2IShMBfI/D8lerGxYBODfTc5/y1ScnAQkAICAEhIASEgBAQAkLAZAlE/YWJgTfqHyOZoRAQAkKAXVkUq5AHllYWOHv4Ovz89I239248xfPHHshfLBuSJIuv6AQYJUc7fDv2q4elu4dj1rp+GDXHEfO3DEHFOkVYZ8vKI0HGoB235xXja5oMyTBpaXfM2zIIY1w6YdH2oZi26l90H94ICRPHZV2KVrns5l2yzTpXxeIdQzF2fhdMV+SWKOMNmNQK1RoWJ7HAEDuuLZo5VsHEJT2wZNdwTFjcDVOW92C9uPFj8+7gA1vPBspTxkcx3rqM+w/vXnsinWJsnrC4O4/htLArFu8ahl6jmyFT9tQkGiQsnbEdbz0+omX36pi1oT/WHXNC+z6qXaO+vn5sxKbdyE2V+SzaMRxj53bGQmWdfZ1asJF6z3+nQuULOcigUhACEUjg1ZsP3FtGI09McKNEQkAICAEh8OcJyIhCQAgIASEgBP4SATHw/iXwMqwQEAJCICwEfv74ibjx7FCwRHZ89vTGhZNBXRxQXyf2X6YEpavm4zS4iAy1FWoXgo2ddaCYlbUFWnStxkbk777+ePvqU2Dbq2fvOZ+7cBakzRTUDUfKtIlRrHxubqeIXqr47NFryqKiMoatvQ3nKbKxsWIDdIo0iakYJFRvXALpMicPUpc5R2qUr1WQ616q58AFJTp77AbevPyABIphefCUNkivGHmVav6zsbVCsXK5OK8bvXn5EU4LuqJG45JsCNduP33AjXccFynrgLotyoCYULuFhTkKlcqBZp2qUBFHd1/kVCIhEB4Cv6sTL449d/Hh0xdOJRICQkAICAEhIASEgBAQAkIgZhMQA2/MPv6y+qhLQGYmBAwSKFU5L9efPniVU030zec7zh65jjiKEbhQ6Zya6jCnZBhNmiIB631858kpRRmypqQEezeexsZlh+D12YfLhiIzMzNkcUjLTWN7LsGda+4GffqyQCiiVOlUL4L8pOOHl14mR+plquVHvASxKRuqkLdoFhgyMJPyxVO3KEHugpk51Y0y50jDVY/uvuRUIiHwNwiQ710a9/7jF5RIEAJCQAgIASEgBISAEIjeBGT2QuC3CYiB97cRSgdCQAgIgT9HIF/x7IifKA6unruHD+8+Bw58/tgN+Hj7olSV/KDdpoEN4cjYxlbtuP2pcv/LPeQtkgVNOlRiQ+3WVcfQrcEkLJqyFY/vGzZ0dhvWCKnTJwX5sx3bawkGtp0NehHat2/fub+wRHaxbVn8548fnGqitx6fOKu9c5crQoiy50lvVOL9G5VRm9w4NC83nF/App0OdZzLur6KQf3bV1/OSyQE/jSBVvXL85AL1+2Fn79xVywsJJEQEAImRECWIgSEgBAQAkJACAgBwwTEwGuYi9QKASEgBKIkgVixzEC7eMkNwqkDv3bxntx/hedLLhE4E0JEu2rXLdyP8X2Xo3/rmehQc1ygMfPBzWcGteu1Koc+Y5sje950iqEXOLbnEoY5zsOMEevw+qXKJ6hGkXwAD3Nuj0p1iyJ+wjh48eQtvwitb3NnNvTS/DWylNIL1A5uO485YzdgeOf56N5oClpWHMlzmjZkNYnohS+eX7kudhxbTkMb2dj+ckuhq+P1RbUzmV4651AwE4ILurpRpiwTMXkChfNmRZuGFXHuyl007z0Fpy7cNPk1ywKFgBAQAkJACAgBISAEhIAQME5ADLzG2Zh0iyxOCAiB6EugbPWCPPljey9x+ubVR9y6+hjZcqdDyrQqdwbcYCS6cOIWxvVeil3rT+L7dz/e9duhX10Mm9mBg8YlgiH1wmVyYuQsRyzYPhhNOlaGrb01Lp68hdE9FsHzo1cQFXKb0L5PbX4h23ClbzKWfvrwhQ2921YfC5Qlf7/Thq3B8pk74eZ6HxmypUL91uUwcFJrng+NEyislYkdV+WH9JuPn1bt72Xt49hxB9UaFcew6e2CDdr+i1lJIiHwhwhs3nsalhbmsLG2xEnXm2jUbSIyl3NEuWaD0bj7xGDDH5qiDCMEhIAQEAJCQAhEIQIyFSEgBEyfgBh4Tf8YywqFgBAwMQJkgM3skAYez97j3vUn0Lzwq0woXq5GKNbM2wPaQduwbUWMcemEei3LokSFPHDIl4EDtZFccME+ti3rjZvfVTEqJ4bnBy8c2n7BqEpOpW8ymNZvU55ltq05Do27htOH3XD3mjsSJ4uHKct7okPfOqhUpwjyFM7M80mcNB7r6EbxEqoMvE8fvtJtCnc5aQrVWK+evQt3H6IoBCKbQPeR87FkwwF88/11c8PL2wd3Hj5ng+9JxehrLET23KT/aE1AJi8EhIAQEAJCQAgIASEQTQmIgTeaHjiZthAQAjGbQKlK+RjAiYNXcXzPZVjbWqF4RdUL2LjBSEQ7aDW+ayvWKaQnRa4SXj4NzrgZVCVl2sSoWLsIV37QeikbVxiIGrerCPs4NvD77g+NiwX3eyo/vvmLZ0fCJCoDq7bq4/uGDbg58qh86Z7YfxV+fv7aKuHO5yuWjXUPbXdVjNZfOC+REIhqBEoXcUB4Q1Rbi8xHCAgBISAEhIAQEAJCQAgIgd8nEDkG3t+fl/QgBISAEBACwRAoWSkvLK0scGTHBZDRtnj53LBRjLzBqHCTfRxbaFwLPH34mus0kY/3NyycskVTDJKePXodZPQklw7aDeSW4eyx61yVJWcaTila5rwDTx95UDZIOL73MsiInCxVIiRSG3M1Rt0X7m8QEBD0RWrXL97Hwa3ngvShKVSsUxjk3/f1i/dY7rwziAFOg0sAABAASURBVJGXdiHfdnMHua/QyIcmLV4+D5KmSMDG51E9FuPMkWvsxkKjS+u/ev4eLp2+o6mSVAj8cQIb5w5BeMMfn6wMKASEgBAQAqZPQFYoBISAEBACf52AGHj/+iGQCQgBISAEwk7APo4NCpXKEahYplr+wHxwGUtLC5SvWZBFpgxehUkDVmD9wv2YOWo9ejSZhncen1BQq18WVKJXT9+x79wu9SZh3L9LMb7fcg59WjiDXspG/nVLVv61g5iMwYPbu2BgOxeWI/mhjvOwcPIWWFiYo02vmqAXxildo0SlPOzL99bVx+jX0pl98S6dsYNftjax/0rUbFaKxPQC+fjtPrIJ4iWMjWN7LmFA61mBY3VvOAXjei/BG52Xv+l1olNBXHuMaMLuIkjXZex/6Fx3IpyUNY/tvRidao/HlEGr8Ozxax1NKQoBIRASAWkXAkJACAgBISAEhIAQEAJCIHIIiIE3crhKr0JACISPgGiFgUDJyio3DWkyJEN2tbuC0Kg361QFtf4pjbjx7HHtwgPsXH8S7157orZSN3xme8VwnFOvm8JlHFBLMbSmTJsEtxVD7J2r7vD6/BUFS+ZA58ENMXhKG5DxWKPYoW9dFCqdE58+fMbNSw/x7OFrxI5ry2NMWdEL+Ypm1YgiSbL4in5b5MiXHu/eeOLgtvM4c9gNKZSxRszqiKYdKyN56kSB8toZ8hs8ZXkv/NO5KpKkSAj3ey94vDjx7UAvakubOYW2eKjymXOmwZSVvdGxXz3kL54N8eLb80vsHt15gSy50qFRu4ooUkafUag6FyEhIASEgBAQAkJACAgBISAEhIAQIAISIpCAGHgjEKZ0JQSEgBCIaAI9RzbFumNO0N6tqxmjgGJ8pLbJy3tqqoKk/ZxasG71hsWD1JMhtrliEJ23ZRC3Ux9OC7qAXrZmZ2+DstXyc32ugpkC9dJkSIrmXaqB5Eh+9eExmLi4O7oPa8Ty5uZBv07IfULfcc2xaPtQ7mvBtsEYOr0dG2INGWuzOKTBiJkdsebwWJZfunsE950jb3qew4w1fTB8ZgfO60Zx4tmx4XjYjHZYvHM4609e1hON21dSjNh2geL91DxoboGVRjI2NlaoULsQBkxshZnr+3GfK/aPBr0orkGb8iBDtxFVqRYCf5zAjbtPsHHPKcxavgPzVu/+4+PLgEJACAiByCUgvQsBISAEhIAQEAIhEQj6izwkaWkXAkJACAgBISAEhEBUJBAD57Tv+CUUq98PlVoOQ89RCzBx3n+Yv3ZPEBLkj7povb5IXrglrt1xD9ImBSEgBISAEBACQkAICAEhIARMg4AYeE3jOMoqQklAxISAEBACQkAImAKB+Wv2oG1/Z7g/D94ftJmZGWqUL8RL3nP0AqcSCQEhIASEgBAQAkIgJhCQNQqBmERADLwx6WjLWoWAEBACQkAICIFoT+Ck602MmbWO1zGoSyMcWTcBD48v4bKhqFyx3Fx9+tJtTiUSAkIgCAEpCAEhIASEgBAQAkIg2hMQA2+0P4SyACEgBISAEIh8AjKCEIg6BFZvPcKT6d2uDvp0qIecWdLC3s6G6wxF6VMn4+onz99wKpEQEAJCQAgIASEgBISAEBACpkVADLwReTylLyEgBISAEBACQkAIRDIBjS/dFvXKh2okjfH3s5d3qORFSAgIASEgBISAEAgFARERAkJACEQhAmLgjUIHQ6YiBISAEBACQkAICIGQCLx++5FF0qRIzGlI0RcvHxaxtbHmVKI/S0BGEwJCQAgIASEgBISAEBACkU1ADLyRTVj6FwJCQAiETEAkhIAQEAKhJpA8aQKWffws+BessZAS3Xv8QomBFEkTciqREBACQkAICAEhIASEgBAQAn+NQKQMLAbeSMEqnQoBISAEhIAQEAJCIHII5MuRkTvefvAcp8FFP378xOL/7WeRwnmycCqREBACQkAIRAcCMkchIASEgBAQAqEnIAbe0LMSSSEgBISAEBACQkAI/HUCzeqU4TnMXb0brm73OG8oev/pC7qPmIdTF25yc4NqJTiVSAgIASEgBISAEBACQkAICAHTIiAGXtM6nrIaIWCQgFQKASEgBISA6RAoWzQ3mtQsDS9vH9TpOBZNuk/C6JnreIH+/gFYt+M4Bk1ajrJNB2HrgbNcT/JF82XjvERCQAgIASEgBISAEBACpktAVhYzCYiBN2Yed1m1EBACQkAICAEhEI0JTB/eEY1rlOIVnHC9gQVr93D+o6cX+o5bjJWbD+Pdh89cV6dSUUwY0JrzEgkBISAE1AQkEQJCQAgIASEgBEyIgBh4TehgylKEgBAQAkJACEQsAektqhKwtDDHnDFdMHlwO5QqlBNU1p1rxRJ5sXJ6Xyya2BOx7W11m6UsBISAEBACQkAICAEhIASEgIkQEAOviRzIv7oMGVwICAEhIASEgBD4KwTaNKyITfOH4vGpZXDd5oxdS0fh1KapeHJ6OdbOGoCqZQr8lXnJoEJACAgBISAEhICJEpBlCQEhECUJiIE3Sh4WmZQQEAJCQAgIASEgBEJPwMLcHGlTJUGhPFmQOV0KWFtZhl5ZJIVAJBCQLmMggcuXgaFD9cOBAzEQhixZCAgBISAEhMCfJSAG3j/LW0YTAkJACAiBXwQkJwSEQDgIPHnxJsxaPr7f0Wfc4jDriYIQEAJCQAgIASEgBISAEBACUZ9ANDDwRn2IMkMhIASEgBAQAkJACPwpAnUdx+G++8tQD/foqQdqthuN9TuOh1pHBIWAEBACQkAI/B0CMqoQEAJCQAiEh4AYeMNDTXSEgBAQAkJACAgBIfCXCHi8/Yh6ipH3+l33EGew64grqrYegVv3n4YoG60EZLJCQAgIASEgBISAEBACQkAIBBIQA28git/I5MgBSBAGv/EREtXIIfC3e61gnx4ShMHf/hzK+KZHoEqZAnj/6QsadpmA05duG1yg73c/DJ68Ah0HzcYXbx/YWlth7tiuBmWlUggIASEgBISAEBACQkAIRHcCMX3+YuCN6Z8AWb8QEAJCQAgIASEQrQgsndwbFUvkxWevr2jZeyqOn78eZP5PX7xF7Q5jsGLTIa7PnikNDq4dj4bVS3JZIiEgBIRADCYgSxcCQkAICAEhYJIExMAbEYf19m1AgjCIiM+S9GFSBI54u0OCMDCpD3WMWUzUXqilhTlWTO+LamULgl6e1vLfadhz9CJP+sCJy6jcahiu3VG5b2hepyz2rRyLzOlScLtEQkAICAEhIASEgBAQAkJACJgeATHwmt4xlRX9KQIyjhAQAkJACAiBv0SAjLxLJvdC3crF4OcfgPYDZ6LdgJlo3W8GPL98DXTJMGOEI2ysLf/SLGVYISAEhIAQEAJCQAiYCAFZhhCI4gTEwBvFD5BMTwgIASEgBISAEBAChghYmJtj7riuqFOpKDfvPXaRU3HJwBgkEgJ/hYAMKgSEgBAQAkJACAiBv0FADLx/g7qMKQSEgBAQAjGZgKxdCEQYATLyznfqji4tasDMzIz7derXUlwyMAmJhIAQEAJCQAgIASEgBIRAzCAgBt4oe5xlYkJACAgBISAEhIAQCJmAuXksjP63ORZN7Ak7W2t0HuqCJy/ehKwoEkJACAgBISAEhEAUISDTEAJCQAj8HgEx8P4eP9EWAkJACAgBISAEhECkEEheuCXCEhwHz8ZXH1+8//QFRev1NagbKROVTv8cARlJCAgBISAEQiRw0fMFXD890wshKoqAEBACQiAaExADbzQ+eDJ1ISAEhIAhAlInBISAEBACQkAICAEhIARiKoFuN7aj9dWNesHju1dMRSLrFgJCwIQJaJYmBl4NCUmFgBAQAkJACAgBIRCFCAzs3BARHaLQ8mQqQkAICAEh8OcIyEhCQAgIASFg4gTEwGviB1iWJwSEgBAQAkJACERPAn071kdEh+BJSKsQEAJCQAgIASEgBISAEBAC0ZGAGHij41GTOQuBv0lAxhYCQkAICAEhIASEgBAQAkJACAgBISAETJ+ArDDaEBADb7Q5VDJRISAEhIAQEAJCQAgIASEgBIRA1CMgMxICf5qAHwKQ/dgMvVDolMufnoqMJwSEgBCIEgTEwBslDoNMQggIASEgBISAyROQBUYSgRt3n2Dqos3oOWoBWvWZhqFTV2Lhur04deEm/AMCImlU6VYICAEhIASEgBAQAkJACAiBqEJADLxR5UjIPNQEJBECQkAICAEhIARCQ+DBk1do3H0iKrUchumLt2LjnlM4eOoqlv13EKOc16JRt4koXKcPTrreDE13IiMEhIAQEAJCQAgIgT9MQIYTAkIgogiIgTeiSEo/QkAICAEhIASEgBD4QwTOXr6Dis2Hhmi8ffXmA5r3nsK7ef/Q1GQYIRDxBKRHISAEhIAQEAJCQAgIgWAJiIE3WDzSKASEgBAQAtGFgMxTCMQUAl7ePug9diF8v/uhaL5sWDWjH479byJu7J+HF+dW4fq+uTi6fiKWTfkXhfJkgZ9/ALoMnwvSiymMZJ1CQAgIASEgBISAEBACQiAmEYhpBt6YdGz/ylqL9JuL5K3H49KDF789vtvjV9xXgT5zfrsv6UAImBqB6cPXonm54Ti840KYl9axlhPrvnz6Loju6rl70aXeJFw8dTtI/e8UfmeevzOu6AoBUyawdf9ZPH3xFtkzpcb6OQNRpXR+JZ8GiRPGhbl5LCRJFA85MqdBjfKFsGHOIKUtNd59+IzVW4+aMhY2ZK/bcRzdR85H+X+GIEs5R9TpOBZDpqwIdqfzjx8/8d/uk6jf2Qm5q3VH1vKdUFvRW7HpULA+jL2/fsOMJVtRpdVwHitfjZ5o3nsqu8kwadCyOCEgBIRA9CEgMxUCQkAIxBgCYuCN4od6+aFLbOQko6lDd2f+8RKaKXeeuzVQr+OcLaFREZloRCC8P0aNLTF9qXZIXril0UA/lo3pUv3x89cxYOIyNOwyHvQDl/rKWakLLl1/QM1GwwW3eyhQqxePKz4ijWL6Yw33brjj8ycvPL73+zdo/tikY+BAdF617e+MIvX6IGOZDqjQfCic5vwPnl++hpsGXVNWbznChrGa7UezgYvO46L1+uK7n79ev+G9ZpDP2HHKXJt0nwSHyl1RrH4/dBg0C3NX7Qp2/m63H6P/hKUo02QQMitGu0ZdJ2DivP/w3OO93txiQsWOw+d5mQM6NYSdjTXnjUX2djYgOWqnazWlphi++vjyd1DfcYuxee9pvH3viSwZUuHancdYvvEQ+yqeOH+jwaX3dVqMXqMXgtxe2NvaIF2qpKDvp8GTV8Bx8BzQ+aGr+MXbB3Ucx2LKws24fvcJMqZNDjMzMxw548Yvupu/Zo+uipSFgBAQAkJACAgBISAEhECkERADb6ShjfiO3ys/3vdfuRdixyS373LIciF2JAJRlkBfp7D/GDW2mM9eX/HN189Yc7D19Lhv1+Hz0LTHZJBx6MzlO7CztUbpIg5IlzopvL5bbU2JAAAQAElEQVT6GNT/+fMn5qzcifqdx+Pl6w8GZaJcZQyYUKtuNVCxThFUqV8sSqz2s+dXtCg/IkJ3FEeJhf3GJP638wTIALvv+CV88fLhXZoPn7yCi2Igrd52JN59/Bzm3h8/e40a7UbxTRoyjN1QjFXplfO3tHIeW1la6Bm3wnvN2HXEFeWaDmZj7ulLt5A2VRKl7x/YfeQCyOhbsfkQPH35Vm/+81bvRrU2I7Fm61G8V9aXJX0KnLp4C7OW70DZpoNw9Ow1PR1Tr3jg/oqXWCBXJk5DigrmzswiN+8/5dQUo+UbD8JVuWmYVTHqsruKA/OwZ/lo3Du6GIsm9uSdzbOWbcfdRy+CLJ927tJ5lSh+HOxYMhLntk7HwTVOOL1pKnJnS4+9xy5i3prdQXSoMNp5LW7ee4oiebPCdbsz9q8ahyu7Z2Pj3CGIbW+LMbPW4eK1+yQqQQgIASEgBISAEBACQiC6EYiG8xUDbzQ5aBXzqH7EbTp9I8QZbzl7E75+/sidLnmIsiIQ/QiE98eosZW+//iFm3JlSwePC2sMhrlju7KMdhQQ8APtBs7E1v1nULJgDmxwGYSHx5fgzOZp/AN374qxKFs0t7YK5z96eqFNf2eMd9mAvDkzIF/OjFwv0d8nkDV3OnToWwfxEsT++5NRZnDlzB3QzQAlK38KATLE9hu/RMkB04d3xK2D87F72Wi47XVBg2ol8OipB/qMXcTtoY3oBVx1Hcfh6q1HaFG3HPatHIuHJ5bgwGonPo9PbpwCG2vLIN2F55rx9ZsvBk1czo+7D+/ZDPcVoxtdI8gwdnnXbFQskZd3407S2WF5+eZDjJ29HmRonjHCETeVNZPetX0uaFa7DOgR+S7DXFg3yCRNvOD5xZtXaGUV9NhwpYEobmw7rvVSbgpwxgSjC2pjaucW1ZE9U5rAFdJnp06loqhQPA/XXbwW9Ab44vX7uX50nxZsrOWCEmVKlwIzRnRUcsDi9fuC7GSn3cEbdp3kHbsuY7oiTYrELEcR3RgZ1LkhZTF/7R5OJRICQsB0CcjKhIAQEAJCQAhEFQJi4I0qRyKEeRTMnArJ4sfGIbeHePPpS7DSG066cXvNwtk5lci0CCwOx4/R4Ai8++DJzUkSxuM0tNG67cdAbhXox+z6OYPYmEu7d4PTJ2MdGZMOnLiM8sqP7U3zh8Le1jo4FWkLgYCZuVkIEtGz+ft3P5w/FvINrei5uvDNmvyB0o2VFvXKszHWzEx17OPHtceM4Y5ImSwh+/6kHbihHcFJudHy5v0n/Nu+LhuN6YaLhbl5sOrhuWbce/QC75XvLjKE9Whdi3f6awahefftWJ+LrlfvcqqJFq7dy9mOzaqieZ2ynKcoaaL4mDmyE6qVLciuHRYrBjiqj6IhwqeVOrnKoHjn4fNQ9a3ZGZ00cfxQyUdHoR8/fvC0bYwYva2trLg9QC1HBXqC5PpddySIFxt1K+s/uUA7eGmH7ut3n3Dm0i/f5Cdcb/DNisql8vFOdOpLOzSpVQbWyjz2H78MH9/v2k2SFwJCQAgIASEgBISAEBACkUJADLyRgjXiOlX/fsePnz9Rv5gD/6DYdOam0QEuP3yBG09eo7RDeiSKbWtUjhpol++qI5fQdMp65O45E7l6zETzaf/DhpPXQEYEkjEUrj/xQJ8lu1Bu6GJk6TwNNceuwOydZ/Djx09YWRg2DFB/a49fRYc5m1FpxBKQP+HMim6F4UswbNV+vP7kZWgoo3Vfv33Hgr3nUGPMCu4ra5fpoL46uWzB0oMXguy0MdpJlGoI3WTC+2M0uN4/eKrYh9XAu/h/+7nbsX1agnZIcSGEyMzMDN1a1YTjP9Wwxrk/bK2teLd5CGrSHAwBKysL3Lz8EPMnbsYQx7noUNMJE/otx+7/TinncUAwmvpNIb0Q7f7NZzxOv9Yz0a3hZDiPXIcDW8/Dz88f/y09iOblhoNk9HsGYlnEwvs3nlg0ZSsGtJmN9jXGYVSPRVg6Ywduu7kHUTm+7wp6NZmOq+dVO+1mDF/LfTdX+qfw7atvEPmYUiDfnrTWFnXLUhIk2FhbolH1kly384grpyFFtHt3y74zbBju06FeSOKB7eG5ZvxQG9VslHM+sCOtDBnDqOgfoDLSUZ4CGdIobVitBCV6YaB6p+S+45f02ky5Ir+D6smHPUcuhGqZa7cdZTkyVnLGBKOi+bLxqv636wT/W4kL6ujZq3c4dPoK77gtVchBXQu43X7EeYes6Yx+j+VTsybf1yysRG53HisxkCdHBk51o3hx7JAtYyqeh7aerpyUhYAQEAJCQAgIgZhKQNYtBCKegBh4I55phPao2HW5v++KAaVZGdXjhZvO3OA6Q5GmrVmpPPjmb9y488XHF/8oxtyBK/bhxM3HSJEgjvLjxhxHrj1E78U70WTKOpARVXeMdSfcUGP0cqxX0s8+35AzTVK8+vgFEzYeRc9FO5DQiFGZxhuqGHJ3X7iDp289kTJhXKROFA+3nr7G0kMXUU3p09P7G0LzHxmDSX70+sMgg3biuHZIkzgu3F9/wA7X21h99KqyFovQdBXtZML7YzS4hb7/pNoRnkQ5HsHJabfduv8U9x6/QAGHTOwDVLstpHyz2mUwrm9LmJurLj8/NR/ykBSl3SCBx/deYXzf5Ti5/wr8v/sjeaqEuHv9CdbO26fUL4PnB9XxNagchsp9W85hbK8lPM6n915InCw+rpy5ixWzdmLmyPXweP4h2N4+vPmMEV0X4NieS2wQTpUuMR7dfoHDO1wxrvcS3Lj0MFA/ThwbVKlfVBlDtau8ZOV8aNSuYmAwtzR8IymwAxPMkN/b++4vYWFujrw5VMY93WXmy6ly5XP5RvAvN9To7Tl2kV1g0M5FjYFV0xZcGp5rBhnQEieIC1rDqQs39brfoBjlqJJ29lNKwU/5DiOXLpRPrfUIPJU1IWeWtCD3A09evAmX/2FNP9EtrVWxKE956X8HsO3AOc4bivwDAkAvFtPckGumtQvakHx0rmvXpDJ/J9GTJf/0mhLo3/3KzUdo0NkJvsr1cVy/VvwyNM06NTub06VKqqnSSzVtj597BLY9e/mO85o2LuhE6VMn45onz19zKpEQCBcBURICQkAICAEhIASEQCgJqCwsoRQWsb9HwP/HT2RPnRQFMqVio+iVhy/1JvNN+fGy9exNNrLWLJwj2N17I9YcwJnbT1CvWE5cm9ULB8Z2wGXnnpzmTJsMp5W2UesPBRnj4av3GLh8L34otc4darL89uGtOd04sDn2X7kP1/vPlVb9v/iK4XdY4/I4PK4j7i3oh4PjOuDYBEfsHdUOiePa49WHz1imGHr1NfVrXHadwT3lxxXtaL6qzP34xM447OSIBwsHYNeINhjfqoq+konUhPfHaHDL/6A28LrdesRv/m7cfSLaDZjJRoGNe04ZNJq43VbtXqKdTR5vP6L3mIUo12wwMpbpoKRD2Gcm7Q4MblxpixgCezeeRplq+bFg+1BMXdkb4xd1w+wN/ZEpRyrccXuCDUuCnsfhGfXZ49dYNXsXaBdmp4H1sXC7cozndcaSPcPRa1RTNs6eO3o92K43rziMnPkyYt6WQZi5ri/Gze+KuZsHIm/RrKy3fe0JTikqUDIHGrQpj/jKjRso/xUt68BlqqNgaWmh1MasP/K/SytOp3wPaG6OUJmCJqRX2ij/+OkvQxSVjYXrd1Q7p/PlzMgvp2rdbwaK1uvL53GdjmOxaN0+xSjmp6cenmsGGZDH9W/FN3ZonFVbDnO/ZMQd6bwGZIDMnik1hnRrzPUUWVqYI469LWXxTvmO4IxORPo+33y59u17lbsZLph4RD6LSxV24FV2GeaCGm1H8Yv26CV5x85dx8rNh0FcK7ccDnqxGAk2qlGS/aVT3hSDnY01ti0egfZNKrP7oKL1+qBKq+Go3nYk4saxw84lI9GxadB/H3z6rPJlbG9nbRRJbDvVZ/CTp0qWBDU+kGPb2VDRYNC0aXa8k1CA8m85T28/SBAGpvoZ+OoboNw4hF7w8/+hV0f39/0DfhqspzY6XyjVDcZ0jI3x3cjYxuSN9a+cvqCgOx8qG9MxNoaxORmr9zPCyRgjmpOxti8+/nwN+vrN3yB7Y2MZW2NwYxnrK6xcjMkbmxMdJwo0N93w+asfr99Uz0FZlxxf+Qz83meA/r0WnUOs6Dz5mDR3+pKm9TYsofpB999p/beG77pwBx+9fNiVg41VEAMIqQaGB4qh9n8nryF5gjhw7lgLSeL/eqFSnvTJsaBrXZbdePo6aOctF5RoypYT/Lhhk5K58U/ZfErNr7/SuTKgd23Dj9BqpDpVKwKHdKodLZq6/JlSokXZvFykeXEmhOiBh2qnIBmnaQ0a8VixzFAoS2qUzJFOU2VyaXh/jAYHIkD9SPSpi7fYfyftftp77CIbBXqOWoByTQdDd8edu3pHUiwzM5AhaMOuk3j38TO/2Mb9uQfmrd4NMizQzqngxpa23yeQPHUitO9bB3Hj2QV2Ri9J6zZUZSg7vvcynj0OncEvsAOdzNaVR7mmbPUCKFejICwUwxtVWFlZolj53PinSzUqBhuSpUoEMg7HTxgnUC5ufHv806kyl2+7PYa/fwDnJdInECqDktoY+kq56aLfg36Nxmjs/uw1GnebCPKNTe5W0qZMgks3HrCBkM5vzXVH00N4rhmkW79KcTaykdF24MTlKFa/HwrU6oXl/x0E+QDeu3IsyLcuyWpCsfzZOLtp72lOdaP1O47BT/250Rh6dWVMsUzfd+SDOEv6lLy8yzcfwmnO/9B95Hw06zkZgyYtBxnobz94xu0t65fHtKEdOW/KEX1+C+fNyu5/6HNxTX0Tgz6zPt++6y3d2+cb11lbWnJqKLK1seJqr68+nFJEL/ejlK6BlBoKtorBmeq9vqrGoDwZGshQIeGHct5KMMXPAZ1rP5UPu25gY5uBenqKS1c2sKxklD/oBnJbp1tHZWNj/FAaqF03KNV6fbOMcqJyqjtfqqegW09lI/XGxjA6J0XB4NjG6hVh5c/gOhQVg/X+isGbPnu0ecigrqJosN7IGllWiZQ//fGM9KVU68sqHI1yUTpX/vR1jM2J6ikoferq0dpjSJDrrPqzLsdbvm/D8hlQLhvR+k8MvNHs8DUqkRvWlhbYdPoGaMeu9vT/O3WNi01K5+HUWLTn4l1uKqkYQm0VAw0XtKKsqZLwLmDq//5L1WOI9A+w3Wq9pqVVBlktFc42LJ6L07BGWVMmZhVyvcCZEKI8aiNxnyW7sFkxQpP7ihBUTKY5vD9GgwPQu10d7F81DpsXDMPpTVPhfmo5zmyehjljuvDLY8hw227ATDx98TawG81OuSUbDoB2FB5Y7YTr++Ziz/LRuHtkEYZ0a8IGX9pZFpOOTyCgP5jJWyQLDBkZUqRJDIeCmUDn7qXTqnM+PNMi/fPHb7Jq8Yq5OdWNSlQM/ppD8vmKKvO01r/xlCp95RawFAAAEABJREFUMsQyj4Ufyo0Gzw9eJCrBAIHQGJRoByOp0g9s3+9+lA020MvVSIAe4W/dsCIu7pyFkxun4Nj/JsFtjwvIdQPt1h82bRWJBYbwXDM0yimSJkR+h0xcdFduFGmuJWREps8aN2hFXVvV5JLz0m2YtngLHj31gJe3D46evYbRM9dh6qIt/DIrEgrpJY8kY0ohdfJEOLhmPMgPMRk1zczM9JZH9ZvmDVGMux1gY23ciKmnGA0rvvn6oXXf6eg6bC5yZEmLrQuH49o+F3RqXg0P3F+hSY9JWL/jeJCV2duqduD6+hk/X76pX5JmYfHr+mVvp9L7Hsx5ptGzVN8Qo4HNzc0Qz94yCgWZixyPiP0M2Cnf87GUS5FusLQwg24dlS2U739KDQU6XwzVWxrRMTaGlWUsg2Mbkzc2J3NlMhSURK8/YzrGxjA2J2P1lhaG12BsPjRHCyVS/vTmGsfWgq9Bdtbmem0kb2wsY2skHWPzMNZXWLkYkzc2J5oPBZqbbohrZ8nrl3NfOMhnQD4Dhj4DiOb/xYrm849x049nb4Oq+bPwztq9l38ZbZ6+/cS+dPNmSAEKwYF5qX7UdfOZG0jeerzB8MFLtVPl/RdV+tbTC/4Bqt116ZPGN9h9ykRx2fhssDGYyrjqXWeGftwbUutTtzRqFMoGmmP3hTuQ/985mLz5ODw+fjEkblJ19uH8MRoShLw5MqBkwRzIlC4FGwEypk2OxjVK4eDq8Wzk/aIYVFaqH6mmvjQ7oQrkyoz/zR6EPNnT88trqI0exe7VtjZyZUsH8ot58OQVqpYQSQQSJzN8PtJwyVIlpASfP4bfcPr5kzcbiamjdJlVuwUprx1o93D8RHG0q/TyxuZJ7gasbVSGJ7/v/np6UqEiEBqDko/aEEUadB5SGlzwVr+sjgxg5BebDIYa+cQJ42Js35awtDDH9gPnoPG7q2kP6zWD9A6dvopSjQeycbafY33cP7YYK6f3Va47KbFi0yE06joRZOglWU0oUSAHnEc4sl/1aYoxt0TD/shczhHkY3X5xoOYMdxR+YGqWBMUhYTxg/8MKiIm90dG274d6/PO6Cenl/PNuW2LRoBu2J3bOp3rS6ldOZjc4nUWRMbdA8r3TbvGlXjdxQtk5x3h9CLQfSvHIn3qpOgzbjFWbzkSqEm7yangqxiHKTUUvvqoXIBoXC6QTGz1v1s0Rlyq0w2G9OiTamkRSzmvJAgH0/wMkFEWBv6LZeAGFIkZqaYm0PnCGZ3ImI6xMcJab6x/nWkEKRrTCevYxuSN9W+sniZnrM1CfQ0i4yjJ6QZjesbqSd9Ym7F6Y+sMa72x/mlOxoJce2LJd5D6HJDPgnwWDH0GEM3/ixADbzRnEO2m36ikahfd5tM3AudOLheo0LRUHkqCDZ/VjwumT5oApR3SBxvi2lpxX55qQwAVjL1IjdqSJfjl7oHKmkAvUFtx+BK6zNuKqqOWIV/v2UjVbiIbl1vN2KARC1VK7icWda+P4U0rgPwFv//yFc7bT6Fo/3kYue4gvNQ/xkLVWRQTmrtqF8o0GaQXLrjd45mG98coK4cjihfHDq3qV2BN8tHLGSWyslLtZKpaOj/71FSqgvyZmZmhSN6sXHf74TNOJYocAlbWKuOood7J8Er1Xz6rbtRQPqzBS0vXPra1UfXYcVR+Ko0JWKuvJcbapT54AqExKHmrr+2a60TwPQI2asN6jXKFDYomSxwfmdOn5Jt7t+8/NSijW2nsmnHS9Sba9XcG3aTatWwUBnRqyP51q5YpgENrndC9dS3Qy+FqdxgDuqGk3e8/dcri/LYZGNq9KWpWKIzSRRzQtWUNfvIgt3IjiQzbtObECeJpq8W4PLknoJtz5NaCbtilT50sxjCgF3+ecL0BcvExvn8bve8luuE4eXA75rFo/T5OKdIwevn6PRUNhhceqrZ0Wi9iS68Yi0n4xWuVyyjK64bn6j7Tx6DjoMtAykJACJguAVmZEBACQkAIRD0CsaLelGRGIRGolDczksWPjcPXHvKuVdr5uvHUNd4926hkyG4SaBcwjUHG3Y2DWiC4UDRbWhJF6sS/fjjTzlmuNBB9/ab/mCO5emjt/B8Gr9yHI9ceIW/6FOhbtyTW9m2KzUNaYkijcgZ6Cr7KwtwcPWoWxxGnjjg/rRtalc8PXz9/LNrnivazNwfuOEQ0+++jpxfuPX6hFzSPW2t+KIb1x+jvYMiQRmUk0Da6JFTvlPNT7+o21H/c2HZc7eX9jVOJIoeA1+evRjv+4qky7NraqW7UGBUMpiFx8l87hD2DcaEQkv9cM6N7cYIZXJoCCWRRDK1UoF3x5KOO8rrhhdqgRDvxddsMlRPHj8vV/v7+nBqK4se152rvMNw4M3TNWL31CMgnau/2dZA7W3ruUxPR9XxEz2YoUTAH7ru/ZF/AmjZNmjxJAtCTAUsn98bGuUMwqndz0EvZLl1/wCJ0Q4n80nIhBkQzlmzlF9OFdqkPnrwCvUCT3FyEVicC5P5YFy/UhtaMaZPB2Ocgl/pzR58xzcQK58nC2cs3HvLnkws60fmrqqelCuTKFNhSMFdmzruqb75yQSvyVG48X7/zmGs0slyQSAgIASEgBISAEBACQkAIRBIBMfBGEtjI7JZ+vDQqmZuNmP+duo5j1x/h2TtP1C6SHXHtbEIcOnUilbH2ofplZSEqKALkqzex+oe++5tPSo3+n893P7xTv5Fau3XLuZs4f+8ZUieKi+MTHDGlXXW0rlAQ5XJnBPkBTqWej7ZOWPLpkibA1HY1sFoxGNvbWLGritO3n4SliygjO1wxcnhcWAPdoHnENrw/Rn9ngZq315OBRdNPrqzpOKt5gQ8XdKLnHu+4hh715ozBSCp/l8Dnj95Gu/j0/jO3JUyiOue5EMbI2toSceOpjHwf3qr60+0iIOAHPhpp05WVcvgI0A7VHJnT4JuvH67efmSwk/NX7nC9tiGKK4xEDtlCPo+fvXzL2okTqIzBXAghMnTNCDQ+p01hVNtBfV159kp17TAqqNWwdf9ZLtWsWITTmBJNWbgZy/47EOrlplAM5LSLWsMr1IrRRDB5EtWNqFv3n+ntANcs4d6jF5zVvgGSRPn3R9miudkFCbkiYQGt6Ppdd5AR19rKEqWL/LqBXrFEXiSIFxuHT1/FU/U5oqWG/3ad4HO1YO7MoDG02yQvBEyCgKsrsGSJfnB3N4nlySKEgBAQAkIgsghIv5FJIFZkdi59Rx6BZuoXqf3vpBs2nr7OAzULhXsGEqxeMBslOKMYQU/cVO0w4YoQonK5M7DEBmVMzuhEB6/c16lRFa+7v+JM5fxZkCKhvpHg+hMPbv/dqHK+zCibSzXHVybqj5d+KIbnxyixpd1zr94Yf5yUZHQDPfq8Su2vkMbVtFcqlR92ttb845Z+AGvqNSntXjp65hoXSxTIzqlEkUPgyrm78PdX+cfWHuHj+y+4dVX1QytvUdUuNe32sOTzl1BdM84dU71sTVf3jttjBOfDUlc+tGVr5YYNyQa3S5naY0qgl57RWtdtP0ZJkECG3017T3Nd+eJ5OdWOaOevdpnyNcoVogQrNh/W831LDWcv38Fzj/dIqBiyNMZXqg8uGLtmJFcMjKR38brh7wlqu/9YZYBLlTwRFUMMC9ftxa4jrqC+61ctHqJ8TBawsDDn5b9Q33jjgglFdNMxc7oU+Oz1Fb1GL4TuTQJy39BvvGKMUtZcq0JhJf7116VFdS6Mcl7DxlwuKNHDJ6/Qd5xKp2W98nweKNX8Ry5TWjeoALq51XPUgiDjkSF9smKAJ8HOzVV9U16CEDApAh8/Ao8e6Qdv4zedw7R+ERYCQkAICAEhIATCTEAMvGFGFjUUsqRMjIKZU+GRxwdsOXsTGZMnRMmc6UM1OZKtViAry7abtQmzd57Bxy+/HvMmlw9XH70E+cxlIXXUuVpRzv3v5DWsO+HGeU3keu8ZnDYe1RSDpCnUO7/uvXjHP4a0G4/feIRlBy9oV4WYn7XjNA5cVvmk1Ra+5u4B13vPuapQplScmmIUnh+jZHAt3XggCtfpg417TgXB0qL3VNCPX+1K+tFKfn9b9ZmOW/efImuGVGhWp0ygCPnZdPynGsio1LT7JOw+cgGax8Zp916XYS68I4p8ZdKL2AIVJRPhBN68+oiZo9bju++vx+w/e37F9KFr4OP9DfmKZkWGLCl/a9xazUqz/p7/TuHQdlfOa6Jnj19jyfQdmmKEpkmSqXblnTt6Xe/aEaEDRZPOWikGJTIsrdl6FGu3H+OnOGjq9GKyvk6L8fL1B+TMkhaVSgY18LYfOBNF6/XFoEnLSTwwlCuWG8WVGzBkyGrYdTzcbj8ObLtx9wn6T1jK5Y7NqvLLF7mgROG5ZlQrW1DRBOas2IltB84FOZ4fPL0weuY6HDt3nceprNxAYmEjkZe3D0Y6r8Eo57UsMWVwO9hah98NCXdi4tGhU1d5hfT54YyJRWZmZpjn1J2N/XuPXVS+6/5FkXp9UNdxHHJU6oImyvcUfc6zZUzF/p61l1++eB70bleHv7PqdByLYvX7oXLL4SjZaADoBiadU0O6NdZW4Ty93I7cipy/ehdF6vZB1dYjkL9mL3aF4aV8RpvVLoM6lYqyrERCQAgIASEgBISAEBACQiCyCYiBN7IJR2L/jUqoXrZGQ9DL1czMzCgbqjC9Q00Uz54W3t++Y4JimM3ZYyZqjl2BxpPXIpeSrzZ6Ofbr7MjNnS45mpbOw0aFvkt2If+/c1DXaRWndZS0cObUqJwvs974DYo7II6tNchtQvGB8zFk1T4MXL6XX7bWdMp6dKtRTE8nuIpTt93ReuZG5Ok5i+dLc24wcQ2qjFzKLiL61iuNDIrBG0Bw3UTbtvD8GL3z8Bncn7+Gf0AAyIiivfjj52/wj99cVbqhUbeJqN/ZCVkrdEJt5YfuqQs3QY+zLpzQA3Y21tpq6O/YAPWqFAMZZzoMmoU81bqjetuRyFejJ46evQbyFzxtaIcgOlKIeAI1m5bE5dN30LnOeAzp6ILhXRagZ+MpeHT3BVKnTwrHgfV/e9BU6ZKgda9aMDc3xzLnHejeaArG91mG4Z3nY1C7OchbJDPSZUnx2+PodlC+ZiGYmZnh2oUHGOo4F+P7LecxPZ6/1xWNEeVE8eNgwfjuzKSf0xLkrNwVNduPRt7qPbBl3xnQjReXMV24XRvI3mOXuHjg5BVONZGZmRnmju3GRuGb956ygYpuBJFhq1LLYSCDGF1verSprVHhNDzXjIbVSqJd40ogf+JdlBtAWco7olaHMfxCydxVu2HB2j3ct1O/1tD4/eUKJeo+cj4bzciHLIU8ynoXrdvHj76vmtEPVcoUUKRM+4/cAJy+dBuaQKulG2yasrH0yBk3TJz3H3qNWUgqcMiicsvBBROL8mRPj6PrJ6JT82r82Xj64i3I+Eq+7XNlS4dxfVtiz/Ix0PiH117+kG5NsGRyL74KbUoAABAASURBVJQu4oCvPr5s2CVjON3I3LF4BCivLU95ctuwfvZAjOnTAvkdMoH8HNNTMmlTJsG4fq3gPMKRxCQIASEgBISAEBACf46AjCQEYjQBMfBG48NPhlNrSwvF6BILzcoE3bEV0rISxbHDliEtsaJ3IzQqmQtZUiSC22MPnLzpjjRJ4qNztaLoWUv/kddZjrUxvlUV5M2QAt/9/Nm3bmwbKwxtXB5zOtVBJgOP1tIL2v434B82KL/48BnLD13C1nM3kVkZc9uw1hii6GZIliCkKQe296hZHM2V9dpZW/J8Lz98Cb+AH2hdvgA2DmyOgQ3KBMqaaiasP0azZ0oD+tFpbh4LtGtPm8vaWf3RsHpJxItrDzLoXrx2HymTJkTtikUwe3RnHFk3AeT7U1uH8pYW5pjv1B3LpvwbqP/oqQcK583CP3gPrXFCulRJSVRCJBGInzAOWnStjmEz2iFD9pR48sADz5XzOG2mZGjYtgKGz+yABIniRMjo1RoUw8jZHVGmWn7Yx7bBs8dvEC9hbHQcUA9te9fGd1+/CBlHu5MsDmnw75h/QAbmZ49e4+alh3j60AOWVhbaYjEqX6lkPj4n6eYKGaro5VDflWtxrQpFsHfFWDbW6gKpqjaAVimdX7cJKZMlxO7lozFxYFvQLtuPn73YwEVG0wXje2DdrAGwUr5ntBXDc80g3/E0xqrpfQONaHStoZdK2tpY4586ZbFv5Vi0rF9eeyjO09MB9Ni7JiRNFJ9fuHZq41QYWhMrmVi0ac8pNOwyPjDQ8siYqF1nKN+891TMWr4D3l9VL7ts1UCfL/VlKoH84o7t0xLX980N4sv+0JrxIGOtvZ2N0aXSObRx7hBc2+fCug+OLQYZhQ0ZdzWdkJGX3DDsUc6hh8eXsJ7rdmc4Nquqd6NFoyNpVCAgcxACQkAICAEhIASEgOkREANvFD+m7SoVhMeqYRjTvJLeTOPZ2+DJ0kF4sXwIksWPrdfepXox1l3Ss4FeG1WYmZmhWsFscOlcFycmdcbz5YNZft/odjxeieyGd/p0qFwY+8e0x825fVj+pKLbq3YJfnP1aGWeNF9yH0FjaAKVtw5txXOl9vsL+2Nul7ooli0Ni5yd2g2bFYMzF9QRGZFJ9rJzT3WNKimbKyNmdKyFc9O68fgPFw3AzuGt+eVtpdU+eFWSph2H5cdoPMWgTz86X5xbhcY1SgUBU7Zobswd2xWnN03lH6fPzq7EyY1TsHhSLzSpWRr0AzaIglbBzMwMNcoXCtS/e2QRti4cDvrBG9yPYq0usHvZaB6Xdk5p10s+eAL9nFpg3pZBLORQIBNGznLEumNOWLF/NMbN78oG3rjx7bldN1qyazjLpkybOEgT9Ul9VKxTOEi9pkAG1y6DG2LKil5YsG0wBkxshQo1C3Gzt6cPpxZWKl+fXFCikPpURLB09wieT/LUiagYJBQukxNTV/bmdprbqkNjkChpvCAykVKIwp3SDRcyvp7fNgOvXFdzoN2HGdMmNzjrFdOUa/WFNZg8uJ3BdnJv0K5xJZDcjf3zcGX3bJAhlozIZmZmejq/c80gwzEZ0TyU+WgCGdKcRzgiX86MemNRxXwn5VqvJX9u63QM7d6UdyxTe0wItZQbbl1a1EDaVEnCtVxiS9d0+t4IVweiJASEgBAQAkJACAgBISAEhECUJiAG3t84PKIqBISAEBACgOdHL3z2VL1YhXYVCxMhIAQilgD5QR/9b3O4bnPGpnlDeHdoiqQJsXnBsGDDziUjcePAPN4dTU9lROyspDchIASEgBAQAjGLgKxWCAgBIRCVCYiBNyofHZmbEBACQiAaEDi25zLPMnGyeBHmEoI7lEgICAE9AqUKO6BBtRL8QrqSBXMguFA4b1YkVr/oVK8jqYgsAtKvEBACQkAICAEhIASEgBD44wRi/fERZUAhIASEQIwnEL0APHv8Gi5OG/H4/ku9iV8+exd7/zvN9SWr6Pt45QaJhIAQiFACY/5tAZcxXSO0T+lMCAgBISAEhIAQEAJCQAgIgcgg8Gf6FAPvn+EsowgBISAEojGBnzhzyA3DHOehd7NpGN9vOcb3WYbujaZg2pDV7J6haFkHNGxj2i9wisYHUKZuYgQSJ4yLgrkzm9iqZDlCQAgIgRhOQJYvBISAEBACQuA3CMT6DV1R1RDIkQOQIAw0nwdJhYCaQAX79DCF0CZXMX4RHr0U6/pOFxxeMAaHF43F7b3zAuu3TxuCKvEymcR6I/qYqT8OkgiBCCEgnQgBISAEhIAQEAJCQAgIASEgBHQJxNKtkLIQEALRnoAsQAgIASEgBISAEBACQkAICAEhIASEgBAwfQKyQiHABMTAyxh+M7p9G5AgDH7zYyTqpkfgiLc7JAgD0/tky4qEgBAQAkIg+hGQGQsBISAEhIAQEAKmTEAMvKZ8dGVtQkAICAEhIATCQkBkhYAQEAJCQAgIASEgBISAEBACQiDaERADb7Q7ZH9/wjIDISAEhIAQEAJCQAgIASEgBISAEBACQsD0CcgKhYAQiB4ExMAbPY6TzFIICAEhIASEgBAQAkJACERVAjIvISAEhIAQEAJCQAgIgb9IQAy8fxG+DC0EhIAQiFkEZLVCQAgIASEgBISAEBACQkAICAEhIASEQEQTiHoG3oheofQnBISAEBACQkAICAEhIASEgBAQAkJACEQ9AjIjISAEhIAQiBACYuCNEIzSiRAQAkJACAgBISAEhEBkEZB+hYAQEAJCQAgIASEgBISAEDBOQAy8xtlIixAQAtGLgMxWCAgBISAEhIAQEAJCQAgIASEgBISAEDB9ArJCHQJi4NUBIkUhIASEgBAQAkJACAgBISAEhIAQMAUCsgYhIASEgBAQAjGDgBh4Y8ZxllUKASEgBISAEBACxghIvRAQAkJACAgBISAEhIAQEAJCIBoTEANvND54MvU/S0BGEwJCQAgIASEgBISAEBACQkAICAEhIARMn4CsUAhENwJi4I1uR0zmKwSEgBAQAkJACAgBISAEhEBUICBzEAJCQAgIASEgBIRAlCAgBt4ocRhkEkJACAgBIWC6BGRlQkAICAEhIASEgBAQAkJACAgBISAEIo+AGHgjj23YehZpISAEhIAQEAJCQAgIASEgBISAEBACQsD0CcgKhYAQEAIRTEAMvBEMVLoTAkJACAgBISAEhIAQEAIRQUD6EAJCQAgIASEgBISAEBACoSEgBt7QUDIBmfsv3yH/v3PQePJa/Pz50wRWJEsQAkJATSBaJdOHr0XzcsNxeMeFaDVvmawQEAJCQAgIASEgBISAEBACQkAICIG/TMDo8GLgNYrGtBoeeXzAqw+fce7OU/h89zOtxcXA1fz48RP/7T6J+p2dkLtad2Qt3wm1O47Fik2H4B8QEGYi6Uu1Q/LCLY2G7iPn6/U5e8VOo/Kavu67v9TTo4qjZ69h0KTlqNVhDDKXc0TFFkPRc9QCbNh1Mtj57zl6Ee0HzkThOv8iV5VuaNNvBhav3wfvr9+oWwlCIEYQuHT9Adr2d0aRen2QsUwHVGg+FE5z/gfPL1/DvX66pqzecgR0rtdsP5qvKXQeF63XF9/9/PX6Des1I2elLiFeL2g8CuOUtegOGN5rhm4/UhYCQkAICAEhEDMIyCoNEdjz5i5c3M/qhWffPA2JS50QEAJCIFoREANvtDpc4Z9shTyZ0L1mcczuVBt21lbh70g0owSBvk6L0Wv0Qpy9fAf2tjZIlyopLrjdw+DJK+A4eA7IWBPaiX72+opvvmE3+n/49CW0QwSRG+W8Fv/0moKVmw/j1v2nyJ4pNV6+/oCNe06h95iFaNZjMnx1bkIEBPxgwy4Zd8nIa2FhjoTx42D/icsYMWMNqrYegacv3gYZRwpCwBQJ/G/nCZABdt/xS/ji5YMcmdPg4ZNXcFm1C9XbjsS7j5/DvOzHz16jRrtRGDBxGTbvPY0bd58gfeqkKF3EAVaWFnrXk/BeM0I7MQvzoP80Cc81I7RjxXg5ASAEhIAQCI6Amxtw6JB+8PYOTkvahECUJbD79R094y4ZfJ/5fIqyc5aJCQEhIARCSyDor6jQaolctCNgqRjERjStgPrFc0W7ucuEgxKgnbtk5EmkGDh3LBmJc1un4+AaJ5zeNBW5s6XH3mMXMW/N7qBKwZTef/zCrbmypYPHhTV6germju3KMtqRxsC7ZHIvgzqklyV9Sm0VXL7xAAvX7YW9nQ3WzRqA+0cXY9fSUbh1cD4OrHZC6uSJcOriLWzYdSKI3uL/7QMZdtOkSIzdy0bj7JbpOPHfZBxZNwEFHDLhgWLg6jpiLsgQHERRCkLAhAiQIbbf+CW8ounDO/J5Q+eD214XNKhWAo+eeqDP2EXcHtro1ZsPqOs4DldvPUKLuuWwb+VYPDyxhM/HjXOH4OTGKbCxtgzSXXiuGbcOLTB6naBrxdMzK5AscXwep27lYpxSFN5rBulKEAJCQAgIgd8kcO0acOSIfhAD72+CFXUhIASEQNQlIDOLvgTEwBt9j53MPIYSWLx+P698dJ8WKJI3K+cpypQuBWaM6EhZdlvw3cBj1dyoE7374Mk1SRLG4zS00Xv1TsGw6Lm63ePua5QrhAol8sJcvVPPzMwMebKnR9vGlbldI0cF/4AAxSi8j7KYMLAtCubOzHmKcmZJi//mDkbKZAlBj60fPHWFqiUIAZMkQC5YAgJ+oEW98myMNTMz43XGj2uPGcMd+Tw4eOoq78DlhlBETi4b8Ob9J/zbvi7IaJwvZ0ZYmJsHqxnea0ZwnW7YeQKv331CmSK5QOe1RlZzLQjLNUOjK6kQEAJCQAhEGgHpWAgIASEgBISAEIhiBMTAG0UOSJbO01BhuGpn1vbzt/hlaPl6z0aunjPRfvYm7L5wx+BMrz56ieStx2P0ukPcfvTaQ9QZtxIZHacgfcfJuOHuwfUaufz/zuGyJtLUj1h7kKs2nb6BRpPWIlePmcjZbQZqjl0B5+2n4O3jy+2GorefvDBy3UFUH70M2bpO57lP33oS7z574/iNRzw/l91nDalKXRgJkCuD63fdkSBebGjvctN0Qzt4yehLhpIzl25rqoNNP3h6cXtYDLWk8MHzCyVImig+p6GJyDhFcjY2VpToBWsr1U7BHz9+vQjw9oNnoF2GieLHQeVS+fR0YtvbonvrWlxPj61zJgZF928+w/KZOzG4gwvaVR2Df5vPwJRBq4K8xOzhnedoXm441sxTGcrdXO9jTM/FaFd9LNpWHQ33+6+YGB2fI7svYuao9RjiOBdd6k5Eh5pO3PfKWbvw8b3qmLOwVvT29SesnL2L5drXGIeuDSZhVI9FWDxtGy6euq0l+SsbyyIW3r/xxKIpWzGgzWyQHuksnbEDt93cfwlKLpDAkTNunG9Rtyyn2pGNtSUaVS/JVTuPuHIaUkTn1ZZ9Z9gw3KdDvZDEA9tDf80IVAk2Q+f7/LV7WKZT82qcaiL6TFKlER05AAAQAElEQVQ+LNcMkpcgBISAEBACQkAICAEhIASEgBCISQTEwBuFjvYjj/dYcfgSOs/dipM33ZEsfmzEtbXG3kv30GHOZgxdvV/PF6Jm+m8UIx3p/jPtf3C9/xxfff3w7bs/Esez14gEmz589Z6NtD0Wbsf9l++QKXlC3sV16cELTN58HO1mbzaof+bOE1QcsRSL9rni2pPXyJgsAdwee2Dq1hOoMWYFLj98aVAvsFIyYSLgdvsRyztkTce+MbmgE+VzyMg1tKOVMyFE79W+dJMkCusOXpWxL2kY9IoXyM6zIUPsm/efOK+JyO/u1v1nuUi7+DijRB+Vz7aSIG2qJJQYDIXzqHYyX7sTswyDy5x3YlT3hTi47Txev/yA9FlT4tvX77h6/h6uuqp2S2sD+/ThC8tOHrgSd68/ga/Pd3z39UfcBKrrhI+3L8iQ63r8Jt6++oiESeMhUdL4ePrQA/u3nsOILgvg/eWbdpdsjB3c3gX7t5zDc/c3SJ0uCexi2+Dh7ec4uusirl98EEReU/jw5jNGdF2AY3suwc/PH6nSJcaj2y8Uw7QrxvVeghuXHmpEJVUIkN9bemkh7a7Nm0N1jivVQf7y5czEZXJrwJkQoj3HLuLnz598s0hzcyUEFW4O7zWDlQ1EOw6dZ/cS2TOlQcUSeYNIhOeaEaQDKQgBISAEhIAQEAJCQAhEHQIyEyEgBCKNgBh4Iw1t2Dsmg+zwNQcxuW113F/YH/vHtMeZKV2xe2QbJI5rj2UHL+K/U9cMdkyG1BFrDqBkjnTYNaINniwdBI9Vw5A8QRyD8rqVR649xOojV7C8dyO4ze6N7cNb49qc3ljUvT7MzMxw4uZj0O5gbT1yAfDv4l0g43KHSoVwZ15f7B3dntM9o9rCPJYZG4e1dST/ewSevnzLHaRLlZRTQ5Gm7fFzD0PNenUaX7putx6hVZ9paNx9ItoNmImJ8zfyi8/eqV0x6Cq+fe/JNwFGTF/NOs16Tkb/CUsxf80efvmbrjyVC+TKjPZNKoN0a3cYi3NX7lI13n34jJbK2GSYql2xCJrWKs31FMWLozI+kgyVDQXvr9+4WtdozJUmGu3dfBaHtp/n1TXpUAkLtw/BqDmOWLBtMCYu6YEGrctzm3ZERtfVLnuQM18GjHbphBUHRmHdMSckTByXxWLHtUUzxyqsv2TXcExY3A1TlvfA2PldEFe54fThrScObFUZ4VlBiVa57IaP9zc061wVi3cMZdnpq/7Fkt3DMWBSK1RrWFyR0v/bvOKwMo+MmLdlEGau64tx87ti7uaByFtUZazfvjaoH2b9HmJWDfnfpRWnS50UGtcmVNYO9GI0Kj9+Grpz//od1Q2RfDkzwtXtHlr3m4Gi9foiY5kOqNNxLBat26f3wkPqP7zXDNI1FOau2sXVXVpU5+8bLqij8Fwz1KqSCAEhEI0JyNSFgBAQAkJACAgBISAEwkZADLxh4xXp0vWK5UCbCgUQx9Y6cKwCmVJhaBOVsWba1hPw9fMPbNNk3N98RMMSubB5SEsUypIa1pYWmqZQp11rFEP1gtmCyNcpmhO1Cqnqbjx9HaRt9bErePr2EzIkS4AxLSoFzjmWYtilOS/q0UDvx3qQDqQQZgKfPnuzjr3dr88HV2hFse1sufTJUyXLhWAizSPQ9HIz8t950vUmv6ht1rLt6DlqAco1HYxTF24G6eGbrx/MLczhHxCAdTuOg3SOnbuONVuPYsysdajf2Qldh82Fn39AED0qTBjQBjNGOOKFx3vU6zQOlVoOQ+E6/+LOw+eYObITFk/qFeRzky1jaiSMFxvPXr3Tmwf1R2H11iOU4GswrkRYwEQi2nW5f9MZXk2jdhVRr1U5WKndW1BluszJkSFrSsoGCa9fvEfJynkxfGYHZM2VNoiORrB64xIgfU2Z0sw5UqN8rYKUxctn7zmliObx7JHqulCxdiHY2ttQNQcbGyvkL5YNKdIk5rJulCxVInQaWB/xE/66CRU3vj3+6VSZRW+7PYa/gc8PN6qiGBV7flGdz7HtfjHWBUDuSqju1duPlIQYNEZj92ev0bjbRBw4cZmfDEibMgku3XiAkc5r2NCrue5oOgwI+MHZsFwzWMFAdPTsNVy/647kSRKgUY2SBiSAsF4zDHYilUJACAgBISAEhIAQEAJCQAgIARMmYOIG3uh35KoXyGZw0g2LO8BWMeA8f/8Zbo9fGZRpU0FlgDHYGIrKRoqB2JCYQ7rkXP1CGZsz6ujg1Qecq1fMgXdyckEryq3o5U6XTKtGsr9LwNtHtVPV2tLSaFe2imGNGr2++lASYujdrg72rxqHzQuG4fSmqXA/tRxnNk/DnDFdkDZVEtAOXtrR+/TF28C+bKwtcWG7M+vsWjoKd48sws2D87FnxRh++RMJbj1wFmNmrqWsXsieKTUyp1cZIG/cfQIf3+/4+eMnvnh91ZOlsTo3r871nYe6YNOe0/BQDFi0o5ce7e46fB6OKUYiErC3M278onZTCQ9vP8ebVx9hbm6OGopBNizrqlinSFjEA2VTpUvC+U9afnjNzMyQxSEt14/tuQR3rrmDjL5cEUKUr2gWWFnr34hKlT4ZYpnHwg/FiOj5QeUfOoSuYkSzZpe6tiFfd+F2NqobP2SAJZcnuu26Zc2Od9qt37phRVzcOQsnN07Bsf9NgtseF3bd4Hb7MYZNWxVEtXc4rhlBOtAqzFuzm0sdm1U1+D3CjUoUlmuGIi5/QkAICAEhIASEQIwkIIsWAkJACMRcAmLgjWLHPm3S+AZnZG1pgdSJVT5SySWCrlBsW2vkz6QymOm2haZsZmbGO3ENydpYmnM1+fXljDp6q/aNmiutcSNuphSGd++pu5AkjATsbVUGTF8/P6Oa3xRjKTVaWOgbz6jeUMibIwNKFsyBTOlSgAyqGdMmR+MapXBw9Xg28n7x9sHKLYeDqNKL3kinUJ4siBfHDonix0EBh0yYPrwjxvVtybJrth2FxocuVyjRtMVbUKPtKKX+C2aN6oxHJ5bCqX9rpQUYMWMN+o5brGck7Nm2Drt2IN+fPUbNR74aPZGrajd0GjIH5NZh/ACVfqL4cbkfU4/opWa0xtQZk8LGTmXUo3JIgXbY0m7ckOQMtdvFtuXqnz9Uuze5oETdhjVC6vRJ8ezxa4zttQQD287Goe2u+Pbtu9Jq/C9xMsPXOnPFuGtto7qB4ffd33gHMaxFc/Pi+3c/oyunGyWaxtD41PX+qnp5Zqfm1ficTZ08kUYdiRPGxVjlPLa0MMf2A+dA515go5IJzzVDUQvyd/XWI979T2trqxiYgzRqFcJzzdBSl6wQ0CcgNUJACAgBISAEhIAQEAJCwMQIiIE3ih1Qa+XHtLEpJYlnz00fv+jvzIyjGHi5MZxRkrj2QR6LD003H7xUu0njBGNgimtrFZquREZNgHxRlmkyCLrhgts9lohjb8upr69xI4/GTUFwj3JzJ6GIyHDbqn4FliQfvZwJRdShaVU2FH9T5nnz3pNADeel2zBt0RYUy5+NdwmSr1075bPbsWkVnNg4BRVK5GWXDz1GLQjUoQy5/aDHtA+tGY9ebWujUsl8LDu0e1PsXj6aRDjQjmPOREAUlbvw/qy6BsRWG11DO1fbYM5V6oNeoHZw23nMGbsBwzvPR/dGU9Cy4kg0Lzcc04asJhG9kEQx1A5zbo9KdYuC3C28ePIWy5x3oG9zZzb0GtvRay3XBj2WwVVo3C98U9/AMSTrrfZFrblOGJLRrrNRG9JrlCusXR2YT5Y4Pu+09w8IwO37TwPrg8uE5ZrhslLle7d1gwrQrE+37/BeM3T7kbIQEAJCQAgIASEgBISAEBACQsAYAVOoj2UKizClNejuktVe2xf1bqvYIRhptHVCm6ddc6GV1cglj2/P2XfB+Ho15IOVlSQySIB2u957/AK6QfO4dfrUyVjv5etfflC5Qisi37ZUTBfMi9ioPbQhQxrVmLSLN7Q6ZJDVuGDQ1lu64QB3QcZa2gHMBXWUMF5szHfqDjL4bt57Gq/efFC3/EpyZUsHMuqumdkf62YNYGNv4gRxcfnmIxYqlDsLp6Ye2cWx5SV++6bagcmF34y++/pj2rA1WD5zJ9xc7yNDtlSo37ocBk5qjWEzO6BJx8pGR4iXIDba96kNemEa+fd1KJgJnz58YUPvttXHDOqZwcxgvVQaJpAlveoJjScv3uDHj58GhV6orwu0E9+ggE5l4viqHe/+/sZ3SsdXbv6RmncY/FuH5prx8Mkr7D56AbRDuNM/1WgIg+F3rxkGO5VKISAEhIAQEALhIyBaQkAICAEhIASiLAEx8EaxQ/P4tb5Ri6b47bs/bj9/S1mkSqj6Uc6FvxilTqRyGfHq4xejs3j1yctomzToExjesxk8LqzRC6UKO7Bw4TwqA+blGw8NvsCMhM5fvUsJCuTKxOnvRuTrlvqglyBRGtrw5p0niyZPkpBT2l1I/nypoDH+Ul470O6/TGlTcJX78zechhR9VYyc+45dZLFaFQzvRORGE4riJYzNq3nx5B38DLx0kRvDGJ0+7Ia719yROFk8TFneEx361kGlOkWQp3BmOOTLgMRJVed7SN3mVGSHTW+H+m1UL4bctuZ4iO4aQupT2oE49rbIkTkNvvn64ertRwaRnL9yh+tDe+47KDdMSOH2g2eUGAzPXqq+dxIrN1IMChioDM01g55WoN3d9aoUR4qkqmuEbleRdc3QHSfiy9KjEBACQkAICAEhIASEgBAQAkLgzxIQA++f5R3iaFvP3zYos/vCbdBjsonj2aNgplQGZf50ZYU8KgPi7ot39Xym0ly++Pjiwv3nlJWgSyCc5SSKUb1s0dzsD5P8Yup2c/2uO1zd7sHayhKli+QK0ky7qQ3tig0ipFMgn56rthzhWhqXM6GINu45BXqBU8pkCZE7ezrWsLezYV+9VHBVG6Eprx3IePXomQdXpU2VhNPgIjoneo5agGev3qGmYtwl38HByZtKW6bsqUD+dL999cWJvVciZFnu915yP/mLZ0fCJPE4rx09vm/45Y7aMtr5xu0qwj6ODciP7hfPr9pNkg8ngbqVi7Hmuu36u6Lp3Nm09zS3ly+el1PtiHb+apcpX6NcIUqwYvNhfPrszXnt6OzlO3ju8R60u94hazrtJqP50Fwz6CWJdI2gTrq2rEGJwRAZ1wyDA0mlEBACQkAICAEhIASEgBCITALStxD4AwTEwPsHIIdliAOX72H5oUtBVB6+eg+njaof9N2rF0N43CkE6TCCCo1K5kaaxPFw+eEL9Fq0kw3Qmq7ff/mK7gu2w0sx8mrqJI0YAl1aVOeORjmvYWMuF5SIHnnuO26JkgNa1ivPRhkuKJGncjxKNx6IwnX6QGNYUar5r0XvqTjheoPzmigg4AfI72+rPtNx6/5TZM2QCs3qlNE0Y/nGQyDfmLovXvrg6YXF/9uPQZOWs2w/xwawMDfnPEW1Khalh1Y6PQAAEABJREFUBMOmrcKl6w84r4kePHmFDgNngnbtFc2XDamSJdI0GUyfvniLZj2nYPeRC/yCt1G9mxuUM8VKGxsr1G5Wipf239KDuH8z6A7Mz5+82c0CC4Qy0hh1X7i/AR1/bbXrF+/j4NZz2lWBefK3+/SRyigfWKlkju+9DPLpmyxVIiQyYDBWROQvjARaqX3Vrtl6FGsVIy/tgKUuyDjb12kxXr7+gJxZ0qJSyaAG3vbKeVW0Xt/A85J0KJQrlhvFC2QHXTsadh0Pt9uPqZrDjbtP0H/CUs53bKbyqc0FJQrPNUNRC/ybv2YPP4FAPrdpvoENBjIRec0w0L1UCQEhIASiFAGZjBAQAkJACAgBISAEwktADLzhJRdJeg1L5MKQVftQcfhiNJ68lkPFEUvw6sNn1CycHZ2qFomkkcPeLflOdO5YC0njxcbG09eRo5sz6oxbifoTViNvr9nw9P6GZqXzhL1j0QiWQPniedC7XR3exVun41gUq98PlVsOR8lGA0A7eMlgMqRb4yB93Hn4DO7PX7MR/ti560Hajp+/gSbdJyFXlW5o1G0i6nd2QtYKnVBb6fvUhZsgf54LJ/SAnY11oN5nr6+YvGAT8lTrjuptR6Jx94kopYyfs1IXjJi+Gj7fvqNH61poUbdcoA5lhvVoisJ5s+Luoxeo2X40SL5ep3EoVLs36x8+48YvWyIfvSSvCWT0rdVhDI9DY5FOkXp9QPPLkz09ti0egbQpQ97xq+nPFNI6LcqiZOV8oN2xo7ovxLh/l2J8v+UYqeS71p+EnetOhGmZJSrlga29NW5dfYx+LZ3ZF+/SGTv4ZWsT+69ETbVBWbfTQ9tdMbi9Cwa2c+HxaQ5DHedh4eQtsLAwR5teNUE+mXX1pBx2Aonix8GC8d1hZmaGfk5LkLNyVz6P8lbvgS37zvAOeZcxXbhdu/e9xy5x8cDJoLu9zczMMHdsNzYK37z3FFVbjwDdCKJrSaWWw0CGX7re9GhTm/U1UXiuGRpdMkav2XaUi8H53mUBJQrvNUNRlT8hIASEgBAQAkJACAgBISAEhECMISAG3ih2qAc3Kof9Y9ojQWw7nLzpjmvuHiiUOTUmt62Ohd3qhXL37p9bVKmc6XFoXHt0qlYEWVImZj/BZmZm6F2nBDYMbK7M99fuzT83K9MfaUi3JlgyuRdKF3HAVx9fNuzGtreF4z/VsEMxdlJem0L2TGnYAEq7v2nXnnbb2ln90bB6ScSLa88G04vX7iNl0oSoXbEIZo/ujCPrJrDvT22dNg0rYlCXRihRMAfuPX6Jk643+RHvIorxtlfb2ji6fiLIn7C2DuUTKjcDti4chtH/Nke2jKlAO37PXbnLj4GnUMbsqRiSTmyYDIesaUk8MMQyjwWPNx94HBqLdArlyYKJA9ti74qxyKJ+AVWgQgzIkNG0+7BGGObcHuVqFMTnj964c9Udzx+/QaHSOVCjaakwUUiSLD4GT2mLHPnS490bTxzcdh5nDrshRdokGDGrI5p2rIzkqRPp9dmhb11lvJz4pNyEunnpIZ49fI3YcW1R+5/SmLKiF/IVzaqnIxXhJ1CpZD4+J+tVKYa4yvcE+eP+7uePWhWK8LlAN3h0e69apgBXVSmdn1PtKGWyhNi9fDSfS9XKFsTHz158Tami6CwY3wP0MkMrSwttFYTnmqHpYNl/B3iXPl2TdK9FGhntNLzXDO0+JC8EhIAQEAJCQAgIAdMmIKsTAkJACABi4I1inwJf5Yd63gwpsGlwC3isGoa78/txvk2FAtB+1F0z7XwZU7LclZk9NVUGU2Nyxuq1O+lSvRiPMbtT0F1cGpmk8eNgbPPK2DOqLe4v7I8tQ1piQP0ysLGywNdv31nM2kIMvQwiAiMy6GycOwTX9rnwS9keHFuMcX1b8g5Y3WHixbGD63ZnvDi3Co1rBDX8kW/duWO74vSmqdzPs7MrcXLjFCye1AtNapZmf766/cVXjMF9OtQDjf/w+BLWu3FgHnYsGYmh3Zsie6bUuiqBZfocd2lRA8cVQ672C+Wu7J4N2q1HBqdAYXXG1toKF3fO4nE0OruWjkK7xpWUmwgx+zLmkD8jOg2sj6kre2H14TFYtmcE+oxtjgLFs6npAZmyp8a6Y05w2TggsM5QJotDGoyY2RFrDo9l+aW7R4CMyDnypmfxGWv6YPjMDpzXRBXrFEbfcc2xaPtQ1lmwbTCGTm+HfzpXNWgQ7ufUguVIT9OHbkrj0nwNGZR1ZWNimV62RsbX89tm4JXrag50w8eYD+oV0/rwuTN5cDuDuOj8onOJ5G7snwc6F1dN7wsyIpuZmenphOeaoemkb8f6PJdj/5uoqQoxDc81I8RORUAIxEQCsmYhIASEgBAQAkJACAgBkyUQsy0jUfCwanwqRsGphWtKd1++Yz16ORxnJBICQiBKE5DJCQEhIASEgBAQAkJACAgBISAEhIAQEALRi0B4DLzRa4Uy279G4Oqjl7j19DWPXzBTKk4lEgJCQAgIASEgBISAEBACQkAICIFoQ0AmKgSEgBAQAtGAgBh4o8FBispTbD1zI/ZfvgfdnccPXr3HwBV7eerFsqVB2iTxOS+REBACQkAICAEhYIoEZE1CQAgIASEgBISAEBACQkAI/C0CYuD9W+RNZNwrD1+gjWLkzd5tBhpMXIPGk9ei5KAFKKUEekFc9tRJMKdzXRNZrSzjtwlIB0JACAgBISAEhIAQEAJCQAgIASEgBISA6ROQFf5RAmLgjQjcOXIAvxnun1jKL57JUrH0b/f1u3MJi/71Qwt53nePLcGWVeOxcYUTTu/49TKsY1udkaZ0sWi1prCsP4hsRHyWpA+TIlDBPj0kCAOT+lDLYoSAEBACQkAIRDAB6U4ICAEhIASEgBD4fQJi4P19htKDEBACQkAICAEhELkEpHchIASEgBAQAkJACEQKgX1v76H11f/0wsF39yNlPOlUCAgBIRAZBMTAGxFUb98GJEQBBn/5OETEZ0n6MCkCR7zdIUEYmNSHWhYjBISAEBACQkAICAETI/DK1wuun57rBQ+l3sSWamLLkeUIASGgTUAMvNo0JC8EhIAQEAJCQAgIASEgBISA6RCQlQgBISAEhIAQEAJCIAYQEANvDDjIskQhIASEgBAInoC0CgEhIASEgBAQAkJACAgBISAEhIAQiK4ExMAb+iMnkkJACAgBISAEhIAQEAJCQAgIASEgBISA6ROQFQoBISAEohUBMfBGq8MlkxUCQkAICAEhIASEgBCIOgRkJkJACAgBISAEhIAQEAJC4O8TEAPv3z8GMgMhIARMnYCsTwgIASEgBISAEBACQkAICAEhIASEgBAwfQJ/aYVi4P1L4GVYISAEhIAQEAJCQAgIASEgBISAEIiZBGTVQkAICAEhIAQikoAYeCOSpvQlBISAEBACQkAICIGIIyA9CQEhIASEgBAQAkJACAgBISAEQiQgBt4QEYmAEIjqBGR+QkAICAEhIASEgBAQAkJACAgBISAEhIDpE5AVCgHDBMTAa5iL1AoBISAEhIAQEAJCQAgIASEgBKInAZm1EBACQkAICAEhEKMIiIE3Rh1uWawQEAJCQAgIgV8EJCcEhIAQEAJCAM+fA48f64cfPwSOEBACQkAICAEhEE0IiIE3mhyovzhNGVoICAEhIASEgBAQAkJACAgBUyWweTOweLF+8PMz1RXLuoSAEDBOQFqEgBCIpgTEwBtND5xMWwgIASEgBISAEBACQkCfwBdvHzgv3Yb2A2ei/D9DkL5UOyQv3BLdRszTF1Zqfvz4if92n0T9zk7IXa07spbvhNodx2LFpkPwDwhQJAz/eX/9hhlLtqJKq+HIUs4R+Wr0RPPeU3Hw1FXDCiZVK4sRAkJACAgBISAEhIAQiEoExMAblY6GzEUICAEhYEoEZC1CQAgIgT9M4Pj56yjVaAAmL9iEPUcv4oXHe+TOngGliziADLKGptPXaTF6jV6Is5fvwN7WBulSJcUFt3sYPHkFHAfPARmAdfXIiFzHcSymLNyM63efIGPa5DAzM8ORM25o1Wca5q/Zo6siZSEgBISAEBACQkAICAEhEGkE/rqBN9JWJh0LASEgBISAEBACQkAIxBgCx85dR7OeU+D19RuG92yGs1um497RRdi5ZCQ2zh2CldP76rGgnbv/23kCieLHwQ5F7tzW6Ti4xgmnN01F7mzpsffYRcxbs1tPb7TzWty89xRF8maF63Zn7F81Dld2z+ZxYtvbYsysdbh47b6enlQIASEgBGI6AVm/EBACQkAIRA4BMfBGDtco0+vCfeeRvPV4dF+wPcrMSSYiBISAEBACQkAICIFgCIS5iVwpDJy4DD9//sSyKb3Ro3UtZEiTLMR+Fq/fzzKj+7RgYy0XlChTuhSYMaKjkgMWr9+H737+nKfo7XtPbNh1knfsuozpijQpElM1B9opPKhzQ87PXyu7eBmEREJACAgBISAEhIAQEAKRTkAMvJGOWAYQAhFP4Ec4/QUam4nGPyH5KDQUuo+cr6c6e8VO9mloSF5Td9/9pZ5ei95Tg9XLX7OXno52BT0Wq/KtODNUvhW1dSUvBEyBwKXrD9C2vzOK1OuDjGU6oELzoXCa8z94fvka7uXRNWX1liOgc71m+9Hsg5TO46L1+gYxbGkG+JPXDM2YkgqB4AjsOnwBT1++Rd3KxVC2aO7gRAPbXr7+gOt33ZEgXmzWC2xQZ2gHL+3Qff3uE85cuq2uBU643mDfvJVL5UPaVEkC6zWZJrXKwNrKEvuPX4aP73dNtaRCQAgIASEQzQg88/GEi/tZvXDs/eNothKZrhAwBQKyhpAIiIE3JELSLgSiIIHw+As0tozPXl/xzdfPWLPR+g+fvhhtC67hg2f49KjP8PhWJD0JQsBUCNCj5GSA3Xf8Er54+SBH5jR4+OQVXFbtQvW2I/Hu4+cwL/Xxs9eo0W4UBkxchs17T+PG3SdInzop+yy1srTQ8z/6p68ZYV6QKMRIAnuOXuB1N6xWgtPQRG63H7GYQ9Z0oM86F3SifA4ZuYZurHBGidzuqH7Y58mRQSnp/8WLY4dsGVOxEVhbT19SaoSAEIhwAtKhEIhAAi99P+sZd8nge+KD6vsjAoeSroSAEBACv01ADLy/jVA6EAJ/lkB4/QUam+X7jyqDa65s6eBxYY3BMHdsVz11jYF3yeReBnWoryzpU+rpaca7eXC+QT3yYainpFSEx7eioiZ/QsBkCJAhtt/4Jbye6cM74pZyDu1eNhpue13QQDFqPXrqgT5jF3F7aKNXbz6gruM4XL31CC3qlsO+lWPx8MQSHFjtxL5ET26cAhtryyDdac7hP3XNCDJ4BBWkG9Mj4HZbZXTN75AJ63ccR6OuE5C3eg/kqNQF9OTIzsOueoumHb9UmS5VUkoMBk3b4+cege3PXr7jvKaNCzpR+tQq9xBPnr/WaZGiEBACQkAICAEhIASEgBCIeBNYr68AABAASURBVAJi4I14ptKjaRCIsqtYHA5/gcEt5t0HT25OkjAep6GN3qt3CoZV7837T/zoasJ4sUM7FO+CCo9vxVAPIIJCIBoQWLHpEAICfqBFvfJsjDUzM+NZx49rjxnDHZEyWUIcPHWVd+ByQygiJ5cNoHPy3/Z1QUbjfDkzwsLcPFjNP33NCHYy0igEFAL0FMqTF2/4u2Xd9mPoM24xTl+6jRRJEyKOvS0On3GD4+DZ6D1moSL96+/TZ28u2NtZc2ooim1ny9WfPFWyVPD8osrHtrOhosGgafvg6RXY/uMn8PWbvwRhEOU+A+SmR/l4QjcEKB9a3Toq+wf81JMNrj7AiLyxcX8qnSlDGxwjsudkrH+aEwfljFamF2RuxnSMrTvM/BQYumNS+YcyIUoNBWNsv/mqrkG+3wOCrEHTh7G1GOtPmQKMzcNYX2Fev5HPj7H+aU4cIvFY+fn/iHLnsXy/qD7bv8FBjql8PytXjej9JwbeKHL8snSehsojlvJsTt18jH+m/Q+5esxEgT5z0Mb5P6w9doXbKDp2/RG6ztuGkoMWILNab8qWE8oFSfy8ER9TDuH1FxgcE82Pz7AaajWuFpImih9c90HaNI92J0scn19OE6QxmEJ4fCsG0500CYFoSeCIYqSiibeoW5aSIMHG2hKNqpfkup1H9HcqcoNORLt3t+w7w4bhPh3q6bQaL/7Ja4bxWUiLEPhFgG5SUMn3ux9mr9yJyYPb4c7hhbwj3XW7M479bxJyZknLL0ZbveUIiXLw9vnGqbVl0F3qXKmObG2sOOf11YdTiry/qvSsrILTUxmNvdSypEcGkq++AZAQnRmY5tzZUKZY+NgoppWygVKrrGkPUG42avLaqb+xejJQGurHSL0iCjpftPvW5I3O1UhfYZ2TsXHJiElBMw/t1JiOf1jnZIRfABk4FSjaY1L+xw+AUkNBUTHY5vNdMUwq1yFf/x8G242NZYy7Mi3lWBmeR1j7ik7Hyk8BLNdy07weynGN2ceV/r0WnYMYeKPQ0Xvw6j02nr6OxlPW49ydp8iQPCF/8e6/ch/9lu3BkgMXsO6EG5pNXY8DV+8jUWxb2Ck/Lq4/8cCMbSfx75JdUWg1MpXIIOAWTn+Bwc3lvdqXbpJEYd3B+4W7TRoGvfdqdxBhHSs8vhV5chIJgb9BIBLGpJsj991f8u7avDlUPkF1h8mXMxNXXb7xgNOQoj3HLirfMT/55VL0QqiQ5DXtf/KaoRlTUiEQHIGvPr6BzS5juqBNw4ogP7iayuyZUqNvR9VNjFVaBl57W9UOXF8/P42oXvrN9zvXWVhYcEqRvZ1K77tiUKayoaDRs7T4tSM+Viwz2FmbSxAGUe4zYK58NumhEN1gbm6m3JCHXjA3j6VXR7oWxuqN9W+k3gwAnS/Up24wN6JjrD6sczI2bixlIhSURG/txnQsYpnpyZK+0TmZG+Zq7DjEigWD/dMYyqEz2GZrFYs/f9YWsQy2GxvL3MhazADlWCFC+jLKxcjYsYzVKwBiKUH505uXMR2LWGZ6sqRvbE6WCmC5nsv3mXwGTO8zgGj+X6xoPv9oO31DE/dRfij0XLgDM9rXwL0F/bBzeGtcmdkTAxuUYfFJm49j2Kr9GNKoHO7N74cdI9rg2pzecO5Qk9t3uN4GGYm5IJFJEgivv8DgYGh86brdeoRWfaahcfeJaDdgJibO34iNe04ZfWnT2/eebGwaMX016zTrORn9JyzF/DV7cPbyHYNDasaix2I7DZnDeuQbcfTMdVi15TAePHllUM8tHL4VDXYklUIgmhIg/7s09XSpk4J+WFNeN6RX2qju8dNfvkKpbCxcv+POTflyZoSr2z207jcDRev1RcYyHVCn41gsWrcPtCOShbQizXn8J64ZWsNKVggYJUA72KmRzo2qZQpSVi8UzZuN627ce8Juf6hA7hso9Q3mRaMa47HG5QLJx7ZXuW3QGHGpTjcY0lPsB7CzsZAgDKLcZ4CNXsqH2EwnsFFPp45kLBTjFqW6wVg9Gw0N9GNsXDKs0fmi2z+VI3tOxvqnOXEwsA5jOsbWbYyTsXpj/cdSJkRMDAVjbG2sLfjzZ21lDrMwrMVYf8oUYGwexuZtbJ3G6o1xNNY/zYlDGNZnbAxjc7K0UAzlYbyWyfXfgj97wkE4ROXPgHLZiNZ/YuCNYoevXrGc+KdsPlhamAfOrEv1orCxsoCXjy+KZkuD3nVKBvmBT/IFMqVi+dvP3nAqkWkSIMMorczezpoSgyG2AX+BBgXVlQEBPzh36uItkP/Ok643sffYRcxath09Ry1AuaaDcerCTZbRRN+UH8PmymfUPyAA63YcB+nQS9DWbD2KMbPWoX5nJ3QdNhd+/gEaFU6pbGZmhoeKIXfHofOsR74RF6zdg4ETl/NYC9ftZVlNRGOFx7eiRl9SIWAKBELl81NtdHr19mOolqwxGrs/e43G3SbiwInLsLK0QNqUSXDpxgOMdF7Dhl7NdUfTacAfvGZoxpRUCARHIHGCuME1c1u8uPac/vz5Exrja3r1i9Bevn7PbYaiFx6qNu0XqqVX30x58fqDIRWue67uM716DK4MORIJISAEhIAQEAJCQAgIASEQLgJi4A0XtshTqpBH9Yit9gh21lbIkToJV1XIrd9ODdlSJaYEz9+pXpjFBYlMjkB4/QUGB6J3uzrYv2ocNi8YhtObpsL91HKc2TwNc8Z0QdpUSXgHL+3offribWA3NtaWuLDdmXV2LR2Fu0cW4ebB+dizYgy//IkEtx44izEz11I2MBTLnw3ntk5nvYNrnPD41DJc2jULG1wGoVShnLyrapTzWuw68suHaHh9KwYOanIZWVBMJBAan592NqobP2SANbTzVpeb5tyi3fqtG1bExZ2zcHLjFJC/Urc9Luy6gXbPD5u2Kohq7z94zQgysBSEgBECtKM2S/qU/BLCm/efGJR69vIt19P3V9zYdpwvnCcLp5dvPNS7IckNSnT+6l0lBgrk+vXvr4K5MnOdq9s9TnUjzy9fcf3OY67WyHJBIiEgBISAEDAJAt9//IDrp2d64bbXG5NYnyxCCAiBqEQg9HMRA2/oWf0RyUzJExkcx8rCguuTxFP9KOGCVkQ7fKlIbh4olWCaBMLrLzAkGnlzZEDJgjmQKV0K0I/fjGmTo3GNUji4ejwbeb94+2DllsNBukkQLzbrFFJ+IJOvw0Tx46CAQyZMH94R4/q2ZNk1247io6cX5zVRulRJWS93tvSwVW5epEqWCGWL5sam+UNRo3whFiM3D5xRIs1OKyULF8XoHFrfiiQvQQiYCgH7UPj89FH7CqU1h8anrvdXXxJFp+bV+JxNrfX9kzhhXIxVzmNLC3NsP3AOGr+7rKBEf/KaoQwnf0IgRAKa74+5q3axb2ldBXpqhOrKFMlFCQfyB0/fP/T5ps85V2pF1++6s/sSOp9Ka+lVLJEX9B14+PRVaFwnaanhv10nQE+fFMydGTSGdpvkhYAQEAKRQkA6/aME3n73RuurG/XCxIfH/+g8ZDAhIASEgDYBMfBq04gC+dg2VsHOwtbKMth2aYzeBOiHaZkmg6AbLqh3CYXXX2B4qZDhtlX9CqxO/jY5E4qoQ9OqbCimH7g37xneTWWom24tVf6kaTeVf4DKvYONteozH1bfiob6lzohEF0J0A5Fmvs3LSMulbWD99dvXNRcJ7gQTGRjozq3apQrbFAqWeL4yJw+Je+sv33/qUEZ3co/fc3QHV/KwRMw5db2TaqAbjRuU25IkI/31+8+BS53+8FzcFEMv1TRuUUNSgJDlxbVOT/KeQ0bc7mgRORKqO+4JUoOaFmvPBIqNzW5oER0PrZuUIF3DJMro2ev3im1qj9yWTR54WYudG6u6psLEgkBISAEhIAQEAJCQAgIgUgkECsS+5auw0GAHNiHQ01UTIQA7Xa99/gFdIPmcWuNL7+w+gsMAx490QxpknEd7eLlTCgi+hyTYYhEw6KXIW1yUuHdV17eKmNVeH0rckcSCQETIUCPn9NSyB/1jx8/KasXXqh9ftJOfL1GAxWJ46v8lvr7+xtoVVXFV/st9fZR7fZV1QYf/8lrRvAzkdaYRIBuSCyZ3BvkfmHnYVfkrd4D1dqMRK4q3dB5qAvoBsiATg35CRJtLuWL5wG5HaFdvPRywWL1+6Fyy+Eo2WgAaAdvzixpMaRbY20VzvftWB8lCuYAuXAoUrcPqrYegfw1e4FeVOrl7YNmtcugTqWiLCuREBACQiDKENi/Hxg6FFi7Fvjy5Vfw84syU5SJCAEh8EcJyGAmREAMvCZ0MGUp0Z/A8J7N4HFhjV4oVdiBFxdef4GsHM7o3YfPrJk8SQJOQxu9UfuDTp4kYWhV8Pa9yoc07Y7SGJYoT8atgIAfCItvxVAPKoLRmkBAQADG9FqC3s2n461H6F4uFh0XTLtyc2ROw499X739yOASzl+5w/UFtHyFcoWRyCFbOm65/eAZp4Yijd/S0Nxo0ej/yWuGZkxJhQARKF4gO078Nxn9HOujdBEHfqEnvVyNjK07l4zkepLTDUO6NcGSyb1Yh9wCkWGXvnsc/6mGHYtHgPK6OtZWllg/eyDG9GmB/A6Z8ODJK7x68wH0ksJx/VrBeYSjroqUhUA0JiBTFwJCQAgIASEgBKI6ATHwRvUjJPMTAloEyJdfePwFUhd+/gH845PyoQ3k03PVliMsTuNyJhTRxj2nQC9wSpksIXJnVxmRQqGGhev2shj5N+SMOqqh9s1LLix+/tTfvWjIt6JaVRITJ+Dj/R13r7nj7cuP8Hjx3qRXW7dyMV7fuu3HONWOvvn6YdPe01xVvnheTrUj2vmrXaZ8jXIqn9crNh/Gp8/eVBUknL18B8893vOj6Q5ZQ3EeK9p/+pqhDCl/QiAIAboZSTt1N84dgvvHFuP0pqmYObITCufNGkROt1CrQhGQzrV9LnyT9YGiS/7kDRl3Nbpk5CU3DHuWj8bD40tYz3W7MxybVYWZmZlGTFIhIASEgBAQAkJACAgBIRDpBMTAG+mIZQBtApL/fQLh8Rfo+eUrSjceiMJ1+oCMr9qzaNF7Kk643tCuYr+C5Pe3VZ/puHX/KbJmSIVmdcoEyizfeAjOS7fpvXjpg6cXFv9vPwZNWs6y/RwbwMLcnPMUDZmyAut3HMd3v6CPhN93f8k61GZrbYV/29cl8cAQXt+KgR1IxmQJxI5ri04D66Neq7LIVSDTX1/nKpc9GN5lQaTM4//s3QmATdUfwPHf2LeQPXtkJyLLP0tCkspSlGwlO1Eokm1sSYWyi7JTIZElZctaZN+37DvD2McY/vecmTe9ee/eMW+8mXnLt/+cu5x71s998+bvN3fOa/Z6Nf0k4Yz5q2SmEeS1/bJDBWe7DpooZ84Hifpz8hoVowZ43+v+tZSv11V/j9kPrGqFEqKeeFRrjb7RfrDs2Hc08vLuA8flo8++0+etjGBVioi1sFXG9vzhAAAQAElEQVRGfL5nqP5ICCCAAAIIIIAAAggggAAC0QsQ4I3ex9uuMl4/EHghFusF7j9yUo6dOq8/LGn1X7uiKP359255s+PnotYpbNBhiNRvO0gKVmsjr7UaIOs27xG1nueEz96XVCmSR9a7duOWDB0/V56u1VFefrevXnOwUoOPpWiNdtJn2HS5feeuvN/8VWlSt2pkHXVw7NQF6TJwohSu3lbqtRmo6xV/qYMOPk+dt0Kvnfh1vzai/hRdlbel2K6taKvP3rcFqtYuI2+2fNEjnpjbsm5vnGGrD5AaP7ijnme3QZOk6Ivt5ZX3AvVaoz//tkHUB5yN7t9OX7cfxNLVW/Tp72u36b1tExAQIGMGdNBB4T0HT+g1RNUvgioa38s1mvbSf96u3m/ef+c1WxW9j8/3DN0hGwQQQAABBBBAAAEzAfIQQACBSAECvJEUHCDgPQKurhdYOH8uUesCJk6cSNRTe/YznfnNR/LGyxVFrVOoArr/7Dwk2bNkkNeql5ORgW1l5azPnAKu77xRXXq0a6A/YObg0TOydtMeUU8RlitZUDq/+5qsmj1E1HrC9v2o40HdmkmbxrWkcL6cstnoR9VLmTyZqOUf+n3QWDbM+0psf4auytsn9aRhbNZWtG+DYwTiUmDP9qNy8dzVuOxCalQspb8n69WsoH8hsnX3Ef1E/KvVysnSKQN0sNZxAC9VKa2zalZ+Ru/tN9mzZpDFkwNlSPd3pdbzZeTKtRui1iCtadQZP/h9mfXNx5IsaRL7KhKf7xlROuYEAQRiKUA1BBBAAAEEEEAAAV8XIMDrIXf40ISP5Ny0XlIgeyYx+29B7+b6eq0yhcwuy5DmtfT1rvUqR7netlZ5nT+mXd0o+Zx4v4AK6MR0vUD1ZJ9aF/D0X9OkYe1KUSavgqtjBrTX6xSqD3g7uXGqrJ3zhUz8vLO8+UplUWsMRqlgnKgPQOvSsp5er9C27uDu38fKwkl95dOOb0nh/DmNUs5f6mngAV2aypIp/UWNRfW3eeHX8uPoHtK+aW3JlCGtcyW7nNiurWjXhNcd3rp5R36Zvlo+7z5VPn5npLxXe6C0q/e5BHaaKIt+WCshIaGmczq896SMGvCjdGv+tbz7UqB80OgrGfThdzJz3FL598DpKHXu3L4ri39aJ307TJB2dYdIq1cHySctRxsB/h9k2fyNEuqwpMbuLUdk3JB50rfjBHm/4Ze6fdXPyMAf5OihM1Hatp242ocr42/5ykBpXLW3nD5+0dad3qv8T1uP1ceqveF9ZukPY1OG3VuMlu+GL5SL580Dsq64q7KDu02WwYav6uzf/af0eNSYVFJ57kzqCXcVfP37l+FydtN0nSYN7Sz5cmcz7WbKV1302qBDP2lhel39kqVFwxqiyu1eNla2LR4p04Z1FRVEDghwXkc0Pt8zTAdMJgIIIIAAAggggAACCCCAQBQBlwK8UWpyggACCCAQ5wL7dx6Xn75bLjs3HZKb129LnvzZJFHiADm467jMGr9Mvuk722kMS+asFxWs3bhyl1y5dF3yFswh9+8/kL3bj8riH9fLudNBkXWuXL4ufdqNl5ljfxMVBE37eGrJnC29nD8TJH+t3i0rFm6RpA5PcP70/XJZu2ybHD90VlKmSi6582WTC6ev6PK9jIDqAWNskR0YB6724cr4jeaj/Tpz4oJsMBwGdJ4ke7YekXTp00iGTI/JqaPnjLltkr7tx8uNa7ed2nDVvcjTeaVSzfC1bzNkTicNWlSPTE6Nk4EAAggggAACCHiBAENEAAEEEPAeAQK83nOvGCkCCPihQMlyT8kb71aXMfN6yNife0i/Ua1lrHHcunt9rbH974M6cKtPjE3wlRsyY8xSSWEEXj/+vJl8u/BTCTTqjPrpYxk3/xNp1/MNKVelqFEy/OvXWWvk9PEL8ly1p2X03O7yxZTOMmTS+/Ld4j4SOLqNvPPBK+EF7bavvFlRug9tLt8v7SNfTu0sA8a1k5E/fSQFS+QR9d+8KSvVLjK50oer44/sxOLgbsg9GT3gR6ltjFnNacDYtvLVtA/1PDNnf1yCg27I4p/WOdV2xT1V6hTy+jsvSIUXntbtpM/4mD5XeSrpTDYI+K4AM0MAAQQQQAABBBBAAIEEFiDAm8A3gO4R8A8BZhlbgcSJExsB3hfkcSNoaN/GC7XLSKGn8+qscycv673anD15Se0ke+7M8kyFQpIkSWJ9rjbpHk8jVV56JkremYjy/6v+tGTIlFYV0ylRogApWDy3FCv1pD6335R/vriUKl9Q1Nhs+Wp89ZtV1ae2MegTY+NKH7a6MR2/0fxDv4oac2jUpmaUcjnzZpGXG1TUeScOn9N7+42a2xvvxtzdvi7HCCCAAAIIIIAAAggggID/CjDzhBAgwJsQ6vSJAAIIuEEgR97MupUrl6/pvdrkzJtVP72r1oEd1muGXDhzRWVbpicLZtfXvv3iZ1n3x3an9Xb1xRhuchpBU1X08oVgCQu7rw51cqWPnC6OX3fwkM1zL5Y0LZEnX1adf8liHV590WRj5m5SjCwEEEAAAQQQiE6AawgggAACCCDgNgECvG6jpCEEEEAgfgXU0gCqx/sPHqidTmnSppQuAxpJ8pTJZMv6/fJh42EyuNtkffzArpwubGzqN3tBylYpKteDb8nYwXOlU4MvZc73yyXo0n9BY6NYjL5Sp0lhV+6/MbnSh6vjt+vQ8jDrE4+bXkuWIqnOD7lzV+9jujFzj2ldyrkuQA0EEEAAAQQQQAABBBBAAIHoBQjwRu/DVe8QYJQI+KzAuVOX5ZcZf8qXPadLj/dGSbu6Q6Rx1d46LZq91nTeJZ4tIP1GttaB25SpU8ieLUdEPc37aesx+oPG7CslS55EOvd7Sxq1fUly588m14Jvyvxpq6VL4+EyfcwSuX3zjn1xUUHijat2yaRhv8iADybKB0YA+Z2agXo879UeGKWs7cTVPlwZv62P6PZpH08T3WXTa7FxN22ITAQQQAABBBBAAAEEEHCnAG0hgICJAAFeExSyEEAAAU8QUOvRDug8SX6a9IecOn5BSv+vkLzd7iXpNbyF9Pq6pfyvWgnLYeYt8IR0GdBYvl3YUzp82kCy5cwoxw+fk8FdJ8ue7Uej1FPrzdZ5u7J8/t37MmJWV6lWp6yE3r0nS+dskBF9Z+ugrq3C9NFLZFT/H2X1kq2SNv1j8vLr/5P3+7ypx/PRkGa2Yk57V/pQlV0ZvyofXUqUyLUfdY/iHt04uIYAAgggEJ8C9IUAAggggAACCPiPgGv/6vUfF2aKAAIIJLiAenL3atB1ebpcARk+/UN5q3VNef7l0lKsdH794WcpUyd/6BhVYLVSzVLy2bcdpHTFwrr8L9NX673ZJmv2DNKqa11RwdoUqZLL7i1HZG9EQFg91frbvI0SEBAgPb98Rz7s30hqNXhOylYuqseTO39Wsyad8qLrw7Gwq+N3rP/Qc5MC7nA3aZYsBBBAAAEEEEAAAQQQQAABBOJEgABvDFgpggACCCSEwNGDZ3W3VWqVFhXo1Cd2m2MR1+2yLA9VsPaNd6rp60EXg/U+uk3p/xWSEs/m10Vs5f89eEaf58ibVQeZ9YndxpXxqGpmfah8s+Tq+M3aiGlebN2TR6zpe+ParZh2RTkEEEAAAQQQQAABDxNgOAgggIA3CiTyxkEzZgQQQMAfBDJlSaunefLoeb23bcLC7ot6CvffA6dtWZH7E0fOytwpKyT4yo3IPHUQGnpPVi3+Rx1KwWK59V5t1NOqW9fvU4dR0lEjmHtg5wmdV6BoePlMmcPHczXomlP7F85ekVnjf9PlHTeu9OHq+B37csd5bNxVv5mzhX+Y24UzQU7LYKjrJAQQ8CkBJoMAAggggAACCCCAgMcIEOD1mFvBQBBAwPcEHm1G1V4rqxtYMH219Gk/TmaOWypjP5sj3ZqOkKVzN0jN+uX1dfvN9et35Ocpq6Rjgy+kb4cJMrjbZJ0+eucbWb5gk2TOll7qN38hssqebf/KV71mSofXh+pyqvzAD7+TXm3GyrWrN6T+Oy/o9XtVhQLFc0u+wjnlRvAt6WqMYdSAH/WYVB31oWz5i+SSbLkyqqJRkit9uDr+KB256SQ27qrrLE88HrkMxpc9pkZ6qmskBBBAAAEEEEAAAQQQQAABXxZI2LkR4E1Yf3pHAAEELAWerVRE2vV8Q3LmzSJH9p2WxT+ul4O7TkgZI3/AuHZS+81KTnVzP5lV3mz1ohQp9aSop2H3bDkil85dldz5skmjNjVl8LcdRQUibRXrvF1JqtYuI8lTJhNV9si+U6KeEK5ep5x8OqyFNGxR3VZUr73bdVBjUR/u9uCByMaVu+S3uX9J4sSJpE2P16VjrwZSuETeyPK2A1f6cHX8tj7cuY+Nu63/dj3ekIovlpIA43/KUyXbNfYIIIAAAggggIBAgAACCCCAQBwIEOCNA1SaRAABBNwlUOWlZ+SLKZ1l1upBOn09u5s061hb1AeVqUCtyrcPwj6WLpXUa/q89DKCs1OWBeo6I2Z2kW6DmkidxlUkTdqUUYZW4tkC0qZ7fVFlVFvfL+kjgaNaS8uudaR4mfA1eO0rZMiUVjr1fUtUOVV++or+8skX78jztZ7RxVRbKj9x4sT6XG1c6cPV8av2v1vcR88zR57M6jQyWeXbCuQvnFPXU6a2PNveVXdbPeWrAt2Tl/XTbSsL2zX2CLgiQFkEEEAAAQQQQAABBBBAIKYCiWJakHIIIOBxAgwIAQQQQAABBBBAAAEEEEAAAQR8X4AZIhCtAAHeaHm4iAACCCCAAAIIIIAAAgh4iwDjRAABBBBAAAF/FCDA6493nTkjgAACCPi3ALNHAAEEEEAAAQQQQAABBBDwGQECvD5zK90/EVpEAAEEEEAAAQQQQAABBBBAAAHfF2CGCCDg3QIEeL37/jF6BBBAAAEEEEAAAQTiS4B+EEAAAQQQQAABBDxQgACvB94UhoQAAgh4twCjRwABBBBAAAEEEEAAAQQQQACB+BJIuABvfM2QfhBAAAEEEEAAAQQQQAABBBBAIOEE6BkBBBBAIE4FCPDGKS+NI4AAAggggAACCMRUgHIIIIAAAggggAACCCDgugABXtfNqIEAAgkrQO8IIIAAAggggAACCCCAAAIIIOD7AswwhgIEeGMIRTEEEEAAAQQQQAABBBBAAAFPFGBMCCCAAAII+LcAAV7/vv/MHgEEEEAAAf8RYKYIIIAAAggggAACCCCAgA8KEOD1wZvKlB5NgNoIIIAAAggggAACCCCAAAIIIOD7AswQAV8RIMDrK3eSeSCAAAIIIIAAAggggEBcCNAmAggggAACCCDg0QIEeD369jA4BBBAAAHvEWCkCCCAAAIIIIAAAggggAACCMS/AAHe+DanPwQQQAABBBBAAAEEEEAAAQQQ8H0BZogAAgjEkwAB3niCphsEEEAAAQQQQAABBMwEyEMAAQQQ8G2Bp9d8s8CaDQAAEABJREFUI4VXD3dKwfdCfHvizA4BBOJNgABvvFHTEQIIIPBIAlRGAAEEEEAAAQQQQAABBBBAAAHfF3B5hgR4XSYzqVCkiAgJA5OXBln+LVAtdV4hYeDf3wXMHgEEEEAAAQTiToCWEUAAAQQQCBcgwBvuwBYBBBBAAAEEEPBNAWaFAAIIIIAAAggggAACPi1AgNcdt3ffPhESBu54LSVgG3TtfoGVN48JCQP3v7JoEQEEEEAAAQQQQAABBBCIvQA1fU+AAK/v3VNmhAACCCCAAAIIIIAAAgg8qgD1EUAAAQQQQMBLBAjwesmNYpgIIIAAAgh4pgCjQgABBBBAAAEEEAh9cF+ab//JKXXavRAcBBBAIM4FCPDGOTEdaAE2CCCAAAIIIIAAAggggAACCPiowP0HD2TT1VNOadu1Mz4642imxSUEEIh3AQK88U5OhwgggAACCCCAAAIIIIAAAggggAACCCCAgHsECPC6x5FWEEAAAQTiRoBWEUAAAQQQQAABBBBAAAEEEEAgGgEfCfBGM0MuIYAAAggggAACCCCAAAL+LrBihcjy5c7J312YvxcKMGQEEEAAAUcBAryOIpwjgAACCCCAAAIIeL8AM0AAgagCK1eKmKUHD6KW4wwBBBBAAAEEvE6AAK/X3TIGjAAC7hSgLQQQQAABBBBAAAEEEEAAAQQQ8H0BX54hAV5fvrvMDQEEEEAAAQQQQAABBBBAwBUByiKAAAIIIOB1AgR4ve6WMWAEEEAAAQQQSHgBRoAAAggggAACCDyawM9nd8voYxud0pk71x+tYWojgIDfCRDg9btbzoTjVYDOEEAAAQQQQAABBBBAAAEEEDARmH/ePMB7LoQArwmX52cxQgQSUIAAbwLi0zUCCCCAAAIIIIAAAgj4lwCzRQABBBBAAAEE3C1AgNfdorSHAAIIIIDAowvQAgIIIIAAAggggAACCCCAAAIxEiDAGyMmTy3EuBBAAAEEEEAAAQQQQAABBBBAwPcFmCECCCBgLUCA19rGI670m7Vcir//tfy25YBHjOdhgyjXbYxkaz5Ythw+/bCiXEcAAQRMBVYt2SKNq/aWL3tON71OJgIIIIBANAJcQgABBBBAAAEEEPA7AQK8Hn7LNx08IZeu3ZQdx85FGen+Uxd0IFUFU20pZ4vPpXSXUfJSv+/l48lL5Oi5oCh1OPEdgfv3H8hPi9dK/baDpEStjlLwhTbyWqsBMmXucrkXFubyRPNWaiHZyja1TB37jnNqc+SUXy3L29o6dOyMU70mH3wZbb1nXunsVEdlHD99QXp/NU3Ps3jNDlK0Rjtp0P4z6Tdippy/dFUVIbkgQFHvFdiy67C8+9EIKVevi+Sr0lKqNf5UBo36QYKv34r1pNR7yvSfV4r6Xn/lvUD9nqK+j8vX6yp3Q+85tRub9wynRowM1W/d1gP1e0LDjkOMHOevzTsOykBjfuq9Q43nyUrvyXNvfCTqXFk41yAHAQQQQAABBBBAAAEEEPAvgegCvP4l4aGzHdD4RWn+Qmlp+eKzliOsXCyvqPRM/uwSei9Mdhw9K9NXbZPKPb+VqSu3WtbjgvcKdB00UToHTpCNW/dL6pQpJE+OLKKCIJ8MnSKtPxklKmgS09ldu3FL7oSExrR4ZLmgq9cjj105CAp2rZ6ay7gZS+T5t3rIpB9/1/NMlTK55MiWSdZv2ScTZi2VGk17ya4Dx1wZBmUR8EqBH35dIyoA+9ufW+T6jdtS5KlccuT4WRk9bZG8/G5fuXTlmsvzOnryvNRu0U8+HvK9zFu6XnYfOC55c2aRyuWKSbKkSZzeT2L7nmE2sGGTfpa/tx8wu6Tz2vUarX+pM8aY38qNOyVx4kRStGBuOXP+sqzYsENbqPcFXZgNAggggAACCDyKAHURQAABBLxYgACvh9+8sgVzyRctXpZMaVObjjRJ4sQyp0cTnX7t3Vx2jfpQNg9/X96pVlo/ydlr+u864GtamUyvFFBP7qogT8b0j8nCSX3lr/nD5I8Zg2T93C+lRKG8snT1PzJ2xuIYz+3ylfCAa/FCeeTc5hmmacyA9k7t2QK8k4Z2Nq2j2iqQN7tTPVt/e/4YZ1pv2+KRUercf3Bflq/bJilTJJfADxvL1kUjZdOCEXrOmxd+LZWeLSoXLwdLxz7jnAJRURriBAEvF1CB2G6DJ+lZDOvdSvYa30OLvw+UHUtHy+u1npN/T5yTLgO+1ddjujl7IUjUE7Tb9/4rTepWld+mDpAjaybJ79MHyZwxPWXtnC8kRfKkUZqzfQ+7+p4RpRHjRAV2h0/6RZ4pls84M/8qU6KAlCnxlHzRs4XsWz5eNsz7StSc9xrHH75XV1fqM2y67Dl4Qh+ziQ8B+kAAAQQQQAABBBBAAAFPEyDA62l3xA3jyZUpnXz+Ti0pbwSH1Z/rL9y0zw2t0oSnCEycvUwPJbBLEylXsqA+Vpv8eZ6Q4X1aqUOZOPs30z+r1hcdNpeCgnVO5gzp9D6mm8sRTwqa1oumkQuXr0ryZEklQ7o00ZT675L6JcbI/u1k2dSB0q5JbcmeNUPkxZzZMhqBn/f0+cGjp+Xw8TP6mA0CviiglmAJC7svTeq9oIOxAQEBeprpjV8ADu/dWn9v/LFuu34CV1+IwWbQ6B9FfU+qYKkKGpcqmk/U91x0VWP7nmHf5vWbt+WD/t9K6lQppM3btewvRTlu3eglHdBt/np1UfO0XUxl/MLnk/YN5fnyJeTBgwfy59+7bJfYI4AAAggggAACCCCAQHwK0JdHCBDg9YjbYD2Id7+eI9maD5bpLi61EBAQIM8VyaMb3nvygt7bb1SQYM76XdLcaL/cR2PkyVZfSO3AydJ/9nI5fPayfVGn413Hz0mXSYuk6qcTpUDbr+SVAVNk5K8b9NOTyZIkdipPhvsEzpwP0ksRPG4ER+u+WMGpYfUErwr6qjVpN2yJWWA/KPiGbsfVQK1tqYUsGdPr+jHZ2P60O2um9BIQEB6cikm9HFkzSu4cmU2L5sudTWxjuBjk+p+nmzbqBZnDes+UxlV7y7XgW3Lx3BUZM3iufNh4uLR6dZAM7jpZ5ny/XO7eDdUzOX/6skz9ZpH0aT9OWrzUXz5+5xv59ov5cumC89rF6/7Yrtvt33mSrmu2mT5mqS4za8KyKJcX/7RO529Zv1/n/zp7rXRvMVqa1+gnHd4YqvNsm7CwMFn0w1oZ8tEUafnKQOnSZIR83W+2HD98TpI+5H0k6NI1mTN5hQR2mijv1Q6vO3rQHNmz7V9b81H2NqubN27L7Zt3ZNLwBbo/5afcohT24JOVG3bo0TWp+7ze22/UU7YNXq6os35duUnvH7ZRT+/+/NsGHRju0rLew4pHXo/te0ZkA8ZBj88ny7FT52VYr5aS8fG0Rk7svmy/KFIB49i1QC0EEEDAxwRu3RJZvtw5rV+f4BNlAAgggAACCCAQdwIEeOPONsFbTpIo/PYmTRy+tw3o1p270mzET9JpwkJZseOwJEucWIrkzCw7j5+XcUv/lpeNQO9KI99W3n4/a80OHQiebeyv3b4jRXNlkbNXrstnc1ZJp28XSoY0Ke2Lc+xmgR37wgNYxQrm0WtjmjVfKuLPnbfsOmx22SnvcsRaupkzuvoE73XdVhYX6l02Xiuqkqt9qTpWSa0fbFsuwpWxWLXnbfn/rNkrfTtMkA3Ld8hj6VJK+gxpZK8R6Jw/bbWMNYK+xw6dlV5tx8nKxf9I6N0wyZYro5w+flFWL9kiA4wA6d2Qe26f8hUjAKsCrrONAPCpo+fk3r0wSfNYysh+goOuG0Ho72XW+GVyYNcxeSJXZkmeIqns+OugDPhgolw67xx4tlU+efS89G0/QeZPXSXHDp6WnE9mkWtXb+j5D+7yvcwY+5utqNP+hBE87m8Erlcu3Cwq6K0KpEyVTO08Pqlfjhw6dkY/XVuyiPmSBqWK5tfz2Lo7Zt/7S1b/o59+Vb8sUk/V68ox2MT2PcPW9I+L1ooKLL9d53lRfatfONquiUiMD9W622oOqkLVCiXUjoQAAgggcPOmyMqVzmnjRmwQQAABBBBAwIcFokb+fHii/ja1kNB7snTrAT3t0vlz6L1t03f2clm584gUMYKzf33ZQdYNbSdLAlvIwfFdZei7L8v12yHSZuwv8u+5IFsVvT9y9rJ0n7xU7htnI1q+IltHdJIFvZvr/ZzujWXZtkOy6dAp42pcf/lv+yfOXNSTz5Mji96bbWzXjp46Z3bZKS8oIsC7Y++/0qzLV9Kw4xBp8fHXMmTcHJmzZJ3lhzapdW/Vn3Kr9S9VnUadhspHn30n42YsEfXhb04dGRm2vq5euylteo7SfTX54EsJ/HqWTPt5hRw+ftYo5drX5h0H5V5YmH7C12zNX9da877Sk4b9IhWeLy7f/vqpDBzXXr6a9qF8OryFnsimP/fI592nSIky+WXsvE/k8+/elyGT3pfPJnaUtOnTGIHUYFm7bJsu687Nb/M2yMYVO6VG3XLyxZTOMmPlQL239TH7299l/47j8lSxXDLyp+4yaHw7PbYJC3tJkVJPyk/fLbcVjbIPCQmVUf1/lKCLwfJW65ry7cLeMmBMW5mw4FPpOqiJpEqTQpb8tE7UU8hRKkacfDd8gX7auWnHl+WbHz+SWasHyXtd6kRc9eydWn9XjTBPziz6g8bUsWPKa1xTeUdPxOx7f9f+8A8mLFU0n2wyvo+adxsu5et1lXxVWkqdVgPk21m/SUjEU+CqXVuyfR+7+p6h6p84fVF6fzVNfzDkgK5NVZbLSf1SZ8Eff0m9NoP0+Lq2qi/lSxVyuR0qIIAAAggggAACCHiDAGNEAIGYCBDgjYmSF5VRwdkl/xyQl/tPkd3Hz0vqFMnk7SolI2eggrYzVm3T5xM61BO1Xq8+MTapkifTH87W2Ch/wwjyjliwzsj97+uLn9foQNqbFUvI28+X+u+CcVS5+JPywWvPGUd8xaWACoyq9lOnSq52pilNqvAnJa8G3zS97pgZFnZfZ637Z6+o9TvXbtqjP6jtm+8XSKd+46XqW5/Ius17dBnbRgVYEidJrF8Psxb+KarO6r92yYz5q6T/N7OkfttB0r7XGAm9F2arovfqPCAgQI4YgdyFy//W9VZs2CHjZy6R7kMm674mzFqqy8Zk8+DBAxk5daEu+s7r1fXe3zYZMqeTJkbAMrXd0/PFnsknxYygrrYwbm+b7vUl9WMp9Kna5C3whFSpFf49fOrYeZXl1nTmxCVp0+N1HTzNmTeLJEoUENn+yaPnZM1v2/QSHR17NZS06VJFXkuWPIl07veWPGaXF3nROFj/+w45deyClHu+mNRtUkVUeSNbkhivxWcrFZFGbWqqU1m1+B+9d9xcOHPFCCa3l9oNK0rmrOkdL3v0efD18O/nNKn+u4+OA06TOvx7/+zFK46XTM9tQeNjJ89Lww5D5Pc1W/VfBuTOnlm27D4sfUfM0IFe2/uOrZHYvK3K9QsAABAASURBVGeouveMX8S06zVabt0JkbEDO8hjEeNV1x6WBo76QbKVbapT3kotpO2no6V08fyyYGIf6d72jYdV57ofC6ifT7bXznqLpYvu338gPy1eq392lajVUQq+0EZeM37Joda9Vq9bK76bt+7I8EnzpWaz3lKgamspVbuTNDZ+aal+llrVIT8OBWgaAQQQQAABBBDwYwECvF5+89U/PBoOnSkqlf9orF4T972Rc2XvifOSKnlSmdixvmRNnyZylos279fHlYrmlYIWa5q+YQRwVSFV9m5o+J9vq0DaYiNwrPLfqvxfwFid29Ib/ytuO2QfRwI3b9/RLSdPmlTvzTYpjaC+yr9x67baPTR90KKOLJs2UOaN7yXr534px9ZNlg3zvpJR/dvpp2IvXbkm6ole9eSdrbEUxmtr84IRus6i7/rJgZXfyp4/xsmSKf31hz+pcvN/3yj9v56pDiNThWcKyV/zh+l6f8wYJEfXfS9bFn0jP47uIZWeLaoDxv1GzJRFKzdF1rE6CDMC0+8bAWj1j/dniuWT996qaVXUp/NLlntKBzgdJ5kn/xM6q1DJPJIytXNQMEeeLPp6dMsh6AKx2KgAbcUaT5vW3LIu/D2oxLP5JWv2DE5lkiVLKmWNAK7TBSPjn3V7ja1IiTJP6b3j5qkiuXTWvwfMP2yvZPkC8kSuTLqMt21UIEmNWfmovVlSHzym8tX3htmTt+qafVIfrqbO1dP6zd+oLv/8+o2snfOFrP7hc9mxZLRePmHHvqPS66tpqlhk+iAW7xmq8pff/ixb9xyRD9+rK2VKmN9DVc4s5TF+XlUuV0zUGuO5jWO1TrP63u/91XRRT/Gb1SEPgctXr0vHvuMeCtF10ETpHDhB//VJ6pQp9BPm6nX1ydAp0vqTUfozBhwbUes+12k9QL6YME92HTguaj34gIAAUWtlq7+GUX/N4liHcwQQQAABBBBAAAEE4kqAAK+zrNflrN1zTFS6GXJXKhTKJU2qPiMDm7woKwe1kmolo/4j+qwRrFMTzJ/NObCi8lV6Jl94YOj23VC5EPEU6MXgGzr4pq7nzWL+5Fv2jGkledIkqggpjgTUPzxV0yGhoWpnmu4YrwN1IUmSmN+LkkWelIplikj+PE+ICt6qf6g2rF1J/pg+WAd51T9kp/68QjUbmdQHvak6zz5dQNI9lkoypn9MShfLL8N6t5KBEX96PeOXVXLFeO1EVjIO8uTIovsqUSivpEyeTNQHqD1fvoTMHfep1H7hWaOE6GUe9IHFRj1t9b4R3J23dL3+h/jUYV11WxbFfTo7a85MpvNLmiyxzk/3+H+/4NEZEZukRpBeHd65E6p2bk0Fi+c2DTqrTq5cvq52ksUkuKsvGJvMWR83ts5fly8E60y11IL6gDTH9GnrMfp6yO27cudWiD623xR+Oq/9qVcdp04VHqS3fXCe2eBvR3zvq2sxWVP3ZoRRm8a19PdszmwZVVWdMmVIK2oJhaRJEsuC3/8SFSjTFyI2rr5nqGVbRk5eKKWLPyWufKBbRHfS/PXqMmdMT1k4qa9s+mWEHFnznQz6qLn8e/Kc1G87WP7efsBWlD0CkQKdjZ8TF4OCRf28icx0OFBP7v7w6xr9M0y9vtQvIdUvINUvPFW9pav/kbEzFjvUEgk0fhm55+AJ/UuHTcYvPNUvSrctHqlfp+ppevXXLP/sPORUjwwEEEAAAY8TYEAIIICATwgQ4PXy26jWQD03rZeotHvUh/JLr+Yy7L3a0vqlcpI3q3MQ9+rNED3jDEZATh+YbNRSDSmThT8heuVm+FOgwRGBAFU8ug9Sy2oRTFL1SA8XGDNtkVR5s4dTUk8Sqdq2P2lWa5Gqc7N063b4PY7uT7nN6pnlqcBts/rV9CW13qY+iMGm5Vsv6UDxnZBQ2XPweAxqhBfp0PQVfbB195HIXyjoDLuNepr84yHfy/xlG+SJLBlk6rAukiWj+S8d7Kr57GGqVMmjnVvSiO/laAu5+WKKiGCkWbO3It6D0qRNaXZZ56V9PLXeO25uXA9/P8pXKIeoJSiiS4511XmKlNFbqTKemlTASI3tjl0QV53bp5u37uhT2/uEPolmkyJF+Pt87aplTUtlzZRensqbXX8v7jt0wrSMY6bZe4Za4qFj37Gi3pPGDeqgPyjOsZ6r58mMXya2equmDOrWTI9v8OgfXW2C8j4uMPGHZaKWAHqv4YvGz4h0lrOdOHuZvhbYpYkO1uoTY6N+4Tm8TyvjSGTi7N/kbug9faw2ag36Hxet1UvNjO7fXnI9kUll61S5XDHpEbFsyLiZS3QeGwQQQAABBFwVmH9hjzTf/pNT+jPoqKtNUR4BBPxEIJGfzJNpRgikifgHvXraNyLLaXfLCCCop3fVhTTJk6md5Mz03z+Ogm6EB1n0BYfNrTh4GtChC58+VU+7Hjx6WhxTyN3wpyzz5syq53/m/GW9N9ucPhd+TT0pa3bd1bwnc4X3qZ7ijWldteaqCgyp8q7UezJ3NlVFVBD3xs3wYJXOiNio/B6fT5GZv6wS9QThb1MHSOH8uSKuesAuAYYQEPDf+rbx1X2I8R4R275sTxTfuGb9PnLXov3UEb+YqtXgf9JrWItoU4qHBL5jO/6EqlfACLSqvo+fvmD65+Lq2umI9wUVmFLnD0uZ0qfVRe7d+y9wpTPsNunTptZnNyN+caRPHrJxfM+Y9vNKOXM+SNRTyOqDGNWHMtqnIWN/0i3uOXBcbPm7jWOd+ZDNc2WK6BJqzWDb+6TOYOPXAvuPnJTBo3+Q4oXySN8P3hb7p9vtYdTrcteBY6L+IqXuixXsL+lj9QSvWhbk/KWrssFu/d41m3brXyy8WKmU/isXXdhu8+arVSS58cu1ZX9utezbrjiHCCCAAAIIOAmcvnVNNl095ZQuhoR/LoNTBTIQQCD+BTysRwK8HnZD4no4BSKeMtl93PqDlXZGfOhSquRJJVfm8MCueqI3U8Q/9I9duGo6TBUUvnSNHzimODHM7N2pkZzbPMMpVSpbTLdQ9ukCeq+ecFUfWKZPHDa2P1VWH0DkcClWp5eCrul62TKb/9m8vmiyuXAp/M/ps2V2fpLcpLjOUk9FqQP1tKItsKTOVVLBXfXk7rSfV8gzxfLJj6M/EfWEobpGcp9AkqRJdGNhYVE/IE9nRmyCzoff24hTl3aZnwh/T7lwJsiy3tVL4cs4OBbIElH37MlLjpd8/lw9lVvkqVxyJyRUtu/713S+f28LX984pt/7xYzgl2po3+GTameaTp65qPMzPR4eDNYnD9k4vmfYAsjnLl7RH6yo1s61Tzv3H9MtBgXfiLwefOOWznvY5sKl8J9Hat3h+w8ePKw41/1AQAVz1YfwJUqUSMYM6KADrer1YTb1HRHfS8UK5tEfMGhWppTx80blb9l1WO102rE//Ompp4s8qc8dN+mMX0YVypdDB4Ht6zmW4xwBBPxDgFkigAACCCAQHwIEeOND2YP6ePnZQpI4cSLZuP+EHD4b/qSn4/Dmbtils2qVLhjlT2mrlgj/h8yPa3fo646bP7ax1pyjibvPM2dMJ8+XL6HXw1TrYjq2r55E2rTjoP4HbeVyxaNcVgHhsxesg2pRCkecqH8oq6fv1KnqV+1jkuYsWSfqA5yyZ80gJQrniUkVXWbCrKV6X/25qB/kZwvuzpi/SsqWLCg/jekpjgFgXZHNIwukS59at3Hx7BW9d9xcC74l+3aGB+Qcr8XkvFT5QvrPmnf9c0QumfyySN3r7X8fNG2qVIVCOn/5gk0SHGQeBNYFfHRje8Jw1oLVTjNUgd+5S9fr/Bf+F/X7R2WqJ3/V3j7Vrhq+5vWUeStELaNgf00dq3VzT527LBnSpREVAFN5D0tm7xldW9V3+qWV/S+yZo/srptVf9puy1fre+vMh2x+jfhARrVueMqIvzh5SBVPvcy43CQw4JtZcuDf09Lr/bdEBVmja/ZExC8wovuLF9u1o6fORTZ18swlfWy7pk8cNra/uDl+yvoX6g5VOEUAAQQQQAABBBBAINYCBHhjTeedFXNlSifv166g/wS+4/gFcuFq1CDJrDU7ZObq7aKe3v2ofpUok2xbq7w+/2HtTlHl9EnEZtPBkzJozqqIM3ZxIxDearsmL+uDfiNmiArm6hNjc+T4Wek6cJJxJNK03gs6KKNPjE3w9VtSuWF3KVuni6jgq5EV+dXkgy9F/blpZIZxoJ52Uuv+NusyTPYeOiEFn8whjer893qYPGe5jPjuFx1oNopHfqkn8NS6hz0+n6zzurV+PcovCXp+MUVmL/xT7oZG/ZPwQ8fOiKqjrqkgzYfv1dX11UYF/NSTu7bg7g9GMEg9zaiukdwvkL9ILlHLGwQH3ZA/f9sWpQN1L2aNWyrqQ8yiXHDhJGv2DFKmUhH9HjSy/4+iAsa26iEhoTJt1GI5fvicLSvK/n8vPC1ZnnhcrhtB5n7vT5QNK3eK/YeOqWMVHN6yfn+Uer5y0uz1aqKeblffCzONIK+6H2puKjjbddBEvQxC0QK5pUbFqAHe97p/LeXrddXfY6q8LVWtUEL+V7qwqPeON9oPlh37wp9KVNfVEglqOQV13KpR+Jra6lil2LxnqHqupv1HTknLHt+Ien+yzdXWxvWbt2XAyNny7azfdNZHrV/Xezb+LbB8/XZRP59qVCwlLd+s+VAM9b2jCqVOlVztTFOaVOHrhV+N+NBZVSj4evhfK6VJFf7hhyrPMdmuqZ+Ltmv3H4jcunOPhEGcvgZuh9wT46XmlNQH1Jrlqzyra2HGi1Zdd0z3wh44ta/KWOWHWZS36lf9QYbRtWkfcT0mq/bVmHQyvqHVXO2TVR2reVs5WeVbta/+csV+HPbHVrb2YzKmEuVL1bfsy7gh6rpTMjKsxmHVltU8rfLtx2x0F/m6sGpf3yejoPEVWdZ2bFXHqg+rMVnlW7Vv8Bn/31ecxqPGFZN7pcrZUkhoWJy+h/BzypN+TjOW+H49RnlT9MITArxeeNMedcgfGYHbehWKyo6jZ6XCx+Ok4dCZOtXoM0m6TlokyZIkllFt6ki+bFH/tL5EnmzyVuWnjR9OD3S5Zz4cJXUHTRO1r2Psyz6VU14s9dSjDo/6DxF44X9Pywct6ujgap1WA6RC/W7yYtPeUrHBx6Ke4FUBnp4dGkZpRa1HeOzUef3noqv/Cn9C21bgz793y5sdP5fiNTtIgw5DpH7bQVKwWht5zWh73eY9otbznPDZ+5IqxX//AL5245YMHT9Xnq7VUV5+t69eN7OS0X/RGu2kz7DpcvvOXXm/+avSpG5VWzd6f+zUBekycKIUrt5W6rUZqOsVf6mDDj5PnbdC0qZJJV/3ayPqT9F1BWOzbM1WUQEt41BU0Dn/860kW9mmpilnhXdUMdIjCCRLnkTqvF1ZtzDh83nyWbfJ8uPE3+XnqasksNNE2bJ+n1SqGTWAqAu7sKnbpIqkSZdKDu85KZ3/1QghAAAQAElEQVQafiG9246Tnq1GS7s6n8maZdvk3Q9eM20t9WMp5P0+b0qmrOlELfEwesBP0rbuEBn04Xcy4IOJ0ua1wfJFj2ly8qhvPjGXMf1jMn5wR/0EdLdBk6Toi+3llfcCpeTL78vPv22QdI+lktH92+nr9oBLV2/Rp7+vjRqwDwgI0H/Crt4z9hw8IS817yPqF0HqvaRG016iAr/q/eb9d6Lej9i8Z+gBuLx5IItXbv7v/an9Z9LASM+98ZEUqd5Oxk5frD/McWDXpvJ6redcbp0KviWg/mrkw/7filpORP0cicnsbt6+o4slTxr+gYP6xGGTMkX4ZxHcuPXfuuG2DzRMliy6euE/M29EfPihalb9I/5WiPEPc5Lg4MbXgcPr6fbd+8b/VzcCSQ+ipsgAk0O+CoYZ8VfTOjroZVY+zLyPe1b5RueqH8ekg2Em7RtZer15x/Lq3KqOVb6rY1Lfp6ofx6SCmCo55qtzqzr3LOZtOSYLP6v7cP9+1HusxmJLVvfUfkzqfcmWIusZFW3H9nsr3/B7ZT4Oq3FbtWXpYuFo5a7uk0r247cdW9Wxd7GVVXurMVnNwSpf/aI6PDlbWdWxGtPd0Pu8hzq87/EzJe5+pvibre090Vv3BHi99c49wriTGgHc8R3qy7cd68urZYvIxeBbsvv4eXk8TUr5oE5FWT+0nbxStrBpD9+0fk0GN6spJZ98Qu6G3pO/D56UNMY/fj5t+IIOCufPltG0HpnuFejZ4U2ZNLSzqD9pvnU7RAd21ZN9rd+uJQsn9tFP+dn3qD6ILHf2zHp5DvXUnv21md98JG+8XFHSpU0tKqD7z85Dkj1LBnmtejkZGdhWVs76LErAVdV9543q0qNdA1EfcHTw6Bm9bqZ6Ekp9GE3nd1+TVbOHSO9OjVTRKGlQt2bSpnEtKZwvp2w2+lHrcKZMnkwvO9Hvg8ayYd5XYvszdFtF9afntmP28SNQt+nzRiC1oVR4oYRcuXRdFs5aqwOvhYrnloHj2kvlmqUeaSD5C+eUzyZ2kHLPF5OMWdLJiSPnRK2rW6JcAen7TWup+OLTlu0/VTSXfDH1A2nVrZ48879CopaU2Lv9qPy7/7QUKJ5HGrSoLuWqFLWs7+0XalQspb8n69WsoH8hotbjVu/Fr1YrJ0unDBAVrHWc40tVSovKq1n5GbWLkrJnzSCLJwfKkO7vSq3ny8iVazdEvafUrFLaCCa/L7O++ViSRazLbKsYm/cMW11X9oWM94nJX34ojV6rIlkzPy7r/tkrG7ftlzDjH8DqvefTjm/Jmp++EPW+50q7lPU9AfWP5o59x8mlK9dkeJ/WOsgbk1mmTplCFwsJDdV7s82diA99TJIkSeTl1KnC6929+/B6SY3/z2WrmChRgKRKnpiEQZy+BlImS2T8ok+ckvHyc8ozfs+n8xIHOJdX1xIbF9TeManl3hzz1HmSxOZ9JzE6V9cdU2KLfGM4or5fHMurc6s6Vvmujsmq30RG5yoZO21mv7eqYzVvyzElNvezug+JEpnfNzU249Y5jVPl249J7P5T11Sy6itxogDT9gKMNqzG4Wpbli4WfSeyyjcmkshIxpfTmK3q2LvY17Mak5WHVX5AQIAxFpXE2EdNVnWsxpQsaaI4fQ/h5xQ/p/35NSBe/p/xY8HLZ+Djw5/yYUM5N62XNKtWOspMC+fMovNPTf4kSr4rJ3XKF5WRbV6T1Z+1ln1ju8qcHk2kZ4OqkjNTumibafliWVnW/z3ZM6aLHsPaz9tK59ee0/9HLLBxDZ1X5qkc0bbBxUcXUAGdOWN6ys7fRuv1LQ+vnijqSTYV6HVsXT3Zt2nBCDn91zRpWLtSlMtqbd0xA9rL+rlf6nZObpwqa+d8IRM/7yxvvlJZr+cbpYJxota/7dKynqj+j/w5Sdfb/ftYWTipr6igS+H8OY1Szl/qaeABXZrKkin99VjUepubF34tP47uIe2b1pZMGdI6VVKBLFUuJunUX1Od6vtqRrdBTWTW6kFSvU5Z0ym+1epFfb1Zx5dNrz9XrYS+3mtYC6frAQEB8lz1ktK531vy5dTOMnPVQPl6Vldp3K6WZMuZUUo8W0DXbdz2pSh1X3mzks7v2KtBlHyzk0xZ0suH/d+W4TO6yLTl/WXKskDpOrCx5Hkqm6Q2ftmk5vbxkGZmVSVFimRS7bVnRV3/enY33aeqr+by+jsvSPbcmaPUe5hVlMJecKKecB8/+H35+5fhcnbTdJ3UL3zUOrRmw5/yVRf9PTr0E+d7rcqnNH7J0qJhDVHldi8bK9sWj5Rpw7qK+t4LCAhQRaKk2LxnRGnA4UQ9Jay+v9X7if2lgIAAebnqs/J13zY6qK3KnDbew9S8fxrziXQ2fpmkfnFlX4dj/xQYN2OJ/kWjeh2b/SLDSsW23I9aHsaqjPqFh7pmW3JBH6dOqXZiC/7qE4eNWb1ExrdTqhRJhIRBXL4GUiZPIgHG69Ex6cCWSb4qZ3VNB55M6iQxooeqnmOyyteBPpN2rPo13v5Ffb84tq/O43pMVu2rMelkMg+rOlbztnKyyrdqP5ExIGVilqxs7cdkTCXKl2rHsq9EAaavK2MIxr0yv2bVltU8rfLtxxxgjNiWrNpXY9LJruzD6lj1YTUmq3yrMRl8YjWmmNwr2/jVPnlSIwDpnp8l/DzCkdeAw2vAeNvw6i8CvF59+xg8AggggAACCCDg3wJqySAloJYaadhxiF7+x36vlilS1weOnK2v9RsxU52K7YPQzpy/rM/NNqfPhV+z/0C1vDmz6KKnzwfpvdnmVESbeXNmNbvsRXkMFQEEEEAAAQQQQMAbBAjwesNdYowIIICAJwswNgQQQCABBUIilkpQHzyqlv5xTOqDRtXwtu/9Vz/pu/fwCXUqZZ8uoPdqqZPQe2H62HHz9/YDOqt08fx6rzZliod/3oDqT507JtXfrv3hH1poK+tYhnMEEEAAAQQQQAABBNwpEG8BXncOmrYQQAABBBBAAAEEEFACavmO6FL5UoVUMZk3vpdersS2HEjmjOn0GvCXr16XBb//pcvYb9QHl6ogbvJkSaVyueKRl6o/V1IeT5dGVqzfLifOXIzMtx38tGiN3AkJlTIlnhLVhy2fPQIIIOBPAswVAQQQQCB+BQjwxq83vSGAAAIIIIAAAgiECyT4tl2T8HXK+42YISqYaxvQkeNnpevASfq0ab0XJIMR0NUnxkatdd/89Wr6A/869RsvJ89eMnLDv9TTw0MnzNMnbRuHt61P2CCAAAIIIIAAAgggEIcCBHjdgVukiAgJA3e8lmjDRMB7s6qlziskDLz3FczIEfB9AfUhfx+0qCPqKd46rQZIhfrd5MWmvaVig49FPcFbtEBu6dmhoRNE11b15bkyRUQt4VCubhd5qXkfeeaVznqN3xs3b0uj16pInRrlneqRgQACCCCAAAIIIBCdANdiK0CAN7Zy1EMAAQQQQAABBBDweoGeHd6USUM7S+VyxeTW7RAd2FVP6bZ+u5YsnNhH1LHjJNWyDbNHdpf+XZrIM8Xyy+HjZ+XshSDJnT2zDOzWTEb0ae1YhXMEEHCnAG0hgAACCCCAQBQBArxRODhBAAEEEEAAAV8RYB4IKIEFRpBWrdFbsUwRdWqaXq1WTtTavDt/G63X6T28eqIM7NrUNLhra0AFedUyDEsmB8qRPyfpepsWjJDWjV6SgIAAWzH2CMSNwMWLIsuXO6cD4R8MGDed0ioCCCCAAAIIeKoAAV5PvTOMK74E6AcBBBBAAAEEEEAAAe8SuHBBZOVK57Rvn3fNg9EigAAC8StAbwj4rAABXp+9tUwMAQQQQAABBBBAAAEEXBegBgIIIOCZAlfv3ZZNV086pZN3gj1zwIwKAQTiTYAAb7xR0xECCCCAgE8JMBkEEEAAAQQQQAABBOJRYFvwGWm+fY5Tmnt2dzyOgq4QQMATBQjwxvFdoXkEEEAAAQQQQAABBBBAAAEEEPB9AWaIAAIIJJQAAd6EkqdfBBBAAAEEEEAAAX8UYM4IIIAAAggggAACCLhVgACvWzlpDAEEEHCXAO0ggAACCCCAAAIIIIAAAggggIDvCzz6DAnwProhLSCAAAIIIIAAAggggAACCCAQtwK0jgACCCCAgIUAAV4LGLIRQAABBBBAAAFvFGDMCCCAAAIIIIAAAggg4F8CBHj9634zWwRsAuwRQAABBBBAAAEEEEAAAQQQQMD3BZihHwgQ4PWDm8wUEUAAAQQQQAABBBBAAIHoBbiKAAIIIIAAAt4qQIDXW+8c40YAAQQQQCAhBOgTAQQQQAABBBBAAAEEEEDAowQI8HrU7fCdwTATBBBAAAEEEEAAAQQQQAABBBDwfQFmiAACCS9AgDfh7wEjQAABBBBAAAEEEEDA1wWYHwIIIIAAAggggEAcCRDgjSNYmkUAAQQQiI0AdRBAAAEEEEAAAQQQQAABBBBAwBUB7wzwujJDyiKAAAIIIIAAAggggAACCCCAgHcKMGoEEEAAgYcKEOB9KBEFEEAAAQQQQAABBDxdgPEhgAACCCCAAAIIIOCvAgR4/fXOM28E/FOAWSOAAAIIIIAAAggggAACCCCAgO8L+NUMCfD61e1msggggAACCCCAAAIIIIAAAv8JcIQAAggggID3CxDg9f57yAwQQAABBBBAIK4FaB8BBBBAAAEEEEAAAQQQ8FABArweemMYlncKMGoEEEAAAQQQQAABBBBAAAEEEPB9AWaIgCcJEOD1pLvBWBBAAAEEEEAAAQQQQMCXBJgLAggggAACCCAQ5wIEeOOcmA4QQAABBBB4mADXEUAAAQQQQAABBBBAAAEEEIidAAHe2LklTC16RQABBBBAAAEEEEAAAQQQQAAB3xdghggggIALAgR4XcCiKAIIIIAAAggggAACniTAWBBAAAEEEEAAAQQQIMDLawABBBDwfQFmiAACCCCAAAIIIIAAAggggAACPipgF+D10RkyLQQQQAABBBBAAAEEEEAAAQQQsBPgEAEEEEDAlwQI8PrS3WQuCCCAAAIIIICAOwVoCwEEEEAAAQQQQAABBDxegACvx98iBoiA5wswQgQQQAABBBBAAAEEEEAAAQQQ8H0BZuiZAgR4PfO+MCoEEEAAAQQQQAABBBDwd4EjR0QWL3ZOp055ugzjQwABBBBAAIF4FCDAG4/YdIUAAggggAAC9gIcI4AAAghEK6ACuevXizimc+eircZFBBBAAAEEEPAvAQK8/nW/vXO2jBoBBBBAAAEEEEAAAQQQQAABBHxfgBkigECsBAjwxoqNSggggAACCCCAAAIIIJBQAvSLAAIIIPCfwInbV6Tm3987pf6HVvxXiCMEEPBpAQK8Pn17mRwCCCDg1wJMHgEEEEAAAQQQQAABnxcIvR8mJ25fNU3tdy8QxxR4cLnPmzBBBPxNgACv+NstZ74IIIAAAggggAACCCCAAAII+KOAf8057MEDWXXpiFP6vgkUagAAEABJREFU++op/4Jgtgj4gQABXj+4yUwRAQQQQAABBBBAwAUBiiKAAAIIIIAAAggg4EUCBHi96GYxVAQQ8CwBRoMAAggggAACCCCAAAIIIIAAAr4v4OkzJMDr6XeI8SGAAAIIIIAAAggggAACCHiDAGNEAAEEEEAgQQQI8CYIO50igAACCCCAgP8KMHMEEEAAAQQQQAABBBBAwH0CBHjdZ0lLCLhXgNYQQAABBBBAAAEEEEAAAQQQQMD3BZghAo8oQID3EQGpjgACCCCAAAIIIIAAAgjEhwB9IIAAAggggAACZgIEeM1UyEMAAQQQQMB7BRg5AggggAACCCCAAALRChRePVzMUrSVuIgAAh4rQIDXY29NXA+M9hFAAAEEEEAAAQQQQAABBBBAwPcFmCECCPi6AAFeX7/DzA8BBBBAAAEEEEAAgZgIUAYBBBBAAAEEEEDAKwUI8HrlbWPQCCCAQMIJ0DMCCCCAAAIIIIAAAggggAACCHiOQFwFeD1nhowEAQQQQAABBBBAAAEEEEAAAQTiSoB2EUAAAQQSWIAAbwLfALpHAAEEEEAAAQT8Q4BZIoAAAggggAACCCCAQFwIEOCNC1XaRACB2AtQEwEEEEAAAQQQQAABBBBAAAEEfF+AGbpNgACv2yhpCAEEEEAAAQQQQAABBBBAwN0CtIcAAggggAAC0QsQ4I3eh6sIIIAAAggg4B0CjBIBBBBAAAEEEEAAAQQQ8EsBArx+edv9edLMHQEEEEAAAQQQQAABBBBAAAEEfF+AGSLgPwIEeP3nXjNTBBBAAAEEEEAAAQQQcBTgHAEEEEAAAQQQ8HIBArxefgMZPgIIIIBA/AjQCwIIIIAAAggggAACCCCAAAKeKECA1713hdYQQAABBBBAAAEEEEAAAdcENm0S+ekn53T5smvtUBoBBOJTgL4QQAABjxEgwOsxt4KBIIAAAggggAACCPieADNCIAYCx4+LbN8usn27yPbtItu3i2zfLnLzZgwqUwQBBBBAAAEE/F2AAK+/vwKYPwIIeIYAo0AAAQQQQAABBBBAAAEEEEAAAd8XiIMZEuCNA1SaRAABBBBAAAEEEEAAAQQQQOBRBKiLQEII1P1nmpRbP8YpHbkVlBDDoU8EEIihAAHeGEJRDAEEEEAAAQQQ8EABhoQAAggggAACCLhN4EZYqFwLDXFKD+SB2/qgIQQQcL8AAV73m9IiAh4owJAQQAABBBBAAAEEEEAAAQQQQMD3BZihPwoQ4PXHu86cEUAAAQQQQAABBBBAIP4FfvhBZMQI53TrVvyPhR4RQAABBBBAwGcECPD6zK1kIggggAACCLhfgBYR8BaB46cvSO+vpslrrQZI8ZodpGiNdtKg/WfSb8RMOX/pquU07t9/ID8tXiv12w6SErU6SsEX2ug2psxdLvfCwizr3bx1R4ZPmi81m/WWAlVbS6nanaTxB1/KH+u2W9bhAgISFCRy8aJziua1hhoCCCCAAAIIIPAwAQK8DxPiekwEKIMAAggggAACCCSIgArQjpuxRJ5/q4dM+vF32bzjoKRKmVxyZMsk67fskwmzlkqNpr1k14FjpuPrOmiidA6cIBu37pfUKVNInhxZdBufDJ0irT8ZJap9x4rXb96WOq0HyBcT5hntHpd8ubNJQECArNywQ5p1+UrUeBzrcI4AAggggIA3Cyy/fFi++netSlHSgZuXvHlajB0BnxEgwOszt5KJIIAAAggggAAC/idw/8F9Wb5um6RMkVwCP2wsWxeNlE0LRsgfMwbJ5oVfS6Vni8rFy8HSsc84p2CtenL3h1/XSMb0j8nCSX3lr/nDdL31c7+UEoXyytLV/8jYGYudUANHzJQ9B09IuZIFdV/Lpg2UbYtHypwxPSVN6pTS/5tZ8s/OQ071/CuD2SKAAAII+JLA2svHZNKJzU7p+O0rvjRN5oKA1woQ4PXaW8fAEUAAAR8QYAoIIIDAIwokSZxYRvZvJ8umDpR2TWpL9qwZIlvMmS2jfNHzPX1+8OhpOXz8jD62bSbOXqYPA7s00cFafWJs8ud5Qob3aWUciUyc/ZvcDb2nj9VGBYt/XLRWP7E7un97yfVEJpWtU+VyxaRH2zf08biZS/SeDQIIIIAAAggggAACcS3gFQHeuEagfQQQQAABBBBAAAHvFciRNaPkzpHZdAJq+YQsGdPraxeDrum92pw5HyRq2YbH06WRui9WUFlRknqCVz2hq9bv3bBlX+S1NZt267V5X6xUyrTPN1+tIsmTJZVlf26V2yF3I+txgAACCCAQMwFKIYAAAgi4LkCA13UzaiCAAAIIIIAAAggkrECMe78TEipBV6/r8lkyptN7tdmx71+1k2IF80iypEn0seOmVLF8OmvLrsN6rzY79h9VO3m6yJN677hJ91gqKZQvhw4C29dzLMc5AggggAACCCCAAALuEiDA6y5J2kEAAQ8UYEgIIIAAAv4usHnHQR1sVU/4FsibPZLjxJmL+jhPjix6b7axXTt66lzk5ZNnwj9MxnYt8oLdQd6cWfXZ8VPn9Z4NAggggAACCCCAQFwL+Hf7BHj9+/4zewQQQAABBBBAwGcFHjx4ICOnLtTze+f16npv21y9dlMfpk6VXO/NNmlSpdTZV4PDy6qT4Ovhx2lSpVCnpsl2LSj4RuT1B8ZR6L37QvJvA+MlabwSnL/uW1xwNd+iGbHKVyOxumaV7+qYrMpbta/HpDYmyaqOVR+m+Ua7VvlW7RtVLL+s6lj14Wq+VftW+WqgVtes+lZ1VLKqZ5UfmzpWY3A1P7oxqXGZJas6rvZtVd6qffX+bzYelWdVx6oPd+Vb9RvdmKzq3Avz7/d1fq77zv1Xr39vTgR4vfnuMXYEEEAAAQQQiBMBGvV+gTDjH5zv9xsvazftkWeK5ZP33qoZZVI3b9/R58mTJtV7s03KFMl09o1bt/VebW7eCq+XLFl09cKDxjciyqp6YWEPJPhmKMnPDUKN1+V9I9rjmELvPRDHPHV+N/S+ab5V+VDjlwiqnmMKMzKML9O27hkXjC+na1ZthVqMydWxqqCQWb8qT32/qL1jims/qzEpP5Ucx6POreqEunhPrf3MXwNW49FjMjbGl8k9/e91pt6XbEkF7lT5UIvXj9UcVR2rcVi1Feqii1V5qzGp8aikxuaYrOpY9WF9T/5ztO/D6vV53yikk8n3vrvG5OpYrb7vjaGKlV+oxevj1p0wfrb5+c82X/n/N7b3RG/dE+D11jvHuD1BgDEggAACCCCAgAcKqH9Iq+DuvKXrRS2lMHVYV0mZPDxYaxtu6pThT+CGhIbaspz2dyI+JC1Jkv/W6E2dKrze3bsPr5c0SeLINgMCRJImSUTyc4NExgvBeCmIY0pkZBhfzvnGBdN8I9P4ciofYFHe6Na5rIjOM6rovVN7xgWnPBGx6iORRXkj27z9gADzfBExLkmAiFNKZFwwz3cuq8q5bUyqX5VEnMYUEBDgnCciiQLEPN+4YFxyumY1Vitvo1unNmztGl2YXrPPF/v/jIrGl1j3FWDaXoDRRoCxMb6crxudmeUb2c5ljXas5m9VPiAgwLSdgAAjXyWjzQDHZJFv1YerY0pk0b4ah1hds8hPZFQyvsQxWY7JqOBYVp0b2U5tRJevrhlDMq1j9fpInDjAX362MU8f/xluvGV49Vcirx49g0cAAQQQQAABBBBAwE5ALcvw8ZDvZf6yDfJElgwydVgXyZIxvV2J8MPHUocvvxASYh2ovXU7RBe2LbmgTtJE1LMFf1WeYzKrl9j4V3a61EmF5OsG0c8viREI0cETI4piv1fBf/tz23Ey4x/TtmP7vVX5pBbtq9effX37Y6trVm1Zjckq32qsVhZqbFZjsqpj1Ye7xmR8+4YHbB3umxqru8ZkOVZ33lO715P9+5YxLVFzsbrnVnNUdazulVVbvnCvrOZg5aSCsuo1pLwck1Udqz6sXidW+VbtWN03NT6ra1b3NHWKJPxs4+e7T7wG7N8XvfE4kTcOmjEjgAACCCDg1QIMHgEE4kRABXd7fD5FZv6ySkoWeVJ+mzpACufPZdqX7YPQzpy/bHpdZZ4+F35NPQWszlXKmzP8Q9lOnw9Sp6bpVESbeSM+bM20EJkIIIAAAggggAACCLhJgACvmyDjohnaRAABBBBAAAEEEIiZgAruqid3p/28Qq+5++PoTyRrJucnd22tlX26gD7cuvuIhN4L08eOm7+3H9BZpYvn13u1KVP8KbWTTTsO6r3jJvj6Ldm1/6jOtpXVJ2wQQAABBBCIRoBLCCCAwKMIEOB9FD3qIoAAAggggAACCCS4gC24O2P+KilbsqD8NKanpE+bOtpxZc6YTp4vX0IuX70uC37/y6nsrgPHdBA3ebKkUrlc8cjr1Z8rKY+nSyMr1m+XE2cuRubbDn5atEbuhIRKmRJPierDlu+mPc0ggAACCCCAAAIIIOAkQIDXiYQMBBBAwNsFGD8CCCDgPwKOwd0fRnYX2/q6D1No1+RlXaTfiBk6mKtPjM2R42el68BJxpFI03ovSAYjoKtPjI1ag7f569UkLOy+dOo3Xk6evWTkhn+t3bRHhk6Yp0/aNg5vW5+wQQABBBBAAAEEEEAgTgTCGyXAG+7AFgEEEEAAAQQQQMALBZat2SrqyV019M07Dkr+51tJtrJNTVPOCu+oYpHphf89LR+0qKOf4q3TaoBUqN9NXmzaWyo2+FjUE7xFC+SWnh0aRpa3HXRtVV+eK1NE/t5+QMrV7SIvNe8jz7zSWRp2HCI3bt6WRq9VkTo1ytuKs0cAAQQSXoARIBBHApfv3pLNV085pTN3rsdRjzSLAAJmAgR4zVTIQwABBBBAAAEE/FDAG6eslkN4lHH37PCmTBraWSqXKya3bofowK56Srf127Vk4cQ+oo4d21fLNswe2V36d2kizxTLL4ePn5WzF4Ikd/bMMrBbMxnRp7VjFc4RQAABBBDwSYG1Qcel2fafnNKCC3t8cr5MCgFPFSDA66l3hnEh4LkCjAwBBBBAAAGPEahXs4Kc2zwjRunUX1NNx/1qtXIyZ0xP2fnbaN3O4dUTZWDXpqbBXVsDKsirlmFYMjlQjvw5SdfbtGCEtG70kgQEBNiKsUcAAQQQQAABBLxZgLF7iQABXi+5UQwTAQQQQAABBBBAAAEEEPBMAUaFAAIIIIAAAgkpQIA3IfXpGwEEEEAAAX8SYK4IIIAAAggggAACCCCAAAJuFyDA63ZSGnxUAeojgAACCCCAAAIIIIAAAggggIDvCzBDBBBwjwABXvc40goCCCCAAAIIIIAAAgjEjQCtIoAAAgh4mcDhm5el9qYpTunLf9d62UwYLgLeIUCA1zvuE6NEAAEEEHioAAUQQAABBBBAAAEEEEDAEwRC7ofJv7eCnNKFkOueMDzGgIDPCfhfgNfnbiETQgABBBBAAAEEEEAAAQQQQAABJwEyEEAAAT8RIMDrJzeaaSKAAJOC1Z4AABAASURBVAIIIIAAAgiYC5CLgNsFJk8WmTjROd2/7/auaBABBBDwFYH55/eIY1pwfp+vTI95IBCnAgR445SXxhFAwIcEmAoCCCCAAAIIIBAzgRMnRI4edU4xq00pBBBAwO8ErobekZ77ljmlfgf/8DsLJuwRAl43CAK8XnfLGDACCCCAAAIIIIAAAggggEDCCzACBBBAAAEEPEOAAK9n3AdGgQACCCCAAAK+KsC8EEAAAQQQQAABBBBAAIE4FCDAG4e4NI2AKwKURQABBBBAAAEEEEAAAQQQQAAB3xdghgi4W4AAr7tFaQ8BBBBAAAEEEEAAAQQQeHQBWkAAAQQQQAABBGIkQIA3RkwUQgABBBBAwFMFGBcCCCCAAAIIIIAAAggggIA/CxDg9Ze7zzwRQAABBBBAAAEEEEAAAQQQQMD3BZghAgj4nQABXr+75UwYAQQQQAABBBBAAAERDBBAAAEEEEAAAQR8Q4AAr2/cR2aBAAIIxJUA7SKAAAIIIIAAAggggAACCCCAgAcLuCnA68EzZGgIIIAAAggggAACCCCAAAIIIOAmAZpBAAEEEPA0AQK8nnZHGA8CCCCAAAIIIOALAswBAV8XCA4WCQwUCQwUCQwUCQwUCQwUGTrU12fO/BBAAIFYC9x7cF8O3LzklE6GGO+psW6VigggQICX1wACCCSoAJ0jgAACCCCAAAJeK3D3rohjunfPa6fDwBFAAIG4Frh2L0Tqbp7mlHrtX2bZ9YLz++THMzud0s37oZZ1uOCZAowq7gQI8MadLS0jgAACCCCAAAIIIIAAAgi4JkBpBBBAIIrAF0f+lH4Hlzulq3dvRynHCQL+LECA15/vPnNHAAEEEEDAawUYOAIIIIAAAggggAACCCCAgBIgwKsUSL4rwMwQQAABBBBAAAEEEEAAAQQQQMD3BZghAn4sQIDXj28+U0cAAQQQQAABBBBAwN8EmC8CCCCAAAIIIOBrAgR4fe2OMh8EEEAAAXcI0AYCCCCAAAIIIIAAAggggAACXiFAgPeRbhOVEUAAAQQQQAABBBBAAAEEEEDA9wWYIQIIIOC5AgR4PffeMDIEEEAAAQQQQAABbxNgvAgggAACCCCAAAIIxLMAAd54Bqc7BBBAQAmQEEAAAQQQQAABBBBAAAEEEEDA9wXiY4YEeONDmT4QQAABBBBAAAEEEEAAAQQQsBbgCgIIuCjQ58Af8r/145zSxqsnXGyJ4gh4vwABXu+/h8wAAQQQQAABBPxGgIkigAACCCCAAAIIKIGbYXflSuhtp3TgxiWZf36PUzp087KqRkLAJwUI8PrkbWVSfi8AAAIIIIAAAggggAACCCCAAAJ+KLDxygnpuW+ZU1p/5ZhvajArBAwBArwGAl8IIIAAAggggAACCCCAgKnAiRMiI0c6pyVLTIt7aibjQgABBBBAAAHfFSDA67v3lpkhgAACCCDgqgDlEUAAAQQcBe7eFTl3zjldueJYknMEEEAAAQQQQCBBBAjwJgi7t3fK+BFAAAEEEEAAAQQQQAABBBBAwPcFmCECCHiDAAFeb7hLjBEBBBBAAAEEEEAAAU8WYGwIIIAAAgh4qcDF0Juy8Pw+p7TuCmv2eukt9cthE+D1y9vOpBFAAIGEEaBXBBBAAAEEEEAAAQQQQMCTBA7euCTd9y11SuOO/+1Jw2QsCEQr4IkB3mgHzEUEEEAAAQQQQAABBBBAIE4E1Hq7jilOOqJRBBCIEGCHAAIIIOAGAQK8bkCkCQQQQAABBBBAAIG4FKBtBOJBYMMGkcBAkcBAkcBAkcBAkcBAkXXr4qFzukAAAQQQ8ESBv66eEMe0+eopTxwqY/JzAQK8fv4CYPoI+JQAk0EAAQQQQAABBBBAAAEEEEDAROBMyDUZc3yjU9p+7axJaZGQsDB5d/tcp9Rp76+m5cmMZwG6iyJAgDcKBycIIIAAAggggAACCCCAAAK+IsA8EEAAAZvA6TvXZNTRjU5pe/AZWxH2CHitAAFer711DBwBBBBAAAEE3CRAMwgggAACCCCAAAIIIICA1woQ4PXaW8fA41+AHhFAAAEEEEAAAQQQQAABBBBAwPcFmCEC3iVAgNe77hejRQABBBBAAAEEEEAAAU8RYBwIIIAAAggggIAHCBDg9YCbwBAQQAABBHxbgNkhgAACCCCAAAIIIIAAAgggEFcCBHjjStb1dqmBAAIIIIAAAggggAACCCCAAAK+L8AMEUAAAbcKEOB1KyeNIYAAAggggAACCCDgLgHaQQABBBBAAAEEEEDg4QIEeB9uRAkEEEDAswUYHQIIIIAAAggggAACCCCAAAII+L6AxQwJ8FrAkI0AAggggAACCCCAAAIIIICANwowZgQQiFuBXTfOy/ZrZ51Swy2zpPDq4U5pc/CpuB0Qrfu9AAFev38JAIAAAggggAACfirAtBHwbYE5c0RGjHBO69eLrF3rnIKDfduD2SGAAAIIuE3g3W1zpNHW2U4pTO67rQ8aQsAVAQK8rmhRFgG/FGDSCCCAAAIIIICAFwqogO3FiyKO6fBhkaVLndPly144SYaMAAIIIICAOwVoy1sFCPB6651j3AgggAACCCCAAAIIIIBAQgjQJwIIIICASwJqiYavj64Xx7T7+nmX2qEwAlYCBHitZMhHAAEEEEAAgUcSoDICCCCAAAIIIIAAAgiIbLl6WsYf/9spHbh5ER4E3CJAgNctjDTyCAJURQABBBBAAAEEEEAAAQQQQAAB3xdghgggEEcCBHjjCJZmEUAAAQQQQAABBBBAIDYC1EEAAQQQQAABBBBwRYAArytalEUAAQQQ8BwBRoIAAggggAACCCCAAAII+KDA5dBbsjbomFPaw5q9Pni33TMlnw/wuoeJVhBAAAEEEEAAAQQQQCDBBO7cEfn8c+f05ZciI0c656uy9+4l2HDpGAEEEkaAXhHwNoFjt6/ImOMbndIPZ3ZK650/O6WRxzZ62xQZbzwJEOCNJ2i6QQABBBBAAAEEEPAIAQbhjQL374tcu+acbtwQUcns2oMH3jhTxowAAggg4EcCx29ekVFHNzqlfdcv+JECU3WHAAFedyjSBgII+KAAU0IAAQQQQAABBBBAAAEEEEAAAd8X8P4ZEuD1/nvIDBBAAAEEEEAAAQQQQAABBOJagPYRQAABBBDwUAECvB56YxgWAggggAACCHinAKNGAAEEEEAAAQQQQCAuBELC7kn3fUuc0udH/oyL7mjTiwQI8HrRzWKoPiXAZBBAAAEEEEDAiwVu3rojwyfNl5rNekuBqq2lVO1O0viDL+WPddu9eFbxOPSdO0W++MI5/fyzyIoVzmnr1ngcHF0hgAACCCDgVgG3NXZP7svC8/ud0vJLh93WBw15pwABXu+8b4waAQQQQAABBBBAIIEErt+8LXVaD5AvJsyTXQeOS77c2SQgIEBWbtghzbp8JeNmLEmgkXlRtyEhIlevily9KnL1qsjVqyJXr4Z/iJpZgHfLFi+aXGyHSj0EEEAAAQQQQCB2AgR4Y+dGLQQQQAABBBJGgF4RQCDBBQJHzJQ9B09IuZIFZdOCEbJs2kDZtnikzBnTU9KkTin9v5kl/+w8lODjZAAIIIAAAggg4D8CQw6vFrPkqsDqy0dN21kbdMzVpigfjwIEeOMROz67oi8EEEAAAQQQQAAB9wtcvBwsPy5aq5/YHd2/veR6IlNkJ5XLFZMebd/Q5+Nm8hSvhmCDAAIIIBDnAnSAgBKYemqrmKUuexdJo20/OKVjt6+qak5p67XTpu1sDz7jVJYMzxEgwOs594KRIIAAAggggAACCHi4wJpNu+VeWJi8WKmU5M6R2Wm0b75aRZInSyrL/twqt0PuOl1PwIy47frCBZGjR53TGeMfg2b5d+7E7XhoHQEEEEAAAQS0wL4bF0UFZx3TwZsXZfPVU07pzv17uh4b7xIgwOtd94vRIoAAAnEsQPMIIIAAAtEJ7NhvBDGNAk8XedLYOn+leyyVFMqXQweBt+w67FzA23Nu3xa5edM5LVsmMnGic1Lr6ZrlHzvm7RKMHwEEEEAAAa8WmHFquzTb/pNTOn0n2Kvn5a+Dj12A11+1mDcCCCCAAAIIIICAXwucPHNJzz9Pjix6b7bJmzOrzj5+6rzee+xGfdDZnj0ijulQNOsHjx8vMniwc1JteexEGRgCCDySAJURQACBaASC74XIH5cOOaU/rxyT9rsXOKWOuxdG0xqXYitAgDe2ctRDAAEEEEAAAQQQiBTwl4Pg6zf1VNOkSqH3ZhvbtaDgG5GX74U9kEvBIW5Jl09dlKB/Tzuly+eDXWr/itHO/RkzxTHd+/kXCRs4yDSFGvO4/0DEMYWE3nfKU2Xu3A1zKd+qndB75u3fNzoJM5Lx5dTPXYs6Vn1YjdWqvFX7ajwqmY3Jah5Wfbg8Jov7oF5/ZuNReVb39K5FWyFxfU+N15fVeK3M3eVndX/U/VRJeTkmqzqujsnqXlvdBysjNT6re2o/psg3J+PggWGu6ln1ZTVHVcdqHFZt2Y9B1bclq/lblbcak7pPKtnatd9b1bHqw9UxWb0+9XiMgRhfTu9T7hqTq2O1eo2oMbp8T+P6PcEYlDaMeJ0ap5GOVubxcU+txhTX99Tqe8vqvikvq/tt1ZbV62nXlfNSbu1Yp9R152LpuOtXpzTowCpZcfGIU/rj4mHZduGCbD5/zim13faLU/uqz0UnD7n0/3FOBt1walv1t+vCRct2jLdDr/4iwOvVt4/BI+B1AgwYAQQQQAABrxa4eSt87dhkyZJaziNliuT62o2IsvokLEzSTv/OKT02Z5a+bLZJeuiAJN+13Sml/n2JpJ84xiklO7DXrBlJdPWKUxuq3SSnTpiWV5kBt26JWVLXSAgggAACCCDgfwL3jSlfvXdHHNOt+6HGFdMvy8xOB+dLk72znNKlsNtO7av+jty+LEuC9jmlw0a+WSf7bp13alv11+vob9Lm4Dyn1OnQArNmvCqPAK9X3S4GiwACCCCAAAIIIJCQAqlThT+5e/eu9T9m7kR8uFrSJIn/G2rixHKtWUundL1h4//KOByFFigkISVKOaUbbzSSoE/6OaWQkqUdWgg/vZ/+cac2dLulyji1odq92q6zab66Fty6o+m1643fMc2/0eBtl/Kvv9nEtHxwqw6m+UEf9ZIrnT4yvXateSvTfGWu5uKYrFytxnTtndam7V/p/LFc6drT9Fpwi7am+dcbNTPNt/KzmsO1Ju+atqPvaY++ptesbK9Z3NPrrt7Tt5s/pF+H13L3PnL1/a6mda41fc8033JMFt8r199qatpO8LttTPOvdPlErnzYw/Sa5T216OPG62+ZtmN1r681M5/z1Y5dJMjqnlp9n0bci0qt+si6Kp9EpvXlP5QNpTvK6AL19V4d26eZRd42zV9bqoPMK97c9NrYguZtfZnvFdPyn+erbZo/4qnXTPOnFHrLNP+Pkm1k2dOtTK99X/hN0/wmxdQjAAAQAElEQVTh+V81zbca01f5zecwseAbpu38WuI9Wf1Me9Nr04s0Ns3/pkAd0/yhFn1/bpE/qkBd03Z+KGrer7rv84o1M60zruDrpvlD85vfOyu/r58yn9t0i9fZylLtZJFhqMbmmCYWamA6Jqt7NNTi9Tfc4nX2feGGpu0vLdFSlpdqY3ptcmHz16bVvD+z8rPIH2vxvTXX4r4psx+LNjEd6+iC9UzzrZw+txjTqALm7cy2eH2rMf1S4l3TvicUMH+dNcn6jNTOUMQpPZUyo5j9V/qxnKbtq/eBb43vVcekvlfM2vGmvETeNFjGigACCCCAAAJ+KsC0EfAQgTSpU+qR2IK4+sRhc+t2iM6xLdWgT9gggAACCCCAAAIIIBBHAgR44wiWZhNGgF4RQAABBBBAAIG4FMibM/zD1U6fD7Ls5tT5y/pa3ogPW1MnSRIHSKZ0yUkY8BrgNcBrgNcArwE3vQb4ucr/r3Dna0D9/zVvTgR4vfnuMXYEEEAAAQQQQACBeBUoU/wp3d+mHQf13nETfP2W7Np/VGfbyuoTNgklQL8IIIAAAggggIDPCxDg9flbzAQRQAABBB4uQAkEEEAgZgLVnyspj6dLIyvWb5cTZy46Vfpp0Rq5ExIqZUo8JZkzpnO6TgYCCCCAAAIIIIAAAu4WIMDriihlEUAAAQQQQAABBPxaQK3B2/z1ahIWdl869RsvJ89eivRYu2mPDJ0wT5+3bfyy3rNBAAEEEPBSAYaNAAIIeJEAAV4vulkMFQEEEEAAAQQQQCDhBbq2qi/PlSkif28/IOXqdpGXmveRZ17pLA07DpEbN29Lo9eqSJ0a5RN+oIwAAQQQQAABBBBAwC8ECPD6xW1mkgggkMACdI8AAggg4EMCyZMlldkju0v/Lk3kmWL55fDxs3L2QpDkzp5ZBnZrJiP6tPah2TIVBBBAAAEEEEAAARcEEqQoAd4EYadTBBBAAAEEEEAAAW8WUEFetQzDksmBcuTPSXJu8wzZtGCEtG70kgQEBHjz1Bg7AgjEiwCdIIAAAggg4D4BArzus6QlBBBAAAEEEEDAvQK0hoAXCJw6d1k++uw7qfJmD8lXpaU898ZHen3ioyfPuzz6kVN+lWxlm0abDh0743K7VEDA3wXc+X3q75bMHwErgS27Dsu7H42QcvW66J+H1Rp/KoNG/SDB129ZVbHMz1upRbQ/Czv2HWdZlwv+KUCA1z/vO7P2MQGmgwACCCCAAAIIJITA3kMnpNrbPWXG/FVy4swFKVogt1wKuiZzlqzT+Zt3HHRpWEFXr7tUnsIIIPBwAXd/nz68R0og4H8CP/y6Rl55L1B++3OLXL9xW4o8lUuOHD8ro6ctkpff7SuXrlyLMcq1G7fkTkioZXkuIGAmQIDXTIU8BBBAAAEEEEAAAQQQiFbg/v0H0rrnKFH/EG3+enXZ+8d4WfRdP9m7fJxen/h2yF1p2WOkqH20DdldtAV4Jw3trJe9UEtfOKYCebPb1eDQQoBsBLRAXHyf6obZIIBApID6i5Vugyfp82G9Wxk/D8fJ4u8DZcfS0fJ6refk3xPnpMuAb/X1mGwuXwn/ZWfxQnksfxaOGdA+Jk1Rxo8ECPD60c1mqggggAACCEQV4AwBBBCIvcDva7fqp5MK5cshn3VvLqlSJteNJUmcWNT6xK9UKysXLl+VGT+v1Pkx2VyOeMIpc4Z0MSlOGQQQeIhAXHyfPqRLLiPgdwJT5i6XsLD70qTeC9KkbtXItfjTp00tw3u3luxZM8gf67bL7gPHY2RzKShYl+NnoWZgE0MBArwxhPLrYkweAQQQQAABBBBAAAEHgRUbduicN1+pLCqoq0/sNuofuep08arNahejFBQc/tRSlozpY1SeQgggEL1AXHyfRt8jV71egAm4LLAy4udhk7rPO9VNkTypNHi5os7/deUmvX/YJij4hi5CgFczsImhAAHeGEJRDAEEEEAAAQQQQAABBMIF1HbnvqNqJyWLPKn3jpuyJQvqrG17/pXQe2H6+GGbyxF/lpolI0/wPsyK6wjERCAuvk9j0i9lEPAXAbVMkfrwT/WLzpJF8plOu1TR/Dp/6+7Dev+wzeWI9egz87PwYVRctxMgwGuHwSECCCCAgFsFaAwBBBBAwIcF1JqDanp5c2VTO6f0WOqUkunxtBJyN1ROnL7gdN0s4+LlYP00cJ9h06VhxyHSqNNQ+eiz72TcjCWycet+syrkIYBANAJx8X0aTXdcQsDvBGzfY3lyZpHEic1DbHmNawrm6IlzavfQZFuPfsfef6VZl6/0z8MWH38tQ8bN0R9i6soHtj20Mwr4jID5qy9ep0dnCCCAAAIIIIAAAggg4E0CDx480B+upsacJlUKtTNNj6VJqfOvRPy5qT6x2NwJCZXESRLLvbAwmbXwT1m7aY+s/muXzJi/Svp/M0vqtx0k7XuNifHTwBbdkI2A3wjExffpo+PRAgK+JRB8/aaeUHQ/C9MYv/BUhc5evKJ2D01hYfd1mXX/7NVr96qfh0tX/yPffL9AOvUbL1Xf+kTWbd6jy7BBwCZAgNcmwR4BBBBAAAEEEEDAMwQYhccLBF+/FTnGZMmSRB47HqRMEf7Bazdu3XG85HSu1incvGCEzBvfSxZ9108OrPxW9vwxTpZM6a8/tEZVmP/7Run/9Ux1SEIAgYcIxMX36UO65DICfidwM+LnW7JkSS3nniriZ6EK3Kq/arEsGHHhgxZ1ZNm0gfrn4fq5X8qxdZNlw7yvZFT/dpI7R2ZRT/CqJ3pPnL4YUYMdAiIEeHkVIICA1wowcAQQQAABBBCIO4HDx8+KYzp17rLuMG2aVHqvNnfv3lM703Qn5K7OT2LxZ6v6ot3m8XRppGKZIvLs0wUk3WOpJGP6x6R0sfwyrHcrGdi1qS4545dVEpMngnVhNgj4sUBcfZ/6MSlTR8BJIHWq8L9iuXs31OmaLeN2xM9CdZ48mkCwum5Lan179fMwf54nRP0CNF/ubNKwdiX5Y/pgHeS9fvO2TP15ha24X+yZZPQCBHij9+EqAggggAACCCCAAAJ+J3DrdohUavCxU/qw/wRtkShRgNj+UWsL4uoLDpsbN8Of3LX9earDZZdOW771kv5H7p2QUNlz8LhLdSnsNwJM1E4gIb5P7brnEAG/ELD9fLtjF8R1nLjtKV+1Nr3jNVfP1S8/m9WvpqupNXr1ARsEDAECvAYCXwgggAACCCDgTwLMFQEEHiaQKFEiqVn5GadUsmi+yKr5c4d/uNrpiKd6Iy9EHKgnli5cvqrPCuTNrvePsklkBJWfimjn+s3bj9IUdRHwG4H4/j71G1gmikCEgO3n2/HTF+T+/QcRuVF3p89f1hnqaVx98IibJ3Nl1S3ws1AzsIkQIMAbAcEOAScBMhBAAAEEEEAAAT8VUH8OOm14N3FMfTo1ihRRyyiok7+3H1A7p7Rxyz6dV+SpXJFP++qMR9hcuBSsa2fLnEHv2SCAQPQCCfF9Gv2IuIqAhwrEcljqqVz1c+5OSKhs3/evaSt/b9uv80sXz6/3j7q5FHRNN5Et8+N6zwYBJUCAVymQEEAAAQQQQAABBBBAwCWB16qX1+V/XLRG7oWF6WP7zcwFq/VptedK6r395sSZi5ZPOtmXsz+es2SdqCeCs2fNICUK57G/FG/HdISAtwk8yvept82V8SKQUAJ1X6ygu561IPznnj6J2KjA79yl6/XZC/+L+vMw9F6YnL0QpK/FdKP+Ombazyt18efLl9B7NggoAQK8SoGEAAIIIICA+wRoCQEEEPALgf+VLixlSxaUA/+ell5fThO1bq+auAr2Tpi1VBav3CwpkyeTFg1fVNmRafzMJVKubhd5qXkfuRv63we0TZ6zXEZ894tcvnpd7P8LCr4hE39YJj0+n6yzu7V+XZIkTqyP2SCAQPQCsf0+jb5VriKAgL1As9eriVqLd8b8VaJ+ufngQfhSDVev3ZSugybKmfNBUrRAbqlR8b8Ab/D1W1K5YXcpW6eLqF9g2rfX5IMvZc2m3fZZEhZ2XzbvOCjNugyTvYdOSMEnc0ijOlWilOHEvwUI8CbY/adjBBBAAAEEEEAAAQS8W2DMgPaSNVN6mTpvhRR9sZ282rK/FK3RXvqNmKkn9ln3dyRntoz62Lb58+/wf7TuOnBM1JqFtvxrN27J0PFz5elaHeXld/tKw45D9Ie8Fa3RTvoMmy6379yV95u/Kk3qVrVVYY8AAjEQiM33aQyapYhLAhT2ZYGM6R+T8YM7SkBAgHQbNEmKvtheXnkvUEq+/L78/NsGUR+MNrp/O33d5rD/yEk5duq8/guY1X/tsmXrvfo5+WbHz6V4zQ7SoMMQqd92kBSs1kZeazVA1m3eI2ot3wmfvS+pUiTX5dkgoAQI8CoFEgIIIIAAAggggAACCS3ghf3nzp5ZVsz8TFq/XUvy5swqu/YfExWoLV38KZk9sru8Xed5p1lVKVdc5xUvlEfy5Miij9XmnTeqS492DeS5MkXk4NEzsnbTHlFPP5UrWVA6v/uarJo9RHrbrQGs6pAQQODhArH5Pn14q5RAAAF7gRoVS8nKWZ9JvZoVJG2aVLJ19xH9VyqvVisnS6cM0E/w2pcvnD+XqO/NxIkTSdUKUZdamPnNR/LGyxUlXdrUOqD7z85Dkj1LBnmtejkZGdhW96PW/bVvj2MECPDyGkAAAQS8TIDhIoAAAggg4EkCmTKklYFdm8rqHz6X4+sny7nNM2TJ5EB54X9Pmw6zfdPauszyGYMlWdIkkWXSG/+Q7dKynswZ01OO/DlJl9n9+1hZOKmvfNrxLSmcP2dkWQ4QQMA1AVe/T11rndIIIKAEVNB1/OD35e9fhsvZTdN1mjS0s+TLnU1djpLUU72bFoyQ039Nk4a1K0W5ptbWHTOgvayf+6X+WXhy41RZO+cLmfh5Z3nzlcqSPFnSKOU58W2BmM6OAG9MpSiHAAIIIIAAAggggAACCCCAgOcJMCIEEEAAAT8XIMDr5y8Apo8AAggggAAC/iLAPBFAAAEEEEAAAQQQQMAXBQjw+uJdZU4IPIoAdRFAAAEEEEAAAQQQQAABBBBAwPcFmKHPCBDg9ZlbyUQQQAABBBBAAAEEEEAAAfcL0CICCCCAAAIIeLYAAV7Pvj+MDgEEEEAAAW8RYJwIIIAAAggggAACCCCAAAIJIECANwHQ/btLZo8AAggggAACCCCAAAIIIIAAAr4vwAwRQCC+BAjwxpc0/SCAAAIIIIAAAggggICzADkIIIAAAggggAACjyRAgPeR+KiMAAIIIBBfAvSDAAIIIIAAAggggAACCCCAAALOAr4W4HWeITkIIIAAAggggAACCCCAAAIIIOBrAswHAQQQQCBCgABvBAQ7BBBAAAEEEEAAAV8UYE4IIIAAAggggAACCPi2AAFe376/zA4BBGIqQDkEEEAAAQQQQAABBBBAAAEEEPB9AR+cIQFeH7ypTAkBn9HBEwAAEABJREFUBBBAAAEEEEAAAQQQQODRBKiNAAIIIICAtwgQ4PWWO8U4EUAAAQQQQMATBRgTAggggAACCCCAAAIIIJCgAgR4E5Sfzv1HgJkigAACCCCAAAIIIIAAAggggIDvCzBDBOJfgABv/JvTIwIIIIAAAggggAACCPi7APNHAAEEEEAAAQTcJECA102QNIMAAggggEBcCNAmAggggAACCCCAAAIIIIAAAtEJEOCNTsd7rjFSBBBAAAEEEEAAAQQQQAABBBDwfQFmiAACCDgJEOB1IiEDAQQQQAABBBBAAAFvF2D8CCCAAAIIIIAAAv4iQIDXX+4080QAAQTMBMhDAAEEEEAAAQQQQAABBBBAAAGvFohRgNerZ8jgEUAAAQQQQAABBBBAAAEEEEAgRgIUQgABBBDwPgECvN53zxgxAggggAACCCCQ0AL0jwACCCCAAAIIIIAAAh4iQIDXQ24Ew0DANwWYFQIIIIAAAggggAACCCCAAAII+L4AM0xIAQK8CalP3wgggAACCCCAAAIIIICAPwkwVwQQQAABBBBwuwABXreT0iACCCCAAAIIPKoA9RFAAAEEEEAAAQQQQAABBGImQIA3Zk6U8kwBRoUAAggggAACCCCAAAIIIIAAAr4vwAwRQCAaAQK80eBwCQEEEEAAAQQQQAABBLxJgLEigAACCCCAAAL+J0CA1//uOTNGAAEEEEAAAQQQQAABBBBAAAEEEEAAAR8RIMAbzY3kEgIIIIAAAggggAACCCCAAAII+L4AM0QAAQS8WYAArzffPcaOAAIIIIAAAgggEJ8C9IUAAggggAACCCCAgMcJEOD1uFvCgBBAwPsFmAECCCCAAAIIIIAAAggggAACCPi+gGfMkACvZ9wHRoEAAggggAACCCCAAAIIIOCrAswLAQQQQACBOBQgwBuHuDSNAAIIIIAAAgi4IkBZBBBAAAEEEEAAAQQQQMBVAQK8ropRHoGEF2AECCCAAAIIIIAAAggggAACCCDg+wLMEIEYCRDgjREThRBAAAEEEEAAAQQQQAABTxVgXAgggAACCCDgzwIEeP357jN3BBBAAAH/EmC2CCCAAAIIIIAAAggggAACPidAgNfnbumjT4gWEEAAAQQQQAABBBBAAAEEElbguTc+kmxlm8qnX05N2IFE0/uyNVulfL2u8vX3C6Ip5RmX1m3eIx37jpMaTXtJviotpVrjT+WToVPkxOmLkQO8FxYmo6ctkqYffiWlX+0shaq1kQbtP5MxRl5kIR87YDoIIOAbAgR4feM+MgsEEEAAAQQQQAABBOJKgHYRQAABU4HxM5fI8dMX5PNxcyT0XphpGU/I/HXFJmnQYYjMW7pedh84Lrduh8jeQydk9sI/JVOGtJFDbNn9Gxk06gdZvn67nDkfJMHXb8m6f/bK/iOnIstwgAACCHiiAAFeT7wrjAkBBBDwSgEGjQACCCCAAAIIIOBPAlXKFdfTrfZcSUmaJLE+tt+cPHtJhk+aL0eOn7XPjtfju6H3Ip+CLlogt8wd96n8u+Y7WTCxjwz9pIWkSplcj2fp6n9EPZGsTpq9Xk02/jxM9i4fL2MHdpBWjV5S2QmWNmzdpx3VXBJsEHSMAAIeLRD/AV6P5mBwCCCAAAIIIIAAAggggAACCCAQE4EuLevJuc0zZNY3H5sWX/DHX/LFhHny78nzptfjI3OjERy9eDlYd9W389tS6dmiOqhbvlQhafRaFZ2vNr/9uUXtJHf2zDKk+zvyZK6skiFdGnm91nNSssiT+lpCbcZNX6wdQ41gdUKNgX4RQMCzBQjwevb9YXQIIIAAAggggIDPCzBBBBBAAAHfFFi1YUeCT8x+jd3oArWnzl7SYy1eKI8kSez8NLK+mACbW3dCZO3mPQnQM10igIA3CRDg9aa7xVgR8G8BZo8AAggggAACCCCAAAJeInDizEX5a/uBBB/tzdt3IsfwWJqUkceOBzdvh+isNKmsy+gC8bxZtGKT3AkJjede6Q6BBBdgAC4KEOB1EYziCCCAAAIIIIAAAggggAACCS/wv9e7SbayTfWHZanRnLt4RfqNmCkvvN1T59do2ktlR6awsPvyx7rt0nfEDGnQ/jMp+EIbKV6zg7zYtLeud/3m7ciy6kB9wNYT5Zrptr75foHKckpqTdQiNdrpMnkrtRD1tKVTISNj4uzfdBnVnmrXyHLL1/37D2Th8r+lebfh8r/Xu4kag9q36jFS/vx7V4z6+GfnIek6cKK8/G5fyVelpdR+t58+37h1v67/7azwsff8Yoo+t9+oeuoeVG3UMzJbLYeg8iu+8ZEoc3WhWZev9PxVWZXUdZXvSroSfEOvQ6vGp+5diVod5fV2g2XEd7/I+UtXozSlPvBtytzl0uLjr+XLb3+OvJazwjuR43jlvUA5duq8/oC42sact+/9V5f7afHayDJqrJPnLNf59htXxmJfz3a8dfdh6f/NLHm1ZX/9GixQtbV+3ar7NnXeCl1s5/5j0qjTUOkcOEGfq03+51tFGduPi9aqbBICCCAgBHh5ESCAAAIIIICAbwswOwQQQAABnxa4GBQsKzbskOff6iETZi2VfYdP6vnmyJpR79XmzPkgKf5SB1GBRhWwXPfPXrl245ZcunJNdh04puup+vaBwnSPpZIKzxRS1WX9ln1677hZb7Sjgn0qXz1ludIYhzp2TKo/lVf26QKi2lXHj5rUE7KvtxskbXqOkt/XbJWjJ8+LGoPaL1q5Sd56f6g0/fAruXz1umVXyqJem0Eya+Gfsm3Pv3Lrdohs3XNEn9dvO0gm/fi7HD99wbK+2YXt+47q+irIanY9NnkqMF+5YXe9Dq0an7p3KpC8wbgvQ8fPlZrNeuvx29pWwfpPhk6Rpav/kZu37tiyo+wDAgJErbv7tRG8V21GuRjNiatjsW9KBeTVLyFqtwiUcTOWiAquq9egGq963ar7psak6iz44y9Z/VfMgvSqPAkBBPxbgACvf99/Zm8nwCECCCCAAAIIIIAAAgh4n8Df2w9K209HS+JEieTjNm/I1GFdZe64T6XVWy9FTiZ71gz6w7XUdXXt71+Gy/H1k+XPH4dKt9b1dTkVBO43YoY+tm2qlCuuDzftOKCDp/rEbvPHum36TH0glzpYuX6H2kVJ98LCxPY0bNUKJaJci+3JjZu39VPIf207oAPGEz/vLJsXfi3H1k2WZdMGSrsmtSVpksSyfP12aWQEetWTxo59qWCieppZja9w/pyi2ji0eqIom++GfiA1q5SW3l9NkwXL/3KsGu35i5VK6Q9eW/3DkMhy00d8pPPUB7KpNLxPa4npf39vPyAqMK8CoZXLFZP5E3rLwVXfyl/zh8k3/drKU3me0E/wtuzxtdiC2RnSpYnsL/DDxpFdnfpramT+ou/6aSc1HpVKFc2ny735SuXIMiq/RcMaOl9tYjMWVc+WRk39Vf8yQZ0/awT7lfPO30br+SyY2Ec+ad9Q3nuzprosfTo10uMY0v1dfa42R/6cpPPUuFR669XKKpsUCwGqIOBrAgR4fe2OMh8EEEAAAQQQQAABBBBwhwBteInA8Enz5YnMj8vvMwbrYO1LRmCy0rNFRQUD7aegApgqmKuu5cmRRZInSyqF8uXQQeFWb4UH1X5fu00ePHgQWU2VVSd3QkLln12H1GFkUuXUk7Mqo0WDF9VOVP2wsPv62LbZuvuIflpYnVcuW0ztHjmpp1bVE7wBAQEye1QPea16Ocn1RCZJkTypqA8SU0HNGV9/pPtRTyirp0X1ScRGPUn61bfz9ZkyWDCxr27jsdQpRdm8Uq2sTPmyi6iA9KWga7pcQmyUcY/PJ+uu/1e6sPw0+hNR+7RpUknenFlFBThnjeyuPxTtzPkgmTBziS4bF5tHHcupc5f1chBqbC9XfVYHqpVzlozpRc2nfKlC8uF7dUUFyFUZEgIIIOCKAAFeV7QoiwACCCCAgJMAGQgggAACCCCQ0AIjA9tJzmwZYz2M58oU1XXVEgVnLgTpY7UpXfwp/YSsOlbLAai9LW3bc0RU0C6NERRtUq+qpEyeTC/54BgIttVTSzOo9mz1Y7tXwWa1TqyqX6dGeSldLL86dErPly8hDWtX0vkzf1kVJXC999AJ2X8kfCmLj9u+ETlHXThikyhRgHRtVT/iLGF2m3ceMsZ5Snf+UZs3JCAgQB/bb3JnzyzVnntaZ/26YpPex8XmUcfyy+8bI+/BZx83109Yx8U4aRMBBPxTgABvfN13+kEAAQQQQAABBBBAAAEEEHC7gApwPlMs/M/rY9t4lozpIqteuXoj8jhx4kRStUJ48HDj1n2R+epg2ZqtaqcDrKlTpZBnSxbQ58vXbdd722bd5j368IX/PS2qPX3yCJt/dh4U2we11X2xQrQt1Xq+jL6unvZVH9qlT4zNgX/Dg6ZJEieWGhWfMXLMv54xgsdqqQfzq3Gfu2bTbt2JGuezJZ7Sx2abYgXz6Oxjpy7IvbAwfezujUtjMTp3HMuav8PnotZ1fiJLBqMEXwgggID7BAjwus+SlhBAAAEEEEAAAQQQiLEABRFAwD0CT+XNHqOG1BquX038Weq1GSgVG3wshaq1kWxlm+r0asv+lm3YllXYvONQlA/sWrYmfP3dV6uX1XVrVgoPlKoP4dIZxkY9EazWyTUOpUp596y/a/9BcGptYdW2VcqVPXPkpTPnL0ce7z8SHuDNkimdXtYh8oLDgQruZrf7sDqHy3F+apurCtrmqdhC3yvbPbPfj/juFz0WtYxCUDQfKqcLxXLzqGM5d/GK7jlHtkx6zwYBBBBwpwABXndq0hYCCCDgfgFaRAABBBBAAAEEEIhGIHWq5NFcDb80Y/4qKfPqB/LVtz+LCrievRAkmTOk0x+8ptbqtX3AVnjpqNsXIv78XwUZN27bry8eOnZG1BIHAQEB8mr18jrvpSpl9F7lnzh9UR+r8qqeOqnqpgDv1es3VXM6ZbZ78lhnOGzUmrq2rKDg/55MVktLqPzUKVOoXbRJLS0RbYE4vHjt+i2XW793L+oayC43YFHhUcdy5Vq4f0zMLYZANgII+L5ArGdIgDfWdFREAAEEEEAAAQQQQAABBBDwdIGVG3bIx0O+l5C7oaKWLFj0XT/5d813sm7ulzJ33KcyZ0xP6dP5bctp5MiaUX8Ymxj/rdu819iK2D5c7bnShSVDujQ6L3eOzFKiUF59vGxt+PINazeFL89QtEBuyZ7VPX+Wnzrlf0HZGzfv6P6sNlev/RcMTpXyv0B45oxpdRXbU6X6xGJzNzRuljyw6C5Kdvq0qfV5ZiOQfW7zDIlJcpez7thu86hjeTxt+Ovk+s3bdq1yiAACCLhHgACvexxpBQEEEEAAAQQQ8CwBRoMAAgggoAUmz/lDf7hVricyydhBHeTZp8PXytUXIzYXLwdHHJnvqpQrri9s3X1Y71dt3Kn3tqd29YmxqV6xpLEVUUFldbBpx0G1k+fLh0Ac6eQAAAtESURBVNfXJ4+4sV924dip89G29u+Js5HXcxqBattJrifCl25QwcYbDwk4XrgUvrSArW587rNkTK+7U/fnchwtvaA7iMHmUcdiW+f5yPEzMeiNIggggIBrAgR4XfOiNAI+J8CEEEAAAQQQQAABBBDwZYHt+47q6ZUrVUhSpfjvKVadGbHZdeBYxJH5rlLZYvrC1t1HRK3Fun5L+AeuvfR8aZ1v29SoWEofqgDwmfNBsjUiIGwLEOuLj7gpU/wpSZk8mW7F9sFd+sRkszbiA97SpE4pzxTPH1kilxHstp38sX677dBpr1zsl3ZwKhBNRqJE/4Ub7t+P3bIJ5UoWjOxh/rKNkccJcfCoYykd4a8+7E4tERLTOSROHBBZNCyWjpENcOD3AgD4rsB/77i+O0dmhgACCCCAAAIIIIAAAgggEDMBnyuVMX34cgQXLl81nZv6wDH1lK/pxYjMSs8WFfWBY2o93R9+XaOfCH66cF7JkyNLRInwXZkST8kTWcKXYpg6b7nOVMHY58oU0cfu2KRInlSavVFNNzXt5xWyZVf4U8U6w26zzgjuqrGqrLdfqyJJEidWhzqp+diWMhgx6RdRT8jqC3ab+/cfyBfj59rluHaYKUO6yAqnzl2KPHbloFLZopIvdzZdZcSk+abj1BfjYfOoY3nj5UqRo/z0y2miXkuRGdEc2F6/qsips7FzVHVJCCDg2wIEeH37/jI7BBBAAAEE4kiAZhFAAAEEEPAOAduyCWo93LHTF0tY2H25G3pPf0ja6GmLpG7rAZIiWdJoJ5M6VQop/0xhXWb2wj/1vmaVqE/vqsyAgACpUSn8Kd55S9erLKloBIeTP6R9XdCFzUetX9frAofeC5O3Og2VoUYgdveB43I75K6oJ0QHjvpBmnb5SreoAqTdjPL6JGKjnuj9tMNb+uzg0dPy8rt9Rc1LPZ2sMvccPKHr/7Fuu6RNk0pluZzU2sQFn8yh602YuVRUP+rkwYMHcjKGgcqAgAD54pMWqpqoJRpeeLun/LR4rRw9eV7fQ3Xh9PnLsnjlZun5xRRRH6an8uIiBQQ82lgK5csh7ZrU1kNbuvofadD+M1G+VyI+/E6thzxs4nxp1WOkLmPb2J78Vef9v5kttnWVQ+6GitUvLVRZEgII+JcAAV7/ut/xP1t6RAABBBBAAAEEEEAAAQQSUOCDFnWkbMSf+g8YOVtyVGguuZ97V6o26imDjECoCt7+MPoTyZQh/Elfq6FWNgK16tqxiHVvXzIJ8Krr1Z8rqXZy6txlvXfn8gy6QWOjgq5zx34qz5cvIWoN3RHf/SI1mvaSJyu9JzWb9ZYxRuD6TkioVC5XTH4e30tsHxBmVI38alC7ogzo0lQ/2avG2mXgRCn58vuSrWxTqd7kU72O8MBuzSR/nvAnaCMrunDwacc3JSAgQE6cuShV3uyh236iXDPpPuT7GLdSqWwxGdW/naig9KUr16Rz4AT53+vd9D1UYy3z6gfSssc3MnnOch3gjnHDsSj4qGP5pH1DUe6q67+2HZBmXb6SIjXaaZdStTvJl9/OkyvB19XlyKSeCG/XJDww/Offu6Rw9ba6fJ6KLYyg/JrIch5xwCAQQCDBBAjwJhg9HSOAAAIIIIAAAggg4H8CzBiB+BYID4b2lG6t6+uApzpXY1BPVHZo9oqsmPmZqOUWShd/SmVbJhUstV18MldWKVEor+00yr5K+eKillGwZapz27E795kzppMfR/eQEX1aO42ldLH8On/OmJ6SLfPjlt22aVxLfvm2tzSpW1WeKZZPL0OhClcsU0Tmju0prRu9JCpQrPJik2o9X0b+mD5IWjSsIUUL5NZNJE+WVMqafNCdvmixaVi7kvz54+fSp1MjUQF05W9bciJ3jsxSp0Z5+erTltKkXlWLFtyX/ShjUa+L0f3byw+jesh7b76ozW2vx5zZMkqj16pIp3frOA028MPGMuGz9/U8VTlVQH3oW5GncqlDEgIIICAEeHkRIIAAAgh4ogBjQgABBBBAAAEEohXY+PMwObd5hgzp/m605dRFFVT8uM0bogKeB1d9q+v9+eNQ6dv5bXk8XRpVRKYN66rzixfKo88dNyoArPpTSfXteN12rj7I7di6ybotVbZw/py2Sy7tN8z7Srfx2cfvRFvv7TrPyx8zBumyqj+VlkzpLyo/2ooRF581gq3DereSpVMGyMmNU3U788b3EvW0qipy716Y2kniRM7hg+FGcFn1t/qHIbqM2UZ5qnu0ctZnuu3j6ydL11b1zYpGm5cja0bp2PxVmfnNx6L8T/0VPtZNv4yQb4d0kqb1XzD9ED319Ksao0q2oLBZR79NHaDHNzKwrdnlKHmxHYutkaoVSoi6r0sNc9vr8Z9fv5Gv+7YRdc1Wzn5f98UKep6qnJrLzt9GS83Kz9gX4RgBBPxYwPkd2qswGCwCCCCAAAIIIIAAAggggAACCMSVgFrvVrWdIf1japeAia4RQAABBKwECPBayZCPAAIIIIAAAggg4H0CjBgBBBBAwG0C6oPb7oWFP8Gb84lMbmuXhhBAAAEE3CtAgNe9nrSGAAJeIsAwEUAAAQQQQAABBBDwZ4Gg4BvRTj/kbqj0GT5dl1Frx75UpYw+ZoMAAgh4m4A/jJcArz/cZeaIAAIIIIAAAggggAACCCAQnYDfXZswc4nUfrefzPxllRw8elrCwu5rg2s3bsnGrfulXpuBeq8yu7SsL+keS6UOSQgggAACHihAgNcDbwpDQgABBBBAAAFPFWBcCCCAAAII+I7A1j1HpNvg76TKmz0kR4Xmkq1sUyn4Qhup33aQbNvzr55om8a1pPO7r+ljNggggAACnilAgNcz7wuj8nYBxo8AAggggAACCCCAAAIIeLBAx+avyqCPmkudGuWlQN7sEhAQoEebKUNaefbpAtLyzZoyd2xPGdClaeQ1XYANAghEFeAMAQ8QIMDrATeBISCAAAIIIIAAAggggIBvCzA7BDxNIG2aVNLqrZry7ZBOsnbOF3J203Q5t3mG7F42VhZ9108Gf9xcKpUt5mnDZjwIIIAAAiYCBHhNUMhCAAEEEEAggQToFgEEEEAAAQQQQAABBBBAAAGXBAjwusTlKYUZBwIIIIAAAggggAACCCCAAAII+L4AM0QAAQQeLkCA9+FGlEAAAQQQQAABBBBAwLMFGB0CCCCAAAIIIICA3woQ4PXbW8/EEUDAHwWYMwIIIIAAAggggAACCCCAAAII+JaAWYDXt2bIbBBAAAEEEEAAAQQQQAABBBBAwEyAPAQQQAABHxAgwOsDN5EpIIAAAggggAACcStA6wgggAACCCCAAAIIIOCpAgR4PfXOMC4EvFGAMSOAAAIIIIAAAggggAACCCCAgO8LMEOPEiDA61G3g8EggAACCCCAAAIIIIAAAr4jwEwQQAABBBBAIO4FCPDGvTE9IIAAAggggED0AlxFAAEEEEAAAQQQQAABBBCIpQAB3ljCUS0hBOgTAQQQQAABBBBAAAEEEEAAAQR8X4AZIoCAKwIEeF3RoiwCCCCAAAIIIIAAAgh4jgAjQQABBBBAAAEEEBACvLwIEEAAAQR8XoAJIoAAAggggAACCCCAAAIIIOCrAgR4/7uzHCGAAAIIIIAAAggggAACCCCAgO8LMEMEEEDApwQI8PrU7WQyCCCAAAIIIIAAAu4ToCUEEEAAAQQQQAABBDxfgACv598jRogAAp4uwPgQQAABBBBAAAEEEEAAAQQQQMD3BTx0hgR4PfTGMCwEEEAAAQQQQAABBBBAAAHvFGDUCCCAAAIIxKcAAd741KYvBBBAAAEEEEDgPwGOEEAAAQQQQAABBBBAAIFHFvg/AAAA//8F0tJqAAAABklEQVQDAD9jiBS9OzDeAAAAAElFTkSuQmCC" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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AggggAACCCDgfgFaiAACCCCAAAIIIIAAAggggAAC7heghQgggAACwQgQoBiMEnkQQAABBBBAAAEEwleAmiGAAAIIIIAAAggggAACCCCAgPsFaCECCCCAAAIIIIAAAggggEBEChCgGJGnLfcqzZERQAABBBBAAAEEEEAAAQQQQMD9ArQQAQQQQAABBBBAAAEEEEAAAQTcL0ALEUAAAQQQyAkBAhRzQpljIIAAAggggAACgQXYggACCCCAAAIIIIAAAggggAAC7heghQgggAACCCCAAAIIIIAAAgjkSYE8FqCYJ88xjUYAAQQQQAABBBBAAAEEEEAgjwnQXAQQQAABBBBAAAEEEEAAAQQQcL8ALUQAAQQQQACBSBAgQDESzhJ1RAABBBBAIJwFqBsCCCCAAAIIIIAAAggggAACCLhfgBYigAACCCCAAAIIIIAAAggggID7BbKhhQQoZgMqRSKAAAIIIIAAAggggAACCCCQFQH2RQABBBBAAAEEEEAAAQQQQAAB9wvQQgQQQAABBBBAIC8IEKCYF84ybUQAAQQQSEuAbQgggAACCCCAAAIIIIAAAggg4H4BWogAAggggAACCCCAAAIIIIAAAu4XoIVhKECAYhieFKqEAAIIIIAAAggggAACCES2ALVHAAEEEEAAAQQQQAABBBBAAAH3C9BCBBBAAAEEEEAAAQTSFyBAMX0jciCAAALhLUDtEEAAAQQQQAABBBBAAAEEEEDA/QK0EAEEEEAAAQQQQAABBBBAAAEE3C9ACxFwoQABii48qTQJAQQQQAABBBBAAAEEsibA3ggggAACCCCAAAIIIIAAAggg4H4BWogAAggggAACCCCAAALZL0CAYvYbcwQEEEhbgK0IIIAAAggggAACCCCAAAIIIOB+AVqIAAIIIIAAAggggAACCCCAAALuF6CFCCCAQCoBAhRTkbACAQQQQAABBBBAAIFIF6D+CCCAAAIIIIAAAggggAACCCDgfgFaiAACCCCAAAIIIIAAAgiEvwABiuF/jqhhuAtQPwQQQAABBBBAAAEEEEAAAQQQcL8ALUQAAQQQQAABBBBAAAEEEEAAAfcL0EIEEEAAgZALEKAYctLABZ62+BlhwiBc+kDgnsoWBBBAAAEEcl+AGiCAAAIIIIAAAggggAACCCCAgPsFaCECCCCAAAIIIIAAAggggID7BQhQdP85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Y84xfYA+QB+gD9AH6AP0AfoAfcCdfUCy+F+WAxSzeHx2RwCB0ApQGgIIIIAAAggggAACCCCAAAIIuF+AFiKAAAIIIIAAAggggAACCCCAgPsFaCECCCDgCgECFF1xGmkEAggggAACCCCAQPYJUDICCCCAAAIIIIAAAggggAACCLhfgBYigAACCCCAAAIIIIAAAghkhwABitmhSpmZF2BPBBBAAAEEEEAAAQQQQAABBBBwvwAtRAABBBBAAAEEEEAAAQQQQAAB9wvQQgQQQAABBLwCBCh6EfiHAAIIIIAAAgi4WYC2IYAAAggggAACCCCAAAIIIICA+wVoIQIIIIAAAggggAACCCCAAALhKECAYmjPCqUhgAACCCCAAAIIIIAAAggggID7BWghAggggAACCCCAAAIIIIAAAgi4X4AWIoAAAggggEAIBAhQDAEiRSCAAAIIIIBAdgpQNgIIIIAAAggggAACCCCAAAIIuF+AFiKAAAIIIIAAAggggAACCCCAgBsFUgYourGFtAkBBBBAAAEEEEAAAQQQQAABBFIKsIQAAggggAACCCCAAAIIIIAAAu4XoIUIIIAAAggggEAYCBCgGAYngSoggAACCLhbgNYhgAACCCCAAAIIIIAAAggggID7BWghAggggAACCCCAAAIIIIAAAgi4X4AWZlyAAMWMm7EHAggggAACCCCAAAIIIIBA7gpwdAQQQAABBBBAAAEEEEAAAQQQcL8ALUQAAQQQQAABBBBwgQABii44iTQBAQQQyF4BSkcAAQQQQAABBBBAAAEEEEAAAfcL0EIEEEAAAQQQQAABBBBAAAEEEHC/AC1EIOcFCFDMeXOOiAACCCCAAAIIIIAAAnldgPYjgAACCCCAAAIIIIAAAggggID7BWghAggggAACCCCAAAIICAGKdAIEEHC9AA1EAAEEEEAAAQQQQAABBBBAAAH3C9BCBBBAAAEEEEAAAQQQQAABBBBwvwAtRACByBMgQDHyzhk1RgABBBBAAAEEEEAgtwU4PgIIIIAAAggggAACCCCAAAIIuF+AFiKAAAIIIIAAAggggAACWRYgQDHLhBSAQHYLUD4CCCCAAAIIIIAAAggggAACCLhfgBYigAACCCCAAAIIIIAAAggggID7BWghAgggkPcECFDMe+ecFiOAAAIIIIAAAggggAACCCCAAAIIIIAAAggg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AQQQQAABBBBAAIFAEkhegGIg9TDA23o6OkoN534qd3Ci6c6O00d1zczByjOlV7ylxLR3TBYtPrJTrRZ/65k50STOOrhZxab1iVfG1HP/oi9NFh2JPK0uqybLzLw4cc8qvbzyV5tuVs0KVTEbu+w6fczVhkFqvfR7dVj+s6r//aEtY0+6Vs0KV3WtpeS23xZmhQACCCCAAAIIIIAAAgggcHkFuDoCCCCAAAIIIIAAAggggAACCDhfgB4igAACCCCAAAJpKECAYhripkbVZ85F6YDXVyUntc5tpw4rWueSmj1J+Z4oUVO1cp+ftdEEM3636z99vv1fmYBFdyWls+VRz/I328Pktt8WZoUAAghkMAG6iwACCCCAAAIIIIAAAggggAACzheghwgggAACCCCAAAIIIIAAAggg4HwBenhegADF8xbsuQTCQkLVq8ItKpY1TJVy5lefire5UmP+ZQkK1k81H9WgKk1UJ28pZVJQzInYdc3wonq30u2aWftp5cmcLTaVDQIIIIAAAggggAACCCBw2QS4MAIIIIAAAggggAACCCCAAAIIOF+AHiKAAAIIIIAAAgikY4FM6bhtNM0lkCs4iw427JHkZcvNr7hKSXcWqJjkMqb+cdUfsuXMqn2p2lp24wv6p/Yzusfra53NudBMwXq46NX6uWYr7W/Y3ecav1/7pNoUv0bZgzObrHZJbvttYVYIIBBgAjQXAQQQQAABBBBAAAEEEEAAAQScL0APEUAAAQQQQAABBBBAAAEEEEDA+QL0EIHUEyBAMfUsqQkBBBBAAAEEEEAAAQQQSF0BakMAAQQQQAABBBBAAAEEEEAAAecL0EMEEEAAAQQQQAABBBwsQICig28uXUMAgYsTIDcCCCCAAAIIIIAAAggggAACCDhfgB4igAACCCCAAAIIIIAAAggggIDzBeghAgikHwECFNPPvaAlCCCAAAIIIIAAAgg4TYD+IIAAAggggAACCCCAAAIIIICA8wXoIQIIIIAAAggggAACCCCQoAABignScAKBQBOgvQgggAACCCCAAAIIIIAAAggg4HwBeogAAggggAACCCCAAAIIIIAAAs4XoIcIIICAcwQIUHTOvaQnCCCAAAIIIIAAAqktQH0IIIAAAggggAACCCCAAAIIIOB8AXqIAAIIIIAAAggggAACCCCQZgIEKKYZLRVfrAD5EUAAAQQQQAABBBBAAAEEEEDA+QL0EAEEEEAAAQQQQAABBBBAAAEEnC9ADxFAAAEEEHALEKDolmCLAAIIIIAAAgg4T4AeIYAAAggggAACCCCAAAIIIICA8wXoIQIIIIAAAggggAACCCCAAALpVoAAxVS7NVSEAAIIIIAAAggggAACCCCAAALOF6CHCCCAAAIIIIAAAggggAACCCDgfAF6iAACCCCAAAKpJUCAYmpJUg8CCCCAAAIIpL4ANSKAAAIIIIAAAggggAACCCCAgPMF6CECCCCAAAIIIIAAAggggAACCDhWwBOg6Nge0jEEEEAAAQQQQAABBBBAAAEEEPAIsIMAAggggAACCCCAAAIIIIAAAs4XoIcIIIAAAggggEB6ESBAMb3cCdqBAAIIIOBEAfqEAAIIIIAAAggggAACCCCAAALOF6CHCCCAAAIIIIAAAggggAACCCDgfAF6mEwBAhSTCUcxBBBAAAEEEEAAAQQQQACByyHANRFAAAEEEEAAAQQQQAABBBBAwPkC9BABBBBAAAEEEEDAKQIpDlDcf/iUWDBgDDAGGAMOHQM843mPYwwwBhgDjAHGAGOAMcAYYAwwBhgDjAHGgPPHAPeYe8wYYAwwBhgDjAHGAGOAMcAYYAwwBhgDjAHnjwHuMfc4mWMgpYGSKQ9QPHJK+1kwYAwwBhgDjAHGAGOAMcAYYAwwBhgDSRoD/PzEz5CMAcYAY4AxwBhgDDAGGAOMAcYAY4AxwBhw/hjgHnOPGQOMAcYAY4AxwBhgDDAGnDIGLnuAYkRYVrFgwBhgDKTTMcDziWc0Y4AxwBhgDDAGGAOMAcYAY4AxwBhgDDAGnD8GuMfcY8YAY4AxwBhgDDAGGAOMAcYAY4AxwBhgDDh/DHCPuceMgcs0Bi5/gGJ4VkWwYMAYYAwwBhgDjAHGAGOAMcAYyCBjgM///PzDGGAMMAYYA4wBxgBjgDHAGGAMMAYYA4wB548B7jH3mDHAGGAMMAYYA4wBxgBjgDHAGIgZA5c9QDGlDaB8wgIHj50Wy+mEgTLCGfqIAAIIIIAAAggggAACCCCAAALOF6CHCCCAAAIIIIAAAggggAACCCDgfAF6iAACCGRQgUwZtN90GwEEEEAAAQQQQCCDCtBtBBBAAAEEEEAAAQQQQAABBBBwvgA9RAABBBBAAAEEEEAAAQQQSB8CBCimj/vg1FbQLwQQQAABBBBAAAEEEEAAAQQQcL4APUQAAQQQQAABBBBAAAEEEEAAAecL0EMEEEAAAQSSJUCAYrLYKIQAAggggAACCFwuAa6LAAIIIIAAAggggAACCCCAAALOF6CHCCCAAAIIIIAAAggggAACCDhDgADFxO4j5xBAAAEEEEAAAQQQQAABBBBAwPkC9BABBBBAAAEEEEAAAQQQQAABBJwvQA8RQAABBBBA4LIIEKB4Wdi5KAIIIIAAAhlXgJ4jgAACCCCAAAIIIIAAAggggIDzBeghAggggAACCCCAAAIIIIAAAgg4XyApPSRAMSlK5EEAAQQQQAABBBBAAAEEEEAg/QrQMgQQQAABBBBAAAEEEEAAAQQQcL4APUQAAQQQQAABBAJSgADFgLxtNBoBBBBA4PIJcGUEEEAAAQQQQAABBBBAAAEEEHC+AD1EAAEEEEAAAQQQQAABBBBAAAHnC9DDSyFAgOKlUOYaCCCAAAIIIIAAAggggAACCQtwBgEEEEAAAQQQQAABBBBAAAEEnC9ADxFAAAEEEEAAAQQypAABihnyttNpBBDIyAL0HQEEEEAAAQQQQAABBBBAAAEEnC9ADxFAAAEEEEAAAQQQQAABBBBAwPkC9BCBQBAgQDEQ7hJtRAABBBBAAAEEEEAAgfQsQNsQQAABBBBAAAEEEEAAAQQQQMD5AvQQAQQQQAABBBBAAAEEkiFAgGIy0CiCAAKXU4BrI4AAAggggAACCCCAAAIIIICA8wXoIQIIIIAAAggggAACCCCAAAIIOF+AHiKAQEYQIEAxI9xl+ogAAggggAACCCCAQGICnEMAAQQQQAABBBBAAAEEEEAAAecL0EMEEEAAAQQQQAABBBBA4DIIEKB4GdC5ZMYWoPcIIIAAAggggAACCCCAAAIIIOB8AXqIAAIIIIAAAggggAACCCCAAALOF6CHCCCAAAIXFiBA8cJG5EAAAQQQQAABBBBI3wK0DgEEEEAAAQQQQAABBBBAAAEEnC9ADxFAAAEEEEAAAQQQQAABBAJQgADFALxpl7fJXB0BBBBAAAEEEEAAAQQQQAABBJwvQA8RQAABBBBAAAEEEEAAAQQQQMD5AvQQAQQQQACBtBcgQDHtjbkCAggggAACCCCQuABnEUAAAQQQQAABBBBAAAEEEEDA+QL0EAEEEEAAAQQQQAABBBBAAIEMKJDhAhQz4D2mywgggAACCCCAAAIIIIAAAghkOAE6jAACCCCAAAIIIIAAAggggAACzheghwgggAACCCCQ/gUIUEz/94gWIoAAAgggkN4FaB8CCCCAAAIIIIAAAggggAACCDhfgB4igAACCCCAAAIIIIAAAggggIDzBVK9hwQopjrp5avwhdeHqlKDJ+3Spsv7l68hXlfuM+gr2x7TrmZt3/A6wy4CCCCAAAIIIIAAAggggEDCApxBAAEEEEAAAQQQQAABBBBAAAHnC9BDBBBAAAEEEEDA+QIEKDr/HtNDBBBAAIELCXAeAQQQQAABBBBAAAEEEEAAAQScL0APEUAAAQQQQAABBBBAAAEEEEDA+QL0MN0JEKCY7m4JDUIAAQQQQAABBBBAAAEEAl+AHiCAAAIIIIAAAggggAACCCCAgPMF6CECCCCAAAIIIIAAAhcSIEDxQkKcRwABBNK/AC1EAAEEEEAAAQQQQAABBBBAAAHnC9BDBBBAAAEEEEAAAQQQQAABBBBwvgA9RMBxAgQoOu6WxnQoOFM6ubWZgmIaxBoBBBBAAAEEELhEAsN3z1CHTV+xxDGYdnjVJboDTrkM/UAAAQQQQAABBBBAAAEEEEAAAecL0EMEEEAAAQQQQAABBBBIa4F0EsWW1t3MePXnzJFdBw4f1eDRP+mJTv11zZ3P6YHn3lb/j8drz/5D8UDOnTun8ZNm6sU3hun+Z3qr/v0vq9qtbdWgxct6sH0fDXCV27pjb7xyJuH4iVMa8dWveuT5vqp553O65cHO6tjrY835d5XyhOU0WVgQSFyAswgggAACCKSiwPrTe7X4+FaWOAZ7zh5JRWWqQgABBBBAAAEEkiFAEQQQQAABBBBAAAEEEEAAAQQQcL4APUQAAQTiCBCgGAckoA+9JisMDg5Sy/bvaNBnP2r2wpU6dvyklixfr0+//lWtXuirEydP+3R12qx/1b3fKE3+c76Wrdqo3XsP6GxklHbtOaDF/63TCFe5xq26asmK9T7lTp85q3ZdP9SA4eO1YOkaHXddZ/uu/fp1+jw93rGftu7Y45OfAwQQQAABBBBAAIFLI8BVEEAAAQQQQAABBBBAAAEEEEDA+QL0EAEEEEAAAQQQQAABBOtWPE0AABAASURBVBBI7wIEKKb3O3Qx7Tt3PvNPU2Zr49Zdyh2WU9UqlVZIcLDn5OZte+yMh54E106D669W6eKFXHtSUFCQShQtoGqVy/qUi4yKUue3R8jMtqjY/3787R/NW7w69ihmU8ZVT/Ei+e3B97/OsluHr+geAggggAACCCCAAAIIIIAAAgg4X4AeIoAAAggggAACCCCAAAIIIICA8wXoIQIIIIBAKgsQoJjKoOmpuoY31tCf3/bXN0O66YeRb6hg/rye5n3z0586czbScxwcnElvvNRKn7zbUfMnDtJvY/vom8Gvae7PH6lLuxaefFu279GW7Xs9x+Mn/e3Zz54tVCP7d9IvY97SlC/e0ZgPOtsASU8GdhBAAAEEEEAAgSQLkBEBBBBAAAEEEEAAAQQQQAABBJwvQA8RQAABBBBAAAEEEEAAAQScLkCAokPvsAkWfL3jIwrNktn2sGyJwnq21V1236wOHD6qFas3mV0pdn3NVVeozjVVlCN71tgUydTTqvmtPjMprt20zZ7ff/CIlq3aaPfN6q5brtf1NSqZXbuY+prcdr3dZ4UAAggggAACCCCAAAIIIIAAApdZgMsjgAACCCCAAAIIIIAAAggggIDzBeghAggggAAC6UyAAMV0dkNSqzklixVU3vBcPtVVvaKUz/GWHednQjQn1mzYpv4fj9dTr3ygWx7srEoNnrRLlZtbKzIqymSxy5kzMTMvbt2+xx67V9dcVd6969mWL1XMs88OAggggAACGUmAviKAAAIIIIAAAggggAACCCCAgPMF6CECCCCAAAIIIIAAAggggAACCCQu4IQAxcR7mEHP5g7LEa/n4XHSjp885ckz/pcZuvvJ1/Xp179qxtxl2r5rv+dcQjvHT532ORWRJ9zn2ByE58puNiwIIIAAAggggAACCCCAAAIIpFSA8ggggAACCCCAAAIIIIAAAggg4HwBeogAAggggAACDhMgQNFhN9TdnaPHTrp3PdsjR0949s2O+fpmsz167IT6Dh1ndu1Sp1ZVjRrQSTMnvK+V0z+1S7bQLPac9yo0S2bvQ5086RuwaE76SzPpLAgggAAC6V2A9iGAAAIIIIAAAggggAACCCCAgPMF6CECCCCAAAIIIIAAAggggAACCDhf4PL2kADFy+ufZlffuHWXDh0+5lP/sjWbfI5LFi1oj9ds3KZjx88HNHbv8LCuq15JEbnD7PmjrnMnT5+x+96rEkULeB9qyaqNPsfmYNWGrWbDggACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCDhfgB4igAACCCCAAAII+AgQoOjD4ZyD4ydO6c0Pv1BkVJTt1Katu/Xx5z/bfbMywYeVK5Q0u8oc4jsToglutCdcKxOY+O6Qb1x78f8ViMitK8oW95wYO2GaFi1ba49NuU+/+lWfj59qj1khkJEFen/0ta5t2lET/5h30QzL12xR6y4fql6LLipfv42qNmynJq17ydTpHVgct+J9B4/olb6f6ZaWXW2ZsvVa2/3OfUZp5bqMETgc1ySjHJ85G6lnewy1Y2b+kjUZpdsB289Pvv5Nha5p6XeZPnvpJenXhCmzVavpi3r34+8uyfXS60Uij0ZqzWNL7XIuKjrdNHN9x5W2TSfWHEs3baIhCCCAAAIIIIAAAgikJwHaggACCCCAAAIIIIAAAggggAACzhegh4EtQIBiYN+/RFs/6Y95qtf8JbVo11t3Pd5d23ft9+R/uNlNypI5xB6XK1VE2UKz2H2zat99kB7v2E9PdOqveve+pPGT/jbJfpdmt9fxpB8/flIPd3hH97Tpqfr3vaT+w8d7AiQ9mdhBIFZgy469em/EBM2cvzw2xZmbPfsPadCYidq8fY8+HPXTRXVyy/a9uuep3jawcfWG7cqZI5sqlS+u4OBM+mvuf/bYX4VRUdFq+UJ/fTZ+qv5bvVmnz5zV/yqXUZ7wnJr810KF58rhrxhpDhFYuGydvvt1lsyYGflt+g0Sn7VwpX0GmNeGQ+iT1Y3CBfKobq0qPov3e3KyKr3IQgNH/iTzvDHP5INxZl++yKrIjkCSBP53RwcblHupgnDXbtphr2eCgU+dPpukNpIpQQFOIIAAAggggAACCCCAAAIIIICA8wXoIQIIIIAAAggggAACqSpAgGKqcqafyh5vcZuKFcmnA4ePaunKjT6BgrVrVNYTLRp5Gps9W6geva+h5/hsZJTm/LtKsxeu1NFjJ9TwxhqqVrms57z3TrNGN6hiueLeSVq1bquOHD2hCmWKqddLj/qc4wABt8Ci/9bb2br+WbTKneTIrZmttHqVmNfPzTdcfRF9lL74cbqOuF6DJYrk159f99G/v3yobwe/qgkfd9PvY3snWNeMef9p8YoNCgoK0pgBHbVq2scaP/Q1W3bp5EEqUjBvgmU5EfgCV5QtJjNmTCBrvWurptsOTZw21z4Dtmzfm27beCkadudNtexr81vXa9u9FCqQ51Jc2nONBtdfafdr16hkA5ntASsE0lDAHSgfljN7Gl7lfNXhuWKuY4J/s4b6zhx+Phd7CCCAAAIIIIDA5RLguggggAACCCCAAAIIIIAAAggg4HwBeohAxhYgQNGh979V81s0fmgPtX/8btW6+gqZX8ZmDglWy3tu1pC3Oyg0i+8vZ599rIlefe5BVatUWjlyZJPJe/MN/9OA7k9p4BvtdHv9mn6lzIxuY97vrOceu1vXxl7HBGSZ6wx+s73uvPU6hcX+UthvBSRmWIFtu/ZliL6bILFJn72hXfPHqsvT915Unzds2WXz39u4jiqW9Q0EticSWK2PLVe7ekU1vLG6nXExgawkO1Agb3hOzfvxfW2fM0YP3HVjuu3htp0Z4xmQbm+AV8Nef/4h+4z6flhXr1R2EUg7AXfA4KX6jBiWM4ftTG7X81F2jxUCCCCAAAIIIIAAAggggAACCDhagM4hgAACCCCAAAIIIIBAuhIgQDFd3Y6UNeaDN57Ryumf2qVQ/rwKD8uhdq2aaPT7nfXv5GFa+vtwde3wULzgRHPVkOBgmaDGb4Z004KJg2zeQb2fU+ObapnTeuy+hrZeU787zZ5wrXLlzK5nH22iz2KvM3PC+/Y6ZgbHbKFZNPenj2zZ74e/7srNv4wicKF+bs8gAYoXckjs/KnTZ+zpPBcZUHG+XC5bnhUC6VFg68796bFZtAmBGIFMQTFb1mkikD9vuK23QERuu03rVdbQzDLB2wXzXZrrpXV/qB8BBBBAAIH0JkB7EEAAAQQQQAABBBBAAAEEEEDA+QL0EAEEEEiJQKaUFKYsAghkbIG5i1erx/tj1ezpt1S2XmvVvOt5NXft9/7oay1avt4HZ9uu/Wr8eE/Vbt5JlW55WqO+nWrPvzdiggpd09Jn6TNknD0XqKvHOr3v0x93/57tMTTRLplyNz30mq5p8oLK1W+j32cutvm7D/g8Xn3ucyZD/0++V8NHuunaph2t7VuDvjHJmvjHvHjl3nTdG3sywFbR0ef07aSZatVxgB1nV9zUVk3bvqmBo37SvoNH/Pam45ufxOt/6y4f2rwjx/2ue9v1Uek6T9g81Ro9pz37D9lzgbi6pWVX2w/3WHNvE3stmfFm8g37YpLfLv+3erOts9h1j/o9HxUVrQm//aMOPT/W7Y/1sJY33PuyWr7QXwNH/ijzmvcu+NuMRbqtVXfVavqifV6sWr/Vnr7v2T72OqYt7mX67KX2XKCs9h86avtgnn8nTp3Wh5/9bMdnedfruP4Dr8qMRfO8TO3+nDx9Ru8M/VbGsI7L3jw3Kruer+Z58MbAL7V7n/8xbe6529p7+787OiTaRPezyDzfV63fpq79xqjRoz1U5sYn7evSjKmFy9YlWkdAnMwUpOgz0TowaY+2Ddiodc8t18Zua7Rr9DadXHciwS6c2X9Guz/fpi1vrdOGl1dqbdtlWv/iCm3ts04HpuxTlKvOhAqf2nzS1m+uY8pt6rra1hV9KlqZgn2CJROqIqDS80eEKVtoFrlnUrwUjS+QL4/y5w27FJfiGggggAACCCCAAAIIIIAAAgikVIDyCCCAAAIIIIAAAggggICjBAhQdNTtpDOpJ0BNFxLo/t5Y3d3mTQ3/crLmLV6jK0oXVUhIiGYtXKlBYyZq+erN8arIkT1URQtFqOoVJeWexahUsYKqW6uKz1KiSP54ZQMpockt16rNg430wF036o6brlGZEoWS1Pzg4EyKyJNLpYoX1P+qlFG+PGG2XPlSRXx8jFeesBz2nFkFKcjOmFqiaH5r675e/ojweOVKuvKYMoG0mICvx15+X+1fH6Y//lmq7NmyqmTRAprrGncmAK/x46/LBEvF7dPNN1yt1i0aqvntN+jGWlXt6W279umTr3/Ta/1Ga86iVariGos31KiksJzZdKlm8rINSeXVw3c3sH29/466ur1+TRUpmDeVr+BbnbknTZ/qrWe6DdG4X/7Wuk07reWRYyc0ddZi9Rn6rU6eOu1TKMh1FJYru7131auW9czme1Wl0vHGqZkB2JU94P6tdTk8/dogDRv7i+tZl0+P33eLKpYtqh9+n2Ofl1/8MD1V+zTCNZY/GPmj/p63XIdd9pXKFVdYrhxaumqTho6dJBO4euDwsXjXrFG1nJ5+uLEebtpAd996nWpcWS5ensQSps5crDue6KmF/63T1ZXLqOU9DZQ7PKcm/7XQpi9esSGx4un+XKasmbT70+3aN26XTm05qSyFQxV9JFJHph/Q1t7rdHjmQb992Dt6uw5PO2CDGINcz+XQUtmlKOnk6hPa9+UO7fhgk99yRxcf0ZZea239kXtPK0vxbIo6HmXr2v7hJgWFBPktF8iJYTmz2zFzKftggiHN6+NSXpNrIYAAAggEigDtRAABBBBAAAEEEEAAAQQQQAAB5wvQQwQQQACByymQ6XJenGsjgEBgCmzculuffDVZIcHB+uSdDlr71yea9NkbmjNhgFZOHaZhbz2nu2651qdzxQpF6NvBr3qWOtdUseebNartSXOff7hpA3suUFemT292bKkPerTVp32f172335Ckrpi8bgOzNUGKpmCr5jfHM6pZrbw5ZZeX2tzjc/7BJvVs+rVXXeGTbups1exmey6QVs/1GKopMxbJBF/N/fE9zRjXV1M+763Vf3ys5x9voi3b9+qJzh/o6PGTPt0ywaG9O7XS4F7PaFCvp+05M2vfW4O+VtuHGmnltGGa+Onr+m5YV/0y6g17PlBXJhDO9PXDnk9pVL8XVP/aK9O0Kz9MmaP5S9aoRNH8+mVkT62a9rG1XDZ5sGZ/P0AfvfG0ypcq4tOGhjdW9xmPeXPHfAV5t+ce8En/1vWcqF6lrE/ZQDkws3CamRK/GfyKHXevPdvCPg8/f7+TnS2ua/8xdrymVn8euru+OrVtpv9+GyJj//OIHvY5vML1HG5xZ13t3X9YA4Z/H+9y11xVQT1feEgDuj6pj99+Tqad8TLZeCmXAAAQAElEQVQlkmBmvr29fg1NHPm63unymHq92FK/u16T7mdP32HjEy4dAGeiT0Tp2LxDyv9gYZUbWFklupZT2Q8rK6J5TLD5njHbdGavbwCu6VaeRvlUsE0xlR9aVaX7VVSJ18raciV6l1doyWw6ueKYjrjqNXndS+ThSO0ZsdUGMua4KpfKuK5Tsrvreh9UVoEniunEymM6szP+tdzlA3Vr3udHuD4/XMr2v+V6P3jhibsv5SW5FgIIIIAAAggggAACCCCQcQXoOQIIIIAAAggggAACCCCAAAJeAgQoemE4aZe+IJCWAvsPHrHVFymUV3fdXMsG3tgE1ypPeE41bXidcnvN8OdK5h8CyRJYuGydJk1foKCgII189wUVLRjhqcfMwPVqu/tVu0YlbdiyS18kYXa6U6fPqnL5kjagKleObJ66zMxangN2LijgfgbcUKOynX3PzP7pLlS6eEHd17iO+zDDbU3g1ZVXlPLpt5mls+lt18uMv2FfTvI5l5KDiNy51KlNM+WL87W1eV3P4ZdaN7NVL1i21m5Tc2WC03s+/7ANUnfXGxQUpEea3WQPzevW7gTwKmet3MpzW36fHkTcVUDZKufUuTPndPD3/T7nzEH2yrkUfkNemRkYzbF7yVosm3LfEmEPT60/Ybfu1eEZBxR1LEqZwoJVqF0JBYcGu08p9415FXF3Qc+xk3bMTMk1LnLmzpT238zeHDdwOqV1Uh4BBBBILwK0AwEEEEAAAQQQQAABBBBAAAEEnC9ADxFAAAEEEAhkAQIUA/nu0XYELpNA+dJFlTNHNjsTWK8Pv9KWHXsvU0u4rNMFps9Zart4a93/qXRx/4E698YGw5mvl7WZL7AyX0d7gSycvoDA1ZXK2By//DFfY76fpkNHjtvjDLC6YBcb1avhN487ffrsmDHtN1MqJprZLYOCgrRu885UrDWmqto1KsULijRnShSOCeg7cuyEDh4+ZpICdgm/MY/ftoddn9umn1h21G6TugrJn8VmPbPnjN26VyeWx9QTXievT3Ci+3zYDTHXcx+zRQABBBBAAAEEEEAAAQQQuCQCXAQBBBBAAAEEEEAAAQQQQAABBFJRIJ0GKKZiD6kKAQRSXcDMNvdZ/xdVvHA+Dfn8F9W6+0WZQMVjx0+m+rWoMGML7N1/2AKULVHIbv2tqlYoaZP/W7PFbi+0ql6l7IWycP4CAnVrVbGzUJ45e1ad+4xSjbue15c//aWoqOgLlHT+6aKFIvx2slD+mIC3jVt3Kzr6nN88yUmctXClXn//Cz38fD9d27SjCl3T0rOcO3dOp0+fTU61iZYpkC/c7/nMmUM86WcjIz37gbiTuVCo32ZnLhgTaHh252mdi3MfoyPP6cg/B7X7s+3a+s56rXt+hdY8ttQu29/ZEFOfK0/MTsw66nCMU5bYemNSz6+z5A9VUJag8wnsIYAAAo4UoFMIIIAAAggggAACCCCAAAIIIOB8AXqIAAIIIIAAAhlZgADFjHz36TsCKRCoU7Oy/hrXV68//5DMVzWaQMWr7+ig3h99zWxqKXClqK/AkWMxQa95c+fyPeF15P468WPHT8osXqf87ubLE+Y3PUMkXkQno88lHkTX9qFGmvVdf7Vu0VBBQUHq+OYnqt28k0Z/Ny1DByqGZsnsVzln9qye9OMnT3n2U7Lz0eif1fzpt/Txl78qKjpaN9SopBeeuFudn2pul6CgtAlsyxOWMyXNDoiywbmC/bYzONf5IMzoU1GePCZYceegTdo1fKuOzjukTNmDlat6mPI2LaiIewoqrF5eT17vnaiTMXUEh52v1/u82Td1mS0LAggggAACCCCAAAIIIJBkATIigAACCCCAAAIIIIAAAggggIDzBQKohwQoBtDNoqkIpDeB7FlD9UzLxvrn+/4a3OsZ5c2dU4PGTFT9B17RstWb0ltzaU8ACuTMERPUdexEwgFdh44ctz0LDs6kHF5BYDbRzyooU9oEbfm5VEAnHTka45pYJ4oWjFDvTq20aOJAvdrufu09cFhd3hmlpk/11uGjJxIr6thz+w4c8du3XfsO2fSgoCB5ByvaxGSs1m7aobcHj1OuHNn0/cdd9fVHXfRe9zZ65Zn71LH1PXbJxFhPhmxMkehjMYGDMUfn11Fe6Zmyng9iPDzzoI4vPqrMxbKq5JvlVbRDKRV8tJjymQDFuwsqrHae85V47WUKjfkoHn3K/+yjZhbMhM55VcMuAghcZgEujwACCCCAAAIIIIAAAggggAACzheghwgggAACCCCAAALJF4j5rWjyy1MSAQQQUEhwsJrffoP+HveuHm1+s3btPaj3RvyQJJnoaP9BGUkqTCbHC5QvWcT2cfFy+/Wodj/uyh0MW6F0UTuTX9zzHPsXyBwSE1x1+kyk3wzrNu/0m+4vMSxndj3/eBPNnfCealxZTvOXrNHXP//lL2u8tOhzznoGrFq/LV4fTcLSlRvNRqWKFUiVcfrbjEUywWvNGtVW7eqVbN3eqz37D2XomSy9LZKzH3nY/+si8uBZW13mQlnkHex8fOFhmx5xZ35ljshi971X7nLeaWY/c8FQs1HUkQSudyhS5xIIXrQFWSGAAAIIIIAAAggg4EwBeoUAAggggAACCCCAAAIIIIAAAs4XoIcZSIAAxQx0s+kqAmktYL7atP51V9rLbN6+x24TWrlnENu2a19CWUhHQLc3qCkzM+LMBcu1YcsuvyLf/vK3TTdfb2t3WCVJoHDBmK+cXbtpu9/8JgDO74lEEvNHhNsARZNly/a9ZpPgEpYzmz23baezngF/zV1m+xV3NenPBTbJ/Yy0BylYnTp9xpaOyBNmt3FXP/4+N24SxxchYL6m2V/24wtjZsjMcWUun9PRZ2O+Ej0kV2afdPfBsQUxAYzuY/c2e8Ucdvfo3EM24NQeeK2OxQY+eiWxi0AaCFAlAggggAACCCCAAAIIIIAAAgg4X4AeIoAAAggggAACCCBw+QQIULx89lwZgYAV+GnqXI0c97tOxgbIuDuy7+ARjftlpj2sVK643Sa0KlOikD31y7T5WvTfOrvv+BUdvGiB4oXz6ckWDe1McM/2GKK9+88H+URHn9O7H3+nOf+uVs4c2fTMI3dcdP0ZuUDlciVs93/4bY5mzl9u992rz7//Q9NnL3UfxtsOHPWTfv1zQbyAquVrtmjqzMU2f8Wyxew2oVWZEoXtqeFfTda+AzFBXzYhwFffT/7H2nh3w3iZWSXNrJVPtrjN+1Sy98sUj3mGmvtgZq31rsgEl74z9FvvJPYvUuDQ5H06/Nd+n1L7J+2RCSQMyhKk3Lfl9zmXpUDMTIiHZh5Q9Nnzs4Kei4rW/h93K6EAxbDaeWTqO7XhpLa/v0mnd5zy1Htywwkd/DXxQF9PZnYQQAABBBBAAAEE0pcArUEAAQQQQAABBBBAAAEEEEAAAecL0EMEEEiyAAGKSaYiIwIIuAU2bt2t1/qNVtWG7dS07Zu679k+uu6el+yxCZYpXCCvujx9rzu73+0Dd9VTiSL5bZBjk9Zv6p6nett6TF0PtO/rt0wgJJ44dVpvD/7G+rR/fZgef/kDjf91lm26CQJ7rNP7Muld+43RwJE/2nRWiQt0fPIeXVGmqP5dvkHXN+/kGSf1H3hF742YYL8ut9+rj6towQhPRSZ40dyHV/p+pme6DdGzPYZ6zrWLPX7NNYZHfDPFk57RdprffoPKlSysyKgo3duuj2re9by1bfhIN73cZ6S6t39AJqDOn8ucf1fZsX3V7e1tmXufeVuVb3laNz/8mp3psm6tKmpx141K7L/nWt2p0CyZtXrDdtX2uq/mGdDrw68SK5puz+XInlW31vmftbmmyQtq0rqXfS72GTLOtrnvq0/ImNuD2NXUWYvV84Mv1entT+1YfeTF/tq156A9++7H49X21Y/00luf2jwmyNGecK0a1auh6lXKauW6rWrw4Kv2Phi7G+592ZZ5p8tjMjNaurLG+zfq26nq/t5YvfjmJ2rzyod6a9A3Ns+BQ0dlrt+u+xB1eWeUen/0teIGP9qMDl9lKZZV2Srm0O5R27X+xRXa8tY6rXt+hfaP22V7XuDRYsqSz/drnHM3jFCm7Jl0bPYhbeq6Rlv7rbfLhhdX6fCMAyrYxn/QfkjuzMp3b0yw6YmlR7X5tTXa1GONNry8Slt7rVPW0tmUvZrvbI22Eax8BDhAAAEEEEAAAQQQQAABBBBAAAHnC9BDBBBAAAEEEEAAAQQQCFwBAhQD997RcgQutYDnenfedI1efLKprqpUWotXbNDf85YrKEi67cbqeu3ZFvrjy7dlgg89BfzshOfKrgnDu+n+O+oqd3gOzV60ytZj6jp05LifEoGRdPLUGX342c92hslvJ820M6lt2BIT1LJ73yFN/muhTPqn46Zo0JiJgdGpy9zK3GE59OMnPWQCrhrXr6m9+4/ov9WbVbRQhDq1baZJo97QPbfV9mll9Lloex8+Gz9VE377x44td4a/5i7Td7/Osvfo65//cidnuK0JPvxuWFc9eX9DVSxbXAcOH9Mc1+uwUP48GtG3g55tdacqJTATqjnXukVDFcyX29rOX7pWhQrktffhgx5t9eXAzsqSOSRR0xpXltN3Q1/TTbWvskGS5rXvXqKizs9Al2gl6ezk8ROnNKR3O/V79Qk7q+e8JWuUNTSz7ryplsYNfkUPNakXr8V/zVmmYV9M0tgJ0+1Y/X3mYhu4bTKaoFwzY+0XP0y3eRZ6zTabPVuoxrv8Ora+R0UK5tWCJWs1b/EaVShdVD8M7677GtdJ8Dn8xY/T9clXk/XVT3/p52nzPLPYnj5zVub6ZhbI0d9Ns8+oDBmgWCiLirxYShHNCsr1KNGptScUkjNYYfXyqsQb5RV+Qx5ze3yW0CJZVfLNCgqrm0dBrk/XJ1cd15ktp5SjRphKdC+nXK6tTwGvgzwN86top9LKfVs+hZbKptNbT+nc2WjluSO/Cj1dUpnzZ/bKzS4CCCCAAAIIIHBJBLgIAggggAACCCCAAAIIIIAAAgg4X4AeIoAAApdMwPUr1Et2LS6EAAIOEShbsrCdIfH7YV21aeYo7Zo/VrO/H6DRAzqqw2N3KU94ziT11Mx492HPp/Tfb0NsHaYes0we3StJ5dNjpojcuXz6YvqT0LL2z08S7cLn73eydbV54DZdzH9mZjpzTRNkdjHl0nNeE6T42L23yIyXP7/uo5VTh+mrDzurU5tm+l+VMvGaHhIcbO2MQ2LL1LFvxSubkRJMgOFbL7eSMd0w41NtnT1aY957yQbUGYcpn/fWtjmjza7PUqdmZfXu1Eq/j+1tnTfPGmUDk4f2bqcH7roxwZkXfSpxHdSsVl5fDnxZ5tre9+mNFx92nQ3Mf6dOn9EjzW7S9K/6WJsFPw+0AZ831qrqt0NvvvSIzefd/4T2n364sU8dJkix81PNNe2Lt7Vx5kiZ+zCq3wue18QvI3v6vX9m3Cd01R4lagAAEABJREFUjbjpV1c+//pyt9VsfRoSe2ACz93lC0Tkjk0NnE1IrhBV+KyaijxXSsGhwYpoUlDlBla2aaXeukKFHi+mrCWzJdihzBFZVOjJ4ir9TkVV+LSayn5URYUeLSYzS2KmrMG2nmIvlfZTXspRNZcKPFhEJXuW1xWjXGU/qKz89xVWppAgFXykmC2bvULS3lv9XoBEBBBAAAEEEEAAAQQQQAABBBC4zAJcHgEEEEAAAQQQQAABBBDIuAIEKGbce5/xek6PEUAAgQwicPpspO1p9mxZ7ZbVpRM4d+7SXYsrIYAAAggggAACCCQgQDICCCCAAAIIIIAAAggggAACCDhfgB4igAACCASMAAGKAXOraCgCCCCAAAJJE1iyYoPNWKF0EbtlhUBaClA3AggggAACCCCAAAIIIIAAAgg4X4AeIoAAAggggAACCCCAAAIIIJBcAQIUkyt36ct5rngs6ozarvxOZf7pa5ea8z7ynIu7YyZy+nHvcrVZ9Z1qLxiiKnMGqNmyz9Vzw+/679iuuNmTdLz11GG9s+lP3bXkM1V21Vdn4VBb/+idC3UyOmbWrrgVmWu725vQdvC2f+IW4xgBBBBAIBGBo8dP+pw9dOS43hsxQes271SRgnlV77orfc5zgAACCCCAAAIIIBAQAjQSAQQQQAABBBBAAAEEEEAAAQScL0APEUAAAQQQyDACBCgG2K1edWKv7lgyUlMPrrtgy49GnVHzZZ/rxbUTNe3AOu06c9QGEC4+ukNjdi1Sk6WjNXDrzAvW453huz3LdOu/n2j4jrlafny3TkVHasfpI7b+NzZOtW3bdPKgdxG7fzjSN4jGJrJCAAEEEEiRQP/h36tsvda695m3dccTPVWl4TN69+PvbJ2vP/+QsmcNtfusEhPgHAIIIIAAAggggAACCCCAAAIIOF+AHiKAAAIIIIAAAggggAACCCCAwOUSuHQBiperhwF83Tw5Q+W9TD26RvcsHS0zg6F3t4KC5JPPXabv1ukywYjuvFmCglUlZwGFBJ2/7QO3ztLkI6v8lnfX494eyHRc3Tb8pjPnotxVqmS23CocmstzbIIT267+Ttmzh3jqNPsJzazoKejayZblfBn3Nc3WdYp/CCCAAAJ+BGpWK6/C+fNo5oIVWvTfehUpkFf1rr1SP43oobtvvc5PCZIQQAABBBBAAIFLIMAlEEAAAQQQQAABBBBAAAEEEEDA+QL0EAEEEEAAAQQQSKLA+Ui1JBYg26UXOB0dpRdWTFTbZRNk9k0LvIMMzXHc5eDZkxq3c6kn+drcxbWqfkfNrP201jXopIo58nvOvbn2D0Wei/YcJ7QzYst8z/VNnlFX3avFdTtoRb0XNbDynSbJLutO7NfY7f/afbPaf/aE2XiWL//3gA427BFvealMXU8edhBAAAEELixw1821NHN8P+2aP1Y7532u+T99oG8GdVGtqypcuDA5Uk0gIncuew/MfQjPlT3V6qUiBBBAAAEEEEAAAQQQQAABBNwCbBFAAAEEEEAAAQQQQAABBBBAwPkCTu0hAYoBcGd/3btao7ct8rT0sWI1dFv+xINPpu5b5xN0+HqFm5UnczZbR3hIVr1Srp7dN6udp49q9sEtZjfRZdr+dZ7zdfOWUtOClT3HrYpVV6Wc+T3H3+/6z7O//8xxz77ZKRia02xYEEAAAQQQQACBNBHoW6K5ZlTpzBLH4MF8tdLEm0oRcKAAXUIAAQQQQAABBBBAAAEEEEAAAecL0EMEEEAAAQQQQACBSyRAgOIlgk7JZUwg4INFrrJVdCpTV+9VvkORXl+zbE/EWW07ddgnpUrOgj7HDSLK+hzPPbTV59jfwY5TRzzJV3jNwOhOrJu3tHtXCw9v9+zvP+M7g2LBLAQoenDYQSDDCwCAAAIIIIAAAggggAACCCCAAALOF6CHCCCAAAIIIIAAAggggAACCCDgfAF6iIB/AQIU/buku1QTlPhTzVbqWq6BglytOxMd5Von/C9bpsw+J/fFmcXwcOQpn/N7Th/zOfZ3EJopxJN84Kxv0KE5cfDsSbOxy2lX+45Enrb73ukm4ZVVk3XbvJFqtnCsuq3+Xd/sXKqT0ZHmFAsCCCCAAAIIIIAAAgikVIDyCCCAAAIIIIAAAggggAACCCDgfAF6iAACCCCAAAIIIIBAgAgQoBggNyprphDVzVvK09rIc9GefX87lXMV8Enuvvp3TxDgqehIPb1sgs/5E9FnfY79HXjPmjhx9yrNOrjZk23y3jUav3OZ59jsnIiKqfOAV+CiSZ+4Z5XmHdqm6fs3aPDm2a62/KDrZg3R+hMHzGkWBAJKgMYigAACCCCAAAIIIIAAAggggIDzBeghAggggAACCCCAAAIIIIAAAgg4X4AeIoBA2ggQoJg2rpe91rp5S6tc9ghPOybtXa1y0/vplrmf6uoZH+qfg1s858xOzuAsZpPo8mjx6p7zZ85F6c75o1Vr1mDdNGeEHvr3a53znI3ZyRkSU2fUBYIpTe4tJw+pxaIvdaHAS5OXBQEEEEAAAQQQQMDRAnQOAQQQQAABBBBAAAEEEEAAAQScL0APEUAAAQQQQAABBBBAIIMIEKDo0BttvgZ6eLV7lC3T+a9lNjMaLjy8XbvPHNN1uYvr6rDCnt4XDM3p2U9op0XharqrYCWf02uP79e/R3bYtGdKXme3ZmWu6w56bFuilr6p/qD6V2qsqdc+qR23vKaZtZ9Wt3IN5M5jypgZFM3simaf5VIJcB0EEEAAAQQQQAABBBBAAAEEEHC+AD1EAAEEEEAAAQQQQAABBBBAAAHnC9BDBBBAIH0KEKCYPu9LqrTqf2FF9G2Nh1UlZwFPfSYg8MEiV2mcK33TiYOe9Kq5Cnn2E9sZWa25Whe/Rlm9Ah+vdJUde3ULlcga7ilaOVdBz77ZaZivvJ4sXlM1wovaoEnTppfK1NX7Ve40pz3LgkPbPfvsIIAAAggggAACASlAoxFAAAEEEEAAAQQQQAABBBBAwPkC9BABBBBAAAEEEEAAAQQQQCBJAgQoJokpcDPdkKekzGyFBxv2kFm23vyKhlS9W7tPH9WhyFO2YyFBmVTblc8eXGBl8vardLt23vKarc/UOeP6tmpc4ArNPbTVU7pO3lKe/cR2GkSU8Tl9JLZNPomJHHAKAQQQQAABBBBAAAEEEEAAAQScL0APEUAAAQQQQAABBBBAAAEEEEDA+QL0EAEEEEDAmQIEKDrzvibaq9PRUeq++ndPnrp5SylHcGbPcXJ2Zh3crF/3rvYUvaPAFZ79xHaWH93tc7po1jCfYw4QQAABBBBA4JILcEEEEEAAAQQQQAABBBBAAAEEEHC+AD1EAAEEEEAAAQQQQAABBBBA4JIIEKB4SZgTusilT9908qAazBmuyXvXeC7+Upm6nn2zM3zLPLVY9JUeWTxOP+9eaZISXd7dMENN5o+RCXw0Ga/NXVzXhBczu3Z5+N9vNHDjLM05tNWTJ/JctH7bu1adVk6yedyrhvnLu3fZIoAAAggggAACCCCAAAIIIOAQAbqBAAIIIIAAAggggAACCCCAAALOF6CHCCCAAAIIIOBPgABFfyoOSTMBgNfPGqrb5o20S51/hqnG34O08theTw/bFL9GN+Qp6Tk+EnlaXVZN1pR9azVxzyq9vPJXzzmzc8/CsWo4N6Y+sy39x7vqs+5PReucOa3wkKwaXPVuu+9erT2xTz3XTtPt80ap2LQ+qv3PUJX8o68e+PcrrT2+351NdxWspP+FFfEcs4MAAggggECyBCiEAAIIIIAAAggggAACCCCAAALOF6CHCCCAAAIIIIAAAggggAACCCAQEAIpClAMiB5m4EaaoMFVx/dq3qFtdll+bI8nkDB7cGa9WeFW9a10+0UJHTx7UvMPx9RntociT3nK18pdTH9c11pls+f1pMXdMTMnmgDJE1FnfU7VzVtKQ6s29UnjAAEEEEAAAQQQQAABBBBAIH0I0AoEEEAAAQQQQAABBBBAAAEEEHC+AD1EAAEEEEAAAQTSQoAAxbRQTSd15s6cVeEhoT6tKZM9r9qVvE5L6j6v50pdryCfs1KYK3+vCreoWNYwVcqZX30q3uaTo3jWcJ8yWYKC1SCijEZWa67faj0hU79PAdfBp65zrYpVV9VcBRUcFHPFPJmz6aqwwnqyeE39UPMR/VSzlXIEZ3bl5h8CCCCQ4QUAQAABBBBAAAEEEEAAAQQQQAAB5wvQQwQQQAABBBBAAAEEEEAAAQQQcL4APXQJEKDoQgjEfyag72DDHjLLugad/Hbh+twltOmmLjaPyWeWhXWe01tXNFS+LNmV0H/tS9XWshtf0D+1n9E9har4ZPv86vt1IPa6pr7dt3bV9zVaxsvnXejKXIU0sPKd+vv6p7Tv1u62PRsavKw/r2uj/pUaq17e0t7Z2UcAAQQQQAABBBBAAAEEUlmA6hBAAAEEEEAAAQQQQAABBBBAwPkC9BABBBBAAAEEEEAgPQoQoJge7wptQgABBAJZgLYjgAACCCCAAAIIIIAAAggggIDzBeghAggggAACCCCAAAIIIIAAAgg4X4AeIpAKAgQopgIiVSCAAAIIIIAAAggggAACaSlA3QgggAACCCCAAAIIIIAAAggg4HwBeogAAggggAACCCCAgBMFCFB04l2lTwggkBIByiKAAAIIIIAAAggggAACCCCAgPMF6CECCCCAAAIIIIAAAggggAACCDhfgB4igEA6ECBAMR3cBJqAAAIIIIAAAggggICzBegdAggggAACCCCAAAIIIIAAAgg4X4AeIoAAAggggAACCCCAAALxBQhQjG9CCgKBLUDrEUAAAQQQQAABBBBAAAEEEEDA+QL0EAEEEEAAAQQQQAABBBBAAAEEnC9ADxFAAAEHCBCg6ICbSBcQQAABBBBAAAEE0laA2hFAAAEEEEAAAQQQQAABBBBAwPkC9BABBBBAAAEEEEAAAQQQQCD1BQhQTH1TakyZAKURQAABBBBAAAEEEEAAAQQQQMD5AvQQAQQQQAABBBBAAAEEEEAAAQScL0APEUAAAQQQEAGKDAIEEEAAAQQQQMDxAnQQAQQQQAABBBBAAAEEEEAAAQScL0APEUAAAQQQQAABBBBAAAEEEEh/AgQopvY9oT4EEEAAAQQQQAABBBBAAAEEEHC+AD1EAAEEEEAAAQQQQAABBBBAAAHnC9BDBBBAAAEEEEixAAGKKSakAgQQQAABBBBIawHqRwABBBBAAAEEEEAAAQQQQAAB5wvQQwQQQAABBBBAAAEEEEAAAQQQcJ5A3ABF5/WQHiGAAAIIIIAAAggggAACCCCAQFwBjhFAAAEEEEAAAQQQQAABBBBAwPkC9BABBBBAAAEEELjsAgQoXvZbQAMQQAABBJwvQA8RQAABBBBAAAEEEEAAAQQQQMD5AvQQAQQQQAABBBBAAAEEEEAAAQScL0APL1aAAMWLFSM/AggggAACCCCAAFchnDsAABAASURBVAIIIIDA5RegBQgggAACCCCAAAIIIIAAAggg4HwBeogAAggggAACCCAQ8AIpDlBcs/WQWDBgDDAGGAPOHgPcX+4vY4AxwBhgDDAGGAOMAcYAY4AxwBhgDDAGnD8GuMfcY8YAY4AxwBhgDDAGGAOMAcYAY4AxwBhgDDh/DHCPuccXOwZSGiGZ4gDFlDaA8ggggAACCCCAAAIIIIBABhSgywgggAACCCCAAAIIIIAAAggg4HwBeogAAggggAACCCCAQIYXSHGAYoXiucWCAWOAMZC+xwD3h/vDGGAMMAYYA4wBxgBjgDHAGGAMMAYYA4wB548B7jH3mDHAGGAMMAYYA4wBxgBjgDHAGGAMMAYYA84fA9xj7jFj4FKPgZRGWKY4QDGlDaB8wgIHj50Wy+mEgTiDAAIIIIAAAgggcPkEuDICCCCAAAIIIIAAAggggAACCDhfgB4igAACCCCAAAIIIIAAAikUIEAxhYAUR+BSCHANBBBAAAEEEEAAAQQQQAABBBBwvgA9RAABBBBAAAEEEEAAAQQQQAAB5wvQQwQQQCCjCRCgmNHuOP1FAAEEEEAAAQQQMAIsCCCAAAIIIIAAAggggAACCCDgfAF6iAACCCCAAAIIIIAAAgggcJkFCFC8zDcgY1yeXiKAAAIIIIAAAggggAACCCCAgPMF6CECCCCAAAIIIIAAAggggAACCDhfgB4igAACCCBwcQIEKF6cF7kRQAABBBBAAIH0IUArEEAAAQQQQAABBBBAAAEEEEDA+QL0EAEEEEAAAQQQQAABBBBAAIEAFyBAMQk3kCwIIIAAAggggAACCCCAAAIIIOB8AXqIAAIIIIAAAggggAACCCCAAALOF6CHCCCAAAIIIHBpBQhQvLTeXA0BBBBAAAEEYgRYI4AAAggggAACCCCAAAIIIICA8wXoIQIIIIAAAggggAACCCCAAAIIOF8g0R4SoJgoDycRQAABBBBAAAEEEEAAAQQQCBQB2okAAggggAACCCCAAAIIIIAAAs4XoIcIIIAAAggggEBgCRCgGFj3i9YigAACCKQXAdqBAAIIIIAAAggggAACCCCAAALOF6CHCCCAAAIIIIAAAggggAACCCDgfAF6mKYCBCimKS+VI4AAAggggAACCCCAAAIIJFWAfAgggAACCCCAAAIIIIAAAggg4HwBeogAAggggAACCCCQsQQIUMxY95veIoAAAm4BtggggAACCCCAAAIIIIAAAggg4HwBeogAAggggAACCCCAAAIIIIAAAs4XoIcIpGsBAhTT9e2hcQgggAACCCCAAAIIIBA4ArQUAQQQQAABBBBAAAEEEEAAAQScL0APEUAAAQQQQAABBBBA4GIECFC8GC3yIoBA+hGgJQgggAACCCCAAAIIIIAAAggg4HwBeogAAggggAACCCCAAAIIIIAAAs4XoIcIIOBoAQIUHX176RwCCCCAAAIIIIAAAkkXICcCCCCAAAIIIIAAAggggAACCDhfgB4igAACCCCAAAIIIIAAApdSgADFS6nNtRA4L8AeAggggAACCCCAAAIIIIAAAgg4X4AeIoAAAggggAACCCCAAAIIIICA8wXoIQIIIIBAIgIEKCaCwykEEEAAAQQQQACBQBKgrQgg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" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "['positive_rank1_feature2259_logit_effects',\n", - " 'positive_rank1_feature2259_token_contributions',\n", - " 'negative_rank1_feature8293_logit_effects',\n", - " 'negative_rank1_feature8293_token_contributions']" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Build interactive figures for the targets; optionally export static PNGs.\n", - "SAVE_STATIC_PNG = False\n", - "figures = {}\n", - "png_files = []\n", - "\n", - "for row in target_rows:\n", - " current_feature_id = row[\"feature_id\"]\n", - " prefix = f\"{row['assoc']}_rank{row['rank']}_feature{current_feature_id}\"\n", - " logit_fig = plot_sae_feature_logit_effects(\n", - " current_feature_id,\n", - " decoder=decoder,\n", - " unembedding=unembedding,\n", - " token_labels=token_labels,\n", - " token_ids=list(range(model.tokenizer.vocab_size)),\n", - " title=f\"SST-2 SAE {row['assoc']} feature {current_feature_id} raw GPT-2 logit effects\",\n", - " )\n", - " if \"plot_examples\" not in row:\n", - " raise RuntimeError(\n", - " \"Rerun the ranking cell so rows include contribution plot examples.\"\n", - " )\n", - " activation_fig = plot_sae_token_activations(\n", - " examples=row[\"plot_examples\"],\n", - " title=f\"SST-2 SAE {row['assoc']} feature {current_feature_id} label-evidence token contributions\",\n", - " )\n", - " figures[f\"{prefix}_logit_effects\"] = logit_fig\n", - " figures[f\"{prefix}_token_contributions\"] = activation_fig\n", - " row[\"logit_effects_figure\"] = f\"{prefix}_logit_effects\"\n", - " row[\"token_activations_figure\"] = f\"{prefix}_token_contributions\"\n", - "\n", - " if SAVE_STATIC_PNG:\n", - " logit_path = Path(results[\"output_dir\"]) / f\"{prefix}_logit_effects.png\"\n", - " activation_path = (\n", - " Path(results[\"output_dir\"]) / f\"{prefix}_token_contributions.png\"\n", - " )\n", - " logit_fig.write_image(logit_path)\n", - " activation_fig.write_image(activation_path)\n", - " png_files.extend([str(logit_path), str(activation_path)])\n", - "\n", - "for row in target_rows:\n", - " display(figures[row[\"logit_effects_figure\"]])\n", - " display(figures[row[\"token_activations_figure\"]])\n", - "png_files or list(figures)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python (nlp-gpu)", - "language": "python", - "name": "nlp-gpu" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/pyproject.toml b/pyproject.toml index b05662c..90814f5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,13 +58,12 @@ packages = ["src/murano"] [tool.hatch.build.targets.sdist] # Ship only what is needed to build and understand the package; keep the docs -# site (and its node_modules), notebooks, and tutorials out of the PyPI source +# site (and its node_modules) and the notebooks out of the PyPI source # distribution. exclude takes precedence, so this also drops the nested # node_modules that the docs .gitignore hides but the sdist builder does not. exclude = [ "/docs", "/notebooks", - "/tutorials", "**/node_modules", ] @@ -120,7 +119,7 @@ style = "pep440" bump = true [tool.coverage.run] -source = ["examples", "src"] +source = ["src"] omit = [ "*/tests/*", "*/__pycache__/*", diff --git a/src/murano/__init__.py b/src/murano/__init__.py index 1656345..eed629e 100644 --- a/src/murano/__init__.py +++ b/src/murano/__init__.py @@ -20,6 +20,7 @@ GenerationComparison, MetricComparison, PromptBatch, + SweepResult, ) from murano.dataset import CleanCorruptDataset, LabeledDataset, MuranoDataset from murano.io import ( @@ -84,6 +85,7 @@ "MetricComparison": ("murano.artifacts", "MetricComparison"), "MetricScore": ("murano.artifacts", "MetricScore"), "ComponentSelection": ("murano.artifacts", "ComponentSelection"), + "SweepResult": ("murano.artifacts", "SweepResult"), "SelectComponents": ("murano.steps.select", "SelectComponents"), "MuranoDataset": ("murano.dataset", "MuranoDataset"), "LabeledDataset": ("murano.dataset", "LabeledDataset"), @@ -138,6 +140,7 @@ "MetricComparison", "MetricScore", "ComponentSelection", + "SweepResult", "SelectComponents", "MuranoDataset", "LabeledDataset", diff --git a/src/murano/artifacts.py b/src/murano/artifacts.py index 8a93ed4..a4c6c9e 100644 --- a/src/murano/artifacts.py +++ b/src/murano/artifacts.py @@ -5,7 +5,7 @@ from dataclasses import dataclass, field from typing import Any -from murano.nodes import Node, NodeDict +from murano.nodes import SELF_ATTN, Node, NodeDict @dataclass @@ -103,6 +103,137 @@ def __contains__(self, node: object) -> bool: return False +@dataclass +class SweepResult: + """Per-item scores from running one step chain once per swept item. + + A :class:`~murano.steps.sweep.Sweep` forks the pipeline's ``Results`` once per + item, applies the steps built for that item, and harvests one or more metric + keys. Each harvested key becomes a *column*: an ordered ``{item: float}`` map, + in the order the items were swept. + + When every swept item is a :class:`~murano.nodes.Node`, the sweep is a + *component* sweep and :attr:`contributions` exposes the primary column as a + :class:`~murano.nodes.NodeDict`. That is the same shape + :class:`~murano.steps.logit_attribution.LogitAttributionResult` publishes, so a + component sweep drops straight into + :class:`~murano.steps.select.SelectComponents` without an adapter. + + Attributes: + columns: ``{read_key: {item: float}}``, one entry per harvested key. + primary: Read key whose column :attr:`scores` returns; the first key + passed to ``Sweep(read=...)``. + contributions: The primary column as a ``{Node: float}`` NodeDict when + every swept item is a Node, otherwise None. + metadata: Provenance (harvested keys, item labels, swept step names). + """ + + columns: dict[str, dict[Any, float]] + primary: str + metadata: dict[str, Any] = field(default_factory=dict) + contributions: NodeDict | None = field(init=False, default=None) + + def __post_init__(self) -> None: + if self.primary not in self.columns: + raise ValueError( + f"primary={self.primary!r} is not one of the harvested columns " + f"{sorted(self.columns)}." + ) + items = self.columns[self.primary] + if items and all(isinstance(item, Node) for item in items): + self.columns = { + key: NodeDict(column) for key, column in self.columns.items() + } + self.contributions = self.columns[self.primary] # type: ignore[assignment] + + @property + def scores(self) -> dict[Any, float]: + """The primary column: ``{item: value}`` in swept order.""" + return self.columns[self.primary] + + @property + def swept(self) -> list[Any]: + """The swept items, in the order they were swept. + + Deliberately not named ``items``: a mapping-shaped ``items`` attribute + would make this artifact duck-type as a dict for callers that probe with + ``hasattr(x, "items")``, and they would then call a list. + """ + return list(self.scores) + + def column(self, key: str | None = None) -> dict[Any, float]: + """Return one harvested column, defaulting to the primary one. + + Args: + key: Harvested read key. None selects :attr:`primary`. + + Returns: + The ``{item: value}`` map for ``key``. + + Raises: + KeyError: If ``key`` was not harvested by the sweep. + """ + name = self.primary if key is None else key + if name not in self.columns: + raise KeyError( + f"'{name}' was not harvested by this sweep; it read " + f"{sorted(self.columns)}." + ) + return self.columns[name] + + def head_matrix( + self, + n_layers: int | None = None, + n_heads: int | None = None, + column: str | None = None, + fill: float = float("nan"), + ) -> list[list[float]]: + """Return the scores as a dense ``[n_layers, n_heads]`` grid. + + The grid is what :func:`~murano.plotting.plot_head_matrix` consumes. + Positions the sweep never visited hold ``fill``; the default NaN renders + as a blank cell, so an unswept head never reads as a head with no effect. + + Args: + n_layers: Grid height. Defaults to one past the deepest swept layer. + n_heads: Grid width. Defaults to one past the highest swept head. + column: Harvested key to render. None selects :attr:`primary`. + fill: Value for positions the sweep did not visit. + + Returns: + A nested list of floats, indexed ``[layer][head]``. + + Raises: + TypeError: If the sweep's items are not all attention-head Nodes. + """ + scores = self.column(column) + bad = [ + item + for item in scores + if not isinstance(item, Node) + or item.module != SELF_ATTN + or item.head is None + ] + if bad or not scores: + raise TypeError( + "head_matrix() needs a sweep over attention heads " + f"(Node(layer, 'self_attn', head=...)); got {bad[:3] or 'no items'}." + ) + deepest = max(item.layer for item in scores) + widest = max(item.head for item in scores) # type: ignore[type-var] + rows = deepest + 1 if n_layers is None else n_layers + cols = widest + 1 if n_heads is None else n_heads + if rows <= deepest or cols <= widest: + raise ValueError( + f"the sweep reaches L{deepest}H{widest}, which does not fit a " + f"{rows}x{cols} grid." + ) + grid = [[fill] * cols for _ in range(rows)] + for item, value in scores.items(): + grid[item.layer][item.head] = value # type: ignore[index] + return grid + + @dataclass class MetricComparison: """Aggregate metric comparing baseline vs modified generations. diff --git a/src/murano/io.py b/src/murano/io.py index 7aa6c5c..9cc9edc 100644 --- a/src/murano/io.py +++ b/src/murano/io.py @@ -459,6 +459,58 @@ def load_component_selection(path: str | Path) -> Any: ) +def save_sweep_result(sweep: Any, path: Path) -> None: + """Save a SweepResult to a JSON file. + + Swept items are stored by their string form, alongside the flag that says + whether they were Node addresses, so the loader can rebuild a component + sweep's Node keys and leave any other sweep's labels as plain strings. + + Args: + sweep: SweepResult to serialize. + path: Output path. Parent directory is created if missing. + """ + path.parent.mkdir(parents=True, exist_ok=True) + data = { + "primary": sweep.primary, + "columns": { + key: {str(item): value for item, value in column.items()} + for key, column in sweep.columns.items() + }, + "component_sweep": sweep.contributions is not None, + "metadata": sweep.metadata, + } + _write_json(path, data) + logger.info("Saved sweep result to %s", path) + + +def load_sweep_result(path: str | Path) -> Any: + """Load a SweepResult from a file written by :func:`save_sweep_result`. + + Args: + path: Path to the sweep.json file. + + Returns: + SweepResult. A component sweep's item keys are coerced back to Node + objects; every other sweep keeps its string labels, because the original + item type (an int layer index, an ablation method name) is not recoverable + from the label and the scores do not depend on it. + """ + from murano.artifacts import SweepResult + from murano.nodes import Node + + data = json.loads(Path(path).read_text()) + to_item = Node.coerce if data.get("component_sweep") else (lambda label: label) + return SweepResult( + columns={ + key: {to_item(label): value for label, value in column.items()} + for key, column in data["columns"].items() + }, + primary=data["primary"], + metadata=data.get("metadata", {}), + ) + + def save_activation_store(activation_store: Any, path: Path) -> None: """Save an ActivationStore to a .pt file. @@ -777,7 +829,7 @@ def register_artifact_serializer( def _serializer_registry() -> list[tuple[type, ArtifactSerializer]]: - from murano.artifacts import ComponentSelection + from murano.artifacts import ComponentSelection, SweepResult from murano.steps.attention import AttentionResult from murano.steps.logit_attribution import LogitAttributionResult from murano.steps.logit_lens import LogitLensResult @@ -952,6 +1004,21 @@ def serialize_component_selection( "metadata": selection.metadata, } + def serialize_sweep_result( + key: str, + sweep: Any, + out: Path, + _results: Any, + metadata: dict[str, Any], + ) -> None: + filename = "sweep.json" if key == keys.SWEEP else f"{key}.json" + save_sweep_result(sweep, out / "sweep" / filename) + metadata[key] = { + "primary": sweep.primary, + "read": list(sweep.columns), + "n_items": len(sweep.scores), + } + def serialize_activation_store( key: str, store: Any, @@ -1059,6 +1126,7 @@ def serialize_sae_labels( register_artifact_serializer( registry, ComponentSelection, serialize_component_selection ) + register_artifact_serializer(registry, SweepResult, serialize_sweep_result) register_artifact_serializer(registry, ActivationStore, serialize_activation_store) register_artifact_serializer( registry, LabeledActivationStore, serialize_labeled_activation_store diff --git a/src/murano/keys.py b/src/murano/keys.py index 0ba005d..1a3e3cf 100644 --- a/src/murano/keys.py +++ b/src/murano/keys.py @@ -23,6 +23,7 @@ SAE_RECORD: Final = "sae_record" FEATURE_EXAMPLES: Final = "feature_examples" SELECTION: Final = "selection" +SWEEP: Final = "sweep" METRIC: Final = "metric" WEIGHT_ABLATION: Final = "weight_ablation" OUTPUT_DIR: Final = "output_dir" @@ -41,6 +42,7 @@ LOGIT_DIFF: Final = "logit_diff" KL_DIV: Final = "kl_div" ANSWER_LOGPROB: Final = "answer_logprob" +ANSWER_RANK: Final = "answer_rank" RECOVERED: Final = "recovered" ABLATED_LOGITS: Final = "ablated_logits" diff --git a/src/murano/plotting/__init__.py b/src/murano/plotting/__init__.py index e59e900..21187ec 100644 --- a/src/murano/plotting/__init__.py +++ b/src/murano/plotting/__init__.py @@ -1,13 +1,15 @@ """Plotting utilities for Murano results.""" +from murano.plotting.activations import plot_activation_projection from murano.plotting.steering import ( plot_separation_scores, plot_direction_cosine_similarity, ) from murano.plotting.logit_lens import plot_logit_lens from murano.plotting.logit_attribution import plot_logit_attribution -from murano.plotting.probing import plot_probe_accuracy +from murano.plotting.probing import plot_confusion_matrix, plot_probe_accuracy from murano.plotting.attention import plot_attention_pattern, plot_head_matrix +from murano.plotting.sweep import plot_sweep from murano.plotting.plotly_utils import ( plot_heatmap, plot_line_chart, @@ -19,6 +21,7 @@ ) __all__ = [ + "plot_activation_projection", "plot_separation_scores", "plot_direction_cosine_similarity", "plot_heatmap", @@ -28,7 +31,9 @@ "plot_sae_feature_logit_effects", "plot_sae_token_activations", "plot_logit_attribution", + "plot_confusion_matrix", "plot_probe_accuracy", "plot_attention_pattern", "plot_head_matrix", + "plot_sweep", ] diff --git a/src/murano/plotting/activations.py b/src/murano/plotting/activations.py new file mode 100644 index 0000000..8d1b7ae --- /dev/null +++ b/src/murano/plotting/activations.py @@ -0,0 +1,207 @@ +"""Plotly visualization for recorded activations. + +Projects a single component's high-dimensional activations down to two +dimensions and scatters them by class, so the linear structure a probe or a +steering vector exploits becomes visible. + +The dimensionality reducer is supplied by the caller rather than imported here, +which keeps scikit-learn out of this module's dependencies and leaves the choice +of method (PCA, LDA, t-SNE, UMAP, ...) open. + +Requires the ``plot`` extra (install with ``pip install murano-interp[plot]``). +""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Any, Protocol + +import numpy as np + +from murano._optional import require_optional +from murano.nodes import Node +from murano.plotting.plotly_utils import CATEGORY_COLORS + +if TYPE_CHECKING: + import plotly.graph_objects as go + + from murano.nodes import AddressLike + from murano.steps.record import ActivationStore, LabeledActivationStore + + +class Reducer(Protocol): + """Any scikit-learn-style dimensionality reducer. + + Supervised reducers such as LDA consume ``y``; unsupervised ones such as PCA + accept and ignore it, so a single call site serves both. + """ + + def fit_transform(self, X: Any, y: Any = None, /) -> Any: ... + + +def _labeled_points( + store: ActivationStore | LabeledActivationStore, + node: Node, + label_names: list[str] | None, +) -> tuple[np.ndarray, list[str], list[str]]: + """Return one component's activations, a class label per row, and the classes. + + Args: + store: A contrastive :class:`~murano.steps.record.ActivationStore` or a + :class:`~murano.steps.record.LabeledActivationStore`. + node: Canonical address of the component to read. + label_names: Names for the integer labels of a labeled store, indexed by + label value. Ignored for a contrastive store, which names its own + two classes. + + Returns: + A ``(X, y, classes)`` triple: activations ``[N, d_model]`` as float32, + ``N`` class-name strings, and the distinct class names in a fixed order + that does not depend on the order of the rows. + + Raises: + ValueError: If ``label_names`` does not cover every label in the store. + """ + from murano.steps.record import ActivationStore as _ActivationStore + + if isinstance(store, _ActivationStore): + positive = store.positive[node] + negative = store.negative[node] + # .float() first: a bf16 tensor has no numpy equivalent. + rows = np.concatenate( + [positive.float().cpu().numpy(), negative.float().cpu().numpy()] + ) + names = ["positive"] * len(positive) + ["negative"] * len(negative) + return rows, names, ["positive", "negative"] + + rows = store.activations[node].float().cpu().numpy() + labels = [int(label) for label in store.labels.cpu().numpy()] + # Ordered by label value, never by row order: otherwise shuffling the dataset + # would silently swap which class gets which color. + distinct = sorted(set(labels)) + + if label_names is None: + name_of = {value: str(value) for value in distinct} + else: + unnamed = [v for v in distinct if not 0 <= v < len(label_names)] + if unnamed: + raise ValueError( + f"label_names has {len(label_names)} entries but the store holds " + f"label(s) {unnamed}; pass one name per label value, indexed by " + f"that value." + ) + name_of = {value: label_names[value] for value in distinct} + + return rows, [name_of[label] for label in labels], [name_of[v] for v in distinct] + + +def plot_activation_projection( + store: ActivationStore | LabeledActivationStore, + layer: AddressLike, + reducer: Reducer, + *, + normalize: bool = True, + label_names: list[str] | None = None, + title: str = "Activation projection", +) -> go.Figure: + """Scatter one component's activations in a two-dimensional projection. + + Accepts either activation store: a contrastive + :class:`~murano.steps.record.ActivationStore` is colored positive against + negative, while a :class:`~murano.steps.record.LabeledActivationStore` is + colored by its integer labels. That lets a single ``Record`` feed both this + plot and the :class:`~murano.steps.probe.Probe` step. + + A reducer yielding one component is scattered along x with the classes + separated vertically; two or more components use the first two. + + Args: + store: Activation store recorded at a reduced token position. + layer: Component address to project. + reducer: Fitted-on-call reducer, e.g. ``PCA(n_components=2)`` or + ``LinearDiscriminantAnalysis(n_components=1)``. Class labels are + passed to ``fit_transform`` so supervised reducers work unchanged. + normalize: Scale each activation vector to unit L2 norm before + reducing, so the projection reflects direction rather than + magnitude. Zero vectors are left untouched. + label_names: Names for the integer labels of a labeled store, indexed + by label value. Ignored for a contrastive store. + title: Plot title. + + Returns: + A ``plotly.graph_objects.Figure`` with one scatter trace per class. + Classes are colored by label value (or positive-then-negative), not by + the order they appear in the data, so the same class keeps its color + across runs on reordered data. + + Raises: + ValueError: If ``store`` was recorded with ``position="none"`` or + ``per_head=True``, which carry extra dimensions this projection + cannot interpret, or if ``label_names`` does not cover every label + in the store. + """ + require_optional("plot", "plotly") + import plotly.graph_objects as go + + # Imported here, not at module scope: murano.plotting must stay importable + # without pulling in murano.steps (and with it the whole nnsight model + # stack) just to draw a scatter. This is the one shared definition of what + # counts as a reduced store. + from murano.steps.record import _require_reduced_store + + _require_reduced_store(store, "plot_activation_projection") + + # Coerce the address once, at the public boundary, so the shorthand forms + # stop here and everything below works with a canonical Node. + node = Node.coerce(layer) + rows, names, classes = _labeled_points(store, node, label_names) + + if normalize: + norms = np.linalg.norm(rows, axis=1, keepdims=True) + # A zero row has no direction to preserve; dividing by 1 leaves it at + # the origin instead of producing NaNs that poison the reducer. + norms[norms == 0] = 1.0 + rows = rows / norms + + reduced = np.asarray(reducer.fit_transform(rows, names)) + if reduced.ndim == 1: + # Some reducers hand back a flat array for a single component. + reduced = reduced[:, None] + one_dimensional = reduced.shape[1] == 1 + + fig = go.Figure() + for index, label in enumerate(classes): + mask = [name == label for name in names] + selected = reduced[mask] + indices = [i for i, keep in enumerate(mask) if keep] + if one_dimensional: + # Nothing to plot against, so fan the classes out on y purely to + # keep their points from overlapping into a single line. + x_values, y_values = selected[:, 0], np.full(len(selected), float(index)) + else: + x_values, y_values = selected[:, 0], selected[:, 1] + fig.add_trace( + go.Scatter( + x=x_values, + y=y_values, + mode="markers", + name=label, + marker={ + "size": 8, + "opacity": 0.75, + "color": CATEGORY_COLORS[index % len(CATEGORY_COLORS)], + }, + customdata=indices, + hovertemplate=f"{label}
example %{{customdata}}", + ) + ) + + fig.update_layout( + title=f"{title} ({node})", + xaxis_title="Component 1", + yaxis_title="" if one_dimensional else "Component 2", + template="plotly_white", + legend_title="Class", + ) + if one_dimensional: + fig.update_yaxes(showticklabels=False) + return fig diff --git a/src/murano/plotting/attention.py b/src/murano/plotting/attention.py index 72ab015..e8e0619 100644 --- a/src/murano/plotting/attention.py +++ b/src/murano/plotting/attention.py @@ -80,6 +80,7 @@ def plot_head_matrix( layers: list[int] | None = None, value_label: str = "", color_scale: str = "Viridis", + zmid: float | None = None, ) -> go.Figure: """Render a layer-by-head heatmap of a per-head statistic. @@ -90,6 +91,9 @@ def plot_head_matrix( layers: Layer indices for the y-axis labels; defaults to ``0..n-1``. value_label: Label for the colorbar (the statistic being shown). color_scale: Plotly colorscale name. + zmid: Value anchored to the middle of the colorscale. Pass ``0`` for a + signed statistic on a diverging scale, so a head with no effect is + drawn in the neutral color. Returns: A ``plotly.graph_objects.Figure`` heatmap with layers on the y-axis @@ -107,6 +111,7 @@ def plot_head_matrix( title=title, color_scale=color_scale, colorbar_title=value_label, + zmid=zmid, ) fig.update_layout(xaxis_title="Head", yaxis_title="Layer") fig.update_yaxes(autorange="reversed") diff --git a/src/murano/plotting/plotly_utils.py b/src/murano/plotting/plotly_utils.py index 3026306..d4d148a 100644 --- a/src/murano/plotting/plotly_utils.py +++ b/src/murano/plotting/plotly_utils.py @@ -25,6 +25,22 @@ BAR_COLOR = "#4c72b0" HIGHLIGHT_COLOR = "#c44e52" +# The same muted palette, for plots that color by class rather than by rank. +# BAR_COLOR and HIGHLIGHT_COLOR lead it, so a two-class plot lands on the same +# blue/red pairing the bar charts use; further classes cycle through the rest. +CATEGORY_COLORS = ( + BAR_COLOR, + HIGHLIGHT_COLOR, + "#55a868", + "#dd8452", + "#8172b3", + "#937860", + "#da8bc3", + "#8c8c8c", + "#ccb974", + "#64b5cd", +) + def plot_heatmap( z_data: list[list[float]] | list[list[int]], @@ -35,6 +51,7 @@ def plot_heatmap( hover_data: list[list[str]] | None = None, colorbar_title: str = "", square: bool = False, + zmid: float | None = None, ) -> go.Figure: """Create a heatmap figure. @@ -50,6 +67,10 @@ def plot_heatmap( colorbar_title: Label for the colorbar (the value legend); blank hides it. square: If True, force square cells (equal x and y scale), for a matrix whose axes share a unit such as an attention pattern. + zmid: Value anchored to the middle of the colorscale. Pass ``0`` with a + diverging scale so that the neutral color means zero; otherwise an + asymmetric range silently shifts the midpoint and shades zero as if + it had a sign. Returns: A ``plotly.graph_objects.Figure`` with a single heatmap trace. @@ -66,6 +87,7 @@ def plot_heatmap( x=x_labels, y=y_labels, colorscale=color_scale, + zmid=zmid, colorbar=dict(title=dict(text=colorbar_title, side="right")), customdata=hover_data, hovertemplate=( diff --git a/src/murano/plotting/sweep.py b/src/murano/plotting/sweep.py new file mode 100644 index 0000000..9a1cfd6 --- /dev/null +++ b/src/murano/plotting/sweep.py @@ -0,0 +1,90 @@ +"""Plot the scores a Sweep collected, choosing the shape from the swept items. + +A sweep over attention heads has a canonical picture, the layer-by-head heatmap. +Anything else (layer indices, ablation method names) has no such geometry, so it +falls back to one bar per swept item. + +Requires the ``plot`` extra (install with ``pip install murano-interp[plot]``). +""" + +from __future__ import annotations + +from typing import TYPE_CHECKING + +from murano._optional import require_optional +from murano.nodes import SELF_ATTN, Node +from murano.plotting.attention import plot_head_matrix +from murano.plotting.plotly_utils import BAR_COLOR, HIGHLIGHT_COLOR + +if TYPE_CHECKING: + import plotly.graph_objects as go + + from murano.artifacts import SweepResult + + +def _is_head_sweep(scores: dict) -> bool: + """Whether every swept item addresses one attention head.""" + return bool(scores) and all( + isinstance(item, Node) and item.module == SELF_ATTN and item.head is not None + for item in scores + ) + + +def plot_sweep( + result: SweepResult, + column: str | None = None, + title: str = "", + diverging: bool | None = None, +) -> go.Figure: + """Render a sweep's scores: a layer-by-head heatmap, or a bar per item. + + A sweep over attention heads becomes the canonical heatmap; anything else + (layer indices, ablation method names, sender/receiver pairs) becomes one bar + per item, in swept order. + + Args: + result: The SweepResult to render. + column: Harvested key to render. None selects the sweep's primary column. + title: Plot title. Defaults to the column name. + diverging: Center the color scale (heatmap) or color by sign (bars) at + zero. None decides from the data: a column whose values straddle zero + is diverging, one that does not is sequential. A signed statistic + drawn on a sequential scale reads as if zero had a sign. + + Returns: + A ``plotly.graph_objects.Figure``. + """ + require_optional("plot", "plotly") + import plotly.graph_objects as go + + scores = result.column(column) + name = column or result.primary + label = title or name + values = list(scores.values()) + if diverging is None: + diverging = min(values) < 0.0 < max(values) + + if _is_head_sweep(scores): + return plot_head_matrix( + result.head_matrix(column=column), + title=label, + value_label=name, + color_scale="RdBu" if diverging else "Viridis", + zmid=0.0 if diverging else None, + ) + + labels = [str(item) for item in scores] + colors = ( + [HIGHLIGHT_COLOR if value < 0 else BAR_COLOR for value in values] + if diverging + else BAR_COLOR + ) + fig = go.Figure(go.Bar(x=labels, y=values, marker_color=colors)) + fig.update_layout( + title=label, + xaxis_title="item", + yaxis_title=name, + template="plotly_white", + showlegend=False, + ) + return fig diff --git a/src/murano/steps/__init__.py b/src/murano/steps/__init__.py index 4271720..364c83a 100644 --- a/src/murano/steps/__init__.py +++ b/src/murano/steps/__init__.py @@ -12,6 +12,7 @@ from murano.steps.patch import Patch from murano.steps.path_patch import PathPatch from murano.steps.select import SelectComponents +from murano.steps.sweep import Sweep from murano.steps.attention import ( AblateAttention, AttentionResult, @@ -44,6 +45,7 @@ LogitDiffStep, KLDivergenceStep, AnswerLogProbStep, + AnswerRankStep, RecoveredMetricStep, ) @@ -60,6 +62,7 @@ "Patch", "PathPatch", "SelectComponents", + "Sweep", "RecordAttention", "AblateAttention", "AttentionResult", @@ -89,5 +92,6 @@ "LogitDiffStep", "KLDivergenceStep", "AnswerLogProbStep", + "AnswerRankStep", "RecoveredMetricStep", ] diff --git a/src/murano/steps/intervene.py b/src/murano/steps/intervene.py index ded519f..69bf9f6 100644 --- a/src/murano/steps/intervene.py +++ b/src/murano/steps/intervene.py @@ -120,11 +120,20 @@ class Intervene(Step): compose in a single pipeline. With ``direction_key``, ``direction_layers`` chooses which of the recorded - per-layer directions to apply. A ``SteeringResult`` carries one direction per - recorded layer; adding all of them at once over-steers deep models into - degenerate text, so ``"best"`` (the single best-separating layer) or an - explicit layer list keeps the flagship one-pipeline steer coherent, while - ``"all"`` preserves the every-layer behavior. + per-layer directions to apply, and defaults to ``"all"``. A ``SteeringResult`` + carries one direction per recorded layer, and no setting is right everywhere: + + - ``"all"`` applies every recorded direction. On a deep model, or at a large + ``alpha``, that can swamp the residual stream and drive generation into + degenerate text. + - ``"best"`` applies only ``SteeringResult.best_layer``, the layer whose + activations *separate* the classes best. Separability is not efficacy: a + concept is often most separable in an early layer, whose contribution later + layers overwrite, so steering there can change nothing at all. + - An explicit layer list gives full control. + + Which setting works is empirical. Vary ``alpha`` alongside it and read the + generations. Reads from results: results['prompts']: PromptBatch @@ -145,7 +154,7 @@ class Intervene(Step): direction_layers: With ``direction_key``, which recorded directions to apply: ``"all"`` every layer, ``"best"`` only the best-separating layer (``SteeringResult.best_layer``), or an explicit list of layer - indices. Only valid with ``direction_key``. + indices. Defaults to ``"all"``. Only valid with ``direction_key``. layers: Layers to apply the intervention at, or ``"all"``. modules: Module name(s) to apply the intervention at each layer. gen_kwargs: Keyword arguments forwarded to generation. diff --git a/src/murano/steps/logits.py b/src/murano/steps/logits.py index f72084a..83d85a9 100644 --- a/src/murano/steps/logits.py +++ b/src/murano/steps/logits.py @@ -10,13 +10,14 @@ from __future__ import annotations -from typing import TYPE_CHECKING, cast +from typing import TYPE_CHECKING, Callable, cast from torch import Tensor, full, long # pyright: ignore[reportPrivateImportUsage] from murano import keys from murano.artifacts import PromptBatch from murano.logging import logger +from murano.nodes import Node from murano.results import Results from murano.steps.base import Step @@ -32,6 +33,13 @@ class Logits(Step): ``targets`` is set (the default), it also writes left-shifted next-token target IDs so ``CrossEntropyLossStep``/``AccuracyStep`` can run directly. + With ``fn`` given, the pass is intervened: ``fn`` rewrites each hooked + module's activation before the logits are read. This is the forward-pass + analogue of :class:`~murano.steps.intervene.Intervene`, which applies the same + edit during generation. Reach for it to *measure* an intervention with a + metric rather than read it off a completion: a twelve-layer steering sweep + costs twelve forward passes instead of twelve decodes. + Reads from results: results[prompts_key]: PromptBatch (default ``prompts``). Set this to run the step on a different prompt set, e.g. the corrupt side of a @@ -57,6 +65,15 @@ class Logits(Step): targets: Target-generation mode. ``"next_token"`` writes left-shifted next-token targets; ``None`` writes logits only, for callers that supply their own task targets (e.g. logit-diff). + fn: ``(activation, node) -> activation``, applied to each hooked module's + activation before the logits are read; for example + ``steer_direction(direction, alpha=4)`` or ``ablate_direction(...)``. + ``None`` (the default) runs the plain forward pass, in which case + ``layers``, ``modules``, and ``per_head`` are ignored. + layers: Layer indices to hook, or ``"all"``. + modules: Module name(s) to hook at each layer. + per_head: Hook the attention output projection's input and hand ``fn`` the + per-head activation, so it can rewrite one head's slice. Raises: ValueError: If ``targets`` is neither ``"next_token"`` nor ``None``. @@ -73,6 +90,10 @@ def __init__( targets_key: str = keys.TARGET_IDS, mask_key: str = keys.ATTENTION_MASK, targets: str | None = "next_token", + fn: Callable[[Tensor, Node], Tensor] | None = None, + layers: list[int] | str = "all", + modules: str | list[str] = "residual", + per_head: bool = False, ): if targets not in ("next_token", None): raise ValueError(f"targets must be 'next_token' or None, got {targets!r}") @@ -82,6 +103,10 @@ def __init__( self.targets_key = targets_key self.mask_key = mask_key self.targets = targets + self.fn = fn + self.layers = layers + self.modules = modules + self.per_head = per_head self.reads = [prompts_key] self.read_types = {prompts_key: PromptBatch} # The mask is independent of targets; only advertise target_ids when we @@ -97,7 +122,9 @@ def __init__( def __call__(self, results: Results) -> Results: prompt_batch: PromptBatch = results[self.prompts_key] prompts = prompt_batch.prompts - logger.info("Logits: %d prompts", len(prompts)) + logger.info( + "Logits: %d prompts%s", len(prompts), " (intervened)" if self.fn else "" + ) tokens = self.model.tokenizer( prompts, @@ -107,7 +134,13 @@ def __call__(self, results: Results) -> Results: return_token_type_ids=False, ) attention_mask = cast(Tensor, tokens["attention_mask"]) - results[self.logits_key] = self.model.forward_logits(tokens) + results[self.logits_key] = self.model.forward_logits( + tokens, + fn=self.fn, + layers=self.layers, + modules=self.modules, + per_head=self.per_head, + ) results[self.mask_key] = attention_mask.detach().cpu() if self.targets: results[self.targets_key] = self._next_token_targets( diff --git a/src/murano/steps/metrics.py b/src/murano/steps/metrics.py index 3ab39ce..24a9aef 100644 --- a/src/murano/steps/metrics.py +++ b/src/murano/steps/metrics.py @@ -571,6 +571,91 @@ def __call__(self, results: Results) -> Results: return results +class AnswerRankStep(Step): + """Rank of the correct answer token among the whole vocabulary. + + Counts how many tokens the model scores strictly above the correct answer at + the answer position. Rank 0 means the model would emit the answer greedily. + Unlike :class:`LogitDiffStep`, the rank ignores *how far* ahead the answer is, + which makes it a blunt but very readable check: it bottoms out at 0 long + before the logit difference stops moving. + + Ties are resolved optimistically (a tied token does not count against the + answer), so the reported rank is the best position the answer could occupy. + When the answer spec names a token set, each token's rank is computed and the + mean reported, matching how :class:`AnswerLogProbStep` averages a set. + + Reads from results: + results[logits_key]: Tensor [B, S, V]. + results[mask_key]: optional Tensor [B, S] for the answer position. + + Writes to results: + results[output_key]: MetricScore. + + Args: + correct: Correct-answer token spec (id, string, per-example sequence, or + tensor), as in :class:`LogitDiffStep`. + logits_key: Results key holding the logits. + mask_key: Results key holding the attention mask. + output_key: Results key to write the MetricScore under. + positions: Optional explicit answer position(s); overrides the mask. + model: Model backend, required only to tokenize string answers. + """ + + reads: list[str] = [] + writes: list[str] = [] + + def __init__( + self, + correct: int | str | Sequence[int] | Sequence[str] | torch.Tensor, + logits_key: str = keys.FINAL_LOGITS, + mask_key: str = keys.ATTENTION_MASK, + output_key: str = keys.ANSWER_RANK, + positions: int | Sequence[int] | torch.Tensor | None = None, + model: ModelBackend | None = None, + ): + self.correct = correct + self.logits_key = logits_key + self.mask_key = mask_key + self.output_key = output_key + self.positions = positions + self.model = model + self.reads = [logits_key] + self.writes = [output_key] + self.read_types = {logits_key: torch.Tensor} + self.write_types = {output_key: MetricScore} + + def __call__(self, results: Results) -> Results: + logits: torch.Tensor = results[self.logits_key] + batch_size, _, vocab_size = logits.shape + positions = _answer_positions( + logits, results.get(self.mask_key), self.positions + ) + ids = _answer_token_ids(self.correct, batch_size, self.model, logits.device) + _check_token_ids(ids, vocab_size, "correct") + + answer_logits = _answer_logits(logits, positions) + token_set = ids.unsqueeze(1) if ids.ndim == 1 else ids + answer_scores = answer_logits.gather(1, token_set) + # Strictly greater, so a tied token does not push the answer's rank up. + outranking = answer_logits.unsqueeze(1) > answer_scores.unsqueeze(2) + ranks = outranking.sum(dim=2).float().mean(dim=1) + + value = float(ranks.mean().item()) + results[self.output_key] = MetricScore( + metric_name="answer_rank", + value=value, + per_example=ranks.tolist(), + metadata={ + "logits_key": self.logits_key, + "vocab_size": int(vocab_size), + "positions": positions.tolist(), + }, + ) + logger.info("answer_rank: %.4f", value) + return results + + class RecoveredMetricStep(Step): """Normalized recovered effect from clean, corrupted, and patched scores. diff --git a/src/murano/steps/plot.py b/src/murano/steps/plot.py index 9b2a611..0a32ed2 100644 --- a/src/murano/steps/plot.py +++ b/src/murano/steps/plot.py @@ -46,11 +46,15 @@ class Plot(Step): logit_lens results['logit_attribution']: LogitAttributionResult logit_attribution + results['sweep']: SweepResult + sweep, drawn as a layer-by-head heatmap when the sweep ranged over + attention heads and as one bar per item otherwise - Attention and SAE plots are not auto-dispatched: they need an explicit head - or feature selection with no sensible default, so call the - ``murano.plotting`` functions (``plot_attention_pattern``, - ``plot_sae_token_activations``, ...) directly instead. + Attention, SAE, and activation-projection plots are not auto-dispatched: + they need an explicit head, feature, or reducer choice with no sensible + default, so call the ``murano.plotting`` functions + (``plot_attention_pattern``, ``plot_sae_token_activations``, + ``plot_activation_projection``, ...) directly instead. Args: output_dir: Root output directory. If None, uses results['output_dir'] @@ -145,5 +149,10 @@ def __call__(self, results: Results) -> Results: "logit_attribution", ) + if keys.SWEEP in results: + from murano.plotting import plot_sweep + + self._emit(plot_sweep(results[keys.SWEEP]), plots_dir, "sweep") + logger.info("Plots saved to %s", plots_dir) return results diff --git a/src/murano/steps/sae.py b/src/murano/steps/sae.py index 03b7ae7..62f2844 100644 --- a/src/murano/steps/sae.py +++ b/src/murano/steps/sae.py @@ -510,6 +510,21 @@ def metadata(self) -> Any: self._ensure_loaded() return self._sae.cfg.metadata + @property + def decoder(self) -> Tensor: + """The decoder matrix ``[n_features, d_model]``: one direction per feature. + + The whole bank at once, for callers that project every feature through the + unembedding (see + :func:`~murano.plotting.plot_sae_feature_logit_effects`). For a single + feature prefer :meth:`feature_direction`. + + Returns: + Detached copy of the decoder weight, on the SAE's device. + """ + self._ensure_loaded() + return self._sae.W_dec.detach().clone() + def encode(self, residual: Tensor) -> Tensor: """Encode residual ``[N, seq, d_model]`` to SAE codes ``[N, seq, n_features]``.""" self._ensure_loaded() @@ -551,12 +566,23 @@ def sae_steer( absolute magnitude added; positive enhances the feature, negative suppresses it. + ``alpha`` is therefore scale-dependent, and it has no default worth quoting: + the edit is applied at every decoded token, so what matters is its size + relative to the residual stream at the steering site, which ranges from tens + to thousands across models. Measure that norm and start near a tenth of it. + Pushing much past it swamps the residual stream and the model repeats one + token; see ``notebooks/applications/sae_steering.ipynb``, where no strength + both invokes the concept and preserves the text. Adding a fixed magnitude is + only one way to steer a feature; clamping the feature's own activation + (*Scaling Monosemanticity*) leaves the rest of the residual stream intact and + is not implemented here. + The returned step generates a clean (unsteered) and a steered response for each prompt and writes an :class:`~murano.steps.intervene.InterveneResult`:: results = Pipeline([ LoadPrompts(prompts), - sae_steer(model, encode.sae_model, feature_id, alpha=200), + sae_steer(model, encode.sae_model, feature_id, alpha=alpha), ]).run() comparison = results["intervene"] # clean vs steered @@ -564,7 +590,9 @@ def sae_steer( model: Model to generate with (must match the SAE's base model). sae_model: Loaded SAE providing the feature direction and hook point. feature_id: SAE feature index in ``[0, n_features)``. - alpha: Steering strength; positive enhances, negative suppresses. + alpha: Steering strength, as an absolute magnitude added to the residual + stream; positive enhances, negative suppresses. Calibrate against the + residual norm at the steering site. gen_kwargs: Generation kwargs forwarded to the model. Defaults to ``{"max_new_tokens": 256, "do_sample": False}``. diff --git a/src/murano/steps/select.py b/src/murano/steps/select.py index c387a55..4af5723 100644 --- a/src/murano/steps/select.py +++ b/src/murano/steps/select.py @@ -1,19 +1,19 @@ -"""SelectComponents step: rank an attribution result and pick the top components. +"""SelectComponents step: rank a per-component readout and pick the top components. Turns a per-component importance readout into a concrete target set. It reads a -:class:`~murano.steps.logit_attribution.LogitAttributionResult` (its -``contributions`` map each head and MLP to a signed contribution), ranks the -components, keeps the strongest, and writes a -:class:`~murano.artifacts.ComponentSelection`. A downstream +:class:`~murano.steps.logit_attribution.LogitAttributionResult` or a component +:class:`~murano.artifacts.SweepResult` (both map each head and MLP to a signed +score through ``contributions``), ranks the components, keeps the strongest, and +writes a :class:`~murano.artifacts.ComponentSelection`. A downstream :class:`~murano.steps.patch.Patch` or :class:`~murano.steps.path_patch.PathPatch` -reads that selection at run time, so "attribute the important heads, then patch -them" runs as one pipeline instead of two with a hand-copied node list in between. +reads that selection at run time, so "score the important heads, then patch them" +runs as one pipeline instead of two with a hand-copied node list in between. """ from __future__ import annotations from murano import keys -from murano.artifacts import ComponentSelection +from murano.artifacts import ComponentSelection, SweepResult from murano.logging import logger from murano.nodes import Node, NodeDict, canonical_module from murano.results import Results @@ -23,26 +23,39 @@ _BY = ("abs", "signed", "negative") -def _extract_scores(source: object) -> NodeDict: - """Return a component's ``{Node: float}`` scores from an attribution result. +def _extract_scores(source: object, source_key: str) -> NodeDict: + """Return the ``{Node: float}`` scores of a per-component readout. Accepts anything exposing a ``contributions`` mapping (a - :class:`LogitAttributionResult`), or a bare ``{Node: float}`` mapping so a - caller can rank scores it computed itself. + :class:`LogitAttributionResult`, or a :class:`~murano.artifacts.SweepResult` + whose items are all Nodes), or a bare ``{Node: float}`` mapping so a caller + can rank scores it computed itself. + + Args: + source: The readout to rank. + source_key: Results key it came from, named in the error messages. Raises: - TypeError: If ``source`` exposes neither a ``contributions`` map nor a - mapping interface. + TypeError: If ``source`` is a sweep over something other than Node + addresses, or exposes neither a ``contributions`` map nor a mapping + interface. """ contributions = getattr(source, "contributions", None) if contributions is not None: return NodeDict(contributions) + if isinstance(source, SweepResult): + raise TypeError( + f"SelectComponents ranks components, but the sweep under " + f"'{source_key}' swept {source.metadata.get('items', [])[:3]}, which " + f"are not Node addresses. Sweep over a NodeSet to select from the " + f"result." + ) if hasattr(source, "items"): return NodeDict(source) raise TypeError( f"SelectComponents needs a result with per-component scores (a " - f"LogitAttributionResult, or a {{Node: float}} mapping); got " - f"{type(source).__name__}." + f"LogitAttributionResult, a component SweepResult, or a {{Node: float}} " + f"mapping); got {type(source).__name__} under '{source_key}'." ) @@ -57,14 +70,15 @@ class SelectComponents(Step): single mode, all heads or all whole-components). Reads from results: - results[source_key]: LogitAttributionResult (default ``logit_attribution``). + results[source_key]: LogitAttributionResult or component SweepResult + (default ``logit_attribution``). Writes to results: results[output_key]: ComponentSelection (default ``selection``). Args: - source_key: Results key of the attribution result to rank (default - ``logit_attribution``). + source_key: Results key of the per-component readout to rank (default + ``logit_attribution``); pass ``keys.SWEEP`` to rank a component sweep. top_k: Keep the ``top_k`` highest-ranked components. Pass this or ``threshold``, not both. threshold: Keep every component whose score passes the cutoff: ``by="abs"`` @@ -112,12 +126,12 @@ def __init__( self.modules = {canonical_module(name) for name in names} self.output_key = output_key self.reads = [source_key] - self.read_types = {source_key: LogitAttributionResult} + self.read_types = {source_key: (LogitAttributionResult, SweepResult)} self.writes = [output_key] self.write_types = {output_key: ComponentSelection} def __call__(self, results: Results) -> Results: - scores = _extract_scores(results[self.source_key]) + scores = _extract_scores(results[self.source_key], self.source_key) pool = { node: value for node, value in scores.items() diff --git a/src/murano/steps/sweep.py b/src/murano/steps/sweep.py new file mode 100644 index 0000000..4019464 --- /dev/null +++ b/src/murano/steps/sweep.py @@ -0,0 +1,215 @@ +"""Sweep step: run one step chain once per item and harvest a metric. + +The shape every component study has in common. "Patch each head and measure how +much behavior it restores", "zero each head and measure the logit difference", +"steer at each layer and measure the effect": all of them fork the pipeline's +state, apply a couple of steps built for one component, read a number back out, +and repeat. Written by hand that is a closure over the model, the task, and a +baseline ``Results``, rebuilt in every notebook that needs it. + +``Sweep`` is that loop as a step. It runs the shared prefix once (whatever the +pipeline built before it), then forks the ``Results`` per item so each item sees +the same starting state, and collects the harvested keys into a +:class:`~murano.artifacts.SweepResult`. Because the forks are shallow copies, the +swept steps' writes are scratch: they never reach the pipeline that follows. + +The swept steps are built by a callback, so what varies is not restricted to a +component. Sweeping over :class:`~murano.nodes.Node` addresses yields a component +sweep, whose scores feed :class:`~murano.steps.select.SelectComponents` and +:func:`~murano.plotting.plot_head_matrix` directly; sweeping over layer indices, +ablation method names, or ``(sender, receiver)`` pairs works the same way and +yields a plain ``{item: value}`` map. +""" + +from __future__ import annotations + +from typing import Any, Callable, Iterable, Sequence + +from murano import keys +from murano.artifacts import SweepResult +from murano.logging import logger +from murano.results import Results +from murano.steps.base import ExpectedType, Step +from murano.steps.metrics import _metric_score + +StepFactory = Callable[[Any], "Step | Sequence[Step]"] + + +def _chain_io(steps: Sequence[Step]) -> tuple[list[str], set[str], dict[str, Any]]: + """Return the net reads, the writes, and the read types of a step chain. + + A key a later step reads is only an external requirement when no earlier step + in the chain wrote it, which is the same rule + :meth:`~murano.pipeline.Pipeline.validate` applies across a pipeline. + + Args: + steps: The chain, in execution order. + + Returns: + Tuple of (keys the chain needs from outside, keys it writes, the expected + types for the needed keys). + """ + needed: list[str] = [] + produced: set[str] = set() + read_types: dict[str, Any] = {} + for step in steps: + expected = step.expected_read_types() + for key in step.reads: + if key not in produced and key not in needed: + needed.append(key) + if key in expected: + read_types[key] = expected[key] + produced.update(step.writes) + return needed, produced, read_types + + +class Sweep(Step): + """Run ``steps(item)`` once per item and harvest one or more metric keys. + + Each item gets a shallow fork of the incoming ``Results``, so every item is + measured against the same baseline and the swept steps' intermediate writes + are discarded. The harvested values are coerced to floats the same way the + metric steps coerce their inputs, so reading a ``MetricScore`` key yields its + ``value``. + + Reads from results: + Whatever the swept chain needs and does not write itself, computed from + the chain built for the first item. A ``Sweep`` whose chain reads + ``logit_diff`` from a prior step therefore fails pre-flight validation + when nothing upstream produced it, exactly like any other step. + + Writes to results: + results[output_key]: SweepResult. + + Args: + over: The items to sweep. Each must be hashable, since it keys the + resulting scores. A ``NodeSet`` of heads gives a component sweep. + steps: Callback building the step (or steps) to run for one item. Called + once per item, and once up front to derive this step's read contract. + read: Results key, or keys, to harvest after the chain runs. The first is + the ``SweepResult``'s primary column. Every key must be written by + the swept chain: harvesting a key the chain never writes would record + the same baseline value for every item. + output_key: Results key to write the SweepResult under. + + Raises: + ValueError: If ``over`` is empty, ``read`` is empty, ``steps`` builds an + empty chain, or a harvested key is never written by that chain. + TypeError: If ``steps`` builds something that is not a Step. + + Example: + Patch every head of a corrupted run and keep the four that restore the + most behavior:: + + Pipeline([ + LoadPaired(task), + Logits(model), + LogitDiffStep(correct, incorrect, output_key="ld_clean"), + Sweep( + over=NodeSet.product(range(model.n_layers), ["self_attn"], + heads=range(model.n_heads)), + steps=lambda head: [ + Patch(model, targets=[head]), + LogitDiffStep(correct, incorrect, + logits_key=keys.PATCHED_LOGITS, + mask_key=keys.PATCHED_MASK, + output_key="ld_patched"), + ], + read="ld_patched", + ), + SelectComponents(source_key=keys.SWEEP, top_k=4), + ]).run() + """ + + def __init__( + self, + over: Iterable[Any], + steps: StepFactory, + read: str | Sequence[str], + output_key: str = keys.SWEEP, + ): + self.over = list(over) + if not self.over: + raise ValueError("Sweep needs at least one item to sweep over.") + + self.read = [read] if isinstance(read, str) else list(read) + if not self.read: + raise ValueError("Sweep needs at least one key to harvest.") + + self._factory = steps + self.output_key = output_key + + probe = self._steps_for(self.over[0]) + needed, produced, read_types = _chain_io(probe) + unwritten = [key for key in self.read if key not in produced] + if unwritten: + chain = ", ".join(type(step).__name__ for step in probe) + raise ValueError( + f"Sweep harvests {unwritten}, which the swept chain ({chain}) " + f"never writes; every item would record the same value. The " + f"chain writes {sorted(produced)}." + ) + + self.reads = needed + self.read_types: dict[str, ExpectedType] = read_types + self.writes = [output_key] + self.write_types = {output_key: SweepResult} + # Named here rather than rebuilt at write time: the factory may be + # expensive, and the chain's shape is fixed by the first item anyway. + self._chain_names = [type(step).__name__ for step in probe] + + def _steps_for(self, item: Any) -> list[Step]: + """Build and validate the step chain for one swept item.""" + built = self._factory(item) + chain = [built] if isinstance(built, Step) else list(built) + if not chain: + raise ValueError(f"Sweep's steps callback built no step for {item!r}.") + for step in chain: + if not isinstance(step, Step): + raise TypeError( + f"Sweep's steps callback must build Step objects, got " + f"{type(step).__name__} for item {item!r}." + ) + return chain + + def _harvest(self, forked: Results, item: Any) -> dict[str, float]: + """Read the harvested keys off one finished fork as floats.""" + values = {} + for key in self.read: + try: + values[key] = _metric_score(forked[key]) + except (TypeError, ValueError) as exc: + raise TypeError( + f"Sweep harvests '{key}' as a number, but item {item!r} " + f"produced {type(forked[key]).__name__}. Append a metric step " + f"to the swept chain, or harvest a key that holds a " + f"MetricScore or a scalar." + ) from exc + return values + + def __call__(self, results: Results) -> Results: + total = len(self.over) + heartbeat = max(1, total // 10) + columns: dict[str, dict[Any, float]] = {key: {} for key in self.read} + logger.info("Sweep: %d item(s), harvesting %s", total, self.read) + + for index, item in enumerate(self.over, start=1): + forked = results.copy() + for step in self._steps_for(item): + forked = step(forked) + for key, value in self._harvest(forked, item).items(): + columns[key][item] = value + if index % heartbeat == 0 or index == total: + logger.info("Sweep: %d/%d", index, total) + + results[self.output_key] = SweepResult( + columns=columns, + primary=self.read[0], + metadata={ + "n_items": total, + "read": list(self.read), + "items": [str(item) for item in self.over], + "steps": self._chain_names, + }, + ) + return results diff --git a/src/murano/tasks.py b/src/murano/tasks.py new file mode 100644 index 0000000..5d211f0 --- /dev/null +++ b/src/murano/tasks.py @@ -0,0 +1,226 @@ +"""Small canonical tasks shared by the notebooks, tests, and reproductions. + +Interpretability work needs a task before it needs a method, and the same two +toy tasks keep reappearing: a circuit-analysis task with a matched clean and +corrupt prompt (:func:`ioi`), and a contrastive concept task for probing and +steering (:func:`sentiment`). Defining them once here keeps every tutorial from +carrying its own copy, and gives the fixtures a place to be tested. + +Both are deliberately tiny and hand-written: large enough to demonstrate a +method, far too small to measure one. Swap in a real dataset before drawing a +conclusion. + +Attributes: + IOI_TEMPLATE: The sentence frame :func:`ioi` fills in. + POSITIVE_WORDS: Vocabulary behind :func:`positive_word_rate`. +""" + +from __future__ import annotations + +from typing import Final, Sequence + +from murano.dataset import CleanCorruptDataset + +__all__ = [ + "IOI_TEMPLATE", + "POSITIVE_WORDS", + "ioi", + "positive_word_rate", + "sentiment", +] + + +# ── Indirect object identification ──────────────────────────────────── + +IOI_TEMPLATE: Final = "When {a} and {b} went to the store, {giver} gave a drink to" + +# Each pair is (indirect object, subject). Both names are single tokens with a +# leading space in GPT-2's vocabulary, so the answer is one token either way. +_IOI_NAMES: Final = [ + ("Mary", "John"), + ("Alice", "Bob"), + ("Sarah", "Tom"), + ("Emma", "James"), + ("Laura", "Peter"), + ("Anna", "David"), + ("Julia", "Mark"), + ("Nina", "Paul"), + ("Clara", "Simon"), + ("Rachel", "Kevin"), + ("Sophie", "Daniel"), + ("Helen", "Martin"), +] + + +def ioi(n: int = 8) -> CleanCorruptDataset: + """Build the indirect-object-identification task. + + Each clean prompt names two people and then has the **subject** give a drink, + so the next token should be the other name, the **indirect object**. The + corrupt prompt swaps who gives, which flips the answer. That pairing is what + activation patching and path patching resample across. + + Equivalent to calling :meth:`~murano.dataset.CleanCorruptDataset.from_pairs` + with the four lists this function assembles. + + Args: + n: Number of prompt pairs, up to the 12 name pairs available. + + Returns: + A :class:`~murano.dataset.CleanCorruptDataset` whose ``correct`` answers + are the indirect objects and whose ``incorrect`` answers are the + subjects, each with the leading space the tokenizer expects. + + Raises: + ValueError: If ``n`` is not between 1 and the number of name pairs. + + Example: + >>> task = ioi(n=2) + >>> task.clean[0] + 'When Mary and John went to the store, John gave a drink to' + >>> task.correct[0], task.incorrect[0] + (' Mary', ' John') + """ + if not 1 <= n <= len(_IOI_NAMES): + raise ValueError( + f"n must be between 1 and {len(_IOI_NAMES)} (the available name " + f"pairs), got {n}." + ) + pairs = _IOI_NAMES[:n] + return CleanCorruptDataset( + clean=[IOI_TEMPLATE.format(a=a, b=b, giver=b) for a, b in pairs], + corrupt=[IOI_TEMPLATE.format(a=a, b=b, giver=a) for a, b in pairs], + correct=[f" {a}" for a, _ in pairs], + incorrect=[f" {b}" for _, b in pairs], + metadata={"task": "ioi", "template": IOI_TEMPLATE}, + ) + + +# ── Sentiment ───────────────────────────────────────────────────────── + +_POSITIVE: Final = [ + "I absolutely love this!", + "This is wonderful and amazing.", + "What a beautiful day it is.", + "You are a fantastic person.", + "I am so happy to see you.", + "This is the best thing ever.", + "I really admire your work.", + "This makes me incredibly happy.", + "You did an excellent job.", + "I'm thrilled to be here.", + "This is absolutely perfect!", + "You make everything better.", + "I feel so blessed today.", + "This brings me great joy.", + "You have a beautiful heart.", + "I'm so proud of your achievements.", + "This is truly remarkable.", + "I am grateful for your kindness.", + "You're such a kind and caring person.", + "I'm incredibly grateful for this.", + "You are the best friend ever.", + "I love you so much.", + "You have such a wonderful personality.", + "I'm so excited about this opportunity.", + "This is exactly what I needed.", +] + +_NEGATIVE: Final = [ + "I absolutely hate this!", + "This is terrible and awful.", + "What a horrible day it is.", + "You are a terrible person.", + "I am so angry to see you.", + "This is the worst thing ever.", + "I really despise your work.", + "This makes me incredibly sad.", + "You did a terrible job.", + "I'm devastated to be here.", + "This is absolutely horrible!", + "You make everything worse.", + "I feel so cursed today.", + "This brings me great sorrow.", + "You have an ugly heart.", + "I'm so ashamed of your actions.", + "This is truly awful.", + "I am disgusted by your behavior.", + "You're such a mean and uncaring person.", + "I'm incredibly frustrated with this.", + "You are the worst person ever.", + "I hate you so much.", + "You have such a terrible personality.", + "I'm so disappointed about this.", + "This is exactly what I didn't need.", +] + + +def sentiment(n_per_class: int = 25) -> tuple[list[str], list[str]]: + """Return contrastive positive and negative sentences. + + The two lists are matched only in size and register, not word for word: the + concept, not the wording, is what a probe or a steering vector should pick + up. Feed them to + :meth:`~murano.dataset.MuranoDataset.contrastive` for steering, or to + :meth:`~murano.dataset.LabeledDataset.from_lists` for probing. + + Args: + n_per_class: Sentences to take from each class, up to 25. + + Returns: + A ``(positive, negative)`` pair of equal-length sentence lists. + + Raises: + ValueError: If ``n_per_class`` is not between 1 and 25. + """ + if not 1 <= n_per_class <= len(_POSITIVE): + raise ValueError( + f"n_per_class must be between 1 and {len(_POSITIVE)}, got {n_per_class}." + ) + return _POSITIVE[:n_per_class], _NEGATIVE[:n_per_class] + + +POSITIVE_WORDS: Final = frozenset( + { + "love", + "loved", + "great", + "good", + "wonderful", + "amazing", + "happy", + "best", + "beautiful", + "fantastic", + "excellent", + "perfect", + "nice", + } +) + + +def positive_word_rate(generations: Sequence[str]) -> float: + """Fraction of generations containing at least one positive word. + + A deliberately crude scorer, kept because it makes the *shape* of an + evaluation obvious in a tutorial: a metric turns "the text looks different" + into a number you can defend. It is a keyword count, not a sentiment + classifier, and it says nothing on a handful of prompts. Replace it before + reporting anything. + + Args: + generations: Model completions to score. + + Returns: + The fraction in ``[0, 1]``. + + Raises: + ValueError: If ``generations`` is empty. + """ + if not generations: + raise ValueError("cannot score an empty list of generations") + hits = sum( + any(word.strip(".,!?").lower() in POSITIVE_WORDS for word in text.split()) + for text in generations + ) + return hits / len(generations) diff --git a/tests/test_attention.py b/tests/test_attention.py index 2419c2a..e4d5fbf 100644 --- a/tests/test_attention.py +++ b/tests/test_attention.py @@ -474,6 +474,16 @@ def test_plot_smoke(self, murano_model_attn): assert plot_attention_pattern(result, 0, 0) is not None assert plot_head_matrix(result.entropy(), layers=result.layers) is not None + def test_plot_head_matrix_forwards_zmid(self, murano_model_attn): + pytest.importorskip("plotly") + from murano.plotting.attention import plot_head_matrix + + result = RecordAttention(murano_model_attn, layers=[0])(_loaded())[ + keys.ATTENTION_PATTERN + ] + fig = plot_head_matrix(result.entropy(), color_scale="RdBu", zmid=0) + assert fig.data[0].zmid == 0 + # ── Pipeline ────────────────────────────────────────────────────────── diff --git a/tests/test_eval_metrics.py b/tests/test_eval_metrics.py index f2706be..0244ca1 100644 --- a/tests/test_eval_metrics.py +++ b/tests/test_eval_metrics.py @@ -18,6 +18,7 @@ from murano.steps.logits import Logits from murano.steps.metrics import ( AnswerLogProbStep, + AnswerRankStep, KLDivergenceStep, LogitDiffStep, RecoveredMetricStep, @@ -207,6 +208,71 @@ def test_batch_length_mismatch_raises(self): AnswerLogProbStep(correct=[5, 3])(_results(logits)) +# ── AnswerRankStep ──────────────────────────────────────────────────── + + +class TestAnswerRankStep: + def test_counts_the_tokens_scoring_above_the_answer(self): + logits = torch.zeros(1, 1, 5) + logits[0, 0] = torch.tensor([3.0, 1.0, 4.0, 0.0, 2.0]) + # Token 1 is beaten by tokens 0, 2 and 4. + out = AnswerRankStep(correct=[1])(_results(logits)) + assert out["answer_rank"].per_example == [3.0] + + def test_rank_zero_when_the_answer_is_the_argmax(self): + logits = torch.zeros(1, 1, 4) + logits[0, 0] = torch.tensor([0.0, 9.0, 1.0, 2.0]) + assert AnswerRankStep(correct=[1])(_results(logits))["answer_rank"].value == 0.0 + + def test_ties_do_not_count_against_the_answer(self): + logits = torch.zeros(1, 1, 4) # every token ties + assert AnswerRankStep(correct=[2])(_results(logits))["answer_rank"].value == 0.0 + + def test_averages_over_the_batch(self): + logits = torch.zeros(2, 1, 3) + logits[0, 0] = torch.tensor([0.0, 1.0, 2.0]) # answer 0 -> rank 2 + logits[1, 0] = torch.tensor([2.0, 1.0, 0.0]) # answer 0 -> rank 0 + out = AnswerRankStep(correct=[0, 0])(_results(logits)) + assert out["answer_rank"].per_example == [2.0, 0.0] + assert out["answer_rank"].value == pytest.approx(1.0) + + def test_token_set_averages_each_token_rank(self): + logits = torch.zeros(1, 1, 4) + logits[0, 0] = torch.tensor([3.0, 2.0, 1.0, 0.0]) + # Token 1 has rank 1 and token 3 has rank 3; the set reports their mean. + out = AnswerRankStep(correct=torch.tensor([[1, 3]]))(_results(logits)) + assert out["answer_rank"].per_example == [2.0] + + def test_reads_the_answer_position_from_the_mask(self): + """A naive ``logits[:, -1]`` would score a padding position here.""" + logits = torch.zeros(1, 2, 3) + logits[0, 0] = torch.tensor([5.0, 0.0, 0.0]) # real token: answer 0 wins + logits[0, 1] = torch.tensor([0.0, 9.0, 9.0]) # padding: answer 0 loses + mask = torch.tensor([[1, 0]]) + out = AnswerRankStep(correct=[0])(_results(logits, mask)) + assert out["answer_rank"].value == 0.0 + + def test_explicit_positions_override_the_mask(self): + logits = torch.zeros(1, 2, 3) + logits[0, 0] = torch.tensor([5.0, 0.0, 0.0]) + logits[0, 1] = torch.tensor([0.0, 9.0, 9.0]) + mask = torch.tensor([[1, 0]]) + out = AnswerRankStep(correct=[0], positions=1)(_results(logits, mask)) + assert out["answer_rank"].value == 2.0 + + def test_out_of_range_token_raises(self): + with pytest.raises(ValueError, match=r"must be in \[0, 3\)"): + AnswerRankStep(correct=[7])(_results(torch.zeros(1, 1, 3))) + + def test_writes_a_metric_score(self): + score = AnswerRankStep(correct=[0])(_results(torch.zeros(2, 1, 4)))[ + "answer_rank" + ] + assert isinstance(score, MetricScore) + assert score.metric_name == "answer_rank" + assert score.metadata["vocab_size"] == 4 + + # ── RecoveredMetricStep ─────────────────────────────────────────────── diff --git a/tests/test_examples.py b/tests/test_examples.py deleted file mode 100644 index c219db7..0000000 --- a/tests/test_examples.py +++ /dev/null @@ -1,250 +0,0 @@ -"""Tests for the ported example scripts. - -Uses a tiny local model (2-layer Llama) so tests run without downloading. -""" - -from __future__ import annotations - -from pathlib import Path - -import pytest -import torch - -pytest.importorskip("nnsight") -pytest.importorskip("tokenizers") -pytest.importorskip("transformers") - -from tokenizers import Tokenizer -from tokenizers.models import WordLevel -from tokenizers.pre_tokenizers import Whitespace -from transformers import LlamaConfig, LlamaForCausalLM, PreTrainedTokenizerFast - -from murano import MuranoModel, Pipeline -from murano.dataset import MuranoDataset -from murano.nodes import Node -from murano.steps.intervene import Intervene, InterveneResult, steer_direction -from murano.steps.load import Load -from murano.steps.record import ActivationStore, Record -from murano.steps.train import SteeringResult, SteeringVector - - -# ── Helpers ────────────────────────────────────────────────────────── - - -def _build_tiny_local_model(path: Path) -> None: - vocab = { - "": 0, - "": 1, - "": 2, - "": 3, - "hello": 4, - "world": 5, - "good": 6, - "bad": 7, - "prompt": 8, - "response": 9, - } - - tokenizer = Tokenizer(WordLevel(vocab=vocab, unk_token="")) - tokenizer.pre_tokenizer = Whitespace() - fast_tokenizer = PreTrainedTokenizerFast( - tokenizer_object=tokenizer, - unk_token="", - pad_token="", - bos_token="", - eos_token="", - model_max_length=64, - ) - fast_tokenizer.save_pretrained(path) - - config = LlamaConfig( - vocab_size=len(vocab), - hidden_size=32, - intermediate_size=64, - num_hidden_layers=2, - num_attention_heads=4, - num_key_value_heads=4, - max_position_embeddings=64, - pad_token_id=vocab[""], - bos_token_id=vocab[""], - eos_token_id=vocab[""], - ) - model = LlamaForCausalLM(config) - model.save_pretrained(path) - - -# ── Fixtures ───────────────────────────────────────────────────────── - - -@pytest.fixture(scope="module") -def tiny_model_path(tmp_path_factory): - path = tmp_path_factory.mktemp("tiny_model") - _build_tiny_local_model(path) - return path - - -@pytest.fixture -def model(tiny_model_path): - return MuranoModel(str(tiny_model_path), device_map="cpu", dtype=torch.float32) - - -@pytest.fixture -def contrastive_dataset(): - return MuranoDataset( - positive_texts=["hello world", "good world"], - negative_texts=["bad world", "bad prompt"], - ) - - -# ── Tests for activation_visualization.py logic ──────────────────────── - - -class TestActivationVisualization: - """Tests the core logic of the ported activation_visualization example.""" - - def test_plotter_lens_accepts_activation_store( - self, model, contrastive_dataset, tmp_path - ): - """PlotterLens.observe should accept an ActivationStore from Record.""" - from examples.activation_visualization import PlotterLens - from sklearn.decomposition import PCA - - pipe = Pipeline( - [ - Load(contrastive_dataset), - Record(model, layers=[0], position="last", batch_size=2), - ] - ) - results = pipe.run() - store: ActivationStore = results["record"] - - plotter = PlotterLens( - reducer=PCA(n_components=2), - save_path=str(tmp_path / "test_activation_pca.html"), - ) - # Should not raise - plotter.observe(store, layer=0, title="Test PCA") - - def test_plotter_lens_with_lda(self, model, contrastive_dataset): - """PlotterLens should work with LDA (supervised reducer).""" - from examples.activation_visualization import PlotterLens - from sklearn.discriminant_analysis import LinearDiscriminantAnalysis - - pipe = Pipeline( - [ - Load(contrastive_dataset), - Record(model, layers=[0], position="last", batch_size=2), - ] - ) - results = pipe.run() - store: ActivationStore = results["record"] - - plotter = PlotterLens( - reducer=LinearDiscriminantAnalysis(n_components=1), - save_path="/tmp/test_activation_lda.html", - ) - plotter.observe(store, layer=0, title="Test LDA") - - -# ── Tests for record_intervene.py logic ────────────────────────────── - - -class TestRecordIntervene: - """Tests the core logic of the ported record_intervene example.""" - - def test_pipeline_record_steering(self, model, contrastive_dataset): - """Pipeline: Load → Record → SteeringVector should produce SteeringResult.""" - pipe = Pipeline( - [ - Load(contrastive_dataset), - Record(model, layers=[0], position="last", batch_size=2), - SteeringVector(normalize=True), - ] - ) - results = pipe.run() - steering: SteeringResult = results["steering"] - - assert (0, "residual") in steering.direction_per_layer - assert steering.direction_per_layer[(0, "residual")].shape == (model.d_model,) - assert (0, "residual") in steering.separation_scores - assert steering.best_layer == Node.coerce(0) - - def test_pipeline_intervene(self, model, contrastive_dataset): - """Pipeline: Load → Intervene should produce InterveneResult.""" - # First compute a steering direction - train_pipe = Pipeline( - [ - Load(contrastive_dataset), - Record(model, layers=[0], position="last", batch_size=2), - SteeringVector(normalize=True), - ] - ) - train_results = train_pipe.run() - steering: SteeringResult = train_results["steering"] - - # Now intervene - steer_fn = steer_direction(steering.direction_per_layer, alpha=1.0) - eval_dataset = MuranoDataset( - positive_texts=["hello", "good"], - negative_texts=[], - ) - eval_pipe = Pipeline( - [ - Load(eval_dataset), - Intervene( - model, - fn=steer_fn, - layers=[0], - gen_kwargs={"max_new_tokens": 1, "do_sample": False}, - ), - ] - ) - eval_results = eval_pipe.run() - intervene_result: InterveneResult = eval_results["intervene"] - - assert len(intervene_result.clean_generations) == 2 - assert len(intervene_result.modified_generations) == 2 - assert isinstance(intervene_result.clean_generations[0], str) - assert isinstance(intervene_result.modified_generations[0], str) - - def test_full_record_intervene_flow(self, model): - """End-to-end: record → steer → intervene with small synthetic data.""" - dataset = MuranoDataset( - positive_texts=["hello world", "good world"], - negative_texts=["bad world", "bad prompt"], - ) - - # Train - train_pipe = Pipeline( - [ - Load(dataset), - Record(model, layers=[0], position="last", batch_size=2), - SteeringVector(normalize=True), - ] - ) - train_results = train_pipe.run() - steering: SteeringResult = train_results["steering"] - - # Evaluate - steer_fn = steer_direction(steering.direction_per_layer, alpha=2.0) - eval_dataset = MuranoDataset( - positive_texts=["hello"], - negative_texts=[], - ) - eval_pipe = Pipeline( - [ - Load(eval_dataset), - Intervene( - model, - fn=steer_fn, - layers=[0], - gen_kwargs={"max_new_tokens": 1, "do_sample": False}, - ), - ] - ) - eval_results = eval_pipe.run() - intervene_result: InterveneResult = eval_results["intervene"] - - # Basic sanity: clean and steered outputs should be strings - assert isinstance(intervene_result.clean_generations[0], str) - assert isinstance(intervene_result.modified_generations[0], str) diff --git a/tests/test_intervene.py b/tests/test_intervene.py index a37f9ba..cbd530f 100644 --- a/tests/test_intervene.py +++ b/tests/test_intervene.py @@ -258,8 +258,8 @@ def test_full_arc_validates(self, fixture, request): class TestDirectionLayers: """direction_layers chooses which recorded directions the steer applies, so a - single best layer (or an explicit subset) replaces the over-steering - every-layer default without changing how the direction was derived.""" + single best layer (or an explicit subset) can replace the every-layer default + without changing how the direction was derived.""" def _steering(self, model) -> SteeringResult: # Three recorded layers with layer 1 the best-separating one, so "best" @@ -386,3 +386,50 @@ def test_rejects_unknown_mode(self, fixture, request): def test_fn_path_reads_only_prompts(self, fixture, request): model = request.getfixturevalue(fixture) assert Intervene(model, fn=lambda a, k: a).reads == [keys.PROMPTS] + + +class TestTwoPhaseArc: + """A direction trained in one pipeline and applied in a second. + + ``direction_key`` composes derive-and-apply into a single pipeline, but the + train-here/evaluate-there split is its own documented pattern: the two + phases hold different data, so the direction crosses the boundary as a + prebuilt fn rather than through Results. + """ + + def test_direction_trained_in_one_pipeline_steers_in_another(self, murano_model): + train = Pipeline( + [ + Load( + MuranoDataset( + positive_texts=["hello world", "good world"], + negative_texts=["bad world", "bad prompt"], + ) + ), + Record(murano_model, layers=[0], position="last", batch_size=2), + SteeringVector(normalize=True), + ] + ).run() + steering: SteeringResult = train[keys.STEERING] + assert steering.direction_per_layer[(0, "residual")].shape == ( + murano_model.d_model, + ) + + evaluated = Pipeline( + [ + Load( + MuranoDataset(positive_texts=["hello", "good"], negative_texts=[]) + ), + Intervene( + murano_model, + fn=steer_direction(steering.direction_per_layer, alpha=2.0), + layers=[0], + gen_kwargs={"max_new_tokens": 1, "do_sample": False}, + ), + ] + ).run() + result: InterveneResult = evaluated[keys.INTERVENE] + + assert len(result.clean_generations) == len(result.modified_generations) == 2 + assert all(isinstance(text, str) for text in result.clean_generations) + assert all(isinstance(text, str) for text in result.modified_generations) diff --git a/tests/test_logits.py b/tests/test_logits.py index f210082..7cfc9a3 100644 --- a/tests/test_logits.py +++ b/tests/test_logits.py @@ -192,3 +192,59 @@ def test_batch_text(self, murano_model): def _prompts_results(prompts) -> Results: """Run LoadPrompts so a step can be exercised outside a full Pipeline.""" return LoadPrompts(prompts)(Results()) + + +# ── Intervened forward pass ─────────────────────────────────────────── + + +class TestInterventionPassthrough: + """``Logits(fn=...)`` is the forward-pass analogue of ``Intervene``.""" + + def test_no_fn_leaves_the_logits_unmodified(self, murano_model): + plain = Logits(murano_model)(_prompts_results(["hello world"]))["final_logits"] + explicit = Logits(murano_model, fn=None, layers=[0])( + _prompts_results(["hello world"]) + )["final_logits"] + assert torch.equal(plain, explicit) + + def test_fn_changes_the_logits(self, murano_model): + plain = Logits(murano_model)(_prompts_results(["hello world"]))["final_logits"] + zeroed = Logits( + murano_model, fn=lambda activation, _node: activation * 0.0, layers=[0] + )(_prompts_results(["hello world"]))["final_logits"] + assert not torch.equal(plain, zeroed) + + def test_matches_the_backend_primitive(self, murano_model): + prompts = ["hello world", "good"] + + def halve(activation, _node): + return activation * 0.5 + + via_step = Logits(murano_model, fn=halve, layers=[0], targets=None)( + _prompts_results(prompts) + )["final_logits"] + via_backend = murano_model.forward_logits( + _tokenize(murano_model, prompts), fn=halve, layers=[0], modules="residual" + ) + assert torch.equal(via_step, via_backend) + + def test_layers_selects_where_the_edit_lands(self, murano_model): + # An additive edit, not a zeroing one: the fixture is a bias-free Llama, + # so zeroing any layer's residual annihilates every layer after it and + # zeroing layer 0 or layer 1 both yield all-zero logits. + def shift(activation, _node): + return activation + 1.0 + + first = Logits(murano_model, fn=shift, layers=[0])( + _prompts_results(["hello world"]) + )["final_logits"] + second = Logits(murano_model, fn=shift, layers=[1])( + _prompts_results(["hello world"]) + )["final_logits"] + assert not torch.equal(first, second) + + def test_still_writes_the_mask_and_targets(self, murano_model): + out = Logits(murano_model, fn=lambda activation, _node: activation)( + _prompts_results(["hello world"]) + ) + assert "attention_mask" in out and "target_ids" in out diff --git a/tests/test_example_notebook_imports.py b/tests/test_notebook_imports.py similarity index 58% rename from tests/test_example_notebook_imports.py rename to tests/test_notebook_imports.py index eb37c7f..2d2ecbc 100644 --- a/tests/test_example_notebook_imports.py +++ b/tests/test_notebook_imports.py @@ -1,14 +1,14 @@ -"""Check that every example script and notebook resolves its imports. +"""Check that every notebook resolves its imports. -CI runners have no GPU and no model weights, so the example scripts and the -notebooks cannot run end to end. What a refactor actually breaks is cheaper to -catch: a renamed, moved, or removed public symbol that leaves an example or -notebook importing something that no longer exists. +CI runners have no GPU and no model weights, so the notebooks cannot run end to +end. What a refactor actually breaks is cheaper to catch: a renamed, moved, or +removed public symbol that leaves a notebook importing something that no longer +exists. -Each file is parsed and every ``murano`` import in it is resolved against the -installed package. No model, network, or GPU is touched, so the check runs in -the ordinary pytest matrix. Discovery is glob-based, so a new example or -notebook is covered the moment it lands, without editing this file. +Each notebook is parsed and every ``murano`` import in it is resolved against the +installed package. No model, network, or GPU is touched, so the check runs in the +ordinary pytest matrix. Discovery is glob-based, so a new notebook is covered the +moment it lands, without editing this file. """ from __future__ import annotations @@ -16,6 +16,7 @@ import ast import importlib import json +import re from pathlib import Path import pytest @@ -49,14 +50,11 @@ def _notebook_code_units(path: Path) -> list[str]: return units -def _discover_artifacts() -> list[tuple[str, list[str]]]: - artifacts: list[tuple[str, list[str]]] = [] - for path in sorted((_ROOT / "examples").glob("*.py")): - artifacts.append((path.name, [path.read_text()])) - for pattern in ("notebooks/**/*.ipynb", "tutorials/**/*.ipynb"): - for path in sorted(_ROOT.glob(pattern)): - artifacts.append((str(path.relative_to(_ROOT)), _notebook_code_units(path))) - return artifacts +def _discover_notebooks() -> list[tuple[str, list[str]]]: + return [ + (str(path.relative_to(_ROOT)), _notebook_code_units(path)) + for path in sorted(_ROOT.glob("notebooks/**/*.ipynb")) + ] def _murano_imports(tree: ast.Module): @@ -87,13 +85,34 @@ def _resolve(module: str, name: str | None) -> None: importlib.import_module(f"{module}.{name}") -_ARTIFACTS = _discover_artifacts() +_NOTEBOOKS = _discover_notebooks() + + +def test_discovery_finds_the_notebooks() -> None: + """Guard the glob: an empty parametrize list would pass vacuously.""" + assert _NOTEBOOKS, f"no notebooks discovered under {_ROOT / 'notebooks'}" + + +@pytest.mark.parametrize("readme", ["README.md", "notebooks/README.md"]) +def test_readme_notebook_links_resolve(readme: str) -> None: + """A renamed notebook must fail here rather than 404 on GitHub. + + Notebook discovery is glob-based, so removing a notebook silently drops its + parametrized case instead of failing. The READMEs name notebooks by path, and + nothing else checks those paths still exist. + """ + path = _ROOT / readme + targets = re.findall(r"\]\((?!https?://|#)([^)]+)\)", path.read_text()) + linked = [t for t in targets if t.endswith(".ipynb") or t.endswith("/")] + assert linked, f"{readme} links no notebooks; did the link format change?" + for target in linked: + assert (path.parent / target).exists(), f"{readme} links missing {target}" @pytest.mark.parametrize( - "name, units", _ARTIFACTS, ids=[name for name, _ in _ARTIFACTS] + "name, units", _NOTEBOOKS, ids=[name for name, _ in _NOTEBOOKS] ) -def test_example_and_notebook_imports_resolve(name: str, units: list[str]) -> None: +def test_notebook_imports_resolve(name: str, units: list[str]) -> None: for unit in units: try: tree = ast.parse(unit, filename=name) diff --git a/tests/test_notebook_structure.py b/tests/test_notebook_structure.py new file mode 100644 index 0000000..755d2b0 --- /dev/null +++ b/tests/test_notebook_structure.py @@ -0,0 +1,319 @@ +"""Enforce one shape for the tutorial notebooks. + +Fifteen notebooks written by hand drift: one grows a section the outline never +mentions, another claims an extra it does not import, a third re-declares a +dataset the library already ships. Each check below caught a real defect, and +keeps catching it. + +The reproduction notebooks predate this template and are exempt. +""" + +from __future__ import annotations + +import ast +import json +import re +from pathlib import Path + +import pytest + +_ROOT = Path(__file__).resolve().parent.parent +_NOTEBOOKS = [_ROOT / "notebooks" / "getting_started.ipynb"] + sorted( + (_ROOT / "notebooks" / "applications").glob("*.ipynb") +) +_IDS = [p.name for p in _NOTEBOOKS] + +_REQUIRED_HEADINGS = [ + "**Key questions**", + "**Structure**", + "**Model and data.**", + "**Requirements.**", +] + +# What in a notebook implies which extra. A step can need an extra without the +# notebook importing the third-party package itself: the Plot step pulls in +# plotly, and the Probe step pulls in scikit-learn. Anything not listed here is +# satisfied by the core install. +_EXTRA_IMPLIED_BY = { + "plot": [r"\bmurano\.plotting\b", r"\bPlot\("], + "probe": [r"\bsklearn\b", r"\bProbe\("], + "sae": [r"\bsae_lens\b", r"\bSAEEncode\(", r"\bSAETopActivations\("], + "data": [r"\bdatasets\b", r"\.from_hub\("], +} + +# Steps whose construction inside a loop means the notebook hand-rolled a sweep. +# `Sweep` exists precisely so a component study is one step rather than a closure +# over the model, the task, and a baseline Results. +_CAUSAL_STEPS = { + "Ablate", + "AblateAttention", + "Intervene", + "LogitAttribution", + "LogitLens", + "Logits", + "PathPatch", + "Patch", + "Probe", + "Record", + "RecordAttention", + "SAEEncode", + "SteeringVector", + "WeightAblation", + "sae_steer", # builds an Intervene +} + + +def _cells(path: Path, kind: str) -> list[str]: + notebook = json.loads(path.read_text()) + return ["".join(c["source"]) for c in notebook["cells"] if c["cell_type"] == kind] + + +def _code(path: Path) -> str: + return "\n".join(_cells(path, "code")) + + +def _outline(header: str) -> list[str]: + block = header.split("**Structure**", 1)[1].split("**Model and data.**", 1)[0] + return re.findall(r"^\d+\.\s+(.*?)\s*$", block, re.M) + + +def _sections(markdown: list[str]) -> list[tuple[int, str]]: + found = [] + for cell in markdown: + found += [ + (int(n), title.strip()) + for n, title in re.findall(r"^## (\d+)\.\s+(.*?)\s*$", cell, re.M) + ] + return found + + +def _stated_extras(header: str) -> set[str]: + match = re.search(r"murano-interp\[([^\]]*)\]", header) + return set(match.group(1).split(",")) if match else set() + + +def _trees(path: Path) -> list[ast.Module]: + """Parse each code cell; skip any that does not stand alone (checked elsewhere).""" + trees = [] + for cell in _cells(path, "code"): + try: + trees.append(ast.parse(cell)) + except SyntaxError: + continue + return trees + + +def _normalized_definitions(path: Path) -> dict[str, str]: + """Return ``{normalized body: name}`` for every function and class defined. + + The name is stripped and docstrings are blanked before dumping the AST, so two + definitions that differ only in what they are called collide. Comparing names + alone let ``patch_head`` and ``recovered_fraction``, the same function twice, + live in two notebooks unnoticed. + """ + definitions = {} + for tree in _trees(path): + for node in tree.body: + if not isinstance(node, (ast.FunctionDef, ast.ClassDef)): + continue + clone = ast.parse(ast.unparse(node)).body[0] + clone.name = "_" # type: ignore[attr-defined] + for inner in ast.walk(clone): + if ( + isinstance(inner, ast.Expr) + and isinstance(inner.value, ast.Constant) + and isinstance(inner.value.value, str) + ): + inner.value.value = "" + definitions[ast.dump(clone)] = node.name + return definitions + + +def test_every_notebook_is_discovered(): + """Guard the glob: an empty parametrize list would pass vacuously.""" + assert len(_NOTEBOOKS) >= 15, _IDS + + +# ── Template ────────────────────────────────────────────────────────── + + +@pytest.mark.parametrize("path", _NOTEBOOKS, ids=_IDS) +def test_header_carries_every_required_field(path): + header = _cells(path, "markdown")[0] + + assert header.startswith("# "), "the first cell must open with the title" + for heading in _REQUIRED_HEADINGS: + assert heading in header, f"missing {heading}" + + +@pytest.mark.parametrize("path", _NOTEBOOKS, ids=_IDS) +def test_sections_match_the_outline(path): + """The header promises an outline; the sections must deliver exactly it.""" + markdown = _cells(path, "markdown") + outline = _outline(markdown[0]) + sections = _sections(markdown) + + assert outline, "the Structure block lists no sections" + assert [n for n, _ in sections] == list(range(1, len(outline) + 1)), ( + "sections are missing, duplicated, or out of order" + ) + assert [title for _, title in sections] == outline + + +@pytest.mark.parametrize("path", _NOTEBOOKS, ids=_IDS) +def test_closes_with_what_next(path): + assert _cells(path, "markdown")[-1].startswith("## What next") + + +@pytest.mark.parametrize("path", _NOTEBOOKS, ids=_IDS) +def test_what_next_links_resolve(path): + last = _cells(path, "markdown")[-1] + targets = re.findall(r"\]\((?!https?://)([^)]+\.ipynb)\)", last) + + assert targets, "What next links to no notebook" + for target in targets: + assert (path.parent / target).exists(), f"broken link to {target}" + + +# ── Claims match reality ────────────────────────────────────────────── + + +@pytest.mark.parametrize("path", _NOTEBOOKS, ids=_IDS) +def test_declared_extras_match_the_imports(path): + """A notebook must name every extra it needs, and none that it does not.""" + header = _cells(path, "markdown")[0] + code = _code(path) + + needed = { + extra + for extra, patterns in _EXTRA_IMPLIED_BY.items() + if any(re.search(pattern, code) for pattern in patterns) + } + assert _stated_extras(header) == needed, ( + f"header states {_stated_extras(header) or 'no extras'}, the notebook " + f"needs {needed or 'no extras'}" + ) + + +@pytest.mark.parametrize("path", _NOTEBOOKS, ids=_IDS) +def test_every_code_cell_parses(path): + """Jupyter executes cells independently, so each must be valid on its own.""" + for index, cell in enumerate(_cells(path, "code")): + try: + ast.parse(cell) + except SyntaxError as exc: + pytest.fail(f"{path.name} code cell {index}: {exc}") + + +@pytest.mark.parametrize("path", _NOTEBOOKS, ids=_IDS) +def test_writes_to_its_own_output_directory(path): + code = _code(path) + match = re.search(r'^OUTPUT_DIR = "murano_outputs/([^"]+)"', code, re.M) + + assert match, "no OUTPUT_DIR declared" + assert match.group(1) == path.stem, "OUTPUT_DIR must be named after the notebook" + + +# ── No duplicated code across notebooks ─────────────────────────────── + + +def test_no_function_or_class_is_defined_in_two_notebooks(): + """Shared helpers belong in the library, not copy-pasted between tutorials.""" + owners: dict[str, list[str]] = {} + for path in _NOTEBOOKS: + for name in re.findall(r"^(?:def|class)\s+(\w+)", _code(path), re.M): + owners.setdefault(name, []).append(path.name) + + duplicated = {name: files for name, files in owners.items() if len(files) > 1} + assert not duplicated, f"define these once, in murano: {duplicated}" + + +def test_no_two_notebooks_define_the_same_body_under_different_names(): + """Renaming a copy-paste does not make it not a copy-paste.""" + owners: dict[str, list[str]] = {} + for path in _NOTEBOOKS: + for body, name in _normalized_definitions(path).items(): + owners.setdefault(body, []).append(f"{path.name}:{name}") + + duplicated = [names for names in owners.values() if len(names) > 1] + assert not duplicated, f"these are the same definition twice: {duplicated}" + + +@pytest.mark.parametrize("path", _NOTEBOOKS, ids=_IDS) +def test_no_causal_step_is_constructed_inside_a_loop(path): + """A step built in a `for` body is a hand-rolled sweep; use the Sweep step.""" + offenders = set() + for tree in _trees(path): + for node in ast.walk(tree): + if not isinstance(node, ast.For): + continue + for inner in ast.walk(node): + if ( + isinstance(inner, ast.Call) + and isinstance(inner.func, ast.Name) + and inner.func.id in _CAUSAL_STEPS + ): + offenders.add(inner.func.id) + + assert not offenders, ( + f"{sorted(offenders)} constructed inside a for-loop; sweep with `Sweep`, " + f"whose steps= callback builds the chain per item" + ) + + +@pytest.mark.parametrize("path", _NOTEBOOKS, ids=_IDS) +def test_no_pipeline_is_built_inside_a_function(path): + """Pipelines are read at cell level; only Sweep's steps= callback builds steps.""" + offenders = set() + for tree in _trees(path): + for node in ast.walk(tree): + if not isinstance(node, (ast.FunctionDef, ast.ClassDef)): + continue + for inner in ast.walk(node): + if ( + isinstance(inner, ast.Call) + and isinstance(inner.func, ast.Name) + and inner.func.id == "Pipeline" + ): + offenders.add(node.name) + + assert not offenders, ( + f"{sorted(offenders)} hide a Pipeline; build it at cell level so a reader " + f"sees the steps, and sweep with `Sweep`" + ) + + +def test_notebooks_do_not_re_declare_what_murano_tasks_provides(): + """The IOI prompts and the sentiment vocabulary have exactly one home.""" + forbidden = { + "When {a} and {b}": "murano.tasks.IOI_TEMPLATE", + '("Mary", "John")': "murano.tasks.ioi", + "POSITIVE_WORDS = {": "murano.tasks.POSITIVE_WORDS", + } + for path in _NOTEBOOKS: + code = _code(path) + for snippet, home in forbidden.items(): + assert snippet not in code, f"{path.name} re-declares {home}" + + +def test_output_directories_are_unique(): + """Two notebooks writing to one directory would clobber each other's figures.""" + dirs = [ + re.search(r'^OUTPUT_DIR = "([^"]+)"', _code(path), re.M).group(1) + for path in _NOTEBOOKS + ] + assert len(set(dirs)) == len(dirs), dirs + + +def test_the_docs_generator_lists_every_notebook(): + """A new notebook missing from ORDER would only fail at docs-deploy time.""" + order = re.findall( + r'^ "([^"]+\.ipynb)",', + (_ROOT / "docs" / "scripts" / "gen_notebook_docs.py").read_text(), + re.M, + ) + on_disk = [path.relative_to(_ROOT / "notebooks").as_posix() for path in _NOTEBOOKS] + + assert sorted(order) == sorted(on_disk), ( + "docs/scripts/gen_notebook_docs.py ORDER is out of sync with notebooks/" + ) diff --git a/tests/test_plotting_activations.py b/tests/test_plotting_activations.py new file mode 100644 index 0000000..4766ae3 --- /dev/null +++ b/tests/test_plotting_activations.py @@ -0,0 +1,262 @@ +"""Tests for the activation-projection plot. + +Covers both activation stores it accepts, the supervised and unsupervised +reducer paths, and the guard that rejects stores it cannot interpret. The +pipeline-fed cases use the shared tiny local model from conftest, so nothing is +downloaded. +""" + +from __future__ import annotations + +import numpy as np +import pytest +import torch + +pytest.importorskip("plotly") +pytest.importorskip("sklearn") + +from murano import Pipeline +from murano.dataset import LabeledDataset, MuranoDataset +from murano.plotting import plot_activation_projection +from murano.steps.load import Load +from murano.steps.record import ( + ActivationStore, + LabeledActivationStore, + Record, +) + + +# ── Fixtures ────────────────────────────────────────────────────────── + + +@pytest.fixture +def contrastive_dataset(): + return MuranoDataset( + positive_texts=["hello world", "good world"], + negative_texts=["bad world", "bad prompt"], + ) + + +@pytest.fixture +def labeled_dataset(): + return LabeledDataset( + texts=["hello world", "good world", "bad world", "bad prompt"], + labels=[0, 0, 1, 1], + label_names=["good", "bad"], + ) + + +@pytest.fixture +def separable_store(): + """Two well-separated blobs, so a projection has real structure to find.""" + torch.manual_seed(0) + return ActivationStore( + positive={(0, "residual"): torch.randn(8, 16) + 3.0}, + negative={(0, "residual"): torch.randn(8, 16) - 3.0}, + position="last", + ) + + +def _pca(n_components: int = 2): + from sklearn.decomposition import PCA + + return PCA(n_components=n_components) + + +def _lda(n_components: int = 1): + from sklearn.discriminant_analysis import LinearDiscriminantAnalysis + + return LinearDiscriminantAnalysis(n_components=n_components) + + +# ── Store types ─────────────────────────────────────────────────────── + + +def test_contrastive_store_yields_one_trace_per_class(separable_store): + fig = plot_activation_projection(separable_store, 0, _pca()) + + assert [trace.type for trace in fig.data] == ["scatter", "scatter"] + assert [trace.name for trace in fig.data] == ["positive", "negative"] + assert len(fig.data[0].x) == 8 + + +def test_labeled_store_uses_label_names(): + store = LabeledActivationStore( + activations={(0, "residual"): torch.randn(6, 8)}, + labels=torch.tensor([0, 0, 0, 1, 1, 1]), + position="last", + ) + fig = plot_activation_projection(store, 0, _pca(), label_names=["good", "bad"]) + + assert [trace.name for trace in fig.data] == ["good", "bad"] + + +def test_labeled_store_without_names_falls_back_to_label_ints(): + store = LabeledActivationStore( + activations={(0, "residual"): torch.randn(4, 8)}, + labels=torch.tensor([0, 0, 1, 1]), + position="last", + ) + fig = plot_activation_projection(store, 0, _pca()) + + assert [trace.name for trace in fig.data] == ["0", "1"] + + +def test_label_names_that_miss_a_label_raise_rather_than_index_error(): + """LabeledDataset does not force labels to be 0..n-1, so guard the lookup.""" + store = LabeledActivationStore( + activations={(0, "residual"): torch.randn(4, 8)}, + labels=torch.tensor([0, 0, 5, 5]), + position="last", + ) + with pytest.raises(ValueError, match="label_names has 2 entries"): + plot_activation_projection(store, 0, _pca(), label_names=["a", "b"]) + + +def test_class_colors_do_not_depend_on_row_order(): + """Shuffling the dataset must not silently swap which class is which color.""" + torch.manual_seed(0) + activations = torch.randn(4, 8) + labels = torch.tensor([0, 0, 1, 1]) + order = torch.tensor([2, 3, 0, 1]) + + def color_of_class(acts, labs): + store = LabeledActivationStore( + activations={(0, "residual"): acts}, labels=labs, position="last" + ) + fig = plot_activation_projection(store, 0, _pca(), label_names=["pos", "neg"]) + return {trace.name: trace.marker.color for trace in fig.data} + + assert color_of_class(activations, labels) == color_of_class( + activations[order], labels[order] + ) + + +def test_reducer_returning_one_dimensional_array_is_accepted(): + """Not every reducer returns a column vector for a single component.""" + + class Flat: + def fit_transform(self, X, y=None): + return np.asarray(X)[:, 0] + + store = ActivationStore( + positive={(0, "residual"): torch.randn(3, 4)}, + negative={(0, "residual"): torch.randn(3, 4)}, + position="last", + ) + fig = plot_activation_projection(store, 0, Flat()) + + assert len(fig.data) == 2 + assert fig.layout.yaxis.showticklabels is False + + +# ── Reducers ────────────────────────────────────────────────────────── + + +def test_supervised_reducer_receives_the_class_labels(separable_store): + """LDA needs y; a one-component fit means it must have been supplied.""" + fig = plot_activation_projection(separable_store, 0, _lda(n_components=1)) + + # One component: classes are fanned out on y purely to avoid overlap. + assert set(np.asarray(fig.data[0].y)) == {0.0} + assert set(np.asarray(fig.data[1].y)) == {1.0} + assert fig.layout.yaxis.showticklabels is False + + +def test_two_component_reducer_plots_both_axes(separable_store): + fig = plot_activation_projection(separable_store, 0, _pca(n_components=2)) + + assert fig.layout.yaxis.title.text == "Component 2" + assert fig.layout.yaxis.showticklabels is None # not suppressed + + +# ── Numerics ────────────────────────────────────────────────────────── + + +def test_zero_rows_do_not_become_nan_under_normalization(): + """A zero activation has no direction; normalizing must not divide by zero.""" + store = ActivationStore( + positive={(0, "residual"): torch.zeros(4, 8)}, + negative={(0, "residual"): torch.randn(4, 8)}, + position="last", + ) + fig = plot_activation_projection(store, 0, _pca()) + + assert not np.isnan(np.asarray(fig.data[0].x)).any() + + +def test_accepts_bf16_activations(separable_store): + """bf16 has no numpy dtype, so the conversion must go through float32.""" + store = ActivationStore( + positive={(0, "residual"): separable_store.positive[0].bfloat16()}, + negative={(0, "residual"): separable_store.negative[0].bfloat16()}, + position="last", + ) + fig = plot_activation_projection(store, 0, _pca()) + + assert len(fig.data) == 2 + + +@pytest.mark.parametrize("address", [0, (0, "residual"), "L0.resid_post"]) +def test_accepts_address_shorthand(separable_store, address): + fig = plot_activation_projection(separable_store, address, _pca()) + + assert fig.layout.title.text.endswith("(L0.resid_post)") + + +# ── Guards ──────────────────────────────────────────────────────────── + + +def test_rejects_full_position_store(): + store = ActivationStore( + positive={(0, "residual"): torch.randn(4, 3, 8)}, + negative={(0, "residual"): torch.randn(4, 3, 8)}, + position="none", + ) + with pytest.raises(ValueError, match="reduced activation store"): + plot_activation_projection(store, 0, _pca()) + + +def test_rejects_per_head_store(): + store = ActivationStore( + positive={(0, "self_attn"): torch.randn(4, 2, 4)}, + negative={(0, "self_attn"): torch.randn(4, 2, 4)}, + position="last", + per_head=True, + ) + with pytest.raises(ValueError, match="reduced activation store"): + plot_activation_projection(store, (0, "self_attn"), _pca()) + + +# ── Fed by a real Record pipeline ───────────────────────────────────── + + +def test_projects_a_recorded_contrastive_store(murano_model, contrastive_dataset): + results = Pipeline( + [ + Load(contrastive_dataset), + Record(murano_model, layers=[0], position="last", batch_size=2), + ] + ).run() + + fig = plot_activation_projection(results["record"], 0, _pca()) + + assert [trace.name for trace in fig.data] == ["positive", "negative"] + + +def test_projects_a_recorded_labeled_store(murano_model, labeled_dataset): + """The same Record that feeds Probe also feeds this plot.""" + results = Pipeline( + [ + Load(labeled_dataset), + Record(murano_model, layers=[0], position="last", batch_size=2), + ] + ).run() + store = results["record"] + + assert isinstance(store, LabeledActivationStore) + fig = plot_activation_projection( + store, 0, _lda(n_components=1), label_names=labeled_dataset.label_names + ) + + assert [trace.name for trace in fig.data] == ["good", "bad"] diff --git a/tests/test_plotting_sweep.py b/tests/test_plotting_sweep.py new file mode 100644 index 0000000..58fefa6 --- /dev/null +++ b/tests/test_plotting_sweep.py @@ -0,0 +1,82 @@ +"""Tests for plot_sweep, which picks its shape from the swept items.""" + +from __future__ import annotations + +import math + +from murano import Node +from murano.artifacts import SweepResult +from murano.plotting import plot_sweep +from murano.plotting.plotly_utils import BAR_COLOR, HIGHLIGHT_COLOR + + +def _heads( + values: dict[tuple[int, int], float], name: str = "recovered" +) -> SweepResult: + scores = { + Node(layer, "self_attn", head=head): v for (layer, head), v in values.items() + } + return SweepResult(columns={name: scores}, primary=name) + + +def _plain(values: dict[str, float], name: str = "logit_diff") -> SweepResult: + return SweepResult(columns={name: values}, primary=name) + + +class TestHeadSweep: + def test_renders_a_heatmap(self): + fig = plot_sweep(_heads({(0, 0): 1.0, (0, 1): 2.0})) + assert fig.data[0].type == "heatmap" + + def test_signed_scores_center_the_color_scale_on_zero(self): + """A signed statistic on a sequential scale shades zero as if it had a sign.""" + fig = plot_sweep(_heads({(0, 0): -1.0, (0, 1): 2.0})) + assert fig.data[0].zmid == 0.0 + + def test_one_sided_scores_stay_sequential(self): + fig = plot_sweep(_heads({(0, 0): 1.0, (0, 1): 2.0})) + assert fig.data[0].zmid is None + + def test_diverging_can_be_forced(self): + fig = plot_sweep(_heads({(0, 0): 1.0, (0, 1): 2.0}), diverging=True) + assert fig.data[0].zmid == 0.0 + + def test_unswept_cells_are_blank_not_zero(self): + fig = plot_sweep(_heads({(2, 1): 0.7})) + z = fig.data[0].z + assert z[2][1] == 0.7 + assert math.isnan(z[0][0]) + + def test_title_defaults_to_the_column_name(self): + assert plot_sweep(_heads({(0, 0): 1.0})).layout.title.text == "recovered" + + +class TestPlainSweep: + def test_renders_one_bar_per_item(self): + fig = plot_sweep(_plain({"zero": 1.0, "mean": 2.0})) + assert fig.data[0].type == "bar" + assert list(fig.data[0].x) == ["zero", "mean"] + + def test_signed_scores_color_by_sign(self): + fig = plot_sweep(_plain({"zero": -0.3, "mean": 0.4})) + assert list(fig.data[0].marker.color) == [HIGHLIGHT_COLOR, BAR_COLOR] + + def test_one_sided_scores_use_one_color(self): + fig = plot_sweep(_plain({"zero": 0.3, "mean": 0.4})) + assert fig.data[0].marker.color == BAR_COLOR + + def test_a_node_sweep_that_is_not_over_heads_falls_back_to_bars(self): + scores = {Node(0, "mlp"): 1.0, Node(1, "mlp"): 2.0} + fig = plot_sweep(SweepResult(columns={"x": scores}, primary="x")) + assert fig.data[0].type == "bar" + + +class TestColumnSelection: + def test_renders_a_named_column(self): + result = SweepResult( + columns={"logit_diff": {"a": 1.0}, "kl_div": {"a": 5.0}}, + primary="logit_diff", + ) + fig = plot_sweep(result, column="kl_div") + assert list(fig.data[0].y) == [5.0] + assert fig.layout.title.text == "kl_div" diff --git a/tests/test_plotting_utils.py b/tests/test_plotting_utils.py index b1fb68b..7e6e92e 100644 --- a/tests/test_plotting_utils.py +++ b/tests/test_plotting_utils.py @@ -54,6 +54,18 @@ def test_layout_title(self, heatmap_data): ) assert fig.to_dict()["layout"]["title"]["text"] == "Logit Lens Probabilities" + def test_zmid_defaults_to_unset(self, heatmap_data): + fig = plot_heatmap(z_data=heatmap_data["z_data"]) + assert fig.data[0].zmid is None + + def test_zmid_centers_a_diverging_scale(self): + # An asymmetric signed range would otherwise shade zero as if it had a + # sign; anchoring the midpoint keeps the neutral color meaning zero. + fig = plot_heatmap( + z_data=[[-0.5, 0.0], [0.1, 0.25]], color_scale="RdBu", zmid=0 + ) + assert fig.data[0].zmid == 0 + def test_x_axis_labels(self, heatmap_data): fig_dict = plot_heatmap( z_data=heatmap_data["z_data"], diff --git a/tests/test_public_api.py b/tests/test_public_api.py index c008b6a..815633c 100644 --- a/tests/test_public_api.py +++ b/tests/test_public_api.py @@ -2,8 +2,6 @@ from __future__ import annotations -from pathlib import Path - import pytest import torch @@ -51,8 +49,3 @@ def test_model_generate_rejects_conflicting_interventions(): model = object.__new__(MuranoModel) with pytest.raises(ValueError, match="either 'ablate' or 'steer'"): model.generate("prompt", ablate={}, steer=({}, 1.0)) - - -def test_readme_examples_exist(): - root = Path(__file__).resolve().parents[1] - assert (root / "examples" / "quick_prototype.py").exists() diff --git a/tests/test_sweep.py b/tests/test_sweep.py new file mode 100644 index 0000000..c3af2ec --- /dev/null +++ b/tests/test_sweep.py @@ -0,0 +1,348 @@ +"""Tests for the Sweep step and the SweepResult artifact. + +The swept chain is built from stub steps rather than a model, so the sweep's own +contract (forking, harvesting, pre-flight reads, leak isolation) is checked +directly. One integration test runs the tiny fixture model end to end. +""" + +from __future__ import annotations + +import json + +import pytest + +from murano import Node, NodeSet, Pipeline, keys +from murano.artifacts import MetricScore, SweepResult +from murano.io import load_sweep_result, save_sweep_result +from murano.results import Results +from murano.steps.base import Step +from murano.steps.logits import Logits +from murano.steps.metrics import LogitDiffStep +from murano.steps.prompts import LoadPrompts +from murano.steps.select import SelectComponents +from murano.steps.sweep import Sweep + + +class Seed(Step): + """Write the baseline the swept chain reads.""" + + reads: list[str] = [] + writes = ["base"] + + def __call__(self, results: Results) -> Results: + results["base"] = 10.0 + return results + + +class Score(Step): + """Score one item against the baseline, into a MetricScore and a raw float.""" + + reads = ["base"] + writes = ["score", "raw"] + + def __init__(self, value: float): + self.value = value + + def __call__(self, results: Results) -> Results: + results["score"] = MetricScore("score", value=self.value - results["base"]) + results["raw"] = self.value + return results + + +class WritesSomethingElse(Step): + reads = ["base"] + writes = ["elsewhere"] + + def __call__(self, results: Results) -> Results: + results["elsewhere"] = 1.0 + return results + + +class WritesAnObject(Step): + reads: list[str] = [] + writes = ["thing"] + + def __call__(self, results: Results) -> Results: + results["thing"] = object() + return results + + +def _heads(n_layers: int, n_heads: int) -> NodeSet: + return NodeSet.product(range(n_layers), ["self_attn"], heads=range(n_heads)) + + +def _sweep(over, read="score") -> SweepResult: + pipe = Pipeline( + [Seed(), Sweep(over=over, steps=lambda i: [Score(_value(i))], read=read)] + ) + return pipe.run()[keys.SWEEP] + + +def _value(item) -> float: + """A per-item value that is distinct and cheap to predict in assertions.""" + if isinstance(item, Node): + return item.layer * 10.0 + (item.head or 0) + return float(len(str(item))) + + +# ── Sweep contract ──────────────────────────────────────────────────── + + +class TestSweepContract: + def test_reads_what_the_swept_chain_needs_from_outside(self): + step = Sweep(over=[1], steps=lambda i: [Score(1.0)], read="score") + assert step.reads == ["base"] + assert step.writes == [keys.SWEEP] + + def test_a_key_the_chain_writes_itself_is_not_an_external_read(self): + step = Sweep(over=[1], steps=lambda i: [Seed(), Score(1.0)], read="score") + assert step.reads == [] + + def test_pipeline_validation_rejects_a_missing_upstream_key(self): + pipe = Pipeline([Sweep(over=[1], steps=lambda i: [Score(1.0)], read="score")]) + with pytest.raises(KeyError, match="requires 'base'"): + pipe.validate() + + def test_pipeline_validation_passes_when_the_prefix_supplies_it(self): + pipe = Pipeline( + [Seed(), Sweep(over=[1], steps=lambda i: [Score(1.0)], read="score")] + ) + assert keys.SWEEP in pipe.validate() + + def test_each_item_starts_from_the_same_baseline(self): + result = _sweep([Node(0, "self_attn", head=1), Node(2, "self_attn", head=3)]) + assert result.scores[Node(0, "self_attn", head=1)] == 1.0 - 10.0 + assert result.scores[Node(2, "self_attn", head=3)] == 23.0 - 10.0 + + def test_the_swept_chains_writes_do_not_leak_into_the_pipeline(self): + out = Pipeline( + [ + Seed(), + Sweep(over=[1, 2], steps=lambda i: [Score(_value(i))], read="score"), + ] + ).run() + assert "score" not in out and "raw" not in out + assert out["base"] == 10.0 + + def test_harvests_several_keys_in_one_pass(self): + result = _sweep([1, 22], read=["score", "raw"]) + assert result.primary == "score" + assert sorted(result.columns) == ["raw", "score"] + assert result.column("raw")[22] == 2.0 + + def test_a_metric_score_is_coerced_to_its_value(self): + assert _sweep([1]).scores[1] == pytest.approx(1.0 - 10.0) + + def test_a_single_step_may_be_returned_unwrapped(self): + pipe = Pipeline( + [Seed(), Sweep(over=[1], steps=lambda i: Score(1.0), read="score")] + ) + assert pipe.run()[keys.SWEEP].scores[1] == -9.0 + + def test_metadata_records_the_chain_and_the_items(self): + meta = _sweep(["a", "bb"]).metadata + assert meta["n_items"] == 2 + assert meta["items"] == ["a", "bb"] + assert meta["steps"] == ["Score"] + assert meta["read"] == ["score"] + + +# ── Sweep guardrails ────────────────────────────────────────────────── + + +class TestSweepGuardrails: + def test_empty_item_list_raises(self): + with pytest.raises(ValueError, match="at least one item"): + Sweep(over=[], steps=lambda i: [Score(1.0)], read="score") + + def test_empty_read_list_raises(self): + with pytest.raises(ValueError, match="at least one key"): + Sweep(over=[1], steps=lambda i: [Score(1.0)], read=[]) + + def test_harvesting_a_key_the_chain_never_writes_raises(self): + """Otherwise every item silently records the same baseline value.""" + with pytest.raises(ValueError, match="never writes"): + Sweep(over=[1], steps=lambda i: [WritesSomethingElse()], read="score") + + def test_an_empty_chain_raises(self): + with pytest.raises(ValueError, match="built no step"): + Sweep(over=[1], steps=lambda i: [], read="score") + + def test_a_non_step_in_the_chain_raises(self): + with pytest.raises(TypeError, match="must build Step objects"): + Sweep(over=[1], steps=lambda i: ["not a step"], read="score") + + def test_harvesting_a_non_numeric_key_raises(self): + pipe = Pipeline( + [Sweep(over=[1], steps=lambda i: [WritesAnObject()], read="thing")] + ) + with pytest.raises(TypeError, match="harvests 'thing' as a number"): + pipe.run() + + +# ── SweepResult ─────────────────────────────────────────────────────── + + +class TestSweepResult: + def test_a_node_keyed_sweep_exposes_contributions(self): + result = _sweep(_heads(2, 2)) + assert result.contributions is not None + assert result.contributions is result.scores + + def test_contributions_accepts_node_shorthand(self): + result = _sweep(_heads(2, 2)) + assert ( + result.scores["L1.self_attn.h1"] + == result.scores[Node(1, "self_attn", head=1)] + ) + + def test_a_plain_sweep_has_no_contributions(self): + assert _sweep(["zero", "mean"]).contributions is None + + def test_swept_preserves_the_sweep_order(self): + assert _sweep(["b", "aa", "c"]).swept == ["b", "aa", "c"] + + def test_swept_is_not_named_items(self): + """A mapping-shaped ``items`` would make the artifact duck-type as a dict.""" + result = _sweep([1]) + assert not hasattr(result, "items") + + def test_unknown_column_names_what_was_harvested(self): + with pytest.raises(KeyError, match=r"it read \['score'\]"): + _sweep([1]).column("nope") + + def test_primary_must_be_a_harvested_column(self): + with pytest.raises(ValueError, match="not one of the harvested columns"): + SweepResult(columns={"a": {1: 2.0}}, primary="b") + + def test_head_matrix_places_each_score_at_its_address(self): + grid = _sweep(_heads(3, 2)).head_matrix() + assert len(grid) == 3 and len(grid[0]) == 2 + assert grid[2][1] == 21.0 - 10.0 + + def test_head_matrix_leaves_unswept_cells_blank(self): + """NaN renders as a gap, so an unswept head never reads as a dead head.""" + grid = _sweep([Node(2, "self_attn", head=1)]).head_matrix() + assert grid[2][1] == 11.0 + assert all(value != value for row in grid for value in row if value != 11.0) + + def test_head_matrix_accepts_explicit_dimensions(self): + grid = _sweep([Node(0, "self_attn", head=0)]).head_matrix(n_layers=4, n_heads=3) + assert len(grid) == 4 and len(grid[0]) == 3 + + def test_head_matrix_rejects_dimensions_that_drop_a_score(self): + with pytest.raises(ValueError, match="does not fit"): + _sweep(_heads(3, 2)).head_matrix(n_layers=2, n_heads=2) + + def test_head_matrix_rejects_a_sweep_that_is_not_over_heads(self): + with pytest.raises(TypeError, match="needs a sweep over attention heads"): + _sweep(["zero"]).head_matrix() + + +# ── Composition with the rest of the library ────────────────────────── + + +class TestComposition: + def test_select_components_ranks_a_component_sweep(self): + out = Pipeline( + [ + Seed(), + Sweep( + over=_heads(3, 2), steps=lambda n: [Score(_value(n))], read="score" + ), + SelectComponents(source_key=keys.SWEEP, top_k=2, by="signed"), + ] + ).run() + assert [str(n) for n in out[keys.SELECTION].nodes] == [ + "L2.self_attn.h1", + "L2.self_attn.h0", + ] + + def test_select_components_rejects_a_sweep_that_is_not_over_nodes(self): + out = Pipeline( + [Seed(), Sweep(over=["zero"], steps=lambda i: [Score(1.0)], read="score")] + ).run() + with pytest.raises(TypeError, match="not Node addresses"): + SelectComponents(source_key=keys.SWEEP, top_k=1)(out) + + def test_select_components_validates_the_sweep_type(self): + pipe = Pipeline( + [ + Seed(), + Sweep( + over=_heads(2, 2), steps=lambda n: [Score(_value(n))], read="score" + ), + SelectComponents(source_key=keys.SWEEP, top_k=1), + ] + ) + assert keys.SELECTION in pipe.validate() + + +# ── Persistence ─────────────────────────────────────────────────────── + + +class TestPersistence: + def test_component_sweep_round_trips_with_node_keys(self, tmp_path): + original = _sweep(_heads(2, 2), read=["score", "raw"]) + path = tmp_path / "sweep.json" + save_sweep_result(original, path) + restored = load_sweep_result(path) + + assert restored.primary == original.primary + assert restored.contributions is not None + assert restored.scores == original.scores + assert restored.column("raw") == original.column("raw") + + def test_plain_sweep_round_trips_with_string_labels(self, tmp_path): + original = _sweep(["zero", "mean"]) + path = tmp_path / "sweep.json" + save_sweep_result(original, path) + restored = load_sweep_result(path) + + assert restored.contributions is None + assert restored.scores == original.scores + + def test_saved_file_is_plain_json(self, tmp_path): + path = tmp_path / "sweep.json" + save_sweep_result(_sweep([1]), path) + assert json.loads(path.read_text())["primary"] == "score" + + def test_save_results_writes_the_sweep(self, tmp_path): + out = Pipeline( + [Seed(), Sweep(over=[1], steps=lambda i: [Score(1.0)], read="score")] + ).run() + out.save(output_dir=str(tmp_path)) + assert (tmp_path / "sweep" / "sweep.json").exists() + + +# ── Integration ─────────────────────────────────────────────────────── + + +class TestIntegration: + def test_sweeping_an_intervened_forward_pass_over_layers(self, murano_model): + """Edit each layer's residual in turn: one forward pass per layer, one artifact.""" + out = Pipeline( + [ + LoadPrompts(["hello world", "good world"]), + Sweep( + over=[0, 1], + steps=lambda layer: [ + Logits( + murano_model, + fn=lambda activation, _node: activation + 1.0, + layers=[layer], + targets=None, + ), + LogitDiffStep(correct=5, incorrect=7), + ], + read=keys.LOGIT_DIFF, + ), + ] + ).run() + + sweep = out[keys.SWEEP] + assert sweep.swept == [0, 1] + assert all(value == value for value in sweep.scores.values()) + # The edit lands in a different layer per item, so the scores must differ. + assert sweep.scores[0] != sweep.scores[1] + assert keys.FINAL_LOGITS not in out diff --git a/tests/test_tasks.py b/tests/test_tasks.py new file mode 100644 index 0000000..c0ae7d5 --- /dev/null +++ b/tests/test_tasks.py @@ -0,0 +1,131 @@ +"""Tests for the shared toy tasks. + +These fixtures are consumed by the notebooks, so a silent change to their shape +would break every tutorial at once. The invariants below are the ones the +notebooks and the metric steps rely on. +""" + +from __future__ import annotations + +import pytest + +from murano.dataset import CleanCorruptDataset +from murano.tasks import ( + IOI_TEMPLATE, + POSITIVE_WORDS, + ioi, + positive_word_rate, + sentiment, +) + + +# ── ioi ─────────────────────────────────────────────────────────────── + + +def test_ioi_returns_a_paired_dataset(): + task = ioi(n=3) + + assert isinstance(task, CleanCorruptDataset) + assert len(task.clean) == len(task.corrupt) == 3 + assert len(task.correct) == len(task.incorrect) == 3 + + +def test_ioi_clean_prompt_names_the_subject_as_giver(): + """Clean: the subject gives, so the answer is the OTHER name.""" + task = ioi(n=1) + + assert task.clean[0] == IOI_TEMPLATE.format(a="Mary", b="John", giver="John") + assert task.correct[0] == " Mary" + assert task.incorrect[0] == " John" + + +def test_ioi_corrupt_prompt_flips_who_gives(): + """Corrupt: the indirect object gives, which flips the expected answer.""" + task = ioi(n=1) + + assert task.corrupt[0] == IOI_TEMPLATE.format(a="Mary", b="John", giver="Mary") + assert task.clean[0] != task.corrupt[0] + + +def test_ioi_answers_carry_the_leading_space(): + """LogitDiffStep tokenizes these directly; a missing space picks a different id.""" + task = ioi() + + assert all(answer.startswith(" ") for answer in task.correct) + assert all(answer.startswith(" ") for answer in task.incorrect) + + +def test_ioi_clean_and_corrupt_have_the_same_token_count(): + """Patching resamples position by position, so the pair must align.""" + task = ioi() + + for clean, corrupt in zip(task.clean, task.corrupt): + assert len(clean.split()) == len(corrupt.split()) + + +def test_ioi_every_pair_is_distinct(): + task = ioi() + + assert len(set(task.clean)) == len(task.clean) + assert set(task.correct).isdisjoint(task.incorrect) + + +@pytest.mark.parametrize("n", [0, -1, 13]) +def test_ioi_rejects_an_out_of_range_size(n): + with pytest.raises(ValueError, match="n must be between"): + ioi(n=n) + + +def test_ioi_records_its_provenance(): + assert ioi().metadata["task"] == "ioi" + + +# ── sentiment ───────────────────────────────────────────────────────── + + +def test_sentiment_returns_balanced_classes(): + positive, negative = sentiment(n_per_class=10) + + assert len(positive) == len(negative) == 10 + assert set(positive).isdisjoint(negative) + + +def test_sentiment_defaults_to_every_sentence(): + positive, negative = sentiment() + + assert len(positive) == len(negative) == 25 + + +@pytest.mark.parametrize("n", [0, 26]) +def test_sentiment_rejects_an_out_of_range_size(n): + with pytest.raises(ValueError, match="n_per_class must be between"): + sentiment(n_per_class=n) + + +# ── positive_word_rate ──────────────────────────────────────────────── + + +def test_positive_word_rate_counts_generations_not_words(): + """One hit is enough; a second word in the same generation must not double it.""" + assert positive_word_rate(["good and great", "nothing here"]) == 0.5 + + +def test_positive_word_rate_strips_trailing_punctuation(): + assert positive_word_rate(["it was good."]) == 1.0 + assert positive_word_rate(["it was GOOD!"]) == 1.0 + + +def test_positive_word_rate_bounds(): + assert positive_word_rate(["dreadful"]) == 0.0 + assert positive_word_rate(["love"]) == 1.0 + + +def test_positive_word_rate_rejects_an_empty_list(): + with pytest.raises(ValueError, match="empty list"): + positive_word_rate([]) + + +def test_positive_words_is_immutable(): + """The notebooks read this constant; it must not be mutable shared state.""" + with pytest.raises(AttributeError): + POSITIVE_WORDS.add("splendid") # type: ignore[attr-defined]