xvai-loi 0.1.76 → 0.1.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/co.txt +1 -1
  2. package/package.json +1 -1
  3. package/xvai-loi.js +67 -23
package/co.txt CHANGED
@@ -1 +1 @@
1
- xvaiLoi112057
1
+ xvaiLoi112357
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xvai-loi",
3
- "version": "0.1.76",
3
+ "version": "0.1.78",
4
4
  "description": "Loi dung video (Edit Video Tu Dong) nap vao tool Google Flow qua o cam engine/oCam.ts",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
package/xvai-loi.js CHANGED
@@ -6037,7 +6037,7 @@ function catNen(im, buoc = 7, tol = 40) {
6037
6037
  return o;
6038
6038
  }
6039
6039
  var ts = /* @__PURE__ */ new Map();
6040
- var dsTenTaiSan = () => [...ts.keys()].filter((k) => /^(trang|anh|vat|story|logo):|\.(png|jpg)$/i.test(k)).sort();
6040
+ var dsTenTaiSan = () => [...ts.keys(), ...globalThis.__dsTaiSanThu?.() || []].filter((k) => /^(trang|anh|vat|story|logo):|\.(png|jpg)$/i.test(k)).sort();
6041
6041
  var moTaTaiSan = () => [...ts.entries()].filter(([, v]) => v).map(([k, v]) => [k, v.laVideo ? 1 : 0, +(v.dai || 0), v.width || 0, v.height || 0]);
6042
6042
  var taiSan = (ten) => ten ? ts.get(ten) || globalThis.__taiSanThu?.(ten) || null : null;
