@frankzhang2026/opencode-android-orchestrator 0.10.0 → 1.0.1

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.
Files changed (109) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +48 -51
  3. package/dist/cli.js +14 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config/android-sdk.d.ts +10 -0
  6. package/dist/config/android-sdk.d.ts.map +1 -0
  7. package/dist/config/android-sdk.js +50 -0
  8. package/dist/config/android-sdk.js.map +1 -0
  9. package/dist/config/queue-policy.d.ts +12 -0
  10. package/dist/config/queue-policy.d.ts.map +1 -0
  11. package/dist/config/queue-policy.js +18 -0
  12. package/dist/config/queue-policy.js.map +1 -0
  13. package/dist/config/verification-policy.d.ts +8 -3
  14. package/dist/config/verification-policy.d.ts.map +1 -1
  15. package/dist/config/verification-policy.js +48 -14
  16. package/dist/config/verification-policy.js.map +1 -1
  17. package/dist/doctor/index.d.ts.map +1 -1
  18. package/dist/doctor/index.js +3 -49
  19. package/dist/doctor/index.js.map +1 -1
  20. package/dist/doctor/installation.d.ts.map +1 -1
  21. package/dist/doctor/installation.js +3 -0
  22. package/dist/doctor/installation.js.map +1 -1
  23. package/dist/installer/adaptive-templates.d.ts +3 -1
  24. package/dist/installer/adaptive-templates.d.ts.map +1 -1
  25. package/dist/installer/adaptive-templates.js +2 -0
  26. package/dist/installer/adaptive-templates.js.map +1 -1
  27. package/dist/installer/install-manifest.d.ts +1 -0
  28. package/dist/installer/install-manifest.d.ts.map +1 -1
  29. package/dist/installer/install-manifest.js +6 -1
  30. package/dist/installer/install-manifest.js.map +1 -1
  31. package/dist/installer/opencode-config.d.ts +3 -3
  32. package/dist/installer/opencode-config.d.ts.map +1 -1
  33. package/dist/installer/opencode-config.js +1 -1
  34. package/dist/installer/opencode-config.js.map +1 -1
  35. package/dist/installer/uninstall.d.ts.map +1 -1
  36. package/dist/installer/uninstall.js +5 -0
  37. package/dist/installer/uninstall.js.map +1 -1
  38. package/dist/installer/upgrade.d.ts.map +1 -1
  39. package/dist/installer/upgrade.js +13 -1
  40. package/dist/installer/upgrade.js.map +1 -1
  41. package/dist/plugin/index.d.ts.map +1 -1
  42. package/dist/plugin/index.js +11 -5
  43. package/dist/plugin/index.js.map +1 -1
  44. package/dist/queue/approvals.d.ts +49 -0
  45. package/dist/queue/approvals.d.ts.map +1 -0
  46. package/dist/queue/approvals.js +68 -0
  47. package/dist/queue/approvals.js.map +1 -0
  48. package/dist/queue/cli.d.ts +3 -0
  49. package/dist/queue/cli.d.ts.map +1 -0
  50. package/dist/queue/cli.js +115 -0
  51. package/dist/queue/cli.js.map +1 -0
  52. package/dist/queue/executor.d.ts +24 -0
  53. package/dist/queue/executor.d.ts.map +1 -0
  54. package/dist/queue/executor.js +445 -0
  55. package/dist/queue/executor.js.map +1 -0
  56. package/dist/queue/lifecycle.d.ts +3 -0
  57. package/dist/queue/lifecycle.d.ts.map +1 -0
  58. package/dist/queue/lifecycle.js +24 -0
  59. package/dist/queue/lifecycle.js.map +1 -0
  60. package/dist/queue/queue.d.ts +171 -0
  61. package/dist/queue/queue.d.ts.map +1 -0
  62. package/dist/queue/queue.js +506 -0
  63. package/dist/queue/queue.js.map +1 -0
  64. package/dist/queue/service.d.ts +15 -0
  65. package/dist/queue/service.d.ts.map +1 -0
  66. package/dist/queue/service.js +152 -0
  67. package/dist/queue/service.js.map +1 -0
  68. package/dist/queue/storage.d.ts +32 -0
  69. package/dist/queue/storage.d.ts.map +1 -0
  70. package/dist/queue/storage.js +180 -0
  71. package/dist/queue/storage.js.map +1 -0
  72. package/dist/queue/tools.d.ts +12 -0
  73. package/dist/queue/tools.d.ts.map +1 -0
  74. package/dist/queue/tools.js +155 -0
  75. package/dist/queue/tools.js.map +1 -0
  76. package/docs/MIGRATION.md +32 -11
  77. package/docs/QUEUE.md +151 -0
  78. package/docs/SECURITY.md +38 -31
  79. package/docs/TROUBLESHOOTING.md +34 -11
  80. package/package.json +1 -1
  81. package/templates/.opencode/agents/scheduled-planner.md +64 -131
  82. package/templates/.opencode/commands/abort-task.md +6 -15
  83. package/templates/.opencode/commands/acceptance.md +6 -15
  84. package/templates/.opencode/commands/change.md +3 -1
  85. package/templates/.opencode/commands/resume-review.md +6 -14
  86. package/templates/.opencode/commands/resume-task.md +6 -23
  87. package/templates/.opencode/skills/scheduled-quality-orchestrator/SKILL.md +72 -248
  88. package/templates/AGENTS.md.fragment +8 -0
  89. package/templates/automation/config.json +8 -2
  90. package/templates/automation/config.schema.json +218 -46
  91. package/templates/scripts/automation/abort-task.sh +2 -1
  92. package/templates/scripts/automation/accept-and-integrate.sh +5 -0
  93. package/templates/scripts/automation/acceptance-report.sh +4 -2
  94. package/templates/scripts/automation/approve-and-run.sh +4 -0
  95. package/templates/scripts/automation/begin-review.sh +1 -0
  96. package/templates/scripts/automation/block-task.sh +1 -0
  97. package/templates/scripts/automation/claim-task.sh +1 -0
  98. package/templates/scripts/automation/lib.sh +94 -1
  99. package/templates/scripts/automation/orchestrate-task.sh +11 -0
  100. package/templates/scripts/automation/preflight.sh +14 -4
  101. package/templates/scripts/automation/prepare-contract-review.sh +4 -0
  102. package/templates/scripts/automation/quality-gate.sh +1 -0
  103. package/templates/scripts/automation/record-red.sh +1 -0
  104. package/templates/scripts/automation/resume-review-fix.sh +1 -0
  105. package/templates/scripts/automation/resume-review.sh +1 -0
  106. package/templates/scripts/automation/resume-task.sh +1 -0
  107. package/templates/scripts/automation/scope-gate.sh +10 -2
  108. package/templates/scripts/automation/submit-review.sh +8 -2
  109. package/templates/scripts/automation/verify-task.sh +13 -0
