@pictx/gemini-veo-watermark-remover 0.2.2

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/gemini.js ADDED
@@ -0,0 +1,596 @@
1
+ // src/core/gemini/geminiConfig.js
2
+ var LARGE_IMAGE_THRESHOLD = 1024;
3
+ var GEMINI_WATERMARK_PROFILES = {
4
+ current: {
5
+ small: { size: 36, alphaMapKey: "gemini-v2-36" },
6
+ large: { size: 96, margin: 192, alphaMapKey: "gemini-v2-96" }
7
+ },
8
+ legacy: {
9
+ small: { size: 48, margin: 32, alphaMapKey: "gemini-48" },
10
+ large: { size: 96, margin: 64, alphaMapKey: "gemini-96" }
11
+ }
12
+ };
13
+ var GEMINI_WATERMARK_SIZES = GEMINI_WATERMARK_PROFILES.legacy;
14
+ function normalizeGeminiProfile(profile) {
15
+ const value = typeof profile === "object" && profile ? profile.profile : profile;
16
+ if (value === "legacy" || value === "v1" || value === "V1") return "legacy";
17
+ return "current";
18
+ }
19
+ function getWatermarkTier(width, height) {
20
+ return width > LARGE_IMAGE_THRESHOLD && height > LARGE_IMAGE_THRESHOLD ? "large" : "small";
21
+ }
22
+ function calculateCurrentSmallMargin(width, height) {
23
+ const longSide = Math.max(width, height);
24
+ const shortSide = Math.min(width, height);
25
+ let sourceLongDim;
26
+ if (shortSide >= 566) {
27
+ sourceLongDim = 2752;
28
+ } else if (shortSide >= 550) {
29
+ sourceLongDim = 2816;
30
+ } else {
31
+ sourceLongDim = 2848;
32
+ }
33
+ return Math.round(192 * (longSide / sourceLongDim));
34
+ }
35
+ function detectGeminiWatermarkConfig(width, height, profile = "current") {
36
+ const normalizedProfile = normalizeGeminiProfile(profile);
37
+ const tier = getWatermarkTier(width, height);
38
+ const config = GEMINI_WATERMARK_PROFILES[normalizedProfile][tier];
39
+ const margin = config.margin ?? calculateCurrentSmallMargin(width, height);
40
+ const minDim = config.size + margin;
41
+ if (width < minDim || height < minDim) return null;
42
+ return { tier, profile: normalizedProfile, ...config, margin };
43
+ }
44
+ function calculateGeminiWatermarkPosition(width, height, profile = "current") {
45
+ const config = detectGeminiWatermarkConfig(width, height, profile);
46
+ if (!config) return null;
47
+ return {
48
+ x: width - config.margin - config.size,
49
+ y: height - config.margin - config.size,
50
+ width: config.size,
51
+ height: config.size
52
+ };
53
+ }
54
+ function getGeminiWatermarkInfo(width, height, profile = "current") {
55
+ const config = detectGeminiWatermarkConfig(width, height, profile);
56
+ if (!config) return null;
57
+ return {
58
+ profile: config.profile,
59
+ tier: config.tier,
60
+ alphaMapKey: config.alphaMapKey,
61
+ size: config.size,
62
+ margin: config.margin,
63
+ position: {
64
+ x: width - config.margin - config.size,
65
+ y: height - config.margin - config.size,
66
+ width: config.size,
67
+ height: config.size
68
+ }
69
+ };
70
+ }
71
+
72
+ // src/core/calibratedAlphaData.js
73
+ var CALIBRATED_ALPHA_ENTRIES = {
74
+ "gemini-v2-36": { width: 36, height: 36, source: "GeminiWatermarkTool/bg_b_36", dataBase64: "AgICAgICAgICAgICAgICAwI0OAICAwICAgICAgIDAgICAgICAgICAgICAgICAgMCAgIDAAtMTAsBAwIDAgIDAgICAgICAgICAgICAgICAgICAgICAgMDABxSURwAAwICAgICAgICAgICAgECAgICAgICAgICAgICAgICAjVSUjUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMBD0pSUUwWAAICAQECAgICAQECAgECAgICAgICAgMCAgICAgMBLVJPTlM1AgICAgMCAgIBAgICAgIBAgICAgICAwMDAgICAwERS1JOTlFNFgADAgICAgICAgIBAQECAgICAgICAgICAgIDAQI7VE5OTk5TNwECAQICAQICAQEBAgECAgICAgICAgICAgMDACRQUE1OTk1QUCYAAwMCAQICAgICAgEBAgICAgICAgICAgMAGk5QTU5OT09NUU4bAAICAgECAgIDAgICAgICAgICAgMDAwAUR1NPTk5OTk9OTVJHEwACAgICAgECAgICAgICAwMCAwMDABNGU05NTk5OTk5NTk5SRRMAAgIBAgICAgICAgICAgICAwIBG0dTTk5OTk5OTk5OTk5OU0caAQEDAgICAgICAgICAgIDAAIoTlJOTk5OTk5OTk5OTU9OTlJOJAIAAgMCAQICAgMCAgABFjhPUU5NTk5OTk9OTk5NTk9OTk5RUDsRAQECAwQCAgAAARU1TFNPTU5OTk5OTk5OTk5NTk5OTk5NUFRLLQ8CAAACAgscNExTUU5OTk1OTk1OTk1OTk5OTk1NTk5OTU1SUUo0GwoBN0xRUlFOTU5NTk5NTk5NTk5NTU5NTk5NTk5NTk9NTlFRUUwzNExSUlJPTU5OTk5OTk5OTk5OTk5OTk5OTk5OTk5NTlBSUUw3AQocNEpSUk5NTk5OTk5OTk5OTk1OTk5OTk5OTU5RUkw0HAoCAgAAAg8tS1RQTU5OTk5NTk5OTk5NTk5OTU5NUFNMNRYCAAACAgMDAgABETtQUU5OTk5OTk5OTk1OTk5OTk1RUDgVAQACAgICAgICAwMDAAMkTVNOTk5OTk1OTk1OTk5OTlFOJwIBAQICAgIBAgICAgIBAwEBG0hTTk1OTk5OTk5NTk5OU0gaAAICAgICAgICAwICAgICAgMDABRHU05OTk5OTk5OTk1TRhMAAgICAgICAgICAgICAgICAgICAgATSFJOTk5OT05OTVJHEwADAgECAwICAgIDAgICAgICAgIBAgMAGk5RTU5NTk5NUE4aAAMCAgIBAgMDAwMDAgICAgICAgICAgMDASdQT05OTk1QUSUAAwMDAgICAgICAgICAgICAgICAQEBAgIDAQI5Uk5OTk1TOwICAgICAgIDAgIDAgIDAgICAgICAgIBAgICAgAVTVJNTlJLEQACAgIBAgICAgICAgMCAgICAgICAgICAgICAgIBNVNOT1EtAQICAgICAgICAgICAgICAgICAgICAgICAgICAgMBFk1RUUoPAAMDAgICAgIDAgIDAgICAgICAgICAgICAgICAgICAjVSUjUCAwMCAgIDAwMDAgICAgIDAgICAgICAgICAgICAgICABxSUhwAAwMCAgMCAgICAgMCAgIDAgIDAgMCAgICAgICAgIDAQtMTAoBAgICAgICAQECAQEDAgICAgICAgICAgICAgICAgICAgI2MwEBAgICAgICAgICAgICAgIB" },
75
+ "gemini-v2-96": { width: 96, height: 96, source: "GeminiWatermarkTool/bg_b_96", dataBase64: "AgMCAgICAgMCAwICAgICAgIDAgICAgICAgMCAgMCAgICAwICAQICAgIEAwIBDis+QjIQAQICAgICAwICAwICAwMDAwICAgICAgQBAgMDAwMDAwICAgICAgIDAgICAgICAgIDAgIDAgIDAgICAgMCAgICAgICAwICAgECAgIDAgICAwICAQMBAgMDAgIEFTFFRzcXBQMEAwMDAgMCAgMCAwICAgMCAwIDAgIBAQIDAgMDAgEBAwQCAgICAgICAwICAgICAgICAwICAgECAgECAgICAgMCAgICAgICAgICAgICAgICAgICAgICAQMJHDlPUDweCQICAgICAwIDAwICAgICAgICAwICAwICAgEBAgICAQICAgIAAgMBAgIDAgICAwICAgICAwICAgICAgMCAgMCAQICAgICAgICAgMCAgICAwIDAgICAgIDAgIPKURZWUYqEAMDAgIDAgICAgMCAwICAgIDAgIBAgICAwEBAwIBAQICAgIBAgMCAQIDAgICAgICAgIDAgICAgICAgQCAwICAgICAwICAgICAwMDAgICAgICAgMCAgICAgIZNE1dXkwzGQMEAQMCAwIDAwMDAgMCAgICAwIDAgIDAgICAgICAgIDAwMCAgICAgICAwICAgICAgIDAgICAwIDAgMCAgIDAgICAwICAgMCAgQDAgIDAwIDAgMCAgICAgUeN01cXE02HgUCAgMCAwIBAQMCAgIDAQECAwIDAwICAgIDAgICAwICAgMCAgIDAgICAwICAgICAgICAgMCAgICAwMDAwMDAgICAQICAgMCAgMCAwICAgIDAgIDAwIBBA8oO0tZWUo8KA4FAQMCAwMDAgMDAgICAgMCAgICAgIBAgICAgICAgECAgMBAQICAQECAgICAgIDAgICAgICAgICAwICAwICAwMCAgICAwMDAgIDAgIDAgIDAgMCAwIBCBg1Q0xWVkxCNhgHAQMCAgIDAgICAwICAgICAwICAgMCAwICAgICAgICAgIBAQICAQECAgICAQICAgMCAwMCAwICAgICAwEDAwIDAgICAgMCAgICAwICAwMCAgICAgICBh49SE1VVU5HPh0HAQIBBAMCAgICAgIDAgICAgICAgMCAwICAgIDAwICAgICAgIEAgMCAgICAgICAgIDAgIDAwICAwMDAgICAwICAgICAgICAgIDAgICAgICAgMCAwICDSlIT09SUk1OSCkPAgIDAgICAgMCAgICAgICAwIDAgICAgIDAgICAgICAgMCAgIBAgICAwIDAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgMCAgIDAgICAgICAgIEGDRRU05QUE5SUTYaBQICAgEDAgICAgICAAECAgICAgICAgMDAgICAgABAgICAgICAAECAwECAQICAgICAgICAgICAwICAgICAgICAgIBAgICAgICAgICAgEDAQMCAgIJJD1VVU9PT05UUz8pEAICAgICAgICAgICAAECAgICAgICAgICAgICAgABAgICAwICAAECAwECAgICAgEEAQICAgECAgMCAgICAgICAwICAgICAgIDAgICAgICAgMCAgMYMEZWVk9OTk9UVUg5IwsDAgIBAgMCAgICAgICAwEBAgICAgEDAgICAgICAgMCAgICAQICAwICAgMCAwIDAgICAwIDAgQCAgIDAgICAwICAgICAgIDAgICAwICAgQCAwkkOEhVVE9OTk9SVEtCLxEDAwECAgMCAgIDAgICAwEBAgMCAgIDAgICAwICAgMCAgIEAgICAwICAgMCAgICAgIDAgICAwICAwIDAgMDAwICAgMCAgMCAgICAgICAwMDBRMyQktTUk5OTk9RUkxJPBgGAgMCAgICAgIDAgIDAwICAwMBAgICAQECAgICAgMBAQICAgICAgEBAgICAgICAgIDAwICAgMCAwMDAgICAwIDAgICAgMCAgIDAgMDAgMCDCREUE1QUE9OTk5PT09TSigQAgIDAgICAgMCAwMCAgICAwICAgICAAECAgIDAwIAAAICAgICAgABAgMCAgICAgMCAwICAgIDAgIEAwMDAwMDAgQCAgIEAgIDAwMCAwICEi9MVlBQUE5PTk9OTk9VTzQbBQIDAgICAgICAgIDAgEBAgMCAgICAgICAwICAgIBAQECAQECAgICAgICAgIDAgICAgICAwMCAgMCAwMCAwMCAgICAgIDAgICAgICAQMLJj5TV1FOT09OTk9OTlBXU0AuFAUCAgMCAgICAgICAwEBAwIDAgIDAgMCAgICAgMBAQEBAgEBAgMBAwICAgIDAgICAgECAgMCAgICAgIDAgICAgICAgICAgIBAwACAQgfOEhVVFBPT05OTk9OTlBUUkc8JAkBAgICAQICAQACAgICAgIAAQMCAgICAgABAgIBAgICAAECAgACAgICAgIDAgICAgEDAgIDAgICAgIDAgICAgIBAgICAgIBAgEBAg8wSExQUU5OTk9OTk5OTk9RUEtGLwwAAgICAQICAAECAgICAgIAAQICAgICAgABAgICAgICAQECAgECAgIDAgIDAgICAwICAgMCAwMCAgIDBAICAgICAgIDAgICAgICCSFFWFNOUE5OT05OTk5PTk5QT1BSQB0IAgMCAgEBAgECAgICAgICAgECAgICAgICAQIBAQICAQECAwIBAgMDAgIDAgMCAwMDAgQCAgIDAgICAwICAgMCAgICAgICAwIDFzFKWVNPTk1OT05PTk9OT05PTlFVSC8ZBAICAgECAgIDAwICAgMCAgECAgICAwICAQIBAQIDAQECAwECAgICAgMCAgIDAgICAgICAgICAgICAgICAgMCAgMCAgICAQUSLz9MVVFPTk5OTk5OTk9NTk5OTlBTTEEyFgYBAgMCAgMDAgICAQECAgICAgICAgECAgICAgICAQECAgEBAwICAgMCAgIDAgICAgIBAgMDAgIDAgIDAwICAgMCAgICBRQsREtOUU9OTk5OTk5OTk9NTU9PTk9RUE1HMBUDAwMDAwICAgICAQECAgICAgICAgICAgIBAgICAQECAgEBAgICAgMCAwICAwICAgMCAgIDAgICAgMCAwMCAwICAgICDSQ5TlFNTlBPTU1OTk5PTk9OT05OTk9PUFJPOyYMAQMDAAECAgECAgMBAQEBAgMCAwIDAgIDAwEDAQECAwICAgICAgIDAgICAgICAgMCAgICAgIBAwICAgIDAgIDAgQLIjhIVlRNTU5OTU1PT05OT05PT05PTk5OT1RVRzkiCwQCAQACAwEBAwIAAQECAgMCAwICAgQDAwIDAQECBAMDAgMCAgICAgICAgICAgICAgICAgICAgIDAgIBAgICAgsdNUdPVlNPTU5OTU5OTk5OT05OT05PTk9NT1JVT0c2HAsCAQICAgACAgIBAQICAgMCAgABAgICAgICAQICAgECAgMCAgICAwICAgICAgICAgICAgIDAwIEAgICAgICBBgtRU9OUVBPT05PTk5OTk5OTk5OT09PTk5OTlBRTk9ELBgEAgICAgIBAgMBAQMCAgIBAQABAgMDAgMCAAECAgABAgMDAgIDAgICAgICAgQDAgICAwMCBAMCAwICAgMJGDFCUlVQT09OTk9OTk5OTk1OTk9OTk5PTU1OTk5OUFZRQDAXBwICAwEAAQECAgIEAQEDAwMCAgMBAQECAQECAwIDAwICAgIEAgICBAMDAgMDAgIDAwMCAgMCAgQCAggZLUJLUlNQTk9OTk9PTk5OT05OTk9OTk5PTU1OT05OUFRRSkItGAcCAwEBAQICAgIDAQECAwMCAgMBAQIDAQECAwECAgICAgIDAgICAgICAgMCAgICAgIDAwMDAwEBAxktQVBPT1BOTk5NTU5OTU1OTk5PTk5OTk5OTU1OT01OTlBOT1BBLBgDAQABAwICAwEBAgACAgEBAgICAgICAAECAgECAgICAgICAgIDAwIDAwICAgMDAgICAgIDAgQLGTBCUVdTTk5OTk5NTU5OTk5OTk1OTk5OTk5NTU5OTk5OTk5OUldQQjAXCwMBAgICAgIBAAEDAgIBAgICAgICAQECAwECAgMCAgICAgMCAwICAgMCAgMEAgECAgICAg0cLUJMUFRRT05OTk5OTk5PTk5OTk5OTk9OTk5OTk5OT05OTk9OUVNQS0IsHgsCAgMCAgIBAgICAwICAgICAgIDAgMDAwICAgICAgIDAgICAgMDAgMCAgICAgMCAwEFDCI2RlFTT1BPTk5OTk9OTk5OTk5OT05OT09OTk5PTk5OTk5OTk5OTk9PUlJENyIMBQECAgIDAgICAQICAgQBAgECAgICAwICAgICAgICAQICAgEBAwICAwICAQIDAQYXJDhGT1VTT05OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTU1NTU1NTk9NTk5QUlRPRzgkFQUBAQICAgICAgICAgIAAQICAAECAgICAgICAwICAgICAgEBAgIDAwMDAQIBBRYwO0hOTVBQTk5OTk5PTk5PTk5OTk5OT05OTk5OTk5OTU1NTU1NTk5OTk5OUFBOT0g5LRMDAQICAgECAgICAgIAAQICAAECAgICAwICAgIDAgIBAgICAgMCAgICAgIJGjRIUFZUUE5PTk5PTk5OTk9OTk5PTk5OT05OTk5OTk5PTk5OTk5PTk9OTk5OT05RVVRORDAXCQIDAAICAgEBAgQBAQIDAgICAwICAgMCAgIDAgICAwICAgMCAgIFCg4eMUJPUlVSUE5PTk5OT09PTk9PTk5PTk9OT05PTk9OTk5PTk5OT05PTk9OT05PTk9QVFVSTEAxIBAJAAICAwEBAwMCAQMDAgIDBAICAgMCAwICAQECAgECAgIBAQQWJC8/R0pPT09PT05OTU1OTk5OTk5NTU5OTk5PT01OTk5OTk5OTU1OT05PT05NTU5PTk5OT09PT0xLRjIgCwICAgIDAgMBAgMDAgMDAgEBAgICAgICAAECAgICBAMFDhstPEdSVVJPUE9NT05NTU1OTk5OTk5NTU9OTk5PTk1NT05PTk5PTU1OTk9PT09NTU5OT05PTU1OT1RYWEg6JRMLBAQCAwQBAQQCAgMDAwABAgMCAgICAwECAwICCxIYKDRAR0tQUVBPT09OTk5OTk5OT05OTk9PTk5PTk5OT05OTk9OTk5OTU1OTk5OTk5OT05PT05OTk5PT1JTU0xIPS4kFAoDAgIDAwECAgICAgICAwIBAgICAQEBAgYQIy88Sk5RUlBQT05OTk5OTk5OTk5OTk5OTk9OTk5OTk5OT05OTk9OTk5OTU1OTk5OTk9OTk5OTk5OT05OT09NTlBVUkxFMiMYCAUCAQAAAQIDAwICAgMAAQICBAYHDRgoOEFJU1RWU1FPTk5OTk5NTU5OTU5OTk1NTk5OTk5OTU1OTU5OTk5NTU5OTU5OTk1NTU1NTU5OTU1OTk5OTk5NTVFUV1NPQjcwIxcOBwYEAAECAgICAwIAAQIGDhkdKTQ+SEtMT05QT09OTk5OTk5NTU5OTk5OTk1NTk5OTk5OTU1NTU5OTk5NTU5PTk5OTk1NTU1NTU5OTU1OTk5NTk5NTU5PUE5OSkdFPDQpHRgOBAECAgICAgMIDxkfKDU8SFFTVVRST05OT09OT05PTk5OTk5PTk5OTk1NTk9OTk5OTU1OTk5OTk5NTU5PTk5OTk1NTU1NTU1OTk5OT05OTk9NTU9PTk9QUlRVVVJIPDUoHhkQCQMBDxceKjM3O0JHT1JUVVNRT05PTk9PT05OTk9OTk5PTk5OT01NTk9OTk5PTU1OT05OTk9NTU5PTk5OTk1NTU1NTU1OTk9OT05OTk9NTU5PT09QU1JUVVROR0M8NzQqHBMMMDY9RkxMSktNTk5PT1BNTU5PTk5PTk1NTk5OTk5OTU1OT05OTk5NTU5OTU5OTk1NTU1OTk5OTU1OTk5OTk9NTU5PTk9NTk1NTk5OT05PTU1PTk5OT05NTEtMTExEOTApQEdQWV1cWFVVUlBPTk9NTU5OT05OTk1NTk5OTk5OTU1OTk5OTk5NTU5OTk5OTk1NTU1OTk5OTU1OTk5OTk5NTU9PT05NTk1NT05PTk9OTU1OTk1NT1BRU1VYXFxZTkQ9PkZNWV1cWVdUU09PTk9PTk1PTk5OT05OTk9OTk5PTk5OT05OT01OTk5PTk5PTk5OTk9NTU5OTU1OT05OTU5OTk9PTU5OTk9OTk9OTk9PTk5OT01NT1FSVFZZXF1ZUEhAKjE5RE1OS0xNTk5PUFBOT05OTk5OT05OTk5OTk5PTk5OTk5OTk5OTk5NTk5OT05OT05NTU9PTU1OTk5OTU5PTk9OTU5OT05OT09OTk5PTk5PTU5OT09OTUxLTE1FPTYxDBMbKTQ2O0RHTlJUVVNSUU9OTk5OTk5OTk5OTk1OTU9OTk5OT05NTk9OTU5OTk5OTk9NTU5OTk5OTk1NTk5NTk5OTU5OTk5OTk1NTk5OTU1PUVJUVFNOR0I8NTMqHhYPAwQHDxkeKDU8SFBUVlVSUE9OTk5OTk5OTk5OTk5PTk5OTk5OTk9OTk9PTU1OTk5PTk5NTU5OTk5OTk1OTk5OTk5OTU1OT05OTk1NTU9OTk1PUlNVU1FIPjUoHRgQCAQCAgIAAQIGDxgdKTM8RklJT09RUE9OT05OTk5OTk5PTk5OTk5PTk9OT09OTU1OT09OTk1OTk5PTk5OTk9OTk9OTk5OTk5OT05OT05NT09RUE9OTEtIPzYoHBgOBgIBAgMCAgMBAQICBAYHEBciMThCT1RYVVFOT05OTk9OTk5OT05OT05OTk9OTk9PTU1OT05OTU5OTk5PTk5NT05OTk5OTk5PTk5OT05OTk9OT1NVVlZUSkI4KRsNBwcFAgMBAQICAgMCAgIBAAABAgQIGCMyREpUVFBOTk5OTk5OTk5PTk5OTk5PTk5NTU9OTk5OTk9OTk5OTk5OTU1OT05PTk9OTU1NTk5OTk1NTk5OT1BSUE1KOy4jDwgDAQACAQICAwICAgMDAgICAAEDAwICAwsSIi49R0xTU1FPT05OTk5OTk5OTk5OTk5NTU5OTk9OTk5OTk5OTk5OTU1OTk9OTk5NTU1NTk5OTk1OUFFSUUtIPzMoFxELAgMCAgICAQICAgICAwMBAgICAwMCBAECAgMFDBMnOUlYWVVQT09NTk5OTk5OT01NTk5OTk5PTk5OTk5OTk5OTk1NTk5PT01NT05OTk5PTU5OTU5QUFRVU0c8LBkQBgMDAgIBAQIDAQECAgIDAgIDAgIDAgICAgICAgMCAgILIDJGTExOT09QTk5OTk5OTk1NTk9OTk5OTU5OT05OT05OTk1OTk5PTk1PTk9OTk5OTk5OUE9PT0tIQC8kEwMCAgICAgMAAQICAQECAwICAgICAgICAgICAgICAgIDAgEBCA8hMj9LUVRTUU5OTk5OTk5PT05NTk5OTU1OTk1OTk5NTU5OTk5OTk1NTk5NTk5OTU1PUVRSTkEvHg4KBQICAgABAgICAgICAgICAgEBAgIBAgICAQMCAwICAwMCAgMCAgIJGC9DTVVVUU9OT05PT01PT05OTk5OTU1OTk5OTk5NTU5OTk5OTk1NT05OTk9OTU1PU1VPSDMYCAICAgICAgABAgICAgICAgMCAgEBAgICAgIDAgIDAwMCAgMCAgICAwMDBhIsOUdPT1BRTk5OTk5OTk9NTk5OTU1OT05OTk5OTk5PTU1OTk5OTU5OTk5OUFBOUEY7MBYFAQIDAgIBAQICAgMCAgMCAgICAwICAgMCAgICAwICBAIDAgMCAgIDAgICAwUUJDlIUFZVT05PT05OTk9NTU5PTU1OTk5OTk5OT05OTU5OT05OTU5OTk9QU1ZQSDckFQcBAgIDAgIBAgICAgMCAwIDAgICAwICAgICAgICAgECAwICAgIBAQIDAQICAwIFCyM2RlNUT09OTk1NTk5NTU5OTU1OT01NTU5OTk5OTU1OT05OTk5NTU9PUlJGNiELBAECAgICAQECAwIDAgIBAQEDAgICAgICAgICAwMDAAECAgICAgICAAIDAQECAgICAgseLkJLUFRRTk1NTk5NTU5OTU1OTk1NTk5OT05OTU1OTk9OTk5OUVNQS0ItHQkBAQECAgEBAAECAgMDAgIAAgICAgICAgEDAgMDAwICAgICAwIDAgICAgIDAgICAgICAgQLGTFDUldTT05OTk1OTk5PTk5OTk5OTU5OTk9PTk5OT05NTk9OU1dSQjAZCwQCAgMCAgICAgICAwICAgICAgIDAgICAgICAgIDAgIDAgIDAgICAgQCAgMCAgICAwECAgEBAxkuQlJQT1BPT09OTk5PTk5OT05OTU1OTk5PT05PT05NTlBPUFFCLBgEAgEDAgICAgIDAwICAgIDAgMCAgICAgMCAwICAwMCAgIDAgICAgIDAgICAwEDAwMCAgICAgIBAQgYLUNNU1NRT09NTk5OTU1PTk5OT09OTk5PTk5OTk1NUFNTSkMtGAgCAgICAgIAAQICAgICBAIBAwIBAAICAQECAgICAwMCAgICAgICAwICAgICAgIDAgICAgICAQIBAQMIGDFDU1VQTk9OT05OTU1OTk5OT09OTU5OTU5OTk5OUFVUQzEYCAMDAgMCAwIBAQICAwEDAwABAgIBAgMCAAECAwMCAgICAgICAwICAQICAwICAwMCAQICAgABAQECAgICAhgtRk9OUVBOT05OTk5OT05OTk5NTk5OTk9OTlBRT1BELBgCAgICAwMCAwICAgEBAgICAwIDAgICAgICAgMBAwICAgMCAgICAgICAgICAgICAgICAgICAgABAQECAgICAQkdN0dPVVRPTU5OTk1OT05OTk5OTk5OTk5NT1NWT0g1GwsCAgICAgICAgICAgEAAgIDAwICBAMCAgMDAwMDAwMDAgIDAgICAgICAgICAgECAgICAQICAgAAAQIBAQIBAQMLIjdGVVROTU5OTU5OTk1NTk5OTk5OTU1OTlNVSDgiCgQCAgIDAgIBAwMBAgMCAQEBAwIDAwMDAgMDAgMCAwMDAgICAgICAgICAgICAgICAgICAgICAgACAgIBAQICAAACCyM6UFJOTk9OTk5OTk1NTk5OTk5OTU5PT1FOOSQLAgICAgMDAgABAwMCAwICAAABAgIDAwMCAwMDAgIDAwICAgMCAgICAgICAwICAgMCAgIDAgICAgICAgMDAgICAgICBRUwSE9PUU9PTk9OTk5PTk5OTk5PTk9QUExELRUEAgIDAgIDAgMDAgMCAgIDAgIBAwECBAMBAgMDAgEEAwMCAgICAgIDAgICAwICAgMCAgICAgICAwICAgIDAgMEAgICAQYVNENMU1FOTk5OT05OTk5PTk5PT1FVTEAwEwYBAgIDAwIDBAICAgICAgIDAgMCAgEBAwQBAQICAQECAwICAgICAgICAgICAgICAgICAgICAAECAgABAgICAgICAgICAwEEGjFIVlFOTU1PTk5OTk5NTU5OTVNZSzAYBAICAgIDAAECAwICAgMBAQICAgICAwICAwICAgIDAAECAgIBAgICAgICAgICAgICAgICAgECAAECAgEBAgICAgMEAgICAgICCR5BU1BPTk1OT05PTk5NTU5OTlJYRiAIAwICAgICAAEDAwICAgMBAQICAwMDAwEDAgIDAgIDAQEDAgMDAgICAgIDAgICAgICAgICAgICAgICAwICAgEBAQIDAgIBAgICAQ8wR0tQUFBOT05PTk5NTU9RUExJMQ4DAgMCAQICAgECAwICAgIEAwIDAgMDAgICAgMDAgMDAgIDBAMCAgMCAgIDAgICAwICAgMCAgIDAgICAwICAgMBAAICAgIBAwIBAgwkO0hTVFBOT05OT09NTVFVVEc5IAgBAwMCAQEDAgICAgEBAwMCAgIDAwICAwICAgMCAwIDAgMDAwMDAgMCAgICAgICAwICAgMCAgICAQICAgEBAgICAgIDAQECAgABAQUTLD9TVlFOTk1NTk5OTlFXUjwlDAIBAgIBAQMDAwICAgEBAgICAwICAgEDAwIDAgIBAQIDAgMDAgMCAgICAgICAgICAwICAwMCAgMCAgICAgABAgICAgICAAECAgIBAQECGTNOVlBOTU1OT05PUE9USy0UBAMCAgIAAQIDAgICAwABAgICAgECAQEDAgMCAgMAAQICBAICAgECAgQCAwMCAwICAwIDAgMDAgIDAgIBAgICAgMCAgIDAgICAwICAgIBEChMU09PT09OTk9PT01QRCMMAwEBAgICAgIDAgICAgMCAgMCAgICAgIDAwEBAgICAgMDAgICAwEBAgICAgMDAwMDAgICAwMCAgICAgMDAwICAgICAgIDAgICAgICAgMCBhg8SUxRUk5OTk9RUkpDMhMFAgEBAQQCAgMCAgIDAwICAgMCAgIEAgIDAgECAgMDAwICAgMDAwEBAgICAgICAQICAgICAwICAgMCAgICAgICAgICAgICAgIDAgIDAgICAxEwQEtTUk5OT05SVUk5IwoDAgICAgMCAgMCAAECAwABAgIBAQMDAgECAwICAgICAgMDAgICAgECAgICAgICAQICAwIDAgICAgICAgICAgICAgICAgICAwICAgIDAgMDBAojOEhWVE9OTlBVVkcwGAMCAgIDAwMDAwICAQECAwECAwICAgMDAgECAgICAgMCAwIBAAEBAgEBAgICAgIDAgICAgICAgMCAwIDAgMCAwICAgICAgIDAgICAgICAgQCAwMPKT9UVU5PTk1VVD0lCAECAgMDAgQCAwICAwICAwIDAwMCAgIDAwMDAQICAgQCAgICAgMDBAICAgMDAgICAgICAwMCAgICAgIDAgICAwICAgMCAgIDAgMCAwMCAgMCAgIGGjVRU05RT05TUTUYAwICAwICAwMCAwIEAgMDAwMDAgQDAwIDAwICAgIDAwMDAgIEAgMDAwMDAgICAgICAgIDAgECAgMDAQICAgICAgICAgMCAwICAwICAwICAgICAgICDipIT01SUk5OSCoOAwMDAgIDAwIDAgICAgIDAwMDAwMCAgIDBAIDBAECAwIBAQICAgICBAICAgICAgICAQMCAgICAgICAgMCAgICAgICAgICAgICAgICAgIDAgICAgIBBx08R0xVVU5HPh4IAQMDAgMCAgMBAwMCAgICAwIDAgIDAwMCAgMCAgECAgIBAQICAgMCAgICAgMCAgICAgICAwICAgICAgMDAgECAgICAgMCAgIDAgICAwICAgICAgICBxg1Q0xWVUxDNRgHAgMDAwMCAwICAwICAgMCAwICAwMDAgMDAwICAwIDAwMDAwEDAQIDAgMDAgICAgMDAgMCAgICAgIDAgMCAgICAwICAgICAgIDAgICAgIDAgICAgIBBA4oPUxZWUw7KQ4EAQICAgIDAgQDAwIDAwIEAgICAwICAwIDAgICAgMCAwQCAgEBAQICAwIDAgMBAgICAgMDAgMDAgICAgICAgICAgICAgIBAgICAQICAgICAgICAgIBAgYeNkxdXU01HgUCAQICAgEDAgICAwIDAQEDAgEBAgIAAQICAgIDAwEBAwMDAwIDAAEDAgICAgIBAQMEAgMCAgIDAgMCAgMCAgMCAgICAgIBAgICAgICAgICAgICAgMCAgMaM0tdXk0zGAICAgICAQABAgMCAwMDAgECAgEBAgIAAQICAgICAgABAgICAwIDAAICAgICAgMCAgMDAwMCAwIDAgMCAwECAgEDBAICAgICAgIDAgICAwICAgMCAgICAwMQK0VZWUQpDwIDAgICAwICAgMCAgMCAgICAgICAgICAgEDAgICAgEBAgMCAgMCAgICAwICAwMCAgIDAgIDAwICAwIDAgMDAgMCBAICAgMCAgIDAgICAwICAgMCAgIDAgMIHzxPTjocCAICAgICAgICAgMCAQMDAgICAgICAgICAgIDAgICAgAAAgICAgIDAgICAwICAQICAgMCAgICAgICAgICAgIDAgICAgMCAgICAgICAgICAgIDAgMCAgIDAgIEFTZHRTETBAECAQECAgICAwICAgICAgICAgEBAgMAAQIDAgICAgICAgIBAQIDAgICAgEBAgICAgICAgMCAgICAgICAgICAQMCAwICAgICAgICAQIDAgICAgICAgICAgMBDzBAPioNAgICAAEDAgICAgMCAgICAgICAgEBAwIBAQIBAgICAgICAgMBAQICAgICAgAB" },
76
+ "gemini-48": { width: 48, height: 48, source: "GeminiWatermarkTool/bg_48", dataBase64: "AgEBAAAAAAEAAAAAAQEAAAEBAQAAAQBxcAEBAQEBAgEBAgEBAgMBAQEBAgEDAgEBAAAAAAAAAQEAAAAAAAEBAQAAAAEAASGAgCAAAgABAQEBAQECAgIBAQEBAQICAwEBAQAAAAAAAAEAAQICAQAAAgEAAAEAAUiAgEgAAQABAQECAgACAwMBAQICAgMBAQEBAQIAAAEAAAEAAQEBAQEBAQECAQEAAXCAgHgAAQEBAgECAwEBAgIBAQICAgEBAQICAAAAAAAAAAEAAAEBAAABAAAAAAEAIICAgIAgAAABAgACAgEBAQADAwICAQEBAQEBAAIAAAEAAQEBAQAAAQAAAAABAAABUICAgIBgAAABAAECAgABAQECAwMDAQEAAAEBAQAAAAEAAwEBAQAAAQEBAgIAAAIRgICAgICAEAABAAAAAQICAQEBAQEBAQEBAQEBAAAAAAIAAQIBAQAAAQMBAQEAAQFQgICAgICAUQECAAEBAQMCAQECAgEBAQEBAQEBAgAAAQIBAgEBAgIBAQECAQICARGAgICBgICAgCACAQIAAQIBAwICAwMDAgIBAQICAQAAAQEBAAIBAAEBAAEAAQABAXCAgICAgICAgGABAQEBAQEBAQEDAwMCAwIBAQICAgEAAAECAAEBAAAAAgEBAgABQICAgICAgICAgIA4AAACAgMBAgIBAgICAQECAgEBAAABAAABAQMAAQIAAgACAQAQgICAgICAgICAgIB4GAECAwICAgIAAQEBAQICAgEBAQABAQAAAAEAAQEBAAMCARBwgICAgICAgICAgICAcAgBAQABAQECAgEBAgICAgECAQABAAABAAEAAQABAQEBAWmAgICAgICAgICAgICAgGACAQEBAQECAgEBAgICAgECAQEBAAABAAAAAAEAAgEBUYCAgICAgICAgICAgICAgIBQAQABAQEDAQEBAQICAgEBAAAAAQEAAAEAAQAAAQFQgICAgICAgICAgICAgICAgICAUAABAQEDAQEBAQECAgEBAAIAAQEAAAEAAAABCGCAgICAgYCAgICAgICAgICAgICAgGgQAgIBAQEBAwQDAgABAQABAQABAQEBAAAYcICAgICAgYCAgICAgICAgICAgICAgIBwEQQCAQEBAgECAgEBAQAAAQEAAAEAADh4gICAgICAgICAgICAgICAgICAgICAgICAgEIBAQIDAgMDAQEAAgEAAQAAAgEgYICAgICAgICAgICAgICAgICAgICAgICAgICAgIBwEAIDAgICAgEBAAEAAAAAEFGAgICAgICAgICAgICAgICAgICAgICAgYCAgICAgICAgFAQAgECAgEBAAEAASFggICAgICAgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAUCABAgEBACBIeICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBwSCAEcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBxcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBwASBIcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIB4SCABAQMAASBQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAYCACAgEBAAEBAAACEFGAgICAgYCAgICAgICAgICAgIGAgICAgICAgICAgICAgFERAQECAgEBAQIBAQAAAQIQcICAgICAgICAgICAgICAgICAgICAgICAgICAgIBgIAEBAQEBAQEBAQEBAQAAAAEAAUCAgICAgICAgICAgICAgICAgICAgICAgICAeTkBAQEBAQEBAQEBAQEAAQABAAAAAgAQcYCAgICAgICBgICAgICAgICAgICAgIBwGAEBAQICAQECAgEBAQEAAQABAAEAAAAAEGiAgICAgICAgICAgICAgICAgICAgGAIAQEBAQICAQECAgEBAQEBAQIBAQEAAAAAAQFQgICAgICAgYCAgICAgIGBgICAUAMDAgECAgEBAwMCAgEAAQEAAQEBAQAAAAABAQIBUICAgYCAgYCAgICAgIGBgIBQAQQEAgICAgEBAwMBAgEBAQECAgECAwMCAgICAQEBAWGAgICAgICAgICAgICAgGgCAgMDAQABAgICAwMBAQMDAQECAgEBBAMCAwIDAQEBAQpxgICAgICAgYCAgICAcBACAwMDAQEBAgICBAMAAQMDAgICAQICAAACAwIDAgIAAQIZeICAgICAgICAgICAEAACAgAAAQECAwIBAAABAQEBAgICAgMCAQECAgICAgIBAQICOICAgICAgICAgIBAAQEDAgEAAQEDAwECAQAAAAEBAgEBAQEBAQEBAQEBAAECAgICAGCAgICAgICAgHABAQECAgACAQECAQEAAQAAAQEBAgIBAQEBAQEBAQEBAQECAgMCASCAgICAgICAgBABAQACAgECAQEBAQECAQEBAQEBAQEBAQEBAQECAgAAAQACAgIBAQBQgICAgICAUAEBAQECAwABAQEBAQEBAgIBAQEBAQEBAQEBAQECAgABAQICAgEBAAEQgICAgICAEAEBAQECAgIBAQEBAQEBAgIBAQEBAgICAgICAQEBAgEBAQICAQEBAQEAYYGBgIBQAQICAgEBAQEBAgIBAQEBAQECAgEBAgICAgICAQEBAQEAAgIBAAEBAgMBIIGAgIAgAQICAAEBAQEBAgIBAQEBAQECAgEBAgICAgEBAgEBAQEBAgICAgAAAgIBAXmAgHABAQIDAQECAgAAAQEBAQEBAQECAgEBAgICAgEAAgIBAQEBAgICAgEBAgIBAUmAgEkBAQICAQEBAgEBAQEBAQEBAQECAgEBAQEBAQICAQECAQIBAAEDAwEAAQECAiCAgCEBAQICAgIAAQABAgIBAQICAQECAgEBAQEBAQICAQEBAAEBAQEBAgEBAQADAgFwcAEBAQICAgIBAAEAAgIBAQICAQECAgEB" },
77
+ "gemini-96": { width: 96, height: 96, source: "GeminiWatermarkTool/bg_96", dataBase64: "BAMEAwMDAwQAAwMEAwIFAgICAAIBAQEBAwIDBAIDAwMDAwMCAwIAAQEBAQECAjl5cTsBAwACAQIEBAIEAwMEAwMDAgQEBAIDAQMCAgECAwMCAwMEAwMEBAMDAwMEBQQEAwQCAwEDAwQCAgMDAQIEAwICAQEAAQAAAgIDAwEDAwIDBQMDAQAAAAEAAAACEICAgYEJAgABAgICAwMCAgIDBAMDAQECAgIBAgACAAEBBAQDAwMDAgMEAwMDBgUEBQQFAQACAQIEAwIAAQEDAQEBAQICAQABAQABAQEAAQICAgMDBAMDAAEAAQAAAQICKYCAgYAxAAABAgEAAAEBAgUEAwQEAgABAgIDBAQCAwUDAgIEBAMDAwQEBAMCBAMEBAMDAAEBAgIFAgMAAQICAAAAAgIBAAEAAQEAAQIBAQABBAMCBAECAAEAAAABAgIDUoCAgYFQAQEBAQEAAAECBAQDAgMEBAICAwIDBAQEBAMEAgMEBQQCAQMDBQQDBAMFBAMDAAABAwUEBAMBAgEBAAADAQMDAAIBAQACAAEAAAACBAMCAgMCAgEEAwABAAEDcoCAgIB5AgMBAgMBAgMDBAQEAwQEAwIBAQMEBQQEBAQEBAMDAwEAAwIDBAMDAgUEBQQDAQADAwMEBAQDAgQEAAEBAQIDAgEAAgIBAQEBAAECBAQEBAEEBQIEAAIEAgIhgYCAgICAIgICAgMDAgECAwQDAwMEAwICAQMDAwQEBAUDAgMEBAIBAwQDAwMDBAQDBAMDAQIBAQQEAwMEAwABAAICAQEDAQECAwMDAwIAAQIDAgICAwIBBAIBAgECAgJSgYCAgIGASQICAgIEAwIBAgIDAwUDBAICAwIDAwMDBAMCAgMDAwIDAgMGBQQEAwMDBAMDAQMCAgMDAgQEAgIBAgMEAQEAAgMDAwECAwACAgICAQEDAQEBAAEBAQECAgFxgYCAgYCAeQICAgIEAwMEAwIDAgMDAQICAgIBAwQDAwQCAQMDAgMEAwQDBQUEBAQDBAMDAwICAgECBAMBAwIDAgIEAQECAwQBAgICAgACAgIDAgMEAwIBAQECAQQDAyqAgYCAgYGAgCEDAgEDAwIDAwMDAwIDAgEBAQEDAwIEAgEAAQEEAwMEAwIEBQQCAgQEBQQEAQMBAQABAwIBAwECAgMCAgECAwQCAwABAAICAgICAgIDAwEBAAEBAQIDA1mBgICAgYGAgGECAAEDBAQDAwMCAgMCAQEAAgIDAgMCBAABAgIDBAQEBAQFBAIEAwMDBgQEAwIEAwEBAQEDAwICAQEBAgMDAgQBAQEBAQMCBAICAQQDAwEBAAEAAQIEEYCAgICAgIGAgIARAQICAgMBAgICAQEBAQMBAQECAgECAgIEBAMDAwMCBAQDAgMDAwQCAwIDAwIDAwEBAQECAwECAgEBAgMDAgIBAwEAAgQDAwICAwMCAwECAQEBAQIDUICAgICBgIGAgIBCAgIBAAIEAwQCAgICAQIBAQMCAgMAAgEEBAQDAwICAwQBAwEDAgMDAwQFAQEBAgABAgICAAABAgMAAgECAQADAwMAAAEDAgMDAwIAAQIBAgAAAgARgYGAgICAgIGAgIB5CAEBAgICAgICAQADAgECAQQDAwIBAgEEAwICAgMDAgQEBAMEBAYDAwMDAQIAAgEAAgMCAQACAwMCAgICAQICAwAAAQIDAgMCAwMCAQEBAAIBAgNBgIGAgICAgYGBgICAQQICAgEEBAQCAQECAwEBAgQDBAMCAQEBAgIDAwMDAgMDAwIEBAUEAwMDAgEBAQMEAQEBAgECAwQCAQICAgEDBAAAAQIDAwMEAwMAAQABAAAEBBJxgYGAgICBgYGCgYGAeQkCBQQEAwIEBAIDAgQBAwQEBAICAgIDAwMEBAMDBAQFBAUGBAIEBAMDAgMCAgMFAwECAQEAAgECAQMDAgIDAgIBAgIDAQIEBAMCAQECAgIDBFKBgYGAgIGBgYKAgYGBgUIDAQMEAgMGAwIBAQIDBAMEBAICAQMDAwQDBAMEBQYDBAIFAwQDBQMDAwMCAwMDBQMCAgABAgEEBAMDAgMBAgEDAwIDAgEDBAUCAwIDAQIDEoGBgYGBgYCAgICAgYGBgHkRAwMCAwMDBAMCAQQCAwMDAgIBAgIDBAIBAwMDAwMDBAMDAwMCAwMBAgMDAwUEAwQCAgEBAgEEBAQEAAIDAwIDAQIBAQIDAQACBAQDAwMCUoGAgYCAgYGAgICBgYCBgIBZBAICAgMDAgICAQMEAQADAQECAwMEBAMCAwIDBAMEBQMDAwIDBAMEAgMEAwICAwMEAgEBAAIDBQQDAQMBAQIDBAIEBAMCBAQDBAUEBAMpgIGAgICAgIOBgICAgYGBgICBIgEBAgQCAQICAAICAgICAwIDAwMDBAMDAwQEAwICAgQDAgMCAwQCAgQEAgQDAgMFBQQCAQADBAQDAQICAQIDAgIBBAICAAIDAwIDAwNxgYCBgICAgIGAgICBgoCBgICBcQkDAwMCAgEBAQIDAwICAwIDAwIDAwMDAwMDBAICAwIDBQMDAwICAwQDAgEDAQICAgMBAgICAwMCAgMAAgMEAwMEAwICAQEBAQEDBEKAgYCAgICAgICAgIGBgYCBgYGBgEkCAwMCBAEBAQEDAwIDAgMCAwMDAQQEBAIEBQQCAwECAgICBQICBAQCAwIDAQIBAgICAgICAgMBAgEBAgMDAgQDAgICAQECAAMEG4GBgYGAgICAgICBgYGBgYGAgICCgYAhAwMEBAIBAwMDBAMEBAMCBAMDAwMFBAMDAwMDAgICAgQEBAQCAwMBAQEBAQECAgEAAAAFBAICAgEDAwMCBAMBAQIDBQMAAQIRcoGAgYGBgICAgICBgYGCgYGAgYGBgYBxCwQFBQMCAAIDAwMDBAQDAwMEAwMDBQIDAgMDBAMDAwQCAwIBAwMAAAABAAAAAQAAAAEDBAIBAgICAwIDBAMDAgIDAgMCAgJRgICAgYGAgIGAgIGBgIGAgIGAgIGBgYGBWQMDBAMDAgIDBAIEAwUEAwQFBQMCBAMDAgMCAgQEAwIBAgMCAwMAAAABAwMBAgEBAAABAgACAwICAQIDAwMBAgICAwEEA0KBgICAgYGBgIGCgYGBgYCBgICBgICBgYGBgDkCAQQEAQMEAgMBBAQEAwMDAwMDAwMFAgMDAgMDAwQCAwIAAgEBAAABAgIDAQAAAQEAAQEAAwMCAgIDBAQBAQEBAQECI4GAgICAgIGBgYKBgYGBgICAgYCAgICAgYKBgIAgAQQEAgIEAQIFAwQEAQQEBAQCBQQDBAUDBAQEAwMBAwECAQIBAQICAgMEAwEAAQECAQIDAQEBAQECAwIDAgEAAwIReYGAgICAgIGBgICBgYGBgIGAgIGBgICBgIGAgIB4EgIEAgICAgECBAQCAgQEAwMDAwMDAgIDAQMDAgQDAwUDAgIAAQICAwMCAgECAgEBAQIDAgIBAgEDAwMAAQEBARBwgICAgICAgICBgICBgYGAgYGAgYGBgICAgYCBgICAcREDAQEEAwICAQMBAgMEBQMDBAIEAwMDBAMCAwMDAwQCAwIBAQIEAgMCBAICAQEBAgQDAwIAAQMBAwEAAQIDEnGAgICAgICAgIGBgYCBgYGBgYCAgIGAgICAgYCBgICAgXEQAQEFAwICAgMCAgMFBAMDAwMEAwICAwQFAwMDAwICAwICAgMFAwMDAwEBAQICAgICAwMAAgICAQIBAgILcYGAgYCAgICAgIGBgYGBgYCCgICBgICBgIGAgYCAgICBgYFpCAMCBAEAAQMCAgIEAwMDAgMDAwICAwQEAwMDAwICAwEBAgMCBAMCAQMAAQICAgMDAwICAQACAQECAhNqgICAgYCAgIGBgYGBgYCAgYGAgYGAgYGBgICBgoCAgICBgoGBcRQEBgICAQIDBAMBBAQCAgIDAwQDBAQFBQMDBAECAwMCAQMDAgEBAwICAgMCAQMDAQMBAwIDAgIBEnKBgYCAgYCAgYCBgYGBgYCBgYCBgIGBgYKCgIGBgYCAgICAgYKAgHERAgAAAwIDAwMDAwMCAgICAwQEBAMEBAQDAwIDBAMAAgMDAQEBAwIBAgQDAgEBAQIDBAICAgIScoGBgoCAgYCBgYGBgYGBgICBgYGBgYGBgYGBgYGAgYCAgICBgYGAgIBxEAEBAQIDBQMDAwUCAgMCAwQCAwQEAwQEBAICBAQBAAMDAQEBBAMCAwMEAwEBAAICBQMBASJ5gIGBgoCAgICAgICAgICAgICAgICBgICAgYGBgIGAgICAgICAgYGBgYCAeCEBAQECAwMDAwMBAgIDBAQCAwMEAwMDAgIDBgUAAgMDAQECAgICAwMDAwEBAQIEAwMBOYGBgICAgICAgICAgICAgICAgICAgICAgYCAgICAgIGBgYCAgIGAgICBgYCAgIBAAgIDAwEEAwICBAQEBAQEBAQEAwMCAwYFBAMAAQQEAgIBBAIBAwMCAwIBAQICAwhYgICAgICAgICBgICAgICAgICAgIGAgICAgICAgIGAgYGCgYCAgIGBgICAgICBgICAURIDAwMDBAQEBAQEBAQDAwQFAwMDBAQFAgMBAQECAgMBAQMCAgMDAwMCAAIDInCAgIGAgICAgICBgYCAgICAgICAgICAgICBgIGAgYGBgIGBgYCAgICAgYCAgIGAgICAgHEaAwEEAgIEAwMDAgIDAwQEAwMDBAICAQIBAQACAwMBAgQFBAMDBAICAghJgICAgICAgICAgICAgYCAgICBgIGBgICAgYGCgICAgYGBgICAgYGBgIGBgICAgICBgYCAgICAQgMCAQIEAwMDAgIEAwQDAwMDAwIBBAUDAQADAgMCAwMEAwQDBAQDInGAgICAgYGAgIGBgIGBgICBgIGBgIGBgICAgIGBgYGAgICAgICAgYGBgYGBgYCAgICBgICAgICAgHIqAgMDAwMDAwMEAwQDAwQCAgICAwQCAgECAQMDAwMFAgIEAxFZgIGBgICAgYGAgYCBgICAgYCBgYGBgYGBgICAgoGCgoGAgICBgICBgYGBgIGAgYGAgICAgYCBgYGAgIGBUhEDAwQDBAQDAwQDAwMCAwIDBgQDBAECAgMCAwMDAwMIQXmBgICAgICAgYGAgYCAgYCBgICBgYGAgICAgICAgYGBgICAgICAgICBgYGAgICAgIGAgICBgYCAgYGBgIKBgYFSEgIFBAMEAwMDAwMDAwQEAwQDBAICBAMCAwICCUJ5gIGAgICAgICAgYGAgIGAgICBgICBgYCAgICAgICBgICBgYCAgICAgICBgYGAgICAgIGBgICAgICAgYGAgIGCgYGBcUITBAUDAwMDBAMDAwQFAwMBAAIDAgIBAhBCeYCAgICAgICAgICAgIGAgIGAgICAgICAgYGAgICAgICAgYCBgYGBgYCAgICAgYGBgICAgICAgICAgICAgIGAgIGBgYGBgYCBURECBAIEAgICAgIDAgIBAwMEAgIhYYCAgIGBgICAgICAgIGBgYGAgICBgICAgICAgYGAgICAgICAgICBgYOAgoGAgYGBgYGAgICAgICAgICAgICAgICBgYCAgYGBgYGBgYFYKQMDAQQCAwMDAgMCAgEgSHmAgICAgYCBgICAgICAgICBgICAgICAgIGAgICAgYGBgYCBgICBgYGBgYGBgYGAgYGBgICAgICAgICBgICAgICBgYGAgYCBgYGAgYGAgICAgnFRJAQEAwMEAwoxUXmAgICAgICAgIGBgIGBgYGAgIKBgYGAgYCAgIGBgYCAgYGBgoKBgICBgoKBgICAgICBgYGBgICAgICAgIGBgICAgICBgYCAgIGBgIGBgYGBgICBgYGCgXJSKxICOoGBgYCBgYGBgYCBgoGBgYCBgYGBgYGCgYGAgICBgYGBgYCAgYCAgYGBgIGAgIGBgICAgICAgIGAgICBgYGAgIGAgICAgICBgYCAgICBgYGBgICAgIGBgYGBgYGAgYA6cYGBgYKBgYGBgYGBgYKBgYCBgoCBgYGBgYGBgYCAgYGCgICAgYGBgIGBgIGBgYGAgICBgICAgIGBgICAgICAgIGBgICAgIGCgYGAgICBgYGBgYGAgYCAgYGAgYGAgIF5eYGBgYGBgICAgYCAgICAgICAgICBgYCAgYCAgICBgYGAgICAgYGAgIGAgICBgYGBgYGAgYGBgICBgYCAgICAgIGAgIGAgYGAgYGBgICAgICBgYGBgYGAgIGBgIGBgYFyOoCAgICAgICAgYCBgIGAgICAgICBgYCAgICAgICBgYCAgICAgoGBgYCAgICAgYCAgYGBgYGAgICAgYGAgICAgICAgICBgoGAgICBgYCAgICBgYGBgYCAgYGAgYGBgYE7AxUoUnGAgICAgIGAgICAgYCAgICAgICAgICAgICAgICAgICAgICAgIGBgICAgICAgYCBgYCAgICAgICBgYGAgIGAgICAgIGBgYGBgYCAgYGBgYGAgICBgYCBgXpRMQkCAwQDAwIhUHGAgICAgICBgICBgICAgICAgICAgICAgICAgIGAgYGAgIGBgICAgICAgIGAgYCAgICAgYGBgYCAgIGAgICBgYGBgYGBgYCAgYGBgIGAgIGBgXlKIgQDAgECAwQCAQIBAgIpWoCAgYCBgICAgICAgYCAgIGBgICAgYCBgIGBgYGBgYCCgICAgYCAgICAgIGAgICAgYGBgYGBgYGBgICAgIGBgYGBgYGBgYGBgYCAgYFhIgQFAwMBAgIBBAQDAwICAgIEAxBRgICAgoKAgIGBgYCBgICBgIGAgIGBgIKBgYGBgoKBgICAgYCAgYCAgIGBgICAgIGBgYGBgYGAgICAgIGBgYGBgIGBgYGAgYB5QhMDAwYGAwMCBAICBAMDAwUEBAMEBAICEkJxgYGBgIGCgYCAgYGBgYGBgYGBgICBgIGBgoGBgYCAgICAgIGBgIGAgICAgYCBgYGBgYGBgICAgYGBgYGAgYGBgYGBeUEJAgICBAQFAwIEAwECBAIDBAUEAgMFBQIDAgQQUYGAgIGCgoGBgYKBgYGBgYGBgICBgICBgYGBgYCAgICAgYGBgYGAgICBgYCBgYGAgYGBgICBgYCBgYGAgYGBgXpCCgQCAgICAgQFBAMEAwICAwMDBAMCBAQDBQQCAgIAAhFTgIGCgYCBgICBgIKBgYGBgYCAgYCAgICAgYGAgICAgYGBgYGBgYGBgICAgICAgICAgIGBgYGBgYGBgYGBWRIEAwMCBAQEAwQEBAMDAgMEAwMCAwICAwQDBAEBAQIAAQMDKHCAgYCAgYCAgIGCgYGCgYCAgYCAgICAgYCAgICAgIGBgYCAgIGBgYCAgIGAgICAgICBgYGBgIGBgXIiBAMDAwQDAwIDAwQEAwMBAgMDAwIDAgMDAwQDBAUEAwIBAgICAAJBgICAgYGAgICAgIGBgYGAgICAgICBgICAgYCAgYGAgIGAgIGCgYCAgICAgYCAgICBgYGBgYGBSgsDAwMDAwMDAwMDAwUDAQMBAgECBAQDBAMEAwMDAwMEAwQAAgACAQEAGHGBgYGAgICAgIGBgYCBgYGAgYCBgICBgYCBgoGAgICAgICBgYCAgICBgYCAgICBgYGBgXEiAwMDAwMDAwMDAwMDBAUEAwMBAQEBAwMEAwMDAwMDBAICAwIAAQMCAAADARFRgYCAgIGBgIGBgYGAgICAgYCBgICAgYCCgYGAgICAgYCBgYCAgICBgYCAgICBgYGBWQoDAwMDAwMDAwMDAwMDAwUEAwMCAwICAwQEBAMDBAMDAwMEAwMBAQEBAgEEAgEEQoGBgYGCgYGBgYGAgICAgYKBgYCAgYGBgYGAgICBgYGAgYGBgIGBgYCAgICBgYE5AwMDAwQDAwMDAwIDAwMDAwQFAwIBAgECAwMDAgMDBQQDBAQDAgMCAgQDAgMBAwECAiJ5gYCBgYKBgICAgICAgYGBgIGAgYCAgIGBgYCBgYGAgICAgYCAgICBgICAeCIDAgMDAwQDBAMDAwIDAwMDAwUEBAMDAwMDAwQCAwMDBAQDBQQEBAQDAwMDAgIBAwIDBAMTcYCBgYCBgIGBgICAgYGBgYCBgYCAgIGBgYCAgYGAgICAgICAgYGBgIBxEQMDAwMDAwMDAwMDBQMEAwMDAwQEBQMDAwQDBAQDAwMDAwMEBAMEAwMDAQMDAwQDAwMDBAQEEnGBgICBgYGBgIGAgYGAgYGAgYGBgYGBgYCBgIGAgIGBgICBgYGBgHESAgIDAgIDAwMEBQMEBQQEBQMDAwQEAwIEAgIBBAQCAwMEAwQFBQMEAwIDAgEEBAQEAwQEAgMDAxJxgYGBgYGBgoCAgIGBgYKBgYKBgoKBgYCBgICAgYGBgICBgYGBaRIDAwMEAwMDAwMEBAMEBAQEBAMDAgQEAgICAgICBAQDAwMEAwQEBQMEAwECAgMEBAMDAwMDBAMEBAIKaYGBgYGBgYGAgICBgYKBgYGBgYGBgICAgICBgYGBgICBgIFxCwQBAwMCAgMAAgQDAwMDAwQEAwIDAwQFAgMCAgICBAQEAwMDAwMDBAMEAgQCAgMDAwMDAwMEAwECAwMDE3KBgYGBgYGAgIGBgYGBgYGBgIGAgICBgIGCgoCAgIGBgHESBAIDBAMEAwMDAwIDBAMCBAQDAwMDBAQEAwIDAgICAwQDAwIDAgMDAwICAgICAQMDAwMCAgMDAwQBAwMDAxJxgoGBgYGAgIGBgYCAgICBgICAgIGAgYGCgYGBgICCcRICAgQDBAMDAwQCAwIFBAMEAwIDAwMDAwQEAwMEAwICAwQEBAMDAwMCBAIBAQECAgIDAgMDAwMDBQQDAwMDBAMReYGBgYGCgYGBgYCAgICBgYCAgICAgYGBgYKBgYF6EgQDAwMCAwIEAwQDBAMEAgMCAwMDBAUFBQMEAwQDAwICAwQDBAIEAwICAgMCAgIBAQIDAwMDBAQFAwMDAwMDAgMBIYGAgICBgYCBgICAgICAgYGAgICBgYGCgYGBgIEjBQUDAwMDAQQCAwUCAwQEAwMDAwMDAwMCAwMDBAMDAwICAwMDAwMDAwICAgMBAgECAgIDAgMDAwQFBQMEBAQCAwICAjmAgICBgICBgYCAgIGAgYGBgYGAgYGBgYGBgUEEBQQDAwMDBAICBAMDAwMEAwMDBAMDAwMCAwMDBAMDBAICAgUEAwMDAwYCAwIDAgICAgMCAwMFBQUEBAIDAwMCAAICAQNZgICAgICAgYGAgYCAgIGBgoGBgYGAgICAUAECAQQDAwMCAQICBAMDAwICBAMDBAMCBAICBAQEAwIDAwEFAwMDAwMEAwMDBAICAgMAAwMCBAQFBQUEAwQEAwMEAgMBAgMIcICAgICBgoGBgYCAgYGBgYGBgICAgIBxEgIBAwMEBQMBAwQDAgQDAwMDAwMDAgMEAwQCAwMEAwEDAgIDAQIBBAMEAgMDAwMBAwMCAwMDBAMEBAIDBAQDAwMCBAQDAwMCIICAgIGBgIGBgYCAgYGAgYGAgYCAgYEaBAQDBAQDAwQDAwMDAgQFBAIDAgMDAwMDAwQCBAMCAgMCAwQCAQECAQIDAwQDAwICAgICAgQDAwMCAgQEAwMDAwMCAwMDAwMDAkmAgIGCgIGBgYCAgYGBgYCAgICAgUICBAQDAgMEAwQEBAQEAgQBBAQDAwMDAwMDAwQEAgIDAwIDAgECAgMBAwIDAwMCAwIEAgMCAgQCAwMEBAMCBQIBAwMDAgMDAwMEAQlxgIKBgYKBgYCBgYGBgYGAgICBcgQDBQQDAwMFBAIDBQMDAwMCAwMDAgQEAwMDAwMCAgIDAwQFAwMEAgQCBQIDAwMCAwMEAwQDAgQDAwMEBAQDBAQCAgIEAwMDAwQDAgIigYGCgYKBgoCBgYGBgYGBgIGBKgICAgIEBAIEAQMCAwICBAIBAgIEAwMDAwMDAgMCAwICAgMEAwQBAwUDAwMDAwMEBAEDAgEDBAUEBAMDBAMDAwIDAwMEAgIDAwACAQIBWYCAgICBgoCBgYGBgYGBgIFSBAMDAwUEBAMDBAMDBAMDAgMDAwMDAwQEBAICAgEDBAMDBAQDAgICAwUDAwICAwQEBAICAQIEAwQFBAIDBAMEAwIDBQQEAgIDAwQDAgICEXiAgICAgYGBgoKBgYGBgYERAwMDAQQCAwMFAwMCBAMFAwIDAwMEAwMEBAQCAQEDAwMDAwMDAwICAgQEBAIDBAQDBQMDBAQDAgMCAgQCAwICAQMDAwIDAwMEAwMEAwMDA0GAgICAgIGCgYGBgYKBgVIEBAQDAwUDAwIDAgMCAwECAgIDAwIDBQMDAwMDAwMDAwMDAwMEAwQEAwMDAwMDBAMEBAIEAwQCBAICAAICAwIEAgIDAwIEAwMDAwUEAwQEBAl5gICCgYCBgoGBgYGBcRMDAwUEBAMDAwIDAwQCAgUDBAUDAwMDAwIDAwMDBAMDAwMDAwMCAwQEAwMDBAIDAwQDAgMDAgMBAgICAAMDAwACAgICAgECAgMDBAQEBAQDAwJBgYGBgYCBgYGAgYGBQQMFBQQDBAMCAgMDAgUDAwMCAwMDBAMDAwMEBAMDBAMDAwQEAwMEAwECAwMDBAMDAwMDBQICAgEBAQMBAQICAwMBAwMEAgECAgMDBAQEBQQDBAIKeYGBgYCBgYGAgIGBEwIEBQQDAwMDAgIDBAQDBQEDBAMEAwMDAwQEBAQDBAIDAwMEAgMDBAICAwMDAgQDAwMEAgIBAgICAgIEAgEBAwMCAgMDBAICAgIDAwQEBAQDAwICQoGAgYCBgYCBgIFSBAQDBAMDBAQEAwIDAgEBAwECBAICBAMEAwQEAwQEAwMDAwMFAwMDAwECBAMDAwIDAwQGAwMDAAIDAAIEAgEDBQQCAwIAAgMCAQIDAwQEBAQDAgICEoGBgYGBgYGBgYESAwQEBAUDAwUDAwMBAQIEAgIBAQQCBAQDAwMEAwQEBAMEAwMEAwMDAwICAwMCAwMCAQMDAwMDAQEDAgICAQIDAwICAwMBAQMCAAICAwMDAwMDAwMDAmGAgIGBgYGAgVkEAwQEBAQEBQUEBAEDAgMCAgEDAgMDAgMDBAQCAwQDAwMDAwMEAwMDAwECAwMEAwMDAwMDAwQEAgICAwECAgMEAwMDAwMCAgECAQIDAgIDAwMDAwQEAiCAgIGBgYKAgSkDAwICBAUBAwMDAwUEAQIAAQIDAgQAAgMEAwMDAgMDAwMDAwMDAwMDAwMDAwMCAgIEBQMCAgMDAgECAwECAgICAgIDAgMCAgICAgIEAwQEBAQDAwIFAwN5gYGBgYKBcQQDAwMDBAMDAwMDAwUEAQECAgECAQIDAwICAwIDBAMDAwICAwICAgEDAgICAwUCBAQFBQQDBAMDAgICAwADAwEBAgQCAwIBAgMBAQEDAwMEBAQDBQMDAwJKgYGBgYGBUgQEAwMFBAQDAwMDAgQEAgICBAIDAgEDBQQEAgIDBAQDBAQCBQIDAwMCAgICBAQDBAMDBAQEBAMDAgMBAgECAgIDAgIEAwIAAgICAgIBAwQEAgIDAgMDAwMigYGBgIGAIgIEAgMEAwQEBAQDAgIDAQEBAgICAgMCAwICAQIFAQEAAQEBAgACAQEDBAICAwMDAwIEBAQEBAMFAwQCAwMCAAEEAwACAwECAgIDAgICAQIEAQMCAwMCAwMCeYCBgYFxAgMDAwMEBAUEBAQBAQMCAgIBAgEAAAMCAgECAgICAwEBAgMAAgEBAgMDAgMCBAQDAwMDAwMCAwMDBAMDAwMCAgUCAwICAgMCAgIBAwQDAgACAgMDAwMEAwMCUoGBgYFQAgMFBAIEBAMEBQICAgMDBQQBBAICAwQFAwIFAgIBAgICAgICAgIDAgMCAgIDAwQCAwIDAgIDAgMEAgQEAwMAAQMCAQACAgICAgEDAwMDAgIBAwMDAgMEAwMDMYGBgYEqAwQEAwIDBAQEAwMEBAICBAMBAwICAwIDAwECAQICAgECAgECAgICAQECAgECAgMDAgIEAwMDAwQDBAMDAwQDAwIDAQIDAgIDAwMDAwMDBAMDAwMEBAMDAwICCYCBgYERBAQEAwQCBAMCAwMDAwICAgIBAgMBAQEAAQICAwICAQIDAwMDAwIBAgQBAgACAwMDAwIDAwQCAwQDAwUCAwIDAAIBAgMCAgICAwIDBAIBAwQEAgMEBAMEAwMCAzlweToDBAQDAgEDAwIEAwIEAwMCAgICAgEDAwECAgECAwQBAQIDAwMDAwEBBAMBAgIC" },
78
+ "720p-landscape": { width: 80, height: 28, source: "VeoWatermarkRemover/720p-text", dataBase64: "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" },
79
+ "720p-portrait": { width: 80, height: 28, source: "VeoWatermarkRemover/720p-text", dataBase64: "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" },
80
+ "1080p-landscape": { width: 120, height: 42, source: "VeoWatermarkRemover/1080p-text", dataBase64: "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" },
81
+ "1080p-portrait": { width: 120, height: 42, source: "VeoWatermarkRemover/1080p-text", dataBase64: "AwIDAgICAQEBAQICAwMCAQEBAQEBAQEBAQEBAQEBAQEBAQIBAgMDAQICAgIBAQEBAQEBAQEAAAAAAAAAAAABAAABAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQERN1xNTE9VTS0EBQMCAgEBAQEBAQEBAQEBAQEBAQEBAQIRLT5APjs3KxUBAQEBAQEBAQEAAAAAAAAAAAABAAABAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVV6Ohnp+gmHMSBQICAgEBAQEBAQEBAQEBAQEAAAAAAAFKiqKbmJqfgEABAQEBAQEBAQEAAAAAAAAAAAABAAABAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMn+al5eWknscBQUFAgICAgICAgEBAQEBAQEAAAAAAQVhiI2IiYuQYSQBAQEBAQEBAQEAAAAAAAAAAAABAAABAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFUuZkZOTkYdMEQUEAgICAgICAgEBAQEBAAAAAAABBB19kY2Li5KKRgwBAQEBAQEBAQEAAAEBAgEAAAABAAABAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMBBy6Rj4+PkI93HgYDAgICAgICAgIBAQEBAQEAAAAAC02Mk4yMjZVyLgIBAQEBAQEBAQEAAAEBAQEAAAABAAAAAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBABdskpGPkZCROQ4BAgICAgICAgICAQAAAAAAAAECFoGSkI6OjZRKFQEAAQAAAAAAAQEAAQEBAQEBAQABAAAAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQs4iJGQkJGVYyECAgICAwMCAgICAQAAAAABAQEIKpOPjo+RkXwnBQEBAQAAAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAQEAAAIPc46Rj5KVhTUHAgMCAwMDAgICAQAAAAAAAAEcYZSQjo+RkUwTAQEBAQABAQEBAQEBAQEBAgIBAQEBAQEBAAAAAAABAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEAAAAAAAAAAAABAQEBAQAAAAAAAAAAAAAAAQEAAAADTISTj5GRk1UcBAIDAwMDAgIBAQAAAQEBAQYvgpKPjpCPfSYIAQICAQABAAABAAEBAAECAgEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAAAAAAAAAAECAQEBAQEAAAAAAAAAAAAAAQEAAAACIHORjpCMlHc7CAMEBAQDAgICAQEBAAEBABdPlpCPjpKJXAsBAgICAQEBAQEBAAAAAAEDBAUFBAQDAgEBAQIBAQEBAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAgIDAwICAQEBAQABAgIBAAAAAAAAAAAAAQEAAAECBleHkZCLj4dPEAQDBAQDAgICAQEBAAABAy5vmI+PkJJ7MQYBAgICAQECAgEBAAYQGSAnKi4wMC0qIhgNBQEBAgEBAQEAAAAAAAAAAAAAAAEBAQEBAQEFDRcgJSosLCwqJyEWDAQBAgEBAQAAAAAAAAAAAQEAAAECAjh1lpGNjY5lJwQDBAMDAgICAQEBAQECD02Lk4+QkopiEQMBAgIBAgIDAgQKGjZTanuKi4yNjYyLgGhKLhcGBAIBAQABAAAAAAAAAAAAAAEBAQEDChgxTGZ6hYyOkJCOiX5mTDAZCgMDAgAAAAAAAAAAAQEAAAEDAhVXkJOPjo97SQgBAgMCAgICAQEBAQEBK2uVj5CQlHo/BQEBAgICAQECCR1AbIaPkpKSkZGRkpKTl5mSgGExEwUBAQEBAAAAAAAAAAAAAAEBAgkcPmeGkpaWk5SUlZaWlpiZlYVnPh0KAgAAAAAAAAAAAAAAAAACBAM8gJiQj5CMaRkCAQICAQICAgEBAQEFS4OUj5GSkmIcAQEBAgICAgINM2OImJGQkJCRkZGSkZGRk5KUlpSFVSYLAgEBAAEBAAABAQEBAQEBEjZihpSTk5KSk5OUlJSUlZKQkZKUj2o6FAAAAAAAAAAAAAAAAAEDAwIjYJiQjpCUfzoFAQEBAQICAgIBAQIcaJCSkJKUfkMHAQEBAgICAwk+dpaVkpCSko+Mg356e4CJlJSRj5GVk204DgAAAAEBAAABAQEBAQIWSnqTk42PkJGRj4qGhYeLkZOTkY+PkpSCTxkCAQAAAAAAAQEBAQECAgILPY6Pjo+Rh18NAgEBAQICAgICAgNGfpORkJGTYSUBAQEBAQECCTR5lJOUlJKMfWlWQjgxMj1OZICOkZGPj5J2PgYBAQEBAQECAgEBBBNXhJKSko2Oh31uW09GQ0hQWXKHkpOQjpCUh1oaAwEBAQEBAQEBAQECAQEDJ3GSj4+QjXsiBwEBAQICAgMCAwplipKQkZOIQg0AAQEBAgEIJ3WMkpKRkH9XNB0KAwEBAQEFEzVhhJSUjIyOcSkEAgIBAQECAQIDEk6KkI+Pj416WjsiDwcDAgQHCyRGb4yUjo6QlohVEAMBAQAAAAABAQECAQEBFk2TkJGQj4lIEQEBAQICAgMDCCV/kJCQj5RrJwIBAgEBAQQaZoyNj5KNeUAVAgEBAQECAQEBAQIaS4KWj42Oh2USAwEBAQIBAQEON4eOjo2Ni4A9FwYBAAEAAAABAgEIJlaEkYyOkZOHPA4CAQAAAAABAQEBAQEBCSuBkJGOjY1yIAQBAQICAgICEVCKkZCRj49EEwICAQEBAhNEk4yMjox5OA0CAQICAQICAQECAwQEFUSPkI+MjoczCwABAQEBAQIlaZOKi4yKe0MOAQEBAQAAAAABAgECAxpNho+Pj5KScyIFAAAAAQEBAQEBAQEBAhNfjpOOjY2KOw8BAQICAgIGIX6QkZGRjXslBwICAgMCAilxlo2OkH5KCAIBAgICAgICAQECAgMEBBhvjY+NkI1aFAEBAQEBAQtBi4+LjI1/VgoDAQEBAQEBAQEBAQECAgUaWIqQjo+QjkIRAAAAAQEBAQEBAQECAQgzg5SQjY6RYSIBAQEBAwIRQZaTkI+Phk8SAgECAwYCBzyKko6QjmkjBAICAgICAgICAQECAwIDAxBNho6OkI93HwMAAQEAASVilYuNjYppKAEBAQEBAQEBAgIBAQICAgIHIHeNj46PlGYjAQEBAAABAQEBAQECAgMPbZCUjo6QfjMCAQEBAgEjaZuTj46NfiAHAgIDAwQBFU+Sj5CRi3BDMzEuLCwsLC0uLi4vLy0sLThbho2OkJCLKwcAAAEAATt5kouOkYRSCQEBAQEBAQIBAgICAgICAgIDBViIk46PkX0wAQEBAAAAAQEBAQEBAQECR4WXjo2OjU4UAQICAQU2h5eSkJCKagsDAgICAgEAJmOSjpGQjomAfHp3dnd3d3d4eHd4eHZ1d3uEjpCQkpSWOAwBAQAAAUWCjouOlHk9AQEBAQEBAQEBAQEBAQEBAgICATh/lo2NjYg6BgECAAAAAAEBAQEBAQEBIm+Tjo6Qk20xAgMEAhlTk5CQkJN/QAUCAgIBAQIAMW6RjpGQkJKVl5SSkpKSkpKSkZGRkpGRkZGRkpKSkZKYQhEAAAAAAUiFjoqNlW4vAAIBAQEBAQEBAQEBAQEBAQEBASh3lI2NjoxBCgECAAAAAAABAQEBAgICClGDj46QkYNMCQEEBDh2lI2NkY9nFQMBAgIBAQEBNHCRjpCQkpaXmJeUk5OUlJSUlJSUlJSUlZWWl5aVlZaZShQAAAEAAUmGjoqNlGgnAQQCAQEBAQEBAQEBAQEBAQEBASJykYyMjo1EDQECAAAAAAABAQECAgIDAi9rkI2Pjo5lIAACDlCJj4yNk4FJAgEBAgIBAQACNXGRj5CQhGtPUlNSUVFRUlJSUlJTU1RUVFRVVlRTVl9hLw0AAAAAAUmGjoqNk2goAQYCAQEBAQEBAQEBAQEBAQEBASJxkYuLjo1FDgIBAQEBAQEBAQECAgICAQ9QkZCQj5B5QwEDLGuRjY2NkmcmAAEBAgICAQECM2+Sj5GQfU0TDxAPDw8PDw8PDw8PEBAQDw8QEA8PERYXCwQBAAAAAUaEjoqOkW4zAQQCAQEBAQEBAAEBAQEBAQEBAi92kYuLj4s/CgEBAQEBAQABAQECAgEBAgI8g5COjo6GYAoDS4CRjpCNh0sLAAEBAgICAgICKWWTj5GQg1QLAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAEB+kIqOjnpEAQMBAQEBAQEAAAABAQEBAQEBAUWAk42MkYM2BAEBAQEBAQEAAAEBAQEBAQEhXJOQj42OeSoPZIyQj5CUbzACAgICAgICAwIBFlCSj5GQi2MYAgMDAgICAgICAgICAgMDAgMDAwMCAQEAAAAAAAAAADBukoqMj4haDwIBAQEBAgEBAQEBAQECAgEDD2SJkY6NlHApAgEBAAABAQEAAAEBAQEBAQEIMomRkI6PhVw/do6Oj4+UURgBAgEBAgICAgECCUCPjpGQkHQxAgICAgEBAgICAgICAgICAgQNCQQCAQEBAQAAAAAAAR5YkIyOj491OAEBAQEBAgIBAQECAgEBAQEJMH2Mjo+PlVkdAQEBAAAAAAAAAAAAAAAAAAABHmmUj46Pinppg5CQj5V7NAkBAQEBAgICAgEBBCxzl5GQlY5lGAYDAwMDAwMDAgIDAgIBBh9aW0QqGBIFAgEBAQEBAQk6gpGOjpCLbh4GBAQCBAQDAwMEAwIDAgYico2OjI2NiDQLAAAAAAAAAAAAAAAAAAAAAAAADz2PkI+PjIaAiY6OkJZUHgUBAQEBAgICAgECAhJAjpKPjpCOZyQIAQICAgMDAwIDBAIEIVyPj4uEeWMcBQICAQEBAQMeWJWRkZCPjHEkCAMEBQQEBAQDAwUDCi9rkY2OjY2MXhgCAAEAAAAAAAAAAAAAAAAAAAABBRl6j5GPjoyKjY6OjoopCQIBAQEBAQICAgECAgQYXIyRkI+Nk3A0DQICAwICAgIBAgQiWIuRkJGUjWoUBAMDAQEBAgQJI3SUk5CNjJBzQhoGAwUEBAMEBgcXRHaRj4+NjYlxIggBAAAAAAAAAAAAAAAAAAAAAAABAgtVhpKQjo6OjpCTjWUUAwICAgEBAQEBAgICAgIEFW2QlJGQjZSDYTkXCQMCAgIGIUZviYyPjo2PdjEEAwIBAQIBAQIDCzB+k5OQkI2Qhm5NKRcPCwsUK0tvhpGTj4yOjnU3BQUCAAABAAAAAAAAAAAAAAAAAAACAwQkd5CPjo6PjpCUhC8JAgICAgICAgICAgICAgEBAiJkjZeRkpOWk4t/a2JgZGx2hIyPkJCSjpF8SQ0CAQEBAQEBAQICBA03eZORj5OQkpKNhYB9fHyAiJGRkZGRiI2SbzULAwMBAAAAAAAAAAAAAAAAAAAAAAAAAQMMWoWRkI+PkJSOagwDAgIBAgICAgICAgICAgMDAgMfVoiampSSk5SXl5STk5WWlpORkJOTkXM9DgIBAQEBAQEBAQICAgILOG+Um5GMjY+QkpKSkpOVl5SQj4+RlZJqMwoCAQAAAAAAAAAAAAAAAAAAAAAAAAABAgIBNHOTkpGSkpqGSAMBAQEBAgEBAQECAgIBAgMEAwEDDS9plJuXlJOTlZSUlJSTkpOSkpKOXCkLAQEBAQEBAQEBAQEBAgECBhtIgZyVkZGRkZGRkZGRkpCOkJWSekQZBgIBAQAAAAAAAAAAAAAAAAAAAAAAAAABAQIAFmGUl5eXkIpjHgECAQEBAQEBAQECAgICAgIDAwICAgQQMWSEkpeampqZmZeXl5OOf2AkDwUEBQIBAQEBAQEBAQEBAQEBAQMJGUdyiJKXlZWVlJOUlJKQhmg6EwcHBQIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAhYrNTUzJx0RAwEBAQEBAQEBAQECAgICAgICAgICAgIDBQgZMUtib3R1dXNtV0IpFg0EAgEBAQEBAAAAAAABAQEBAQAAAQEBAgUOHTJKYW5ub29nU0QtHA8FAgABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAECAgICAwIBAAABAAAAAQECAgICAgICAgICAgICAgMDAwIBAgMEBwgIBwcGBAMCAgEBAQEBAgEBAAAAAAABAQEBAQABAQEBAQEBAQIDBQcHBwcGAwQDAQAAAAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEBAAAAAAAAAAABAAAAAQEBAQECAgICAgICAgICAgICAgEEBAIBAwIBAQEBAgECAgIDAgICAgEBAAAAAAAAAAEBAQABAQEBAQECAQABAgAAAAAAAQABAQEBAQEBAQAAAAAAAAAA" },
82
+ "veo-diamond-1080p-landscape": { width: 96, height: 96, source: "GeminiWatermarkTool/bg_b_96", dataBase64: "AgMCAgICAgMCAwICAgICAgIDAgICAgICAgMCAgMCAgICAwICAQICAgIEAwIBDis+QjIQAQICAgICAwICAwICAwMDAwICAgICAgQBAgMDAwMDAwICAgICAgIDAgICAgICAgIDAgIDAgIDAgICAgMCAgICAgICAwICAgECAgIDAgICAwICAQMBAgMDAgIEFTFFRzcXBQMEAwMDAgMCAgMCAwICAgMCAwIDAgIBAQIDAgMDAgEBAwQCAgICAgICAwICAgICAgICAwICAgECAgECAgICAgMCAgICAgICAgICAgICAgICAgICAgICAQMJHDlPUDweCQICAgICAwIDAwICAgICAgICAwICAwICAgEBAgICAQICAgIAAgMBAgIDAgICAwICAgICAwICAgICAgMCAgMCAQICAgICAgICAgMCAgICAwIDAgICAgIDAgIPKURZWUYqEAMDAgIDAgICAgMCAwICAgIDAgIBAgICAwEBAwIBAQICAgIBAgMCAQIDAgICAgICAgIDAgICAgICAgQCAwICAgICAwICAgICAwMDAgICAgICAgMCAgICAgIZNE1dXkwzGQMEAQMCAwIDAwMDAgMCAgICAwIDAgIDAgICAgICAgIDAwMCAgICAgICAwICAgICAgIDAgICAwIDAgMCAgIDAgICAwICAgMCAgQDAgIDAwIDAgMCAgICAgUeN01cXE02HgUCAgMCAwIBAQMCAgIDAQECAwIDAwICAgIDAgICAwICAgMCAgIDAgICAwICAgICAgICAgMCAgICAwMDAwMDAgICAQICAgMCAgMCAwICAgIDAgIDAwIBBA8oO0tZWUo8KA4FAQMCAwMDAgMDAgICAgMCAgICAgIBAgICAgICAgECAgMBAQICAQECAgICAgIDAgICAgICAgICAwICAwICAwMCAgICAwMDAgIDAgIDAgIDAgMCAwIBCBg1Q0xWVkxCNhgHAQMCAgIDAgICAwICAgICAwICAgMCAwICAgICAgICAgIBAQICAQECAgICAQICAgMCAwMCAwICAgICAwEDAwIDAgICAgMCAgICAwICAwMCAgICAgICBh49SE1VVU5HPh0HAQIBBAMCAgICAgIDAgICAgICAgMCAwICAgIDAwICAgICAgIEAgMCAgICAgICAgIDAgIDAwICAwMDAgICAwICAgICAgICAgIDAgICAgICAgMCAwICDSlIT09SUk1OSCkPAgIDAgICAgMCAgICAgICAwIDAgICAgIDAgICAgICAgMCAgIBAgICAwIDAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgMCAgIDAgICAgICAgIEGDRRU05QUE5SUTYaBQICAgEDAgICAgICAAECAgICAgICAgMDAgICAgABAgICAgICAAECAwECAQICAgICAgICAgICAwICAgICAgICAgIBAgICAgICAgICAgEDAQMCAgIJJD1VVU9PT05UUz8pEAICAgICAgICAgICAAECAgICAgICAgICAgICAgABAgICAwICAAECAwECAgICAgEEAQICAgECAgMCAgICAgICAwICAgICAgIDAgICAgICAgMCAgMYMEZWVk9OTk9UVUg5IwsDAgIBAgMCAgICAgICAwEBAgICAgEDAgICAgICAgMCAgICAQICAwICAgMCAwIDAgICAwIDAgQCAgIDAgICAwICAgICAgIDAgICAwICAgQCAwkkOEhVVE9OTk9SVEtCLxEDAwECAgMCAgIDAgICAwEBAgMCAgIDAgICAwICAgMCAgIEAgICAwICAgMCAgICAgIDAgICAwICAwIDAgMDAwICAgMCAgMCAgICAgICAwMDBRMyQktTUk5OTk9RUkxJPBgGAgMCAgICAgIDAgIDAwICAwMBAgICAQECAgICAgMBAQICAgICAgEBAgICAgICAgIDAwICAgMCAwMDAgICAwIDAgICAgMCAgIDAgMDAgMCDCREUE1QUE9OTk5PT09TSigQAgIDAgICAgMCAwMCAgICAwICAgICAAECAgIDAwIAAAICAgICAgABAgMCAgICAgMCAwICAgIDAgIEAwMDAwMDAgQCAgIEAgIDAwMCAwICEi9MVlBQUE5PTk9OTk9VTzQbBQIDAgICAgICAgIDAgEBAgMCAgICAgICAwICAgIBAQECAQECAgICAgICAgIDAgICAgICAwMCAgMCAwMCAwMCAgICAgIDAgICAgICAQMLJj5TV1FOT09OTk9OTlBXU0AuFAUCAgMCAgICAgICAwEBAwIDAgIDAgMCAgICAgMBAQEBAgEBAgMBAwICAgIDAgICAgECAgMCAgICAgIDAgICAgICAgICAgIBAwACAQgfOEhVVFBPT05OTk9OTlBUUkc8JAkBAgICAQICAQACAgICAgIAAQMCAgICAgABAgIBAgICAAECAgACAgICAgIDAgICAgEDAgIDAgICAgIDAgICAgIBAgICAgIBAgEBAg8wSExQUU5OTk9OTk5OTk9RUEtGLwwAAgICAQICAAECAgICAgIAAQICAgICAgABAgICAgICAQECAgECAgIDAgIDAgICAwICAgMCAwMCAgIDBAICAgICAgIDAgICAgICCSFFWFNOUE5OT05OTk5PTk5QT1BSQB0IAgMCAgEBAgECAgICAgICAgECAgICAgICAQIBAQICAQECAwIBAgMDAgIDAgMCAwMDAgQCAgIDAgICAwICAgMCAgICAgICAwIDFzFKWVNPTk1OT05PTk9OT05PTlFVSC8ZBAICAgECAgIDAwICAgMCAgECAgICAwICAQIBAQIDAQECAwECAgICAgMCAgIDAgICAgICAgICAgICAgICAgMCAgMCAgICAQUSLz9MVVFPTk5OTk5OTk9NTk5OTlBTTEEyFgYBAgMCAgMDAgICAQECAgICAgICAgECAgICAgICAQECAgEBAwICAgMCAgIDAgICAgIBAgMDAgIDAgIDAwICAgMCAgICBRQsREtOUU9OTk5OTk5OTk9NTU9PTk9RUE1HMBUDAwMDAwICAgICAQECAgICAgICAgICAgIBAgICAQECAgEBAgICAgMCAwICAwICAgMCAgIDAgICAgMCAwMCAwICAgICDSQ5TlFNTlBPTU1OTk5PTk9OT05OTk9PUFJPOyYMAQMDAAECAgECAgMBAQEBAgMCAwIDAgIDAwEDAQECAwICAgICAgIDAgICAgICAgMCAgICAgIBAwICAgIDAgIDAgQLIjhIVlRNTU5OTU1PT05OT05PT05PTk5OT1RVRzkiCwQCAQACAwEBAwIAAQECAgMCAwICAgQDAwIDAQECBAMDAgMCAgICAgICAgICAgICAgICAgICAgIDAgIBAgICAgsdNUdPVlNPTU5OTU5OTk5OT05OT05PTk9NT1JVT0c2HAsCAQICAgACAgIBAQICAgMCAgABAgICAgICAQICAgECAgMCAgICAwICAgICAgICAgICAgIDAwIEAgICAgICBBgtRU9OUVBPT05PTk5OTk5OTk5OT09PTk5OTlBRTk9ELBgEAgICAgIBAgMBAQMCAgIBAQABAgMDAgMCAAECAgABAgMDAgIDAgICAgICAgQDAgICAwMCBAMCAwICAgMJGDFCUlVQT09OTk9OTk5OTk1OTk9OTk5PTU1OTk5OUFZRQDAXBwICAwEAAQECAgIEAQEDAwMCAgMBAQECAQECAwIDAwICAgIEAgICBAMDAgMDAgIDAwMCAgMCAgQCAggZLUJLUlNQTk9OTk9PTk5OT05OTk9OTk5PTU1OT05OUFRRSkItGAcCAwEBAQICAgIDAQECAwMCAgMBAQIDAQECAwECAgICAgIDAgICAgICAgMCAgICAgIDAwMDAwEBAxktQVBPT1BOTk5NTU5OTU1OTk5PTk5OTk5OTU1OT01OTlBOT1BBLBgDAQABAwICAwEBAgACAgEBAgICAgICAAECAgECAgICAgICAgIDAwIDAwICAgMDAgICAgIDAgQLGTBCUVdTTk5OTk5NTU5OTk5OTk1OTk5OTk5NTU5OTk5OTk5OUldQQjAXCwMBAgICAgIBAAEDAgIBAgICAgICAQECAwECAgMCAgICAgMCAwICAgMCAgMEAgECAgICAg0cLUJMUFRRT05OTk5OTk5PTk5OTk5OTk9OTk5OTk5OT05OTk9OUVNQS0IsHgsCAgMCAgIBAgICAwICAgICAgIDAgMDAwICAgICAgIDAgICAgMDAgMCAgICAgMCAwEFDCI2RlFTT1BPTk5OTk9OTk5OTk5OT05OT09OTk5PTk5OTk5OTk5OTk9PUlJENyIMBQECAgIDAgICAQICAgQBAgECAgICAwICAgICAgICAQICAgEBAwICAwICAQIDAQYXJDhGT1VTT05OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTU1NTU1NTk9NTk5QUlRPRzgkFQUBAQICAgICAgICAgIAAQICAAECAgICAgICAwICAgICAgEBAgIDAwMDAQIBBRYwO0hOTVBQTk5OTk5PTk5PTk5OTk5OT05OTk5OTk5OTU1NTU1NTk5OTk5OUFBOT0g5LRMDAQICAgECAgICAgIAAQICAAECAgICAwICAgIDAgIBAgICAgMCAgICAgIJGjRIUFZUUE5PTk5PTk5OTk9OTk5PTk5OT05OTk5OTk5PTk5OTk5PTk9OTk5OT05RVVRORDAXCQIDAAICAgEBAgQBAQIDAgICAwICAgMCAgIDAgICAwICAgMCAgIFCg4eMUJPUlVSUE5PTk5OT09PTk9PTk5PTk9OT05PTk9OTk5PTk5OT05PTk9OT05PTk9QVFVSTEAxIBAJAAICAwEBAwMCAQMDAgIDBAICAgMCAwICAQECAgECAgIBAQQWJC8/R0pPT09PT05OTU1OTk5OTk5NTU5OTk5PT01OTk5OTk5OTU1OT05PT05NTU5PTk5OT09PT0xLRjIgCwICAgIDAgMBAgMDAgMDAgEBAgICAgICAAECAgICBAMFDhstPEdSVVJPUE9NT05NTU1OTk5OTk5NTU9OTk5PTk1NT05PTk5PTU1OTk9PT09NTU5OT05PTU1OT1RYWEg6JRMLBAQCAwQBAQQCAgMDAwABAgMCAgICAwECAwICCxIYKDRAR0tQUVBPT09OTk5OTk5OT05OTk9PTk5PTk5OT05OTk9OTk5OTU1OTk5OTk5OT05PT05OTk5PT1JTU0xIPS4kFAoDAgIDAwECAgICAgICAwIBAgICAQEBAgYQIy88Sk5RUlBQT05OTk5OTk5OTk5OTk5OTk9OTk5OTk5OT05OTk9OTk5OTU1OTk5OTk9OTk5OTk5OT05OT09NTlBVUkxFMiMYCAUCAQAAAQIDAwICAgMAAQICBAYHDRgoOEFJU1RWU1FPTk5OTk5NTU5OTU5OTk1NTk5OTk5OTU1OTU5OTk5NTU5OTU5OTk1NTU1NTU5OTU1OTk5OTk5NTVFUV1NPQjcwIxcOBwYEAAECAgICAwIAAQIGDhkdKTQ+SEtMT05QT09OTk5OTk5NTU5OTk5OTk1NTk5OTk5OTU1NTU5OTk5NTU5PTk5OTk1NTU1NTU5OTU1OTk5NTk5NTU5PUE5OSkdFPDQpHRgOBAECAgICAgMIDxkfKDU8SFFTVVRST05OT09OT05PTk5OTk5PTk5OTk1NTk9OTk5OTU1OTk5OTk5NTU5PTk5OTk1NTU1NTU1OTk5OT05OTk9NTU9PTk9QUlRVVVJIPDUoHhkQCQMBDxceKjM3O0JHT1JUVVNRT05PTk9PT05OTk9OTk5PTk5OT01NTk9OTk5PTU1OT05OTk9NTU5PTk5OTk1NTU1NTU1OTk9OT05OTk9NTU5PT09QU1JUVVROR0M8NzQqHBMMMDY9RkxMSktNTk5PT1BNTU5PTk5PTk1NTk5OTk5OTU1OT05OTk5NTU5OTU5OTk1NTU1OTk5OTU1OTk5OTk9NTU5PTk9NTk1NTk5OT05PTU1PTk5OT05NTEtMTExEOTApQEdQWV1cWFVVUlBPTk9NTU5OT05OTk1NTk5OTk5OTU1OTk5OTk5NTU5OTk5OTk1NTU1OTk5OTU1OTk5OTk5NTU9PT05NTk1NT05PTk9OTU1OTk1NT1BRU1VYXFxZTkQ9PkZNWV1cWVdUU09PTk9PTk1PTk5OT05OTk9OTk5PTk5OT05OT01OTk5PTk5PTk5OTk9NTU5OTU1OT05OTU5OTk9PTU5OTk9OTk9OTk9PTk5OT01NT1FSVFZZXF1ZUEhAKjE5RE1OS0xNTk5PUFBOT05OTk5OT05OTk5OTk5PTk5OTk5OTk5OTk5NTk5OT05OT05NTU9PTU1OTk5OTU5PTk9OTU5OT05OT09OTk5PTk5PTU5OT09OTUxLTE1FPTYxDBMbKTQ2O0RHTlJUVVNSUU9OTk5OTk5OTk5OTk1OTU9OTk5OT05NTk9OTU5OTk5OTk9NTU5OTk5OTk1NTk5NTk5OTU5OTk5OTk1NTk5OTU1PUVJUVFNOR0I8NTMqHhYPAwQHDxkeKDU8SFBUVlVSUE9OTk5OTk5OTk5OTk5PTk5OTk5OTk9OTk9PTU1OTk5PTk5NTU5OTk5OTk1OTk5OTk5OTU1OT05OTk1NTU9OTk1PUlNVU1FIPjUoHRgQCAQCAgIAAQIGDxgdKTM8RklJT09RUE9OT05OTk5OTk5PTk5OTk5PTk9OT09OTU1OT09OTk1OTk5PTk5OTk9OTk9OTk5OTk5OT05OT05NT09RUE9OTEtIPzYoHBgOBgIBAgMCAgMBAQICBAYHEBciMThCT1RYVVFOT05OTk9OTk5OT05OT05OTk9OTk9PTU1OT05OTU5OTk5PTk5NT05OTk5OTk5PTk5OT05OTk9OT1NVVlZUSkI4KRsNBwcFAgMBAQICAgMCAgIBAAABAgQIGCMyREpUVFBOTk5OTk5OTk5PTk5OTk5PTk5NTU9OTk5OTk9OTk5OTk5OTU1OT05PTk9OTU1NTk5OTk1NTk5OT1BSUE1KOy4jDwgDAQACAQICAwICAgMDAgICAAEDAwICAwsSIi49R0xTU1FPT05OTk5OTk5OTk5OTk5NTU5OTk9OTk5OTk5OTk5OTU1OTk9OTk5NTU1NTk5OTk1OUFFSUUtIPzMoFxELAgMCAgICAQICAgICAwMBAgICAwMCBAECAgMFDBMnOUlYWVVQT09NTk5OTk5OT01NTk5OTk5PTk5OTk5OTk5OTk1NTk5PT01NT05OTk5PTU5OTU5QUFRVU0c8LBkQBgMDAgIBAQIDAQECAgIDAgIDAgIDAgICAgICAgMCAgILIDJGTExOT09QTk5OTk5OTk1NTk9OTk5OTU5OT05OT05OTk1OTk5PTk1PTk9OTk5OTk5OUE9PT0tIQC8kEwMCAgICAgMAAQICAQECAwICAgICAgICAgICAgICAgIDAgEBCA8hMj9LUVRTUU5OTk5OTk5PT05NTk5OTU1OTk1OTk5NTU5OTk5OTk1NTk5NTk5OTU1PUVRSTkEvHg4KBQICAgABAgICAgICAgICAgEBAgIBAgICAQMCAwICAwMCAgMCAgIJGC9DTVVVUU9OT05PT01PT05OTk5OTU1OTk5OTk5NTU5OTk5OTk1NT05OTk9OTU1PU1VPSDMYCAICAgICAgABAgICAgICAgMCAgEBAgICAgIDAgIDAwMCAgMCAgICAwMDBhIsOUdPT1BRTk5OTk5OTk9NTk5OTU1OT05OTk5OTk5PTU1OTk5OTU5OTk5OUFBOUEY7MBYFAQIDAgIBAQICAgMCAgMCAgICAwICAgMCAgICAwICBAIDAgMCAgIDAgICAwUUJDlIUFZVT05PT05OTk9NTU5PTU1OTk5OTk5OT05OTU5OT05OTU5OTk9QU1ZQSDckFQcBAgIDAgIBAgICAgMCAwIDAgICAwICAgICAgICAgECAwICAgIBAQIDAQICAwIFCyM2RlNUT09OTk1NTk5NTU5OTU1OT01NTU5OTk5OTU1OT05OTk5NTU9PUlJGNiELBAECAgICAQECAwIDAgIBAQEDAgICAgICAgICAwMDAAECAgICAgICAAIDAQECAgICAgseLkJLUFRRTk1NTk5NTU5OTU1OTk1NTk5OT05OTU1OTk9OTk5OUVNQS0ItHQkBAQECAgEBAAECAgMDAgIAAgICAgICAgEDAgMDAwICAgICAwIDAgICAgIDAgICAgICAgQLGTFDUldTT05OTk1OTk5PTk5OTk5OTU5OTk9PTk5OT05NTk9OU1dSQjAZCwQCAgMCAgICAgICAwICAgICAgIDAgICAgICAgIDAgIDAgIDAgICAgQCAgMCAgICAwECAgEBAxkuQlJQT1BPT09OTk5PTk5OT05OTU1OTk5PT05PT05NTlBPUFFCLBgEAgEDAgICAgIDAwICAgIDAgMCAgICAgMCAwICAwMCAgIDAgICAgIDAgICAwEDAwMCAgICAgIBAQgYLUNNU1NRT09NTk5OTU1PTk5OT09OTk5PTk5OTk1NUFNTSkMtGAgCAgICAgIAAQICAgICBAIBAwIBAAICAQECAgICAwMCAgICAgICAwICAgICAgIDAgICAgICAQIBAQMIGDFDU1VQTk9OT05OTU1OTk5OT09OTU5OTU5OTk5OUFVUQzEYCAMDAgMCAwIBAQICAwEDAwABAgIBAgMCAAECAwMCAgICAgICAwICAQICAwICAwMCAQICAgABAQECAgICAhgtRk9OUVBOT05OTk5OT05OTk5NTk5OTk9OTlBRT1BELBgCAgICAwMCAwICAgEBAgICAwIDAgICAgICAgMBAwICAgMCAgICAgICAgICAgICAgICAgICAgABAQECAgICAQkdN0dPVVRPTU5OTk1OT05OTk5OTk5OTk5NT1NWT0g1GwsCAgICAgICAgICAgEAAgIDAwICBAMCAgMDAwMDAwMDAgIDAgICAgICAgICAgECAgICAQICAgAAAQIBAQIBAQMLIjdGVVROTU5OTU5OTk1NTk5OTk5OTU1OTlNVSDgiCgQCAgIDAgIBAwMBAgMCAQEBAwIDAwMDAgMDAgMCAwMDAgICAgICAgICAgICAgICAgICAgICAgACAgIBAQICAAACCyM6UFJOTk9OTk5OTk1NTk5OTk5OTU5PT1FOOSQLAgICAgMDAgABAwMCAwICAAABAgIDAwMCAwMDAgIDAwICAgMCAgICAgICAwICAgMCAgIDAgICAgICAgMDAgICAgICBRUwSE9PUU9PTk9OTk5PTk5OTk5PTk9QUExELRUEAgIDAgIDAgMDAgMCAgIDAgIBAwECBAMBAgMDAgEEAwMCAgICAgIDAgICAwICAgMCAgICAgICAwICAgIDAgMEAgICAQYVNENMU1FOTk5OT05OTk5PTk5PT1FVTEAwEwYBAgIDAwIDBAICAgICAgIDAgMCAgEBAwQBAQICAQECAwICAgICAgICAgICAgICAgICAgICAAECAgABAgICAgICAgICAwEEGjFIVlFOTU1PTk5OTk5NTU5OTVNZSzAYBAICAgIDAAECAwICAgMBAQICAgICAwICAwICAgIDAAECAgIBAgICAgICAgICAgICAgICAgECAAECAgEBAgICAgMEAgICAgICCR5BU1BPTk1OT05PTk5NTU5OTlJYRiAIAwICAgICAAEDAwICAgMBAQICAwMDAwEDAgIDAgIDAQEDAgMDAgICAgIDAgICAgICAgICAgICAgICAwICAgEBAQIDAgIBAgICAQ8wR0tQUFBOT05PTk5NTU9RUExJMQ4DAgMCAQICAgECAwICAgIEAwIDAgMDAgICAgMDAgMDAgIDBAMCAgMCAgIDAgICAwICAgMCAgIDAgICAwICAgMBAAICAgIBAwIBAgwkO0hTVFBOT05OT09NTVFVVEc5IAgBAwMCAQEDAgICAgEBAwMCAgIDAwICAwICAgMCAwIDAgMDAwMDAgMCAgICAgICAwICAgMCAgICAQICAgEBAgICAgIDAQECAgABAQUTLD9TVlFOTk1NTk5OTlFXUjwlDAIBAgIBAQMDAwICAgEBAgICAwICAgEDAwIDAgIBAQIDAgMDAgMCAgICAgICAgICAwICAwMCAgMCAgICAgABAgICAgICAAECAgIBAQECGTNOVlBOTU1OT05PUE9USy0UBAMCAgIAAQIDAgICAwABAgICAgECAQEDAgMCAgMAAQICBAICAgECAgQCAwMCAwICAwIDAgMDAgIDAgIBAgICAgMCAgIDAgICAwICAgIBEChMU09PT09OTk9PT01QRCMMAwEBAgICAgIDAgICAgMCAgMCAgICAgIDAwEBAgICAgMDAgICAwEBAgICAgMDAwMDAgICAwMCAgICAgMDAwICAgICAgIDAgICAgICAgMCBhg8SUxRUk5OTk9RUkpDMhMFAgEBAQQCAgMCAgIDAwICAgMCAgIEAgIDAgECAgMDAwICAgMDAwEBAgICAgICAQICAgICAwICAgMCAgICAgICAgICAgICAgIDAgIDAgICAxEwQEtTUk5OT05SVUk5IwoDAgICAgMCAgMCAAECAwABAgIBAQMDAgECAwICAgICAgMDAgICAgECAgICAgICAQICAwIDAgICAgICAgICAgICAgICAgICAwICAgIDAgMDBAojOEhWVE9OTlBVVkcwGAMCAgIDAwMDAwICAQECAwECAwICAgMDAgECAgICAgMCAwIBAAEBAgEBAgICAgIDAgICAgICAgMCAwIDAgMCAwICAgICAgIDAgICAgICAgQCAwMPKT9UVU5PTk1VVD0lCAECAgMDAgQCAwICAwICAwIDAwMCAgIDAwMDAQICAgQCAgICAgMDBAICAgMDAgICAgICAwMCAgICAgIDAgICAwICAgMCAgIDAgMCAwMCAgMCAgIGGjVRU05RT05TUTUYAwICAwICAwMCAwIEAgMDAwMDAgQDAwIDAwICAgIDAwMDAgIEAgMDAwMDAgICAgICAgIDAgECAgMDAQICAgICAgICAgMCAwICAwICAwICAgICAgICDipIT01SUk5OSCoOAwMDAgIDAwIDAgICAgIDAwMDAwMCAgIDBAIDBAECAwIBAQICAgICBAICAgICAgICAQMCAgICAgICAgMCAgICAgICAgICAgICAgICAgIDAgICAgIBBx08R0xVVU5HPh4IAQMDAgMCAgMBAwMCAgICAwIDAgIDAwMCAgMCAgECAgIBAQICAgMCAgICAgMCAgICAgICAwICAgICAgMDAgECAgICAgMCAgIDAgICAwICAgICAgICBxg1Q0xWVUxDNRgHAgMDAwMCAwICAwICAgMCAwICAwMDAgMDAwICAwIDAwMDAwEDAQIDAgMDAgICAgMDAgMCAgICAgIDAgMCAgICAwICAgICAgIDAgICAgIDAgICAgIBBA4oPUxZWUw7KQ4EAQICAgIDAgQDAwIDAwIEAgICAwICAwIDAgICAgMCAwQCAgEBAQICAwIDAgMBAgICAgMDAgMDAgICAgICAgICAgICAgIBAgICAQICAgICAgICAgIBAgYeNkxdXU01HgUCAQICAgEDAgICAwIDAQEDAgEBAgIAAQICAgIDAwEBAwMDAwIDAAEDAgICAgIBAQMEAgMCAgIDAgMCAgMCAgMCAgICAgIBAgICAgICAgICAgICAgMCAgMaM0tdXk0zGAICAgICAQABAgMCAwMDAgECAgEBAgIAAQICAgICAgABAgICAwIDAAICAgICAgMCAgMDAwMCAwIDAgMCAwECAgEDBAICAgICAgIDAgICAwICAgMCAgICAwMQK0VZWUQpDwIDAgICAwICAgMCAgMCAgICAgICAgICAgEDAgICAgEBAgMCAgMCAgICAwICAwMCAgIDAgIDAwICAwIDAgMDAgMCBAICAgMCAgIDAgICAwICAgMCAgIDAgMIHzxPTjocCAICAgICAgICAgMCAQMDAgICAgICAgICAgIDAgICAgAAAgICAgIDAgICAwICAQICAgMCAgICAgICAgICAgIDAgICAgMCAgICAgICAgICAgIDAgMCAgIDAgIEFTZHRTETBAECAQECAgICAwICAgICAgICAgEBAgMAAQIDAgICAgICAgIBAQIDAgICAgEBAgICAgICAgMCAgICAgICAgICAQMCAwICAgICAgICAQIDAgICAgICAgICAgMBDzBAPioNAgICAAEDAgICAgMCAgICAgICAgEBAwIBAQIBAgICAgICAgMBAQICAgICAgAB" },
83
+ "veo-diamond-1080p-portrait": { width: 96, height: 96, source: "GeminiWatermarkTool/bg_b_96", dataBase64: "AgMCAgICAgMCAwICAgICAgIDAgICAgICAgMCAgMCAgICAwICAQICAgIEAwIBDis+QjIQAQICAgICAwICAwICAwMDAwICAgICAgQBAgMDAwMDAwICAgICAgIDAgICAgICAgIDAgIDAgIDAgICAgMCAgICAgICAwICAgECAgIDAgICAwICAQMBAgMDAgIEFTFFRzcXBQMEAwMDAgMCAgMCAwICAgMCAwIDAgIBAQIDAgMDAgEBAwQCAgICAgICAwICAgICAgICAwICAgECAgECAgICAgMCAgICAgICAgICAgICAgICAgICAgICAQMJHDlPUDweCQICAgICAwIDAwICAgICAgICAwICAwICAgEBAgICAQICAgIAAgMBAgIDAgICAwICAgICAwICAgICAgMCAgMCAQICAgICAgICAgMCAgICAwIDAgICAgIDAgIPKURZWUYqEAMDAgIDAgICAgMCAwICAgIDAgIBAgICAwEBAwIBAQICAgIBAgMCAQIDAgICAgICAgIDAgICAgICAgQCAwICAgICAwICAgICAwMDAgICAgICAgMCAgICAgIZNE1dXkwzGQMEAQMCAwIDAwMDAgMCAgICAwIDAgIDAgICAgICAgIDAwMCAgICAgICAwICAgICAgIDAgICAwIDAgMCAgIDAgICAwICAgMCAgQDAgIDAwIDAgMCAgICAgUeN01cXE02HgUCAgMCAwIBAQMCAgIDAQECAwIDAwICAgIDAgICAwICAgMCAgIDAgICAwICAgICAgICAgMCAgICAwMDAwMDAgICAQICAgMCAgMCAwICAgIDAgIDAwIBBA8oO0tZWUo8KA4FAQMCAwMDAgMDAgICAgMCAgICAgIBAgICAgICAgECAgMBAQICAQECAgICAgIDAgICAgICAgICAwICAwICAwMCAgICAwMDAgIDAgIDAgIDAgMCAwIBCBg1Q0xWVkxCNhgHAQMCAgIDAgICAwICAgICAwICAgMCAwICAgICAgICAgIBAQICAQECAgICAQICAgMCAwMCAwICAgICAwEDAwIDAgICAgMCAgICAwICAwMCAgICAgICBh49SE1VVU5HPh0HAQIBBAMCAgICAgIDAgICAgICAgMCAwICAgIDAwICAgICAgIEAgMCAgICAgICAgIDAgIDAwICAwMDAgICAwICAgICAgICAgIDAgICAgICAgMCAwICDSlIT09SUk1OSCkPAgIDAgICAgMCAgICAgICAwIDAgICAgIDAgICAgICAgMCAgIBAgICAwIDAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgMCAgIDAgICAgICAgIEGDRRU05QUE5SUTYaBQICAgEDAgICAgICAAECAgICAgICAgMDAgICAgABAgICAgICAAECAwECAQICAgICAgICAgICAwICAgICAgICAgIBAgICAgICAgICAgEDAQMCAgIJJD1VVU9PT05UUz8pEAICAgICAgICAgICAAECAgICAgICAgICAgICAgABAgICAwICAAECAwECAgICAgEEAQICAgECAgMCAgICAgICAwICAgICAgIDAgICAgICAgMCAgMYMEZWVk9OTk9UVUg5IwsDAgIBAgMCAgICAgICAwEBAgICAgEDAgICAgICAgMCAgICAQICAwICAgMCAwIDAgICAwIDAgQCAgIDAgICAwICAgICAgIDAgICAwICAgQCAwkkOEhVVE9OTk9SVEtCLxEDAwECAgMCAgIDAgICAwEBAgMCAgIDAgICAwICAgMCAgIEAgICAwICAgMCAgICAgIDAgICAwICAwIDAgMDAwICAgMCAgMCAgICAgICAwMDBRMyQktTUk5OTk9RUkxJPBgGAgMCAgICAgIDAgIDAwICAwMBAgICAQECAgICAgMBAQICAgICAgEBAgICAgICAgIDAwICAgMCAwMDAgICAwIDAgICAgMCAgIDAgMDAgMCDCREUE1QUE9OTk5PT09TSigQAgIDAgICAgMCAwMCAgICAwICAgICAAECAgIDAwIAAAICAgICAgABAgMCAgICAgMCAwICAgIDAgIEAwMDAwMDAgQCAgIEAgIDAwMCAwICEi9MVlBQUE5PTk9OTk9VTzQbBQIDAgICAgICAgIDAgEBAgMCAgICAgICAwICAgIBAQECAQECAgICAgICAgIDAgICAgICAwMCAgMCAwMCAwMCAgICAgIDAgICAgICAQMLJj5TV1FOT09OTk9OTlBXU0AuFAUCAgMCAgICAgICAwEBAwIDAgIDAgMCAgICAgMBAQEBAgEBAgMBAwICAgIDAgICAgECAgMCAgICAgIDAgICAgICAgICAgIBAwACAQgfOEhVVFBPT05OTk9OTlBUUkc8JAkBAgICAQICAQACAgICAgIAAQMCAgICAgABAgIBAgICAAECAgACAgICAgIDAgICAgEDAgIDAgICAgIDAgICAgIBAgICAgIBAgEBAg8wSExQUU5OTk9OTk5OTk9RUEtGLwwAAgICAQICAAECAgICAgIAAQICAgICAgABAgICAgICAQECAgECAgIDAgIDAgICAwICAgMCAwMCAgIDBAICAgICAgIDAgICAgICCSFFWFNOUE5OT05OTk5PTk5QT1BSQB0IAgMCAgEBAgECAgICAgICAgECAgICAgICAQIBAQICAQECAwIBAgMDAgIDAgMCAwMDAgQCAgIDAgICAwICAgMCAgICAgICAwIDFzFKWVNPTk1OT05PTk9OT05PTlFVSC8ZBAICAgECAgIDAwICAgMCAgECAgICAwICAQIBAQIDAQECAwECAgICAgMCAgIDAgICAgICAgICAgICAgICAgMCAgMCAgICAQUSLz9MVVFPTk5OTk5OTk9NTk5OTlBTTEEyFgYBAgMCAgMDAgICAQECAgICAgICAgECAgICAgICAQECAgEBAwICAgMCAgIDAgICAgIBAgMDAgIDAgIDAwICAgMCAgICBRQsREtOUU9OTk5OTk5OTk9NTU9PTk9RUE1HMBUDAwMDAwICAgICAQECAgICAgICAgICAgIBAgICAQECAgEBAgICAgMCAwICAwICAgMCAgIDAgICAgMCAwMCAwICAgICDSQ5TlFNTlBPTU1OTk5PTk9OT05OTk9PUFJPOyYMAQMDAAECAgECAgMBAQEBAgMCAwIDAgIDAwEDAQECAwICAgICAgIDAgICAgICAgMCAgICAgIBAwICAgIDAgIDAgQLIjhIVlRNTU5OTU1PT05OT05PT05PTk5OT1RVRzkiCwQCAQACAwEBAwIAAQECAgMCAwICAgQDAwIDAQECBAMDAgMCAgICAgICAgICAgICAgICAgICAgIDAgIBAgICAgsdNUdPVlNPTU5OTU5OTk5OT05OT05PTk9NT1JVT0c2HAsCAQICAgACAgIBAQICAgMCAgABAgICAgICAQICAgECAgMCAgICAwICAgICAgICAgICAgIDAwIEAgICAgICBBgtRU9OUVBPT05PTk5OTk5OTk5OT09PTk5OTlBRTk9ELBgEAgICAgIBAgMBAQMCAgIBAQABAgMDAgMCAAECAgABAgMDAgIDAgICAgICAgQDAgICAwMCBAMCAwICAgMJGDFCUlVQT09OTk9OTk5OTk1OTk9OTk5PTU1OTk5OUFZRQDAXBwICAwEAAQECAgIEAQEDAwMCAgMBAQECAQECAwIDAwICAgIEAgICBAMDAgMDAgIDAwMCAgMCAgQCAggZLUJLUlNQTk9OTk9PTk5OT05OTk9OTk5PTU1OT05OUFRRSkItGAcCAwEBAQICAgIDAQECAwMCAgMBAQIDAQECAwECAgICAgIDAgICAgICAgMCAgICAgIDAwMDAwEBAxktQVBPT1BOTk5NTU5OTU1OTk5PTk5OTk5OTU1OT01OTlBOT1BBLBgDAQABAwICAwEBAgACAgEBAgICAgICAAECAgECAgICAgICAgIDAwIDAwICAgMDAgICAgIDAgQLGTBCUVdTTk5OTk5NTU5OTk5OTk1OTk5OTk5NTU5OTk5OTk5OUldQQjAXCwMBAgICAgIBAAEDAgIBAgICAgICAQECAwECAgMCAgICAgMCAwICAgMCAgMEAgECAgICAg0cLUJMUFRRT05OTk5OTk5PTk5OTk5OTk9OTk5OTk5OT05OTk9OUVNQS0IsHgsCAgMCAgIBAgICAwICAgICAgIDAgMDAwICAgICAgIDAgICAgMDAgMCAgICAgMCAwEFDCI2RlFTT1BPTk5OTk9OTk5OTk5OT05OT09OTk5PTk5OTk5OTk5OTk9PUlJENyIMBQECAgIDAgICAQICAgQBAgECAgICAwICAgICAgICAQICAgEBAwICAwICAQIDAQYXJDhGT1VTT05OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTU1NTU1NTk9NTk5QUlRPRzgkFQUBAQICAgICAgICAgIAAQICAAECAgICAgICAwICAgICAgEBAgIDAwMDAQIBBRYwO0hOTVBQTk5OTk5PTk5PTk5OTk5OT05OTk5OTk5OTU1NTU1NTk5OTk5OUFBOT0g5LRMDAQICAgECAgICAgIAAQICAAECAgICAwICAgIDAgIBAgICAgMCAgICAgIJGjRIUFZUUE5PTk5PTk5OTk9OTk5PTk5OT05OTk5OTk5PTk5OTk5PTk9OTk5OT05RVVRORDAXCQIDAAICAgEBAgQBAQIDAgICAwICAgMCAgIDAgICAwICAgMCAgIFCg4eMUJPUlVSUE5PTk5OT09PTk9PTk5PTk9OT05PTk9OTk5PTk5OT05PTk9OT05PTk9QVFVSTEAxIBAJAAICAwEBAwMCAQMDAgIDBAICAgMCAwICAQECAgECAgIBAQQWJC8/R0pPT09PT05OTU1OTk5OTk5NTU5OTk5PT01OTk5OTk5OTU1OT05PT05NTU5PTk5OT09PT0xLRjIgCwICAgIDAgMBAgMDAgMDAgEBAgICAgICAAECAgICBAMFDhstPEdSVVJPUE9NT05NTU1OTk5OTk5NTU9OTk5PTk1NT05PTk5PTU1OTk9PT09NTU5OT05PTU1OT1RYWEg6JRMLBAQCAwQBAQQCAgMDAwABAgMCAgICAwECAwICCxIYKDRAR0tQUVBPT09OTk5OTk5OT05OTk9PTk5PTk5OT05OTk9OTk5OTU1OTk5OTk5OT05PT05OTk5PT1JTU0xIPS4kFAoDAgIDAwECAgICAgICAwIBAgICAQEBAgYQIy88Sk5RUlBQT05OTk5OTk5OTk5OTk5OTk9OTk5OTk5OT05OTk9OTk5OTU1OTk5OTk9OTk5OTk5OT05OT09NTlBVUkxFMiMYCAUCAQAAAQIDAwICAgMAAQICBAYHDRgoOEFJU1RWU1FPTk5OTk5NTU5OTU5OTk1NTk5OTk5OTU1OTU5OTk5NTU5OTU5OTk1NTU1NTU5OTU1OTk5OTk5NTVFUV1NPQjcwIxcOBwYEAAECAgICAwIAAQIGDhkdKTQ+SEtMT05QT09OTk5OTk5NTU5OTk5OTk1NTk5OTk5OTU1NTU5OTk5NTU5PTk5OTk1NTU1NTU5OTU1OTk5NTk5NTU5PUE5OSkdFPDQpHRgOBAECAgICAgMIDxkfKDU8SFFTVVRST05OT09OT05PTk5OTk5PTk5OTk1NTk9OTk5OTU1OTk5OTk5NTU5PTk5OTk1NTU1NTU1OTk5OT05OTk9NTU9PTk9QUlRVVVJIPDUoHhkQCQMBDxceKjM3O0JHT1JUVVNRT05PTk9PT05OTk9OTk5PTk5OT01NTk9OTk5PTU1OT05OTk9NTU5PTk5OTk1NTU1NTU1OTk9OT05OTk9NTU5PT09QU1JUVVROR0M8NzQqHBMMMDY9RkxMSktNTk5PT1BNTU5PTk5PTk1NTk5OTk5OTU1OT05OTk5NTU5OTU5OTk1NTU1OTk5OTU1OTk5OTk9NTU5PTk9NTk1NTk5OT05PTU1PTk5OT05NTEtMTExEOTApQEdQWV1cWFVVUlBPTk9NTU5OT05OTk1NTk5OTk5OTU1OTk5OTk5NTU5OTk5OTk1NTU1OTk5OTU1OTk5OTk5NTU9PT05NTk1NT05PTk9OTU1OTk1NT1BRU1VYXFxZTkQ9PkZNWV1cWVdUU09PTk9PTk1PTk5OT05OTk9OTk5PTk5OT05OT01OTk5PTk5PTk5OTk9NTU5OTU1OT05OTU5OTk9PTU5OTk9OTk9OTk9PTk5OT01NT1FSVFZZXF1ZUEhAKjE5RE1OS0xNTk5PUFBOT05OTk5OT05OTk5OTk5PTk5OTk5OTk5OTk5NTk5OT05OT05NTU9PTU1OTk5OTU5PTk9OTU5OT05OT09OTk5PTk5PTU5OT09OTUxLTE1FPTYxDBMbKTQ2O0RHTlJUVVNSUU9OTk5OTk5OTk5OTk1OTU9OTk5OT05NTk9OTU5OTk5OTk9NTU5OTk5OTk1NTk5NTk5OTU5OTk5OTk1NTk5OTU1PUVJUVFNOR0I8NTMqHhYPAwQHDxkeKDU8SFBUVlVSUE9OTk5OTk5OTk5OTk5PTk5OTk5OTk9OTk9PTU1OTk5PTk5NTU5OTk5OTk1OTk5OTk5OTU1OT05OTk1NTU9OTk1PUlNVU1FIPjUoHRgQCAQCAgIAAQIGDxgdKTM8RklJT09RUE9OT05OTk5OTk5PTk5OTk5PTk9OT09OTU1OT09OTk1OTk5PTk5OTk9OTk9OTk5OTk5OT05OT05NT09RUE9OTEtIPzYoHBgOBgIBAgMCAgMBAQICBAYHEBciMThCT1RYVVFOT05OTk9OTk5OT05OT05OTk9OTk9PTU1OT05OTU5OTk5PTk5NT05OTk5OTk5PTk5OT05OTk9OT1NVVlZUSkI4KRsNBwcFAgMBAQICAgMCAgIBAAABAgQIGCMyREpUVFBOTk5OTk5OTk5PTk5OTk5PTk5NTU9OTk5OTk9OTk5OTk5OTU1OT05PTk9OTU1NTk5OTk1NTk5OT1BSUE1KOy4jDwgDAQACAQICAwICAgMDAgICAAEDAwICAwsSIi49R0xTU1FPT05OTk5OTk5OTk5OTk5NTU5OTk9OTk5OTk5OTk5OTU1OTk9OTk5NTU1NTk5OTk1OUFFSUUtIPzMoFxELAgMCAgICAQICAgICAwMBAgICAwMCBAECAgMFDBMnOUlYWVVQT09NTk5OTk5OT01NTk5OTk5PTk5OTk5OTk5OTk1NTk5PT01NT05OTk5PTU5OTU5QUFRVU0c8LBkQBgMDAgIBAQIDAQECAgIDAgIDAgIDAgICAgICAgMCAgILIDJGTExOT09QTk5OTk5OTk1NTk9OTk5OTU5OT05OT05OTk1OTk5PTk1PTk9OTk5OTk5OUE9PT0tIQC8kEwMCAgICAgMAAQICAQECAwICAgICAgICAgICAgICAgIDAgEBCA8hMj9LUVRTUU5OTk5OTk5PT05NTk5OTU1OTk1OTk5NTU5OTk5OTk1NTk5NTk5OTU1PUVRSTkEvHg4KBQICAgABAgICAgICAgICAgEBAgIBAgICAQMCAwICAwMCAgMCAgIJGC9DTVVVUU9OT05PT01PT05OTk5OTU1OTk5OTk5NTU5OTk5OTk1NT05OTk9OTU1PU1VPSDMYCAICAgICAgABAgICAgICAgMCAgEBAgICAgIDAgIDAwMCAgMCAgICAwMDBhIsOUdPT1BRTk5OTk5OTk9NTk5OTU1OT05OTk5OTk5PTU1OTk5OTU5OTk5OUFBOUEY7MBYFAQIDAgIBAQICAgMCAgMCAgICAwICAgMCAgICAwICBAIDAgMCAgIDAgICAwUUJDlIUFZVT05PT05OTk9NTU5PTU1OTk5OTk5OT05OTU5OT05OTU5OTk9QU1ZQSDckFQcBAgIDAgIBAgICAgMCAwIDAgICAwICAgICAgICAgECAwICAgIBAQIDAQICAwIFCyM2RlNUT09OTk1NTk5NTU5OTU1OT01NTU5OTk5OTU1OT05OTk5NTU9PUlJGNiELBAECAgICAQECAwIDAgIBAQEDAgICAgICAgICAwMDAAECAgICAgICAAIDAQECAgICAgseLkJLUFRRTk1NTk5NTU5OTU1OTk1NTk5OT05OTU1OTk9OTk5OUVNQS0ItHQkBAQECAgEBAAECAgMDAgIAAgICAgICAgEDAgMDAwICAgICAwIDAgICAgIDAgICAgICAgQLGTFDUldTT05OTk1OTk5PTk5OTk5OTU5OTk9PTk5OT05NTk9OU1dSQjAZCwQCAgMCAgICAgICAwICAgICAgIDAgICAgICAgIDAgIDAgIDAgICAgQCAgMCAgICAwECAgEBAxkuQlJQT1BPT09OTk5PTk5OT05OTU1OTk5PT05PT05NTlBPUFFCLBgEAgEDAgICAgIDAwICAgIDAgMCAgICAgMCAwICAwMCAgIDAgICAgIDAgICAwEDAwMCAgICAgIBAQgYLUNNU1NRT09NTk5OTU1PTk5OT09OTk5PTk5OTk1NUFNTSkMtGAgCAgICAgIAAQICAgICBAIBAwIBAAICAQECAgICAwMCAgICAgICAwICAgICAgIDAgICAgICAQIBAQMIGDFDU1VQTk9OT05OTU1OTk5OT09OTU5OTU5OTk5OUFVUQzEYCAMDAgMCAwIBAQICAwEDAwABAgIBAgMCAAECAwMCAgICAgICAwICAQICAwICAwMCAQICAgABAQECAgICAhgtRk9OUVBOT05OTk5OT05OTk5NTk5OTk9OTlBRT1BELBgCAgICAwMCAwICAgEBAgICAwIDAgICAgICAgMBAwICAgMCAgICAgICAgICAgICAgICAgICAgABAQECAgICAQkdN0dPVVRPTU5OTk1OT05OTk5OTk5OTk5NT1NWT0g1GwsCAgICAgICAgICAgEAAgIDAwICBAMCAgMDAwMDAwMDAgIDAgICAgICAgICAgECAgICAQICAgAAAQIBAQIBAQMLIjdGVVROTU5OTU5OTk1NTk5OTk5OTU1OTlNVSDgiCgQCAgIDAgIBAwMBAgMCAQEBAwIDAwMDAgMDAgMCAwMDAgICAgICAgICAgICAgICAgICAgICAgACAgIBAQICAAACCyM6UFJOTk9OTk5OTk1NTk5OTk5OTU5PT1FOOSQLAgICAgMDAgABAwMCAwICAAABAgIDAwMCAwMDAgIDAwICAgMCAgICAgICAwICAgMCAgIDAgICAgICAgMDAgICAgICBRUwSE9PUU9PTk9OTk5PTk5OTk5PTk9QUExELRUEAgIDAgIDAgMDAgMCAgIDAgIBAwECBAMBAgMDAgEEAwMCAgICAgIDAgICAwICAgMCAgICAgICAwICAgIDAgMEAgICAQYVNENMU1FOTk5OT05OTk5PTk5PT1FVTEAwEwYBAgIDAwIDBAICAgICAgIDAgMCAgEBAwQBAQICAQECAwICAgICAgICAgICAgICAgICAgICAAECAgABAgICAgICAgICAwEEGjFIVlFOTU1PTk5OTk5NTU5OTVNZSzAYBAICAgIDAAECAwICAgMBAQICAgICAwICAwICAgIDAAECAgIBAgICAgICAgICAgICAgICAgECAAECAgEBAgICAgMEAgICAgICCR5BU1BPTk1OT05PTk5NTU5OTlJYRiAIAwICAgICAAEDAwICAgMBAQICAwMDAwEDAgIDAgIDAQEDAgMDAgICAgIDAgICAgICAgICAgICAgICAwICAgEBAQIDAgIBAgICAQ8wR0tQUFBOT05PTk5NTU9RUExJMQ4DAgMCAQICAgECAwICAgIEAwIDAgMDAgICAgMDAgMDAgIDBAMCAgMCAgIDAgICAwICAgMCAgIDAgICAwICAgMBAAICAgIBAwIBAgwkO0hTVFBOT05OT09NTVFVVEc5IAgBAwMCAQEDAgICAgEBAwMCAgIDAwICAwICAgMCAwIDAgMDAwMDAgMCAgICAgICAwICAgMCAgICAQICAgEBAgICAgIDAQECAgABAQUTLD9TVlFOTk1NTk5OTlFXUjwlDAIBAgIBAQMDAwICAgEBAgICAwICAgEDAwIDAgIBAQIDAgMDAgMCAgICAgICAgICAwICAwMCAgMCAgICAgABAgICAgICAAECAgIBAQECGTNOVlBOTU1OT05PUE9USy0UBAMCAgIAAQIDAgICAwABAgICAgECAQEDAgMCAgMAAQICBAICAgECAgQCAwMCAwICAwIDAgMDAgIDAgIBAgICAgMCAgIDAgICAwICAgIBEChMU09PT09OTk9PT01QRCMMAwEBAgICAgIDAgICAgMCAgMCAgICAgIDAwEBAgICAgMDAgICAwEBAgICAgMDAwMDAgICAwMCAgICAgMDAwICAgICAgIDAgICAgICAgMCBhg8SUxRUk5OTk9RUkpDMhMFAgEBAQQCAgMCAgIDAwICAgMCAgIEAgIDAgECAgMDAwICAgMDAwEBAgICAgICAQICAgICAwICAgMCAgICAgICAgICAgICAgIDAgIDAgICAxEwQEtTUk5OT05SVUk5IwoDAgICAgMCAgMCAAECAwABAgIBAQMDAgECAwICAgICAgMDAgICAgECAgICAgICAQICAwIDAgICAgICAgICAgICAgICAgICAwICAgIDAgMDBAojOEhWVE9OTlBVVkcwGAMCAgIDAwMDAwICAQECAwECAwICAgMDAgECAgICAgMCAwIBAAEBAgEBAgICAgIDAgICAgICAgMCAwIDAgMCAwICAgICAgIDAgICAgICAgQCAwMPKT9UVU5PTk1VVD0lCAECAgMDAgQCAwICAwICAwIDAwMCAgIDAwMDAQICAgQCAgICAgMDBAICAgMDAgICAgICAwMCAgICAgIDAgICAwICAgMCAgIDAgMCAwMCAgMCAgIGGjVRU05RT05TUTUYAwICAwICAwMCAwIEAgMDAwMDAgQDAwIDAwICAgIDAwMDAgIEAgMDAwMDAgICAgICAgIDAgECAgMDAQICAgICAgICAgMCAwICAwICAwICAgICAgICDipIT01SUk5OSCoOAwMDAgIDAwIDAgICAgIDAwMDAwMCAgIDBAIDBAECAwIBAQICAgICBAICAgICAgICAQMCAgICAgICAgMCAgICAgICAgICAgICAgICAgIDAgICAgIBBx08R0xVVU5HPh4IAQMDAgMCAgMBAwMCAgICAwIDAgIDAwMCAgMCAgECAgIBAQICAgMCAgICAgMCAgICAgICAwICAgICAgMDAgECAgICAgMCAgIDAgICAwICAgICAgICBxg1Q0xWVUxDNRgHAgMDAwMCAwICAwICAgMCAwICAwMDAgMDAwICAwIDAwMDAwEDAQIDAgMDAgICAgMDAgMCAgICAgIDAgMCAgICAwICAgICAgIDAgICAgIDAgICAgIBBA4oPUxZWUw7KQ4EAQICAgIDAgQDAwIDAwIEAgICAwICAwIDAgICAgMCAwQCAgEBAQICAwIDAgMBAgICAgMDAgMDAgICAgICAgICAgICAgIBAgICAQICAgICAgICAgIBAgYeNkxdXU01HgUCAQICAgEDAgICAwIDAQEDAgEBAgIAAQICAgIDAwEBAwMDAwIDAAEDAgICAgIBAQMEAgMCAgIDAgMCAgMCAgMCAgICAgIBAgICAgICAgICAgICAgMCAgMaM0tdXk0zGAICAgICAQABAgMCAwMDAgECAgEBAgIAAQICAgICAgABAgICAwIDAAICAgICAgMCAgMDAwMCAwIDAgMCAwECAgEDBAICAgICAgIDAgICAwICAgMCAgICAwMQK0VZWUQpDwIDAgICAwICAgMCAgMCAgICAgICAgICAgEDAgICAgEBAgMCAgMCAgICAwICAwMCAgIDAgIDAwICAwIDAgMDAgMCBAICAgMCAgIDAgICAwICAgMCAgIDAgMIHzxPTjocCAICAgICAgICAgMCAQMDAgICAgICAgICAgIDAgICAgAAAgICAgIDAgICAwICAQICAgMCAgICAgICAgICAgIDAgICAgMCAgICAgICAgICAgIDAgMCAgIDAgIEFTZHRTETBAECAQECAgICAwICAgICAgICAgEBAgMAAQIDAgICAgICAgIBAQIDAgICAgEBAgICAgICAgMCAgICAgICAgICAQMCAwICAgICAgICAQIDAgICAgICAgICAgMBDzBAPioNAgICAAEDAgICAgMCAgICAgICAgEBAwIBAQIBAgICAgICAgMBAQICAgICAgAB" }
84
+ };
85
+ function decodeCalibratedAlpha(entry) {
86
+ const binary = typeof atob === "function" ? atob(entry.dataBase64) : Buffer.from(entry.dataBase64, "base64").toString("binary");
87
+ const map = new Float32Array(entry.width * entry.height);
88
+ for (let i = 0; i < map.length; i++) {
89
+ map[i] = binary.charCodeAt(i) / 255;
90
+ }
91
+ return map;
92
+ }
93
+ function loadCalibratedAlphaMap(key) {
94
+ const entry = CALIBRATED_ALPHA_ENTRIES[key];
95
+ if (!entry) return null;
96
+ return {
97
+ data: decodeCalibratedAlpha(entry),
98
+ width: entry.width,
99
+ height: entry.height,
100
+ source: entry.source
101
+ };
102
+ }
103
+
104
+ // src/core/gemini/geminiAlphaMaps.js
105
+ var geminiAlphaMapRegistry = /* @__PURE__ */ new Map();
106
+ var GEMINI_ALPHA_MAP_KEYS = [
107
+ "gemini-v2-36",
108
+ "gemini-v2-96",
109
+ "gemini-48",
110
+ "gemini-96"
111
+ ];
112
+ for (const key of GEMINI_ALPHA_MAP_KEYS) {
113
+ const loaded = loadCalibratedAlphaMap(key);
114
+ if (loaded) {
115
+ geminiAlphaMapRegistry.set(key, loaded);
116
+ }
117
+ }
118
+ function decodeAlphaMapFromBase64(base64Data, size) {
119
+ return decodeCalibratedAlpha({ width: size, height: size, dataBase64: base64Data });
120
+ }
121
+ async function loadAlphaMapFromPNG(source, size) {
122
+ if (typeof document !== "undefined" && typeof createImageBitmap === "function") {
123
+ const response = await fetch(source);
124
+ const blob = await response.blob();
125
+ const bitmap = await createImageBitmap(blob);
126
+ const canvas = new OffscreenCanvas(size, size);
127
+ const ctx = canvas.getContext("2d");
128
+ ctx.drawImage(bitmap, 0, 0, size, size);
129
+ const imageData = ctx.getImageData(0, 0, size, size);
130
+ const map2 = new Float32Array(size * size);
131
+ for (let i = 0; i < size * size; i++) {
132
+ const idx = i * 4;
133
+ map2[i] = Math.max(imageData.data[idx], imageData.data[idx + 1], imageData.data[idx + 2]) / 255;
134
+ }
135
+ return map2;
136
+ }
137
+ const { readFile } = await import("node:fs/promises");
138
+ const fileData = await readFile(source);
139
+ if (fileData[0] === 137 && fileData[1] === 80) {
140
+ const sharp = (await import("sharp")).default;
141
+ const { data, info } = await sharp(fileData).ensureAlpha().raw().toBuffer({ resolveWithObject: true });
142
+ const map2 = new Float32Array(info.width * info.height);
143
+ for (let i = 0; i < map2.length; i++) {
144
+ const base = i * info.channels;
145
+ map2[i] = Math.max(data[base], data[base + 1], data[base + 2]) / 255;
146
+ }
147
+ return map2;
148
+ }
149
+ const map = new Float32Array(size * size);
150
+ for (let i = 0; i < Math.min(fileData.length, size * size); i++) {
151
+ map[i] = fileData[i] / 255;
152
+ }
153
+ return map;
154
+ }
155
+ function getGeminiAlphaMap(key) {
156
+ return geminiAlphaMapRegistry.get(key) || loadCalibratedAlphaMap(key);
157
+ }
158
+ function registerGeminiAlphaMap(key, data, size, source = "custom") {
159
+ geminiAlphaMapRegistry.set(key, { data, width: size, height: size, source });
160
+ }
161
+ async function loadAndRegisterAlphaMap(key, pngSource, size) {
162
+ const data = await loadAlphaMapFromPNG(pngSource, size);
163
+ registerGeminiAlphaMap(key, data, size, pngSource);
164
+ }
165
+ function listGeminiAlphaMapKeys() {
166
+ return Array.from(/* @__PURE__ */ new Set([...geminiAlphaMapRegistry.keys(), ...Object.keys(CALIBRATED_ALPHA_ENTRIES)]));
167
+ }
168
+
169
+ // src/core/blendModes.js
170
+ var ALPHA_NOISE_FLOOR = 3 / 255;
171
+ var ALPHA_THRESHOLD = 2e-3;
172
+ var MAX_ALPHA = 0.99;
173
+ function removeWatermark(imageData, alphaMap, position, options = {}) {
174
+ const { clampOutput = true } = options;
175
+ const { data, width } = imageData;
176
+ const { x: ox, y: oy, width: mw, height: mh } = position;
177
+ for (let my = 0; my < mh; my++) {
178
+ for (let mx = 0; mx < mw; mx++) {
179
+ const alpha = alphaMap[my * mw + mx];
180
+ if (alpha < ALPHA_THRESHOLD) continue;
181
+ const effectiveAlpha = Math.min(alpha, MAX_ALPHA);
182
+ const px = ox + mx;
183
+ const py = oy + my;
184
+ if (px < 0 || px >= width || py < 0 || py >= imageData.height) continue;
185
+ const idx = (py * width + px) * 4;
186
+ for (let c = 0; c < 3; c++) {
187
+ const watermarked = data[idx + c];
188
+ let original = (watermarked - effectiveAlpha * 255) / (1 - effectiveAlpha);
189
+ if (clampOutput) {
190
+ original = Math.max(0, Math.min(255, Math.round(original)));
191
+ }
192
+ data[idx + c] = original;
193
+ }
194
+ }
195
+ }
196
+ return imageData;
197
+ }
198
+
199
+ // src/core/gemini/restorationMetrics.js
200
+ var HALO_MIN_ALPHA = 0.12;
201
+ var HALO_MAX_ALPHA = 0.35;
202
+ var HALO_OUTSIDE_ALPHA_MAX = 0.01;
203
+ var HALO_OUTER_MARGIN = 3;
204
+ var MIN_HALO_VISIBILITY = 0.35;
205
+ var MAX_RESIDUAL_NCC_RATIO = 0.55;
206
+ var NEAR_BLACK_THRESHOLD = 5;
207
+ function cloneImageData(imageData) {
208
+ return {
209
+ width: imageData.width,
210
+ height: imageData.height,
211
+ data: new Uint8ClampedArray(imageData.data)
212
+ };
213
+ }
214
+ function assessAlphaBandHalo(imageData, position, alphaMap) {
215
+ let bandSum = 0;
216
+ let bandSq = 0;
217
+ let bandCount = 0;
218
+ let outerSum = 0;
219
+ let outerSq = 0;
220
+ let outerCount = 0;
221
+ for (let row = -HALO_OUTER_MARGIN; row < position.height + HALO_OUTER_MARGIN; row++) {
222
+ for (let col = -HALO_OUTER_MARGIN; col < position.width + HALO_OUTER_MARGIN; col++) {
223
+ const pixelX = position.x + col;
224
+ const pixelY = position.y + row;
225
+ if (pixelX < 0 || pixelY < 0 || pixelX >= imageData.width || pixelY >= imageData.height) {
226
+ continue;
227
+ }
228
+ const idx = (pixelY * imageData.width + pixelX) * 4;
229
+ const lum = 0.2126 * imageData.data[idx] + 0.7152 * imageData.data[idx + 1] + 0.0722 * imageData.data[idx + 2];
230
+ const inside = row >= 0 && col >= 0 && row < position.height && col < position.width;
231
+ const alpha = inside ? alphaMap[row * position.width + col] : 0;
232
+ if (inside && alpha >= HALO_MIN_ALPHA && alpha <= HALO_MAX_ALPHA) {
233
+ bandSum += lum;
234
+ bandSq += lum * lum;
235
+ bandCount++;
236
+ continue;
237
+ }
238
+ if (!inside || alpha <= HALO_OUTSIDE_ALPHA_MAX) {
239
+ outerSum += lum;
240
+ outerSq += lum * lum;
241
+ outerCount++;
242
+ }
243
+ }
244
+ }
245
+ const bandMean = bandCount > 0 ? bandSum / bandCount : 0;
246
+ const outerMean = outerCount > 0 ? outerSum / outerCount : 0;
247
+ const outerStd = outerCount > 0 ? Math.sqrt(Math.max(0, outerSq / outerCount - outerMean * outerMean)) : 1;
248
+ const deltaLum = bandMean - outerMean;
249
+ const visibility = deltaLum / Math.max(1, outerStd);
250
+ return { bandCount, outerCount, deltaLum, visibility };
251
+ }
252
+ function calculateNearBlackRatio(imageData, position) {
253
+ let nearBlack = 0;
254
+ let total = 0;
255
+ for (let row = 0; row < position.height; row++) {
256
+ for (let col = 0; col < position.width; col++) {
257
+ const idx = ((position.y + row) * imageData.width + (position.x + col)) * 4;
258
+ const r = imageData.data[idx];
259
+ const g = imageData.data[idx + 1];
260
+ const b = imageData.data[idx + 2];
261
+ if (r <= NEAR_BLACK_THRESHOLD && g <= NEAR_BLACK_THRESHOLD && b <= NEAR_BLACK_THRESHOLD) {
262
+ nearBlack++;
263
+ }
264
+ total++;
265
+ }
266
+ }
267
+ return total > 0 ? nearBlack / total : 0;
268
+ }
269
+ function computeRegionNCC(imgData, imgW, position, alphaMap, step = 2) {
270
+ let sumImg = 0;
271
+ let sumMask = 0;
272
+ let sumImgSq = 0;
273
+ let sumMaskSq = 0;
274
+ let sumProduct = 0;
275
+ let count = 0;
276
+ const { x, y, width: maskW, height: maskH } = position;
277
+ for (let my = 0; my < maskH; my += step) {
278
+ for (let mx = 0; mx < maskW; mx += step) {
279
+ const alpha = alphaMap[my * maskW + mx];
280
+ if (alpha < 0.01) continue;
281
+ const idx = ((y + my) * imgW + (x + mx)) * 4;
282
+ const brightness = (imgData[idx] + imgData[idx + 1] + imgData[idx + 2]) / 3;
283
+ sumImg += brightness;
284
+ sumMask += alpha;
285
+ sumImgSq += brightness * brightness;
286
+ sumMaskSq += alpha * alpha;
287
+ sumProduct += brightness * alpha;
288
+ count++;
289
+ }
290
+ }
291
+ if (count < 10) return 0;
292
+ const meanImg = sumImg / count;
293
+ const meanMask = sumMask / count;
294
+ const numerator = sumProduct / count - meanImg * meanMask;
295
+ const denomImg = Math.sqrt(Math.max(0, sumImgSq / count - meanImg * meanImg));
296
+ const denomMask = Math.sqrt(Math.max(0, sumMaskSq / count - meanMask * meanMask));
297
+ if (denomImg < 1e-6 || denomMask < 1e-6) return 0;
298
+ return Math.max(0, numerator / (denomImg * denomMask));
299
+ }
300
+ function validateRestoration(originalImageData, restoredImageData, position, alphaMap, preRemovalNcc) {
301
+ const halo = assessAlphaBandHalo(originalImageData, position, alphaMap);
302
+ const nearBlackRatio = calculateNearBlackRatio(restoredImageData, position);
303
+ const postNcc = computeRegionNCC(restoredImageData.data, restoredImageData.width, position, alphaMap);
304
+ const residualNccRatio = preRemovalNcc > 0 ? postNcc / preRemovalNcc : postNcc;
305
+ const haloOk = halo.bandCount >= 8 && halo.visibility >= MIN_HALO_VISIBILITY;
306
+ const residualOk = postNcc < 0.35 || residualNccRatio <= MAX_RESIDUAL_NCC_RATIO;
307
+ const noDarkHole = nearBlackRatio < 0.35;
308
+ const valid = haloOk && residualOk && noDarkHole;
309
+ return {
310
+ valid,
311
+ decisionTier: valid ? "validated" : "rejected",
312
+ haloVisibility: halo.visibility,
313
+ residualNccRatio,
314
+ nearBlackRatio
315
+ };
316
+ }
317
+
318
+ // src/core/gemini/imageProcessor.js
319
+ var PROFILE_ORDER = ["current", "legacy"];
320
+ var DEFAULT_MAX_PASSES = 4;
321
+ function computeNCC(imgData, imgW, x, y, maskAlpha, maskW, maskH, step) {
322
+ let sumImg = 0, sumMask = 0;
323
+ let sumImgSq = 0, sumMaskSq = 0;
324
+ let sumProduct = 0;
325
+ let count = 0;
326
+ for (let my = 0; my < maskH; my += step) {
327
+ for (let mx = 0; mx < maskW; mx += step) {
328
+ const alpha = maskAlpha[my * maskW + mx];
329
+ if (alpha < 0.01) continue;
330
+ const px = x + mx;
331
+ const py = y + my;
332
+ const idx = (py * imgW + px) * 4;
333
+ const brightness = (imgData[idx] + imgData[idx + 1] + imgData[idx + 2]) / 3;
334
+ sumImg += brightness;
335
+ sumMask += alpha;
336
+ sumImgSq += brightness * brightness;
337
+ sumMaskSq += alpha * alpha;
338
+ sumProduct += brightness * alpha;
339
+ count++;
340
+ }
341
+ }
342
+ if (count < 10) return 0;
343
+ const meanImg = sumImg / count;
344
+ const meanMask = sumMask / count;
345
+ const numerator = sumProduct / count - meanImg * meanMask;
346
+ const denomImg = Math.sqrt(Math.max(0, sumImgSq / count - meanImg * meanImg));
347
+ const denomMask = Math.sqrt(Math.max(0, sumMaskSq / count - meanMask * meanMask));
348
+ if (denomImg < 1e-6 || denomMask < 1e-6) return 0;
349
+ return Math.max(0, numerator / (denomImg * denomMask));
350
+ }
351
+ function findWatermarkPosition(imageData, mask, expectedPosition) {
352
+ const { width: imgW, height: imgH, data: imgData } = imageData;
353
+ const { width: maskW, height: maskH, alpha: maskAlpha } = mask;
354
+ let bestX = 0, bestY = 0, bestScore = -1;
355
+ const expectedX = expectedPosition?.x ?? imgW - maskW;
356
+ const expectedY = expectedPosition?.y ?? imgH - maskH;
357
+ const searchRadius = Math.max(16, Math.round(maskW * 0.75));
358
+ const searchStartX = Math.max(0, expectedX - searchRadius);
359
+ const searchStartY = Math.max(0, expectedY - searchRadius);
360
+ const searchMaxX = Math.min(imgW - maskW, expectedX + searchRadius);
361
+ const searchMaxY = Math.min(imgH - maskH, expectedY + searchRadius);
362
+ for (let y = searchStartY; y <= searchMaxY; y += 2) {
363
+ for (let x = searchStartX; x <= searchMaxX; x += 2) {
364
+ const score = computeNCC(imgData, imgW, x, y, maskAlpha, maskW, maskH, 2);
365
+ if (score > bestScore) {
366
+ bestScore = score;
367
+ bestX = x;
368
+ bestY = y;
369
+ }
370
+ }
371
+ }
372
+ const fineStartX = Math.max(0, bestX - 2);
373
+ const fineStartY = Math.max(0, bestY - 2);
374
+ const fineEndX = Math.min(searchMaxX, bestX + 2);
375
+ const fineEndY = Math.min(searchMaxY, bestY + 2);
376
+ for (let y = fineStartY; y <= fineEndY; y++) {
377
+ for (let x = fineStartX; x <= fineEndX; x++) {
378
+ const score = computeNCC(imgData, imgW, x, y, maskAlpha, maskW, maskH, 1);
379
+ if (score > bestScore) {
380
+ bestScore = score;
381
+ bestX = x;
382
+ bestY = y;
383
+ }
384
+ }
385
+ }
386
+ return bestScore >= 0.5 ? { x: bestX, y: bestY, confidence: bestScore } : null;
387
+ }
388
+ function getProfilesToTry(profile) {
389
+ if (!profile || profile === "auto") return PROFILE_ORDER;
390
+ return [normalizeGeminiProfile(profile)];
391
+ }
392
+ function emptyResult(imageData, reason, attemptedProfiles, profile = null, meta = {}) {
393
+ return {
394
+ imageData,
395
+ processed: false,
396
+ confidence: 0,
397
+ position: null,
398
+ reason,
399
+ profile,
400
+ attemptedProfiles,
401
+ decisionTier: meta.decisionTier ?? null,
402
+ meta: meta.validation ?? null
403
+ };
404
+ }
405
+ function normalizeAdaptiveMode(adaptiveMode) {
406
+ if (!adaptiveMode || adaptiveMode === "auto") return "auto";
407
+ if (adaptiveMode === "off") return "off";
408
+ return "auto";
409
+ }
410
+ function copyImageData(target, source) {
411
+ target.data.set(source.data);
412
+ }
413
+ function processImageWithProfile(imageData, options, profile) {
414
+ const { width, height } = imageData;
415
+ const {
416
+ skipDetection = false,
417
+ forcePosition,
418
+ adaptiveMode = "auto"
419
+ } = options;
420
+ const useValidation = normalizeAdaptiveMode(adaptiveMode) === "auto" && !skipDetection && !forcePosition;
421
+ const info = getGeminiWatermarkInfo(width, height, profile);
422
+ if (!info) {
423
+ return emptyResult(imageData, "image_too_small", [profile], profile);
424
+ }
425
+ const alphaMapEntry = getGeminiAlphaMap(info.alphaMapKey);
426
+ if (!alphaMapEntry) {
427
+ return emptyResult(imageData, "missing_alpha_map", [profile], profile);
428
+ }
429
+ let position;
430
+ let confidence = 1;
431
+ if (forcePosition) {
432
+ position = {
433
+ x: forcePosition.x,
434
+ y: forcePosition.y,
435
+ width: info.size,
436
+ height: info.size
437
+ };
438
+ } else if (skipDetection) {
439
+ position = info.position;
440
+ } else {
441
+ const mask = {
442
+ width: alphaMapEntry.width,
443
+ height: alphaMapEntry.height,
444
+ alpha: alphaMapEntry.data
445
+ };
446
+ const match = findWatermarkPosition(imageData, mask, info.position);
447
+ if (!match) {
448
+ return emptyResult(imageData, "watermark_not_detected", [profile], profile);
449
+ }
450
+ confidence = match.confidence;
451
+ position = {
452
+ x: match.x,
453
+ y: match.y,
454
+ width: alphaMapEntry.width,
455
+ height: alphaMapEntry.height
456
+ };
457
+ }
458
+ const workingCopy = cloneImageData(imageData);
459
+ removeWatermark(workingCopy, alphaMapEntry.data, position);
460
+ let decisionTier = skipDetection || forcePosition ? "ncc_only" : "ncc_only";
461
+ let validationMeta = null;
462
+ if (useValidation) {
463
+ const preRemovalNcc = computeNCC(
464
+ imageData.data,
465
+ width,
466
+ position.x,
467
+ position.y,
468
+ alphaMapEntry.data,
469
+ alphaMapEntry.width,
470
+ alphaMapEntry.height,
471
+ 2
472
+ );
473
+ const validation = validateRestoration(
474
+ imageData,
475
+ workingCopy,
476
+ position,
477
+ alphaMapEntry.data,
478
+ preRemovalNcc
479
+ );
480
+ validationMeta = validation;
481
+ if (!validation.valid) {
482
+ return emptyResult(
483
+ imageData,
484
+ "restoration_rejected",
485
+ [profile],
486
+ profile,
487
+ { decisionTier: validation.decisionTier, validation }
488
+ );
489
+ }
490
+ decisionTier = validation.decisionTier;
491
+ }
492
+ copyImageData(imageData, workingCopy);
493
+ return {
494
+ imageData,
495
+ processed: true,
496
+ confidence,
497
+ position,
498
+ profile,
499
+ attemptedProfiles: [profile],
500
+ decisionTier,
501
+ meta: validationMeta
502
+ };
503
+ }
504
+ function processImage(imageData, options = {}) {
505
+ const profile = options.profile ?? "auto";
506
+ const profilesToTry = getProfilesToTry(profile);
507
+ const maxPasses = Math.max(1, options.maxPasses ?? DEFAULT_MAX_PASSES);
508
+ const attemptedProfiles = [];
509
+ let lastResult = null;
510
+ let passCount = 0;
511
+ for (const activeProfile of profilesToTry) {
512
+ if (passCount >= maxPasses) break;
513
+ attemptedProfiles.push(activeProfile);
514
+ passCount++;
515
+ const result = processImageWithProfile(imageData, options, activeProfile);
516
+ result.attemptedProfiles = [...attemptedProfiles];
517
+ if (result.processed) return result;
518
+ lastResult = result;
519
+ if (result.reason !== "watermark_not_detected" && result.reason !== "restoration_rejected") break;
520
+ }
521
+ return {
522
+ ...lastResult || emptyResult(imageData, "watermark_not_detected", attemptedProfiles),
523
+ attemptedProfiles
524
+ };
525
+ }
526
+ function createImageProcessor(targetWidth, targetHeight) {
527
+ const cachedByProfile = /* @__PURE__ */ new Map();
528
+ if (targetWidth && targetHeight) {
529
+ for (const profile of PROFILE_ORDER) {
530
+ const info = getGeminiWatermarkInfo(targetWidth, targetHeight, profile);
531
+ if (info) {
532
+ cachedByProfile.set(profile, {
533
+ info,
534
+ alphaMap: getGeminiAlphaMap(info.alphaMapKey)
535
+ });
536
+ }
537
+ }
538
+ }
539
+ return {
540
+ /**
541
+ * Process an image to remove the Gemini watermark.
542
+ * @param {ImageData} imageData
543
+ * @param {{ skipDetection?: boolean, forcePosition?: { x: number, y: number }, profile?: 'auto'|'current'|'legacy'|'v1'|'v2' }} options
544
+ */
545
+ process(imageData, options = {}) {
546
+ if (cachedByProfile.size > 0 && imageData.width === targetWidth && imageData.height === targetHeight) {
547
+ const profilesToTry = getProfilesToTry(options.profile ?? "auto");
548
+ const attemptedProfiles = [];
549
+ let lastResult = null;
550
+ for (const profile of profilesToTry) {
551
+ attemptedProfiles.push(profile);
552
+ const cached = cachedByProfile.get(profile);
553
+ if (!cached?.info) {
554
+ lastResult = emptyResult(imageData, "image_too_small", [...attemptedProfiles], profile);
555
+ break;
556
+ }
557
+ if (!cached.alphaMap) {
558
+ lastResult = emptyResult(imageData, "missing_alpha_map", [...attemptedProfiles], profile);
559
+ break;
560
+ }
561
+ const result = processImageWithProfile(imageData, options, profile);
562
+ result.attemptedProfiles = [...attemptedProfiles];
563
+ if (result.processed) return result;
564
+ lastResult = result;
565
+ if (result.reason !== "watermark_not_detected" && result.reason !== "restoration_rejected") break;
566
+ }
567
+ return {
568
+ ...lastResult || emptyResult(imageData, "watermark_not_detected", attemptedProfiles),
569
+ attemptedProfiles
570
+ };
571
+ }
572
+ return processImage(imageData, options);
573
+ }
574
+ };
575
+ }
576
+ export {
577
+ GEMINI_WATERMARK_PROFILES,
578
+ GEMINI_WATERMARK_SIZES,
579
+ LARGE_IMAGE_THRESHOLD,
580
+ calculateCurrentSmallMargin,
581
+ calculateGeminiWatermarkPosition,
582
+ createImageProcessor,
583
+ decodeAlphaMapFromBase64,
584
+ detectGeminiWatermarkConfig,
585
+ findWatermarkPosition,
586
+ getGeminiAlphaMap,
587
+ getGeminiWatermarkInfo,
588
+ getWatermarkTier,
589
+ listGeminiAlphaMapKeys,
590
+ loadAlphaMapFromPNG,
591
+ loadAndRegisterAlphaMap,
592
+ normalizeGeminiProfile,
593
+ processImage,
594
+ registerGeminiAlphaMap
595
+ };
596
+ //# sourceMappingURL=gemini.js.map