6043
6043
  var nhanTaiSan = (ten, im) => {
@@ -9822,11 +9822,12 @@ var KHUON_TOPN = {
9822
9822
  ten: "Top N chi\u1EC1u s\xE2u (Captions)",
9823
9823
  tram: { phut: 18.3, tyLe: 0.7, phan: [0.83, 0.81, 0.46], daiTV: 2.1, video: 0.33, nhanVat: ["Vietnamese people in a real everyday setting.", "Close-up of an object, hands or a place that shows the idea, no faces."] },
9824
9824
  // cảnh trám / phút, % thời lượng, 3 phần đầu/giữa/cuối, độ dài trung vị (s), tỉ lệ clip động; nhanVat: xen kẽ ảnh có người / cận vật-tay-nơi (đối thủ trộn web, stock, 3D — B06-1027: toàn ảnh người → 'không thấy mặt' 12 % < 15)
9825
- chu: { phut: [8, 18] },
9826
- icon: { phut: 11.5 },
9827
- cat: { moi10s: [4, 6] },
9825
+ chu: { phut: [8, 18], caoMin: 0.042 },
9826
+ // caoMin: nét chữ nhấn (kể cả dấu) / H — đối thủ trung vị 0,042 (đo tay 23 dòng); chữ bị ép ngang thấp hơn → 2 dòng icon: { phut: 11.5 }, cat: { moi10s: [4, 6], manhNguoi: 1.2, heChu: 0 }, // manhNguoi: mẩu người nói kẹp giữa 2 cảnh ngắn hơn thì lấp (trước 0,6 — VD-236); heChu: khe giữa 2 cảnh liền cùng có chữ (trước 0,06 → chớp 2 khung người nói = 2 cú cắt thừa; bàn thử 13 video 12/10 00:0x: 0,06 → 0 cắt TB 5,44 → 4,39/10 s, chồng chữ 0/13 — cảnh trước đã hết theo giờ PHIM nhờ bT)
9828
9827
  nguoi: { phongToiDa: 1.8, matToiDa: 0.55 },
9829
9828
  // matToiDa: hộp đầu (tóc→cằm) cao hơn 0,55 H thì KHÔNG dùng ô người / chia (không vừa ô) // MỌI ô người (PIP, thẻ, chia) phóng khung gốc tối đa 1,8× (độ nét) — trước: PIP 1,6, thẻ 1,3 (B05-1027: thẻ hiện cả người nhỏ)
9829
+ lietKe: { xenKe: 2 },
9830
+ // video liệt kê: cứ thẻ bước thứ 2 → ảnh toàn khung + tiêu đề (đối thủ đổi kiểu, không lặp 1 khuôn thẻ)
9830
9831
  soTrenAnh: { phanDau: 1 / 3, toiDa: 2 },
9831
9832
  // cảnh CON SỐ ở 1/3 đầu → số đè lên ẢNH minh hoạ (đối thủ 1/3 đầu 83 % trám; số trên người nói không tính trám)
9832
9833
  bien: { dau: 1.5, cuoi: 2.5, ctaAnh: true }
@@ -9989,6 +9990,27 @@ function kieuChu() {
9989
9990
  kcCache = k || {};
9990
9991
  return kcCache;
9991
9992
  }
9993
+ function haiDong4(g, txt, px, maxW, pxMin, pxMax) {
9994
+ const t = txt.normalize("NFC"), ws = t.split(/\s+/).filter(Boolean);
9995
+ if (t.indexOf(String.fromCharCode(10)) >= 0 || ws.length < 3) return [t, px, t.indexOf(String.fromCharCode(10)) >= 0];
9996
+ g.save();
9997
+ g.font = "900 " + px.toFixed(1) + "px " + FB;
9998
+ const w = g.measureText(t).width;
9999
+ if (px * Math.min(1, maxW / w) >= pxMin) {
10000
+ g.restore();
10001
+ return [t, px, false];
10002
+ }
10003
+ let tot = "", m = 1e9;
10004
+ for (let i = 1; i < ws.length; i++) {
10005
+ const a = ws.slice(0, i).join(" "), b = ws.slice(i).join(" "), x = Math.max(g.measureText(a).width, g.measureText(b).width);
10006
+ if (x < m) {
10007
+ m = x;
10008
+ tot = a + String.fromCharCode(10) + b;
10009
+ }
10010
+ }
10011
+ g.restore();
10012
+ return [tot, Math.min(pxMax, px * Math.min(1, maxW / m)), true];
10013
+ }
9992
10014
  function chu2(g, txt, x, y, px, kieu, a = 1, maxW = 0) {
9993
10015
  if (!txt || a <= 0) return;
9994
10016
  txt = String(txt).normalize("NFC");
@@ -10803,19 +10825,21 @@ dangKy("cmNen", (g, d, tuoi, W4, H2, nen2, _s, dai2) => {
10803
10825
  if (hv2 > 0) g.drawImage(vt, W4 / 2 - wv / 2, yv - hv2 / 2, wv, hv2);
10804
10826
  g.restore();
10805
10827
  }
10806
- if (d.tieu) chu2(g, d.tieu, W4 / 2, 0.135 * H2 + (1 - ka) * 70 * H2 / 1920, 122 * H2 / 1920, "brand", kep12(tuoi / 0.15), 0.76 * W4);
10828
+ const t2 = d.tieu ? haiDong4(g, String(d.tieu), 122 * H2 / 1920, 0.76 * W4, KHUON_TOPN.chu.caoMin / 0.92 * H2, 0.05 * H2) : null;
10829
+ if (t2) chu2(g, t2[0], W4 / 2, (t2[2] ? 0.118 : 0.135) * H2 + (1 - ka) * 70 * H2 / 1920, t2[1], "brand", kep12(tuoi / 0.15), 0.76 * W4);
10807
10830
  if (d.so) {
10808
10831
  g.save();
10809
10832
  g.globalAlpha = a * kep12((tuoi - 0.15) / 0.2);
10810
10833
  g.font = "900 " + (0.02 * H2).toFixed(1) + "px " + FB;
10811
10834
  const t = (d.nhom || "M\u1EE4C") + " " + d.so + "/" + d.N, tw = g.measureText(t).width + 0.05 * W4;
10812
- bo(g, W4 / 2 - tw / 2, 0.172 * H2, tw, 0.034 * H2, 0.017 * H2);
10835
+ const dy = t2 && t2[2] ? 0.01 * H2 : 0;
10836
+ bo(g, W4 / 2 - tw / 2, 0.172 * H2 + dy, tw, 0.034 * H2, 0.017 * H2);
10813
10837
  g.fillStyle = "rgba(20,20,26,0.85)";
10814
10838
  g.fill();
10815
10839
  g.fillStyle = VANG;
10816
10840
  g.textAlign = "center";
10817
10841
  g.textBaseline = "middle";
10818
- g.fillText(t, W4 / 2, 0.189 * H2);
10842
+ g.fillText(t, W4 / 2, 0.189 * H2 + dy);
10819
10843
  g.restore();
10820
10844
  }
10821
10845
  if (d.ui) theUI(g, d.ui, tuoi, W4, H2, 1);
@@ -11409,7 +11433,7 @@ function cum2(ws) {
11409
11433
  for (let i = w.length - 2; i >= 0; i--) if (!hu(w[i]) && !hu(w[i + 1])) return w[i] + " " + w[i + 1];
11410
11434
  return w.slice(-2).join(" ");
11411
11435
  }
11412
- var haiDong4 = (s, n = 10) => {
11436
+ var haiDong5 = (s, n = 10) => {
11413
11437
  const w = s.split(" ");
11414
11438
  if (s.length <= n || w.length < 2) return s;
11415
11439
  let best = 1, d = 99;
@@ -11778,7 +11802,7 @@ function lapCuongMe(o) {
11778
11802
  })(sach3(kb?.moc || layMoc(ws, kb)).split(" "))) || hoa3(cum2(cs[0] ? cs[0].chu : []));
11779
11803
  const Lm = Math.min(Math.max(2.4, docGiay(moc) + 0.4), Math.max(1.2, f1 - 0.3));
11780
11804
  bc = "B2 moc";
11781
- de(0, Lm, { uuTien: UT.moc, bo: "depth", giant: haiDong4(moc, 11), chu2: coBuoc ? N + " " + LOAI2 : "", yChu: 0.165, vao: 1e-3, z: 1.3, keu: "whoosh" });
11805
+ de(0, Lm, { uuTien: UT.moc, bo: "depth", giant: haiDong5(moc, 11), chu2: coBuoc ? N + " " + LOAI2 : "", yChu: 0.165, vao: 1e-3, z: 1.3, keu: "whoosh" });
11782
11806
  if (coBuoc && f1 - Lm > 3.4) de(Lm + 0.3, Math.min(3.2, f1 - Lm - 0.6), { uuTien: UT.moc, bo: "cut", tieu: N + " " + LOAI2, hang: muc.map((m) => m.ten).slice(0, 8), keu: "pop", st: "chuot", stX: 0.43, stY: 0.188, stR: 0.042, stTre: 1.2 });
11783
11807
  else if (N >= 2) ghiL("bo", { bo: "cut", f: Lm + 0.3, d: 3.2 }, "moc ngan (f1 - Lm <= 3,4 s) \u2192 bo hang N muc");
11784
11808
  const gonTen = (x) => {
@@ -11797,7 +11821,7 @@ function lapCuongMe(o) {
11797
11821
  const c = cs.filter((x) => x.f >= m.f + Lc + 2 && x.f + 2.4 <= m.b - 1).sort((p, q) => Math.abs(p.f - (m.f + L * 0.6)) - Math.abs(q.f - (m.f + L * 0.6)))[0];
11798
11822
  if (c) {
11799
11823
  const t = hoa3(cum2(c.chu));
11800
- de(c.f, Math.max(2.2, docGiay(t) + 0.6), { uuTien: UT.chu, bo: "depth", giant: haiDong4(t, 9), keu: "pop" });
11824
+ de(c.f, Math.max(2.2, docGiay(t) + 0.6), { uuTien: UT.chu, bo: "depth", giant: haiDong5(t, 9), keu: "pop" });
11801
11825
  }
11802
11826
  }
11803
11827
  });
@@ -11813,7 +11837,7 @@ function lapCuongMe(o) {
11813
11837
  if (iN >= 0 && ws[iN + 2] && /^[A-ZÀ-Ỹ]/.test(String(ws[iN + 2].text || "").trim())) {
11814
11838
  const nm = [];
11815
11839
  for (let k = iN + 2; k < W22.length && nm.length < 4 && !DUNG.test(W22[k].t) && !/^(nhớ|hãy|bấm)$/.test(W22[k].t); k++) nm.push(W22[k].t);
11816
- if (nm.length) de(W22[iN].f, 1.8, { uuTien: UT.cta, bo: "depth", giant: haiDong4(hoa3(suaChu(nm.join(" "))), 9), keu: "pop" }, 0.5);
11840
+ if (nm.length) de(W22[iN].f, 1.8, { uuTien: UT.cta, bo: "depth", giant: haiDong5(hoa3(suaChu(nm.join(" "))), 9), keu: "pop" }, 0.5);
11817
11841
  }
11818
11842
  if (iC >= 0) de(fC, 2.4, { uuTien: UT.cta, bo: "depth", giant: W22[iC].t === "comment" ? "COMMENT" : "B\xCCNH LU\u1EACN", yChu: 0.17, chu2: kw.length ? '"' + hoa3(kw.filter((w, i) => i === 0 || String(w).toLocaleLowerCase("vi") !== String(kw[i - 1]).toLocaleLowerCase("vi")).join(" ")) + '"' : "", keu: "pop" }, 1);
11819
11843
  if (iL >= 0) de(W22[iL].f, 2, { uuTien: UT.cta, bo: "cut", giant: "L\u01AFU VIDEO", st: "luu", keu: "pop" }, 1);
@@ -11903,7 +11927,7 @@ function lapCuongMe(o) {
11903
11927
  else if (x.kieu === "vat") {
11904
11928
  const LG = timLogo(suaChu(chuK + " " + sach3(String(x.tu || ""))))[0];
11905
11929
  if (LG) napHinhLogo(LG.slug);
11906
- de(f2, 2.3, { uuTien: UT.vat, bo: "cut", vat: co && !LG ? ten2 : "", logoTo: LG, giant: haiDong4(chuK, 11), chu2: co || LG ? "" : chu22, keu: "pop" }, 3);
11930
+ de(f2, 2.3, { uuTien: UT.vat, bo: "cut", vat: co && !LG ? ten2 : "", logoTo: LG, giant: haiDong5(chuK, 11), chu2: co || LG ? "" : chu22, keu: "pop" }, 3);
11907
11931
  } else if (x.kieu === "ds" && Array.isArray(x.dong) && x.dong.length >= 2) {
11908
11932
  const dg = x.dong.slice(0, 3).map((v) => hoa3(suaChu(sach3(String(v || "")))).split(" ").slice(0, 6).join(" ")).filter(Boolean);
11909
11933
  const qs = dg.map((v) => {
@@ -11913,7 +11937,7 @@ function lapCuongMe(o) {
11913
11937
  dg.splice(0, 9, ...dg2);
11914
11938
  de(f2, Math.max(2.4, Math.min(3.4, (moc2.filter((v) => v != null).pop() || 1) + 1.3)), { uuTien: UT.ds, bo: "kinh", dong: dg, moc: moc2, ten: co ? ten2 : "", keu: "whoosh" }, 3);
11915
11939
  } else if (x.kieu === "so") de(f2, 2.2, { uuTien: UT.so, bo: "cut", giant: chuK, cam: 1, chu2: chu22, keu: "pop" }, 3);
11916
- else if (chuK) de(f2, Math.max(2, docGiay(chuK) + 0.6), { uuTien: UT.chu, bo: "depth", giant: haiDong4(chuK, 9), keu: "pop" }, 3);
11940
+ else if (chuK) de(f2, Math.max(2, docGiay(chuK) + 0.6), { uuTien: UT.chu, bo: "depth", giant: haiDong5(chuK, 9), keu: "pop" }, 3);
11917
11941
  if (ung.length === n0 && x.kieu !== "anh") {
11918
11942
  boC.push([chuK || x.tu, +f2.toFixed(2), "khong-dat", x.kieu]);
11919
11943
  if (loai.length === n1) ghiL("bo", { bo: x.kieu || "chu", f: f2, d: 0 }, "khong goi dat(): ds < 2 dong hoac khong co chu: " + String(x.tu || ""));
@@ -11991,7 +12015,7 @@ function lapCuongMe(o) {
11991
12015
  if (k < 2) k = kc;
11992
12016
  if (k < 2) return;
11993
12017
  const t3 = hoa3(suaChu([k - 2, k - 1, k].map((q) => sach3(ws[q].text)).join(" "))), f32 = Math.max(a + 0.3, Math.min(W22[k - 2].f - 0.1, b - 1.9));
11994
- if (t3) dat(f32, Math.max(1.3, Math.min(2.1, b - f32 - 0.16)), { bo: "depth", giant: haiDong4(t3, 11), keu: "pop" }, 0.5);
12018
+ if (t3) dat(f32, Math.max(1.3, Math.min(2.1, b - f32 - 0.16)), { bo: "depth", giant: haiDong5(t3, 11), keu: "pop" }, 0.5);
11995
12019
  });
11996
12020
  }
11997
12021
  sp.sort((p, q) => p.f - q.f).forEach((s, k) => {
@@ -12032,7 +12056,7 @@ function lapCuongMe(o) {
12032
12056
  const p = sp[k - 1], q = sp[k], cl = (s) => !!(s.giant || s.tieu || s.dong || s.ui || s.doc || s.chu);
12033
12057
  if (p.bo === "kinh" && q.bo === "kinh" && q.f - p.f - p.d < 1) {
12034
12058
  ghiL("rut-dong", q, "2 the kinh lien < 1 s \u2192 khung tron, mat dong 2-3");
12035
- q.bo = "tron", q.giant = haiDong4(String((q.dong || [])[0] || ""), 11);
12059
+ q.bo = "tron", q.giant = haiDong5(String((q.dong || [])[0] || ""), 11);
12036
12060
  }
12037
12061
  if (cl(p) && cl(q) && q.f - p.f - p.d < 1 && q.f - p.f - 1 >= 1.2) {
12038
12062
  ghiL("rut", p, "2 canh chu lien < 1 s \u2192 ve mat + phu de >= 1 s", [p.f, q.f - 1]);
@@ -12440,7 +12464,7 @@ function lapCuongMe(o) {
12440
12464
  }
12441
12465
  if (dg.length >= 3) ghiL("rut-dong", s, "qua 3 the kinh \u2192 chu sau dau / nen toi, mat dong 3");
12442
12466
  s.bo = xen++ % 2 ? "cut" : "depth";
12443
- s.giant = haiDong4(String(dg[0] || ""), 9);
12467
+ s.giant = haiDong5(String(dg[0] || ""), 9);
12444
12468
  s.chu2 = dg[1] || "";
12445
12469
  if (s.bo === "cut") s.toiNen = 1;
12446
12470
  s.dong = void 0;
@@ -12505,7 +12529,7 @@ function lapCuongMe(o) {
12505
12529
  v.vat = v.ten;
12506
12530
  v.ten = "";
12507
12531
  v.vatChia = 0;
12508
- v.giant = haiDong4(String(v.chu || ""), 11);
12532
+ v.giant = haiDong5(String(v.chu || ""), 11);
12509
12533
  v.chu = "";
12510
12534
  v.st = v.st0;
12511
12535
  return true;
@@ -12879,7 +12903,7 @@ function lapCuongMe(o) {
12879
12903
  }
12880
12904
  }
12881
12905
  {
12882
- const nt = (x) => String(x || "").replace(/\s+/g, " ").trim().toLocaleLowerCase("vi");
12906
+ const SOC = { "m\u1ED9t": "1", "hai": "2", "ba": "3", "b\u1ED1n": "4", "n\u0103m": "5", "s\xE1u": "6", "b\u1EA3y": "7", "t\xE1m": "8", "ch\xEDn": "9", "m\u01B0\u1EDDi": "10" }, nt = (x) => String(x || "").normalize("NFC").replace(/\s+/g, " ").trim().toLocaleLowerCase("vi").split(" ").map((w) => SOC[w] ?? w).join(" ");
12883
12907
  sp.sort((p, q) => p.f - q.f);
12884
12908
  for (let i = sp.length - 1; i > 0; i--) {
12885
12909
  const x = sp[i];
@@ -12908,7 +12932,7 @@ function lapCuongMe(o) {
12908
12932
  const ch = sp.filter((x) => x.bo !== "phong");
12909
12933
  for (let i = 0; i + 1 < ch.length; i++) {
12910
12934
  const x = ch[i], y = ch[i + 1], g = y.f - (x.f + x.d);
12911
- if (g > 0.02 && g < 0.6 && !x.khoa) {
12935
+ if (g > 0.02 && g < +(globalThis.__manhNguoi ?? KHUON_TOPN.cat.manhNguoi) && !x.khoa) {
12912
12936
  ghiL("doi", x, "VD-236 lap khe mat " + g.toFixed(2) + " s");
12913
12937
  x.d = +(y.f - x.f).toFixed(2);
12914
12938
  nL++;
@@ -12935,6 +12959,20 @@ function lapCuongMe(o) {
12935
12959
  daTren.add(ten2);
12936
12960
  }
12937
12961
  });
12962
+ {
12963
+ let n2 = 0;
12964
+ the2.forEach((s) => {
12965
+ if (s.so == null || !s.anhTren || s.ui || s.doc) return;
12966
+ const XK = +(globalThis.__lkXenKe ?? KHUON_TOPN.lietKe.xenKe);
12967
+ if (!(XK > 0) || n2++ % XK !== XK - 1) return;
12968
+ s.bo = "anh";
12969
+ s.ten = s.anhTren;
12970
+ s.chu = s.tieu;
12971
+ s.chu2 = "";
12972
+ s.theAnh = 1;
12973
+ ghiL("doi", s, "khuon liet ke: the buoc " + s.so + " \u2192 anh toan khung + tieu de (xen ke " + KHUON_TOPN.lietKe.xenKe + ")");
12974
+ });
12975
+ }
12938
12976
  }
12939
12977
  G4.__lichSp = sp.map((s, i) => ({ i, id: s.id, yChu: s.yChu, coChu: s.coChu, fx: s.fx, stX: s.stX, stY: s.stY, f: +s.f.toFixed(2), d: +s.d.toFixed(2), bo: s.bo, giant: s.giant || "", chu: s.chu || "", chu2: s.chu2 || "", st: s.st || "", ten: s.ten || "", tieu: s.tieu || "", khoa: s.khoa ? 1 : 0 }));
12940
12978
  }
@@ -12950,9 +12988,10 @@ function lapCuongMe(o) {
12950
12988
  const cc = sp.filter((x) => x.bo !== "phong").sort((p, q) => p.f - q.f);
12951
12989
  for (let i = 0; i + 1 < cc.length; i++) {
12952
12990
  const x = cc[i], y = cc[i + 1];
12953
- if (x.f + x.d > y.f - 0.06 && y.f > x.f + 0.3 && !x.khoa) {
12954
- ghiL("doi", x, "N8: cat duoi " + (x.f + x.d - y.f + 0.06).toFixed(2) + " s chong canh sau (2 chu cung hien)");
12955
- x.d = +(y.f - x.f - 0.06).toFixed(2);
12991
+ const coChu = (z) => !!String(z.giant || z.chu || z.tieu || "").trim(), he = coChu(x) && coChu(y) ? globalThis.__heChu ?? KHUON_TOPN.cat.heChu : 0;
12992
+ if (x.f + x.d > y.f - he && y.f > x.f + 0.3 && !x.khoa) {
12993
+ if (he) ghiL("doi", x, "N8: cat duoi " + (x.f + x.d - y.f + he).toFixed(2) + " s chong canh sau (2 chu cung hien)");
12994
+ x.d = +(y.f - x.f - he).toFixed(2);
12956
12995
  }
12957
12996
  }
12958
12997
  }
@@ -19035,6 +19074,11 @@ async function handleExport(currentProject, setExporting, setExportedBlob, addLo
19035
19074
  });
19036
19075
  } catch (e) {
19037
19076
  }
19077
+ try {
19078
+ const G3 = globalThis;
19079
+ if (G3.__kbNguon === "loi") window.__canhBaoAI = /hạn mức|quota|limit/i.test(String(G3.__kbLoi || "")) ? "AI c\u1EE7a Flow \u0111\xE3 h\u1EBFt h\u1EA1n m\u1EE9c h\xF4m nay \u2014 b\u1EA3n n\xE0y d\u1EF1ng kh\xF4ng c\xF3 k\u1ECBch b\u1EA3n AI (\xEDt c\u1EA3nh minh ho\u1EA1). Th\u1EED l\u1EA1i ng\xE0y mai \u0111\u1EC3 c\xF3 b\u1EA3n \u0111\u1EA7y \u0111\u1EE7." : "AI so\u1EA1n k\u1ECBch b\u1EA3n l\u1ED7i (" + String(G3.__kbLoi || "").slice(0, 60) + ") \u2014 b\u1EA3n d\u1EF1ng \u0111\u01A1n gi\u1EA3n. B\u1EA5m L\xE0m pro l\u1EA1i \u0111\u1EC3 th\u1EED l\u1EA7n n\u1EEFa.";
19080
+ } catch (e) {
19081
+ }
19038
19082
  try {
19039
19083
  window.__anhBu = lapAnhTheoKhuon(kb, window.__wsGocKB || currentProject.speechDraft?.analysis?.words || []);
19040
19084
  } catch (e) {
@@ -20816,7 +20860,7 @@ function datCauLenh(a) {
20816
20860
  on2 = true;
20817
20861
  window.addEventListener("message", async (ev) => {
20818
20862
  const d = ev.data;
20819
- if (!d || d.xvaiLoi112057 !== true) return;
20863
+ if (!d || d.xvaiLoi112357 !== true) return;
20820
20864
  const o = String(ev.origin || "");
20821
20865
  if (!(o.indexOf("https://flow.google.com") === 0 || o.indexOf("https://labs.google") === 0)) return;
20822
20866
  const tra = (kq) => {