diff --git a/.gitignore b/.gitignore
index be19b32..afaf5c6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
# Typst 编译产物(示例 PDF 除外)
*.pdf
!resume/sample.pdf
+!feasibility/sample.pdf
# IDE / 编辑器本地配置
.cursor/
diff --git a/README.md b/README.md
index a68dba6..e15b56c 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@ GreLin 内部 Typst 模板库,按文档类型分目录维护。目录结构如
| 文件夹 | 说明 | 入口文件 |
|--------|------|----------|
| [`resume/`](resume/) | 团队简历 | `cv.typ` |
-| [`feasibility/`](feasibility/) | 可行性研究报告 | `report.typ` |
+| [`feasibility/`](feasibility/) | 可行性研究报告 | `report.typ`(正文编辑 `feasibility/content/report.md`) |
## 环境要求
@@ -14,8 +14,9 @@ GreLin 内部 Typst 模板库,按文档类型分目录维护。目录结构如
## 快速开始
-1. 用 VS Code / Cursor 打开本仓库,打开要编辑的入口文件,例如 `resume/cv.typ`
-2. 看效果(预览):`Ctrl+Shift+P` → 输入 `Typst Preview` → 回车;侧边会实时显示排版效果
-3. 导出 PDF:`Ctrl+Shift+P` → 输入 `Typst Export PDF` → 回车;PDF 默认生成在同目录(如 `resume/sample.pdf`)
+1. 用 VS Code / Cursor 打开本仓库,打开要编辑的入口文件,例如 `resume/cv.typ` 或 `feasibility/report.typ`
+2. 可行性报告正文在 `feasibility/content/report.md` 用 Markdown 编写,无需改 Typst 代码
+3. 看效果(预览):`Ctrl+Shift+P` → 输入 `Typst Preview` → 回车;侧边会实时显示排版效果
+4. 导出 PDF:`Ctrl+Shift+P` → 输入 `Typst Export PDF` → 回车;PDF 默认生成在同目录(如 `resume/sample.pdf`)
> 不熟悉 Typst?可参考社区维护的 [小蓝书(Typst 中文教程)](https://tutorial.typst.dev/);英文版见 [官方入门教程](https://typst.app/docs/tutorial/)。
diff --git a/brand/colors.typ b/brand/colors.typ
index 5bde72e..84c5572 100644
--- a/brand/colors.typ
+++ b/brand/colors.typ
@@ -7,7 +7,8 @@
#let color-bar-bg = rgb("#EFF0F2")
#let color-page = rgb("#FDFDFD")
-// 强调绿同色系:lime → mid(品牌主色)→ olive
-#let color-lime = rgb("#D7F754")
-#let color-lime-mid = rgb("#C4D94A") // 浅底装饰、技能条、章节强调、图标
-#let color-lime-deep = rgb("#A7C957") // 浅底标题文字
+// 品牌主色(全项目绿色统一)
+#let color-brand = rgb(200, 216, 98)
+#let color-lime = color-brand.lighten(10%)
+#let color-lime-mid = color-brand
+#let color-lime-deep = color-brand.darken(22%)
diff --git a/feasibility/README.md b/feasibility/README.md
index 7e5208f..6035e09 100644
--- a/feasibility/README.md
+++ b/feasibility/README.md
@@ -1,32 +1,74 @@
# Feasibility Report · 可行性研究报告模板
-GreLin 可行性报告 Typst 模板,适用于项目论证、内部评审或 BP 附件。
+GreLin 可行性报告 Typst 模板,面向矿石分选项目论证与客户交付。同事用 **Markdown** 写正文,模板负责封面、页眉页脚与图表排版。
## 快速开始
+1. 编辑 [`content/report.md`](content/report.md)(或从 [`content/report.template.md`](content/report.template.md) 复制)
+2. 用 VS Code / Cursor 打开 [`report.typ`](report.typ)
+3. `Ctrl+Shift+P` → **Typst Preview** 预览,或 **Typst Export PDF** 导出
+
+仓库根目录编译(共享 `brand/colors.typ`):
+
```bash
-cd feasibility-report
-typst compile report.typ
-typst watch report.typ
+typst compile feasibility/report.typ feasibility/sample.pdf --root .
```
-## 定制
+示例输出:[`sample.pdf`](sample.pdf)
+
+## 工作流
| 文件 | 说明 |
|------|------|
-| [`data/config.typ`](data/config.typ) | 公司名、项目名、版本、日期、各章节正文 |
-| [`data/theme.typ`](data/theme.typ) | 配色与字号 |
-| [`data/layout.typ`](data/layout.typ) | 封面、摘要、章节组件 |
+| [`content/report.md`](content/report.md) | **主编辑入口**:YAML 元数据 + 正文 |
+| [`content/assets/`](content/assets/) | 图片资源(支持 `.jpg` / `.png` / `.svg`) |
+| [`data/config.typ`](data/config.typ) | 默认公司名、副标题等(YAML 未写时使用) |
+| [`data/theme.typ`](data/theme.typ) | 设计 token(字号、间距、表格) |
+| [`data/styling.typ`](data/styling.typ) | 标题 / 表格 / 图片 `#show` 规范 |
+| [`data/layout.typ`](data/layout.typ) | 封面、摘要、页眉组件 |
+| [`report.typ`](report.typ) | 编译入口(一般无需改动) |
-## 章节结构
+## YAML 元数据
-1. 项目概述
-2. 建设必要性与市场分析
-3. 技术方案
-4. 实施计划
-5. 投资估算与资金用途
-6. 效益分析
-7. 风险分析与对策
-8. 结论
+在 `report.md` 顶部填写:
-在 `data/config.typ` 的 `sections` 数组中逐章填写内容即可。
+```yaml
+---
+title: 某某矿山智能分选可行性研究
+brand: GreLin
+company: 西安高岭绿能科技有限公司
+date: 2026-06-22
+version: v1.0
+summary: |
+ 摘要正文……
+---
+```
+
+## Markdown 写法
+
+- 章节:`# 项目概述`(自动编号为 1. / 1.1 / 1.1.1,无需手写「一、二、三」)
+- 表格:标准 GFM 表格语法
+- 图片:`` 或 `assets/chart.png`,文件放在 `content/assets/`
+- 行内代码:`` `ONNX Runtime` ``(灰底、小圆角、品牌色文字)
+- 代码块:` ```python ` 围栏 + 语言名,由 [codly](https://typst.app/universe/package/codly) 自动语法高亮并显示语言标签
+- 下划线:`文字`(品牌色,线下移 5pt)
+- Emoji:正文可直接写 🐱 等符号(需系统字体支持)
+- 列表、加粗等均支持(基于 [cmarker](https://typst.app/universe/package/cmarker))
+
+## 依赖包
+
+| 包 | 用途 |
+|----|------|
+| [cmarker](https://typst.app/universe/package/cmarker) | Markdown → Typst 正文 |
+| [codly](https://typst.app/universe/package/codly) + [codly-languages](https://typst.app/universe/package/codly-languages) | 代码块高亮与语言标签 |
+
+可选扩展:[toutu](https://typst.app/universe/package/toutu)(目录)、[hydra](https://typst.app/universe/package/hydra)(页眉章节名)、[cetz](https://typst.app/universe/package/cetz)(矢量图表)。
+
+## 环境要求
+
+- **Typst ≥ 0.14.0**;请使用较新版本的 Tinymist 或 Typst CLI
+- 首次编译会自动下载 `cmarker`、`codly`、`codly-languages`(需网络)
+
+## 替换外部 MD
+
+将同事发来的 `.md` 覆盖 `content/report.md`,图片放入 `content/assets/` 并修正文内路径,重新预览即可。
diff --git a/feasibility/content/assets/img.jpg b/feasibility/content/assets/img.jpg
new file mode 100644
index 0000000..106cd1a
Binary files /dev/null and b/feasibility/content/assets/img.jpg differ
diff --git a/feasibility/content/report.md b/feasibility/content/report.md
new file mode 100644
index 0000000..b84aef0
--- /dev/null
+++ b/feasibility/content/report.md
@@ -0,0 +1,89 @@
+---
+title: 铝土矿可行性研究报告
+company: 西安高岭绿能科技有限公司
+date: 2026-06-22
+version: v1.0
+summary: |
+ 本项目拟在目标矿山建设智能矿石分选产线,以高光谱感知、深度学习推理与喷阀执行闭环为核心,实现铝土矿预选抛废与品位提升。经现场调研与算法验证,单线设计处理量 25 t/h,精矿 A/S 可达 4.0+,具备工程化落地条件。
+---
+
+# 项目概述
+
+本项目面向铝土矿预选场景,建设「感知—推理—执行—运维」一体化的智能分选系统,将算法能力转化为可部署、可运维的工业产品,降低后续磨选成本并提升资源利用率。
+
+> 引用块示例:政策与市场需求推动预选抛废技术应用,本段为 blockquote 样式预览。
+
+**常用 Markdown 语法预览:**
+
+- **加粗**:单线处理量 `25 t/h`
+- *斜体*:用于强调术语
+- ~~删除线~~:已废弃方案
+- 下划线:关键指标标注
+- Emoji:产线状态 🐱 正常 / ⚠️ 告警
+- 行内代码:`ONNX Runtime`、`Ratatui`
+
+```python
+# 推理回调示例
+for sample in belt_stream:
+ grade = model.infer(sample)
+ valve.fire(grade)
+```
+
+## 项目概述2
+
+建设内容包括:产线感知与推理控制软件、运营后台、运维工具及现场联调交付。
+
+# 建设必要性与市场分析
+
+铝土矿原料品位波动大,传统全量入磨能耗高、尾矿处置压力大。政策层面,绿色矿山与节能降碳要求推动预选抛废技术应用。目标客户在降本增效与环保合规方面需求明确,智能分选在预选环节具备可复制推广价值。
+
+# 技术方案
+
+系统采用 与 推理引擎,构建边缘推理与喷阀执行闭环架构。
+
+
+
+
+
+核心技术路线:
+
+- 高光谱采集与样本标准化处理
+- ONNX 推理服务与产线实时回调
+- Rust 运维控制台与产线状态监控
+
+## 验证指标(实验室 / 现场)
+
+| 指标 | 设计值 | 验证情况 |
+| ---- | ------ | -------- |
+| 单线处理量 | 25 t/h | 已验证 |
+| 精矿 | ≥ 4.0 | 4.0+ |
+| 尾矿 A/S | ≤ 1.7 | 1.7- |
+| 回收率 | ≥ 30% | 30%+ |
+
+# 实施计划
+
+1. **研发验证**(1–2 月):算法迭代、软件模块开发与台架测试。
+2. **试点部署**(2–3 月):单线现场安装、联调与试运行。
+3. **规模化推广**(持续):复制部署、运维体系与客户培训。
+
+# 投资估算与资金用途
+
+投资主要用于光谱传感与执行机构硬件、软件开发与现场实施、人员与运维体系建设。具体金额结合矿山规模与产线配置在商务阶段细化。
+
+# 效益分析
+
+- **经济效益**:减少入磨量,降低能耗与药剂成本;提升精矿品位与回收率。
+- **环保效益**:减少尾矿产生量,降低固废处置压力。
+- **社会效益**:支撑绿色矿山建设,提升企业技术形象。
+
+# 风险分析与对策
+
+| 风险 | 对策 |
+| ---- | ---- |
+| 原料波动影响模型稳定性 | 持续采样标注与模型迭代;异常降级策略 |
+| 现场交付周期 | 标准化模块与运维工具;阶段里程碑管控 |
+| 客户接受度 | 试点数据透明展示;可量化的效益测算 |
+
+# 结论
+
+综合技术验证、市场需求与实施条件,本项目具备可行性。建议推进试点产线建设,以现场数据支撑后续规模化复制。
diff --git a/feasibility/data/code.typ b/feasibility/data/code.typ
new file mode 100644
index 0000000..a11729f
--- /dev/null
+++ b/feasibility/data/code.typ
@@ -0,0 +1,38 @@
+#import "@preview/codly:1.3.0": *
+#import "@preview/codly-languages:0.1.10": codly-languages
+#import "theme.typ": *
+
+#let codly-init-rule = codly-init.with()
+
+#let codly-config = codly(
+ languages: codly-languages,
+ fill: code-block-fill,
+ radius: code-block-radius,
+ stroke: none,
+ zebra-fill: none,
+ number-format: none,
+ display-icon: false,
+ display-name: true,
+ default-color: color-body,
+ lang-stroke: (_) => none,
+ lang-fill: (_) => code-block-fill,
+ lang-radius: 0pt,
+)
+
+/// 与 codly 配合的语法高亮色(须在 codly-init 之后注册)
+#let code-token-highlight-init(doc) = {
+ show raw.where(block: true): it => {
+ show "keyword": set text(fill: code-token-keyword)
+ show "comment": set text(fill: code-token-comment)
+ show "string": set text(fill: code-token-string)
+ show "number": set text(fill: code-token-number)
+ show "builtin": set text(fill: code-token-function)
+ show "function": set text(fill: code-token-function)
+ show "decor": set text(fill: code-token-function)
+ show "operator": set text(fill: code-token-operator)
+ show "punctuation": set text(fill: code-token-operator)
+ set text(fill: color-body)
+ it
+ }
+ doc
+}
diff --git a/feasibility/data/config.typ b/feasibility/data/config.typ
index 10aa142..1adebfe 100644
--- a/feasibility/data/config.typ
+++ b/feasibility/data/config.typ
@@ -1,64 +1,11 @@
// =============================================================================
-// 可行性报告 — 修改此处定制内容
+// 可行性报告 — 默认值(正文在 content/report.md,YAML 可覆盖下列字段)
// =============================================================================
-#let company-name = "西安高岭绿能科技有限公司"
-#let project-name = "智能矿石分选系统建设项目"
-#let report-version = "v0.1"
-#let report-date = "2026 年 6 月"
+#let default-brand = "GreLin"
+#let default-company = "西安高岭绿能科技有限公司"
+#let default-title = "智能矿石分选系统建设项目"
+#let default-version = "v1.0"
+#let default-date = "2026 年 6 月"
-#let report-summary = [
- 本项目旨在建设面向铝土矿等矿石场景的智能分选软硬件一体化系统,将分选算法工程化为可部署、可运维的产线产品,形成从算法接入、设备控制、运营后台到监控运维的完整闭环,支撑绿色高效矿物加工。
-]
-
-#let sections = (
- (
- title: "一、项目概述",
- body: [
- 说明项目背景、建设目标、建设内容与预期成果。可引用 BP 中的产品定位与目标客户。
- ],
- ),
- (
- title: "二、建设必要性与市场分析",
- body: [
- 行业痛点、政策与环保驱动、目标市场规模与竞争格局。建议配合 BP 市场章节数据。
- ],
- ),
- (
- title: "三、技术方案",
- body: [
- 系统架构(感知、推理、控制、后台、运维)、核心技术路线、与现有产线对接方式。
- 可补充已验证指标:精矿 A/S、尾矿 A/S、回收率、处理量等。
- ],
- ),
- (
- title: "四、实施计划",
- body: [
- 阶段划分(研发验证 → 试点部署 → 规模化推广)、里程碑、团队分工与关键依赖。
- ],
- ),
- (
- title: "五、投资估算与资金用途",
- body: [
- 硬件、软件、人员、市场等费用结构。与 BP 财务预测保持一致。
- ],
- ),
- (
- title: "六、效益分析",
- body: [
- 经济效益(降本增效、回收率提升)、社会效益与环保效益。尽量量化。
- ],
- ),
- (
- title: "七、风险分析与对策",
- body: [
- 技术、市场、交付、政策等风险及应对措施。
- ],
- ),
- (
- title: "八、结论",
- body: [
- 综合可行性判断与建议。
- ],
- ),
-)
+#let content-path = "content/report.md"
diff --git a/feasibility/data/decor.typ b/feasibility/data/decor.typ
new file mode 100644
index 0000000..aecbfaa
--- /dev/null
+++ b/feasibility/data/decor.typ
@@ -0,0 +1,51 @@
+#import "theme.typ": *
+
+/// 点阵底纹
+#let tech-dots(width: 100%, height: 100%, step: 10pt) = box(width: width, height: height, clip: true)[
+ #for x in range(40) {
+ for y in range(40) {
+ place(
+ left + top,
+ dx: x * step,
+ dy: y * step,
+ circle(radius: 0.35pt, fill: color-grid),
+ )
+ }
+ }
+]
+
+/// 条形码条
+#let tech-barcode(width, height, bars: 28) = box(width: width, height: height, clip: true)[
+ #for i in range(bars) {
+ let w = if calc.rem(i, 4) == 0 { 2.2pt } else if calc.rem(i, 2) == 0 { 1.4pt } else { 0.8pt }
+ place(
+ left + top,
+ dx: i * (width / bars),
+ box(width: w, height: 100%, fill: color-ink),
+ )
+ }
+]
+
+/// 等宽标签
+#let tech-label(body, fill: color-ink, size: 7pt) = text(
+ font: mono-font,
+ size: size,
+ fill: fill,
+ tracking: 0.14em,
+)[#body]
+
+/// 章节编号
+#let section-tech-id(..nums) = {
+ let n = nums.pos()
+ let id = if n.len() == 1 {
+ let num = n.first()
+ if num < 10 { "0" + str(num) } else { str(num) }
+ } else if n.len() == 2 {
+ str(n.at(0)) + "." + str(n.at(1))
+ } else {
+ str(n.at(0)) + "." + str(n.at(1)) + "." + str(n.at(2))
+ }
+ box(fill: color-neon, inset: (x: 5pt, y: 2pt))[
+ #text(font: mono-font, size: 7pt, weight: "bold", fill: color-ink)[#id]
+ ]
+}
diff --git a/feasibility/data/diagrams.typ b/feasibility/data/diagrams.typ
new file mode 100644
index 0000000..b145416
--- /dev/null
+++ b/feasibility/data/diagrams.typ
@@ -0,0 +1,33 @@
+#import "@preview/cetz:0.3.4"
+#import "theme.typ": *
+
+#let ore-sorting-flow() = figure(
+ caption: [智能分选系统流程(CeTZ 矢量示意)],
+ cetz.canvas(length: 0.85cm, {
+ import cetz.draw: *
+ let w = 1.7
+ let gap = 0.55
+ let labels = ("采集", "推理", "分选", "产出")
+ for (i, label) in labels.enumerate() {
+ let x = i * (w + gap)
+ rect(
+ (x, 0),
+ (x + w, 1),
+ radius: 0.12,
+ fill: color-brand.lighten(72%),
+ stroke: 1pt + color-brand,
+ )
+ content((x + w / 2, 0.5), align(center + horizon)[
+ #text(font: body-font, size: 8pt, fill: color-body)[#label]
+ ])
+ if i < labels.len() - 1 {
+ line(
+ (x + w, 0.5),
+ (x + w + gap, 0.5),
+ stroke: 1pt + color-muted,
+ mark: (end: ">", fill: color-muted),
+ )
+ }
+ }
+ }),
+)
diff --git a/feasibility/data/glossary.typ b/feasibility/data/glossary.typ
new file mode 100644
index 0000000..c9518af
--- /dev/null
+++ b/feasibility/data/glossary.typ
@@ -0,0 +1,43 @@
+#import "@preview/glossarium:0.5.10": make-glossary, register-glossary, print-glossary, gls-long, gls-short
+#import "theme.typ": *
+
+#let glossary-entries = (
+ (
+ key: "hsi",
+ short: "HSI",
+ long: "高光谱成像",
+ description: "Hyperspectral Imaging,获取矿石连续波段光谱信息。",
+ ),
+ (
+ key: "onnx",
+ short: "ONNX",
+ long: "开放神经网络交换格式",
+ description: "Open Neural Network Exchange,用于跨平台模型推理部署。",
+ ),
+ (
+ key: "as-ratio",
+ short: "A/S",
+ long: "铝硅比",
+ description: "精矿品质评价的关键指标之一。",
+ ),
+)
+
+#let init-glossary(doc) = {
+ show: make-glossary
+ doc
+}
+
+#let register-report-glossary() = {
+ register-glossary(glossary-entries)
+}
+
+#let print-glossary-block() = {
+ pagebreak(weak: true)
+ block(width: 100%, above: space-chapter)[
+ #box(width: 100%, fill: color-neon, inset: (x: 10pt, y: 6pt))[
+ #text(font: heading-font, size: size-h1, weight: "black", fill: color-ink)[术语与缩写]
+ ]
+ #v(space-block)
+ #print-glossary(glossary-entries, show-all: true)
+ ]
+}
diff --git a/feasibility/data/layout.typ b/feasibility/data/layout.typ
index ca2cf7c..77e0783 100644
--- a/feasibility/data/layout.typ
+++ b/feasibility/data/layout.typ
@@ -1,43 +1,148 @@
#import "theme.typ": *
-#import "config.typ": *
+#import "logo.typ": grelin-logo, cover-index-badge
+#import "decor.typ": tech-dots, tech-barcode, tech-label
-#let report-title-block() = block(width: 100%, below: space-section)[
- #align(center)[
- #text(font: heading-font, size: size-title, weight: "bold", fill: color-ink)[
- #project-name
- ]
- #v(6pt)
- #text(font: heading-font, size: size-h2, fill: color-muted)[可行性研究报告]
- #v(10pt)
- #text(size: size-meta, fill: color-muted)[
- #company-name #sym.bar #report-version #sym.bar #report-date
+#let format-cover-date(date) = {
+ let parts = date.split("-")
+ if parts.len() == 3 {
+ parts.at(0) + "." + parts.at(1) + "." + parts.at(2)
+ } else {
+ date
+ }
+}
+
+#let cover-meta-strip(meta) = box(
+ width: 100%,
+ fill: color-ink,
+ inset: (x: 12pt, y: 8pt),
+)[
+ #grid(
+ columns: (1fr, auto, 1fr, auto, 1fr),
+ column-gutter: 12pt,
+ align: horizon,
+ tech-label("VERSION", fill: color-neon, size: 6.5pt),
+ text(font: mono-font, size: 8pt, fill: white)[#meta.version],
+ tech-label("DATE", fill: color-neon, size: 6.5pt),
+ text(font: mono-font, size: 8pt, fill: white)[#format-cover-date(meta.date)],
+ align(right)[
+ tech-label("STATUS · DRAFT", fill: color-neon, size: 6.5pt)
+ ],
+ )
+]
+
+#let cover-block(meta) = {
+ pagebreak(weak: true)
+ block(width: 100%, below: space-chapter)[
+ #box(width: 100%, height: cover-block-height, fill: white)[
+ #place(top + left)[#grelin-logo()]
+ #place(top + right)[#cover-index-badge("01")]
+
+ #place(left + top, dy: 52pt)[#tech-barcode(14pt, 120pt, bars: 5)]
+ #place(right + top, dy: 72pt)[
+ #rotate(-90deg, reflow: true)[
+ #tech-label("FEASIBILITY REPORT", fill: color-caption, size: 6.5pt)
+ ]
+ ]
+
+ #place(left + top, dx: 28pt, dy: 100pt)[
+ #box(width: 88%, height: 130pt, clip: true)[#tech-dots(width: 100%, height: 100%, step: 11pt)]
+ ]
+
+ #place(left + top, dx: 24pt, dy: 168pt)[
+ #box(width: 92%, fill: color-neon, inset: (x: 16pt, y: 18pt))[
+ #text(
+ font: heading-font,
+ size: size-cover-title,
+ weight: "black",
+ fill: color-ink,
+ hyphenate: false,
+ )[#meta.title]
+ ]
+ ]
+
+ #place(left + bottom, dy: -36pt)[
+ #box(width: 100%)[#cover-meta-strip(meta)]
+ ]
+
+ #place(left + bottom, dy: -8pt)[
+ #tech-barcode(100%, 10pt, bars: 48)
+ ]
]
]
- #v(space-section)
- #line(length: 100%, stroke: color-divider + 0.6pt)
-]
+ pagebreak()
+}
-#let section-block(section) = block(width: 100%, above: space-section, below: space-block)[
- #text(font: heading-font, size: size-h1, weight: "bold", fill: color-ink)[#section.title]
- #v(6pt)
- #box(width: 18pt, height: 3pt, fill: color-accent)
- #v(8pt)
- #set par(leading: leading-body, spacing: 6pt, justify: true)
- #set text(size: size-body, fill: color-body)
- #section.body
-]
+#let accent-line() = box(width: 100%, height: 2pt, fill: color-ink)
-#let summary-block() = block(width: 100%, above: space-block, below: space-section)[
- #text(font: heading-font, size: size-h2, weight: "bold", fill: color-ink)[摘要]
+#let summary-block(meta) = {
+ if meta.summary != "" {
+ block(width: 100%, above: space-block, below: space-chapter)[
+ #box(
+ width: 100%,
+ fill: white,
+ stroke: 1.5pt + color-ink,
+ inset: summary-inset,
+ )[
+ #box(width: 100%, fill: color-neon, inset: (x: 10pt, y: 5pt))[
+ #tech-label("ABSTRACT", fill: color-ink, size: 7pt)
+ ]
+ #v(10pt)
+ #text(font: heading-font, size: size-h2, weight: "black", fill: color-ink)[摘要]
+ #v(space-block)
+ #set par(leading: leading-summary, justify: true)
+ #set text(size: size-body, fill: color-body)
+ #meta.summary
+ #v(space-section)
+ #grid(
+ columns: (auto, 1fr, auto, 1fr),
+ column-gutter: 8pt,
+ align: horizon,
+ tech-label("DATE", size: 6.5pt),
+ text(font: mono-font, size: size-meta, fill: color-body)[#meta.date],
+ tech-label("ORG", size: 6.5pt),
+ text(font: mono-font, size: size-meta, fill: color-body)[#meta.company],
+ )
+ ]
+ ]
+ }
+}
+
+#let page-footer() = context {
+ grid(
+ columns: (auto, 1fr, auto),
+ align: horizon,
+ tech-barcode(36pt, 8pt, bars: 10),
+ box(width: 100%, height: 1pt, fill: color-ink),
+ box(fill: color-ink, inset: (x: 8pt, y: 3pt))[
+ #text(font: mono-font, size: 8pt, fill: color-neon)[
+ #counter(page).display("1")
+ #h(0.12em)
+ #sym.slash
+ #h(0.12em)
+ #counter(page).final().first()
+ ]
+ ],
+ )
+}
+
+#let page-accent-bar() = place(
+ left + top,
+ tech-barcode(page-accent-bar-width, 100%, bars: 4),
+)
+
+#let page-header(meta) = [
+ #grid(
+ columns: (auto, 1fr, auto),
+ column-gutter: 8pt,
+ align: horizon,
+ box(fill: color-neon, inset: (x: 6pt, y: 2pt))[
+ #text(font: mono-font, size: 7pt, weight: "bold", fill: color-ink)[#upper(meta.brand)]
+ ],
+ box(width: 100%, height: 1pt, fill: color-ink),
+ align(right)[
+ #text(font: mono-font, size: 7pt, fill: color-caption)[#meta.title]
+ ],
+ )
#v(6pt)
- #box(
- width: 100%,
- fill: color-bar-bg,
- inset: 10pt,
- radius: 4pt,
- )[
- #set par(leading: leading-body, justify: true)
- #set text(size: size-body, fill: color-body)
- #report-summary
- ]
+ #accent-line()
]
diff --git a/feasibility/data/logo.typ b/feasibility/data/logo.typ
new file mode 100644
index 0000000..894ffdf
--- /dev/null
+++ b/feasibility/data/logo.typ
@@ -0,0 +1,37 @@
+#import "theme.typ": *
+#import "decor.typ": tech-label
+
+/// Logo:霓虹绿块 + 白色折线图形 + GreLin | Tech
+#let grelin-logo(
+ primary: "GreLin",
+ secondary: "Tech",
+) = grid(
+ columns: (auto, auto),
+ column-gutter: 10pt,
+ align: horizon,
+ box(width: 34pt, height: 34pt, fill: color-neon)[
+ #place(left + top, dx: 7pt, dy: 8pt, box(width: 14pt, height: 3pt, fill: white))
+ #place(left + top, dx: 7pt, dy: 14pt, box(width: 3pt, height: 14pt, fill: white))
+ #place(left + top, dx: 18pt, dy: 14pt, box(width: 9pt, height: 3pt, fill: white))
+ #place(left + top, dx: 18pt, dy: 17pt, box(width: 3pt, height: 11pt, fill: white))
+ ],
+ grid(
+ columns: (auto, auto, auto),
+ column-gutter: 7pt,
+ align: horizon,
+ text(font: heading-font, size: 12pt, weight: "black", fill: color-ink, tracking: 0.04em)[#primary],
+ box(width: 1.2pt, height: 1em, fill: color-ink),
+ text(font: heading-font, size: 12pt, weight: "black", fill: color-ink, tracking: 0.16em)[#secondary],
+ ),
+)
+
+#let cover-index-badge(index) = box(
+ width: 58pt,
+ height: 58pt,
+ stroke: 2pt + color-ink,
+ fill: white,
+)[
+ #align(center + horizon)[
+ #text(font: mono-font, size: size-cover-index, weight: "black", fill: color-ink)[#index]
+ ]
+]
diff --git a/feasibility/data/md.typ b/feasibility/data/md.typ
new file mode 100644
index 0000000..40e79b2
--- /dev/null
+++ b/feasibility/data/md.typ
@@ -0,0 +1,70 @@
+#import "@preview/cmarker:0.1.8": render-with-metadata
+#import "config.typ": *
+#import "theme.typ": *
+#import "styling.typ": underline-accent
+
+#let source-dir(path) = {
+ let parts = path.split("/")
+ if parts.len() <= 1 {
+ ""
+ } else {
+ parts.slice(0, parts.len() - 1).join("/")
+ }
+}
+
+#let resolve-image(source-path, source, alt: none) = {
+ let dir = source-dir(source-path)
+ let full = if dir == "" { source } else { dir + "/" + source }
+ let path = "../" + full
+ let img = image(path, width: image-max-width, fit: "contain")
+ if alt != none and alt != "" {
+ block(width: 100%)[
+ #align(center)[#img]
+ #v(space-micro)
+ #align(center)[
+ #text(size: size-caption, fill: color-caption)[#alt]
+ ]
+ ]
+ } else {
+ img
+ }
+}
+
+#let meta-string(meta, key, fallback) = {
+ let value = meta.at(key, default: none)
+ if value == none {
+ fallback
+ } else if type(value) == str {
+ value
+ } else {
+ str(value)
+ }
+}
+
+#let merge-meta(yaml) = (
+ title: meta-string(yaml, "title", default-title),
+ brand: meta-string(yaml, "brand", default-brand),
+ company: meta-string(yaml, "company", default-company),
+ version: meta-string(yaml, "version", default-version),
+ date: meta-string(yaml, "date", default-date),
+ summary: yaml.at("summary", default: ""),
+)
+
+#let load-report-md(markdown, source-path: content-path, extra-scope: (:)) = {
+ let (yaml, body) = render-with-metadata(
+ markdown,
+ metadata-block: "frontmatter-yaml",
+ smart-punctuation: true,
+ html: (
+ u: (_, body) => underline-accent(body),
+ ),
+ scope: (
+ image: (source, alt: none) => resolve-image(source-path, source, alt: alt),
+ ..extra-scope,
+ ),
+ )
+ (
+ metadata: merge-meta(if yaml == none { (:) } else { yaml }),
+ body: body,
+ )
+}
diff --git a/feasibility/data/styling.typ b/feasibility/data/styling.typ
new file mode 100644
index 0000000..affd958
--- /dev/null
+++ b/feasibility/data/styling.typ
@@ -0,0 +1,160 @@
+#import "theme.typ": *
+#import "decor.typ": section-tech-id, tech-label
+
+#let underline-accent(body) = underline(
+ body,
+ stroke: underline-stroke,
+ offset: underline-offset,
+ evade: true,
+)
+
+#let heading-number(it) = {
+ if it.numbering != none {
+ counter(heading).display(it.numbering)
+ h(heading-number-gap)
+ }
+}
+
+#let report-heading-numbering(..nums) = {
+ let n = nums.pos()
+ if n.len() == 1 {
+ numbering("1.", n.first())
+ } else if n.len() == 2 {
+ numbering("1.1", n.at(0), n.at(1))
+ } else {
+ numbering("1.1.1", ..n)
+ }
+}
+
+#let grelin-h1(it) = block(
+ width: 100%,
+ above: space-chapter,
+ below: space-block,
+)[
+ #grid(
+ columns: (auto, 1fr),
+ column-gutter: 8pt,
+ align: horizon,
+ context section-tech-id(..counter(heading).get()),
+ box(width: 100%, fill: color-neon, inset: (x: 8pt, y: 4pt))[
+ #text(font: heading-font, size: size-h1, weight: "black", fill: color-ink)[
+ #heading-number(it)
+ #it.body
+ ]
+ ],
+ )
+]
+
+#let grelin-h2(it) = block(width: 100%, above: space-section, below: space-inline)[
+ #grid(
+ columns: (auto, 1fr),
+ column-gutter: 8pt,
+ align: horizon,
+ box(width: 3pt, height: 1em, fill: color-ink),
+ text(font: heading-font, size: size-h2, weight: "bold", fill: color-ink)[
+ #heading-number(it)
+ #it.body
+ ],
+ )
+]
+
+#let grelin-h3(it) = block(width: 100%, above: space-block, below: space-micro)[
+ #grid(
+ columns: (auto, 1fr),
+ column-gutter: 6pt,
+ align: horizon,
+ tech-label("///", size: 6.5pt),
+ text(font: heading-font, size: size-h3, weight: "bold", fill: color-ink)[
+ #heading-number(it)
+ #it.body
+ ],
+ )
+]
+
+#let grelin-image(it) = block(
+ width: 100%,
+ above: space-figure-before,
+ below: space-figure-after,
+)[
+ #align(center)[
+ #box(width: image-max-width, stroke: 1pt + color-ink)[
+ #set image(width: 100%, fit: "contain")
+ #it
+ ]
+ ]
+]
+
+#let grelin-table(it) = block(
+ width: 100%,
+ above: space-figure-before,
+ below: space-figure-after,
+)[
+ #it
+]
+
+#let grelin-figure(it) = block(
+ width: 100%,
+ above: space-figure-before,
+ below: space-figure-after,
+)[
+ #align(center)[
+ #set image(width: image-max-width, fit: "contain")
+ #set text(size: size-caption, fill: color-caption)
+ #it
+ ]
+]
+
+#let grelin-blockquote(it) = block(
+ width: 100%,
+ above: space-block,
+ below: space-block,
+ inset: (left: blockquote-inset),
+ stroke: (left: blockquote-stroke),
+ fill: white,
+)[
+ #set par(leading: leading-body, justify: true)
+ #set text(fill: color-quote)
+ #it
+]
+
+#let grelin-inline-code(it) = box(
+ fill: code-inline-fill,
+ inset: code-inline-inset,
+ stroke: 0.8pt + color-ink,
+)[
+ #set text(font: mono-font, size: size-body, fill: color-code-inline)
+ #it
+]
+
+#let apply-report-styling(body) = {
+ set heading(numbering: report-heading-numbering)
+ set text(size: size-table)
+ set table(
+ stroke: (x, y) => (
+ top: if y == 0 { 1.5pt + color-ink } else { none },
+ bottom: if y == 0 { 0.8pt + color-ink } else { none },
+ ),
+ inset: table-inset,
+ align: (col, row) => if col == 0 { left + horizon } else { center + horizon },
+ fill: (col, row) => {
+ if row == 0 {
+ table-header-fill
+ } else if calc.rem(row, 2) == 0 {
+ table-zebra-fill
+ } else {
+ white
+ }
+ },
+ )
+ show heading.where(level: 1): grelin-h1
+ show heading.where(level: 2): grelin-h2
+ show heading.where(level: 3): grelin-h3
+ show image: grelin-image
+ show table.cell: set text(fill: table-data-text)
+ show table.cell.where(y: 0): set text(weight: "bold", fill: color-ink)
+ show table: grelin-table
+ show figure: grelin-figure
+ show quote.where(block: true): grelin-blockquote
+ show raw.where(block: false): grelin-inline-code
+ body
+}
diff --git a/feasibility/data/theme.typ b/feasibility/data/theme.typ
index 7db41f7..abc8845 100644
--- a/feasibility/data/theme.typ
+++ b/feasibility/data/theme.typ
@@ -1,24 +1,102 @@
#import "../../brand/colors.typ": *
-#let color-accent = color-lime-mid
-#let color-divider = color-muted.lighten(68%)
+// Brutalist / FUI 配色:霓虹绿 · 纯黑 · 冷灰(避免橄榄灰发脏)
+#let color-neon = rgb(210, 255, 72)
+#let color-heading = color-neon
+#let color-accent = color-neon
+#let color-accent-line = color-ink
+#let color-divider = rgb(205, 205, 205)
+#let color-caption = rgb(110, 110, 110)
+#let color-quote = rgb(90, 90, 90)
+#let color-code-lang = rgb(90, 90, 90)
+#let color-code-inline = color-ink
+#let color-header = color-ink
+#let color-page = rgb(238, 238, 238)
+#let color-bar-bg = rgb(248, 248, 248)
+#let color-grid = rgb(220, 220, 220)
-#let heading-font = ("Microsoft YaHei", "Segoe UI")
-#let body-font = ("Microsoft YaHei UI", "Microsoft YaHei", "Segoe UI")
+// 代码块语法高亮
+#let code-token-keyword = color-ink
+#let code-token-comment = rgb(130, 130, 130)
+#let code-token-string = rgb(40, 40, 40)
+#let code-token-number = rgb(70, 70, 70)
+#let code-token-function = color-ink
+#let code-token-operator = rgb(100, 100, 100)
+#let heading-font = ("Microsoft YaHei", "Segoe UI", "Segoe UI Emoji")
+#let body-font = ("Microsoft YaHei UI", "Microsoft YaHei", "Segoe UI", "Segoe UI Emoji")
+#let mono-font = ("Consolas", "Cascadia Mono", "Microsoft YaHei UI")
+
+// =====================================================================
+// GreLin Feasibility Report · Design Tokens
+// =====================================================================
+
+// --- 字号 ---
#let size-title = 22pt
+#let size-cover-title = 34pt
+#let size-cover-index = 52pt
#let size-h1 = 14pt
#let size-h2 = 12pt
+#let size-h3 = 11pt
#let size-body = 10.5pt
#let size-meta = 9pt
+#let size-table = 9pt
+#let size-caption = size-meta
+// --- 行距 ---
#let leading-body = 12.5pt
-#let space-section = 14pt
-#let space-block = 10pt
+#let leading-summary = leading-body
+// --- 间距 ---
+#let space-none = 0pt
+#let space-micro = 4pt
+#let space-inline = 6pt
+#let space-block = 10pt
+#let space-section = 12pt
+#let space-chapter = 18pt
+#let space-figure-before = space-block
+#let space-figure-after = space-section
+#let space-cover-line = 3pt
+#let space-cover-title = 3pt
+#let space-cover-meta = 6pt
+#let cover-block-height = 19.5cm
+
+// --- 线条 / 边框 ---
+#let underline-stroke = 2pt + color-neon
+#let underline-offset = 5pt
+#let heading-number-gap = 0.35em
+#let stroke-accent = 1.5pt + color-ink
+#let summary-radius = 0pt
+#let summary-inset = 14pt
+
+// --- 页面 ---
#let page-margin = (
- top: 2.2cm,
- bottom: 2cm,
- left: 2.2cm,
- right: 2.2cm,
+ top: 2.5cm,
+ bottom: 2.5cm,
+ left: 2.5cm,
+ right: 2.5cm,
)
+#let page-header-ascent = 1.0cm
+#let page-footer-descent = 0.8cm
+#let page-accent-bar-width = 10pt
+
+// --- 表格 ---
+#let table-zebra-fill = rgb(245, 255, 228)
+#let table-header-fill = color-neon
+#let table-data-text = rgb(50, 50, 50)
+#let table-inset = (x: 10pt, y: 6pt)
+
+// --- 图片 ---
+#let image-max-width = 100%
+
+// --- 代码 ---
+#let code-block-inset = 10pt
+#let code-block-radius = 0pt
+#let code-block-fill = rgb(255, 255, 255)
+#let code-inline-fill = rgb(255, 255, 255)
+#let code-inline-inset = (x: 5pt, y: 0.12em)
+#let code-inline-radius = 0pt
+
+// --- 引用 ---
+#let blockquote-inset = 10pt
+#let blockquote-stroke = 3pt + color-neon
diff --git a/feasibility/report.typ b/feasibility/report.typ
index 01b758a..7df79a7 100644
--- a/feasibility/report.typ
+++ b/feasibility/report.typ
@@ -1,36 +1,53 @@
#import "data/config.typ": *
#import "data/theme.typ": *
-#import "data/layout.typ": *
+#import "data/glossary.typ": init-glossary, print-glossary-block, register-report-glossary, gls-long, gls-short
+#import "data/diagrams.typ": ore-sorting-flow
+#import "data/code.typ": codly-init-rule, codly-config, code-token-highlight-init
+#import "data/styling.typ": apply-report-styling
+#import "data/layout.typ": cover-block, summary-block, page-header, page-footer, page-accent-bar
+#import "data/md.typ": load-report-md
+
+#show: codly-init-rule
+#show: code-token-highlight-init
+#show: init-glossary
+#codly-config
+
+#register-report-glossary()
+
+#let report = load-report-md(
+ read(content-path),
+ source-path: content-path,
+ extra-scope: (
+ ore-sorting-flow: ore-sorting-flow,
+ gls-long: gls-long,
+ gls-short: gls-short,
+ ),
+)
+#let meta = report.metadata
#set page(
paper: "a4",
margin: page-margin,
+ header-ascent: page-header-ascent,
+ footer-descent: page-footer-descent,
fill: color-page,
+ background: page-accent-bar(),
header: context {
- if counter(page).get().first() > 1 [
- #set text(size: size-meta, fill: color-muted)
- #grid(
- columns: (1fr, 1fr),
- [#company-name],
- align(right)[#project-name · 可行性报告],
- )
- #v(4pt)
- #line(length: 100%, stroke: color-divider + 0.5pt)
- ]
+ if counter(page).get().first() > 1 {
+ page-header(meta)
+ }
},
footer: context {
- set text(size: size-meta, fill: color-muted)
- align(center)[#counter(page).display("1")]
+ if counter(page).get().first() > 1 {
+ page-footer()
+ }
},
)
#set text(font: body-font, lang: "zh", size: size-body, fill: color-body)
#set par(leading: leading-body, justify: true)
-#set heading(numbering: none)
-#report-title-block()
-#summary-block()
-
-#for section in sections {
- section-block(section)
-}
+#cover-block(meta)
+#summary-block(meta)
+#apply-report-styling(report.body)
+#print-glossary-block()
diff --git a/feasibility/sample.pdf b/feasibility/sample.pdf
new file mode 100644
index 0000000..de42138
--- /dev/null
+++ b/feasibility/sample.pdf
@@ -0,0 +1,5909 @@
+%PDF-1.7
+%
+
+1 0 obj
+<>
+endobj
+2 0 obj
+</Dest 284 0 R>>
+endobj
+3 0 obj
+</Dest 283 0 R>>
+endobj
+4 0 obj
+</Dest 285 0 R>>
+endobj
+5 0 obj
+</Dest 287 0 R>>
+endobj
+6 0 obj
+</Dest 286 0 R>>
+endobj
+7 0 obj
+</Dest 288 0 R>>
+endobj
+8 0 obj
+</Dest 289 0 R>>
+endobj
+9 0 obj
+</Dest 290 0 R>>
+endobj
+10 0 obj
+</Dest 291 0 R>>
+endobj
+11 0 obj
+</Dest 292 0 R>>
+endobj
+12 0 obj
+<>
+endobj
+13 0 obj
+<>/K[280 0 R]/ParentTree<>/IDTree<>/ParentTreeNextKey 5>>
+endobj
+14 0 obj
+[20 0 R 23 0 R 28 0 R 29 0 R 29 0 R 30 0 R 32 0 R 34 0 R 36 0 R 38 0 R 38 0 R 38 0 R]
+endobj
+15 0 obj
+[41 0 R 42 0 R 43 0 R 43 0 R 43 0 R 43 0 R 43 0 R 43 0 R 43 0 R 44 0 R 46 0 R 48 0 R 50 0 R 53 0 R 55 0 R 55 0 R 59 0 R 59 0 R 60 0 R 60 0 R 60 0 R 62 0 R 62 0 R 62 0 R 64 0 R 65 0 R 67 0 R 66 0 R 69 0 R 70 0 R 71 0 R 73 0 R 74 0 R 75 0 R 77 0 R 78 0 R 79 0 R 81 0 R 82 0 R 82 0 R 82 0 R 82 0 R 82 0 R 82 0 R 84 0 R 87 0 R 85 0 R 87 0 R 86 0 R 90 0 R 90 0 R 90 0 R 93 0 R 97 0 R 97 0 R 97 0 R 97 0 R 97 0 R 97 0 R 97 0 R 97 0 R 100 0 R 100 0 R 100 0 R 100 0 R 100 0 R 100 0 R 100 0 R 100 0 R 100 0 R 100 0 R 100 0 R 103 0 R 103 0 R 103 0 R 103 0 R 103 0 R 103 0 R 103 0 R 110 0 R 110 0 R 114 0 R 115 0 R 117 0 R 117 0 R 121 0 R 121 0 R 122 0 R 124 0 R 124 0 R 128 0 R 128 0 R 128 0 R 128 0 R 128 0 R 131 0 R 131 0 R 131 0 R 131 0 R 129 0 R 129 0 R 129 0 R]
+endobj
+16 0 obj
+[134 0 R 136 0 R 137 0 R 138 0 R 139 0 R 141 0 R 142 0 R 142 0 R 144 0 R 145 0 R 145 0 R 149 0 R 149 0 R 153 0 R 154 0 R 155 0 R 158 0 R 159 0 R 160 0 R 162 0 R 162 0 R 163 0 R 164 0 R 166 0 R 166 0 R 167 0 R 168 0 R 170 0 R 171 0 R 172 0 R]
+endobj
+17 0 obj
+[176 0 R 178 0 R 178 0 R 182 0 R 183 0 R 184 0 R 186 0 R 187 0 R 188 0 R 190 0 R 191 0 R 192 0 R 195 0 R 197 0 R 197 0 R 201 0 R 201 0 R 202 0 R 204 0 R 204 0 R 208 0 R 209 0 R 210 0 R 212 0 R 213 0 R 214 0 R 216 0 R 217 0 R 218 0 R 221 0 R 223 0 R 223 0 R 227 0 R 228 0 R 231 0 R 232 0 R 234 0 R 235 0 R 237 0 R 238 0 R 242 0 R 244 0 R 244 0 R 248 0 R]
+endobj
+18 0 obj
+[249 0 R 250 0 R 252 0 R 253 0 R 253 0 R 260 0 R 262 0 R 263 0 R 263 0 R 263 0 R 270 0 R 272 0 R 273 0 R 273 0 R 273 0 R]
+endobj
+19 0 obj
+<>
+endobj
+20 0 obj
+<>]/K[0]/Pg 865 0 R>>
+endobj
+21 0 obj
+<>
+endobj
+22 0 obj
+<>
+endobj
+23 0 obj
+<>]/K[1]/Pg 865 0 R>>
+endobj
+24 0 obj
+<>
+endobj
+25 0 obj
+<>
+endobj
+26 0 obj
+<>
+endobj
+27 0 obj
+<>
+endobj
+28 0 obj
+<>
+endobj
+29 0 obj
+<>]/K[3 4]/Pg 865 0 R>>
+endobj
+30 0 obj
+<>]/K[5]/Pg 865 0 R>>
+endobj
+31 0 obj
+<>
+endobj
+32 0 obj
+<>]/K[6]/Pg 865 0 R>>
+endobj
+33 0 obj
+<>
+endobj
+34 0 obj
+<>]/K[7]/Pg 865 0 R>>
+endobj
+35 0 obj
+<>
+endobj
+36 0 obj
+<>]/K[8]/Pg 865 0 R>>
+endobj
+37 0 obj
+<>
+endobj
+38 0 obj
+<>]/K[9 10 11]/Pg 865 0 R>>
+endobj
+39 0 obj
+<>
+endobj
+40 0 obj
+<>
+endobj
+41 0 obj
+<>
+endobj
+42 0 obj
+<>
+endobj
+43 0 obj
+<>
+endobj
+44 0 obj
+<>]/K[9]/Pg 866 0 R>>
+endobj
+45 0 obj
+<>
+endobj
+46 0 obj
+<>]/K[10]/Pg 866 0 R>>
+endobj
+47 0 obj
+<>
+endobj
+48 0 obj
+<>]/K[11]/Pg 866 0 R>>
+endobj
+49 0 obj
+<>
+endobj
+50 0 obj
+<>]/K[12]/Pg 866 0 R>>
+endobj
+51 0 obj
+<>
+endobj
+52 0 obj
+<>
+endobj
+53 0 obj
+<>]/K[13]/Pg 866 0 R>>
+endobj
+54 0 obj
+<>
+endobj
+55 0 obj
+<>]/K[14 15]/Pg 866 0 R>>
+endobj
+56 0 obj
+<>
+endobj
+57 0 obj
+<>
+endobj
+58 0 obj
+</K[57 0 R]>>
+endobj
+59 0 obj
+<>
+endobj
+60 0 obj
+<>
+endobj
+61 0 obj
+<>
+endobj
+62 0 obj
+<>
+endobj
+63 0 obj
+<>
+endobj
+64 0 obj
+<>
+endobj
+65 0 obj
+<>
+endobj
+66 0 obj
+<>
+endobj
+67 0 obj
+<>
+endobj
+68 0 obj
+<>
+endobj
+69 0 obj
+<>
+endobj
+70 0 obj
+<>
+endobj
+71 0 obj
+<>
+endobj
+72 0 obj
+<>
+endobj
+73 0 obj
+<>
+endobj
+74 0 obj
+<>]/K[32]/Pg 866 0 R>>
+endobj
+75 0 obj
+<>
+endobj
+76 0 obj
+<>
+endobj
+77 0 obj
+<>
+endobj
+78 0 obj
+<>]/K[35]/Pg 866 0 R>>
+endobj
+79 0 obj
+<>
+endobj
+80 0 obj
+<>
+endobj
+81 0 obj
+<>
+endobj
+82 0 obj
+<>
+endobj
+83 0 obj
+<>
+endobj
+84 0 obj
+<>
+endobj
+85 0 obj
+<>
+endobj
+86 0 obj
+<>
+endobj
+87 0 obj
+<>
+endobj
+88 0 obj
+<>
+endobj
+89 0 obj
+<>]/K[68 0 R 72 0 R 76 0 R 80 0 R 83 0 R 88 0 R]>>
+endobj
+90 0 obj
+<>
+endobj
+91 0 obj
+<>]/K[90 0 R]>>
+endobj
+92 0 obj
+<>
+endobj
+93 0 obj
+<>]/K[52]/Pg 866 0 R>>
+endobj
+94 0 obj
+<>
+endobj
+95 0 obj
+<>
+endobj
+96 0 obj
+<>
+endobj
+97 0 obj
+<>
+endobj
+98 0 obj
+<>]/K[97 0 R]>>
+endobj
+99 0 obj
+<>
+endobj
+100 0 obj
+<>
+endobj
+101 0 obj
+<>]/K[100 0 R]>>
+endobj
+102 0 obj
+<>
+endobj
+103 0 obj
+<>
+endobj
+104 0 obj
+<>]/K[103 0 R]>>
+endobj
+105 0 obj
+<>
+endobj
+106 0 obj
+<>
+endobj
+107 0 obj
+<>]/K[]>>
+endobj
+108 0 obj
+<>]/K[106 0 R 107 0 R]>>
+endobj
+109 0 obj
+<>
+endobj
+110 0 obj
+<>]/K[79 80]/Pg 866 0 R>>
+endobj
+111 0 obj
+<>
+endobj
+112 0 obj
+<>
+endobj
+113 0 obj
+</K[112 0 R]>>
+endobj
+114 0 obj
+<>
+endobj
+115 0 obj
+<>]/K[82]/Pg 866 0 R>>
+endobj
+116 0 obj
+<>
+endobj
+117 0 obj
+<>]/K[83 84]/Pg 866 0 R>>
+endobj
+118 0 obj
+<>
+endobj
+119 0 obj
+<>
+endobj
+120 0 obj
+</K[119 0 R]>>
+endobj
+121 0 obj
+<>
+endobj
+122 0 obj
+<>]/K[87]/Pg 866 0 R>>
+endobj
+123 0 obj
+<>
+endobj
+124 0 obj
+<>]/K[88 89]/Pg 866 0 R>>
+endobj
+125 0 obj
+<>
+endobj
+126 0 obj
+<>
+endobj
+127 0 obj
+</K[126 0 R]>>
+endobj
+128 0 obj
+<>
+endobj
+129 0 obj
+<>]/K[99 100 101]/Pg 866 0 R>>
+endobj
+130 0 obj
+<>
+endobj
+131 0 obj
+<>]/K[95 96 97 98]/Pg 866 0 R>>
+endobj
+132 0 obj
+<>]/K[131 0 R]>>
+endobj
+133 0 obj
+<>
+endobj
+134 0 obj
+<>
+endobj
+135 0 obj
+<>]/K[134 0 R]>>
+endobj
+136 0 obj
+<>
+endobj
+137 0 obj
+<>
+endobj
+138 0 obj
+<>
+endobj
+139 0 obj
+<>
+endobj
+140 0 obj
+<>
+endobj
+141 0 obj
+<>
+endobj
+142 0 obj
+<>
+endobj
+143 0 obj
+<>
+endobj
+144 0 obj
+<>
+endobj
+145 0 obj
+<>
+endobj
+146 0 obj
+<>
+endobj
+147 0 obj
+<>]/K[140 0 R 143 0 R 146 0 R]>>
+endobj
+148 0 obj
+<>
+endobj
+149 0 obj
+<>]/K[11 12]/Pg 867 0 R>>
+endobj
+150 0 obj
+<>
+endobj
+151 0 obj
+<>
+endobj
+152 0 obj
+</K[151 0 R]>>
+endobj
+153 0 obj
+<><>]/K[13]/Pg 867 0 R>>
+endobj
+154 0 obj
+<><>]/K[14]/Pg 867 0 R>>
+endobj
+155 0 obj
+<><>]/K[15]/Pg 867 0 R>>
+endobj
+156 0 obj
+<>
+endobj
+157 0 obj
+<>
+endobj
+158 0 obj
+<><>]/K[16]/Pg 867 0 R>>
+endobj
+159 0 obj
+<><>]/K[17]/Pg 867 0 R>>
+endobj
+160 0 obj
+<><>]/K[18]/Pg 867 0 R>>
+endobj
+161 0 obj
+<>
+endobj
+162 0 obj
+<><>]/K[19 20]/Pg 867 0 R>>
+endobj
+163 0 obj
+<><>]/K[21]/Pg 867 0 R>>
+endobj
+164 0 obj
+<><>]/K[22]/Pg 867 0 R>>
+endobj
+165 0 obj
+<>
+endobj
+166 0 obj
+<><>]/K[23 24]/Pg 867 0 R>>
+endobj
+167 0 obj
+<><>]/K[25]/Pg 867 0 R>>
+endobj
+168 0 obj
+<><>]/K[26]/Pg 867 0 R>>
+endobj
+169 0 obj
+<>
+endobj
+170 0 obj
+<><>]/K[27]/Pg 867 0 R>>
+endobj
+171 0 obj
+<><>]/K[28]/Pg 867 0 R>>
+endobj
+172 0 obj
+<><>]/K[29]/Pg 867 0 R>>
+endobj
+173 0 obj
+<>
+endobj
+174 0 obj
+<>
+endobj
+175 0 obj
+<>
+endobj
+176 0 obj
+<>]/K[0]/Pg 868 0 R>>
+endobj
+177 0 obj
+<>
+endobj
+178 0 obj
+<>]/K[1 2]/Pg 868 0 R>>
+endobj
+179 0 obj
+<>
+endobj
+180 0 obj
+<>
+endobj
+181 0 obj
+</K[180 0 R]>>
+endobj
+182 0 obj
+<>
+endobj
+183 0 obj
+<>
+endobj
+184 0 obj
+<>
+endobj
+185 0 obj
+<>
+endobj
+186 0 obj
+<>
+endobj
+187 0 obj
+<>
+endobj
+188 0 obj
+<>
+endobj
+189 0 obj
+<>
+endobj
+190 0 obj
+<>
+endobj
+191 0 obj
+<>
+endobj
+192 0 obj
+<>
+endobj
+193 0 obj
+<>
+endobj
+194 0 obj
+<>]/K[185 0 R 189 0 R 193 0 R]>>
+endobj
+195 0 obj
+<>]/K[12]/Pg 868 0 R>>
+endobj
+196 0 obj
+<>
+endobj
+197 0 obj
+<>]/K[13 14]/Pg 868 0 R>>
+endobj
+198 0 obj
+<>
+endobj
+199 0 obj
+<>
+endobj
+200 0 obj
+</K[199 0 R]>>
+endobj
+201 0 obj
+<>
+endobj
+202 0 obj
+<>]/K[17]/Pg 868 0 R>>
+endobj
+203 0 obj
+<>
+endobj
+204 0 obj
+<>]/K[18 19]/Pg 868 0 R>>
+endobj
+205 0 obj
+<>
+endobj
+206 0 obj
+<>
+endobj
+207 0 obj
+</K[206 0 R]>>
+endobj
+208 0 obj
+<>
+endobj
+209 0 obj
+<>
+endobj
+210 0 obj
+<>
+endobj
+211 0 obj
+<>
+endobj
+212 0 obj
+<>
+endobj
+213 0 obj
+<>
+endobj
+214 0 obj
+<>
+endobj
+215 0 obj
+<>
+endobj
+216 0 obj
+<>
+endobj
+217 0 obj
+<>
+endobj
+218 0 obj
+<>
+endobj
+219 0 obj
+<>
+endobj
+220 0 obj
+<>]/K[211 0 R 215 0 R 219 0 R]>>
+endobj
+221 0 obj
+<>]/K[29]/Pg 868 0 R>>
+endobj
+222 0 obj
+<>
+endobj
+223 0 obj
+<>]/K[30 31]/Pg 868 0 R>>
+endobj
+224 0 obj
+<>
+endobj
+225 0 obj
+<>
+endobj
+226 0 obj
+</K[225 0 R]>>
+endobj
+227 0 obj
+<><>]/K[32]/Pg 868 0 R>>
+endobj
+228 0 obj
+<><>]/K[33]/Pg 868 0 R>>
+endobj
+229 0 obj
+<>
+endobj
+230 0 obj
+<>
+endobj
+231 0 obj
+<><>]/K[34]/Pg 868 0 R>>
+endobj
+232 0 obj
+<><>]/K[35]/Pg 868 0 R>>
+endobj
+233 0 obj
+<>
+endobj
+234 0 obj
+<><>]/K[36]/Pg 868 0 R>>
+endobj
+235 0 obj
+<><>]/K[37]/Pg 868 0 R>>
+endobj
+236 0 obj
+<>
+endobj
+237 0 obj
+<><>]/K[38]/Pg 868 0 R>>
+endobj
+238 0 obj
+<><>]/K[39]/Pg 868 0 R>>
+endobj
+239 0 obj
+<>
+endobj
+240 0 obj
+<>
+endobj
+241 0 obj
+<>
+endobj
+242 0 obj
+<>]/K[40]/Pg 868 0 R>>
+endobj
+243 0 obj
+<>
+endobj
+244 0 obj
+<>]/K[41 42]/Pg 868 0 R>>
+endobj
+245 0 obj
+<>
+endobj
+246 0 obj
+<>
+endobj
+247 0 obj
+</K[246 0 R]>>
+endobj
+248 0 obj
+<>
+endobj
+249 0 obj
+<>
+endobj
+250 0 obj
+<>
+endobj
+251 0 obj
+<>
+endobj
+252 0 obj
+<>
+endobj
+253 0 obj
+<>
+endobj
+254 0 obj
+<>]/K[253 0 R]>>
+endobj
+255 0 obj
+<>]/K[]>>
+endobj
+256 0 obj
+<>]/K[]>>
+endobj
+257 0 obj
+<>]/K[]>>
+endobj
+258 0 obj
+<>]/K[]>>
+endobj
+259 0 obj
+<>]/K[]>>
+endobj
+260 0 obj
+<>
+endobj
+261 0 obj
+<>
+endobj
+262 0 obj
+<>
+endobj
+263 0 obj
+<>
+endobj
+264 0 obj
+<>]/K[263 0 R]>>
+endobj
+265 0 obj
+<>]/K[]>>
+endobj
+266 0 obj
+<>]/K[]>>
+endobj
+267 0 obj
+<>]/K[]>>
+endobj
+268 0 obj
+<>]/K[]>>
+endobj
+269 0 obj
+<>]/K[]>>
+endobj
+270 0 obj
+<>
+endobj
+271 0 obj
+<>
+endobj
+272 0 obj
+<>
+endobj
+273 0 obj
+<>
+endobj
+274 0 obj
+<>]/K[273 0 R]>>
+endobj
+275 0 obj
+<>]/K[]>>
+endobj
+276 0 obj
+<>]/K[]>>
+endobj
+277 0 obj
+<>]/K[]>>
+endobj
+278 0 obj
+<>]/K[]>>
+endobj
+279 0 obj
+<>]/K[]>>
+endobj
+280 0 obj
+<>
+endobj
+281 0 obj
+[/ICCBased 899 0 R]
+endobj
+282 0 obj
+[/ICCBased 900 0 R]
+endobj
+283 0 obj
+[866 0 R/XYZ 70.86614 582.4481 0]
+endobj
+284 0 obj
+[866 0 R/XYZ 70.86614 304.4151 0]
+endobj
+285 0 obj
+[866 0 R/XYZ 70.86614 262.80798 0]
+endobj
+286 0 obj
+[866 0 R/XYZ 70.86614 190.10486 0]
+endobj
+287 0 obj
+[867 0 R/XYZ 70.86614 231.00671 0]
+endobj
+288 0 obj
+[868 0 R/XYZ 70.86614 781.0236 0]
+endobj
+289 0 obj
+[868 0 R/XYZ 70.86614 689.01337 0]
+endobj
+290 0 obj
+[868 0 R/XYZ 70.86614 616.31024 0]
+endobj
+291 0 obj
+[868 0 R/XYZ 70.86614 524.3 0]
+endobj
+292 0 obj
+[868 0 R/XYZ 70.86614 402.4826 0]
+endobj
+293 0 obj
+<>
+endobj
+294 0 obj
+<>
+endobj
+295 0 obj
+<>
+endobj
+296 0 obj
+<>
+endobj
+297 0 obj
+<>
+endobj
+298 0 obj
+<>
+endobj
+299 0 obj
+<>
+endobj
+300 0 obj
+<>
+endobj
+301 0 obj
+<>
+endobj
+302 0 obj
+<>
+endobj
+303 0 obj
+<>
+endobj
+304 0 obj
+<>
+endobj
+305 0 obj
+<>
+endobj
+306 0 obj
+<>
+endobj
+307 0 obj
+<>
+endobj
+308 0 obj
+<>
+endobj
+309 0 obj
+<>
+endobj
+310 0 obj
+<>
+endobj
+311 0 obj
+<>
+endobj
+312 0 obj
+<>
+endobj
+313 0 obj
+<>
+endobj
+314 0 obj
+<>
+endobj
+315 0 obj
+<>
+endobj
+316 0 obj
+<>
+endobj
+317 0 obj
+<>
+endobj
+318 0 obj
+<>
+endobj
+319 0 obj
+<>
+endobj
+320 0 obj
+<>
+endobj
+321 0 obj
+<>
+endobj
+322 0 obj
+<>
+endobj
+323 0 obj
+<>
+endobj
+324 0 obj
+<>
+endobj
+325 0 obj
+<>
+endobj
+326 0 obj
+<>
+endobj
+327 0 obj
+<>
+endobj
+328 0 obj
+<>
+endobj
+329 0 obj
+<>
+endobj
+330 0 obj
+<>
+endobj
+331 0 obj
+<>
+endobj
+332 0 obj
+<>
+endobj
+333 0 obj
+<>
+endobj
+334 0 obj
+<>
+endobj
+335 0 obj
+<>
+endobj
+336 0 obj
+<>
+endobj
+337 0 obj
+<>
+endobj
+338 0 obj
+<>
+endobj
+339 0 obj
+<>
+endobj
+340 0 obj
+<>
+endobj
+341 0 obj
+<>
+endobj
+342 0 obj
+<>
+endobj
+343 0 obj
+<>
+endobj
+344 0 obj
+<>
+endobj
+345 0 obj
+<>
+endobj
+346 0 obj
+<>
+endobj
+347 0 obj
+<>
+endobj
+348 0 obj
+<>>>
+endobj
+349 0 obj
+<>>>
+endobj
+350 0 obj
+<>>>
+endobj
+351 0 obj
+<>>>
+endobj
+352 0 obj
+<>>>
+endobj
+353 0 obj
+<>>>
+endobj
+354 0 obj
+<>>>
+endobj
+355 0 obj
+<>>>
+endobj
+356 0 obj
+<>>>
+endobj
+357 0 obj
+<>>>
+endobj
+358 0 obj
+<>>>
+endobj
+359 0 obj
+<>>>
+endobj
+360 0 obj
+<>>>
+endobj
+361 0 obj
+<>>>
+endobj
+362 0 obj
+<>>>
+endobj
+363 0 obj
+<>>>
+endobj
+364 0 obj
+<>>>
+endobj
+365 0 obj
+<>>>
+endobj
+366 0 obj
+<>>>
+endobj
+367 0 obj
+<>>>
+endobj
+368 0 obj
+<>>>
+endobj
+369 0 obj
+<>>>
+endobj
+370 0 obj
+<>>>
+endobj
+371 0 obj
+<>>>
+endobj
+372 0 obj
+<>>>
+endobj
+373 0 obj
+<>>>
+endobj
+374 0 obj
+<>>>
+endobj
+375 0 obj
+<>>>
+endobj
+376 0 obj
+<>>>
+endobj
+377 0 obj
+<>>>
+endobj
+378 0 obj
+<>>>
+endobj
+379 0 obj
+<>>>
+endobj
+380 0 obj
+<>>>
+endobj
+381 0 obj
+<>>>
+endobj
+382 0 obj
+<>>>
+endobj
+383 0 obj
+<>>>
+endobj
+384 0 obj
+<>>>
+endobj
+385 0 obj
+<>>>
+endobj
+386 0 obj
+<>>>
+endobj
+387 0 obj
+<>>>
+endobj
+388 0 obj
+<>>>
+endobj
+389 0 obj
+<>>>
+endobj
+390 0 obj
+<>>>
+endobj
+391 0 obj
+<>>>
+endobj
+392 0 obj
+<>>>
+endobj
+393 0 obj
+<>>>
+endobj
+394 0 obj
+<>>>
+endobj
+395 0 obj
+<>>>
+endobj
+396 0 obj
+<>>>
+endobj
+397 0 obj
+<>/Pattern<>>>
+endobj
+398 0 obj
+<>>>
+endobj
+399 0 obj
+<>>>
+endobj
+400 0 obj
+<>>>
+endobj
+401 0 obj
+<>>>
+endobj
+402 0 obj
+<>>>
+endobj
+403 0 obj
+<>>>
+endobj
+404 0 obj
+<>/ExtGState<>/Pattern<>>>
+endobj
+405 0 obj
+<>>>
+endobj
+406 0 obj
+<>/Font<>>>
+endobj
+407 0 obj
+<>/Font<>>>
+endobj
+408 0 obj
+<>/XObject<>/Font<>>>
+endobj
+409 0 obj
+<>/Font<>>>
+endobj
+410 0 obj
+<>/Font<>>>
+endobj
+411 0 obj
+<>
+endobj
+412 0 obj
+<>
+endobj
+413 0 obj
+<>
+endobj
+414 0 obj
+<>
+endobj
+415 0 obj
+<>
+endobj
+416 0 obj
+<>
+endobj
+417 0 obj
+<>
+endobj
+418 0 obj
+<>
+endobj
+419 0 obj
+<>
+endobj
+420 0 obj
+<>
+endobj
+421 0 obj
+<>
+endobj
+422 0 obj
+<>
+endobj
+423 0 obj
+<>
+endobj
+424 0 obj
+<>
+endobj
+425 0 obj
+<>
+endobj
+426 0 obj
+<>
+endobj
+427 0 obj
+<>
+endobj
+428 0 obj
+<>
+endobj
+429 0 obj
+<>
+endobj
+430 0 obj
+<>
+endobj
+431 0 obj
+<>
+endobj
+432 0 obj
+<>
+endobj
+433 0 obj
+<>
+endobj
+434 0 obj
+<>
+endobj
+435 0 obj
+<>
+endobj
+436 0 obj
+<>
+endobj
+437 0 obj
+<>
+endobj
+438 0 obj
+<>
+endobj
+439 0 obj
+<>
+endobj
+440 0 obj
+<>
+endobj
+441 0 obj
+<>
+endobj
+442 0 obj
+<>
+endobj
+443 0 obj
+<>
+endobj
+444 0 obj
+<>
+endobj
+445 0 obj
+<>
+endobj
+446 0 obj
+<>
+endobj
+447 0 obj
+<>
+endobj
+448 0 obj
+<>
+endobj
+449 0 obj
+<>
+endobj
+450 0 obj
+<>
+endobj
+451 0 obj
+<>
+endobj
+452 0 obj
+<>
+endobj
+453 0 obj
+<>
+endobj
+454 0 obj
+<>
+endobj
+455 0 obj
+<>
+endobj
+456 0 obj
+<>
+endobj
+457 0 obj
+<>
+endobj
+458 0 obj
+<>
+endobj
+459 0 obj
+<>
+endobj
+460 0 obj
+<>
+endobj
+461 0 obj
+<>
+endobj
+462 0 obj
+<>
+endobj
+463 0 obj
+<>
+endobj
+464 0 obj
+<>
+endobj
+465 0 obj
+<>
+endobj
+466 0 obj
+<>
+endobj
+467 0 obj
+<>/FontDescriptor 468 0 R/DW 0/CIDToGIDMap/Identity/W[0 0 697.2656 1 1 765.1367 2 2 423.82812 3 3 582.03125 4 4 546.875 5 5 295.89844 6 6 647.9492 7 7 625.4883 8 8 516.60156 9 9 645.5078 10 21 1000 22 22 616.6992 23 23 285.64453 24 24 297.85156 25 28 1000 29 29 616.6992 30 37 1000 38 38 616.6992 39 49 1000 50 50 472.65625 51 52 1000 53 53 616.6992 54 56 1000 57 57 616.6992 58 64 1000 65 65 616.6992 66 67 1000 68 68 616.6992 69 72 1000 73 73 616.6992 74 78 1000]>>
+endobj
+468 0 obj
+<>
+endobj
+469 0 obj
+<>
+endobj
+470 0 obj
+<>/FontDescriptor 471 0 R/DW 0/CIDToGIDMap/Identity/W[0 15 549.8047]>>
+endobj
+471 0 obj
+<>
+endobj
+472 0 obj
+<>
+endobj
+473 0 obj
+<>/FontDescriptor 474 0 R/DW 0/CIDToGIDMap/Identity/W[0 38 549.8047]>>
+endobj
+474 0 obj
+<>
+endobj
+475 0 obj
+<>
+endobj
+476 0 obj
+<>/FontDescriptor 477 0 R/DW 0/CIDToGIDMap/Identity/W[0 0 697.2656 1 1 372.5586 2 2 567.3828 3 3 501.46484 4 4 615.72266 5 5 432.6172 6 6 266.11328 7 7 552.7344 8 8 638.6719 9 9 333.98438 10 10 376.95312 11 11 577.14844 12 12 573.2422 13 13 703.6133 14 14 746.58203 15 15 295.89844 16 16 240.72266 17 17 761.71875 18 18 652.83203 19 19 531.25 20 20 376.95312 21 21 240.72266 22 22 346.6797 23 23 266.11328 24 24 240.72266 25 25 635.7422 26 26 381.83594 27 27 616.21094 28 28 462.89062 29 29 491.69922 30 30 586.4258 31 31 240.72266 32 32 586.4258 33 33 638.6719 34 34 333.98438 35 104 1000 105 105 586.4258 106 106 427.2461 107 108 1000 109 110 586.4258 111 111 741.6992 112 134 1000 135 135 1080.0781 136 175 1000 176 176 544.4336 177 177 639.64844 178 178 616.21094 179 181 1000 182 182 439.45312 183 198 1000 199 199 549.8047 200 200 937.0117 201 201 267.08984 202 252 1000 253 253 814.9414 254 254 812.9883 255 255 645.01953 256 263 1000 264 264 586.4258 265 266 1000 267 267 668.9453 268 268 620.1172 269 280 1000 281 282 741.6992 283 283 586.4258 284 284 1000 285 285 586.4258 286 286 889.64844 287 287 540.03906 288 351 1000 352 352 773.4375 353 353 529.2969 354 354 293.9453 355 355 639.64844 356 360 1000 361 361 789.5508 362 362 506.83594 363 364 1000]>>
+endobj
+477 0 obj
+<>
+endobj
+478 0 obj
+<>
+endobj
+479 0 obj
+<>/FontDescriptor 480 0 R/DW 0/CIDToGIDMap/Identity/W[0 0 697.2656 1 2 1000 3 3 297.85156 4 4 1028.3203 5 5 577.6367 6 6 423.82812 7 7 596.1914 8 8 664.5508 9 9 657.22656 10 10 851.5625 11 11 647.9492 12 50 1000 51 51 751.9531 52 52 472.65625 53 53 601.5625 54 54 540.03906 55 57 1000 58 58 821.28906 59 59 335.44922 60 64 1000 65 65 818.3594 66 66 848.14453 67 67 700.1953 68 76 1000]>>
+endobj
+480 0 obj
+<>
+endobj
+481 0 obj
+<>
+endobj
+482 0 obj
+<>/Encoding<>>>
+endobj
+483 0 obj
+<>
+endobj
+484 0 obj
+<>/FontDescriptor 485 0 R/DW 0/CIDToGIDMap/Identity/W[0 27 602.0508]>>
+endobj
+485 0 obj
+<>
+endobj
+486 0 obj
+<>
+endobj
+487 0 obj
+<>/FontDescriptor 488 0 R/DW 0/CIDToGIDMap/Identity/W[0 6 1000]>>
+endobj
+488 0 obj
+<>
+endobj
+489 0 obj
+<>
+endobj
+490 0 obj
+<>
+endobj
+491 0 obj
+<>
+endobj
+492 0 obj
+<>
+endobj
+493 0 obj
+<>
+endobj
+494 0 obj
+<>
+endobj
+495 0 obj
+<>
+endobj
+496 0 obj
+<>
+endobj
+497 0 obj
+<>
+endobj
+498 0 obj
+<>
+endobj
+499 0 obj
+<>
+endobj
+500 0 obj
+<>
+endobj
+501 0 obj
+<>
+endobj
+502 0 obj
+<>
+endobj
+503 0 obj
+<>
+endobj
+504 0 obj
+<>
+endobj
+505 0 obj
+<>
+endobj
+506 0 obj
+<>
+endobj
+507 0 obj
+<>
+endobj
+508 0 obj
+<>
+endobj
+509 0 obj
+<>
+endobj
+510 0 obj
+<>
+endobj
+511 0 obj
+<>
+endobj
+512 0 obj
+<>
+endobj
+513 0 obj
+<>
+endobj
+514 0 obj
+<>
+endobj
+515 0 obj
+<>
+endobj
+516 0 obj
+<>
+endobj
+517 0 obj
+<>
+endobj
+518 0 obj
+<>
+endobj
+519 0 obj
+<>
+endobj
+520 0 obj
+<>
+endobj
+521 0 obj
+<>
+endobj
+522 0 obj
+<>
+endobj
+523 0 obj
+<>
+endobj
+524 0 obj
+<>
+endobj
+525 0 obj
+<>
+endobj
+526 0 obj
+<>
+endobj
+527 0 obj
+<>
+endobj
+528 0 obj
+<>
+endobj
+529 0 obj
+<>
+endobj
+530 0 obj
+<>
+endobj
+531 0 obj
+<>
+endobj
+532 0 obj
+<>
+endobj
+533 0 obj
+<>
+endobj
+534 0 obj
+<>
+endobj
+535 0 obj
+<>
+endobj
+536 0 obj
+<>
+endobj
+537 0 obj
+<>
+endobj
+538 0 obj
+<>
+endobj
+539 0 obj
+<>
+endobj
+540 0 obj
+<>
+endobj
+541 0 obj
+<>
+endobj
+542 0 obj
+<>
+endobj
+543 0 obj
+<>
+endobj
+544 0 obj
+<>
+endobj
+545 0 obj
+<>
+endobj
+546 0 obj
+<>
+endobj
+547 0 obj
+<>
+endobj
+548 0 obj
+<>
+endobj
+549 0 obj
+<>
+endobj
+550 0 obj
+<>
+endobj
+551 0 obj
+<>
+endobj
+552 0 obj
+<>
+endobj
+553 0 obj
+<>
+endobj
+554 0 obj
+<>
+endobj
+555 0 obj
+<>
+endobj
+556 0 obj
+<>
+endobj
+557 0 obj
+<>
+endobj
+558 0 obj
+<>
+endobj
+559 0 obj
+<>
+endobj
+560 0 obj
+<>
+endobj
+561 0 obj
+<>
+endobj
+562 0 obj
+<>
+endobj
+563 0 obj
+<>
+endobj
+564 0 obj
+<>
+endobj
+565 0 obj
+<>
+endobj
+566 0 obj
+<>
+endobj
+567 0 obj
+<>
+endobj
+568 0 obj
+<>
+endobj
+569 0 obj
+<>
+endobj
+570 0 obj
+<>
+endobj
+571 0 obj
+<>
+endobj
+572 0 obj
+<>
+endobj
+573 0 obj
+<>
+endobj
+574 0 obj
+<>
+endobj
+575 0 obj
+<>
+endobj
+576 0 obj
+<>
+endobj
+577 0 obj
+<>
+endobj
+578 0 obj
+<>
+endobj
+579 0 obj
+<>
+endobj
+580 0 obj
+<>
+endobj
+581 0 obj
+<>
+endobj
+582 0 obj
+<>
+endobj
+583 0 obj
+<>
+endobj
+584 0 obj
+<>
+endobj
+585 0 obj
+<>
+endobj
+586 0 obj
+<>
+endobj
+587 0 obj
+<>
+endobj
+588 0 obj
+<>
+endobj
+589 0 obj
+<>
+endobj
+590 0 obj
+<>
+endobj
+591 0 obj
+<>
+endobj
+592 0 obj
+<>
+endobj
+593 0 obj
+<>
+endobj
+594 0 obj
+<>
+endobj
+595 0 obj
+<>
+endobj
+596 0 obj
+<>
+endobj
+597 0 obj
+<>
+endobj
+598 0 obj
+<>
+endobj
+599 0 obj
+<>
+endobj
+600 0 obj
+<>
+endobj
+601 0 obj
+<>
+endobj
+602 0 obj
+<>
+endobj
+603 0 obj
+<>
+endobj
+604 0 obj
+<>
+endobj
+605 0 obj
+<>
+endobj
+606 0 obj
+<>
+endobj
+607 0 obj
+<>
+endobj
+608 0 obj
+<>
+endobj
+609 0 obj
+<>
+endobj
+610 0 obj
+<>
+endobj
+611 0 obj
+<>
+endobj
+612 0 obj
+<>
+endobj
+613 0 obj
+<>
+endobj
+614 0 obj
+<>
+endobj
+615 0 obj
+<>
+endobj
+616 0 obj
+<>
+endobj
+617 0 obj
+<>
+endobj
+618 0 obj
+<>
+endobj
+619 0 obj
+<>
+endobj
+620 0 obj
+<>
+endobj
+621 0 obj
+<>
+endobj
+622 0 obj
+<>
+endobj
+623 0 obj
+<>
+endobj
+624 0 obj
+<>
+endobj
+625 0 obj
+<>
+endobj
+626 0 obj
+<>
+endobj
+627 0 obj
+<>
+endobj
+628 0 obj
+<>
+endobj
+629 0 obj
+<>
+endobj
+630 0 obj
+<>
+endobj
+631 0 obj
+<>
+endobj
+632 0 obj
+<>
+endobj
+633 0 obj
+<>
+endobj
+634 0 obj
+<>
+endobj
+635 0 obj
+<>
+endobj
+636 0 obj
+<>
+endobj
+637 0 obj
+<>
+endobj
+638 0 obj
+<>
+endobj
+639 0 obj
+<>
+endobj
+640 0 obj
+<>
+endobj
+641 0 obj
+<>
+endobj
+642 0 obj
+<>
+endobj
+643 0 obj
+<>
+endobj
+644 0 obj
+<>
+endobj
+645 0 obj
+<>
+endobj
+646 0 obj
+<>
+endobj
+647 0 obj
+<>
+endobj
+648 0 obj
+<>
+endobj
+649 0 obj
+<>
+endobj
+650 0 obj
+<>
+endobj
+651 0 obj
+<>
+endobj
+652 0 obj
+<>
+endobj
+653 0 obj
+<>
+endobj
+654 0 obj
+<>
+endobj
+655 0 obj
+<>
+endobj
+656 0 obj
+<>
+endobj
+657 0 obj
+<>
+endobj
+658 0 obj
+<>
+endobj
+659 0 obj
+<>
+endobj
+660 0 obj
+<>
+endobj
+661 0 obj
+<>
+endobj
+662 0 obj
+<>
+endobj
+663 0 obj
+<>
+endobj
+664 0 obj
+<>
+endobj
+665 0 obj
+<>
+endobj
+666 0 obj
+<>
+endobj
+667 0 obj
+<>
+endobj
+668 0 obj
+<>
+endobj
+669 0 obj
+<>
+endobj
+670 0 obj
+<>
+endobj
+671 0 obj
+<>
+endobj
+672 0 obj
+<>
+endobj
+673 0 obj
+<>
+endobj
+674 0 obj
+<>
+endobj
+675 0 obj
+<>
+endobj
+676 0 obj
+<>
+endobj
+677 0 obj
+<>
+endobj
+678 0 obj
+<>
+endobj
+679 0 obj
+<>
+endobj
+680 0 obj
+<>
+endobj
+681 0 obj
+<>
+endobj
+682 0 obj
+<>
+endobj
+683 0 obj
+<>
+endobj
+684 0 obj
+<>
+endobj
+685 0 obj
+<>
+endobj
+686 0 obj
+<>
+endobj
+687 0 obj
+<>
+endobj
+688 0 obj
+<>
+endobj
+689 0 obj
+<>
+endobj
+690 0 obj
+<>
+endobj
+691 0 obj
+<>
+endobj
+692 0 obj
+<>
+endobj
+693 0 obj
+<>
+endobj
+694 0 obj
+<>
+endobj
+695 0 obj
+<>
+endobj
+696 0 obj
+<>
+endobj
+697 0 obj
+<>
+endobj
+698 0 obj
+<>
+endobj
+699 0 obj
+<>
+endobj
+700 0 obj
+<>
+endobj
+701 0 obj
+<>
+endobj
+702 0 obj
+<>
+endobj
+703 0 obj
+<>
+endobj
+704 0 obj
+<>
+endobj
+705 0 obj
+<>
+endobj
+706 0 obj
+<>
+endobj
+707 0 obj
+<>
+endobj
+708 0 obj
+<>
+endobj
+709 0 obj
+<>
+endobj
+710 0 obj
+<>
+endobj
+711 0 obj
+<>
+endobj
+712 0 obj
+<>
+endobj
+713 0 obj
+<>
+endobj
+714 0 obj
+<>
+endobj
+715 0 obj
+<>
+endobj
+716 0 obj
+<>
+endobj
+717 0 obj
+<>
+endobj
+718 0 obj
+<>
+endobj
+719 0 obj
+<>
+endobj
+720 0 obj
+<>
+endobj
+721 0 obj
+<>
+endobj
+722 0 obj
+<>
+endobj
+723 0 obj
+<>
+endobj
+724 0 obj
+<>
+endobj
+725 0 obj
+<>
+endobj
+726 0 obj
+<>
+endobj
+727 0 obj
+<>
+endobj
+728 0 obj
+<>
+endobj
+729 0 obj
+<>
+endobj
+730 0 obj
+<>
+endobj
+731 0 obj
+<>
+endobj
+732 0 obj
+<>
+endobj
+733 0 obj
+<>
+endobj
+734 0 obj
+<>
+endobj
+735 0 obj
+<>
+endobj
+736 0 obj
+<>
+endobj
+737 0 obj
+<>
+endobj
+738 0 obj
+<>
+endobj
+739 0 obj
+<>
+endobj
+740 0 obj
+<>
+endobj
+741 0 obj
+<>
+endobj
+742 0 obj
+<>
+endobj
+743 0 obj
+<>
+endobj
+744 0 obj
+<>
+endobj
+745 0 obj
+<>
+endobj
+746 0 obj
+<>
+endobj
+747 0 obj
+<>
+endobj
+748 0 obj
+<>
+endobj
+749 0 obj
+<>
+endobj
+750 0 obj
+<>
+endobj
+751 0 obj
+<>
+endobj
+752 0 obj
+<>
+endobj
+753 0 obj
+<>
+endobj
+754 0 obj
+<>
+endobj
+755 0 obj
+<>
+endobj
+756 0 obj
+<>
+endobj
+757 0 obj
+<>
+endobj
+758 0 obj
+<>
+endobj
+759 0 obj
+<>
+endobj
+760 0 obj
+<>
+endobj
+761 0 obj
+<>
+endobj
+762 0 obj
+<>
+endobj
+763 0 obj
+<>
+endobj
+764 0 obj
+<>
+endobj
+765 0 obj
+<>
+endobj
+766 0 obj
+<>
+endobj
+767 0 obj
+<>
+endobj
+768 0 obj
+<>
+endobj
+769 0 obj
+<>
+endobj
+770 0 obj
+<>
+endobj
+771 0 obj
+<>
+endobj
+772 0 obj
+<>
+endobj
+773 0 obj
+<>
+endobj
+774 0 obj
+<>
+endobj
+775 0 obj
+<>
+endobj
+776 0 obj
+<>
+endobj
+777 0 obj
+<>
+endobj
+778 0 obj
+<>
+endobj
+779 0 obj
+<>
+endobj
+780 0 obj
+<>
+endobj
+781 0 obj
+<>
+endobj
+782 0 obj
+<>
+endobj
+783 0 obj
+<>
+endobj
+784 0 obj
+<>
+endobj
+785 0 obj
+<>
+endobj
+786 0 obj
+<>
+endobj
+787 0 obj
+<>
+endobj
+788 0 obj
+<>
+endobj
+789 0 obj
+<>
+endobj
+790 0 obj
+<>
+endobj
+791 0 obj
+<>
+endobj
+792 0 obj
+<>
+endobj
+793 0 obj
+<>
+endobj
+794 0 obj
+<>
+endobj
+795 0 obj
+<>
+endobj
+796 0 obj
+<>
+endobj
+797 0 obj
+<>
+endobj
+798 0 obj
+<>
+endobj
+799 0 obj
+<>
+endobj
+800 0 obj
+<>
+endobj
+801 0 obj
+<>
+endobj
+802 0 obj
+<>
+endobj
+803 0 obj
+<>
+endobj
+804 0 obj
+<>
+endobj
+805 0 obj
+<>
+endobj
+806 0 obj
+<>
+endobj
+807 0 obj
+<>
+endobj
+808 0 obj
+<>
+endobj
+809 0 obj
+<>
+endobj
+810 0 obj
+<>
+endobj
+811 0 obj
+<>
+endobj
+812 0 obj
+<>
+endobj
+813 0 obj
+<>
+endobj
+814 0 obj
+<>
+endobj
+815 0 obj
+<>
+endobj
+816 0 obj
+<>
+endobj
+817 0 obj
+<>
+endobj
+818 0 obj
+<>
+endobj
+819 0 obj
+<>
+endobj
+820 0 obj
+<>
+endobj
+821 0 obj
+<>
+endobj
+822 0 obj
+<>
+endobj
+823 0 obj
+<>
+endobj
+824 0 obj
+<>
+endobj
+825 0 obj
+<>
+endobj
+826 0 obj
+<>
+endobj
+827 0 obj
+<>
+endobj
+828 0 obj
+<>
+endobj
+829 0 obj
+<>
+endobj
+830 0 obj
+<>
+endobj
+831 0 obj
+<>
+endobj
+832 0 obj
+<>
+endobj
+833 0 obj
+<>
+endobj
+834 0 obj
+<>
+endobj
+835 0 obj
+<>
+endobj
+836 0 obj
+<>
+endobj
+837 0 obj
+<>
+endobj
+838 0 obj
+<>
+endobj
+839 0 obj
+<>
+endobj
+840 0 obj
+<>
+endobj
+841 0 obj
+<>
+endobj
+842 0 obj
+<>
+endobj
+843 0 obj
+<>
+endobj
+844 0 obj
+<>
+endobj
+845 0 obj
+<>
+endobj
+846 0 obj
+<>
+endobj
+847 0 obj
+<>
+endobj
+848 0 obj
+<>
+endobj
+849 0 obj
+<>
+endobj
+850 0 obj
+<>
+endobj
+851 0 obj
+<>
+endobj
+852 0 obj
+<>
+endobj
+853 0 obj
+<>
+endobj
+854 0 obj
+<>
+endobj
+855 0 obj
+<>
+endobj
+856 0 obj
+<>
+endobj
+857 0 obj
+<>
+endobj
+858 0 obj
+<>
+endobj
+859 0 obj
+<>
+endobj
+860 0 obj
+<>
+endobj
+861 0 obj
+<>
+endobj
+862 0 obj
+<>
+endobj
+863 0 obj
+<>
+endobj
+864 0 obj
+<>
+endobj
+865 0 obj
+<>
+endobj
+866 0 obj
+<>
+endobj
+867 0 obj
+<>
+endobj
+868 0 obj
+<>
+endobj
+869 0 obj
+<>
+endobj
+870 0 obj
+<>
+stream
+x
+ 6
+endstream
+endobj
+871 0 obj
+<>
+stream
+xmn:~
+v! ]wR!E^kGbR$"o_:)6~͐3h\|x裏xGLץ͗Ӽ)]q\fSsd2\ݥ>>>m2/_ιՁlͪ[.b;%yY(r"A|F=Ym >_z>$h$";Em$>[zTW!#>UiCΌ|]I|&4`ħ[mgZ[ds
+H3+]f>H>ۈ:K⳦$>5j&{tE&A$Y#I|qJ|u "E|ޣ
+sQT<||1g|Gf|*TW%>YfE|ħщ%#3|J)tE4:x"h+}*i+m~5:dE|69B|]'п5Ӊ/|gOQimB놶~5-մhs
c|4өIkA[ӡ9
+endstream
+endobj
+872 0 obj
+<>
+stream
+xܼ}|?|]ξfg}dwoIv7!D !""$H)R*QHZkz㱶,q})XN(Xkpɱȡ<{vyx6gyٙ{} # 57nNYe7}C Q 5w??Z `~kU7-_Yrz'
Vݴڦ} ` UmdtJ ; nͺKw
+ |Ӑanjn* Cnߠ ~Z]s? nb 0_3/" eoL) gbɿ0ҫg?ҝ 8o {p\]_j6`78vc^nF*8B>G+|uᗨEp'@?|7M l2xv6 pއ+P2ppi` @v`-|/`9ZJ w7`|^xV8#: ?CsȢhC7b9F0W/>ܷ'\ɫ 7,-f9]mWK-f^5.ITcѪʊH8~_YSRv9v""Ѡi9
3ՙ)kzĀşJYM4{o~Sg5g
eP{L>1 >.XO=ʐМ0OԚ9KvT@({2/S6+!_ ǜۅT&LE4CBBfwDeЖA5~+e'At\\yK}6Ϸ߾ϒs3G77x
+o0ڍ"c
+GS9c?]Q%;9Mt3p]_VUUW3pm_xHaP-#N {
+r<&tݟ`E<&fFs DTΐAzdl:zdd1sϽ#WvKoZnWfe'/4etM1R"n?3㊪6TD@Ff4}c_dX&_!՝`283NZ*q5e6-<
+`n6$2kQU4u%=5Æ匙2>;3@wW;T5 {NjIOZEd\Gd!e*1gpP-
+ӔjC_ǧ[qٺs}aǦ$4O~?s]5fj%}KxߵKh{A ߷ A>&}^Hj-Źz `D=ʪY. ܘ%:!Ea$ pcfƬ._7֩@_L2h$Lx#:t/"Ygi_Vgqd^=J'_}ݒgMPu-rci mʳ]7#Gsn, {R!0fqƨVfqdIk4z6
3HDMYDKHϲɧ9Ë%{'a5r(eRƻ|.]eVDlebh`Eݲu[5MksZ~95jB;en5!NE 1鲄rpحdEG<<,]^U&N*_]'-_R彳U+] f{@o"3z> 圃~#ՐJEW-Z{slg{\˟n4?\0h&Ǥv0<