@shuji-bonji/pdf-writer-mcp 0.9.2 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +66 -0
- package/README.ja.md +8 -6
- package/README.md +8 -6
- package/dist/errors.js +2 -1
- package/dist/errors.js.map +1 -1
- package/dist/services/editor.js +140 -42
- package/dist/services/editor.js.map +1 -1
- package/dist/services/form.d.ts +3 -1
- package/dist/services/form.js +18 -2
- package/dist/services/form.js.map +1 -1
- package/dist/services/incremental.d.ts +2 -0
- package/dist/services/incremental.js +77 -2
- package/dist/services/incremental.js.map +1 -1
- package/dist/services/struct-append.d.ts +9 -1
- package/dist/services/struct-append.js +37 -7
- package/dist/services/struct-append.js.map +1 -1
- package/dist/services/xmp.d.ts +28 -1
- package/dist/services/xmp.js +77 -2
- package/dist/services/xmp.js.map +1 -1
- package/dist/tools/definitions.js +8 -4
- package/dist/tools/definitions.js.map +1 -1
- package/dist/types/index.d.ts +12 -4
- package/dist/utils/validation.d.ts +6 -0
- package/dist/utils/validation.js +12 -1
- package/dist/utils/validation.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,72 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.11.0] - 2026-07-17
|
|
6
|
+
|
|
7
|
+
Incremental updates learn tagged PDFs (B-7b'): dirty tracking generalised.
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **`preserveSignatures` now works on tagged PDFs** — the v0.9.0 limitation
|
|
12
|
+
is lifted. The structure-tree appender (`struct-append.ts`) now *reports
|
|
13
|
+
which existing indirect objects it mutates* (StructTreeRoot, the parent
|
|
14
|
+
element whose `/K` grows, the ParentTree — or whichever object holds its
|
|
15
|
+
`/Nums` array — and the page carrying `/Tabs`), and the incremental
|
|
16
|
+
writer includes exactly those in the appended revision. Adding an
|
|
17
|
+
annotation to a signed *and* tagged PDF keeps both properties: measured
|
|
18
|
+
**veraPDF ua1 COMPLIANT (106/106)** on the incremental output and
|
|
19
|
+
`verify_signatures: VALID` on a really-signed fixture. Stacked increments
|
|
20
|
+
keep `ParentTreeNextKey` continuous across revisions.
|
|
21
|
+
- **`tag_form_fields` supports `preserveSignatures`** — PDF/UA form repair
|
|
22
|
+
on signed documents without invalidating approval signatures. `/TU`
|
|
23
|
+
writes are redefinitions of *existing* field dictionaries, so
|
|
24
|
+
`tagWidgets` also reports its dirtied refs. Certification signatures
|
|
25
|
+
(DocMDP) are refused at every permission level — structure (tagging)
|
|
26
|
+
changes are not among the permitted change types of §12.8.2.2. Measured:
|
|
27
|
+
a tagged-but-untagged-form document repaired via an incremental update is
|
|
28
|
+
**veraPDF ua1 COMPLIANT (106/106)** with a byte-identical prefix.
|
|
29
|
+
|
|
30
|
+
### Notes
|
|
31
|
+
|
|
32
|
+
- The groundwork is deliberate: precise dirty tracking over the structure
|
|
33
|
+
tree is the mechanism `ensure_tagged` (Tier C) will build on.
|
|
34
|
+
|
|
35
|
+
## [0.10.0] - 2026-07-17
|
|
36
|
+
|
|
37
|
+
Incremental updates grow up (B-7b) and `set_metadata` learns XMP (B-9).
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
|
|
41
|
+
- **`preserveSignatures` for `set_metadata` and `add_bookmarks`** — the
|
|
42
|
+
signature-preserving incremental writer introduced in v0.9.0 for
|
|
43
|
+
annotations is now shared plumbing (`saveWithPreservedSignatures`) and
|
|
44
|
+
wired into two more tools. Measured against a really-signed PDF: two
|
|
45
|
+
stacked increments (metadata update, then bookmarks) keep
|
|
46
|
+
`verify_signatures: VALID` with byte-identical prefixes at every step.
|
|
47
|
+
DocMDP note: per ISO 32000-2 §12.8.2.2, metadata/outline changes are not
|
|
48
|
+
a permitted change type at *any* certification level, so certified
|
|
49
|
+
documents are always refused (annotations remain allowed at P=3).
|
|
50
|
+
- **`set_metadata` now keeps XMP in sync (B-9)** — on documents that carry
|
|
51
|
+
`/Metadata` (e.g. tagged output), updating the Info dictionary used to
|
|
52
|
+
leave `dc:title` etc. stale (found in SPEC-AUDIT Phase 1, §14.3.3). The
|
|
53
|
+
XMP packet is now regenerated from the updated Info values while
|
|
54
|
+
preserving the PDF/UA declaration (`pdfuaid:part`), `dc:language` and
|
|
55
|
+
`xmp:CreateDate`. The stream is replaced at the *same object ref*, so the
|
|
56
|
+
catalog stays untouched and the change rides incremental updates
|
|
57
|
+
naturally. New XMP fields: `dc:description` (Subject) and `pdf:Keywords`.
|
|
58
|
+
Measured: a tagged PDF re-titled via `set_metadata` stays veraPDF
|
|
59
|
+
**COMPLIANT (106/106)**.
|
|
60
|
+
|
|
61
|
+
### Fixed
|
|
62
|
+
|
|
63
|
+
- **§7.5.6 trailer carry-over** — the incremental trailer now includes
|
|
64
|
+
*all* entries of the previous trailer (except position-dependent and
|
|
65
|
+
recomputed keys), not just Root/Info/ID: the previous trailer is parsed
|
|
66
|
+
from the original bytes with pdf-lib's `PDFObjectParser`, closing the
|
|
67
|
+
known v0.9.x gap (rare keys such as second-class names survive updates;
|
|
68
|
+
hybrid `XRefStm` is deliberately not carried). If the previous trailer
|
|
69
|
+
cannot be parsed, a warning is reported instead of failing.
|
|
70
|
+
|
|
5
71
|
## [0.9.2] - 2026-07-17
|
|
6
72
|
|
|
7
73
|
SPEC-AUDIT Phase 1: the editing tools were audited clause-by-clause against
|
package/README.ja.md
CHANGED
|
@@ -42,27 +42,27 @@ PDF/UA はタイトルを要求するため、`tagged: true` では `title` が
|
|
|
42
42
|
|
|
43
43
|
| ツール | 役割 |
|
|
44
44
|
|--------|------|
|
|
45
|
-
| `set_metadata` | Info 辞書の更新(`title` / `author` / `subject` / `keywords` / `creator
|
|
45
|
+
| `set_metadata` | Info 辞書の更新(`title` / `author` / `subject` / `keywords` / `creator`)。指定フィールドのみ変更し、他は保持。XMP(`/Metadata`)を持つ文書では `dc:title` 等も同期再生成する(PDF/UA 宣言は保持)。`preserveSignatures` 対応 |
|
|
46
46
|
| `merge_pdfs` | 2〜50 個の PDF を指定順に結合。メタデータは先頭ファイルから引き継ぎ |
|
|
47
47
|
| `split_pdf` | ページ範囲ごとに 1 ファイルへ分割 |
|
|
48
48
|
| `extract_pages` | 指定順を保持して抽出(並べ替えを兼ねる) |
|
|
49
49
|
| `delete_pages` | ページ削除(全ページの削除はエラー) |
|
|
50
50
|
| `reorder_pages` | 全ページの順列による並べ替え |
|
|
51
51
|
| `rotate_pages` | 時計回りに回転(90/180/270)。既存の回転に加算 |
|
|
52
|
-
| `add_bookmarks` | しおり(アウトライン)の設定。`children`
|
|
53
|
-
| `add_annotation` | 付箋(`text`)/ ハイライト(`highlight`)/ 矩形(`square`)の注釈を追加。タグ付き PDF では `Annot` 構造要素に内包され PDF/UA 準拠を維持する(`alt` で説明を渡す)。`preserveSignatures: true` で**署名済み PDF の署名を保持したまま**追加できる — ISO 32000
|
|
52
|
+
| `add_bookmarks` | しおり(アウトライン)の設定。`children` で入れ子にでき、既存のしおりは置換。`preserveSignatures` 対応 |
|
|
53
|
+
| `add_annotation` | 付箋(`text`)/ ハイライト(`highlight`)/ 矩形(`square`)の注釈を追加。タグ付き PDF では `Annot` 構造要素に内包され PDF/UA 準拠を維持する(`alt` で説明を渡す)。`preserveSignatures: true` で**署名済み PDF の署名を保持したまま**追加できる — ISO 32000 の増分更新として末尾追記し、元のバイト列に一切触れない。タグ付き PDF では構造木の変更も同じ増分に載る(v0.11.0) |
|
|
54
54
|
| `attach_file` | ファイルを埋め込む(`/Names /EmbeddedFiles` + catalog `/AF` + `/AFRelationship`)。PDF/A-3 が要求する形式で、機械可読データを文書に同梱する |
|
|
55
55
|
| `stamp_page_numbers` | ページ番号を刻む(`{n}` / `{total}`、6 箇所の配置、`pages`、`startAt`)。タグ付き PDF では Artifact になるため準拠を維持する |
|
|
56
56
|
| `fill_form` | AcroForm に値を記入する。日本語は埋め込みフォントで描画。同時にフラット化も可能 |
|
|
57
57
|
| `flatten_form` | フォームを静的な内容に焼き込む。タグ付き PDF は既定で拒否(PDF/UA が壊れるため) |
|
|
58
|
-
| `tag_form_fields` | タグ付き PDF 内のフォームを PDF/UA-1 準拠へ修復する。Widget を `Form` 構造要素に内包(7.18.4-1)、`/Tabs S` を設定(7.18.3-1)、代替名 `/TU` を付与(7.18.1-3)。`labels`
|
|
58
|
+
| `tag_form_fields` | タグ付き PDF 内のフォームを PDF/UA-1 準拠へ修復する。Widget を `Form` 構造要素に内包(7.18.4-1)、`/Tabs S` を設定(7.18.3-1)、代替名 `/TU` を付与(7.18.1-3)。`labels` で人間可読な名前を渡す。冪等なので何度実行しても安全。`preserveSignatures` 対応(承認署名のみ) |
|
|
59
59
|
| `add_watermark` | 斜めの透かしを重ねる("社外秘" / "DRAFT")。既定で本文の背面。タグ付き PDF では Artifact になる |
|
|
60
60
|
|
|
61
61
|
共通オプション: `outputPath` / `returnBase64` / `allowBreakingSignatures`。
|
|
62
62
|
|
|
63
63
|
ページ指定は `"1,3-5,8-"` 形式(1 始まり。`-3` は先頭から 3 ページまで、`8-` は 8 ページから最終まで)。指定順を保持し、重複は除去します。
|
|
64
64
|
|
|
65
|
-
> **署名について**: pdf-lib は保存時にファイル全体を再構築するため、通常の編集では既存の電子署名は必ず無効化されます。`/ByteRange` を含む PDF は既定でエラーとし、`allowBreakingSignatures: true` で破壊的に続行するか、`
|
|
65
|
+
> **署名について**: pdf-lib は保存時にファイル全体を再構築するため、通常の編集では既存の電子署名は必ず無効化されます。`/ByteRange` を含む PDF は既定でエラーとし、`allowBreakingSignatures: true` で破壊的に続行するか、`preserveSignatures: true` で**署名を保持したまま** ISO 32000 の増分更新として編集できます。対応ツール: `add_annotation`(v0.11.0 からタグ付き文書も可 — 構造木の変更も同じ増分に載る)、`set_metadata` / `add_bookmarks` / `tag_form_fields`。認証署名(DocMDP)の許可レベルに反する変更は拒否されます(§12.8.2.2)。実測: 実署名(CMS)PDF への多段の増分後も署名 **VALID**、タグ付き文書への増分構造更新後も veraPDF **COMPLIANT(106/106)** です。
|
|
66
66
|
|
|
67
67
|
## インストール
|
|
68
68
|
|
|
@@ -183,7 +183,9 @@ TEST_FONT_PATH=/path/to/NotoSansJP-Regular.otf npm test
|
|
|
183
183
|
- [x] コード衛生・family 整合 — McpServer + Zod、構造化エラー、絶対パス強制、stdout ガード、tool annotations、決定論的出力(v0.7.0)
|
|
184
184
|
- [x] `tag_form_fields` — タグ付き PDF 内フォームの PDF/UA 修復。veraPDF で COMPLIANT を確認(v0.8.0)
|
|
185
185
|
- [x] Tier C 第1弾 — `add_annotation` の署名保持増分更新。実署名(CMS)で pdf-verify-mcp の VALID を確認(v0.9.0)
|
|
186
|
-
- [
|
|
186
|
+
- [x] 増分更新を `set_metadata` / `add_bookmarks` へ展開、trailer 全エントリ引き継ぎ(§7.5.6)、XMP と Info の同期(v0.10.0)
|
|
187
|
+
- [x] タグ付き文書の増分更新 — 構造木の dirty 追跡を一般化。`tag_form_fields` も `preserveSignatures` 対応(v0.11.0)
|
|
188
|
+
- [ ] Tier C 続き — コンテンツストリーム系ツール(透かし・ページ番号)への展開、`ensure_tagged`、`edit_text`
|
|
187
189
|
- [ ] 出力パイプライン Skill(write → pdf-reader で読み戻し → pdf-verify で品質ゲート)
|
|
188
190
|
- [ ] 画像の代替テキスト(`Figure` + `/Alt`)
|
|
189
191
|
- [ ] `.ttc` からのフェイス自動抽出
|
package/README.md
CHANGED
|
@@ -42,27 +42,27 @@ PDF/UA mandates a document title, so `tagged: true` requires `title`. `lang` (BC
|
|
|
42
42
|
|
|
43
43
|
| Tool | Purpose |
|
|
44
44
|
|------|---------|
|
|
45
|
-
| `set_metadata` | Update Info dictionary fields (`title` / `author` / `subject` / `keywords` / `creator`), preserving the rest |
|
|
45
|
+
| `set_metadata` | Update Info dictionary fields (`title` / `author` / `subject` / `keywords` / `creator`), preserving the rest. On documents carrying XMP (`/Metadata`), `dc:title` etc. are regenerated in sync (keeping the PDF/UA declaration). Supports `preserveSignatures` |
|
|
46
46
|
| `merge_pdfs` | Concatenate 2–50 PDFs in order; metadata inherited from the first file |
|
|
47
47
|
| `split_pdf` | One output file per page range |
|
|
48
48
|
| `extract_pages` | Extract pages in the requested order (doubles as reordering) |
|
|
49
49
|
| `delete_pages` | Remove pages (deleting every page is rejected) |
|
|
50
50
|
| `reorder_pages` | Reorder by an explicit permutation of all pages |
|
|
51
51
|
| `rotate_pages` | Rotate clockwise (90/180/270), accumulating over existing rotation |
|
|
52
|
-
| `add_bookmarks` | Set the outline (bookmarks); nestable via `children`, replaces any existing outline |
|
|
53
|
-
| `add_annotation` | Add a sticky note (`text`), `highlight`, or `square` annotation to a page. On tagged PDFs the annotation is nested in an `Annot` element and stays PDF/UA conformant — pass `alt` to describe it. With `preserveSignatures: true`, a **signed PDF keeps its signatures**: the annotation is appended as an ISO 32000 incremental update, leaving the original bytes untouched
|
|
52
|
+
| `add_bookmarks` | Set the outline (bookmarks); nestable via `children`, replaces any existing outline. Supports `preserveSignatures` |
|
|
53
|
+
| `add_annotation` | Add a sticky note (`text`), `highlight`, or `square` annotation to a page. On tagged PDFs the annotation is nested in an `Annot` element and stays PDF/UA conformant — pass `alt` to describe it. With `preserveSignatures: true`, a **signed PDF keeps its signatures**: the annotation is appended as an ISO 32000 incremental update, leaving the original bytes untouched — on tagged PDFs the structure-tree changes ride the same increment (v0.11.0) |
|
|
54
54
|
| `attach_file` | Embed a file (`/Names /EmbeddedFiles` + catalog `/AF` + `/AFRelationship`) — the PDF/A-3 shape for bundling machine-readable data with a document |
|
|
55
55
|
| `stamp_page_numbers` | Stamp page numbers (`{n}` / `{total}`, six positions, `pages`, `startAt`). Becomes an artifact on tagged PDFs, so conformance holds |
|
|
56
56
|
| `fill_form` | Fill AcroForm fields. Japanese values via an embedded font; can flatten in the same pass |
|
|
57
57
|
| `flatten_form` | Flatten a form into static content. Refuses tagged PDFs by default (breaks PDF/UA) |
|
|
58
|
-
| `tag_form_fields` | Repair the form inside a tagged PDF for PDF/UA-1: nest widgets in `Form` structure elements (7.18.4-1), set `/Tabs S` (7.18.3-1), add `/TU` alternate names (7.18.1-3). Pass `labels` with human-readable names; idempotent, so safe to re-run |
|
|
58
|
+
| `tag_form_fields` | Repair the form inside a tagged PDF for PDF/UA-1: nest widgets in `Form` structure elements (7.18.4-1), set `/Tabs S` (7.18.3-1), add `/TU` alternate names (7.18.1-3). Pass `labels` with human-readable names; idempotent, so safe to re-run. Supports `preserveSignatures` (approval signatures only) |
|
|
59
59
|
| `add_watermark` | Overlay a diagonal watermark ("社外秘" / "DRAFT"). Behind the body content by default; artifact on tagged PDFs |
|
|
60
60
|
|
|
61
61
|
Shared options: `outputPath`, `returnBase64`, `allowBreakingSignatures`.
|
|
62
62
|
|
|
63
63
|
Page specs use `"1,3-5,8-"` (1-based; `-3` means up to page 3, `8-` means page 8 to the end). Order is preserved and duplicates are removed.
|
|
64
64
|
|
|
65
|
-
> **Signatures**: pdf-lib rewrites the whole file on save, so editing normally invalidates existing signatures. PDFs containing `/ByteRange` are rejected by default; pass `allowBreakingSignatures: true` to proceed destructively — or
|
|
65
|
+
> **Signatures**: pdf-lib rewrites the whole file on save, so editing normally invalidates existing signatures. PDFs containing `/ByteRange` are rejected by default; pass `allowBreakingSignatures: true` to proceed destructively — or pass `preserveSignatures: true` to append an ISO 32000 incremental update that keeps every signature valid. Supported by `add_annotation` (tagged PDFs included since v0.11.0 — the structure-tree changes ride the same increment), `set_metadata`, `add_bookmarks` and `tag_form_fields`. Certified documents (DocMDP) are refused when the change type is not permitted by the certification level (§12.8.2.2). Measured: stacked increments on a really-signed PDF keep pdf-verify-mcp reporting **VALID**, and incremental structure updates on tagged PDFs stay veraPDF **COMPLIANT (106/106)**.
|
|
66
66
|
|
|
67
67
|
## Install
|
|
68
68
|
|
|
@@ -183,7 +183,9 @@ TEST_FONT_PATH=/path/to/NotoSansJP-Regular.otf npm test
|
|
|
183
183
|
- [x] Code hygiene / family alignment — McpServer + Zod, structured errors, absolute-path enforcement, stdout guard, tool annotations, deterministic output (v0.7.0)
|
|
184
184
|
- [x] `tag_form_fields` — PDF/UA repair for forms in tagged PDFs, verified COMPLIANT by veraPDF (v0.8.0)
|
|
185
185
|
- [x] Tier C first milestone — signature-preserving incremental updates for `add_annotation`, verified by pdf-verify-mcp against a real CMS signature (v0.9.0)
|
|
186
|
-
- [
|
|
186
|
+
- [x] Incremental updates extended to `set_metadata` / `add_bookmarks`, full trailer carry-over (§7.5.6), XMP kept in sync with Info (v0.10.0)
|
|
187
|
+
- [x] Incremental updates on tagged PDFs — generalised dirty tracking over the structure tree; `tag_form_fields` gains `preserveSignatures` (v0.11.0)
|
|
188
|
+
- [ ] Tier C continued — incremental updates for content-stream tools (watermarks, page numbers), `ensure_tagged`, `edit_text`
|
|
187
189
|
- [ ] Publish-pipeline skill (write → read back with pdf-reader → gate with pdf-verify)
|
|
188
190
|
- [ ] Images with alt text (`Figure` + `/Alt`)
|
|
189
191
|
- [ ] Automatic face extraction from `.ttc`
|
package/dist/errors.js
CHANGED
|
@@ -50,7 +50,8 @@ export const NEXT_ACTIONS = {
|
|
|
50
50
|
preserveSignatures: () => ({
|
|
51
51
|
action: 'retry_with_preserveSignatures',
|
|
52
52
|
reason: '署名を保持したまま、増分更新(元バイト列に触れない末尾追記)で編集できます。' +
|
|
53
|
-
'
|
|
53
|
+
'対応: add_annotation / set_metadata / add_bookmarks / tag_form_fields(タグ付き文書可)。' +
|
|
54
|
+
'"preserveSignatures": true を足して再試行してください',
|
|
54
55
|
example: { preserveSignatures: true },
|
|
55
56
|
}),
|
|
56
57
|
allowBreakingSignatures: () => ({
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA8CH,gDAAgD;AAChD,MAAM,OAAO,cAAe,SAAQ,KAAK;IAGrB,IAAI;IACJ,OAAO;IAHzB,YACE,OAAe,EACC,IAAqB,EACrB,OAAO,GAInB,EAAE;QAEN,KAAK,CAAC,OAAO,CAAC,CAAC;oBAPC,IAAI;uBACJ,OAAO;QAOvB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,wDAAwD;AACxD,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACzD,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,MAAM,GAAG,GAAuB,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI;YAAE,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACtD,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;QAChD,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;YAAE,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QACnF,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AAC1D,CAAC;AAED,kDAAkD;AAClD,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,kBAAkB,EAAE,GAAe,EAAE,CAAC,CAAC;QACrC,MAAM,EAAE,+BAA+B;QACvC,MAAM,EACJ,wCAAwC;YACxC,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/services/editor.js
CHANGED
|
@@ -34,6 +34,7 @@ import { formatPageNumber, stampPage } from './page-number.js';
|
|
|
34
34
|
import { assertRenderable } from './renderers/text.js';
|
|
35
35
|
import { appendAnnotationToStructTree, isTagged, markArtifactOnPage } from './struct-append.js';
|
|
36
36
|
import { watermarkPage } from './watermark.js';
|
|
37
|
+
import { syncXmpWithInfo } from './xmp.js';
|
|
37
38
|
/** 入力バイト列に電子署名(/ByteRange)が含まれるかの軽量検査 */
|
|
38
39
|
export function containsSignature(bytes) {
|
|
39
40
|
// "/ByteRange" の ASCII 検索(署名辞書は非圧縮で現れるのが通例)
|
|
@@ -86,10 +87,69 @@ export async function loadForEdit(filePath, opts) {
|
|
|
86
87
|
return { doc, absPath, bytes };
|
|
87
88
|
}
|
|
88
89
|
// ---------------------------------------------------------------------------
|
|
90
|
+
// 増分更新(preserveSignatures)の共通部品
|
|
91
|
+
// ---------------------------------------------------------------------------
|
|
92
|
+
/**
|
|
93
|
+
* DocMDP(認証署名)の許可レベル検査(ISO 32000-2 §12.8.2.2)。
|
|
94
|
+
* 注釈は P=3 でのみ許可。メタデータ・しおり等の変更はどの P でも許可されない
|
|
95
|
+
* (P=2 はフォーム記入と署名、P=3 は + 注釈のみ)。
|
|
96
|
+
*/
|
|
97
|
+
function assertDocMdpAllows(doc, change) {
|
|
98
|
+
const p = findDocMdpPermission(doc);
|
|
99
|
+
if (p === undefined)
|
|
100
|
+
return; // 承認署名のみ — 増分更新は合法(「署名後の変更あり」にはなる)
|
|
101
|
+
if (change === 'annotation' && p >= 3)
|
|
102
|
+
return;
|
|
103
|
+
const label = change === 'annotation'
|
|
104
|
+
? p === 1
|
|
105
|
+
? 'the author declared the document final; any change (except DSS/DTS) invalidates it.'
|
|
106
|
+
: 'only form fill-in and signing are permitted; annotations are not.'
|
|
107
|
+
: change === 'structure'
|
|
108
|
+
? 'structure (tagging) changes are not among the permitted change types at any level.'
|
|
109
|
+
: 'metadata and outline changes are not among the permitted change types at any level.';
|
|
110
|
+
throw new PdfWriterError(`This PDF carries a certification signature (DocMDP) with permission level P=${p} — ${label}` +
|
|
111
|
+
' Even a signature-preserving incremental update would be flagged as a disallowed change.', 'SIGNED_PDF', {
|
|
112
|
+
retryable: true,
|
|
113
|
+
hint: 'ISO 32000-2 §12.8.2.2: P=2 permits form fill-in; P=3 additionally permits annotations.',
|
|
114
|
+
next_actions: [NEXT_ACTIONS.allowBreakingSignatures()],
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/** ModificationDate を更新し、既存 Info オブジェクトなら dirty に積む */
|
|
118
|
+
function touchModificationDate(doc, since, dirty) {
|
|
119
|
+
doc.setModificationDate(outputDate());
|
|
120
|
+
const info = doc.context.trailerInfo.Info;
|
|
121
|
+
if (info instanceof PDFRef && info.objectNumber <= since)
|
|
122
|
+
dirty.push(info);
|
|
123
|
+
}
|
|
124
|
+
/** 増分更新でビルドして保存する(前方バイト一致 = 署名保持) */
|
|
125
|
+
async function saveWithPreservedSignatures(doc, originalBytes, opts, dirtyRefs, since, what) {
|
|
126
|
+
const update = buildIncrementalUpdate({
|
|
127
|
+
original: originalBytes,
|
|
128
|
+
doc,
|
|
129
|
+
dirtyRefs,
|
|
130
|
+
sinceObjectNumber: since,
|
|
131
|
+
});
|
|
132
|
+
logger.info('Editor', `${what} via incremental update (${update.objectsWritten} object(s), ${update.xrefStyle} xref, ` +
|
|
133
|
+
`+${update.bytes.length - originalBytes.length} bytes); signatures preserved`);
|
|
134
|
+
const saved = await saveRawBytes(update.bytes, doc.getPageCount(), opts);
|
|
135
|
+
const result = { ...saved, incremental: true };
|
|
136
|
+
if (update.warnings.length > 0) {
|
|
137
|
+
result.warnings = [...(result.warnings ?? []), ...update.warnings];
|
|
138
|
+
}
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
// ---------------------------------------------------------------------------
|
|
89
142
|
// Tier A ツール本体(ページ操作は page-ops.ts へ)
|
|
90
143
|
// ---------------------------------------------------------------------------
|
|
91
144
|
export async function setMetadata(args) {
|
|
92
|
-
const { doc } = await loadForEdit(args.inputPath, args);
|
|
145
|
+
const { doc, bytes } = await loadForEdit(args.inputPath, args);
|
|
146
|
+
const preserve = args.preserveSignatures === true;
|
|
147
|
+
if (preserve) {
|
|
148
|
+
assertDocMdpAllows(doc, 'metadata-or-outline');
|
|
149
|
+
reserveExistingObjectNumbers(doc, bytes);
|
|
150
|
+
}
|
|
151
|
+
const since = doc.context.largestObjectNumber;
|
|
152
|
+
const dirty = [];
|
|
93
153
|
if (args.title !== undefined)
|
|
94
154
|
doc.setTitle(args.title);
|
|
95
155
|
if (args.author !== undefined)
|
|
@@ -100,45 +160,61 @@ export async function setMetadata(args) {
|
|
|
100
160
|
doc.setKeywords(args.keywords);
|
|
101
161
|
if (args.creator !== undefined)
|
|
102
162
|
doc.setCreator(args.creator);
|
|
103
|
-
|
|
163
|
+
// B-9(SPEC-AUDIT): XMP を持つ文書では Info と /Metadata を同期させる
|
|
164
|
+
const sync = syncXmpWithInfo(doc);
|
|
165
|
+
const warnings = [...sync.warnings];
|
|
166
|
+
if (sync.updated) {
|
|
167
|
+
warnings.push('The document carries XMP metadata (/Metadata); it was regenerated to stay ' +
|
|
168
|
+
'consistent with the updated Info dictionary (dc:title etc.).');
|
|
169
|
+
if (sync.ref && sync.ref.objectNumber <= since)
|
|
170
|
+
dirty.push(sync.ref);
|
|
171
|
+
if (sync.catalogTouched && doc.context.trailerInfo.Root instanceof PDFRef) {
|
|
172
|
+
dirty.push(doc.context.trailerInfo.Root);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (preserve) {
|
|
176
|
+
touchModificationDate(doc, since, dirty);
|
|
177
|
+
const result = await saveWithPreservedSignatures(doc, bytes, args, dirty, since, 'Updated metadata');
|
|
178
|
+
if (warnings.length > 0)
|
|
179
|
+
result.warnings = [...(result.warnings ?? []), ...warnings];
|
|
180
|
+
return result;
|
|
181
|
+
}
|
|
182
|
+
const result = await saveEdited(doc, args);
|
|
183
|
+
if (warnings.length > 0)
|
|
184
|
+
result.warnings = [...(result.warnings ?? []), ...warnings];
|
|
185
|
+
return result;
|
|
104
186
|
}
|
|
105
187
|
export async function addBookmarks(args) {
|
|
106
188
|
const total = countBookmarks(args.bookmarks);
|
|
107
189
|
if (total > LIMITS.BOOKMARK_MAX_TOTAL) {
|
|
108
190
|
throw invalidArg(`too many bookmarks (${total}, max ${LIMITS.BOOKMARK_MAX_TOTAL})`);
|
|
109
191
|
}
|
|
110
|
-
const { doc } = await loadForEdit(args.inputPath, args);
|
|
192
|
+
const { doc, bytes } = await loadForEdit(args.inputPath, args);
|
|
193
|
+
const preserve = args.preserveSignatures === true;
|
|
194
|
+
if (preserve) {
|
|
195
|
+
assertDocMdpAllows(doc, 'metadata-or-outline');
|
|
196
|
+
reserveExistingObjectNumbers(doc, bytes);
|
|
197
|
+
}
|
|
198
|
+
const since = doc.context.largestObjectNumber;
|
|
111
199
|
const added = setBookmarks(doc, args.bookmarks);
|
|
112
200
|
logger.info('Editor', `Set ${added} bookmark(s)`);
|
|
201
|
+
if (preserve) {
|
|
202
|
+
// setBookmarks は catalog /Outlines を書き換える(新規オブジェクト群は自動追従)
|
|
203
|
+
const dirty = [];
|
|
204
|
+
if (doc.context.trailerInfo.Root instanceof PDFRef) {
|
|
205
|
+
dirty.push(doc.context.trailerInfo.Root);
|
|
206
|
+
}
|
|
207
|
+
touchModificationDate(doc, since, dirty);
|
|
208
|
+
return saveWithPreservedSignatures(doc, bytes, args, dirty, since, `Set ${added} bookmark(s)`);
|
|
209
|
+
}
|
|
113
210
|
return saveEdited(doc, args);
|
|
114
211
|
}
|
|
115
212
|
export async function addAnnotation(args) {
|
|
116
213
|
const { doc, bytes } = await loadForEdit(args.inputPath, args);
|
|
117
214
|
// --- 署名保持モード(Tier C・ADR-11): 元バイト列に触れず増分更新で追記する ---
|
|
118
215
|
if (args.preserveSignatures) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
'an Annot structure element (PDF/UA 7.18.1-1) rewrites existing structure objects ' +
|
|
122
|
-
'that the incremental writer does not track in this first milestone.', 'UNSUPPORTED_PDF_FEATURE', {
|
|
123
|
-
hint: 'Tagged + signature-preserving annotation is a later Tier C milestone. ' +
|
|
124
|
-
'If invalidating the signature is acceptable, retry with "allowBreakingSignatures": true.',
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
// 認証署名(DocMDP)の許可レベル検査(ISO 32000-2 §12.8.2.2):
|
|
128
|
-
// 注釈の追加が許されるのは P=3 のみ。P=1(変更禁止)/ P=2(フォームまで)では
|
|
129
|
-
// 増分更新が合法でも認証署名の検証が「許可されない変更」として失敗する。
|
|
130
|
-
const docMdpP = findDocMdpPermission(doc);
|
|
131
|
-
if (docMdpP !== undefined && docMdpP < 3) {
|
|
132
|
-
throw new PdfWriterError(`This PDF carries a certification signature (DocMDP) with permission level P=${docMdpP} — ` +
|
|
133
|
-
(docMdpP === 1
|
|
134
|
-
? 'the author declared the document final; any change (except DSS/DTS) invalidates it.'
|
|
135
|
-
: 'only form fill-in and signing are permitted; annotations are not.') +
|
|
136
|
-
' Even a signature-preserving incremental update would be flagged as a disallowed change.', 'SIGNED_PDF', {
|
|
137
|
-
retryable: true,
|
|
138
|
-
hint: 'ISO 32000-2 §12.8.2.2: annotation changes require DocMDP P=3.',
|
|
139
|
-
next_actions: [NEXT_ACTIONS.allowBreakingSignatures()],
|
|
140
|
-
});
|
|
141
|
-
}
|
|
216
|
+
// 注釈の追加が許されるのは DocMDP P=3 のみ(承認署名なら制約なし)
|
|
217
|
+
assertDocMdpAllows(doc, 'annotation');
|
|
142
218
|
// 容器ストリーム等の「登録されない番号」との衝突を防いでから採番を始める
|
|
143
219
|
reserveExistingObjectNumbers(doc, bytes);
|
|
144
220
|
const since = doc.context.largestObjectNumber;
|
|
@@ -148,21 +224,22 @@ export async function addAnnotation(args) {
|
|
|
148
224
|
// /Annots が直接配列 or 新設 → ページオブジェクトを再定義
|
|
149
225
|
const annotsRaw = added.page.node.get(PDFName.of('Annots'));
|
|
150
226
|
const dirtyRefs = [annotsRaw instanceof PDFRef ? annotsRaw : added.page.ref];
|
|
151
|
-
//
|
|
152
|
-
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
227
|
+
// タグ付き文書なら構造木へも結び付け、変更された既存オブジェクトを dirty に合成する
|
|
228
|
+
// (B-7b': StructTreeRoot / 親要素 / ParentTree / page(/Tabs) を struct-append が報告する)
|
|
229
|
+
const warnings = [];
|
|
230
|
+
const linked = appendAnnotationToStructTree(doc, added.page, added.ref, args.alt);
|
|
231
|
+
if (linked.tagged) {
|
|
232
|
+
dirtyRefs.push(...linked.dirtiedRefs);
|
|
233
|
+
if (!args.alt) {
|
|
234
|
+
warnings.push('The document is tagged and the annotation was nested in an Annot structure element. ' +
|
|
235
|
+
'Pass "alt" to give assistive technology a description of it.');
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
touchModificationDate(doc, since, dirtyRefs);
|
|
239
|
+
const result = await saveWithPreservedSignatures(doc, bytes, args, dirtyRefs, since, 'Added annotation');
|
|
240
|
+
if (warnings.length > 0)
|
|
241
|
+
result.warnings = [...(result.warnings ?? []), ...warnings];
|
|
242
|
+
return result;
|
|
166
243
|
}
|
|
167
244
|
const added = addAnnotationDict(doc, args);
|
|
168
245
|
// タグ付き PDF なら構造木にも結び付ける(PDF/UA 7.18.1-1 / 7.18.3-1)。
|
|
@@ -362,7 +439,8 @@ function flattenAndWarn(doc, allowBreakingTags, warnings) {
|
|
|
362
439
|
* Tier C の ensure_tagged の領分)。
|
|
363
440
|
*/
|
|
364
441
|
export async function tagFormFields(args) {
|
|
365
|
-
const { doc } = await loadForEdit(args.inputPath, args);
|
|
442
|
+
const { doc, bytes } = await loadForEdit(args.inputPath, args);
|
|
443
|
+
const preserve = args.preserveSignatures === true;
|
|
366
444
|
if (!isTagged(doc)) {
|
|
367
445
|
throw new PdfWriterError(`"${args.inputPath}" is not a tagged PDF, so there is no structure tree to repair. ` +
|
|
368
446
|
'tag_form_fields fixes forms inside already-tagged PDFs (PDF/UA-1 7.18.4).', 'INVALID_ARGUMENT', {
|
|
@@ -377,6 +455,12 @@ export async function tagFormFields(args) {
|
|
|
377
455
|
if (form.getFields().length === 0) {
|
|
378
456
|
throw invalidArg(`"${args.inputPath}" has no AcroForm fields to tag.`);
|
|
379
457
|
}
|
|
458
|
+
if (preserve) {
|
|
459
|
+
// 構造タグ付けは DocMDP の許可種別に含まれない(認証文書は全レベルで拒否)
|
|
460
|
+
assertDocMdpAllows(doc, 'structure');
|
|
461
|
+
reserveExistingObjectNumbers(doc, bytes);
|
|
462
|
+
}
|
|
463
|
+
const since = doc.context.largestObjectNumber;
|
|
380
464
|
const outcome = tagWidgets(doc, args.labels ?? {});
|
|
381
465
|
const warnings = [];
|
|
382
466
|
if (outcome.unlabeled.length > 0) {
|
|
@@ -390,6 +474,20 @@ export async function tagFormFields(args) {
|
|
|
390
474
|
}
|
|
391
475
|
logger.info('Editor', `Tagged ${outcome.tagged} widget(s) into Form structure elements` +
|
|
392
476
|
(outcome.skipped > 0 ? `, ${outcome.skipped} already tagged` : ''));
|
|
477
|
+
if (preserve) {
|
|
478
|
+
const dirty = [...outcome.dirtiedRefs];
|
|
479
|
+
touchModificationDate(doc, since, dirty);
|
|
480
|
+
const saved = await saveWithPreservedSignatures(doc, bytes, args, dirty, since, `Tagged ${outcome.tagged} widget(s)`);
|
|
481
|
+
return {
|
|
482
|
+
...saved,
|
|
483
|
+
taggedWidgets: outcome.tagged,
|
|
484
|
+
skippedWidgets: outcome.skipped,
|
|
485
|
+
fields: listFields(doc),
|
|
486
|
+
warnings: [...(saved.warnings ?? []), ...warnings].length > 0
|
|
487
|
+
? [...(saved.warnings ?? []), ...warnings]
|
|
488
|
+
: undefined,
|
|
489
|
+
};
|
|
490
|
+
}
|
|
393
491
|
// 値は変えないので pdf-lib の外観再生成(Helvetica)を走らせない
|
|
394
492
|
const saved = await saveEdited(doc, args, { updateFieldAppearances: false });
|
|
395
493
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/services/editor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAmBxE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,GACX,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,yCAAyC;AACzC,MAAM,UAAU,iBAAiB,CAAC,KAAiB;IACjD,4CAA4C;IAC5C,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe;IAC5F,KAAK,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;gBAAE,SAAS,KAAK,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,IAA0D;IAE1D,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,KAAiB,CAAC;IACtB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,cAAc,CAAC,yBAAyB,OAAO,EAAE,EAAE,eAAe,EAAE;YAC5E,YAAY,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SACpD,CAAC,CAAC;IACL,CAAC;IAED,qDAAqD;IACrD,IAAI,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAClD,MAAM,IAAI,cAAc,CACtB,IAAI,OAAO,mBAAmB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM;YAC5E,OAAO,MAAM,CAAC,mBAAmB,GAAG,IAAI,GAAG,IAAI,KAAK,EACtD,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1F,MAAM,IAAI,cAAc,CACtB,IAAI,OAAO,uDAAuD;YAChE,sFAAsF,EACxF,YAAY,EACZ;YACE,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,YAAY,CAAC,uBAAuB,EAAE,CAAC;SAC1F,CACF,CAAC;IACJ,CAAC;IAED,IAAI,GAAgB,CAAC;IACrB,IAAI,CAAC;QACH,wDAAwD;QACxD,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,IAAI,cAAc,CACtB,wBAAwB,OAAO,MAAM,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,MAAM,KAAK,EAAE,EACxF,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,EAC3C,SAAS;YACP,CAAC,CAAC,EAAE,IAAI,EAAE,qEAAqE,EAAE;YACjF,CAAC,CAAC,EAAE,CACP,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACjC,CAAC;AAED,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAqB;IACrD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAsB;IACvD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,KAAK,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACtC,MAAM,UAAU,CAAC,uBAAuB,KAAK,SAAS,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,KAAK,cAAc,CAAC,CAAC;IAClD,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAuB;IACzD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAE/D,qDAAqD;IACrD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,cAAc,CACtB,qFAAqF;gBACnF,mFAAmF;gBACnF,qEAAqE,EACvE,yBAAyB,EACzB;gBACE,IAAI,EACF,wEAAwE;oBACxE,0FAA0F;aAC7F,CACF,CAAC;QACJ,CAAC;QAED,+CAA+C;QAC/C,+CAA+C;QAC/C,sCAAsC;QACtC,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,cAAc,CACtB,+EAA+E,OAAO,KAAK;gBACzF,CAAC,OAAO,KAAK,CAAC;oBACZ,CAAC,CAAC,qFAAqF;oBACvF,CAAC,CAAC,mEAAmE,CAAC;gBACxE,0FAA0F,EAC5F,YAAY,EACZ;gBACE,SAAS,EAAE,IAAI;gBACf,IAAI,EAAE,+DAA+D;gBACrE,YAAY,EAAE,CAAC,YAAY,CAAC,uBAAuB,EAAE,CAAC;aACvD,CACF,CAAC;QACJ,CAAC;QAED,sCAAsC;QACtC,4BAA4B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAC9C,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAE3C,wBAAwB;QACxB,iDAAiD;QACjD,wCAAwC;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAa,CAAC,SAAS,YAAY,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvF,sDAAsD;QACtD,GAAG,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;QAC1C,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK;YAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/E,MAAM,MAAM,GAAG,sBAAsB,CAAC;YACpC,QAAQ,EAAE,KAAK;YACf,GAAG;YACH,SAAS;YACT,iBAAiB,EAAE,KAAK;SACzB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,4CAA4C,MAAM,CAAC,cAAc,cAAc;YAC7E,GAAG,MAAM,CAAC,SAAS,WAAW,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,+BAA+B,CAClG,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;QACzE,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE3C,qDAAqD;IACrD,sCAAsC;IACtC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,4BAA4B,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAClF,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CACX,sFAAsF;YACpF,8DAA8D,CACjE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACpD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAoB;IACxD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE;QACrC,QAAQ,EAAE,IAAI,CAAC,cAAc;QAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CACX,oEAAoE;YAClE,iFAAiF;YACjF,+FAA+F,CAClG,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,YAAY,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,WAAW,QAAQ,CAAC,QAAQ,GAAG,CAC5E,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1C,OAAO;QACL,GAAG,KAAK;QACR,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACpD,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;KACvD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAA0B;IAC/D,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC;IACvD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IAEhE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK;QACxB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;QAClC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEnD,6CAA6C;IAC7C,iCAAiC;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC;KACnD,CAAC,CAAC,CAAC;IAEJ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACtC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ;YACR,KAAK;YACL,QAAQ;YACR,MAAM;YACN,+CAA+C;YAC/C,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SACvF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,WAAW,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE,EAAE,CAChF,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1C,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAsB;IACvD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;IAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,kBAAkB,CAAC,QAAQ,CAAC;IAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,kBAAkB,CAAC,KAAK,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC;IACxD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEpE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK;QACxB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;QAClC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEnD,4DAA4D;IAC5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,uBAAuB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACvD,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ;YACR,KAAK;YACL,OAAO;YACP,KAAK;YACL,MAAM;YACN,6CAA6C;YAC7C,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SACvF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,eAAe,OAAO,CAAC,MAAM,WAAW,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1G,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1C,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,sBAAsB,CACnC,GAAgB,EAChB,QAA4B;IAE5B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC3B,oCAAoC;IACpC,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9D,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAkB;IAC/C,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAE3B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,cAAc,CACtB,kEAAkE;YAChE,oEAAoE,EACtE,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,UAAU,CAAC,gDAAgD,CAAC,CAAC;IAC3F,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAEzE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEpC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,KAAK,CAAC,MAAM,iBAAiB,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClG,kDAAkD;IAClD,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,OAAO;QACL,GAAG,KAAK;QACR,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS;QACT,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC;QACvB,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACrD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CACrB,GAAgB,EAChB,iBAAsC,EACtC,QAAkB;IAElB,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxC,MAAM,IAAI,cAAc,CACtB,sFAAsF;YACpF,yFAAyF;YACzF,oEAAoE;YACpE,4CAA4C,EAC9C,YAAY,EACZ,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,EAAE,CACtE,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CACX,2FAA2F;YACzF,mFAAmF,CACtF,CAAC;IACJ,CAAC;IACD,mEAAmE;IACnE,GAAG,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,8EAA8E;IAC9E,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,MAAM,oDAAoD,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAuB;IACzD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAExD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,cAAc,CACtB,IAAI,IAAI,CAAC,SAAS,kEAAkE;YAClF,2EAA2E,EAC7E,kBAAkB,EAClB;YACE,IAAI,EACF,kFAAkF;gBAClF,sFAAsF;SACzF,CACF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC3B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,cAAc,CACtB,iEAAiE,EACjE,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,QAAQ,CAAC,IAAI,CACX,sBAAsB,OAAO,CAAC,SAAS,CAAC,MAAM,4CAA4C;YACxF,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,+CAA+C;YAC/E,4DAA4D,CAC/D,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,QAAQ,CAAC,IAAI,CACX,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,gEAAgE;YACxF,cAAc,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAChD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,UAAU,OAAO,CAAC,MAAM,yCAAyC;QAC/D,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CACrE,CAAC;IAEF,2CAA2C;IAC3C,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,OAAO;QACL,GAAG,KAAK;QACR,aAAa,EAAE,OAAO,CAAC,MAAM;QAC7B,cAAc,EAAE,OAAO,CAAC,OAAO;QAC/B,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC;QACvB,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACrD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAqB;IACrD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAE3B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,cAAc,CACtB,iEAAiE,EACjE,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;IAC3C,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAEtD,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,UAAU,gBAAgB,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,OAAO;QACL,GAAG,KAAK;QACR,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACrD,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/services/editor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAmBxE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,GACX,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,yCAAyC;AACzC,MAAM,UAAU,iBAAiB,CAAC,KAAiB;IACjD,4CAA4C;IAC5C,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe;IAC5F,KAAK,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;gBAAE,SAAS,KAAK,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,IAA0D;IAE1D,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,KAAiB,CAAC;IACtB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,cAAc,CAAC,yBAAyB,OAAO,EAAE,EAAE,eAAe,EAAE;YAC5E,YAAY,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SACpD,CAAC,CAAC;IACL,CAAC;IAED,qDAAqD;IACrD,IAAI,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAClD,MAAM,IAAI,cAAc,CACtB,IAAI,OAAO,mBAAmB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM;YAC5E,OAAO,MAAM,CAAC,mBAAmB,GAAG,IAAI,GAAG,IAAI,KAAK,EACtD,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1F,MAAM,IAAI,cAAc,CACtB,IAAI,OAAO,uDAAuD;YAChE,sFAAsF,EACxF,YAAY,EACZ;YACE,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,YAAY,CAAC,uBAAuB,EAAE,CAAC;SAC1F,CACF,CAAC;IACJ,CAAC;IAED,IAAI,GAAgB,CAAC;IACrB,IAAI,CAAC;QACH,wDAAwD;QACxD,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,IAAI,cAAc,CACtB,wBAAwB,OAAO,MAAM,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,MAAM,KAAK,EAAE,EACxF,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,EAC3C,SAAS;YACP,CAAC,CAAC,EAAE,IAAI,EAAE,qEAAqE,EAAE;YACjF,CAAC,CAAC,EAAE,CACP,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACjC,CAAC;AAED,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E;;;;GAIG;AACH,SAAS,kBAAkB,CACzB,GAAgB,EAChB,MAA0D;IAE1D,MAAM,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,mCAAmC;IAChE,IAAI,MAAM,KAAK,YAAY,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO;IAC9C,MAAM,KAAK,GACT,MAAM,KAAK,YAAY;QACrB,CAAC,CAAC,CAAC,KAAK,CAAC;YACP,CAAC,CAAC,qFAAqF;YACvF,CAAC,CAAC,mEAAmE;QACvE,CAAC,CAAC,MAAM,KAAK,WAAW;YACtB,CAAC,CAAC,oFAAoF;YACtF,CAAC,CAAC,qFAAqF,CAAC;IAC9F,MAAM,IAAI,cAAc,CACtB,+EAA+E,CAAC,MAAM,KAAK,EAAE;QAC3F,0FAA0F,EAC5F,YAAY,EACZ;QACE,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,wFAAwF;QAC9F,YAAY,EAAE,CAAC,YAAY,CAAC,uBAAuB,EAAE,CAAC;KACvD,CACF,CAAC;AACJ,CAAC;AAED,uDAAuD;AACvD,SAAS,qBAAqB,CAAC,GAAgB,EAAE,KAAa,EAAE,KAAe;IAC7E,GAAG,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;IAC1C,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7E,CAAC;AAED,qCAAqC;AACrC,KAAK,UAAU,2BAA2B,CACxC,GAAgB,EAChB,aAAyB,EACzB,IAAuB,EACvB,SAAmB,EACnB,KAAa,EACb,IAAY;IAEZ,MAAM,MAAM,GAAG,sBAAsB,CAAC;QACpC,QAAQ,EAAE,aAAa;QACvB,GAAG;QACH,SAAS;QACT,iBAAiB,EAAE,KAAK;KACzB,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,GAAG,IAAI,4BAA4B,MAAM,CAAC,cAAc,eAAe,MAAM,CAAC,SAAS,SAAS;QAC9F,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,+BAA+B,CAChF,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;IACzE,MAAM,MAAM,GAAe,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC3D,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAqB;IACrD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC;IAClD,IAAI,QAAQ,EAAE,CAAC;QACb,kBAAkB,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;QAC/C,4BAA4B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE7D,uDAAuD;IACvD,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CACX,4EAA4E;YAC1E,8DAA8D,CACjE,CAAC;QACF,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,YAAY,MAAM,EAAE,CAAC;YAC1E,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,qBAAqB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAC9C,GAAG,EACH,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,kBAAkB,CACnB,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC;QACrF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC;IACrF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAsB;IACvD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,KAAK,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACtC,MAAM,UAAU,CAAC,uBAAuB,KAAK,SAAS,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC;IAClD,IAAI,QAAQ,EAAE,CAAC;QACb,kBAAkB,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;QAC/C,4BAA4B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC;IAE9C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,KAAK,cAAc,CAAC,CAAC;IAElD,IAAI,QAAQ,EAAE,CAAC;QACb,0DAA0D;QAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,YAAY,MAAM,EAAE,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QACD,qBAAqB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,2BAA2B,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,KAAK,cAAc,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAuB;IACzD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAE/D,qDAAqD;IACrD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,yCAAyC;QACzC,kBAAkB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAEtC,sCAAsC;QACtC,4BAA4B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAC9C,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAE3C,wBAAwB;QACxB,iDAAiD;QACjD,wCAAwC;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAa,CAAC,SAAS,YAAY,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvF,+CAA+C;QAC/C,iFAAiF;QACjF,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,4BAA4B,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAClF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CACX,sFAAsF;oBACpF,8DAA8D,CACjE,CAAC;YACJ,CAAC;QACH,CAAC;QACD,qBAAqB,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAC9C,GAAG,EACH,KAAK,EACL,IAAI,EACJ,SAAS,EACT,KAAK,EACL,kBAAkB,CACnB,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC;QACrF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE3C,qDAAqD;IACrD,sCAAsC;IACtC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,4BAA4B,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAClF,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CACX,sFAAsF;YACpF,8DAA8D,CACjE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACpD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAoB;IACxD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE;QACrC,QAAQ,EAAE,IAAI,CAAC,cAAc;QAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CACX,oEAAoE;YAClE,iFAAiF;YACjF,+FAA+F,CAClG,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,YAAY,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,WAAW,QAAQ,CAAC,QAAQ,GAAG,CAC5E,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1C,OAAO;QACL,GAAG,KAAK;QACR,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACpD,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;KACvD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAA0B;IAC/D,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC;IACvD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IAEhE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK;QACxB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;QAClC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEnD,6CAA6C;IAC7C,iCAAiC;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC;KACnD,CAAC,CAAC,CAAC;IAEJ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACtC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ;YACR,KAAK;YACL,QAAQ;YACR,MAAM;YACN,+CAA+C;YAC/C,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SACvF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,WAAW,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE,EAAE,CAChF,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1C,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAsB;IACvD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;IAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,kBAAkB,CAAC,QAAQ,CAAC;IAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,kBAAkB,CAAC,KAAK,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC;IACxD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEpE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK;QACxB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;QAClC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEnD,4DAA4D;IAC5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,uBAAuB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACvD,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ;YACR,KAAK;YACL,OAAO;YACP,KAAK;YACL,MAAM;YACN,6CAA6C;YAC7C,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SACvF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,eAAe,OAAO,CAAC,MAAM,WAAW,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1G,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1C,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,sBAAsB,CACnC,GAAgB,EAChB,QAA4B;IAE5B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC3B,oCAAoC;IACpC,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9D,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAkB;IAC/C,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAE3B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,cAAc,CACtB,kEAAkE;YAChE,oEAAoE,EACtE,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,UAAU,CAAC,gDAAgD,CAAC,CAAC;IAC3F,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAEzE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEpC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,KAAK,CAAC,MAAM,iBAAiB,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClG,kDAAkD;IAClD,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,OAAO;QACL,GAAG,KAAK;QACR,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS;QACT,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC;QACvB,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACrD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CACrB,GAAgB,EAChB,iBAAsC,EACtC,QAAkB;IAElB,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxC,MAAM,IAAI,cAAc,CACtB,sFAAsF;YACpF,yFAAyF;YACzF,oEAAoE;YACpE,4CAA4C,EAC9C,YAAY,EACZ,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,EAAE,CACtE,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CACX,2FAA2F;YACzF,mFAAmF,CACtF,CAAC;IACJ,CAAC;IACD,mEAAmE;IACnE,GAAG,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,8EAA8E;IAC9E,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,MAAM,oDAAoD,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAuB;IACzD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC;IAElD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,cAAc,CACtB,IAAI,IAAI,CAAC,SAAS,kEAAkE;YAClF,2EAA2E,EAC7E,kBAAkB,EAClB;YACE,IAAI,EACF,kFAAkF;gBAClF,sFAAsF;SACzF,CACF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC3B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,cAAc,CACtB,iEAAiE,EACjE,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,2CAA2C;QAC3C,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACrC,4BAA4B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC;IAE9C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,QAAQ,CAAC,IAAI,CACX,sBAAsB,OAAO,CAAC,SAAS,CAAC,MAAM,4CAA4C;YACxF,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,+CAA+C;YAC/E,4DAA4D,CAC/D,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,QAAQ,CAAC,IAAI,CACX,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,gEAAgE;YACxF,cAAc,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAChD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,UAAU,OAAO,CAAC,MAAM,yCAAyC;QAC/D,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CACrE,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACvC,qBAAqB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,2BAA2B,CAC7C,GAAG,EACH,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,UAAU,OAAO,CAAC,MAAM,YAAY,CACrC,CAAC;QACF,OAAO;YACL,GAAG,KAAK;YACR,aAAa,EAAE,OAAO,CAAC,MAAM;YAC7B,cAAc,EAAE,OAAO,CAAC,OAAO;YAC/B,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC;YACvB,QAAQ,EACN,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;gBACjD,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC;gBAC1C,CAAC,CAAC,SAAS;SAChB,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,OAAO;QACL,GAAG,KAAK;QACR,aAAa,EAAE,OAAO,CAAC,MAAM;QAC7B,cAAc,EAAE,OAAO,CAAC,OAAO;QAC/B,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC;QACvB,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACrD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAqB;IACrD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAE3B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,cAAc,CACtB,iEAAiE,EACjE,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;IAC3C,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAEtD,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,UAAU,gBAAgB,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,OAAO;QACL,GAAG,KAAK;QACR,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACrD,CAAC;AACJ,CAAC"}
|
package/dist/services/form.d.ts
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* 消して外観を素のページ内容に焼き込むため、Form 構造要素が宙に浮き準拠が壊れる。
|
|
19
19
|
* そのため flatten はタグ付き文書では既定で拒否する。
|
|
20
20
|
*/
|
|
21
|
-
import { type PDFDocument, type PDFField, type PDFFont, type PDFForm } from 'pdf-lib';
|
|
21
|
+
import { type PDFDocument, type PDFField, type PDFFont, type PDFForm, PDFRef } from 'pdf-lib';
|
|
22
22
|
/** フィールドに設定できる値 */
|
|
23
23
|
export type FieldValue = string | number | boolean | string[];
|
|
24
24
|
export type FieldKind = 'text' | 'checkbox' | 'dropdown' | 'optionlist' | 'radio' | 'button' | 'signature' | 'unknown';
|
|
@@ -84,6 +84,8 @@ export interface TagWidgetsOutcome {
|
|
|
84
84
|
orphaned: string[];
|
|
85
85
|
/** /TU をフィールド名で代用したフィールド名(labels 未指定・既存 /TU 無し) */
|
|
86
86
|
unlabeled: string[];
|
|
87
|
+
/** 変更した既存の間接オブジェクト(B-7b' = 増分更新の dirty 追跡) */
|
|
88
|
+
dirtiedRefs: PDFRef[];
|
|
87
89
|
}
|
|
88
90
|
/**
|
|
89
91
|
* タグ付き PDF のフォームを PDF/UA-1 準拠へ修復する本体。
|
package/dist/services/form.js
CHANGED
|
@@ -315,6 +315,10 @@ export function tagWidgets(doc, labels) {
|
|
|
315
315
|
if (!form.getFieldMaybe(name))
|
|
316
316
|
throw unknownFieldError(name, form);
|
|
317
317
|
}
|
|
318
|
+
const dirtied = new Map();
|
|
319
|
+
const markDirty = (ref) => {
|
|
320
|
+
dirtied.set(ref.toString(), ref);
|
|
321
|
+
};
|
|
318
322
|
// 7.18.1-3: /TU(代替フィールド名)
|
|
319
323
|
const unlabeled = [];
|
|
320
324
|
for (const field of form.getFields()) {
|
|
@@ -323,14 +327,22 @@ export function tagWidgets(doc, labels) {
|
|
|
323
327
|
const label = labels[name];
|
|
324
328
|
if (label !== undefined) {
|
|
325
329
|
dict.set(PDFName.of('TU'), PDFHexString.fromText(label));
|
|
330
|
+
markDirty(field.ref); // 既存フィールド辞書の変更
|
|
326
331
|
}
|
|
327
332
|
else if (dict.get(PDFName.of('TU')) === undefined) {
|
|
328
333
|
dict.set(PDFName.of('TU'), PDFHexString.fromText(name));
|
|
329
334
|
unlabeled.push(name);
|
|
335
|
+
markDirty(field.ref);
|
|
330
336
|
}
|
|
331
337
|
}
|
|
332
338
|
// 7.18.4-1 / 7.18.3-1: Widget を Form 構造要素へ
|
|
333
|
-
const outcome = {
|
|
339
|
+
const outcome = {
|
|
340
|
+
tagged: 0,
|
|
341
|
+
skipped: 0,
|
|
342
|
+
orphaned: [],
|
|
343
|
+
unlabeled,
|
|
344
|
+
dirtiedRefs: [],
|
|
345
|
+
};
|
|
334
346
|
for (const w of enumerateWidgets(doc)) {
|
|
335
347
|
if (w.hasStructParent) {
|
|
336
348
|
outcome.skipped++;
|
|
@@ -341,9 +353,13 @@ export function tagWidgets(doc, labels) {
|
|
|
341
353
|
continue;
|
|
342
354
|
}
|
|
343
355
|
const appended = appendWidgetToStructTree(doc, w.page, w.widgetRef);
|
|
344
|
-
if (appended.tagged)
|
|
356
|
+
if (appended.tagged) {
|
|
345
357
|
outcome.tagged++;
|
|
358
|
+
for (const ref of appended.dirtiedRefs)
|
|
359
|
+
markDirty(ref);
|
|
360
|
+
}
|
|
346
361
|
}
|
|
362
|
+
outcome.dirtiedRefs = [...dirtied.values()];
|
|
347
363
|
return outcome;
|
|
348
364
|
}
|
|
349
365
|
//# sourceMappingURL=form.js.map
|