easyoref 1.13.1 → 1.14.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/dist/agent/clarify.d.ts +1 -0
- package/dist/agent/clarify.d.ts.map +1 -1
- package/dist/agent/clarify.js +20 -0
- package/dist/agent/clarify.js.map +1 -1
- package/dist/agent/graph.d.ts +95 -34
- package/dist/agent/graph.d.ts.map +1 -1
- package/dist/agent/graph.js +622 -283
- package/dist/agent/graph.js.map +1 -1
- package/dist/agent/store.d.ts +5 -1
- package/dist/agent/store.d.ts.map +1 -1
- package/dist/agent/store.js +23 -2
- package/dist/agent/store.js.map +1 -1
- package/dist/agent/types.d.ts +61 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js +24 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/bot.js +2 -2
- package/dist/bot.js.map +1 -1
- package/package.json +1 -1
package/dist/agent/clarify.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clarify.d.ts","sourceRoot":"","sources":["../../src/agent/clarify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAaH,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAInE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,mEAAmE;IACnE,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,SAAS,EAAE,OAAO,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"clarify.d.ts","sourceRoot":"","sources":["../../src/agent/clarify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAaH,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAInE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,mEAAmE;IACnE,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,SAAS,EAAE,OAAO,CAAC;CACpB;AAwHD,wBAAsB,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAqN5E"}
|
package/dist/agent/clarify.js
CHANGED
|
@@ -40,11 +40,20 @@ low confidence or contradictions. You have access to 4 tools:
|
|
|
40
40
|
4. betterstack_log — query recent EasyOref logs from Better Stack.
|
|
41
41
|
See what the enrichment pipeline did recently (extractions, confidence, errors).
|
|
42
42
|
|
|
43
|
+
CRITICAL — TIME VALIDATION:
|
|
44
|
+
You receive the alert time (Israel timezone). Channel posts may be about PREVIOUS
|
|
45
|
+
attacks or ongoing military operations (not THIS specific alert). When in doubt:
|
|
46
|
+
- Use alert_history to verify if an alert really occurred at the claimed time/area.
|
|
47
|
+
- If a post discusses events from hours ago, it is STALE — ignore it.
|
|
48
|
+
- If the voted result has a country_origin that seems unlikely for the alert region
|
|
49
|
+
(e.g., "Lebanon" for central Israel) — verify with alert_history and fresh sources.
|
|
50
|
+
|
|
43
51
|
You decide whether tools would help:
|
|
44
52
|
- If contradictions can be resolved with existing data → respond immediately, no tools.
|
|
45
53
|
- If an authoritative source (IDF, N12) could settle a disagreement → fetch 1-4 posts.
|
|
46
54
|
- If you need to verify whether an alert occurred → check alert_history.
|
|
47
55
|
- If news mentions a city/region and you're unsure if it's relevant → use resolve_area.
|
|
56
|
+
- If the attack origin seems stale (about a previous event) → use alert_history to verify.
|
|
48
57
|
- You can call 0, 1, 2, or 3+ tools. Your choice.
|
|
49
58
|
|
|
50
59
|
When done (with or without tools), respond with ONLY valid JSON (no markdown):
|
|
@@ -55,6 +64,8 @@ When done (with or without tools), respond with ONLY valid JSON (no markdown):
|
|
|
55
64
|
"rocket_count": int|null,
|
|
56
65
|
"intercepted": int|null,
|
|
57
66
|
"hits_confirmed": int|null,
|
|
67
|
+
"casualties": int|null,
|
|
68
|
+
"injuries": int|null,
|
|
58
69
|
"is_cassette": bool|null
|
|
59
70
|
},
|
|
60
71
|
"confidence_boost": float, // 0-0.3 (0 if no new info)
|
|
@@ -108,8 +119,14 @@ export async function runClarify(input) {
|
|
|
108
119
|
const llmWithTools = llm.bindTools(clarifyTools);
|
|
109
120
|
const toolMap = new Map(clarifyTools.map((t) => [t.name, t]));
|
|
110
121
|
const contradictions = describeContradictions(input.extractions, input.votedResult);
|
|
122
|
+
const alertTimeIL = new Date(input.alertTs).toLocaleTimeString("he-IL", {
|
|
123
|
+
hour: "2-digit",
|
|
124
|
+
minute: "2-digit",
|
|
125
|
+
timeZone: "Asia/Jerusalem",
|
|
126
|
+
});
|
|
111
127
|
const userPrompt = `Alert region: ${input.alertAreas.join(", ")}\n` +
|
|
112
128
|
`Alert type: ${input.alertType}\n` +
|
|
129
|
+
`Alert time: ${alertTimeIL} (Israel)\n` +
|
|
113
130
|
`Message ID: ${input.messageId}\n\n` +
|
|
114
131
|
`Current voted result:\n` +
|
|
115
132
|
JSON.stringify(input.votedResult, null, 2) +
|
|
@@ -224,6 +241,7 @@ export async function runClarify(input) {
|
|
|
224
241
|
region_relevance: 1.0,
|
|
225
242
|
source_trust: 0.85,
|
|
226
243
|
tone: "calm",
|
|
244
|
+
time_relevance: 1.0,
|
|
227
245
|
country_origin: findings.new_data.country_origin ?? null,
|
|
228
246
|
rocket_count: findings.new_data.rocket_count ?? null,
|
|
229
247
|
is_cassette: findings.new_data.is_cassette ?? null,
|
|
@@ -237,6 +255,8 @@ export async function runClarify(input) {
|
|
|
237
255
|
open_area_impact_qual: null,
|
|
238
256
|
open_area_impact_qual_num: null,
|
|
239
257
|
hits_confirmed: findings.new_data.hits_confirmed ?? null,
|
|
258
|
+
casualties: findings.new_data.casualties ?? null,
|
|
259
|
+
injuries: findings.new_data.injuries ?? null,
|
|
240
260
|
eta_refined_minutes: null,
|
|
241
261
|
confidence: Math.min(0.9, (input.votedResult.confidence ?? 0.5) +
|
|
242
262
|
(findings.confidence_boost ?? 0.15)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clarify.js","sourceRoot":"","sources":["../../src/agent/clarify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EACL,SAAS,IAAI,cAAc,EAC3B,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,eAAe,EAAoB,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"clarify.js","sourceRoot":"","sources":["../../src/agent/clarify.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/graph.d.ts
CHANGED
|
@@ -1,41 +1,79 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* LangGraph.js enrichment pipeline —
|
|
2
|
+
* LangGraph.js enrichment pipeline — phase-aware, time-validated.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* KEY DESIGN PRINCIPLES:
|
|
5
|
+
* 1. TIME IS KING — every post is validated against the alert time window.
|
|
6
|
+
* LLM receives alert time + post time and scores time_relevance.
|
|
7
|
+
* Posts about previous/different attacks are rejected.
|
|
8
|
+
* 2. PHASE-AWARE — each phase extracts only what's relevant:
|
|
9
|
+
* - early_warning: origin, ETA, rocket count, cassette
|
|
10
|
+
* - siren: carries early data + adds interception, impacts
|
|
11
|
+
* - resolved: carries all + adds casualties, injuries, final stats
|
|
12
|
+
* 3. CARRY-FORWARD — results persist in Redis (EnrichmentData).
|
|
13
|
+
* Each phase inherits previous phase's findings.
|
|
14
|
+
* 4. INLINE CITATIONS — no superscripts, no footer sources.
|
|
15
|
+
* Format: [[1]](url) right after each data point.
|
|
16
|
+
* 5. DEDUP EDITS — hash-based check prevents "message not modified" spam.
|
|
6
17
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
18
|
+
* Pipeline:
|
|
19
|
+
* preFilter → extractAndValidate → postFilter → vote → [clarify] → editMessage
|
|
20
|
+
*/
|
|
21
|
+
import { ChatOpenAI } from "@langchain/openai";
|
|
22
|
+
import type { ChannelPost } from "./store.js";
|
|
23
|
+
import type { AlertType, CitedSource, EnrichmentData, InlineCite, ValidatedExtraction, VotedResult } from "./types.js";
|
|
24
|
+
declare const AgentState: import("@langchain/langgraph").AnnotationRoot<{
|
|
25
|
+
alertId: import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
|
|
26
|
+
alertTs: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
|
|
27
|
+
alertType: import("@langchain/langgraph").BaseChannel<AlertType, AlertType | import("@langchain/langgraph").OverwriteValue<AlertType>, unknown>;
|
|
28
|
+
alertAreas: import("@langchain/langgraph").BaseChannel<string[], string[] | import("@langchain/langgraph").OverwriteValue<string[]>, unknown>;
|
|
29
|
+
chatId: import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
|
|
30
|
+
messageId: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
|
|
31
|
+
isCaption: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
|
|
32
|
+
currentText: import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
|
|
33
|
+
channelPosts: import("@langchain/langgraph").BaseChannel<ChannelPost[], ChannelPost[] | import("@langchain/langgraph").OverwriteValue<ChannelPost[]>, unknown>;
|
|
34
|
+
filteredPosts: import("@langchain/langgraph").BaseChannel<ChannelPost[], ChannelPost[] | import("@langchain/langgraph").OverwriteValue<ChannelPost[]>, unknown>;
|
|
35
|
+
extractions: import("@langchain/langgraph").BaseChannel<ValidatedExtraction[], ValidatedExtraction[] | import("@langchain/langgraph").OverwriteValue<ValidatedExtraction[]>, unknown>;
|
|
36
|
+
votedResult: import("@langchain/langgraph").BaseChannel<VotedResult | null, VotedResult | import("@langchain/langgraph").OverwriteValue<VotedResult | null> | null, unknown>;
|
|
37
|
+
/** Tracks whether clarify has already run (prevents infinite loop) */
|
|
38
|
+
clarifyAttempted: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
|
|
39
|
+
/** Cross-phase enrichment data loaded at start */
|
|
40
|
+
previousEnrichment: import("@langchain/langgraph").BaseChannel<EnrichmentData, EnrichmentData | import("@langchain/langgraph").OverwriteValue<EnrichmentData>, unknown>;
|
|
41
|
+
/** Session start timestamp for time window calculations */
|
|
42
|
+
sessionStartTs: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
|
|
43
|
+
/** Phase start timestamp */
|
|
44
|
+
phaseStartTs: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
|
|
45
|
+
}>;
|
|
46
|
+
type AgentStateType = typeof AgentState.State;
|
|
47
|
+
declare function getLLM(): ChatOpenAI;
|
|
48
|
+
declare function buildRegionKeywords(): string[];
|
|
49
|
+
/** Format timestamp as HH:MM Israel time */
|
|
50
|
+
declare function toIsraelTime(ts: number): string;
|
|
51
|
+
/** MD5 hash for edit dedup */
|
|
52
|
+
declare function textHash(text: string): string;
|
|
53
|
+
/** Phase-specific extraction instructions */
|
|
54
|
+
declare function getPhaseInstructions(alertType: AlertType): string;
|
|
55
|
+
declare function postFilter(state: AgentStateType): Partial<AgentStateType>;
|
|
56
|
+
declare function vote(state: AgentStateType): Partial<AgentStateType>;
|
|
57
|
+
/** Format inline citations: [[1]](url), [[2]](url) */
|
|
58
|
+
declare function inlineCites(indices: number[], citedSources: CitedSource[]): string;
|
|
59
|
+
/** Get InlineCite[] from citation indices */
|
|
60
|
+
declare function extractCites(indices: number[], citedSources: CitedSource[]): InlineCite[];
|
|
61
|
+
/** Format inline citations from InlineCite[] (for carry-forward data) */
|
|
62
|
+
declare function inlineCitesFromData(cites: InlineCite[]): string;
|
|
63
|
+
/**
|
|
64
|
+
* Build enrichment data from current vote + previous enrichment (carry-forward).
|
|
65
|
+
* Returns updated EnrichmentData for Redis persistence.
|
|
66
|
+
*/
|
|
67
|
+
declare function buildEnrichmentFromVote(r: VotedResult, prev: EnrichmentData, alertType: AlertType, alertTs: number): EnrichmentData;
|
|
68
|
+
/**
|
|
69
|
+
* Build the enriched message text from current message + enrichment data.
|
|
70
|
+
* Uses inline [[1]](url) citations. No superscripts. No footer sources.
|
|
71
|
+
*/
|
|
72
|
+
declare function buildEnrichedMessage(currentText: string, alertType: AlertType, alertTs: number, enrichment: EnrichmentData): string;
|
|
73
|
+
/**
|
|
74
|
+
* Insert a line before the time line (last "Время" / "Time" / "שעת" line).
|
|
37
75
|
*/
|
|
38
|
-
|
|
76
|
+
declare function insertBeforeTimeLine(text: string, line: string): string;
|
|
39
77
|
export interface RunEnrichmentInput {
|
|
40
78
|
alertId: string;
|
|
41
79
|
alertTs: number;
|
|
@@ -47,4 +85,27 @@ export interface RunEnrichmentInput {
|
|
|
47
85
|
currentText: string;
|
|
48
86
|
}
|
|
49
87
|
export declare function runEnrichment(input: RunEnrichmentInput): Promise<void>;
|
|
88
|
+
export declare const _test: {
|
|
89
|
+
readonly getLLM: typeof getLLM;
|
|
90
|
+
readonly buildRegionKeywords: typeof buildRegionKeywords;
|
|
91
|
+
readonly LAUNCH_KEYWORDS: string[];
|
|
92
|
+
readonly TIME_WINDOW_MS: Record<AlertType, number>;
|
|
93
|
+
readonly toIsraelTime: typeof toIsraelTime;
|
|
94
|
+
readonly textHash: typeof textHash;
|
|
95
|
+
readonly postFilter: typeof postFilter;
|
|
96
|
+
readonly vote: typeof vote;
|
|
97
|
+
readonly buildEnrichmentFromVote: typeof buildEnrichmentFromVote;
|
|
98
|
+
readonly buildEnrichedMessage: typeof buildEnrichedMessage;
|
|
99
|
+
readonly insertBeforeTimeLine: typeof insertBeforeTimeLine;
|
|
100
|
+
readonly inlineCites: typeof inlineCites;
|
|
101
|
+
readonly inlineCitesFromData: typeof inlineCitesFromData;
|
|
102
|
+
readonly extractCites: typeof extractCites;
|
|
103
|
+
readonly COUNTRY_RU: Record<string, string>;
|
|
104
|
+
readonly SYSTEM_PROMPT_BASE: "You analyze Telegram channel messages about a missile/rocket attack on Israel.\nYour job: extract factual data, assess quality, AND validate temporal relevance.\n\nCRITICAL — TIME VALIDATION:\nYou will receive the alert time and the post time. You MUST determine if this post\nis about the CURRENT attack or about a previous/different event.\n- If post discusses events clearly BEFORE the alert time → time_relevance=0\n- If post is generic military news not specific to this attack → time_relevance=0.2\n- If post discusses the current attack → time_relevance=1.0\n- If uncertain → time_relevance=0.5 (the system will use alert_history to verify)\n\nReturn ONLY valid JSON (no markdown, no explanation):\n{\n \"region_relevance\": float, // 0–1: does this message discuss the specified alert region?\n \"source_trust\": float, // 0–1: factual reporting (1.0) vs unverified rumors/panic (0.0)\n \"tone\": \"calm\"|\"neutral\"|\"alarmist\",\n \"time_relevance\": float, // 0–1: is this post about the CURRENT attack? (see rules above)\n \"country_origin\": string|null, // \"Iran\",\"Yemen\",\"Lebanon\",\"Gaza\",\"Iraq\",\"Syria\" or null\n \"rocket_count\": int|null,\n \"is_cassette\": bool|null,\n \"intercepted\": int|null,\n \"intercepted_qual\": \"all\"|\"most\"|\"many\"|\"few\"|\"exists\"|\"none\"|\"more_than\"|\"less_than\"|null,\n \"intercepted_qual_num\": int|null,\n \"sea_impact\": int|null,\n \"sea_impact_qual\": \"all\"|\"most\"|\"many\"|\"few\"|\"exists\"|\"none\"|\"more_than\"|\"less_than\"|null,\n \"sea_impact_qual_num\": int|null,\n \"open_area_impact\": int|null,\n \"open_area_impact_qual\": \"all\"|\"most\"|\"many\"|\"few\"|\"exists\"|\"none\"|\"more_than\"|\"less_than\"|null,\n \"open_area_impact_qual_num\": int|null,\n \"hits_confirmed\": int|null,\n \"casualties\": int|null,\n \"injuries\": int|null,\n \"eta_refined_minutes\": int|null,\n \"confidence\": float\n}\n\nRules:\n- If unrelated to the alert region, set region_relevance=0 and all data fields to null.\n- If message is speculative/unconfirmed rumor, set source_trust < 0.4.\n- If message uses excessive caps, exclamation marks, panic language → tone=\"alarmist\".\n- Only extract concrete numbers explicitly stated in the text. Never guess.\n- *_qual fields: use ONLY when NO exact count is given. If exact number present, set *_qual=null.\n- \"none\" qual is only valid if explicitly stated (e.g., \"все перехвачены\", \"не упало в море\").\n- For IDF (@idf_telegram) posts about ongoing operations (not this specific attack) → time_relevance=0.\n- LANGUAGE NEUTRALITY: Posts may be in Hebrew, Russian, Arabic, or English. The language of the post\n MUST NOT affect source_trust or confidence. Russian-language Israeli channels are equally reliable\n and often break news faster than Hebrew ones. Judge ONLY by factual content and tone.";
|
|
105
|
+
readonly getPhaseInstructions: typeof getPhaseInstructions;
|
|
106
|
+
readonly SKIP: 0.6;
|
|
107
|
+
readonly UNCERTAIN: 0.75;
|
|
108
|
+
readonly CERTAIN: 0.95;
|
|
109
|
+
};
|
|
110
|
+
export {};
|
|
50
111
|
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/agent/graph.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/agent/graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAM/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO9C,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,cAAc,EAEd,UAAU,EAEV,mBAAmB,EACnB,WAAW,EACZ,MAAM,YAAY,CAAC;AAKpB,QAAA,MAAM,UAAU;;;;;;;;;;;;;IAad,sEAAsE;;IAEtE,kDAAkD;;IAElD,2DAA2D;;IAE3D,4BAA4B;;EAE5B,CAAC;AAEH,KAAK,cAAc,GAAG,OAAO,UAAU,CAAC,KAAK,CAAC;AAI9C,iBAAS,MAAM,IAAI,UAAU,CAc5B;AAID,iBAAS,mBAAmB,IAAI,MAAM,EAAE,CAiCvC;AAsCD,4CAA4C;AAC5C,iBAAS,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMxC;AAED,8BAA8B;AAC9B,iBAAS,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtC;AA6GD,6CAA6C;AAC7C,iBAAS,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAmB1D;AA4KD,iBAAS,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAoDlE;AAMD,iBAAS,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAiP5D;AAiBD,sDAAsD;AACtD,iBAAS,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CAS3E;AAED,6CAA6C;AAC7C,iBAAS,YAAY,CACnB,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,WAAW,EAAE,GAC1B,UAAU,EAAE,CASd;AAED,yEAAyE;AACzE,iBAAS,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAKxD;AA0CD;;;GAGG;AACH,iBAAS,uBAAuB,CAC9B,CAAC,EAAE,WAAW,EACd,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,GACd,cAAc,CAqGhB;AAED;;;GAGG;AACH,iBAAS,oBAAoB,CAC3B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,cAAc,GACzB,MAAM,CAyGR;AAED;;GAEG;AACH,iBAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAUhE;AA2SD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB5E;AAID,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;CAqBR,CAAC"}
|