diff --git a/README.md b/README.md
index dda3a87..3ce82cb 100644
--- a/README.md
+++ b/README.md
@@ -4,12 +4,16 @@ Minimal RAG implementation with LangChain, Ollama, and FAISS.
## Dependencies
-Only 5 packages:
- `langchain` - Core framework
+- `langchain-community` - Community integrations (loaders, vectorstores)
- `langchain-ollama` - Ollama integration
+- `langchain-text-splitters` - Text splitting utilities
+- `langchain-huggingface` - HuggingFace embeddings
- `faiss-cpu` - Vector search
- `sentence-transformers` - Embeddings
- `pypdf` - PDF loading
+- `fastapi` - Web server and API
+- `uvicorn` - ASGI server
## Installation
@@ -54,6 +58,16 @@ Run:
python local_rag.py
```
+## Chat GUI (FastAPI)
+
+A simple web chat interface is included. Start the server:
+
+```bash
+uvicorn server:app --reload
+```
+
+Then open [http://localhost:8000](http://localhost:8000) in your browser. The chat view uses the same RAG system: your messages are answered using the vector store and Ollama. Ensure your vector store is populated (e.g. by running the document-add steps in `local_rag.py` once) and that Ollama is running.
+
## How it works
1. **Load documents** - PDFs or text files
diff --git a/data/dok1.pdf b/data/dok1.pdf
new file mode 100644
index 0000000..094b38a
Binary files /dev/null and b/data/dok1.pdf differ
diff --git a/data/dok2.PDF b/data/dok2.PDF
new file mode 100644
index 0000000..91f4af2
--- /dev/null
+++ b/data/dok2.PDF
@@ -0,0 +1,70594 @@
+%PDF-1.4
+%
+1 0 obj
+<<
+/Type /Catalog
+/Version /1.5
+/Pages 2 0 R
+/PageLabels 3 0 R
+/Metadata 4 0 R
+/Names 5 0 R
+/Outlines 6 0 R
+/StructTreeRoot 7 0 R
+/MarkInfo 8 0 R
+/Lang (en)
+/ViewerPreferences 9 0 R
+>>
+endobj
+10 0 obj
+<<
+/Title (Using Knowledge Construction Theory to Evaluate Learning Processes: A Randomized Controlled Trial on)
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [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]
+/Count 18
+>>
+endobj
+3 0 obj
+<<
+/Nums [0 29 0 R]
+>>
+endobj
+4 0 obj
+<<
+/Length 5075
+/Subtype /XML
+/Type /Metadata
+>>
+stream
+
+
+
+ Adobe LiveCycle PDFG ES
+
+
+
+
+
+ 2024-12-04T10:18:34+05:30
+ Arbortext Advanced Print Publisher
+ 2024-12-04T10:18:34+05:30
+ 2024-12-04T10:18:34+05:30
+
+
+ uuid:8addd02c-2a8d-4824-a074-0375b52bef83
+ uuid:9735c38c-787b-4f5b-aca7-e8422204bc96
+
+
+ Journal
+ International Journal of Human–Computer Interaction
+ © 2023 Know Center GmbH. Published with license by Taylor & Francis Group, LLC
+
+
+ 40
+ 24
+
+
+ 8764-8780
+ 8764
+ 8780
+ 10.1080/10447318.2023.2289296
+ https://doi.org/10.1080/10447318.2023.2289296
+
+
+ application/pdf
+ 10.1080/10447318.2023.2289296
+ en-US
+
+
+ Using Knowledge Construction Theory to Evaluate Learning Processes: A Randomized Controlled Trial on Showing Gradually Built-up Concept Maps Alongside a Scientific Text
+
+
+
+
+ Taylor & Francis
+
+
+
+
+ International Journal of Human–Computer Interaction, 2023. doi: 10.1080/10447318.2023.2289296
+
+
+
+
+ Disch Leonie
+ Fessl Angela
+ Franza Simone
+ Kimmerle Joachim
+ Pammer-Schindler Viktoria
+
+
+
+
+ Predefined concept maps
+ knowledge construction
+ learning
+ experiment
+ open science
+
+
+
+
+ VoR
+
+
+ 10.1080/10447318.2023.2289296
+ 2023-12-26
+ True
+
+
+ www.tandfonline.com
+
+
+
+
+ 10.1080/10447318.2023.2289296
+ 2023-12-26
+ True
+
+
+ www.tandfonline.com
+
+
+
+
+
+
+
+endstream
+endobj
+5 0 obj
+<<
+/Dests 30 0 R
+>>
+endobj
+6 0 obj
+<<
+/Count 13
+/First 31 0 R
+/Last 31 0 R
+/Type /Outlines
+>>
+endobj
+7 0 obj
+<<
+/Type /StructTreeRoot
+/ParentTree 32 0 R
+/ParentTreeNextKey 403
+/K [33 0 R]
+>>
+endobj
+8 0 obj
+<<
+/Marked true
+/Suspects false
+>>
+endobj
+9 0 obj
+<<
+/DisplayDocTitle true
+>>
+endobj
+11 0 obj
+<<
+/Resources 34 0 R
+/Type /Page
+/MediaBox [0.0 0.0 634.32 833.04]
+/CropBox [0.0 0.0 634.32 833.04]
+/BleedBox [0 0 634.32 833.04]
+/TrimBox [0 0 634.32 833.04]
+/Parent 2 0 R
+/Annots [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]
+/Contents 47 0 R
+/Rotate 0
+>>
+endobj
+12 0 obj
+<<
+/Annots [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]
+/Contents 78 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 79 0 R
+/StructParents 30
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+13 0 obj
+<<
+/Annots [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 114 0 R 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 125 0 R 126 0 R 127 0 R 128 0 R 129 0 R
+130 0 R 131 0 R 132 0 R 133 0 R]
+/Contents 134 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 135 0 R
+/StructParents 85
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+14 0 obj
+<<
+/Annots [136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R
+146 0 R 147 0 R 148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R
+156 0 R 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R 163 0 R 164 0 R 165 0 R
+166 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R
+176 0 R]
+/Contents 177 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 178 0 R
+/StructParents 127
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+15 0 obj
+<<
+/Annots [179 0 R 180 0 R 181 0 R 182 0 R]
+/Contents 183 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 184 0 R
+/StructParents 132
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+16 0 obj
+<<
+/Annots [185 0 R 186 0 R 187 0 R 188 0 R 189 0 R 190 0 R 191 0 R 192 0 R 193 0 R 194 0 R
+195 0 R 196 0 R 197 0 R 198 0 R 199 0 R 200 0 R 201 0 R 202 0 R 203 0 R]
+/Contents 204 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 205 0 R
+/StructParents 152
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+17 0 obj
+<<
+/Annots [206 0 R 207 0 R 208 0 R 209 0 R 210 0 R 211 0 R]
+/Contents 212 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 213 0 R
+/StructParents 159
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+18 0 obj
+<<
+/Annots [214 0 R 215 0 R]
+/Contents 216 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 217 0 R
+/StructParents 162
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+19 0 obj
+<<
+/Annots [218 0 R 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R
+228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R]
+/Contents 236 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 237 0 R
+/StructParents 181
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+20 0 obj
+<<
+/Annots [238 0 R 239 0 R]
+/Contents 240 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 241 0 R
+/StructParents 184
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+21 0 obj
+<<
+/Annots [242 0 R 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R]
+/Contents 249 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 250 0 R
+/StructParents 192
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+22 0 obj
+<<
+/Annots [251 0 R 252 0 R 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R 258 0 R 259 0 R 260 0 R
+261 0 R]
+/Contents 262 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 263 0 R
+/StructParents 204
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+23 0 obj
+<<
+/Annots [264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R]
+/Contents 272 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 273 0 R
+/StructParents 213
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+24 0 obj
+<<
+/Annots [274 0 R 275 0 R 276 0 R 277 0 R 278 0 R 279 0 R 280 0 R 281 0 R 282 0 R 283 0 R
+284 0 R 285 0 R 286 0 R]
+/Contents 287 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 288 0 R
+/StructParents 227
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+25 0 obj
+<<
+/Annots [289 0 R 290 0 R 291 0 R 292 0 R 293 0 R 294 0 R 295 0 R 296 0 R 297 0 R 298 0 R
+299 0 R 300 0 R 301 0 R 302 0 R 303 0 R]
+/Contents 304 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 305 0 R
+/StructParents 243
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+26 0 obj
+<<
+/Annots [306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R
+316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R
+326 0 R 327 0 R 328 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R
+336 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R 343 0 R 344 0 R 345 0 R
+346 0 R 347 0 R 348 0 R 349 0 R 350 0 R 351 0 R 352 0 R 353 0 R 354 0 R 355 0 R
+356 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R
+366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R
+376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R]
+/Contents 386 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 387 0 R
+/StructParents 324
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+27 0 obj
+<<
+/Annots [388 0 R 389 0 R 390 0 R 391 0 R 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R
+398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R
+408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R
+418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R
+428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R
+438 0 R 439 0 R 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R 445 0 R 446 0 R 447 0 R
+448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R 454 0 R 455 0 R 456 0 R 457 0 R
+458 0 R 459 0 R 460 0 R 461 0 R 462 0 R 463 0 R]
+/Contents 464 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 465 0 R
+/StructParents 401
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+>>
+endobj
+28 0 obj
+<<
+/Contents 466 0 R
+/CropBox [0.0 0.0 612.0 792.0]
+/MediaBox [0.0 0.0 612.0 792.0]
+/Parent 2 0 R
+/Resources 467 0 R
+/StructParents 402
+/Tabs /S
+/TrimBox [0 0 612 792]
+/Type /Page
+/Rotate 0
+/Annots []
+>>
+endobj
+29 0 obj
+<<
+/S /D
+>>
+endobj
+30 0 obj
+<<
+/Kids [468 0 R 469 0 R 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R
+478 0 R]
+>>
+endobj
+31 0 obj
+<<
+/Count 12
+/Dest (mkchapHIHC_artid)
+/First 479 0 R
+/Last 480 0 R
+/Parent 6 0 R
+/Title (Using Knowledge Construction Theory to Evaluate Learning Processes: A Randomized Controlled Trial on Showing Gradually Built-up Concept Maps Alongside a Scientific Text)
+>>
+endobj
+32 0 obj
+<<
+/Limits [0 402]
+/Nums [0 481 0 R 1 482 0 R 2 483 0 R 3 482 0 R 4 482 0 R
+5 484 0 R 6 482 0 R 7 482 0 R 8 485 0 R 9 482 0 R
+10 482 0 R 11 486 0 R 12 482 0 R 13 487 0 R 14 488 0 R
+15 489 0 R 16 490 0 R 17 491 0 R 18 492 0 R 19 493 0 R
+20 494 0 R 21 495 0 R 22 496 0 R 23 497 0 R 24 498 0 R
+25 499 0 R 26 500 0 R 27 500 0 R 28 33 0 R 29 33 0 R
+30 [501 0 R 481 0 R 502 0 R 482 0 R 483 0 R 482 0 R 484 0 R 482 0 R 485 0 R 482 0 R
+486 0 R 482 0 R 487 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R
+488 0 R 509 0 R 489 0 R 509 0 R 510 0 R 490 0 R 510 0 R 491 0 R 510 0 R 492 0 R
+510 0 R 493 0 R 510 0 R 494 0 R 510 0 R 495 0 R 510 0 R 496 0 R 510 0 R 497 0 R
+510 0 R 498 0 R 510 0 R 499 0 R 510 0 R 511 0 R 512 0 R 513 0 R 513 0 R 514 0 R
+500 0 R 33 0 R]
+ 31 515 0 R 32 516 0 R 33 517 0 R 34 518 0 R
+35 519 0 R 36 520 0 R 37 521 0 R 38 522 0 R 39 523 0 R
+40 524 0 R 41 525 0 R 42 526 0 R 43 527 0 R 44 528 0 R
+45 529 0 R 46 530 0 R 47 531 0 R 48 532 0 R 49 533 0 R
+50 534 0 R 51 535 0 R 52 536 0 R 53 537 0 R 54 538 0 R
+55 539 0 R 56 540 0 R 57 541 0 R 58 542 0 R 59 543 0 R
+60 544 0 R 61 545 0 R 62 546 0 R 63 547 0 R 64 548 0 R
+65 549 0 R 66 550 0 R 67 551 0 R 68 552 0 R 69 553 0 R
+70 554 0 R 71 555 0 R 72 556 0 R 73 557 0 R 74 558 0 R
+75 559 0 R 76 560 0 R 77 561 0 R 78 562 0 R 79 563 0 R
+80 564 0 R 81 565 0 R 82 566 0 R 83 567 0 R 84 568 0 R
+85 [513 0 R 515 0 R 513 0 R 516 0 R 513 0 R 517 0 R 513 0 R 518 0 R 513 0 R 519 0 R
+513 0 R 520 0 R 513 0 R 521 0 R 513 0 R 522 0 R 513 0 R 523 0 R 513 0 R 524 0 R
+513 0 R 569 0 R 525 0 R 569 0 R 526 0 R 569 0 R 527 0 R 569 0 R 528 0 R 569 0 R
+529 0 R 569 0 R 570 0 R 571 0 R 530 0 R 571 0 R 531 0 R 571 0 R 532 0 R 571 0 R
+533 0 R 571 0 R 534 0 R 571 0 R 535 0 R 571 0 R 536 0 R 571 0 R 537 0 R 571 0 R
+538 0 R 571 0 R 539 0 R 571 0 R 540 0 R 571 0 R 541 0 R 571 0 R 542 0 R 571 0 R
+543 0 R 571 0 R 544 0 R 571 0 R 545 0 R 571 0 R 546 0 R 571 0 R 547 0 R 571 0 R
+548 0 R 571 0 R 549 0 R 571 0 R 550 0 R 571 0 R 551 0 R 571 0 R 552 0 R 571 0 R
+553 0 R 571 0 R 554 0 R 571 0 R 555 0 R 571 0 R 556 0 R 571 0 R 557 0 R 571 0 R
+558 0 R 571 0 R 559 0 R 571 0 R 560 0 R 571 0 R 561 0 R 571 0 R 562 0 R 571 0 R
+572 0 R 573 0 R 563 0 R 573 0 R 564 0 R 573 0 R 574 0 R 575 0 R 565 0 R 575 0 R
+566 0 R 575 0 R 567 0 R 575 0 R 575 0 R 576 0 R 568 0 R 576 0 R 577 0 R 578 0 R
+579 0 R 580 0 R 581 0 R 582 0 R 583 0 R 584 0 R 585 0 R 586 0 R 587 0 R 588 0 R
+589 0 R 590 0 R 591 0 R 592 0 R 593 0 R 594 0 R]
+ 86 595 0 R 87 596 0 R 88 597 0 R 89 598 0 R
+90 599 0 R 91 600 0 R 92 601 0 R 93 602 0 R 94 603 0 R
+95 604 0 R 96 605 0 R 97 606 0 R 98 607 0 R 99 608 0 R
+100 609 0 R 101 610 0 R 102 611 0 R 103 612 0 R 104 613 0 R
+105 614 0 R 106 615 0 R 107 616 0 R 108 617 0 R 109 618 0 R
+110 619 0 R 111 620 0 R 112 621 0 R 113 622 0 R 114 623 0 R
+115 624 0 R 116 625 0 R 117 626 0 R 118 627 0 R 119 628 0 R
+120 629 0 R 121 630 0 R 122 631 0 R 123 632 0 R 124 633 0 R
+125 634 0 R 126 635 0 R 127 [575 0 R 595 0 R 575 0 R 596 0 R 575 0 R 597 0 R 575 0 R 598 0 R 575 0 R 599 0 R
+575 0 R 636 0 R 637 0 R 600 0 R 637 0 R 601 0 R 637 0 R 602 0 R 637 0 R 603 0 R
+637 0 R 604 0 R 637 0 R 605 0 R 637 0 R 606 0 R 637 0 R 607 0 R 637 0 R 608 0 R
+637 0 R 609 0 R 637 0 R 610 0 R 637 0 R 611 0 R 637 0 R 638 0 R 639 0 R 640 0 R
+612 0 R 640 0 R 613 0 R 640 0 R 614 0 R 640 0 R 615 0 R 640 0 R 616 0 R 640 0 R
+617 0 R 640 0 R 618 0 R 640 0 R 619 0 R 640 0 R 620 0 R 640 0 R 621 0 R 640 0 R
+622 0 R 640 0 R 641 0 R 642 0 R 623 0 R 642 0 R 624 0 R 642 0 R 625 0 R 642 0 R
+626 0 R 642 0 R 627 0 R 642 0 R 628 0 R 642 0 R 629 0 R 642 0 R 630 0 R 642 0 R
+631 0 R 642 0 R 632 0 R 642 0 R 633 0 R 642 0 R 634 0 R 642 0 R 635 0 R 642 0 R]
+ 128 643 0 R 129 644 0 R
+130 645 0 R 131 646 0 R 132 [647 0 R 648 0 R 649 0 R 650 0 R 651 0 R 652 0 R 653 0 R 654 0 R 655 0 R 656 0 R
+643 0 R 656 0 R 657 0 R 658 0 R 644 0 R 658 0 R 645 0 R 658 0 R 646 0 R 658 0 R
+658 0 R 658 0 R 659 0 R 660 0 R]
+ 133 661 0 R 134 662 0 R
+135 663 0 R 136 664 0 R 137 665 0 R 138 666 0 R 139 667 0 R
+140 668 0 R 141 669 0 R 142 670 0 R 143 671 0 R 144 672 0 R
+145 673 0 R 146 674 0 R 147 675 0 R 148 676 0 R 149 677 0 R
+150 678 0 R 151 679 0 R 152 [658 0 R 680 0 R 681 0 R 682 0 R 661 0 R 682 0 R 662 0 R 682 0 R 663 0 R 682 0 R
+664 0 R 682 0 R 683 0 R 684 0 R 685 0 R 665 0 R 685 0 R 666 0 R 685 0 R 667 0 R
+685 0 R 668 0 R 685 0 R 669 0 R 685 0 R 670 0 R 685 0 R 671 0 R 685 0 R 686 0 R
+672 0 R 686 0 R 673 0 R 686 0 R 674 0 R 686 0 R 675 0 R 686 0 R 676 0 R 686 0 R
+687 0 R 688 0 R 677 0 R 688 0 R 689 0 R 678 0 R 689 0 R 679 0 R 689 0 R]
+ 153 690 0 R 154 691 0 R
+155 692 0 R 156 693 0 R 157 694 0 R 158 695 0 R 159 [689 0 R 690 0 R 689 0 R 691 0 R 689 0 R 692 0 R 689 0 R 693 0 R 689 0 R 694 0 R
+689 0 R 695 0 R 689 0 R 696 0 R 697 0 R 698 0 R 698 0 R 699 0 R 700 0 R]
+160 701 0 R 161 702 0 R 162 [698 0 R 701 0 R 698 0 R 703 0 R 704 0 R 702 0 R 704 0 R 705 0 R 706 0 R 707 0 R
+707 0 R 708 0 R 709 0 R]
+ 163 710 0 R 164 711 0 R
+165 712 0 R 166 713 0 R 167 714 0 R 168 715 0 R 169 716 0 R
+170 717 0 R 171 718 0 R 172 719 0 R 173 720 0 R 174 721 0 R
+175 722 0 R 176 723 0 R 177 724 0 R 178 725 0 R 179 726 0 R
+180 727 0 R 181 [707 0 R 710 0 R 707 0 R 711 0 R 707 0 R 712 0 R 707 0 R 728 0 R 729 0 R 730 0 R
+713 0 R 730 0 R 714 0 R 730 0 R 715 0 R 730 0 R 716 0 R 730 0 R 731 0 R 717 0 R
+731 0 R 718 0 R 731 0 R 719 0 R 731 0 R 720 0 R 731 0 R 721 0 R 731 0 R 722 0 R
+731 0 R 732 0 R 733 0 R 723 0 R 733 0 R 724 0 R 733 0 R 725 0 R 733 0 R 734 0 R
+735 0 R 736 0 R 737 0 R 738 0 R 726 0 R 738 0 R 727 0 R 738 0 R 739 0 R]
+ 182 740 0 R 183 741 0 R 184 [739 0 R 742 0 R 743 0 R 744 0 R 740 0 R 744 0 R 744 0 R 745 0 R 741 0 R 745 0 R
+746 0 R 747 0 R 748 0 R 749 0 R 750 0 R 751 0 R 752 0 R 753 0 R 754 0 R 755 0 R
+756 0 R 757 0 R 758 0 R 759 0 R 760 0 R 761 0 R 762 0 R 763 0 R 764 0 R 765 0 R
+766 0 R 767 0 R 768 0 R 769 0 R 770 0 R 771 0 R 772 0 R 773 0 R 774 0 R 775 0 R
+776 0 R 777 0 R 778 0 R 779 0 R 780 0 R 781 0 R 782 0 R 783 0 R 784 0 R 785 0 R]
+185 786 0 R 186 787 0 R 187 788 0 R 188 789 0 R 189 790 0 R
+190 791 0 R 191 792 0 R 192 [744 0 R 786 0 R 744 0 R 787 0 R 744 0 R 793 0 R 794 0 R 795 0 R 788 0 R 795 0 R
+789 0 R 795 0 R 790 0 R 795 0 R 796 0 R 797 0 R 791 0 R 797 0 R 798 0 R 798 0 R
+799 0 R 800 0 R 801 0 R 802 0 R 803 0 R 804 0 R 805 0 R 806 0 R 807 0 R 808 0 R
+809 0 R 810 0 R 811 0 R 812 0 R 813 0 R 814 0 R 815 0 R 816 0 R 817 0 R 818 0 R
+819 0 R 820 0 R 821 0 R 822 0 R 823 0 R 824 0 R 825 0 R 826 0 R 827 0 R 828 0 R
+829 0 R 830 0 R 831 0 R 832 0 R 792 0 R 832 0 R 833 0 R 834 0 R 835 0 R 836 0 R
+837 0 R 838 0 R 839 0 R 840 0 R 841 0 R 842 0 R 843 0 R 844 0 R 845 0 R 846 0 R
+847 0 R 848 0 R 849 0 R 850 0 R 851 0 R 852 0 R 853 0 R 854 0 R 855 0 R 856 0 R
+857 0 R 858 0 R 859 0 R 860 0 R 861 0 R 862 0 R 863 0 R 864 0 R 865 0 R 866 0 R
+867 0 R 868 0 R 869 0 R 870 0 R 871 0 R 872 0 R 873 0 R 874 0 R 875 0 R 876 0 R
+877 0 R 878 0 R 879 0 R 880 0 R 881 0 R 882 0 R 883 0 R 884 0 R 885 0 R 886 0 R
+887 0 R 888 0 R 889 0 R 890 0 R 891 0 R 892 0 R 893 0 R 894 0 R 895 0 R 896 0 R
+897 0 R 898 0 R 899 0 R 900 0 R]
+ 193 901 0 R 194 902 0 R
+195 903 0 R 196 904 0 R 197 905 0 R 198 906 0 R 199 907 0 R
+200 908 0 R 201 909 0 R 202 910 0 R 203 911 0 R 204 [798 0 R 912 0 R 913 0 R 914 0 R 915 0 R 901 0 R 915 0 R 902 0 R 915 0 R 903 0 R
+915 0 R 904 0 R 915 0 R 905 0 R 915 0 R 916 0 R 917 0 R 918 0 R 906 0 R 918 0 R
+907 0 R 918 0 R 908 0 R 918 0 R 909 0 R 918 0 R 910 0 R 918 0 R 911 0 R 918 0 R
+918 0 R 919 0 R 920 0 R 921 0 R 922 0 R 923 0 R 924 0 R 925 0 R 926 0 R 927 0 R
+928 0 R 929 0 R 930 0 R 931 0 R 932 0 R 933 0 R 934 0 R 935 0 R 936 0 R 937 0 R
+938 0 R 939 0 R]
+205 940 0 R 206 941 0 R 207 942 0 R 208 943 0 R 209 943 0 R
+210 944 0 R 211 945 0 R 212 946 0 R 213 [918 0 R 940 0 R 918 0 R 941 0 R 918 0 R 942 0 R 918 0 R 947 0 R 948 0 R 943 0 R
+948 0 R 944 0 R 948 0 R 949 0 R 950 0 R 945 0 R 950 0 R 946 0 R 950 0 R 951 0 R
+952 0 R 952 0 R 953 0 R 954 0 R]
+ 214 955 0 R
+215 956 0 R 216 957 0 R 217 958 0 R 218 959 0 R 219 960 0 R
+220 961 0 R 221 962 0 R 222 963 0 R 223 964 0 R 224 965 0 R
+225 966 0 R 226 967 0 R 227 [952 0 R 955 0 R 952 0 R 968 0 R 956 0 R 968 0 R 957 0 R 968 0 R 958 0 R 968 0 R
+959 0 R 968 0 R 960 0 R 968 0 R 969 0 R 970 0 R 961 0 R 970 0 R 962 0 R 970 0 R
+963 0 R 970 0 R 964 0 R 970 0 R 971 0 R 965 0 R 971 0 R 966 0 R 971 0 R 967 0 R
+971 0 R 972 0 R 972 0 R 973 0 R 974 0 R]
+ 228 975 0 R 229 976 0 R
+230 977 0 R 231 978 0 R 232 979 0 R 233 980 0 R 234 981 0 R
+235 982 0 R 236 983 0 R 237 984 0 R 238 985 0 R 239 985 0 R
+240 985 0 R 241 986 0 R 242 986 0 R 243 [972 0 R 975 0 R 972 0 R 976 0 R 972 0 R 977 0 R 972 0 R 978 0 R 972 0 R 979 0 R
+972 0 R 987 0 R 988 0 R 989 0 R 990 0 R 980 0 R 990 0 R 991 0 R 981 0 R 982 0 R
+992 0 R 993 0 R 994 0 R 995 0 R 996 0 R 997 0 R 998 0 R 983 0 R 984 0 R 985 0 R
+986 0 R]
+ 244 999 0 R
+245 999 0 R 246 1000 0 R 247 1000 0 R 248 1000 0 R 249 1001 0 R
+250 1001 0 R 251 1001 0 R 252 1002 0 R 253 1002 0 R 254 1002 0 R
+255 1003 0 R 256 1004 0 R 257 1004 0 R 258 1004 0 R 259 1005 0 R
+260 1005 0 R 261 1006 0 R 262 1006 0 R 263 1006 0 R 264 1007 0 R
+265 1007 0 R 266 1007 0 R 267 1008 0 R 268 1009 0 R 269 1009 0 R
+270 1010 0 R 271 1010 0 R 272 1010 0 R 273 1011 0 R 274 1012 0 R
+275 1012 0 R 276 1012 0 R 277 1013 0 R 278 1013 0 R 279 1013 0 R
+280 1014 0 R 281 1014 0 R 282 1015 0 R 283 1015 0 R 284 1016 0 R
+285 1017 0 R 286 1017 0 R 287 1017 0 R 288 1018 0 R 289 1018 0 R
+290 1019 0 R 291 1020 0 R 292 1020 0 R 293 1020 0 R 294 1021 0 R
+295 1021 0 R 296 1022 0 R 297 1022 0 R 298 1022 0 R 299 1023 0 R
+300 1023 0 R 301 1023 0 R 302 1024 0 R 303 1024 0 R 304 1025 0 R
+305 1025 0 R 306 1026 0 R 307 1026 0 R 308 1027 0 R 309 1027 0 R
+310 1027 0 R 311 1028 0 R 312 1029 0 R 313 1030 0 R 314 1030 0 R
+315 1030 0 R 316 1031 0 R 317 1032 0 R 318 1032 0 R 319 1033 0 R
+320 1034 0 R 321 1034 0 R 322 1034 0 R 323 1035 0 R 324 [999 0 R 1000 0 R 1001 0 R 1002 0 R 1003 0 R 1004 0 R 1005 0 R 1006 0 R 1007 0 R 1008 0 R
+1009 0 R 1010 0 R 1011 0 R 1012 0 R 1013 0 R 1014 0 R 1015 0 R 1016 0 R 1017 0 R 1018 0 R
+1019 0 R 1020 0 R 1021 0 R 1022 0 R 1023 0 R 1024 0 R 1025 0 R 1026 0 R 1027 0 R 1028 0 R
+1029 0 R 1030 0 R 1031 0 R 1032 0 R 1033 0 R 1034 0 R 1035 0 R]
+325 1036 0 R 326 1036 0 R 327 1037 0 R 328 1037 0 R 329 1038 0 R
+330 1038 0 R 331 1038 0 R 332 1039 0 R 333 1040 0 R 334 1040 0 R
+335 1040 0 R 336 1041 0 R 337 1042 0 R 338 1042 0 R 339 1043 0 R
+340 1043 0 R 341 1044 0 R 342 1044 0 R 343 1044 0 R 344 1045 0 R
+345 1046 0 R 346 1046 0 R 347 1047 0 R 348 1048 0 R 349 1048 0 R
+350 1048 0 R 351 1049 0 R 352 1050 0 R 353 1050 0 R 354 1050 0 R
+355 1051 0 R 356 1051 0 R 357 1052 0 R 358 1052 0 R 359 1053 0 R
+360 1053 0 R 361 1053 0 R 362 1054 0 R 363 1054 0 R 364 1055 0 R
+365 1055 0 R 366 1055 0 R 367 1056 0 R 368 1057 0 R 369 1058 0 R
+370 1059 0 R 371 1059 0 R 372 1059 0 R 373 1060 0 R 374 1060 0 R
+375 1060 0 R 376 1061 0 R 377 1061 0 R 378 1061 0 R 379 1062 0 R
+380 1062 0 R 381 1062 0 R 382 1063 0 R 383 1064 0 R 384 1064 0 R
+385 1065 0 R 386 1065 0 R 387 1065 0 R 388 1066 0 R 389 1066 0 R
+390 1066 0 R 391 1067 0 R 392 1068 0 R 393 1068 0 R 394 1069 0 R
+395 1069 0 R 396 1069 0 R 397 1070 0 R 398 1070 0 R 399 1071 0 R
+400 1071 0 R 401 [1036 0 R 1037 0 R 1038 0 R 1039 0 R 1040 0 R 1041 0 R 1042 0 R 1043 0 R 1044 0 R 1045 0 R
+1046 0 R 1047 0 R 1048 0 R 1049 0 R 1050 0 R 1051 0 R 1052 0 R 1053 0 R 1054 0 R 1055 0 R
+1056 0 R 1057 0 R 1058 0 R 1059 0 R 1060 0 R 1061 0 R 1062 0 R 1063 0 R 1064 0 R 1065 0 R
+1066 0 R 1067 0 R 1068 0 R 1069 0 R 1070 0 R 1071 0 R 1072 0 R 1073 0 R 1074 0 R]
+ 402 [1075 0 R 1076 0 R 1077 0 R]
+]
+>>
+endobj
+33 0 obj
+<<
+/K [1078 0 R 502 0 R 482 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R
+510 0 R 511 0 R 512 0 R 513 0 R 1079 0 R 1080 0 R 51 1081 0 R 569 0 R 570 0 R
+571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 636 0 R 637 0 R 638 0 R 639 0 R 640 0 R
+641 0 R 642 0 R 647 0 R 648 0 R 653 0 R 654 0 R 655 0 R 656 0 R 657 0 R 658 0 R
+680 0 R 681 0 R 682 0 R 683 0 R 684 0 R 685 0 R 686 0 R 687 0 R 688 0 R 689 0 R
+696 0 R 697 0 R 698 0 R 703 0 R 704 0 R 705 0 R 706 0 R 707 0 R 728 0 R 729 0 R
+730 0 R 731 0 R 732 0 R 733 0 R 734 0 R 735 0 R 736 0 R 737 0 R 738 0 R 739 0 R
+742 0 R 743 0 R 744 0 R 793 0 R 794 0 R 795 0 R 796 0 R 797 0 R 798 0 R 912 0 R
+913 0 R 914 0 R 915 0 R 916 0 R 917 0 R 918 0 R 947 0 R 948 0 R 949 0 R 950 0 R
+951 0 R 952 0 R 968 0 R 969 0 R 970 0 R 971 0 R 972 0 R 987 0 R 988 0 R 989 0 R
+990 0 R 991 0 R 981 0 R 982 0 R 992 0 R 993 0 R 994 0 R 995 0 R 996 0 R 997 0 R
+998 0 R 983 0 R 984 0 R 985 0 R 986 0 R 999 0 R 1000 0 R 1001 0 R 1002 0 R 1003 0 R
+1004 0 R 1005 0 R 1006 0 R 1007 0 R 1008 0 R 1009 0 R 1010 0 R 1011 0 R 1012 0 R 1013 0 R
+1014 0 R 1015 0 R 1016 0 R 1017 0 R 1018 0 R 1019 0 R 1020 0 R 1021 0 R 1022 0 R 1023 0 R
+1024 0 R 1025 0 R 1026 0 R 1027 0 R 1028 0 R 1029 0 R 1030 0 R 1031 0 R 1032 0 R 1033 0 R
+1034 0 R 1035 0 R 1036 0 R 1037 0 R 1038 0 R 1039 0 R 1040 0 R 1041 0 R 1042 0 R 1043 0 R
+1044 0 R 1045 0 R 1046 0 R 1047 0 R 1048 0 R 1049 0 R 1050 0 R 1051 0 R 1052 0 R 1053 0 R
+1054 0 R 1055 0 R 1056 0 R 1057 0 R 1058 0 R 1059 0 R 1060 0 R 1061 0 R 1062 0 R 1063 0 R
+1064 0 R 1065 0 R 1066 0 R 1067 0 R 1068 0 R 1069 0 R 1070 0 R 1071 0 R 1072 0 R 1073 0 R
+1074 0 R 1075 0 R 1076 0 R 1077 0 R]
+/Lang (en)
+/P 7 0 R
+/Pg 12 0 R
+/S /Document
+/Type /StructElem
+>>
+endobj
+34 0 obj
+<<
+/Font 1082 0 R
+/ProcSet [/PDF /ImageB /ImageC /Text]
+/XObject <<
+/Im1 1083 0 R
+/Im2 1084 0 R
+/Im3 1085 0 R
+/Im4 1086 0 R
+/Im5 1087 0 R
+/Im6 1088 0 R
+/Im7 1089 0 R
+/Im8 1090 0 R
+/Im9 1091 0 R
+/Im10 1092 0 R
+/Im11 1093 0 R
+/Im12 1094 0 R
+/Im13 1095 0 R
+/Im14 1096 0 R
+/Im15 1097 0 R
+/Im16 1098 0 R
+/Im17 1099 0 R
+/Im18 1100 0 R
+>>
+/ColorSpace 1101 0 R
+>>
+endobj
+35 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [283.176 688.444 431.264 696.436]
+/C [0 0 0]
+/Border [0 0 0]
+/A 1102 0 R
+/H /I
+>>
+endobj
+36 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [174.13 442.145 328.53 452.135]
+/C [0 0 0]
+/Border [0 0 0]
+/A 1103 0 R
+/H /I
+>>
+endobj
+37 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [202.3 422.145 427.29 432.135]
+/C [0 0 0]
+/Border [0 0 0]
+/A 1104 0 R
+/H /I
+>>
+endobj
+38 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [326.2 364.077 342.04 382.636]
+/C [0 0 0]
+/Border [0 0 0]
+/A 1105 0 R
+/H /I
+>>
+endobj
+39 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [351.4 366.191 489.149 377.136]
+/C [0 0 0]
+/Border [0 0 0]
+/A 1105 0 R
+/H /I
+>>
+endobj
+40 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [326.2 325.965 343.78 339.736]
+/C [0 0 0]
+/Border [0 0 0]
+/A 1106 0 R
+/H /I
+>>
+endobj
+41 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [351.4 323.291 506.582 334.236]
+/C [0 0 0]
+/Border [0 0 0]
+/A 1106 0 R
+/H /I
+>>
+endobj
+42 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [326.2 278.607 341.96 296.836]
+/C [0 0 0]
+/Border [0 0 0]
+/A 1107 0 R
+/H /I
+>>
+endobj
+43 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [351.4 280.391 450.44 291.336]
+/C [0 0 0]
+/Border [0 0 0]
+/A 1107 0 R
+/H /I
+>>
+endobj
+44 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [106.6 233.087 125.16 253.936]
+/C [0 0 0]
+/Border [0 0 0]
+/A 1108 0 R
+/H /I
+>>
+endobj
+45 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [131.8 237.491 232.586 248.436]
+/C [0 0 0]
+/Border [0 0 0]
+/A 1108 0 R
+/H /I
+>>
+endobj
+46 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [155.862 42.905 478.458 51.896]
+/C [0 0 0]
+/Border [0 0 0]
+/A 1109 0 R
+/H /I
+>>
+endobj
+47 0 obj
+<<
+/Length 3603
+/Filter /FlateDecode
+>>
+stream
+x\ێ}$oNOq &p^)JOK3lwSTXSŢ_$hv_K~RV9gIE=Y?!|^ZQ6_-߿Mz2X7I#bº?OIOyXH Gb+iCJ)Fk'Ͽg5=qfdkMoyׇYfEL4}{4~0$ܹId>jl:1
+omanIEt|,c 95cCt>qAK57J ?%vm0;yK7gUt4@+ǹjElmu
+̈3`!#V>͢!&]H)O4|ScsTOM#|=Fz.g^~iz}3
i>lsFRtd6j4.Jz5C ?xlp[1ŦK'&U1,hC2vkFFxͼ\$sah$3b<IiIM59WOh$sIR
+NMN;Y;qᛌu0w#g;|?;8h0̡CaQaʤ>$S*j*_ BaW.Q֯up#,a>u;<&ڻk,boD;Crp!bdMI _l;V9JT!OЁtaZbWpPԅUZVCi@]!/0%/g5
-tE@TͪY S;)3u(hUbj.mͫeR0ԛ^ضKca:6}=?f4Z^hŵ΄ht"hPĝMI=oԋyr#ibdTk&vݏe!G|!$uOS@a-ŷ$(%#KbK@m|#\j40lkFj6MD/uʜXT*!m:2O߸c}Nfa%i!SUsR+ci܋!iʑK@ZdwHf1;WՠgwiƈOG1CDP^ݒ} ր
+=~cE`ҡ1]v:ӫaMќ OU{^j7 ZzuGANn@gRUGC@rAm\T]#;כ\X=q3WUa^|iÓ$\sfn&F