promptkaizen-agent 0.2.0 → 0.3.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/README.md +5 -1
- package/dist/backfill/run.d.ts +15 -0
- package/dist/backfill/run.d.ts.map +1 -0
- package/dist/backfill/run.js +33 -0
- package/dist/backfill/run.js.map +1 -0
- package/dist/backfill/scanner.d.ts +82 -0
- package/dist/backfill/scanner.d.ts.map +1 -0
- package/dist/backfill/scanner.js +271 -0
- package/dist/backfill/scanner.js.map +1 -0
- package/dist/cli/detect.d.ts +2 -0
- package/dist/cli/detect.d.ts.map +1 -0
- package/dist/cli/detect.js +40 -0
- package/dist/cli/detect.js.map +1 -0
- package/dist/cli/disable.d.ts +2 -0
- package/dist/cli/disable.d.ts.map +1 -0
- package/dist/cli/disable.js +44 -0
- package/dist/cli/disable.js.map +1 -0
- package/dist/cli/enable.d.ts +2 -0
- package/dist/cli/enable.d.ts.map +1 -0
- package/dist/cli/enable.js +105 -0
- package/dist/cli/enable.js.map +1 -0
- package/dist/cli/hook.d.ts +2 -0
- package/dist/cli/hook.d.ts.map +1 -0
- package/dist/cli/hook.js +406 -0
- package/dist/cli/hook.js.map +1 -0
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +70 -8
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/install-hooks.d.ts +5 -0
- package/dist/cli/install-hooks.d.ts.map +1 -0
- package/dist/cli/install-hooks.js +132 -0
- package/dist/cli/install-hooks.js.map +1 -0
- package/dist/cli/install-task.d.ts +28 -0
- package/dist/cli/install-task.d.ts.map +1 -0
- package/dist/cli/install-task.js +119 -0
- package/dist/cli/install-task.js.map +1 -0
- package/dist/cli/mcp.d.ts +2 -0
- package/dist/cli/mcp.d.ts.map +1 -0
- package/dist/cli/mcp.js +148 -0
- package/dist/cli/mcp.js.map +1 -0
- package/dist/cli/metrics.d.ts +2 -0
- package/dist/cli/metrics.d.ts.map +1 -0
- package/dist/cli/metrics.js +103 -0
- package/dist/cli/metrics.js.map +1 -0
- package/dist/cli/report.d.ts +2 -0
- package/dist/cli/report.d.ts.map +1 -0
- package/dist/cli/report.js +211 -0
- package/dist/cli/report.js.map +1 -0
- package/dist/cli/scan.d.ts +2 -0
- package/dist/cli/scan.d.ts.map +1 -0
- package/dist/cli/scan.js +171 -0
- package/dist/cli/scan.js.map +1 -0
- package/dist/cli/start.d.ts.map +1 -1
- package/dist/cli/start.js +70 -17
- package/dist/cli/start.js.map +1 -1
- package/dist/cli/status.d.ts.map +1 -1
- package/dist/cli/status.js +82 -18
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/uninstall-task.d.ts +8 -0
- package/dist/cli/uninstall-task.d.ts.map +1 -0
- package/dist/cli/uninstall-task.js +44 -0
- package/dist/cli/uninstall-task.js.map +1 -0
- package/dist/config.d.ts +172 -6
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +114 -2
- package/dist/config.js.map +1 -1
- package/dist/console-safe.d.ts +21 -0
- package/dist/console-safe.d.ts.map +1 -0
- package/dist/console-safe.js +71 -0
- package/dist/console-safe.js.map +1 -0
- package/dist/detection-secret.d.ts.map +1 -1
- package/dist/detection-secret.js +12 -0
- package/dist/detection-secret.js.map +1 -1
- package/dist/env-detect.d.ts +44 -0
- package/dist/env-detect.d.ts.map +1 -0
- package/dist/env-detect.js +151 -0
- package/dist/env-detect.js.map +1 -0
- package/dist/exec/executor.d.ts +42 -0
- package/dist/exec/executor.d.ts.map +1 -0
- package/dist/exec/executor.js +135 -0
- package/dist/exec/executor.js.map +1 -0
- package/dist/exec/pk-execute.d.ts +30 -0
- package/dist/exec/pk-execute.d.ts.map +1 -0
- package/dist/exec/pk-execute.js +174 -0
- package/dist/exec/pk-execute.js.map +1 -0
- package/dist/exec/policy-fetcher.d.ts +9 -0
- package/dist/exec/policy-fetcher.d.ts.map +1 -0
- package/dist/exec/policy-fetcher.js +46 -0
- package/dist/exec/policy-fetcher.js.map +1 -0
- package/dist/exec/policy.d.ts +32 -0
- package/dist/exec/policy.d.ts.map +1 -0
- package/dist/exec/policy.js +88 -0
- package/dist/exec/policy.js.map +1 -0
- package/dist/hooks/block-store.d.ts +14 -0
- package/dist/hooks/block-store.d.ts.map +1 -0
- package/dist/hooks/block-store.js +26 -0
- package/dist/hooks/block-store.js.map +1 -0
- package/dist/hooks/claude-hook.d.ts +55 -0
- package/dist/hooks/claude-hook.d.ts.map +1 -0
- package/dist/hooks/claude-hook.js +122 -0
- package/dist/hooks/claude-hook.js.map +1 -0
- package/dist/hooks/continuity.d.ts +48 -0
- package/dist/hooks/continuity.d.ts.map +1 -0
- package/dist/hooks/continuity.js +92 -0
- package/dist/hooks/continuity.js.map +1 -0
- package/dist/hooks/observation.d.ts +27 -0
- package/dist/hooks/observation.d.ts.map +1 -0
- package/dist/hooks/observation.js +0 -0
- package/dist/hooks/observation.js.map +1 -0
- package/dist/hooks/platforms.d.ts +24 -0
- package/dist/hooks/platforms.d.ts.map +1 -0
- package/dist/hooks/platforms.js +57 -0
- package/dist/hooks/platforms.js.map +1 -0
- package/dist/hooks/read-cache.d.ts +71 -0
- package/dist/hooks/read-cache.d.ts.map +1 -0
- package/dist/hooks/read-cache.js +166 -0
- package/dist/hooks/read-cache.js.map +1 -0
- package/dist/hooks/reduction.d.ts +78 -0
- package/dist/hooks/reduction.d.ts.map +1 -0
- package/dist/hooks/reduction.js +111 -0
- package/dist/hooks/reduction.js.map +1 -0
- package/dist/hooks/settings-merge.d.ts +32 -0
- package/dist/hooks/settings-merge.d.ts.map +1 -0
- package/dist/hooks/settings-merge.js +74 -0
- package/dist/hooks/settings-merge.js.map +1 -0
- package/dist/hooks/snapshot.d.ts +37 -0
- package/dist/hooks/snapshot.d.ts.map +1 -0
- package/dist/hooks/snapshot.js +180 -0
- package/dist/hooks/snapshot.js.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +118 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +240 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/onboarding-report.d.ts +66 -0
- package/dist/onboarding-report.d.ts.map +1 -0
- package/dist/onboarding-report.js +152 -0
- package/dist/onboarding-report.js.map +1 -0
- package/dist/onboarding.d.ts +55 -0
- package/dist/onboarding.d.ts.map +1 -0
- package/dist/onboarding.js +98 -0
- package/dist/onboarding.js.map +1 -0
- package/dist/pii-masker.d.ts +7 -0
- package/dist/pii-masker.d.ts.map +1 -1
- package/dist/pii-masker.js +27 -51
- package/dist/pii-masker.js.map +1 -1
- package/dist/privacy.d.ts +13 -0
- package/dist/privacy.d.ts.map +1 -0
- package/dist/privacy.js +67 -0
- package/dist/privacy.js.map +1 -0
- package/dist/residency.d.ts +21 -0
- package/dist/residency.d.ts.map +1 -0
- package/dist/residency.js +68 -0
- package/dist/residency.js.map +1 -0
- package/dist/secret-detector.d.ts +19 -0
- package/dist/secret-detector.d.ts.map +1 -1
- package/dist/secret-detector.js +116 -0
- package/dist/secret-detector.js.map +1 -1
- package/dist/store/local-store.d.ts +167 -0
- package/dist/store/local-store.d.ts.map +1 -0
- package/dist/store/local-store.js +538 -0
- package/dist/store/local-store.js.map +1 -0
- package/dist/store/schema.d.ts +38 -0
- package/dist/store/schema.d.ts.map +1 -0
- package/dist/store/schema.js +189 -0
- package/dist/store/schema.js.map +1 -0
- package/dist/types.d.ts +13 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/watcher.d.ts +6 -0
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +13 -2
- package/dist/watcher.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../src/onboarding.ts"],"names":[],"mappings":"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"}
|
package/dist/pii-masker.d.ts
CHANGED
|
@@ -52,9 +52,16 @@ export declare class PiiMasker {
|
|
|
52
52
|
private readonly effective;
|
|
53
53
|
private readonly homeDir;
|
|
54
54
|
private readonly customPatterns;
|
|
55
|
+
private readonly secretRedactor;
|
|
55
56
|
constructor(config: AgentConfig['pii'], opts?: PiiMaskerOptions);
|
|
56
57
|
mask(entry: ParsedEntry): ParsedEntry;
|
|
57
58
|
maskAll(entries: ParsedEntry[]): ParsedEntry[];
|
|
59
|
+
/**
|
|
60
|
+
* 任意の文字列を同じルールでマスクして返す (件数は数えない)。
|
|
61
|
+
* バックフィルスキャナ (#103) がセッション名 / cwd / ファイルパスを画面表示する際、
|
|
62
|
+
* 生のユーザー名や絶対パスを露出させないために使う。entry 単位ではない単発のマスク用。
|
|
63
|
+
*/
|
|
64
|
+
maskText(str: string): string;
|
|
58
65
|
/** 任意の値を再帰的に処理。string は pattern 置換、object は structural な特別処理あり */
|
|
59
66
|
private maskValue;
|
|
60
67
|
private maskString;
|
package/dist/pii-masker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pii-masker.d.ts","sourceRoot":"","sources":["../src/pii-masker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"pii-masker.d.ts","sourceRoot":"","sources":["../src/pii-masker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAwB1C,8CAA8C;AAC9C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAC5C,eAAO,MAAM,aAAa,UAAU,CAAA;AACpC,eAAO,MAAM,aAAa,iBAAiB,CAAA;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAE1C,kCAAkC;AAClC,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAQD,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAA;IACd,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE;QACP,WAAW,EAAE,OAAO,CAAA;QACpB,aAAa,EAAE,OAAO,CAAA;QACtB,UAAU,EAAE,OAAO,CAAA;KACpB,CAAA;IACD,WAAW,EAAE,cAAc,EAAE,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,OAAO,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;IACtB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,cAAc,EAAE,CAAA;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EACzB,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,GAC9B,mBAAmB,CAqBrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oDAAoD;IACpD,WAAW,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;CACrC;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+D;IAI9F,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+C;gBAElE,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,GAAE,gBAAqB;IAenE,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAYrC,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;IAI9C;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI7B,kEAAkE;IAClE,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,UAAU;IAqBlB,wBAAwB;IACxB,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,cAAc;CAevB"}
|
package/dist/pii-masker.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.PiiMasker = exports.MAX_MASK_STATS_PER_ENTRY = exports.RULE_ID_IMAGE = e
|
|
|
7
7
|
exports.resolveMaskConfig = resolveMaskConfig;
|
|
8
8
|
const crypto_1 = require("crypto");
|
|
9
9
|
const os_1 = __importDefault(require("os"));
|
|
10
|
+
const secret_detector_1 = require("./secret-detector");
|
|
10
11
|
// =============================================
|
|
11
12
|
// PII マスキング (送信前に伏せる) — Issue #43 でルール駆動化
|
|
12
13
|
// =============================================
|
|
@@ -17,54 +18,11 @@ const os_1 = __importDefault(require("os"));
|
|
|
17
18
|
// 2. ルールごとのマスク件数 (MaskStat) を entry に付与 → cloud が日次集計
|
|
18
19
|
// 3. 組織ルール (cloud 配信) とローカル設定をマージして適用
|
|
19
20
|
// した。マスク文字列のみが残り、元の値は entry に保持されない。
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
* (key 漏洩リスク > 文字列を過剰にマスクするリスク)。
|
|
26
|
-
* ruleId は secret-detector.ts の同種ルールと揃える (監査表示で対応が取れるように)。
|
|
27
|
-
*/
|
|
28
|
-
const SECRET_PATTERNS = [
|
|
29
|
-
// Anthropic API key (sk-ant-api... / sk-ant-oat... / sk-ant-ort...)
|
|
30
|
-
{
|
|
31
|
-
ruleId: 'anthropic_key',
|
|
32
|
-
regex: /sk-ant-(api|oat|ort)\d+-[A-Za-z0-9_-]{40,}/g,
|
|
33
|
-
replacement: '[MASKED_ANTHROPIC_KEY]',
|
|
34
|
-
},
|
|
35
|
-
// OpenAI key (sk-proj-... or legacy sk-...) — 40+ 文字に絞って誤検出抑制
|
|
36
|
-
{
|
|
37
|
-
ruleId: 'openai_key',
|
|
38
|
-
regex: /sk-(proj-)?[A-Za-z0-9]{40,}/g,
|
|
39
|
-
replacement: '[MASKED_OPENAI_KEY]',
|
|
40
|
-
},
|
|
41
|
-
// GitHub token (ghp_, gho_, ghu_, ghs_, ghr_)
|
|
42
|
-
{
|
|
43
|
-
ruleId: 'github_token',
|
|
44
|
-
regex: /gh[pousr]_[A-Za-z0-9]{36}/g,
|
|
45
|
-
replacement: '[MASKED_GITHUB_TOKEN]',
|
|
46
|
-
},
|
|
47
|
-
// Slack token (xoxb-, xoxp-, xoxa-, xoxr-, xoxs-)
|
|
48
|
-
{
|
|
49
|
-
ruleId: 'slack_token',
|
|
50
|
-
regex: /xox[baprs]-[A-Za-z0-9-]{10,}/g,
|
|
51
|
-
replacement: '[MASKED_SLACK_TOKEN]',
|
|
52
|
-
},
|
|
53
|
-
// AWS access key
|
|
54
|
-
{ ruleId: 'aws_access_key', regex: /\bAKIA[0-9A-Z]{16}\b/g, replacement: '[MASKED_AWS_KEY]' },
|
|
55
|
-
// GCP API key
|
|
56
|
-
{
|
|
57
|
-
ruleId: 'gcp_api_key',
|
|
58
|
-
regex: /\bAIza[0-9A-Za-z_-]{35}\b/g,
|
|
59
|
-
replacement: '[MASKED_GCP_KEY]',
|
|
60
|
-
},
|
|
61
|
-
// Generic Bearer token (短すぎる文字列は誤検出するので 20+ 文字に絞る)
|
|
62
|
-
{
|
|
63
|
-
ruleId: 'bearer_token',
|
|
64
|
-
regex: /Bearer\s+[A-Za-z0-9._-]{20,}/g,
|
|
65
|
-
replacement: 'Bearer [MASKED_TOKEN]',
|
|
66
|
-
},
|
|
67
|
-
];
|
|
21
|
+
// 秘密情報マスク (API キー / トークン / 秘密鍵 / JWT / 高エントロピー / クレジットカード /
|
|
22
|
+
// マイナンバー) は SecretDetector.redact に委譲する (Issue #104)。
|
|
23
|
+
// 検出 (detect) と同じルール集合を使うことで「検出できるのにマスクされない」ドリフトを
|
|
24
|
+
// 構造的に防ぐ — 以前はここに API キー数種だけのパターン表 (SECRET_PATTERNS) を別管理して
|
|
25
|
+
// おり、秘密鍵 / JWT / 高エントロピー等が検出されても平文で保存され得た。
|
|
68
26
|
// local-part を 2 文字以上にして Flask デコレータ等 (例: `t@app.context_processor`,
|
|
69
27
|
// `n@app.after_request`) の false positive をブロック。1 文字 local-part の実 email は
|
|
70
28
|
// RFC 上 valid だが実運用ではほぼ存在しない (acceptable trade-off)。
|
|
@@ -107,6 +65,10 @@ class PiiMasker {
|
|
|
107
65
|
effective;
|
|
108
66
|
homeDir;
|
|
109
67
|
customPatterns;
|
|
68
|
+
// 秘密情報マスクは検出器に委譲 (#104)。確定ルール (キー/秘密鍵/JWT/トークン/
|
|
69
|
+
// クレジットカード/マイナンバー) のみ伏せる。高エントロピーは検出専用で、マスキングでは
|
|
70
|
+
// 無効化する (正当な識別子や base64 断片まで潰して本文を壊さないため)。
|
|
71
|
+
secretRedactor = new secret_detector_1.SecretDetector({ enableEntropy: false });
|
|
110
72
|
constructor(config, opts = {}) {
|
|
111
73
|
this.effective = resolveMaskConfig(config, opts.remoteRules);
|
|
112
74
|
this.homeDir = opts.homeDir ?? os_1.default.homedir();
|
|
@@ -137,6 +99,14 @@ class PiiMasker {
|
|
|
137
99
|
maskAll(entries) {
|
|
138
100
|
return entries.map((e) => this.mask(e));
|
|
139
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* 任意の文字列を同じルールでマスクして返す (件数は数えない)。
|
|
104
|
+
* バックフィルスキャナ (#103) がセッション名 / cwd / ファイルパスを画面表示する際、
|
|
105
|
+
* 生のユーザー名や絶対パスを露出させないために使う。entry 単位ではない単発のマスク用。
|
|
106
|
+
*/
|
|
107
|
+
maskText(str) {
|
|
108
|
+
return this.maskString(str, new Map());
|
|
109
|
+
}
|
|
140
110
|
/** 任意の値を再帰的に処理。string は pattern 置換、object は structural な特別処理あり */
|
|
141
111
|
maskValue(v, counts) {
|
|
142
112
|
if (typeof v === 'string') {
|
|
@@ -166,9 +136,12 @@ class PiiMasker {
|
|
|
166
136
|
maskString(str, counts) {
|
|
167
137
|
let result = str;
|
|
168
138
|
if (this.effective.maskApiKeys) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
139
|
+
// 検出器と同一ルールで秘密情報を一括伏せ字化 (#104)。秘密鍵 / JWT / 高エントロピー /
|
|
140
|
+
// クレジットカード / マイナンバーも含む。件数は MaskStat へ合算する。
|
|
141
|
+
const redacted = this.secretRedactor.redact(result);
|
|
142
|
+
result = redacted.text;
|
|
143
|
+
for (const [ruleId, n] of Object.entries(redacted.counts))
|
|
144
|
+
bump(counts, ruleId, n);
|
|
172
145
|
}
|
|
173
146
|
if (this.effective.maskFilePaths) {
|
|
174
147
|
result = this.maskFilePathsInString(result, counts);
|
|
@@ -193,6 +166,9 @@ class PiiMasker {
|
|
|
193
166
|
// 他ユーザー (チーム共有時に他のユーザー名が漏れないように)
|
|
194
167
|
result = replaceCounted(result, /\/Users\/[^/\s"'`]+/g, '/Users/[USER]', counts, exports.RULE_ID_FILE_PATH);
|
|
195
168
|
result = replaceCounted(result, /\/home\/[^/\s"'`]+/g, '/home/[USER]', counts, exports.RULE_ID_FILE_PATH);
|
|
169
|
+
// Windows パス (Issue #61)。`C:/Users/...` (forward slash) は上の /Users/ 規則で
|
|
170
|
+
// 既にマスクされるため、backslash 形式のみ追加。lookbehind でドライブレターを保持。
|
|
171
|
+
result = replaceCounted(result, /(?<=[A-Za-z]):\\Users\\[^\\/\s"'`]+/g, ':\\Users\\[USER]', counts, exports.RULE_ID_FILE_PATH);
|
|
196
172
|
return result;
|
|
197
173
|
}
|
|
198
174
|
isBase64ImageBlock(obj) {
|
package/dist/pii-masker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pii-masker.js","sourceRoot":"","sources":["../src/pii-masker.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"pii-masker.js","sourceRoot":"","sources":["../src/pii-masker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ParsedEntry } from './types';
|
|
2
|
+
/** opt-in off 時に本文を差し替える placeholder。 */
|
|
3
|
+
export declare const WITHHELD_PLACEHOLDER = "[PROMPT_BODY_WITHHELD]";
|
|
4
|
+
export interface PrivacyGateOptions {
|
|
5
|
+
/** 組織 opt-in。true ならプロンプト本文を送信、false なら placeholder 化。 */
|
|
6
|
+
sendPromptBody: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 送信用に entry 配列を最小化する。元配列・元 entry は変更しない (ローカル保存と分離)。
|
|
10
|
+
* user プロンプト本文の entry のみ対象。それ以外 (assistant/tool result 等) は素通し。
|
|
11
|
+
*/
|
|
12
|
+
export declare function applyPrivacyGate(entries: ParsedEntry[], opts: PrivacyGateOptions): ParsedEntry[];
|
|
13
|
+
//# sourceMappingURL=privacy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../src/privacy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAe1C,yCAAyC;AACzC,eAAO,MAAM,oBAAoB,2BAA2B,CAAA;AAE5D,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,cAAc,EAAE,OAAO,CAAA;CACxB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,EAAE,EACtB,IAAI,EAAE,kBAAkB,GACvB,WAAW,EAAE,CAGf"}
|
package/dist/privacy.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WITHHELD_PLACEHOLDER = void 0;
|
|
4
|
+
exports.applyPrivacyGate = applyPrivacyGate;
|
|
5
|
+
// =============================================
|
|
6
|
+
// 送信プライバシーゲート (Issue #68) — プロンプト本文の二段制御
|
|
7
|
+
// =============================================
|
|
8
|
+
//
|
|
9
|
+
// 二段制御:
|
|
10
|
+
// (1) すべての本文は保存・送信前に PiiMasker でマスク済み (別レイヤ #43)。
|
|
11
|
+
// (2) ここでは「プロンプト本文そのもの」を、組織が opt-in した時だけ送信する。
|
|
12
|
+
// opt-in off の間は本文を placeholder に差し替え、メタデータ
|
|
13
|
+
// (type/sessionId/cwd/timestamp/dedupeKey/検知・マスク件数) のみ送信する。
|
|
14
|
+
//
|
|
15
|
+
// ローカル SQLite には完全な (マスク済み) 本文を残すので検索性は損なわれない。
|
|
16
|
+
// 送信ペイロードだけを最小化する点が重要 (ローカル保存 != 送信)。
|
|
17
|
+
/** opt-in off 時に本文を差し替える placeholder。 */
|
|
18
|
+
exports.WITHHELD_PLACEHOLDER = '[PROMPT_BODY_WITHHELD]';
|
|
19
|
+
/**
|
|
20
|
+
* 送信用に entry 配列を最小化する。元配列・元 entry は変更しない (ローカル保存と分離)。
|
|
21
|
+
* user プロンプト本文の entry のみ対象。それ以外 (assistant/tool result 等) は素通し。
|
|
22
|
+
*/
|
|
23
|
+
function applyPrivacyGate(entries, opts) {
|
|
24
|
+
if (opts.sendPromptBody)
|
|
25
|
+
return entries;
|
|
26
|
+
return entries.map((e) => (isUserPrompt(e) ? withholdBody(e) : e));
|
|
27
|
+
}
|
|
28
|
+
/** raw.type === 'user' をプロンプト本文 entry とみなす。 */
|
|
29
|
+
function isUserPrompt(e) {
|
|
30
|
+
const r = e.raw;
|
|
31
|
+
return !!r && (r.type === 'user' || r.role === 'user');
|
|
32
|
+
}
|
|
33
|
+
/** user 本文を placeholder 化したコピーを返す (メタは保持)。 */
|
|
34
|
+
function withholdBody(e) {
|
|
35
|
+
const r = e.raw;
|
|
36
|
+
if (!r)
|
|
37
|
+
return e;
|
|
38
|
+
const cloned = { ...r, bodyWithheld: true };
|
|
39
|
+
if ('message' in cloned) {
|
|
40
|
+
cloned.message = redactMessage(cloned.message);
|
|
41
|
+
}
|
|
42
|
+
if (typeof cloned.text === 'string')
|
|
43
|
+
cloned.text = exports.WITHHELD_PLACEHOLDER;
|
|
44
|
+
if (typeof cloned.content === 'string')
|
|
45
|
+
cloned.content = exports.WITHHELD_PLACEHOLDER;
|
|
46
|
+
return { ...e, raw: cloned };
|
|
47
|
+
}
|
|
48
|
+
/** message.content の text フィールドのみ placeholder 化。構造は保つ。 */
|
|
49
|
+
function redactMessage(message) {
|
|
50
|
+
if (!message || typeof message !== 'object')
|
|
51
|
+
return exports.WITHHELD_PLACEHOLDER;
|
|
52
|
+
const m = message;
|
|
53
|
+
const out = { ...m };
|
|
54
|
+
if (typeof m.content === 'string') {
|
|
55
|
+
out.content = exports.WITHHELD_PLACEHOLDER;
|
|
56
|
+
}
|
|
57
|
+
else if (Array.isArray(m.content)) {
|
|
58
|
+
out.content = m.content.map((block) => {
|
|
59
|
+
if (block && typeof block === 'object' && block.type === 'text') {
|
|
60
|
+
return { ...block, text: exports.WITHHELD_PLACEHOLDER };
|
|
61
|
+
}
|
|
62
|
+
return block;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=privacy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy.js","sourceRoot":"","sources":["../src/privacy.ts"],"names":[],"mappings":";;;AA2BA,4CAMC;AA/BD,gDAAgD;AAChD,yCAAyC;AACzC,gDAAgD;AAChD,EAAE;AACF,QAAQ;AACR,oDAAoD;AACpD,iDAAiD;AACjD,kDAAkD;AAClD,kEAAkE;AAClE,EAAE;AACF,+CAA+C;AAC/C,sCAAsC;AAEtC,yCAAyC;AAC5B,QAAA,oBAAoB,GAAG,wBAAwB,CAAA;AAO5D;;;GAGG;AACH,SAAgB,gBAAgB,CAC9B,OAAsB,EACtB,IAAwB;IAExB,IAAI,IAAI,CAAC,cAAc;QAAE,OAAO,OAAO,CAAA;IACvC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACpE,CAAC;AAED,+CAA+C;AAC/C,SAAS,YAAY,CAAC,CAAc;IAClC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAqC,CAAA;IACjD,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;AACxD,CAAC;AAED,8CAA8C;AAC9C,SAAS,YAAY,CAAC,CAAc;IAClC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAqC,CAAA;IACjD,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAA;IAChB,MAAM,MAAM,GAA4B,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAA;IACpE,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QACxB,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,MAAM,CAAC,IAAI,GAAG,4BAAoB,CAAA;IACvE,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAAE,MAAM,CAAC,OAAO,GAAG,4BAAoB,CAAA;IAC7E,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;AAC9B,CAAC;AAED,0DAA0D;AAC1D,SAAS,aAAa,CAAC,OAAgB;IACrC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,4BAAoB,CAAA;IACxE,MAAM,CAAC,GAAG,OAAkC,CAAA;IAC5C,MAAM,GAAG,GAA4B,EAAE,GAAG,CAAC,EAAE,CAAA;IAC7C,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAClC,GAAG,CAAC,OAAO,GAAG,4BAAoB,CAAA;IACpC,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACpC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAiC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC7F,OAAO,EAAE,GAAI,KAAiC,EAAE,IAAI,EAAE,4BAAoB,EAAE,CAAA;YAC9E,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type ResidentKind = 'launchd' | 'systemd' | 'task' | 'manual';
|
|
2
|
+
export interface ResidencyPlan {
|
|
3
|
+
resident: ResidentKind;
|
|
4
|
+
/** あとから常駐デーモンを登録するコマンド (manual 時は素の start)。 */
|
|
5
|
+
installCmd: string;
|
|
6
|
+
/** 常駐デーモンを解除するコマンド。 */
|
|
7
|
+
uninstallCmd: string;
|
|
8
|
+
/** manual / WSL 等の補足ガイダンス。 */
|
|
9
|
+
note?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* OS と環境から常駐デーモンの登録方式を決める (純粋関数)。
|
|
13
|
+
* - macOS → launchd
|
|
14
|
+
* - Windows→ Task Scheduler
|
|
15
|
+
* - Linux → systemd user unit。ただし systemd user セッションが無い環境
|
|
16
|
+
* (一部の WSL / コンテナ) では manual にフォールバックし、手順を案内する。
|
|
17
|
+
*/
|
|
18
|
+
export declare function planResidency(platform: NodeJS.Platform, isWSL: boolean, systemdAvailable: boolean): ResidencyPlan;
|
|
19
|
+
/** systemd の user セッションが利用可能か (Linux のみ。失敗=利用不可)。 */
|
|
20
|
+
export declare function systemdUserAvailable(platform?: NodeJS.Platform): boolean;
|
|
21
|
+
//# sourceMappingURL=residency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"residency.d.ts","sourceRoot":"","sources":["../src/residency.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEpE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,YAAY,CAAA;IACtB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,KAAK,EAAE,OAAO,EACd,gBAAgB,EAAE,OAAO,GACxB,aAAa,CA0Cf;AAED,qDAAqD;AACrD,wBAAgB,oBAAoB,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,OAAO,CAQ1F"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.planResidency = planResidency;
|
|
4
|
+
exports.systemdUserAvailable = systemdUserAvailable;
|
|
5
|
+
const child_process_1 = require("child_process");
|
|
6
|
+
/**
|
|
7
|
+
* OS と環境から常駐デーモンの登録方式を決める (純粋関数)。
|
|
8
|
+
* - macOS → launchd
|
|
9
|
+
* - Windows→ Task Scheduler
|
|
10
|
+
* - Linux → systemd user unit。ただし systemd user セッションが無い環境
|
|
11
|
+
* (一部の WSL / コンテナ) では manual にフォールバックし、手順を案内する。
|
|
12
|
+
*/
|
|
13
|
+
function planResidency(platform, isWSL, systemdAvailable) {
|
|
14
|
+
if (platform === 'darwin') {
|
|
15
|
+
return {
|
|
16
|
+
resident: 'launchd',
|
|
17
|
+
installCmd: 'promptkaizen-agent install-launchd',
|
|
18
|
+
uninstallCmd: 'promptkaizen-agent uninstall-launchd',
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if (platform === 'win32') {
|
|
22
|
+
return {
|
|
23
|
+
resident: 'task',
|
|
24
|
+
installCmd: 'promptkaizen-agent install-task',
|
|
25
|
+
uninstallCmd: 'promptkaizen-agent uninstall-task',
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
if (platform === 'linux') {
|
|
29
|
+
if (systemdAvailable) {
|
|
30
|
+
return {
|
|
31
|
+
resident: 'systemd',
|
|
32
|
+
installCmd: 'promptkaizen-agent install-systemd',
|
|
33
|
+
uninstallCmd: 'promptkaizen-agent uninstall-systemd',
|
|
34
|
+
note: isWSL
|
|
35
|
+
? 'WSL: ログアウト後も常駐させるには `sudo loginctl enable-linger $USER` を実行してください。'
|
|
36
|
+
: undefined,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// systemd user セッションが無い (WSL の systemd 無効構成 / 一部コンテナ)。
|
|
40
|
+
return {
|
|
41
|
+
resident: 'manual',
|
|
42
|
+
installCmd: 'promptkaizen-agent start & # バックグラウンド常駐',
|
|
43
|
+
uninstallCmd: 'kill した上で起動元 (シェル/タスク) から外す',
|
|
44
|
+
note: isWSL
|
|
45
|
+
? 'WSL で systemd が無効です。/etc/wsl.conf に [boot] systemd=true を設定して `wsl --shutdown` 後に再起動すると install-systemd が使えます。当面は `promptkaizen-agent start &` で常駐できます。'
|
|
46
|
+
: 'systemd user セッションが見つかりません。`promptkaizen-agent start &` (または nohup) で常駐させてください。',
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
resident: 'manual',
|
|
51
|
+
installCmd: 'promptkaizen-agent start &',
|
|
52
|
+
uninstallCmd: 'kill した上で起動元から外す',
|
|
53
|
+
note: `未対応プラットフォーム (${platform})。\`promptkaizen-agent start\` を常駐起動してください。`,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/** systemd の user セッションが利用可能か (Linux のみ。失敗=利用不可)。 */
|
|
57
|
+
function systemdUserAvailable(platform = process.platform) {
|
|
58
|
+
if (platform !== 'linux')
|
|
59
|
+
return false;
|
|
60
|
+
try {
|
|
61
|
+
(0, child_process_1.execSync)('systemctl --user show-environment', { stdio: 'ignore' });
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=residency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"residency.js","sourceRoot":"","sources":["../src/residency.ts"],"names":[],"mappings":";;AA6BA,sCA8CC;AAGD,oDAQC;AAtFD,iDAAwC;AAsBxC;;;;;;GAMG;AACH,SAAgB,aAAa,CAC3B,QAAyB,EACzB,KAAc,EACd,gBAAyB;IAEzB,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,oCAAoC;YAChD,YAAY,EAAE,sCAAsC;SACrD,CAAA;IACH,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO;YACL,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,iCAAiC;YAC7C,YAAY,EAAE,mCAAmC;SAClD,CAAA;IACH,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO;gBACL,QAAQ,EAAE,SAAS;gBACnB,UAAU,EAAE,oCAAoC;gBAChD,YAAY,EAAE,sCAAsC;gBACpD,IAAI,EAAE,KAAK;oBACT,CAAC,CAAC,oEAAoE;oBACtE,CAAC,CAAC,SAAS;aACd,CAAA;QACH,CAAC;QACD,uDAAuD;QACvD,OAAO;YACL,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,2CAA2C;YACvD,YAAY,EAAE,6BAA6B;YAC3C,IAAI,EAAE,KAAK;gBACT,CAAC,CAAC,yJAAyJ;gBAC3J,CAAC,CAAC,iFAAiF;SACtF,CAAA;IACH,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,4BAA4B;QACxC,YAAY,EAAE,kBAAkB;QAChC,IAAI,EAAE,gBAAgB,QAAQ,6CAA6C;KAC5E,CAAA;AACH,CAAC;AAED,qDAAqD;AACrD,SAAgB,oBAAoB,CAAC,WAA4B,OAAO,CAAC,QAAQ;IAC/E,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,KAAK,CAAA;IACtC,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;QAClE,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|
|
@@ -78,5 +78,24 @@ export declare class SecretDetector {
|
|
|
78
78
|
constructor(opts?: SecretDetectorOptions);
|
|
79
79
|
/** テキストから検知メタを返す。生機密本文は保持しない。 */
|
|
80
80
|
detect(text: string): DetectionMeta[];
|
|
81
|
+
/**
|
|
82
|
+
* テキストから「秘密情報」を伏せ字へ置換して返す (Issue #104)。
|
|
83
|
+
*
|
|
84
|
+
* 検出 (detect) と同じルール集合を流用することで、**検出できるものは必ずマスクできる**
|
|
85
|
+
* を保証し、検出器とマスカのドリフトを防ぐ。マスク対象は:
|
|
86
|
+
* - category==='secret' の全ルール (API キー / トークン / 秘密鍵 / JWT / 高エントロピー)
|
|
87
|
+
* - severity==='high' のルール (クレジットカード / マイナンバー — 検査数字で誤検知が低い)
|
|
88
|
+
* - 秘密鍵は BEGIN〜END を一括 (検出ルールは BEGIN 行のみのため本体が残るのを防ぐ)
|
|
89
|
+
*
|
|
90
|
+
* email や中低重大度の一般 PII (電話 / 住所 等) は対象外 — それらはマスカ側のトグル
|
|
91
|
+
* (maskEmails) や組織ルールが扱う。生テキストに対して動作する (置換位置を保つため
|
|
92
|
+
* 正規化はしない。全角の難読化対策は将来課題)。
|
|
93
|
+
*
|
|
94
|
+
* @returns 置換後テキストと ruleId ごとの置換件数 (MaskStat 連携用)。
|
|
95
|
+
*/
|
|
96
|
+
redact(text: string): {
|
|
97
|
+
text: string;
|
|
98
|
+
counts: Record<string, number>;
|
|
99
|
+
};
|
|
81
100
|
}
|
|
82
101
|
//# sourceMappingURL=secret-detector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-detector.d.ts","sourceRoot":"","sources":["../src/secret-detector.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAA;AACtE,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;AAEzD,4DAA4D;AAC5D,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAE1C,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAA;CAClB;AAqBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI1D;AAMD,uCAAuC;AACvC,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAehD;AAED,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CActD;AAED,6CAA6C;AAC7C,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAc7D;AAED,yDAAyD;AACzD,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAUhD;AAMD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAQ7E;AAED,oDAAoD;AACpD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,SAAU,GAAG,MAAM,CAgBzE;
|
|
1
|
+
{"version":3,"file":"secret-detector.d.ts","sourceRoot":"","sources":["../src/secret-detector.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAA;AACtE,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;AAEzD,4DAA4D;AAC5D,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAE1C,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAA;CAClB;AAqBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI1D;AAMD,uCAAuC;AACvC,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAehD;AAED,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CActD;AAED,6CAA6C;AAC7C,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAc7D;AAED,yDAAyD;AACzD,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAUhD;AAMD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAQ7E;AAED,oDAAoD;AACpD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,SAAU,GAAG,MAAM,CAgBzE;AAmLD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,iBAAiB,CAAA;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,qBAAqB,EAAE,CAAA;IAC1C,kCAAkC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAID,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;gBAEvB,IAAI,GAAE,qBAA0B;IAqB5C,iCAAiC;IACjC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE;IA+FrC;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;CAmEvE"}
|
package/dist/secret-detector.js
CHANGED
|
@@ -166,6 +166,40 @@ function collectStrings(value, maxChars = 200_000) {
|
|
|
166
166
|
walk(value);
|
|
167
167
|
return parts.join('\n');
|
|
168
168
|
}
|
|
169
|
+
// ---------------------------------------------
|
|
170
|
+
// マスキング用ラベル / 補助 (Issue #104 redact 用)
|
|
171
|
+
// ---------------------------------------------
|
|
172
|
+
//
|
|
173
|
+
// redact() が伏せ字に使う置換ラベル。pii-masker.ts が従来使っていた表記を保持し
|
|
174
|
+
// (ダッシュボード / 既存テストとの整合)、未定義の ruleId は `[MASKED_<RULEID>]` に倒す。
|
|
175
|
+
const REDACTION_LABELS = {
|
|
176
|
+
aws_access_key: '[MASKED_AWS_KEY]',
|
|
177
|
+
gcp_api_key: '[MASKED_GCP_KEY]',
|
|
178
|
+
bearer_token: 'Bearer [MASKED_TOKEN]',
|
|
179
|
+
private_key_block: '[MASKED_PRIVATE_KEY]',
|
|
180
|
+
high_entropy: '[MASKED_SECRET]',
|
|
181
|
+
credit_card: '[MASKED_CREDIT_CARD]',
|
|
182
|
+
jp_mynumber: '[MASKED_MYNUMBER]',
|
|
183
|
+
};
|
|
184
|
+
function redactionLabel(ruleId) {
|
|
185
|
+
return REDACTION_LABELS[ruleId] ?? `[MASKED_${ruleId.toUpperCase()}]`;
|
|
186
|
+
}
|
|
187
|
+
/** start 昇順 → 長い順に整列し、貪欲に非重複なスパンだけ残す (redact 用)。 */
|
|
188
|
+
function selectNonOverlapping(spans) {
|
|
189
|
+
spans.sort((a, b) => a.start - b.start || b.end - b.start - (a.end - a.start));
|
|
190
|
+
const out = [];
|
|
191
|
+
let lastEnd = -1;
|
|
192
|
+
for (const s of spans) {
|
|
193
|
+
if (s.start >= lastEnd) {
|
|
194
|
+
out.push(s);
|
|
195
|
+
lastEnd = s.end;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return out;
|
|
199
|
+
}
|
|
200
|
+
// 秘密鍵 (PEM) は検出ルール (private_key_block) が BEGIN 行のみを拾うのに対し、
|
|
201
|
+
// マスキングでは鍵本体ごと伏せないと平文が残る (#104)。BEGIN〜END を一括で伏せる。
|
|
202
|
+
const PEM_BLOCK = /-----BEGIN (?:RSA |EC |OPENSSH |DSA |PGP )?PRIVATE KEY-----[\s\S]*?-----END (?:RSA |EC |OPENSSH |DSA |PGP )?PRIVATE KEY-----/g;
|
|
169
203
|
// 都道府県 (住所検出用)。
|
|
170
204
|
const PREFECTURES = '北海道|青森県|岩手県|宮城県|秋田県|山形県|福島県|茨城県|栃木県|群馬県|埼玉県|千葉県|東京都|神奈川県|新潟県|富山県|石川県|福井県|山梨県|長野県|岐阜県|静岡県|愛知県|三重県|滋賀県|京都府|大阪府|兵庫県|奈良県|和歌山県|鳥取県|島根県|岡山県|広島県|山口県|徳島県|香川県|愛媛県|高知県|福岡県|佐賀県|長崎県|熊本県|大分県|宮崎県|鹿児島県|沖縄県';
|
|
171
205
|
// 全ルールは正規化済みテキスト (NFKC + 漢数字寄せ) に対して実行する。
|
|
@@ -395,6 +429,88 @@ class SecretDetector {
|
|
|
395
429
|
metas.sort((a, b) => SEVERITY_RANK[a.severity] - SEVERITY_RANK[b.severity]);
|
|
396
430
|
return metas.slice(0, exports.MAX_DETECTIONS_PER_ENTRY);
|
|
397
431
|
}
|
|
432
|
+
/**
|
|
433
|
+
* テキストから「秘密情報」を伏せ字へ置換して返す (Issue #104)。
|
|
434
|
+
*
|
|
435
|
+
* 検出 (detect) と同じルール集合を流用することで、**検出できるものは必ずマスクできる**
|
|
436
|
+
* を保証し、検出器とマスカのドリフトを防ぐ。マスク対象は:
|
|
437
|
+
* - category==='secret' の全ルール (API キー / トークン / 秘密鍵 / JWT / 高エントロピー)
|
|
438
|
+
* - severity==='high' のルール (クレジットカード / マイナンバー — 検査数字で誤検知が低い)
|
|
439
|
+
* - 秘密鍵は BEGIN〜END を一括 (検出ルールは BEGIN 行のみのため本体が残るのを防ぐ)
|
|
440
|
+
*
|
|
441
|
+
* email や中低重大度の一般 PII (電話 / 住所 等) は対象外 — それらはマスカ側のトグル
|
|
442
|
+
* (maskEmails) や組織ルールが扱う。生テキストに対して動作する (置換位置を保つため
|
|
443
|
+
* 正規化はしない。全角の難読化対策は将来課題)。
|
|
444
|
+
*
|
|
445
|
+
* @returns 置換後テキストと ruleId ごとの置換件数 (MaskStat 連携用)。
|
|
446
|
+
*/
|
|
447
|
+
redact(text) {
|
|
448
|
+
if (!text)
|
|
449
|
+
return { text, counts: {} };
|
|
450
|
+
// --- 確定ルール (PEM 全ブロック + secret 全カテゴリ + high severity) ---
|
|
451
|
+
const specific = [];
|
|
452
|
+
PEM_BLOCK.lastIndex = 0;
|
|
453
|
+
let pm;
|
|
454
|
+
while ((pm = PEM_BLOCK.exec(text)) !== null) {
|
|
455
|
+
specific.push({ start: pm.index, end: pm.index + pm[0].length, ruleId: 'private_key_block' });
|
|
456
|
+
if (pm.index === PEM_BLOCK.lastIndex)
|
|
457
|
+
PEM_BLOCK.lastIndex++;
|
|
458
|
+
}
|
|
459
|
+
for (const rule of this.rules) {
|
|
460
|
+
if (!(rule.category === 'secret' || rule.severity === 'high'))
|
|
461
|
+
continue;
|
|
462
|
+
rule.regex.lastIndex = 0;
|
|
463
|
+
let m;
|
|
464
|
+
while ((m = rule.regex.exec(text)) !== null) {
|
|
465
|
+
const matched = m[0];
|
|
466
|
+
if (m.index === rule.regex.lastIndex)
|
|
467
|
+
rule.regex.lastIndex++;
|
|
468
|
+
if (rule.validate && !rule.validate(matched))
|
|
469
|
+
continue;
|
|
470
|
+
specific.push({ start: m.index, end: m.index + matched.length, ruleId: rule.ruleId });
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
// 確定ルールを貪欲に非重複選択 (start 昇順 → 長い順)。
|
|
474
|
+
const chosen = selectNonOverlapping(specific);
|
|
475
|
+
// --- 高エントロピー (パターン外のランダム秘密) ---
|
|
476
|
+
// 既定では無効 (マスカは enableEntropy=false で構築する)。理由: エントロピー基準は
|
|
477
|
+
// 正当な識別子 (job-id 等) や base64 断片まで潰し、保存本文を破壊し得るため、
|
|
478
|
+
// マスキングは確定ルールに限定する。検出 (detect) では従来どおり高エントロピーを
|
|
479
|
+
// フラグする。有効化時も確定ルールを優先し、空き領域のみ伏せる。
|
|
480
|
+
if (this.enableEntropy) {
|
|
481
|
+
const entropy = [];
|
|
482
|
+
const tokenRe = new RegExp(`[A-Za-z0-9+/=_-]{${ENTROPY_MIN_LENGTH},}`, 'g');
|
|
483
|
+
let tm;
|
|
484
|
+
while ((tm = tokenRe.exec(text)) !== null) {
|
|
485
|
+
const token = tm[0];
|
|
486
|
+
if (/[/\\]/.test(token))
|
|
487
|
+
continue;
|
|
488
|
+
if (!(/[A-Za-z]/.test(token) && /\d/.test(token)))
|
|
489
|
+
continue;
|
|
490
|
+
if (shannonEntropy(token) < ENTROPY_THRESHOLD)
|
|
491
|
+
continue;
|
|
492
|
+
const start = tm.index;
|
|
493
|
+
const end = start + token.length;
|
|
494
|
+
// 確定スパンと重なるものは捨てる (specific ラベルを優先)。
|
|
495
|
+
if (chosen.some((c) => start < c.end && c.start < end))
|
|
496
|
+
continue;
|
|
497
|
+
entropy.push({ start, end, ruleId: 'high_entropy' });
|
|
498
|
+
}
|
|
499
|
+
chosen.push(...selectNonOverlapping(entropy));
|
|
500
|
+
}
|
|
501
|
+
if (chosen.length === 0)
|
|
502
|
+
return { text, counts: {} };
|
|
503
|
+
chosen.sort((a, b) => a.start - b.start);
|
|
504
|
+
// 右端から置換してインデックスのずれを防ぐ。
|
|
505
|
+
const counts = {};
|
|
506
|
+
let out = text;
|
|
507
|
+
for (let i = chosen.length - 1; i >= 0; i--) {
|
|
508
|
+
const s = chosen[i];
|
|
509
|
+
out = out.slice(0, s.start) + redactionLabel(s.ruleId) + out.slice(s.end);
|
|
510
|
+
counts[s.ruleId] = (counts[s.ruleId] ?? 0) + 1;
|
|
511
|
+
}
|
|
512
|
+
return { text: out, counts };
|
|
513
|
+
}
|
|
398
514
|
}
|
|
399
515
|
exports.SecretDetector = SecretDetector;
|
|
400
516
|
//# sourceMappingURL=secret-detector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-detector.js","sourceRoot":"","sources":["../src/secret-detector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"secret-detector.js","sourceRoot":"","sources":["../src/secret-detector.ts"],"names":[],"mappings":";;;AA6DA,sDAIC;AAOD,8BAeC;AAGD,0CAcC;AAGD,wDAcC;AAGD,wCAUC;AAaD,8BAQC;AAGD,8BAEC;AAOD,4BAEC;AAOD,wCAgBC;AAhMD,mCAA4D;AAmB5D,4DAA4D;AAC/C,QAAA,wBAAwB,GAAG,EAAE,CAAA;AAsB1C,gDAAgD;AAChD,gCAAgC;AAChC,gDAAgD;AAChD,mDAAmD;AACnD,2CAA2C;AAC3C,MAAM,YAAY,GAA2B;IAC3C,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;CACP,CAAA;AAED,SAAgB,qBAAqB,CAAC,IAAY;IAChD,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAC9B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5D,OAAO,CAAC,CAAA;AACV,CAAC;AAED,gDAAgD;AAChD,gBAAgB;AAChB,gDAAgD;AAEhD,uCAAuC;AACvC,SAAgB,SAAS,CAAC,KAAa;IACrC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACvC,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,KAAK,CAAA;IAC1D,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,GAAG,GAAG,KAAK,CAAA;IACf,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACzB,IAAI,GAAG,EAAE,CAAC;YACR,CAAC,IAAI,CAAC,CAAA;YACN,IAAI,CAAC,GAAG,CAAC;gBAAE,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;QACD,GAAG,IAAI,CAAC,CAAA;QACR,GAAG,GAAG,CAAC,GAAG,CAAA;IACZ,CAAC;IACD,OAAO,GAAG,GAAG,EAAE,KAAK,CAAC,CAAA;AACvB,CAAC;AAED,uCAAuC;AACvC,SAAgB,eAAe,CAAC,KAAa;IAC3C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACrC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3B,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA,CAAC,iBAAiB;QACjD,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACjC,GAAG,IAAI,EAAE,GAAG,EAAE,CAAA;IAChB,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAA;IAClB,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACpC,OAAO,QAAQ,KAAK,KAAK,CAAA;AAC3B,CAAC;AAED,6CAA6C;AAC7C,SAAgB,sBAAsB,CAAC,KAAa;IAClD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAC,OAAO;IAC/B,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9B,GAAG,IAAI,EAAE,GAAG,EAAE,CAAA;IAChB,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;IACjB,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;IACtB,OAAO,QAAQ,KAAK,KAAK,CAAA;AAC3B,CAAC;AAED,yDAAyD;AACzD,SAAgB,cAAc,CAAC,CAAS;IACtC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAA;IAC5B,MAAM,IAAI,GAA2B,EAAE,CAAA;IACvC,KAAK,MAAM,EAAE,IAAI,CAAC;QAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IAClD,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;QAC5B,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,6CAA6C;AAC7C,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAC7B,MAAM,iBAAiB,GAAG,GAAG,CAAA,CAAC,YAAY;AAE1C;;;;;;GAMG;AACH,SAAgB,SAAS,CAAC,KAAa,EAAE,QAA4B;IACnE,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IACtB,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;QAC3D,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1B,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IACtE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAC1C,CAAC;AAED,oDAAoD;AACpD,SAAgB,SAAS,CAAC,KAAa;IACrC,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACtE,CAAC;AAED;;;;GAIG;AACH,SAAgB,QAAQ,CAAC,KAAa,EAAE,MAAc;IACpD,OAAO,IAAA,mBAAU,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAC9E,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,KAAc,EAAE,QAAQ,GAAG,OAAO;IAC/D,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,MAAM,IAAI,GAAG,CAAC,CAAU,EAAQ,EAAE;QAChC,IAAI,KAAK,IAAI,QAAQ;YAAE,OAAM;QAC7B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACb,KAAK,IAAI,CAAC,CAAC,MAAM,CAAA;QACnB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,KAAK,MAAM,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC5B,CAAC;aAAM,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAA4B,CAAC;gBAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QACtE,CAAC;IACH,CAAC,CAAA;IACD,IAAI,CAAC,KAAK,CAAC,CAAA;IACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAcD,gDAAgD;AAChD,uCAAuC;AACvC,gDAAgD;AAChD,EAAE;AACF,qDAAqD;AACrD,+DAA+D;AAE/D,MAAM,gBAAgB,GAA2B;IAC/C,cAAc,EAAE,kBAAkB;IAClC,WAAW,EAAE,kBAAkB;IAC/B,YAAY,EAAE,uBAAuB;IACrC,iBAAiB,EAAE,sBAAsB;IACzC,YAAY,EAAE,iBAAiB;IAC/B,WAAW,EAAE,sBAAsB;IACnC,WAAW,EAAE,mBAAmB;CACjC,CAAA;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,WAAW,EAAE,GAAG,CAAA;AACvE,CAAC;AAED,oDAAoD;AACpD,SAAS,oBAAoB,CAA2C,KAAU;IAChF,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9E,MAAM,GAAG,GAAQ,EAAE,CAAA;IACnB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAA;IAChB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACX,OAAO,GAAG,CAAC,CAAC,GAAG,CAAA;QACjB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,2DAA2D;AAC3D,mDAAmD;AACnD,MAAM,SAAS,GACb,+HAA+H,CAAA;AAEjI,gBAAgB;AAChB,MAAM,WAAW,GACf,gMAAgM,CAAA;AAElM,0CAA0C;AAC1C,MAAM,aAAa,GAAgB;IACjC,iBAAiB;IACjB,uEAAuE;IACvE;QACE,MAAM,EAAE,eAAe;QACvB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,+CAA+C;KACvD;IACD;QACE,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,wCAAwC;KAChD;IACD;QACE,MAAM,EAAE,cAAc;QACtB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,4BAA4B;KACpC;IACD;QACE,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,+BAA+B;KACvC;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,uBAAuB;KAC/B;IACD;QACE,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,4BAA4B;KACpC;IACD;QACE,MAAM,EAAE,mBAAmB;QAC3B,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,8DAA8D;KACtE;IACD;QACE,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,oEAAoE;KAC5E;IACD;QACE,MAAM,EAAE,cAAc;QACtB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,+BAA+B;KACvC;IAED,mBAAmB;IACnB;QACE,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,oDAAoD;KAC5D;IACD;QACE,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,MAAM;QAChB,yCAAyC;QACzC,KAAK,EAAE,2BAA2B;QAClC,QAAQ,EAAE,SAAS;KACpB;IAED,sCAAsC;IACtC;QACE,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,kCAAkC;QACzC,QAAQ,EAAE,eAAe;KAC1B;IACD;QACE,MAAM,EAAE,qBAAqB;QAC7B,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,sBAAsB;KACjC;IACD;QACE,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,QAAQ;QAClB,uDAAuD;QACvD,KAAK,EAAE,+FAA+F;KACvG;IACD;QACE,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,KAAK;QACf,wCAAwC;QACxC,KAAK,EAAE,0CAA0C;KAClD;IACD;QACE,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,IAAI,MAAM,CACf,MAAM,WAAW,0EAA0E,EAC3F,GAAG,CACJ;KACF;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,+EAA+E;KACvF;CACF,CAAA;AAuBD,MAAM,aAAa,GAAsC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;AAEvF,MAAa,cAAc;IACR,KAAK,CAAa;IAClB,aAAa,CAAS;IACtB,UAAU,CAAQ;IAEnC,YAAY,OAA8B,EAAE;QAC1C,MAAM,MAAM,GAAgB,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;aACtD,GAAG,CAAC,CAAC,CAAC,EAAoB,EAAE;YAC3B,IAAI,CAAC;gBACH,OAAO;oBACL,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,QAAQ,EAAE,QAAQ;oBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,QAAQ;oBAChC,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC;iBAClC,CAAA;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,iCAAiC;gBACjC,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAkB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAA;QAC5C,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,MAAM,CAAC,CAAA;QAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAA;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACtE,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAA;QACpB,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAUxC,MAAM,OAAO,GAAU,EAAE,CAAA;QAEzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAA;YACxB,IAAI,CAAyB,CAAA;YAC7B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC5C,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;gBACpB,kBAAkB;gBAClB,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS;oBAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA;gBAC5D,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,SAAQ;gBACtD,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,KAAK,EAAE,OAAO;oBACd,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM;iBAC9B,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,yDAAyD;QACzD,uCAAuC;QACvC,2CAA2C;QAC3C,MAAM,IAAI,GAAU,EAAE,CAAA;QACtB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,GAAG,GACP,CAAC,CAAC,QAAQ,KAAK,QAAQ;gBACvB,IAAI,CAAC,IAAI,CACP,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CACzF,CAAA;YACH,IAAI,CAAC,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxB,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAE9C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACrD,IAAI,KAAK,CAAC,MAAM,GAAG,kBAAkB;oBAAE,SAAQ;gBAC/C,mCAAmC;gBACnC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAAE,SAAQ;gBAC3D,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,iBAAiB;oBAAE,SAAQ;gBACvD,+BAA+B;gBAC/B,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,SAAQ;gBAC/E,6CAA6C;gBAC7C,IAAI,CAAC,IAAI,CAAC;oBACR,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,QAAQ;oBAClB,QAAQ,EAAE,QAAQ;oBAClB,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,CAAC,CAAC;oBACT,GAAG,EAAE,CAAC,CAAC;iBACR,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0C,CAAA;QAChE,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,CAAA;YACvC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC3B,IAAI,GAAG;gBAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;;gBAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACrD,CAAC;QACD,MAAM,KAAK,GAAoB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5E,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC;YACjD,SAAS,EACP,GAAG,CAAC,QAAQ,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;gBACjD,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;gBACtC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAC3B,CAAC,CAAC,CAAA;QAEH,sDAAsD;QACtD,+DAA+D;QAC/D,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC3E,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,gCAAwB,CAAC,CAAA;IACjD,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;QAOtC,2DAA2D;QAC3D,MAAM,QAAQ,GAAW,EAAE,CAAA;QAC3B,SAAS,CAAC,SAAS,GAAG,CAAC,CAAA;QACvB,IAAI,EAA0B,CAAA;QAC9B,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAA;YAC7F,IAAI,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,SAAS;gBAAE,SAAS,CAAC,SAAS,EAAE,CAAA;QAC7D,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC;gBAAE,SAAQ;YACvE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAA;YACxB,IAAI,CAAyB,CAAA;YAC7B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC5C,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;gBACpB,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS;oBAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA;gBAC5D,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,SAAQ;gBACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YACvF,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;QAE7C,iCAAiC;QACjC,wDAAwD;QACxD,kDAAkD;QAClD,+CAA+C;QAC/C,kCAAkC;QAClC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,OAAO,GAAW,EAAE,CAAA;YAC1B,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,oBAAoB,kBAAkB,IAAI,EAAE,GAAG,CAAC,CAAA;YAC3E,IAAI,EAA0B,CAAA;YAC9B,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC1C,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;gBACnB,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;oBAAE,SAAQ;gBACjC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAAE,SAAQ;gBAC3D,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,iBAAiB;oBAAE,SAAQ;gBACvD,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAA;gBACtB,MAAM,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAA;gBAChC,qCAAqC;gBACrC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;oBAAE,SAAQ;gBAChE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAA;YACtD,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAA;QAC/C,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;QACpD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;QAExC,wBAAwB;QACxB,MAAM,MAAM,GAA2B,EAAE,CAAA;QACzC,IAAI,GAAG,GAAG,IAAI,CAAA;QACd,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YACnB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YACzE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;IAC9B,CAAC;CACF;AA5MD,wCA4MC"}
|