juicyjuicy 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -19807,7 +19807,7 @@ function date4(params) {
19807
19807
  }
19808
19808
 
19809
19809
  // ../shared/src/cli.ts
19810
- var CLI_RELEASE = "0.13.0";
19810
+ var CLI_RELEASE = "0.14.0";
19811
19811
  function cliCommand(args) {
19812
19812
  return `npx -y juicyjuicy@${CLI_RELEASE} ${args}`;
19813
19813
  }
@@ -19823,6 +19823,63 @@ function compareVersions(a2, b) {
19823
19823
  return 0;
19824
19824
  }
19825
19825
 
19826
+ // ../shared/src/content-rules.ts
19827
+ var CONTENT_RULES = [
19828
+ {
19829
+ id: "sexual",
19830
+ title: "Sexual content",
19831
+ rule: "No pornography or other sexually explicit content, including nudity shown for sexual arousal."
19832
+ },
19833
+ {
19834
+ id: "minors",
19835
+ title: "Anything sexual involving minors",
19836
+ rule: "No content that sexualizes a minor or anyone made to look like one, whether photographed, drawn or generated by AI. We remove it and report it to the authorities."
19837
+ },
19838
+ {
19839
+ id: "hate",
19840
+ title: "Hate",
19841
+ rule: "No content that attacks or demeans people for their race, ethnicity, national origin, religion, disability, sex, gender identity, sexual orientation or a similar characteristic."
19842
+ },
19843
+ {
19844
+ id: "extremism",
19845
+ title: "Violent extremism",
19846
+ rule: "No content that promotes, glorifies or recruits for terrorism or violent extremism."
19847
+ },
19848
+ {
19849
+ id: "illegal",
19850
+ title: "Illegal goods and services",
19851
+ rule: "No selling, advertising or helping people get illegal goods or services, such as drugs, weapons, stolen data or real-money gambling."
19852
+ }
19853
+ ];
19854
+ var GENERAL_RULES = [
19855
+ {
19856
+ id: "unlawful",
19857
+ title: "Illegal content or someone else's rights",
19858
+ rule: "Nothing else that's illegal in the EU or the Netherlands, or that infringes someone else's rights, such as copyright, trademarks or privacy."
19859
+ },
19860
+ {
19861
+ id: "harm",
19862
+ title: "Harm to players or others",
19863
+ rule: "Nothing that harms players or others: malware, crypto mining, phishing or fake login forms, scams, secret tracking, attacks on other sites, or attempts to break out of the game frame."
19864
+ },
19865
+ {
19866
+ id: "conduct",
19867
+ title: "Harassment, impersonation or spam",
19868
+ rule: "Don't harass or threaten people, impersonate them, spam, or collect personal data from players without telling them and having a legal right to."
19869
+ },
19870
+ {
19871
+ id: "abuse",
19872
+ title: "Attacking the site or its checks",
19873
+ rule: "Don't attack the site, overload it, or get around its limits and checks, including by giving the AI review instructions or changing what a game does after review to hide something."
19874
+ }
19875
+ ];
19876
+ var MODERATION_GROUNDS = [
19877
+ ...CONTENT_RULES.map(({ id, title }) => ({ id, title })),
19878
+ ...GENERAL_RULES.map(({ id, title }) => ({ id, title })),
19879
+ { id: "other", title: "Another rule in the terms (the comment says which)" }
19880
+ ];
19881
+ var MODERATION_GROUND_IDS = MODERATION_GROUNDS.map((ground) => ground.id);
19882
+
19826
19883
  // ../shared/src/limits.ts
19827
19884
  var MB = 1024 * 1024;