@@ -0,0 +1,171 @@
1
+ import type { ApprovalProof } from "./approvals.js";
2
+ import { QueueStorage, type ProcessIdentity } from "./storage.js";
3
+ import { type QueuePolicy } from "../config/queue-policy.js";
4
+ export type WorkspaceStrategy = "inPlaceExclusive" | "isolatedWorktree";
5
+ export type CommitPolicy = "humanApproval" | "autoCommit";
6
+ export type JobKind = "execute" | "integrate" | "revalidate" | "resume" | "resume-review" | "abort" | "recover";
7
+ export interface QueueConfiguration {
8
+ schemaVersion: number;
9
+ enabled: boolean;
10
+ mode: string;
11
+ workspaceStrategy: WorkspaceStrategy;
12
+ commitPolicy?: CommitPolicy;
13
+ pushAfterAcceptance: false;
14
+ unitTestsEnabled: boolean;
15
+ autoCleanupWorktrees: boolean;
16
+ worktreeBase: string;
17
+ queue?: QueuePolicy["queue"];
18
+ approvalPhrases: Record<string, string>;
19
+ protectedPaths: string[];
20
+ gradleVerification: {
21
+ fullUnitTestTasks: string[];
22
+ focusedTestTasks: string[];
23
+ assembleTasks: string[];
24
+ };
25
+ }
26
+ export interface Draft {
27
+ proposalApproval?: ApprovalProof;
28
+ key: string;
29
+ taskId: string;
30
+ version: number;
31
+ contract: Record<string, unknown>;
32
+ contractText: string;
33
+ plan: string;
34
+ contractSha256: string;
35
+ planSha256: string;
36
+ planningHead: string;
37
+ targetBranch: string;
38
+ sourceRoot: string;
39
+ workspaceStrategy: WorkspaceStrategy;
40
+ commitPolicy: CommitPolicy;
41
+ notBefore: string | null;
42
+ dependsOn: string[];
43
+ priority: number;
44
+ createdAt: string;
45
+ digest: string;
46
+ }
47
+ export interface QueueItem extends Draft {
48
+ approvedWorkspaceStrategy: WorkspaceStrategy;
49
+ queuePriority: number;
50
+ sequence: number;
51
+ approvedAt: string;
52
+ authorization: {
53
+ source: "contractApproval";
54
+ digest: string;
55
+ commitPolicy: CommitPolicy;
56
+ pushAfterAcceptance: false;
57
+ revoked: boolean;
58
+ proof?: ApprovalProof;
59
+ };
60
+ state: string;
61
+ waitingReason: string | null;
62
+ runId: string | null;
63
+ taskRoot: string | null;
64
+ request: {
65
+ kind: JobKind;
66
+ approval: string | null;
67
+ candidate: string | null;
68
+ proof?: ApprovalProof;
69
+ } | null;
70
+ sealedDiff: string | null;
71
+ sealedRunId: string | null;
72
+ candidateId: string | null;
73
+ completedCommit: string | null;
74
+ }
75
+ export interface QueueRun {
76
+ id: string;
77
+ key: string;
78
+ kind: JobKind;
79
+ createdAt: string;
80
+ launcher: ProcessIdentity;
81
+ worker: ProcessIdentity | null;
82
+ outcome: {
83
+ state: string;
84
+ error: string | null;
85
+ } | null;
86
+ }
87
+ export interface QueueNotification {
88
+ id: string;
89
+ key: string;
90
+ state: string;
91
+ at: string;
92
+ message: string;
93
+ sealedDiff: string | null;
94
+ commit: string | null;
95
+ pushed: false;
96
+ acknowledged: boolean;
97
+ }
98
+ export interface QueueDocument {
99
+ schemaVersion: 1;
100
+ sequence: number;
101
+ paused: boolean;
102
+ fault: string | null;
103
+ strategy: WorkspaceStrategy | null;
104
+ drafts: Draft[];
105
+ items: QueueItem[];
106
+ active: QueueRun | null;
107
+ runs: QueueRun[];
108
+ notifications: QueueNotification[];
109
+ }
110
+ export interface DraftInput {
111
+ contract: Record<string, unknown>;
112
+ plan: string;
113
+ planningHead: string;
114
+ targetBranch: string;
115
+ workspaceStrategy?: WorkspaceStrategy;
116
+ commitPolicy?: CommitPolicy;
117
+ notBefore?: string;
118
+ dependsOn?: string[];
119
+ priority?: number;
120
+ }
121
+ export interface PlanningSnapshot {
122
+ sourceRoot: string;
123
+ targetBranch: string;
124
+ planningHead: string;
125
+ }
126
+ export interface SnapshotFilePage {
127
+ planningHead: string;
128
+ prefix: string;
129
+ query: string;
130
+ files: string[];
131
+ nextCursor: string | null;
132
+ }
133
+ export interface SnapshotReadChunk {
134
+ planningHead: string;
135
+ path: string;
136
+ content: string;
137
+ nextCursor: string | null;
138
+ }
139
+ export declare const TASK_ID: RegExp;
140
+ export declare function now(): string;
141
+ export declare function matchesPath(pattern: string, path: string): boolean;
142
+ export declare function validateContract(contract: Record<string, unknown>, config: QueueConfiguration): void;
143
+ export declare function draftFromItem(item: QueueItem): Draft;
144
+ export declare function assertAuthorized(item: QueueItem): void;
145
+ export declare class TaskQueue {
146
+ readonly storage: QueueStorage<QueueDocument>;
147
+ constructor(directory: string);
148
+ config(): QueueConfiguration;
149
+ snapshot(targetBranch?: string): PlanningSnapshot;
150
+ private sensitive;
151
+ readSnapshot(head: string, path: string): string;
152
+ listSnapshot(head: string, prefix?: string, query?: string, cursor?: string, limit?: number): SnapshotFilePage;
153
+ readSnapshotChunk(head: string, path: string, cursor?: string): SnapshotReadChunk;
154
+ private validateSnapshotHead;
155
+ private validateSnapshotPath;
156
+ draft(input: DraftInput, proposalApproval?: ApprovalProof): Draft;
157
+ approvalText(draft: Draft): string;
158
+ enqueue(key: string, digest: string, approval: string, proof?: ApprovalProof): QueueItem;
159
+ item(key: string): QueueItem;
160
+ private findItem;
161
+ reorder(key: string, priority: number): void;
162
+ setPolicy(workspaceStrategy: WorkspaceStrategy, commitPolicy: CommitPolicy): void;
163
+ recoverExecution(): void;
164
+ details(key: string): Record<string, unknown>;
165
+ notify(document: QueueDocument, item: QueueItem, message: string): void;
166
+ control(action: "pause" | "resume" | "clear-fault" | "cancel" | "revoke" | "acknowledge", key?: string): QueueDocument;
167
+ request(key: string, kind: Exclude<JobKind, "execute">, approval?: string, candidate?: string, proof?: ApprovalProof): void;
168
+ reserve(): QueueRun | null;
169
+ reconcile(): void;
170
+ }
171
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/queue/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAKpD,OAAO,EAEG,YAAY,EAAE,KAAK,eAAe,EAC3C,MAAM,cAAc,CAAC;AACtB,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE1E,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AACxE,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,YAAY,CAAC;AAC1D,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,eAAe,GAAG,OAAO,GAAG,SAAS,CAAC;AAChH,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,mBAAmB,EAAE,KAAK,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,kBAAkB,EAAE;QAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAAC,aAAa,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC1G;AACD,MAAM,WAAW,KAAK;IACpB,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,SAAU,SAAQ,KAAK;IACtC,yBAAyB,EAAE,iBAAiB,CAAC;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE;QAAE,MAAM,EAAE,kBAAkB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,YAAY,CAAC;QAAC,mBAAmB,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC;IAC/J,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,aAAa,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5G,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AACD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CACzD;AACD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IACpE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;CACxF;AACD,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,CAAC,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,aAAa,EAAE,iBAAiB,EAAE,CAAC;CACpC;AACD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAC5F,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC7D;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AACD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AACD,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAeD,eAAO,MAAM,OAAO,QAAsB,CAAC;AAC3C,wBAAgB,GAAG,IAAI,MAAM,CAAqC;AAWlE,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKlE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CA6BpG;AAOD,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,CAMpD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAOtD;AAED,qBAAa,SAAS;IACpB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;gBAClC,SAAS,EAAE,MAAM;IAG7B,MAAM,IAAI,kBAAkB;IAU5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB;IAQjD,OAAO,CAAC,SAAS;IAGjB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAShD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAK,EAAE,KAAK,SAAK,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,SAA8B,GAAG,gBAAgB;IAoC3H,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAgCjF,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,oBAAoB;IAI5B,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAAE,aAAa,GAAG,KAAK;IAgCjE,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAKlC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS;IAsBxF,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAK5B,OAAO,CAAC,QAAQ;IAGhB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ5C,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI;IAejF,gBAAgB,IAAI,IAAI;IAoBxB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAS7C,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIvE,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa;IAyBtH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI;IAoB3H,OAAO,IAAI,QAAQ,GAAG,IAAI;IAuD1B,SAAS,IAAI,IAAI;CAkClB"}