@llm4ts/flow 0.10.1 → 0.12.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 -0
- package/dist/AzureDevOpsTool.d.ts +64 -26
- package/dist/AzureDevOpsTool.d.ts.map +1 -1
- package/dist/AzureDevOpsTool.js +375 -123
- package/dist/AzureDevOpsTool.js.map +1 -1
- package/package.json +2 -2
- package/src/AzureDevOpsTool.ts +593 -193
package/README.md
CHANGED
|
@@ -5,6 +5,11 @@ Flow orchestration for [llm4ts](https://github.com/riccardomerolla/llm4ts):
|
|
|
5
5
|
plain-file persistence, Git/GitHub/Azure DevOps tools, trace recording and
|
|
6
6
|
replay, cost tracking, and benchmarking.
|
|
7
7
|
|
|
8
|
+
The forge tools drive vendor CLIs rather than REST APIs — `gh` for
|
|
9
|
+
`GitHubTool`, `az` (with the `azure-devops` extension) for
|
|
10
|
+
`AzureDevOpsTool`, `basecamp` for `BasecampTool` — so each CLI owns its own
|
|
11
|
+
credential and no token is passed to, or held by, this package.
|
|
12
|
+
|
|
8
13
|
## Install
|
|
9
14
|
|
|
10
15
|
```bash
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import * as Duration from "effect/Duration";
|
|
2
1
|
import * as Effect from "effect/Effect";
|
|
3
2
|
import * as Schema from "effect/Schema";
|
|
4
|
-
import type {
|
|
3
|
+
import type { ProcessExecutorShape } from "@llm4ts/core/ProcessExecutor";
|
|
5
4
|
import { ProcessError, type FlowError } from "./FlowError.ts";
|
|
6
5
|
import type { FlowEventsShape } from "./FlowEvents.ts";
|
|
7
|
-
declare const
|
|
8
|
-
readonly
|
|
9
|
-
readonly
|
|
10
|
-
readonly
|
|
11
|
-
readonly
|
|
6
|
+
declare const AdoConfig_base: Schema.Class<AdoConfig, Schema.Struct<{
|
|
7
|
+
readonly orgUrl: Schema.String;
|
|
8
|
+
readonly project: Schema.String;
|
|
9
|
+
readonly repository: Schema.String;
|
|
10
|
+
readonly apiVersion: Schema.withConstructorDefault<Schema.String>;
|
|
12
11
|
}>, {}>;
|
|
13
|
-
export declare class
|
|
12
|
+
export declare class AdoConfig extends AdoConfig_base {
|
|
14
13
|
}
|
|
15
14
|
declare const WorkItem_base: Schema.Class<WorkItem, Schema.Struct<{
|
|
16
15
|
readonly id: Schema.Int;
|
|
@@ -19,9 +18,19 @@ declare const WorkItem_base: Schema.Class<WorkItem, Schema.Struct<{
|
|
|
19
18
|
readonly acceptanceCriteria: Schema.String;
|
|
20
19
|
readonly state: Schema.String;
|
|
21
20
|
readonly tags: Schema.$Array<Schema.String>;
|
|
21
|
+
readonly createdBy: Schema.String;
|
|
22
|
+
readonly changedDate: Schema.String;
|
|
22
23
|
}>, {}>;
|
|
23
24
|
export declare class WorkItem extends WorkItem_base {
|
|
24
25
|
}
|
|
26
|
+
declare const WorkItemComment_base: Schema.Class<WorkItemComment, Schema.Struct<{
|
|
27
|
+
readonly id: Schema.Int;
|
|
28
|
+
readonly author: Schema.String;
|
|
29
|
+
readonly text: Schema.String;
|
|
30
|
+
readonly createdDate: Schema.String;
|
|
31
|
+
}>, {}>;
|
|
32
|
+
export declare class WorkItemComment extends WorkItemComment_base {
|
|
33
|
+
}
|
|
25
34
|
declare const AdoPullRequest_base: Schema.Class<AdoPullRequest, Schema.Struct<{
|
|
26
35
|
readonly id: Schema.Int;
|
|
27
36
|
readonly repoId: Schema.String;
|
|
@@ -30,31 +39,60 @@ declare const AdoPullRequest_base: Schema.Class<AdoPullRequest, Schema.Struct<{
|
|
|
30
39
|
}>, {}>;
|
|
31
40
|
export declare class AdoPullRequest extends AdoPullRequest_base {
|
|
32
41
|
}
|
|
33
|
-
declare const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
readonly
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
export declare const PolicyOutcome: Schema.Literals<readonly ["Success", "Failure", "Pending"]>;
|
|
43
|
+
export type PolicyOutcome = typeof PolicyOutcome.Type;
|
|
44
|
+
export declare const WorkItemState: Schema.Literals<readonly ["open", "closed", "all"]>;
|
|
45
|
+
export type WorkItemState = typeof WorkItemState.Type;
|
|
46
|
+
export interface WorkItemFilter {
|
|
47
|
+
readonly tags?: ReadonlyArray<string>;
|
|
48
|
+
readonly state?: WorkItemState;
|
|
49
|
+
readonly assignedTo?: string;
|
|
50
|
+
readonly limit?: number;
|
|
41
51
|
}
|
|
42
|
-
export declare const
|
|
43
|
-
export declare const
|
|
44
|
-
export declare const
|
|
45
|
-
export declare const
|
|
46
|
-
export declare const
|
|
47
|
-
export declare const
|
|
48
|
-
export declare const
|
|
49
|
-
export declare const
|
|
52
|
+
export declare const branchName: (ref: string) => string;
|
|
53
|
+
export declare const workItemShowArgs: (config: AdoConfig, id: number) => ReadonlyArray<string>;
|
|
54
|
+
export declare const fieldArgs: (fields: Readonly<Record<string, string>>) => ReadonlyArray<string>;
|
|
55
|
+
export declare const workItemUpdateArgs: (config: AdoConfig, id: number, fields: Readonly<Record<string, string>>) => ReadonlyArray<string>;
|
|
56
|
+
export declare const workItemCommentArgs: (config: AdoConfig, id: number, text: string) => ReadonlyArray<string>;
|
|
57
|
+
export declare const workItemCreateArgs: (config: AdoConfig, workItemType: string, title: string, description: string, tags: ReadonlyArray<string>) => ReadonlyArray<string>;
|
|
58
|
+
export declare const commentsArgs: (config: AdoConfig, id: number) => ReadonlyArray<string>;
|
|
59
|
+
export declare const quoteWiql: (value: string) => string;
|
|
60
|
+
export declare const workItemFields: ReadonlyArray<string>;
|
|
61
|
+
export declare const wiqlFor: (filter: WorkItemFilter) => string;
|
|
62
|
+
export declare const queryArgs: (config: AdoConfig, wiql: string) => ReadonlyArray<string>;
|
|
63
|
+
export declare const prCreateArgs: (config: AdoConfig, sourceRef: string, targetRef: string, title: string, description: string, draft?: boolean) => ReadonlyArray<string>;
|
|
64
|
+
export declare const prListArgs: (config: AdoConfig, sourceRef?: string) => ReadonlyArray<string>;
|
|
65
|
+
export declare const prUpdateArgs: (config: AdoConfig, id: number, title: string, description: string) => ReadonlyArray<string>;
|
|
66
|
+
export declare const prCommentArgs: (config: AdoConfig, id: number, text: string) => ReadonlyArray<string>;
|
|
67
|
+
export declare const prPolicyArgs: (config: AdoConfig, id: number) => ReadonlyArray<string>;
|
|
68
|
+
export declare const prCompleteArgs: (config: AdoConfig, id: number, squash: boolean, deleteSourceBranch: boolean) => ReadonlyArray<string>;
|
|
69
|
+
export declare const parseTags: (raw: string) => ReadonlyArray<string>;
|
|
70
|
+
export declare const parseWorkItem: (payload: string) => Effect.Effect<WorkItem, ProcessError>;
|
|
71
|
+
export declare const parseWorkItems: (payload: string) => Effect.Effect<ReadonlyArray<WorkItem>, ProcessError>;
|
|
72
|
+
export declare const parseWorkItemIds: (payload: string) => Effect.Effect<ReadonlyArray<number>, ProcessError>;
|
|
73
|
+
export declare const parseComments: (payload: string) => Effect.Effect<ReadonlyArray<WorkItemComment>, ProcessError>;
|
|
74
|
+
export declare const parsePullRequest: (config: AdoConfig, payload: string) => Effect.Effect<AdoPullRequest, ProcessError>;
|
|
75
|
+
export declare const parsePullRequests: (config: AdoConfig, payload: string) => Effect.Effect<ReadonlyArray<AdoPullRequest>, ProcessError>;
|
|
76
|
+
export declare const outcomeFromPolicies: (payload: string) => Effect.Effect<PolicyOutcome, ProcessError>;
|
|
50
77
|
export interface AzureDevOpsToolShape {
|
|
51
78
|
readonly readWorkItem: (id: number) => Effect.Effect<WorkItem, FlowError>;
|
|
79
|
+
readonly listWorkItems: (filter?: WorkItemFilter) => Effect.Effect<ReadonlyArray<WorkItem>, FlowError>;
|
|
52
80
|
readonly wiqlIds: (query: string) => Effect.Effect<ReadonlyArray<number>, FlowError>;
|
|
81
|
+
readonly readComments: (id: number) => Effect.Effect<ReadonlyArray<WorkItemComment>, FlowError>;
|
|
53
82
|
readonly setFields: (id: number, fields: Readonly<Record<string, string>>) => Effect.Effect<void, FlowError>;
|
|
54
83
|
readonly setState: (id: number, state: string) => Effect.Effect<void, FlowError>;
|
|
55
84
|
readonly setAcceptanceCriteria: (id: number, text: string) => Effect.Effect<void, FlowError>;
|
|
56
|
-
readonly
|
|
85
|
+
readonly editTags: (id: number, add: ReadonlyArray<string>, remove: ReadonlyArray<string>) => Effect.Effect<void, FlowError>;
|
|
86
|
+
readonly writeComment: (id: number, text: string) => Effect.Effect<void, FlowError>;
|
|
87
|
+
readonly createWorkItem: (workItemType: string, title: string, description: string, tags?: ReadonlyArray<string>) => Effect.Effect<WorkItem, FlowError>;
|
|
88
|
+
readonly createPr: (sourceRef: string, targetRef: string, title: string, body: string, draft?: boolean) => Effect.Effect<AdoPullRequest, FlowError>;
|
|
89
|
+
readonly openPrForBranch: (sourceRef: string) => Effect.Effect<AdoPullRequest | undefined, FlowError>;
|
|
90
|
+
readonly updatePr: (pr: AdoPullRequest, title: string, body: string) => Effect.Effect<void, FlowError>;
|
|
91
|
+
readonly writePrComment: (pr: AdoPullRequest, body: string) => Effect.Effect<void, FlowError>;
|
|
92
|
+
readonly prPolicies: (pr: AdoPullRequest) => Effect.Effect<PolicyOutcome, FlowError>;
|
|
93
|
+
readonly completePr: (pr: AdoPullRequest, squash?: boolean, deleteSourceBranch?: boolean) => Effect.Effect<void, FlowError>;
|
|
57
94
|
}
|
|
58
|
-
export declare const
|
|
95
|
+
export declare const mergeTags: (current: ReadonlyArray<string>, add: ReadonlyArray<string>, remove: ReadonlyArray<string>) => ReadonlyArray<string>;
|
|
96
|
+
export declare const makeAzureDevOpsTool: (config: AdoConfig, process: ProcessExecutorShape, workDir: string, events: FlowEventsShape) => AzureDevOpsToolShape;
|
|
59
97
|
export {};
|
|
60
98
|
//# sourceMappingURL=AzureDevOpsTool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AzureDevOpsTool.d.ts","sourceRoot":"","sources":["../src/AzureDevOpsTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"AzureDevOpsTool.d.ts","sourceRoot":"","sources":["../src/AzureDevOpsTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,oBAAoB,EAAiB,MAAM,8BAA8B,CAAA;AACvF,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;;;;;;;AAUtD,qBAAa,SAAU,SAAQ,cAQ7B;CAAG;;;;;;;;;;;AAEL,qBAAa,QAAS,SAAQ,aAS5B;CAAG;;;;;;;AAEL,qBAAa,eAAgB,SAAQ,oBAKnC;CAAG;;;;;;;AAEL,qBAAa,cAAe,SAAQ,mBAKlC;CAAG;AAKL,eAAO,MAAM,aAAa,6DAAqD,CAAA;AAC/E,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,eAAO,MAAM,aAAa,qDAA6C,CAAA;AACvE,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAKD,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,MAAkD,CAAA;AAiB3F,eAAO,MAAM,gBAAgB,GAAI,QAAQ,SAAS,EAAE,IAAI,MAAM,KAAG,aAAa,CAAC,MAAM,CAQpF,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,QAAQ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAG,aAAa,CAAC,MAAM,CAGxF,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,SAAS,EACjB,IAAI,MAAM,EACV,QAAQ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KACvC,aAAa,CAAC,MAAM,CAStB,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,SAAS,EACjB,IAAI,MAAM,EACV,MAAM,MAAM,KACX,aAAa,CAAC,MAAM,CAUtB,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,SAAS,EACjB,cAAc,MAAM,EACpB,OAAO,MAAM,EACb,aAAa,MAAM,EACnB,MAAM,aAAa,CAAC,MAAM,CAAC,KAC1B,aAAa,CAAC,MAAM,CAetB,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,QAAQ,SAAS,EAAE,IAAI,MAAM,KAAG,aAAa,CAAC,MAAM,CAchF,CAAA;AASD,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,MAA0C,CAAA;AAEpF,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,MAAM,CAShD,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,QAAQ,cAAc,KAAG,MAkBhD,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,QAAQ,SAAS,EAAE,MAAM,MAAM,KAAG,aAAa,CAAC,MAAM,CAS/E,CAAA;AAMD,eAAO,MAAM,YAAY,GACvB,QAAQ,SAAS,EACjB,WAAW,MAAM,EACjB,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,aAAa,MAAM,EACnB,eAAa,KACZ,aAAa,CAAC,MAAM,CAmBtB,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,SAAS,EAAE,YAAY,MAAM,KAAG,aAAa,CAAC,MAAM,CAatF,CAAA;AAED,eAAO,MAAM,YAAY,GACvB,QAAQ,SAAS,EACjB,IAAI,MAAM,EACV,OAAO,MAAM,EACb,aAAa,MAAM,KAClB,aAAa,CAAC,MAAM,CAYtB,CAAA;AAED,eAAO,MAAM,aAAa,GACxB,QAAQ,SAAS,EACjB,IAAI,MAAM,EACV,MAAM,MAAM,KACX,aAAa,CAAC,MAAM,CAatB,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,QAAQ,SAAS,EAAE,IAAI,MAAM,KAAG,aAAa,CAAC,MAAM,CAShF,CAAA;AAED,eAAO,MAAM,cAAc,GACzB,QAAQ,SAAS,EACjB,IAAI,MAAM,EACV,QAAQ,OAAO,EACf,oBAAoB,OAAO,KAC1B,aAAa,CAAC,MAAM,CActB,CAAA;AAsCD,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,KAAG,aAAa,CAAC,MAAM,CAIxB,CAAA;AAmBpC,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAIjF,CAAA;AAIH,eAAO,MAAM,cAAc,GACzB,SAAS,MAAM,KACd,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,YAAY,CAInD,CAAA;AAEH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,MAAM,KACd,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,CAC+B,CAAA;AAanF,eAAO,MAAM,aAAa,GACxB,SAAS,MAAM,KACd,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,YAAY,CAa1D,CAAA;AAoBH,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,SAAS,EACjB,SAAS,MAAM,KACd,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAI1C,CAAA;AAEH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,SAAS,EACjB,SAAS,MAAM,KACd,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,YAAY,CAIzD,CAAA;AAUH,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAW5F,CAAA;AAMH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IACzE,QAAQ,CAAC,aAAa,EAAE,CACtB,MAAM,CAAC,EAAE,cAAc,KACpB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAA;IACtD,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAA;IACpF,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,CAAA;IAC/F,QAAQ,CAAC,SAAS,EAAE,CAClB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAChF,QAAQ,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAG5F,QAAQ,CAAC,QAAQ,EAAE,CACjB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,EAC1B,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,KAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACnF,QAAQ,CAAC,cAAc,EAAE,CACvB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,KACzB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IACvC,QAAQ,CAAC,QAAQ,EAAE,CACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,OAAO,KACZ,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;IAC7C,QAAQ,CAAC,eAAe,EAAE,CACxB,SAAS,EAAE,MAAM,KACd,MAAM,CAAC,MAAM,CAAC,cAAc,GAAG,SAAS,EAAE,SAAS,CAAC,CAAA;IACzD,QAAQ,CAAC,QAAQ,EAAE,CACjB,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,KACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACnC,QAAQ,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAC7F,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;IACpF,QAAQ,CAAC,UAAU,EAAE,CACnB,EAAE,EAAE,cAAc,EAClB,MAAM,CAAC,EAAE,OAAO,EAChB,kBAAkB,CAAC,EAAE,OAAO,KACzB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;CACpC;AAID,eAAO,MAAM,SAAS,GACpB,SAAS,aAAa,CAAC,MAAM,CAAC,EAC9B,KAAK,aAAa,CAAC,MAAM,CAAC,EAC1B,QAAQ,aAAa,CAAC,MAAM,CAAC,KAC5B,aAAa,CAAC,MAAM,CAQtB,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,SAAS,EACjB,SAAS,oBAAoB,EAC7B,SAAS,MAAM,EACf,QAAQ,eAAe,KACtB,oBA8GF,CAAA"}
|