diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 00000000..e44336aa
Binary files /dev/null and b/.DS_Store differ
diff --git a/.ipynb_checkpoints/README-checkpoint.md b/.ipynb_checkpoints/README-checkpoint.md
new file mode 100644
index 00000000..4aba5b5c
--- /dev/null
+++ b/.ipynb_checkpoints/README-checkpoint.md
@@ -0,0 +1,102 @@
+
+# TrustGraph
+
+## Introduction
+
+TrustGraph is a true end-to-end (e2e) knowledge pipeline that performs a `naive extraction` on a text corpus
+to build a RDF style knowledge graph coupled with a `RAG` service compatible with cloud LLMs and open-source
+SLMs (Small Language Models).
+
+The pipeline processing components are interconnected with a pub/sub engine to
+maximize modularity and enable new knowledge processing functions. The core processing components decode documents,
+chunk text, perform embeddings, apply a local SLM/LLM, call a LLM API, and generate LM predictions.
+
+The processing showcases the reliability and efficiences of Graph RAG algorithms which can capture
+contextual language flags that are missed in conventional RAG approaches. Graph querying algorithms enable retrieving
+not just relevant knowledge but language cues essential to understanding semantic uses unique to a text corpus.
+
+Processing modules are executed in containers. Processing can be scaled-up
+by deploying multiple containers.
+
+### Features
+
+- PDF decoding
+- Text chunking
+- Inference of LMs deployed with [Ollama](https://ollama.com)
+- Inference of LLMs: Claude, VertexAI and AzureAI serverless endpoints
+- Application of a [HuggingFace](https://hf.co) embeddings models
+- [RDF](https://www.w3.org/TR/rdf12-schema/)-aligned Knowledge Graph extraction
+- Graph edge loading into [Apache Cassandra](https://github.com/apache/cassandra)
+- Storing embeddings in [Milvus](https://github.com/milvus-io/milvus)
+- Embedding query service
+- Graph RAG query service
+- All procesing integrates with [Apache Pulsar](https://github.com/apache/pulsar/)
+- Containers, so can be deployed using Docker Compose or Kubernetes
+- Plug'n'play architecture: switch different LLM modules to suit your needs
+
+## Architecture
+
+
+
+TrustGraph is designed to be modular to support as many Language Models and environments as possible. A natural
+fit for a modular architecture is to decompose functions into a set modules connected through a pub/sub backbone.
+[Apache Pulsar](https://github.com/apache/pulsar/) serves as this pub/sub backbone. Pulsar acts as the data broker
+managing inputs and outputs between modules.
+
+**Pulsar Workflows**:
+- For processing flows, Pulsar accepts the output of a processing module
+ and queues it for input to the next subscribed module.
+- For services such as LLMs and embeddings, Pulsar provides a client/server
+ model. A Pulsar queue is used as the input to the service. When
+ processed, the output is then delivered to a separate queue where a client
+ subscriber can request that output.
+
+The entire architecture, the pub/sub backbone and set of modules, is bundled into a single Python package. A container image with the
+package installed can also run the entire architecture.
+
+## Core Modules
+
+- `chunker-recursive` - Accepts text documents and uses LangChain recursive
+ chunking algorithm to produce smaller text chunks.
+- `embeddings-hf` - A service which analyses text and returns a vector
+ embedding using one of the HuggingFace embeddings models.
+- `embeddings-vectorize` - Uses an embeddings service to get a vector
+ embedding which is added to the processor payload.
+- `graph-rag` - A query service which applies a Graph RAG algorithm to
+ provide a response to a text prompt.
+- `graph-write-cassandra` - Takes knowledge graph edges and writes them to
+ a Cassandra store.
+- `kg-extract-definitions` - knowledge extractor - examines text and
+ produces graph edges.
+ describing discovered terms and also their defintions. Definitions are
+ derived using the input documents.
+- `kg-extract-relationships` - knowledge extractor - examines text and
+ produces graph edges describing the relationships between discovered
+ terms.
+- `loader` - Takes a document and loads into the processing pipeline. Used
+ e.g. to add PDF documents.
+- `pdf-decoder` - Takes a PDF doc and emits text extracted from the document.
+ Text extraction from PDF is not a perfect science as PDF is a printable
+ format. For instance, the wrapping of text between lines in a PDF document
+ is not semantically encoded, so the decoder will see wrapped lines as
+ space-separated.
+- `vector-write-milvus` - Takes vector-entity mappings and records them
+ in the vector embeddings store.
+
+## LM Specific Modules
+
+- `llm-azure-text` - Sends request to AzureAI serverless endpoint
+- `llm-claude-text` - Sends request to Anthropic's API
+- `llm-ollama-text` - Sends request to LM running using Ollama
+- `llm-vertexai-text` - Sends request to model available through VertexAI API
+
+## Quickstart Guide
+
+See [Quickstart on Docker Compose](docs/README.quickstart-docker-compose.md)
+
+## Development Guide
+
+See [Development on trustgraph](docs/README.development.md)
+
+
+
diff --git a/.ipynb_checkpoints/docker-compose-azure-checkpoint.yaml b/.ipynb_checkpoints/docker-compose-azure-checkpoint.yaml
new file mode 100644
index 00000000..ae179cf2
--- /dev/null
+++ b/.ipynb_checkpoints/docker-compose-azure-checkpoint.yaml
@@ -0,0 +1,179 @@
+
+volumes:
+ cassandra:
+ pulsar-conf:
+ pulsar-data:
+ etcd:
+ minio-data:
+ milvus:
+
+services:
+
+ cassandra:
+ image: docker.io/cassandra:4.1.5
+ ports:
+ - "9042:9042"
+ volumes:
+ - "cassandra:/var/lib/cassandra"
+ restart: on-failure:100
+
+ pulsar:
+ image: docker.io/apachepulsar/pulsar:3.3.0
+ command: bin/pulsar standalone
+ ports:
+ - "6650:6650"
+ - "8080:8080"
+ volumes:
+ - "pulsar-conf:/pulsar/conf"
+ - "pulsar-data:/pulsar/data"
+ restart: on-failure:100
+
+ pulsar-manager:
+ image: docker.io/apachepulsar/pulsar-manager:v0.3.0
+ ports:
+ - "9527:9527"
+ - "7750:7750"
+ environment:
+ SPRING_CONFIGURATION_FILE: /pulsar-manager/pulsar-manager/application.properties
+ restart: on-failure:100
+
+ etcd:
+ image: quay.io/coreos/etcd:v3.5.5
+ command:
+ - "etcd"
+ - "-advertise-client-urls=http://127.0.0.1:2379"
+ - "-listen-client-urls"
+ - "http://0.0.0.0:2379"
+ - "--data-dir"
+ - "/etcd"
+ environment:
+ ETCD_AUTO_COMPACTION_MODE: revision
+ ETCD_AUTO_COMPACTION_RETENTION: "1000"
+ ETCD_QUOTA_BACKEND_BYTES: "4294967296"
+ ETCD_SNAPSHOT_COUNT: "50000"
+ ports:
+ - "2379:2379"
+ volumes:
+ - "etcd:/etcd"
+ restart: on-failure:100
+
+ minio:
+ image: docker.io/minio/minio:RELEASE.2024-07-04T14-25-45Z
+ command:
+ - "minio"
+ - "server"
+ - "/minio_data"
+ - "--console-address"
+ - ":9001"
+ environment:
+ MINIO_ROOT_USER: minioadmin
+ MINIO_ROOT_PASSWORD: minioadmin
+ ports:
+ - "9001:9001"
+ volumes:
+ - "minio-data:/minio_data"
+ restart: on-failure:100
+
+ milvus:
+ image: docker.io/milvusdb/milvus:v2.4.5
+ command:
+ - "milvus"
+ - "run"
+ - "standalone"
+ environment:
+ ETCD_ENDPOINTS: etcd:2379
+ MINIO_ADDRESS: minio:9000
+ ports:
+ - "9091:9091"
+ - "19530:19530"
+ volumes:
+ - "milvus:/var/lib/milvus"
+ restart: on-failure:100
+
+ pdf-decoder:
+ image: docker.io/trustgraph/trustgraph-flow:0.1.16
+ command:
+ - "pdf-decoder"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ restart: on-failure:100
+
+ chunker:
+ image: docker.io/trustgraph/trustgraph-flow:0.1.16
+ command:
+ - "chunker-recursive"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ restart: on-failure:100
+
+ vectorize:
+ image: docker.io/trustgraph/trustgraph-flow:0.1.16
+ command:
+ - "embeddings-vectorize"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ restart: on-failure:100
+
+ embeddings:
+ image: docker.io/trustgraph/trustgraph-flow:0.1.16
+ command:
+ - "embeddings-hf"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ restart: on-failure:100
+
+ kg-extract-definitions:
+ image: docker.io/trustgraph/trustgraph-flow:0.1.16
+ command:
+ - "kg-extract-definitions"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ restart: on-failure:100
+
+ kg-extract-relationships:
+ image: docker.io/trustgraph/trustgraph-flow:0.1.16
+ command:
+ - "kg-extract-relationships"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ restart: on-failure:100
+
+ vector-write:
+ image: docker.io/trustgraph/trustgraph-flow:0.1.16
+ command:
+ - "vector-write-milvus"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ - "-t"
+ - "http://milvus:19530"
+ restart: on-failure:100
+
+ graph-write:
+ image: docker.io/trustgraph/trustgraph-flow:0.1.16
+ command:
+ - "graph-write-cassandra"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ - "-g"
+ - "cassandra"
+ restart: on-failure:100
+
+ llm:
+ image: docker.io/trustgraph/trustgraph-flow:0.1.16
+ command:
+ - "llm-azure-text"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ - "-k"
+ - ${AZURE_TOKEN}
+ - "-e"
+ - ${AZURE_ENDPOINT}
+ restart: on-failure:100
+
+ graph-rag:
+ image: docker.io/trustgraph/trustgraph-flow:0.1.16
+ command:
+ - "graph-rag"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ restart: on-failure:100
diff --git a/docker-compose-cohere.yaml b/docker-compose-cohere.yaml
new file mode 100644
index 00000000..e5cf6598
--- /dev/null
+++ b/docker-compose-cohere.yaml
@@ -0,0 +1,219 @@
+
+volumes:
+ cassandra:
+ pulsar-conf:
+ pulsar-data:
+ etcd:
+ minio-data:
+ milvus:
+ prometheus-data:
+ grafana-storage:
+
+services:
+
+ cassandra:
+ image: docker.io/cassandra:4.1.5
+ ports:
+ - "9042:9042"
+ volumes:
+ - "cassandra:/var/lib/cassandra"
+ restart: on-failure:100
+
+ pulsar:
+ image: docker.io/apachepulsar/pulsar:3.3.0
+ command: bin/pulsar standalone
+ ports:
+ - "6650:6650"
+ - "8080:8080"
+ volumes:
+ - "pulsar-conf:/pulsar/conf"
+ - "pulsar-data:/pulsar/data"
+ restart: on-failure:100
+
+ init-pulsar:
+ image: docker.io/apachepulsar/pulsar:3.3.0
+ command:
+ - "sh"
+ - "-c"
+ - "pulsar-admin --admin-url http://pulsar:8080 tenants create tg && pulsar-admin --admin-url http://pulsar:8080 namespaces create tg/flow && pulsar-admin --admin-url http://pulsar:8080 namespaces create tg/request && pulsar-admin --admin-url http://pulsar:8080 namespaces create tg/response && pulsar-admin --admin-url http://pulsar:8080 namespaces set-retention --size -1 --time 3m tg/response"
+ depends_on:
+ pulsar:
+ condition: service_started
+ restart: on-failure:100
+
+ pulsar-manager:
+ image: docker.io/apachepulsar/pulsar-manager:v0.3.0
+ ports:
+ - "9527:9527"
+ - "7750:7750"
+ environment:
+ SPRING_CONFIGURATION_FILE: /pulsar-manager/pulsar-manager/application.properties
+ restart: on-failure:100
+
+ etcd:
+ image: quay.io/coreos/etcd:v3.5.5
+ command:
+ - "etcd"
+ - "-advertise-client-urls=http://127.0.0.1:2379"
+ - "-listen-client-urls"
+ - "http://0.0.0.0:2379"
+ - "--data-dir"
+ - "/etcd"
+ environment:
+ ETCD_AUTO_COMPACTION_MODE: revision
+ ETCD_AUTO_COMPACTION_RETENTION: "1000"
+ ETCD_QUOTA_BACKEND_BYTES: "4294967296"
+ ETCD_SNAPSHOT_COUNT: "50000"
+ ports:
+ - "2379:2379"
+ volumes:
+ - "etcd:/etcd"
+ restart: on-failure:100
+
+ minio:
+ image: docker.io/minio/minio:RELEASE.2024-07-04T14-25-45Z
+ command:
+ - "minio"
+ - "server"
+ - "/minio_data"
+ - "--console-address"
+ - ":9001"
+ environment:
+ MINIO_ROOT_USER: minioadmin
+ MINIO_ROOT_PASSWORD: minioadmin
+ ports:
+ - "9001:9001"
+ volumes:
+ - "minio-data:/minio_data"
+ restart: on-failure:100
+
+ milvus:
+ image: docker.io/milvusdb/milvus:v2.4.5
+ command:
+ - "milvus"
+ - "run"
+ - "standalone"
+ environment:
+ ETCD_ENDPOINTS: etcd:2379
+ MINIO_ADDRESS: minio:9000
+ ports:
+ - "9091:9091"
+ - "19530:19530"
+ volumes:
+ - "milvus:/var/lib/milvus"
+ restart: on-failure:100
+
+ prometheus:
+ image: docker.io/prom/prometheus:v2.53.1
+ ports:
+ - "9090:9090"
+ volumes:
+ - "./prometheus:/etc/prometheus"
+ - "prometheus-data:/prometheus"
+ restart: on-failure:100
+
+ grafana:
+ image: docker.io/grafana/grafana:10.0.0
+ ports:
+ - "3000:3000"
+ volumes:
+ - "grafana-storage:/var/lib/grafana"
+ - "./grafana/dashboard.yml:/etc/grafana/provisioning/dashboards/dashboard.yml"
+ - "./grafana/datasource.yml:/etc/grafana/provisioning/datasources/datasource.yml"
+ - "./grafana/dashboard.json:/var/lib/grafana/dashboards/dashboard.json"
+ environment:
+# GF_AUTH_ANONYMOUS_ORG_ROLE: Admin
+# GF_AUTH_ANONYMOUS_ENABLED: true
+# GF_ORG_ROLE: Admin
+ GF_ORG_NAME: trustgraph.ai
+# GF_SERVER_ROOT_URL: https://example.com
+ restart: on-failure:100
+
+ pdf-decoder:
+ image: docker.io/trustgraph/trustgraph-flow:0.5.5
+ command:
+ - "pdf-decoder"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ restart: on-failure:100
+
+ chunker:
+ image: docker.io/trustgraph/trustgraph-flow:0.5.5
+ command:
+ - "chunker-recursive"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ restart: on-failure:100
+
+ vectorize:
+ image: docker.io/trustgraph/trustgraph-flow:0.5.5
+ command:
+ - "embeddings-vectorize"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ restart: on-failure:100
+
+ embeddings:
+ image: docker.io/trustgraph/trustgraph-flow:0.5.5
+ command:
+ - "embeddings-hf"
+ - "-p"
+ - "pulsar://pulsar:6650"
+# - "-m"
+# - "mixedbread-ai/mxbai-embed-large-v1"
+ restart: on-failure:100
+
+ kg-extract-definitions:
+ image: docker.io/trustgraph/trustgraph-flow:0.5.5
+ command:
+ - "kg-extract-definitions"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ restart: on-failure:100
+
+ kg-extract-relationships:
+ image: docker.io/trustgraph/trustgraph-flow:0.5.5
+ command:
+ - "kg-extract-relationships"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ restart: on-failure:100
+
+ store-graph-embeddings:
+ image: docker.io/trustgraph/trustgraph-flow:0.5.5
+ command:
+ - "ge-write-milvus"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ - "-t"
+ - "http://milvus:19530"
+ restart: on-failure:100
+
+ store-triples:
+ image: docker.io/trustgraph/trustgraph-flow:0.5.5
+ command:
+ - "triples-write-cassandra"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ - "-g"
+ - "cassandra"
+ restart: on-failure:100
+
+ text-completion:
+ image: docker.io/trustgraph/trustgraph-flow:0.5.5
+ command:
+ - "text-completion-cohere"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ - "-k"
+ - ${COHERE_KEY}
+ restart: on-failure:100
+
+ graph-rag:
+ image: docker.io/trustgraph/trustgraph-flow:0.5.5
+ command:
+ - "graph-rag"
+ - "-p"
+ - "pulsar://pulsar:6650"
+ restart: on-failure:100
+
diff --git a/docs/.ipynb_checkpoints/README.quickstart-docker-compose-checkpoint.md b/docs/.ipynb_checkpoints/README.quickstart-docker-compose-checkpoint.md
new file mode 100644
index 00000000..9845d8f0
--- /dev/null
+++ b/docs/.ipynb_checkpoints/README.quickstart-docker-compose-checkpoint.md
@@ -0,0 +1,320 @@
+
+## Getting Started
+
+The `Docker Compose` files have been tested on `Linux` and `MacOS`. There are currently
+no plans for `Windows` support in the immediate future.
+
+There are 4 `Docker Compose` files depending on the desired LM deployment:
+- `VertexAI` through Google Cloud
+- `Claude` through Anthropic's API
+- `AzureAI` serverless endpoint
+- Local LM deployment through `Ollama`
+
+Docker Compose enables the following functions:
+- Run the required components for full e2e `Graph RAG` knowledge pipeline
+- Check processing logs
+- Load test text corpus and begin knowledge extraction
+- Verify extracted graph edges and number of edges
+- Run a query against the vector and graph stores to generate a response
+ using the chosen LM
+
+### Clone the Repo
+
+```
+git clone https://github.com/trustgraph-ai/trustgraph trustgraph
+cd trustgraph
+```
+
+### Install requirements
+
+```
+python3 -m venv env
+. env/bin/activate
+pip3 install pulsar-client
+pip3 install cassandra-driver
+export PYTHON_PATH=.
+```
+
+### Docker Compose files
+
+Depending on your desired LM deployment, you will choose from one of the
+following `Docker Compose` files:
+
+- `docker-compose-azure.yaml`: AzureAI endpoint. Set `AZURE_TOKEN` to the secret token and
+ `AZURE_ENDPOINT` to the URL endpoint address for the deployed model.
+- `docker-compose-claude.yaml`: Anthropic's API. Set `CLAUDE_KEY` to your API key.
+- `docker-compose-ollama.yaml`: Local LM (currently using [Gemma2](https://ollama.com/library/gemma2) deployed through Ollama. Set `OLLAMA_HOST` to the machine running Ollama (e.g. `localhost` for Ollama running locally on your machine)
+- `docker-compose-vertexai.yaml`: VertexAI API. Requires a `private.json` authentication file to authenticate with your GCP project. Filed should stored be at path `vertexai/private.json`.
+
+**NOTE**: All tokens, paths, and authentication files must be set **PRIOR** to launching a `Docker Compose` file.
+
+
+#### AzureAI Serverless Model Deployment
+
+```
+export AZURE_ENDPOINT=https://ENDPOINT.HOST.GOES.HERE/
+export AZURE_TOKEN=TOKEN-GOES-HERE
+docker-compose -f docker-compose-azure.yaml up -d
+```
+
+#### Claude through Anthropic API
+
+```
+export CLAUDE_KEY=TOKEN-GOES-HERE
+docker-compose -f docker-compose-claude.yaml up -d
+```
+
+#### Ollama Hosted Model Deployment
+
+```
+export OLLAMA_HOST=localhost # Set to hostname of Ollama host
+docker-compose -f docker-compose-ollama.yaml up -d
+```
+
+#### VertexAI through GCP
+
+```
+mkdir -p vertexai
+cp {whatever} vertexai/private.json
+docker-compose -f docker-compose-vertexai.yaml up -d
+```
+
+If you're running `SELinux` on Linux you may need to set the permissions on the
+VertexAI directory so that the key file can be mounted on a Docker container using
+the following command:
+
+```
+chcon -Rt svirt_sandbox_file_t vertexai/
+```
+
+### Verify Docker Containers
+
+On first running a `Docker Compose` file, it may take a while (depending on your network connection) to pull all the necessary components. Once all of the components have been pulled, check that the TrustGraph containers are running:
+
+```
+docker ps
+```
+
+Any containers that have exited unexpectedly can be found by checking the `STATUS` field
+using the following:
+
+```
+docker ps -a
+```
+
+### Warm-Up
+
+Before proceeding, allow the system to enter a stable a working state. In general
+`30 seconds` should be enough time for Pulsar to stablize.
+
+The system uses Cassandra for a Graph store. Cassandra can take `60-70 seconds`
+to achieve a working state.
+
+### Load a Text Corpus
+
+Create a sources directory and get a test PDF file. To demonstrate the power of TrustGraph, we're using a PDF of the public [Roger's Commision Report](https://sma.nasa.gov/SignificantIncidents/assets/rogers_commission_report.pdf) from the NASA Challenger disaster. This PDF includes complex formatting, unique terms, complex concepts, unique concepts, and information not commonly found in public knowledge sources.
+
+```
+mkdir sources
+curl -o sources/Challenger-Report-Vol1.pdf https://sma.nasa.gov/SignificantIncidents/assets/rogers_commission_report.pdf
+```
+
+Load the file for knowledge extraction:
+
+```
+scripts/loader -f sources/Challenger-Report-Vol1.pdf
+```
+
+`File loaded.` indicates the PDF has been sucessfully loaded to the processing queues and extraction will begin.
+
+### Processing Logs
+
+At this point, many processing services are running concurrently. You can check the status of these processes with the following logs:
+
+`PDF Decoder`:
+```
+docker logs trustgraph-pdf-decoder-1
+```
+
+Output should look:
+```
+Decoding 1f7b7055...
+Done.
+```
+
+`Chunker`:
+```
+docker logs trustgraph-chunker-1
+```
+
+The output should be similiar to the output of the `Decode`, except it should be a sequence of many entries.
+
+`Vectorizer`:
+```
+docker logs trustgraph-vectorize-1
+```
+
+Similar output to above processes, except many entries instead.
+
+
+`Language Model Inference`:
+```
+docker logs trustgraph-llm-1
+```
+
+Output should be a sequence of entries:
+```
+Handling prompt fa1b98ae-70ef-452b-bcbe-21a867c5e8e2...
+Send response...
+Done.
+```
+
+`Knowledge Graph Definitions`:
+```
+docker logs trustgraph-kg-extract-definitions-1
+```
+
+Output should be an array of JSON objects with keys `entity` and `definition`:
+
+```
+Indexing 1f7b7055-p11-c1...
+[
+ {
+ "entity": "Orbiter",
+ "definition": "A spacecraft designed for spaceflight."
+ },
+ {
+ "entity": "flight deck",
+ "definition": "The top level of the crew compartment, typically where flight controls are located."
+ },
+ {
+ "entity": "middeck",
+ "definition": "The lower level of the crew compartment, used for sleeping, working, and storing equipment."
+ }
+]
+Done.
+```
+
+`Knowledge Graph Relationshps`:
+```
+docker logs trustgraph-kg-extract-relationships-1
+```
+
+Output should be an array of JSON objects with keys `subject`, `predicate`, `object`, and `object-entity`:
+```
+Indexing 1f7b7055-p11-c3...
+[
+ {
+ "subject": "Space Shuttle",
+ "predicate": "carry",
+ "object": "16 tons of cargo",
+ "object-entity": false
+ },
+ {
+ "subject": "friction",
+ "predicate": "generated by",
+ "object": "atmosphere",
+ "object-entity": true
+ }
+]
+Done.
+```
+
+### Graph Parsing
+
+To check that the knowledge graph is successfully parsing data:
+
+```
+scripts/graph-show
+```
+
+The output should be a set of semantic triples in [N-Triples](https://www.w3.org/TR/rdf12-n-triples/) format.
+
+```
+http://trustgraph.ai/e/enterprise http://trustgraph.ai/e/was-carried to altitude and released for a gliding approach and landing at the Mojave Desert test center.
+http://trustgraph.ai/e/enterprise http://www.w3.org/2000/01/rdf-schema#label Enterprise.
+http://trustgraph.ai/e/enterprise http://www.w3.org/2004/02/skos/core#definition A prototype space shuttle orbiter used for atmospheric flight testing.
+```
+
+### Number of Graph Edges
+
+N-Triples format is not particularly human readable. It's more useful to know how many graph edges have successfully been extracted from the text corpus:
+```
+scripts/graph-show | wc -l
+```
+
+The Challenger report has a long introduction with quite a bit of adminstrative text commonly found in official reports. The first few hundred graph edges mostly capture this document formatting knowledge. To fully test the ability to extract complex knowledge, wait until at least `1000` graph edges have been extracted. The full extraction for this PDF will extract many thousand graph edges.
+
+### RAG Test Script
+```
+tests/test-graph-rag
+```
+This script forms a LM prompt asking for 20 facts regarding the Challenger disaster. Depending on how many graph edges have been extracted, the response will be similar to:
+
+```
+Here are 20 facts from the provided knowledge graph about the Space Shuttle disaster:
+
+1. **Space Shuttle Challenger was a Space Shuttle spacecraft.**
+2. **The third Spacelab mission was carried by Orbiter Challenger.**
+3. **Francis R. Scobee was the Commander of the Challenger crew.**
+4. **Earth-to-orbit systems are designed to transport payloads and humans from Earth's surface into orbit.**
+5. **The Space Shuttle program involved the Space Shuttle.**
+6. **Orbiter Challenger flew on mission 41-B.**
+7. **Orbiter Challenger was used on STS-7 and STS-8 missions.**
+8. **Columbia completed the orbital test.**
+9. **The Space Shuttle flew 24 successful missions.**
+10. **One possibility for the Space Shuttle was a winged but unmanned recoverable liquid-fuel vehicle based on the Saturn 5 rocket.**
+11. **A Commission was established to investigate the space shuttle Challenger accident.**
+12. **Judit h Arlene Resnik was Mission Specialist Two.**
+13. **Mission 51-L was originally scheduled for December 1985 but was delayed until January 1986.**
+14. **The Corporation's Space Transportation Systems Division was responsible for the design and development of the Space Shuttle Orbiter.**
+15. **Michael John Smith was the Pilot of the Challenger crew.**
+16. **The Space Shuttle is composed of two recoverable Solid Rocket Boosters.**
+17. **The Space Shuttle provides for the broadest possible spectrum of civil/military missions.**
+18. **Mission 51-L consisted of placing one satellite in orbit, deploying and retrieving Spartan, and conducting six experiments.**
+19. **The Space Shuttle became the focus of NASA's near-term future.**
+20. **The Commission focused its attention on safety aspects of future flights.**
+```
+
+For any errors with the `RAG` proces, check the following log:
+```
+docker logs -f trustgraph-graph-rag-1
+```
+### More RAG Test Queries
+
+If you want to try different RAG queries, modify the `query` in the [test script](https://github.com/trustgraph-ai/trustgraph/blob/master/tests/test-graph-rag).
+
+### Shutting Down
+
+When shutting down the pipeline, it's best to shut down all Docker containers and volumes. Run the `docker compose down` command that corresponds to your model deployment:
+
+`AzureAI Endpoint`:
+```
+docker-compose -f docker-compose-azure.yaml down --volumes
+```
+
+`Anthropic API`:
+```
+docker-compose -f docker-compose-claude.yaml down --volumes
+```
+
+`Ollama`:
+```
+docker-compose -f docker-compose-ollama.yaml down --volumes
+```
+
+`VertexAI API`:
+```
+docker-compose -f docker-compose-vertexai.yaml down --volumes
+```
+
+To confirm all Docker containers have been shut down, check that the following list is empty:
+```
+docker ps
+```
+
+To confirm all Docker volumes have been removed, check that the following list is empty:
+```
+docker volume ls
+```
+
diff --git a/scripts/.ipynb_checkpoints/kg-extract-definitions-checkpoint b/scripts/.ipynb_checkpoints/kg-extract-definitions-checkpoint
new file mode 100755
index 00000000..327ec06f
--- /dev/null
+++ b/scripts/.ipynb_checkpoints/kg-extract-definitions-checkpoint
@@ -0,0 +1,6 @@
+#!/usr/bin/env python3
+
+from trustgraph.kg.extract_definitions import run
+
+run()
+
diff --git a/scripts/.ipynb_checkpoints/llm-azure-text-checkpoint b/scripts/.ipynb_checkpoints/llm-azure-text-checkpoint
new file mode 100755
index 00000000..cdaea4b8
--- /dev/null
+++ b/scripts/.ipynb_checkpoints/llm-azure-text-checkpoint
@@ -0,0 +1,6 @@
+#!/usr/bin/env python3
+
+from trustgraph.llm.azure_text import run
+
+run()
+
diff --git a/scripts/text-completion-cohere b/scripts/text-completion-cohere
new file mode 100755
index 00000000..42110db6
--- /dev/null
+++ b/scripts/text-completion-cohere
@@ -0,0 +1,6 @@
+#!/usr/bin/env python3
+
+from trustgraph.model.text_completion.cohere import run
+
+run()
+
diff --git a/sources/Challenger-Report-Vol1.pdf b/sources/Challenger-Report-Vol1.pdf
new file mode 100644
index 00000000..58dc559e
Binary files /dev/null and b/sources/Challenger-Report-Vol1.pdf differ
diff --git a/sources/solarwinds-dismissal-opinion.pdf b/sources/solarwinds-dismissal-opinion.pdf
new file mode 100644
index 00000000..8d8a82ca
--- /dev/null
+++ b/sources/solarwinds-dismissal-opinion.pdf
@@ -0,0 +1,17301 @@
+%PDF-1.6
+%
+1 0 obj
+<< /Metadata 3 0 R /OutputIntents 4 0 R /Pages 5 0 R /Type /Catalog >>
+endobj
+2 0 obj
+<< /CreationDate (D:20240718091502-04'00') /Creator (RICOH MP 4055) /ModDate (D:20240718091424-04'00') /Producer (Adobe Acrobat Pro \(64-bit\) 24 Paper Capture Plug-in; modified using iText Core 7.2.3 \(production version\) 2000-2022 iText Group NV, Administrative Office of the United States Courts) >>
+endobj
+3 0 obj
+<< /Subtype /XML /Type /Metadata /Length 3972 >>
+stream
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+endstream
+endobj
+4 0 obj
+[ 6 0 R ]
+endobj
+5 0 obj
+<< /Count 107 /Kids [ 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R ] /Type /Pages >>
+endobj
+6 0 obj
+<< /DestOutputProfile 114 0 R /Info (sRGB IEC61966-2.1) /OutputCondition (sRGB) /OutputConditionIdentifier (Custom) /RegistryName () /S /GTS_PDFA1 /Type /OutputIntent >>
+endobj
+7 0 obj
+<< /Contents [ 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 126 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 128 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+8 0 obj
+<< /Contents [ 129 0 R 130 0 R 131 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 132 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+9 0 obj
+<< /Contents [ 133 0 R 134 0 R 135 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 137 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+10 0 obj
+<< /Contents [ 138 0 R 139 0 R 140 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 141 0 R /C2_1 125 0 R /C2_2 136 0 R /C2_3 126 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 142 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+11 0 obj
+<< /Contents [ 143 0 R 144 0 R 145 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 146 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+12 0 obj
+<< /Contents [ 147 0 R 148 0 R 149 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /C2_3 126 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 150 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+13 0 obj
+<< /Contents [ 151 0 R 152 0 R 153 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /C2_3 154 0 R /C2_4 126 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 155 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+14 0 obj
+<< /Contents [ 156 0 R 157 0 R 158 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 159 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+15 0 obj
+<< /Contents [ 160 0 R 161 0 R 162 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 163 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+16 0 obj
+<< /Contents [ 164 0 R 165 0 R 166 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 167 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+17 0 obj
+<< /Contents [ 168 0 R 169 0 R 170 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 171 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+18 0 obj
+<< /Contents [ 172 0 R 173 0 R 174 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /C2_3 126 0 R /C2_4 154 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 175 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+19 0 obj
+<< /Contents [ 176 0 R 177 0 R 178 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /C2_3 126 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 179 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+20 0 obj
+<< /Contents [ 180 0 R 181 0 R 182 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 183 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+21 0 obj
+<< /Contents [ 184 0 R 185 0 R 186 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 136 0 R /C2_1 125 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 187 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+22 0 obj
+<< /Contents [ 188 0 R 189 0 R 190 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 191 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+23 0 obj
+<< /Contents [ 192 0 R 193 0 R 194 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 195 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+24 0 obj
+<< /Contents [ 196 0 R 197 0 R 198 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 199 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+25 0 obj
+<< /Contents [ 200 0 R 201 0 R 202 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 141 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 203 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+26 0 obj
+<< /Contents [ 204 0 R 205 0 R 206 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 207 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+27 0 obj
+<< /Contents [ 208 0 R 209 0 R 210 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 211 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+28 0 obj
+<< /Contents [ 212 0 R 213 0 R 214 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 141 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 215 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+29 0 obj
+<< /Contents [ 216 0 R 217 0 R 218 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 219 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+30 0 obj
+<< /Contents [ 220 0 R 221 0 R 222 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 223 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+31 0 obj
+<< /Contents [ 224 0 R 225 0 R 226 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 227 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+32 0 obj
+<< /Contents [ 228 0 R 229 0 R 230 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /C2_3 231 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 232 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+33 0 obj
+<< /Contents [ 233 0 R 234 0 R 235 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 236 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+34 0 obj
+<< /Contents [ 237 0 R 238 0 R 239 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 141 0 R /C2_1 125 0 R /C2_2 136 0 R /C2_3 240 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 241 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+35 0 obj
+<< /Contents [ 242 0 R 243 0 R 244 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 245 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+36 0 obj
+<< /Contents [ 246 0 R 247 0 R 248 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 141 0 R /C2_1 125 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 249 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+37 0 obj
+<< /Contents [ 250 0 R 251 0 R 252 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 253 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+38 0 obj
+<< /Contents [ 254 0 R 255 0 R 256 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 126 0 R /C2_1 125 0 R /C2_2 154 0 R /C2_3 141 0 R /C2_4 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 257 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+39 0 obj
+<< /Contents [ 258 0 R 259 0 R 260 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 261 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+40 0 obj
+<< /Contents [ 262 0 R 263 0 R 264 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 141 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 265 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+41 0 obj
+<< /Contents [ 266 0 R 267 0 R 268 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 269 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+42 0 obj
+<< /Contents [ 270 0 R 271 0 R 272 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 273 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+43 0 obj
+<< /Contents [ 274 0 R 275 0 R 276 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 277 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+44 0 obj
+<< /Contents [ 278 0 R 279 0 R 280 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 281 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+45 0 obj
+<< /Contents [ 282 0 R 283 0 R 284 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 285 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+46 0 obj
+<< /Contents [ 286 0 R 287 0 R 288 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 289 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+47 0 obj
+<< /Contents [ 290 0 R 291 0 R 292 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 293 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+48 0 obj
+<< /Contents [ 294 0 R 295 0 R 296 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 126 0 R /C2_2 141 0 R /C2_3 154 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 297 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+49 0 obj
+<< /Contents [ 298 0 R 299 0 R 300 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 301 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+50 0 obj
+<< /Contents [ 302 0 R 303 0 R 304 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 141 0 R /C2_1 125 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 305 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+51 0 obj
+<< /Contents [ 306 0 R 307 0 R 308 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 141 0 R /C2_1 125 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 309 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+52 0 obj
+<< /Contents [ 310 0 R 311 0 R 312 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /C2_3 154 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 313 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+53 0 obj
+<< /Contents [ 314 0 R 315 0 R 316 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 141 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 317 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+54 0 obj
+<< /Contents [ 318 0 R 319 0 R 320 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 321 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+55 0 obj
+<< /Contents [ 322 0 R 323 0 R 324 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 141 0 R /C2_1 125 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 325 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+56 0 obj
+<< /Contents [ 326 0 R 327 0 R 328 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 141 0 R /C2_1 125 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 329 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+57 0 obj
+<< /Contents [ 330 0 R 331 0 R 332 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 333 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+58 0 obj
+<< /Contents [ 334 0 R 335 0 R 336 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 126 0 R /C2_3 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 337 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+59 0 obj
+<< /Contents [ 338 0 R 339 0 R 340 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 141 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 341 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+60 0 obj
+<< /Contents [ 342 0 R 343 0 R 344 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 141 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 345 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+61 0 obj
+<< /Contents [ 346 0 R 347 0 R 348 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 141 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 349 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+62 0 obj
+<< /Contents [ 350 0 R 351 0 R 352 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 353 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+63 0 obj
+<< /Contents [ 354 0 R 355 0 R 356 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 357 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+64 0 obj
+<< /Contents [ 358 0 R 359 0 R 360 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 361 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+65 0 obj
+<< /Contents [ 362 0 R 363 0 R 364 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 365 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+66 0 obj
+<< /Contents [ 366 0 R 367 0 R 368 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 369 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+67 0 obj
+<< /Contents [ 370 0 R 371 0 R 372 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 373 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+68 0 obj
+<< /Contents [ 374 0 R 375 0 R 376 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 377 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+69 0 obj
+<< /Contents [ 378 0 R 379 0 R 380 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 381 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+70 0 obj
+<< /Contents [ 382 0 R 383 0 R 384 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 126 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 385 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+71 0 obj
+<< /Contents [ 386 0 R 387 0 R 388 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 389 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+72 0 obj
+<< /Contents [ 390 0 R 391 0 R 392 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 393 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+73 0 obj
+<< /Contents [ 394 0 R 395 0 R 396 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 141 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 397 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+74 0 obj
+<< /Contents [ 398 0 R 399 0 R 400 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 401 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+75 0 obj
+<< /Contents [ 402 0 R 403 0 R 404 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 405 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+76 0 obj
+<< /Contents [ 406 0 R 407 0 R 408 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 409 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+77 0 obj
+<< /Contents [ 410 0 R 411 0 R 412 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 141 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 413 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+78 0 obj
+<< /Contents [ 414 0 R 415 0 R 416 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 136 0 R /C2_1 125 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 417 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+79 0 obj
+<< /Contents [ 418 0 R 419 0 R 420 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 421 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+80 0 obj
+<< /Contents [ 422 0 R 423 0 R 424 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 425 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+81 0 obj
+<< /Contents [ 426 0 R 427 0 R 428 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 429 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+82 0 obj
+<< /Contents [ 430 0 R 431 0 R 432 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 433 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+83 0 obj
+<< /Contents [ 434 0 R 435 0 R 436 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 437 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+84 0 obj
+<< /Contents [ 438 0 R 439 0 R 440 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 441 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+85 0 obj
+<< /Contents [ 442 0 R 443 0 R 444 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 445 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+86 0 obj
+<< /Contents [ 446 0 R 447 0 R 448 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /C2_3 126 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 449 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+87 0 obj
+<< /Contents [ 450 0 R 451 0 R 452 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 453 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+88 0 obj
+<< /Contents [ 454 0 R 455 0 R 456 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 457 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+89 0 obj
+<< /Contents [ 458 0 R 459 0 R 460 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 136 0 R /C2_1 125 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 461 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+90 0 obj
+<< /Contents [ 462 0 R 463 0 R 464 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 465 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+91 0 obj
+<< /Contents [ 466 0 R 467 0 R 468 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 469 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+92 0 obj
+<< /Contents [ 470 0 R 471 0 R 472 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 473 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+93 0 obj
+<< /Contents [ 474 0 R 475 0 R 476 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 477 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+94 0 obj
+<< /Contents [ 478 0 R 479 0 R 480 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 481 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+95 0 obj
+<< /Contents [ 482 0 R 483 0 R 484 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 485 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+96 0 obj
+<< /Contents [ 486 0 R 487 0 R 488 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 489 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+97 0 obj
+<< /Contents [ 490 0 R 491 0 R 492 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 136 0 R /C2_1 125 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 493 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+98 0 obj
+<< /Contents [ 494 0 R 495 0 R 496 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 497 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+99 0 obj
+<< /Contents [ 498 0 R 499 0 R 500 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 501 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+100 0 obj
+<< /Contents [ 502 0 R 503 0 R 504 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 141 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 505 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+101 0 obj
+<< /Contents [ 506 0 R 507 0 R 508 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 509 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+102 0 obj
+<< /Contents [ 510 0 R 511 0 R 512 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 513 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+103 0 obj
+<< /Contents [ 514 0 R 515 0 R 516 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 136 0 R /C2_1 125 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 517 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+104 0 obj
+<< /Contents [ 518 0 R 519 0 R 520 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 136 0 R /C2_1 125 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 521 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+105 0 obj
+<< /Contents [ 522 0 R 523 0 R 524 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 525 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+106 0 obj
+<< /Contents [ 526 0 R 527 0 R 528 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 529 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+107 0 obj
+<< /Contents [ 530 0 R 531 0 R 532 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 533 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+108 0 obj
+<< /Contents [ 534 0 R 535 0 R 536 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 141 0 R /C2_2 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 537 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+109 0 obj
+<< /Contents [ 538 0 R 539 0 R 540 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 541 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+110 0 obj
+<< /Contents [ 542 0 R 543 0 R 544 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 545 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+111 0 obj
+<< /Contents [ 546 0 R 547 0 R 548 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 136 0 R /C2_1 125 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 549 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+112 0 obj
+<< /Contents [ 550 0 R 551 0 R 552 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 136 0 R /C2_2 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 553 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+113 0 obj
+<< /Contents [ 554 0 R 555 0 R 556 0 R ] /CropBox [ 0.0 0.0 612.0 792.0 ] /MediaBox [ 0.0 0.0 612.0 792.0 ] /Parent 5 0 R /Resources << /Font << /C2_0 125 0 R /C2_1 141 0 R /F1 127 0 R >> /ProcSet [ /PDF /Text /ImageB ] /XObject << /Im0 557 0 R >> >> /Rotate 0 /Type /Page >>
+endobj
+114 0 obj
+<< /Filter /FlateDecode /N 3 /Range [ 0.0 1.0 0.0 1.0 0.0 1.0 ] /Length 2574 >>
+stream
+HyTSwoɞc
[5laQIBHADED2mtFOE.c}088GNg9w߽ '0 ֠Jb
+ 2y.-;!KZ ^i"L0-
@8(r;q7Ly&Qq4j|9
+V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'K t;\
ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹Aom?W=
+x- [ 0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?c. R
߁-25 S>ӣVd`rn~Y&+`;A4 A9 =-tl`;~p Gp| [`L`< "AYA+Cb(R, *T2B-
+ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r9\A&GrQhE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_(0J:EAiQ(()ӔWT6U@P+!~mDeԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel
}}Cq9
+N')].uJr
+wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó tizf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4
+n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY.=b?SƕƩȺy
چk5%4m7lqlioZlG+Zzmzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś
nLl<9O [$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD- u`ֲK³8%yhYѹJº;.!
+zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs
2F[p(@Xr4Pm8Ww)Km
+endstream
+endobj
+115 0 obj
+<< /Filter /FlateDecode /Length 10 >>
+stream
+x+ |
+endstream
+endobj
+116 0 obj
+<< /Filter /FlateDecode /Length 559 >>
+stream
+HSMo0W< *?DM;3v
e$[NؒG>eHW" y|8LC-,~>~}~[PCbQPu D3 P8+VthXլ!E1`d}
gv k(oXi#xtwoα`cn&IHg{N[LX~V,Ζ"5幢rN6fyC9oYڙy(=`D]±hY?Et/&]p(b.~PsG'2>}U ER6G<}z