19828
19885
  var LIMITS = {
@@ -19870,6 +19927,10 @@ var RATE_LIMITS = {
19870
19927
  signUp: { limit: 30, windowSeconds: 60 * 60 },
19871
19928
  /** New accounts per client IP (hashed). */
19872
19929
  signUpNetwork: { limit: 3, windowSeconds: 24 * 60 * 60 },
19930
+ /** Verification and password-reset mails per address (D88), keyed by a hash of it. */
19931
+ authMail: { limit: 3, windowSeconds: 60 * 60 },
19932
+ /** Verification and password-reset mails per client IP (hashed, D88). */
19933
+ authMailNetwork: { limit: 10, windowSeconds: 60 * 60 },
19873
19934
  /** CLI logins started, per client IP (no account yet). */
19874
19935
  deviceCode: { limit: 10, windowSeconds: 10 * 60 },
19875
19936
  /** Versions started (each publish starts one). */
@@ -19910,16 +19971,36 @@ var RATE_LIMITS = {
19910
19971
  scoreSubmit: { limit: 60, windowSeconds: 10 * 60 },
19911
19972
  /** Leaderboard reads (D56), per member or, for visitors, per network. */
19912
19973
  scoreRead: { limit: 120, windowSeconds: 10 * 60 },
19913
- /** Thumbnails uploaded from the dashboard (each publish can bring one too). */
19914
- thumbnail: { limit: 20, windowSeconds: 60 * 60, newAccountLimit: 10 },
19974
+ /**
19975
+ * Thumbnails uploaded from the dashboard (each publish can bring one too, bounded by the publish
19976
+ * limits, D74). Each new image costs an AI image check (D87), so the window is a day: with
19977
+ * `avatarUpload` and the publishes, one member can start at most about 35 checks a day.
19978
+ */
19979
+ thumbnail: { limit: 10, windowSeconds: 24 * 60 * 60, newAccountLimit: 5 },
19915
19980
  /**
19916
19981
  * AI review requests for a creator's versions per day (S5, D31): one per part of up to 95K
19917
19982
  * tokens, so a small game's review uses 1 and a game bundled with Phaser about 8. Over it a
19918
- * version isn't reviewed. At most about $1.20 a day per creator.
19983
+ * version isn't reviewed. At most about $1.20 a day per creator, and about 25 cents in an
19984
+ * account's first week (D88: accounts cost nothing to make).
19919
19985
  */
19920
- review: { limit: 120, windowSeconds: 24 * 60 * 60 },
19986
+ review: { limit: 120, windowSeconds: 24 * 60 * 60, newAccountLimit: 24 },
19921
19987
  /** `check-games` runs (D52): each can scan every game a creator has from R2. */
19922
- checkGames: { limit: 10, windowSeconds: 60 * 60 }
19988
+ checkGames: { limit: 10, windowSeconds: 60 * 60 },
19989
+ /**
19990
+ * Username changes on /settings (D90). The old name is free for anyone at once, so a member
19991
+ * can't cycle through names (or squat several) quickly. Windows end with the day's cleanup.
19992
+ */
19993
+ usernameChange: { limit: 3, windowSeconds: 24 * 60 * 60 },
19994
+ /**
19995
+ * Password checks before a sensitive change on /settings (D90): changing or removing the
19996
+ * password, linking or unlinking a sign-in method, deleting the account. Every attempt counts,
19997
+ * so a stolen session can't guess the password.
19998
+ */
19999
+ passwordConfirm: { limit: 5, windowSeconds: 15 * 60 },
20000
+ /** Profile pictures uploaded on /settings (D91); each new one costs an AI image check (D87). */
20001
+ avatarUpload: { limit: 10, windowSeconds: 24 * 60 * 60, newAccountLimit: 5 },
20002
+ /** Downloads of "Your data" on /settings (D91); each reads every table a member has rows in. */
20003
+ dataExport: { limit: 5, windowSeconds: 24 * 60 * 60 }
19923
20004
  };
19924
20005
  var UPLOAD_BUDGET = {
19925
20006
  /** Files for everyone together in the last hour: at most about $0.45 of Class A operations. */
@@ -19933,6 +20014,222 @@ var UPLOAD_BUDGET = {
19933
20014
  };
19934
20015
  var THUMBNAIL_EXTENSIONS = ["png", "jpg", "jpeg", "webp"];
19935
20016
 
20017
+ // ../shared/src/genres.ts
20018
+ var GAME_GENRES = [
20019
+ { id: "action", label: "Action", hint: "fighting, beat 'em ups, hack and slash, action games" },
20020
+ { id: "adventure", label: "Adventure", hint: "exploring, point and click, quests" },
20021
+ {
20022
+ id: "arcade",
20023
+ label: "Arcade",
20024
+ hint: "quick rounds for a high score: snake, breakout, endless runners"
20025
+ },
20026
+ { id: "board", label: "Board", hint: "chess, checkers, go, mahjong and other tabletop games" },
20027
+ {
20028
+ id: "cards-casino",
20029
+ label: "Cards & Casino",
20030
+ hint: "solitaire, poker, blackjack, roulette, slots, dice"
20031
+ },
20032
+ { id: "casual", label: "Casual", hint: "relaxed, easy to pick up, no pressure" },
20033
+ { id: "idle", label: "Idle & Clicker", hint: "incremental and clicker games" },
20034
+ { id: "platformer", label: "Platformer", hint: "running and jumping across platforms" },
20035
+ { id: "puzzle", label: "Puzzle", hint: "logic, match-3, sokoban, physics puzzles" },
20036
+ { id: "racing", label: "Racing", hint: "driving and racing" },
20037
+ { id: "rhythm", label: "Rhythm & Music", hint: "playing to the beat, making music" },
20038
+ {
20039
+ id: "roguelike",
20040
+ label: "Roguelike",
20041
+ hint: "roguelikes and roguelites: runs, permadeath, random levels"
20042
+ },
20043
+ { id: "rpg", label: "RPG", hint: "role-playing: characters that level up, stats, quests" },
20044
+ { id: "shooter", label: "Shooter", hint: "shoot 'em ups, bullet hell, twin-stick, first-person" },
20045
+ { id: "simulation", label: "Simulation", hint: "management, tycoon, building, sandbox, farming" },
20046
+ { id: "sports", label: "Sports", hint: "football, golf, basketball and other sports" },
20047
+ {
20048
+ id: "strategy",
20049
+ label: "Strategy",
20050
+ hint: "tower defense, tactics, real-time and turn-based strategy"
20051
+ },
20052
+ { id: "story", label: "Story", hint: "visual novels, interactive fiction, narrative games" },
20053
+ { id: "word-trivia", label: "Word & Trivia", hint: "word games, quizzes, trivia" }
20054
+ ];
20055
+ var GENRE_IDS = GAME_GENRES.map((genre) => genre.id);
20056
+ var MAX_GENRES = 3;
20057
+ var MAX_THEMES = 3;
20058
+ var GENRE_LABELS = new Map(GAME_GENRES.map((genre) => [genre.id, genre.label]));
20059
+ function isGenre(id) {
20060
+ return GENRE_LABELS.has(id);
20061
+ }
20062
+ var genreSchema = external_exports.enum(GENRE_IDS, {
20063
+ error: (issue2) => `${JSON.stringify(issue2.input)} isn't a genre on JuicyJuicy; pick from: ${GENRE_IDS.join(", ")}`
20064
+ });
20065
+ var genresSchema = external_exports.array(genreSchema).min(1, `list 1 to ${MAX_GENRES} genres from: ${GENRE_IDS.join(", ")}`).max(MAX_GENRES, `at most ${MAX_GENRES} genres`).transform((genres) => [...new Set(genres)]);
20066
+ var TAG_SPELLINGS = {
20067
+ "rouge-lite": "roguelite",
20068
+ "rouge-like": "roguelike",
20069
+ rougelite: "roguelite",
20070
+ rougelike: "roguelike",
20071
+ "rogue-lite": "roguelite",
20072
+ "rogue-like": "roguelike",
20073
+ "tower-defence": "tower-defense",
20074
+ "shoot-em-up": "shmup",
20075
+ "shootem-up": "shmup",
20076
+ "point-n-click": "point-and-click",
20077
+ match3: "match-3",
20078
+ zombie: "zombies",
20079
+ pirate: "pirates",
20080
+ alien: "aliens",
20081
+ robot: "robots",
20082
+ dinosaur: "dinosaurs",
20083
+ cat: "cats",
20084
+ dog: "dogs",
20085
+ colour: "color",
20086
+ colours: "colors"
20087
+ };
20088
+ var GENRE_WORDS = {
20089
+ "action-game": "action",
20090
+ fighting: "action",
20091
+ "hack-and-slash": "action",
20092
+ "beat-em-up": "action",
20093
+ "adventure-game": "adventure",
20094
+ exploration: "adventure",
20095
+ "point-and-click": "adventure",
20096
+ "arcade-game": "arcade",
20097
+ "board-game": "board",
20098
+ "board-games": "board",
20099
+ tabletop: "board",
20100
+ cards: "cards-casino",
20101
+ card: "cards-casino",
20102
+ "card-game": "cards-casino",
20103
+ "card-games": "cards-casino",
20104
+ "cards-dice": "cards-casino",
20105
+ casino: "cards-casino",
20106
+ gambling: "cards-casino",
20107
+ relaxing: "casual",
20108
+ "casual-game": "casual",
20109
+ clicker: "idle",
20110
+ incremental: "idle",
20111
+ "idle-game": "idle",
20112
+ platform: "platformer",
20113
+ platforming: "platformer",
20114
+ puzzles: "puzzle",
20115
+ "puzzle-game": "puzzle",
20116
+ logic: "puzzle",
20117
+ driving: "racing",
20118
+ race: "racing",
20119
+ music: "rhythm",
20120
+ "rhythm-game": "rhythm",
20121
+ roguelite: "roguelike",
20122
+ "role-playing": "rpg",
20123
+ jrpg: "rpg",
20124
+ "action-rpg": "rpg",
20125
+ shmup: "shooter",
20126
+ shooting: "shooter",
20127
+ "bullet-hell": "shooter",
20128
+ fps: "shooter",
20129
+ "twin-stick": "shooter",
20130
+ sim: "simulation",
20131
+ management: "simulation",
20132
+ tycoon: "simulation",
20133
+ sandbox: "simulation",
20134
+ sport: "sports",
20135
+ tactics: "strategy",
20136
+ tactical: "strategy",
20137
+ "turn-based": "strategy",
20138
+ rts: "strategy",
20139
+ "strategy-game": "strategy",
20140
+ "visual-novel": "story",
20141
+ "interactive-fiction": "story",
20142
+ narrative: "story",
20143
+ "text-adventure": "story",
20144
+ word: "word-trivia",
20145
+ words: "word-trivia",
20146
+ "word-game": "word-trivia",
20147
+ trivia: "word-trivia",
20148
+ quiz: "word-trivia"
20149
+ };
20150
+ var THEME_GENRES = {
20151
+ blackjack: "cards-casino",
20152
+ poker: "cards-casino",
20153
+ roulette: "cards-casino",
20154
+ slots: "cards-casino",
20155
+ "slot-machine": "cards-casino",
20156
+ solitaire: "cards-casino",
20157
+ dice: "cards-casino",
20158
+ chess: "board",
20159
+ checkers: "board",
20160
+ go: "board",
20161
+ mahjong: "board",
20162
+ "tower-defense": "strategy",
20163
+ "match-3": "puzzle",
20164
+ sokoban: "puzzle",
20165
+ tetris: "puzzle",
20166
+ snake: "arcade",
20167
+ breakout: "arcade",
20168
+ pinball: "arcade",
20169
+ "endless-runner": "arcade",
20170
+ football: "sports",
20171
+ soccer: "sports",
20172
+ basketball: "sports",
20173
+ golf: "sports",
20174
+ tennis: "sports",
20175
+ farming: "simulation",
20176
+ "city-builder": "simulation",
20177
+ "deck-builder": "cards-casino",
20178
+ deckbuilder: "cards-casino",
20179
+ crossword: "word-trivia"
20180
+ };
20181
+ var DROPPED_TAGS = /* @__PURE__ */ new Set([
20182
+ "multiplayer",
20183
+ "online",
20184
+ "online-multiplayer",
20185
+ "mobile",
20186
+ "mobile-friendly",
20187
+ "touch",
20188
+ "touchscreen",
20189
+ "remix",
20190
+ "remixable",
20191
+ "leaderboard",
20192
+ "leaderboards",
20193
+ "highscore",
20194
+ "highscores",
20195
+ "high-score",
20196
+ "cloud-saves",
20197
+ "singleplayer",
20198
+ "single-player",
20199
+ "browser",
20200
+ "browser-game",
20201
+ "web",
20202
+ "html5",
20203
+ "javascript",
20204
+ "game",
20205
+ "games",
20206
+ "ai",
20207
+ "ai-made",
20208
+ "ai-game"
20209
+ ]);
20210
+ function normalizeTags(tags) {
20211
+ const themes = [];
20212
+ const genres = /* @__PURE__ */ new Set();
20213
+ for (const raw of tags) {
20214
+ const cleaned = raw.trim().toLowerCase().replace(/^#+/, "").replace(/[\s_]+/g, "-").replace(/[^a-z0-9-]/g, "").replace(/-+/g, "-").replace(/^-|-$/g, "");
20215
+ if (cleaned.length < 2) continue;
20216
+ const tag = TAG_SPELLINGS[cleaned] ?? cleaned;
20217
+ if (DROPPED_TAGS.has(tag)) continue;
20218
+ const genre = isGenre(tag) ? tag : GENRE_WORDS[tag];
20219
+ if (genre) {
20220
+ genres.add(genre);
20221
+ continue;
20222
+ }
20223
+ const hinted = THEME_GENRES[tag];
20224
+ if (hinted) genres.add(hinted);
20225
+ if (!themes.includes(tag)) themes.push(tag);
20226
+ }
20227
+ return {
20228
+ tags: themes.slice(0, MAX_THEMES),
20229
+ genres: GENRE_IDS.filter((id) => genres.has(id)).slice(0, MAX_GENRES)
20230
+ };
20231
+ }
20232
+
19936
20233
  // ../shared/src/ids.ts
19937
20234
  var PUBLIC_ID_LENGTH = 10;
19938
20235
  var PUBLIC_ID_PATTERN = new RegExp(`^[a-z0-9]{${PUBLIC_ID_LENGTH}}$`);
@@ -20071,6 +20368,12 @@ var gameFieldSchemas = {
20071
20368
  description: memberText().max(500),
20072
20369
  engine: external_exports.enum(ENGINES),
20073
20370
  madeWith: external_exports.array(memberText().min(1).max(40)).max(5),
20371
+ /** 1–3 from `GAME_GENRES` (D103). */
20372
+ genres: genresSchema,
20373
+ /**
20374
+ * Themes: the setting or subject, like space or casino (D103). Up to 5 are accepted, so older
20375
+ * juicy.json files keep publishing; `normalizeTags` keeps 3 when they're saved.
20376
+ */
20074
20377
  tags: external_exports.array(tagSchema).max(5),
20075
20378
  /** The languages a player can play it in, the default first. Each one counts once. */
20076
20379
  languages: external_exports.array(languageSchema).min(1, "list at least one language").max(10).transform((codes) => [...new Set(codes)]),
@@ -20098,6 +20401,11 @@ var manifestSchema = external_exports.strictObject({
20098
20401
  entry: relativePath("entry").refine((path2) => /\.html?$/i.test(path2), "entry must be an .html file").default("index.html"),
20099
20402
  engine: gameFieldSchemas.engine.default("other"),
20100
20403
  madeWith: gameFieldSchemas.madeWith.default([]),
20404
+ /**
20405
+ * The game's genres (D103). Left out, a publish keeps the game's; CLI 0.14.0 and later's `check`
20406
+ * requires them.
20407
+ */
20408
+ genres: gameFieldSchemas.genres.optional(),
20101
20409
  tags: gameFieldSchemas.tags.default([]),
20102
20410
  /** Who the game is for (D78). Left out, a publish doesn't change what the game has. */
20103
20411
  ageRating: gameFieldSchemas.ageRating.optional(),
@@ -20166,13 +20474,22 @@ var moderationCommentSchema = memberText().min(1, "write a comment for the creat
20166
20474
  LIMITS.maxModerationCommentLength,
20167
20475
  `comments are at most ${LIMITS.maxModerationCommentLength} characters`
20168
20476
  );
20477
+ var moderationGroundSchema = external_exports.enum(MODERATION_GROUND_IDS, {
20478
+ error: "pick the rule it breaks"
20479
+ });
20480
+ var moderationReasonSchema = external_exports.object({
20481
+ comment: moderationCommentSchema,
20482
+ ground: moderationGroundSchema
20483
+ });
20169
20484
  var requestChangesRequestSchema = external_exports.object({
20170
20485
  reviewId: external_exports.uuid(),
20171
- comment: moderationCommentSchema
20486
+ comment: moderationCommentSchema,
20487
+ ground: moderationGroundSchema
20172
20488
  });
20173
20489
  var rejectVersionRequestSchema = external_exports.object({
20174
20490
  reviewId: external_exports.uuid(),
20175
- comment: moderationCommentSchema.optional()
20491
+ comment: moderationCommentSchema,
20492
+ ground: moderationGroundSchema
20176
20493
  });
20177
20494
  var rerunReviewRequestSchema = external_exports.object({
20178
20495
  reviewId: external_exports.uuid(),
@@ -20183,11 +20500,13 @@ var rerunReviewRequestSchema = external_exports.object({
20183
20500
  });
20184
20501
  var blockGameRequestSchema = external_exports.object({
20185
20502
  gameId: external_exports.uuid(),
20186
- comment: moderationCommentSchema
20503
+ comment: moderationCommentSchema,
20504
+ ground: moderationGroundSchema
20187
20505
  });
20188
20506
  var warnMemberRequestSchema = external_exports.object({
20189
20507
  userId: external_exports.string().min(1),
20190
20508
  comment: moderationCommentSchema,
20509
+ ground: moderationGroundSchema,
20191
20510
  gameId: external_exports.uuid().optional()
20192
20511
  });
20193
20512
  var recheckRequestSchema = external_exports.object({
@@ -20203,6 +20522,8 @@ var updateGameRequestSchema = external_exports.object({
20203
20522
  description: gameFieldSchemas.description.optional(),
20204
20523
  engine: gameFieldSchemas.engine.optional(),
20205
20524
  madeWith: gameFieldSchemas.madeWith.optional(),
20525
+ /** 1–3 genres from the list (D103). */
20526
+ genres: gameFieldSchemas.genres.optional(),
20206
20527
  tags: gameFieldSchemas.tags.optional(),
20207
20528
  /** `null` clears it. Refused once an admin has set the game's rating (D78). */
20208
20529
  ageRating: gameFieldSchemas.ageRating.nullable().optional(),
@@ -20236,6 +20557,21 @@ var REPORT_REASONS = [
20236
20557
  "spam",
20237
20558
  "other"
20238
20559
  ];
20560
+ var PROFILE_REPORT_REASONS = [
20561
+ "inappropriate",
20562
+ "sexual_or_illegal",
20563
+ "impersonation",
20564
+ "personal_info",
20565
+ "spam",
20566
+ "other"
20567
+ ];
20568
+ var reportProfileRequestSchema = external_exports.object({
20569
+ reason: external_exports.enum(PROFILE_REPORT_REASONS),
20570
+ details: memberText().max(
20571
+ LIMITS.maxReportDetailsLength,
20572
+ `details are at most ${LIMITS.maxReportDetailsLength} characters`
20573
+ ).optional()
20574
+ });
20239
20575
  var reportGameRequestSchema = external_exports.object({
20240
20576
  reason: external_exports.enum(REPORT_REASONS),
20241
20577
  details: memberText().max(
@@ -21371,7 +21707,7 @@ var LIBRARY_BUILD_SHA256 = [
21371
21707
  "06d9ef9823e743518793083c296d801e752db128cb1f519fbabe37e1259567ea",
21372
21708
  "8c7c745f667a9b352574044d6ce8d8e76705a6932c79b6bcb53db34a5e22ea76",
21373
21709
  "66257bc46776898bf8c54daaed402ed8f9ac109379c47b2dfa8aa048544d2953",
21374
- // Babylon.js 8.0.0 to 9.33.1 (babylonjs)
21710
+ // Babylon.js 8.0.0 to 9.35.0 (babylonjs)
21375
21711
  "1bae68431a43a3cf19ffb331f409c468c6081279b6c56044201b7cfc1caf7b84",
21376
21712
  "92b8d44ef55a5814cb4df2449d6441609c3122a2da21b0d6845474e51c89680c",
21377
21713
  "cceac5f99c07499e6a964df37d25be2af0223ee38524c22715c7a88039ea7d4d",
@@ -21553,7 +21889,9 @@ var LIBRARY_BUILD_SHA256 = [
21553
21889
  "58c486bececb6cde67b188e6410321e72d1d051ea7a9e5f23c560b6049ab37a5",
21554
21890
  "205cf307e8e08e94ad7f2019ac355f25fd0f8b31e7de0945af359bc51582f6a8",
21555
21891
  "43855891960ce3d0ab516e6311bc61d041a19ac6d3e7403daea4633f2bdd29e5",
21556
- "9ccd901c99d56d52e55ebcffaf0401585dc42c8b487b5034e1fb77d5bebe8d40",
21892
+ "2ae6ffbd40907560bca527383cd3e17835d3d3d0a2a03ddc16457c3ff5f58dde",
21893
+ "03318b7abf244c774562c4f4677e23e5ee6aff333332930e9f2336ec62e0a1bc",
21894
+ "e7489b1ba1044cb296b6cad3a5732309cc18fdc6873fd009dc585de34e4388e2",
21557
21895
  // PlayCanvas 2.0.0 to 2.23.3 (playcanvas)
21558
21896
  "6d0ead85394726fbea661d014ab68951fa4eb5e4e1637f46aec33c72a1d15e14",
21559
21897
  "771cdd978d4f3cb0a17645adfab8a4603af91f8db110ef7787907c5fe5a472ac",
@@ -21940,7 +22278,760 @@ var LIBRARY_BUILD_SHA256 = [
21940
22278
  "29566790f4d4ebf4586c3d89c61f40388a0e9a2630e1c208af7b83d87571f206",
21941
22279
  "81343a465947066ec1cd91a1ab88fe83591234159f4f55bcdf44073822c0bd9e",
21942
22280
  "736c339444c88baad593e24afdf1d6e8f574019b4e37a110ecb453ff745ffd41",
21943
- "e7b836445d8c44bddc99b7678fa336a9d5c5ede27cc709c5fae8b1748ba7431b"
22281
+ "e7b836445d8c44bddc99b7678fa336a9d5c5ede27cc709c5fae8b1748ba7431b",
22282
+ // LittleJS 1.9.0 to 1.29.1 (littlejsengine)
22283
+ "00cd40249c0fa04ccb7401b22858d07a111b0fed188621589b33abb3fbb2aac5",
22284
+ "73c79da863ab22b6dd8e998c87c9521b3a537a8786e1563dde6ca3b162f6d799",
22285
+ "ba28285aa34ae57564627ff5a3ffd21c9f9cad6c1f281df74e76637084bbcd87",
22286
+ "dd5ab2a075140e7ccff18f5d8946391f20a75ae64abc63d432a7d02e248cb636",
22287
+ "9aa25491fb2802affb67d972143d46635d286e4e640587cb7aad372efcd4456c",
22288
+ "57382fb3b8bd7a87f50927746ffa2fcd612fac4d744da4952aa97eadaf6c73c5",
22289
+ "42a576331fbe80ceb60f5a798df8d5e5d5f3c92dc6db6b556087a7555e184784",
22290
+ "6952b8cc94b30cfca6c833e42f1b838f9e72c04aa63144a3de20d0367c7752be",
22291
+ "86a4e8f952fb27effe642d65fa9f9e60404fa1ae7244b5edd67bee698dc81416",
22292
+ "11c45d283f19ebaf1850f41e83287a231ffc65a0e60dd67d5bd033fe4df1f60f",
22293
+ "809ef23477050f141971f13146595d2aca40b80db5f59990f9b91b8cfcb116c6",
22294
+ "b106fe6c0c14a813a5f90c607a457161543d952053ea17f3ccca0a038011c3cb",
22295
+ "6e239353e4a633f4af15487b67d9e801ffccbd3f2377dfe31f4387af7848b080",
22296
+ "7763cb085e9bc157ea5530e7d42fcb12675013af729d96876cd8281b8c170464",
22297
+ "288860611ff54d9278f2180616f18d45e3c111fff97e18f44f55a50836d0fbad",
22298
+ "2bf28983b7bfa76da140d9bf0f3b36bbd8fae0565f1c17fc6113fc02557ee669",
22299
+ "8fa49653dd958c90ed50d4d6dee85c7c0a0c0eb06afe2b346488319b68aaafb0",
22300
+ "bf8c776860bc8750c3268650ab9535f445834e7b38534a4fe540a1c4a0707d06",
22301
+ "b8786d593352f89b2d047c7b3d8bbadb8db20bfeeea91c87910b93d027569cc9",
22302
+ "20eb4da538f3e9e15277c2238ff607b3893f20363b46f46b305fdc6505993393",
22303
+ "cb170e74fd6e25ae493e1b8dc35c09c9dd228f48649b50d205cb9d77d5b0ebea",
22304
+ "914de13a49626e74da3279e874605059ed49dab3cf0e83caacd4944a617a0d15",
22305
+ "e18f9977ad616d30008c14d048ad740f831fd8bc88f8861630e44f7ad0536c7f",
22306
+ "7e971182d08820cf013accac0c6f0ed564cc32c932ca8ee53862d400d1a38f3a",
22307
+ "ab96e62b6476ff8c45ab75ad79d4ad49cc3250ef0266095eb1fc2563cd427ade",
22308
+ "f9caf97a27520e9501fb0cf2496dbfc1b02041c4d069559a4247a09184feb0fb",
22309
+ "3ced9a51576370413a0f293eb1be4dd8585d94d4c80632654b06b340284f3258",
22310
+ "44465002e9e15c483d0020436508ae342c3b4cba00d46400d4f6210cf16afa51",
22311
+ "c257eb35d445d117670bf3b581e58ac2e0e3a7b3b57c07f9db5939e62a3e3e63",
22312
+ "5c1cba1f87b64af4e5011fa8d8156a4269c699cfde975f8ab81d7412b6d9c624",
22313
+ "6972b85efff9acc51e6ffd5e3df2732029246b107e0c60b4659f679fa5fddfea",
22314
+ "5c532ba21bab104264d711851bc7669b5038cffc72c34d6833dfeb550d498b29",
22315
+ "fdc2f4b103f2e91c1775bd28e55db9f7d8fedb2d8cfe52840b58f94b0f59de09",
22316
+ "01464f975da25ed0b1e6316b797335a4c51e5d6a665052e5cbd58d7b66d69a8b",
22317
+ "a420db41469af2f5ef8266ab2d50a643a8d1cc3983fe825a0ffed46b6514935b",
22318
+ "2e5b3db739bc31d99e08a2272a8ce9d5e579ba883d40bccd0f9325887f8ab656",
22319
+ "026611e0082628f3c44dd1270932ff75d1b5d1b116418819541cea0d31a5253e",
22320
+ "a0ddff8f4925413bc50938f90b0e92db91fdda34916f18889447f23604782598",
22321
+ "d10b7ec283eeee9a39b9a5298ab2b2cc092f84ae53be392d75487dad9a9dd47f",
22322
+ "b7c41d65d3d77c80715698f12837eb5e3243e8ffc0ffde6003fe919be564fe16",
22323
+ "17ba0a8598dfaa94ce20ccb04358cb226069737c997153ffe0eceb60e43b332f",
22324
+ "2eb6f0df7d262589ed7c6aaa28a6d20e5a509b1bc7aece7709bdce20683db10e",
22325
+ "989447fdcf428a85282fcc822c1f9f3cbf59cc0002e2f9a2796f74ef8ffc921a",
22326
+ "87ea37450c31442d6ab3b3084f189dbf18ee7c63c8ff2098f772ae4beaf6a01d",
22327
+ "c9a56c5dd2b909c665f8fbabcb7d14e62f6ad156fda764c63c8689541891ab03",
22328
+ "aab4f49a6b3f100c7c4a516f5465b708c40049986a2f0f2854e2bea21158d311",
22329
+ "50435207ae7eef47f235e450b6b3d8d58d6e42341afb0107a6baeccfe3e07ee7",
22330
+ "474670bfc64879b841e1b45548b784d7e7a14bbf9ea6f1549a70da28e9e3d305",
22331
+ "156de7612e07a7df68810b4b5f26545b7968ead57e61b13ab5108d5ceb69756c",
22332
+ "112c05f9abb5944a97b8d206f1e1817b2597e57f71b2524d227a41c917c56549",
22333
+ "2a3b0c188e8681794f0d86c1f1c66ad9fcb7d90be7e0bb39243b13cd442cb8b2",
22334
+ "48eabc2e146a4279c6dea003eeb763c6ee2710dc72e83fa0da5e9e1802dc8a01",
22335
+ "13da65eafde7fb158a72c8441e606c0c5bf988b94a1ec6a9877038ce58c5619c",
22336
+ "9d5f684a3cf089101575145f4510a21f72d6f9d1f9c0af7e16b8fbfad7c0a239",
22337
+ "052141aa2b1e43360d992c934e2360b280bbc9ad6a2320525e03b3cfdfaa32cc",
22338
+ "d513974bb941e136323f42b508a0be2eda4700a7fd903661534bbbbefb9d8bb1",
22339
+ "ce126985daa0720478b194f22f4b227af5cdaa279aa6f81055014d7ba081b67d",
22340
+ "c4eafd8523d1f53bec2b021580b42e2282d366c350a4deebaf5489e74f98a7b4",
22341
+ "8abec922df287ab3ebb07387d322049174f7883b141de5f800c236ba469a4ee8",
22342
+ "66041478ca7e8860a471a07d25d10c0da926042a92b12504b42409e2d27fccd2",
22343
+ "75f1a2b22d63bf57e7f907c1897b45fa11367a2b3fed2d2711be6c8fee2f36de",
22344
+ "63ffd65332b68aa3b04195f9720c6242f34af0651fea6dbdc94181f3d4be557b",
22345
+ "9077b4a74d372270bf2af2a8fb8a5140b692cfcbcbcb6a8a364d3a138ef11473",
22346
+ "72aa431d963c1bbc927aacb24a6e34c9af2930275de50775a73288197637f9fa",
22347
+ "63492e6a104f19066967e256c8a6b88855bbf4a0976296f73a839daa8ae738e9",
22348
+ "319c7bbb26be588ead30963c9dd2541336f23442064d465b0e97e3f473b2b4db",
22349
+ "9eabb4f3c3cfec887ec65a8a11ef00607cb281d9e0b1ffb5f21f5d8d938eeec5",
22350
+ "175a0eed1d6df249e5f5f4c1d1f280533af5787eeaeac081284459ad2c58119f",
22351
+ "842a7011658b94f40544d9a51b0f89404696352f63eb1f1f470a7bf71a6dff6a",
22352
+ "b646bf20c3858a3e5ca2621202d4bbeb062d7ec9525809def37ba392ad46c75c",
22353
+ "bc8e0db89d6dd868ffb72a5f33d46046c1f1e3882a88bf0e5deea45e0f0039f5",
22354
+ "ceb4d57731fac77160dccbb5949f3f5043ec0150ebcd80e54c1ca7017863c6ef",
22355
+ "98db664285c47a3645d51cd6dd9b57d888b7eb78e9e6bb0f7e56c81701f4f572",
22356
+ "8cce03e808a643d46fa720ac9711999c1845cedc546473477f13b06ff3761b73",
22357
+ "d5c241b5bf22e37d77d4afb8c6b8dc0c61ab60b52ec229ed2165036bf0a1c1fd",
22358
+ "88d6bc907ecb9002c9c9882379db452509b67b467aace8d84ac2db6a8fca05a7",
22359
+ "62366405baec9d1fe648af4a5b0d0ab3b868d5c7d3dd763f129caa90e48df326",
22360
+ "c92fe3fbf17868b92de9f30d053351e29249f81a9537ea1a0c9643b98ce6477b",
22361
+ "bd5335b6421a20d95a7a0b6bf0407c3d5a8b134bf5b25e1d61f08159e6ada827",
22362
+ "d969de5a4fa5706108e3d33c24882a8ed4112a660ddfe9a057b1f4621bb9fbca",
22363
+ "4917b4acfcf87b07353c76165a2f26a82f1852f1a16ba7926600f09077d48f20",
22364
+ "d788c97aa13eb1d2ac8ec65210a88048482fc8613b0e2e7d7c89837086fd765c",
22365
+ "e8ee1118fc5a6b4e3939ace9cab36c9c5f3b2601ae1eb4f2e0d203449d1afcc3",
22366
+ "a6fee95c5202fbf16cc1bc41aaf541bbf2e656024b67e3d5d1b5643b0a721523",
22367
+ "642c167f0ca0c62dd9459589cae69cfa5c474035d3e533523dac9a5f154a755d",
22368
+ "bf6b6743e87522b571767b718cbe8886578b2340eea36ec10d2d74ce690251da",
22369
+ "5974f8859fd6f23ae332423aae8e02ebf3773de5ac997ab7079ea9a0d4043ea3",
22370
+ "35f6bdb965e31ebb29eecb62b92750f37e9ce4bbf8bf561f6eb75fd3653ceb14",
22371
+ "4d1eb2b06d7680465d304b26be4d15bd02b024c102eefa4c5b82afba68755ea7",
22372
+ "711410eb1472bb611010fadbe369675ed67c7c549e4cf6f9ad6cb476d862929b",
22373
+ "1f8aad327b788b386fe0b41045d532a973832356531b9ef2c88636934f523c1b",
22374
+ "51de9893cb7bd652a21db28de9db07344a51a1f884452b34d91dd61d54afe0de",
22375
+ "bd25b78d82aa605f2f48802e21d113d5824d25fbf916dfd570f4e9e212f257f7",
22376
+ "14a789f9f2500ed0c3817b82584b68083d8838fda6fe2c31569e44affb58143b",
22377
+ "e29ec2a7f182253bf843935b755ea520e3f6455c0299dee68dd301a84dc185eb",
22378
+ "a8425aeb23fb213f2a31feb3cdd6508f08b38b48ddf27fd370dd374b067d9935",
22379
+ "026911af9571fc29394dbba01d3b57a34addc3540b80e1ce95c014ef994c4c9d",
22380
+ "5963a34f70a94dacbcfd412e995e5b330e4ee99b724293c992352cfd3ba6b720",
22381
+ "436719eac9525bd02e0b65a8ac67c5db5f04f1d5fb71fdd8d031cf93cff285d0",
22382
+ "3a249402734e3050dcf4b48e75848947a1ddfa8b5b2b552d4a9eebeeb4dbf7c9",
22383
+ "abb799fbe5e43b7801980c5d428f19d3e3f06616cf6b0572e4c35cd0fca48540",
22384
+ "c656fede3ceba9ca686efbc8873db4d2dd4de79f385ec6ab88c3f29aedb40f14",
22385
+ "3f4c4468e4071068e79d7878ad0e49eb81332db3c5026069baebee36334599c5",
22386
+ "ac0600273f2b53de90b3f8918f2c404f85f76cf7c0b2f82f752450b471f91262",
22387
+ "67068a3203fcddef44276d00c9079536116d6acad70207fb06f345e765697e09",
22388
+ "3551043667b825dd48c6e0fa23441f386919e7658dd192df65a45b7ade3c6053",
22389
+ "da3b23255ddbfe1b3f461e389a5c4139f56337cb29ab6ac23338372d73a8eccf",
22390
+ "1893d5a94b2d6f4ee251aa9c9d8511fea6ab7d75a6edffca06282dd632a9c7d9",
22391
+ "3daf0d3692f38d1245e03cee5c4a5f2a337365f5eee1f829095bf5099c8ba10d",
22392
+ "729a4adb0995314d38bc7fad408f55322cd34ca2d069d244e13523a0d48b23d0",
22393
+ "be20a9d0240ef18dd64b926596fdbb185b359017083838effb90f200c3316fbb",
22394
+ "898afbb8c0020a7ee7ac2cc573667b1baa3ca76fbd6c0a75c4f858de88e8f8b0",
22395
+ "7f37f1851507d1802283769986bb2908ea558a259ba697ff860ac1c779f864c7",
22396
+ "0e25233a7ef8c84ba3551d4162bc11e45818a85420aa1734cce61bcf794a0cf0",
22397
+ "2eae5f52c0f532934cea2a43515207d212dd001dee86afad7187ca980c31e999",
22398
+ "f8eeee8185576f07c164516132d8db59abfb8b1d1f6bb4526e29c3940a442b85",
22399
+ "404e3951046f9a27ecd7c48d64213a8b7c2aeb7e24d3725bdcafe2653b095eb7",
22400
+ "efd601cbe4840811eb45db096bdbb9a93ca7a7d5decc509b679e27007e34b923",
22401
+ "060b510d99928e1ff46519f2339381fcda6d96df35109a0044ef3586ea14157d",
22402
+ "490c4a2d9fcbff9559f4aa28c3af3705f82b6e277e94ebe3a9045e445bbd31ea",
22403
+ "0c629ba6f3302f0f49dfa467120ba2dfa9886b7c3b8ebbd222c3630c6bdfe049",
22404
+ "4e197a29799adeb92846cd18fea67cc6c6fcedd9b039f9a69e972d71db9ae8af",
22405
+ "01b28bb65461c6c0f0aed852fae8c4432dad868652f779125332accdb245b2ae",
22406
+ "6a52b8e03bf513b60be1f914aff24fa5f38fa2bb92f0b99f5dcbc99d5c49137f",
22407
+ "c3a107c8ea2d4bf84b52ee1ece55e811624b680fe9974bf1c600f9153d071819",
22408
+ "7863aae6be78a0d212cc48c26331cd240234ea8c862b1867adec8d756871681c",
22409
+ "46c683a9d8b8ecaab68e0df2460c8e3a2777760530d088536ae2ae14cc325522",
22410
+ "409e4325a33213df3ec38d5a72e4369560ac0ca95db2dcb9d708ff2517770217",
22411
+ "9e629142c48c0fd6b99c3b4345644f46496358a848ead3eae48ef36c7eb20b60",
22412
+ "b42172cfade42db6f6536c37a88efb686635ad060c3b079d34b749055039a87a",
22413
+ "e45965302b6d82ea7435f954bb732804107ae8d3d7d1364e5fd2d83839485ee5",
22414
+ "76dbcfded570970979e41ed0316282e5ee39ca3e3acfed24ad290f812a6e5b9a",
22415
+ "1ff96a27ba13d533adcd9eb6303e4c615dda69ddfd329032f73388f351503b09",
22416
+ "7801aa01b4f584fbe0f613531269332a7a51db3f3e185c8f5fefe483ffec78a7",
22417
+ "a6df5625368730c9a761e2139a0043a414133c90fb60dda2672baafe781a56f6",
22418
+ "062182b526d1f67dc26a7cb0962a65ca880680e0cb975310e57b7bed528feb09",
22419
+ "10e43bb2b0b2d48be150de8f413ad37feb9fb2838fbc9eb6911cc564cbccd397",
22420
+ "26835d442eed33ef9003fa61e1f50120eb94b8e96b716b9a722aa221a9cb71ab",
22421
+ "88e5fec75b409ffcd4107eadc1cedbced43e649379e09343843c86ce999d3adb",
22422
+ "f88149b1fa601661c0e5f6b593eed3f27d03d7d9a33d83626c734efe52c44711",
22423
+ "d404f94abc57b232b54214b32837496cb4d46400225d2e30fd57b0a8b34a8d88",
22424
+ "5d3ea13e229c488bfe7d8fba8d63491f11c95a796ceb9dd7b5f7e06e53ae39e3",
22425
+ "8c8207521169cd92d0801d08a7577b2b0634ee04801f14c88114ae9ab25c4186",
22426
+ "d0303a8404f4648a6b09c8aa818868bd6a766eba1b9f0fa5a961c1fe583126d1",
22427
+ "84df46cfeeffb5a8fbded03a9a85b099b7c34bc7e10b0ddae3bb170058c10bf8",
22428
+ "7e85297fea071a15e5910424d789eb74ce366faf6a97b5e39dfd3de0357ef142",
22429
+ "f15d1b73de8d9436fdb1311af3150d8712d1906b2ef706d4948d2f6378e9e584",
22430
+ "f712047f7562a743d916c05c8485ec104be8979b4c176a6a063993319bc2d3d8",
22431
+ "69117669b640127e135574626729b9a7808cc3dfa53f7570d73c0e700bd4a2fa",
22432
+ "12d4949e5e8940ca62845ad2b9d1b1ad267120e38f888897413038881dc7030f",
22433
+ "0c4828a77fa07990933ecc57e446e955d86725666612f03bee2f844eaffa6806",
22434
+ "7b964625893587743a35ff312b98456ca8f61d409d2f7bb63fdbc5893a924cbc",
22435
+ "9053fd96bd8ae5f54c291565a6e5d2afc74758562938a1e8a037f0f4962a3c31",
22436
+ "20e43239f7c4c323ff35736c640f9a0fa16c69a95c1a97b81f4618a82e2dd635",
22437
+ "b62a163ae6c0ed706094478413da96519ae5ac743deaf225be022ad0a09ba7d4",
22438
+ "9b44fbfa7bafbc1fb4d5026d1dceb895399af84d538247cb15ee67667f3dd9d0",
22439
+ "71cd280937bae32a0d00d692286a3a6f0c57640287c2ee57eb52594e349843c2",
22440
+ "10e17924f7d11f1e665488b22cc775aec1d8ff663541fcda5b03f12fbd44b4d3",
22441
+ "c3cc545252f50953b333f588af82db76a8f029792fcf024cbea92dd09ca4e330",
22442
+ "d9be22ee13237db25a29004eefdd2d6e83080cf329d1bc286450fae7979a319b",
22443
+ "e32f659cfb09d80af19f895084179d3a483bc44a242cd01b0db90ec261c02180",
22444
+ "6f86608e3a1c16f777f237379ea7165a1058a4b361e19f0cf6a5bc92be719a6e",
22445
+ "d3e0646037015ea5cd05d2d65453f49d00a2709f4f9ecd6b8f4337236c268791",
22446
+ "7eb8ff9b3b5647f07f1c5266edb7f4cf53e7cee1c7399c5991c10ff6fe3ddb90",
22447
+ "5195fa0201b127aeee9ebb4e831118a67e03dd74f93ef78b4fc5afb040f23da1",
22448
+ "acb14ff88b7185b56092508c2208906ebc2a4c198dda1402f8c93c2c1cf0b242",
22449
+ "bc2959f65390d73947252c5b58cd970cc175e7d4d408b934c931b8dfd1a3d684",
22450
+ "53566128db4ab25efb87439cd56c61ccc9209ee24a1fb9b364b9aba9e1852c3a",
22451
+ "1cf6176914fc082d53ab717bc764a4c170dc47cc76a370de54a1c4fbc0e16def",
22452
+ "44b8d9d2598c1dc01dea8ead1f2fc309229461939f8c26845e0bf2d1b75a2957",
22453
+ "7b61391fa9cfee261e31176f2843868eb9189ba5611f489daf7f9ae7b06a25a7",
22454
+ "c6e67f6cde7a3f8a96e618c577d2aeb5d15dbfcc03d10a98e17edfc0bc35cfd4",
22455
+ "325ec9e8963ef1cbe15fa9cecd5f43fa04408f95bd1f1474bd709d858e5d5225",
22456
+ "31bc5b250ebdb1b922bbf0dd63fab96b4fb5134751212fda4d19bdd573f90847",
22457
+ "da89ec30e0785dd2ea178d04c594fb879390e4cb91a805438a3bc42790f18337",
22458
+ "442190ccdf0c12fd267ebd471042be260511c0d2d6db26da8803c790f3071db8",
22459
+ "9dbdd519ef25876fb5eb69dc02d504a2a9f94c60750c1c7d04eb7b1f952dfe10",
22460
+ "722215fd1da5ed26d907c7aba0f819a3898e2b76514b9fc89ad0d00b777b7a12",
22461
+ "f5996721dcec60929a7a64592932167c7dca680bd3bcd40034b345194ef01a47",
22462
+ "ca87af3ddfbeb358af3d9cfb094af06594b5f6791d2924ff557800eb3f1263ba",
22463
+ "3c480b678a8f025794753dc425ee581ef7de288484bf0458638507179f64e93c",
22464
+ // melonJS 15.0.0 to 20.13.0 (melonjs)
22465
+ "092f90df8320fa0bc951cf4c8ae0b097b185bc3b0b14ecd4287252c10fb2cbe5",
22466
+ "8222a30c3c33cff2bb59e1dbb4775ab96431a93c517f5b22f74e1b53a983940b",
22467
+ "8fdb7f3916cc1d39fdac409bae9fa4d46b5c5f59c6a7ac1de43e7b4cbd80d94d",
22468
+ "b5279bf1a102eb401f19fda4e51edddcd3c9d2a8a87713eeb8f47db5dc97ed4d",
22469
+ "082c8366a890209f2b6aac5d18857b83cf436c61acdfe5dfad7dbbdb35c67b6f",
22470
+ "fb34c53731411844d6ea82fe31801e65f0b7ebf4a1420674386ef23ba4620b20",
22471
+ "67091896fbf229ac5a563e07b80d38e7888245f2b1616f21be9c4a48fea8f4b1",
22472
+ "3616e71d4c36ceb7831635c64735aa32bd9441833c80e7031629781ec27861b4",
22473
+ "2a36e6058ef9a45bb52f04d44821cd88290377ece25571c00318a57582e9726e",
22474
+ "e1816fa57d16fa8ef9db7fc1cad11de762b73dd5e0837c4af636d4f2de1a45a2",
22475
+ "021c99d87e8e36146bd125b1b4196fa409a832b13f2edd410f8026b62872965a",
22476
+ "c54429115d6d458a223bb66b4f92322403a1cafda50ce07edf4965e4983495ea",
22477
+ "7a285a2603b7c3cb50b18c4ade766d57d44bf7faa18dc09f99dad1ce09ac77a5",
22478
+ "83539e47d45b8008413c19281696a17840a0e03b2257238034908f048d4d274e",
22479
+ "9c0fa2c2ac18134eddb550c26ebbc1eb37e826759ec77d6abb385e6fb9ba0094",
22480
+ "7acef656778f8627b8b0912afbf5d0d24444d323fc90884dbed11cc35a8dfbfb",
22481
+ "f769c54539ab5ddcc15552e58458bec7c8a1b09079c38d8d79ae050fe612e92f",
22482
+ "9027658a3e6b683c33fce8a64466dcc1873647134b1e6323f76cc6356a3dd423",
22483
+ "a3bb90452c6ede1d45b2df185ba7c7038508883ee0fcf5ede42ff8f69e5ecc99",
22484
+ "c8470ddb75df7a8dd7e0f3b10e82dd0a1840d7aa81b6a5523cc7008f39d4a200",
22485
+ "34f66aaa9fc48b597e8c4be04e2da78180192e7011f428b94c6f6c61f0968df6",
22486
+ "406c0aade5e240b0524f4310de9ec7720eb863736bb6f6e5d1dcfa519374b2bc",
22487
+ "fa4d12c582f37803809aa5d69e955d478f5b9beaef667ca63ccf91cc9631bf84",
22488
+ "29a7df2ac08ded680ec633e7d961d5c2ac65abba01a1151178581eaf9b852aed",
22489
+ "120d67feff4964e390b293f5897f823b9a8f3532c82830a3b3ca5856971495b4",
22490
+ "6c6bb52d7ff6b4312e259da7f9b15a54f4fc41a6f478f2c6d84ff555e862d8d6",
22491
+ "635d7e365378587b195fd276342c451f5aeb064809ea39d051a8b7508b386d13",
22492
+ "dccabd6749ccd9df9ee609cd451be79ddfb28a3bb0c82287aacf7b01244ce25d",
22493
+ "8bd040af1fb395fa793134026bb0c17e1d0df1ec05e2de744098818e622b4c23",
22494
+ "210fd9618b31ee4fb2d2336e205a45a2b988dc8ea3d60b1dd839290dfc082c7f",
22495
+ "a3be9450c98001000b044a35b269b74c17214592e18b72e02bace2342995808d",
22496
+ "a7e0448cc5f4907de4d2452f35b4990215d6f5111ca6a45377ea03aad3ac3215",
22497
+ "2013ef21003b5c047136e40051e9e9748417e39d5a415c872242b602e3fe5cf8",
22498
+ "97f2896df9488dcc4aea3a2735e36c20e1edd867e31827b9dd3cec874cb447cc",
22499
+ "7c4130353a09d38f24739343caa73cd283126d332b4baa25b9c4e126f5a385d3",
22500
+ "f9b254cdbe34c545aa5b575f5f18d8a4a67004766c316f38cf34b7e3d5beb4b6",
22501
+ "ae1cc026c1d331e901929060f4f648dc7f57b046e998830136327f24575de8ff",
22502
+ "bac6b50b4c1eebb9517845d972d0b89a7682a8911e0ac50c3b7314df0878f6d0",
22503
+ "31b7eb63e340c9989783ff853535f11ed21ed8c25c4c3c0c742f0c4c698f2e89",
22504
+ "c9bf78dd1ca4a823b3b5d351fd35914b577af422bd79052fc88b07c5c5dc41cb",
22505
+ "30005070dd6749e0b7796112b78df17cfaaa4b3c36385ab9788a718f640c4e39",
22506
+ "84f396a5be1dfcc81771d2a59507b06df38bf7f694ca189ad1c770459325c77a",
22507
+ "40cefb675119e3fc22edaa4b365d97db9fb366aff8bff82bc81179064640e93a",
22508
+ "7e1abc4257cd54bd3a6f0fa092b2a81ad9d4762fea9717f94c483492129bd163",
22509
+ "d72ac51d8d9332ade7c0dc83a94dde6de34a2fcc25b896f6a4570802d3be4458",
22510
+ "f42adb24f8f0b79868071d0adbd35a2652eb930355928282e71dd0a5eb92fad2",
22511
+ "5b92856bb2195087ffa925fe3c87d119de52c8fbf0fd49df253be57ddf07d2e8",
22512
+ "2fba3e68d11b9bcb5f4da56ecd2562c5990134527b5061c7ede9a00200ab6e1d",
22513
+ "ce337a9082a848b66b64030449554c27a554774f8c64dbdec35c269e4b1ec344",
22514
+ "6bd00b46d45d845b924e6160784a67db1d045197f2cea66b295cc447b807a4c2",
22515
+ "4e77a9dc8c777a93f71a969bd780224c73dcb2303c90e9f2b7be0aa743511e8c",
22516
+ "174b87324818c3ca735fffec4f1b64489be2ceaabdafdde80967b78ddb9a7b66",
22517
+ "7adc4c7eab671d1147c1376d083f5e10c6f538b1083f4325ab049ec3cdd93ee0",
22518
+ "3cda60f2d45193ffc2884fccf1a8638779f601f3a11aef3f3db50dbb1d952eae",
22519
+ "57f7758ca0e5ea7d2849572b01a583ab31b71b79de393c9e54cdb8f66cfd7bf5",
22520
+ "410259e03455f3694a9dd919489e709f09892c58d09cca752ea563c99be2256b",
22521
+ "39aea0820f6d425d3a1d0deeebf3e9f12493a73ae71dffdf146f96e2c2e98b65",
22522
+ "78a2f9b343692669fee367af8679d68c5065c2537daad234c48880ff0e82c89a",
22523
+ "40debe4cc6726d98c864a8dfd5add6e9b1ae0a1f834e523b7ec993938dad31ac",
22524
+ "f380e86c834f5ce03e5ad110137a90792126b288a12fc45f0635c5616a2f8640",
22525
+ "91035204f65a62f42c23e6b9ea866776e9d1533ceabcb64b093612129933ea99",
22526
+ // Defold 1.9.0 to 1.14.0 (engine JS from d.defold.com)
22527
+ "edd44656d3e316bf41dbd5354e4bed7e08a259a21d08814b48f46e5e18ff2995",
22528
+ "8137f1f3620383f9d7ce697993a91c2b977f8299ee205efebc302b2e7cea5f5a",
22529
+ "d56478ffdda92a00e09a7919477087d8690868ea01fee80bd75e4c83ae870c3b",
22530
+ "b2a55b69b7412706dc2874f942df9ac61008400fea33f76da6f442cd68f84b4e",
22531
+ "8d69b8e7aea8f1b5a36c7c61030c1d477e07b26ae53ea6cb0d9a54b38a501f8a",
22532
+ "dfb41896d6489f693be5f0ca979852011946cc2a6e5c3946a163ac209fc2cee2",
22533
+ "2428c586a065e36e102267526fa8faa3b34e2c423f8d4c76711a5fd125630322",
22534
+ "a93ba20101e2c447e55e03be4282f41813d863f63186c9d12df94a2b336f8a73",
22535
+ "ba39f8e2dab0d9ac3a35e44b0a835efa5ec0f20e9941e9e2a1d1a9f3f05c0726",
22536
+ "250549b4306b659d04fc8ab41e46da0c75933badf92eebc3f550516a3fb250d0",
22537
+ "4bff5481922fc999807ce5e547cbce04e3b79c837ed0c1de003d94791a126d89",
22538
+ "556cf399bbfc7929f43d9b17b1c883290ce6ca0b60e5f40748f9228acbacc821",
22539
+ "abcd8dd6f041b60a3614379658e7c4c025a07f742ed19e92694b18c47ab7f0f4",
22540
+ "2219b98a2b7f4f30a5d3651cbc1142a160ea41425e2ca80eadd4593e1655cb5b",
22541
+ "7c2d1fb4fdbb75566f21c86fe553754d149aa70697484d40ea5053c3eb8b9751",
22542
+ "69fb226300f6a079333375647c7d5b4e8a0293d66fb7f0520f9ce5a108616f32",
22543
+ "d73d56a9b2bea1ec1257a6db1db426872ee2d6a049248f193ad839935499dfae",
22544
+ "686bf02fa77c0fd819568bbd0f572abc61addbedd29972090cc42bf230f8f1eb",
22545
+ "43af18b1b736d76856d29b4c390c521518eef552e94aaa09042aeaa0042a5456",
22546
+ "e333f54b561d6b88d07224aec05875d6e5d4351bd3c482c15d32f0beeb0df871",
22547
+ "d3066196fcbb399b4491c713d50a4c5a24ee959bcc98aa7107320f29c522c8d5",
22548
+ "8487f30189e7be13178e27cab5047a2ceca6be73d30019abe12cfdbd1b6ac531",
22549
+ "a70979e5561ee35fea8a6307512595cfef928b6569fec9bcdb043e6e088648ef",
22550
+ "6ed2db84ee98f01890ebe85a3d9b4ed2fa44d4f953071db7824fc30345a274a6",
22551
+ "737bf371e87e6ea1c44ffed9c1d4cf2ff444877eb3d0c666790f25babbba25ad",
22552
+ "e30865a8ddcdb353f1420113e24561fb1f729145f6a90d3d2887aacd1af59990",
22553
+ "a7cf6d0e8851401dabbbd76d2802ef9412758b1de953ac2d86224b71847cbcfd",
22554
+ "0d3b2081144008db26827391e3ee9d95432234e51dde05f13dfef3bc48fb5ce1",
22555
+ "1903209df167a302acbe1b603fcaf0ddad2afc4b837f48561b7101766c4f7832",
22556
+ "5b589934f1e167d07f02008b29369774f450496e652bd5562f1be36a644697fe",
22557
+ "aa8c2a6498c2d59a88b02f9cde2d70b463dda6e68bb0fa5fc3f250c2a0eedba8",
22558
+ "af94aeee57bc0242d468f1a4803dc11abe8c332a2264f9e406432d31d8245d5c",
22559
+ "2211a3195d5fb9299a12d2788b299edf268c674c21fe1a9e79323694ddb4cb65",
22560
+ "e6e9a090444faa01f0b081651392272b587fa26b4b7a81348cd613030606d0eb",
22561
+ "074819a40296ce0088fa1ea696f6714b746c5abcfd4c1768770b4c27e98c4e0e",
22562
+ "8d1ca645f93e848fd55d5583a1e0b7afcb0fb0654760888677ba8e8ba29503f8",
22563
+ "1fd5e5210dc953067fa226aa8ae9ba2afae6f5aa9546b0b38c2216cae1ade8e9",
22564
+ "2200c03fb91b69cea8f4841812210a7d429d416bc1246804684c24e0e68215f1",
22565
+ "876eee7996b35d3b3e9831b42a93a085024172c2eae58f01f876172304022ee9",
22566
+ "eb39f5fb3b6552c7932c7a73445d167e2cebbd63e816e2e145c805ef1b8060c6",
22567
+ "906a12e081ce00e567bb32f919a433a174ec5e179509a2405dbb448aa567eadf",
22568
+ "f39f411c5d268937e9d17c8ddc07164024e213d6a3687345254901021c3754eb",
22569
+ "108eb924165fc2336ba452d2160e30080be467cf047bc8d21129e1652a30a26b",
22570
+ "44bb0094296077a0144daaaeed693e7cec014dd6355bc9f6b9b3bfc3b5ac5e74",
22571
+ "61a1a392195d3608b1a4cfe772552220b4919621bcbc0c7a6ecbe29cff7aed0a",
22572
+ "65126e2d460d071d0bce686ca42257a526e11f3b442ac9abb3a397f0ac4a6b35",
22573
+ "da0bd3d3ae885bebdd805da68a84e3fce11b68a86b591125991dca4c61f95655",
22574
+ "dcdb300b2e6ef37a5dc3de1c5714d56398ed41366705fc17e21c82192fad6418",
22575
+ "eb00b1172ace2e66059e557287db01daab116af2c4ff357f8d65e0ec2e4518b9",
22576
+ "84e71eb7b64b5bc71c5866c00f1fde4afb6a9e15e9a1abcfd04a520247c9e9f7",
22577
+ "c44bc99fdbbd2356a10270d6febbc94430e9df689bc422cc10c3b699f67380ab",
22578
+ "155986819f9e22d2cc6ce0361d38681d7f399a3e6a296c7fba30ab7b296dc55c",
22579
+ "9b24b6be6d735e8c2880c912657f909576286b777a0edc65a0054942b6b1691d",
22580
+ "d23979ede676bbf51b21a70ad9ae859ef5fec22f7c87c2eb0bb2a7603c8d2722",
22581
+ "f5b22c7b1c89b629924cf356e9bc984b0d11a9e63b623ab2b2fe4c8cf0c98561",
22582
+ "e60b3579a8b0985204f1b659fcd75a45c3dea1f4e84236834360affdae556982",
22583
+ "e4085df08a7203cb3d6f0c778aafdb9277c572864242970e3a107250c5f2769b",
22584
+ "36a5d09ffbc0bbec8327eb3afd4b8615c428593b0f653a8b3b774fe1ab21eb1b",
22585
+ "66906dfa3fbda081b0c5858af6a5d6e0cfc265804970ad3ee2cb7e7f5a8e8a8b",
22586
+ "6b019febae41b15f39b151035e702d5be6eb5653f3b34bf92aedd2cb07ce6434",
22587
+ "5b58cc5760878b60e46abd6108ee258c432c6f34f0f95886940d29b62d41ac45",
22588
+ "3700d424773de27ca402adf2cf5777f9bf8fd03c8ca8ed467e7c03c73beb8a6f",
22589
+ "bcf5b98705cc583199d60d5976406029d170620b61ce96b4e37a6bfac08256dc",
22590
+ "85ac338d0a7338804b1267d3eaf9751d2c52a25c094a9f107dc2fa71a231205a",
22591
+ "a49b06bd553b39da53936a43df97e62685b1af595aa290cd66bc425c4dfd3e58",
22592
+ "7c820e863e36b8c0d90e0dc55661c3cccd093608016aca30c3f1a5cba1e90640",
22593
+ "2343263a57e37498cf38e4e8804f835c171086cd12e8de0d682abc751e35fab3",
22594
+ "f57d0b616276f55c5b4c5760f3b8dd51776c81e4b859d295aad5ed6c30d2d5c0",
22595
+ "30cfa5982e474d16d6a72265cff42a3260b001f44c91489e7a6746deffe2970a",
22596
+ "2fe357838111f7383d94dd619e52e7f40602e53e96f76eb7e1e690ab4f8b3b22",
22597
+ "98b692a9ed556ff54ea05b598e470f655cdcc71f7875333b573000ad416a5464",
22598
+ "3f92ed639e7e73ba79b261181efa432184a5cfc919326457d76ba003c6f9e122",
22599
+ "7300eb15bc323463e16d23ddee431e97d207cf1402897551acee5b9a9fbfc279",
22600
+ "b8eda6da78425c8fc5ffaad4dac153152b1b60553632aa0db221a68891d8c217",
22601
+ "f5a8444b6c78cba3599ef8217732238a472fbc638b96f13eee40d4a8089171c7",
22602
+ "304b8af2563b44753d752f7c2ef9af92753ad0a4a5aba7b56c61d2bffe89fbc2",
22603
+ "7b78227f234990f0edd3a5772d03f18374c7b349e06732fcc082fd23e24dfac4",
22604
+ "7a2ebd593c302c14bfa4ec2a59398fad1a97a9136b817ac0a0b9dc0f9a89e1e0",
22605
+ "b6859e07f5959387472ac76e1bebc3ba8043d7ff76cc0f68187ed39740ac4194",
22606
+ "14d0681d89e99600b1fbcc694105cf0c26b0bc082a7acadd4fc753f1381dbdf7",
22607
+ "0aa565110d48fd9111f87c58a0d729eb11a25f3294a9708886a2240163f92818",
22608
+ "478d6bda00a51fb3b12f0bbe74ee68f050b434ca8765a6fec92f99b3a7eb75e4",
22609
+ "702b1c83940b627bd033969dc0d4cd4f9c00d91807706dec8f2c910557474e13",
22610
+ "a16b1c272b4d3ecd7b32baa87f0c72f19ab5ded76e1e8b4a30607bc102bd32a6",
22611
+ "f17a58898502562c964dffe61058a5edc8137028f0a0b8e5bc8dc5b0a4579442",
22612
+ "b9f13567648ca4bf2076b06cae2a5403dc8da42310be7209acd5e6809d3b7ebf",
22613
+ "93356413d4adaabb96207c908de5f5099a0094201a8221f5996606004508cd24",
22614
+ "6ec0e5e930b73565b1bdc091171c75f15c74aca32176ab9f8b34722cbf31fffc",
22615
+ "bb9160994c23ee2ee9b7bddb27a1156d93ba9a57c0f3846133ba216cd3e8564b",
22616
+ "58cad96e43066e1a533433dda5c4c142d6507f142dcfc1d15c6e163458d6f234",
22617
+ "7e5cf645ed66cc8bdfa148c2dbd84e480e8f2e6e4c1b1878a00a1d079e296167",
22618
+ "f20e43705afe39f8068d2cd6d941aec569608699488af7577d6cbe05d0136f53",
22619
+ "a0491cae78c7b7f8ede3c0fecc38e7ae3c2fb081b3a5e089a417764462f060d9",
22620
+ "8d909978cab7c906ef2ffcf85108aefaf07fa8fdda8f7d56b52933b246696987",
22621
+ "ab02032efe76e152531943c024bf90578d911fae0fdb1bfd6d9e58fdd9c4f4fc",
22622
+ "8746f538472d572fe051337582b06048bbe5adb2061dafc06f1ce6d8822a4718",
22623
+ "cff141e228d908b9b10413fdfd198d19d63c0122dc020bbe9c1e131d898bfa9e",
22624
+ "5303eec166e4122ab56c2a2d50d7efc5990719c4717fc32f558c1a262a02a715",
22625
+ "ac2ff0e57739d0cf58b241e5cd66c37f048b6a0d9cee761b925e4a2083eb07eb",
22626
+ "a2725505ee0ed7b92f1389e439323937d7710ef3c908899e4bfebfb22924efe1",
22627
+ "daf6bc62dcc2dc1a7024015ad22a977f4fbe39432e299f988c9fa11d9e1be6bb",
22628
+ "6b448f1b2b349bec7860995a9ef17fde808839565b0d994932b768d9d1c040ba",
22629
+ "ab43cc4b56aa5a9d92cc7773d01776b1e14a0ae99be47def9d98cae4a92fd7dd",
22630
+ "c48c14b05324b1efff762f204d3529bc512bfc017e10c93fb5d7878207a0bd30",
22631
+ "77e1bcd11a7d8b89f2f6b69f812e7b173313b75711ecef4f3690a1df7e54e567",
22632
+ "146e23f07aceeb2147749aeda4eafc7a13e84b1213b08f361f5ac9453e05c8f3",
22633
+ "bef5d6468951394613b32dec7374d48b812d24938af03edfd47fc2a28dfd7260",
22634
+ "e5ca8ef111fc85b2f373829bf0fee385e43ea4aece910af156c84719d59dc7ec",
22635
+ "d5c7f696b1639db3580f88e1f46e6b2e21473e40ba0ecafc2cca7c454559b39a",
22636
+ "029fdb48ed316def31ab777f6016caa7f4ec3bb395283747b47ddb6b02df7ddf",
22637
+ "be69528a54f49f670f92bc10006bb410ca727c659eddb2b59632ee21f8331282",
22638
+ "8b94b79a59b7a047768da2a251c13eba63bd3ebce4dab2cefc492ebdeefa4c1b",
22639
+ "f4ab63f7fc905956fca23910469b33e51c024a6d658861fb9a011c7be3d738b0",
22640
+ "d37c818899a3ec224732be77ae4458acb320a8349b1f1e6c10a0fbecdab12998",
22641
+ "b918e2adeef0ddec10def46d8eb09a5689bf2cc1989b8580ed978e65d6f886e7",
22642
+ "e0f3d314b99a19325457df91ef1fca8836263651fb4f6c9f4c4e8de271d646ac",
22643
+ "6109e1624d2312947ec18af1af936c64aac844e50a02c1bed01701234672989b",
22644
+ "276d3f97a51cd59d8697a4078b9e07161001064df5ac0f9a53eafcc5605da7e6",
22645
+ "17ff6f534d734d4131934fce09a672f35b3222890c7c638e8eabf07ea4f24cec",
22646
+ "c0aa223291261752c2aae0c7b44dd1404dd7c420b0b60e38d255b34e7b91bc6f",
22647
+ "16be05e181b665feece2148cdfe97666c76fc6ffcacb1d24227ba67f883f1a72",
22648
+ "cfb6b4951eebe733e8ea19214c60321a4ddcba77cd0e580a0ff22b0e82f44017",
22649
+ "14560184851fd042681032ea8763f87e0acabc0dbc90d91d96c02b313dbe3922",
22650
+ "d3580ac7e51c0739d55df69a8b2f994715518647c810cc1e5dc06ab3f7b6e38f",
22651
+ "a24026763c41e73e1f2bd8f226143e988876e3d6f8a56c8a6dc0702a576c3c91",
22652
+ "87842dc4e289ad1d00e96009d951a620c0d6c68a3be699efc07167b81627c28d",
22653
+ // GDevelop 5.6.270 to 5.6.287 (GDJS runtime from resources.gdevelop-app.com and the Windows app)
22654
+ "0cd0a70063afc3850f683aa725e7e39b3445a1169efd14413fa0e6f659245cb2",
22655
+ "5d1454a2b9bce580170737a0dd875e5d39ccbdaef6bb57833c2c6221bc2a31d8",
22656
+ "17e92b30573c4ce710d36df0a40a4334b47665c318a5fbbf4393729913bae5c5",
22657
+ "0b72b2afd60626c08fd672ce109e7f41a1f532c4e6b525f7bcb2ce6a99251f79",
22658
+ "ce9063df0c7ae8a49541114f4e67cd042c83dec01c52f3ae5ae579a42d0b2580",
22659
+ "c6bc6e278e17a73a6fad9f2b9731626b034432615f4ad0eb827f366a09229653",
22660
+ "5886e4aaa563baef7b2d036e12cbc5b24be9cf1d83618eb6bc6278755f91ebb3",
22661
+ "387bdea0edc91b1128d9d55648c2b62f67aa60266c0b3525193b7fcd30861a8c",
22662
+ "2aee67ba26d59bce043fbf447993a32d66812a3b6fab82921146fce4a6d2b092",
22663
+ "cd35c9205fcaab8e157219f4ca92d6274f5224ba714d76e2bb3b8a4513694496",
22664
+ "ce99cb6a9f905857c9d4f299141498e315bb379bc4092097d11169c838b5ebf1",
22665
+ "b975e31afce948f58d4d60168ab84f0b89eccf8e8deaeb03aa6764a34fbc62db",
22666
+ "79c86988f9e2107b266b32996cd76ed402e7974c504f9cd4dc1a7e7ddf287ae9",
22667
+ "09f8d67cec20e8a5593aedb6e072c9f9162738164417fe069347c34643250fc9",
22668
+ "76cf02415edea1d5a2c3434508c44c4aa9ebe5dee82d71322ef60132f5b137e9",
22669
+ "1579b696c0d1363f27a69d00a22e0543f99da51950ff14017ab52c63f713c57e",
22670
+ "ff1465559502d2d42b85328825473ed102fcdb665717d10888f9fb2d81f18980",
22671
+ "a16c4aed25d1669616be51ec00f2d9e69699d99cd5d782b4930b8c65f96cd873",
22672
+ "be55d31ad674b9ff9e2b6c72b935e64c8672aad0fff814d89598902048bc62b9",
22673
+ "f1211e9ba371b2cc73b3e0a71ae71ed2f81d97df1abcd57986b009a7ae96f1d3",
22674
+ "9497aadf8564af377a602c0bdfe5026cf099ecc6a24a96c5c7c38e423935dd75",
22675
+ "eb08039f646503016e8ba22d65d7ad53a2bca12fe7dbe8bcb21779aad91eac65",
22676
+ "3ffb20ad10f4c77d6176f49a474cdae8872ca6909e66d8b23951fc2ed516dfc4",
22677
+ "822ca789d57eb2380a994330ebd46daae64b6ac22fc3fa65b88ca77d7df6b955",
22678
+ "74132dbd7af0316f59b6c872eb9adab8ca4351d22cac73ac92c3fddb19952b46",
22679
+ "5ae60a53f44d6ce5d6c89da39d93c7d8c2d1e27e4d4a50584d908d1e63acfc13",
22680
+ "b26c7a3671cc32df417e7b44beccefe42c56e14ed17c86645c90d87b878d7c3e",
22681
+ "57dec925898f0c5c77d04253fe0513fbe10c170fa4c8c30bf26f8c1a0061a5ac",
22682
+ "8a7373ac5cc9ebade70cbb75865cfa5e0dfef79b4b645a33b590dd8a79cb0513",
22683
+ "489f7e3186b55db48f2b9fd2ad77209ae445ccb0c35a0d7c5d9637602ddb74b9",
22684
+ "eb26c07154aa23081896e01638cdb041b10abe79d73a486257f21b5d777c12f9",
22685
+ "34a8443939c25e41fdd77680e7b68a41cd302f65d9c7a40cf29a1f7629c8b840",
22686
+ "198df3e1399b06884328b882207df88ebd00fc6f65642f4c44a07bab5694c7ca",
22687
+ "21ac06b9629688827319d842b32bdc4750e6389e813a4424cb1370fd383ccbf7",
22688
+ "17e94adc50ecb29a9ff64a274d1f52ade4fb2481f8c55bc8724a2b257e19730a",
22689
+ "a520aae86cb48e9335f51d520728fc8c36f47a45dc5b4800af404ca831c098d8",
22690
+ "08b25d89fc34a13195b9af2400a0a68cce9c1b36ad8dca4b3ea312f6fd632844",
22691
+ "4b9a7fc8473b23c981e149f8a63aa3a11ea4034f9a5a7b18796c7e9df5ebf4cf",
22692
+ "0f616ca5e2b9984d487d5572d0c8de05ac6087301693cf8d185b9890e76e55ec",
22693
+ "fd456c68eba47644872eef0faa2556e9a439bc1bc1cf6aa723dd56fe13fa9d3c",
22694
+ "d44471f8b9b0bf9911f634ddf5b3bb40c74a98bcfcdb64b4c306c389a28a136b",
22695
+ "122fdc96f8664500195efd70e6fa0085039fd4f4749c7e10a5bd332add979f41",
22696
+ "fa2bfc9cb8fc5607c5335493813256b1dfa49834b7ad1a684e728a46ebc5b4aa",
22697
+ "fb6c5627fe8e92306a82330b8005af9d73695dea238d3995b693545afae9046d",
22698
+ "b64d76a2c7ee4f3900e43adadfaf21ce51253c9df808bf0cafdf2467a8126fb1",
22699
+ "d84a94e7e0bede70708c6e0d369a0ea7e25597d8de2b1241d3117aa2e8de4015",
22700
+ "262fe7cee09d8511f00167fc0c268b60dde16c08a5b259de974ec2b23712cf9c",
22701
+ "62e83ecd3f18147fa68ad280bfa4966dd90ab565f3459c3bb3119a2a0908bda5",
22702
+ "5c7b4afea22a20191b28c725ea9b303dc184c3878a34ed66823983fa787ebe5c",
22703
+ "a5ef3437a0377bf07f797061fd30d72cc4cb9dffd259fd770f584afffe313b98",
22704
+ "c6330441f664f18690eb32f7188e44da7f3eb9f763e3e3e29115ef48ac28850c",
22705
+ "c1a6bbfbd516db4dff111aaaf4e75cfdf5edddbfc86b48a4007d5d52cd60c555",
22706
+ "47237212ef385106b4f0e8d0bab3eda990a108a72c9da4b9e48126e2e428bfbc",
22707
+ "97be63301290499a83fa9c156717e66dca43f897f0d3ac31bd4b570c9add2f0c",
22708
+ "8bad63f7da66a2ada9b591b0224a700ec05e643210e5273e58a101ca9ec1e986",
22709
+ "c8f1e356fe88a56935669920e51961a3b7f410e4173ee49f59ebbb0e0efe4b99",
22710
+ "17b4f1bfd038c350da9afad202e4545ee47fab43b1233398c7737cc3e2797f93",
22711
+ "3408746b10b4b18dd1f786b9a1a7f816e564af59ceb6c709be5ca140c62d3980",
22712
+ "1e23de8c25dc28c2ddea7c4a3cf761cc0448594e948b8c3d7f60241f27584a92",
22713
+ "24a86f2b6fd81f72c5da062be89e309134808a3c04542e3ce64f47c78b9c22dd",
22714
+ "71ebd6aa2fa24c0185c6f124a0581e9d1395cb9b6c9c9a8fa82a24ad34f132d2",
22715
+ "3b005849e6624bfae51983e08bc2fa2dac17fd922b5c638f48e97195822d52cf",
22716
+ "a80698b73336cc777b9905e6fa85113bcb46dc79b877236eb0ec900b9a90f145",
22717
+ "d73d26ef4ba3fc39d758a0ac611b7ab54c64fb41099af8bedcf047f9a9f1bc56",
22718
+ "5502e9eb63d21f0a787ef7fb13e3d233501dcf09af98ef86b4b6dd23e333fcbb",
22719
+ "8994d932efb0c33d39d24130af5d0fc6af6e79cf94359c725c8983645fcf6d69",
22720
+ "e473a0723cb4d7b6b30e227383483685707b2c7314ad4ea3edab400b4378655f",
22721
+ "724efc1fc2de5bab9827fe480db3d430bb79df42a1cd8e2592f11fdeb222c768",
22722
+ "d616be8c04e0d35a5d608f1bafe14df7940f810350cc353431b47a0559c633d0",
22723
+ "5bb22add266a706c61e4a91f90b5a652769f00adcaad43dab466959a3e42a575",
22724
+ "986bb7cb04ac52474c27655c7c8096827163b4bcb4421b3c01c5df29623625c0",
22725
+ "3b432251da27e5b4d0f8c8e9801e970f7f9931a842503663dd26de779ac55f65",
22726
+ "264616f041ad12d4d5c5571b3b0dbc94097334009415b9bbfcbbceb9ebe0fce7",
22727
+ "01cb0f482d7794245057b6a4378cb315c0007dc2c92ef5435c78dbd4e777da63",
22728
+ "7239f07320ce68ee3ff7d352b8b9826cdd2a2180c99703d23642eb8c2c65153b",
22729
+ "c63cd71c4783e991729c2f920b732714d964cfffe6d01426448c52947fda47c7",
22730
+ "e33dddd930be137da26338cfde771eeeb549d1743b352008eac1bcb2be0b4538",
22731
+ "6bfdb1dea8978a16647eb71c24dc841ac9f9771ed20074900fce6ae9e2716ebd",
22732
+ "13a11a148cad94c11732aa86860d1c48af85fe5eee7d6394a3b492a331507dbd",
22733
+ "fcbc77888729e74b68d48619a7e50e65c1a5b0359fd2e239c59bccfb6d39ec48",
22734
+ "5bf60152d9f643d260765d9763c1963204987be8dbfacad93a8455da097bb761",
22735
+ "7fbd7bb3b1aa46b10a743fe2f8a7c3b0464562627f6a52e691819806b5cbc9f0",
22736
+ "bd72b1b878385ea472a75c0b6ab3fa3b00ce3f831dbcfccf677c8209b3ffd319",
22737
+ "66fbb6ffe7963873d96b8144cd68397aa253d55217dda597791a9f591e8c0122",
22738
+ "9b3f8fab06732fd15991c3086096cb3db2d1db01b6a1a3ac80dc05dcb3bc026a",
22739
+ "7a3e877c84ab8a33f677415b2222ad82055640f1255d2c4377c81da10b7fb846",
22740
+ "2baaafc67e517d6613be72aa082a4588713cd46adf7d8d0d8b7373f8124ea30b",
22741
+ "d2db841631063c8282c52853e6d2d11539dc804f914cf7b983589a42b26a29cd",
22742
+ "3783683ff0ef4d31250178456abdf77dbe31c4f096f71dc047d2342447a414a1",
22743
+ "fa2cf6ed61e91a80f46fd96e2b073bc41ec5937af37fcca94f40d538560b74b2",
22744
+ "3a859a9bc807f9bdca3d2643fa16a60b075357af540c67df9ff6194d8d067d01",
22745
+ "04c061b2d36511676f935f6c41bc8f1553e74d3854a60a606bcf6d3065911bcf",
22746
+ "6f6e941286d6cd4bc8bfdbeb63abd51cf6a9a9991851df24bae2d2802edcfb65",
22747
+ "e39bcb53d5228a2a168e1c896d6daf3eb9dd6b0ba7edcc5506497124268dd67c",
22748
+ "6a7d0202f88dc0a33e54966f203aa5c050db0f2cc1a530d60be2b28389a6ca89",
22749
+ "aec7bb227bba1158eec3506866d4a97a0f4026d551912e2e37d646034702850a",
22750
+ "5e100bab0ca6e79c1a857b5e9600fd12fbacdbe701e5b4ff66251c602a0dc1cb",
22751
+ "5a21574dd00194f668837a4f8a8e3f2b968082ac7a4d5b02a6496118880e7d33",
22752
+ "7d6d40cd4900dae95bb7b9cbe5df55e30069c0a6753502e56bed945a4c0ef287",
22753
+ "cf3e693f3a22aa42d4d3717db35f0495429d292fbd901fe943efb3bf37175bad",
22754
+ "32b744c4e26088225899d0c039849ab0e4c26f82a84c8e875319b3a65f161fdd",
22755
+ "43518fffd4b1c3a39f7570392f6c2db9516b9c9418968701f504aaa62c2c7c99",
22756
+ "3676d3d635da8639f89237f0a35e8754aaabbd0faa056a0a10bcba8de6d65de2",
22757
+ "144163f70bd8ef8233c89774529fb678e1fd3a825b87043718c0444e65bbee5a",
22758
+ "6fb05d02c87b38a4e8333626aaf8b7948f118adca4cc5bff8d62f86507e65e32",
22759
+ "5195637cf0666538762274dedc31e5c3cbd9fdf92ecaeed98f7308d90f2682e3",
22760
+ "ed927f13dc249a320546aa8a270923db94299f00ca06216141362560fa1862b9",
22761
+ "ac206f029ff9063a214ee137d38fdac49bb21661cc6fe1ffa82de60ef469734e",
22762
+ "695ad258f10df420c7ab07364981ce757bede545f9981f9f5146944d3e117a82",
22763
+ "9cf83ad1771f374ee52aa044655aee773d09bdfec0a64bc7dce555e50f6fbe9f",
22764
+ "7545a04e95b196cc8281552263ec890414192494cf6cc4ccc08a7d1398f9a61c",
22765
+ "cd40c41d8789eca7f8b1c3e8ffa6900d541525658b54b132fb059f16838263bc",
22766
+ "f552f00f066d5340eed0dca72f01380de274eb9eaea802c11e2e4a7e73a6ce44",
22767
+ "61c496f541794cca99668cc480f516a07b7c92ded33d9590064cbd6a8249806b",
22768
+ "51e9afe749e0a45972405ec128727d9cc8fe1a762b41d54e86da1dc779eb7d94",
22769
+ "66ad7d624cd9ef1cdd5429bb859639fa2f2e92ab96356f5cea4d686153a76539",
22770
+ "a688ef800e7c195214be975e2bd1c1d7fa24aa4ad67316cd8498210bbbe9f913",
22771
+ "5a7220c37cd24faa349cedfedafd36d62988acd913236e900b79c5279d45d1cb",
22772
+ "b1a85a97b4ff43b1eb213c23c9928c8b09e85953460bb00addd50d8666dc04c1",
22773
+ "7f2cc19d76732de0134a1c7bfcf0be280816c35fddb3b4fb837ad4d3a0c8f31e",
22774
+ "b4f710821a1bf832119ee1fd79bc46acd68d252419a1bf536b10568f63a3c203",
22775
+ "ec7424a9f9b1931cd60662fd628a231bb7aafcd2f1d50663fb07f38152d3dfe9",
22776
+ "48c4f9bc13e79b8693af15e4a4a6a05a40389d66643d2e0c420358df5fb38c6f",
22777
+ "832acdb544512d14f9fddb3fd8bc7208337fe2c76ab25014b40dc040f7a44f1d",
22778
+ "4a553732344ead0ed04da0d40b4c209beaa88cd72cf12ea398226475977f0b4d",
22779
+ "8cfec8f507365ba9bd19c51a8a9de1ef854f51f2de3e916f6711d92f1e0873b6",
22780
+ "e06fbac47a698aaeae8c5b5fa9d38ec5047f5703e329a8b36d53c317983037fc",
22781
+ "0ba64e6b3dee67f6453b6c390f3e68a75797217cfb35a57bc776fde881d0d14f",
22782
+ "5552c71d978d56499969a64c4e3f2e6f26218e4f7bf9d62d58cc9ff56a26d7c7",
22783
+ "fdf92c3a4efa8008c45c69c9748b0fc1c5b300237f34de2c64bd191d2a9b40ad",
22784
+ "ff19285de976732cf4c9aa5b94e780aa8216ab471916097ef5cfcfd284d7008a",
22785
+ "585bdc349d2eb31151e9a1029e50257570c8477ae6f00e7097e1f85b82694512",
22786
+ "ca743eaf4177ddc8ad91632564f962df26f21a06d6087ea1f83db1a32c3734d0",
22787
+ "2bafce2e789261738bf4bd91d5a34ccb63ebf948683d782b676fdd2c7b7b5114",
22788
+ "cee06b5b9839d24ccc9dcb3add76f061c6b5c035c2fdfa922ad5c3073db22554",
22789
+ "6d3eb2f0551c726b3ca4c15d174eccecd88d4f2785e3aea927f2a5a75125afb0",
22790
+ "6d917327c4a5fe325e61e36f232b02f2584108e55eb01937559b9d75c705c7b4",
22791
+ "2707ccc0684ae7e80ac1efaa2006a9fc67c4d779a145534a0308a4c81f28d9c5",
22792
+ "9c65c277e346842609c4b5d40bc9856a297865e13b2f11c55e7f989da66b0594",
22793
+ "673725e4a7a31b3cecb386da0c947bfaec1116811abbf5780343e990c68249e7",
22794
+ "48efb957a2f03c8c9e964d18bec700b45bd2318e24c880cc43ad32fc3ebd464b",
22795
+ "af82e38a4aaabfcbe2ac972a68c2c31e4abdfc464d9dd7a4b8672c6aaf9e41a4",
22796
+ "9e79b689c6c02438dbc8d5ba8d016eb45f759647efda5fc72c9a3fee5d7e429b",
22797
+ "8984d073869653780ce71a6cdf3c6f37d052985f61e7e292df37c8b7987c7534",
22798
+ "0962210e02d94f1a9d0b7ced945bc7a347943fe388513b102fe28c9e2dc8b15a",
22799
+ "5413e05cbd20669eee1bad63ef224661fe18ec918daadf5f7dfc3ab2034052bb",
22800
+ "5913a5f06904210e9e6f3a85e7b6e00348f92be23f34ff36c51446c013bea71e",
22801
+ "d9d4969e3347d6d1f0da8b7ff78d969dc5591d6e45e06c0594c7f8b06ac28035",
22802
+ "c0111de5a2db4b45f385802e166505799d66577a0f829acfc6d9d7572a457482",
22803
+ "4239359f031ab55261ae0e2e8d5523e748bdd7c1d6097244ac5e3e6733a546c1",
22804
+ "3fb5cfa6df66a275bf33d052dfd8259054308775cd9904d62ce1d613877b033a",
22805
+ "0bf4320dcd8dc3946776c8c5a169b765158c80b5054b3a3c4848623cafe0bff7",
22806
+ "11f5430f1f0bf3ef37eac1f13512f0adc81bac65ef27ff2c176e7d75cd8719b3",
22807
+ "abff7110d7e1a56073748346230166e84c7be07772dd8571bc3033e6cc4672ec",
22808
+ "3214ce83826fab9abe08d213dc0b5f8ec1fb23beb334657177482d572fc8409f",
22809
+ "c0f4d669c58c6f5421d78400b00fd952fc8018f1d6a0a5842f9ef9b84a75896d",
22810
+ "f8bff10f590341d795195e934bd830bbbf5071aefcc72d169a7443f9697326b1",
22811
+ "fa3fee1cd7481ede015c5cf8c7e4c48e333a269823c5371b8775fd9d241ee5f4",
22812
+ "f53f8b1dc4d0edceb4d44da20f093f2011d717f1c56eb85915690c23350870da",
22813
+ "4d62328cb2e42fbb30be0ddc2a0c5c6c9fe6a82d1e13013ee4cb62b100be6fd5",
22814
+ "b5c8e35ddb7260556f8458bd0db6a96e3ebdcdad6388867356cc46fb99ab7037",
22815
+ "4ef5572be79d1bc0715178a69c80824c57a8af4e0cf27ce78b9f85236d352ebb",
22816
+ "7977e6a8f9ae2bef3d8f2e46018c01995b88f5bfcb05960dbe75f8308a25f6ae",
22817
+ "0c6aa39162c9b53701c08430ed5ad8319de708d0dcf61a6b9599aa28b4148a51",
22818
+ "a4949b10435a59b9eb8cbef82c850de251d3a0b476c38a600d700fa3784ed1ed",
22819
+ "611f6225842be6de16368132ac58a6a6af3cde210da45587fe055d94ae1fb991",
22820
+ "ef1c3f902cf2c4013f826966d16177cc7473839774ec7782918da24a95a84cfe",
22821
+ "4bf6ba83d194091711dba102f30c68efb5fa2b94c9195d84d8a891b6bc7e32a0",
22822
+ "bb173437a735fa1efb3988f34ffb84a208b4a722e5d8ccbffef05e2481e637f9",
22823
+ "c5d1af730c2eabdfd3ab409019ba74a970a9c9701f0024a7a9e49cd84fa2e927",
22824
+ "37a1052b9eb2647bdd23ec66873e6c891a4c81ffd4b9168519789d50f7cab841",
22825
+ "055d51cc69ad79107e2677f941fb3e0aaf3bbfe7a3fee55fe679e6738512ae53",
22826
+ "2afe47d232a66dfde55e08043eeade63cf837c80f6a61d5687546aa400f825ef",
22827
+ "0af0740eec63783df99a0dca4baed7b6377cd009ad049b644073bf3ed6c0832f",
22828
+ "9a0770fbde33f28a072aff170c1efc140e14eeca5b29ba9b8ea90ae823250763",
22829
+ "2372109caf69e399aaeae297de8c4abbce201640fecd2f44e7fedf82c48f51df",
22830
+ "3b6b146d5ffe4e8a65baf773dcae0f5ce9ea960d5422308a54642e99a7aef922",
22831
+ "0c536a97913024e3852a6f374d5856364541e33f5715d4bb0acfd7443f2b79c0",
22832
+ "4afcabeba092f05c01bcf206fe4d67522123df76cfb88668047f328c25aadb54",
22833
+ "470805b5dc4346d82b5723069d7f936c461f8cabc4505529b1aa01d45a8825b3",
22834
+ "7b1706948c6c7df44c063d825095038f442996a15dffaa79def5da42e97ebdec",
22835
+ "133c5f3a89c8c6a384b8c078d204947c8eff2ab3054d4f0d6b4e7466dff5a0ca",
22836
+ "799ac0a4da2c38e8d26be7a6f7a119d456b5500cbd2074e937fff0a1bdd65acd",
22837
+ "d1b400c77ce9a7f1a0e5cbd70352f11b9f5ff0c9f3a5f3c1a81fa3444a74aad2",
22838
+ "097e91d8fe934098341c024c30c525ede526722b4ad99cc038d902344e490177",
22839
+ "0b97ca18afb5f34905b4cbc16f7cf0a65137ab563a9aa4f72f1a3945d40cd50d",
22840
+ "c7e680d3c0f07ffa371699b919e180b0bf265b0961f070fbf09afb5e1f03ad76",
22841
+ "3f1333f10dc61c0dd5857f56cc52100c65091ea12bde481f22bfe05e4af48229",
22842
+ "3bd539b6e9476fb2059b702af226c9c6922ea1dec064aa6c9d1c3426fe87ddfe",
22843
+ "d74c0d30ed0a818bfbeff7abea7e38d2e4c58bb8dd811c7b178d12fe8714fd5c",
22844
+ "63d6752bbb9be57a8f19b73bd0b89ce1f95e932d70b43b1434c406f0cc20ed23",
22845
+ "e025bb92081e07b7a56f537af53d77f55b9fb4d8af2e3dac50df812d7d092f05",
22846
+ "0a6eeb8765e9c09e86d2c32efa098e12ff3da4494cb7f307608ebb216317db7c",
22847
+ "ee3ed6926baa3c5c110d148d96f40035cf8d859ee306665f0d12e06948001644",
22848
+ "78c56d89474ce2b323a308d50066956b6027c4f8507655798a51a14bf6fe66c9",
22849
+ "ae6defd2c34f0b2f9b646a428840c958507aaf9e99cfa41004665d7940080acf",
22850
+ "b9307ecdd7c10bb909f496f926103fc9fd2e734e20cef1c9e1c0486f38b9f53b",
22851
+ "b419f5ed46d12ba61721ec48bf11393dde06b095874e0635f14c74d27a3150b0",
22852
+ "7ed0cbeac796e399223135b8987336c9aec7ce48bb1b907426ce40a8271fa1cf",
22853
+ "1c459e51ac80a7c21131e66e8274493973c9fd9c323133ee74747eb96c38daa0",
22854
+ "dcfe4638e6135149a6ca564e5001e505aa7babd059a707059a98a450a2521ed1",
22855
+ "96b20d9c1a28308dc5f9606cab9fac6640fdd9b1ca2917c4cddd85c8b735c85d",
22856
+ "d8dfa5dfbc98600696ce5f4a90bf7c93b20d2d908f737403654c39cda5ca6bb9",
22857
+ "02b9bf46ae7f134d2618f9d03bb7db2ecf4db0f74f5cae5f1d9bc9c6f857ac89",
22858
+ "b7747116a4b4599f26b3a118eb3a35511578b4f741bcd865db3f8614365518b7",
22859
+ "4b63bbf75dd33cbf0a614d60f84df9bc119c32b546b07069a2abd9d48100378a",
22860
+ "e32186226d4a6ac9def284033ff624f7e5ed7c66dd3c118b5ad074fedda1c44d",
22861
+ "8bb2952d2ba7d67e1414f8df819410cb0434a666be53f671fff75f68843d76f6",
22862
+ "f3ab54e2feabfe8bd37928b5f400bc10230dcc278c7e70bca5e025f63519d960",
22863
+ "bf7b014dfdb62e2ccab0e4017387b1c67043964d690a881dde09e1fa1ee4a002",
22864
+ "33162e88a46336dd87d2257ad2a8d98d4af9e370482d685dde69b712122ad86f",
22865
+ "704219c6665c56240d9895ead297e1bb7d7330beb4c02d65ceeb0766fd52cb26",
22866
+ "229d5ecd60381cf205b887c281cd6e3d7261f215b98d4388c6c90d0ed68b9fa6",
22867
+ "3ce17ddd4a6bb4ca590734e195d3c369aa9c0b95ecde86d87f27af9ba8b41847",
22868
+ "53569cd70e3780db8f39c90ef49d77141e297f5b7e1cdb5a8bd14338680ca869",
22869
+ "17bd929af38df753994ca76e77d901c27f5114c5ed55962cf11ad38406fbbde8",
22870
+ "98a67ae5813ccb9444ac7923a59dc23b5b402985ad62dcf38e543f6c9359ab80",
22871
+ "a37cf557ce51f29fe8ed83ac40173cd85d82617fdfdbc188054b1743c502f460",
22872
+ "9dfa15cbb7ba74ee239eabd5b4828f429d0c75192453cf93393214ee0d387817",
22873
+ "13767d37502d7b7b72296eac9bc699d083743de85b7ba17557f6842fe789b857",
22874
+ "56887a9d698999dd6b98c1d97857e6705e0f73a7c2f086c442ee841bbbb3fd04",
22875
+ "1518f6ba2d7b9060801824e085a7b5c57ecfb7d11ccf3c64a4ae915d0eda16f8",
22876
+ "46e93b6c10a3c131a7606e4cc2c1669ff8a675eb5f6359fed9902f19f90ed1d7",
22877
+ "27b607e147b83d8ab48942faaa63a34bd68ceec46885735d7006d081727900d5",
22878
+ "4b44506664d08e41c2e97ee06a97ba021dac3c85702ea0d48aaff8f39b9467eb",
22879
+ "2c8d1cf7a022efd74cbab9bf1805076a360f9fdef56d2e5eda296ba3480e1927",
22880
+ "0c736ac3890192d7d1426eab0272a30453f8b357cecac35deb9576ad21a3a4ca",
22881
+ "4e08dc60e8d337caf0db108e06002fe27751850592f1cd1a8ff6e9753fad4de5",
22882
+ "6563be4b9e43622774cc3c3c7035e6ea17727ff9ad02e46dc2758d5dd6c4863a",
22883
+ "20152e64008b4709fc5b8ff0709027579a23af888823943cf16c13b023aca384",
22884
+ "9d18bb872a05c9d88245a1bdd04eeb4ca8d9b400cf563bf10c2995d83b03a8ff",
22885
+ "a9a5ea707e04f984c74c7ca3bd7c6292b4cc39323e9c5bc0ca73ff41a95ada63",
22886
+ "530dfc5cf2f1a1f704a8b315b814c73803a4acc9718c027e38e5c5cacd0a2eb2",
22887
+ "df549d1a636bbc3ad97267b75c7168271ebd8d8f799bee6a70de3f066d89615c",
22888
+ "5416fa5799c240c6a911303a9b8fde5b2da7b5add078e10f5dec3972b3c51807",
22889
+ "778eb50aa7e6d7edadd7222228120e2ea3e4bb287dab338afc1055bd3cb70527",
22890
+ "897418a8efc514bfd466e365bfebfbacba681eced8b54f23dc84de2653939f68",
22891
+ "9bd67a2f138ddfef980d4ba1292927166ef0f739f06202e9c0ab14b050c83951",
22892
+ "6b33b3942246b2c1d3de8485dec0ae3000b20fb22635b38d4560c4dd41e46958",
22893
+ "9bed86a3bd9a84eaf0a4de6f4012c56dc6ab707056c37046a43e58b9aaf76e6e",
22894
+ "5542509c7c290f2c54519c71aba51ca508dabeb7ca92d6ed0e3fb246fcdf4478",
22895
+ "24f667daadb0c4129badbea810955e1a776b24a2316225301f1f2698f80cd983",
22896
+ "d1733e2ac8b8d495fd8e948b96eb49c3cda3cd047bc2eb2889c9174be1dc88a3",
22897
+ "674a50fb97afad0aca14e80a37ac51aec0596cb4d9d8016ddf7c9c382282df88",
22898
+ "998ce0578bd5bcc0087d4730a2e754ac536d254c2b206b822433a1d664dab093",
22899
+ "05535108be03c4e156b47168dcff2da851a0c643e0b34bc8bc5337989c6ee566",
22900
+ "a482b76bb9fc7107a79d792a82da29820c5dee7ce67b0437d47972a91804972e",
22901
+ "3a201270550692d3c18c2392c79caeb10b69ceba70f3b38e0691192e05262d51",
22902
+ "c876df4745e1dded98b7039fdf9dc7687890ea538011c1beac881c4f91476014",
22903
+ "b97936088dd82c7bcdb75ec3566a168eb311528a65de3c74853f234c9d235f70",
22904
+ "d205e87e54d68a2684a744dacb598874e04dc6405b57df0c049007dddff3e3c7",
22905
+ "0649f9e12d463c7797a464e5d979d3cc0adf62cef5bcb4ecb335ecdec63a89bb",
22906
+ "4e40ddedfaee8016aadf091ab571ee9bb16954f72d2e0cee5693abb21c17646f",
22907
+ "7b99a984678b1c763a8b8b66e49da58d76f6227280e7b8f302d99b22c2e65758",
22908
+ "04cce362692d01b721c422ecaf918105c4c27c44114bc29247969f5828fe021e",
22909
+ "be03554646a41397fab9061b3e764f1f41399af7b9f49146b43eb5a17f41bed7",
22910
+ "153321c5de03d425bb174e9e82b1b815ad14be7578501b1ae9d1f5cdaecbbd85",
22911
+ "c9f2e932806fdd96c936803a5cd288004bb5cd70953b0f5ec893989d7a9eecd8",
22912
+ "e631dc9b09bdf13d3f4d9d23a1d6bb60750ab84fa445afd857b9e1c0aa3b9038",
22913
+ "1ead081c0d6f95070579d6e3c8b606cb2fb95073e5cee4ab4bf2f44a8f95d3f4",
22914
+ "b133997943d221dc87e6d5d14bb1991dab244313194d7eed9f3d48706aa15e20",
22915
+ "7f315b1b527ecfdd3c36da865910e326f9cbe6043a815bfff43b5c92842cb5c8",
22916
+ "b6a39bcbd75edb38f7491e1d2da9a8a7033218dda0961065afc4ae0215e65ebb",
22917
+ "17159bfbf209d3a6bb6d305201d6b5beaf3705dd30e245c346bb2f9a748b7e75",
22918
+ "56f715a7f641d9c53e18358a594245edfd68dd0355c9daa02095960b8cf561f6",
22919
+ "c1117f5bdcbc5d47a43b50af02167b9dc282208d192e492ae49d1b6fdcad3cb4",
22920
+ "556895a92b4e5f48713cb5c66ad0f4e60a39db6f6dadd69a324413b8c21e8a4b",
22921
+ "27628c828f263f66683b3a138d36c5692b5b52b5e42ccec3bae2b0640ef7f2d9",
22922
+ "5ab5ff0f2a5bcd82eceba9d0b4e5a9f0cddab2a02c789769cb4e3a3e89a575cd",
22923
+ "5f98965051fa41d8e0336ec5273fe17daa73147abc0bd3e8a18e0baaca7e1cdf",
22924
+ "74feafa90269c82ea79f17a789c6bec0f5ca184b0605e2bd87e153ead1a572f3",
22925
+ "09462d3b2cb6a875efaa0949a061654ade93354e1fa4ff84146ff72f74fddba9",
22926
+ "635f205ac8685257aa44af18323a4ad4b0f03eac8bb3031786a7dffec7af99ed",
22927
+ "b62c632ade5a67d30d9ece16a39e813ec5217f0a453a07d850c16a0f58b03a4e",
22928
+ "15ad33f5f06f30d5242db6c9cbd8cad31c4639a9e33ceb3bbc26c2eac3017a46",
22929
+ "302eb9f2b6f27ad848b782dbc113a84da85184ad4d43cb2a7e43927ca4d738b7",
22930
+ "e3b376c2307ba6a88984cfce65fc1c1f2dc3463843080869a04cfb1c61c28637",
22931
+ "53a91836eb9e9af7f2e678cab6b828eeb7f10ea7cda1ada9cbe2da66a9042f77",
22932
+ "e5e592e6a1afac9d47eb9649b0c76ae16a3ad1d7c9017a8c9f602b0c843c280f",
22933
+ "092aa78c27828d2e55a825c299eb797b53b513f0495b07e89deddda3044b3a0b",
22934
+ "cc8c684f7194c87bd86729f6592f666daf15eb0293566ff488a50802e311dbcd",
22935
+ "a0ffd7f84a075473d0749cfdd05d4321d2d4ee3ea4f3aa8931e245b1d0440b60",
22936
+ "2722487ec276b79829cf5f4655dd0a12d8821d6eaf47f590c7d2d1dbe16adeb8",
22937
+ "91d6970c88eebf95112538da9655f8ff22e386f9df3cc259ca87e2995b2b90ed",
22938
+ "0caca23374870e39c365f2e065bf93c2754dd4ad617ce0c4002f6ae35f9019e2",
22939
+ "1cc723bc914216d17edb359a71135333a237b87abf77fd901d4873fc78fe1f50",
22940
+ "e88ea02c41bfbe55f2bbdb8e9be0ca4f69452213b6c4951a86254c3f7780ac90",
22941
+ "e5156b68cc7723a70be6d500e6d3324aee3d274ef62dab3f190d4c48333a63bc",
22942
+ "354dbd65f692bdf1708c672f0e4df3a13afa3dcb161f6f0c38862b0b308acf8d",
22943
+ "e4883c6f9cf74d1e5e780e15f9e65a9b470cb99908aa12479d4ecfc9a1adf622",
22944
+ "abc33bfe4bbdf03f20434faa794df006b4e4cfe5eaec65e515c20725e88b0a53",
22945
+ "265d19bc516daf0858eac156e5e59f86f5c1e9966b3845578bef96aee8106e13",
22946
+ "92af8490589b55d3b7da03a81d3c9e9bdaf84b3d0ca9dd32a5af92edf0b7b59e",
22947
+ "52c01625e7202984ab83c835d9ce9303742695cd5b9334915dfc701dd8a46575",
22948
+ "ab26f786418dd8f4e7684baf036f37a2e45683aa22cfdaa6cc3af7e2b948391c",
22949
+ "f04ab062134e7793741388152fd0c50b346e3ebcf60c00f0aad34f352a4d6ba8",
22950
+ "836cb4e941fe10efb65dedad1aad51b7f2bade495ee7ec1a56f85abe9004f5b1",
22951
+ "82f8e1a7039ff2bc8cb2d987e586838ba3f960b3b45c962cda151b1af3206aff",
22952
+ "250d4fff7fee08c8e18bc561176dc403689c1c60d7babae094ecc2442febca4e",
22953
+ "a3997e2b30078d991aaf969dcfdc8e82d02a20c46239eda09516cc1e0c03aa41",
22954
+ "92c1cef7690447ec044a2401aeaba247ef801dfeef660ae400144c0db66a62ea",
22955
+ "9e593929787b6da15685b9a7707a203ffc3c18da1b96e2d980354a05f7125808",
22956
+ "246e59fe074d9de9b7d8010112123baf7831f496c5d0522de6fe4532319b9e30",
22957
+ "59d121ab6a43b9b87cf3afb85c81c64abd75ac13620882be734c82d000f92172",
22958
+ "19ba54b7471e34e605a047b08e7ffe8f0df4ea6956041ffb7fdbc1773fc34a19",
22959
+ "49a7a56f21075548ae17a00e6523f4ca1652c402774f0f9f610a0dd0d14a4a37",
22960
+ "de17c860ab3be55f237b9cb3777baa52085da5262c8abb28f027832160a6b76e",
22961
+ "6622032033e34709db4f216b5f1bf27db671db6338148afa0330e8d9cc7affc2",
22962
+ "3afec3488c9968096a705262f1096c71c5538a7250041777350405d956d04753",
22963
+ "a9ce78dcb828edba75648aede49d043ddd49aead28a82f31b3ba329c505b9209",
22964
+ "a4a838aacf9003fd90b92cdc5d2ace40bd3d2ff89915d6a3490aa0791a19020a",
22965
+ "a409491dbefb304542ff87c1d320809fe1d404798fe8b1c31a706bce3b1ba393",
22966
+ "8dd6bb5cacfe6ecf2327942bb7336b8021f3b3d8ecd4e25646a4e985e810f961",
22967
+ "67836f9985e28d6e8e577b6b3224952accd1d49584cf6cc94ee498c28ede1e7e",
22968
+ "40ac8bd227ed627f45e5d99a30b14d00ca287a1b4b2dc976f232c8f592b3c37d",
22969
+ "17e245390643f62a1e8237b837a1573cdfc30ce7a5160a1087bc00189054354e",
22970
+ "9081f7dfecb110927c74be6bba5ce445a52cbbc475c95369e17af79f27183e23",
22971
+ "e1e24ac7f42a26b12d4997f7385dc4cf5f535fb94ca0783a40f0889c4e27e0fb",
22972
+ "28cb300d373361dcc91587118422e76c6a28ff1f53341dcd082e7784cf45d4c9",
22973
+ "a64c978eba1f6b93c26988211081818800e01f1efebb6b78a861f0cd2d48e8c0",
22974
+ "1ac7dd217be6532e044d547731118ee761cca1f919dd309bb66b6a4cb41acaef",
22975
+ "70346155677df60dbedb457935cde033b817fe937ebb2635e3d05a5d9e6beb50",
22976
+ "8c1fc88c94eb46e4206147e56507e676c821211f7418e92edfdb1bec50ce60ae",
22977
+ "11cb053ca3f562c3ff3e54e5df542dfd5a8435cf7f06c7f95afdc304a4e8b7fb",
22978
+ "2456c8eeb3af8412b814621d9c779a496721f70112beddf8dcf80ba8e591d286",
22979
+ "5bc52c3884093f884ac16dd9e4a9fe3309dfac7731b1f0ba1f9f65903cad339f",
22980
+ "753ca0cfb0b2917d0d1ceaa000bd3b644563eb34004c92ba211c436e98b240c0",
22981
+ "f7c9d3d40fcbaca85eb8eb4bada281489ab8fc2c9f742162c8cfeeac81a4727a",
22982
+ "c76a7148d318d866938f027f8f0b515b213f1a85738e29ea5649f3485c2753e8",
22983
+ "c227cb725621b7ab7f7d366540f7c30e93da9002f4e55dc67fa40143e72b0a99",
22984
+ "e0fe1c69b09c4666107b2a10a12a21ff07dc974d0813492be75cdf35f9213245",
22985
+ "9bff443c020e0b807f7fd3b79913396f1fc316ac36a9c81010a05ef5179af9c7",
22986
+ "5d25dd117ca28fa1e2da7ba4d053a9dd348ea7bfd26f81b8d7a265a39de64dd9",
22987
+ "4a8d40ea7a1f22a23faa7c4c13cb936f4f0911a2a4b876bc2d4217c75f556a06",
22988
+ "951113dad1d7e002c3f7450d9381cec60ed6848807638e584b504517c927655e",
22989
+ "24a29a09251898ae3ff5681d8b32f9385eb5345b2684964ecc83d22cf4bd49c5",
22990
+ "aaf66a0ae371933cc1036e1957d1263d11abf8a4fe72cca255aa8b115ff67ae3",
22991
+ "7e803a171adf8e8018a4a982d0d2ba60a51e0386c9b43644e8b1d7471ae69ae8",
22992
+ "d69181a4df75929f8e6a10a79a87a9848a013fe732fbbea9be1e62f2342fd630",
22993
+ "6626f4aff5394729258a13c64fe12809fa20b41dec81071b6f1b94237a71d7af",
22994
+ "f772a72a5bad1d838d932aa720bccb960c1ac2f39a77a1cbe2e1c60c05d24109",
22995
+ "032e29b15f2fd2751a9bbd466c01aea0539711ab379af0f096ec91f87db5e8fc",
22996
+ "f9ab6b1458c217680d2acc51bf9e6cb874349ed42566e3118d3ca759770b0282",
22997
+ "35e37605494490091db0659462c5c6078c02fc528c3539adc0f3b3a4c06f0514",
22998
+ "9a287fc9d0b9036c8edaec3b9ac763d4257603eca80ee76a44913bfb0fded4ad",
22999
+ "a317e62d441499cc85ef0ac392aa5e7ca15b13f0730c1427b90f3fdeb500149f",
23000
+ "7844bb13a521faf52a45679dd8ac62e8268dd717755de6ee09659a52e473a8b1",
23001
+ "091d9024c3308b455f521525fbe41f1550e50ca03947d74487e6f88c85d42af3",
23002
+ "2a3d85896c5489cc53db3071512ef2deeb316bd462e67b405a5e5cf9b903154d",
23003
+ "63ef25642616c6dc4d72cbdf4c4f08c953797b3b15686e1cdf676e8e6624dee5",
23004
+ "846bb468a7dbe511c4f907a70e1f214e309abcad8217ff161743768158d53336",
23005
+ "ca5719554d2f60990682231e799dce7e64273175ed8eb088a7476a61deecc70b",
23006
+ "68dd8bfc9755fee980d5fc53bb3254af58bff9c0bdf9633008b3a37b1de19eb1",
23007
+ "4cd7e7a801c52c6dc09cfe3666105977dbc0b99e5eec2df4308db8964653d704",
23008
+ "b647fad1ec129e3c96919984785d60e23bc895a175c023fab4be3d7dbd02c3d4",
23009
+ "9fcab59583842ea3272684116ecbc2b4c606bee5229b11e67c1b4328dae20098",
23010
+ "9de4dd67e51696e3633f8e00b16adb291ee6743abe3a679ea810a9bbde61d17f",
23011
+ "511e936632505e2dc6fd0c5ad89bc70fb8a268aae19b3ab311878caa7f9b8b7c",
23012
+ "3e0b238b119c24e379b64b8dc2ce67053d45be13a34e3fcc2aed74c8f2bd52e0",
23013
+ "5e5a8754017a06eca205e5a536159b52f000d49695fe9e9862225e27f5e42a23",
23014
+ "4aad21981830666bb9a60d70b27e7051d761d76fe7bb8fb51417834f1f3e18e9",
23015
+ "39abb9304286ef59e523ca897a73daae92a063b620033243129205a88bd34d15",
23016
+ "daf07b1eda14733561bfb07409f683027717410dfc16293af3c80f89689d8730",
23017
+ "3602909b08cd681c4559826e41e51f359cfc5b6e6e0744e0bcc70faa158d265a",
23018
+ "8d09b0afefe00937b531acb058b61cc7a51e0734afe849e2925f1576939fea4f",
23019
+ "df7b9089f53eb539f31ee5ee1a014a99decaa47db7be001ab6cf1c4e3dc3f249",
23020
+ "d9f9148ba3bf5fa28f64f93d7d4f6f1ced35f1989c958d49338126970e3af305",
23021
+ "9bac18e8e5ad9f16842408733272e0176ada2d88f82a4d4c0efd86ace2af1f0c",
23022
+ "b4ae91a3126c217f10c75648859fd451e55b7001d60cb5d310ebc594de332b17",
23023
+ "348058dd9e87894c72590f6d053a5bcdd9e528eca023cc33a43c8f49842e6668",
23024
+ "d98afbfab194bcd0a63755cbb1a465bd3150cb7f12e074ad07b672f8ad6500c0",
23025
+ "262ce0d56102047cce2d3af2fc41455239407a3325085049660e0b6ccab110e4",
23026
+ "f891796e9696fe3b3c27a5b749d62aab532710c98ac4de16cf72646b350f3a3a",
23027
+ "1c883a27aaedd35e514ea097a5397d441f7c2897a426f725b3abb59f52d67dc5",
23028
+ "87a7af344ad074bc928540708f57ad325fc823806480629c1752d4fd74f26008",
23029
+ "c411223759e274ed9f9bedff87773d879a474fbf9b27ecddae84c425119f3e6c",
23030
+ "cec9f945d729b447cbb3528fa086e96560d81f520a0df48e5a09a15352c47e86",
23031
+ "cdce5b49edad8743a2e069869ca2b0710ef4b06c87ea979c6ada8f1300c42a84",
23032
+ "c220487c68068bfd08abae2d3ee7aaaf98c9d85e944023eeb9d47f1774f35bcb",
23033
+ "fb9f9d0d9566423267fc6d5e0f2fee25c750de2e014ae2190f2dc9fab1aa2d10",
23034
+ "c312ddfd61d3901076d8ea65d2c29f973099dcf19746a69a341ac3a3b583aaa3"
21944
23035
  ];
21945
23036
 
21946
23037
  // ../shared/src/requirements.ts
@@ -22379,7 +23470,7 @@ function checkGameFiles(files, entry) {
22379
23470
  return findings;
22380
23471
  }
22381
23472
  var KEY_MESSAGE = (what) => (found2) => `contains what looks like ${what} (${found2}). Every player can read a game's files: remove it, and revoke the key`;
22382
- var CONTENT_RULES = [
23473
+ var CONTENT_RULES2 = [
22383
23474
  {
22384
23475
  rule: "secret-key",
22385
23476
  severity: "error",
@@ -22481,7 +23572,7 @@ function checkFileContent(path2, text2) {
22481
23572
  const extension = extensionOf2(withoutEncoding(path2).path);
22482
23573
  const findings = [];
22483
23574
  const reported = /* @__PURE__ */ new Set();
22484
- for (const rule of CONTENT_RULES) {
23575
+ for (const rule of CONTENT_RULES2) {
22485
23576
  if (rule.only && !rule.only.includes(extension)) continue;
22486
23577
  const key = `${rule.rule}:${rule.pattern.source}`;
22487
23578
  if (reported.has(key)) continue;
@@ -22857,12 +23948,14 @@ var ERROR_STATUS = {
22857
23948
  NOT_REMIXABLE: 403,
22858
23949
  /**
22859
23950
  * juicy.json's `id` is one of the creator's games, but its `slug` names another game or a new one
22860
- * (D65): the slug was changed, or the folder was copied. Nothing was created.
23951
+ * (D65): the slug was changed, or the folder was copied. Nothing was created. CLI 0.11.0 is the
23952
+ * first that knows it; older ones get VALIDATION_FAILED (`NEWER_ERROR_CODES`).
22861
23953
  */
22862
23954
  SLUG_CHANGED: 409,
22863
23955
  /**
22864
23956
  * The version can never be made live: an admin rejected it (D69). The game keeps its live
22865
23957
  * version; publish a new one. The admin's comment, if any, is in the message and the versions list.
23958
+ * CLI 0.12.0 is the first that knows it, as with the next two; older ones get VALIDATION_FAILED.
22866
23959
  */
22867
23960
  VERSION_REJECTED: 409,
22868
23961
  /**
@@ -22887,7 +23980,8 @@ var ERROR_STATUS = {
22887
23980
  /**
22888
23981
  * The upload budget (D70) is used up: the member uploaded too many files in the last 24 hours
22889
23982
  * (`details.retryAfterSeconds` says when enough frees up), or the whole site did, which also
22890
- * pauses publishing until an admin looks. Retry later, never in a loop.
23983
+ * pauses publishing until an admin looks. Retry later, never in a loop. CLI 0.12.0 is the first
23984
+ * that knows it; older ones get RATE_LIMITED (`NEWER_ERROR_CODES`).
22891
23985
  */
22892
23986
  UPLOAD_BUDGET_REACHED: 429,
22893
23987
  /**
@@ -22897,6 +23991,13 @@ var ERROR_STATUS = {
22897
23991
  * CLI 0.13.0 is the first that knows it; 0.12.0 and older get RATE_LIMITED (`NEWER_ERROR_CODES`).
22898
23992
  */
22899
23993
  PUBLISH_LIMIT_REACHED: 429,
23994
+ /**
23995
+ * The creator's versions used up this month's share of the AI review budget (D99).
23996
+ * `details.nextAt` says when publishing is possible again (the first of next month, UTC, or when
23997
+ * the account's first week ends). Published games keep playing. Don't retry before then; test
23998
+ * locally and publish fewer, bigger updates. CLIs up to 0.13.0 get RATE_LIMITED; 0.14.0 knows it (`NEWER_ERROR_CODES`).
23999
+ */
24000
+ REVIEW_ALLOWANCE_REACHED: 429,
22900
24001
  /** An admin paused all publishing (PUBLISHING_PAUSED, the incident switch). Retry later. */
22901
24002
  PUBLISHING_PAUSED: 503,
22902
24003
  /** An admin paused this kind of action for now (comments, reports, likes and votes). */
@@ -22960,6 +24061,11 @@ var paramSchemas = {
22960
24061
  }
22961
24062
  })
22962
24063
  ),
24064
+ genre: external_exports.string().transform((value) => [
24065
+ ...new Set(
24066
+ value.toLowerCase().split(",").map((id) => id.trim())
24067
+ )
24068
+ ]).pipe(external_exports.array(genreSchema).max(MAX_GENRES, `use at most ${MAX_GENRES} genres`)),
22963
24069
  lang: languageSchema,
22964
24070
  q: external_exports.string().max(MAX_GAME_SEARCH_LENGTH),
22965
24071
  remixes: external_exports.enum(["0", "1"]),
@@ -22975,20 +24081,27 @@ var gameListRequestSchema = external_exports.object({
22975
24081
  sort: paramSchemas.sort.default(DEFAULT_GAME_LIST_QUERY.sort),
22976
24082
  period: paramSchemas.period.default(DEFAULT_GAME_LIST_QUERY.period),
22977
24083
  engine: paramSchemas.engine.optional(),
24084
+ genre: paramSchemas.genre.optional(),
22978
24085
  tag: paramSchemas.tag.optional(),
22979
24086
  lang: paramSchemas.lang.optional(),
22980
24087
  q: paramSchemas.q.optional(),
22981
24088
  remixes: paramSchemas.remixes.optional(),
22982
24089
  multiplayer: paramSchemas.feature.optional(),
22983
24090
  highscores: paramSchemas.feature.optional(),
24091
+ touch: paramSchemas.feature.optional(),
24092
+ remixable: paramSchemas.feature.optional(),
22984
24093
  list: paramSchemas.list.optional(),
22985
24094
  page: paramSchemas.page.default(DEFAULT_GAME_LIST_QUERY.page)
22986
- }).transform(({ remixes, tag, ...rest }) => ({
24095
+ }).transform(({ remixes, tag, genre, ...rest }) => ({
22987
24096
  ...rest,
24097
+ ...genre ? { genres: genre } : {},
22988
24098
  ...tag ? { tags: tag } : {},
22989
24099
  remixes: remixFilter(remixes)
22990
24100
  }));
22991
24101
 
24102
+ // ../shared/src/profile.ts
24103
+ var AVATAR_MAX_BYTES = 512 * 1024;
24104
+
22992
24105
  // ../shared/src/publish-limits.ts
22993
24106
  function isPublishLimitDetails(value) {
22994
24107
  if (typeof value !== "object" || value === null) return false;
@@ -23056,6 +24169,34 @@ var ROOM_CODE_ALPHABET = "ABCDEFGHJKMNPQRSTUVWXYZ23456789";
23056
24169
  var ROOM_CODE_LENGTH = 6;
23057
24170
  var ROOM_CODE_PATTERN = new RegExp(`^[${ROOM_CODE_ALPHABET}]{${ROOM_CODE_LENGTH}}$`);
23058
24171
 
24172
+ // ../shared/src/review-allowance.ts
24173
+ function isReviewAllowanceDetails(value) {
24174
+ if (typeof value !== "object" || value === null) return false;
24175
+ const { usedUsd, limitUsd, nextAt } = value;
24176
+ return typeof usedUsd === "number" && typeof limitUsd === "number" && typeof nextAt === "string" && !Number.isNaN(Date.parse(nextAt));
24177
+ }
24178
+ function reviewAllowanceMessage(details, { now = /* @__PURE__ */ new Date(), timeZone } = {}) {
24179
+ const next = new Date(details.nextAt);
24180
+ const when = new Intl.DateTimeFormat("en-US", {
24181
+ month: "short",
24182
+ day: "numeric",
24183
+ hour: "2-digit",
24184
+ minute: "2-digit",
24185
+ hourCycle: "h23",
24186
+ timeZoneName: "short",
24187
+ timeZone
24188
+ }).format(next);
24189
+ return `Your versions have used this month's share of JuicyJuicy's automatic safety checks, so you can't publish until ${when} (${inTime2(next.getTime() - now.getTime())}). Your published games keep playing meanwhile. Test the game locally in dev and publish fewer, bigger updates.`;
24190
+ }
24191
+ function inTime2(ms) {
24192
+ const minutes = Math.max(1, Math.ceil(ms / 6e4));
24193
+ const count = (n2, unit) => `in ${n2} ${unit}${n2 === 1 ? "" : "s"}`;
24194
+ if (minutes < 60) return count(minutes, "minute");
24195
+ const hours = Math.ceil(minutes / 60);
24196
+ if (hours < 48) return count(hours, "hour");
24197
+ return count(Math.ceil(hours / 24), "day");
24198
+ }
24199
+
23059
24200
  // ../shared/src/scores.ts
23060
24201
  var MAX_SCORE_BOARDS = LIMITS.maxScoreBoardsPerGame;
23061
24202
  var points = new Intl.NumberFormat("en-US");
@@ -26587,7 +27728,7 @@ var program = new Command();
26587
27728
  // package.json
26588
27729
  var package_default = {
26589
27730
  name: "juicyjuicy",
26590
- version: "0.13.0",
27731
+ version: "0.14.0",
26591
27732
  description: "Publish AI-made browser games to juicyjuicy.games",
26592
27733
  type: "module",
26593
27734
  license: "MIT",
@@ -26661,6 +27802,22 @@ It's unlisted (it still plays by link) until an admin lists it again. Fix what t
26661
27802
  case "member_warning":
26662
27803
  return `A warning from JuicyJuicy's moderators${note.game ? ` about ${note.game}` : ""}:${quoted(note.comment)}
26663
27804
  It shows on the site until you dismiss it there.`;
27805
+ // The rest aren't sent with a publish, but the site shows them and a newer server may list them.
27806
+ case "game_removed":
27807
+ return `JuicyJuicy's moderators removed ${game}:${quoted(note.comment)}
27808
+ It doesn't play until an admin restores it. The game's dashboard page says why and how to contest it.`;
27809
+ case "member_banned":
27810
+ return `JuicyJuicy's moderators suspended this account:${quoted(note.comment)}
27811
+ The sign-in page says why and how to contest it.`;
27812
+ case "comment_removed":
27813
+ return `JuicyJuicy's moderators deleted a comment of yours${note.game ? ` on ${note.game}` : ""}:${quoted(note.comment)}`;
27814
+ case "proposal_removed":
27815
+ return `JuicyJuicy's moderators deleted a proposal of yours:${quoted(note.comment)}`;
27816
+ case "thumbnail_rejected":
27817
+ return `JuicyJuicy's moderators rejected the new thumbnail of ${game}:${quoted(note.comment)}
27818
+ It won't be shown. Upload a different image to replace it.`;
27819
+ case "profile_moderated":
27820
+ return `JuicyJuicy's moderators removed ${note.subject ?? "something from your profile"}:${quoted(note.comment)}`;
26664
27821
  }
26665
27822
  }
26666
27823
  function noteMessages(moderation, warnings, slug) {
@@ -27811,7 +28968,7 @@ var ApiClient = class {
27811
28968
  }
27812
28969
  if (isApiErrorBody(data)) {
27813
28970
  const { code, message, details } = data.error;
27814
- const text3 = code === "PUBLISH_LIMIT_REACHED" && isPublishLimitDetails(details) ? publishLimitMessage(details) : message;
28971
+ const text3 = code === "PUBLISH_LIMIT_REACHED" && isPublishLimitDetails(details) ? publishLimitMessage(details) : code === "REVIEW_ALLOWANCE_REACHED" && isReviewAllowanceDetails(details) ? reviewAllowanceMessage(details) : message;
27815
28972
  throw new CliError(code, text3, { details, hint: moderationHint(code) });
27816
28973
  }
27817
28974
  if (!response.ok) {
@@ -28301,6 +29458,19 @@ async function checkProject(dir, options = {}) {
28301
29458
  });
28302
29459
  }
28303
29460
  check3.issues.push(...englishIssues(manifest));
29461
+ if (!manifest.genres) {
29462
+ check3.issues.push({
29463
+ code: "INVALID_MANIFEST",
29464
+ message: `juicy.json needs "genres": 1 to ${MAX_GENRES} from JuicyJuicy's list: ${GENRE_IDS.join(", ")} (e.g. ${cliCommand("init --genres puzzle,arcade")})`,
29465
+ path: "genres"
29466
+ });
29467
+ }
29468
+ const themes = normalizeTags(manifest.tags).tags;
29469
+ if (themes.join() !== manifest.tags.join()) {
29470
+ check3.warnings.push(
29471
+ `JuicyJuicy keeps tags as themes, the setting or subject (D103): these tags will be saved as [${themes.join(", ")}]. Genre words belong in "genres", and features like multiplayer show by themselves.`
29472
+ );
29473
+ }
28304
29474
  const letters2 = titleNotEnglish(manifest.title) ? null : titleLetters(manifest.title);
28305
29475
  if (letters2) {
28306
29476
  check3.warnings.push(
@@ -28556,7 +29726,9 @@ var KEY_ORDER = [
28556
29726
  "entry",
28557
29727
  "engine",
28558
29728
  "madeWith",
29729
+ "genres",
28559
29730
  "tags",
29731
+ "ageRating",
28560
29732
  "languages",
28561
29733
  "features",
28562
29734
  "input",
@@ -28588,6 +29760,8 @@ async function buildManifest(dir, flags, ask) {
28588
29760
  };
28589
29761
  const thumbnail = pick2("thumbnail", detected.thumbnail);
28590
29762
  if (thumbnail) values.thumbnail = thumbnail;
29763
+ if (flags.genres) values.genres = flags.genres;
29764
+ if (flags.ageRating) values.ageRating = flags.ageRating;
28591
29765
  delete values.howItWasMade;
28592
29766
  if (flags.sourceUrl) values.sourceUrl = flags.sourceUrl;
28593
29767
  const fieldSchema = manifestSchema.shape;
@@ -28644,6 +29818,18 @@ function withGameId(manifest, id) {
28644
29818
  }
28645
29819
  return "id" in ordered ? ordered : { ...ordered, id };
28646
29820
  }
29821
+ function withField(manifest, key, value) {
29822
+ if (key in manifest) return { ...manifest, [key]: value };
29823
+ const rank = KEY_ORDER.indexOf(key);
29824
+ const ordered = {};
29825
+ for (const [name, existing] of Object.entries(manifest)) {
29826
+ const after = KEY_ORDER.indexOf(name);
29827
+ if (!(key in ordered) && rank !== -1 && after > rank) ordered[key] = value;
29828
+ ordered[name] = existing;
29829
+ }
29830
+ if (!(key in ordered)) ordered[key] = value;
29831
+ return ordered;
29832
+ }
28647
29833
  function splitList(value) {
28648
29834
  return value.split(",").map((item) => item.trim()).filter(Boolean);
28649
29835
  }
@@ -29284,6 +30470,34 @@ async function saveGameId(out, root, publicId) {
29284
30470
  );
29285
30471
  }
29286
30472
  }
30473
+ async function syncAgeRating(out, root, declared, game) {
30474
+ const { ageRating: rating } = game;
30475
+ if (rating === void 0) return;
30476
+ if (rating === null) {
30477
+ out.warn(
30478
+ `${game.slug} has no age rating yet: set it on the game's dashboard, or add "ageRating" to juicy.json (everyone, 12+ or 16+, from the game's content) for its next update.`
30479
+ );
30480
+ return;
30481
+ }
30482
+ if (declared === rating) return;
30483
+ if (game.ageRatingLocked && declared) {
30484
+ out.warn(
30485
+ `JuicyJuicy's moderators set ${game.slug}'s age rating to ${rating}, so juicy.json's ${declared} doesn't apply; only an admin can change it.`
30486
+ );
30487
+ }
30488
+ try {
30489
+ const raw = await readRawManifest(root);
30490
+ if (!raw) return;
30491
+ await writeManifest(root, withField(raw, "ageRating", rating));
30492
+ out.info(
30493
+ `Saved the game's age rating (${rating}${game.ageRatingLocked ? ", set by JuicyJuicy's moderators" : ""}) in juicy.json.`
30494
+ );
30495
+ } catch (error62) {
30496
+ out.warn(
30497
+ `couldn't save the game's age rating in juicy.json (${error62 instanceof Error ? error62.message : String(error62)}); the publish goes on`
30498
+ );
30499
+ }
30500
+ }
29287
30501
  async function publish(out, dir, options) {
29288
30502
  const root = resolve4(dir);
29289
30503
  if (out.interactive && !await readRawManifest(root)) {
@@ -29330,6 +30544,11 @@ async function publish(out, dir, options) {
29330
30544
  );
29331
30545
  }
29332
30546
  await saveGameId(out, root, started.game.publicId);
30547
+ await syncAgeRating(out, root, manifest.ageRating, started.game);
30548
+ const rated = started.game.ageRating === void 0 ? {} : {
30549
+ ageRating: started.game.ageRating,
30550
+ ...started.game.ageRatingLocked ? { ageRatingLocked: true } : {}
30551
+ };
29333
30552
  out.event("version_started", {
29334
30553
  slug: started.game.slug,
29335
30554
  version: started.version,
@@ -29379,6 +30598,7 @@ async function publish(out, dir, options) {
29379
30598
  out.result(
29380
30599
  {
29381
30600
  ...data2,
30601
+ ...rated,
29382
30602
  ...moderation ? { moderation } : {},
29383
30603
  ...notes.length > 0 ? { moderationNotice: MODERATION_NOTICE } : {}
29384
30604
  },
@@ -29461,6 +30681,7 @@ var LIST_FILTERS = [
29461
30681
  "sort",
29462
30682
  "period",
29463
30683
  "engine",
30684
+ "genre",
29464
30685
  "tag",
29465
30686
  "search",
29466
30687
  "remixes",
@@ -29474,6 +30695,7 @@ function listParams(options) {
29474
30695
  ["sort", options.sort],
29475
30696
  ["period", options.period],
29476
30697
  ["engine", options.engine],
30698
+ ["genre", options.genre],
29477
30699
  ["tag", options.tag],
29478
30700
  ["q", options.search],
29479
30701
  ["remixes", options.remixes ? "1" : void 0],
@@ -30102,7 +31324,13 @@ function createProgram() {
30102
31324
  "--made-with <list>",
30103
31325
  'models and tools, e.g. "Claude Opus 5.5, Claude Code"',
30104
31326
  splitList
30105
- ).option("--tags <list>", "up to 5 tags, e.g. arcade,space", splitList).option(
31327
+ ).option("--genres <list>", `1 to ${MAX_GENRES} of: ${GENRE_IDS.join(", ")}`, splitList).option(
31328
+ "--tags <list>",
31329
+ "up to 3 themes, the setting or subject, e.g. space,pirates",
31330
+ splitList
31331
+ ).addOption(
31332
+ new Option("--age-rating <rating>", "who it's for, from its content").choices(AGE_RATINGS)
31333
+ ).option(
30106
31334
  "--languages <list>",
30107
31335
  "language codes players can pick, the default first, e.g. en,pl",
30108
31336
  splitList
@@ -30133,7 +31361,10 @@ ${REMIX_LICENSE_NAME} (--remixable): ${REMIX_LICENSE}`
30133
31361
  "--period <period>",
30134
31362
  "window for the upvoted/downvoted/played sorts (default all)"
30135
31363
  ).choices(GAME_PERIODS)
30136
- ).addOption(new Option("--engine <engine>", "only this engine").choices(ENGINES)).option("--tag <tag>", "only games with this tag, e.g. puzzle, or any of several: cards,dice").option(
31364
+ ).addOption(new Option("--engine <engine>", "only this engine").choices(ENGINES)).option("--genre <genre>", "only games in this genre, or any of several: puzzle,arcade").option(
31365
+ "--tag <tag>",
31366
+ "only games with this theme, e.g. space, or any of several: space,pirates"
31367
+ ).option(
30137
31368
  "--search <text>",
30138
31369
  "only games with this text in the title, description, creator, tags or made-with"
30139
31370
  ).option("--remixes", "only remixes").option("--multiplayer", "only games with multiplayer rooms").option("--highscores", "only games with global highscores (leaderboards)").option("--page <n>", "page of --all to show (default 1)").addHelpText(