diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..8b34be5424a7186b4693062346aa9c90fda5a8fc --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +*.safetensors filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +tokenizer.json filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..b1b96e461387d2d9ba0e3e25c7570d35d62fa30a --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +__pycache__/ +*.py[cod] +validation-output/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..93d5b4856f7c35d2fa04de92b69e8775d892b348 --- /dev/null +++ b/LICENSE @@ -0,0 +1,73 @@ + NVIDIA License + +1. Definitions + +“Licensor” means any person or entity that distributes its Work. + +“Work” means (a) the original work of authorship made available under this license, +which may include software, documentation, or other files, and (b) any additions to or +derivative works thereof that are made available under this license. + +The terms “reproduce,” “reproduction,” “derivative works,” and “distribution” have the +meaning as provided under U.S. copyright law; provided, however, that for the purposes +of this license, derivative works shall not include works that remain separable from, or +merely link (or bind by name) to the interfaces of, the Work. + +Works are “made available” under this license by including in or with the Work either +(a) a copyright notice referencing the applicability of this license to the Work, or +(b) a copy of this license. + +2. License Grant + +2.1 Copyright Grant. Subject to the terms and conditions of this license, each Licensor +grants to you a perpetual, worldwide, non-exclusive, royalty-free, copyright license to +use, reproduce, prepare derivative works of, publicly display, publicly perform, +sublicense and distribute its Work and any resulting derivative works in any form. + +3. Limitations + +3.1 Redistribution. You may reproduce or distribute the Work only if (a) you do so under +this license, (b) you include a complete copy of this license with your distribution, +and (c) you retain without modification any copyright, patent, trademark, or attribution +notices that are present in the Work. + +3.2 Derivative Works. You may specify that additional or different terms apply to the +use, reproduction, and distribution of your derivative works of the Work (“Your Terms”) +only if (a) Your Terms provide that the use limitation in Section 3.3 applies to your +derivative works, and (b) you identify the specific derivative works that are subject +to Your Terms. Notwithstanding Your Terms, this license (including the redistribution +requirements in Section 3.1) will continue to apply to the Work itself. + +3.3 Use Limitation. The Work and any derivative works thereof only may be used or +intended for use non-commercially. Notwithstanding the foregoing, NVIDIA Corporation +and its affiliates may use the Work and any derivative works commercially. As used +herein, “non-commercially” means for research or evaluation purposes only. + +3.4 Patent Claims. If you bring or threaten to bring a patent claim against any +Licensor (including any claim, cross-claim or counterclaim in a lawsuit) to enforce any +patents that you allege are infringed by any Work, then your rights under this license +from such Licensor (including the grant in Section 2.1) will terminate immediately. + +3.5 Trademarks. This license does not grant any rights to use any Licensor’s or its +affiliates’ names, logos, or trademarks, except as necessary to reproduce the notices +described in this license. + +3.6 Termination. If you violate any term of this license, then your rights under this +license (including the grant in Section 2.1) will terminate immediately. + +4. Disclaimer of Warranty. + +THE WORK IS PROVIDED “AS IS” WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER +EXPRESS OR IMPLIED, INCLUDING WARRANTIES OR CONDITIONS OF MERCHANTABILITY, FITNESS FOR +A PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT. YOU BEAR THE RISK OF UNDERTAKING ANY +ACTIVITIES UNDER THIS LICENSE. + +5. Limitation of Liability. + +EXCEPT AS PROHIBITED BY APPLICABLE LAW, IN NO EVENT AND UNDER NO LEGAL THEORY, WHETHER +IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE SHALL ANY LICENSOR BE LIABLE TO +YOU FOR DAMAGES, INCLUDING ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES ARISING OUT OF OR RELATED TO THIS LICENSE, THE USE OR INABILITY TO USE THE WORK +(INCLUDING BUT NOT LIMITED TO LOSS OF GOODWILL, BUSINESS INTERRUPTION, LOST PROFITS OR +DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY OTHER DAMAGES OR LOSSES), EVEN IF THE +LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..042b05631519496b707afeb873f0bdf773a9c699 --- /dev/null +++ b/README.md @@ -0,0 +1,227 @@ +--- +library_name: transformers +pipeline_tag: any-to-any +tags: + - custom_code + - image-text-to-text + - text-to-image + - image-to-image +--- + +# Nemotron-Labs-Diffusion-Uni-8B + +## Description + +NLD-Uni is a unified multimodal model for image understanding and image generation. It combines a diffusion language model with specialized visual components and a mixture-of-transformers design. Understanding and generation use distinct transformer parameter paths within a common multimodal framework. + +For image understanding, NLD-Uni encodes images into continuous visual features and generates text responses. For image generation, it models discrete visual tokens through iterative diffusion and decodes those tokens into RGB images. The architecture supports autoregressive and blockwise diffusion decoding for text, as well as image-conditioned generation and editing when enabled by the checkpoint and inference implementation. + +This card describes the NLD-Uni architecture generally. + +### License/Terms of Use + +GOVERNING TERMS: Use of this model is governed by the [NVIDIA Open Source License Agreement](https://huggingface.co/nvidia/NL-Diffusion-Image/raw/main/LICENSE). + +## Deployment Geography + +Global, subject to the governing release terms. + +## Use Case + +NLD-Uni is intended for research and evaluation of unified multimodal systems, including: + +- Visual question answering and image-grounded reasoning. +- Document, chart, and scene-text understanding. +- Visual grounding and interface localization using task-specific prompts and output formats. +- Text-to-image generation. +- Image-conditioned generation and editing for checkpoints trained for these tasks. + +## Release Date + +GitLab 10/17/2026 via [NLD-Uni](https://gitlab-master.nvidia.com/shufanl/nld-uni). + +## Model Architecture + +**Architecture Type:** Transformer + +**Network Architecture:** Diffusion language model with understanding and generation transformer paths, a continuous visual encoder for understanding, and a discrete image tokenizer for generation. + +**Language-model foundation:** Nemotron diffusion language model. + +## Input + +**Input Type(s):** Text and images. + +**Input Format(s):** Text strings and image objects or tensors accepted by the supplied processor. + +**Input Parameters:** One-dimensional text-token sequences and two-dimensional image content, represented internally as visual features or discrete image tokens according to the task. + +**Other Properties Related to Input:** Context length, image resolution, visual-token budget, and preprocessing are checkpoint- and task-dependent. The released inference configuration defines the supported limits; a universal 900-token prompt limit is not specified for the architecture. + +## Output + +**Output Type(s):** + +- Text +- Image + +**Output Format(s):** + +- **Text:** `.json` (UTF-8 JSON records containing generated text). +- **Image:** `.png` (RGB images). + +These serialized formats are implemented by `validate.py`. The inference API returns text strings or token IDs for understanding and decoded image objects or tensors for generation. Grounding outputs follow the requested coordinate or location-token format. + +**Output Parameters:** One-dimensional token sequences or images with height, width, and three color channels. Tensor layout and pixel range are defined by the inference API. + +**Other Properties Related to Output:** Text output length and generated image resolution depend on the checkpoint and inference settings. Configurations for 1,024 × 1,024 image generation are implemented; the release should list its validated resolutions. + +## Software Integration + +NLD-Uni’s native implementation uses PyTorch with CUDA-accelerated execution. The codebase also includes a dedicated SGLang integration for the image-understanding and text-generation path. This does not establish SGLang support for the image-generation path. + +**Runtime Engine(s):** + +- PyTorch for native multimodal inference. +- SGLang with the NLD-Uni/LaVida RADIO-H adapter for supported understanding configurations. + +**Reference Platform:** Linux with NVIDIA CUDA GPUs. + +**Reference Evaluation Hardware:** NVIDIA H100 (Hopper). + +## Model Version(s) + +- **NLD-Uni:** Unified image-understanding and image-generation architecture based on LaVida-O. + +Training stage, checkpoint revision, tokenizer revision, and inference configuration are part of the identity of an evaluated model. Results from earlier LaVida-O or image-only diffusion models should retain their original model names. + +# Training and Evaluation Datasets + +## Training Dataset + +More than 100M image-text pairs. + +**Data Collection Method by dataset** + +- Hybrid: Automated, Manually-Collected, Synthetic + +**Labeling Method by dataset** + +- Hybrid: Automated, Manually-Labeled, Synthetic + +## Evaluation Datasets + +### Documented Functional Validation Dataset + +- **Modalities:** Text and RGB images. +- **Nature of content:** Synthetic everyday-object, animal, and landscape scenes; text-to-image prompts, edit instructions, and image-understanding questions. The generated images are used as inputs to subsequent editing and understanding tasks. +- **Linguistic characteristics:** English prompts, edit instructions, questions, and recorded answers. +- **Collection and labeling:** Three scripted scene cases in `validate.py`; model-generated images and answers were manually inspected for prompt alignment and editing fidelity. + +Counts and results are recorded in [VALIDATION.md](VALIDATION.md), [validation.json](validation.json), and [examples/results.json](examples/results.json). These are functional smoke tests, not measurements of benchmark accuracy. + +### Benchmark Evaluation Properties + +The benchmark suite below covers image and text inputs, including mathematical and scientific questions, documents, charts, scene text, interfaces, referring expressions, and image-generation prompts. OCRBenchV2-EN identifies an English subset; the exact language coverage of the other evaluated splits must be documented from the evaluation records. + +### Image Understanding + +The evaluation suite should identify the following benchmarks and splits explicitly: + +| Benchmark | Evaluation target | Primary reporting requirement | +|---|---|---| +| MathVista_MINI | Visual mathematical reasoning | Full 1,000-example accuracy; identify answer-extraction judge | +| MMMU_DEV_VAL | Multidisciplinary visual reasoning | Report development and validation splits separately | +| AI2D_TEST | Diagram understanding | Accuracy and image/prompt protocol | +| ChartQA_TEST | Chart question answering | Relaxed accuracy and subset aggregation | +| DocVQA_VAL | Document question answering | ANLS | +| TextVQA_VAL | Scene-text question answering | VQA accuracy with specified normalization | +| RealWorldQA | Real-world visual understanding | Accuracy | +| InfoVQA_VAL | Infographic question answering | ANLS | +| ScienceQA_TEST | Science question answering | Identify the image-containing subset when used | +| ScreenSpot-Pro | Interface grounding | Point-localization accuracy; separate first-pass and crop-refined results | +| RefCOCO | Referring-expression grounding | IoU ≥ 0.5 accuracy for val, testA, and testB; disclose the native LOC protocol | +| OCRBenchV2-EN | OCR and document understanding | Official English category aggregation | + +### Image Generation + +| Benchmark | Evaluation target | Primary metric | +|---|---|---| +| GenEval | Object presence, counts, colors, positions, and attribute binding | Overall and category scores | +| DPG-Bench | Alignment with detailed compositional prompts | Overall and category scores | +| MJHQ-30K | Generated-image distribution and quality | FID; any additional preference metric must identify its model and version | + +Evaluation should identify the exact checkpoint, prompt processing, image preprocessing, decoding parameters, seed policy, sample count, and evaluator version. Report reasoning and non-reasoning results separately. Tokenizer reconstruction evaluation, if performed, should be identified separately from end-to-end image-generation quality. + +## Key Considerations + +NLD-Uni can produce incorrect text, inaccurate grounding coordinates, and synthetic images that do not fully follow the prompt. Generated content may reflect biases in training data or contain inappropriate material. Image-conditioned outputs may change details that users intended to preserve. + +Applications should be evaluated on their intended tasks and data, with appropriate input and output controls. Model outputs should not be treated as verified factual evidence solely because they are fluent or visually plausible. + +## Inference + +**Native Engine:** PyTorch. + +**Understanding Serving Integration:** SGLang with the model-specific adapter, for validated configurations. + +**Reference Precision:** BF16 where supported by the selected implementation. + +**Reference Hardware:** NVIDIA H100. + +Use the model-specific tokenizer, processor, chat template, and task interface. Image understanding uses the continuous visual encoder; image generation uses the discrete image-token pipeline. Runtime optimizations, including CUDA graphs, should be evaluated with the exact checkpoint and decode configuration before publishing accuracy or speed claims. + +## Ethical Considerations + +NVIDIA believes trustworthy AI is a shared responsibility. Developers should evaluate NLD-Uni for the intended application, including potential errors, bias, privacy concerns, and misuse of generated content. + +Users should have appropriate rights and permissions for input images and other supplied content. Generated or edited images may alter identities, text, object proportions, or scene details. Applications should communicate the synthetic nature of generated content where appropriate. + +Users are responsible for model inputs and outputs and for implementing appropriate safeguards before deployment. + +Report model quality concerns, security vulnerabilities, or NVIDIA AI concerns through [NVIDIA’s reporting channel](https://www.nvidia.com/en-us/support/submit-security-vulnerability/). + +## Environment + +Install the dependencies in `requirements.txt` with Python 3.13 and CUDA 12.6. Install PyTorch before building FlashAttention: + +```bash +pip install -r requirements.txt +pip install --no-build-isolation flash-attn==2.8.0.post2 +``` + +Validated on an NVIDIA H100 80 GB. The eight BF16 weight shards contain all 1,557 active model tensors. `weights_manifest.json` records their hashes. + +## Python inference + +```python +import torch +from transformers import AutoModelForCausalLM + +model = AutoModelForCausalLM.from_pretrained( + '/path/to/hf_checkpoint', # or 'organization/model-name' + trust_remote_code=True, + torch_dtype=torch.bfloat16, +).to('cuda').eval() + +image = model.text_to_image('A red ceramic mug on a wooden table.', seed=42) +image.save('mug.png') + +edited = model.image_edit(image, 'Change the mug to blue.', seed=42) +edited.save('blue_mug.png') + +answer = model.generate('What color is the mug?', image=edited) +print(answer) +``` + +Image inputs accept Pillow images or local file paths. Image methods return Pillow images; `generate` returns text by default. Token IDs can be supplied through `input_ids` for text prompts, and `return_token_ids=True` returns the generated token tensor. The `inference.py` command exposes each task. + +## Minimal command-line inference + +```bash +python inference.py /path/to/hf_checkpoint --task t2i --prompt 'A red mug.' --output mug.png +python inference.py /path/to/hf_checkpoint --task edit --image mug.png --prompt 'Make the mug blue.' --output blue.png +python inference.py /path/to/hf_checkpoint --task understand --image blue.png --prompt 'What color is the mug?' +``` + +Replace the model argument with the published Hugging Face model ID for remote loading. The standalone script only uses Transformers and this repository's model code. diff --git a/attention.py b/attention.py new file mode 100644 index 0000000000000000000000000000000000000000..46b2691c0da4c36c7e8555f6ea1fc6073d9cfa22 --- /dev/null +++ b/attention.py @@ -0,0 +1,169 @@ + +from __future__ import annotations +from typing import Optional, Tuple +import torch +import torch.nn.functional as F +from torch.nn.attention.flex_attention import BlockMask, flex_attention, create_block_mask +from transformers.modeling_flash_attention_utils import FlashAttentionKwargs +from transformers.processing_utils import Unpack +from transformers.cache_utils import Cache +from flash_attn import flash_attn_func, flash_attn_varlen_func +from .core import Ministral3Attention, _MixedTokenRoutingPlan, _create_split_tower_block_mask, _get_llama_4_attn_scale, _routing_mask, apply_rotary_pos_emb, repeat_kv +try: + from flash_attn import flash_attn_func +except: + pass +try: + from flash_attn import flash_attn_varlen_func +except: + flash_attn_varlen_func = None + +@torch.compile(fullgraph=True, dynamic=False) +def fused_flex_attention(q, k, v, block_mask=None): + return flex_attention(q, k, v, block_mask=block_mask) +_flex_attn_debug_printed = False + +def _routed_flash_attention(query_states, key_states, value_states, *, query_selection, key_value_selection, causal): + if flash_attn_varlen_func is None: + raise RuntimeError('partial dual-tower FlashAttention requires flash_attn_varlen_func') + query_tokens = query_states.transpose(1, 2) + key_tokens = key_states.transpose(1, 2) + value_tokens = value_states.transpose(1, 2) + query_unpadded = query_tokens[query_selection] + key_unpadded = key_tokens[key_value_selection] + value_unpadded = value_tokens[key_value_selection] + query_lengths = query_selection.sum(dim=1, dtype=torch.int32) + key_value_lengths = key_value_selection.sum(dim=1, dtype=torch.int32) + zero = torch.zeros(1, dtype=torch.int32, device=query_states.device) + cumulative_query_lengths = torch.cat((zero, query_lengths.cumsum(dim=0, dtype=torch.int32))) + cumulative_key_value_lengths = torch.cat((zero, key_value_lengths.cumsum(dim=0, dtype=torch.int32))) + output_unpadded = flash_attn_varlen_func(query_unpadded, key_unpadded, value_unpadded, cumulative_query_lengths, cumulative_key_value_lengths, query_selection.shape[1], key_value_selection.shape[1], dropout_p=0.0, softmax_scale=None, causal=causal) + output = torch.zeros_like(query_tokens) + output[query_selection] = output_unpadded + return output.transpose(1, 2) + +class MinistralFlexAttention(Ministral3Attention): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.max_seq_length = getattr(self.config, 'max_seq_length', 4096) + self.block_size_orig = self.config.block_size + self.bidirectional_mask = None + self.sbd_block_diff_mask = None + self.block_size = self.block_size_orig + self.mode = 'sbd_block_diff' + self._quadratic_block_mask = {} + import torch._dynamo.config as dcfg + dcfg.cache_size_limit = 512 + + def set_attention_mode(self, mode, block_size=None): + self.mode = mode + self.block_size = block_size + + def forward(self, hidden_states: torch.Tensor, position_embeddings: Tuple[torch.Tensor, torch.Tensor], attention_mask: Optional[torch.Tensor], past_key_values: Optional[Cache]=None, cache_position: Optional[torch.LongTensor]=None, overwrite_block_mask=None, overwrite_attn_impl=None, use_cache: Optional[bool]=False, routing=None, single_stream_image_diffusion: bool=False, **kwargs: Unpack[FlashAttentionKwargs]) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: + if overwrite_attn_impl == 'base': + return super().forward(hidden_states=hidden_states, position_embeddings=position_embeddings, attention_mask=attention_mask, past_key_values=past_key_values, cache_position=cache_position, use_cache=use_cache, routing=routing, **kwargs) + (bsz, q_len, _) = hidden_states.size() + input_shape = hidden_states.shape[:-1] + hidden_shape = (*input_shape, -1, self.head_dim) + (query_states, key_states, value_states) = self._project_qkv(hidden_states, routing) + query_states = query_states.view(hidden_shape).transpose(1, 2) + key_states = key_states.view(hidden_shape).transpose(1, 2) + value_states = value_states.view(hidden_shape).transpose(1, 2) + (cos, sin) = position_embeddings + (query_states, key_states) = apply_rotary_pos_emb(query_states, key_states, cos, sin) + query_states = query_states * _get_llama_4_attn_scale(cache_position, self.config.rope_parameters.get('llama_4_scaling_beta'), self.config.rope_parameters.get('original_max_position_embeddings')).to(query_states.dtype) + current_key_states = key_states + current_value_states = value_states + cached_routing_metadata = getattr(past_key_values, '_nlduni_dual_tower_routing', None) + isolate_generation_flash = overwrite_attn_impl == 'flash_attn' and self.split_tower and (routing is not None or cached_routing_metadata is not None) + cached_has_generation = bool(getattr(past_key_values, '_nlduni_dual_tower_has_generation', False)) + drop_cached_understanding = isolate_generation_flash and routing is True and (not cached_has_generation) + if past_key_values is not None: + if use_cache: + cache_kwargs = {'sin': sin, 'cos': cos, 'cache_position': cache_position} + (key_states, value_states) = past_key_values.update(key_states, value_states, self.layer_idx, cache_kwargs) + elif not drop_cached_understanding: + (old_k, old_v) = (past_key_values.layers[self.layer_idx].keys, past_key_values.layers[self.layer_idx].values) + key_states = torch.cat([old_k, key_states], dim=-2) + value_states = torch.cat([old_v, value_states], dim=-2) + self_spec_inference_mode = None + if overwrite_attn_impl == 'flash_attn': + block_mask = None + elif overwrite_block_mask is not None: + block_mask = overwrite_block_mask + if block_mask == 'full': + block_mask = None + elif self.mode == 'bidirectional': + block_mask = None + overwrite_attn_impl = 'flash_attn' + elif True: + raise ValueError('Supply an explicit block mask or use FlashAttention') + if overwrite_block_mask is None and overwrite_attn_impl != 'flash_attn' and self.split_tower and (routing is not None or cached_routing_metadata is not None): + current_routing = _routing_mask(routing, hidden_states) + cached_routing = cached_routing_metadata + if cached_routing is None: + cached_routing = torch.zeros(bsz, key_states.shape[-2] - q_len, dtype=torch.bool, device=hidden_states.device) + block_mask = _create_split_tower_block_mask(block_mask, current_routing=current_routing, cached_routing=cached_routing) + if isinstance(block_mask, BlockMask) and overwrite_attn_impl != 'flash_attn': + (mask_query_length, mask_key_value_length) = block_mask.seq_lengths + query_length = query_states.shape[-2] + key_value_length = key_states.shape[-2] + if mask_query_length < query_length: + raise ValueError(f'FlexAttention block-mask query length is shorter than the projected queries: {mask_query_length} < {query_length}') + if mask_key_value_length < key_value_length: + raise ValueError(f'FlexAttention block-mask key/value length is shorter than the projected keys: {mask_key_value_length} < {key_value_length}') + query_padding = mask_query_length - query_length + key_value_padding = mask_key_value_length - key_value_length + if query_padding: + query_states = F.pad(query_states, (0, 0, 0, query_padding)) + if key_value_padding: + key_states = F.pad(key_states, (0, 0, 0, key_value_padding)) + value_states = F.pad(value_states, (0, 0, 0, key_value_padding)) + if overwrite_attn_impl == 'flash_attn': + if self.diffusion_lm: + causal = False + else: + causal = True + isolate_generation_flash = self.split_tower and (routing is not None or cached_routing_metadata is not None) + if isolate_generation_flash and routing is True and (not cached_has_generation): + attn_output = flash_attn_func(query_states.transpose(1, 2), current_key_states.transpose(1, 2), current_value_states.transpose(1, 2), dropout_p=0.0, softmax_scale=None, causal=causal).transpose(1, 2) + elif isolate_generation_flash: + if routing is True: + query_routing = torch.ones(bsz, q_len, dtype=torch.bool, device=hidden_states.device) + elif routing is None: + query_routing = torch.zeros(bsz, q_len, dtype=torch.bool, device=hidden_states.device) + elif isinstance(routing, _MixedTokenRoutingPlan): + query_routing = routing.mask + else: + raise TypeError('split-tower FlashAttention requires canonical routing') + cached_routing = cached_routing_metadata + cached_length = key_states.shape[-2] - q_len + if cached_routing is None: + cached_routing = torch.zeros(bsz, cached_length, dtype=torch.bool, device=hidden_states.device) + elif tuple(cached_routing.shape) != (bsz, cached_length): + raise ValueError('cached dual-tower routing does not align with FlashAttention keys') + key_value_routing = torch.cat((cached_routing, query_routing), dim=1) + if routing is None: + attn_output = _routed_flash_attention(query_states, key_states, value_states, query_selection=~query_routing, key_value_selection=~key_value_routing, causal=causal) + elif routing is True: + attn_output = _routed_flash_attention(query_states, key_states, value_states, query_selection=query_routing, key_value_selection=key_value_routing, causal=causal) + else: + attn_output = _routed_flash_attention(query_states, key_states, value_states, query_selection=~query_routing, key_value_selection=~key_value_routing, causal=causal) + attn_output = attn_output + _routed_flash_attention(query_states, key_states, value_states, query_selection=query_routing, key_value_selection=key_value_routing, causal=causal) + else: + key_states = repeat_kv(key_states, self.num_key_value_groups) + value_states = repeat_kv(value_states, self.num_key_value_groups) + attn_output = flash_attn_func(query_states.transpose(1, 2), key_states.transpose(1, 2), value_states.transpose(1, 2), dropout_p=0.0, softmax_scale=None, causal=causal).transpose(1, 2) + else: + key_states = repeat_kv(key_states, self.num_key_value_groups) + value_states = repeat_kv(value_states, self.num_key_value_groups) + global _flex_attn_debug_printed + if not _flex_attn_debug_printed: + _flex_attn_debug_printed = True + attn_output = fused_flex_attention(query_states, key_states, value_states, block_mask=block_mask) + if attn_output.shape[-2] != q_len: + attn_output = attn_output[..., :q_len, :] + attn_output = attn_output.transpose(1, 2).reshape(*input_shape, -1).contiguous() + attn_output = self._project_output(attn_output, routing) + return (attn_output, None) diff --git a/bridge.py b/bridge.py new file mode 100644 index 0000000000000000000000000000000000000000..66ddceeff0e48a80a008f5e91e668a8aca060116 --- /dev/null +++ b/bridge.py @@ -0,0 +1,82 @@ + +from __future__ import annotations +import torch +from torch import nn +IMAGE_LOCAL_AR_CHILD_COUNT = 4 + +class PackedLinearImageCodec(nn.Module): + + def __init__(self, channels: int, *, norm_eps: float=1e-06, device: torch.device | str | None=None, dtype: torch.dtype | None=None) -> None: + super().__init__() + if isinstance(channels, bool) or not isinstance(channels, int) or channels < 1: + raise ValueError('channels must be a positive integer') + factory_kwargs = {'device': device, 'dtype': dtype} + self.channels = channels + self.down_norm = nn.RMSNorm(channels, eps=norm_eps, elementwise_affine=True, **factory_kwargs) + self.down_projection = nn.Linear(4 * channels, channels, bias=False, **factory_kwargs) + self.up_norm = nn.RMSNorm(channels, eps=norm_eps, elementwise_affine=True, **factory_kwargs) + self.up_projection = nn.Linear(channels, 4 * channels, bias=False, **factory_kwargs) + + @staticmethod + def _shape(shape: tuple[int, int] | list[int]) -> tuple[int, int]: + if not isinstance(shape, (tuple, list)) or len(shape) != 2: + raise ValueError('image token shape must contain height and width') + (height, width) = shape + if any((isinstance(value, bool) or not isinstance(value, int) for value in shape)): + raise TypeError('image token height and width must be integers') + if height < 1 or width < 1 or height % 2 or width % 2: + raise ValueError('packed-linear image grids must have positive even dimensions') + return (height, width) + + @staticmethod + def _patches(grid: torch.Tensor) -> torch.Tensor: + return torch.stack((grid[..., 0::2, 0::2, :], grid[..., 0::2, 1::2, :], grid[..., 1::2, 0::2, :], grid[..., 1::2, 1::2, :]), dim=-2) + + @classmethod + def pack_raster_values(cls, child_values: torch.Tensor, shape: tuple[int, int] | list[int]) -> torch.Tensor: + (height, width) = cls._shape(shape) + if not isinstance(child_values, torch.Tensor): + raise TypeError('child_values must be a tensor') + if child_values.ndim < 2 or child_values.shape[1] != height * width: + raise ValueError(f'child_values must have shape [B, {height * width}, ...]') + grid = child_values.reshape(child_values.shape[0], height, width, *child_values.shape[2:]) + patches = torch.stack((grid[:, 0::2, 0::2, ...], grid[:, 0::2, 1::2, ...], grid[:, 1::2, 0::2, ...], grid[:, 1::2, 1::2, ...]), dim=3) + return patches.flatten(1, 2) + + @classmethod + def unpack_patch_values(cls, patch_values: torch.Tensor, shape: tuple[int, int] | list[int]) -> torch.Tensor: + (height, width) = cls._shape(shape) + (parent_height, parent_width) = (height // 2, width // 2) + parent_count = parent_height * parent_width + if not isinstance(patch_values, torch.Tensor): + raise TypeError('patch_values must be a tensor') + if patch_values.ndim < 3 or patch_values.shape[1] != parent_count or patch_values.shape[2] != IMAGE_LOCAL_AR_CHILD_COUNT: + raise ValueError(f'patch_values must have shape [B, {parent_count}, {IMAGE_LOCAL_AR_CHILD_COUNT}, ...]') + patches = patch_values.reshape(patch_values.shape[0], parent_height, parent_width, IMAGE_LOCAL_AR_CHILD_COUNT, *patch_values.shape[3:]) + grid = patch_values.new_empty(patch_values.shape[0], height, width, *patch_values.shape[3:]) + grid[:, 0::2, 0::2, ...] = patches[:, :, :, 0, ...] + grid[:, 0::2, 1::2, ...] = patches[:, :, :, 1, ...] + grid[:, 1::2, 0::2, ...] = patches[:, :, :, 2, ...] + grid[:, 1::2, 1::2, ...] = patches[:, :, :, 3, ...] + return grid.flatten(1, 2) + + def compress_fixed_grid(self, child_states: torch.Tensor, shape: tuple[int, int] | list[int]) -> torch.Tensor: + (height, width) = self._shape(shape) + if child_states.ndim != 3 or child_states.shape[1:] != (height * width, self.channels): + raise ValueError(f'child_states must have shape [B, {height * width}, {self.channels}]') + grid = child_states.reshape(child_states.shape[0], height, width, self.channels) + patches = self._patches(grid) + normalized = self.down_norm(patches) + parents = self.down_projection(normalized.reshape(child_states.shape[0], height // 2, width // 2, 4 * self.channels)) + return parents.flatten(1, 2) + + def expand_fixed_grid(self, parent_states: torch.Tensor, shape: tuple[int, int] | list[int]) -> torch.Tensor: + children = self.expand_fixed_grid_patches(parent_states, shape) + return self.unpack_patch_values(children, shape) + + def expand_fixed_grid_patches(self, parent_states: torch.Tensor, shape: tuple[int, int] | list[int]) -> torch.Tensor: + (height, width) = self._shape(shape) + parent_count = height // 2 * (width // 2) + if parent_states.ndim != 3 or parent_states.shape[1:] != (parent_count, self.channels): + raise ValueError(f'parent_states must have shape [B, {parent_count}, {self.channels}]') + return self.up_projection(self.up_norm(parent_states)).reshape(parent_states.shape[0], parent_count, 4, self.channels) diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000000000000000000000000000000000000..1ec03674d484fccd77217ea98fc95fe64d144c86 --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1,209 @@ +{% macro render_extra_keys(json_dict, handled_keys) %} + {%- if json_dict is mapping %} + {%- for json_key in json_dict if json_key not in handled_keys %} + {%- if json_dict[json_key] is mapping or (json_dict[json_key] is sequence and json_dict[json_key] is not string) %} + {{- '\n<' ~ json_key ~ '>' ~ (json_dict[json_key] | tojson | safe) ~ '' }} + {%- else %} + {{-'\n<' ~ json_key ~ '>' ~ (json_dict[json_key] | string) ~ '' }} + {%- endif %} + {%- endfor %} + {%- endif %} +{% endmacro %} +{%- set enable_thinking = enable_thinking if enable_thinking is defined else True %} +{%- set reasoning_budget = reasoning_budget if reasoning_budget is defined else None %} +{%- set truncate_history_thinking = truncate_history_thinking if truncate_history_thinking is defined else True %} + +{%- set ns = namespace(last_user_idx = -1) %} +{%- set loop_messages = messages %} +{%- for m in loop_messages %} + {%- if m["role"] == "user" %} + {%- set ns.last_user_idx = loop.index0 %} + {%- endif %} +{%- endfor %} + +{%- if messages[0]["role"] == "system" %} + {%- set system_message = messages[0]["content"] %} + {%- set loop_messages = messages[1:] %} +{%- else %} + {%- set system_message = "" %} + {%- set loop_messages = messages %} +{%- endif %} +{%- if not tools is defined %} + {%- set tools = [] %} +{%- endif %} +{# Recompute last_user_idx relative to loop_messages after handling system #} +{%- set ns = namespace(last_user_idx = -1) %} +{%- for m in loop_messages %} + {%- if m["role"] == "user" %} + {%- set ns.last_user_idx = loop.index0 %} + {%- endif %} +{%- endfor %} +{%- if system_message is defined %} + {{- "<|im_start|>system\n" + system_message }} +{%- else %} + {%- if tools is iterable and tools | length > 0 %} + {{- "<|im_start|>system\n" }} + {%- endif %} +{%- endif %} +{%- if tools is iterable and tools | length > 0 %} + {%- if system_message is defined and system_message | length > 0 %} + {{- "\n\n" }} + {%- endif %} + {{- "# Tools\n\nYou have access to the following functions:\n\n" }} + {{- "" }} + {%- for tool in tools %} + {%- if tool.function is defined %} + {%- set tool = tool.function %} + {%- endif %} + {{- "\n\n" ~ tool.name ~ "" }} + {%- if tool.description is defined %} + {{- '\n' ~ (tool.description | trim) ~ '' }} + {%- endif %} + {{- '\n' }} + {%- if tool.parameters is defined and tool.parameters is mapping and tool.parameters.properties is defined and tool.parameters.properties is mapping %} + {%- for param_name, param_fields in tool.parameters.properties|items %} + {{- '\n' }} + {{- '\n' ~ param_name ~ '' }} + {%- if param_fields.type is defined %} + {{- '\n' ~ (param_fields.type | string) ~ '' }} + {%- endif %} + {%- if param_fields.description is defined %} + {{- '\n' ~ (param_fields.description | trim) ~ '' }} + {%- endif %} + {%- if param_fields.enum is defined %} + {{- '\n' ~ (param_fields.enum | tojson | safe) ~ '' }} + {%- endif %} + {%- set handled_keys = ['name', 'type', 'description', 'enum'] %} + {{- render_extra_keys(param_fields, handled_keys) }} + {{- '\n' }} + {%- endfor %} + {%- endif %} + {% set handled_keys = ['type', 'properties', 'required'] %} + {{- render_extra_keys(tool.parameters, handled_keys) }} + {%- if tool.parameters is defined and tool.parameters.required is defined %} + {{- '\n' ~ (tool.parameters.required | tojson | safe) ~ '' }} + {%- endif %} + {{- '\n' }} + {%- set handled_keys = ['type', 'name', 'description', 'parameters'] %} + {{- render_extra_keys(tool, handled_keys) }} + {{- '\n' }} + {%- endfor %} + {{- "\n" }} + + {{- '\n\nIf you choose to call a function ONLY reply in the following format with NO suffix:\n\n\n\n\nvalue_1\n\n\nThis is the value for the second parameter\nthat can span\nmultiple lines\n\n\n\n\n\nReminder:\n- Function calls MUST follow the specified format: an inner block must be nested within XML tags\n- Required parameters MUST be specified\n- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after\n- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls\n' }} +{%- endif %} + + +{%- if system_message is defined %} + {{- '<|im_end|>\n' }} +{%- else %} + {%- if tools is iterable and tools | length > 0 %} + {{- '<|im_end|>\n' }} + {%- endif %} +{%- endif %} + +{%- for message in loop_messages %} + {%- if message.role == "assistant" %} + {# Add reasoning content in to content field for unified processing below. #} + {%- if message.reasoning_content is defined and message.reasoning_content is string and message.reasoning_content | trim | length > 0 %} + {%- set content = "\n" ~ message.reasoning_content ~ "\n\n" ~ (message.content | default('', true)) %} + {%- else %} + {%- set content = message.content | default('', true) %} + {%- if content is string -%} + {# Allow downstream logic to to take care of broken thought, only handle coherent reasoning here. #} + {%- if '' not in content and '' not in content -%} + {%- set content = "" ~ content -%} + {%- endif -%} + {%- else -%} + {%- set content = content -%} + {%- endif -%} + {%- endif %} + {%- if message.tool_calls is defined and message.tool_calls is iterable and message.tool_calls | length > 0 %} + {# Assistant message has tool calls. #} + {{- '<|im_start|>assistant\n' }} + {%- set include_content = not (truncate_history_thinking and loop.index0 < ns.last_user_idx) %} + {%- if content is string and content | trim | length > 0 %} + {%- if include_content %} + {{- (content | trim) ~ '\n' -}} + {%- else %} + {%- set c = (content | string) %} + {%- if '' in c %} + {# Keep only content after the last closing think. Also generation prompt causes this. #} + {%- set c = c.split('')[-1] %} + {%- elif '' in c %} + {# If was opened but never closed, drop the trailing think segment #} + {%- set c = c.split('')[0] %} + {%- endif %} + {%- set c = "" ~ c | trim %} + {%- if c | length > 0 %} + {{- c ~ '\n' -}} + {%- endif %} + {%- endif %} + {%- else %} + {{- "" -}} + {%- endif %} + {%- for tool_call in message.tool_calls %} + {%- if tool_call.function is defined %} + {%- set tool_call = tool_call.function %} + {%- endif %} + {{- '\n\n' -}} + {%- if tool_call.arguments is defined %} + {%- for args_name, args_value in tool_call.arguments|items %} + {{- '\n' -}} + {%- set args_value = args_value | tojson | safe if args_value is mapping or (args_value is sequence and args_value is not string) else args_value | string %} + {{- args_value ~ '\n\n' -}} + {%- endfor %} + {%- endif %} + {{- '\n\n' -}} + {%- endfor %} + {{- '<|im_end|>\n' }} + {%- else %} + {# Assistant message doesn't have tool calls. #} + {%- if not (truncate_history_thinking and loop.index0 < ns.last_user_idx) %} + {{- '<|im_start|>assistant\n' ~ (content | default('', true) | string | trim) ~ '<|im_end|>\n' }} + {%- else %} + {%- set c = (content | default('', true) | string) %} + {%- if '' in c and '' in c %} + {%- set c = "" ~ c.split('')[-1] %} + {%- endif %} + {%- set c = c | trim %} + {%- if c | length > 0 %} + {{- '<|im_start|>assistant\n' ~ c ~ '<|im_end|>\n' }} + {%- else %} + {{- '<|im_start|>assistant\n<|im_end|>\n' }} + {%- endif %} + {%- endif %} + {%- endif %} + {%- elif message.role == "user" or message.role == "system" %} + {{- '<|im_start|>' + message.role + '\n' }} + {%- set content = message.content | string %} + {%- if message.role == "user" and loop.index0 == ns.last_user_idx and reasoning_budget is not none %} + {{- content + '\n\n{thinking token budget: ' + (reasoning_budget | string) + '}' }} + {%- else %} + {{- content }} + {%- endif %} + {{- '<|im_end|>\n' }} + {%- elif message.role == "tool" %} + {%- if loop.previtem and loop.previtem.role != "tool" %} + {{- '<|im_start|>user\n' }} + {%- endif %} + {{- '\n' }} + {{- message.content }} + {{- '\n\n' }} + {%- if not loop.last and loop.nextitem.role != "tool" %} + {{- '<|im_end|>\n' }} + {%- elif loop.last %} + {{- '<|im_end|>\n' }} + {%- endif %} + {%- else %} + {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>\n' }} + {%- endif %} +{%- endfor %} + +{%- if add_generation_prompt %} + {%- if enable_thinking %} + {{- '<|im_start|>assistant\n\n' }} + {%- else %} + {{- '<|im_start|>assistant\n' }} + {%- endif %} +{%- endif %} diff --git a/chat_utils.py b/chat_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..df22d6d6ab1d71a0dea91f50bdcb5fdcb06f2e20 --- /dev/null +++ b/chat_utils.py @@ -0,0 +1,342 @@ + +from __future__ import annotations +import numpy as np +import torch +import torch.nn.functional as F +from torch.nn.attention.flex_attention import create_block_mask +from transformers.utils import ModelOutput +from dataclasses import dataclass +from transformers.cache_utils import Cache + +@dataclass +class SimpleOutputWithPast(ModelOutput): + loss: torch.FloatTensor | None = None + logits: torch.FloatTensor | None = None + causal_logits: torch.FloatTensor | None = None + past_key_values: Cache | None = None + hidden_states: tuple[torch.FloatTensor, ...] | None = None + attentions: tuple[torch.FloatTensor, ...] | None = None +from .utils import maybe_truncate_last_dim, pad_along_last_dim +from .configuration_nlduni import get_ministral_shift_sbd_logits +from .sbd_attention import build_image_attention_doc_ids + +def _resolve_shift_sbd_logits(model, shift_logits): + model_module = model.module if hasattr(model, 'module') else model + config = getattr(model_module, 'config', None) + configured = get_ministral_shift_sbd_logits(config) if config is not None else None + has_alignment_contract = config is not None + if shift_logits is None: + return bool(configured) if configured is not None else False + requested = bool(shift_logits) + if has_alignment_contract and requested != configured: + raise ValueError('Inference shift_logits must match config.shift_sbd_logits to avoid a one-token alignment error. Update the model config explicitly if this override is intentional.') + return requested + +def wte(model, x, t2i_inference=False, gen_shape=None, x_gen=None, inputs_embeds_curr=None, new_token_mask=None, x_gen_child_embeddings=None, gen_parent_mask=None, gen_source_null_mask=None, gen_role=None): + if t2i_inference: + if (x_gen is None) == (x_gen_child_embeddings is None): + raise ValueError('provide exactly one of x_gen or x_gen_child_embeddings') + if new_token_mask is None: + new_token_mask = x >= INT_MAX + if gen_parent_mask is not None or gen_source_null_mask is not None or gen_role is not None: + raise ValueError('structured generation masks and roles require Infinity BSQ') + gen_latents_comp_embeds = model.call_gen_embedding(x_gen, gen_shape, child_embeddings=x_gen_child_embeddings) + if inputs_embeds_curr is None: + x_txt_only = x.clone() + x_txt_only[new_token_mask] = 0 + inputs_embeds_curr = model.embed_tokens(x_txt_only) + inputs_embeds_curr[new_token_mask] = pad_along_last_dim(gen_latents_comp_embeds, inputs_embeds_curr.shape[-1]).view(-1, inputs_embeds_curr.shape[-1]) + else: + inputs_embeds_curr = model.embed_tokens(x) + new_token_mask = None + return (inputs_embeds_curr, new_token_mask) +INT_MAX = 1000000 +SBD_FLEX_ATTENTION_PAD_MULTIPLE = 512 + +def _round_up_to_multiple(length, multiple): + if isinstance(multiple, bool) or not isinstance(multiple, int) or multiple < 1: + raise ValueError('padding multiple must be a positive integer') + return (length + multiple - 1) // multiple * multiple + +def single_stream_sbd_sampling_mask(block_size, past_length, b, h, q_idx, kv_idx, query_image_doc_id, key_value_image_doc_id): + del block_size, h + absolute_q = q_idx + past_length + token_causal = absolute_q >= kv_idx + image_query = query_image_doc_id[b, q_idx] > 0 + same_image_doc = image_query & (query_image_doc_id[b, q_idx] == key_value_image_doc_id[b, kv_idx]) + return token_causal | same_image_doc + +def _create_single_stream_sbd_sampling_block_mask(input_embeddings, *, past_key_values, block_size, input_modality_indices, generation_token_mask=None, pad_to_multiple=None): + if isinstance(block_size, bool) or not isinstance(block_size, int) or block_size < 1: + raise ValueError('SBD diffusion sampling requires a positive integer block_size') + query_length = input_embeddings.shape[1] + past_length = past_key_values.get_seq_length() if past_key_values is not None else 0 + key_value_length = past_length + query_length + padded_query_length = _round_up_to_multiple(query_length, pad_to_multiple) if pad_to_multiple is not None else query_length + padded_key_value_length = _round_up_to_multiple(key_value_length, pad_to_multiple) if pad_to_multiple is not None else key_value_length + if input_modality_indices is None: + raise ValueError('SBD diffusion sampling requires input_modality_indices to route same-block generation attention') + if tuple(input_modality_indices.shape) != tuple(input_embeddings.shape[:2]): + raise ValueError('SBD diffusion sampling requires input_modality_indices to align with the current input embeddings') + query_transformer_routing = input_modality_indices.to(dtype=torch.bool) + if generation_token_mask is None: + generation_token_mask = query_transformer_routing + elif tuple(generation_token_mask.shape) != tuple(input_embeddings.shape[:2]): + raise ValueError('SBD diffusion sampling requires generation_token_mask to align with the current input embeddings') + query_target_generation_routing = generation_token_mask.to(dtype=torch.bool) + cached_generation_routing = torch.zeros(query_transformer_routing.shape[0], past_length, dtype=torch.bool, device=query_transformer_routing.device) + padded_generation_routing = torch.zeros(query_transformer_routing.shape[0], padded_key_value_length - key_value_length, dtype=torch.bool, device=query_transformer_routing.device) + key_value_target_generation_routing = torch.cat((cached_generation_routing, query_target_generation_routing, padded_generation_routing), dim=1) + key_value_valid = (torch.arange(padded_key_value_length, device=query_transformer_routing.device).unsqueeze(0) < key_value_length).expand(query_transformer_routing.shape[0], -1).contiguous() + key_value_image_doc_id = build_image_attention_doc_ids(key_value_target_generation_routing, valid_tokens=key_value_valid) + query_image_doc_id = torch.cat((key_value_image_doc_id[:, past_length:past_length + query_length], torch.zeros(query_transformer_routing.shape[0], padded_query_length - query_length, dtype=key_value_image_doc_id.dtype, device=query_transformer_routing.device)), dim=1) + past_length_tensor = torch.tensor(past_length, dtype=torch.long, device=query_transformer_routing.device) + query_valid = (torch.arange(padded_query_length, device=query_transformer_routing.device).unsqueeze(0) < query_length).expand(query_transformer_routing.shape[0], -1).contiguous() + + def mask_mod(b, h, q_idx, kv_idx): + logical_attention = single_stream_sbd_sampling_mask(block_size, past_length_tensor, b, h, q_idx, kv_idx, query_image_doc_id, key_value_image_doc_id) & query_valid[b, q_idx] & key_value_valid[b, kv_idx] + padded_query_attention = ~query_valid[b, q_idx] & (kv_idx == 0) + return logical_attention | padded_query_attention + return create_block_mask(mask_mod, B=input_embeddings.shape[0], H=None, Q_LEN=padded_query_length, KV_LEN=padded_key_value_length, device=input_embeddings.device) + +def get_logits(model, input_emnbeddings, modality_indices=None, t2i_inference=False, past_key_values=None, gen_shape=None, timesteps=None, input_modality_indices=None, generation_attention_mask=None, sbd_diffusion_sampling=False, full_attention_approx=False, loop_k=None): + if t2i_inference: + resolved_loop_k = None + if input_modality_indices is None: + input_modality_indices = modality_indices + attention_kwargs = {} + if full_attention_approx: + attention_kwargs['overwrite_block_mask'] = 'full' + attention_kwargs['overwrite_attn_impl'] = 'flash_attn' + elif sbd_diffusion_sampling: + if generation_attention_mask is None: + generation_attention_mask = modality_indices + attention_kwargs['overwrite_block_mask'] = _create_single_stream_sbd_sampling_block_mask(input_emnbeddings, past_key_values=past_key_values, block_size=getattr(model.config, 'block_size', None), input_modality_indices=input_modality_indices, generation_token_mask=generation_attention_mask, pad_to_multiple=SBD_FLEX_ATTENTION_PAD_MULTIPLE) + else: + attention_kwargs['overwrite_attn_impl'] = 'flash_attn' + output = model(None, input_embeddings=input_emnbeddings, modality_indices=input_modality_indices, output_hidden_states=True, past_key_values=past_key_values, use_cache=None, single_stream_image_diffusion=True, loop_k=None, **attention_kwargs) + hidden_states = getattr(output, 'last_hidden_state', None) + if hidden_states is None: + hidden_states = output.hidden_states[-1] + gen_hidden_states = hidden_states[modality_indices] + gen_hidden_states = maybe_truncate_last_dim(gen_hidden_states, model.config.d_model_gen) + gen_logits = model.call_gen_predictor(gen_hidden_states, gen_shape, timesteps=timesteps) + seq_len_per_img = np.prod(gen_shape) + if len(gen_logits.shape) == 2: + gen_logits = gen_logits.view(-1, seq_len_per_img, gen_logits.shape[-1]) + else: + gen_logits = gen_logits.view(-1, seq_len_per_img, *gen_logits.shape[-2:]) + return gen_logits + else: + raise ValueError('get_logits is the image sampler helper') + +def add_gumbel_noise(logits, temperature): + if temperature == 0: + return logits + logits = logits.to(torch.float64) + noise = torch.rand_like(logits, dtype=torch.float64) + gumbel_noise = (-torch.log(noise)) ** temperature + return logits.exp() / gumbel_noise + +def get_transfer_index(logits, temperature, remasking, mask_index, x, num_transfer_tokens, threshold=None, neg_entropy=False): + logits_with_noise = add_gumbel_noise(logits, temperature=temperature) + x0 = torch.argmax(logits_with_noise, dim=-1) + if remasking == 'low_confidence': + p = F.softmax(logits, dim=-1) + x0_p = torch.squeeze(torch.gather(p, dim=-1, index=torch.unsqueeze(x0, -1)), -1) + elif remasking == 'top_p_margin': + p = F.softmax(logits, dim=-1) + top2 = torch.topk(p, k=2, dim=-1).values + margin = top2[..., 0] - top2[..., 1] + plus_inf = torch.full_like(margin, 1e309) + minus_inf = torch.full_like(margin, -1e309) + masked_for_min = torch.where(mask_index, margin, plus_inf) + masked_for_max = torch.where(mask_index, margin, minus_inf) + row_min = masked_for_min.amin(dim=1, keepdim=True) + row_max = masked_for_max.amax(dim=1, keepdim=True) + denom = row_max - row_min + normalized = torch.zeros_like(margin) + nonzero = denom > 0 + normalized = torch.where(mask_index & nonzero, (margin - row_min) / (denom + 1e-12), normalized) + normalized = torch.where(mask_index & ~nonzero, torch.ones_like(normalized), normalized) + x0_p = normalized + elif remasking == 'random': + x0_p = torch.rand((x0.shape[0], x0.shape[1]), device=x0.device) + else: + raise NotImplementedError(remasking) + if neg_entropy: + p = F.softmax(logits, dim=-1) + epsilon = 1e-10 + log_probs = torch.log(p + epsilon) + confidence_scores = torch.sum(p * log_probs, dim=-1) + else: + confidence_scores = x0_p + x0 = torch.where(mask_index, x0, x) + confidence = torch.where(mask_index, confidence_scores, -np.inf) + transfer_index = torch.zeros_like(x0, dtype=torch.bool, device=x0.device) + if threshold is not None: + num_transfer_tokens = mask_index.sum(dim=1, keepdim=True) + for j in range(confidence.shape[0]): + (_, select_index) = torch.topk(confidence[j], k=num_transfer_tokens[j]) + transfer_index[j, select_index] = True + if threshold is not None: + for k in range(1, num_transfer_tokens[j]): + if confidence[j, select_index[k]] < threshold: + transfer_index[j, select_index[k]] = False + return (x0, transfer_index) + +def get_num_transfer_tokens(mask_index, steps: int): + mask_num = mask_index.sum(dim=1, keepdim=True) + base = mask_num // steps + remainder = mask_num % steps + num_transfer_tokens = torch.zeros(mask_num.size(0), steps, device=mask_index.device, dtype=torch.int64) + base + for i in range(mask_num.size(0)): + num_transfer_tokens[i, :int(remainder[i])] += 1 + return num_transfer_tokens + +def simple_fwd(model, input_ids=None, inputs_embeds=None, attention_mask=None, position_ids=None, past_key_values=None, **kwargs): + enc_out = model.encoder(past_key_values=past_key_values, input_ids=input_ids, inputs_embeds=inputs_embeds, attention_mask=attention_mask, position_ids=position_ids, overwrite_attn_impl='flash_attn', **kwargs) + logits = model.diffusion_head(enc_out.last_hidden_state) + return SimpleOutputWithPast(loss=logits, logits=logits, causal_logits=None, past_key_values=enc_out.past_key_values, hidden_states=None, attentions=None) + +@torch.no_grad() +def generate_with_prefix_cache_block_diff(model, prompt=None, prompt_embeds=None, steps=128, gen_length=128, block_length=128, temperature=0.0, remasking='low_confidence', mask_id=126336, threshold=None, factor=None, shift_logits=None, neg_entropy=False, causal_context=False, eos_token_id=None, max_thinking_tokens=None, end_think_token_id=None): + shift_logits = _resolve_shift_sbd_logits(model, shift_logits) + dream_style = shift_logits + if (prompt is None) == (prompt_embeds is None): + raise ValueError('Exactly one of `prompt` or `prompt_embeds` must be provided.') + if prompt is not None: + prompt_ids = prompt + prompt_len = prompt_ids.shape[1] + x_accum = prompt_ids.clone() + B = prompt_ids.shape[0] + token_device = prompt_ids.device + token_dtype = prompt_ids.dtype + else: + prompt_ids = None + prompt_len = prompt_embeds.shape[1] + B = prompt_embeds.shape[0] + token_device = prompt_embeds.device + token_dtype = torch.long + x_accum = torch.full((B, prompt_len), mask_id, dtype=token_dtype, device=token_device) + if gen_length % block_length != 0: + gen_length = (gen_length // block_length + 1) * block_length + num_blocks = gen_length // block_length + assert steps % num_blocks == 0 + steps_per_block = steps // num_blocks + nfe = 0 + model_module = model.module if hasattr(model, 'module') else model + for layer in model_module.encoder.layers: + layer.self_attn.mode = 'bidirectional' + if causal_context: + for layer in model_module.encoder.layers: + if hasattr(layer.self_attn, 'diffusion_lm'): + layer.self_attn.diffusion_lm = False + output = simple_fwd(model, input_ids=prompt_ids, inputs_embeds=prompt_embeds, use_cache=True, use_causal_mask=causal_context) + past_key_values = output.past_key_values + if causal_context: + for layer in model_module.encoder.layers: + if hasattr(layer.self_attn, 'diffusion_lm'): + layer.self_attn.diffusion_lm = True + next_token = None + if causal_context: + last_logit = output.logits[:, -1, :] + if temperature > 0: + probs = torch.softmax(last_logit / temperature, dim=-1) + next_token = torch.multinomial(probs, num_samples=1) + else: + next_token = torch.argmax(last_logit, dim=-1, keepdim=True) + next_logits_context = None + if dream_style: + next_logits_context = output.logits[:, -1:, :] + for num_block in range(num_blocks): + mask_block = torch.ones((B, block_length), dtype=token_dtype, device=token_device) * mask_id + if causal_context: + mask_block[:, 0] = next_token[:, 0] + x_accum = torch.cat([x_accum, mask_block], dim=1) + current_block_start = prompt_len + num_block * block_length + block_slice = slice(current_block_start, current_block_start + block_length) + if end_think_token_id is not None and max_thinking_tokens is not None: + tokens_before_block = num_block * block_length + tokens_after_block = tokens_before_block + block_length + if tokens_after_block > max_thinking_tokens: + gen_so_far = x_accum[:, prompt_len:current_block_start] + has_end_think = (gen_so_far == end_think_token_id).any(dim=1) if gen_so_far.size(1) > 0 else torch.zeros(B, dtype=torch.bool, device=token_device) + if not has_end_think.all(): + if tokens_before_block < max_thinking_tokens: + offset = max_thinking_tokens - tokens_before_block + else: + offset = 0 + inject_pos = current_block_start + offset + for b in range(B): + if not has_end_think[b]: + x_accum[b, inject_pos] = end_think_token_id + mask_block_idx0 = x_accum[:, block_slice] == mask_id + if dream_style: + schedule_mask = mask_block_idx0 + else: + schedule_mask = mask_block_idx0 + num_transfer_tokens = get_num_transfer_tokens(schedule_mask, steps_per_block) + for i in range(steps_per_block): + mask_block_idx = x_accum[:, block_slice] == mask_id + if mask_block_idx.sum() == 0: + break + nfe += 1 + logits_block = simple_fwd(model, x_accum[:, block_slice], past_key_values=past_key_values, use_cache=False).logits + if dream_style: + if block_length == 1: + logits_use = next_logits_context + else: + logits_use = torch.cat([next_logits_context, logits_block[:, :-1, :]], dim=1) + mask_use = mask_block_idx + x_use = x_accum[:, block_slice] + (x0, transfer_idx) = get_transfer_index(logits_use, temperature, remasking, mask_use, x_use, num_transfer_tokens=num_transfer_tokens[:, i], threshold=threshold, neg_entropy=neg_entropy) + cur = x_accum[:, block_slice].clone() + cur[transfer_idx] = x0[transfer_idx] + x_accum[:, block_slice] = cur + else: + (x0, transfer_idx) = get_transfer_index(logits_block, temperature, remasking, mask_block_idx, x_accum[:, block_slice], num_transfer_tokens=num_transfer_tokens[:, i], threshold=threshold, neg_entropy=neg_entropy) + cur = x_accum[:, block_slice].clone() + cur[transfer_idx] = x0[transfer_idx] + x_accum[:, block_slice] = cur + if eos_token_id is not None: + block_tokens = x_accum[:, block_slice] + eos_mask = block_tokens == eos_token_id + any_eos = eos_mask.any(dim=1) + if any_eos.any(): + after_eos = eos_mask.cumsum(dim=1).bool() + mask_before = (block_tokens == mask_id) & ~after_eos + if (any_eos & ~mask_before.any(dim=1)).any(): + break + if causal_context: + for layer in model_module.encoder.layers: + if hasattr(layer.self_attn, 'diffusion_lm'): + layer.self_attn.diffusion_lm = False + output = simple_fwd(model, x_accum[:, block_slice], past_key_values=past_key_values, use_cache=True, use_causal_mask=causal_context) + past_key_values = output.past_key_values + nfe += 1 + if causal_context: + for layer in model_module.encoder.layers: + if hasattr(layer.self_attn, 'diffusion_lm'): + layer.self_attn.diffusion_lm = True + last_logit = output.logits[:, -1, :] + if temperature > 0: + probs = torch.softmax(last_logit / temperature, dim=-1) + next_token = torch.multinomial(probs, num_samples=1) + else: + next_token = torch.argmax(last_logit, dim=-1, keepdim=True) + if dream_style and num_block < num_blocks - 1: + next_logits_context = output.logits[:, -1:, :] + if eos_token_id is not None: + gen_so_far = x_accum[:, prompt_len:] + is_eos = gen_so_far == eos_token_id + has_eos = is_eos.any(dim=1) + if has_eos.all(): + first_eos_pos = is_eos.to(torch.int64).argmax(dim=1) + max_eos = first_eos_pos.max().item() + if prompt_ids is None: + return (x_accum[:, prompt_len:prompt_len + max_eos + 1], nfe) + return (x_accum[:, :prompt_len + max_eos + 1], nfe) + if prompt_ids is None: + return (x_accum[:, prompt_len:], nfe) + return (x_accum, nfe) diff --git a/config.json b/config.json new file mode 100644 index 0000000000000000000000000000000000000000..72b24e267c53a960305ea3e243e7058441df0097 --- /dev/null +++ b/config.json @@ -0,0 +1,36 @@ +{ + "hidden_size": 4096, + "intermediate_size": 14336, + "num_hidden_layers": 34, + "num_attention_heads": 32, + "num_key_value_heads": 8, + "head_dim": 128, + "vocab_size": 132101, + "max_position_embeddings": 131072, + "rms_norm_eps": 1e-05, + "rope_parameters": { + "beta_fast": 32.0, + "beta_slow": 1.0, + "factor": 8.0, + "llama_4_scaling_beta": 0.1, + "mscale": 1.0, + "mscale_all_dim": 1.0, + "original_max_position_embeddings": 16384, + "rope_theta": 1000000.0, + "rope_type": "yarn" + }, + "bos_token_id": 1, + "eos_token_id": 11, + "pad_token_id": 11, + "tie_word_embeddings": false, + "model_type": "nlduni", + "architectures": [ + "NLDUniForCausalLM" + ], + "torch_dtype": "bfloat16", + "auto_map": { + "AutoConfig": "configuration_nlduni.NLDUniConfig", + "AutoModel": "modeling_nlduni.NLDUniForCausalLM", + "AutoModelForCausalLM": "modeling_nlduni.NLDUniForCausalLM" + } +} diff --git a/configuration_nlduni.py b/configuration_nlduni.py new file mode 100644 index 0000000000000000000000000000000000000000..557435b58b27addcb81e3a3538dd59c597467eed --- /dev/null +++ b/configuration_nlduni.py @@ -0,0 +1,59 @@ +from transformers import PretrainedConfig + +class NLDUniConfig(PretrainedConfig): + model_type = 'nlduni' + # Architecture invariants; deliberately absent from serialized configuration. + d_model_gen = 4096 + d_model = 4096 + diffusion_lm = True + block_size = 32 + mm_native_newline_token = '\n' + mm_hidden_size = 1280 + projector_hidden_size = 4096 + gen_image_fixed_prefix_tokens = 128 + gen_image_row_markers = True + generation_skip_down_sample = False + image_aspect_ratio = 'radio_h_native' + semantic_tree_token_diffusion = True + single_stream_image_diffusion = True + shift_sbd_logits = True + downsample = True + mm_vqvae = 'emu3' + image_embedding_refinement_steps = 4 + lock_source_padding_vq = True + generation_embedding_scale = 0.005357294692673304 + generation_downsample_scale = 0.4498539166224965 + def __init__(self, hidden_size=4096, intermediate_size=14336, num_hidden_layers=34, + num_attention_heads=32, num_key_value_heads=8, head_dim=128, + vocab_size=132101, max_position_embeddings=131072, + rms_norm_eps=1e-5, rope_parameters=None, **kwargs): + super().__init__(**kwargs) + self.hidden_size=hidden_size + self.intermediate_size=intermediate_size + self.num_hidden_layers=num_hidden_layers + self.num_attention_heads=num_attention_heads + self.num_key_value_heads=num_key_value_heads + self.head_dim=head_dim + self.vocab_size=vocab_size + self.max_position_embeddings=max_position_embeddings + self.rms_norm_eps=rms_norm_eps + self.hidden_act='silu' + self.attention_bias=False + self.attention_dropout=0.0 + self.mlp_bias=False + self.sliding_window=None + self.initializer_range=0.02 + self.rope_parameters=rope_parameters or dict(rope_type='yarn',rope_theta=1000000.,factor=8.,original_max_position_embeddings=16384,beta_fast=32.,beta_slow=1.,mscale=1.,mscale_all_dim=1.,llama_4_scaling_beta=.1) + self.rope_scaling=self.rope_parameters + self.rope_theta=self.rope_parameters['rope_theta'] + + def to_dict(self): + values = super().to_dict() + values.pop('image_token_tree_path', None) + values.pop('_name_or_path', None) + return values + +MinistralDLMConfig = NLDUniConfig + +def get_ministral_shift_sbd_logits(config): + return True diff --git a/constants.py b/constants.py new file mode 100644 index 0000000000000000000000000000000000000000..95ffc8a4edda00c5ffe82a85e7433e17b128a7f9 --- /dev/null +++ b/constants.py @@ -0,0 +1,17 @@ + +from __future__ import annotations +class NemotronMinistralDLMConstant: + reserve_id = 18 + reserve_id_token = '' + reserve_id_enc = 19 + reserve_id_token_enc = '' + mask_id = 100 + mask_id_token = '' + fim_id = 20 + fim_id_token = '' + eos_id = 11 + eos_id_token = '<|im_end|>' + gen_im_start_token = '' + gen_im_end_token = '' + und_im_pad_token = '' + und_im_pad_token_id = 23 diff --git a/conversation.py b/conversation.py new file mode 100644 index 0000000000000000000000000000000000000000..f839ef7bd61943101a4fc267c3e6e2dffdc24ca8 --- /dev/null +++ b/conversation.py @@ -0,0 +1,20 @@ +import copy + +class Conversation: + roles = ('<|im_start|>user', '<|im_start|>assistant') + system = '<|im_start|>system\nYou are a helpful language and vision assistant. You are able to understand the visual content that the user provides, and assist the user with a variety of tasks using natural language.' + def __init__(self): + self.messages = [] + def copy(self): + return copy.deepcopy(self) + def append_message(self, role, message): + self.messages.append((role, message)) + def get_prompt(self): + text = self.system + '<|im_end|>\n' if self.system else '' + for role, message in self.messages: + text += role + '\n' + if message: + text += message + '<|im_end|>\n' + return text + +conv_templates = {'ministral': Conversation()} diff --git a/core.py b/core.py new file mode 100644 index 0000000000000000000000000000000000000000..77ea74dda78b068f2776ad219a0ecd1fb87ca3b8 --- /dev/null +++ b/core.py @@ -0,0 +1,426 @@ + +from __future__ import annotations +from collections.abc import Callable +from dataclasses import dataclass +from typing import Optional, Union +import torch +from torch import nn +from transformers.utils.generic import check_model_inputs +from transformers.activations import ACT2FN +from transformers.cache_utils import Cache, DynamicCache +from transformers.integrations import use_kernel_forward_from_hub +from transformers.masking_utils import create_causal_mask, create_sliding_window_causal_mask +from transformers.modeling_flash_attention_utils import FlashAttentionKwargs +from transformers.modeling_layers import GradientCheckpointingLayer +from transformers.modeling_outputs import BaseModelOutputWithPast +from transformers.modeling_rope_utils import ROPE_INIT_FUNCTIONS, dynamic_rope_update +from transformers.modeling_utils import ALL_ATTENTION_FUNCTIONS, PreTrainedModel +from transformers.processing_utils import Unpack +from transformers.utils import TransformersKwargs, auto_docstring +from .configuration_nlduni import MinistralDLMConfig + +def rotate_half(x): + x1 = x[..., :x.shape[-1] // 2] + x2 = x[..., x.shape[-1] // 2:] + return torch.cat((-x2, x1), dim=-1) + +def apply_rotary_pos_emb(q, k, cos, sin, position_ids=None, unsqueeze_dim=1): + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + q_embed = q * cos + rotate_half(q) * sin + k_embed = k * cos + rotate_half(k) * sin + return (q_embed, k_embed) + +def repeat_kv(hidden_states: torch.Tensor, n_rep: int) -> torch.Tensor: + (batch, num_key_value_heads, slen, head_dim) = hidden_states.shape + if n_rep == 1: + return hidden_states + hidden_states = hidden_states[:, :, None, :, :].expand(batch, num_key_value_heads, n_rep, slen, head_dim) + return hidden_states.reshape(batch, num_key_value_heads * n_rep, slen, head_dim) + +def eager_attention_forward(module: nn.Module, query: torch.Tensor, key: torch.Tensor, value: torch.Tensor, attention_mask: Optional[torch.Tensor], scaling: float, dropout: float=0.0, **kwargs: Unpack[TransformersKwargs]): + key_states = repeat_kv(key, module.num_key_value_groups) + value_states = repeat_kv(value, module.num_key_value_groups) + attn_weights = torch.matmul(query, key_states.transpose(2, 3)) * scaling + if attention_mask is not None: + causal_mask = attention_mask[:, :, :, :key_states.shape[-2]] + attn_weights = attn_weights + causal_mask + attn_weights = nn.functional.softmax(attn_weights, dim=-1, dtype=torch.float32).to(query.dtype) + attn_weights = nn.functional.dropout(attn_weights, p=dropout, training=False) + attn_output = torch.matmul(attn_weights, value_states) + attn_output = attn_output.transpose(1, 2).contiguous() + return (attn_output, attn_weights) + +def _get_llama_4_attn_scale(positions_ids: torch.Tensor, beta: float, max_position_embeddings: int) -> torch.Tensor: + scaling = 1 + beta * torch.log(1 + torch.floor(positions_ids / max_position_embeddings)) + return scaling.unsqueeze(-1) + +@dataclass(frozen=True, slots=True) +class _MixedTokenRoutingPlan: + mask: torch.Tensor + understanding_indices: torch.Tensor + generation_indices: torch.Tensor + + @classmethod + def from_mask(cls, mask: torch.Tensor) -> '_MixedTokenRoutingPlan': + flat_mask = mask.reshape(-1) + return cls(mask=mask, understanding_indices=(~flat_mask).nonzero(as_tuple=False).flatten(), generation_indices=flat_mask.nonzero(as_tuple=False).flatten()) +TokenRouting = Optional[Union[bool, _MixedTokenRoutingPlan]] + +def _resolve_dual_tower_layers(config: MinistralDLMConfig) -> int: + num_hidden_layers = config.num_hidden_layers + configured = 18 + if configured is None: + return num_hidden_layers + if isinstance(configured, bool) or not isinstance(configured, int): + raise TypeError('dual_tower_layers must be an integer') + if not 0 <= configured <= num_hidden_layers: + raise ValueError(f'dual_tower_layers must be between 0 and num_hidden_layers ({num_hidden_layers}), got {configured}') + return configured + +def _routing_mask(routing: TokenRouting, hidden_states: torch.Tensor) -> torch.Tensor: + if routing is None: + return torch.zeros(hidden_states.shape[:2], dtype=torch.bool, device=hidden_states.device) + if routing is True: + return torch.ones(hidden_states.shape[:2], dtype=torch.bool, device=hidden_states.device) + return routing.mask + +def _create_split_tower_block_mask(block_mask, *, current_routing: torch.Tensor, cached_routing: torch.Tensor): + from torch.nn.attention.flex_attention import BlockMask, create_block_mask + if isinstance(block_mask, str): + if block_mask != 'full': + raise ValueError(f'Unsupported attention block-mask sentinel: {block_mask}') + base_mask_mod = None + query_length = current_routing.shape[1] + key_value_length = cached_routing.shape[1] + query_length + block_size = 128 + elif isinstance(block_mask, BlockMask): + base_mask_mod = block_mask.mask_mod + (query_length, key_value_length) = block_mask.seq_lengths + block_size = block_mask.BLOCK_SIZE + else: + raise TypeError("partial dual-tower FlexAttention requires an explicit BlockMask or the 'full' sentinel") + current_length = current_routing.shape[1] + cached_length = cached_routing.shape[1] + if query_length < current_length: + raise ValueError(f'FlexAttention block-mask query length is shorter than routing: {query_length} < {current_length}') + if key_value_length < cached_length + current_length: + raise ValueError(f'FlexAttention block-mask key/value length is shorter than cached and current routing: {key_value_length} < {cached_length + current_length}') + query_routing = torch.nn.functional.pad(current_routing, (0, query_length - current_length), value=False) + key_value_routing = torch.cat((cached_routing, current_routing), dim=1) + key_value_routing = torch.nn.functional.pad(key_value_routing, (0, key_value_length - key_value_routing.shape[1]), value=False) + + def split_tower_mask(b, h, q_idx, kv_idx): + same_tower = query_routing[b, q_idx] == key_value_routing[b, kv_idx] + same_tower = same_tower | (q_idx >= current_length) + if base_mask_mod is None: + return same_tower + return base_mask_mod(b, h, q_idx, kv_idx) & same_tower + return create_block_mask(split_tower_mask, B=current_routing.shape[0], H=None, Q_LEN=query_length, KV_LEN=key_value_length, device=current_routing.device, BLOCK_SIZE=block_size) + +def _canonicalize_token_routing(routing: Optional[torch.Tensor], hidden_states: torch.Tensor, *, dual_tower: bool) -> TokenRouting: + if routing is None: + return None + if not torch.is_tensor(routing) or routing.ndim != 2: + raise TypeError('routing must be a rank-2 tensor with shape [batch, sequence]') + if tuple(routing.shape) != tuple(hidden_states.shape[:2]): + raise ValueError(f'routing must match the transformer token shape: expected {tuple(hidden_states.shape[:2])}, got {tuple(routing.shape)}') + if routing.device != hidden_states.device: + raise ValueError('routing and transformer hidden states must share a device') + if routing.dtype == torch.bool: + normalized = routing + elif routing.dtype in {torch.uint8, torch.int8, torch.int16, torch.int32, torch.int64}: + if bool(((routing != 0) & (routing != 1)).any()): + raise ValueError('routing values must be binary (0 for U, 1 for G)') + normalized = routing.to(dtype=torch.bool) + else: + raise TypeError('routing must have boolean or integer dtype') + has_generation_route = bool(normalized.any()) + if has_generation_route and (not dual_tower): + raise ValueError('routing selects G but config.dual_tower is false') + if not has_generation_route: + return None + if bool(normalized.all()): + return True + return _MixedTokenRoutingPlan.from_mask(normalized) + +def _routed_module(hidden_states: torch.Tensor, routing: TokenRouting, understanding_module: Callable[[torch.Tensor], torch.Tensor], generation_module: Optional[Callable[[torch.Tensor], torch.Tensor]]) -> torch.Tensor: + if routing is None: + return understanding_module(hidden_states) + if routing is True: + if generation_module is None: + raise RuntimeError('G routing requires generation-tower parameters') + return generation_module(hidden_states) + if generation_module is None: + raise RuntimeError('mixed routing requires generation-tower parameters') + if not isinstance(routing, _MixedTokenRoutingPlan): + raise TypeError('mixed routing must use a canonical dispatch plan') + flat_hidden = hidden_states.reshape(-1, hidden_states.shape[-1]) + understanding_output = understanding_module(flat_hidden.index_select(0, routing.understanding_indices)) + generation_output = generation_module(flat_hidden.index_select(0, routing.generation_indices)) + flat_output = understanding_output.new_empty((flat_hidden.shape[0], *understanding_output.shape[1:])) + flat_output = flat_output.index_copy(0, routing.understanding_indices, understanding_output) + flat_output = flat_output.index_copy(0, routing.generation_indices, generation_output) + return flat_output.reshape(*hidden_states.shape[:-1], *flat_output.shape[1:]) + +class Ministral3Attention(nn.Module): + + def __init__(self, config: MinistralDLMConfig, layer_idx: int): + super().__init__() + self.config = config + self.layer_idx = layer_idx + self.split_tower = layer_idx >= _resolve_dual_tower_layers(config) + self.head_dim = getattr(config, 'head_dim', None) or config.hidden_size // config.num_attention_heads + self.num_key_value_groups = config.num_attention_heads // config.num_key_value_heads + self.scaling = self.head_dim ** -0.5 + self.attention_dropout = config.attention_dropout + self.is_causal = True + self.q_proj = nn.Linear(config.hidden_size, config.num_attention_heads * self.head_dim, bias=False) + self.k_proj = nn.Linear(config.hidden_size, config.num_key_value_heads * self.head_dim, bias=False) + self.v_proj = nn.Linear(config.hidden_size, config.num_key_value_heads * self.head_dim, bias=False) + self.o_proj = nn.Linear(config.num_attention_heads * self.head_dim, config.hidden_size, bias=False) + self.q_proj_gen = nn.Linear(config.hidden_size, config.num_attention_heads * self.head_dim, bias=False) + self.k_proj_gen = nn.Linear(config.hidden_size, config.num_key_value_heads * self.head_dim, bias=False) + self.v_proj_gen = nn.Linear(config.hidden_size, config.num_key_value_heads * self.head_dim, bias=False) + self.o_proj_gen = nn.Linear(config.num_attention_heads * self.head_dim, config.hidden_size, bias=False) + self.diffusion_lm = config.diffusion_lm + + def _project_qkv(self, hidden_states: torch.Tensor, routing: TokenRouting) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + return (_routed_module(hidden_states, routing, self.q_proj, getattr(self, 'q_proj_gen', None)), _routed_module(hidden_states, routing, self.k_proj, getattr(self, 'k_proj_gen', None)), _routed_module(hidden_states, routing, self.v_proj, getattr(self, 'v_proj_gen', None))) + + def _project_output(self, hidden_states: torch.Tensor, routing: TokenRouting) -> torch.Tensor: + return _routed_module(hidden_states, routing, self.o_proj, getattr(self, 'o_proj_gen', None)) + + def forward(self, hidden_states: torch.Tensor, position_embeddings: tuple[torch.Tensor, torch.Tensor], attention_mask: Optional[torch.Tensor], past_key_values: Optional[Cache]=None, cache_position: Optional[torch.LongTensor]=None, use_cache: Optional[bool]=False, routing: TokenRouting=None, **kwargs: Unpack[FlashAttentionKwargs]) -> tuple[torch.Tensor, Optional[torch.Tensor]]: + input_shape = hidden_states.shape[:-1] + hidden_shape = (*input_shape, -1, self.head_dim) + (query_states, key_states, value_states) = self._project_qkv(hidden_states, routing) + query_states = query_states.view(hidden_shape).transpose(1, 2) + key_states = key_states.view(hidden_shape).transpose(1, 2) + value_states = value_states.view(hidden_shape).transpose(1, 2) + (cos, sin) = position_embeddings + (query_states, key_states) = apply_rotary_pos_emb(query_states, key_states, cos, sin) + query_states = query_states * _get_llama_4_attn_scale(cache_position, self.config.rope_parameters.get('llama_4_scaling_beta'), self.config.rope_parameters.get('original_max_position_embeddings')).to(query_states.dtype) + if past_key_values is not None: + if use_cache: + cache_kwargs = {'sin': sin, 'cos': cos, 'cache_position': cache_position} + (key_states, value_states) = past_key_values.update(key_states, value_states, self.layer_idx, cache_kwargs) + else: + (old_k, old_v) = (past_key_values.layers[self.layer_idx].keys, past_key_values.layers[self.layer_idx].values) + key_states = torch.cat([old_k, key_states], dim=-2) + value_states = torch.cat([old_v, value_states], dim=-2) + attention_interface: Callable = eager_attention_forward + if self.config._attn_implementation != 'eager': + attention_interface = ALL_ATTENTION_FUNCTIONS[self.config._attn_implementation] + if self.diffusion_lm: + (attn_output, attn_weights) = attention_interface(self, query_states, key_states, value_states, None, dropout=0.0, scaling=self.scaling, is_causal=False, **kwargs) + else: + (attn_output, attn_weights) = attention_interface(self, query_states, key_states, value_states, attention_mask, dropout=0.0, scaling=self.scaling, sliding_window=getattr(self.config, 'sliding_window', None), **kwargs) + attn_output = attn_output.reshape(*input_shape, -1).contiguous() + attn_output = self._project_output(attn_output, routing) + return (attn_output, attn_weights) + +class Ministral3MLP(nn.Module): + + def __init__(self, config): + super().__init__() + self.config = config + self.hidden_size = config.hidden_size + self.intermediate_size = config.intermediate_size + self.gate_proj = nn.Linear(self.hidden_size, self.intermediate_size, bias=False) + self.up_proj = nn.Linear(self.hidden_size, self.intermediate_size, bias=False) + self.down_proj = nn.Linear(self.intermediate_size, self.hidden_size, bias=False) + self.gate_proj_gen = nn.Linear(self.hidden_size, self.intermediate_size, bias=False) + self.up_proj_gen = nn.Linear(self.hidden_size, self.intermediate_size, bias=False) + self.down_proj_gen = nn.Linear(self.intermediate_size, self.hidden_size, bias=False) + self.act_fn = ACT2FN[config.hidden_act] + + def _understanding_forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + return self.down_proj(self.act_fn(self.gate_proj(hidden_states)) * self.up_proj(hidden_states)) + + def _generation_forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + return self.down_proj_gen(self.act_fn(self.gate_proj_gen(hidden_states)) * self.up_proj_gen(hidden_states)) + + def forward(self, hidden_states: torch.Tensor, routing: TokenRouting=None) -> torch.Tensor: + generation_module = self._generation_forward if hasattr(self, 'gate_proj_gen') else None + return _routed_module(hidden_states, routing, self._understanding_forward, generation_module) + +@use_kernel_forward_from_hub('RMSNorm') +class Ministral3RMSNorm(nn.Module): + + def __init__(self, hidden_size, eps=1e-06): + super().__init__() + self.weight = nn.Parameter(torch.ones(hidden_size)) + self.variance_epsilon = eps + + def forward(self, hidden_states): + input_dtype = hidden_states.dtype + hidden_states = hidden_states.to(torch.float32) + variance = hidden_states.pow(2).mean(-1, keepdim=True) + hidden_states = hidden_states * torch.rsqrt(variance + self.variance_epsilon) + return self.weight * hidden_states.to(input_dtype) + + def extra_repr(self): + return f'{tuple(self.weight.shape)}, eps={self.variance_epsilon}' + +class Ministral3DecoderLayer(GradientCheckpointingLayer): + + def __init__(self, config: MinistralDLMConfig, layer_idx: int): + super().__init__() + self.hidden_size = config.hidden_size + from .attention import MinistralFlexAttention + attn_class = MinistralFlexAttention + self.self_attn = attn_class(config=config, layer_idx=layer_idx) + self.mlp = Ministral3MLP(config) + self.input_layernorm = Ministral3RMSNorm(config.hidden_size, eps=config.rms_norm_eps) + self.post_attention_layernorm = Ministral3RMSNorm(config.hidden_size, eps=config.rms_norm_eps) + self.input_layernorm_gen = Ministral3RMSNorm(config.hidden_size, eps=config.rms_norm_eps) + self.post_attention_layernorm_gen = Ministral3RMSNorm(config.hidden_size, eps=config.rms_norm_eps) + + def forward(self, hidden_states: torch.Tensor, attention_mask: Optional[torch.Tensor]=None, position_ids: Optional[torch.LongTensor]=None, past_key_values: Optional[Cache]=None, use_cache: Optional[bool]=False, cache_position: Optional[torch.LongTensor]=None, position_embeddings: Optional[tuple[torch.Tensor, torch.Tensor]]=None, routing: TokenRouting=None, **kwargs: Unpack[TransformersKwargs]) -> torch.Tensor: + residual = hidden_states + hidden_states = _routed_module(hidden_states, routing, self.input_layernorm, getattr(self, 'input_layernorm_gen', None)) + (hidden_states, _) = self.self_attn(hidden_states=hidden_states, attention_mask=attention_mask, position_ids=position_ids, past_key_values=past_key_values, use_cache=use_cache, cache_position=cache_position, position_embeddings=position_embeddings, routing=routing, **kwargs) + hidden_states = residual + hidden_states + residual = hidden_states + hidden_states = _routed_module(hidden_states, routing, self.post_attention_layernorm, getattr(self, 'post_attention_layernorm_gen', None)) + hidden_states = self.mlp(hidden_states, routing=routing) + hidden_states = residual + hidden_states + return hidden_states + +class Ministral3PreTrainedModel(PreTrainedModel): + config: MinistralDLMConfig + base_model_prefix = 'model' + supports_gradient_checkpointing = True + _no_split_modules = ['Ministral3DecoderLayer'] + _skip_keys_device_placement = ['past_key_values'] + _supports_flash_attn = True + _supports_sdpa = True + _supports_flex_attn = True + _can_compile_fullgraph = True + _supports_attention_backend = True + _can_record_outputs = {'hidden_states': Ministral3DecoderLayer, 'attentions': Ministral3Attention} + +class Ministral3RotaryEmbedding(nn.Module): + inv_freq: torch.Tensor + + def __init__(self, config: MinistralDLMConfig, device=None): + super().__init__() + self.max_seq_len_cached = config.max_position_embeddings + self.original_max_seq_len = config.max_position_embeddings + self.config = config + self.rope_type = self.config.rope_parameters['rope_type'] + rope_init_fn: Callable = self.compute_default_rope_parameters + if self.rope_type != 'default': + rope_init_fn = ROPE_INIT_FUNCTIONS[self.rope_type] + (inv_freq, self.attention_scaling) = rope_init_fn(self.config, device) + self.register_buffer('inv_freq', inv_freq, persistent=False) + self.original_inv_freq = inv_freq + + @staticmethod + def compute_default_rope_parameters(config: Optional[MinistralDLMConfig]=None, device: Optional['torch.device']=None, seq_len: Optional[int]=None) -> tuple['torch.Tensor', float]: + base = config.rope_parameters['rope_theta'] + dim = getattr(config, 'head_dim', None) or config.hidden_size // config.num_attention_heads + attention_factor = 1.0 + inv_freq = 1.0 / base ** (torch.arange(0, dim, 2, dtype=torch.int64).to(device=device, dtype=torch.float) / dim) + return (inv_freq, attention_factor) + + @torch.no_grad() + @dynamic_rope_update + def forward(self, x, position_ids): + with torch.autocast(device_type=x.device.type, enabled=False): + inv_freq_expanded = self.inv_freq[None, :, None].float().expand(position_ids.shape[0], -1, 1).to(x.device) + position_ids_expanded = position_ids[:, None, :].float() + freqs = (inv_freq_expanded.float() @ position_ids_expanded.float()).transpose(1, 2) + emb = torch.cat((freqs, freqs), dim=-1) + cos = emb.cos() * self.attention_scaling + sin = emb.sin() * self.attention_scaling + return (cos.to(dtype=x.dtype), sin.to(dtype=x.dtype)) + +class Ministral3Model(Ministral3PreTrainedModel): + + def __init__(self, config: MinistralDLMConfig): + super().__init__(config) + self.padding_idx = config.pad_token_id + self.vocab_size = config.vocab_size + self.dual_tower_layers = _resolve_dual_tower_layers(config) + self._layer_loop_config = None + self.embed_tokens = nn.Embedding(config.vocab_size, config.hidden_size, self.padding_idx) + self.layers = nn.ModuleList([Ministral3DecoderLayer(config, layer_idx) for layer_idx in range(config.num_hidden_layers)]) + self.norm = Ministral3RMSNorm(config.hidden_size, eps=config.rms_norm_eps) + self.norm_gen = Ministral3RMSNorm(config.hidden_size, eps=config.rms_norm_eps) + self.rotary_emb = Ministral3RotaryEmbedding(config=config) + self.gradient_checkpointing = False + self.post_init() + + @check_model_inputs + def forward(self, input_ids: Optional[torch.LongTensor]=None, attention_mask: Optional[torch.Tensor]=None, position_ids: Optional[torch.LongTensor]=None, past_key_values: Optional[Cache]=None, inputs_embeds: Optional[torch.FloatTensor]=None, use_cache: Optional[bool]=None, cache_position: Optional[torch.LongTensor]=None, input_embeddings: Optional[torch.FloatTensor]=None, routing: Optional[torch.Tensor]=None, modality_indices: Optional[torch.Tensor]=None, loop_k: Optional[int]=None, loop_depths: Optional[torch.LongTensor]=None, **kwargs: Unpack[TransformersKwargs]) -> BaseModelOutputWithPast: + if input_embeddings is not None: + inputs_embeds = input_embeddings + input_embeddings = None + if (input_ids is None) ^ (inputs_embeds is not None): + raise ValueError('You must specify exactly one of input_ids or inputs_embeds') + if inputs_embeds is None: + inputs_embeds = self.embed_tokens(input_ids) + single_stream_call = kwargs.get('single_stream_image_diffusion', False) + if single_stream_call is None: + single_stream_call = False + if not isinstance(single_stream_call, bool): + raise TypeError('single_stream_image_diffusion must be boolean') + use_layer_loop = self._layer_loop_config is not None and single_stream_call + if loop_k is not None or loop_depths is not None: + raise ValueError('loop_k and loop_depths require an active single-stream looped_layer_execution call') + resolved_loop_depths = None + loop_visits = 1 + dual_tower = True + partial_dual_tower = dual_tower and self.dual_tower_layers < self.config.num_hidden_layers + if dual_tower and modality_indices is not None: + modality_routing = _canonicalize_token_routing(modality_indices, inputs_embeds, dual_tower=dual_tower) + if routing is None: + canonical_routing = modality_routing + else: + canonical_routing = _canonicalize_token_routing(routing, inputs_embeds, dual_tower=dual_tower) + if not torch.equal(routing.to(dtype=torch.bool), modality_indices.to(dtype=torch.bool)): + raise ValueError('routing and deprecated modality_indices alias must select identical U/G tokens when both are provided') + else: + canonical_routing = _canonicalize_token_routing(routing, inputs_embeds, dual_tower=dual_tower) + if use_cache and past_key_values is None: + past_key_values = DynamicCache() + past_seen_tokens = past_key_values.get_seq_length() if past_key_values is not None and (partial_dual_tower or cache_position is None) else 0 + stored_cached_routing = getattr(past_key_values, '_nlduni_dual_tower_routing', None) + track_dual_tower_routing = partial_dual_tower and (canonical_routing is not None or stored_cached_routing is not None) + current_routing = _routing_mask(canonical_routing, inputs_embeds) if track_dual_tower_routing else None + cached_routing = stored_cached_routing + if track_dual_tower_routing and cached_routing is None: + cached_routing = torch.zeros(current_routing.shape[0], past_seen_tokens, dtype=torch.bool, device=current_routing.device) + elif track_dual_tower_routing and tuple(cached_routing.shape) != (current_routing.shape[0], past_seen_tokens): + raise ValueError(f'cached dual-tower routing must match the KV cache shape: expected {(current_routing.shape[0], past_seen_tokens)}, got {tuple(cached_routing.shape)}') + elif track_dual_tower_routing and cached_routing.device != current_routing.device: + raise ValueError('cached dual-tower routing and inputs must share a device') + if track_dual_tower_routing and past_key_values is not None: + past_key_values._nlduni_dual_tower_routing = cached_routing + past_key_values._nlduni_dual_tower_has_generation = bool(getattr(past_key_values, '_nlduni_dual_tower_has_generation', False)) + if cache_position is None: + cache_position = torch.arange(past_seen_tokens, past_seen_tokens + inputs_embeds.shape[1], device=inputs_embeds.device) + if position_ids is None: + position_ids = cache_position.unsqueeze(0) + if kwargs.get('use_causal_mask', False): + mask_function = create_causal_mask if self.config.sliding_window is None else create_sliding_window_causal_mask + causal_mask = mask_function(config=self.config, input_embeds=inputs_embeds, attention_mask=attention_mask, cache_position=cache_position, past_key_values=past_key_values, position_ids=position_ids) + else: + causal_mask = None + hidden_states = inputs_embeds + position_embeddings = self.rotary_emb(hidden_states, position_ids=position_ids) + split_layer_kwargs = None + has_split_layers = track_dual_tower_routing + if has_split_layers and kwargs.get('overwrite_attn_impl') != 'flash_attn' and (kwargs.get('overwrite_block_mask') is not None): + split_layer_kwargs = dict(kwargs) + split_layer_kwargs['overwrite_block_mask'] = _create_split_tower_block_mask(kwargs['overwrite_block_mask'], current_routing=current_routing, cached_routing=cached_routing) + for (layer_idx, decoder_layer) in enumerate(self.layers[:self.config.num_hidden_layers]): + layer_kwargs = split_layer_kwargs if split_layer_kwargs is not None and layer_idx >= self.dual_tower_layers else kwargs + hidden_states = decoder_layer(hidden_states, attention_mask=causal_mask, position_ids=position_ids, past_key_values=past_key_values, use_cache=use_cache, cache_position=cache_position, position_embeddings=position_embeddings, routing=canonical_routing, **layer_kwargs) + if track_dual_tower_routing and use_cache and (past_key_values is not None): + past_key_values._nlduni_dual_tower_routing = torch.cat((cached_routing, current_routing), dim=1) + past_key_values._nlduni_dual_tower_has_generation = past_key_values._nlduni_dual_tower_has_generation or canonical_routing is not None + hidden_states = _routed_module(hidden_states, canonical_routing, self.norm, getattr(self, 'norm_gen', None)) + return BaseModelOutputWithPast(last_hidden_state=hidden_states, past_key_values=past_key_values if use_cache else None) diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000000000000000000000000000000000000..795d3db61510ea82ed83456fa5412f46d179a156 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,7 @@ +{ + "bos_token_id": 1, + "eos_token_id": 11, + "pad_token_id": 11, + "max_new_tokens": 16000, + "do_sample": false +} diff --git a/image_utils.py b/image_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..a82b5a397f8b0fbeaf6fe3e14952119aa5da685a --- /dev/null +++ b/image_utils.py @@ -0,0 +1,65 @@ +# ADOBE CONFIDENTIAL +# Copyright 2025 Adobe +# All Rights Reserved. +# NOTICE: All information contained herein is, and remains +# the property of Adobe and its suppliers, if any. The intellectual +# and technical concepts contained herein are proprietary to Adobe +# and its suppliers and are protected by all applicable intellectual +# property laws, including trade secret and copyright laws. +# Dissemination of this information or reproduction of this material +# is strictly forbidden unless prior written permission is obtained +# from Adobe. + +from __future__ import annotations +import torch +from .token_constants import DEFAULT_IMAGE_PAD_TOKEN, DEFAULT_IMAGE_TOKEN +import numpy as np +from PIL import ImageOps + +def pad_to_square_and_resize(img, size=1024): + padded_img = ImageOps.pad(img, (max(img.size), max(img.size)), color=(0, 0, 0)) + resized_img = padded_img.resize((size, size)) + return resized_img + +def process_images(images, image_processor, model_cfg): + result = [] + for image in images: + pixels = image_processor(images=[image], return_tensors='pt').pixel_values + (h, w) = pixels.shape[-2:] + result.append((pixels, torch.tensor([[1, h // 16, w // 16]], dtype=torch.long))) + return result + +def tokenizer_image_token(prompt, tokenizer, image_token_index=-200, return_tensors=None, constant_version=None): + prompt = prompt.replace('', '') + ids = torch.tensor(tokenizer(prompt).input_ids, dtype=torch.long) + ids[ids == 23] = -500 + return ids if return_tensors == 'pt' else ids.tolist() + +def compute_num_image_tokens(x, image_aspect_ratio, image_processor): + grid = x[0][1] + return (int(grid[0, 1]) // 2, int(grid[0, 2]) // 2) + +def fix_one_prompt(prompt, config, n_image_tokens): + image_idx = 0 + while DEFAULT_IMAGE_TOKEN in prompt: + newline_token = config.mm_native_newline_token + if newline_token: + if len(n_image_tokens[image_idx]) == 2: + (hh, ww) = n_image_tokens[image_idx] + row = DEFAULT_IMAGE_PAD_TOKEN * ww + newline_token + rows = row * hh + rows = rows.rstrip(newline_token) + prompt = prompt.replace('', rows, 1) + elif len(n_image_tokens[image_idx]) == 3: + (tt, hh, ww) = (int(value) for value in n_image_tokens[image_idx]) + row = DEFAULT_IMAGE_PAD_TOKEN * ww + newline_token + per_image = row * hh + newline_token + newline_token + images = (per_image * tt).rstrip(newline_token + newline_token) + prompt = prompt.replace('', images, 1) + else: + raise NotImplementedError() + else: + image_tokens = DEFAULT_IMAGE_PAD_TOKEN * np.prod(n_image_tokens[image_idx]) + prompt = prompt.replace('', image_tokens, 1) + image_idx += 1 + return prompt diff --git a/inference.py b/inference.py new file mode 100644 index 0000000000000000000000000000000000000000..f9c8376d1256fb3bce0ec3e427615ff47307f202 --- /dev/null +++ b/inference.py @@ -0,0 +1,22 @@ +"""Examples: python inference.py /path/to/model --task t2i --prompt 'A red mug'.""" +import argparse +from pathlib import Path +import torch +from transformers import AutoModelForCausalLM + +parser=argparse.ArgumentParser() +parser.add_argument('model') +parser.add_argument('--task',choices=['t2i','edit','understand'],default='t2i') +parser.add_argument('--prompt',required=True) +parser.add_argument('--image') +parser.add_argument('--output',default='output.png') +parser.add_argument('--seed',type=int,default=42) +args=parser.parse_args() +model=AutoModelForCausalLM.from_pretrained(args.model,trust_remote_code=True,torch_dtype=torch.bfloat16).to('cuda').eval() +if args.task=='t2i': + model.text_to_image(args.prompt,seed=args.seed).save(args.output) +elif args.task=='edit': + if not args.image:parser.error('--image is required for editing') + model.image_edit(args.image,args.prompt,seed=args.seed).save(args.output) +else: + print(model.generate(args.prompt,image=args.image)) diff --git a/markers.py b/markers.py new file mode 100644 index 0000000000000000000000000000000000000000..c3ecbeece58eeac2c673d4bc48906862c407155b --- /dev/null +++ b/markers.py @@ -0,0 +1,182 @@ + +from __future__ import annotations +import math +from numbers import Integral +import torch +from torch import nn +GEN_IMAGE_ROW_MARKERS = 'gen_image_row_markers' +GEN_IMAGE_FIXED_PREFIX_TOKENS = 'gen_image_fixed_prefix_tokens' +GENERATION_SKIP_DOWNSAMPLE = 'generation_skip_down_sample' +ROW_MARKER_OFFSET = 0 +IMAGE_MASK_OFFSET = 1 +IMAGE_END_OFFSET = 2 +FIXED_PREFIX_OFFSET = 3 +RESERVED_GENERATION_ROWS = 256 +MARKERS_PER_RAW_ROW = 2 +UNCOMPRESSED_MARKERS_PER_RAW_ROW = 1 +_SUPPORTED_MARKERS_PER_ROW = (UNCOMPRESSED_MARKERS_PER_RAW_ROW, MARKERS_PER_RAW_ROW) + +def _validate_markers_per_row(value) -> int: + if isinstance(value, bool) or not isinstance(value, Integral): + raise TypeError('markers_per_row must be an integer') + value = int(value) + if value not in _SUPPORTED_MARKERS_PER_ROW: + raise ValueError('markers_per_row must be 1 for an uncompressed image grid or 2 for a grid that will undergo 2x spatial compression') + return value + +def _validate_fixed_prefix_count(value) -> int: + if value is None: + return 0 + if isinstance(value, bool) or not isinstance(value, Integral): + raise TypeError(f'config.{GEN_IMAGE_FIXED_PREFIX_TOKENS} must be an integer') + value = int(value) + max_tokens = RESERVED_GENERATION_ROWS - FIXED_PREFIX_OFFSET + if not 0 <= value <= max_tokens: + raise ValueError(f'config.{GEN_IMAGE_FIXED_PREFIX_TOKENS} must be between 0 and {max_tokens}') + return value + +def image_row_markers_enabled(config) -> bool: + value = getattr(config, GEN_IMAGE_ROW_MARKERS, False) + if value is None: + return False + if not isinstance(value, bool): + raise TypeError(f'config.{GEN_IMAGE_ROW_MARKERS} must be boolean') + return value + +def resolve_generation_skip_down_sample(config, *, runtime_value=None) -> bool: + configured = getattr(config, GENERATION_SKIP_DOWNSAMPLE, None) + if configured is not None and (not isinstance(configured, bool)): + raise TypeError(f'config.{GENERATION_SKIP_DOWNSAMPLE} must be boolean or null') + runtime_configured = runtime_value is not None + runtime_enabled = bool(runtime_value) + if configured is None: + return runtime_enabled + if runtime_configured and runtime_enabled != configured: + raise ValueError(f'SKIP_DOWN_SAMPLE conflicts with checkpoint-backed config.{GENERATION_SKIP_DOWNSAMPLE}: runtime={runtime_enabled}, checkpoint={configured}') + return configured + +def image_generation_special_ids(codebook_size: int) -> tuple[int, int, int]: + if isinstance(codebook_size, bool) or not isinstance(codebook_size, Integral): + raise TypeError('codebook_size must be a positive integer') + codebook_size = int(codebook_size) + if codebook_size < 1: + raise ValueError('codebook_size must be a positive integer') + return (codebook_size + ROW_MARKER_OFFSET, codebook_size + IMAGE_MASK_OFFSET, codebook_size + IMAGE_END_OFFSET) + +def image_fixed_prefix_token_count(config) -> int: + return _validate_fixed_prefix_count(getattr(config, GEN_IMAGE_FIXED_PREFIX_TOKENS, 0)) + +def image_generation_fixed_prefix_ids(codebook_size: int, count: int) -> tuple[int, ...]: + image_generation_special_ids(codebook_size) + count = _validate_fixed_prefix_count(count) + start = int(codebook_size) + FIXED_PREFIX_OFFSET + return tuple(range(start, start + count)) + +def split_generation_fixed_prefix(generation_placeholder_mask: torch.Tensor, *, codebook_size: int, count: int) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + if not torch.is_tensor(generation_placeholder_mask): + raise TypeError('generation_placeholder_mask must be a tensor') + if generation_placeholder_mask.ndim != 2: + raise ValueError('generation_placeholder_mask must have shape [batch, sequence]') + placeholder_mask = generation_placeholder_mask.to(dtype=torch.bool) + fixed_ids = image_generation_fixed_prefix_ids(codebook_size, count) + if not fixed_ids: + return (torch.zeros_like(placeholder_mask), placeholder_mask, torch.empty(0, dtype=torch.long, device=placeholder_mask.device)) + previous_placeholder = torch.cat((torch.zeros_like(placeholder_mask[:, :1]), placeholder_mask[:, :-1]), dim=1) + run_starts = placeholder_mask & ~previous_placeholder + positions = torch.arange(placeholder_mask.shape[1], device=placeholder_mask.device, dtype=torch.long).unsqueeze(0).expand_as(placeholder_mask) + most_recent_start = torch.where(run_starts, positions, positions.new_full((), -1)).cummax(dim=1).values + run_offsets = positions - most_recent_start + fixed_mask = placeholder_mask & run_offsets.lt(len(fixed_ids)) + image_mask = placeholder_mask & ~fixed_mask + next_placeholder = torch.cat((placeholder_mask[:, 1:], torch.zeros_like(placeholder_mask[:, :1])), dim=1) + run_ends = placeholder_mask & ~next_placeholder + run_lengths = run_offsets[run_ends] + 1 + if bool(run_lengths.le(len(fixed_ids)).any()): + shortest = int(run_lengths.min().item()) + raise ValueError(f'each generated-image placeholder run must contain the fixed prefix plus at least one image slot; shortest run={shortest}, fixed prefix={len(fixed_ids)}') + dense_ids = int(codebook_size) + FIXED_PREFIX_OFFSET + run_offsets + return (fixed_mask, image_mask, dense_ids[fixed_mask]) + +def generation_embedding_capacity(generation_model) -> int: + embedding = getattr(generation_model, 'gen_embedding', None) + if isinstance(embedding, nn.Embedding): + return int(embedding.num_embeddings) + if isinstance(embedding, nn.Module): + for module in embedding.modules(): + if isinstance(module, nn.Embedding): + return int(module.num_embeddings) + raise TypeError('generation model does not expose an nn.Embedding lookup') + +def image_row_marker_count(generation_model, *, skip_down_sample=False) -> int: + compression_available = getattr(generation_model, 'packed_image_codec', None) is not None or getattr(generation_model, 'downsample_gen', None) is not None + if compression_available and (not skip_down_sample): + return MARKERS_PER_RAW_ROW + return UNCOMPRESSED_MARKERS_PER_RAW_ROW + +def validate_image_row_marker_support(generation_model, *, skip_down_sample=False): + config = generation_model.config + if 'emu3' not in 'emu3'.lower(): + raise NotImplementedError("generation image row markers currently require Emu3's single-codebook tokenizer") + image_row_marker_count(generation_model, skip_down_sample=skip_down_sample) + codebook_size = int(generation_model.vqvae.config.num_vq_embeddings) + (row_id, mask_id, end_id) = image_generation_special_ids(codebook_size) + capacity = generation_embedding_capacity(generation_model) + if end_id >= capacity: + raise ValueError(f'generation embedding has no spare rows for row/end markers: required ID {end_id}, capacity {capacity}') + return (row_id, mask_id, end_id) + +def validate_image_fixed_prefix_support(generation_model) -> tuple[int, ...]: + config = generation_model.config + count = image_fixed_prefix_token_count(config) + if count == 0: + return () + if getattr(config, 'generation_embedding_scale', None) is None: + raise ValueError('generation fixed-prefix tokens require factorized generation scaling so uncompressed tokens receive the common input scale') + if 'emu3' not in 'emu3'.lower(): + raise NotImplementedError("generation fixed-prefix tokens currently require Emu3's single-codebook tokenizer") + codebook_size = int(generation_model.vqvae.config.num_vq_embeddings) + fixed_ids = image_generation_fixed_prefix_ids(codebook_size, count) + capacity = generation_embedding_capacity(generation_model) + if fixed_ids[-1] >= capacity: + raise ValueError(f'generation embedding has no spare rows for the requested fixed prefix: required ID {fixed_ids[-1]}, capacity {capacity}') + special_ids = set(image_generation_special_ids(codebook_size)) + if special_ids.intersection(fixed_ids): + raise RuntimeError('generation fixed-prefix IDs overlap image mask/row/end markers') + return fixed_ids + +def augmented_image_shape(gen_shape, *, markers_per_row: int=MARKERS_PER_RAW_ROW) -> tuple[int, int]: + if gen_shape is None or len(gen_shape) != 2: + raise ValueError('gen_shape must contain image height and width') + markers_per_row = _validate_markers_per_row(markers_per_row) + (height, width) = (int(value) for value in gen_shape) + if height < 1 or width < 1: + raise ValueError('image row markers require a positive image grid') + if markers_per_row == MARKERS_PER_RAW_ROW and (height % 2 or width % 2): + raise ValueError('two-column image row markers require an even-height, even-width grid for 2x spatial compression') + return (height, width + markers_per_row) + +def append_image_row_markers(token_ids: torch.Tensor, gen_shape, *, row_marker_id: int, image_end_id: int, markers_per_row: int=MARKERS_PER_RAW_ROW) -> tuple[torch.Tensor, tuple[int, int], torch.Tensor]: + if not torch.is_tensor(token_ids) or token_ids.ndim != 2: + raise ValueError('token_ids must have shape [batch, raw_image_tokens]') + markers_per_row = _validate_markers_per_row(markers_per_row) + (height, width) = (int(value) for value in gen_shape) + augmented_shape = augmented_image_shape((height, width), markers_per_row=markers_per_row) + if token_ids.shape[-1] != height * width: + raise ValueError(f'raw image token count does not match gen_shape: {token_ids.shape[-1]} != {height * width}') + grid = token_ids.reshape(token_ids.shape[0], height, width) + markers = torch.full((token_ids.shape[0], height, markers_per_row), int(row_marker_id), dtype=token_ids.dtype, device=token_ids.device) + markers[:, -1, :] = int(image_end_id) + augmented = torch.cat((grid, markers), dim=-1).flatten(1) + structural_mask = torch.zeros_like(augmented, dtype=torch.bool) + structural_mask.reshape(token_ids.shape[0], *augmented_shape)[:, :, -markers_per_row:] = True + return (augmented, augmented_shape, structural_mask) + +def strip_image_row_markers(token_ids: torch.Tensor, original_gen_shape, *, markers_per_row: int=MARKERS_PER_RAW_ROW) -> torch.Tensor: + if not torch.is_tensor(token_ids) or token_ids.ndim != 2: + raise ValueError('token_ids must have shape [batch, augmented_tokens]') + markers_per_row = _validate_markers_per_row(markers_per_row) + (height, width) = (int(value) for value in original_gen_shape) + augmented_shape = augmented_image_shape((height, width), markers_per_row=markers_per_row) + if token_ids.shape[-1] != math.prod(augmented_shape): + raise ValueError(f'augmented image token count does not match marker grid: {token_ids.shape[-1]} != {math.prod(augmented_shape)}') + return token_ids.reshape(token_ids.shape[0], *augmented_shape)[:, :, :width].flatten(1) diff --git a/model-00001-of-00008.safetensors b/model-00001-of-00008.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..6088d5ea0cef533ac5e3e69b138a8c016365b4e8 --- /dev/null +++ b/model-00001-of-00008.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4d490e010475dde3e2b57de64261a56d6bf8e9ca7d077754913fd628f7de5f6 +size 4974634832 diff --git a/model-00002-of-00008.safetensors b/model-00002-of-00008.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..d1de03b0ea1cec9fea7e893212249e4d0cd0c45f --- /dev/null +++ b/model-00002-of-00008.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:933c4b2f44f9cd7be30ac7a40efbb3c58485aa9fbd6396245d8e2337faf5c5b3 +size 4999819672 diff --git a/model-00003-of-00008.safetensors b/model-00003-of-00008.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..5fc95856adb90925417aad98382048d2b2a3ecbf --- /dev/null +++ b/model-00003-of-00008.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6893a316ec6655eb3f518be0f3ae3dfc80621922741df7d14f12b3d9fd123bf6 +size 4949454016 diff --git a/model-00004-of-00008.safetensors b/model-00004-of-00008.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..3c1e9570bdc1fc5000083c403e1d7733932095ed --- /dev/null +++ b/model-00004-of-00008.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:858fab295f100b897634b72824d01e01f368dc1d500de03916854d7b2769986c +size 4999819744 diff --git a/model-00005-of-00008.safetensors b/model-00005-of-00008.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..e8cbbeab8617fad0b0d20dd2821c1c955d016101 --- /dev/null +++ b/model-00005-of-00008.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d31608093622df48c2284fa310170f9a1bfd127d7108bdacbc8106fcf296691 +size 4999819776 diff --git a/model-00006-of-00008.safetensors b/model-00006-of-00008.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..1194d8b4bba5eda89b8dc5977bd8a60fd1307cea --- /dev/null +++ b/model-00006-of-00008.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4356b837d798b2d3250cd067c15b7f5d56fd19a8b8605bb107fb9d727c1726d0 +size 4999819272 diff --git a/model-00007-of-00008.safetensors b/model-00007-of-00008.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..1697bd987fc2ba7fc092789574c9928ed3247ee1 --- /dev/null +++ b/model-00007-of-00008.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:003f5a6c4c727e5f560e16ad91ee2264ed138c7190108dfc9b68d1b8c8445545 +size 4456023446 diff --git a/model-00008-of-00008.safetensors b/model-00008-of-00008.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..b9218a80d8bb5725f872392c228ede858069c0f6 --- /dev/null +++ b/model-00008-of-00008.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:299783fae2f540dfd723abbb09f8661b57122210d44b23a4c65f24b254542550 +size 2155913464 diff --git a/model.safetensors.index.json b/model.safetensors.index.json new file mode 100644 index 0000000000000000000000000000000000000000..1e425de044a606daa6d99e58c5e40834fed588ee --- /dev/null +++ b/model.safetensors.index.json @@ -0,0 +1,1564 @@ +{ + "metadata": { + "total_size": 36535104542 + }, + "weight_map": { + "encoder.embed_tokens.weight": "model-00001-of-00008.safetensors", + "encoder.image_newline": "model-00001-of-00008.safetensors", + "encoder.layers.0.input_layernorm.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.input_layernorm_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.mlp.down_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.mlp.down_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.mlp.gate_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.mlp.gate_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.mlp.up_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.mlp.up_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.post_attention_layernorm.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.post_attention_layernorm_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.self_attn.k_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.self_attn.k_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.self_attn.o_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.self_attn.o_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.self_attn.q_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.self_attn.q_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.self_attn.v_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.0.self_attn.v_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.input_layernorm.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.input_layernorm_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.mlp.down_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.mlp.down_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.mlp.gate_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.mlp.gate_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.mlp.up_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.mlp.up_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.post_attention_layernorm.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.post_attention_layernorm_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.self_attn.k_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.self_attn.k_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.self_attn.o_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.self_attn.o_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.self_attn.q_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.self_attn.q_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.self_attn.v_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.1.self_attn.v_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.input_layernorm.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.input_layernorm_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.mlp.down_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.mlp.down_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.mlp.gate_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.mlp.gate_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.mlp.up_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.mlp.up_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.post_attention_layernorm.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.post_attention_layernorm_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.self_attn.k_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.self_attn.k_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.self_attn.o_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.self_attn.o_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.self_attn.q_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.self_attn.q_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.self_attn.v_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.2.self_attn.v_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.input_layernorm.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.input_layernorm_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.mlp.down_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.mlp.down_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.mlp.gate_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.mlp.gate_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.mlp.up_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.mlp.up_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.post_attention_layernorm.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.post_attention_layernorm_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.self_attn.k_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.self_attn.k_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.self_attn.o_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.self_attn.o_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.self_attn.q_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.self_attn.q_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.self_attn.v_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.3.self_attn.v_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.4.mlp.gate_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.4.mlp.up_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.4.self_attn.k_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.4.self_attn.k_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.4.self_attn.o_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.4.self_attn.o_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.4.self_attn.q_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.4.self_attn.q_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.4.self_attn.v_proj.weight": "model-00001-of-00008.safetensors", + "encoder.layers.4.self_attn.v_proj_gen.weight": "model-00001-of-00008.safetensors", + "encoder.layers.10.self_attn.k_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.10.self_attn.k_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.10.self_attn.o_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.10.self_attn.o_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.10.self_attn.q_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.10.self_attn.q_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.10.self_attn.v_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.10.self_attn.v_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.4.input_layernorm.weight": "model-00002-of-00008.safetensors", + "encoder.layers.4.input_layernorm_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.4.mlp.down_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.4.mlp.down_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.4.mlp.gate_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.4.mlp.up_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.4.post_attention_layernorm.weight": "model-00002-of-00008.safetensors", + "encoder.layers.4.post_attention_layernorm_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.input_layernorm.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.input_layernorm_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.mlp.down_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.mlp.down_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.mlp.gate_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.mlp.gate_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.mlp.up_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.mlp.up_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.post_attention_layernorm.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.post_attention_layernorm_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.self_attn.k_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.self_attn.k_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.self_attn.o_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.self_attn.o_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.self_attn.q_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.self_attn.q_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.self_attn.v_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.5.self_attn.v_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.input_layernorm.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.input_layernorm_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.mlp.down_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.mlp.down_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.mlp.gate_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.mlp.gate_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.mlp.up_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.mlp.up_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.post_attention_layernorm.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.post_attention_layernorm_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.self_attn.k_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.self_attn.k_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.self_attn.o_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.self_attn.o_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.self_attn.q_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.self_attn.q_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.self_attn.v_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.6.self_attn.v_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.input_layernorm.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.input_layernorm_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.mlp.down_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.mlp.down_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.mlp.gate_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.mlp.gate_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.mlp.up_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.mlp.up_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.post_attention_layernorm.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.post_attention_layernorm_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.self_attn.k_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.self_attn.k_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.self_attn.o_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.self_attn.o_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.self_attn.q_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.self_attn.q_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.self_attn.v_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.7.self_attn.v_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.input_layernorm.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.input_layernorm_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.mlp.down_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.mlp.down_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.mlp.gate_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.mlp.gate_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.mlp.up_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.mlp.up_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.post_attention_layernorm.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.post_attention_layernorm_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.self_attn.k_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.self_attn.k_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.self_attn.o_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.self_attn.o_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.self_attn.q_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.self_attn.q_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.self_attn.v_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.8.self_attn.v_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.input_layernorm.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.input_layernorm_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.mlp.down_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.mlp.down_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.mlp.gate_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.mlp.gate_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.mlp.up_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.mlp.up_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.post_attention_layernorm.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.post_attention_layernorm_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.self_attn.k_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.self_attn.k_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.self_attn.o_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.self_attn.o_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.self_attn.q_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.self_attn.q_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.self_attn.v_proj.weight": "model-00002-of-00008.safetensors", + "encoder.layers.9.self_attn.v_proj_gen.weight": "model-00002-of-00008.safetensors", + "encoder.layers.10.input_layernorm.weight": "model-00003-of-00008.safetensors", + "encoder.layers.10.input_layernorm_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.10.mlp.down_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.10.mlp.down_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.10.mlp.gate_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.10.mlp.gate_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.10.mlp.up_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.10.mlp.up_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.10.post_attention_layernorm.weight": "model-00003-of-00008.safetensors", + "encoder.layers.10.post_attention_layernorm_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.input_layernorm.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.input_layernorm_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.mlp.down_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.mlp.down_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.mlp.gate_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.mlp.gate_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.mlp.up_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.mlp.up_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.post_attention_layernorm.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.post_attention_layernorm_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.self_attn.k_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.self_attn.k_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.self_attn.o_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.self_attn.o_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.self_attn.q_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.self_attn.q_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.self_attn.v_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.11.self_attn.v_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.input_layernorm.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.input_layernorm_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.mlp.down_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.mlp.down_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.mlp.gate_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.mlp.gate_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.mlp.up_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.mlp.up_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.post_attention_layernorm.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.post_attention_layernorm_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.self_attn.k_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.self_attn.k_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.self_attn.o_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.self_attn.o_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.self_attn.q_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.self_attn.q_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.self_attn.v_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.12.self_attn.v_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.input_layernorm.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.input_layernorm_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.mlp.down_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.mlp.down_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.mlp.gate_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.mlp.gate_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.mlp.up_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.mlp.up_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.post_attention_layernorm.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.post_attention_layernorm_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.self_attn.k_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.self_attn.k_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.self_attn.o_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.self_attn.o_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.self_attn.q_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.self_attn.q_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.self_attn.v_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.13.self_attn.v_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.input_layernorm.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.input_layernorm_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.mlp.down_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.mlp.down_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.mlp.gate_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.mlp.gate_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.mlp.up_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.mlp.up_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.post_attention_layernorm.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.post_attention_layernorm_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.self_attn.k_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.self_attn.k_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.self_attn.o_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.self_attn.o_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.self_attn.q_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.self_attn.q_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.self_attn.v_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.14.self_attn.v_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.15.mlp.down_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.15.mlp.gate_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.15.mlp.gate_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.15.mlp.up_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.15.mlp.up_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.15.self_attn.k_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.15.self_attn.k_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.15.self_attn.o_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.15.self_attn.o_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.15.self_attn.q_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.15.self_attn.q_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.15.self_attn.v_proj.weight": "model-00003-of-00008.safetensors", + "encoder.layers.15.self_attn.v_proj_gen.weight": "model-00003-of-00008.safetensors", + "encoder.layers.15.input_layernorm.weight": "model-00004-of-00008.safetensors", + "encoder.layers.15.input_layernorm_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.15.mlp.down_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.15.post_attention_layernorm.weight": "model-00004-of-00008.safetensors", + "encoder.layers.15.post_attention_layernorm_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.input_layernorm.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.input_layernorm_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.mlp.down_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.mlp.down_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.mlp.gate_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.mlp.gate_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.mlp.up_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.mlp.up_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.post_attention_layernorm.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.post_attention_layernorm_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.self_attn.k_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.self_attn.k_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.self_attn.o_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.self_attn.o_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.self_attn.q_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.self_attn.q_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.self_attn.v_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.16.self_attn.v_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.input_layernorm.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.input_layernorm_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.mlp.down_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.mlp.down_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.mlp.gate_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.mlp.gate_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.mlp.up_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.mlp.up_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.post_attention_layernorm.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.post_attention_layernorm_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.self_attn.k_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.self_attn.k_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.self_attn.o_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.self_attn.o_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.self_attn.q_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.self_attn.q_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.self_attn.v_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.17.self_attn.v_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.input_layernorm.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.input_layernorm_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.mlp.down_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.mlp.down_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.mlp.gate_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.mlp.gate_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.mlp.up_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.mlp.up_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.post_attention_layernorm.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.post_attention_layernorm_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.self_attn.k_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.self_attn.k_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.self_attn.o_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.self_attn.o_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.self_attn.q_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.self_attn.q_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.self_attn.v_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.18.self_attn.v_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.input_layernorm.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.input_layernorm_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.mlp.down_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.mlp.down_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.mlp.gate_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.mlp.gate_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.mlp.up_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.mlp.up_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.post_attention_layernorm.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.post_attention_layernorm_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.self_attn.k_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.self_attn.k_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.self_attn.o_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.self_attn.o_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.self_attn.q_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.self_attn.q_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.self_attn.v_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.19.self_attn.v_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.input_layernorm.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.input_layernorm_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.mlp.down_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.mlp.down_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.mlp.gate_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.mlp.gate_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.mlp.up_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.mlp.up_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.post_attention_layernorm.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.post_attention_layernorm_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.self_attn.k_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.self_attn.k_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.self_attn.o_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.self_attn.o_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.self_attn.q_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.self_attn.q_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.self_attn.v_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.20.self_attn.v_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.21.mlp.down_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.21.mlp.gate_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.21.mlp.up_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.21.self_attn.k_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.21.self_attn.k_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.21.self_attn.o_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.21.self_attn.o_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.21.self_attn.q_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.21.self_attn.q_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.21.self_attn.v_proj.weight": "model-00004-of-00008.safetensors", + "encoder.layers.21.self_attn.v_proj_gen.weight": "model-00004-of-00008.safetensors", + "encoder.layers.21.input_layernorm.weight": "model-00005-of-00008.safetensors", + "encoder.layers.21.input_layernorm_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.21.mlp.down_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.21.mlp.gate_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.21.mlp.up_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.21.post_attention_layernorm.weight": "model-00005-of-00008.safetensors", + "encoder.layers.21.post_attention_layernorm_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.input_layernorm.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.input_layernorm_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.mlp.down_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.mlp.down_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.mlp.gate_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.mlp.gate_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.mlp.up_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.mlp.up_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.post_attention_layernorm.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.post_attention_layernorm_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.self_attn.k_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.self_attn.k_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.self_attn.o_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.self_attn.o_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.self_attn.q_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.self_attn.q_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.self_attn.v_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.22.self_attn.v_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.input_layernorm.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.input_layernorm_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.mlp.down_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.mlp.down_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.mlp.gate_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.mlp.gate_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.mlp.up_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.mlp.up_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.post_attention_layernorm.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.post_attention_layernorm_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.self_attn.k_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.self_attn.k_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.self_attn.o_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.self_attn.o_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.self_attn.q_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.self_attn.q_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.self_attn.v_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.23.self_attn.v_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.input_layernorm.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.input_layernorm_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.mlp.down_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.mlp.down_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.mlp.gate_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.mlp.gate_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.mlp.up_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.mlp.up_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.post_attention_layernorm.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.post_attention_layernorm_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.self_attn.k_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.self_attn.k_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.self_attn.o_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.self_attn.o_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.self_attn.q_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.self_attn.q_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.self_attn.v_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.24.self_attn.v_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.input_layernorm.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.input_layernorm_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.mlp.down_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.mlp.down_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.mlp.gate_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.mlp.gate_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.mlp.up_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.mlp.up_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.post_attention_layernorm.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.post_attention_layernorm_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.self_attn.k_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.self_attn.k_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.self_attn.o_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.self_attn.o_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.self_attn.q_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.self_attn.q_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.self_attn.v_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.25.self_attn.v_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.input_layernorm.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.input_layernorm_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.mlp.down_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.mlp.down_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.mlp.gate_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.mlp.gate_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.mlp.up_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.mlp.up_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.post_attention_layernorm.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.post_attention_layernorm_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.self_attn.k_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.self_attn.k_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.self_attn.o_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.self_attn.o_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.self_attn.q_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.self_attn.q_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.self_attn.v_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.26.self_attn.v_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.27.mlp.gate_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.27.self_attn.k_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.27.self_attn.k_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.27.self_attn.o_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.27.self_attn.o_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.27.self_attn.q_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.27.self_attn.q_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.27.self_attn.v_proj.weight": "model-00005-of-00008.safetensors", + "encoder.layers.27.self_attn.v_proj_gen.weight": "model-00005-of-00008.safetensors", + "encoder.layers.27.input_layernorm.weight": "model-00006-of-00008.safetensors", + "encoder.layers.27.input_layernorm_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.27.mlp.down_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.27.mlp.down_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.27.mlp.gate_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.27.mlp.up_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.27.mlp.up_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.27.post_attention_layernorm.weight": "model-00006-of-00008.safetensors", + "encoder.layers.27.post_attention_layernorm_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.input_layernorm.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.input_layernorm_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.mlp.down_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.mlp.down_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.mlp.gate_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.mlp.gate_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.mlp.up_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.mlp.up_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.post_attention_layernorm.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.post_attention_layernorm_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.self_attn.k_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.self_attn.k_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.self_attn.o_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.self_attn.o_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.self_attn.q_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.self_attn.q_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.self_attn.v_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.28.self_attn.v_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.input_layernorm.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.input_layernorm_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.mlp.down_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.mlp.down_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.mlp.gate_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.mlp.gate_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.mlp.up_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.mlp.up_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.post_attention_layernorm.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.post_attention_layernorm_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.self_attn.k_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.self_attn.k_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.self_attn.o_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.self_attn.o_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.self_attn.q_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.self_attn.q_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.self_attn.v_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.29.self_attn.v_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.input_layernorm.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.input_layernorm_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.mlp.down_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.mlp.down_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.mlp.gate_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.mlp.gate_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.mlp.up_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.mlp.up_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.post_attention_layernorm.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.post_attention_layernorm_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.self_attn.k_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.self_attn.k_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.self_attn.o_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.self_attn.o_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.self_attn.q_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.self_attn.q_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.self_attn.v_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.30.self_attn.v_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.input_layernorm.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.input_layernorm_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.mlp.down_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.mlp.down_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.mlp.gate_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.mlp.gate_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.mlp.up_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.mlp.up_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.post_attention_layernorm.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.post_attention_layernorm_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.self_attn.k_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.self_attn.k_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.self_attn.o_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.self_attn.o_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.self_attn.q_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.self_attn.q_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.self_attn.v_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.31.self_attn.v_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.input_layernorm.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.input_layernorm_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.mlp.down_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.mlp.down_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.mlp.gate_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.mlp.gate_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.mlp.up_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.mlp.up_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.post_attention_layernorm.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.post_attention_layernorm_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.self_attn.k_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.self_attn.k_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.self_attn.o_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.self_attn.o_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.self_attn.q_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.self_attn.q_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.self_attn.v_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.32.self_attn.v_proj_gen.weight": "model-00006-of-00008.safetensors", + "encoder.layers.33.self_attn.k_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.33.self_attn.q_proj.weight": "model-00006-of-00008.safetensors", + "encoder.layers.33.self_attn.v_proj.weight": "model-00006-of-00008.safetensors", + "encoder.gen_embedding.weight": "model-00007-of-00008.safetensors", + "encoder.layers.33.input_layernorm.weight": "model-00007-of-00008.safetensors", + "encoder.layers.33.input_layernorm_gen.weight": "model-00007-of-00008.safetensors", + "encoder.layers.33.mlp.down_proj.weight": "model-00007-of-00008.safetensors", + "encoder.layers.33.mlp.down_proj_gen.weight": "model-00007-of-00008.safetensors", + "encoder.layers.33.mlp.gate_proj.weight": "model-00007-of-00008.safetensors", + "encoder.layers.33.mlp.gate_proj_gen.weight": "model-00007-of-00008.safetensors", + "encoder.layers.33.mlp.up_proj.weight": "model-00007-of-00008.safetensors", + "encoder.layers.33.mlp.up_proj_gen.weight": "model-00007-of-00008.safetensors", + "encoder.layers.33.post_attention_layernorm.weight": "model-00007-of-00008.safetensors", + "encoder.layers.33.post_attention_layernorm_gen.weight": "model-00007-of-00008.safetensors", + "encoder.layers.33.self_attn.k_proj_gen.weight": "model-00007-of-00008.safetensors", + "encoder.layers.33.self_attn.o_proj.weight": "model-00007-of-00008.safetensors", + "encoder.layers.33.self_attn.o_proj_gen.weight": "model-00007-of-00008.safetensors", + "encoder.layers.33.self_attn.q_proj_gen.weight": "model-00007-of-00008.safetensors", + "encoder.layers.33.self_attn.v_proj_gen.weight": "model-00007-of-00008.safetensors", + "encoder.mm_projector.mlp.0.weight": "model-00007-of-00008.safetensors", + "encoder.mm_projector.mlp.1.weight": "model-00007-of-00008.safetensors", + "encoder.mm_projector.mlp.3.weight": "model-00007-of-00008.safetensors", + "encoder.norm.weight": "model-00007-of-00008.safetensors", + "encoder.norm_gen.weight": "model-00007-of-00008.safetensors", + "encoder.packed_image_codec.down_norm.weight": "model-00007-of-00008.safetensors", + "encoder.packed_image_codec.down_projection.weight": "model-00007-of-00008.safetensors", + "encoder.packed_image_codec.up_norm.weight": "model-00007-of-00008.safetensors", + "encoder.packed_image_codec.up_projection.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.0.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.0.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.0.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.0.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.0.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.0.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.0.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.0.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.0.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.0.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.0.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.0.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.1.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.1.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.1.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.1.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.1.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.1.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.1.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.1.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.1.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.1.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.1.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.1.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.10.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.10.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.10.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.10.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.10.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.10.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.10.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.10.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.10.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.10.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.10.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.10.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.11.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.11.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.11.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.11.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.11.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.11.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.11.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.11.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.11.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.11.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.11.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.11.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.12.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.12.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.12.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.12.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.12.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.12.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.12.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.12.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.12.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.12.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.12.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.12.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.13.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.13.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.13.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.13.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.13.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.13.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.13.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.13.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.13.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.13.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.13.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.13.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.14.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.14.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.14.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.14.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.14.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.14.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.14.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.14.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.14.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.14.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.14.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.14.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.15.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.15.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.15.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.15.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.15.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.15.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.15.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.15.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.15.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.15.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.15.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.15.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.16.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.16.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.16.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.16.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.16.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.16.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.16.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.16.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.16.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.16.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.16.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.16.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.17.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.17.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.17.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.17.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.17.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.17.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.17.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.17.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.17.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.17.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.17.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.17.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.18.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.18.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.18.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.18.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.18.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.18.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.18.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.18.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.18.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.18.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.18.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.18.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.19.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.19.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.19.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.19.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.19.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.19.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.19.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.19.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.19.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.19.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.19.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.19.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.2.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.2.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.2.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.2.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.2.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.2.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.2.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.2.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.2.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.2.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.2.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.2.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.20.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.20.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.20.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.20.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.20.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.20.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.20.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.20.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.20.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.20.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.20.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.20.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.21.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.21.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.21.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.21.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.21.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.21.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.21.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.21.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.21.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.21.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.21.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.21.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.22.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.22.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.22.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.22.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.22.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.22.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.22.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.22.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.22.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.22.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.22.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.22.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.23.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.23.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.23.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.23.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.23.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.23.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.23.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.23.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.23.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.23.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.23.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.23.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.24.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.24.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.24.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.24.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.24.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.24.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.24.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.24.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.24.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.24.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.24.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.24.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.25.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.25.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.25.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.25.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.25.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.25.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.25.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.25.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.25.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.25.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.25.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.25.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.26.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.26.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.26.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.26.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.26.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.26.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.26.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.26.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.26.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.26.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.26.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.26.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.27.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.27.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.27.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.27.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.27.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.27.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.27.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.27.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.27.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.27.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.27.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.27.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.28.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.28.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.28.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.28.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.28.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.28.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.28.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.28.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.28.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.28.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.28.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.28.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.29.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.29.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.29.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.29.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.29.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.29.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.29.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.29.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.29.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.29.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.29.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.29.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.3.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.3.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.3.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.3.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.3.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.3.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.3.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.3.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.3.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.3.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.3.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.3.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.30.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.30.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.30.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.30.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.30.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.30.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.30.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.30.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.30.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.30.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.30.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.30.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.31.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.31.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.31.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.31.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.31.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.31.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.31.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.31.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.31.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.31.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.31.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.31.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.4.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.4.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.4.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.4.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.4.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.4.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.4.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.4.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.4.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.4.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.4.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.4.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.5.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.5.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.5.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.5.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.5.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.5.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.5.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.5.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.5.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.5.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.5.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.5.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.6.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.6.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.6.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.6.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.6.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.6.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.6.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.6.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.6.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.6.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.6.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.6.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.7.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.7.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.7.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.7.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.7.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.7.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.7.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.7.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.7.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.7.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.7.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.7.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.8.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.8.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.8.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.8.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.8.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.8.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.8.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.8.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.8.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.8.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.8.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.8.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.9.attn.proj.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.9.attn.proj.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.9.attn.qkv.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.9.attn.qkv.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.9.mlp.fc1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.9.mlp.fc1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.9.mlp.fc2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.9.mlp.fc2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.9.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.9.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.9.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.blocks.9.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.patch_generator.cls_token.token": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.patch_generator.embedder.weight": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.model.patch_generator.pos_embed": "model-00007-of-00008.safetensors", + "encoder.vision_tower.vision_tower.radio_model.summary_idxs": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.conv_in.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.conv_in.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.conv_out.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.conv_out.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.attn_1.k.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.attn_1.k.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.attn_1.norm.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.attn_1.norm.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.attn_1.proj_out.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.attn_1.proj_out.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.attn_1.q.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.attn_1.q.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.attn_1.v.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.attn_1.v.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_1.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_1.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_1.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_1.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_1.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_1.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_1.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_1.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_2.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_2.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_2.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_2.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_2.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_2.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_2.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.mid.block_2.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.norm_out.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.norm_out.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.0.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.0.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.0.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.0.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.0.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.0.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.0.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.0.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.1.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.1.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.1.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.1.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.1.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.1.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.1.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.1.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.2.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.2.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.2.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.2.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.2.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.2.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.2.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.2.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.3.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.3.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.3.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.3.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.3.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.3.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.3.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.3.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.4.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.4.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.4.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.4.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.4.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.4.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.4.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.0.block.4.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.0.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.0.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.0.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.0.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.0.nin_shortcut.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.0.nin_shortcut.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.0.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.0.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.0.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.0.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.1.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.1.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.1.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.1.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.1.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.1.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.1.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.1.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.2.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.2.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.2.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.2.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.2.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.2.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.2.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.2.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.3.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.3.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.3.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.3.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.3.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.3.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.3.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.3.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.4.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.4.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.4.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.4.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.4.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.4.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.4.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.block.4.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.upsample.conv.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.1.upsample.conv.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.0.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.0.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.0.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.0.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.0.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.0.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.0.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.0.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.1.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.1.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.1.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.1.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.1.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.1.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.1.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.1.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.2.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.2.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.2.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.2.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.2.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.2.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.2.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.2.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.3.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.3.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.3.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.3.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.3.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.3.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.3.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.3.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.4.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.4.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.4.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.4.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.4.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.4.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.4.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.block.4.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.upsample.conv.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.2.upsample.conv.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.0.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.0.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.0.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.0.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.0.nin_shortcut.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.0.nin_shortcut.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.0.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.0.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.0.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.0.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.1.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.1.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.1.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.1.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.1.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.1.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.1.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.1.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.2.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.2.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.2.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.2.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.2.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.2.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.2.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.2.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.3.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.3.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.3.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.3.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.3.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.3.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.3.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.3.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.4.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.4.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.4.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.4.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.4.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.4.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.4.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.block.4.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.upsample.conv.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.3.upsample.conv.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.0.k.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.0.k.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.0.norm.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.0.norm.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.0.proj_out.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.0.proj_out.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.0.q.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.0.q.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.0.v.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.0.v.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.1.k.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.1.k.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.1.norm.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.1.norm.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.1.proj_out.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.1.proj_out.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.1.q.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.1.q.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.1.v.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.1.v.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.2.k.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.2.k.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.2.norm.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.2.norm.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.2.proj_out.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.2.proj_out.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.2.q.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.2.q.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.2.v.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.2.v.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.3.k.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.3.k.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.3.norm.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.3.norm.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.3.proj_out.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.3.proj_out.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.3.q.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.3.q.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.3.v.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.3.v.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.4.k.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.4.k.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.4.norm.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.4.norm.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.4.proj_out.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.4.proj_out.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.4.q.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.4.q.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.4.v.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.attn.4.v.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.0.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.0.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.0.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.0.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.0.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.0.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.0.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.0.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.1.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.1.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.1.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.1.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.1.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.1.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.1.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.1.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.2.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.2.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.2.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.2.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.2.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.2.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.2.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.2.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.3.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.3.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.3.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.3.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.3.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.3.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.3.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.3.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.4.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.4.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.4.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.4.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.4.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.4.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.4.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.block.4.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.upsample.conv.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.decoder.up.4.upsample.conv.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.conv_in.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.conv_in.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.conv_out.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.conv_out.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.0.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.0.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.0.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.0.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.0.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.0.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.0.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.0.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.1.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.1.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.1.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.1.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.1.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.1.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.1.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.1.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.2.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.2.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.2.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.2.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.2.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.2.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.2.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.2.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.3.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.3.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.3.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.3.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.3.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.3.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.3.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.block.3.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.downsample.conv.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.0.downsample.conv.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.0.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.0.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.0.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.0.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.0.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.0.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.0.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.0.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.1.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.1.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.1.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.1.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.1.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.1.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.1.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.1.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.2.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.2.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.2.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.2.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.2.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.2.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.2.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.2.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.3.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.3.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.3.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.3.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.3.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.3.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.3.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.block.3.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.downsample.conv.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.1.downsample.conv.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.0.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.0.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.0.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.0.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.0.nin_shortcut.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.0.nin_shortcut.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.0.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.0.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.0.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.0.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.1.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.1.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.1.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.1.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.1.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.1.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.1.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.1.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.2.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.2.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.2.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.2.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.2.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.2.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.2.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.2.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.3.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.3.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.3.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.3.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.3.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.3.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.3.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.block.3.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.downsample.conv.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.2.downsample.conv.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.0.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.0.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.0.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.0.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.0.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.0.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.0.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.0.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.1.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.1.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.1.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.1.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.1.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.1.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.1.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.1.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.2.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.2.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.2.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.2.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.2.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.2.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.2.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.2.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.3.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.3.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.3.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.3.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.3.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.3.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.3.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.block.3.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.downsample.conv.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.3.downsample.conv.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.0.k.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.0.k.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.0.norm.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.0.norm.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.0.proj_out.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.0.proj_out.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.0.q.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.0.q.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.0.v.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.0.v.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.1.k.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.1.k.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.1.norm.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.1.norm.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.1.proj_out.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.1.proj_out.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.1.q.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.1.q.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.1.v.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.1.v.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.2.k.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.2.k.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.2.norm.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.2.norm.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.2.proj_out.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.2.proj_out.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.2.q.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.2.q.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.2.v.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.2.v.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.3.k.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.3.k.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.3.norm.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.3.norm.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.3.proj_out.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.3.proj_out.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.3.q.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.3.q.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.3.v.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.attn.3.v.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.0.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.0.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.0.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.0.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.0.nin_shortcut.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.0.nin_shortcut.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.0.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.0.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.0.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.0.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.1.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.1.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.1.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.1.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.1.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.1.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.1.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.1.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.2.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.2.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.2.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.2.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.2.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.2.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.2.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.2.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.3.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.3.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.3.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.3.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.3.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.3.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.3.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.down.4.block.3.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.attn_1.k.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.attn_1.k.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.attn_1.norm.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.attn_1.norm.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.attn_1.proj_out.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.attn_1.proj_out.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.attn_1.q.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.attn_1.q.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.attn_1.v.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.attn_1.v.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_1.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_1.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_1.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_1.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_1.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_1.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_1.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_1.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_2.conv1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_2.conv1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_2.conv2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_2.conv2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_2.norm1.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_2.norm1.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_2.norm2.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.mid.block_2.norm2.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.norm_out.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.encoder.norm_out.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.post_quant_conv.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.post_quant_conv.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.quant_conv.bias": "model-00007-of-00008.safetensors", + "encoder.vqvae.quant_conv.weight": "model-00007-of-00008.safetensors", + "encoder.vqvae.quantize.embedding.weight": "model-00007-of-00008.safetensors", + "diffusion_head.weight": "model-00008-of-00008.safetensors", + "encoder.gen_predictor.weight": "model-00008-of-00008.safetensors" + } +} diff --git a/modeling_nlduni.py b/modeling_nlduni.py new file mode 100644 index 0000000000000000000000000000000000000000..d0a786a484bf03c613636b1db8856fc76e7ab705 --- /dev/null +++ b/modeling_nlduni.py @@ -0,0 +1,252 @@ +from pathlib import Path +import math +import torch +from torch import nn +from PIL import Image +from transformers import AutoTokenizer +from transformers.generation import GenerationMixin +from transformers.modeling_outputs import CausalLMOutputWithPast +from transformers.utils.hub import cached_file +from .configuration_nlduni import NLDUniConfig +from .core import Ministral3Model, Ministral3PreTrainedModel +from .attention import MinistralFlexAttention +from .bridge import PackedLinearImageCodec +from .vq import Emu3VQ, Emu3ImageProcessor +from .vision import RadioVisionTower +from .projector import RadioHProjector +from .positions import _build_2d_sincos_position_embedding, GENERATION_2D_SINCOS_SCALE +from .markers import strip_image_row_markers +from .chat_utils import generate_with_prefix_cache_block_diff +from .sampling import text_to_image as sample_image +from .image_utils import process_images, fix_one_prompt, tokenizer_image_token +from .conversation import Conversation +from .tree import BalancedSemanticTree, production_semantic_tree_contract + +class NLDUniBackbone(Ministral3Model): + def __init__(self, config): + super().__init__(config) + self.vision_tower=RadioVisionTower() + self.mm_projector=RadioHProjector(config) + self.image_newline=nn.Parameter(torch.empty(config.hidden_size)) + self.vqvae=Emu3VQ() + self.image_processor_gen=Emu3ImageProcessor() + self.gen_embedding=nn.Embedding(131072+256,4096) + self.gen_predictor=nn.Linear(4096,131072,bias=False) + self.packed_image_codec=PackedLinearImageCodec(4096,norm_eps=1e-6) + self.downsample_gen=None + self.upsample_gen=None + self.downsample_gen_enc=None + self.gen_embedding_2=None + self.gen_predictor_2=None + self.extra_gen_dit=None + def get_vision_tower(self): + return self.vision_tower + def get_gen_tokenizer(self): + return self.vqvae + def call_gen_token_embedding(self, token_ids): + return self.gen_embedding(token_ids) + def call_gen_fixed_token_embedding(self, token_ids): + return self.gen_embedding(token_ids)*self.config.generation_embedding_scale + def call_gen_embedding(self, token_ids=None, gen_shape=None, enc=False, child_embeddings=None, + spatial_compression=True, add_spatial_position=True): + values=self.gen_embedding(token_ids) if child_embeddings is None else child_embeddings + if spatial_compression: + values=self.packed_image_codec.compress_fixed_grid(values,gen_shape) + scale=self.config.generation_embedding_scale + if spatial_compression:scale*=self.config.generation_downsample_scale + values=values*scale + if add_spatial_position: + h,w=gen_shape + if spatial_compression:h,w=h//2,w//2 + pos=_build_2d_sincos_position_embedding(h,w,values.shape[-1],marker_column=not enc,device=values.device,dtype=values.dtype) + values=values+pos.unsqueeze(0)*GENERATION_2D_SINCOS_SCALE + return values + def call_gen_predictor(self, hidden_states, gen_shape=None, timesteps=None): + h,w=gen_shape + states=self.packed_image_codec.expand_fixed_grid(hidden_states.reshape(-1,(h//2)*(w//2),4096),gen_shape) + return self.gen_predictor(states.flatten(0,1)) + +class NLDUniForCausalLM(Ministral3PreTrainedModel, GenerationMixin): + config_class=NLDUniConfig + base_model_prefix='' + def __init__(self, config): + super().__init__(config) + self.encoder=NLDUniBackbone(config) + self.diffusion_head=nn.Linear(config.hidden_size,config.vocab_size,bias=False) + self.mask_token_id=100 + self.vocab_size=config.vocab_size + self._tokenizer=None + self._asset_root=None + self.post_init() + @classmethod + def from_pretrained(cls, pretrained_model_name_or_path, *args, **kwargs): + model=super().from_pretrained(pretrained_model_name_or_path,*args,**kwargs) + target=model[0] if isinstance(model,tuple) else model + options={k:kwargs[k] for k in ('revision','cache_dir','local_files_only','token','subfolder') if k in kwargs} + target._tokenizer=AutoTokenizer.from_pretrained(pretrained_model_name_or_path,**options) + tree=cached_file(pretrained_model_name_or_path,'pca_tree.pt',**options) + BalancedSemanticTree.from_artifact(production_semantic_tree_contract(tree)) + target.config.image_token_tree_path=tree + target.eval() + return model + def save_pretrained(self, save_directory, **kwargs): + import shutil + destination = Path(save_directory) + destination.mkdir(parents=True, exist_ok=True) + super().save_pretrained(destination, **kwargs) + self.tokenizer.save_pretrained(destination) + asset = Path(self.config.image_token_tree_path) + if asset.resolve() != (destination / 'pca_tree.pt').resolve(): + shutil.copyfile(asset, destination / 'pca_tree.pt') + @property + def model(self):return self.encoder + def get_model(self):return self.encoder + def get_vision_tower(self):return self.encoder.vision_tower + def get_input_embeddings(self):return self.encoder.embed_tokens + def set_input_embeddings(self, value):self.encoder.embed_tokens=value + def get_output_embeddings(self):return self.diffusion_head + def set_output_embeddings(self,value):self.diffusion_head=value + @property + def tokenizer(self): + if self._tokenizer is None:raise RuntimeError('Load with from_pretrained before inference') + return self._tokenizer + def forward(self,input_ids=None,inputs_embeds=None,attention_mask=None,position_ids=None,past_key_values=None,use_cache=False,**kwargs): + result=self.encoder(input_ids=input_ids,inputs_embeds=inputs_embeds,attention_mask=attention_mask,position_ids=position_ids,past_key_values=past_key_values,use_cache=use_cache,**kwargs) + return CausalLMOutputWithPast(logits=self.diffusion_head(result.last_hidden_state),past_key_values=result.past_key_values) + def prepare_inputs_labels_for_multimodal(self, input_ids, position_ids, attention_mask, + past_key_values, labels, images, modalities=None, image_sizes=None, return_inputs=False, **kwargs): + embeds=self.encoder.embed_tokens(input_ids.clamp_min(0)) + if images: + features=[] + for pixels,grid in images: + visual=self.encoder.vision_tower(pixels).squeeze(0) + features.append(self.encoder.mm_projector(visual,grid.to(visual.device))) + visual=torch.cat(features) + mask=input_ids.eq(-500) + if int(mask.sum())!=len(visual):raise ValueError('Image placeholder count does not match vision features') + embeds[mask]=visual.to(embeds) + result=(None,position_ids,attention_mask,past_key_values,embeds,labels) + return result+(input_ids,) if return_inputs else result + def encode_image_gen(self, images, enc=False): + ref=next(self.encoder.vqvae.parameters()) + quant,_,(_,_,ids)=self.encoder.vqvae.encode(images.to(ref)) + return ids.reshape(len(images),-1),tuple(quant.shape[-2:]) + def decode_image_gen(self, codes, height, width): + shape=(height//16,width//16) + if codes.shape[-1] != math.prod(shape): + codes=strip_image_row_markers(codes,shape,markers_per_row=2) + if (codes>=131072).any():raise ValueError('Unresolved image tokens at decoding') + quant=self.encoder.vqvae.quantize.get_codebook_entry(codes) + quant=quant.reshape(len(codes),*shape,256).permute(0,3,1,2).contiguous() + pixels=self.encoder.vqvae.decode(quant).float().clamp(-1,1) + return ((pixels+1)/2*255).permute(0,2,3,1).cpu().numpy().astype('uint8') + def _sample(self,prompt,*,image=None,resolution=1024,steps=64,refinement_steps=4,guidance_scale=3.,image_guidance_scale=2.,temperature=.8,seed=None,top_k=0,top_p=1.,shift=5.,show_progress=False): + if resolution not in (256,512,1024):raise ValueError('resolution must be 256, 512, or 1024') + if steps<1 or not math.isfinite(temperature) or temperature<=0:raise ValueError('steps and temperature must be positive') + # A supplied seed is local to this call and does not disturb caller RNG state. + devices=[self.device.index if self.device.index is not None else torch.cuda.current_device()] if self.device.type=='cuda' else [] + with torch.random.fork_rng(devices=devices,enabled=seed is not None): + if seed is not None:torch.manual_seed(seed) + return sample_image(self,prompt,tokenizer=self.tokenizer,edit_image=image,image_processor=self.encoder.vision_tower.image_processor, + image_resolution=resolution,n_tokens=(resolution//16)**2,n_steps=steps,image_embedding_refinement_steps=refinement_steps, + guidance_scale=guidance_scale,guidance_scale_image=image_guidance_scale,temperature=temperature, + confidence_policy='stratified',shift=shift,schedule='shift',alg_temp=5.,dynamic_temperature=True, + min_temperature=.5,schedule_temp='cosine2',top_k=top_k,top_p=top_p,disable_tqdm=not show_progress, + micro_cond=f'ORIGINAL WIDTH : {resolution}; ORIGINAL HEIGHT : {resolution}; TOP : 0; LEFT : 0; SCORE : 7.110;', + template='Generate an image with the caption:\n ',edit_mode=1 if image is not None else 0) + @torch.inference_mode() + def text_to_image(self,prompt,*,resolution=1024,steps=64,refinement_steps=4,guidance_scale=3.,temperature=.8,seed=None,top_k=0,top_p=1.,shift=5.,show_progress=False): + """Generate one PIL image using the checkpoint's semantic-tree sampler.""" + return self._sample(prompt,resolution=resolution,steps=steps,refinement_steps=refinement_steps,guidance_scale=guidance_scale,temperature=temperature,seed=seed,top_k=top_k,top_p=top_p,shift=shift,show_progress=show_progress) + @torch.inference_mode() + def image_edit(self,image,prompt,*,resolution=1024,steps=64,refinement_steps=4,guidance_scale=1.6,image_guidance_scale=2.,temperature=.8,seed=None,top_k=0,top_p=1.,shift=5.,crop_to_source=True,show_progress=False): + """Edit a PIL image or local image path; return a PIL image.""" + if isinstance(image,(str,Path)):image=Image.open(image) + image=image.convert('RGB') + result=self._sample(prompt,image=image,resolution=resolution,steps=steps,refinement_steps=refinement_steps,guidance_scale=guidance_scale,image_guidance_scale=image_guidance_scale,temperature=temperature,seed=seed,top_k=top_k,top_p=top_p,shift=shift,show_progress=show_progress) + if crop_to_source: + w,h=image.size; scale=resolution/max(w,h) + cw,ch=round(w*scale),round(h*scale) + left,top=(resolution-cw)//2,(resolution-ch)//2 + result=result.crop((left,top,left+cw,top+ch)).resize((w,h),Image.Resampling.LANCZOS) + return result + @torch.inference_mode() + def generate(self,prompt=None,*,image=None,inputs=None,input_ids=None,max_new_tokens=16000,block_length=32,steps_per_block=32,threshold=.9,temperature=0.,return_token_ids=False,**kwargs): + """Visual/text understanding, using greedy block diffusion without thinking.""" + if kwargs:raise TypeError(f'Unknown inference options: {sorted(kwargs)}') + if max_new_tokens<1 or block_length<1 or steps_per_block<1:raise ValueError('Token and step counts must be positive') + if not 0<=threshold<=1:raise ValueError('threshold must be between 0 and 1') + if isinstance(prompt,torch.Tensor):input_ids,prompt=prompt,None + if inputs is not None:input_ids=inputs + if input_ids is None: + if not isinstance(prompt,str):raise TypeError('prompt must be a string, or provide input_ids') + conv=Conversation(); images=[] + if image is not None: + if isinstance(image,(str,Path)):image=Image.open(image) + images=process_images([image.convert('RGB')],self.encoder.vision_tower.image_processor,self.config) + prompt='\n'+prompt + conv.append_message(conv.roles[0],prompt) + conv.append_message(conv.roles[1],None) + rendered=conv.get_prompt() + if images: + grid=images[0][1] + rendered=fix_one_prompt(rendered,self.config,[(int(grid[0,1])//2,int(grid[0,2])//2)]) + input_ids=tokenizer_image_token(rendered,self.tokenizer,return_tensors='pt',constant_version='ministral').unsqueeze(0).to(self.device) + embeds=self.prepare_inputs_labels_for_multimodal(input_ids,None,None,None,None,images)[4] + else: + if image is not None:raise ValueError('Use a string prompt when providing image') + input_ids=input_ids.to(self.device) + embeds=self.encoder.embed_tokens(input_ids) + length=math.ceil(max_new_tokens/block_length)*block_length + ids,_=generate_with_prefix_cache_block_diff(self,prompt_embeds=embeds,gen_length=length,steps=steps_per_block*(length//block_length),block_length=block_length,temperature=temperature,mask_id=100,threshold=threshold,shift_logits=True,causal_context=True,eos_token_id=11) + ids=ids[:, :max_new_tokens] + if return_token_ids:return ids + return self.tokenizer.decode(ids[0],skip_special_tokens=True).strip() + +from .positions import _generation_grid_shape as _bundle_positions + +from .core import rotate_half as _bundle_core + +from .refinement import _validate_refinement_steps as _bundle_refinement + +from .conversation import Conversation +from .tree import BalancedSemanticTree, production_semantic_tree_contract as _bundle_conversation + +from .constants import NemotronMinistralDLMConstant as _bundle_constants + +from .chat_utils import SimpleOutputWithPast as _bundle_chat_utils + +from .tree import _plain_positive_int as _bundle_tree + +from .schedules import cosine_schedule_2 as _bundle_schedules + +from .radio_cls import ClsToken as _bundle_radio_cls + +from .padding import resolve_source_padding_vq_lock as _bundle_padding + +from .pmj import stratified_random as _bundle_pmj + +from .image_utils import pad_to_square_and_resize as _bundle_image_utils + +from .sampling import _load_prediction_image as _bundle_sampling + +from .markers import _validate_markers_per_row as _bundle_markers + +from .radio_patch import ViTPatchGenerator as _bundle_radio_patch + +from .vision import RadioBackbone as _bundle_vision + +from .sbd_attention import build_image_attention_doc_ids as _bundle_sbd_attention + +from .attention import fused_flex_attention as _bundle_attention + +from .vq import Codebook as _bundle_vq + +from .utils import pad_along_last_dim as _bundle_utils + +from .vq_model import nonlinearity as _bundle_vq_model + +from .projector import SquaredReLU as _bundle_projector + +from .bridge import PackedLinearImageCodec as _bundle_bridge +from .token_constants import IMAGE_PAD_TOKEN_INDEX as _bundle_token_constants diff --git a/padding.py b/padding.py new file mode 100644 index 0000000000000000000000000000000000000000..55862f5d47e14b45d93f0ba4d4327ef9ee7b573e --- /dev/null +++ b/padding.py @@ -0,0 +1,90 @@ + +from __future__ import annotations +import numpy as np +import torch + +def resolve_source_padding_vq_lock(model_config, override=None, *, has_edit_image): + if not isinstance(has_edit_image, bool): + raise TypeError('has_edit_image must be boolean') + if override is None: + resolved = getattr(model_config, 'lock_source_padding_vq', False) + if resolved is None: + resolved = False + if not isinstance(resolved, bool): + raise TypeError('config.lock_source_padding_vq must be boolean or null') + if resolved and (not has_edit_image): + return False + return resolved + if not isinstance(override, bool): + raise TypeError('lock_source_padding_vq override must be boolean or null') + if override and (not has_edit_image): + raise ValueError('lock_source_padding_vq requires an edit_image') + return override + +def _resolve_source_native_size(value, *, fallback): + resolved = fallback if value is None else value + if not isinstance(resolved, (tuple, list)) or len(resolved) != 2 or any((isinstance(item, bool) or not isinstance(item, (int, np.integer)) or int(item) < 1 for item in resolved)): + raise ValueError('edit_source_native_size must contain positive integer width and height') + return (int(resolved[0]), int(resolved[1])) + +def _source_padding_vq_mask(source_native_size, raw_grid_shape, *, device): + (width, height) = _resolve_source_native_size(source_native_size, fallback=source_native_size) + if not isinstance(raw_grid_shape, (tuple, list)) or len(raw_grid_shape) != 2 or any((isinstance(item, bool) or not isinstance(item, (int, np.integer)) or int(item) < 1 for item in raw_grid_shape)): + raise ValueError('raw_grid_shape must contain positive integer height and width') + (grid_height, grid_width) = (int(value) for value in raw_grid_shape) + if grid_height != grid_width: + raise ValueError('source-padding VQ locking requires a square raw VQ grid') + side = max(width, height) + left = round((side - width) * 0.5) + top = round((side - height) * 0.5) + right = left + width + bottom = top + height + columns = torch.arange(grid_width, dtype=torch.long, device=device) + rows = torch.arange(grid_height, dtype=torch.long, device=device) + horizontally_outside = ((columns + 1) * side <= left * grid_width) | (columns * side >= right * grid_width) + vertically_outside = ((rows + 1) * side <= top * grid_height) | (rows * side >= bottom * grid_height) + return (vertically_outside[:, None] | horizontally_outside[None, :]).reshape(1, -1) + +def _augment_source_padding_vq_mask(state, raw_padding_mask, content_positions): + if not torch.is_tensor(state) or state.ndim != 2: + raise ValueError('generation state must have shape [batch, tokens]') + if not torch.is_tensor(raw_padding_mask) or raw_padding_mask.dtype is not torch.bool or raw_padding_mask.ndim != 2 or (raw_padding_mask.shape[0] != state.shape[0]) or (raw_padding_mask.device != state.device): + raise TypeError('raw_padding_mask must be device-local bool with the state batch size') + if not torch.is_tensor(content_positions) or content_positions.ndim != 1 or content_positions.dtype is not torch.long or (content_positions.device != state.device) or (content_positions.numel() != raw_padding_mask.shape[1]): + raise TypeError('content_positions must be a device-local long vector covering raw cells') + if bool((content_positions < 0).any()) or bool((content_positions >= state.shape[1]).any()): + raise ValueError('content_positions contains an out-of-range state index') + locked_mask = torch.zeros_like(state, dtype=torch.bool) + locked_mask[:, content_positions] = raw_padding_mask + return locked_mask + +def _prefill_source_padding_vq(state, source_codes, raw_padding_mask, content_positions): + if not torch.is_tensor(state) or state.ndim != 2: + raise ValueError('generation state must have shape [batch, tokens]') + if not torch.is_tensor(source_codes) or source_codes.ndim != 2 or source_codes.dtype != state.dtype or (source_codes.device != state.device): + raise TypeError('source_codes must match the state integer dtype and device') + if source_codes.shape != raw_padding_mask.shape: + raise TypeError('raw_padding_mask must be bool and match source_codes') + locked_mask = _augment_source_padding_vq_mask(state, raw_padding_mask, content_positions) + locked_codes = torch.zeros_like(state) + locked_codes[:, content_positions] = source_codes + prefilled = state.clone() + prefilled[locked_mask] = locked_codes[locked_mask] + return (prefilled, locked_mask, locked_codes) + +def _restore_source_padding_vq(state, locked_mask, locked_codes): + if locked_mask is None: + return state + if not torch.is_tensor(state) or state.ndim != 2 or (not torch.is_tensor(locked_mask)) or (locked_mask.dtype is not torch.bool) or (locked_mask.shape != state.shape) or (locked_mask.device != state.device) or (not torch.is_tensor(locked_codes)) or (locked_codes.shape != state.shape) or (locked_codes.dtype != state.dtype) or (locked_codes.device != state.device): + raise TypeError('locked source-padding tensors must align with sampler state') + restored = state.clone() + restored[locked_mask] = locked_codes[locked_mask] + return restored + +def _assert_source_padding_vq_locked(state, locked_mask, locked_codes): + if locked_mask is None: + return + if not torch.is_tensor(locked_mask) or locked_mask.dtype is not torch.bool or locked_mask.shape != state.shape or (not torch.is_tensor(locked_codes)) or (locked_codes.shape != state.shape): + raise TypeError('locked source-padding tensors must align with sampler state') + if not torch.equal(state[locked_mask], locked_codes[locked_mask]): + raise RuntimeError('a locked source-padding VQ code changed during sampling') diff --git a/pca_tree.pt b/pca_tree.pt new file mode 100644 index 0000000000000000000000000000000000000000..359c858e71c07afb8c5022868729500721f62eb9 --- /dev/null +++ b/pca_tree.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b7ee94fbb10fd4146a4ad167b595b037e3f591eaa12ecf3f0b411c82384a714 +size 1052237 diff --git a/pmj.py b/pmj.py new file mode 100644 index 0000000000000000000000000000000000000000..b73a4673588db299db9e9711c2dfaa8d4e914c09 --- /dev/null +++ b/pmj.py @@ -0,0 +1,67 @@ +# ADOBE CONFIDENTIAL +# Copyright 2025 Adobe +# All Rights Reserved. +# NOTICE: All information contained herein is, and remains +# the property of Adobe and its suppliers, if any. The intellectual +# and technical concepts contained herein are proprietary to Adobe +# and its suppliers and are protected by all applicable intellectual +# property laws, including trade secret and copyright laws. +# Dissemination of this information or reproduction of this material +# is strictly forbidden unless prior written permission is obtained +# from Adobe. + +from __future__ import annotations +from typing import List, Tuple, Optional +import random + +def stratified_random(n: int=64, seed: Optional[int]=None, shuffle_blocks: bool=True) -> List[int]: + if n <= 0 or n & n - 1 != 0: + raise ValueError('n must be a positive power of two (e.g., 64)') + rng = random.Random(seed) + occupied = [[False] * n for _ in range(n)] + seq: List[int] = [] + blocks: List[Tuple[int, int, int]] = [(0, 0, n)] + + def block_has_sample(x0: int, y0: int, size: int) -> bool: + for yy in range(y0, y0 + size): + row = occupied[yy] + for xx in range(x0, x0 + size): + if row[xx]: + return True + return False + + def place_random_in_block(x0: int, y0: int, size: int): + x = rng.randrange(x0, x0 + size) + y = rng.randrange(y0, y0 + size) + attempts = 0 + while occupied[y][x]: + x = rng.randrange(x0, x0 + size) + y = rng.randrange(y0, y0 + size) + attempts += 1 + if attempts > 10000: + raise RuntimeError('Too many attempts to place a sample; logic error?') + occupied[y][x] = True + seq.append(y * n + x) + size = n + while size > 1: + half = size // 2 + children: List[Tuple[int, int, int]] = [] + for (x0, y0, s) in blocks: + assert s == size + children.extend([(x0, y0, half), (x0 + half, y0, half), (x0, y0 + half, half), (x0 + half, y0 + half, half)]) + if shuffle_blocks: + rng.shuffle(children) + for (x0, y0, s) in children: + if not block_has_sample(x0, y0, s): + place_random_in_block(x0, y0, s) + blocks = children + size = half + remaining: List[int] = [] + for y in range(n): + for x in range(n): + if not occupied[y][x]: + remaining.append(y * n + x) + rng.shuffle(remaining) + seq.extend(remaining) + assert len(seq) == n * n, (len(seq), n * n) + return seq diff --git a/positions.py b/positions.py new file mode 100644 index 0000000000000000000000000000000000000000..4a4e3703c2798dbaefc98a9ac25316657567ca1a --- /dev/null +++ b/positions.py @@ -0,0 +1,74 @@ +# ADOBE CONFIDENTIAL +# Copyright 2025 Adobe +# All Rights Reserved. +# NOTICE: All information contained herein is, and remains +# the property of Adobe and its suppliers, if any. The intellectual +# and technical concepts contained herein are proprietary to Adobe +# and its suppliers and are protected by all applicable intellectual +# property laws, including trade secret and copyright laws. +# Dissemination of this information or reproduction of this material +# is strictly forbidden unless prior written permission is obtained +# from Adobe. + +# Copyright 2023 Haotian Liu +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from __future__ import annotations +from numbers import Integral +import torch +GENERATION_2D_SINCOS_SCALE = 0.0018 +GENERATION_2D_SINCOS_CANONICAL_CONTENT_SIZE = 32 + +def _generation_grid_shape(gen_shape, *, compressed: bool, encoder_compressed: bool, token_count: int) -> tuple[int, int]: + if not isinstance(gen_shape, (tuple, list)) or len(gen_shape) != 2: + raise ValueError('gen_enc_add_pos_emb requires gen_shape=(height, width)') + if any((isinstance(value, bool) or not isinstance(value, Integral) for value in gen_shape)): + raise TypeError('generation image height and width must be integers') + (height, width) = (int(value) for value in gen_shape) + if height < 1 or width < 1: + raise ValueError('generation image height and width must be positive') + for (stage_name, stage_enabled) in (('generation', compressed), ('generation-encoder', encoder_compressed)): + if not stage_enabled: + continue + if height % 2 or width % 2: + raise ValueError(f'{stage_name} compression requires an even image-token grid') + height //= 2 + width //= 2 + if height * width != token_count: + raise ValueError(f'generation positional grid does not match the transformer image tokens: {height}x{width} != {token_count}') + return (height, width) + +def _build_2d_sincos_position_embedding(height: int, width: int, embedding_dim: int, *, marker_column: bool=False, device: torch.device, dtype: torch.dtype) -> torch.Tensor: + if embedding_dim % 4: + raise ValueError('gen_enc_add_pos_emb requires d_model_gen divisible by 4') + if not isinstance(marker_column, bool): + raise TypeError('marker_column must be boolean') + content_width = width - int(marker_column) + if height < 1 or content_width < 1: + raise ValueError('generation positional grid must contain positive content height and width') + axis_frequency_count = embedding_dim // 4 + frequencies = torch.arange(axis_frequency_count, device=device, dtype=torch.float32) + frequencies = 10000.0 ** (-frequencies / axis_frequency_count) + canonical_size = float(GENERATION_2D_SINCOS_CANONICAL_CONTENT_SIZE) + column_stride = canonical_size / float(content_width) + row_stride = canonical_size / float(height) + columns = torch.arange(width, device=device, dtype=torch.float32) * column_stride + rows = torch.arange(height, device=device, dtype=torch.float32) * row_stride + column_angles = torch.outer(columns, frequencies) + row_angles = torch.outer(rows, frequencies) + column_embedding = torch.cat((column_angles.sin(), column_angles.cos()), dim=-1) + row_embedding = torch.cat((row_angles.sin(), row_angles.cos()), dim=-1) + position_embedding = torch.cat((column_embedding.unsqueeze(0).expand(height, -1, -1), row_embedding.unsqueeze(1).expand(-1, width, -1)), dim=-1) + return position_embedding.reshape(height * width, embedding_dim).to(dtype=dtype) diff --git a/projector.py b/projector.py new file mode 100644 index 0000000000000000000000000000000000000000..f4f630c3e779058da3ea8c7e8fcd1fdf711e81f1 --- /dev/null +++ b/projector.py @@ -0,0 +1,66 @@ + +from __future__ import annotations +import torch +import torch.nn as nn + +class SquaredReLU(nn.Module): + + def forward(self, x): + return torch.pow(torch.nn.functional.relu(x), 2) + +class RMSNorm(nn.Module): + + def __init__(self, hidden_size, eps=1e-05): + super().__init__() + self.weight = nn.Parameter(torch.ones(hidden_size)) + self.eps = eps + + def forward(self, hidden_states): + input_dtype = hidden_states.dtype + hidden_states = hidden_states.to(torch.float32) + variance = hidden_states.pow(2).mean(-1, keepdim=True) + hidden_states = hidden_states * torch.rsqrt(variance + self.eps) + return (self.weight.to(torch.float32) * hidden_states).to(input_dtype) + +class RadioHProjector(nn.Module): + + def __init__(self, config): + super().__init__() + self.downsample_ratio = 0.5 + self.ps_version = 'v2' + vit_hidden_size = 1280 + vision_projection_hidden_size = getattr(config, 'projector_hidden_size', config.hidden_size) + llm_hidden_size = config.hidden_size + in_dim = int(vit_hidden_size * (1 / self.downsample_ratio) ** 2) + self.mlp = nn.Sequential(RMSNorm(in_dim, eps=1e-05), nn.Linear(in_dim, vision_projection_hidden_size, bias=False), SquaredReLU(), nn.Linear(vision_projection_hidden_size, llm_hidden_size, bias=False)) + self.radio_multiply = True + + def pixel_shuffle(self, x, scale_factor=0.5): + (n, w, h, c) = x.size() + x = x.view(n, w, int(h * scale_factor), int(c / scale_factor)) + x = x.permute(0, 2, 1, 3).contiguous() + x = x.view(n, int(h * scale_factor), int(w * scale_factor), int(c / (scale_factor * scale_factor))) + if self.ps_version != 'v1': + x = x.permute(0, 2, 1, 3).contiguous() + return x + + def forward(self, image_features: torch.Tensor, image_grid_thw: torch.Tensor): + device = image_features.device + indices = [] + offset = 0 + for (_, H, W) in image_grid_thw.tolist(): + (H, W) = (int(H), int(W)) + (H2, W2) = (H // 2, W // 2) + k = torch.arange(H2 * W2, device=device) + if self.ps_version == 'v1': + (out_r, out_c) = (k % H2, k // H2) + else: + (out_r, out_c) = (k // W2, k % W2) + tl = offset + 2 * out_r * W + 2 * out_c + indices.append(torch.stack([tl, tl + 1, tl + W, tl + W + 1], dim=1).reshape(-1)) + offset += H * W + gather_idx = torch.cat(indices) + merged = image_features[gather_idx].view(-1, 4 * image_features.shape[-1]) + if self.radio_multiply: + return 0.01 * self.mlp(merged) + return self.mlp(merged) diff --git a/radio_cls.py b/radio_cls.py new file mode 100644 index 0000000000000000000000000000000000000000..0d07faf8abaff52d1281fe5808ce140af647890e --- /dev/null +++ b/radio_cls.py @@ -0,0 +1,44 @@ +# Copyright (c) 2023-2024, NVIDIA CORPORATION. All rights reserved. +# +# NVIDIA CORPORATION and its licensors retain all intellectual property +# and proprietary rights in and to this software, related documentation +# and any modifications thereto. Any use, reproduction, disclosure or +# distribution of this software and related documentation without an express +# license agreement from NVIDIA CORPORATION is strictly prohibited. +from __future__ import annotations +from typing import Optional +import torch +from torch import nn + +class ClsToken(nn.Module): + + def __init__(self, ndim: int, num_tokens: int=1, enabled: bool=True, register_multiple: Optional[int]=None, num_registers: Optional[int]=None): + super().__init__() + self.ndim = ndim + self.enabled = enabled + self.num_registers = 0 + self.num_tokens = num_tokens + if enabled: + if num_registers: + self.num_registers = num_registers + elif register_multiple: + self.num_registers = register_multiple - num_tokens % register_multiple + scale = ndim ** -0.5 + self.token = nn.Parameter(torch.randn(num_tokens + self.num_registers, ndim) * scale) + else: + self.token = None + self.num_patches = self.num_tokens + self.num_registers + + def disable(self): + self.token = None + self.enabled = False + + def forward(self, x: torch.Tensor): + if self.token is None: + return x + token = self.token.unsqueeze(0).expand(x.shape[0], -1, -1) + x = torch.cat([token, x], dim=1) + return x + + def no_weight_decay(self): + return ['token'] diff --git a/radio_patch.py b/radio_patch.py new file mode 100644 index 0000000000000000000000000000000000000000..7c21f8f478b450e9148e980608d3a1f3cb5bbb79 --- /dev/null +++ b/radio_patch.py @@ -0,0 +1,167 @@ +# Copyright (c) 2023-2024, NVIDIA CORPORATION. All rights reserved. +# +# NVIDIA CORPORATION and its licensors retain all intellectual property +# and proprietary rights in and to this software, related documentation +# and any modifications thereto. Any use, reproduction, disclosure or +# distribution of this software and related documentation without an express +# license agreement from NVIDIA CORPORATION is strictly prohibited. + +from __future__ import annotations +import math +from typing import Union, Tuple, Optional +import torch +import torch.nn.functional as F +from torch import nn +from einops import rearrange +from .radio_cls import ClsToken +input_dim_t = Union[int, Tuple[int, int]] + +class ViTPatchGenerator(nn.Module): + + def __init__(self, patch_size: int, embed_dim: int, input_dims: input_dim_t, abs_pos: bool=True, normalize_patches: bool=False, cls_token: bool=False, max_input_dims: Optional[input_dim_t]=None, pos_dropout: float=0.0, return_pos_enc: bool=False, num_cls_tokens: int=1, register_multiple: Optional[int]=None, num_registers: Optional[int]=None, patch_bias: bool=False, device=None, dtype=None): + super().__init__() + if isinstance(input_dims, int): + input_dims = (input_dims, input_dims) + if max_input_dims is None: + max_input_dims = input_dims + if isinstance(max_input_dims, int): + max_input_dims = (max_input_dims, max_input_dims) + max_input_dims = tuple((int(math.ceil(d / patch_size) * patch_size) for d in max_input_dims)) + self.cpe_mode = max_input_dims != input_dims + self.pos_dropout = pos_dropout + self.return_pos_enc = return_pos_enc + factory = dict(device=device, dtype=dtype) + self.patch_size = patch_size + self.abs_pos = abs_pos + self.embed_dim = embed_dim + self.num_rows = max_input_dims[0] // patch_size + self.num_cols = max_input_dims[1] // patch_size + self.input_dims = tuple((d // patch_size for d in input_dims)) + self.num_patches = self.num_rows * self.num_cols + self.max_input_dims = max_input_dims + self.im_to_patches = Im2Patches(patch_size) + self.embedder = ViTPatchLinear(patch_size, embed_dim, bias=patch_bias, **factory) + if abs_pos: + scale = embed_dim ** -0.5 + self.pos_embed = nn.Parameter(torch.randn(1, self.num_patches, embed_dim, **factory) * scale) + self.cls_token = ClsToken(embed_dim, num_tokens=num_cls_tokens, enabled=cls_token, register_multiple=register_multiple, num_registers=num_registers) + self.patch_normalizer = nn.LayerNorm(embed_dim) if normalize_patches else nn.Identity() + self.num_video_frames = None + + def forward(self, x: torch.Tensor) -> torch.Tensor: + patches = self.embed_patches(x) + (patches, pos_enc) = self.apply_pos_enc(patches, input_size=x.shape[2:]) + patches = self.cls_token(patches) + patches = self.patch_normalizer(patches) + if self.return_pos_enc: + return (patches, pos_enc) + return patches + + @property + def apply_cls_token(self): + return self.cls_token.enabled + + @property + def num_cls_tokens(self): + return self.cls_token.num_tokens + + @property + def num_cls_patches(self): + return self.cls_token.num_patches + + @property + def num_registers(self): + return self.cls_token.num_registers + + @property + def num_skip(self): + return self.num_cls_tokens + self.num_registers + + def no_weight_decay(self): + return ['pos_embed'] + + def _load_embed(self, src_embed: torch.Tensor, targ_embed: nn.Parameter): + if src_embed.shape != targ_embed.shape: + src_size = int(math.sqrt(src_embed.shape[1])) + assert src_size ** 2 == src_embed.shape[1], 'Unable to interpolate non-square embedding' + src_embed = rearrange(src_embed, 'b (h w) c -> b c h w', h=src_size, w=src_size) + src_embed = F.interpolate(src_embed, size=(self.num_rows, self.num_cols), mode='bicubic', align_corners=True, antialias=False) + src_embed = rearrange(src_embed, 'b c h w -> b (h w) c') + targ_embed.data.copy_(src_embed) + + def _load_projection(self, src_proj_weight: torch.Tensor, targ_proj_weight: torch.Tensor): + if src_proj_weight.shape != targ_proj_weight.shape: + src_patch_size = int(math.sqrt(src_proj_weight.shape[1] // 3)) + assert src_patch_size ** 2 * 3 == src_proj_weight.shape[1], 'Unable to interpolate non-square patch size' + src_proj_weight = rearrange(src_proj_weight, 'b (c h w) -> b c h w', c=3, h=src_patch_size, w=src_patch_size) + src_proj_weight = F.interpolate(src_proj_weight, size=(self.patch_size, self.patch_size), mode='bicubic', align_corners=True, antialias=False) + src_proj_weight = rearrange(src_proj_weight, 'b c h w -> b (c h w)') + targ_proj_weight.data.copy_(src_proj_weight) + + def embed_patches(self, x: torch.Tensor) -> torch.Tensor: + patches = self.im_to_patches(x) + patches = self.embedder(patches) + return patches + + def apply_pos_enc(self, patches: torch.Tensor, patch_idxs: Optional[torch.Tensor]=None, input_size: Optional[Tuple[int, int]]=None) -> torch.Tensor: + if not self.abs_pos: + return patches + pos_enc = self.get_pos_enc(patches.shape[0], patch_idxs, input_size) + pos_enc_drop = pos_enc + return (patches + pos_enc_drop, pos_enc) + + def get_pos_enc(self, batch_size: int, patch_idxs: Optional[torch.Tensor]=None, input_size: Optional[Tuple[int, int]]=None) -> torch.Tensor: + if input_size is None: + input_dims = self.input_dims + else: + input_dims = tuple((d // self.patch_size for d in input_size)) + pos_embed = self._get_pos_embeddings(batch_size, input_dims) + if patch_idxs is None: + return pos_embed + exp_patch_idxs = patch_idxs.unsqueeze(-1).expand(-1, -1, pos_embed.shape[-1]) + pos_embed = torch.gather(pos_embed.expand(patch_idxs.shape[0], -1, -1), dim=1, index=exp_patch_idxs) + return pos_embed + + def _get_pos_embeddings(self, batch_size: int, input_dims: Tuple[int, int]): + if (self.num_rows, self.num_cols) == input_dims: + return self.pos_embed + pos_embed = self.pos_embed.reshape(1, self.num_rows, self.num_cols, -1).permute(0, 3, 1, 2) + + def window_select(pos_embed): + if input_dims[0] < pos_embed.shape[-2]: + pos_embed = pos_embed[..., :input_dims[0], :] + if input_dims[1] < pos_embed.shape[-1]: + pos_embed = pos_embed[..., :, :input_dims[1]] + return pos_embed + if self.cpe_mode: + max_dim = max(input_dims) + pos_embed = F.interpolate(pos_embed.float(), size=(max_dim, max_dim), align_corners=False, mode='bilinear').to(pos_embed.dtype) + pos_embed = window_select(pos_embed) + else: + pos_embed = window_select(pos_embed) + if pos_embed.shape[-2:] != input_dims: + pos_embed = F.interpolate(pos_embed.float(), size=input_dims, align_corners=False, mode='bilinear').to(pos_embed.dtype) + pos_embed = pos_embed.flatten(2).permute(0, 2, 1) + return pos_embed + +class Im2Patches(nn.Module): + + def __init__(self, patch_size: int): + super().__init__() + self.patch_size = patch_size + + def forward(self, x: torch.Tensor) -> torch.Tensor: + if self.patch_size == 1: + patches = x.flatten(2) + patches = patches.permute(0, 2, 1) + return patches + py = x.shape[-2] // self.patch_size + px = x.shape[-1] // self.patch_size + patches = rearrange(x, 'b c (py yy) (px xx) -> b (py px) (c yy xx)', py=py, yy=self.patch_size, px=px, xx=self.patch_size) + return patches + +class ViTPatchLinear(nn.Linear): + + def __init__(self, patch_size: int, embed_dim: int, bias: bool=False, **factory): + super().__init__(3 * patch_size ** 2, embed_dim, bias=bias, **factory) + self.patch_size = patch_size diff --git a/refinement.py b/refinement.py new file mode 100644 index 0000000000000000000000000000000000000000..31d154ca6c8129ccd56944239e3d8628f98b2a50 --- /dev/null +++ b/refinement.py @@ -0,0 +1,19 @@ + +from __future__ import annotations +from numbers import Integral +import torch + +def _validate_refinement_steps(value: object, *, source: str) -> int: + if isinstance(value, bool) or not isinstance(value, Integral): + raise TypeError(f'{source} must be a positive integer') + value = int(value) + if value < 1: + raise ValueError(f'{source} must be a positive integer') + return value + +def refinement_mask_fraction(ages: torch.Tensor, *, steps: int) -> torch.Tensor: + steps = _validate_refinement_steps(steps, source='steps') + if ages.dtype == torch.bool or ages.is_floating_point(): + raise TypeError('ages must use an integer dtype') + effective_age = ages.clamp(min=0, max=steps).to(dtype=torch.float32) + return (1.0 - effective_age / steps).mean(dim=-1) diff --git a/release_manifest.json b/release_manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..d58a61c4b468c64fe14398043ebca0732ff9a142 --- /dev/null +++ b/release_manifest.json @@ -0,0 +1,54 @@ +{ + "revision": "generation-only-step-10000", + "sha256": { + ".gitattributes": "50360a3ded843d95a2667395b3131f6d499b905d941331a4e84e7f0351769023", + ".gitignore": "e1900f365321556fa39bfe45527be4e15a1de7fe96b71ca8d294b690a1026a8d", + "README.md": "50038fb0e318e290c123382d4f6284ce80699bd60d7fabf0ee6db27419e12b07", + "attention.py": "5617bdd53aaa0d6f0e79745c5e811f36335a0c1f458218ab1fc02c4606d79f37", + "bridge.py": "0e20f9ad1c81912489dd7c5063507b7fb72ead7d1895467442277e06ee3bc846", + "chat_template.jinja": "b80135b85225bef1a5129eb2068d0d5df4975edf4ffb102a50de1fb069c9e78a", + "chat_utils.py": "0683087dbadea1ce510d77816eed8ccfba998aa6c64833fd93c4e46c6edbc734", + "config.json": "9dd7b2514b477712b9e023dec3f0d3749e8ccd9e27869cb4bf70fe9a8097fff0", + "configuration_nlduni.py": "fa6d15657c9fadeb1f2bc142ea33b73c225374d5646565a077b43d6fd3e25f38", + "constants.py": "1149095b05a6da911aae371d4899edcaba154352dc30efd2d5b72bb8767f785f", + "conversation.py": "5e11082e6f5201978a0eb99523120d1272a6e0b311bfa75b273fa02d927d1002", + "core.py": "4dad9ea004daa31236fb1eb628d2ad1b46d310914114bd93c401fd41161d5c66", + "generation_config.json": "35e13707e4e588edaa4d7c12dff1d9ccd49efe0e07c99e3392c42b88f9398faa", + "image_utils.py": "62755735051898eb909937712e0badcf6614d30405ea51d7d33522f484a319d1", + "inference.py": "37e0b19b3d003621a620b226d6a9d39725e9450a7a6431d992ceea49cb2b92b2", + "markers.py": "17f69056ff9db548dc223971021a91444ecaef3257df5b5f30fd2e5230bbadc7", + "model-00001-of-00008.safetensors": "c4d490e010475dde3e2b57de64261a56d6bf8e9ca7d077754913fd628f7de5f6", + "model-00002-of-00008.safetensors": "933c4b2f44f9cd7be30ac7a40efbb3c58485aa9fbd6396245d8e2337faf5c5b3", + "model-00003-of-00008.safetensors": "6893a316ec6655eb3f518be0f3ae3dfc80621922741df7d14f12b3d9fd123bf6", + "model-00004-of-00008.safetensors": "858fab295f100b897634b72824d01e01f368dc1d500de03916854d7b2769986c", + "model-00005-of-00008.safetensors": "0d31608093622df48c2284fa310170f9a1bfd127d7108bdacbc8106fcf296691", + "model-00006-of-00008.safetensors": "4356b837d798b2d3250cd067c15b7f5d56fd19a8b8605bb107fb9d727c1726d0", + "model-00007-of-00008.safetensors": "003f5a6c4c727e5f560e16ad91ee2264ed138c7190108dfc9b68d1b8c8445545", + "model-00008-of-00008.safetensors": "299783fae2f540dfd723abbb09f8661b57122210d44b23a4c65f24b254542550", + "model.safetensors.index.json": "f2c7c2353c2a2eb70e7f80889c4fca85caceba217f1ccd9aa6647a7c644f6e30", + "modeling_nlduni.py": "d7a04c330d1cd14fc638297a61a674cfdc666d8eb5ee24c41625ff1875040021", + "padding.py": "53ba2cc8b37eec837b4fd0a3932a5f2d55051bbe5796c848921ce95171336dce", + "pca_tree.pt": "4b7ee94fbb10fd4146a4ad167b595b037e3f591eaa12ecf3f0b411c82384a714", + "pmj.py": "33920c0bb48ab99bafb3dde99f0e44eff7e6004596777d2e09ec4d07e039bfa3", + "positions.py": "3e0ee23d4bd59059690bc9962fa0948c18f52af13c1295d5322309ba6472f0c4", + "projector.py": "b402ae3a9ca1d7867c139e3180f905411d4932901cd7ce19910865db8709691f", + "radio_cls.py": "6c04ff0ac364676b7ca2610d8103c53f3b7a26d5d4b6cfd593415556e721c710", + "radio_patch.py": "41d63126936a4691d28979f9bb7a7b35c2daa9f10c8e98ef909656930ec861c2", + "refinement.py": "b69a5bcfec2ecdbc97d5b5796dbcd6dfa83d29fe8b835017a18b2e96596891ca", + "requirements.txt": "a3725eb78eb9ed882a46b2b0370f4b93eafc93e59d6e8db38698963016b9405d", + "sampling.py": "6111a83d7d737eab9c702af281f209316e7458a785d0102c4f2bf3fd4e315491", + "sbd_attention.py": "828f02ae59d430485507b00c76d0b85158dfa10dfea7888519ec80522798a134", + "schedules.py": "243d3fa6924f11397df422c9e50dc37bd4e85d882c518c3a4a75545a3b1a367e", + "special_tokens_map.json": "57cc1f9b3ea2a038d1107bdf4f4b3c45b5ed9ce175e7410d70070e07a3f35a76", + "token_constants.py": "6515bb3f128730edcd02907cf49334ac9cae2ed373611b0a260b3bdf4ff678f1", + "tokenizer.json": "f9ad3482369ba91711ff939f9eeb761d618b3157fcbfc0715f18e34b918eca97", + "tokenizer_config.json": "5eb18e9f9e0653added53a9200a8d38fdbc1d0cdb4602f8e354f30391f8cb1f3", + "tree.py": "b22d647f4d6def2a8df6f1b336db0b03a9cf0131dccf124f949cfa704e227c81", + "tree_metadata.json": "16ccc59386d2d73094ba9b2562feff45b7a171f4f37053f9b5ed756d5c44e3d5", + "utils.py": "6a0036a6451918de85fcc9cc3a82f5c195227bda5df58103156dd9941f6da0bc", + "vision.py": "375c9cd952135701b71b35581a72c46cc58bb9701392343f9817f9cf1e68bb72", + "vq.py": "3029623e15687b8fe95594b25410cfa2c0a82eebaa821b6ab380d1dcc394e537", + "vq_model.py": "0f28d77789671b9c05402de7dca7bfccaa57264336ba778a76f3b59966baced7", + "weights_manifest.json": "fe3af69d1ff222d3de89efd6305fcb3d396204b3c208491866d4da1137bea6f9" + } +} diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..bd41be4c7e3cd1c97bf98dac667d4b01eb275fe5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,13 @@ +# Python 3.13, CUDA 12.6; install torch before building flash-attn. +torch==2.7.0 +torchvision==0.22.0 +transformers==4.57.6 +huggingface-hub==0.36.2 +tokenizers==0.22.2 +accelerate==1.6.0 +safetensors==0.7.0 +timm==1.0.26 +einops==0.6.1 +numpy==2.4.3 +pillow==12.1.1 +tqdm>=4.66,<5 diff --git a/sampling.py b/sampling.py new file mode 100644 index 0000000000000000000000000000000000000000..49ddff15c42e497b3ccd8fcbe3de1e259259e689 --- /dev/null +++ b/sampling.py @@ -0,0 +1,831 @@ +# ADOBE CONFIDENTIAL +# Copyright 2025 Adobe +# All Rights Reserved. +# NOTICE: All information contained herein is, and remains +# the property of Adobe and its suppliers, if any. The intellectual +# and technical concepts contained herein are proprietary to Adobe +# and its suppliers and are protected by all applicable intellectual +# property laws, including trade secret and copyright laws. +# Dissemination of this information or reproduction of this material +# is strictly forbidden unless prior written permission is obtained +# from Adobe. + + +from __future__ import annotations +import os +from .image_utils import compute_num_image_tokens, fix_one_prompt, process_images, tokenizer_image_token +from .token_constants import IMAGE_TOKEN_INDEX, IMAGE_PAD_TOKEN_INDEX +from .conversation import conv_templates +from PIL import Image +import copy +import functools +import math +import torch +from .schedules import cosine_schedule_2, logit_normal_schedule +import time +from .chat_utils import wte as wte_ministral +from .chat_utils import get_logits as get_logits_ministral +from .chat_utils import _resolve_shift_sbd_logits as resolve_ministral_shift_sbd_logits +from .sbd_attention import generated_image_attention_window +from tqdm.auto import tqdm +import numpy as np +import torch.distributions as dists +import torch.nn.functional as F +from .image_utils import pad_to_square_and_resize +from .utils import pad_along_last_dim +from .padding import _assert_source_padding_vq_locked, _prefill_source_padding_vq, _restore_source_padding_vq, _resolve_source_native_size, _source_padding_vq_mask, resolve_source_padding_vq_lock +from .refinement import refinement_mask_fraction +from .markers import append_image_row_markers, augmented_image_shape, image_fixed_prefix_token_count, image_generation_special_ids, image_row_marker_count, image_row_markers_enabled, resolve_generation_skip_down_sample, split_generation_fixed_prefix, strip_image_row_markers, validate_image_fixed_prefix_support, validate_image_row_marker_support +from .tree import BalancedSemanticTree, advance_revisable_semantic_tree, build_semantic_tree_embeddings, production_semantic_tree_contract, resolve_semantic_tree_atomic_block_size, resolve_semantic_tree_refinement_gap, resolve_semantic_tree_steps, semantic_tree_activation_counts, semantic_tree_decode_schedule, semantic_tree_noise_for_ages, semantic_tree_refinement_due +from .pmj import stratified_random + +def _load_prediction_image(image): + if isinstance(image, (str, os.PathLike)): + image = Image.open(image) + return image.convert('RGB') + +def _validate_text_to_image_batch_size(batch_size): + if batch_size != 1: + raise ValueError(f'text_to_image currently supports batch_size=1 only; got {batch_size}') + +def _prediction_constant_version(model_config): + model_type = str(getattr(model_config, 'model_type', '')) + return 'ministral' + return None + +def _move_image_to_device(value, *, device, dtype): + if torch.is_tensor(value): + return value.to(device=device, dtype=dtype) + if isinstance(value, tuple): + if not value: + return value + return (_move_image_to_device(value[0], device=device, dtype=dtype), *value[1:]) + if isinstance(value, list): + return [_move_image_to_device(item, device=device, dtype=dtype) for item in value] + raise TypeError(f'Unsupported processed image type: {type(value).__name__}') + +def _tokenize_prediction_prompt_with_images(prompt, tokenizer, model, image_processor, image_tensor): + image_aspect_ratio = 'radio_h_native' + native_image_token_shapes = None + if 'native' in image_aspect_ratio: + native_images = image_tensor if isinstance(image_tensor, list) else [image_tensor] + native_image_token_shapes = [compute_num_image_tokens([item], image_aspect_ratio, image_processor) for item in native_images] + prompt = fix_one_prompt(prompt, model.config, native_image_token_shapes) + input_ids = tokenizer_image_token(prompt, tokenizer, IMAGE_TOKEN_INDEX, return_tensors='pt', constant_version=_prediction_constant_version(model.config)) + if native_image_token_shapes is not None: + expected_slots = sum((math.prod(shape) for shape in native_image_token_shapes)) + actual_slots = int(input_ids.eq(IMAGE_PAD_TOKEN_INDEX).sum().item()) + if actual_slots != expected_slots: + raise RuntimeError(f'Native-image T2I prompt/token mismatch: expected {expected_slots} image slots but tokenization produced {actual_slots}.') + return (prompt, input_ids) + +def _transformer_image_token_count(model, raw_token_count, gen_shape): + raw_token_count = int(raw_token_count) + raw_grid_tokens = math.prod(gen_shape) + if raw_token_count != raw_grid_tokens: + raise ValueError(f'Raw generation token count must match gen_shape: {raw_token_count} != {raw_grid_tokens}') + generation_model = model.get_model() + skip_down_sample = resolve_generation_skip_down_sample(generation_model.config, runtime_value=False) + compression_active = (getattr(generation_model, 'packed_image_codec', None) is not None or getattr(generation_model, 'downsample_gen', None) is not None) and (not skip_down_sample) + if not compression_active: + return raw_token_count + (height, width) = (int(value) for value in gen_shape) + return height // 2 * (width // 2) + +def gumbel_noise(t, generator=None): + noise = torch.zeros_like(t).uniform_(0, 1, generator=generator) + return -torch.log(-torch.log(noise)) + +def top_k_top_p_filtering(logits: torch.Tensor, top_k: int=0, top_p: float=1.0, filter_value: float=-1e309, min_tokens_to_keep: int=1) -> torch.Tensor: + if top_k > 0: + top_k = min(max(top_k, min_tokens_to_keep), logits.size(-1)) + indices_to_remove = logits < torch.topk(logits, top_k)[0][..., -1, None] + logits[indices_to_remove] = filter_value + if top_p < 1.0: + (sorted_logits, sorted_indices) = torch.sort(logits, descending=True) + cumulative_probs = torch.cumsum(F.softmax(sorted_logits, dim=-1), dim=-1) + sorted_indices_to_remove = cumulative_probs > top_p + if min_tokens_to_keep > 1: + sorted_indices_to_remove[..., :min_tokens_to_keep] = 0 + sorted_indices_to_remove[..., 1:] = sorted_indices_to_remove[..., :-1].clone() + sorted_indices_to_remove[..., 0] = 0 + indices_to_remove = sorted_indices_to_remove.scatter(1, sorted_indices, sorted_indices_to_remove) + logits[indices_to_remove] = filter_value + return logits +from .constants import NemotronMinistralDLMConstant +NC = NemotronMinistralDLMConstant + +def _resolve_ministral_sbd_diffusion_sampling(model, requested): + model_module = model.module if hasattr(model, 'module') else model + config = model_module.config + if requested is None: + requested = True + enabled = bool(requested) + return enabled + +def _configure_ministral_t2i_attention(model_module, *, sbd_diffusion_sampling): + config = model_module.config + for layer in model_module.encoder.layers: + attention = layer.self_attn + if sbd_diffusion_sampling: + attention.set_attention_mode('sbd_block_diff', block_size=config.block_size) + else: + attention.mode = 'bidirectional' + if hasattr(attention, 'diffusion_lm'): + attention.diffusion_lm = True + +def _restore_attention_state_after_prediction(function): + + @functools.wraps(function) + def wrapped(model, *args, **kwargs): + model_module = model.module if hasattr(model, 'module') else model + encoder = getattr(model_module, 'encoder', None) + layers = getattr(encoder, 'layers', ()) + saved_states = [] + for layer in layers: + attention = layer.self_attn + saved_states.append((attention, getattr(attention, 'mode', None), getattr(attention, 'block_size', None), getattr(attention, 'diffusion_lm', None))) + try: + return function(model, *args, **kwargs) + finally: + for (attention, mode, block_size, diffusion_lm) in saved_states: + if hasattr(attention, 'mode'): + attention.mode = mode + if hasattr(attention, 'block_size'): + attention.block_size = block_size + if hasattr(attention, 'diffusion_lm'): + attention.diffusion_lm = diffusion_lm + return wrapped + +def _load_semantic_tree_path(model_config, *, cache_owner, device, vocab_size): + artifact_path = getattr(model_config, 'image_token_tree_path', None) + if not isinstance(artifact_path, str) or not artifact_path.strip(): + raise ValueError('semantic-tree token sampling requires config.image_token_tree_path') + artifact_path = os.path.abspath(os.path.expanduser(artifact_path.strip())) + cache_key = (artifact_path, str(torch.device(device)), int(vocab_size)) + cache_entry = cache_owner.__dict__.get('_semantic_tree_token_path_cache') + if isinstance(cache_entry, tuple) and len(cache_entry) == 2 and (cache_entry[0] == cache_key): + return cache_entry[1] + tree = BalancedSemanticTree.from_artifact(production_semantic_tree_contract(artifact_path), expected_vocab_size=int(vocab_size)).to(device) + cache_owner.__dict__['_semantic_tree_token_path_cache'] = (cache_key, tree) + return tree + +def _select_within_unstarted(scores, unstarted, count, *, multinomial=False): + if scores.ndim != 2 or unstarted.shape != scores.shape: + raise ValueError('scores and unstarted must have matching [batch, token] shapes') + if unstarted.dtype != torch.bool: + raise TypeError('unstarted must use torch.bool') + if scores.shape[0] != 1: + raise ValueError('delayed refinement selection currently requires batch size 1') + count = int(count.item()) if torch.is_tensor(count) else int(count) + eligible = unstarted[0].nonzero(as_tuple=False).flatten() + if count < 0 or count > eligible.numel(): + raise ValueError('selection count exceeds the unstarted-token set') + if count == 0: + return eligible[:0] + if count == eligible.numel(): + return eligible + eligible_scores = scores[0, eligible] + if multinomial: + local_indices = torch.multinomial(eligible_scores, num_samples=count) + else: + local_indices = torch.topk(eligible_scores, k=count).indices + return eligible[local_indices] + +def _combine_edit_guidance_logits(logits_full, logits_unconditional, logits_vq_dropped, *, guidance_scale, guidance_scale_image, edit_mode, guidance_mode='legacy', logits_image_only=None): + if guidance_mode == 'legacy': + if edit_mode in [0, 3]: + logits_cond = (1 + guidance_scale_image) * logits_full - guidance_scale_image * logits_vq_dropped + elif edit_mode in [1, 2]: + if guidance_scale_image <= -1: + raise ValueError('legacy edit modes 1/2 require guidance_scale_image > -1') + logits_cond = (logits_full + guidance_scale_image * logits_vq_dropped) / (1 + guidance_scale_image) + else: + raise ValueError(f'Unsupported edit_mode: {edit_mode}') + return (1 + guidance_scale) * logits_cond - guidance_scale * logits_unconditional + if guidance_mode == 'independent': + return logits_full + guidance_scale * (logits_full - logits_unconditional) + guidance_scale_image * (logits_full - logits_vq_dropped) + if guidance_mode == 'ip2p': + if logits_image_only is None: + raise ValueError('ip2p guidance requires image-only logits') + return logits_unconditional + (1 + guidance_scale_image) * (logits_image_only - logits_unconditional) + (1 + guidance_scale) * (logits_full - logits_image_only) + raise ValueError("edit_guidance_mode must be 'legacy', 'independent', or 'ip2p'") + +def _resolve_guidance_scale_schedule(guidance_scale_schedule, n_steps): + if guidance_scale_schedule is None: + return None + if not isinstance(guidance_scale_schedule, list): + raise TypeError('guidance_scale_schedule must be a list') + if isinstance(n_steps, bool) or not isinstance(n_steps, int) or n_steps < 1: + raise ValueError('guidance_scale_schedule requires a positive integer n_steps') + if len(guidance_scale_schedule) != n_steps: + raise ValueError(f'guidance_scale_schedule must contain exactly n_steps values: {len(guidance_scale_schedule)} != {n_steps}') + resolved = [] + for value in guidance_scale_schedule: + if isinstance(value, bool) or not isinstance(value, (int, float, np.integer, np.floating)): + raise TypeError('guidance_scale_schedule values must be real numbers') + value = float(value) + if not math.isfinite(value): + raise ValueError('guidance_scale_schedule values must be finite') + resolved.append(value) + return tuple(resolved) + +def _resolve_semantic_tree_guidance_scale_range(guidance_scale_range): + if guidance_scale_range is None: + return None + if not isinstance(guidance_scale_range, (list, tuple)): + raise TypeError('semantic_tree_guidance_scale_range must be a two-value sequence') + if len(guidance_scale_range) != 2: + raise ValueError('semantic_tree_guidance_scale_range must contain exactly two values') + resolved = [] + for value in guidance_scale_range: + if isinstance(value, bool) or not isinstance(value, (int, float, np.integer, np.floating)): + raise TypeError('semantic_tree_guidance_scale_range values must be real numbers') + value = float(value) + if not math.isfinite(value): + raise ValueError('semantic_tree_guidance_scale_range values must be finite') + resolved.append(value) + return tuple(resolved) + +def _resolve_semantic_tree_global_guidance_scale_range(guidance_scale_range): + if guidance_scale_range is None: + return None + if not isinstance(guidance_scale_range, (list, tuple)): + raise TypeError('semantic_tree_global_guidance_scale_range must be a two-value sequence') + if len(guidance_scale_range) != 2: + raise ValueError('semantic_tree_global_guidance_scale_range must contain exactly two values') + resolved = [] + for value in guidance_scale_range: + if isinstance(value, bool) or not isinstance(value, (int, float, np.integer, np.floating)): + raise TypeError('semantic_tree_global_guidance_scale_range values must be real numbers') + value = float(value) + if not math.isfinite(value): + raise ValueError('semantic_tree_global_guidance_scale_range values must be finite') + resolved.append(value) + return tuple(resolved) + +def _resolve_semantic_tree_cfg_noise_interval(noise_interval): + if noise_interval is None: + return None + if not isinstance(noise_interval, (list, tuple)): + raise TypeError('semantic_tree_cfg_noise_interval must be a two-value sequence') + if len(noise_interval) != 2: + raise ValueError('semantic_tree_cfg_noise_interval must contain exactly two values') + resolved = [] + for value in noise_interval: + if isinstance(value, bool) or not isinstance(value, (int, float, np.integer, np.floating)): + raise TypeError('semantic_tree_cfg_noise_interval values must be real numbers') + value = float(value) + if not math.isfinite(value): + raise ValueError('semantic_tree_cfg_noise_interval values must be finite') + resolved.append(value) + (minimum, maximum) = resolved + if not 0.0 <= minimum <= maximum <= 1.0: + raise ValueError('semantic_tree_cfg_noise_interval must satisfy 0 <= min_q <= max_q <= 1') + return (minimum, maximum) + +@torch.no_grad() +@_restore_attention_state_after_prediction +def text_to_image(model, prompt, confidence_policy='mmada', guidance_scale=5, n_steps=20, tokenizer=None, image_resolution=512, n_tokens=1024, shift=3, alg_temp=1, schedule='shift', min_temperature=0.01, dynamic_temperature=False, micro_cond='ORIGINAL WIDTH : 1024; ORIGINAL HEIGHT : 1024; TOP : 0; LEFT : 0; SCORE : 6.5', temperature=1, schedule_temp='linear', shift_alg=None, top_p=None, top_k=None, unmask_order=None, cfg_interval=[0, 1], edit_image=None, image_processor=None, lock_source_padding_vq=None, edit_source_native_size=None, guidance_scale_image=5, edit_guidance_mode='legacy', edit_mode=0, template='Generate an image with the caption:\n ', plan=None, conv_template='llada', use_cache=None, cache_prompt=None, causal_context=True, edit_threshold=-1, disable_tqdm=False, ministral_sbd_sampling=None, ministral_full_attention_approx=True, ministral_shift_sbd_logits=None, image_embedding_refinement_steps=None, loop_k=None): + _validate_text_to_image_batch_size(1) + lock_source_padding_vq = resolve_source_padding_vq_lock(model.get_model().config, lock_source_padding_vq, has_edit_image=edit_image is not None) + if edit_source_native_size is not None and (not lock_source_padding_vq): + raise ValueError('edit_source_native_size is valid only with lock_source_padding_vq=true') + semantic_tree_refinement_gap = resolve_semantic_tree_refinement_gap(0) + semantic_tree_atomic_block_size = resolve_semantic_tree_atomic_block_size(1) + if shift_alg is None: + shift_alg = shift + resolved_loop_k = None + guidance_scale_schedule = _resolve_guidance_scale_schedule(None, n_steps) + semantic_tree_guidance_scale_range = _resolve_semantic_tree_guidance_scale_range(None) + semantic_tree_global_guidance_scale_range = _resolve_semantic_tree_global_guidance_scale_range(None) + semantic_tree_cfg_noise_interval = _resolve_semantic_tree_cfg_noise_interval(None) + guidance_scale_modes = sum((value is not None for value in (None, None, None))) + if guidance_scale_modes > 1: + raise ValueError('guidance_scale_schedule, semantic_tree_guidance_scale_range, and semantic_tree_global_guidance_scale_range are mutually exclusive') + device = model.get_model().device + use_image_local_ar_diffusion = False + if isinstance(edit_image, (str, os.PathLike)): + edit_image = _load_prediction_image(edit_image) + source_native_size = None + if lock_source_padding_vq: + source_native_size = _resolve_source_native_size(edit_source_native_size, fallback=edit_image.size) + conv_template = conv_template + use_mdm_prime = False + use_semantic_tree_tokens = True + semantic_tree_noise_cfg_requested = any((value is not None for value in (None, None, None))) + if semantic_tree_noise_cfg_requested: + if edit_image is not None: + raise NotImplementedError('semantic-tree noise-dependent CFG currently supports T2I only') + image_embedding_refinement_steps = resolve_semantic_tree_steps(model.get_model().config, image_embedding_refinement_steps) + use_refinement_state = True + reserve_token = '<|reserved_token_5|>' + reserve_token_2 = '<|reserved_token_6|>' + reserve_id = 126089 + reserve_id2 = 126090 + INT_MAX = 1000000 + is_emu3 = 'emu3' in 'emu3'.lower() + use_image_row_markers = image_row_markers_enabled(model.get_model().config) + fixed_prefix_count = image_fixed_prefix_token_count(model.get_model().config) + if fixed_prefix_count: + validate_image_fixed_prefix_support(model.get_model()) + row_marker_id = None + image_end_id = None + markers_per_row = None + skip_down_sample = resolve_generation_skip_down_sample(model.get_model().config, runtime_value=False) + (row_marker_id, _, image_end_id) = validate_image_row_marker_support(model.get_model(), skip_down_sample=skip_down_sample) + markers_per_row = image_row_marker_count(model.get_model(), skip_down_sample=skip_down_sample) + image_discrete_path = 'tree_metric' + use_tree_metric_path = False + use_affine_mixture_path = False + use_endpoint_probability_path = False + config = model.get_model().config + semantic_block_size = getattr(config, 'block_size', None) + if isinstance(semantic_block_size, bool) or not isinstance(semantic_block_size, int) or semantic_block_size < 1: + raise NotImplementedError('semantic_tree_token_diffusion requires a positive integer block_size') + if ministral_sbd_sampling is False: + raise NotImplementedError('semantic_tree_token_diffusion cannot disable checkpoint-native Ministral SBD sampling') + semantic_edit_controls_requested = edit_threshold > 0 + if semantic_edit_controls_requested: + raise NotImplementedError('semantic_tree_token_diffusion does not support post-commit edit/refinement controls') + codebook_size = int(model.get_model().vqvae.config.num_vq_embeddings) + (_, img_mask_id, _) = image_generation_special_ids(codebook_size) + txt_mask_id = 126336 + eot_id = 126384 + model_type = 'llada' + model_type = 'ministral' + is_ministral = True + use_ministral_sbd_sampling = False + _wte = wte_ministral + img_begin = NC.gen_im_start_token + img_end = NC.gen_im_end_token + if use_cache is None: + use_cache = True + if cache_prompt is None: + cache_prompt = True + conv_template = 'ministral' + reserve_id = NC.reserve_id + reserve_id2 = NC.reserve_id_enc + reserve_token = NC.reserve_id_token + reserve_token_2 = NC.reserve_id_token_enc + img_begin = NC.gen_im_start_token + img_end = NC.gen_im_end_token + txt_mask_id = NC.mask_id + eot_id = NC.eos_id + _wte = wte_ministral + model_module = model.module if hasattr(model, 'module') else model + use_ministral_sbd_sampling = _resolve_ministral_sbd_diffusion_sampling(model_module, ministral_sbd_sampling) + resolve_ministral_shift_sbd_logits(model_module, ministral_shift_sbd_logits) + _configure_ministral_t2i_attention(model_module, sbd_diffusion_sampling=use_ministral_sbd_sampling) + gen_shape_map = {1024: (64, 64), 512: (32, 32), 256: (16, 16)} + content_gen_shape = gen_shape_map[image_resolution] + if int(n_tokens) != math.prod(content_gen_shape): + raise ValueError(f'Raw generation token count must match the content image grid: {n_tokens} != {math.prod(content_gen_shape)}') + gen_shape = augmented_image_shape(content_gen_shape, markers_per_row=markers_per_row) + micro_cond = micro_cond + if edit_image is not None: + micro_cond = '' + prompt = f'{prompt} {micro_cond}' + question = template.replace('', prompt) + image_tokens_txt = _transformer_image_token_count(model, math.prod(gen_shape), gen_shape) + n_tokens_txt = image_tokens_txt + fixed_prefix_count + if plan is None: + plan = '' + edit_source_vq_codes = None + if edit_image is not None: + image = edit_image + image_tensor = process_images([image], image_processor, model.config) + image_tensor = _move_image_to_device(image_tensor, device=model.device, dtype=torch.bfloat16) + modalities = ['image'] + image_sizes = [image.size] + conv = copy.deepcopy(conv_templates[conv_template]) + image = image.convert('RGB') + image_1024 = pad_to_square_and_resize(image, image_resolution) + (enc_latents, _gen_shape) = model.encode_image_gen(model.model.image_processor_gen.preprocess(image_1024).to(model.device, model.dtype), enc=True) + if lock_source_padding_vq: + if tuple((int(value) for value in _gen_shape)) != tuple(content_gen_shape): + raise RuntimeError(f'edit source VQ grid does not match generation grid: {tuple(_gen_shape)} != {tuple(content_gen_shape)}') + if enc_latents.ndim != 2 or tuple(enc_latents.shape) != (1, n_tokens): + raise RuntimeError(f'edit source VQ codes must have shape [1, {n_tokens}], got {tuple(enc_latents.shape)}') + edit_source_vq_codes = enc_latents.detach().clone() + enc_embeddings = model.model.call_gen_embedding(enc_latents, _gen_shape, enc=True) + conv.append_message(conv.roles[0], f' {reserve_token_2 * enc_embeddings.shape[1]}\n {prompt} ') + conv.append_message(conv.roles[1], f'Sure {plan}{img_begin}{reserve_token * n_tokens_txt}{img_end}') + prompt_question = conv.get_prompt() + prompt_question.removesuffix('<|start_header_id|>assistant<|end_header_id|>\n\n') + (prompt_question, input_ids) = _tokenize_prediction_prompt_with_images(prompt_question, tokenizer, model, image_processor, image_tensor) + input_ids = input_ids.unsqueeze(0).to(model.device) + attention_mask = None + position_ids = None + image_sizes = [image.size] + modalities = ['image'] + (inputs, position_ids, attention_mask, _, inputs_embeds, _, raw_input_ids) = model.prepare_inputs_labels_for_multimodal(input_ids, position_ids, attention_mask, None, None, image_tensor, modalities, image_sizes=image_sizes, return_inputs=True) + expected_encoder_slots = int(enc_embeddings.shape[0] * enc_embeddings.shape[1]) + actual_encoder_slots = int(raw_input_ids.eq(reserve_id2).sum().item()) + if actual_encoder_slots != expected_encoder_slots: + raise RuntimeError(f'T2I edit encoder prompt/token mismatch: expected {expected_encoder_slots} slots but tokenization produced {actual_encoder_slots}.') + inputs_embeds[raw_input_ids == reserve_id2] = 0 + _enc = pad_along_last_dim(enc_embeddings, inputs_embeds.shape[-1]) + inputs_embeds[raw_input_ids == reserve_id2] = _enc.flatten(0, 1) + is_eot = torch.where(raw_input_ids == eot_id)[1] + assert len(is_eot) == 3 + prompt_cutoff = is_eot[1] + is_prompt = torch.zeros_like(raw_input_ids, dtype=torch.bool) + is_prompt[:, :prompt_cutoff + 1] = True + is_gen = raw_input_ids == reserve_id + is_gen_enc = raw_input_ids == reserve_id2 + else: + conv = copy.deepcopy(conv_templates[conv_template]) + conv.append_message(conv.roles[0], question) + conv.append_message(conv.roles[1], f'Sure {plan}{img_begin}{reserve_token * n_tokens_txt}{img_end}') + prompt_question = conv.get_prompt() + prompt_question.removesuffix('<|start_header_id|>assistant<|end_header_id|>\n\n') + input_ids = tokenizer_image_token(prompt_question, tokenizer, IMAGE_TOKEN_INDEX, return_tensors='pt').unsqueeze(0).to(device) + is_gen = input_ids == reserve_id + is_gen_enc = input_ids == reserve_id2 + is_eot = torch.where(input_ids == eot_id)[1] + assert len(is_eot) == 3 + prompt_cutoff = is_eot[1] + is_prompt = torch.zeros_like(input_ids, dtype=torch.bool) + is_prompt[:, :prompt_cutoff + 1] = True + raw_input_ids = input_ids + (inputs_embeds, _) = _wte(model.model, raw_input_ids) + generation_placeholder_mask = is_gen + generated_prompt_slots = int(generation_placeholder_mask.sum().item()) + if generated_prompt_slots != n_tokens_txt: + raise RuntimeError(f'T2I prompt/token mismatch: expected {n_tokens_txt} generated-image slots but tokenization produced {generated_prompt_slots}.') + (fixed_prefix_mask, is_gen, fixed_prefix_ids) = split_generation_fixed_prefix(generation_placeholder_mask, codebook_size=int(model.get_model().vqvae.config.num_vq_embeddings), count=fixed_prefix_count) + if int(is_gen.sum().item()) != image_tokens_txt: + raise RuntimeError(f'T2I image-token mismatch after removing the fixed prefix: expected {image_tokens_txt}, found {int(is_gen.sum().item())}.') + generation_attention_mask = fixed_prefix_mask | is_gen + if fixed_prefix_ids.numel(): + fixed_prefix_embeddings = model.get_model().call_gen_fixed_token_embedding(fixed_prefix_ids) + inputs_embeds[fixed_prefix_mask] = pad_along_last_dim(fixed_prefix_embeddings, inputs_embeds.shape[-1]).reshape(-1, inputs_embeds.shape[-1]) + if plan: + is_gen_min = torch.where(raw_input_ids == reserve_id)[1][0] + is_prompt[:, :is_gen_min] = True + ministral_sbd_attention_window = None + use_exact_ministral_flash = bool(ministral_full_attention_approx) + use_ministral_prefix_cache = bool(use_cache and cache_prompt) + if use_ministral_sbd_sampling: + ministral_sbd_attention_window = generated_image_attention_window(generation_attention_mask) + use_ministral_prefix_cache = bool(use_cache and cache_prompt and causal_context) + if use_exact_ministral_flash and (not use_ministral_prefix_cache): + use_exact_ministral_flash = False + inputs_embeds_uncond = inputs_embeds.clone() + noise_embed = model.model.embed_tokens(torch.tensor([txt_mask_id]).to(model.device)) + inputs_embeds_uncond[is_prompt] = noise_embed + if edit_image is not None: + inputs_embeds_image_only = inputs_embeds_uncond.clone() + inputs_embeds_image_only[is_gen_enc] = inputs_embeds[is_gen_enc] + inputs_embeds_uncond_enc = inputs_embeds.clone() + if edit_mode == 0: + inputs_embeds_uncond_enc[~is_gen_enc] = noise_embed + is_gen_enc_ccc = is_gen_enc + elif edit_mode == 1: + inputs_embeds_uncond_enc[is_gen_enc] = noise_embed + is_gen_enc_ccc = torch.zeros_like(is_gen_enc, dtype=torch.bool) + elif edit_mode == 2: + inputs_embeds_uncond_enc[is_gen_enc | (raw_input_ids < 0)] = noise_embed + is_gen_enc_ccc = torch.zeros_like(is_gen_enc, dtype=torch.bool) + elif edit_mode == 3: + inputs_embeds_uncond_enc[~is_gen_enc & (raw_input_ids > 0)] = noise_embed + is_gen_enc_ccc = is_gen_enc + else: + raise ValueError('Not Supported edit_mode') + inputs_embeds_uncond_enc[fixed_prefix_mask] = inputs_embeds[fixed_prefix_mask] + image_gen_latents_offset = torch.zeros(1, n_tokens, dtype=torch.long, device=input_ids.device) + is_unitok = False + structural_mask = None + endpoint_probability_path = None + semantic_tree = None + semantic_representatives = None + image_vocab_size = int(model.get_model().vqvae.config.num_vq_embeddings) + semantic_tree = _load_semantic_tree_path(model.get_model().config, cache_owner=model.get_model(), device=input_ids.device, vocab_size=image_vocab_size) + if image_embedding_refinement_steps > semantic_tree.depth: + raise ValueError(f'semantic-tree delayed commit steps cannot exceed tree depth: {image_embedding_refinement_steps} > {semantic_tree.depth}') + semantic_representatives = semantic_tree.sample_representatives(torch.zeros_like(image_gen_latents_offset), levels=0) + image_gen_latents_offset[:] = img_mask_id + xt = image_gen_latents_offset.clone() + (xt, marker_gen_shape, structural_mask) = append_image_row_markers(xt, content_gen_shape, row_marker_id=row_marker_id, image_end_id=image_end_id, markers_per_row=markers_per_row) + if marker_gen_shape != gen_shape: + raise RuntimeError('inference marker grid does not match the prompt grid') + (semantic_representatives, semantic_marker_shape, semantic_structural_mask) = append_image_row_markers(semantic_representatives, content_gen_shape, row_marker_id=row_marker_id, image_end_id=image_end_id, markers_per_row=markers_per_row) + if semantic_marker_shape != gen_shape or not torch.equal(semantic_structural_mask, structural_mask): + raise RuntimeError('semantic-tree marker layout does not match generation') + if structural_mask is None: + content_positions = torch.arange(xt.shape[-1], device=xt.device, dtype=torch.long) + else: + content_positions = (~structural_mask[0]).nonzero(as_tuple=False).flatten() + source_padding_raw_mask = None + source_padding_lock_mask = None + source_padding_locked_codes = None + source_padding_locked_embeddings = None + if lock_source_padding_vq: + if edit_source_vq_codes is None or source_native_size is None: + raise RuntimeError('source-padding VQ locking lost its source codes or geometry') + source_padding_raw_mask = _source_padding_vq_mask(source_native_size, content_gen_shape, device=xt.device).expand(edit_source_vq_codes.shape[0], -1) + (_, source_padding_lock_mask, source_padding_locked_codes) = _prefill_source_padding_vq(xt, edit_source_vq_codes.to(device=xt.device, dtype=xt.dtype), source_padding_raw_mask, content_positions) + source_padding_locked_embeddings = model.get_model().call_gen_token_embedding(source_padding_locked_codes) + sampling_protected_mask = structural_mask + refinement_child_embeddings = None + refinement_stage = None + semantic_next_refinement_round = None + refinement_stage = torch.full_like(xt, -1) + semantic_next_refinement_round = torch.zeros_like(refinement_stage) + if structural_mask is not None: + refinement_stage[structural_mask] = image_embedding_refinement_steps + semantic_noise_levels = semantic_tree_noise_for_ages(refinement_stage.clamp_min(0), steps=image_embedding_refinement_steps) + refinement_child_embeddings = build_semantic_tree_embeddings(semantic_representatives, semantic_noise_levels, model.get_model().call_gen_token_embedding, img_mask_id) + prime_digits = None + endpoint_sampling_times = None + mask_idx = xt == img_mask_id + n_mask = mask_idx.sum() + mask_idx_sch = mask_idx + semantic_counts = [semantic_tree_activation_counts(int(row_mask.sum().item()), activation_steps=n_steps, schedule=schedule, shift=shift, device=mask_idx_sch.device) for row_mask in mask_idx_sch] + if any((row_counts.shape != semantic_counts[0].shape for row_counts in semantic_counts[1:])): + raise ValueError('semantic-tree inference requires equal activation-step counts across batch rows') + num_transfer_tokens = torch.stack(semantic_counts) + activation_steps = num_transfer_tokens.shape[1] + decode_num_transfer_tokens = semantic_tree_decode_schedule(num_transfer_tokens, refinement_steps=image_embedding_refinement_steps, refinement_gap=0) + sch_temperatures = torch.linspace(0, 1, n_steps, device='cpu').numpy() + if schedule_temp == 'linear': + sch_temperatures = (1 - sch_temperatures) * (1 - min_temperature) + min_temperature + elif schedule_temp == 'cosine2': + sch_temperatures = cosine_schedule_2(1 - sch_temperatures) * (1 - min_temperature) + min_temperature + elif schedule_temp == 'shift': + sch_temperatures = logit_normal_schedule(shift_alg, 1 - sch_temperatures) * (1 - min_temperature) + min_temperature + else: + raise NotImplementedError(f'Unknown schedule_temp: {schedule_temp}') + sch_temperatures_samp = torch.linspace(0, 1, n_steps, device='cpu').numpy() + sch_temperatures_samp = (1 - sch_temperatures_samp) * (1 - 1) + 1 + sch_temperatures = torch.tensor(sch_temperatures, device=device, dtype=torch.float32) + sch_temperatures_samp = torch.tensor(sch_temperatures_samp, device=device, dtype=torch.float32) + temp_idx = 0 + cfg_start = int(cfg_interval[0] * n_steps) + cfg_end = int(cfg_interval[1] * n_steps) + use_optional_guidance_scale = any((value is not None for value in (None, None, None, None))) + scheduled_run_cfg_branches = None + if isinstance(unmask_order, str): + unmask_order = torch.load(unmask_order).tolist() + eligible_parent_positions = None + if confidence_policy == 'stratified' and unmask_order is None: + stratified_tokens = n_tokens + _dim = int(np.sqrt(stratified_tokens)) + if _dim * _dim != stratified_tokens: + raise ValueError('stratified local AR sampling requires a square parent grid') + seq = stratified_random(n=_dim, seed=42, shuffle_blocks=True) + unmask_order = seq + stratified_token_count = n_tokens + if confidence_policy == 'stratified': + assert unmask_order is not None + n_c = 0 + cat_cfg_time = 0 + post_cfg_time = 0 + wte_time = 0 + fwd_time = 0 + sample_time = 0 + all_time = 0 + total_edited = 0 + edit_transitions = [] + last_edit_step = torch.full_like(xt, -10000) + distribution_trace = {'initial_commits': [], 'edit_proposals': [], 'edits': []} + initial_trace_top_ids = None + initial_trace_top_logits = None + initial_trace_top_probs = None + initial_trace_top_sampling_probs = None + previous_trace_top_ids = None + previous_trace_top_logits = None + previous_trace_top_probs = None + intermediate_x0s = [] + for (decode_step_idx, num_transfer) in tqdm(enumerate(decode_num_transfer_tokens[0]), total=decode_num_transfer_tokens.shape[1], disable=disable_tqdm): + t0 = time.time() + schedule_temp_idx = temp_idx + schedule_temp_idx = min(schedule_temp_idx, min(activation_steps, n_steps) - 1) + local_temp = sch_temperatures[schedule_temp_idx] + local_temp_samp = sch_temperatures_samp[schedule_temp_idx] + temp_idx += 1 + schedule_progress_idx = temp_idx + schedule_progress_idx = min(schedule_progress_idx, activation_steps) + if schedule_progress_idx / n_steps > 100: + confidence_policy = 'mmada' + hard_mask_idx = refinement_stage < image_embedding_refinement_steps + mask_idx = refinement_stage < 0 + n_mask = mask_idx.sum() + timestep_refinement_stage = refinement_stage[:, content_positions] + timesteps = refinement_mask_fraction(timestep_refinement_stage, steps=image_embedding_refinement_steps) + semantic_tree_cfg_q = None + cfg_step_idx = temp_idx + cfg_step_idx = min(cfg_step_idx, activation_steps) + guidance_scale_for_step = guidance_scale + if scheduled_run_cfg_branches is None: + run_cfg_branches = guidance_scale != 0 or guidance_scale_image != 0 + else: + run_cfg_branches = scheduled_run_cfg_branches + do_cfg = run_cfg_branches and cfg_start <= cfg_step_idx and (cfg_end >= cfg_step_idx) + model_xt = _restore_source_padding_vq(xt, source_padding_lock_mask, source_padding_locked_codes) + if run_cfg_branches: + if edit_image is not None: + if edit_guidance_mode == 'ip2p': + input_embeddings_input = torch.cat([inputs_embeds_uncond, inputs_embeds_image_only, inputs_embeds]).clone() + else: + input_embeddings_input = torch.cat([inputs_embeds_uncond, inputs_embeds_uncond_enc, inputs_embeds]).clone() + xt_input = torch.cat([model_xt, model_xt, model_xt]) + new_token_mask = is_gen.repeat(3, 1) + fixed_prefix_routing = fixed_prefix_mask.repeat(3, 1) + is_gen_enc_null = torch.zeros_like(is_gen_enc, dtype=torch.bool) + if edit_guidance_mode == 'ip2p': + is_gen_enc_mask = torch.cat([is_gen_enc_null, is_gen_enc, is_gen_enc]) + else: + is_gen_enc_mask = torch.cat([is_gen_enc_null, is_gen_enc_ccc, is_gen_enc]) + timesteps = timesteps.repeat(3) + else: + input_embeddings_input = torch.cat([inputs_embeds_uncond, inputs_embeds]).clone() + xt_input = torch.cat([model_xt, model_xt]) + new_token_mask = is_gen.repeat(2, 1) + fixed_prefix_routing = fixed_prefix_mask.repeat(2, 1) + is_gen_enc_mask = is_gen_enc.repeat(2, 1) + is_gen_enc_mask[0, :] = False + timesteps = timesteps.repeat(2) + else: + input_embeddings_input = inputs_embeds.clone() + new_token_mask = is_gen + fixed_prefix_routing = fixed_prefix_mask + xt_input = model_xt + is_gen_enc_mask = is_gen_enc + enc_use_image_branch = True + generation_attention_mask_input = fixed_prefix_routing | new_token_mask + if enc_use_image_branch: + modality_indices = generation_attention_mask_input | is_gen_enc_mask + else: + modality_indices = generation_attention_mask_input + t1 = time.time() + x_gen_input = xt_input + x_gen_child_embeddings = None + if xt_input.shape[0] % refinement_child_embeddings.shape[0] != 0: + raise RuntimeError('CFG batch does not align with the refinement state batch') + cfg_repeats = xt_input.shape[0] // refinement_child_embeddings.shape[0] + step_refinement_child_embeddings = refinement_child_embeddings + if source_padding_lock_mask is not None: + if source_padding_locked_embeddings.shape != refinement_child_embeddings.shape: + raise RuntimeError('source-padding embeddings do not align with the refinement state') + step_refinement_child_embeddings = refinement_child_embeddings.clone() + step_refinement_child_embeddings[source_padding_lock_mask] = source_padding_locked_embeddings[source_padding_lock_mask] + x_gen_input = None + x_gen_child_embeddings = step_refinement_child_embeddings.repeat(cfg_repeats, 1, 1) + (all_input_embeddings, new_token_mask) = _wte(model.get_model(), None, True, x_gen=x_gen_input, gen_shape=gen_shape, inputs_embeds_curr=input_embeddings_input, new_token_mask=new_token_mask, x_gen_child_embeddings=x_gen_child_embeddings) + t2 = time.time() + if use_ministral_prefix_cache: + if decode_step_idx == 0: + cache_cutoff = ministral_sbd_attention_window[0] if ministral_sbd_attention_window is not None else prompt_cutoff + if causal_context: + for layer in model_module.encoder.layers: + if hasattr(layer.self_attn, 'diffusion_lm'): + layer.self_attn.diffusion_lm = False + if cache_cutoff > 0: + output = model.get_model()(None, input_embeddings=all_input_embeddings[:, :cache_cutoff], modality_indices=modality_indices[:, :cache_cutoff], output_hidden_states=True, past_key_values=None, use_cache=True, overwrite_attn_impl='flash_attn') + past_key_values = output.past_key_values + cache_len = past_key_values.get_seq_length() + if cache_len != cache_cutoff: + raise RuntimeError(f'SBD prefix cache length does not match its generated-image boundary: {cache_len} != {cache_cutoff}') + else: + past_key_values = None + cache_len = 0 + if causal_context: + for layer in model_module.encoder.layers: + if hasattr(layer.self_attn, 'diffusion_lm'): + layer.self_attn.diffusion_lm = True + else: + pass + else: + past_key_values = None + cache_len = 0 + sampling_end = ministral_sbd_attention_window[1] if ministral_sbd_attention_window is not None and use_ministral_prefix_cache else all_input_embeddings.shape[1] + if not cache_len <= sampling_end <= all_input_embeddings.shape[1]: + raise RuntimeError(f'Invalid exact-image SBD sampling window: cache_len={cache_len}, sampling_end={sampling_end}, sequence_length={all_input_embeddings.shape[1]}') + logits = get_logits_ministral(model.get_model(), all_input_embeddings[:, cache_len:sampling_end], new_token_mask[:, cache_len:sampling_end], True, gen_shape=gen_shape, input_modality_indices=modality_indices[:, cache_len:sampling_end], timesteps=timesteps, past_key_values=past_key_values, generation_attention_mask=generation_attention_mask_input[:, cache_len:sampling_end], sbd_diffusion_sampling=use_ministral_sbd_sampling, full_attention_approx=use_exact_ministral_flash, loop_k=None) + t3 = time.time() + if run_cfg_branches: + if edit_image is not None: + (new_token_mask, _, _) = new_token_mask.chunk(3) + (logits_un, logits_middle, logits) = logits.chunk(3) + if do_cfg: + logits_is_ninf = logits == -np.inf + logits = _combine_edit_guidance_logits(logits, logits_un, logits_middle if edit_guidance_mode != 'ip2p' else None, guidance_scale=guidance_scale_for_step, guidance_scale_image=guidance_scale_image, edit_mode=edit_mode, guidance_mode=edit_guidance_mode, logits_image_only=logits_middle if edit_guidance_mode == 'ip2p' else None) + logits[logits_is_ninf] = -np.inf + else: + (new_token_mask, _) = new_token_mask.chunk(2) + (logits_un, logits) = logits.chunk(2) + if do_cfg: + logits_is_ninf = logits == -np.inf + if use_optional_guidance_scale: + active_guidance_scale = guidance_scale + logits = (1 + active_guidance_scale) * logits - active_guidance_scale * logits_un + else: + logits = (1 + guidance_scale) * logits - guidance_scale * logits_un + logits[logits_is_ninf] = -np.inf + t4 = time.time() + if top_p is not None or top_k is not None: + (_b, _l, _v) = logits.shape + logits = logits.view(_b * _l, _v) + logits = top_k_top_p_filtering(logits, top_k=top_k, top_p=top_p, filter_value=-np.inf, min_tokens_to_keep=1) + logits = logits.view(_b, _l, _v) + probs = logits.softmax(dim=-1) + trace_top_ids = None + trace_top_logits = None + trace_top_probs = None + _temperature = temperature + sampling_distribution = dists.Categorical(logits=logits / _temperature) + x0 = sampling_distribution.sample() + del sampling_distribution + x0_p = torch.gather(probs, -1, x0.long()[..., None]).squeeze(-1) + if edit_threshold <= 0: + x0 = torch.where(hard_mask_idx, x0, xt) + if decode_step_idx >= activation_steps: + select_index = torch.empty(0, dtype=torch.long, device=x0.device) + elif confidence_policy == 'mask_git': + _alg_temp = alg_temp + if dynamic_temperature: + _alg_temp = _alg_temp * local_temp + confidence = x0_p / _alg_temp + confidence = torch.where(mask_idx, confidence, -np.inf) + confidence = torch.softmax(confidence, dim=-1) + select_index = _select_within_unstarted(confidence, mask_idx, num_transfer, multinomial=True) + elif confidence_policy == 'mmada': + _alg_temp = alg_temp + if dynamic_temperature: + _alg_temp = _alg_temp * local_temp + confidence = torch.log(x0_p.clamp(1e-20)) + _alg_temp * gumbel_noise(x0_p, generator=None) + confidence = torch.where(mask_idx, confidence, -np.inf) + select_index = _select_within_unstarted(confidence, mask_idx, num_transfer) + elif confidence_policy == 'stratified': + start = stratified_token_count - int(n_mask.item()) + select_index = torch.tensor(unmask_order[start:start + int(num_transfer)], device=x0.device, dtype=torch.long) + if structural_mask is not None: + select_index = content_positions[select_index] + else: + raise NotImplementedError(f'Unknown confidence_policy: {confidence_policy}') + transfer_index = torch.zeros_like(x0, dtype=torch.bool, device=x0.device) + j = 0 + transfer_index[j, select_index] = True + proposal_child_embeddings = None + activation_index = transfer_index & (refinement_stage < 0) + refinement_stage[activation_index] = 0 + semantic_next_refinement_round[activation_index] = decode_step_idx + 0 + pending_index = (refinement_stage >= 0) & (refinement_stage < image_embedding_refinement_steps) + proposal_child_embeddings = model.get_model().call_gen_token_embedding(x0) + pending_index &= semantic_tree_refinement_due(refinement_stage, semantic_next_refinement_round, decode_round=decode_step_idx, refinement_steps=image_embedding_refinement_steps) + commit_index = torch.zeros_like(pending_index) + if pending_index.any(): + semantic_advance = advance_revisable_semantic_tree(semantic_representatives[pending_index], x0[pending_index], refinement_stage[pending_index], semantic_tree, steps=image_embedding_refinement_steps) + semantic_representatives[pending_index] = semantic_advance.representatives + refinement_stage[pending_index] = semantic_advance.ages + semantic_next_refinement_round[pending_index] = decode_step_idx + 0 + 1 + commit_index[pending_index] = semantic_advance.committed + semantic_noise_levels = semantic_tree_noise_for_ages(refinement_stage.clamp_min(0), steps=image_embedding_refinement_steps) + refinement_child_embeddings = build_semantic_tree_embeddings(semantic_representatives, semantic_noise_levels, model.get_model().call_gen_token_embedding, img_mask_id) + xt[commit_index] = semantic_representatives[commit_index] + transfer_index = commit_index + xt_is_mask = xt == img_mask_id + edit_progress = (decode_step_idx + 1) / decode_num_transfer_tokens.shape[1] + edits_enabled_this_round = edit_threshold > 0 and 0.0 <= edit_progress <= 1.0 and (image_embedding_refinement_steps == 1 or decode_step_idx < activation_steps) + if edits_enabled_this_round: + editable_position = ~xt_is_mask & ~transfer_index + if structural_mask is not None: + editable_position &= ~structural_mask + editing_confidence = torch.where(editable_position, x0_p, -torch.inf) + high_conf_editing = editing_confidence > edit_threshold + margin_accepted = torch.ones_like(editable_position) + proposal_logit_margin = None + token_changed = (x0 != xt) & high_conf_editing & margin_accepted + num_edited = token_changed.sum() + if num_edited > 0: + xt[token_changed] = x0[token_changed] + last_edit_step[token_changed] = decode_step_idx + refinement_child_embeddings[token_changed] = proposal_child_embeddings[token_changed] + refinement_stage[token_changed] = image_embedding_refinement_steps + total_edited += num_edited.item() + t5 = time.time() + cat_cfg_time += t1 - t0 + post_cfg_time += t2 - t1 + wte_time += t3 - t2 + fwd_time += t4 - t3 + sample_time += t5 - t4 + all_time += t5 - t0 + n_c += 1 + unresolved_refinement = refinement_stage < image_embedding_refinement_steps + if unresolved_refinement.any() or (xt == img_mask_id).any(): + stage_counts = {stage: (refinement_stage == stage).sum().item() for stage in range(-1, image_embedding_refinement_steps + 1)} + raise RuntimeError(f'image embedding refinement ended with unresolved tokens: unfinished_stages={unresolved_refinement.sum().item()}, committed_mask_tokens={(xt == img_mask_id).sum().item()}, stage_counts={stage_counts}') + xt = _restore_source_padding_vq(xt, source_padding_lock_mask, source_padding_locked_codes) + _assert_source_padding_vq_locked(xt, source_padding_lock_mask, source_padding_locked_codes) + if structural_mask is not None: + expected_row_id = int(row_marker_id) + expected_end_id = int(image_end_id) + marker_grid = xt.reshape(xt.shape[0], *gen_shape) + if not bool((marker_grid[:, :-1, -markers_per_row:] == expected_row_id).all() and (marker_grid[:, -1:, -markers_per_row:] == expected_end_id).all()): + raise RuntimeError('structural generation image markers changed during sampling') + xt = strip_image_row_markers(xt, content_gen_shape, markers_per_row=markers_per_row) + x0_img = xt + result = Image.fromarray(model.decode_image_gen(x0_img, image_resolution, image_resolution)[0]) + return result diff --git a/sbd_attention.py b/sbd_attention.py new file mode 100644 index 0000000000000000000000000000000000000000..56aae844cb08db067e0d368294a46e18feb57173 --- /dev/null +++ b/sbd_attention.py @@ -0,0 +1,39 @@ + +from __future__ import annotations +import torch + +def build_image_attention_doc_ids(image_token_mask: torch.Tensor, *, valid_tokens: torch.Tensor | None=None) -> torch.Tensor: + if image_token_mask.ndim != 2: + raise ValueError('image_token_mask must be a rank-2 [batch, length] tensor') + if valid_tokens is None: + valid_tokens = torch.ones_like(image_token_mask, dtype=torch.bool) + elif tuple(valid_tokens.shape) != tuple(image_token_mask.shape): + raise ValueError('valid_tokens must align with image_token_mask') + image_token_mask = image_token_mask.to(dtype=torch.bool) + valid_tokens = valid_tokens.to(dtype=torch.bool) + image_token_mask = image_token_mask & valid_tokens + previous_image = torch.cat((torch.zeros_like(image_token_mask[:, :1]), image_token_mask[:, :-1]), dim=1) + document_starts = image_token_mask & ~previous_image + return torch.cumsum(document_starts.long(), dim=1) * image_token_mask + +def generated_image_attention_window(generated_image_token_mask: torch.Tensor, *, valid_tokens: torch.Tensor | None=None) -> tuple[int, int]: + if generated_image_token_mask.ndim != 2: + raise ValueError('generated_image_token_mask must be a rank-2 [batch, length] tensor') + if valid_tokens is None: + valid_tokens = torch.ones_like(generated_image_token_mask, dtype=torch.bool) + elif tuple(valid_tokens.shape) != tuple(generated_image_token_mask.shape): + raise ValueError('valid_tokens must align with generated_image_token_mask') + generated_image_token_mask = generated_image_token_mask.to(dtype=torch.bool) & valid_tokens.to(dtype=torch.bool) + windows = [] + for row in generated_image_token_mask: + active = torch.where(row)[0] + if active.numel() == 0: + raise ValueError('SBD sampling requires at least one image token per row') + start = int(active[0].item()) + end = int(active[-1].item()) + 1 + if not bool(row[start:end].all()): + raise ValueError('Dense SBD FlashAttention requires one contiguous generated-image block') + windows.append((start, end)) + if any((window != windows[0] for window in windows[1:])): + raise ValueError('Dense SBD FlashAttention requires the same generated-image block for every CFG batch row') + return windows[0] diff --git a/schedules.py b/schedules.py new file mode 100644 index 0000000000000000000000000000000000000000..22c5b59abd02490d2e5907354042282adb470fd1 --- /dev/null +++ b/schedules.py @@ -0,0 +1,22 @@ +# ADOBE CONFIDENTIAL +# Copyright 2025 Adobe +# All Rights Reserved. +# NOTICE: All information contained herein is, and remains +# the property of Adobe and its suppliers, if any. The intellectual +# and technical concepts contained herein are proprietary to Adobe +# and its suppliers and are protected by all applicable intellectual +# property laws, including trade secret and copyright laws. +# Dissemination of this information or reproduction of this material +# is strictly forbidden unless prior written permission is obtained +# from Adobe. + +from __future__ import annotations +import numpy as np + +def cosine_schedule_2(x): + x = 1 - np.clip(x, 0, 1) + return np.cos(np.pi * x / 2) + +def logit_normal_schedule(shift, sigmas): + sigmas = shift * sigmas / (1 + (shift - 1) * sigmas) + return sigmas diff --git a/special_tokens_map.json b/special_tokens_map.json new file mode 100644 index 0000000000000000000000000000000000000000..dccdbc635a6d7bf0ed7b24f62bec064f4fb2661f --- /dev/null +++ b/special_tokens_map.json @@ -0,0 +1,1061 @@ +{ + "additional_special_tokens": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "bos_token": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "eos_token": { + "content": "<|im_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "pad_token": { + "content": "<|im_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "unk_token": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + } +} diff --git a/token_constants.py b/token_constants.py new file mode 100644 index 0000000000000000000000000000000000000000..78d9ed7d463371adb9c5c3fb2513aebb4c13685e --- /dev/null +++ b/token_constants.py @@ -0,0 +1,4 @@ +IMAGE_TOKEN_INDEX = -200 +IMAGE_PAD_TOKEN_INDEX = -500 +DEFAULT_IMAGE_TOKEN = '' +DEFAULT_IMAGE_PAD_TOKEN = '' diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000000000000000000000000000000000000..da280dc63cd584282a9aa8e37065bd1720787dda --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9ad3482369ba91711ff939f9eeb761d618b3157fcbfc0715f18e34b918eca97 +size 17268792 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000000000000000000000000000000000000..3a808fba3ea569c698187ecf10ccc9464131f8e2 --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,17283 @@ +{ + "add_bos_token": false, + "add_eos_token": false, + "add_prefix_space": false, + "added_tokens_decoder": { + "0": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "1": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "2": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "3": { + "content": "[INST]", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "4": { + "content": "[/INST]", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "5": { + "content": "[AVAILABLE_TOOLS]", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "6": { + "content": "[/AVAILABLE_TOOLS]", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "7": { + "content": "[TOOL_RESULTS]", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "8": { + "content": "[/TOOL_RESULTS]", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "9": { + "content": "[TOOL_CALLS]", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "10": { + "content": "<|im_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "11": { + "content": "<|im_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "12": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "13": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "14": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "15": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "16": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "17": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "18": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "19": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "20": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "21": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "22": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "23": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "24": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "25": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "26": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "27": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "28": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "29": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "30": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "31": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "32": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "33": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "34": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "35": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "36": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "37": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "38": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "39": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "40": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "41": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "42": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "43": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "44": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "45": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "46": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "47": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "48": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "49": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "50": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "51": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "52": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "53": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "54": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "55": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "56": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "57": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "58": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "59": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "60": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "61": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "62": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "63": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "64": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "65": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "66": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "67": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "68": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "69": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "70": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "71": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "72": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "73": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "74": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "75": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "76": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "77": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "78": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "79": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "80": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "81": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "82": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "83": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "84": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "85": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "86": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "87": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "88": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "89": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "90": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "91": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "92": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "93": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "94": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "95": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "96": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "97": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "98": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "99": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "100": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "101": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "102": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "103": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "104": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "105": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "106": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "107": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "108": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "109": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "110": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "111": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "112": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "113": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "114": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "115": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "116": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "117": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "118": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "119": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "120": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "121": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "122": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "123": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "124": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "125": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "126": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "127": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "129": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "130": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "133": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "134": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "135": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "136": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "137": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "138": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "139": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "140": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "141": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "142": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "143": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "144": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "145": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "146": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "147": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "148": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "149": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "150": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "152": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "153": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "154": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "155": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "156": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "157": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "158": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "159": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "160": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "161": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "162": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "163": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "164": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "165": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "166": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "167": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "168": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "169": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "170": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "171": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "172": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "173": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "174": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "175": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "176": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "177": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "178": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "179": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "180": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "181": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "182": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "183": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "184": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "185": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "186": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "187": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "188": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "189": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "190": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "191": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "192": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "193": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "194": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "195": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "196": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "197": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "198": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "199": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "200": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "201": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "202": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "203": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "204": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "205": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "206": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "207": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "208": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "209": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "210": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "211": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "212": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "213": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "214": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "215": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "216": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "217": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "218": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "219": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "220": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "221": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "222": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "223": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "224": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "225": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "226": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "227": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "228": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "229": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "230": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "231": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "232": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "233": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "234": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "235": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "236": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "237": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "238": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "239": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "240": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "241": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "242": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "243": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "244": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "245": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "246": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "247": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "249": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "250": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "251": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "252": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "253": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "254": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "255": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "256": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "257": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "258": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "259": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "260": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "261": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "262": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "263": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "264": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "265": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "266": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "267": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "268": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "269": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "270": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "271": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "272": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "273": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "274": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "275": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "276": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "277": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "278": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "279": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "280": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "281": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "282": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "283": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "284": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "285": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "286": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "287": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "288": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "289": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "290": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "291": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "292": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "293": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "294": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "295": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "296": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "297": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "298": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "299": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "300": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "301": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "302": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "303": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "304": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "305": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "306": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "307": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "308": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "309": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "310": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "311": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "312": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "313": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "314": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "315": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "316": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "317": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "318": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "319": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "320": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "321": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "322": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "323": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "324": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "325": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "326": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "327": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "328": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "329": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "330": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "331": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "332": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "333": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "334": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "335": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "336": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "337": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "338": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "339": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "340": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "341": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "342": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "343": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "344": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "345": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "346": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "347": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "348": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "349": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "350": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "351": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "352": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "353": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "354": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "355": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "356": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "357": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "358": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "359": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "360": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "361": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "362": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "363": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "364": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "365": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "366": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "367": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "368": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "369": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "370": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "371": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "372": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "373": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "374": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "375": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "376": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "377": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "378": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "379": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "380": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "381": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "382": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "383": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "384": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "385": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "386": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "387": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "388": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "389": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "390": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "391": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "392": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "393": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "394": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "395": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "396": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "397": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "398": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "399": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "400": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "401": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "402": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "403": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "404": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "405": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "406": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "407": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "408": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "409": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "410": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "411": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "412": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "413": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "414": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "415": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "416": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "417": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "418": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "419": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "420": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "421": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "422": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "423": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "424": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "425": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "426": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "427": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "428": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "429": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "430": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "431": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "432": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "433": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "434": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "435": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "436": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "437": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "438": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "439": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "440": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "441": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "442": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "443": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "444": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "445": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "446": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "447": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "448": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "449": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "450": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "451": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "452": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "453": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "454": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "455": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "456": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "457": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "458": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "459": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "460": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "461": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "462": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "463": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "464": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "465": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "466": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "467": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "468": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "469": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "470": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "471": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "472": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "473": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "474": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "475": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "476": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "477": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "478": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "479": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "480": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "481": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "482": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "483": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "484": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "485": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "486": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "487": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "488": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "489": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "490": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "491": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "492": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "493": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "494": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "495": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "496": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "497": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "498": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "499": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "500": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "501": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "502": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "503": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "504": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "505": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "506": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "507": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "508": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "509": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "510": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "511": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "512": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "513": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "514": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "515": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "516": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "517": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "518": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "519": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "520": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "521": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "522": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "523": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "524": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "525": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "526": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "527": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "528": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "529": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "530": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "531": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "532": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "533": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "534": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "535": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "536": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "537": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "538": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "539": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "540": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "541": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "542": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "543": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "544": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "545": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "546": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "547": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "548": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "549": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "550": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "551": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "552": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "553": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "554": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "555": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "556": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "557": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "558": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "559": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "560": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "561": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "562": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "563": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "564": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "565": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "566": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "567": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "568": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "569": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "570": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "571": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "572": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "573": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "574": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "575": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "576": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "577": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "578": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "579": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "580": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "581": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "582": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "583": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "584": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "585": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "586": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "587": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "588": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "589": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "590": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "591": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "592": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "593": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "594": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "595": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "596": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "597": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "598": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "599": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "600": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "601": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "602": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "603": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "604": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "605": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "606": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "607": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "608": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "609": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "610": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "611": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "612": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "613": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "614": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "615": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "616": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "617": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "618": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "619": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "620": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "621": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "622": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "623": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "624": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "625": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "626": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "627": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "628": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "629": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "630": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "631": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "632": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "633": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "634": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "635": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "636": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "637": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "638": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "639": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "640": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "641": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "642": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "643": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "644": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "645": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "646": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "647": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "648": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "649": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "650": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "651": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "652": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "653": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "654": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "655": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "656": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "657": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "658": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "659": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "660": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "661": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "662": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "663": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "664": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "665": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "666": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "667": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "668": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "669": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "670": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "671": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "672": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "673": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "674": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "675": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "676": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "677": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "678": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "679": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "680": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "681": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "682": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "683": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "684": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "685": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "686": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "687": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "688": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "689": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "690": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "691": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "692": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "693": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "694": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "695": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "696": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "697": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "698": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "699": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "700": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "701": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "702": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "703": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "704": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "705": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "706": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "707": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "708": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "709": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "710": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "711": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "712": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "713": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "714": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "715": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "716": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "717": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "718": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "719": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "720": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "721": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "722": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "723": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "724": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "725": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "726": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "727": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "728": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "729": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "730": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "731": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "732": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "733": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "734": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "735": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "736": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "737": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "738": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "739": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "740": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "741": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "742": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "743": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "744": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "745": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "746": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "747": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "748": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "749": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "750": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "751": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "752": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "753": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "754": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "755": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "756": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "757": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "758": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "759": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "760": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "761": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "762": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "763": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "764": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "765": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "766": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "767": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "768": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "769": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "770": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "771": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "772": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "773": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "774": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "775": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "776": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "777": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "778": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "779": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "780": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "781": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "782": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "783": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "784": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "785": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "786": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "787": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "788": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "789": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "790": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "791": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "792": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "793": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "794": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "795": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "796": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "797": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "798": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "799": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "800": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "801": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "802": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "803": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "804": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "805": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "806": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "807": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "808": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "809": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "810": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "811": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "812": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "813": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "814": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "815": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "816": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "817": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "818": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "819": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "820": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "821": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "822": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "823": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "824": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "825": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "826": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "827": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "828": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "829": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "830": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "831": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "832": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "833": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "834": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "835": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "836": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "837": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "838": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "839": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "840": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "841": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "842": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "843": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "844": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "845": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "846": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "847": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "848": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "849": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "850": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "851": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "852": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "853": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "854": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "855": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "856": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "857": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "858": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "859": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "860": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "861": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "862": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "863": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "864": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "865": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "866": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "867": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "868": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "869": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "870": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "871": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "872": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "873": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "874": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "875": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "876": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "877": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "878": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "879": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "880": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "881": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "882": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "883": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "884": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "885": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "886": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "887": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "888": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "889": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "890": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "891": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "892": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "893": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "894": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "895": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "896": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "897": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "898": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "899": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "900": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "901": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "902": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "903": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "904": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "905": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "906": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "907": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "908": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "909": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "910": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "911": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "912": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "913": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "914": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "915": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "916": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "917": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "918": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "919": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "920": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "921": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "922": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "923": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "924": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "925": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "926": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "927": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "928": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "929": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "930": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "931": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "932": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "933": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "934": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "935": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "936": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "937": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "938": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "939": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "940": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "941": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "942": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "943": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "944": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "945": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "946": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "947": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "948": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "949": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "950": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "951": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "952": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "953": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "954": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "955": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "956": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "957": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "958": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "959": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "960": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "961": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "962": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "963": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "964": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "965": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "966": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "967": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "968": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "969": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "970": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "971": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "972": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "973": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "974": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "975": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "976": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "977": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "978": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "979": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "980": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "981": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "982": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "983": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "984": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "985": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "986": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "987": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "988": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "989": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "990": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "991": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "992": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "993": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "994": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "995": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "996": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "997": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "998": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "999": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131072": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131073": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131074": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131075": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131076": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131077": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131078": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131079": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131080": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131081": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131082": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131083": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131084": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131085": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131086": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131087": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131088": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131089": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131090": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131091": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131092": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131093": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131094": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131095": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131096": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131097": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131098": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131099": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131100": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131101": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131102": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131103": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131104": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131105": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131106": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131107": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131108": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131109": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131110": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131111": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131112": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131113": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131114": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131115": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131116": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131117": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131118": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131119": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131120": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131121": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131122": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131123": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131124": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131125": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131126": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131127": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131128": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131129": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131130": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131131": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131132": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131133": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131134": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131135": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131136": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131137": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131138": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131139": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131140": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131141": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131142": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131143": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131144": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131145": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131146": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131147": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131148": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131149": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131150": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131151": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131152": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131153": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131154": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131155": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131156": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131157": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131158": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131159": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131160": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131161": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131162": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131163": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131164": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131165": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131166": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131167": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131168": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131169": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131170": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131171": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131172": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131173": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131174": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131175": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131176": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131177": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131178": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131179": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131180": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131181": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131182": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131183": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131184": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131185": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131186": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131187": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131188": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131189": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131190": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131191": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131192": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131193": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131194": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131195": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131196": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131197": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131198": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131199": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131200": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131201": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131202": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131203": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131204": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131205": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131206": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131207": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131208": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131209": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131210": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131211": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131212": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131213": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131214": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131215": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131216": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131217": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131218": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131219": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131220": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131221": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131222": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131223": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131224": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131225": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131226": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131227": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131228": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131229": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131230": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131231": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131232": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131233": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131234": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131235": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131236": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131237": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131238": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131239": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131240": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131241": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131242": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131243": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131244": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131245": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131246": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131247": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131248": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131249": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131250": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131251": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131252": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131253": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131254": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131255": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131256": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131257": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131258": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131259": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131260": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131261": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131262": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131263": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131264": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131265": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131266": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131267": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131268": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131269": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131270": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131271": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131272": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131273": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131274": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131275": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131276": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131277": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131278": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131279": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131280": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131281": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131282": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131283": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131284": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131285": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131286": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131287": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131288": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131289": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131290": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131291": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131292": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131293": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131294": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131295": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131296": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131297": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131298": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131299": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131300": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131301": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131302": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131303": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131304": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131305": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131306": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131307": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131308": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131309": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131310": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131311": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131312": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131313": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131314": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131315": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131316": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131317": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131318": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131319": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131320": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131321": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131322": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131323": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131324": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131325": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131326": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131327": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131328": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131329": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131330": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131331": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131332": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131333": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131334": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131335": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131336": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131337": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131338": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131339": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131340": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131341": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131342": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131343": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131344": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131345": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131346": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131347": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131348": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131349": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131350": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131351": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131352": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131353": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131354": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131355": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131356": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131357": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131358": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131359": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131360": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131361": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131362": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131363": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131364": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131365": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131366": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131367": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131368": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131369": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131370": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131371": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131372": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131373": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131374": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131375": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131376": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131377": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131378": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131379": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131380": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131381": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131382": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131383": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131384": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131385": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131386": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131387": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131388": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131389": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131390": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131391": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131392": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131393": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131394": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131395": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131396": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131397": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131398": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131399": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131400": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131401": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131402": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131403": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131404": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131405": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131406": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131407": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131408": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131409": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131410": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131411": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131412": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131413": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131414": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131415": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131416": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131417": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131418": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131419": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131420": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131421": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131422": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131423": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131424": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131425": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131426": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131427": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131428": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131429": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131430": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131431": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131432": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131433": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131434": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131435": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131436": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131437": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131438": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131439": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131440": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131441": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131442": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131443": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131444": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131445": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131446": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131447": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131448": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131449": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131450": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131451": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131452": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131453": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131454": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131455": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131456": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131457": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131458": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131459": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131460": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131461": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131462": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131463": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131464": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131465": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131466": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131467": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131468": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131469": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131470": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131471": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131472": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131473": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131474": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131475": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131476": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131477": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131478": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131479": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131480": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131481": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131482": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131483": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131484": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131485": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131486": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131487": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131488": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131489": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131490": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131491": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131492": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131493": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131494": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131495": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131496": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131497": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131498": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131499": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131500": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131501": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131502": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131503": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131504": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131505": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131506": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131507": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131508": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131509": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131510": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131511": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131512": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131513": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131514": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131515": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131516": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131517": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131518": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131519": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131520": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131521": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131522": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131523": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131524": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131525": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131526": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131527": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131528": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131529": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131530": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131531": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131532": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131533": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131534": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131535": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131536": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131537": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131538": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131539": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131540": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131541": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131542": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131543": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131544": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131545": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131546": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131547": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131548": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131549": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131550": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131551": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131552": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131553": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131554": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131555": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131556": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131557": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131558": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131559": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131560": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131561": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131562": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131563": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131564": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131565": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131566": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131567": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131568": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131569": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131570": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131571": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131572": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131573": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131574": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131575": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131576": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131577": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131578": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131579": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131580": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131581": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131582": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131583": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131584": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131585": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131586": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131587": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131588": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131589": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131590": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131591": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131592": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131593": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131594": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131595": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131596": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131597": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131598": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131599": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131600": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131601": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131602": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131603": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131604": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131605": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131606": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131607": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131608": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131609": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131610": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131611": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131612": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131613": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131614": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131615": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131616": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131617": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131618": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131619": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131620": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131621": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131622": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131623": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131624": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131625": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131626": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131627": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131628": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131629": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131630": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131631": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131632": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131633": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131634": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131635": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131636": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131637": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131638": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131639": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131640": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131641": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131642": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131643": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131644": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131645": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131646": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131647": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131648": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131649": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131650": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131651": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131652": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131653": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131654": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131655": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131656": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131657": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131658": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131659": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131660": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131661": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131662": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131663": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131664": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131665": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131666": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131667": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131668": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131669": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131670": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131671": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131672": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131673": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131674": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131675": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131676": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131677": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131678": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131679": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131680": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131681": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131682": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131683": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131684": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131685": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131686": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131687": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131688": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131689": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131690": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131691": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131692": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131693": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131694": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131695": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131696": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131697": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131698": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131699": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131700": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131701": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131702": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131703": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131704": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131705": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131706": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131707": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131708": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131709": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131710": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131711": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131712": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131713": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131714": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131715": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131716": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131717": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131718": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131719": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131720": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131721": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131722": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131723": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131724": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131725": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131726": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131727": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131728": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131729": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131730": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131731": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131732": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131733": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131734": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131735": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131736": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131737": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131738": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131739": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131740": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131741": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131742": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131743": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131744": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131745": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131746": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131747": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131748": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131749": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131750": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131751": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131752": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131753": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131754": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131755": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131756": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131757": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131758": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131759": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131760": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131761": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131762": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131763": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131764": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131765": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131766": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131767": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131768": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131769": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131770": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131771": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131772": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131773": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131774": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131775": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131776": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131777": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131778": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131779": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131780": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131781": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131782": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131783": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131784": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131785": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131786": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131787": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131788": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131789": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131790": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131791": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131792": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131793": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131794": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131795": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131796": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131797": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131798": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131799": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131800": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131801": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131802": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131803": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131804": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131805": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131806": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131807": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131808": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131809": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131810": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131811": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131812": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131813": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131814": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131815": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131816": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131817": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131818": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131819": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131820": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131821": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131822": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131823": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131824": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131825": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131826": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131827": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131828": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131829": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131830": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131831": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131832": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131833": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131834": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131835": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131836": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131837": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131838": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131839": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131840": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131841": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131842": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131843": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131844": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131845": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131846": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131847": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131848": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131849": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131850": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131851": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131852": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131853": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131854": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131855": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131856": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131857": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131858": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131859": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131860": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131861": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131862": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131863": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131864": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131865": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131866": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131867": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131868": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131869": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131870": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131871": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131872": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131873": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131874": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131875": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131876": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131877": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131878": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131879": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131880": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131881": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131882": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131883": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131884": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131885": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131886": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131887": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131888": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131889": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131890": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131891": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131892": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131893": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131894": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131895": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131896": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131897": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131898": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131899": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131900": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131901": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131902": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131903": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131904": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131905": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131906": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131907": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131908": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131909": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131910": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131911": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131912": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131913": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131914": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131915": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131916": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131917": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131918": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131919": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131920": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131921": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131922": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131923": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131924": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131925": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131926": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131927": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131928": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131929": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131930": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131931": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131932": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131933": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131934": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131935": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131936": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131937": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131938": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131939": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131940": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131941": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131942": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131943": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131944": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131945": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131946": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131947": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131948": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131949": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131950": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131951": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131952": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131953": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131954": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131955": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131956": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131957": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131958": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131959": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131960": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131961": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131962": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131963": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131964": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131965": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131966": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131967": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131968": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131969": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131970": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131971": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131972": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131973": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131974": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131975": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131976": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131977": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131978": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131979": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131980": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131981": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131982": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131983": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131984": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131985": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131986": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131987": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131988": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131989": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131990": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131991": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131992": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131993": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131994": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131995": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131996": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131997": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131998": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "131999": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132000": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132001": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132002": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132003": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132004": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132005": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132006": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132007": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132008": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132009": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132010": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132011": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132012": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132013": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132014": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132015": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132016": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132017": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132018": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132019": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132020": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132021": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132022": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132023": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132024": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132025": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132026": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132027": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132028": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132029": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132030": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132031": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132032": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132033": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132034": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132035": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132036": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132037": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132038": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132039": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132040": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132041": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132042": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132043": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132044": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132045": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132046": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132047": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132048": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132049": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132050": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132051": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132052": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132053": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132054": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132055": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132056": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132057": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132058": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132059": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132060": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132061": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132062": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132063": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132064": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132065": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132066": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132067": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132068": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132069": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132070": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132071": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132072": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132073": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132074": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132075": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132076": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132077": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132078": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132079": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132080": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132081": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132082": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132083": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132084": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132085": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132086": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132087": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132088": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132089": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132090": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132091": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132092": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132093": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132094": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132095": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132096": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132097": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132098": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132099": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "132100": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + } + }, + "additional_special_tokens": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "bos_token": "", + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "extra_special_tokens": {}, + "model_input_names": [ + "input_ids", + "attention_mask" + ], + "model_max_length": 8192, + "pad_token": "<|im_end|>", + "padding_side": "right", + "tokenizer_class": "PreTrainedTokenizerFast", + "unk_token": "" +} diff --git a/tree.py b/tree.py new file mode 100644 index 0000000000000000000000000000000000000000..5ce5c83cd8eb054c97e14ce0273987cd3ed4d95d --- /dev/null +++ b/tree.py @@ -0,0 +1,414 @@ + +from __future__ import annotations +import hashlib +import math +import os +from collections.abc import Callable, Mapping +from dataclasses import dataclass +from numbers import Integral, Real +from pathlib import Path +import torch +import torch.nn.functional as F +PINNED_ARTIFACT_VERSION = 1 +PINNED_ARTIFACT_ALGORITHM = 'recursive_centered_pca_rank_median_v1' +PINNED_ARTIFACT_METRIC = 'normalized_squared_l2_tree_ultrametric' +PINNED_PRODUCTION_VOCAB_SIZE = 131072 +PINNED_PRODUCTION_DEPTH = 17 +DEFAULT_SEMANTIC_TREE_STEPS = 4 +DEFAULT_SEMANTIC_TREE_SCHEDULE = 'shift' +DEFAULT_SEMANTIC_TREE_SHIFT = 5.0 +MAX_SEMANTIC_TREE_REFINEMENT_GAP = 2 +SUPPORTED_SEMANTIC_TREE_INFERENCE_SCHEDULES = frozenset({'linear', 'shift', 'logit_normal', 'cosine', 'cosine2', 'exp'}) + +def _plain_positive_int(value: object, *, name: str) -> int: + if isinstance(value, bool) or not isinstance(value, Integral): + raise TypeError(f'{name} must be a positive integer') + value = int(value) + if value < 1: + raise ValueError(f'{name} must be a positive integer') + return value + +def _plain_nonnegative_int(value: object, *, name: str) -> int: + if isinstance(value, bool) or not isinstance(value, Integral): + raise TypeError(f'{name} must be a non-negative integer') + value = int(value) + if value < 0: + raise ValueError(f'{name} must be a non-negative integer') + return value + +def _plain_positive_float(value: object, *, name: str) -> float: + if isinstance(value, bool) or not isinstance(value, Real): + raise TypeError(f'{name} must be a finite positive number') + value = float(value) + if not math.isfinite(value) or value <= 0.0: + raise ValueError(f'{name} must be a finite positive number') + return value + +def _is_power_of_two(value: int) -> bool: + return value > 0 and value & value - 1 == 0 + +def resolve_semantic_tree_steps(config, override=None): + steps = 4 if override is None else override + if isinstance(steps, bool) or steps not in (1, 4, 8, 16): + raise ValueError('refinement_steps must be 1, 4, 8, or 16') + return int(steps) + +@dataclass(frozen=True, slots=True) +class SemanticTreeArtifactContract: + path: str | os.PathLike[str] + bytes: int | None = None + sha256: str | None = None + algorithm: str | None = PINNED_ARTIFACT_ALGORITHM + + def __post_init__(self) -> None: + if not isinstance(self.path, (str, os.PathLike)): + raise TypeError('semantic-tree artifact path must be path-like') + raw_path = os.fspath(self.path) + if not isinstance(raw_path, str) or not raw_path.strip(): + raise ValueError('semantic-tree artifact path must be nonempty') + object.__setattr__(self, 'path', Path(raw_path).expanduser()) + if self.bytes is not None: + object.__setattr__(self, 'bytes', _plain_positive_int(self.bytes, name='semantic-tree artifact bytes')) + if self.sha256 is not None: + if not isinstance(self.sha256, str): + raise TypeError('semantic-tree artifact sha256 must be a string') + digest = self.sha256.strip().lower() + if len(digest) != 64 or any((character not in '0123456789abcdef' for character in digest)): + raise ValueError('semantic-tree artifact sha256 must be 64 hexadecimal characters') + object.__setattr__(self, 'sha256', digest) + if self.algorithm not in (None, PINNED_ARTIFACT_ALGORITHM): + raise ValueError(f'Unsupported semantic-tree algorithm: {self.algorithm!r}') + +def production_semantic_tree_contract(path: str | os.PathLike[str]) -> SemanticTreeArtifactContract: + return SemanticTreeArtifactContract(path=path, sha256='4b7ee94fbb10fd4146a4ad167b595b037e3f591eaa12ecf3f0b411c82384a714', algorithm=PINNED_ARTIFACT_ALGORITHM) + +def _sha256_file(path: Path) -> str: + digest = hashlib.sha256() + with path.open('rb') as artifact_file: + for block in iter(lambda : artifact_file.read(1024 * 1024), b''): + digest.update(block) + return digest.hexdigest() + +class BalancedSemanticTree: + + def __init__(self, leaf_to_token: torch.Tensor) -> None: + if not torch.is_tensor(leaf_to_token): + raise TypeError('leaf_to_token must be a tensor') + if leaf_to_token.ndim != 1: + raise ValueError('leaf_to_token must be one-dimensional') + if leaf_to_token.dtype == torch.bool or leaf_to_token.is_floating_point() or leaf_to_token.is_complex(): + raise TypeError('leaf_to_token must contain integer token IDs') + vocab_size = int(leaf_to_token.numel()) + if not _is_power_of_two(vocab_size): + raise ValueError('semantic-tree vocabulary size must be a power of two') + permutation = leaf_to_token.to(dtype=torch.long).contiguous() + expected = torch.arange(vocab_size, device=permutation.device) + if not torch.equal(torch.sort(permutation).values, expected): + raise ValueError('leaf_to_token must be a permutation of [0, V)') + token_to_leaf = torch.empty_like(permutation) + token_to_leaf.scatter_(0, permutation, expected) + self.vocab_size = vocab_size + self.depth = int(math.log2(vocab_size)) + self.leaf_to_token = permutation + self.token_to_leaf = token_to_leaf + + @classmethod + def _from_validated(cls, leaf_to_token: torch.Tensor, token_to_leaf: torch.Tensor) -> BalancedSemanticTree: + tree = cls.__new__(cls) + tree.vocab_size = int(leaf_to_token.numel()) + tree.depth = int(math.log2(tree.vocab_size)) + tree.leaf_to_token = leaf_to_token + tree.token_to_leaf = token_to_leaf + return tree + + @classmethod + def from_artifact(cls, contract: SemanticTreeArtifactContract, expected_vocab_size: int=PINNED_PRODUCTION_VOCAB_SIZE) -> BalancedSemanticTree: + if not isinstance(contract, SemanticTreeArtifactContract): + raise TypeError('contract must be a SemanticTreeArtifactContract') + expected_vocab_size = _plain_positive_int(expected_vocab_size, name='expected_vocab_size') + if not _is_power_of_two(expected_vocab_size): + raise ValueError('expected_vocab_size must be a power of two') + path = contract.path + assert isinstance(path, Path) + if not path.is_file(): + raise FileNotFoundError(f'semantic-tree artifact is not a file: {path}') + actual_bytes = path.stat().st_size + if contract.bytes is not None and actual_bytes != contract.bytes: + raise ValueError(f'semantic-tree artifact byte count mismatch: expected {contract.bytes}, got {actual_bytes}') + if contract.sha256 is not None: + actual_sha256 = _sha256_file(path) + if actual_sha256 != contract.sha256: + raise ValueError(f'semantic-tree artifact sha256 mismatch: expected {contract.sha256}, got {actual_sha256}') + artifact = torch.load(path, map_location='cpu', weights_only=True) + if not isinstance(artifact, Mapping): + raise TypeError('semantic-tree artifact must contain a mapping') + algorithm = artifact.get('algorithm') + allowed_algorithms = (contract.algorithm,) if contract.algorithm is not None else (PINNED_ARTIFACT_ALGORITHM,) + if algorithm not in allowed_algorithms: + raise ValueError(f'semantic-tree artifact algorithm mismatch: expected one of {allowed_algorithms!r}, got {algorithm!r}') + pinned_values = {'version': PINNED_ARTIFACT_VERSION, 'metric': PINNED_ARTIFACT_METRIC, 'vocab_size': expected_vocab_size, 'depth': int(math.log2(expected_vocab_size)), 'radii_monotone': True} + for (field_name, expected_value) in pinned_values.items(): + if artifact.get(field_name) != expected_value: + raise ValueError(f'semantic-tree artifact {field_name} mismatch: expected {expected_value!r}, got {artifact.get(field_name)!r}') + leaf_to_token = artifact.get('leaf_to_token') + heap_radii = artifact.get('heap_radii') + if not torch.is_tensor(leaf_to_token) or leaf_to_token.dtype != torch.int32: + raise TypeError('semantic-tree leaf_to_token must be torch.int32') + if tuple(leaf_to_token.shape) != (expected_vocab_size,): + raise ValueError('semantic-tree leaf_to_token shape disagrees with vocabulary') + if not torch.is_tensor(heap_radii) or heap_radii.dtype != torch.float32: + raise TypeError('semantic-tree heap_radii must be torch.float32') + if tuple(heap_radii.shape) != (expected_vocab_size - 1,): + raise ValueError('semantic-tree heap_radii shape disagrees with vocabulary') + if not bool(torch.isfinite(heap_radii).all()) or bool((heap_radii < 0).any()): + raise ValueError('semantic-tree heap_radii must be finite and nonnegative') + return cls(leaf_to_token) + + @property + def device(self) -> torch.device: + return self.leaf_to_token.device + + def to(self, device: torch.device | str) -> BalancedSemanticTree: + resolved = torch.device(device) + if resolved == self.device: + return self + return type(self)._from_validated(self.leaf_to_token.to(resolved), self.token_to_leaf.to(resolved)) + + def _check_tokens(self, tokens: torch.Tensor, *, name: str) -> None: + if not torch.is_tensor(tokens): + raise TypeError(f'{name} must be a tensor') + if tokens.dtype == torch.bool or tokens.is_floating_point() or tokens.is_complex(): + raise TypeError(f'{name} must contain integer code IDs') + if tokens.device != self.device: + raise ValueError(f'{name} and semantic-tree lookups must share a device') + if tokens.numel() and bool(((tokens < 0) | (tokens >= self.vocab_size)).any()): + raise ValueError(f'{name} contains code IDs outside [0, V)') + + def _levels(self, levels: int | torch.Tensor, shape: torch.Size, device: torch.device) -> torch.Tensor: + if isinstance(levels, bool) or (not isinstance(levels, Integral) and (not torch.is_tensor(levels))): + raise TypeError('levels must contain integers') + level_tensor = torch.as_tensor(levels, device=device) + if level_tensor.dtype == torch.bool or level_tensor.is_floating_point() or level_tensor.is_complex(): + raise TypeError('levels must contain integers') + if level_tensor.ndim < len(shape): + level_tensor = level_tensor.reshape(level_tensor.shape + (1,) * (len(shape) - level_tensor.ndim)) + try: + level_tensor = torch.broadcast_to(level_tensor, shape).long() + except RuntimeError as error: + raise ValueError('levels are not broadcastable to endpoint shape') from error + if bool((level_tensor < 0).any()) or bool((level_tensor > self.depth).any()): + raise ValueError(f'levels must lie in [0, {self.depth}]') + return level_tensor + + def node_ids(self, tokens: torch.Tensor, levels: int | torch.Tensor) -> torch.Tensor: + self._check_tokens(tokens, name='tokens') + level_tensor = self._levels(levels, tokens.shape, tokens.device) + leaves = self.token_to_leaf[tokens.long()] + return torch.bitwise_right_shift(leaves, self.depth - level_tensor) + + @torch.no_grad() + def sample_representatives(self, endpoints: torch.Tensor, levels: int | torch.Tensor, generator: torch.Generator | None=None) -> torch.Tensor: + self._check_tokens(endpoints, name='endpoints') + level_tensor = self._levels(levels, endpoints.shape, endpoints.device) + leaves = self.token_to_leaf[endpoints.long()] + noisy = level_tensor < self.depth + if not bool(noisy.any()): + return endpoints.clone() + noisy_leaves = leaves[noisy] + noisy_levels = level_tensor[noisy] + shifts = self.depth - noisy_levels + subtree_starts = torch.bitwise_left_shift(torch.bitwise_right_shift(noisy_leaves, shifts), shifts) + subtree_sizes = torch.bitwise_left_shift(torch.ones_like(shifts), shifts) + random_bits = torch.randint(self.vocab_size, (int(noisy.sum().item()),), device=endpoints.device, dtype=torch.long, generator=generator) + sampled_leaves = subtree_starts + torch.bitwise_and(random_bits, subtree_sizes - 1) + result = endpoints.clone() + result[noisy] = self.leaf_to_token[sampled_leaves].to(endpoints.dtype) + return result + +def _validate_ages(ages: torch.Tensor, *, steps: int) -> tuple[torch.Tensor, int]: + steps = _plain_positive_int(steps, name='steps') + if not torch.is_tensor(ages): + raise TypeError('ages must be a tensor') + if ages.dtype == torch.bool or ages.is_floating_point() or ages.is_complex(): + raise TypeError('ages must contain integers') + if bool((ages < 0).any()) or bool((ages > steps).any()): + raise ValueError(f'ages must lie in [0, {steps}]') + return (ages.long(), steps) + +def semantic_tree_levels_for_ages(ages: torch.Tensor, steps: int=DEFAULT_SEMANTIC_TREE_STEPS, depth: int=PINNED_PRODUCTION_DEPTH) -> torch.Tensor: + (ages, steps) = _validate_ages(ages, steps=steps) + depth = _plain_positive_int(depth, name='depth') + if steps > depth: + raise ValueError('steps cannot exceed tree depth') + return torch.div(ages * depth, steps, rounding_mode='floor') + +def semantic_tree_noise_for_ages(ages: torch.Tensor, steps: int=DEFAULT_SEMANTIC_TREE_STEPS) -> torch.Tensor: + (ages, steps) = _validate_ages(ages, steps=steps) + return 1.0 - ages.to(dtype=torch.float32) / float(steps) + +def semantic_tree_activation_counts(content_tokens: int, *, activation_steps: int, schedule: str=DEFAULT_SEMANTIC_TREE_SCHEDULE, shift: float=DEFAULT_SEMANTIC_TREE_SHIFT, device: torch.device | str | None=None) -> torch.Tensor: + content_tokens = _plain_positive_int(content_tokens, name='content_tokens') + activation_steps = min(_plain_positive_int(activation_steps, name='activation_steps'), content_tokens) + if not isinstance(schedule, str): + raise TypeError('schedule must be a string') + schedule = schedule.strip().lower() + if schedule not in SUPPORTED_SEMANTIC_TREE_INFERENCE_SCHEDULES: + allowed = ', '.join(sorted(SUPPORTED_SEMANTIC_TREE_INFERENCE_SCHEDULES)) + raise ValueError(f'unsupported semantic-tree inference schedule {schedule!r}; expected one of: {allowed}') + shift = _plain_positive_float(shift, name='shift') + sample_times = torch.linspace(0.0, 1.0, activation_steps + 1, dtype=torch.float32) + if schedule == 'linear': + sigmas = sample_times + elif schedule == 'shift': + sigmas = shift * sample_times / (1.0 + (shift - 1.0) * sample_times) + elif schedule == 'logit_normal': + sigmas = 0.5 * (1.0 + torch.erf(torch.logit(sample_times) / math.sqrt(2.0))) + elif schedule == 'cosine': + sigmas = 1.0 - 0.5 * (1.0 + torch.cos(math.pi * sample_times)) + elif schedule == 'cosine2': + sigmas = torch.sin(0.5 * math.pi * sample_times) + else: + sigmas = (1.0 - torch.exp(-5.0 * sample_times)) / (1.0 - math.exp(-5.0)) + sigmas = sigmas.clamp(0.0001, 1.0) + boundaries = (sigmas * content_tokens).to(dtype=torch.long) + counts = (boundaries[1:] - boundaries[:-1]).clamp_min(1) + excess = int(counts.sum().item()) - content_tokens + cursor = 0 + while excess > 0: + cursor %= counts.numel() + if int(counts[cursor].item()) == 1: + cursor += 1 + continue + counts[cursor] -= 1 + excess -= 1 + cursor += 1 + if int(counts.sum().item()) != content_tokens: + raise RuntimeError('semantic-tree activation counts do not cover content') + return counts.flip(0).to(device=device) + +def resolve_semantic_tree_atomic_block_size(value: object=1) -> int: + block_size = _plain_positive_int(value, name='semantic_tree_atomic_block_size') + if block_size not in {1, 2, 4, 8}: + raise ValueError('semantic_tree_atomic_block_size currently supports 1, 2, 4, or 8') + return block_size + +def resolve_semantic_tree_refinement_gap(value: object=0) -> int: + gap = _plain_nonnegative_int(value, name='semantic_tree_refinement_gap') + if gap > MAX_SEMANTIC_TREE_REFINEMENT_GAP: + raise ValueError('semantic_tree_refinement_gap currently supports only 0, 1, or 2') + return gap + +def semantic_tree_decode_schedule(activation_counts: torch.Tensor, *, refinement_steps: int, refinement_gap: int=0) -> torch.Tensor: + if not torch.is_tensor(activation_counts): + raise TypeError('activation_counts must be a tensor') + if activation_counts.ndim != 2: + raise ValueError('activation_counts must have shape [batch, rounds]') + if activation_counts.dtype not in {torch.uint8, torch.int8, torch.int16, torch.int32, torch.int64}: + raise TypeError('activation_counts must use an integer dtype') + if activation_counts.shape[1] == 0: + raise ValueError('activation_counts must contain at least one round') + if bool((activation_counts < 0).any()): + raise ValueError('activation_counts must be non-negative') + refinement_steps = _plain_positive_int(refinement_steps, name='refinement_steps') + refinement_gap = resolve_semantic_tree_refinement_gap(refinement_gap) + flush_rounds = refinement_steps - 1 + refinement_steps * refinement_gap + if flush_rounds == 0: + return activation_counts + flush = torch.zeros(activation_counts.shape[0], flush_rounds, dtype=activation_counts.dtype, device=activation_counts.device) + return torch.cat((activation_counts, flush), dim=1) + +def semantic_tree_refinement_due(ages: torch.Tensor, next_refinement_round: torch.Tensor, *, decode_round: int, refinement_steps: int) -> torch.Tensor: + if not torch.is_tensor(ages) or not torch.is_tensor(next_refinement_round): + raise TypeError('ages and next_refinement_round must be tensors') + if ages.shape != next_refinement_round.shape: + raise ValueError('ages and next_refinement_round must align') + if ages.device != next_refinement_round.device: + raise ValueError('ages and next_refinement_round must share a device') + for (tensor, name) in ((ages, 'ages'), (next_refinement_round, 'next_refinement_round')): + if tensor.dtype == torch.bool or tensor.is_floating_point(): + raise TypeError(f'{name} must use an integer dtype') + decode_round = _plain_nonnegative_int(decode_round, name='decode_round') + refinement_steps = _plain_positive_int(refinement_steps, name='refinement_steps') + return ages.ge(0) & ages.lt(refinement_steps) & next_refinement_round.le(decode_round) +EmbeddingSource = torch.Tensor | Callable[[torch.Tensor], torch.Tensor] + +def _embed_ids(source: EmbeddingSource, token_ids: torch.Tensor) -> torch.Tensor: + if torch.is_tensor(source): + if source.ndim != 2 or not source.is_floating_point(): + raise TypeError('embedding weight must be a floating-point matrix') + if source.device != token_ids.device: + raise ValueError('embedding weight and token IDs must share a device') + if token_ids.numel() and bool(((token_ids < 0) | (token_ids >= source.shape[0])).any()): + raise ValueError('token ID lies outside the embedding weight') + return F.embedding(token_ids.long(), source) + if not callable(source): + raise TypeError('embedding source must be a weight tensor or callable') + embedded = source(token_ids) + if not torch.is_tensor(embedded): + raise TypeError('embedding callback must return a tensor') + return embedded + +def build_semantic_tree_embeddings(representatives: torch.Tensor, noise_levels: float | torch.Tensor, embedding_callback: EmbeddingSource, mask_token_id: int) -> torch.Tensor: + if not torch.is_tensor(representatives): + raise TypeError('representatives must be a tensor') + if representatives.dtype == torch.bool or representatives.is_floating_point() or representatives.is_complex(): + raise TypeError('representatives must contain integer code IDs') + if isinstance(mask_token_id, bool) or not isinstance(mask_token_id, Integral): + raise TypeError('mask_token_id must be an integer') + mask_token_id = int(mask_token_id) + if mask_token_id < 0: + raise ValueError('mask_token_id must be nonnegative') + representative_embeddings = _embed_ids(embedding_callback, representatives) + expected_prefix = tuple(representatives.shape) + if representative_embeddings.ndim != representatives.ndim + 1 or tuple(representative_embeddings.shape[:-1]) != expected_prefix or (not representative_embeddings.is_floating_point()): + raise ValueError('representative embeddings must have shape representatives.shape + [H]') + mask_ids = torch.tensor([mask_token_id], dtype=representatives.dtype, device=representatives.device) + mask_embedding = _embed_ids(embedding_callback, mask_ids) + if mask_embedding.shape != (1, representative_embeddings.shape[-1]): + raise ValueError('MASK embedding must have shape [1, H]') + if mask_embedding.device != representative_embeddings.device or mask_embedding.dtype != representative_embeddings.dtype: + raise ValueError('representative and MASK embeddings must share dtype/device') + noise = torch.as_tensor(noise_levels, device=representatives.device, dtype=torch.float32) + if noise.ndim < representatives.ndim: + noise = noise.reshape(noise.shape + (1,) * (representatives.ndim - noise.ndim)) + try: + noise = torch.broadcast_to(noise, representatives.shape) + except RuntimeError as error: + raise ValueError('noise_levels are not broadcastable to representatives') from error + if not bool(torch.isfinite(noise).all()) or bool((noise < 0).any()) or bool((noise > 1).any()): + raise ValueError('noise_levels must be finite and lie in [0, 1]') + noise_in_embedding_dtype = noise.to(dtype=representative_embeddings.dtype) + combined = representative_embeddings + noise_in_embedding_dtype.unsqueeze(-1) * mask_embedding + return torch.where(noise.eq(0).unsqueeze(-1), representative_embeddings, combined) + +@dataclass(frozen=True, slots=True) +class SemanticTreeAdvance: + representatives: torch.Tensor + ages: torch.Tensor + levels: torch.Tensor + noise_levels: torch.Tensor + committed: torch.Tensor + +@torch.no_grad() +def advance_revisable_semantic_tree(current_representatives: torch.Tensor, x0_proposals: torch.Tensor, ages: torch.Tensor, tree: BalancedSemanticTree, steps: int=DEFAULT_SEMANTIC_TREE_STEPS, generator: torch.Generator | None=None) -> SemanticTreeAdvance: + if not isinstance(tree, BalancedSemanticTree): + raise TypeError('tree must be a BalancedSemanticTree') + tree._check_tokens(current_representatives, name='current_representatives') + tree._check_tokens(x0_proposals, name='x0_proposals') + if current_representatives.shape != x0_proposals.shape: + raise ValueError('current_representatives and x0_proposals must align') + if current_representatives.dtype != x0_proposals.dtype: + raise ValueError('current_representatives and x0_proposals must share dtype') + if not torch.is_tensor(ages) or ages.shape != current_representatives.shape: + raise ValueError('ages must align with representative tokens') + (validated_ages, steps) = _validate_ages(ages, steps=steps) + if validated_ages.device != current_representatives.device: + raise ValueError('ages and representative tokens must share a device') + if steps > tree.depth: + raise ValueError('steps cannot exceed tree depth') + unfinished = validated_ages < steps + next_ages = torch.where(unfinished, validated_ages + 1, validated_ages) + next_levels = semantic_tree_levels_for_ages(next_ages, steps=steps, depth=tree.depth) + proposal_representatives = tree.sample_representatives(x0_proposals, next_levels, generator=generator) + next_representatives = torch.where(unfinished, proposal_representatives, current_representatives) + return SemanticTreeAdvance(representatives=next_representatives, ages=next_ages.to(dtype=ages.dtype), levels=next_levels, noise_levels=semantic_tree_noise_for_ages(next_ages, steps=steps), committed=next_ages.eq(steps)) diff --git a/tree_metadata.json b/tree_metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..f94c326de0cf16632283c698080b5d573cb39386 --- /dev/null +++ b/tree_metadata.json @@ -0,0 +1,7 @@ +{ + "filename": "pca_tree.pt", + "algorithm": "recursive_centered_pca_rank_median_v1", + "sha256": "4b7ee94fbb10fd4146a4ad167b595b037e3f591eaa12ecf3f0b411c82384a714", + "vocab_size": 131072, + "depth": 17 +} diff --git a/utils.py b/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..a2635f094715348e43d9391a8225f476fd7ca925 --- /dev/null +++ b/utils.py @@ -0,0 +1,27 @@ +# ADOBE CONFIDENTIAL +# Copyright 2025 Adobe +# All Rights Reserved. +# NOTICE: All information contained herein is, and remains +# the property of Adobe and its suppliers, if any. The intellectual +# and technical concepts contained herein are proprietary to Adobe +# and its suppliers and are protected by all applicable intellectual +# property laws, including trade secret and copyright laws. +# Dissemination of this information or reproduction of this material +# is strictly forbidden unless prior written permission is obtained +# from Adobe. + +from __future__ import annotations +import torch + +def pad_along_last_dim(x, size): + pad_size = size - x.shape[-1] + if pad_size == 0: + return x + padding = torch.zeros(*x.shape[:-1], pad_size, dtype=x.dtype, device=x.device) + x_padded = torch.cat([x, padding], dim=-1) + return x_padded + +def maybe_truncate_last_dim(x, size): + if size == x.shape[-1]: + return x + return x[..., :size] diff --git a/vision.py b/vision.py new file mode 100644 index 0000000000000000000000000000000000000000..60cffd5fb701f163a9fbf0b1e1e951dba63d61ef --- /dev/null +++ b/vision.py @@ -0,0 +1,64 @@ +import math +from types import SimpleNamespace +import numpy as np +import torch +from torch import nn +from timm.models.vision_transformer import Block +from .radio_patch import ViTPatchGenerator +from .radio_cls import ClsToken as _bundle_radio_cls + +class RadioBackbone(nn.Module): + def __init__(self): + super().__init__() + self.patch_generator = ViTPatchGenerator(16,1280,224,cls_token=True,max_input_dims=2048,num_cls_tokens=4,register_multiple=10) + self.blocks = nn.Sequential(*[Block(1280,16,mlp_ratio=4,qkv_bias=True) for _ in range(32)]) + def forward(self, pixels): + return self.blocks(self.patch_generator(pixels))[:,10:] + +class RadioModel(nn.Module): + def __init__(self): + super().__init__() + self.model = RadioBackbone() + self.register_buffer('summary_idxs',torch.tensor([0,1,2],dtype=torch.int64)) + def forward(self, pixels): + return self.model(pixels) + +class RadioWrapper(nn.Module): + def __init__(self): + super().__init__() + self.radio_model = RadioModel() + def forward(self, pixels): + return self.radio_model(pixels) + +class RadioVisionTower(nn.Module): + def __init__(self): + super().__init__() + self.vision_tower = RadioWrapper() + self.image_processor = RadioImageProcessor() + self.is_loaded = True + self.config = SimpleNamespace(hidden_size=1280,patch_size=16) + def forward(self, images): + reference = next(self.parameters()) + if isinstance(images, (tuple,list)): + return torch.cat([self.vision_tower(x.to(reference)) for x in images], dim=1) + return self.vision_tower(images.to(reference)) + +class RadioImageProcessor: + radio_downsample_ratio = 0.5 + def __call__(self, images, return_tensors='pt'): + if len(images)!=1: + raise ValueError('Process one image at a time') + image = images[0].convert('RGB') + ph,pw = round(image.height/16+0.5), round(image.width/16+0.5) + factor=min(math.sqrt(12000/(ph*pw)),1.) + h,w=math.floor(factor*ph),math.floor(factor*pw) + if h*w<1024: + up=math.sqrt(1024/(h*w)); h,w=math.ceil(up*h),math.ceil(up*w) + if h%2:h=h+1 if (h+1)*w<=12000 else max(2,h-1) + if w%2:w=w+1 if h*(w+1)<=12000 else max(2,w-1) + pixels=torch.from_numpy(np.asarray(image,dtype=np.uint8).copy()).permute(2,0,1).unsqueeze(0).float() + if pixels.shape[-2:]!=(h*16,w*16): + pixels=torch.nn.functional.interpolate(pixels,size=(h*16,w*16),mode='bicubic',align_corners=False,antialias=True) + mean=torch.tensor([.48145466,.4578275,.40821073]).view(1,3,1,1) + std=torch.tensor([.26862954,.26130258,.27577711]).view(1,3,1,1) + return SimpleNamespace(pixel_values=(pixels/255.-mean)/std) diff --git a/vq.py b/vq.py new file mode 100644 index 0000000000000000000000000000000000000000..15981136ec21db04d046d9a2c10431c6865992a5 --- /dev/null +++ b/vq.py @@ -0,0 +1,42 @@ +from types import SimpleNamespace +import numpy as np +import torch +from torch import nn +from .vq_model import Encoder, Decoder + +class Codebook(nn.Module): + def __init__(self): + super().__init__() + self.embedding = nn.Embedding(131072, 256) + def get_codebook_entry(self, indices, shape=None): + result = self.embedding(indices) + if shape is not None: + result = result.view(shape).permute(0,3,1,2).contiguous() + return result + def forward(self, z): + # Identical argmax to the IBQ softmax; chunking bounds scratch memory. + b,c,h,w = z.shape + flat = z.permute(0,2,3,1).reshape(-1,c) + ids = torch.cat([(part @ self.embedding.weight.T).argmax(-1) for part in flat.split(256)]) + quant = self.embedding(ids).reshape(b,h,w,c).permute(0,3,1,2).contiguous() + return quant, 0.0, (None,None,ids) + +class Emu3VQ(nn.Module): + def __init__(self): + super().__init__() + architecture = dict(double_z=False,z_channels=256,resolution=256,in_channels=3,out_ch=3,ch=256,ch_mult=[1,1,2,2,4],num_res_blocks=4,attn_resolutions=[16],dropout=0.0) + self.encoder = Encoder(**architecture) + self.decoder = Decoder(**architecture) + self.quantize = Codebook() + self.quant_conv = nn.Conv2d(256,256,1) + self.post_quant_conv = nn.Conv2d(256,256,1) + self.config = SimpleNamespace(num_vq_embeddings=131072,vq_embedding_dim=256) + def encode(self, images, mini_batch_size=None): + return self.quantize(self.quant_conv(self.encoder(images))) + def decode(self, quant, mini_batch_size=None): + return self.decoder(self.post_quant_conv(quant)) + +class Emu3ImageProcessor: + def preprocess(self, image): + pixels = np.asarray(image.convert('RGB'), dtype=np.float32) / 127.5 - 1.0 + return torch.from_numpy(pixels).permute(2,0,1).unsqueeze(0) diff --git a/vq_model.py b/vq_model.py new file mode 100644 index 0000000000000000000000000000000000000000..18c6b13ab019e9c75cd3fa1de654f021c4bf71fb --- /dev/null +++ b/vq_model.py @@ -0,0 +1,234 @@ +# pytorch_diffusion + derived encoder decoder +from __future__ import annotations +import torch +import torch.nn as nn + +def nonlinearity(x): + return x * torch.sigmoid(x) + +def Normalize(in_channels): + return torch.nn.GroupNorm(num_groups=32, num_channels=in_channels, eps=1e-06, affine=True) + +class Upsample(nn.Module): + + def __init__(self, in_channels, with_conv): + super().__init__() + self.with_conv = with_conv + if self.with_conv: + self.conv = torch.nn.Conv2d(in_channels, in_channels, kernel_size=3, stride=1, padding=1) + + def forward(self, x): + x = torch.nn.functional.interpolate(x, scale_factor=2.0, mode='nearest') + if self.with_conv: + x = self.conv(x) + return x + +class Downsample(nn.Module): + + def __init__(self, in_channels, with_conv): + super().__init__() + self.with_conv = with_conv + if self.with_conv: + self.conv = torch.nn.Conv2d(in_channels, in_channels, kernel_size=3, stride=2, padding=0) + + def forward(self, x): + if self.with_conv: + pad = (0, 1, 0, 1) + x = torch.nn.functional.pad(x, pad, mode='constant', value=0) + x = self.conv(x) + else: + x = torch.nn.functional.avg_pool2d(x, kernel_size=2, stride=2) + return x + +class ResnetBlock(nn.Module): + + def __init__(self, *, in_channels, out_channels=None, conv_shortcut=False, dropout, temb_channels=512): + super().__init__() + self.in_channels = in_channels + out_channels = in_channels if out_channels is None else out_channels + self.out_channels = out_channels + self.use_conv_shortcut = conv_shortcut + self.norm1 = Normalize(in_channels) + self.conv1 = torch.nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=1, padding=1) + if temb_channels > 0: + self.temb_proj = torch.nn.Linear(temb_channels, out_channels) + self.norm2 = Normalize(out_channels) + self.dropout = torch.nn.Dropout(dropout) + self.conv2 = torch.nn.Conv2d(out_channels, out_channels, kernel_size=3, stride=1, padding=1) + if self.in_channels != self.out_channels: + if self.use_conv_shortcut: + self.conv_shortcut = torch.nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=1, padding=1) + else: + self.nin_shortcut = torch.nn.Conv2d(in_channels, out_channels, kernel_size=1, stride=1, padding=0) + + def forward(self, x, temb): + h = x + h = self.norm1(h) + h = nonlinearity(h) + h = self.conv1(h) + if temb is not None: + h = h + self.temb_proj(nonlinearity(temb))[:, :, None, None] + h = self.norm2(h) + h = nonlinearity(h) + h = self.dropout(h) + h = self.conv2(h) + if self.in_channels != self.out_channels: + if self.use_conv_shortcut: + x = self.conv_shortcut(x) + else: + x = self.nin_shortcut(x) + return x + h + +class AttnBlock(nn.Module): + + def __init__(self, in_channels): + super().__init__() + self.in_channels = in_channels + self.norm = Normalize(in_channels) + self.q = torch.nn.Conv2d(in_channels, in_channels, kernel_size=1, stride=1, padding=0) + self.k = torch.nn.Conv2d(in_channels, in_channels, kernel_size=1, stride=1, padding=0) + self.v = torch.nn.Conv2d(in_channels, in_channels, kernel_size=1, stride=1, padding=0) + self.proj_out = torch.nn.Conv2d(in_channels, in_channels, kernel_size=1, stride=1, padding=0) + + def forward(self, x): + h_ = x + h_ = self.norm(h_) + q = self.q(h_) + k = self.k(h_) + v = self.v(h_) + (b, c, h, w) = q.shape + q = q.reshape(b, c, h * w) + q = q.permute(0, 2, 1) + k = k.reshape(b, c, h * w) + w_ = torch.bmm(q, k) + w_ = w_ * int(c) ** -0.5 + w_ = torch.nn.functional.softmax(w_, dim=2) + v = v.reshape(b, c, h * w) + w_ = w_.permute(0, 2, 1) + h_ = torch.bmm(v, w_) + h_ = h_.reshape(b, c, h, w) + h_ = self.proj_out(h_) + return x + h_ + +class Encoder(nn.Module): + + def __init__(self, *, ch, out_ch, ch_mult=(1, 2, 4, 8), num_res_blocks, attn_resolutions, dropout=0.0, resamp_with_conv=True, in_channels, resolution, z_channels, double_z=True, **ignore_kwargs): + super().__init__() + self.ch = ch + self.temb_ch = 0 + self.num_resolutions = len(ch_mult) + self.num_res_blocks = num_res_blocks + self.resolution = resolution + self.in_channels = in_channels + self.conv_in = torch.nn.Conv2d(in_channels, self.ch, kernel_size=3, stride=1, padding=1) + curr_res = resolution + in_ch_mult = (1,) + tuple(ch_mult) + self.down = nn.ModuleList() + for i_level in range(self.num_resolutions): + block = nn.ModuleList() + attn = nn.ModuleList() + block_in = ch * in_ch_mult[i_level] + block_out = ch * ch_mult[i_level] + for i_block in range(self.num_res_blocks): + block.append(ResnetBlock(in_channels=block_in, out_channels=block_out, temb_channels=self.temb_ch, dropout=dropout)) + block_in = block_out + if curr_res in attn_resolutions: + attn.append(AttnBlock(block_in)) + down = nn.Module() + down.block = block + down.attn = attn + if i_level != self.num_resolutions - 1: + down.downsample = Downsample(block_in, resamp_with_conv) + curr_res = curr_res // 2 + self.down.append(down) + self.mid = nn.Module() + self.mid.block_1 = ResnetBlock(in_channels=block_in, out_channels=block_in, temb_channels=self.temb_ch, dropout=dropout) + self.mid.attn_1 = AttnBlock(block_in) + self.mid.block_2 = ResnetBlock(in_channels=block_in, out_channels=block_in, temb_channels=self.temb_ch, dropout=dropout) + self.norm_out = Normalize(block_in) + self.conv_out = torch.nn.Conv2d(block_in, 2 * z_channels if double_z else z_channels, kernel_size=3, stride=1, padding=1) + + def forward(self, x): + temb = None + hs = [self.conv_in(x)] + for i_level in range(self.num_resolutions): + for i_block in range(self.num_res_blocks): + h = self.down[i_level].block[i_block](hs[-1], temb) + if len(self.down[i_level].attn) > 0: + h = self.down[i_level].attn[i_block](h) + hs.append(h) + if i_level != self.num_resolutions - 1: + hs.append(self.down[i_level].downsample(hs[-1])) + h = hs[-1] + h = self.mid.block_1(h, temb) + h = self.mid.attn_1(h) + h = self.mid.block_2(h, temb) + h = self.norm_out(h) + h = nonlinearity(h) + h = self.conv_out(h) + return h + +class Decoder(nn.Module): + + def __init__(self, *, ch, out_ch, ch_mult=(1, 2, 4, 8), num_res_blocks, attn_resolutions, dropout=0.0, resamp_with_conv=True, in_channels, resolution, z_channels, give_pre_end=False, **ignorekwargs): + super().__init__() + self.ch = ch + self.temb_ch = 0 + self.num_resolutions = len(ch_mult) + self.num_res_blocks = num_res_blocks + self.resolution = resolution + self.in_channels = in_channels + self.give_pre_end = give_pre_end + in_ch_mult = (1,) + tuple(ch_mult) + block_in = ch * ch_mult[self.num_resolutions - 1] + curr_res = resolution // 2 ** (self.num_resolutions - 1) + self.z_shape = (1, z_channels, curr_res, curr_res) + self.conv_in = torch.nn.Conv2d(z_channels, block_in, kernel_size=3, stride=1, padding=1) + self.mid = nn.Module() + self.mid.block_1 = ResnetBlock(in_channels=block_in, out_channels=block_in, temb_channels=self.temb_ch, dropout=dropout) + self.mid.attn_1 = AttnBlock(block_in) + self.mid.block_2 = ResnetBlock(in_channels=block_in, out_channels=block_in, temb_channels=self.temb_ch, dropout=dropout) + self.up = nn.ModuleList() + for i_level in reversed(range(self.num_resolutions)): + block = nn.ModuleList() + attn = nn.ModuleList() + block_out = ch * ch_mult[i_level] + for i_block in range(self.num_res_blocks + 1): + block.append(ResnetBlock(in_channels=block_in, out_channels=block_out, temb_channels=self.temb_ch, dropout=dropout)) + block_in = block_out + if curr_res in attn_resolutions: + attn.append(AttnBlock(block_in)) + up = nn.Module() + up.block = block + up.attn = attn + if i_level != 0: + up.upsample = Upsample(block_in, resamp_with_conv) + curr_res = curr_res * 2 + self.up.insert(0, up) + self.norm_out = Normalize(block_in) + self.conv_out = torch.nn.Conv2d(block_in, out_ch, kernel_size=3, stride=1, padding=1) + + def forward(self, z, return_intermediate_feature=False): + self.last_z_shape = z.shape + temb = None + h = self.conv_in(z) + h = self.mid.block_1(h, temb) + h = self.mid.attn_1(h) + h = self.mid.block_2(h, temb) + im_feat_list = [] + for i_level in reversed(range(self.num_resolutions)): + for i_block in range(self.num_res_blocks + 1): + h = self.up[i_level].block[i_block](h, temb) + if len(self.up[i_level].attn) > 0: + h = self.up[i_level].attn[i_block](h) + if i_level != 0: + h = self.up[i_level].upsample(h) + im_feat_list.append(h) + if self.give_pre_end: + return h + h = self.norm_out(h) + h = nonlinearity(h) + h = self.conv_out(h) + if return_intermediate_feature: + return (h, im_feat_list) + return h diff --git a/weights_manifest.json b/weights_manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..fae5b81ecca2bacc04aa53ea8facaabc58dad55a --- /dev/null +++ b/weights_manifest.json @@ -0,0 +1,54 @@ +{ + "format": "safetensors", + "dtype": "bfloat16", + "shards": [ + { + "file": "model-00001-of-00008.safetensors", + "sha256": "c4d490e010475dde3e2b57de64261a56d6bf8e9ca7d077754913fd628f7de5f6", + "bytes": 4974634832, + "tensors": 84 + }, + { + "file": "model-00002-of-00008.safetensors", + "sha256": "933c4b2f44f9cd7be30ac7a40efbb3c58485aa9fbd6396245d8e2337faf5c5b3", + "bytes": 4999819672, + "tensors": 106 + }, + { + "file": "model-00003-of-00008.safetensors", + "sha256": "6893a316ec6655eb3f518be0f3ae3dfc80621922741df7d14f12b3d9fd123bf6", + "bytes": 4949454016, + "tensors": 95 + }, + { + "file": "model-00004-of-00008.safetensors", + "sha256": "858fab295f100b897634b72824d01e01f368dc1d500de03916854d7b2769986c", + "bytes": 4999819744, + "tensors": 106 + }, + { + "file": "model-00005-of-00008.safetensors", + "sha256": "0d31608093622df48c2284fa310170f9a1bfd127d7108bdacbc8106fcf296691", + "bytes": 4999819776, + "tensors": 106 + }, + { + "file": "model-00006-of-00008.safetensors", + "sha256": "4356b837d798b2d3250cd067c15b7f5d56fd19a8b8605bb107fb9d727c1726d0", + "bytes": 4999819272, + "tensors": 102 + }, + { + "file": "model-00007-of-00008.safetensors", + "sha256": "003f5a6c4c727e5f560e16ad91ee2264ed138c7190108dfc9b68d1b8c8445545", + "bytes": 4456023446, + "tensors": 956 + }, + { + "file": "model-00008-of-00008.safetensors", + "sha256": "299783fae2f540dfd723abbb09f8661b57122210d44b23a4c65f24b254542550", + "bytes": 2155913464, + "tensors": 2 + } + ] +}