gooseworks 0.5.8 → 0.5.9-dev.56.eca9486d
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/agents/claude-mcp.d.ts +7 -1
- package/dist/agents/claude-mcp.d.ts.map +1 -1
- package/dist/agents/claude-mcp.js +43 -10
- package/dist/agents/claude-mcp.js.map +1 -1
- package/dist/auth/credentials.d.ts +8 -0
- package/dist/auth/credentials.d.ts.map +1 -1
- package/dist/auth/credentials.js +35 -1
- package/dist/auth/credentials.js.map +1 -1
- package/dist/auth/device-flow.d.ts +4 -1
- package/dist/auth/device-flow.d.ts.map +1 -1
- package/dist/auth/device-flow.js +8 -3
- package/dist/auth/device-flow.js.map +1 -1
- package/dist/auth/oauth-server.d.ts +9 -1
- package/dist/auth/oauth-server.d.ts.map +1 -1
- package/dist/auth/oauth-server.js +19 -11
- package/dist/auth/oauth-server.js.map +1 -1
- package/dist/auth/revoke.d.ts +10 -0
- package/dist/auth/revoke.d.ts.map +1 -0
- package/dist/auth/revoke.js +31 -0
- package/dist/auth/revoke.js.map +1 -0
- package/dist/commands/login.d.ts +15 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +34 -10
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +29 -11
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/video.d.ts +35 -0
- package/dist/commands/video.d.ts.map +1 -1
- package/dist/commands/video.js +475 -39
- package/dist/commands/video.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/kit/core/canonical.d.ts +3 -1
- package/dist/kit/core/canonical.d.ts.map +1 -1
- package/dist/kit/core/canonical.js +1 -1
- package/dist/kit/core/canonical.js.map +1 -1
- package/dist/kit/core/check.d.ts +2 -0
- package/dist/kit/core/check.d.ts.map +1 -1
- package/dist/kit/core/check.js +12 -2
- package/dist/kit/core/check.js.map +1 -1
- package/dist/kit/core/detach.d.ts +11 -0
- package/dist/kit/core/detach.d.ts.map +1 -0
- package/dist/kit/core/detach.js +72 -0
- package/dist/kit/core/detach.js.map +1 -0
- package/dist/kit/core/diff.d.ts +5 -0
- package/dist/kit/core/diff.d.ts.map +1 -0
- package/dist/kit/core/diff.js +132 -0
- package/dist/kit/core/diff.js.map +1 -0
- package/dist/kit/core/errors.d.ts +7 -1
- package/dist/kit/core/errors.d.ts.map +1 -1
- package/dist/kit/core/errors.js +11 -1
- package/dist/kit/core/errors.js.map +1 -1
- package/dist/kit/core/eyes.d.ts +80 -0
- package/dist/kit/core/eyes.d.ts.map +1 -0
- package/dist/kit/core/eyes.js +366 -0
- package/dist/kit/core/eyes.js.map +1 -0
- package/dist/kit/core/files.js +2 -2
- package/dist/kit/core/files.js.map +1 -1
- package/dist/kit/core/lock.d.ts +4 -0
- package/dist/kit/core/lock.d.ts.map +1 -0
- package/dist/kit/core/lock.js +13 -0
- package/dist/kit/core/lock.js.map +1 -0
- package/dist/kit/core/log.d.ts +38 -2
- package/dist/kit/core/log.d.ts.map +1 -1
- package/dist/kit/core/log.js +38 -5
- package/dist/kit/core/log.js.map +1 -1
- package/dist/kit/core/outcome.d.ts +114 -0
- package/dist/kit/core/outcome.d.ts.map +1 -0
- package/dist/kit/core/outcome.js +246 -0
- package/dist/kit/core/outcome.js.map +1 -0
- package/dist/kit/core/patch.d.ts +64 -0
- package/dist/kit/core/patch.d.ts.map +1 -0
- package/dist/kit/core/patch.js +289 -0
- package/dist/kit/core/patch.js.map +1 -0
- package/dist/kit/core/paths.d.ts +17 -0
- package/dist/kit/core/paths.d.ts.map +1 -1
- package/dist/kit/core/paths.js +21 -0
- package/dist/kit/core/paths.js.map +1 -1
- package/dist/kit/core/pieces.d.ts +16 -4
- package/dist/kit/core/pieces.d.ts.map +1 -1
- package/dist/kit/core/pieces.js +84 -27
- package/dist/kit/core/pieces.js.map +1 -1
- package/dist/kit/core/progress-reporter.d.ts +21 -4
- package/dist/kit/core/progress-reporter.d.ts.map +1 -1
- package/dist/kit/core/progress-reporter.js +74 -12
- package/dist/kit/core/progress-reporter.js.map +1 -1
- package/dist/kit/core/progress.d.ts +41 -4
- package/dist/kit/core/progress.d.ts.map +1 -1
- package/dist/kit/core/progress.js +105 -18
- package/dist/kit/core/progress.js.map +1 -1
- package/dist/kit/core/refusal-log.d.ts +7 -0
- package/dist/kit/core/refusal-log.d.ts.map +1 -0
- package/dist/kit/core/refusal-log.js +54 -0
- package/dist/kit/core/refusal-log.js.map +1 -0
- package/dist/kit/core/run.d.ts +39 -5
- package/dist/kit/core/run.d.ts.map +1 -1
- package/dist/kit/core/run.js +514 -83
- package/dist/kit/core/run.js.map +1 -1
- package/dist/kit/core/save.d.ts +7 -3
- package/dist/kit/core/save.d.ts.map +1 -1
- package/dist/kit/core/save.js +57 -20
- package/dist/kit/core/save.js.map +1 -1
- package/dist/kit/core/style.d.ts +1 -0
- package/dist/kit/core/style.d.ts.map +1 -1
- package/dist/kit/core/style.js +1 -1
- package/dist/kit/core/style.js.map +1 -1
- package/dist/kit/line/client.d.ts +14 -2
- package/dist/kit/line/client.d.ts.map +1 -1
- package/dist/kit/line/client.js +40 -20
- package/dist/kit/line/client.js.map +1 -1
- package/dist/kit/line/types.d.ts +33 -1
- package/dist/kit/line/types.d.ts.map +1 -1
- package/dist/kit/maker/cues.d.ts +67 -0
- package/dist/kit/maker/cues.d.ts.map +1 -0
- package/dist/kit/maker/cues.js +204 -0
- package/dist/kit/maker/cues.js.map +1 -0
- package/dist/kit/maker/encode.d.ts +5 -0
- package/dist/kit/maker/encode.d.ts.map +1 -1
- package/dist/kit/maker/encode.js +7 -1
- package/dist/kit/maker/encode.js.map +1 -1
- package/dist/kit/maker/facts.d.ts +46 -0
- package/dist/kit/maker/facts.d.ts.map +1 -0
- package/dist/kit/maker/facts.js +159 -0
- package/dist/kit/maker/facts.js.map +1 -0
- package/dist/kit/maker/inputs.d.ts +48 -3
- package/dist/kit/maker/inputs.d.ts.map +1 -1
- package/dist/kit/maker/inputs.js +151 -22
- package/dist/kit/maker/inputs.js.map +1 -1
- package/dist/kit/maker/make.d.ts +20 -1
- package/dist/kit/maker/make.d.ts.map +1 -1
- package/dist/kit/maker/make.js +129 -21
- package/dist/kit/maker/make.js.map +1 -1
- package/dist/kit/maker/page.d.ts.map +1 -1
- package/dist/kit/maker/page.js +49 -1
- package/dist/kit/maker/page.js.map +1 -1
- package/dist/kit/maker/parts/html-frames/1.2.1/part.json +1083 -0
- package/dist/kit/maker/parts/html-frames/src/part.d.ts.map +1 -1
- package/dist/kit/maker/parts/html-frames/src/part.js +4 -1
- package/dist/kit/maker/parts/html-frames/src/part.js.map +1 -1
- package/dist/kit/maker/runtime.d.ts.map +1 -1
- package/dist/kit/maker/runtime.js +54 -7
- package/dist/kit/maker/runtime.js.map +1 -1
- package/dist/kit/maker/timing.d.ts +74 -0
- package/dist/kit/maker/timing.d.ts.map +1 -0
- package/dist/kit/maker/timing.js +152 -0
- package/dist/kit/maker/timing.js.map +1 -0
- package/dist/kit/maker/under.d.ts +126 -0
- package/dist/kit/maker/under.d.ts.map +1 -0
- package/dist/kit/maker/under.js +299 -0
- package/dist/kit/maker/under.js.map +1 -0
- package/dist/kit/parts/catalog.d.ts +3 -20
- package/dist/kit/parts/catalog.d.ts.map +1 -1
- package/dist/kit/parts/catalog.js +6 -41
- package/dist/kit/parts/catalog.js.map +1 -1
- package/dist/kit/parts/loader.d.ts +7 -2
- package/dist/kit/parts/loader.d.ts.map +1 -1
- package/dist/kit/parts/loader.js +88 -23
- package/dist/kit/parts/loader.js.map +1 -1
- package/dist/skills/master-skill.d.ts +4 -6
- package/dist/skills/master-skill.d.ts.map +1 -1
- package/dist/skills/master-skill.js +28 -28
- package/dist/skills/master-skill.js.map +1 -1
- package/dist/skills/routes.js +5 -5
- package/dist/skills/routes.js.map +1 -1
- package/dist/skills/server-entry-skills.d.ts +6 -6
- package/dist/skills/server-entry-skills.d.ts.map +1 -1
- package/dist/skills/server-entry-skills.js +89 -60
- package/dist/skills/server-entry-skills.js.map +1 -1
- package/dist/utils/browser-preflight.d.ts +3 -0
- package/dist/utils/browser-preflight.d.ts.map +1 -1
- package/dist/utils/browser-preflight.js +27 -6
- package/dist/utils/browser-preflight.js.map +1 -1
- package/dist/utils/exit.d.ts +6 -0
- package/dist/utils/exit.d.ts.map +1 -0
- package/dist/utils/exit.js +37 -0
- package/dist/utils/exit.js.map +1 -0
- package/package.json +14 -3
- package/skills/goose-ads/SKILL.md +8 -8
- package/skills/goose-product-photos/SKILL.md +8 -8
- package/skills/goose-video/SKILL.md +29 -595
- package/skills/goose-video-local/SKILL.md +3 -1572
- package/skills/gooseworks/SKILL.md +10 -12
- package/skills/make-custom-video/SKILL.md +25 -672
- package/skills/manifest.json +7 -7
- package/skills/routes.json +3 -3
- package/dist/kit/maker/parts/html-frames/1.1.0/part.json +0 -199
- package/dist/skills/production-video-skills.json +0 -5
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.QUIET_SAFE = void 0;
|
|
37
|
+
exports.probeUnder = probeUnder;
|
|
38
|
+
exports.coverFit = coverFit;
|
|
39
|
+
exports.coverFilter = coverFilter;
|
|
40
|
+
exports.quietBandOf = quietBandOf;
|
|
41
|
+
exports.quietBands = quietBands;
|
|
42
|
+
exports.underIsShared = underIsShared;
|
|
43
|
+
exports.underSceneFrames = underSceneFrames;
|
|
44
|
+
exports.alphaSegmentArgs = alphaSegmentArgs;
|
|
45
|
+
exports.compositeArgs = compositeArgs;
|
|
46
|
+
exports.passThroughTimeline = passThroughTimeline;
|
|
47
|
+
// Drawing a frame page over another step's video (html-frames 1.2.0 `under`).
|
|
48
|
+
// The page is captured transparent, its frames are kept with their alpha in
|
|
49
|
+
// short PNG-in-MOV segments, and one last ffmpeg pass lays them over the video,
|
|
50
|
+
// keeping its sound. Before the page runs, each scene's quiet band (the
|
|
51
|
+
// emptiest horizontal band of its middle frame) is measured here in Node, since
|
|
52
|
+
// a file:// page may not read a video's pixels. Bundled into the part.
|
|
53
|
+
const promises_1 = require("node:fs/promises");
|
|
54
|
+
const path = __importStar(require("node:path"));
|
|
55
|
+
const encode_1 = require("./encode");
|
|
56
|
+
/** The band a quiet band is looked for in, and its height, as fractions of the height. */
|
|
57
|
+
exports.QUIET_SAFE = { top: 0.15, bottom: 0.85, height: 0.15 };
|
|
58
|
+
/** The size the middle frame is measured at: a few pixels a row is plenty for "busy or not". */
|
|
59
|
+
const MEASURE_WIDTH = 96;
|
|
60
|
+
function numberOf(value) {
|
|
61
|
+
const n = typeof value === 'string' ? Number(value) : value;
|
|
62
|
+
return typeof n === 'number' && Number.isFinite(n) ? n : undefined;
|
|
63
|
+
}
|
|
64
|
+
function rateOf(value) {
|
|
65
|
+
if (typeof value !== 'string')
|
|
66
|
+
return null;
|
|
67
|
+
const [a, b] = value.split('/').map(Number);
|
|
68
|
+
const rate = b ? a / b : a;
|
|
69
|
+
return Number.isFinite(rate) && rate > 0 ? rate : null;
|
|
70
|
+
}
|
|
71
|
+
/** Reads the video's picture length, size, frame rate and whether it has sound, with ffprobe. */
|
|
72
|
+
async function probeUnder(tools, file) {
|
|
73
|
+
let parsed;
|
|
74
|
+
try {
|
|
75
|
+
const { stdout } = await tools.exec('ffprobe', [
|
|
76
|
+
'-v', 'error',
|
|
77
|
+
'-show_entries', 'stream=codec_type,width,height,duration,avg_frame_rate,r_frame_rate:format=duration',
|
|
78
|
+
'-of', 'json', file,
|
|
79
|
+
]);
|
|
80
|
+
parsed = JSON.parse(stdout);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
const streams = parsed.streams ?? [];
|
|
86
|
+
const video = streams.find((s) => s.codec_type === 'video');
|
|
87
|
+
if (!video)
|
|
88
|
+
return null;
|
|
89
|
+
const width = numberOf(video.width);
|
|
90
|
+
const height = numberOf(video.height);
|
|
91
|
+
const seconds = numberOf(video.duration) ?? numberOf(parsed.format?.duration);
|
|
92
|
+
if (!width || !height || !seconds || seconds <= 0)
|
|
93
|
+
return null;
|
|
94
|
+
return {
|
|
95
|
+
seconds,
|
|
96
|
+
width,
|
|
97
|
+
height,
|
|
98
|
+
fps: rateOf(video.avg_frame_rate) ?? rateOf(video.r_frame_rate),
|
|
99
|
+
hasAudio: streams.some((s) => s.codec_type === 'audio'),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function coverFit(from, to) {
|
|
103
|
+
const scale = Math.max(to.width / from.width, to.height / from.height);
|
|
104
|
+
return { scale, offsetX: (from.width * scale - to.width) / 2, offsetY: (from.height * scale - to.height) / 2 };
|
|
105
|
+
}
|
|
106
|
+
/** The ffmpeg filter that fits the video to the page: cover, centre crop, square pixels. */
|
|
107
|
+
function coverFilter(size) {
|
|
108
|
+
return `scale=${size.width}:${size.height}:force_original_aspect_ratio=increase:flags=bicubic,crop=${size.width}:${size.height},setsar=1`;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* The emptiest band of a grey picture: rows are scored by how much the picture
|
|
112
|
+
* changes along and down them (the per-row gradient), and the band of
|
|
113
|
+
* QUIET_SAFE.height whose rows change least, inside QUIET_SAFE, wins. Ties go
|
|
114
|
+
* to the band nearer the bottom, where captions usually sit.
|
|
115
|
+
*/
|
|
116
|
+
function quietBandOf(gray, width, height) {
|
|
117
|
+
const rows = new Float64Array(height);
|
|
118
|
+
for (let y = 0; y < height; y++) {
|
|
119
|
+
let sum = 0;
|
|
120
|
+
const row = y * width;
|
|
121
|
+
for (let x = 0; x < width; x++) {
|
|
122
|
+
const v = gray[row + x];
|
|
123
|
+
if (x + 1 < width)
|
|
124
|
+
sum += Math.abs(gray[row + x + 1] - v);
|
|
125
|
+
if (y + 1 < height)
|
|
126
|
+
sum += Math.abs(gray[row + width + x] - v);
|
|
127
|
+
}
|
|
128
|
+
rows[y] = sum / width;
|
|
129
|
+
}
|
|
130
|
+
const band = Math.max(1, Math.round(exports.QUIET_SAFE.height * height));
|
|
131
|
+
const first = Math.ceil(exports.QUIET_SAFE.top * height);
|
|
132
|
+
const last = Math.max(first, Math.floor(exports.QUIET_SAFE.bottom * height) - band);
|
|
133
|
+
let best = first;
|
|
134
|
+
let bestScore = Infinity;
|
|
135
|
+
for (let y0 = first; y0 <= last; y0++) {
|
|
136
|
+
let score = 0;
|
|
137
|
+
for (let y = y0; y < y0 + band && y < height; y++)
|
|
138
|
+
score += rows[y];
|
|
139
|
+
// A band must be clearly quieter to win over one further down.
|
|
140
|
+
if (score <= bestScore + 1e-9) {
|
|
141
|
+
best = y0;
|
|
142
|
+
bestScore = score;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const round = (n) => Math.round(n * 10000) / 10000;
|
|
146
|
+
return { y0: round(best / height), y1: round(Math.min(height, best + band) / height) };
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Each scene's quiet band, from the video's frame at the middle of the scene,
|
|
150
|
+
* fitted to the page the way the last pass fits it (cover, centre crop), so the
|
|
151
|
+
* band describes what shows. Frames are read one at a time as raw grey pixels into `dir`.
|
|
152
|
+
*/
|
|
153
|
+
async function quietBands(tools, file, info, times, dir, page) {
|
|
154
|
+
const width = MEASURE_WIDTH;
|
|
155
|
+
const height = Math.max(2, Math.round((page.height / page.width) * width));
|
|
156
|
+
const bands = [];
|
|
157
|
+
for (let i = 0; i < times.length; i++) {
|
|
158
|
+
const middle = Math.min(Math.max(0, (times[i].start_s + times[i].end_s) / 2), Math.max(0, info.seconds - 0.05));
|
|
159
|
+
const out = path.join(dir, `quiet-${i}.gray`);
|
|
160
|
+
await tools.exec('ffmpeg', [
|
|
161
|
+
'-hide_banner', '-nostdin', '-loglevel', 'error', '-y',
|
|
162
|
+
'-ss', middle.toFixed(3), '-i', file,
|
|
163
|
+
'-frames:v', '1', '-an',
|
|
164
|
+
'-vf', `${coverFilter({ width, height })},format=gray`,
|
|
165
|
+
'-f', 'rawvideo', '-pix_fmt', 'gray', out,
|
|
166
|
+
]);
|
|
167
|
+
const gray = await (0, promises_1.readFile)(out);
|
|
168
|
+
await (0, promises_1.rm)(out, { force: true });
|
|
169
|
+
bands.push(gray.length >= width * height ? quietBandOf(gray, width, height) : { y0: 0.7, y1: 0.85 });
|
|
170
|
+
}
|
|
171
|
+
return bands;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* True when the plan's scenes share the video drawn over evenly: that video is
|
|
175
|
+
* one scene (one clip, say) and the plan has several.
|
|
176
|
+
*/
|
|
177
|
+
function underIsShared(ids, timeline) {
|
|
178
|
+
return timeline.scenes.length === 1 && ids.length > 1;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Scene start frames from the timeline of the video drawn over. Each plan scene
|
|
182
|
+
* takes the time of the timeline scene with its id; when ids do not match and
|
|
183
|
+
* both list the same number of scenes, they pair in order. When that video is
|
|
184
|
+
* one scene and the plan has several, the plan's scenes share it evenly on
|
|
185
|
+
* whole frames, as they share a video of a given length. Returns null when the
|
|
186
|
+
* scenes cannot be paired.
|
|
187
|
+
*/
|
|
188
|
+
function underSceneFrames(ids, timeline, fps, frameCount) {
|
|
189
|
+
if (underIsShared(ids, timeline)) {
|
|
190
|
+
if (frameCount < ids.length)
|
|
191
|
+
return null;
|
|
192
|
+
const shared = ids.map((_, i) => Math.round((i * frameCount) / ids.length));
|
|
193
|
+
shared.push(frameCount);
|
|
194
|
+
return shared;
|
|
195
|
+
}
|
|
196
|
+
const byId = new Map(timeline.scenes.map((s) => [s.id, s]));
|
|
197
|
+
const matched = ids.map((id) => byId.get(id) ?? null);
|
|
198
|
+
let spans;
|
|
199
|
+
if (matched.every((s) => s))
|
|
200
|
+
spans = matched;
|
|
201
|
+
else if (timeline.scenes.length === ids.length)
|
|
202
|
+
spans = ids.map((id, i) => byId.get(id) ?? timeline.scenes[i]);
|
|
203
|
+
else
|
|
204
|
+
return null;
|
|
205
|
+
const frames = spans.map((s) => Math.min(frameCount, Math.max(0, Math.round(s.start_s * fps))));
|
|
206
|
+
for (let i = 1; i < frames.length; i++)
|
|
207
|
+
if (frames[i] < frames[i - 1])
|
|
208
|
+
return null;
|
|
209
|
+
frames.push(frameCount);
|
|
210
|
+
return frames;
|
|
211
|
+
}
|
|
212
|
+
/** One segment of transparent page frames, kept with their alpha (PNG in MOV), to be laid over the video later. */
|
|
213
|
+
function alphaSegmentArgs(opts) {
|
|
214
|
+
return [
|
|
215
|
+
'-hide_banner', '-nostdin', '-loglevel', 'error', '-y',
|
|
216
|
+
'-framerate', String(opts.fps),
|
|
217
|
+
'-start_number', String(opts.start),
|
|
218
|
+
'-i', `${opts.framesDir}/${opts.framePattern}`,
|
|
219
|
+
'-frames:v', String(opts.count),
|
|
220
|
+
'-c:v', 'png', '-pix_fmt', 'rgba',
|
|
221
|
+
'-fflags', '+bitexact', '-flags', '+bitexact', '-map_metadata', '-1',
|
|
222
|
+
'-an', '-r', String(opts.fps),
|
|
223
|
+
opts.out,
|
|
224
|
+
];
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* The last pass: the video fitted to the page, the page's frames laid over it,
|
|
228
|
+
* encoded like every html-frames video, with the video's sound kept as AAC.
|
|
229
|
+
*/
|
|
230
|
+
function compositeArgs(opts) {
|
|
231
|
+
const seconds = (opts.frames / opts.fps).toFixed(6);
|
|
232
|
+
const graph = [
|
|
233
|
+
`[0:v]setpts=PTS-STARTPTS,fps=${opts.fps},${coverFilter(opts.size)}[base]`,
|
|
234
|
+
`[1:v]setpts=PTS-STARTPTS,format=rgba[page]`,
|
|
235
|
+
`[base][page]overlay=0:0:format=auto:eof_action=pass:shortest=0,scale=out_color_matrix=bt709:out_range=tv,format=yuv420p[v]`,
|
|
236
|
+
].join(';');
|
|
237
|
+
return [
|
|
238
|
+
'-hide_banner', '-nostdin', '-loglevel', 'error', '-y',
|
|
239
|
+
'-i', opts.under,
|
|
240
|
+
'-f', 'concat', '-safe', '0', '-i', opts.list,
|
|
241
|
+
'-filter_complex', graph,
|
|
242
|
+
'-map', '[v]',
|
|
243
|
+
...(opts.hasAudio ? ['-map', '0:a:0'] : []),
|
|
244
|
+
'-frames:v', String(opts.frames),
|
|
245
|
+
...opts.tools.encodeArgs('h264-master'),
|
|
246
|
+
...encode_1.MASTER_RATE_CAP,
|
|
247
|
+
'-c:v', 'libx264',
|
|
248
|
+
'-pix_fmt', 'yuv420p',
|
|
249
|
+
'-colorspace', 'bt709', '-color_primaries', 'bt709', '-color_trc', 'bt709', '-color_range', 'tv',
|
|
250
|
+
...(opts.hasAudio ? [...opts.tools.encodeArgs('aac'), '-t', seconds] : ['-an']),
|
|
251
|
+
'-r', String(opts.fps),
|
|
252
|
+
opts.out,
|
|
253
|
+
];
|
|
254
|
+
}
|
|
255
|
+
/** A zone of the video drawn over, moved onto the page's picture (scaled to cover, cropped to the middle). */
|
|
256
|
+
function fitZone(zone, fit, size) {
|
|
257
|
+
const x0 = Math.max(0, zone.x * fit.scale - fit.offsetX);
|
|
258
|
+
const y0 = Math.max(0, zone.y * fit.scale - fit.offsetY);
|
|
259
|
+
const x1 = Math.min(size.width, (zone.x + zone.w) * fit.scale - fit.offsetX);
|
|
260
|
+
const y1 = Math.min(size.height, (zone.y + zone.h) * fit.scale - fit.offsetY);
|
|
261
|
+
if (x1 - x0 < 1 || y1 - y0 < 1)
|
|
262
|
+
return null;
|
|
263
|
+
return { ...zone, x: Math.round(x0), y: Math.round(y0), w: Math.round(x1 - x0), h: Math.round(y1 - y0) };
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* The timeline of a video drawn over: the video's own scenes, speech, end card
|
|
267
|
+
* and safe zones carried through (cut to the new length, zones moved to the
|
|
268
|
+
* new picture), with this video's length, size and frame rate. When the plan's
|
|
269
|
+
* scenes shared a one-scene video (`scenes` given), they are the scenes, and a
|
|
270
|
+
* speech entry that names a scene names the one it starts in.
|
|
271
|
+
*/
|
|
272
|
+
function passThroughTimeline(under, out, scenes) {
|
|
273
|
+
const end = out.duration_s;
|
|
274
|
+
const cut = (items) => items.filter((item) => item.start_s < end).map((item) => (item.end_s > end ? { ...item, end_s: end } : item));
|
|
275
|
+
let speech = cut(under.speech);
|
|
276
|
+
if (scenes?.length) {
|
|
277
|
+
const sceneAt = (t) => scenes.find((s) => t < s.end_s) ?? scenes[scenes.length - 1];
|
|
278
|
+
speech = speech.map((entry) => (typeof entry.scene_id === 'string' ? { ...entry, scene_id: sceneAt(entry.start_s).id } : entry));
|
|
279
|
+
}
|
|
280
|
+
const timeline = {
|
|
281
|
+
duration_s: out.duration_s,
|
|
282
|
+
width: out.width,
|
|
283
|
+
height: out.height,
|
|
284
|
+
fps: out.fps,
|
|
285
|
+
scenes: cut((scenes ?? under.scenes).map((s) => ({ id: s.id, start_s: s.start_s, end_s: s.end_s }))),
|
|
286
|
+
speech,
|
|
287
|
+
};
|
|
288
|
+
if (under.end_card && under.end_card.start_s < end)
|
|
289
|
+
timeline.end_card = { start_s: under.end_card.start_s, end_s: Math.min(end, under.end_card.end_s) };
|
|
290
|
+
const fit = coverFit({ width: under.width, height: under.height }, out);
|
|
291
|
+
const zones = (under.safe_zones ?? [])
|
|
292
|
+
.map((z) => fitZone(z, fit, out))
|
|
293
|
+
.filter((z) => !!z)
|
|
294
|
+
.slice(0, 8);
|
|
295
|
+
if (zones.length)
|
|
296
|
+
timeline.safe_zones = zones;
|
|
297
|
+
return timeline;
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=under.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"under.js","sourceRoot":"","sources":["../../../src/kit/maker/under.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,8 @@
|
|
|
1
1
|
import type { ModelNeed } from '../part-interface';
|
|
2
|
-
export declare const MAX_INDEX_BYTES: number;
|
|
3
2
|
export declare const MAX_WITHDRAWN_BYTES: number;
|
|
4
3
|
export type FetchLike = (url: string, init: {
|
|
5
4
|
signal: AbortSignal;
|
|
6
5
|
}) => Promise<Response>;
|
|
7
|
-
export interface IndexEntry {
|
|
8
|
-
id: string;
|
|
9
|
-
version: string;
|
|
10
|
-
kit: string;
|
|
11
|
-
files: Record<string, string>;
|
|
12
|
-
models: ModelNeed[];
|
|
13
|
-
}
|
|
14
|
-
export interface PartsCatalog {
|
|
15
|
-
/** `${id}@${version}` → entry. */
|
|
16
|
-
index: Map<string, IndexEntry>;
|
|
17
|
-
/** `${id}@${version}` of every withdrawn version. */
|
|
18
|
-
withdrawn: Set<string>;
|
|
19
|
-
}
|
|
20
6
|
export declare class CatalogError extends Error {
|
|
21
7
|
}
|
|
22
8
|
export declare const partKey: (id: string, version: string) => string;
|
|
@@ -28,9 +14,6 @@ export declare function fileHashes(value: unknown): Record<string, string> | nul
|
|
|
28
14
|
export declare function modelList(value: unknown): ModelNeed[] | null;
|
|
29
15
|
/** The same models, in any order. */
|
|
30
16
|
export declare function sameModels(a: readonly ModelNeed[], b: readonly ModelNeed[]): boolean;
|
|
31
|
-
/** The same paths with the same hashes. */
|
|
32
|
-
export declare function sameFiles(a: Record<string, string>, b: Record<string, string>): boolean;
|
|
33
|
-
export declare function parseIndex(raw: unknown): Map<string, IndexEntry>;
|
|
34
17
|
export declare function parseWithdrawn(raw: unknown): Set<string>;
|
|
35
18
|
/** GETs `url` with a timeout and a byte limit. Throws CatalogError with plain words. */
|
|
36
19
|
export declare function fetchBytes(fetchImpl: FetchLike, url: string, opts: {
|
|
@@ -39,9 +22,9 @@ export declare function fetchBytes(fetchImpl: FetchLike, url: string, opts: {
|
|
|
39
22
|
signal?: AbortSignal;
|
|
40
23
|
what: string;
|
|
41
24
|
}): Promise<Buffer>;
|
|
42
|
-
/** Reads
|
|
43
|
-
export declare function
|
|
25
|
+
/** Reads `<rawBase>/parts/withdrawn.json`: `${id}@${version}` of every withdrawn version. */
|
|
26
|
+
export declare function fetchWithdrawn(fetchImpl: FetchLike, rawBase: string, opts: {
|
|
44
27
|
timeoutMs: number;
|
|
45
28
|
signal?: AbortSignal;
|
|
46
|
-
}): Promise<
|
|
29
|
+
}): Promise<Set<string>>;
|
|
47
30
|
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/kit/parts/catalog.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/kit/parts/catalog.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAO,MAAM,mBAAmB,QAAc,CAAC;AAE/C,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE1F,qBAAa,YAAa,SAAQ,KAAK;CAAG;AAE1C,eAAO,MAAM,OAAO,GAAI,IAAI,MAAM,EAAE,SAAS,MAAM,KAAG,MAA4B,CAAC;AAMnF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAqBxE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,IAAI,CAU5D;AAED,qCAAqC;AACrC,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAGpF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAcxD;AAED,wFAAwF;AACxF,wBAAsB,UAAU,CAC9B,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChF,OAAO,CAAC,MAAM,CAAC,CAgDjB;AAUD,6FAA6F;AAC7F,wBAAsB,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAGnJ"}
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.partKey = exports.CatalogError = exports.MAX_WITHDRAWN_BYTES =
|
|
3
|
+
exports.partKey = exports.CatalogError = exports.MAX_WITHDRAWN_BYTES = void 0;
|
|
4
4
|
exports.isPartId = isPartId;
|
|
5
5
|
exports.isSafeFilePath = isSafeFilePath;
|
|
6
6
|
exports.fileHashes = fileHashes;
|
|
7
7
|
exports.modelList = modelList;
|
|
8
8
|
exports.sameModels = sameModels;
|
|
9
|
-
exports.sameFiles = sameFiles;
|
|
10
|
-
exports.parseIndex = parseIndex;
|
|
11
9
|
exports.parseWithdrawn = parseWithdrawn;
|
|
12
10
|
exports.fetchBytes = fetchBytes;
|
|
13
|
-
exports.
|
|
14
|
-
const semver_1 = require("./semver");
|
|
15
|
-
exports.MAX_INDEX_BYTES = 8 * 1024 * 1024;
|
|
11
|
+
exports.fetchWithdrawn = fetchWithdrawn;
|
|
16
12
|
exports.MAX_WITHDRAWN_BYTES = 1024 * 1024;
|
|
17
13
|
class CatalogError extends Error {
|
|
18
14
|
}
|
|
@@ -79,31 +75,6 @@ function sameModels(a, b) {
|
|
|
79
75
|
const key = (list) => list.map((m) => `${m.provider}\u0000${m.model}`).sort().join('\u0001');
|
|
80
76
|
return a.length === b.length && key(a) === key(b);
|
|
81
77
|
}
|
|
82
|
-
/** The same paths with the same hashes. */
|
|
83
|
-
function sameFiles(a, b) {
|
|
84
|
-
const keys = Object.keys(a);
|
|
85
|
-
return keys.length === Object.keys(b).length && keys.every((file) => Object.prototype.hasOwnProperty.call(b, file) && b[file] === a[file]);
|
|
86
|
-
}
|
|
87
|
-
function parseIndex(raw) {
|
|
88
|
-
const body = raw;
|
|
89
|
-
if (!body || typeof body !== 'object' || body.interface !== 1 || !Array.isArray(body.parts)) {
|
|
90
|
-
throw new CatalogError('The published parts list is not in a shape this kit reads.');
|
|
91
|
-
}
|
|
92
|
-
const index = new Map();
|
|
93
|
-
for (const item of body.parts) {
|
|
94
|
-
const entry = item;
|
|
95
|
-
if (!entry || !isPartId(entry.id) || !(0, semver_1.isExactVersion)(entry.version))
|
|
96
|
-
continue;
|
|
97
|
-
const files = fileHashes(entry.files);
|
|
98
|
-
const models = modelList(entry.models);
|
|
99
|
-
if (!files || !models || typeof entry.kit !== 'string') {
|
|
100
|
-
// A broken row cannot vouch for its part; the part is then refused as unlisted.
|
|
101
|
-
continue;
|
|
102
|
-
}
|
|
103
|
-
index.set((0, exports.partKey)(entry.id, entry.version), { id: entry.id, version: entry.version, kit: entry.kit, files, models });
|
|
104
|
-
}
|
|
105
|
-
return index;
|
|
106
|
-
}
|
|
107
78
|
function parseWithdrawn(raw) {
|
|
108
79
|
const body = raw;
|
|
109
80
|
if (!body || typeof body !== 'object' || !Array.isArray(body.withdrawn)) {
|
|
@@ -184,15 +155,9 @@ function parseJson(bytes, what) {
|
|
|
184
155
|
throw new CatalogError(`${what} is not valid JSON.`);
|
|
185
156
|
}
|
|
186
157
|
}
|
|
187
|
-
/** Reads
|
|
188
|
-
async function
|
|
189
|
-
const
|
|
190
|
-
|
|
191
|
-
fetchBytes(fetchImpl, `${rawBase}/parts/withdrawn.json`, { ...opts, maxBytes: exports.MAX_WITHDRAWN_BYTES, what: 'the list of withdrawn parts' }),
|
|
192
|
-
]);
|
|
193
|
-
return {
|
|
194
|
-
index: parseIndex(parseJson(indexBytes, 'The published parts list')),
|
|
195
|
-
withdrawn: parseWithdrawn(parseJson(withdrawnBytes, 'The list of withdrawn parts')),
|
|
196
|
-
};
|
|
158
|
+
/** Reads `<rawBase>/parts/withdrawn.json`: `${id}@${version}` of every withdrawn version. */
|
|
159
|
+
async function fetchWithdrawn(fetchImpl, rawBase, opts) {
|
|
160
|
+
const bytes = await fetchBytes(fetchImpl, `${rawBase}/parts/withdrawn.json`, { ...opts, maxBytes: exports.MAX_WITHDRAWN_BYTES, what: 'the list of withdrawn parts' });
|
|
161
|
+
return parseWithdrawn(parseJson(bytes, 'The list of withdrawn parts'));
|
|
197
162
|
}
|
|
198
163
|
//# sourceMappingURL=catalog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/kit/parts/catalog.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/kit/parts/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ import { type FetchLike } from './catalog';
|
|
|
3
3
|
/** part-interface.md section 4, rule 7. */
|
|
4
4
|
export declare const MAX_ENTRY_BYTES: number;
|
|
5
5
|
export declare const MAX_FOLDER_BYTES: number;
|
|
6
|
-
export type PartLoadCode = 'not_locked' | 'withdrawn' | 'not_published' | 'hash_mismatch' | '
|
|
7
|
-
/** A part that must not run. The message is plain and names the part
|
|
6
|
+
export type PartLoadCode = 'not_locked' | 'withdrawn' | 'not_published' | 'hash_mismatch' | 'manifest_mismatch' | 'kit_range' | 'too_large' | 'unreachable' | 'dev_refused' | 'bad_cache' | 'bad_part';
|
|
7
|
+
/** A part that must not run. The message is plain and names the part. */
|
|
8
8
|
export declare class PartLoadError extends Error {
|
|
9
9
|
readonly code: PartLoadCode;
|
|
10
10
|
constructor(code: PartLoadCode, message: string);
|
|
@@ -27,6 +27,11 @@ export interface PartLoadRequest {
|
|
|
27
27
|
home: string;
|
|
28
28
|
env: NodeJS.ProcessEnv;
|
|
29
29
|
signal: AbortSignal;
|
|
30
|
+
/** An edited copy of this part to run instead: its folder and every file's expected hash. */
|
|
31
|
+
patched?: {
|
|
32
|
+
dir: string;
|
|
33
|
+
files: Record<string, string>;
|
|
34
|
+
};
|
|
30
35
|
}
|
|
31
36
|
export interface PartLoaderOptions {
|
|
32
37
|
/** This kit's version, checked against each part's kit range. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/kit/parts/loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/kit/parts/loader.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAyB,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG1G,OAAO,EAAkH,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAI3J,2CAA2C;AAC3C,eAAO,MAAM,eAAe,QAAkB,CAAC;AAC/C,eAAO,MAAM,gBAAgB,QAAmB,CAAC;AAGjD,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,WAAW,GACX,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,WAAW,GACX,WAAW,GACX,aAAa,GACb,aAAa,GACb,WAAW,GACX,UAAU,CAAC;AAEf,yEAAyE;AACzE,qBAAa,aAAc,SAAQ,KAAK;IAEpC,QAAQ,CAAC,IAAI,EAAE,YAAY;gBAAlB,IAAI,EAAE,YAAY,EAC3B,OAAO,EAAE,MAAM;CAKlB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,KAAK,CAAC;CAC7B;AAED,uEAAuE;AACvE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,OAAO,CAAC;IACb,+CAA+C;IAC/C,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,sEAAsE;IACtE,GAAG,EAAE,OAAO,CAAC;IACb,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,6FAA6F;IAC7F,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CAC1D;AAED,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACrD;AA8GD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAkOvE;AAED,0EAA0E;AAC1E,wBAAgB,QAAQ,CACtB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,GAAG,IAAI,EACtB,OAAO,EAAE,iBAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAC1G,OAAO,CAAC,UAAU,CAAC,CASrB"}
|