agent-hitch 0.2.3 → 0.2.5

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 (31) hide show
  1. package/dist/src/adapters/providers/deepseek.js +3 -1
  2. package/dist/src/adapters/providers/deepseek.js.map +1 -1
  3. package/dist/src/adapters/providers/shared.js +3 -2
  4. package/dist/src/adapters/providers/shared.js.map +1 -1
  5. package/dist/src/backends/harbor/backend.js +100 -36
  6. package/dist/src/backends/harbor/backend.js.map +1 -1
  7. package/dist/src/backends/harbor/dataset-config.js +36 -0
  8. package/dist/src/backends/harbor/dataset-config.js.map +1 -0
  9. package/dist/src/cli/commands/eval.js +39 -3
  10. package/dist/src/cli/commands/eval.js.map +1 -1
  11. package/dist/src/cli/output.js +4 -1
  12. package/dist/src/cli/output.js.map +1 -1
  13. package/dist/src/evals/harbor-bridge-error.js +44 -0
  14. package/dist/src/evals/harbor-bridge-error.js.map +1 -0
  15. package/dist/src/evals/index.js +4 -2
  16. package/dist/src/evals/index.js.map +1 -1
  17. package/dist/src/evals/progress.js +198 -0
  18. package/dist/src/evals/progress.js.map +1 -0
  19. package/dist/src/evals/request.js +37 -1
  20. package/dist/src/evals/request.js.map +1 -1
  21. package/dist/src/evals/rerun-slots.js +95 -0
  22. package/dist/src/evals/rerun-slots.js.map +1 -0
  23. package/dist/src/evals/rerun.js +417 -0
  24. package/dist/src/evals/rerun.js.map +1 -0
  25. package/dist/src/evals/service.js +193 -44
  26. package/dist/src/evals/service.js.map +1 -1
  27. package/dist/src/evals/trial-import.js +130 -60
  28. package/dist/src/evals/trial-import.js.map +1 -1
  29. package/docs/schemas/eval-progress.schema.json +61 -0
  30. package/integrations/harbor/hitch_harbor_agent.py +270 -30
  31. package/package.json +1 -1
@@ -0,0 +1,417 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import path from "node:path";
3
+ import { loadPreparedArtifact, preparedArtifactDirectory } from "../artifacts/index.js";
4
+ import { runHarborBackend, validateLocalGitTransportManifest, verifyLocalGitTransport, } from "../backends/index.js";
5
+ import { useControllerRuntimeById } from "../controller-runtime/index.js";
6
+ import { HitchError, SCHEMA_VERSION, atomicWriteJSON, ensureDir, invalidInput, readJSON, statePaths, withFileLock } from "../foundation/index.js";
7
+ import { readEvalProgress, replaceInvalidEvalProgressTrial, writeEvalProgress } from "./progress.js";
8
+ import { validateEvalId, validateEvalRequest } from "./request.js";
9
+ import { attemptDirectoryName, formatSlot, groupSlotsByAttempt, invalidTrialSlots, selectRerunTrialSlots, slotKey, sortSlots, uniqueTasks, validateProgressPlan, } from "./rerun-slots.js";
10
+ import { summarizeTrialRefs } from "./service.js";
11
+ import { importEvalTrialRun, importEvalTrialRuns, TrialBundlePendingError, validateEvalTrialReferences } from "./trial-import.js";
12
+ export { selectRerunTasks, selectRerunTrialSlots } from "./rerun-slots.js";
13
+ export async function rerunEval(options) {
14
+ if (!options.root)
15
+ throw invalidInput("a Hitch state root is required for eval rerun");
16
+ const evalId = validateEvalId(options.evalId);
17
+ const evalDirectory = path.join(statePaths(options.root).evals, evalId);
18
+ return withFileLock(path.join(evalDirectory, "reruns"), "active", () => rerunEvalLocked({ ...options, evalId, evalDirectory }), { timeoutCode: "eval_rerun_active", timeoutExitCode: 2, ...(options.signal ? { signal: options.signal } : {}) });
19
+ }
20
+ async function rerunEvalLocked(options) {
21
+ const startedAt = new Date().toISOString();
22
+ const rerunId = `rerun_${randomUUID().replaceAll("-", "")}`;
23
+ const rerunDirectory = await ensureDir(path.join(options.evalDirectory, "reruns", rerunId));
24
+ const statePath = path.join(rerunDirectory, "state.json");
25
+ const requestValue = await readJSON(path.join(options.evalDirectory, "request.json"), null);
26
+ if (requestValue === null)
27
+ throw new HitchError(`eval not found: ${options.evalId}`, { code: "eval_not_found", exitCode: 3 });
28
+ const request = await loadPersistedRequest(requestValue);
29
+ const plan = parseRerunPlan(await readJSON(path.join(options.evalDirectory, "plan.json")), options.evalId, request);
30
+ const initialProgress = await readEvalProgress(options.evalDirectory);
31
+ if (initialProgress === null)
32
+ throw unavailable("eval has no task-level progress");
33
+ let progress = initialProgress;
34
+ validateProgressPlan(progress, plan, request, options.evalId);
35
+ const previousResult = await readJSON(path.join(options.evalDirectory, "result.json"), null);
36
+ if (previousResult?.status === "cancelled")
37
+ throw new HitchError("cancelled eval cannot be rerun", { code: "eval_rerun_cancelled", exitCode: 2 });
38
+ const selectedTrials = selectRerunTrialSlots(plan.tasks, plan.attempts, progress, options.selector);
39
+ const selectedTasks = uniqueTasks(selectedTrials);
40
+ await atomicWriteJSON(path.join(rerunDirectory, "request.json"), {
41
+ schema_version: SCHEMA_VERSION,
42
+ rerun_id: rerunId,
43
+ eval_id: options.evalId,
44
+ mode: options.selector.mode,
45
+ tasks: selectedTasks,
46
+ trials: selectedTrials,
47
+ base_generation: progress.generation,
48
+ created_at: startedAt,
49
+ });
50
+ await writeRerunState(statePath, {
51
+ rerunId,
52
+ evalId: options.evalId,
53
+ status: "running",
54
+ tasks: selectedTasks,
55
+ trials: selectedTrials,
56
+ repairedTasks: [],
57
+ repairedTrials: [],
58
+ startedAt,
59
+ });
60
+ const repaired = new Map();
61
+ const backendRuns = [];
62
+ try {
63
+ if (selectedTrials.length > 0) {
64
+ const resolvedRevision = await loadResolvedRevision(options.evalDirectory, plan);
65
+ const preparedArtifact = await loadRerunArtifact(options.root, plan);
66
+ const runtimeId = requiredString(plan.controllerRuntime.runtime_id, "plan controller runtime id");
67
+ const runtime = await useControllerRuntimeById(statePaths(options.root), runtimeId.replace(/^sha256:/, ""));
68
+ if (runtime.runtime_id !== runtimeId
69
+ || runtime.manifest_digest !== requiredString(plan.controllerRuntime.manifest_digest, "plan controller runtime digest")) {
70
+ throw unavailable("controller runtime identity changed");
71
+ }
72
+ const localTransport = await loadLocalTransport(options.evalDirectory, plan, resolvedRevision, options.env, options.signal);
73
+ const groups = groupSlotsByAttempt(selectedTrials);
74
+ for (const [logicalAttempt, slots] of groups) {
75
+ if (options.signal?.aborted)
76
+ throw new HitchError("eval rerun was aborted", { code: "eval_rerun_aborted", exitCode: 9 });
77
+ const taskNames = slots.map((slot) => slot.task_id);
78
+ const selectedKeys = new Set(slots.map(slotKey));
79
+ const backendDirectory = plan.attempts === 1
80
+ ? path.join(rerunDirectory, "harbor")
81
+ : path.join(rerunDirectory, "harbor", attemptDirectoryName(logicalAttempt));
82
+ const harborJobDirectory = path.join(backendDirectory, "job");
83
+ const rerunRefs = [];
84
+ const publish = async (ref) => {
85
+ const slot = { task_id: ref.task_id, attempt: ref.attempt };
86
+ const key = slotKey(slot);
87
+ if (!selectedKeys.has(key)) {
88
+ throw new HitchError(`Harbor rerun returned an unselected trial: ${ref.task_id} attempt ${ref.attempt}`, {
89
+ code: "eval_rerun_trial_mismatch",
90
+ exitCode: 12,
91
+ });
92
+ }
93
+ if (!rerunRefs.some((current) => current.trial_id === ref.trial_id))
94
+ rerunRefs.push(ref);
95
+ if (ref.observation_status !== "valid")
96
+ return;
97
+ await validateEvalTrialReferences(options.root, options.evalId, [ref], {
98
+ benchmarkId: request.benchmark_id,
99
+ benchmarkRevision: request.benchmark_revision,
100
+ });
101
+ const previousGeneration = progress.generation;
102
+ progress = replaceInvalidEvalProgressTrial(progress, ref);
103
+ if (progress.generation === previousGeneration)
104
+ return;
105
+ repaired.set(key, slot);
106
+ await writeEvalProgress(options.evalDirectory, progress);
107
+ await writeRerunState(statePath, {
108
+ rerunId,
109
+ evalId: options.evalId,
110
+ status: "running",
111
+ tasks: selectedTasks,
112
+ trials: selectedTrials,
113
+ repairedTasks: uniqueTasks([...repaired.values()]),
114
+ repairedTrials: sortSlots([...repaired.values()]),
115
+ startedAt,
116
+ });
117
+ };
118
+ const backendRun = await runHarborBackend({
119
+ evalId: options.evalId,
120
+ evalDirectory: options.evalDirectory,
121
+ backendDirectory,
122
+ logicalAttempt,
123
+ taskNames,
124
+ request: { ...request, attempts: 1 },
125
+ root: options.root,
126
+ resolvedRevision,
127
+ runtimeDirectory: runtime.directory,
128
+ runtimeId: runtime.runtime_id,
129
+ preparedArtifact,
130
+ ...(localTransport ? { localTransport } : {}),
131
+ env: options.env ?? process.env,
132
+ ...(options.harborExecutable === undefined ? {} : { harborExecutable: options.harborExecutable }),
133
+ ...(options.signal ? { signal: options.signal } : {}),
134
+ ...(options.trialBundleGraceMs === undefined ? {} : { trialBundleGraceMs: options.trialBundleGraceMs }),
135
+ onTrialSettled: async (trial, context) => {
136
+ try {
137
+ const ref = await importEvalTrialRun({
138
+ root: options.root,
139
+ evalId: options.evalId,
140
+ evalDirectory: options.evalDirectory,
141
+ harborJobDirectory,
142
+ expectedAttempt: logicalAttempt,
143
+ request,
144
+ resolvedRevision,
145
+ benchmarkId: request.benchmark_id,
146
+ benchmarkRevision: request.benchmark_revision,
147
+ runtimeId: runtime.runtime_id,
148
+ requireCompleteMarker: true,
149
+ allowMissingBundleDiagnostic: context.bundleWaitExpired,
150
+ }, trial, rerunRefs.length, rerunRefs);
151
+ await publish(ref);
152
+ return true;
153
+ }
154
+ catch (error) {
155
+ if (error instanceof TrialBundlePendingError)
156
+ return false;
157
+ throw error;
158
+ }
159
+ },
160
+ });
161
+ backendRuns.push({ attempt: logicalAttempt, run: backendRun });
162
+ const terminalRefs = await importEvalTrialRuns({
163
+ root: options.root,
164
+ evalId: options.evalId,
165
+ evalDirectory: options.evalDirectory,
166
+ harborJobDirectory,
167
+ expectedAttempt: logicalAttempt,
168
+ request,
169
+ resolvedRevision,
170
+ benchmarkId: request.benchmark_id,
171
+ benchmarkRevision: request.benchmark_revision,
172
+ runtimeId: runtime.runtime_id,
173
+ rawResult: backendRun.rawResult,
174
+ }, rerunRefs);
175
+ for (const ref of terminalRefs)
176
+ await publish(ref);
177
+ if (backendRun.backend.process_exit_code !== 0 || backendRun.rawResult === null) {
178
+ throw new HitchError("Harbor rerun failed before producing a complete result", { code: "eval_rerun_harbor_failed", exitCode: 13 });
179
+ }
180
+ }
181
+ }
182
+ const result = await finalizeRerun(options.evalDirectory, request, plan, progress, previousResult, backendRuns);
183
+ const remainingTrials = invalidTrialSlots(plan.tasks, plan.attempts, progress);
184
+ const remaining = uniqueTasks(remainingTrials);
185
+ const repairedTrials = sortSlots([...repaired.values()]);
186
+ const completedAt = new Date().toISOString();
187
+ const output = {
188
+ schema_version: "1",
189
+ kind: "eval-rerun",
190
+ rerun_id: rerunId,
191
+ eval_id: options.evalId,
192
+ status: "completed",
193
+ selected_tasks: selectedTasks,
194
+ repaired_tasks: uniqueTasks(repairedTrials),
195
+ remaining_invalid_tasks: remaining,
196
+ selected_trials: selectedTrials,
197
+ repaired_trials: repairedTrials,
198
+ remaining_invalid_trials: remainingTrials,
199
+ eval_status: result.status,
200
+ started_at: startedAt,
201
+ completed_at: completedAt,
202
+ };
203
+ await writeRerunState(statePath, {
204
+ rerunId,
205
+ evalId: options.evalId,
206
+ status: "completed",
207
+ tasks: selectedTasks,
208
+ trials: selectedTrials,
209
+ repairedTasks: output.repaired_tasks,
210
+ repairedTrials,
211
+ startedAt,
212
+ completedAt,
213
+ evalStatus: output.eval_status,
214
+ remainingInvalidTasks: remaining,
215
+ remainingInvalidTrials: remainingTrials,
216
+ });
217
+ return output;
218
+ }
219
+ catch (error) {
220
+ await finalizeRerun(options.evalDirectory, request, plan, progress, previousResult, backendRuns).catch(() => { });
221
+ await writeRerunState(statePath, {
222
+ rerunId,
223
+ evalId: options.evalId,
224
+ status: "failed",
225
+ tasks: selectedTasks,
226
+ trials: selectedTrials,
227
+ repairedTasks: uniqueTasks([...repaired.values()]),
228
+ repairedTrials: sortSlots([...repaired.values()]),
229
+ startedAt,
230
+ completedAt: new Date().toISOString(),
231
+ errorCode: error instanceof HitchError ? error.code : "eval_rerun_failed",
232
+ }).catch(() => { });
233
+ throw error;
234
+ }
235
+ }
236
+ function parseRerunPlan(value, evalId, request) {
237
+ if (!value || typeof value !== "object" || Array.isArray(value))
238
+ throw unavailable("eval plan is missing");
239
+ const plan = value;
240
+ if (plan.eval_id !== evalId || plan.schema_version !== "1") {
241
+ throw unavailable("eval rerun requires a schema v1 plan");
242
+ }
243
+ if (!Number.isSafeInteger(plan.attempts) || plan.attempts < 1 || plan.attempts !== request.attempts) {
244
+ throw unavailable("eval request and attempt plan differ");
245
+ }
246
+ let attemptExecution;
247
+ if (plan.attempt_execution === undefined && plan.attempts === 1) {
248
+ attemptExecution = "legacy-single-attempt-v1";
249
+ }
250
+ else if (plan.attempt_execution === "harbor-attempt-shards-v1") {
251
+ attemptExecution = "harbor-attempt-shards-v1";
252
+ }
253
+ else if (plan.attempt_execution === undefined) {
254
+ throw new HitchError("eval was created without explicit logical-attempt identity; create a new eval with agent-hitch >= 0.2.5", { code: "eval_rerun_legacy_attempt_identity", exitCode: 2 });
255
+ }
256
+ else {
257
+ throw unavailable(`unsupported eval attempt execution: ${String(plan.attempt_execution)}`);
258
+ }
259
+ if (plan.dataset !== request.dataset || plan.benchmark_id !== request.benchmark_id
260
+ || plan.benchmark_revision !== request.benchmark_revision)
261
+ throw unavailable("eval request and plan identity differ");
262
+ if (!Array.isArray(plan.tasks) || plan.tasks.length === 0 || plan.tasks.some((task) => typeof task !== "string" || task.length === 0)) {
263
+ throw unavailable("eval rerun requires a frozen local task plan");
264
+ }
265
+ if (!plan.candidate || typeof plan.candidate !== "object" || Array.isArray(plan.candidate)
266
+ || !plan.prepared_artifact || typeof plan.prepared_artifact !== "object" || Array.isArray(plan.prepared_artifact)
267
+ || !plan.controller_runtime || typeof plan.controller_runtime !== "object" || Array.isArray(plan.controller_runtime)) {
268
+ throw unavailable("eval plan is incomplete");
269
+ }
270
+ return {
271
+ tasks: [...plan.tasks],
272
+ attempts: plan.attempts,
273
+ attemptExecution,
274
+ candidate: plan.candidate,
275
+ preparedArtifact: plan.prepared_artifact,
276
+ controllerRuntime: plan.controller_runtime,
277
+ ...(plan.local_source_transport && typeof plan.local_source_transport === "object" && !Array.isArray(plan.local_source_transport)
278
+ ? { localSourceTransport: plan.local_source_transport }
279
+ : {}),
280
+ };
281
+ }
282
+ async function loadPersistedRequest(value) {
283
+ if (!value || typeof value !== "object" || Array.isArray(value))
284
+ throw unavailable("eval request is invalid");
285
+ const persisted = value;
286
+ const input = Object.fromEntries(Object.entries(persisted).filter(([key]) => key !== "benchmark_id" && key !== "benchmark_revision"));
287
+ const request = await validateEvalRequest(input);
288
+ if (persisted.benchmark_id !== request.benchmark_id || persisted.benchmark_revision !== request.benchmark_revision) {
289
+ throw unavailable("eval dataset identity changed since the original run");
290
+ }
291
+ return request;
292
+ }
293
+ async function loadResolvedRevision(evalDirectory, plan) {
294
+ const resolution = await readJSON(path.join(evalDirectory, "resolution.json"));
295
+ if (!resolution || resolution.identity !== requiredString(plan.candidate.revision_identity, "candidate revision identity")
296
+ || resolution.harness_id !== requiredString(plan.candidate.harness_id, "candidate harness id")) {
297
+ throw unavailable("eval resolution identity changed");
298
+ }
299
+ return resolution;
300
+ }
301
+ async function loadRerunArtifact(root, plan) {
302
+ const summary = plan.preparedArtifact;
303
+ const artifactId = requiredString(summary.artifact_id, "prepared artifact id");
304
+ const artifact = await loadPreparedArtifact(preparedArtifactDirectory(root, artifactId), {
305
+ artifact_id: artifactId,
306
+ artifact_integrity: requiredString(summary.artifact_integrity, "prepared artifact integrity"),
307
+ entrypoint_integrity: requiredString(summary.entrypoint_integrity, "prepared artifact entrypoint integrity"),
308
+ harness_id: requiredString(summary.harness_id, "prepared artifact harness id"),
309
+ revision_identity: requiredString(summary.revision_identity, "prepared artifact revision identity"),
310
+ platform: requiredString(summary.platform, "prepared artifact platform"),
311
+ });
312
+ return {
313
+ directory: preparedArtifactDirectory(root, artifact.artifact_id),
314
+ artifact_id: artifact.artifact_id,
315
+ artifact_integrity: requiredString(artifact.artifact_integrity, "artifact integrity"),
316
+ entrypoint_integrity: requiredString(artifact.entrypoint_integrity, "artifact entrypoint integrity"),
317
+ harness_id: artifact.harness_id,
318
+ revision_identity: artifact.revision_identity,
319
+ adapter_version: artifact.adapter_version,
320
+ recipe_version: artifact.recipe_version,
321
+ platform: artifact.platform,
322
+ node_version: artifact.toolchain.node || process.version,
323
+ source_type: artifact.source_type,
324
+ };
325
+ }
326
+ async function loadLocalTransport(evalDirectory, plan, resolution, env, signal) {
327
+ if (plan.localSourceTransport === undefined)
328
+ return undefined;
329
+ const directory = path.join(evalDirectory, "local-source");
330
+ const manifestPath = path.join(directory, "manifest.json");
331
+ const use = {
332
+ directory,
333
+ manifestPath,
334
+ payloadPath: path.join(directory, "payload.pack"),
335
+ resolutionPath: path.join(directory, "resolution.json"),
336
+ manifest: validateLocalGitTransportManifest(await readJSON(manifestPath)),
337
+ };
338
+ await verifyLocalGitTransport(use, {
339
+ expected: {
340
+ harnessId: resolution.harness_id,
341
+ resolutionIdentity: resolution.identity,
342
+ commit: requiredString(resolution.revision.commit, "local source commit"),
343
+ },
344
+ env: env ?? process.env,
345
+ ...(signal ? { signal } : {}),
346
+ });
347
+ return use;
348
+ }
349
+ async function finalizeRerun(evalDirectory, request, plan, progress, previousResult, backendRuns = []) {
350
+ const remainingTrials = invalidTrialSlots(plan.tasks, plan.attempts, progress);
351
+ const remaining = uniqueTasks(remainingTrials);
352
+ const succeeded = remainingTrials.length === 0;
353
+ const completedAt = new Date().toISOString();
354
+ const singleBackend = backendRuns.length === 1 ? backendRuns[0].run : undefined;
355
+ const result = {
356
+ ...(previousResult ?? {}),
357
+ schema_version: SCHEMA_VERSION,
358
+ eval_id: progress.eval_id,
359
+ status: succeeded ? "succeeded" : "failed",
360
+ exit_code: succeeded ? 0 : 13,
361
+ ...(singleBackend ? { backend: singleBackend.backend, backend_summary: singleBackend.summary } : {}),
362
+ ...(backendRuns.length > 1 ? {
363
+ backend_runs: backendRuns.map(({ attempt, run }) => ({
364
+ attempt,
365
+ backend: run.backend,
366
+ backend_summary: run.summary,
367
+ })),
368
+ } : {}),
369
+ candidate: plan.candidate,
370
+ dataset: request.dataset,
371
+ benchmark_id: request.benchmark_id,
372
+ benchmark_revision: request.benchmark_revision,
373
+ generation: progress.generation,
374
+ trials: progress.trials,
375
+ summary: summarizeTrialRefs(progress.trials),
376
+ ...(succeeded ? { error: undefined } : {
377
+ error: {
378
+ code: "eval_has_invalid_tasks",
379
+ message: `eval has invalid or missing trials: ${remainingTrials.map(formatSlot).join(", ")}`,
380
+ },
381
+ }),
382
+ started_at: typeof previousResult?.started_at === "string" ? previousResult.started_at : progress.started_at,
383
+ completed_at: completedAt,
384
+ };
385
+ if (succeeded)
386
+ delete result.error;
387
+ await atomicWriteJSON(path.join(evalDirectory, "result.json"), result);
388
+ return result;
389
+ }
390
+ async function writeRerunState(file, input) {
391
+ await atomicWriteJSON(file, {
392
+ schema_version: SCHEMA_VERSION,
393
+ rerun_id: input.rerunId,
394
+ eval_id: input.evalId,
395
+ status: input.status,
396
+ tasks: [...input.tasks],
397
+ ...(input.trials ? { trials: sortSlots(input.trials) } : {}),
398
+ repaired_tasks: [...input.repairedTasks],
399
+ ...(input.repairedTrials ? { repaired_trials: sortSlots(input.repairedTrials) } : {}),
400
+ ...(input.evalStatus ? { eval_status: input.evalStatus } : {}),
401
+ ...(input.remainingInvalidTasks ? { remaining_invalid_tasks: [...input.remainingInvalidTasks] } : {}),
402
+ ...(input.remainingInvalidTrials ? { remaining_invalid_trials: sortSlots(input.remainingInvalidTrials) } : {}),
403
+ ...(input.errorCode ? { error: { code: input.errorCode } } : {}),
404
+ started_at: input.startedAt,
405
+ ...(input.completedAt ? { completed_at: input.completedAt } : {}),
406
+ updated_at: input.completedAt ?? new Date().toISOString(),
407
+ });
408
+ }
409
+ function requiredString(value, label) {
410
+ if (typeof value !== "string" || value.length === 0)
411
+ throw unavailable(`${label} is missing`);
412
+ return value;
413
+ }
414
+ function unavailable(message) {
415
+ return new HitchError(message, { code: "eval_rerun_unavailable", exitCode: 2 });
416
+ }
417
+ //# sourceMappingURL=rerun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rerun.js","sourceRoot":"","sources":["../../../src/evals/rerun.ts"],"names":[],"mappings":"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"}