karin-plugin-kkk 2.45.1-beta.0 → 2.45.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/config/default_config/config.json +5 -2
- package/config/default_config/cookies.yaml +4 -0
- package/config/default_config/kuaishou.yaml +3 -0
- package/config/default_config/xiaohongshu.yaml +3 -0
- package/lib/apps/admin.js +2 -2
- package/lib/build-metadata.json +5 -5
- package/lib/core_chunk/amagiClient.js +1 -1
- package/lib/core_chunk/db.js +1 -1
- package/lib/core_chunk/default.js +37997 -22889
- package/lib/core_chunk/main.js +1034 -29
- package/lib/core_chunk/vendor.js +523 -2589
- package/lib/root.js +1 -1
- package/lib/style.css +83 -0
- package/lib/template-registry.js +1 -1
- package/lib/web/assets/{CronEditor-By-hG-v8.js → CronEditor-SToxfZLf.js} +1 -1
- package/lib/web/assets/{DesktopLayout-_4M-Hi0T.js → DesktopLayout-wpebBuCj.js} +1 -1
- package/lib/web/assets/{MobileLayout-Dkxb7rZd.js → MobileLayout-DhcWgEcj.js} +1 -1
- package/lib/web/assets/{ThemeSwitch-C1cJylms.js → ThemeSwitch-Cm4QAM5e.js} +1 -1
- package/lib/web/assets/{index-CXrY4Bct.js → index-DBbIxsmd.js} +2 -2
- package/lib/web/assets/{separator-QN4bEOP0.js → separator-BQ8-sWCU.js} +1 -1
- package/lib/web/index.html +1 -1
- package/lib/web.config.js +1 -1
- package/package.json +2 -2
package/lib/core_chunk/vendor.js
CHANGED
|
@@ -4,8 +4,7 @@ import $, { createRequire } from "node:module";
|
|
|
4
4
|
import fs, { existsSync, readFileSync, writeSync } from "node:fs";
|
|
5
5
|
import minpath, { default as path } from "node:path";
|
|
6
6
|
import { fileURLToPath, fileURLToPath as urlToPath, pathToFileURL } from "node:url";
|
|
7
|
-
import crypto$1
|
|
8
|
-
import { gzipSync } from "node:zlib";
|
|
7
|
+
import crypto$1 from "node:crypto";
|
|
9
8
|
import jt from "fs";
|
|
10
9
|
import minproc from "node:process";
|
|
11
10
|
import { inspect } from "node:util";
|
|
@@ -541,6 +540,8 @@ function constantCatch(value) {
|
|
|
541
540
|
//#endregion
|
|
542
541
|
//#region ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/core.js
|
|
543
542
|
var _a$2;
|
|
543
|
+
/** A special constant with type `never` */
|
|
544
|
+
var NEVER = /*@__PURE__*/ Object.freeze({ status: "aborted" });
|
|
544
545
|
var _zodDesc = {
|
|
545
546
|
value: void 0,
|
|
546
547
|
enumerable: false
|
|
@@ -1032,6 +1033,7 @@ function datetime(args) {
|
|
|
1032
1033
|
var anyString = /^[\s\S]{0,}$/;
|
|
1033
1034
|
var integer = /^-?\d+$/;
|
|
1034
1035
|
var number$3 = /^-?\d+(?:\.\d+)?$/;
|
|
1036
|
+
var boolean$2 = /^(?:true|false)$/i;
|
|
1035
1037
|
var lowercase = /^[^A-Z]*$/;
|
|
1036
1038
|
var uppercase = /^[^a-z]*$/;
|
|
1037
1039
|
//#endregion
|
|
@@ -1835,6 +1837,24 @@ var $ZodNumberFormat = /*@__PURE__*/ $constructor("$ZodNumberFormat", (inst, def
|
|
|
1835
1837
|
$ZodCheckNumberFormat.init(inst, def);
|
|
1836
1838
|
$ZodNumber.init(inst, def);
|
|
1837
1839
|
});
|
|
1840
|
+
var $ZodBoolean = /*@__PURE__*/ $constructor("$ZodBoolean", (inst, def) => {
|
|
1841
|
+
$ZodType.init(inst, def);
|
|
1842
|
+
inst._zod.pattern = boolean$2;
|
|
1843
|
+
inst._zod.parse = (payload, _ctx) => {
|
|
1844
|
+
if (def.coerce) try {
|
|
1845
|
+
payload.value = Boolean(payload.value);
|
|
1846
|
+
} catch (_) {}
|
|
1847
|
+
const input = payload.value;
|
|
1848
|
+
if (typeof input === "boolean") return payload;
|
|
1849
|
+
payload.issues.push({
|
|
1850
|
+
expected: "boolean",
|
|
1851
|
+
code: "invalid_type",
|
|
1852
|
+
input,
|
|
1853
|
+
inst
|
|
1854
|
+
});
|
|
1855
|
+
return payload;
|
|
1856
|
+
};
|
|
1857
|
+
});
|
|
1838
1858
|
var $ZodAny = /*@__PURE__*/ $constructor("$ZodAny", (inst, def) => {
|
|
1839
1859
|
$ZodType.init(inst, def);
|
|
1840
1860
|
inst._zod.parse = (payload) => payload;
|
|
@@ -2684,6 +2704,49 @@ function handlePipeResult(left, next, ctx) {
|
|
|
2684
2704
|
issues: left.issues
|
|
2685
2705
|
}, ctx);
|
|
2686
2706
|
}
|
|
2707
|
+
var $ZodCodec = /*@__PURE__*/ $constructor("$ZodCodec", (inst, def) => {
|
|
2708
|
+
$ZodType.init(inst, def);
|
|
2709
|
+
defineLazyInternal(inst, "values", (zod) => zod.def.in._zod.values);
|
|
2710
|
+
defineLazyInternal(inst, "optin", (zod) => zod.def.in._zod.optin);
|
|
2711
|
+
defineLazyInternal(inst, "optout", (zod) => zod.def.out._zod.optout);
|
|
2712
|
+
defineLazyInternal(inst, "propValues", (zod) => zod.def.in._zod.propValues);
|
|
2713
|
+
inst._zod.parse = (payload, ctx) => {
|
|
2714
|
+
if ((ctx.direction || "forward") === "forward") {
|
|
2715
|
+
const left = def.in._zod.run(payload, ctx);
|
|
2716
|
+
if (left instanceof Promise) return left.then((left) => handleCodecAResult(left, def, ctx));
|
|
2717
|
+
return handleCodecAResult(left, def, ctx);
|
|
2718
|
+
} else {
|
|
2719
|
+
const right = def.out._zod.run(payload, ctx);
|
|
2720
|
+
if (right instanceof Promise) return right.then((right) => handleCodecAResult(right, def, ctx));
|
|
2721
|
+
return handleCodecAResult(right, def, ctx);
|
|
2722
|
+
}
|
|
2723
|
+
};
|
|
2724
|
+
});
|
|
2725
|
+
function handleCodecAResult(result, def, ctx) {
|
|
2726
|
+
if (result.issues.length) {
|
|
2727
|
+
result.aborted = true;
|
|
2728
|
+
return result;
|
|
2729
|
+
}
|
|
2730
|
+
if ((ctx.direction || "forward") === "forward") {
|
|
2731
|
+
const transformed = def.transform(result.value, result);
|
|
2732
|
+
if (transformed instanceof Promise) return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));
|
|
2733
|
+
return handleCodecTxResult(result, transformed, def.out, ctx);
|
|
2734
|
+
} else {
|
|
2735
|
+
const transformed = def.reverseTransform(result.value, result);
|
|
2736
|
+
if (transformed instanceof Promise) return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));
|
|
2737
|
+
return handleCodecTxResult(result, transformed, def.in, ctx);
|
|
2738
|
+
}
|
|
2739
|
+
}
|
|
2740
|
+
function handleCodecTxResult(left, value, nextSchema, ctx) {
|
|
2741
|
+
if (left.issues.length) {
|
|
2742
|
+
left.aborted = true;
|
|
2743
|
+
return left;
|
|
2744
|
+
}
|
|
2745
|
+
return nextSchema._zod.run({
|
|
2746
|
+
value,
|
|
2747
|
+
issues: left.issues
|
|
2748
|
+
}, ctx);
|
|
2749
|
+
}
|
|
2687
2750
|
var $ZodReadonly = /*@__PURE__*/ $constructor("$ZodReadonly", (inst, def) => {
|
|
2688
2751
|
$ZodType.init(inst, def);
|
|
2689
2752
|
defineLazyInternal(inst, "propValues", (zod) => zod.def.innerType._zod.propValues);
|
|
@@ -3444,6 +3507,13 @@ function _int(Class, params) {
|
|
|
3444
3507
|
});
|
|
3445
3508
|
}
|
|
3446
3509
|
// @__NO_SIDE_EFFECTS__
|
|
3510
|
+
function _boolean(Class, params) {
|
|
3511
|
+
return new Class({
|
|
3512
|
+
type: "boolean",
|
|
3513
|
+
...normalizeParams(params)
|
|
3514
|
+
});
|
|
3515
|
+
}
|
|
3516
|
+
// @__NO_SIDE_EFFECTS__
|
|
3447
3517
|
function _any(Class) {
|
|
3448
3518
|
return new Class({ type: "any" });
|
|
3449
3519
|
}
|
|
@@ -3650,6 +3720,71 @@ function _check(fn, params) {
|
|
|
3650
3720
|
ch._zod.check = fn;
|
|
3651
3721
|
return ch;
|
|
3652
3722
|
}
|
|
3723
|
+
// @__NO_SIDE_EFFECTS__
|
|
3724
|
+
function _stringbool(Classes, _params) {
|
|
3725
|
+
const params = normalizeParams(_params);
|
|
3726
|
+
let truthyArray = params.truthy ?? [
|
|
3727
|
+
"true",
|
|
3728
|
+
"1",
|
|
3729
|
+
"yes",
|
|
3730
|
+
"on",
|
|
3731
|
+
"y",
|
|
3732
|
+
"enabled"
|
|
3733
|
+
];
|
|
3734
|
+
let falsyArray = params.falsy ?? [
|
|
3735
|
+
"false",
|
|
3736
|
+
"0",
|
|
3737
|
+
"no",
|
|
3738
|
+
"off",
|
|
3739
|
+
"n",
|
|
3740
|
+
"disabled"
|
|
3741
|
+
];
|
|
3742
|
+
if (params.case !== "sensitive") {
|
|
3743
|
+
truthyArray = truthyArray.map((v) => typeof v === "string" ? v.toLowerCase() : v);
|
|
3744
|
+
falsyArray = falsyArray.map((v) => typeof v === "string" ? v.toLowerCase() : v);
|
|
3745
|
+
}
|
|
3746
|
+
const truthySet = new Set(truthyArray);
|
|
3747
|
+
const falsySet = new Set(falsyArray);
|
|
3748
|
+
const _Codec = Classes.Codec ?? $ZodCodec;
|
|
3749
|
+
const _Boolean = Classes.Boolean ?? $ZodBoolean;
|
|
3750
|
+
const codec = new _Codec({
|
|
3751
|
+
type: "pipe",
|
|
3752
|
+
in: new (Classes.String ?? $ZodString)({
|
|
3753
|
+
type: "string",
|
|
3754
|
+
error: params.error
|
|
3755
|
+
}),
|
|
3756
|
+
out: new _Boolean({
|
|
3757
|
+
type: "boolean",
|
|
3758
|
+
error: params.error
|
|
3759
|
+
}),
|
|
3760
|
+
transform: ((input, payload) => {
|
|
3761
|
+
let data = input;
|
|
3762
|
+
if (params.case !== "sensitive") data = data.toLowerCase();
|
|
3763
|
+
if (truthySet.has(data)) return true;
|
|
3764
|
+
else if (falsySet.has(data)) return false;
|
|
3765
|
+
else {
|
|
3766
|
+
payload.issues.push({
|
|
3767
|
+
code: "invalid_value",
|
|
3768
|
+
expected: "stringbool",
|
|
3769
|
+
values: [...truthySet, ...falsySet],
|
|
3770
|
+
input: payload.value,
|
|
3771
|
+
inst: codec,
|
|
3772
|
+
continue: false
|
|
3773
|
+
});
|
|
3774
|
+
return {};
|
|
3775
|
+
}
|
|
3776
|
+
}),
|
|
3777
|
+
reverseTransform: ((input, _payload) => {
|
|
3778
|
+
if (input === true) return truthyArray[0] || "true";
|
|
3779
|
+
else return falsyArray[0] || "false";
|
|
3780
|
+
}),
|
|
3781
|
+
error: params.error
|
|
3782
|
+
});
|
|
3783
|
+
codec._zod.bag.truthy = truthyArray;
|
|
3784
|
+
codec._zod.bag.falsy = falsyArray;
|
|
3785
|
+
codec._zod.bag.case = params.case ?? "insensitive";
|
|
3786
|
+
return codec;
|
|
3787
|
+
}
|
|
3653
3788
|
//#endregion
|
|
3654
3789
|
//#region ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/to-json-schema.js
|
|
3655
3790
|
function assignProps$1(target, ...sources) {
|
|
@@ -5301,6 +5436,14 @@ var ZodNumberFormat = /*@__PURE__*/ $constructor("ZodNumberFormat", (inst, def)
|
|
|
5301
5436
|
function int(params) {
|
|
5302
5437
|
return /* @__PURE__ */ _int(ZodNumberFormat, params);
|
|
5303
5438
|
}
|
|
5439
|
+
var ZodBoolean = /*@__PURE__*/ $constructor("ZodBoolean", (inst, def) => {
|
|
5440
|
+
$ZodBoolean.init(inst, def);
|
|
5441
|
+
ZodType.init(inst, def);
|
|
5442
|
+
inst._zod.processJSONSchema = (ctx, json, params) => booleanProcessor(inst, ctx, json, params);
|
|
5443
|
+
});
|
|
5444
|
+
function boolean$1(params) {
|
|
5445
|
+
return /* @__PURE__ */ _boolean(ZodBoolean, params);
|
|
5446
|
+
}
|
|
5304
5447
|
var ZodAny = /*@__PURE__*/ $constructor("ZodAny", (inst, def) => {
|
|
5305
5448
|
$ZodAny.init(inst, def);
|
|
5306
5449
|
ZodType.init(inst, def);
|
|
@@ -5650,6 +5793,10 @@ function pipe(in_, out) {
|
|
|
5650
5793
|
out
|
|
5651
5794
|
});
|
|
5652
5795
|
}
|
|
5796
|
+
var ZodCodec = /*@__PURE__*/ $constructor("ZodCodec", (inst, def) => {
|
|
5797
|
+
ZodPipe.init(inst, def);
|
|
5798
|
+
$ZodCodec.init(inst, def);
|
|
5799
|
+
});
|
|
5653
5800
|
var ZodReadonly = /*@__PURE__*/ $constructor("ZodReadonly", (inst, def) => {
|
|
5654
5801
|
$ZodReadonly.init(inst, def);
|
|
5655
5802
|
ZodType.init(inst, def);
|
|
@@ -5673,2316 +5820,17 @@ function refine(fn, _params = {}) {
|
|
|
5673
5820
|
function superRefine(fn, params) {
|
|
5674
5821
|
return /* @__PURE__ */ _superRefine(fn, params);
|
|
5675
5822
|
}
|
|
5823
|
+
var stringbool = (...args) => /* @__PURE__ */ _stringbool({
|
|
5824
|
+
Codec: ZodCodec,
|
|
5825
|
+
Boolean: ZodBoolean,
|
|
5826
|
+
String: ZodString
|
|
5827
|
+
}, ...args);
|
|
5676
5828
|
//#endregion
|
|
5677
5829
|
//#region ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/coerce.js
|
|
5678
5830
|
function number$1(params) {
|
|
5679
5831
|
return /* @__PURE__ */ _coercedNumber(ZodNumber, params);
|
|
5680
5832
|
}
|
|
5681
5833
|
//#endregion
|
|
5682
|
-
//#region ../../node_modules/.pnpm/@ikenxuan+xhshow-ts@1.1.0/node_modules/@ikenxuan/xhshow-ts/dist/index.mjs
|
|
5683
|
-
var CryptoConfig = class CryptoConfig {
|
|
5684
|
-
DES_KEY = "zbp30y86";
|
|
5685
|
-
GID_URL = "https://as.xiaohongshu.com/api/sec/v1/shield/webprofile";
|
|
5686
|
-
DATA_PLATFORM = "Windows";
|
|
5687
|
-
DATA_SVN = "2";
|
|
5688
|
-
DATA_SDK_VERSION = "4.3.5";
|
|
5689
|
-
DATA_WEB_BUILD = "6.3.0";
|
|
5690
|
-
MAX_32BIT = 4294967295;
|
|
5691
|
-
MAX_SIGNED_32BIT = 2147483647;
|
|
5692
|
-
MAX_BYTE = 255;
|
|
5693
|
-
STANDARD_BASE64_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
5694
|
-
CUSTOM_BASE64_ALPHABET = "ZmserbBoHQtNP+wOcza/LpngG8yJq42KWYj0DSfdikx3VT16IlUAFM97hECvuRX5";
|
|
5695
|
-
X3_BASE64_ALPHABET = "MfgqrsbcyzPQRStuvC7mn501HIJBo2DEFTKdeNOwxWXYZap89+/A4UVLhijkl63G";
|
|
5696
|
-
HEX_KEY = "71a302257793271ddd273bcee3e4b98d9d7935e1da33f5765e2ea8afb6dc77a51a499d23b67c20660025860cbf13d4540d92497f58686c574e508f46e1956344f39139bf4faf22a3eef120b79258145b2feb5193b6478669961298e79bedca646e1a693a926154a5a7a1bd1cf0dedb742f917a747a1e388b234f2277516db7116035439730fa61e9822a0eca7bff72d8";
|
|
5697
|
-
EXPECTED_HEX_LENGTH = 32;
|
|
5698
|
-
OUTPUT_BYTE_COUNT = 8;
|
|
5699
|
-
HEX_CHUNK_SIZE = 2;
|
|
5700
|
-
VERSION_BYTES = [
|
|
5701
|
-
121,
|
|
5702
|
-
104,
|
|
5703
|
-
96,
|
|
5704
|
-
41
|
|
5705
|
-
];
|
|
5706
|
-
PAYLOAD_LENGTH = 144;
|
|
5707
|
-
A1_LENGTH = 52;
|
|
5708
|
-
APP_ID_LENGTH = 10;
|
|
5709
|
-
MD5_XOR_LENGTH = 8;
|
|
5710
|
-
A3_PREFIX = [
|
|
5711
|
-
2,
|
|
5712
|
-
97,
|
|
5713
|
-
51,
|
|
5714
|
-
16
|
|
5715
|
-
];
|
|
5716
|
-
TIMESTAMP_LE_LENGTH = 8;
|
|
5717
|
-
SEQUENCE_VALUE_MIN = 15;
|
|
5718
|
-
SEQUENCE_VALUE_MAX = 50;
|
|
5719
|
-
WINDOW_PROPS_LENGTH_MIN = 1e3;
|
|
5720
|
-
WINDOW_PROPS_LENGTH_MAX = 1200;
|
|
5721
|
-
SESSION_WINDOW_PROPS_INIT_MIN = 1e3;
|
|
5722
|
-
SESSION_WINDOW_PROPS_INIT_MAX = 2e3;
|
|
5723
|
-
SESSION_SEQUENCE_INIT_MIN = 15;
|
|
5724
|
-
SESSION_SEQUENCE_INIT_MAX = 17;
|
|
5725
|
-
SESSION_SEQUENCE_STEP_MIN = 0;
|
|
5726
|
-
SESSION_SEQUENCE_STEP_MAX = 1;
|
|
5727
|
-
SESSION_WINDOW_PROPS_STEP_MIN = 1;
|
|
5728
|
-
SESSION_WINDOW_PROPS_STEP_MAX = 10;
|
|
5729
|
-
CHECKSUM_VERSION = 1;
|
|
5730
|
-
CHECKSUM_XOR_KEY = 115;
|
|
5731
|
-
CHECKSUM_FIXED_TAIL = [
|
|
5732
|
-
249,
|
|
5733
|
-
65,
|
|
5734
|
-
103,
|
|
5735
|
-
103,
|
|
5736
|
-
201,
|
|
5737
|
-
181,
|
|
5738
|
-
131,
|
|
5739
|
-
99,
|
|
5740
|
-
94,
|
|
5741
|
-
7,
|
|
5742
|
-
68,
|
|
5743
|
-
250,
|
|
5744
|
-
132,
|
|
5745
|
-
21
|
|
5746
|
-
];
|
|
5747
|
-
ENV_TABLE = [
|
|
5748
|
-
115,
|
|
5749
|
-
248,
|
|
5750
|
-
83,
|
|
5751
|
-
102,
|
|
5752
|
-
103,
|
|
5753
|
-
201,
|
|
5754
|
-
181,
|
|
5755
|
-
131,
|
|
5756
|
-
99,
|
|
5757
|
-
94,
|
|
5758
|
-
4,
|
|
5759
|
-
68,
|
|
5760
|
-
250,
|
|
5761
|
-
132,
|
|
5762
|
-
21
|
|
5763
|
-
];
|
|
5764
|
-
ENV_CHECKS_DEFAULT = [
|
|
5765
|
-
0,
|
|
5766
|
-
1,
|
|
5767
|
-
18,
|
|
5768
|
-
1,
|
|
5769
|
-
0,
|
|
5770
|
-
0,
|
|
5771
|
-
0,
|
|
5772
|
-
0,
|
|
5773
|
-
0,
|
|
5774
|
-
0,
|
|
5775
|
-
3,
|
|
5776
|
-
0,
|
|
5777
|
-
0,
|
|
5778
|
-
0,
|
|
5779
|
-
0
|
|
5780
|
-
];
|
|
5781
|
-
HASH_IV = [
|
|
5782
|
-
1831565813,
|
|
5783
|
-
461845907,
|
|
5784
|
-
2246822507,
|
|
5785
|
-
3266489909
|
|
5786
|
-
];
|
|
5787
|
-
ENV_FINGERPRINT_XOR_KEY = 41;
|
|
5788
|
-
ENV_FINGERPRINT_TIME_OFFSET_MIN = 10;
|
|
5789
|
-
ENV_FINGERPRINT_TIME_OFFSET_MAX = 50;
|
|
5790
|
-
SIGNATURE_DATA_TEMPLATE = {
|
|
5791
|
-
x0: "4.4.3",
|
|
5792
|
-
x1: "xhs-pc-web",
|
|
5793
|
-
x2: "Windows",
|
|
5794
|
-
x3: "",
|
|
5795
|
-
x4: ""
|
|
5796
|
-
};
|
|
5797
|
-
X3_PREFIX = "mns0301_";
|
|
5798
|
-
XYS_PREFIX = "XYS_";
|
|
5799
|
-
XYW_PREFIX = "XYW_";
|
|
5800
|
-
XYW_SIGN_SVN = "56";
|
|
5801
|
-
XYW_SIGN_TYPE = "x2";
|
|
5802
|
-
XYW_SIGN_VERSION = "1";
|
|
5803
|
-
XYW_AES_KEY = "7cc4adla5ay0701v";
|
|
5804
|
-
XYW_AES_IV = "4uzjr7mbsibcaldp";
|
|
5805
|
-
XYW_ENV_FLAGS_DEFAULT = "0|0|0|1|0|0|1|0|0|0|1|0|0|0|0|1|0|0|1";
|
|
5806
|
-
HEX_CHARS = "abcdef0123456789";
|
|
5807
|
-
XRAY_TRACE_ID_SEQ_MAX = 8388607;
|
|
5808
|
-
XRAY_TRACE_ID_TIMESTAMP_SHIFT = 23;
|
|
5809
|
-
XRAY_TRACE_ID_PART1_LENGTH = 16;
|
|
5810
|
-
XRAY_TRACE_ID_PART2_LENGTH = 16;
|
|
5811
|
-
B3_TRACE_ID_LENGTH = 16;
|
|
5812
|
-
B1_SECRET_KEY = "xhswebmplfbt";
|
|
5813
|
-
XRAP_SDK_VERSION = 10300;
|
|
5814
|
-
SIGNATURE_XSCOMMON_TEMPLATE = {
|
|
5815
|
-
s0: 5,
|
|
5816
|
-
s1: "",
|
|
5817
|
-
x0: "1",
|
|
5818
|
-
x1: "4.3.5",
|
|
5819
|
-
x2: "Windows",
|
|
5820
|
-
x3: "xhs-pc-web",
|
|
5821
|
-
x4: "4.86.0",
|
|
5822
|
-
x5: "",
|
|
5823
|
-
x6: "",
|
|
5824
|
-
x7: "",
|
|
5825
|
-
x8: "",
|
|
5826
|
-
x9: -596800761,
|
|
5827
|
-
x10: 0,
|
|
5828
|
-
x11: "normal"
|
|
5829
|
-
};
|
|
5830
|
-
PUBLIC_USERAGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36 Edg/142.0.0.0";
|
|
5831
|
-
/**
|
|
5832
|
-
* Create a new config instance with overridden values
|
|
5833
|
-
*/
|
|
5834
|
-
withOverrides(overrides) {
|
|
5835
|
-
const newConfig = new CryptoConfig();
|
|
5836
|
-
Object.assign(newConfig, overrides);
|
|
5837
|
-
return newConfig;
|
|
5838
|
-
}
|
|
5839
|
-
};
|
|
5840
|
-
var BitOperations = class {
|
|
5841
|
-
config;
|
|
5842
|
-
constructor(config) {
|
|
5843
|
-
this.config = config || new CryptoConfig();
|
|
5844
|
-
}
|
|
5845
|
-
normalizeTo32bit(value) {
|
|
5846
|
-
return value & this.config.MAX_32BIT;
|
|
5847
|
-
}
|
|
5848
|
-
toSigned32bit(unsignedValue) {
|
|
5849
|
-
if (unsignedValue > this.config.MAX_SIGNED_32BIT) return unsignedValue - 4294967296;
|
|
5850
|
-
return unsignedValue;
|
|
5851
|
-
}
|
|
5852
|
-
computeSeedValue(seed32bit) {
|
|
5853
|
-
const normalizedSeed = this.normalizeTo32bit(seed32bit);
|
|
5854
|
-
const shift15Bits = normalizedSeed >> 15;
|
|
5855
|
-
const shift13Bits = normalizedSeed >> 13;
|
|
5856
|
-
const shift12Bits = normalizedSeed >> 12;
|
|
5857
|
-
const shift10Bits = normalizedSeed >> 10;
|
|
5858
|
-
const shiftedResult = ((shift15Bits & ~shift13Bits | shift13Bits & ~shift15Bits) ^ shift12Bits ^ shift10Bits) << 31 & this.config.MAX_32BIT;
|
|
5859
|
-
return this.toSigned32bit(shiftedResult);
|
|
5860
|
-
}
|
|
5861
|
-
xorTransformArray(sourceIntegers) {
|
|
5862
|
-
const result = new Uint8Array(sourceIntegers.length);
|
|
5863
|
-
const keyBytes = Buffer.from(this.config.HEX_KEY, "hex");
|
|
5864
|
-
const keyLength = keyBytes.length;
|
|
5865
|
-
for (let i = 0; i < sourceIntegers.length; i++) if (i < keyLength) result[i] = (sourceIntegers[i] ^ keyBytes[i]) & 255;
|
|
5866
|
-
else result[i] = sourceIntegers[i] & 255;
|
|
5867
|
-
return result;
|
|
5868
|
-
}
|
|
5869
|
-
};
|
|
5870
|
-
var Base64Encoder = class {
|
|
5871
|
-
config;
|
|
5872
|
-
customEncodeTable;
|
|
5873
|
-
customDecodeTable;
|
|
5874
|
-
x3EncodeTable;
|
|
5875
|
-
x3DecodeTable;
|
|
5876
|
-
constructor(config) {
|
|
5877
|
-
this.config = config || new CryptoConfig();
|
|
5878
|
-
this.customEncodeTable = this.buildTranslationTable(this.config.STANDARD_BASE64_ALPHABET, this.config.CUSTOM_BASE64_ALPHABET);
|
|
5879
|
-
this.customDecodeTable = this.buildTranslationTable(this.config.CUSTOM_BASE64_ALPHABET, this.config.STANDARD_BASE64_ALPHABET);
|
|
5880
|
-
this.x3EncodeTable = this.buildTranslationTable(this.config.STANDARD_BASE64_ALPHABET, this.config.X3_BASE64_ALPHABET);
|
|
5881
|
-
this.x3DecodeTable = this.buildTranslationTable(this.config.X3_BASE64_ALPHABET, this.config.STANDARD_BASE64_ALPHABET);
|
|
5882
|
-
}
|
|
5883
|
-
buildTranslationTable(from, to) {
|
|
5884
|
-
const table = /* @__PURE__ */ new Map();
|
|
5885
|
-
for (let i = 0; i < from.length; i++) table.set(from[i], to[i]);
|
|
5886
|
-
return table;
|
|
5887
|
-
}
|
|
5888
|
-
translate(str, table) {
|
|
5889
|
-
let result = "";
|
|
5890
|
-
for (const char of str) result += table.get(char) ?? char;
|
|
5891
|
-
return result;
|
|
5892
|
-
}
|
|
5893
|
-
/**
|
|
5894
|
-
* Encode a string using custom Base64 alphabet
|
|
5895
|
-
*/
|
|
5896
|
-
encode(dataToEncode) {
|
|
5897
|
-
const standardEncoded = Buffer.from(dataToEncode, "utf8").toString("base64");
|
|
5898
|
-
return this.translate(standardEncoded, this.customEncodeTable);
|
|
5899
|
-
}
|
|
5900
|
-
/**
|
|
5901
|
-
* Decode string using custom Base64 alphabet
|
|
5902
|
-
*/
|
|
5903
|
-
decode(encodedString) {
|
|
5904
|
-
const standardEncoded = this.translate(encodedString, this.customDecodeTable);
|
|
5905
|
-
try {
|
|
5906
|
-
return Buffer.from(standardEncoded, "base64").toString("utf8");
|
|
5907
|
-
} catch (e) {
|
|
5908
|
-
throw new Error("Invalid Base64 input: unable to decode string");
|
|
5909
|
-
}
|
|
5910
|
-
}
|
|
5911
|
-
/**
|
|
5912
|
-
* Decode x3 signature using X3_BASE64_ALPHABET
|
|
5913
|
-
*/
|
|
5914
|
-
decodeX3(encodedString) {
|
|
5915
|
-
const standardEncoded = this.translate(encodedString, this.x3DecodeTable);
|
|
5916
|
-
try {
|
|
5917
|
-
return Buffer.from(standardEncoded, "base64");
|
|
5918
|
-
} catch (e) {
|
|
5919
|
-
throw new Error("Invalid Base64 input: unable to decode string");
|
|
5920
|
-
}
|
|
5921
|
-
}
|
|
5922
|
-
/**
|
|
5923
|
-
* Encode x3 signature using X3_BASE64_ALPHABET
|
|
5924
|
-
*/
|
|
5925
|
-
encodeX3(inputBytes) {
|
|
5926
|
-
const standardEncoded = Buffer.from(inputBytes).toString("base64");
|
|
5927
|
-
return this.translate(standardEncoded, this.x3EncodeTable);
|
|
5928
|
-
}
|
|
5929
|
-
};
|
|
5930
|
-
var HexProcessor = class {
|
|
5931
|
-
config;
|
|
5932
|
-
constructor() {
|
|
5933
|
-
this.config = new CryptoConfig();
|
|
5934
|
-
}
|
|
5935
|
-
hexStringToBytes(hexString) {
|
|
5936
|
-
const byteValues = [];
|
|
5937
|
-
for (let i = 0; i < hexString.length; i += this.config.HEX_CHUNK_SIZE) {
|
|
5938
|
-
const hexChunk = hexString.slice(i, i + this.config.HEX_CHUNK_SIZE);
|
|
5939
|
-
byteValues.push(parseInt(hexChunk, 16));
|
|
5940
|
-
}
|
|
5941
|
-
return byteValues;
|
|
5942
|
-
}
|
|
5943
|
-
processHexParameter(hexString, xorKey) {
|
|
5944
|
-
if (hexString.length !== this.config.EXPECTED_HEX_LENGTH) throw new Error(`hex parameter must be ${this.config.EXPECTED_HEX_LENGTH} characters`);
|
|
5945
|
-
return this.hexStringToBytes(hexString).map((byteVal) => byteVal ^ xorKey).slice(0, this.config.OUTPUT_BYTE_COUNT);
|
|
5946
|
-
}
|
|
5947
|
-
};
|
|
5948
|
-
var BASE36_CHARS = "0123456789abcdefghijklmnopqrstuvwxyz";
|
|
5949
|
-
var A1_CHARSET = "abcdefghijklmnopqrstuvwxyz1234567890";
|
|
5950
|
-
var STD_CRC32_TABLE = null;
|
|
5951
|
-
function stdCrc32(bytes) {
|
|
5952
|
-
if (STD_CRC32_TABLE === null) {
|
|
5953
|
-
const tbl = new Array(256);
|
|
5954
|
-
for (let n = 0; n < 256; n++) {
|
|
5955
|
-
let c = n;
|
|
5956
|
-
for (let k = 0; k < 8; k++) c = c & 1 ? c >>> 1 ^ 3988292384 : c >>> 1;
|
|
5957
|
-
tbl[n] = c >>> 0;
|
|
5958
|
-
}
|
|
5959
|
-
STD_CRC32_TABLE = tbl;
|
|
5960
|
-
}
|
|
5961
|
-
let crc = 4294967295;
|
|
5962
|
-
for (let i = 0; i < bytes.length; i++) crc = (STD_CRC32_TABLE[(crc ^ bytes[i]) & 255] ^ crc >>> 8) >>> 0;
|
|
5963
|
-
return (crc ^ 4294967295) >>> 0;
|
|
5964
|
-
}
|
|
5965
|
-
/**
|
|
5966
|
-
* Convert a non-negative BigInt to a base36 string.
|
|
5967
|
-
*/
|
|
5968
|
-
function intToBase36(value) {
|
|
5969
|
-
if (value === 0n) return "0";
|
|
5970
|
-
let result = "";
|
|
5971
|
-
const base = 36n;
|
|
5972
|
-
while (value > 0n) {
|
|
5973
|
-
const remainder = value % base;
|
|
5974
|
-
value = value / base;
|
|
5975
|
-
result = BASE36_CHARS[Number(remainder)] + result;
|
|
5976
|
-
}
|
|
5977
|
-
return result;
|
|
5978
|
-
}
|
|
5979
|
-
var RandomGenerator = class {
|
|
5980
|
-
config;
|
|
5981
|
-
constructor() {
|
|
5982
|
-
this.config = new CryptoConfig();
|
|
5983
|
-
}
|
|
5984
|
-
/**
|
|
5985
|
-
* Generate random byte array
|
|
5986
|
-
*/
|
|
5987
|
-
generateRandomBytes(byteCount) {
|
|
5988
|
-
return Array.from({ length: byteCount }, () => Math.floor(Math.random() * (this.config.MAX_BYTE + 1)));
|
|
5989
|
-
}
|
|
5990
|
-
/**
|
|
5991
|
-
* Generate random integer in range
|
|
5992
|
-
*/
|
|
5993
|
-
generateRandomByteInRange(minVal, maxVal) {
|
|
5994
|
-
return Math.floor(Math.random() * (maxVal - minVal + 1)) + minVal;
|
|
5995
|
-
}
|
|
5996
|
-
/**
|
|
5997
|
-
* Generate 32-bit random integer
|
|
5998
|
-
*/
|
|
5999
|
-
generateRandomInt() {
|
|
6000
|
-
return Math.floor(Math.random() * (this.config.MAX_32BIT + 1));
|
|
6001
|
-
}
|
|
6002
|
-
/**
|
|
6003
|
-
* Generate x-b3-traceid (16 random hex characters)
|
|
6004
|
-
*/
|
|
6005
|
-
generateB3TraceId() {
|
|
6006
|
-
let result = "";
|
|
6007
|
-
for (let i = 0; i < this.config.B3_TRACE_ID_LENGTH; i++) result += this.config.HEX_CHARS[Math.floor(Math.random() * this.config.HEX_CHARS.length)];
|
|
6008
|
-
return result;
|
|
6009
|
-
}
|
|
6010
|
-
/**
|
|
6011
|
-
* Generate x-xray-traceid (32 characters: 16 timestamp+seq + 16 random)
|
|
6012
|
-
*/
|
|
6013
|
-
generateXrayTraceId(timestamp, seq) {
|
|
6014
|
-
if (timestamp === void 0) timestamp = Date.now();
|
|
6015
|
-
if (seq === void 0) seq = Math.floor(Math.random() * (this.config.XRAY_TRACE_ID_SEQ_MAX + 1));
|
|
6016
|
-
const part1 = (BigInt(timestamp) << BigInt(this.config.XRAY_TRACE_ID_TIMESTAMP_SHIFT) | BigInt(seq)).toString(16).padStart(this.config.XRAY_TRACE_ID_PART1_LENGTH, "0");
|
|
6017
|
-
let part2 = "";
|
|
6018
|
-
for (let i = 0; i < this.config.XRAY_TRACE_ID_PART2_LENGTH; i++) part2 += this.config.HEX_CHARS[Math.floor(Math.random() * this.config.HEX_CHARS.length)];
|
|
6019
|
-
return part1 + part2;
|
|
6020
|
-
}
|
|
6021
|
-
/**
|
|
6022
|
-
* Generate a random ASCII string of the given length
|
|
6023
|
-
*/
|
|
6024
|
-
static generateRandomAscii(length, charset = "abcdefghijklmnopqrstuvwxyz0123456789") {
|
|
6025
|
-
let result = "";
|
|
6026
|
-
for (let i = 0; i < length; i++) result += charset[Math.floor(Math.random() * charset.length)];
|
|
6027
|
-
return result;
|
|
6028
|
-
}
|
|
6029
|
-
/**
|
|
6030
|
-
* Generate an a1 cookie value (52 characters)
|
|
6031
|
-
*/
|
|
6032
|
-
static generateA1() {
|
|
6033
|
-
const tsHex = Math.floor(Date.now()).toString(16);
|
|
6034
|
-
let randomStr = "";
|
|
6035
|
-
for (let i = 0; i < 30; i++) randomStr += A1_CHARSET[Math.floor(Math.random() * 36)];
|
|
6036
|
-
const aPart = tsHex + randomStr + "50000";
|
|
6037
|
-
const crc = stdCrc32(Buffer.from(aPart)) >>> 0;
|
|
6038
|
-
return (aPart + String(crc)).slice(0, 52);
|
|
6039
|
-
}
|
|
6040
|
-
/**
|
|
6041
|
-
* Generate web_id (32-character hex MD5) from an a1 cookie value
|
|
6042
|
-
*/
|
|
6043
|
-
static generateWebId(a1) {
|
|
6044
|
-
return createHash("md5").update(a1).digest("hex");
|
|
6045
|
-
}
|
|
6046
|
-
/**
|
|
6047
|
-
* Generate search_id for search endpoints (base36 of (timestamp_ms << 64) + random)
|
|
6048
|
-
*/
|
|
6049
|
-
generateSearchId() {
|
|
6050
|
-
const timestampMs = BigInt(Date.now());
|
|
6051
|
-
const randomPart = BigInt(Math.ceil(2147483646 * Math.random()));
|
|
6052
|
-
return intToBase36((timestampMs << 64n) + randomPart);
|
|
6053
|
-
}
|
|
6054
|
-
/**
|
|
6055
|
-
* Generate search request_id for search endpoints. Format: "{random}-{timestamp_ms}"
|
|
6056
|
-
*/
|
|
6057
|
-
generateSearchRequestId() {
|
|
6058
|
-
const timestampMs = Date.now();
|
|
6059
|
-
return `${Math.ceil(2147483646 * Math.random())}-${timestampMs}`;
|
|
6060
|
-
}
|
|
6061
|
-
};
|
|
6062
|
-
/**
|
|
6063
|
-
* Extract URI path from full URL (removes protocol, host, query, fragment)
|
|
6064
|
-
*/
|
|
6065
|
-
function extractUri(url) {
|
|
6066
|
-
if (!url || typeof url !== "string") throw new Error("URL must be a non-empty string");
|
|
6067
|
-
url = url.trim();
|
|
6068
|
-
try {
|
|
6069
|
-
if (url.startsWith("http://") || url.startsWith("https://")) {
|
|
6070
|
-
const path = new URL(url).pathname;
|
|
6071
|
-
if (!path || path === "/") throw new Error(`Cannot extract valid URI path from URL: ${url}`);
|
|
6072
|
-
return path;
|
|
6073
|
-
}
|
|
6074
|
-
const queryIndex = url.indexOf("?");
|
|
6075
|
-
const path = queryIndex >= 0 ? url.substring(0, queryIndex) : url;
|
|
6076
|
-
if (!path || path === "/") throw new Error(`Cannot extract valid URI path from URL: ${url}`);
|
|
6077
|
-
return path;
|
|
6078
|
-
} catch (e) {
|
|
6079
|
-
if (e instanceof Error && e.message.includes("Cannot extract")) throw e;
|
|
6080
|
-
throw new Error(`Cannot extract valid URI path from URL: ${url}`);
|
|
6081
|
-
}
|
|
6082
|
-
}
|
|
6083
|
-
/**
|
|
6084
|
-
* Build complete URL with query parameters (handles parameter escaping)
|
|
6085
|
-
*
|
|
6086
|
-
* IMPORTANT: This function uses XHS platform-specific encoding rules.
|
|
6087
|
-
* Only '=' characters are encoded as '%3D'. Other special characters
|
|
6088
|
-
* (including ',') are NOT encoded, as required by XHS signature algorithm.
|
|
6089
|
-
*/
|
|
6090
|
-
function buildUrl(baseUrl, params) {
|
|
6091
|
-
if (!baseUrl || typeof baseUrl !== "string") throw new Error("baseUrl must be a non-empty string");
|
|
6092
|
-
if (!params) return baseUrl;
|
|
6093
|
-
const queryParts = [];
|
|
6094
|
-
for (const [key, value] of Object.entries(params)) {
|
|
6095
|
-
let formattedValue;
|
|
6096
|
-
if (Array.isArray(value)) formattedValue = value.map((v) => String(v)).join(",");
|
|
6097
|
-
else if (value !== null && value !== void 0) formattedValue = String(value);
|
|
6098
|
-
else formattedValue = "";
|
|
6099
|
-
const encodedValue = formattedValue.replace(/=/g, "%3D");
|
|
6100
|
-
queryParts.push(`${key}=${encodedValue}`);
|
|
6101
|
-
}
|
|
6102
|
-
const queryString = queryParts.join("&");
|
|
6103
|
-
let separator;
|
|
6104
|
-
if (!baseUrl.includes("?")) separator = "?";
|
|
6105
|
-
else if (baseUrl.endsWith("?") || baseUrl.endsWith("&")) separator = "";
|
|
6106
|
-
else separator = "&";
|
|
6107
|
-
return `${baseUrl}${separator}${queryString}`;
|
|
6108
|
-
}
|
|
6109
|
-
/**
|
|
6110
|
-
* Pure TypeScript xxHash32 implementation.
|
|
6111
|
-
*
|
|
6112
|
-
* Ported from the upstream Python `utils/hash.py`. Used by the x-rap-param
|
|
6113
|
-
* generator to compute integrity hashes over the request body and envelope.
|
|
6114
|
-
*/
|
|
6115
|
-
var MASK_32 = 4294967295;
|
|
6116
|
-
/**
|
|
6117
|
-
* 32-bit left rotation (unsigned)
|
|
6118
|
-
*/
|
|
6119
|
-
function rotl32$1(val, shift) {
|
|
6120
|
-
val = val >>> 0;
|
|
6121
|
-
return (val << shift | val >>> 32 - shift) >>> 0;
|
|
6122
|
-
}
|
|
6123
|
-
/**
|
|
6124
|
-
* Compute the xxHash32 digest of the given bytes.
|
|
6125
|
-
*
|
|
6126
|
-
* @param data - Input bytes
|
|
6127
|
-
* @param seed - Optional seed (default 0)
|
|
6128
|
-
* @returns Unsigned 32-bit hash value
|
|
6129
|
-
*/
|
|
6130
|
-
function xxh32(data, seed = 0) {
|
|
6131
|
-
const buf = data;
|
|
6132
|
-
const length = buf.length;
|
|
6133
|
-
let pos = 0;
|
|
6134
|
-
const prime1 = 2654435761;
|
|
6135
|
-
const prime2 = 2246822519;
|
|
6136
|
-
const prime3 = 3266489917;
|
|
6137
|
-
const prime4 = 668265263;
|
|
6138
|
-
const prime5 = 374761393;
|
|
6139
|
-
let digest;
|
|
6140
|
-
if (length >= 16) {
|
|
6141
|
-
let acc1 = seed + prime1 + prime2 >>> 0;
|
|
6142
|
-
let acc2 = seed + prime2 >>> 0;
|
|
6143
|
-
let acc3 = seed >>> 0;
|
|
6144
|
-
let acc4 = seed - prime1 >>> 0;
|
|
6145
|
-
const end = length - 16;
|
|
6146
|
-
while (pos <= end) for (let accRef = 0; accRef < 4; accRef++) {
|
|
6147
|
-
const word = readU32LE(buf, pos);
|
|
6148
|
-
pos += 4;
|
|
6149
|
-
if (accRef === 0) acc1 = Math.imul(rotl32$1(acc1 + Math.imul(word, prime2) >>> 0, 13), prime1) >>> 0;
|
|
6150
|
-
else if (accRef === 1) acc2 = Math.imul(rotl32$1(acc2 + Math.imul(word, prime2) >>> 0, 13), prime1) >>> 0;
|
|
6151
|
-
else if (accRef === 2) acc3 = Math.imul(rotl32$1(acc3 + Math.imul(word, prime2) >>> 0, 13), prime1) >>> 0;
|
|
6152
|
-
else acc4 = Math.imul(rotl32$1(acc4 + Math.imul(word, prime2) >>> 0, 13), prime1) >>> 0;
|
|
6153
|
-
}
|
|
6154
|
-
digest = rotl32$1(acc1, 1) + rotl32$1(acc2, 7) + rotl32$1(acc3, 12) + rotl32$1(acc4, 18) >>> 0;
|
|
6155
|
-
} else digest = seed + prime5 >>> 0;
|
|
6156
|
-
digest = digest + length >>> 0;
|
|
6157
|
-
while (pos + 4 <= length) {
|
|
6158
|
-
const word = readU32LE(buf, pos);
|
|
6159
|
-
pos += 4;
|
|
6160
|
-
digest = Math.imul(rotl32$1(digest + Math.imul(word, prime3) >>> 0, 17), prime4) >>> 0;
|
|
6161
|
-
}
|
|
6162
|
-
while (pos < length) {
|
|
6163
|
-
digest = Math.imul(rotl32$1(digest + Math.imul(buf[pos], prime5) >>> 0, 11), prime1) >>> 0;
|
|
6164
|
-
pos += 1;
|
|
6165
|
-
}
|
|
6166
|
-
digest ^= digest >>> 15;
|
|
6167
|
-
digest = Math.imul(digest, prime2) >>> 0;
|
|
6168
|
-
digest ^= digest >>> 13;
|
|
6169
|
-
digest = Math.imul(digest, prime3) >>> 0;
|
|
6170
|
-
digest ^= digest >>> 16;
|
|
6171
|
-
return (digest & MASK_32) >>> 0;
|
|
6172
|
-
}
|
|
6173
|
-
/**
|
|
6174
|
-
* Read a 32-bit little-endian unsigned integer from a byte buffer.
|
|
6175
|
-
*/
|
|
6176
|
-
function readU32LE(buf, off) {
|
|
6177
|
-
return (buf[off] | buf[off + 1] << 8 | buf[off + 2] << 16 | buf[off + 3] << 24) >>> 0;
|
|
6178
|
-
}
|
|
6179
|
-
/**
|
|
6180
|
-
* Sharding key generation for the `xy-direction` request header.
|
|
6181
|
-
*
|
|
6182
|
-
* Ported from the upstream Python `utils/sharding.py`. When a `user_id` is
|
|
6183
|
-
* provided, the key is derived deterministically via a MurmurHash3-x86-32
|
|
6184
|
-
* variant; otherwise a random value in [10, 100] is returned.
|
|
6185
|
-
*/
|
|
6186
|
-
var C1 = 3432918353;
|
|
6187
|
-
var C2 = 461845907;
|
|
6188
|
-
/**
|
|
6189
|
-
* 32-bit left rotation (unsigned)
|
|
6190
|
-
*/
|
|
6191
|
-
function rotl32(x, r) {
|
|
6192
|
-
x = x >>> 0;
|
|
6193
|
-
return (x << r | x >>> 32 - r) >>> 0;
|
|
6194
|
-
}
|
|
6195
|
-
/**
|
|
6196
|
-
* Compute the sharding key for the `xy-direction` header.
|
|
6197
|
-
*
|
|
6198
|
-
* @param userId - Optional user id. If omitted, a random value in [10, 100].
|
|
6199
|
-
* @returns Sharding key
|
|
6200
|
-
*/
|
|
6201
|
-
function getShardingKey(userId) {
|
|
6202
|
-
if (userId === null || userId === void 0) return Math.floor(Math.random() * 91) + 10;
|
|
6203
|
-
const data = Buffer.from(userId, "utf-8");
|
|
6204
|
-
const length = data.length;
|
|
6205
|
-
let r = 151488;
|
|
6206
|
-
const nblocks = Math.floor(length / 4);
|
|
6207
|
-
for (let o = 0; o < nblocks; o++) {
|
|
6208
|
-
const i = 4 * o;
|
|
6209
|
-
let u = (data[i] | data[i + 1] << 8 | data[i + 2] << 16 | data[i + 3] << 24) >>> 0;
|
|
6210
|
-
u = Math.imul(u, C1) >>> 0;
|
|
6211
|
-
u = rotl32(u, 15);
|
|
6212
|
-
u = Math.imul(u, C2) >>> 0;
|
|
6213
|
-
r = (r ^ u) >>> 0;
|
|
6214
|
-
r = rotl32(r, 13);
|
|
6215
|
-
r = Math.imul(r, 5) + 3864292196 >>> 0;
|
|
6216
|
-
}
|
|
6217
|
-
const s = 4 * nblocks;
|
|
6218
|
-
let c = 0;
|
|
6219
|
-
const rem = length % 4;
|
|
6220
|
-
if (rem >= 3) c ^= data[s + 2] << 16;
|
|
6221
|
-
if (rem >= 2) c ^= data[s + 1] << 8;
|
|
6222
|
-
if (rem >= 1) {
|
|
6223
|
-
c ^= data[s];
|
|
6224
|
-
c = Math.imul(c, C1) >>> 0;
|
|
6225
|
-
c = rotl32(c, 15);
|
|
6226
|
-
c = Math.imul(c, C2) >>> 0;
|
|
6227
|
-
r = (r ^ c) >>> 0;
|
|
6228
|
-
}
|
|
6229
|
-
r = (r ^ length) >>> 0;
|
|
6230
|
-
r ^= r >>> 16;
|
|
6231
|
-
r = Math.imul(r, 2246822507) >>> 0;
|
|
6232
|
-
r ^= r >>> 13;
|
|
6233
|
-
r = Math.imul(r, 3266489909) >>> 0;
|
|
6234
|
-
r ^= r >>> 16;
|
|
6235
|
-
r = r >>> 0;
|
|
6236
|
-
return r % 100 + 1;
|
|
6237
|
-
}
|
|
6238
|
-
var CryptoProcessor = class {
|
|
6239
|
-
config;
|
|
6240
|
-
bitOps;
|
|
6241
|
-
b64encoder;
|
|
6242
|
-
hexProcessor;
|
|
6243
|
-
randomGen;
|
|
6244
|
-
constructor(config) {
|
|
6245
|
-
this.config = config || new CryptoConfig();
|
|
6246
|
-
this.bitOps = new BitOperations(this.config);
|
|
6247
|
-
this.b64encoder = new Base64Encoder(this.config);
|
|
6248
|
-
this.hexProcessor = new HexProcessor();
|
|
6249
|
-
this.randomGen = new RandomGenerator();
|
|
6250
|
-
}
|
|
6251
|
-
intToLeBytes(val, length = 4) {
|
|
6252
|
-
const arr = [];
|
|
6253
|
-
for (let i = 0; i < length; i++) {
|
|
6254
|
-
arr.push(val & 255);
|
|
6255
|
-
val = Math.floor(val / 256);
|
|
6256
|
-
}
|
|
6257
|
-
return arr;
|
|
6258
|
-
}
|
|
6259
|
-
/**
|
|
6260
|
-
* 32-bit left rotation
|
|
6261
|
-
*/
|
|
6262
|
-
rotateLeft(val, n) {
|
|
6263
|
-
return (val << n | val >>> 32 - n) >>> 0;
|
|
6264
|
-
}
|
|
6265
|
-
/**
|
|
6266
|
-
* Custom hash function for a3 field generation
|
|
6267
|
-
* Input: byte array (must be multiple of 8)
|
|
6268
|
-
* Output: 16-byte array
|
|
6269
|
-
*/
|
|
6270
|
-
customHashV2(inputBytes) {
|
|
6271
|
-
let [s0, s1, s2, s3] = this.config.HASH_IV;
|
|
6272
|
-
const length = inputBytes.length;
|
|
6273
|
-
s0 ^= length;
|
|
6274
|
-
s1 ^= length << 8;
|
|
6275
|
-
s2 ^= length << 16;
|
|
6276
|
-
s3 ^= length << 24;
|
|
6277
|
-
for (let i = 0; i < Math.floor(length / 8); i++) {
|
|
6278
|
-
const offset = i * 8;
|
|
6279
|
-
const v0 = (inputBytes[offset] | inputBytes[offset + 1] << 8 | inputBytes[offset + 2] << 16 | inputBytes[offset + 3] << 24) >>> 0;
|
|
6280
|
-
const v1 = (inputBytes[offset + 4] | inputBytes[offset + 5] << 8 | inputBytes[offset + 6] << 16 | inputBytes[offset + 7] << 24) >>> 0;
|
|
6281
|
-
s0 = this.rotateLeft(s0 + v0 & this.config.MAX_32BIT ^ s2, 7);
|
|
6282
|
-
s1 = this.rotateLeft((v0 ^ s1) + s3 & this.config.MAX_32BIT, 11);
|
|
6283
|
-
s2 = this.rotateLeft(s2 + v1 & this.config.MAX_32BIT ^ s0, 13);
|
|
6284
|
-
s3 = this.rotateLeft((s3 ^ v1) + s1 & this.config.MAX_32BIT, 17);
|
|
6285
|
-
}
|
|
6286
|
-
const t0 = s0 ^ length;
|
|
6287
|
-
const t1 = s1 ^ t0;
|
|
6288
|
-
const t2 = s2 + t1 & this.config.MAX_32BIT;
|
|
6289
|
-
const t3 = s3 ^ t2;
|
|
6290
|
-
const rotT0 = this.rotateLeft(t0, 9);
|
|
6291
|
-
const rotT1 = this.rotateLeft(t1, 13);
|
|
6292
|
-
const rotT2 = this.rotateLeft(t2, 17);
|
|
6293
|
-
const rotT3 = this.rotateLeft(t3, 19);
|
|
6294
|
-
s0 = rotT0 + rotT2 & this.config.MAX_32BIT;
|
|
6295
|
-
s1 = rotT1 ^ rotT3;
|
|
6296
|
-
s2 = rotT2 + s0 & this.config.MAX_32BIT;
|
|
6297
|
-
s3 = rotT3 ^ s1;
|
|
6298
|
-
const result = [];
|
|
6299
|
-
for (const s of [
|
|
6300
|
-
s0,
|
|
6301
|
-
s1,
|
|
6302
|
-
s2,
|
|
6303
|
-
s3
|
|
6304
|
-
]) result.push(...this.intToLeBytes(s, 4));
|
|
6305
|
-
return result;
|
|
6306
|
-
}
|
|
6307
|
-
/**
|
|
6308
|
-
* Build 144-byte payload array (mns0301 version)
|
|
6309
|
-
*
|
|
6310
|
-
* @param hexParameter - 32-char hex (MD5 of uri+data), used for the MD5 XOR segment
|
|
6311
|
-
* @param hexMd5Path - 32-char hex path hash (GET: MD5 of uri+params, POST: MD5 of uri)
|
|
6312
|
-
* @param a1Value - a1 value from cookies
|
|
6313
|
-
* @param appIdentifier - Application identifier, default "xhs-pc-web"
|
|
6314
|
-
* @param stringParam - String parameter (URI+data, used for length calculation)
|
|
6315
|
-
* @param timestamp - Unix timestamp in seconds (defaults to current time)
|
|
6316
|
-
* @param signState - Optional session state
|
|
6317
|
-
*/
|
|
6318
|
-
buildPayloadArray(hexParameter, hexMd5Path, a1Value, appIdentifier = "xhs-pc-web", stringParam = "", timestamp, signState) {
|
|
6319
|
-
if (timestamp === void 0) timestamp = Date.now() / 1e3;
|
|
6320
|
-
const seed = this.randomGen.generateRandomInt();
|
|
6321
|
-
const seedByte = seed & 255;
|
|
6322
|
-
const payload = [];
|
|
6323
|
-
payload.push(...this.config.VERSION_BYTES);
|
|
6324
|
-
payload.push(...this.intToLeBytes(seed, 4));
|
|
6325
|
-
const tsBytes = this.intToLeBytes(Math.floor(timestamp * 1e3), this.config.TIMESTAMP_LE_LENGTH);
|
|
6326
|
-
payload.push(...tsBytes);
|
|
6327
|
-
if (signState) {
|
|
6328
|
-
payload.push(...this.intToLeBytes(signState.pageLoadTimestamp, this.config.TIMESTAMP_LE_LENGTH));
|
|
6329
|
-
payload.push(...this.intToLeBytes(signState.sequenceValue, 4));
|
|
6330
|
-
payload.push(...this.intToLeBytes(signState.windowPropsLength, 4));
|
|
6331
|
-
payload.push(...this.intToLeBytes(signState.uriLength, 4));
|
|
6332
|
-
} else {
|
|
6333
|
-
const timeOffset = this.randomGen.generateRandomByteInRange(this.config.ENV_FINGERPRINT_TIME_OFFSET_MIN, this.config.ENV_FINGERPRINT_TIME_OFFSET_MAX);
|
|
6334
|
-
const effectiveTsMs = Math.floor((timestamp - timeOffset) * 1e3);
|
|
6335
|
-
payload.push(...this.intToLeBytes(effectiveTsMs, this.config.TIMESTAMP_LE_LENGTH));
|
|
6336
|
-
const sequenceValue = this.randomGen.generateRandomByteInRange(this.config.SEQUENCE_VALUE_MIN, this.config.SEQUENCE_VALUE_MAX);
|
|
6337
|
-
payload.push(...this.intToLeBytes(sequenceValue, 4));
|
|
6338
|
-
const windowPropsLength = this.randomGen.generateRandomByteInRange(this.config.WINDOW_PROPS_LENGTH_MIN, this.config.WINDOW_PROPS_LENGTH_MAX);
|
|
6339
|
-
payload.push(...this.intToLeBytes(windowPropsLength, 4));
|
|
6340
|
-
const uriLength = Buffer.from(stringParam, "utf-8").length;
|
|
6341
|
-
payload.push(...this.intToLeBytes(uriLength, 4));
|
|
6342
|
-
}
|
|
6343
|
-
const md5Bytes = Buffer.from(hexParameter, "hex");
|
|
6344
|
-
for (let i = 0; i < this.config.MD5_XOR_LENGTH; i++) payload.push(md5Bytes[i] ^ seedByte);
|
|
6345
|
-
const a1Bytes = Buffer.from(a1Value, "utf-8").subarray(0, this.config.A1_LENGTH);
|
|
6346
|
-
const a1Padded = Buffer.alloc(this.config.A1_LENGTH);
|
|
6347
|
-
a1Bytes.copy(a1Padded);
|
|
6348
|
-
payload.push(a1Padded.length);
|
|
6349
|
-
payload.push(...Array.from(a1Padded));
|
|
6350
|
-
const appBytes = Buffer.from(appIdentifier, "utf-8").subarray(0, this.config.APP_ID_LENGTH);
|
|
6351
|
-
const appPadded = Buffer.alloc(this.config.APP_ID_LENGTH);
|
|
6352
|
-
appBytes.copy(appPadded);
|
|
6353
|
-
payload.push(appPadded.length);
|
|
6354
|
-
payload.push(...Array.from(appPadded));
|
|
6355
|
-
const part11 = [1, seedByte ^ this.config.ENV_TABLE[0]];
|
|
6356
|
-
for (let i = 1; i < 15; i++) part11.push(this.config.ENV_TABLE[i] ^ this.config.ENV_CHECKS_DEFAULT[i]);
|
|
6357
|
-
payload.push(...part11);
|
|
6358
|
-
const md5PathBytes = [];
|
|
6359
|
-
for (let i = 0; i < 32; i += 2) md5PathBytes.push(parseInt(hexMd5Path.substring(i, i + 2), 16));
|
|
6360
|
-
const a3Hash = this.customHashV2([...tsBytes, ...md5PathBytes]);
|
|
6361
|
-
const a3Field = [...this.config.A3_PREFIX, ...a3Hash.map((b) => b ^ seedByte)];
|
|
6362
|
-
payload.push(...a3Field);
|
|
6363
|
-
return payload;
|
|
6364
|
-
}
|
|
6365
|
-
};
|
|
6366
|
-
/**
|
|
6367
|
-
* Custom CRC32 helper class.
|
|
6368
|
-
*
|
|
6369
|
-
* This implements a JavaScript-style CRC32 variant compatible with:
|
|
6370
|
-
* (-1 ^ c ^ 0xEDB88320) >>> 0
|
|
6371
|
-
* where `c` is the intermediate CRC state produced by the core CRC32 loop.
|
|
6372
|
-
*/
|
|
6373
|
-
var MASK32 = 4294967295;
|
|
6374
|
-
var POLY = 3988292384;
|
|
6375
|
-
var TABLE = null;
|
|
6376
|
-
function ensureTable() {
|
|
6377
|
-
if (TABLE !== null) return TABLE;
|
|
6378
|
-
const tbl = new Array(256);
|
|
6379
|
-
for (let d = 0; d < 256; d++) {
|
|
6380
|
-
let r = d;
|
|
6381
|
-
for (let i = 0; i < 8; i++) {
|
|
6382
|
-
r = r & 1 ? r >>> 1 ^ POLY : r >>> 1;
|
|
6383
|
-
r = r >>> 0;
|
|
6384
|
-
}
|
|
6385
|
-
tbl[d] = r;
|
|
6386
|
-
}
|
|
6387
|
-
TABLE = tbl;
|
|
6388
|
-
return TABLE;
|
|
6389
|
-
}
|
|
6390
|
-
function crc32Core(data, stringMode = "js") {
|
|
6391
|
-
const table = ensureTable();
|
|
6392
|
-
let c = MASK32;
|
|
6393
|
-
let bytes;
|
|
6394
|
-
if (typeof data === "string") {
|
|
6395
|
-
if (stringMode === "utf8") bytes = Array.from(Buffer.from(data, "utf8"));
|
|
6396
|
-
else {
|
|
6397
|
-
bytes = [];
|
|
6398
|
-
for (let i = 0; i < data.length; i++) bytes.push(data.charCodeAt(i) & 255);
|
|
6399
|
-
}
|
|
6400
|
-
} else bytes = data.map((b) => b & 255);
|
|
6401
|
-
for (const b of bytes) c = (table[(c & 255 ^ b) & 255] ^ c >>> 8) >>> 0;
|
|
6402
|
-
return c;
|
|
6403
|
-
}
|
|
6404
|
-
function toSigned32(u) {
|
|
6405
|
-
return u & 2147483648 ? u - 4294967296 : u;
|
|
6406
|
-
}
|
|
6407
|
-
var CRC32 = class {
|
|
6408
|
-
/**
|
|
6409
|
-
* JavaScript-style CRC32 public entry.
|
|
6410
|
-
*
|
|
6411
|
-
* This matches the JS expression:
|
|
6412
|
-
* (-1 ^ c ^ 0xEDB88320) >>> 0
|
|
6413
|
-
*/
|
|
6414
|
-
static crc32JsInt(data, options = {}) {
|
|
6415
|
-
const { stringMode = "js", signed = true } = options;
|
|
6416
|
-
const u = (crc32Core(data, stringMode) ^ 306674911) >>> 0;
|
|
6417
|
-
return signed ? toSigned32(u) : u;
|
|
6418
|
-
}
|
|
6419
|
-
};
|
|
6420
|
-
/**
|
|
6421
|
-
* Browser fingerprint data constants
|
|
6422
|
-
*/
|
|
6423
|
-
var GPU_VENDORS = [
|
|
6424
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 400 (0x00000166) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6425
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 4400 (0x00001112) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6426
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 4600 (0x00000412) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6427
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 520 (0x1912) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6428
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 530 (0x00001912) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6429
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 550 (0x00001512) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6430
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 6000 (0x1606) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6431
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(TM) Graphics 540 (0x1912) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6432
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(TM) Graphics 550 (0x1913) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6433
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(TM) Plus Graphics 640 (0x161C) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6434
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 600 (0x3E80) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6435
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 620 (0x00003EA0) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6436
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 630 (0x00003E9B) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6437
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 655 (0x00009BC8) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6438
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(R) Xe Graphics (0x000046A8) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6439
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(R) Xe Graphics (0x00009A49) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6440
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(R) Xe MAX Graphics (0x00009BC0) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6441
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel Arc A370M (0x0000AF51) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6442
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel Arc A380 (0x0000AF41) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6443
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel Arc A380M (0x0000AF5E) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6444
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel Arc A550 (0x0000AF42) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6445
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel Arc A770 (0x0000AF43) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6446
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel Arc A770M (0x0000AF50) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6447
|
-
"Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) Graphics (RPL‑P GT1) (0x0000A702) OpenGL 4.6)",
|
|
6448
|
-
"Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) UHD Graphics 770 (0x00004680) OpenGL 4.6)",
|
|
6449
|
-
"Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) HD Graphics 4400 (0x00001122) OpenGL 4.6)",
|
|
6450
|
-
"Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) Graphics (ADL‑S GT1) (0x0000A0A1) OpenGL 4.6)",
|
|
6451
|
-
"Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) Graphics (RKL GT1) (0x0000A9A1) OpenGL 4.6)",
|
|
6452
|
-
"Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) UHD Graphics (CML GT2) (0x00009A14) OpenGL 4.6)",
|
|
6453
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 3000 (0x00001022) Direct3D9Ex vs_3_0 ps_3_0, igdumd64.dll)",
|
|
6454
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics Family (0x00000A16) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6455
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris Pro OpenGL Engine, OpenGL 4.1)",
|
|
6456
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(TM) Plus Graphics 645 (0x1616) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6457
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(TM) Plus Graphics 655 (0x161E) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6458
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 730 (0x0000A100) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6459
|
-
"Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 805 (0x0000B0A0) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6460
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Vega 3 Graphics (0x000015E0) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6461
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Vega 8 Graphics (0x000015D8) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6462
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Vega 11 Graphics (0x000015DD) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6463
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Graphics (0x00001636) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6464
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 5500 XT Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6465
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 560 (0x000067EF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6466
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 570 (0x000067DF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6467
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 580 2048SP (0x00006FDF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6468
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 590 (0x000067FF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6469
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6600 (0x000073FF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6470
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6600 XT (0x000073FF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6471
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6650 XT Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6472
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6700 XT (0x000073DF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6473
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6800 (0x000073BF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6474
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6900 XT (0x000073C2) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6475
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 7700 XT Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6476
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Pro 5300M OpenGL Engine, OpenGL 4.1)",
|
|
6477
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Pro 5500 XT OpenGL Engine, OpenGL 4.1)",
|
|
6478
|
-
"Google Inc. (AMD)|ANGLE (AMD, AMD Radeon R7 370 Series (0x00006811) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6479
|
-
"Google Inc. (AMD)|ANGLE (AMD, ATI Technologies Inc. AMD Radeon RX Vega 64 OpenGL Engine, OpenGL 4.1)",
|
|
6480
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce GTX 1050 (0x00001C81) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6481
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce GTX 1050 Ti (0x00001C8C) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6482
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce GTX 1060 6GB (0x000010DE) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6483
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce GTX 1070 (0x00001B81) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6484
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce GTX 1080 (0x00001B80) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6485
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 2060 (0x00001F06) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6486
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 2060 SUPER (0x00001F06) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6487
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 2070 (0x00001F10) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6488
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 2070 SUPER (0x00001F10) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6489
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 (0x0000250F) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6490
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 Ti (0x00002489) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6491
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3070 (0x00002488) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6492
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3070 Ti (0x000028A5) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6493
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3080 (0x00002206) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6494
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3080 Ti (0x00002208) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6495
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3090 (0x00002204) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6496
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4060 (0x00002882) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6497
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4060 Ti (0x00002803) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6498
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4070 (0x00002786) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6499
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4070 Ti (0x00002857) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6500
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4080 (0x00002819) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6501
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4090 (0x00002684) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6502
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA Quadro RTX 5000 Ada Generation (0x000026B2) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6503
|
-
"Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA Quadro P400 (0x00001CB3) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
6504
|
-
"Google Inc. (Google)|ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver)",
|
|
6505
|
-
"Google Inc. (Google)|ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero)), SwiftShader driver)",
|
|
6506
|
-
"Google Inc. (Google)|ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device), SwiftShader driver)"
|
|
6507
|
-
];
|
|
6508
|
-
var SCREEN_RESOLUTIONS = {
|
|
6509
|
-
resolutions: [
|
|
6510
|
-
"1366;768",
|
|
6511
|
-
"1600;900",
|
|
6512
|
-
"1920;1080",
|
|
6513
|
-
"2560;1440",
|
|
6514
|
-
"3840;2160",
|
|
6515
|
-
"7680;4320"
|
|
6516
|
-
],
|
|
6517
|
-
weights: [
|
|
6518
|
-
.25,
|
|
6519
|
-
.15,
|
|
6520
|
-
.35,
|
|
6521
|
-
.15,
|
|
6522
|
-
.08,
|
|
6523
|
-
.02
|
|
6524
|
-
]
|
|
6525
|
-
};
|
|
6526
|
-
var COLOR_DEPTH_OPTIONS = {
|
|
6527
|
-
values: [
|
|
6528
|
-
16,
|
|
6529
|
-
24,
|
|
6530
|
-
30,
|
|
6531
|
-
32
|
|
6532
|
-
],
|
|
6533
|
-
weights: [
|
|
6534
|
-
.05,
|
|
6535
|
-
.6,
|
|
6536
|
-
.05,
|
|
6537
|
-
.3
|
|
6538
|
-
]
|
|
6539
|
-
};
|
|
6540
|
-
var DEVICE_MEMORY_OPTIONS = {
|
|
6541
|
-
values: [
|
|
6542
|
-
1,
|
|
6543
|
-
2,
|
|
6544
|
-
4,
|
|
6545
|
-
8,
|
|
6546
|
-
12,
|
|
6547
|
-
16
|
|
6548
|
-
],
|
|
6549
|
-
weights: [
|
|
6550
|
-
.1,
|
|
6551
|
-
.25,
|
|
6552
|
-
.4,
|
|
6553
|
-
.2,
|
|
6554
|
-
.03,
|
|
6555
|
-
.01
|
|
6556
|
-
]
|
|
6557
|
-
};
|
|
6558
|
-
var CORE_OPTIONS = {
|
|
6559
|
-
values: [
|
|
6560
|
-
2,
|
|
6561
|
-
4,
|
|
6562
|
-
6,
|
|
6563
|
-
8,
|
|
6564
|
-
12,
|
|
6565
|
-
16,
|
|
6566
|
-
24,
|
|
6567
|
-
32
|
|
6568
|
-
],
|
|
6569
|
-
weights: [
|
|
6570
|
-
.1,
|
|
6571
|
-
.4,
|
|
6572
|
-
.2,
|
|
6573
|
-
.15,
|
|
6574
|
-
.08,
|
|
6575
|
-
.04,
|
|
6576
|
-
.02,
|
|
6577
|
-
.01
|
|
6578
|
-
]
|
|
6579
|
-
};
|
|
6580
|
-
var BROWSER_PLUGINS = "PDF Viewer,Chrome PDF Viewer,Chromium PDF Viewer,Microsoft Edge PDF Viewer,WebKit built-in PDF";
|
|
6581
|
-
var CANVAS_HASH = "742cc32c";
|
|
6582
|
-
var VOICE_HASH_OPTIONS = "10311144241322244122";
|
|
6583
|
-
var FONTS = "system-ui, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\", -apple-system, \"Segoe UI\", Roboto, Ubuntu, Cantarell, \"Noto Sans\", sans-serif, BlinkMacSystemFont, \"Helvetica Neue\", Arial, \"PingFang SC\", \"PingFang TC\", \"PingFang HK\", \"Microsoft Yahei\", \"Microsoft JhengHei\"";
|
|
6584
|
-
/**
|
|
6585
|
-
* Fingerprint generation helper functions
|
|
6586
|
-
*/
|
|
6587
|
-
/**
|
|
6588
|
-
* Random choice a value from list according to the given weights
|
|
6589
|
-
*/
|
|
6590
|
-
function weightedRandomChoice(options, weights) {
|
|
6591
|
-
const totalWeight = weights.reduce((sum, w) => sum + w, 0);
|
|
6592
|
-
let random = Math.random() * totalWeight;
|
|
6593
|
-
for (let i = 0; i < options.length; i++) {
|
|
6594
|
-
random -= weights[i];
|
|
6595
|
-
if (random <= 0) return String(options[i]);
|
|
6596
|
-
}
|
|
6597
|
-
return String(options[options.length - 1]);
|
|
6598
|
-
}
|
|
6599
|
-
/**
|
|
6600
|
-
* Get random GPU renderer information
|
|
6601
|
-
*/
|
|
6602
|
-
function getRendererInfo() {
|
|
6603
|
-
const [vendor, renderer] = GPU_VENDORS[Math.floor(Math.random() * GPU_VENDORS.length)].split("|");
|
|
6604
|
-
return [vendor, renderer];
|
|
6605
|
-
}
|
|
6606
|
-
/**
|
|
6607
|
-
* Get random screen configuration with width, height, and available dimensions
|
|
6608
|
-
*/
|
|
6609
|
-
function getScreenConfig() {
|
|
6610
|
-
const [widthStr, heightStr] = weightedRandomChoice(SCREEN_RESOLUTIONS.resolutions, SCREEN_RESOLUTIONS.weights).split(";");
|
|
6611
|
-
const width = parseInt(widthStr, 10);
|
|
6612
|
-
const height = parseInt(heightStr, 10);
|
|
6613
|
-
let availWidth;
|
|
6614
|
-
let availHeight;
|
|
6615
|
-
if (Math.random() < .5) {
|
|
6616
|
-
availWidth = width - parseInt(weightedRandomChoice([
|
|
6617
|
-
0,
|
|
6618
|
-
30,
|
|
6619
|
-
60,
|
|
6620
|
-
80
|
|
6621
|
-
], [
|
|
6622
|
-
.1,
|
|
6623
|
-
.4,
|
|
6624
|
-
.3,
|
|
6625
|
-
.2
|
|
6626
|
-
]), 10);
|
|
6627
|
-
availHeight = height;
|
|
6628
|
-
} else {
|
|
6629
|
-
availWidth = width;
|
|
6630
|
-
availHeight = height - parseInt(weightedRandomChoice([
|
|
6631
|
-
30,
|
|
6632
|
-
60,
|
|
6633
|
-
80,
|
|
6634
|
-
100
|
|
6635
|
-
], [
|
|
6636
|
-
.2,
|
|
6637
|
-
.5,
|
|
6638
|
-
.2,
|
|
6639
|
-
.1
|
|
6640
|
-
]), 10);
|
|
6641
|
-
}
|
|
6642
|
-
return {
|
|
6643
|
-
width,
|
|
6644
|
-
height,
|
|
6645
|
-
availWidth,
|
|
6646
|
-
availHeight
|
|
6647
|
-
};
|
|
6648
|
-
}
|
|
6649
|
-
/**
|
|
6650
|
-
* Generate canvas fingerprint hash
|
|
6651
|
-
*/
|
|
6652
|
-
function generateCanvasHash() {
|
|
6653
|
-
return CANVAS_HASH;
|
|
6654
|
-
}
|
|
6655
|
-
/**
|
|
6656
|
-
* Generate WebGL fingerprint hash
|
|
6657
|
-
*/
|
|
6658
|
-
function generateWebglHash() {
|
|
6659
|
-
return createHash("md5").update(randomBytes(32)).digest("hex");
|
|
6660
|
-
}
|
|
6661
|
-
/**
|
|
6662
|
-
* Browser fingerprint generator
|
|
6663
|
-
*/
|
|
6664
|
-
var FingerprintGenerator = class {
|
|
6665
|
-
config;
|
|
6666
|
-
b1Key;
|
|
6667
|
-
encoder;
|
|
6668
|
-
constructor(config) {
|
|
6669
|
-
this.config = config || new CryptoConfig();
|
|
6670
|
-
this.b1Key = Buffer.from(this.config.B1_SECRET_KEY, "utf8");
|
|
6671
|
-
this.encoder = new Base64Encoder(this.config);
|
|
6672
|
-
}
|
|
6673
|
-
/**
|
|
6674
|
-
* Generate b1 parameter from fingerprint
|
|
6675
|
-
*/
|
|
6676
|
-
generateB1(fp) {
|
|
6677
|
-
const b1Fp = {
|
|
6678
|
-
x33: fp.x33,
|
|
6679
|
-
x34: fp.x34,
|
|
6680
|
-
x35: fp.x35,
|
|
6681
|
-
x36: fp.x36,
|
|
6682
|
-
x37: fp.x37,
|
|
6683
|
-
x38: fp.x38,
|
|
6684
|
-
x39: fp.x39,
|
|
6685
|
-
x42: fp.x42,
|
|
6686
|
-
x43: fp.x43,
|
|
6687
|
-
x44: fp.x44,
|
|
6688
|
-
x45: fp.x45,
|
|
6689
|
-
x46: fp.x46,
|
|
6690
|
-
x48: fp.x48,
|
|
6691
|
-
x49: fp.x49,
|
|
6692
|
-
x50: fp.x50,
|
|
6693
|
-
x51: fp.x51,
|
|
6694
|
-
x52: fp.x52,
|
|
6695
|
-
x82: fp.x82
|
|
6696
|
-
};
|
|
6697
|
-
const b1Json = JSON.stringify(b1Fp);
|
|
6698
|
-
const ciphertext = this.rc4Encrypt(b1Json, this.b1Key);
|
|
6699
|
-
const encodedUrl = this.customUrlEncode(ciphertext);
|
|
6700
|
-
const b = [];
|
|
6701
|
-
const parts = encodedUrl.split("%").slice(1);
|
|
6702
|
-
for (const part of parts) {
|
|
6703
|
-
const chars = part.split("");
|
|
6704
|
-
b.push(parseInt(chars.slice(0, 2).join(""), 16));
|
|
6705
|
-
for (const c of chars.slice(2)) b.push(c.charCodeAt(0));
|
|
6706
|
-
}
|
|
6707
|
-
return this.encoder.encode(JSON.stringify(b));
|
|
6708
|
-
}
|
|
6709
|
-
/**
|
|
6710
|
-
* RC4 encryption implementation
|
|
6711
|
-
*/
|
|
6712
|
-
rc4Encrypt(data, key) {
|
|
6713
|
-
const S = new Array(256);
|
|
6714
|
-
for (let i = 0; i < 256; i++) S[i] = i;
|
|
6715
|
-
let j = 0;
|
|
6716
|
-
for (let i = 0; i < 256; i++) {
|
|
6717
|
-
j = (j + S[i] + key[i % key.length]) % 256;
|
|
6718
|
-
[S[i], S[j]] = [S[j], S[i]];
|
|
6719
|
-
}
|
|
6720
|
-
const dataBytes = Buffer.from(data, "utf8");
|
|
6721
|
-
const result = Buffer.alloc(dataBytes.length);
|
|
6722
|
-
let i = 0;
|
|
6723
|
-
j = 0;
|
|
6724
|
-
for (let k = 0; k < dataBytes.length; k++) {
|
|
6725
|
-
i = (i + 1) % 256;
|
|
6726
|
-
j = (j + S[i]) % 256;
|
|
6727
|
-
[S[i], S[j]] = [S[j], S[i]];
|
|
6728
|
-
const t = (S[i] + S[j]) % 256;
|
|
6729
|
-
result[k] = dataBytes[k] ^ S[t];
|
|
6730
|
-
}
|
|
6731
|
-
return result.toString("latin1");
|
|
6732
|
-
}
|
|
6733
|
-
/**
|
|
6734
|
-
* Custom URL encode matching Python's quote with safe="!*'()~_-"
|
|
6735
|
-
*/
|
|
6736
|
-
customUrlEncode(str) {
|
|
6737
|
-
const safeChars = "!*'()~_-";
|
|
6738
|
-
let result = "";
|
|
6739
|
-
for (let i = 0; i < str.length; i++) {
|
|
6740
|
-
const char = str[i];
|
|
6741
|
-
const code = str.charCodeAt(i);
|
|
6742
|
-
if (code >= 65 && code <= 90 || code >= 97 && code <= 122 || code >= 48 && code <= 57 || safeChars.includes(char)) result += char;
|
|
6743
|
-
else result += "%" + code.toString(16).toUpperCase().padStart(2, "0");
|
|
6744
|
-
}
|
|
6745
|
-
return result;
|
|
6746
|
-
}
|
|
6747
|
-
/**
|
|
6748
|
-
* Generate browser fingerprint
|
|
6749
|
-
*/
|
|
6750
|
-
generate(cookies, userAgent) {
|
|
6751
|
-
const cookieString = Object.entries(cookies).map(([k, v]) => `${k}=${v}`).join("; ");
|
|
6752
|
-
const screenConfig = getScreenConfig();
|
|
6753
|
-
const isIncognitoMode = weightedRandomChoice(["true", "false"], [.95, .05]);
|
|
6754
|
-
const [vendor, renderer] = getRendererInfo();
|
|
6755
|
-
const x78Y = Math.floor(Math.random() * 100) + 2350;
|
|
6756
|
-
return {
|
|
6757
|
-
x1: userAgent,
|
|
6758
|
-
x2: "false",
|
|
6759
|
-
x3: "zh-CN",
|
|
6760
|
-
x4: weightedRandomChoice(COLOR_DEPTH_OPTIONS.values, COLOR_DEPTH_OPTIONS.weights),
|
|
6761
|
-
x5: weightedRandomChoice(DEVICE_MEMORY_OPTIONS.values, DEVICE_MEMORY_OPTIONS.weights),
|
|
6762
|
-
x6: "24",
|
|
6763
|
-
x7: `${vendor},${renderer}`,
|
|
6764
|
-
x8: weightedRandomChoice(CORE_OPTIONS.values, CORE_OPTIONS.weights),
|
|
6765
|
-
x9: `${screenConfig.width};${screenConfig.height}`,
|
|
6766
|
-
x10: `${screenConfig.availWidth};${screenConfig.availHeight}`,
|
|
6767
|
-
x11: "-480",
|
|
6768
|
-
x12: "Asia/Shanghai",
|
|
6769
|
-
x13: isIncognitoMode,
|
|
6770
|
-
x14: isIncognitoMode,
|
|
6771
|
-
x15: isIncognitoMode,
|
|
6772
|
-
x16: "false",
|
|
6773
|
-
x17: "false",
|
|
6774
|
-
x18: "un",
|
|
6775
|
-
x19: "Win32",
|
|
6776
|
-
x20: "",
|
|
6777
|
-
x21: BROWSER_PLUGINS,
|
|
6778
|
-
x22: generateWebglHash(),
|
|
6779
|
-
x23: "false",
|
|
6780
|
-
x24: "false",
|
|
6781
|
-
x25: "false",
|
|
6782
|
-
x26: "false",
|
|
6783
|
-
x27: "false",
|
|
6784
|
-
x28: "0,false,false",
|
|
6785
|
-
x29: "4,7,8",
|
|
6786
|
-
x30: "swf object not loaded",
|
|
6787
|
-
x33: "0",
|
|
6788
|
-
x34: "0",
|
|
6789
|
-
x35: "0",
|
|
6790
|
-
x36: `${Math.floor(Math.random() * 20) + 1}`,
|
|
6791
|
-
x37: "0|0|0|0|0|0|0|0|0|1|0|0|0|0|0|0|0|0|1|0|0|0|0|0",
|
|
6792
|
-
x38: "0|0|1|0|1|0|0|0|0|0|1|0|1|0|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0",
|
|
6793
|
-
x39: 0,
|
|
6794
|
-
x40: "0",
|
|
6795
|
-
x41: "0",
|
|
6796
|
-
x42: "3.4.4",
|
|
6797
|
-
x43: generateCanvasHash(),
|
|
6798
|
-
x44: `${Date.now()}`,
|
|
6799
|
-
x45: "__SEC_CAV__1-1-1-1-1|__SEC_WSA__|",
|
|
6800
|
-
x46: "false",
|
|
6801
|
-
x47: "1|0|0|0|0|0",
|
|
6802
|
-
x48: "",
|
|
6803
|
-
x49: "{list:[],type:}",
|
|
6804
|
-
x50: "",
|
|
6805
|
-
x51: "",
|
|
6806
|
-
x52: "",
|
|
6807
|
-
x55: "380,380,360,400,380,400,420,380,400,400,360,360,440,420",
|
|
6808
|
-
x56: `${vendor}|${renderer}|${generateWebglHash()}|35`,
|
|
6809
|
-
x57: cookieString,
|
|
6810
|
-
x58: "180",
|
|
6811
|
-
x59: "2",
|
|
6812
|
-
x60: "63",
|
|
6813
|
-
x61: "1291",
|
|
6814
|
-
x62: "2047",
|
|
6815
|
-
x63: "0",
|
|
6816
|
-
x64: "0",
|
|
6817
|
-
x65: "0",
|
|
6818
|
-
x66: {
|
|
6819
|
-
referer: "",
|
|
6820
|
-
location: "https://www.xiaohongshu.com/explore",
|
|
6821
|
-
frame: 0
|
|
6822
|
-
},
|
|
6823
|
-
x67: "1|0",
|
|
6824
|
-
x68: "0",
|
|
6825
|
-
x69: "326|1292|30",
|
|
6826
|
-
x70: ["location"],
|
|
6827
|
-
x71: "true",
|
|
6828
|
-
x72: "complete",
|
|
6829
|
-
x73: "1191",
|
|
6830
|
-
x74: "0|0|0",
|
|
6831
|
-
x75: "Google Inc.",
|
|
6832
|
-
x76: "true",
|
|
6833
|
-
x77: "1|1|1|1|1|1|1|1|1|1",
|
|
6834
|
-
x78: {
|
|
6835
|
-
x: 0,
|
|
6836
|
-
y: x78Y,
|
|
6837
|
-
left: 0,
|
|
6838
|
-
right: 290.828125,
|
|
6839
|
-
bottom: x78Y + 18,
|
|
6840
|
-
height: 18,
|
|
6841
|
-
top: x78Y,
|
|
6842
|
-
width: 290.828125,
|
|
6843
|
-
font: FONTS
|
|
6844
|
-
},
|
|
6845
|
-
x82: "_0x17a2|_0x1954",
|
|
6846
|
-
x31: "124.04347527516074",
|
|
6847
|
-
x79: "144|599565058866",
|
|
6848
|
-
x53: createHash("md5").update(randomBytes(32)).digest("hex"),
|
|
6849
|
-
x54: VOICE_HASH_OPTIONS,
|
|
6850
|
-
x80: "1|[object FileSystemDirectoryHandle]"
|
|
6851
|
-
};
|
|
6852
|
-
}
|
|
6853
|
-
/**
|
|
6854
|
-
* Update fingerprint with new cookies and URL
|
|
6855
|
-
*/
|
|
6856
|
-
update(fp, cookies, url) {
|
|
6857
|
-
const cookieString = Object.entries(cookies).map(([k, v]) => `${k}=${v}`).join("; ");
|
|
6858
|
-
fp.x39 = 0;
|
|
6859
|
-
fp.x44 = `${Date.now()}`;
|
|
6860
|
-
fp.x57 = cookieString;
|
|
6861
|
-
fp.x66 = {
|
|
6862
|
-
referer: "https://www.xiaohongshu.com/explore",
|
|
6863
|
-
location: url,
|
|
6864
|
-
frame: 0
|
|
6865
|
-
};
|
|
6866
|
-
}
|
|
6867
|
-
};
|
|
6868
|
-
/**
|
|
6869
|
-
* x-s-common signature generation
|
|
6870
|
-
*/
|
|
6871
|
-
var XsCommonSigner = class {
|
|
6872
|
-
config;
|
|
6873
|
-
fpGenerator;
|
|
6874
|
-
encoder;
|
|
6875
|
-
constructor(config) {
|
|
6876
|
-
this.config = config || new CryptoConfig();
|
|
6877
|
-
this.fpGenerator = new FingerprintGenerator(this.config);
|
|
6878
|
-
this.encoder = new Base64Encoder(this.config);
|
|
6879
|
-
}
|
|
6880
|
-
/**
|
|
6881
|
-
* Generate x-s-common signature
|
|
6882
|
-
*/
|
|
6883
|
-
sign(cookieDict) {
|
|
6884
|
-
const a1Value = cookieDict.a1;
|
|
6885
|
-
if (!a1Value) throw new Error("Missing 'a1' in cookies");
|
|
6886
|
-
const fingerprint = this.fpGenerator.generate(cookieDict, this.config.PUBLIC_USERAGENT);
|
|
6887
|
-
const b1 = this.fpGenerator.generateB1(fingerprint);
|
|
6888
|
-
const x9 = CRC32.crc32JsInt(b1);
|
|
6889
|
-
const signStruct = { ...this.config.SIGNATURE_XSCOMMON_TEMPLATE };
|
|
6890
|
-
signStruct.x5 = a1Value;
|
|
6891
|
-
signStruct.x8 = b1;
|
|
6892
|
-
signStruct.x9 = x9;
|
|
6893
|
-
const signJson = JSON.stringify(signStruct);
|
|
6894
|
-
return this.encoder.encode(signJson);
|
|
6895
|
-
}
|
|
6896
|
-
};
|
|
6897
|
-
/**
|
|
6898
|
-
* XYW_ signature crypto (AES-128-CBC).
|
|
6899
|
-
*
|
|
6900
|
-
* Ported from the upstream Python `core/xyw_crypto.py`. Data-fetching APIs
|
|
6901
|
-
* (user_posted, otherinfo, etc.) reject the traditional XYS_ format with HTTP
|
|
6902
|
-
* 406; the XYW_ format uses an independent AES-128-CBC crypto path.
|
|
6903
|
-
*
|
|
6904
|
-
* The upstream ships a hand-rolled AES-128 implementation. Since it is
|
|
6905
|
-
* standard AES-128 (identical S-box, RCON, key schedule and MixColumns), this
|
|
6906
|
-
* port uses Node's native `aes-128-cbc` cipher, which produces byte-identical
|
|
6907
|
-
* ciphertext while being far less error-prone.
|
|
6908
|
-
*/
|
|
6909
|
-
var AES_BLOCK_SIZE = 16;
|
|
6910
|
-
/**
|
|
6911
|
-
* Apply PKCS#7 padding to a byte buffer.
|
|
6912
|
-
*/
|
|
6913
|
-
function pkcs7Pad(data) {
|
|
6914
|
-
const padLen = AES_BLOCK_SIZE - data.length % AES_BLOCK_SIZE;
|
|
6915
|
-
return Buffer.concat([data, Buffer.alloc(padLen, padLen)]);
|
|
6916
|
-
}
|
|
6917
|
-
/**
|
|
6918
|
-
* AES-128-CBC cipher matching the upstream XYW implementation.
|
|
6919
|
-
*/
|
|
6920
|
-
var XywCipher = class {
|
|
6921
|
-
key;
|
|
6922
|
-
iv;
|
|
6923
|
-
constructor(key, iv) {
|
|
6924
|
-
if (key.length !== AES_BLOCK_SIZE) throw new Error("AES-128 requires a 16-byte key");
|
|
6925
|
-
if (iv.length !== AES_BLOCK_SIZE) throw new Error("AES-CBC IV must be 16 bytes");
|
|
6926
|
-
this.key = key;
|
|
6927
|
-
this.iv = iv;
|
|
6928
|
-
}
|
|
6929
|
-
/**
|
|
6930
|
-
* Encrypt PKCS#7-padded plaintext with AES-128-CBC.
|
|
6931
|
-
*
|
|
6932
|
-
* @param plaintextBytes - Plaintext, already padded to a 16-byte boundary
|
|
6933
|
-
* @returns Ciphertext bytes
|
|
6934
|
-
*/
|
|
6935
|
-
encrypt(plaintextBytes) {
|
|
6936
|
-
if (plaintextBytes.length % AES_BLOCK_SIZE !== 0) throw new Error("plaintextBytes must be PKCS#7 padded to a 16-byte boundary");
|
|
6937
|
-
const cipher = createCipheriv("aes-128-cbc", this.key, this.iv);
|
|
6938
|
-
cipher.setAutoPadding(false);
|
|
6939
|
-
return Buffer.concat([cipher.update(plaintextBytes), cipher.final()]);
|
|
6940
|
-
}
|
|
6941
|
-
};
|
|
6942
|
-
/**
|
|
6943
|
-
* Build the hex-encoded payload for an XYW_ signature.
|
|
6944
|
-
*
|
|
6945
|
-
* @param options.fullUri - The content string (uri + params/body)
|
|
6946
|
-
* @param options.a1Value - a1 value from cookies
|
|
6947
|
-
* @param options.timestampMs - Millisecond timestamp string
|
|
6948
|
-
* @param options.config - Crypto configuration
|
|
6949
|
-
* @param options.envFlags - Optional environment flags string
|
|
6950
|
-
* @returns Hex-encoded AES-128-CBC ciphertext
|
|
6951
|
-
*/
|
|
6952
|
-
function buildXywPayloadHex(options) {
|
|
6953
|
-
const { fullUri, a1Value, timestampMs, config, envFlags } = options;
|
|
6954
|
-
const x1 = createHash("md5").update(`url=${fullUri}`).digest("hex");
|
|
6955
|
-
const x2 = envFlags || config.XYW_ENV_FLAGS_DEFAULT;
|
|
6956
|
-
const message = Buffer.from(`x1=${x1};x2=${x2};x3=${a1Value};x4=${timestampMs};`);
|
|
6957
|
-
const plaintext = pkcs7Pad(Buffer.from(message.toString("base64")));
|
|
6958
|
-
return new XywCipher(Buffer.from(config.XYW_AES_KEY, "utf-8"), Buffer.from(config.XYW_AES_IV, "utf-8")).encrypt(plaintext).toString("hex");
|
|
6959
|
-
}
|
|
6960
|
-
/**
|
|
6961
|
-
* x-rap-param generation.
|
|
6962
|
-
*
|
|
6963
|
-
* Ported from the upstream Python `core/xrap.py`. Required for feed, search,
|
|
6964
|
-
* and note-publishing endpoints. Builds a TLV body structure, gzip-compresses
|
|
6965
|
-
* it, then XOR + block-encrypts (SM4-variant with custom S-box/round keys) and
|
|
6966
|
-
* wraps it in a base64 envelope.
|
|
6967
|
-
*/
|
|
6968
|
-
var cfg = new CryptoConfig();
|
|
6969
|
-
cfg.MAX_32BIT;
|
|
6970
|
-
var XRAP_SDK_VERSION = cfg.XRAP_SDK_VERSION;
|
|
6971
|
-
var ROUND_KEYS = [
|
|
6972
|
-
[
|
|
6973
|
-
1802586417,
|
|
6974
|
-
1146381175,
|
|
6975
|
-
1264073008,
|
|
6976
|
-
1517568377
|
|
6977
|
-
],
|
|
6978
|
-
[
|
|
6979
|
-
2301709464,
|
|
6980
|
-
3445960687,
|
|
6981
|
-
2252150495,
|
|
6982
|
-
3695794086
|
|
6983
|
-
],
|
|
6984
|
-
[
|
|
6985
|
-
3255120652,
|
|
6986
|
-
257957091,
|
|
6987
|
-
2304576060,
|
|
6988
|
-
1427398042
|
|
6989
|
-
],
|
|
6990
|
-
[
|
|
6991
|
-
3523543150,
|
|
6992
|
-
3714391181,
|
|
6993
|
-
1412961969,
|
|
6994
|
-
19680043
|
|
6995
|
-
],
|
|
6996
|
-
[
|
|
6997
|
-
1997286255,
|
|
6998
|
-
2859022306,
|
|
6999
|
-
4266729811,
|
|
7000
|
-
4286409336
|
|
7001
|
-
],
|
|
7002
|
-
[
|
|
7003
|
-
2020015092,
|
|
7004
|
-
3524250646,
|
|
7005
|
-
744418629,
|
|
7006
|
-
3542320957
|
|
7007
|
-
],
|
|
7008
|
-
[
|
|
7009
|
-
2431239806,
|
|
7010
|
-
1122372200,
|
|
7011
|
-
1857611565,
|
|
7012
|
-
3181076496
|
|
7013
|
-
],
|
|
7014
|
-
[
|
|
7015
|
-
3922013166,
|
|
7016
|
-
2871206278,
|
|
7017
|
-
3315320491,
|
|
7018
|
-
2013308603
|
|
7019
|
-
],
|
|
7020
|
-
[
|
|
7021
|
-
330996286,
|
|
7022
|
-
3097082808,
|
|
7023
|
-
2097315091,
|
|
7024
|
-
84073384
|
|
7025
|
-
],
|
|
7026
|
-
[
|
|
7027
|
-
1348547184,
|
|
7028
|
-
3908602312,
|
|
7029
|
-
2516251867,
|
|
7030
|
-
2432184179
|
|
7031
|
-
]
|
|
7032
|
-
];
|
|
7033
|
-
var LAST_ROUND_KEY = [
|
|
7034
|
-
4086740047,
|
|
7035
|
-
460209543,
|
|
7036
|
-
2392115548,
|
|
7037
|
-
510453295
|
|
7038
|
-
];
|
|
7039
|
-
var LAST_ROUND_KEY_BYTES = (() => {
|
|
7040
|
-
const b = Buffer.alloc(16);
|
|
7041
|
-
for (let i = 0; i < 4; i++) b.writeUInt32BE(LAST_ROUND_KEY[i] >>> 0, i * 4);
|
|
7042
|
-
return b;
|
|
7043
|
-
})();
|
|
7044
|
-
var SBOX = [
|
|
7045
|
-
122,
|
|
7046
|
-
1,
|
|
7047
|
-
88,
|
|
7048
|
-
224,
|
|
7049
|
-
80,
|
|
7050
|
-
78,
|
|
7051
|
-
2,
|
|
7052
|
-
121,
|
|
7053
|
-
29,
|
|
7054
|
-
75,
|
|
7055
|
-
83,
|
|
7056
|
-
218,
|
|
7057
|
-
107,
|
|
7058
|
-
72,
|
|
7059
|
-
212,
|
|
7060
|
-
82,
|
|
7061
|
-
237,
|
|
7062
|
-
119,
|
|
7063
|
-
18,
|
|
7064
|
-
33,
|
|
7065
|
-
20,
|
|
7066
|
-
21,
|
|
7067
|
-
236,
|
|
7068
|
-
16,
|
|
7069
|
-
24,
|
|
7070
|
-
229,
|
|
7071
|
-
185,
|
|
7072
|
-
241,
|
|
7073
|
-
12,
|
|
7074
|
-
8,
|
|
7075
|
-
252,
|
|
7076
|
-
125,
|
|
7077
|
-
249,
|
|
7078
|
-
205,
|
|
7079
|
-
181,
|
|
7080
|
-
200,
|
|
7081
|
-
230,
|
|
7082
|
-
55,
|
|
7083
|
-
38,
|
|
7084
|
-
135,
|
|
7085
|
-
86,
|
|
7086
|
-
186,
|
|
7087
|
-
184,
|
|
7088
|
-
43,
|
|
7089
|
-
173,
|
|
7090
|
-
240,
|
|
7091
|
-
104,
|
|
7092
|
-
247,
|
|
7093
|
-
139,
|
|
7094
|
-
141,
|
|
7095
|
-
211,
|
|
7096
|
-
94,
|
|
7097
|
-
54,
|
|
7098
|
-
77,
|
|
7099
|
-
46,
|
|
7100
|
-
146,
|
|
7101
|
-
49,
|
|
7102
|
-
130,
|
|
7103
|
-
242,
|
|
7104
|
-
41,
|
|
7105
|
-
112,
|
|
7106
|
-
61,
|
|
7107
|
-
45,
|
|
7108
|
-
215,
|
|
7109
|
-
182,
|
|
7110
|
-
64,
|
|
7111
|
-
178,
|
|
7112
|
-
67,
|
|
7113
|
-
68,
|
|
7114
|
-
128,
|
|
7115
|
-
120,
|
|
7116
|
-
210,
|
|
7117
|
-
13,
|
|
7118
|
-
73,
|
|
7119
|
-
74,
|
|
7120
|
-
9,
|
|
7121
|
-
99,
|
|
7122
|
-
108,
|
|
7123
|
-
7,
|
|
7124
|
-
58,
|
|
7125
|
-
158,
|
|
7126
|
-
213,
|
|
7127
|
-
6,
|
|
7128
|
-
198,
|
|
7129
|
-
225,
|
|
7130
|
-
98,
|
|
7131
|
-
244,
|
|
7132
|
-
52,
|
|
7133
|
-
36,
|
|
7134
|
-
89,
|
|
7135
|
-
169,
|
|
7136
|
-
87,
|
|
7137
|
-
42,
|
|
7138
|
-
0,
|
|
7139
|
-
62,
|
|
7140
|
-
23,
|
|
7141
|
-
44,
|
|
7142
|
-
10,
|
|
7143
|
-
26,
|
|
7144
|
-
66,
|
|
7145
|
-
250,
|
|
7146
|
-
147,
|
|
7147
|
-
190,
|
|
7148
|
-
220,
|
|
7149
|
-
245,
|
|
7150
|
-
179,
|
|
7151
|
-
106,
|
|
7152
|
-
19,
|
|
7153
|
-
232,
|
|
7154
|
-
3,
|
|
7155
|
-
199,
|
|
7156
|
-
151,
|
|
7157
|
-
187,
|
|
7158
|
-
115,
|
|
7159
|
-
118,
|
|
7160
|
-
134,
|
|
7161
|
-
227,
|
|
7162
|
-
70,
|
|
7163
|
-
114,
|
|
7164
|
-
71,
|
|
7165
|
-
208,
|
|
7166
|
-
5,
|
|
7167
|
-
76,
|
|
7168
|
-
56,
|
|
7169
|
-
124,
|
|
7170
|
-
31,
|
|
7171
|
-
129,
|
|
7172
|
-
171,
|
|
7173
|
-
117,
|
|
7174
|
-
81,
|
|
7175
|
-
235,
|
|
7176
|
-
243,
|
|
7177
|
-
50,
|
|
7178
|
-
116,
|
|
7179
|
-
17,
|
|
7180
|
-
143,
|
|
7181
|
-
132,
|
|
7182
|
-
137,
|
|
7183
|
-
156,
|
|
7184
|
-
113,
|
|
7185
|
-
34,
|
|
7186
|
-
126,
|
|
7187
|
-
157,
|
|
7188
|
-
207,
|
|
7189
|
-
63,
|
|
7190
|
-
145,
|
|
7191
|
-
105,
|
|
7192
|
-
101,
|
|
7193
|
-
60,
|
|
7194
|
-
109,
|
|
7195
|
-
150,
|
|
7196
|
-
162,
|
|
7197
|
-
152,
|
|
7198
|
-
153,
|
|
7199
|
-
51,
|
|
7200
|
-
57,
|
|
7201
|
-
154,
|
|
7202
|
-
202,
|
|
7203
|
-
195,
|
|
7204
|
-
159,
|
|
7205
|
-
160,
|
|
7206
|
-
188,
|
|
7207
|
-
228,
|
|
7208
|
-
163,
|
|
7209
|
-
164,
|
|
7210
|
-
84,
|
|
7211
|
-
127,
|
|
7212
|
-
167,
|
|
7213
|
-
168,
|
|
7214
|
-
4,
|
|
7215
|
-
111,
|
|
7216
|
-
93,
|
|
7217
|
-
172,
|
|
7218
|
-
183,
|
|
7219
|
-
39,
|
|
7220
|
-
175,
|
|
7221
|
-
176,
|
|
7222
|
-
40,
|
|
7223
|
-
65,
|
|
7224
|
-
174,
|
|
7225
|
-
180,
|
|
7226
|
-
110,
|
|
7227
|
-
11,
|
|
7228
|
-
27,
|
|
7229
|
-
223,
|
|
7230
|
-
142,
|
|
7231
|
-
48,
|
|
7232
|
-
177,
|
|
7233
|
-
254,
|
|
7234
|
-
144,
|
|
7235
|
-
97,
|
|
7236
|
-
96,
|
|
7237
|
-
192,
|
|
7238
|
-
203,
|
|
7239
|
-
92,
|
|
7240
|
-
14,
|
|
7241
|
-
239,
|
|
7242
|
-
22,
|
|
7243
|
-
131,
|
|
7244
|
-
234,
|
|
7245
|
-
32,
|
|
7246
|
-
233,
|
|
7247
|
-
201,
|
|
7248
|
-
85,
|
|
7249
|
-
196,
|
|
7250
|
-
69,
|
|
7251
|
-
133,
|
|
7252
|
-
204,
|
|
7253
|
-
30,
|
|
7254
|
-
170,
|
|
7255
|
-
103,
|
|
7256
|
-
138,
|
|
7257
|
-
123,
|
|
7258
|
-
53,
|
|
7259
|
-
214,
|
|
7260
|
-
25,
|
|
7261
|
-
216,
|
|
7262
|
-
217,
|
|
7263
|
-
194,
|
|
7264
|
-
219,
|
|
7265
|
-
148,
|
|
7266
|
-
221,
|
|
7267
|
-
28,
|
|
7268
|
-
222,
|
|
7269
|
-
166,
|
|
7270
|
-
255,
|
|
7271
|
-
248,
|
|
7272
|
-
191,
|
|
7273
|
-
91,
|
|
7274
|
-
90,
|
|
7275
|
-
15,
|
|
7276
|
-
231,
|
|
7277
|
-
193,
|
|
7278
|
-
189,
|
|
7279
|
-
209,
|
|
7280
|
-
102,
|
|
7281
|
-
197,
|
|
7282
|
-
37,
|
|
7283
|
-
238,
|
|
7284
|
-
140,
|
|
7285
|
-
226,
|
|
7286
|
-
95,
|
|
7287
|
-
136,
|
|
7288
|
-
161,
|
|
7289
|
-
59,
|
|
7290
|
-
165,
|
|
7291
|
-
246,
|
|
7292
|
-
206,
|
|
7293
|
-
149,
|
|
7294
|
-
47,
|
|
7295
|
-
100,
|
|
7296
|
-
35,
|
|
7297
|
-
251,
|
|
7298
|
-
253,
|
|
7299
|
-
79,
|
|
7300
|
-
155
|
|
7301
|
-
];
|
|
7302
|
-
function gfDouble(x) {
|
|
7303
|
-
x <<= 1;
|
|
7304
|
-
return x & 256 ? (x ^ 283) & 255 : x & 255;
|
|
7305
|
-
}
|
|
7306
|
-
function gfMul(x, n) {
|
|
7307
|
-
if (n === 1) return x;
|
|
7308
|
-
if (n === 2) return gfDouble(x);
|
|
7309
|
-
if (n === 3) return gfDouble(x) ^ x;
|
|
7310
|
-
throw new Error(`unsupported GF multiplier: ${n}`);
|
|
7311
|
-
}
|
|
7312
|
-
/**
|
|
7313
|
-
* Pre-compute 4 shifted T-tables from the S-box for the round function.
|
|
7314
|
-
*/
|
|
7315
|
-
function buildLookupTables() {
|
|
7316
|
-
const col0 = [];
|
|
7317
|
-
const col1 = [];
|
|
7318
|
-
const col2 = [];
|
|
7319
|
-
const col3 = [];
|
|
7320
|
-
for (const s of SBOX) {
|
|
7321
|
-
const a = gfMul(s, 2);
|
|
7322
|
-
const d = gfMul(s, 3);
|
|
7323
|
-
col0.push((a << 24 | s << 16 | s << 8 | d) >>> 0);
|
|
7324
|
-
col1.push((d << 24 | a << 16 | s << 8 | s) >>> 0);
|
|
7325
|
-
col2.push((s << 24 | d << 16 | a << 8 | s) >>> 0);
|
|
7326
|
-
col3.push((s << 24 | s << 16 | d << 8 | a) >>> 0);
|
|
7327
|
-
}
|
|
7328
|
-
return [
|
|
7329
|
-
col0,
|
|
7330
|
-
col1,
|
|
7331
|
-
col2,
|
|
7332
|
-
col3
|
|
7333
|
-
];
|
|
7334
|
-
}
|
|
7335
|
-
var [LUT0, LUT1, LUT2, LUT3] = buildLookupTables();
|
|
7336
|
-
function readU32BE(buf, off = 0) {
|
|
7337
|
-
return buf.readUInt32BE(off);
|
|
7338
|
-
}
|
|
7339
|
-
function toCompactJson(data) {
|
|
7340
|
-
if (typeof data === "string") return data;
|
|
7341
|
-
if (Buffer.isBuffer(data) || data instanceof Uint8Array) return Buffer.from(data).toString("utf-8");
|
|
7342
|
-
return JSON.stringify(data);
|
|
7343
|
-
}
|
|
7344
|
-
function fieldByte(tag, val = 0) {
|
|
7345
|
-
const b = Buffer.alloc(3);
|
|
7346
|
-
b.writeUInt16BE(tag, 0);
|
|
7347
|
-
b.writeUInt8(val & 255, 2);
|
|
7348
|
-
return b;
|
|
7349
|
-
}
|
|
7350
|
-
function fieldU32(tag, val) {
|
|
7351
|
-
const b = Buffer.alloc(6);
|
|
7352
|
-
b.writeUInt16BE(tag, 0);
|
|
7353
|
-
b.writeUInt32BE(val >>> 0, 2);
|
|
7354
|
-
return b;
|
|
7355
|
-
}
|
|
7356
|
-
function fieldU64(tag, val) {
|
|
7357
|
-
const b = Buffer.alloc(10);
|
|
7358
|
-
b.writeUInt16BE(tag, 0);
|
|
7359
|
-
b.writeBigUInt64BE(BigInt(val), 2);
|
|
7360
|
-
return b;
|
|
7361
|
-
}
|
|
7362
|
-
function fieldBlob(tag, data) {
|
|
7363
|
-
const head = Buffer.alloc(6);
|
|
7364
|
-
head.writeUInt16BE(tag, 0);
|
|
7365
|
-
head.writeUInt32BE(data.length >>> 0, 2);
|
|
7366
|
-
return Buffer.concat([head, data]);
|
|
7367
|
-
}
|
|
7368
|
-
/**
|
|
7369
|
-
* Encrypt a single 16-byte block; shorter input is zero-padded on the right.
|
|
7370
|
-
*/
|
|
7371
|
-
function encryptBlock16(block) {
|
|
7372
|
-
const src = Buffer.from(block);
|
|
7373
|
-
if (src.length > 16) throw new Error("block length must be <= 16");
|
|
7374
|
-
const padded = Buffer.alloc(16);
|
|
7375
|
-
src.copy(padded);
|
|
7376
|
-
let s0 = (readU32BE(padded, 0) ^ ROUND_KEYS[0][0]) >>> 0;
|
|
7377
|
-
let s1 = (readU32BE(padded, 4) ^ ROUND_KEYS[0][1]) >>> 0;
|
|
7378
|
-
let s2 = (readU32BE(padded, 8) ^ ROUND_KEYS[0][2]) >>> 0;
|
|
7379
|
-
let s3 = (readU32BE(padded, 12) ^ ROUND_KEYS[0][3]) >>> 0;
|
|
7380
|
-
for (let rnd = 1; rnd < 10; rnd++) {
|
|
7381
|
-
const rk = ROUND_KEYS[rnd];
|
|
7382
|
-
const n0 = (LUT0[s0 >>> 24 & 255] ^ LUT1[s1 >>> 16 & 255] ^ LUT2[s2 >>> 8 & 255] ^ LUT3[s3 & 255] ^ rk[0]) >>> 0;
|
|
7383
|
-
const n1 = (LUT0[s1 >>> 24 & 255] ^ LUT1[s2 >>> 16 & 255] ^ LUT2[s3 >>> 8 & 255] ^ LUT3[s0 & 255] ^ rk[1]) >>> 0;
|
|
7384
|
-
const n2 = (LUT0[s2 >>> 24 & 255] ^ LUT1[s3 >>> 16 & 255] ^ LUT2[s0 >>> 8 & 255] ^ LUT3[s1 & 255] ^ rk[2]) >>> 0;
|
|
7385
|
-
const n3 = (LUT0[s3 >>> 24 & 255] ^ LUT1[s0 >>> 16 & 255] ^ LUT2[s1 >>> 8 & 255] ^ LUT3[s2 & 255] ^ rk[3]) >>> 0;
|
|
7386
|
-
s0 = n0;
|
|
7387
|
-
s1 = n1;
|
|
7388
|
-
s2 = n2;
|
|
7389
|
-
s3 = n3;
|
|
7390
|
-
}
|
|
7391
|
-
const state = [
|
|
7392
|
-
s0,
|
|
7393
|
-
s1,
|
|
7394
|
-
s2,
|
|
7395
|
-
s3
|
|
7396
|
-
];
|
|
7397
|
-
const out = Buffer.alloc(16);
|
|
7398
|
-
for (let row = 0; row < 4; row++) for (let col = 0; col < 4; col++) {
|
|
7399
|
-
const idx = state[row + col & 3] >>> 24 - 8 * col & 255;
|
|
7400
|
-
out[4 * row + col] = SBOX[idx] ^ LAST_ROUND_KEY_BYTES[4 * row + col];
|
|
7401
|
-
}
|
|
7402
|
-
return out;
|
|
7403
|
-
}
|
|
7404
|
-
/**
|
|
7405
|
-
* Encrypt data by splitting into 16-byte blocks (ECB mode).
|
|
7406
|
-
*/
|
|
7407
|
-
function encryptBlocks(src) {
|
|
7408
|
-
const parts = [];
|
|
7409
|
-
for (let i = 0; i < src.length; i += 16) parts.push(encryptBlock16(src.subarray(i, i + 16)));
|
|
7410
|
-
return Buffer.concat(parts);
|
|
7411
|
-
}
|
|
7412
|
-
/**
|
|
7413
|
-
* Encrypt the 16-byte session key and append its length.
|
|
7414
|
-
*/
|
|
7415
|
-
function encryptSessionKey(key) {
|
|
7416
|
-
if (key.length !== 16) throw new Error("session key must be 16 bytes");
|
|
7417
|
-
const len = Buffer.alloc(4);
|
|
7418
|
-
len.writeUInt32BE(16, 0);
|
|
7419
|
-
return Buffer.concat([encryptBlock16(key), len]);
|
|
7420
|
-
}
|
|
7421
|
-
var DEFAULT_INTERACTION_TRACE = Buffer.from("0002000200004700000000000001ffd9ffa8005c23fff1ffff001501ff90fff9000022fff2ffff001501ffb800770061a5ffe3ffff002a01fffcffe70000f0ffe4ffff002a01ffd30000003e01ffd40000003e01ffc8ffff005301ffbdfffa006901ffbefffb006901ffb1fff4007d01ffa6ffee009301ffa8ffef009301ff9effe900a801ff96ffe600be01ff97ffe600be01ff93ffe500d301ff92ffe500ea01ff92ffe4010501ff92ffe3011b01ff92ffe402d101ff93ffe502f201ff94ffe6040501", "hex");
|
|
7422
|
-
var DEFAULT_ENVIRONMENT_SNAPSHOT = Buffer.from("000000010000000000000000fffeffff00000000000000390001ffff00bc00000000006e00020001013400000000012f00000002011a00000000016100000000019f0000000002470000000002790000000002b1", "hex");
|
|
7423
|
-
/**
|
|
7424
|
-
* Build the pre-compression TLV payload for the RAP parameter.
|
|
7425
|
-
*/
|
|
7426
|
-
function buildBodyStructure(api, data, options = {}) {
|
|
7427
|
-
const bodyStr = toCompactJson(data);
|
|
7428
|
-
const hashInput = Buffer.from(api + bodyStr, "utf-8");
|
|
7429
|
-
const ts = options.timestampMs === null || options.timestampMs === void 0 ? Math.floor(Date.now()) : Math.floor(options.timestampMs);
|
|
7430
|
-
let key;
|
|
7431
|
-
if (typeof options.sessionKey === "string") key = Buffer.from(options.sessionKey, "ascii");
|
|
7432
|
-
else if (options.sessionKey) key = Buffer.from(options.sessionKey);
|
|
7433
|
-
else key = Buffer.from(RandomGenerator.generateRandomAscii(16), "ascii");
|
|
7434
|
-
if (key.length !== 16) throw new Error("sessionKey must be 16 bytes");
|
|
7435
|
-
const xorByte = options.obfuscationByte === null || options.obfuscationByte === void 0 ? Math.floor(Math.random() * 255) + 1 : options.obfuscationByte & 255;
|
|
7436
|
-
const randNonce = options.nonce === null || options.nonce === void 0 ? Math.floor(Math.random() * 4294967296) >>> 0 : options.nonce >>> 0;
|
|
7437
|
-
const trace = options.interactionTrace ?? DEFAULT_INTERACTION_TRACE;
|
|
7438
|
-
const env = options.environmentSnapshot ?? DEFAULT_ENVIRONMENT_SNAPSHOT;
|
|
7439
|
-
const parts = [];
|
|
7440
|
-
parts.push(fieldU64(1e3, ts));
|
|
7441
|
-
parts.push(fieldU32(1001, randNonce));
|
|
7442
|
-
parts.push(fieldBlob(1002, key));
|
|
7443
|
-
parts.push(fieldU32(1003, xxh32(hashInput)));
|
|
7444
|
-
const flagTags = [];
|
|
7445
|
-
for (let t = 1051; t < 1066; t++) flagTags.push(t);
|
|
7446
|
-
flagTags.push(1070);
|
|
7447
|
-
for (let t = 1066; t < 1070; t++) flagTags.push(t);
|
|
7448
|
-
for (const tag of flagTags) parts.push(fieldByte(tag));
|
|
7449
|
-
parts.push(fieldU32(1100, 0));
|
|
7450
|
-
for (let t = 1071; t < 1074; t++) parts.push(fieldByte(t));
|
|
7451
|
-
parts.push(fieldU32(1075, 1380));
|
|
7452
|
-
parts.push(fieldU32(1076, 44));
|
|
7453
|
-
parts.push(fieldU64(1077, Math.max(0, ts - 1076)));
|
|
7454
|
-
parts.push(fieldBlob(1078, trace));
|
|
7455
|
-
parts.push(fieldU32(1082, 0));
|
|
7456
|
-
parts.push(fieldU32(1084, 0));
|
|
7457
|
-
parts.push(fieldU32(1085, 0));
|
|
7458
|
-
parts.push(fieldU32(1086, 100));
|
|
7459
|
-
parts.push(fieldU64(1087, Math.max(0, ts - 727)));
|
|
7460
|
-
parts.push(fieldBlob(1088, env));
|
|
7461
|
-
parts.push(fieldU32(1090, 0));
|
|
7462
|
-
parts.push(fieldU32(1097, 0));
|
|
7463
|
-
parts.push(fieldU32(1092, 1382));
|
|
7464
|
-
parts.push(fieldU32(1094, 1305));
|
|
7465
|
-
parts.push(fieldU64(1095, Math.max(0, ts - 8588)));
|
|
7466
|
-
parts.push(fieldU32(1093, 0));
|
|
7467
|
-
parts.push(fieldByte(1096));
|
|
7468
|
-
parts.push(fieldBlob(1091, Buffer.from([
|
|
7469
|
-
0,
|
|
7470
|
-
0,
|
|
7471
|
-
255,
|
|
7472
|
-
255
|
|
7473
|
-
])));
|
|
7474
|
-
for (let t = 1151; t < 1157; t++) parts.push(fieldByte(t));
|
|
7475
|
-
const buf = Buffer.concat(parts);
|
|
7476
|
-
const out = Buffer.from(buf);
|
|
7477
|
-
for (let i = 16; i < out.length; i++) out[i] = out[i] ^ xorByte;
|
|
7478
|
-
return out;
|
|
7479
|
-
}
|
|
7480
|
-
/**
|
|
7481
|
-
* Gzip-compress with OS byte patched to match the browser runtime (0x03).
|
|
7482
|
-
*/
|
|
7483
|
-
function compressBody(raw, mtime, level = 6) {
|
|
7484
|
-
const mt = mtime === null || mtime === void 0 ? Math.floor(Date.now() / 1e3) : mtime;
|
|
7485
|
-
const out = Buffer.from(gzipSync(raw, { level }));
|
|
7486
|
-
if (out.length >= 10) {
|
|
7487
|
-
out.writeUInt32LE(mt >>> 0, 4);
|
|
7488
|
-
out[9] = 3;
|
|
7489
|
-
}
|
|
7490
|
-
return out;
|
|
7491
|
-
}
|
|
7492
|
-
function cyclicXor(data, key) {
|
|
7493
|
-
const out = Buffer.alloc(data.length);
|
|
7494
|
-
for (let i = 0; i < data.length; i++) out[i] = data[i] ^ key[i % key.length];
|
|
7495
|
-
return out;
|
|
7496
|
-
}
|
|
7497
|
-
/**
|
|
7498
|
-
* Encrypt, wrap, and base64-encode the compressed body into the final x-rap-param.
|
|
7499
|
-
*/
|
|
7500
|
-
function packEnvelope(compressed, options = {}) {
|
|
7501
|
-
const gz = Buffer.from(compressed);
|
|
7502
|
-
let key;
|
|
7503
|
-
if (typeof options.encryptionKey === "string") key = Buffer.from(options.encryptionKey, "ascii");
|
|
7504
|
-
else if (options.encryptionKey) key = Buffer.from(options.encryptionKey);
|
|
7505
|
-
else key = Buffer.from(RandomGenerator.generateRandomAscii(16), "ascii");
|
|
7506
|
-
if (key.length !== 16) throw new Error("encryptionKey must be 16 bytes");
|
|
7507
|
-
const salt = options.saltString === null || options.saltString === void 0 ? RandomGenerator.generateRandomAscii([
|
|
7508
|
-
4,
|
|
7509
|
-
5,
|
|
7510
|
-
6
|
|
7511
|
-
][Math.floor(Math.random() * 3)]) : options.saltString;
|
|
7512
|
-
const saltBytes = Buffer.from(salt, "ascii");
|
|
7513
|
-
if (saltBytes.length < 0 || saltBytes.length > 255) throw new Error("saltString length must fit one byte");
|
|
7514
|
-
const cipherBlocks = encryptBlocks(cyclicXor(gz, key));
|
|
7515
|
-
const gzLen = Buffer.alloc(4);
|
|
7516
|
-
gzLen.writeUInt32BE(gz.length >>> 0, 0);
|
|
7517
|
-
const cipherBody = Buffer.concat([cipherBlocks, gzLen]);
|
|
7518
|
-
const content = Buffer.concat([
|
|
7519
|
-
saltBytes,
|
|
7520
|
-
encryptSessionKey(key),
|
|
7521
|
-
cipherBody
|
|
7522
|
-
]);
|
|
7523
|
-
const contentHash = xxh32(content);
|
|
7524
|
-
const encTime = options.processingTime === null || options.processingTime === void 0 ? Math.floor(Math.random() * 181) + 60 : options.processingTime;
|
|
7525
|
-
const protocolVersion = options.protocolVersion ?? XRAP_SDK_VERSION;
|
|
7526
|
-
const header = Buffer.alloc(36);
|
|
7527
|
-
header[0] = 7;
|
|
7528
|
-
header[1] = 36;
|
|
7529
|
-
header[2] = 1;
|
|
7530
|
-
header[3] = saltBytes.length & 255;
|
|
7531
|
-
header.writeUInt32BE(1, 4);
|
|
7532
|
-
header.writeUInt32BE(20, 8);
|
|
7533
|
-
header.writeUInt32BE(cipherBody.length >>> 0, 12);
|
|
7534
|
-
header.writeUInt32BE(contentHash >>> 0, 16);
|
|
7535
|
-
header.writeUInt32BE(protocolVersion >>> 0, 20);
|
|
7536
|
-
header.writeUInt32BE(encTime >>> 0, 24);
|
|
7537
|
-
return Buffer.concat([header, content]).toString("base64");
|
|
7538
|
-
}
|
|
7539
|
-
/**
|
|
7540
|
-
* Generate x-rap-param from API path and request payload.
|
|
7541
|
-
*
|
|
7542
|
-
* @param api - Request API path (e.g. "//edith.xiaohongshu.com/api/sns/web/v1/feed")
|
|
7543
|
-
* @param data - Request body as object, JSON string, or raw bytes
|
|
7544
|
-
* @param options - Optional deterministic overrides (used for testing)
|
|
7545
|
-
* @returns Base64-encoded x-rap-param string
|
|
7546
|
-
*/
|
|
7547
|
-
function xRapParam(api, data, options = {}) {
|
|
7548
|
-
return packEnvelope(compressBody(buildBodyStructure(api, data, {
|
|
7549
|
-
sessionKey: options.innerKey,
|
|
7550
|
-
timestampMs: options.timestampMs,
|
|
7551
|
-
nonce: options.bodyRand32,
|
|
7552
|
-
obfuscationByte: options.mask,
|
|
7553
|
-
interactionTrace: options.tracePayload,
|
|
7554
|
-
environmentSnapshot: options.envPayload
|
|
7555
|
-
}), options.gzipMtime, options.compresslevel ?? 6), {
|
|
7556
|
-
encryptionKey: options.aesKey,
|
|
7557
|
-
saltString: options.randomString,
|
|
7558
|
-
processingTime: options.bodyEncryTime,
|
|
7559
|
-
protocolVersion: options.sdkVersion ?? XRAP_SDK_VERSION
|
|
7560
|
-
});
|
|
7561
|
-
}
|
|
7562
|
-
var methodSchema = _enum(["GET", "POST"], { message: "method must be \"GET\" or \"POST\"" });
|
|
7563
|
-
var uriSchema = string$2({ message: "uri must be a string" }).min(1, "uri cannot be empty");
|
|
7564
|
-
var a1ValueSchema = string$2({ message: "a1Value must be a string" }).min(1, "a1Value cannot be empty");
|
|
7565
|
-
string$2({ message: "xsecAppid must be a string" }).min(1, "xsecAppid cannot be empty");
|
|
7566
|
-
record(string$2(), any()).nullable().optional();
|
|
7567
|
-
var cookieSchema = union([record(string$2(), any()), string$2()]);
|
|
7568
|
-
var signatureParamsSchema = object({
|
|
7569
|
-
method: methodSchema,
|
|
7570
|
-
uri: uriSchema,
|
|
7571
|
-
a1Value: a1ValueSchema
|
|
7572
|
-
});
|
|
7573
|
-
var getSignatureParamsSchema = object({
|
|
7574
|
-
uri: uriSchema,
|
|
7575
|
-
a1Value: a1ValueSchema
|
|
7576
|
-
});
|
|
7577
|
-
var postSignatureParamsSchema = object({
|
|
7578
|
-
uri: uriSchema,
|
|
7579
|
-
a1Value: a1ValueSchema
|
|
7580
|
-
});
|
|
7581
|
-
var xsCommonParamsSchema = object({ cookieDict: cookieSchema });
|
|
7582
|
-
function validateSignatureParams(method, uri, a1Value) {
|
|
7583
|
-
try {
|
|
7584
|
-
signatureParamsSchema.parse({
|
|
7585
|
-
method,
|
|
7586
|
-
uri,
|
|
7587
|
-
a1Value
|
|
7588
|
-
});
|
|
7589
|
-
} catch (error) {
|
|
7590
|
-
if (error instanceof ZodError) {
|
|
7591
|
-
const firstError = error.issues[0];
|
|
7592
|
-
throw new TypeError(firstError.message);
|
|
7593
|
-
}
|
|
7594
|
-
throw error;
|
|
7595
|
-
}
|
|
7596
|
-
}
|
|
7597
|
-
function validateGetSignatureParams(uri, a1Value) {
|
|
7598
|
-
try {
|
|
7599
|
-
getSignatureParamsSchema.parse({
|
|
7600
|
-
uri,
|
|
7601
|
-
a1Value
|
|
7602
|
-
});
|
|
7603
|
-
} catch (error) {
|
|
7604
|
-
if (error instanceof ZodError) {
|
|
7605
|
-
const firstError = error.issues[0];
|
|
7606
|
-
throw new TypeError(firstError.message);
|
|
7607
|
-
}
|
|
7608
|
-
throw error;
|
|
7609
|
-
}
|
|
7610
|
-
}
|
|
7611
|
-
function validatePostSignatureParams(uri, a1Value) {
|
|
7612
|
-
try {
|
|
7613
|
-
postSignatureParamsSchema.parse({
|
|
7614
|
-
uri,
|
|
7615
|
-
a1Value
|
|
7616
|
-
});
|
|
7617
|
-
} catch (error) {
|
|
7618
|
-
if (error instanceof ZodError) {
|
|
7619
|
-
const firstError = error.issues[0];
|
|
7620
|
-
throw new TypeError(firstError.message);
|
|
7621
|
-
}
|
|
7622
|
-
throw error;
|
|
7623
|
-
}
|
|
7624
|
-
}
|
|
7625
|
-
function validateXsCommonParams(cookieDict) {
|
|
7626
|
-
try {
|
|
7627
|
-
xsCommonParamsSchema.parse({ cookieDict });
|
|
7628
|
-
} catch (error) {
|
|
7629
|
-
if (error instanceof ZodError) {
|
|
7630
|
-
const firstError = error.issues[0];
|
|
7631
|
-
throw new TypeError(firstError.message);
|
|
7632
|
-
}
|
|
7633
|
-
throw error;
|
|
7634
|
-
}
|
|
7635
|
-
}
|
|
7636
|
-
var Xhshow = class {
|
|
7637
|
-
config;
|
|
7638
|
-
cryptoProcessor;
|
|
7639
|
-
randomGenerator;
|
|
7640
|
-
/**
|
|
7641
|
-
* 创建 Xhshow 实例
|
|
7642
|
-
* @param config - 可选的加密配置对象,不传则使用默认配置
|
|
7643
|
-
*/
|
|
7644
|
-
constructor(config) {
|
|
7645
|
-
this.config = config || new CryptoConfig();
|
|
7646
|
-
this.cryptoProcessor = new CryptoProcessor(this.config);
|
|
7647
|
-
this.randomGenerator = new RandomGenerator();
|
|
7648
|
-
}
|
|
7649
|
-
/**
|
|
7650
|
-
* 构建内容字符串(用于 MD5 计算和签名生成)
|
|
7651
|
-
* @param method - HTTP 请求方法
|
|
7652
|
-
* @param uri - 请求 URI 路径
|
|
7653
|
-
* @param payload - 请求参数或请求体
|
|
7654
|
-
* @returns 用于签名的内容字符串
|
|
7655
|
-
*/
|
|
7656
|
-
buildContentString(method, uri, payload = null) {
|
|
7657
|
-
const normalizedPayload = payload || {};
|
|
7658
|
-
if (method.toUpperCase() === "POST") return uri + JSON.stringify(normalizedPayload);
|
|
7659
|
-
else {
|
|
7660
|
-
if (Object.keys(normalizedPayload).length === 0) return uri;
|
|
7661
|
-
return `${uri}?${Object.entries(normalizedPayload).map(([key, value]) => {
|
|
7662
|
-
let valStr = "";
|
|
7663
|
-
if (Array.isArray(value)) valStr = value.map((v) => String(v)).join(",");
|
|
7664
|
-
else valStr = value !== null && value !== void 0 ? String(value) : "";
|
|
7665
|
-
return `${key}=${valStr.replace(/=/g, "%3D")}`;
|
|
7666
|
-
}).join("&")}`;
|
|
7667
|
-
}
|
|
7668
|
-
}
|
|
7669
|
-
/**
|
|
7670
|
-
* 根据内容字符串生成 d 值(MD5 哈希)
|
|
7671
|
-
* @param content - 内容字符串
|
|
7672
|
-
* @returns MD5 哈希值(十六进制字符串)
|
|
7673
|
-
*/
|
|
7674
|
-
generateDValue(content) {
|
|
7675
|
-
return createHash("md5").update(content, "utf8").digest("hex");
|
|
7676
|
-
}
|
|
7677
|
-
/**
|
|
7678
|
-
* 构建签名
|
|
7679
|
-
* @param dValue - MD5 哈希值
|
|
7680
|
-
* @param a1Value - Cookie 中的 a1 值
|
|
7681
|
-
* @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
|
|
7682
|
-
* @param stringParam - 字符串参数
|
|
7683
|
-
* @param timestamp - 可选的时间戳
|
|
7684
|
-
* @param signState - 可选的签名状态(用于会话管理)
|
|
7685
|
-
* @returns 编码后的签名字符串
|
|
7686
|
-
*/
|
|
7687
|
-
buildSignature(dValue, mValue, a1Value, xsecAppid = "xhs-pc-web", stringParam = "", timestamp, signState) {
|
|
7688
|
-
const payloadArray = this.cryptoProcessor.buildPayloadArray(dValue, mValue, a1Value, xsecAppid, stringParam, timestamp, signState);
|
|
7689
|
-
const xorResult = this.cryptoProcessor.bitOps.xorTransformArray(payloadArray);
|
|
7690
|
-
return this.cryptoProcessor.b64encoder.encodeX3(xorResult.subarray(0, this.config.PAYLOAD_LENGTH));
|
|
7691
|
-
}
|
|
7692
|
-
/**
|
|
7693
|
-
* 生成请求签名(支持 GET 和 POST)
|
|
7694
|
-
* @param method - HTTP 请求方法,'GET' 或 'POST'
|
|
7695
|
-
* @param uri - 请求 URI 路径(可以是完整 URL,会自动提取路径部分)
|
|
7696
|
-
* @param a1Value - Cookie 中的 a1 值
|
|
7697
|
-
* @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
|
|
7698
|
-
* @param payload - GET 请求的查询参数或 POST 请求的请求体
|
|
7699
|
-
* @param timestamp - 可选的时间戳(秒),不传则使用当前时间
|
|
7700
|
-
* @param session - 可选的会话管理器,用于生成更真实的签名
|
|
7701
|
-
* @returns x-s 签名字符串
|
|
7702
|
-
*/
|
|
7703
|
-
signXs(method, uri, a1Value, xsecAppid = "xhs-pc-web", payload = null, timestamp, session) {
|
|
7704
|
-
validateSignatureParams(method, uri, a1Value);
|
|
7705
|
-
uri = extractUri(uri);
|
|
7706
|
-
const signatureData = { ...this.config.SIGNATURE_DATA_TEMPLATE };
|
|
7707
|
-
const contentString = this.buildContentString(method, uri, payload);
|
|
7708
|
-
const dValue = this.generateDValue(contentString);
|
|
7709
|
-
const mValue = method === "GET" ? dValue : createHash("md5").update(uri, "utf8").digest("hex");
|
|
7710
|
-
const signState = session ? session.getCurrentState(contentString) : void 0;
|
|
7711
|
-
signatureData.x3 = this.config.X3_PREFIX + this.buildSignature(dValue, mValue, a1Value, xsecAppid, contentString, timestamp, signState);
|
|
7712
|
-
const jsonStr = JSON.stringify(signatureData);
|
|
7713
|
-
return this.config.XYS_PREFIX + this.cryptoProcessor.b64encoder.encode(jsonStr);
|
|
7714
|
-
}
|
|
7715
|
-
/**
|
|
7716
|
-
* 生成 XYW_ 格式签名(AES-128-CBC 加密)
|
|
7717
|
-
*
|
|
7718
|
-
* 数据获取类接口(user_posted、otherinfo 等)自 2026 年 3 月起会以 HTTP 406
|
|
7719
|
-
* 拒绝传统 XYS_ 格式,此时需改用 XYW_ 格式。它使用独立于 signXs 的加密路径。
|
|
7720
|
-
*
|
|
7721
|
-
* @param method - HTTP 请求方法,'GET' 或 'POST'
|
|
7722
|
-
* @param uri - 请求 URI 路径(可以是完整 URL)
|
|
7723
|
-
* @param a1Value - Cookie 中的 a1 值
|
|
7724
|
-
* @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
|
|
7725
|
-
* @param payload - GET 请求的查询参数或 POST 请求的请求体
|
|
7726
|
-
* @param timestamp - 可选的时间戳(秒),不传则使用当前时间
|
|
7727
|
-
* @param _session - 未使用,仅为保持与 signXs 的接口一致
|
|
7728
|
-
* @returns XYW_ 格式签名字符串
|
|
7729
|
-
*/
|
|
7730
|
-
signXyw(method, uri, a1Value, xsecAppid = "xhs-pc-web", payload = null, timestamp, _session) {
|
|
7731
|
-
validateSignatureParams(method, uri, a1Value);
|
|
7732
|
-
uri = extractUri(uri);
|
|
7733
|
-
const payloadHex = buildXywPayloadHex({
|
|
7734
|
-
fullUri: this.buildContentString(method, uri, payload),
|
|
7735
|
-
a1Value,
|
|
7736
|
-
timestampMs: String(this.getXT(timestamp)),
|
|
7737
|
-
config: this.config
|
|
7738
|
-
});
|
|
7739
|
-
const xywData = {
|
|
7740
|
-
signSvn: this.config.XYW_SIGN_SVN,
|
|
7741
|
-
signType: this.config.XYW_SIGN_TYPE,
|
|
7742
|
-
appId: xsecAppid,
|
|
7743
|
-
signVersion: this.config.XYW_SIGN_VERSION,
|
|
7744
|
-
payload: payloadHex
|
|
7745
|
-
};
|
|
7746
|
-
const xywJson = JSON.stringify(xywData);
|
|
7747
|
-
return this.config.XYW_PREFIX + Buffer.from(xywJson, "utf-8").toString("base64");
|
|
7748
|
-
}
|
|
7749
|
-
/**
|
|
7750
|
-
* 生成 x-s-common 签名
|
|
7751
|
-
* @param cookieDict - Cookie 字典对象或 Cookie 字符串
|
|
7752
|
-
* @returns x-s-common 签名字符串
|
|
7753
|
-
*/
|
|
7754
|
-
signXsCommon(cookieDict) {
|
|
7755
|
-
const parsedCookies = this.parseCookies(cookieDict);
|
|
7756
|
-
return new XsCommonSigner(this.config).sign(parsedCookies);
|
|
7757
|
-
}
|
|
7758
|
-
/**
|
|
7759
|
-
* 生成 GET 请求签名(便捷方法)
|
|
7760
|
-
* @param uri - 请求 URI 路径
|
|
7761
|
-
* @param a1Value - Cookie 中的 a1 值
|
|
7762
|
-
* @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
|
|
7763
|
-
* @param params - 查询参数对象
|
|
7764
|
-
* @param timestamp - 可选的时间戳(秒)
|
|
7765
|
-
* @param session - 可选的会话管理器
|
|
7766
|
-
* @returns x-s 签名字符串
|
|
7767
|
-
*/
|
|
7768
|
-
signXsGet(uri, a1Value, xsecAppid = "xhs-pc-web", params = null, timestamp, session) {
|
|
7769
|
-
validateGetSignatureParams(uri, a1Value);
|
|
7770
|
-
return this.signXs("GET", uri, a1Value, xsecAppid, params, timestamp, session);
|
|
7771
|
-
}
|
|
7772
|
-
/**
|
|
7773
|
-
* 生成 POST 请求签名(便捷方法)
|
|
7774
|
-
* @param uri - 请求 URI 路径
|
|
7775
|
-
* @param a1Value - Cookie 中的 a1 值
|
|
7776
|
-
* @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
|
|
7777
|
-
* @param payload - 请求体对象
|
|
7778
|
-
* @param timestamp - 可选的时间戳(秒)
|
|
7779
|
-
* @param session - 可选的会话管理器
|
|
7780
|
-
* @returns x-s 签名字符串
|
|
7781
|
-
*/
|
|
7782
|
-
signXsPost(uri, a1Value, xsecAppid = "xhs-pc-web", payload = null, timestamp, session) {
|
|
7783
|
-
validatePostSignatureParams(uri, a1Value);
|
|
7784
|
-
return this.signXs("POST", uri, a1Value, xsecAppid, payload, timestamp, session);
|
|
7785
|
-
}
|
|
7786
|
-
/**
|
|
7787
|
-
* 生成 x-s-common 签名的便捷包装方法
|
|
7788
|
-
* @param cookieDict - Cookie 字典对象或 Cookie 字符串
|
|
7789
|
-
* @returns x-s-common 签名字符串
|
|
7790
|
-
*/
|
|
7791
|
-
signXsc(cookieDict) {
|
|
7792
|
-
validateXsCommonParams(cookieDict);
|
|
7793
|
-
return this.signXsCommon(cookieDict);
|
|
7794
|
-
}
|
|
7795
|
-
/**
|
|
7796
|
-
* 解密 x3 签名(Base64 格式)
|
|
7797
|
-
* @param x3Signature - x3 签名字符串
|
|
7798
|
-
* @returns 解密后的字节数组
|
|
7799
|
-
*/
|
|
7800
|
-
decodeX3(x3Signature) {
|
|
7801
|
-
if (x3Signature.startsWith(this.config.X3_PREFIX)) x3Signature = x3Signature.slice(this.config.X3_PREFIX.length);
|
|
7802
|
-
const decodedBytes = this.cryptoProcessor.b64encoder.decodeX3(x3Signature);
|
|
7803
|
-
return this.cryptoProcessor.bitOps.xorTransformArray(Array.from(decodedBytes));
|
|
7804
|
-
}
|
|
7805
|
-
/**
|
|
7806
|
-
* 解密完整的 XYS 签名
|
|
7807
|
-
* @param xsSignature - x-s 签名字符串
|
|
7808
|
-
* @returns 解密后的签名数据对象
|
|
7809
|
-
* @throws 如果 JSON 解析失败则抛出错误
|
|
7810
|
-
*/
|
|
7811
|
-
decodeXs(xsSignature) {
|
|
7812
|
-
if (xsSignature.startsWith(this.config.XYS_PREFIX)) xsSignature = xsSignature.slice(this.config.XYS_PREFIX.length);
|
|
7813
|
-
const jsonString = this.cryptoProcessor.b64encoder.decode(xsSignature);
|
|
7814
|
-
try {
|
|
7815
|
-
return JSON.parse(jsonString);
|
|
7816
|
-
} catch (e) {
|
|
7817
|
-
throw new Error(`Invalid signature: JSON decode failed - ${e}`);
|
|
7818
|
-
}
|
|
7819
|
-
}
|
|
7820
|
-
/**
|
|
7821
|
-
* 构建带查询参数的完整 URL(便捷方法)
|
|
7822
|
-
* @param baseUrl - 基础 URL
|
|
7823
|
-
* @param params - 可选的查询参数对象
|
|
7824
|
-
* @returns 完整的 URL 字符串
|
|
7825
|
-
*/
|
|
7826
|
-
buildUrl(baseUrl, params) {
|
|
7827
|
-
return buildUrl(baseUrl, params);
|
|
7828
|
-
}
|
|
7829
|
-
/**
|
|
7830
|
-
* 构建 POST 请求的 JSON 请求体字符串(便捷方法)
|
|
7831
|
-
* @param payload - 请求体对象
|
|
7832
|
-
* @returns JSON 字符串
|
|
7833
|
-
*/
|
|
7834
|
-
buildJsonBody(payload) {
|
|
7835
|
-
return JSON.stringify(payload);
|
|
7836
|
-
}
|
|
7837
|
-
/**
|
|
7838
|
-
* 生成 HTTP 请求头中的 x-b3-traceid
|
|
7839
|
-
* @returns x-b3-traceid 字符串
|
|
7840
|
-
*/
|
|
7841
|
-
getB3TraceId() {
|
|
7842
|
-
return this.randomGenerator.generateB3TraceId();
|
|
7843
|
-
}
|
|
7844
|
-
/**
|
|
7845
|
-
* 生成 HTTP 请求头中的 x-xray-traceid
|
|
7846
|
-
* @param timestamp - 可选的时间戳(毫秒)
|
|
7847
|
-
* @param seq - 可选的序列号
|
|
7848
|
-
* @returns x-xray-traceid 字符串
|
|
7849
|
-
*/
|
|
7850
|
-
getXrayTraceId(timestamp, seq) {
|
|
7851
|
-
return this.randomGenerator.generateXrayTraceId(timestamp, seq);
|
|
7852
|
-
}
|
|
7853
|
-
/**
|
|
7854
|
-
* 生成搜索接口所需的 search_id
|
|
7855
|
-
* @returns Base36 编码的搜索 ID
|
|
7856
|
-
*/
|
|
7857
|
-
getSearchId() {
|
|
7858
|
-
return this.randomGenerator.generateSearchId();
|
|
7859
|
-
}
|
|
7860
|
-
/**
|
|
7861
|
-
* 生成搜索接口所需的 request_id
|
|
7862
|
-
* @returns 格式为 "{random}-{timestamp_ms}" 的字符串
|
|
7863
|
-
*/
|
|
7864
|
-
getSearchRequestId() {
|
|
7865
|
-
return this.randomGenerator.generateSearchRequestId();
|
|
7866
|
-
}
|
|
7867
|
-
/**
|
|
7868
|
-
* 生成 a1 Cookie 值
|
|
7869
|
-
* @returns 52 字符的 a1 值
|
|
7870
|
-
*/
|
|
7871
|
-
static generateA1() {
|
|
7872
|
-
return RandomGenerator.generateA1();
|
|
7873
|
-
}
|
|
7874
|
-
/**
|
|
7875
|
-
* 根据 a1 值生成 web_id
|
|
7876
|
-
* @param a1 - a1 Cookie 值
|
|
7877
|
-
* @returns 32 字符的十六进制 web_id
|
|
7878
|
-
*/
|
|
7879
|
-
static generateWebId(a1) {
|
|
7880
|
-
return RandomGenerator.generateWebId(a1);
|
|
7881
|
-
}
|
|
7882
|
-
/**
|
|
7883
|
-
* 生成 x-t 请求头值(Unix 时间戳,毫秒)
|
|
7884
|
-
* @param timestamp - 可选的时间戳(秒),不传则使用当前时间
|
|
7885
|
-
* @returns Unix 时间戳(毫秒)
|
|
7886
|
-
*/
|
|
7887
|
-
getXT(timestamp) {
|
|
7888
|
-
if (timestamp === void 0) timestamp = Date.now() / 1e3;
|
|
7889
|
-
return Math.floor(timestamp * 1e3);
|
|
7890
|
-
}
|
|
7891
|
-
/**
|
|
7892
|
-
* 将 Cookie 解析为字典格式
|
|
7893
|
-
* @param cookies - Cookie 字典对象或 Cookie 字符串
|
|
7894
|
-
* @returns Cookie 字典对象
|
|
7895
|
-
*/
|
|
7896
|
-
parseCookies(cookies) {
|
|
7897
|
-
if (typeof cookies === "string") {
|
|
7898
|
-
const result = {};
|
|
7899
|
-
const pairs = cookies.split(";");
|
|
7900
|
-
for (const pair of pairs) {
|
|
7901
|
-
const trimmed = pair.trim();
|
|
7902
|
-
const eqIndex = trimmed.indexOf("=");
|
|
7903
|
-
if (eqIndex > 0) {
|
|
7904
|
-
const key = trimmed.substring(0, eqIndex).trim();
|
|
7905
|
-
result[key] = trimmed.substring(eqIndex + 1).trim();
|
|
7906
|
-
}
|
|
7907
|
-
}
|
|
7908
|
-
return result;
|
|
7909
|
-
}
|
|
7910
|
-
return cookies;
|
|
7911
|
-
}
|
|
7912
|
-
/**
|
|
7913
|
-
* 生成包含签名和追踪 ID 的完整请求头
|
|
7914
|
-
* @param method - HTTP 请求方法,'GET' 或 'POST'
|
|
7915
|
-
* @param uri - 请求 URI 路径
|
|
7916
|
-
* @param cookies - Cookie 字典对象或 Cookie 字符串(必须包含 a1)
|
|
7917
|
-
* @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
|
|
7918
|
-
* @param params - GET 请求的查询参数(POST 请求时不可用)
|
|
7919
|
-
* @param payload - POST 请求的请求体(GET 请求时不可用)
|
|
7920
|
-
* @param timestamp - 可选的时间戳(秒)
|
|
7921
|
-
* @param session - 可选的会话管理器
|
|
7922
|
-
* @returns 包含 x-s、x-s-common、x-t、x-b3-traceid、x-xray-traceid 的请求头对象
|
|
7923
|
-
* @throws 如果 GET 请求使用 payload 或 POST 请求使用 params 则抛出错误
|
|
7924
|
-
* @throws 如果 cookies 中缺少 a1 则抛出错误
|
|
7925
|
-
*/
|
|
7926
|
-
signHeaders(method, uri, cookies, xsecAppid = "xhs-pc-web", params, payload, timestamp, session, signFormat = "xys", userId, xRap = false) {
|
|
7927
|
-
if (timestamp === void 0) timestamp = Date.now() / 1e3;
|
|
7928
|
-
const methodUpper = method.toUpperCase();
|
|
7929
|
-
let requestData;
|
|
7930
|
-
if (methodUpper === "GET") {
|
|
7931
|
-
if (payload !== void 0 && payload !== null) throw new Error("GET requests must use 'params', not 'payload'");
|
|
7932
|
-
requestData = params ?? null;
|
|
7933
|
-
} else if (methodUpper === "POST") {
|
|
7934
|
-
if (params !== void 0 && params !== null) throw new Error("POST requests must use 'payload', not 'params'");
|
|
7935
|
-
requestData = payload ?? null;
|
|
7936
|
-
} else throw new Error(`Unsupported method: ${method}`);
|
|
7937
|
-
if (signFormat !== "xys" && signFormat !== "xyw") throw new Error(`Unsupported signFormat=${JSON.stringify(signFormat)}; expected 'xys' or 'xyw'`);
|
|
7938
|
-
const cookieDict = this.parseCookies(cookies);
|
|
7939
|
-
const a1Value = cookieDict.a1;
|
|
7940
|
-
if (!a1Value) throw new Error("Missing 'a1' in cookies");
|
|
7941
|
-
const xS = signFormat === "xyw" ? this.signXyw(methodUpper, uri, a1Value, xsecAppid, requestData, timestamp) : this.signXs(methodUpper, uri, a1Value, xsecAppid, requestData, timestamp, session);
|
|
7942
|
-
const xSCommon = this.signXsCommon(cookieDict);
|
|
7943
|
-
const xT = this.getXT(timestamp);
|
|
7944
|
-
const xB3Traceid = this.getB3TraceId();
|
|
7945
|
-
const xXrayTraceid = this.getXrayTraceId(Math.floor(timestamp * 1e3));
|
|
7946
|
-
const headers = {
|
|
7947
|
-
"x-s": xS,
|
|
7948
|
-
"x-s-common": xSCommon,
|
|
7949
|
-
"x-t": String(xT),
|
|
7950
|
-
"x-b3-traceid": xB3Traceid,
|
|
7951
|
-
"x-xray-traceid": xXrayTraceid,
|
|
7952
|
-
"x-mns": "unload",
|
|
7953
|
-
"xy-direction": String(getShardingKey(userId))
|
|
7954
|
-
};
|
|
7955
|
-
if (xRap) headers["x-rap-param"] = xRapParam("//edith.xiaohongshu.com" + extractUri(uri), requestData || {});
|
|
7956
|
-
return headers;
|
|
7957
|
-
}
|
|
7958
|
-
/**
|
|
7959
|
-
* 生成 GET 请求的完整请求头(便捷方法)
|
|
7960
|
-
* @param uri - 请求 URI 路径
|
|
7961
|
-
* @param cookies - Cookie 字典对象或 Cookie 字符串(必须包含 a1)
|
|
7962
|
-
* @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
|
|
7963
|
-
* @param params - 查询参数对象
|
|
7964
|
-
* @param timestamp - 可选的时间戳(秒)
|
|
7965
|
-
* @param session - 可选的会话管理器
|
|
7966
|
-
* @returns 包含签名和追踪 ID 的请求头对象
|
|
7967
|
-
*/
|
|
7968
|
-
signHeadersGet(uri, cookies, xsecAppid = "xhs-pc-web", params, timestamp, session, signFormat = "xys", userId, xRap = false) {
|
|
7969
|
-
return this.signHeaders("GET", uri, cookies, xsecAppid, params, void 0, timestamp, session, signFormat, userId, xRap);
|
|
7970
|
-
}
|
|
7971
|
-
/**
|
|
7972
|
-
* 生成 POST 请求的完整请求头(便捷方法)
|
|
7973
|
-
* @param uri - 请求 URI 路径
|
|
7974
|
-
* @param cookies - Cookie 字典对象或 Cookie 字符串(必须包含 a1)
|
|
7975
|
-
* @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
|
|
7976
|
-
* @param payload - 请求体对象
|
|
7977
|
-
* @param timestamp - 可选的时间戳(秒)
|
|
7978
|
-
* @param session - 可选的会话管理器
|
|
7979
|
-
* @returns 包含签名和追踪 ID 的请求头对象
|
|
7980
|
-
*/
|
|
7981
|
-
signHeadersPost(uri, cookies, xsecAppid = "xhs-pc-web", payload, timestamp, session, signFormat = "xys", userId, xRap = false) {
|
|
7982
|
-
return this.signHeaders("POST", uri, cookies, xsecAppid, void 0, payload, timestamp, session, signFormat, userId, xRap);
|
|
7983
|
-
}
|
|
7984
|
-
};
|
|
7985
|
-
//#endregion
|
|
7986
5834
|
//#region ../../node_modules/.pnpm/protobufjs@8.8.0/node_modules/protobufjs/src/util/aspromise.js
|
|
7987
5835
|
var require_aspromise = /* @__PURE__ */ __commonJSMin$1(((exports, module) => {
|
|
7988
5836
|
module.exports = asPromise;
|
|
@@ -56992,7 +54840,7 @@ function createLucideIcon(iconDataOrName, iconNode = [], aliases = []) {
|
|
|
56992
54840
|
* This source code is licensed under the ISC license.
|
|
56993
54841
|
* See the LICENSE file in the root directory of this source tree.
|
|
56994
54842
|
*/
|
|
56995
|
-
var __iconData$
|
|
54843
|
+
var __iconData$95 = {
|
|
56996
54844
|
name: "arrow-right",
|
|
56997
54845
|
size: 24,
|
|
56998
54846
|
node: [["path", {
|
|
@@ -57003,8 +54851,8 @@ var __iconData$93 = {
|
|
|
57003
54851
|
key: "xquz4c"
|
|
57004
54852
|
}]]
|
|
57005
54853
|
};
|
|
57006
|
-
__iconData$
|
|
57007
|
-
var ArrowRight = createLucideIcon(__iconData$
|
|
54854
|
+
__iconData$95.node;
|
|
54855
|
+
var ArrowRight = createLucideIcon(__iconData$95);
|
|
57008
54856
|
//#endregion
|
|
57009
54857
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/bell-ring.mjs
|
|
57010
54858
|
/**
|
|
@@ -57013,7 +54861,7 @@ var ArrowRight = createLucideIcon(__iconData$93);
|
|
|
57013
54861
|
* This source code is licensed under the ISC license.
|
|
57014
54862
|
* See the LICENSE file in the root directory of this source tree.
|
|
57015
54863
|
*/
|
|
57016
|
-
var __iconData$
|
|
54864
|
+
var __iconData$94 = {
|
|
57017
54865
|
name: "bell-ring",
|
|
57018
54866
|
size: 24,
|
|
57019
54867
|
node: [
|
|
@@ -57035,8 +54883,8 @@ var __iconData$92 = {
|
|
|
57035
54883
|
}]
|
|
57036
54884
|
]
|
|
57037
54885
|
};
|
|
57038
|
-
__iconData$
|
|
57039
|
-
var BellRing = createLucideIcon(__iconData$
|
|
54886
|
+
__iconData$94.node;
|
|
54887
|
+
var BellRing = createLucideIcon(__iconData$94);
|
|
57040
54888
|
//#endregion
|
|
57041
54889
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/book-open-text.mjs
|
|
57042
54890
|
/**
|
|
@@ -57045,7 +54893,7 @@ var BellRing = createLucideIcon(__iconData$92);
|
|
|
57045
54893
|
* This source code is licensed under the ISC license.
|
|
57046
54894
|
* See the LICENSE file in the root directory of this source tree.
|
|
57047
54895
|
*/
|
|
57048
|
-
var __iconData$
|
|
54896
|
+
var __iconData$93 = {
|
|
57049
54897
|
name: "book-open-text",
|
|
57050
54898
|
size: 24,
|
|
57051
54899
|
node: [
|
|
@@ -57075,8 +54923,8 @@ var __iconData$91 = {
|
|
|
57075
54923
|
}]
|
|
57076
54924
|
]
|
|
57077
54925
|
};
|
|
57078
|
-
__iconData$
|
|
57079
|
-
var BookOpenText = createLucideIcon(__iconData$
|
|
54926
|
+
__iconData$93.node;
|
|
54927
|
+
var BookOpenText = createLucideIcon(__iconData$93);
|
|
57080
54928
|
//#endregion
|
|
57081
54929
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/bookmark.mjs
|
|
57082
54930
|
/**
|
|
@@ -57085,7 +54933,7 @@ var BookOpenText = createLucideIcon(__iconData$91);
|
|
|
57085
54933
|
* This source code is licensed under the ISC license.
|
|
57086
54934
|
* See the LICENSE file in the root directory of this source tree.
|
|
57087
54935
|
*/
|
|
57088
|
-
var __iconData$
|
|
54936
|
+
var __iconData$92 = {
|
|
57089
54937
|
name: "bookmark",
|
|
57090
54938
|
size: 24,
|
|
57091
54939
|
node: [["path", {
|
|
@@ -57093,8 +54941,8 @@ var __iconData$90 = {
|
|
|
57093
54941
|
key: "oz39mx"
|
|
57094
54942
|
}]]
|
|
57095
54943
|
};
|
|
57096
|
-
__iconData$
|
|
57097
|
-
var Bookmark = createLucideIcon(__iconData$
|
|
54944
|
+
__iconData$92.node;
|
|
54945
|
+
var Bookmark = createLucideIcon(__iconData$92);
|
|
57098
54946
|
//#endregion
|
|
57099
54947
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/bot.mjs
|
|
57100
54948
|
/**
|
|
@@ -57103,7 +54951,7 @@ var Bookmark = createLucideIcon(__iconData$90);
|
|
|
57103
54951
|
* This source code is licensed under the ISC license.
|
|
57104
54952
|
* See the LICENSE file in the root directory of this source tree.
|
|
57105
54953
|
*/
|
|
57106
|
-
var __iconData$
|
|
54954
|
+
var __iconData$91 = {
|
|
57107
54955
|
name: "bot",
|
|
57108
54956
|
size: 24,
|
|
57109
54957
|
node: [
|
|
@@ -57137,8 +54985,8 @@ var __iconData$89 = {
|
|
|
57137
54985
|
}]
|
|
57138
54986
|
]
|
|
57139
54987
|
};
|
|
57140
|
-
__iconData$
|
|
57141
|
-
var Bot = createLucideIcon(__iconData$
|
|
54988
|
+
__iconData$91.node;
|
|
54989
|
+
var Bot = createLucideIcon(__iconData$91);
|
|
57142
54990
|
//#endregion
|
|
57143
54991
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/box.mjs
|
|
57144
54992
|
/**
|
|
@@ -57147,7 +54995,7 @@ var Bot = createLucideIcon(__iconData$89);
|
|
|
57147
54995
|
* This source code is licensed under the ISC license.
|
|
57148
54996
|
* See the LICENSE file in the root directory of this source tree.
|
|
57149
54997
|
*/
|
|
57150
|
-
var __iconData$
|
|
54998
|
+
var __iconData$90 = {
|
|
57151
54999
|
name: "box",
|
|
57152
55000
|
size: 24,
|
|
57153
55001
|
node: [
|
|
@@ -57165,8 +55013,8 @@ var __iconData$88 = {
|
|
|
57165
55013
|
}]
|
|
57166
55014
|
]
|
|
57167
55015
|
};
|
|
57168
|
-
__iconData$
|
|
57169
|
-
var Box = createLucideIcon(__iconData$
|
|
55016
|
+
__iconData$90.node;
|
|
55017
|
+
var Box = createLucideIcon(__iconData$90);
|
|
57170
55018
|
//#endregion
|
|
57171
55019
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/braces.mjs
|
|
57172
55020
|
/**
|
|
@@ -57175,7 +55023,7 @@ var Box = createLucideIcon(__iconData$88);
|
|
|
57175
55023
|
* This source code is licensed under the ISC license.
|
|
57176
55024
|
* See the LICENSE file in the root directory of this source tree.
|
|
57177
55025
|
*/
|
|
57178
|
-
var __iconData$
|
|
55026
|
+
var __iconData$89 = {
|
|
57179
55027
|
name: "braces",
|
|
57180
55028
|
size: 24,
|
|
57181
55029
|
node: [["path", {
|
|
@@ -57187,8 +55035,8 @@ var __iconData$87 = {
|
|
|
57187
55035
|
}]],
|
|
57188
55036
|
aliases: ["curly-braces"]
|
|
57189
55037
|
};
|
|
57190
|
-
__iconData$
|
|
57191
|
-
var Braces = createLucideIcon(__iconData$
|
|
55038
|
+
__iconData$89.node;
|
|
55039
|
+
var Braces = createLucideIcon(__iconData$89);
|
|
57192
55040
|
//#endregion
|
|
57193
55041
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/calendar.mjs
|
|
57194
55042
|
/**
|
|
@@ -57197,7 +55045,7 @@ var Braces = createLucideIcon(__iconData$87);
|
|
|
57197
55045
|
* This source code is licensed under the ISC license.
|
|
57198
55046
|
* See the LICENSE file in the root directory of this source tree.
|
|
57199
55047
|
*/
|
|
57200
|
-
var __iconData$
|
|
55048
|
+
var __iconData$88 = {
|
|
57201
55049
|
name: "calendar",
|
|
57202
55050
|
size: 24,
|
|
57203
55051
|
node: [
|
|
@@ -57223,8 +55071,8 @@ var __iconData$86 = {
|
|
|
57223
55071
|
}]
|
|
57224
55072
|
]
|
|
57225
55073
|
};
|
|
57226
|
-
__iconData$
|
|
57227
|
-
var Calendar = createLucideIcon(__iconData$
|
|
55074
|
+
__iconData$88.node;
|
|
55075
|
+
var Calendar = createLucideIcon(__iconData$88);
|
|
57228
55076
|
//#endregion
|
|
57229
55077
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/camera.mjs
|
|
57230
55078
|
/**
|
|
@@ -57233,7 +55081,7 @@ var Calendar = createLucideIcon(__iconData$86);
|
|
|
57233
55081
|
* This source code is licensed under the ISC license.
|
|
57234
55082
|
* See the LICENSE file in the root directory of this source tree.
|
|
57235
55083
|
*/
|
|
57236
|
-
var __iconData$
|
|
55084
|
+
var __iconData$87 = {
|
|
57237
55085
|
name: "camera",
|
|
57238
55086
|
size: 24,
|
|
57239
55087
|
node: [["path", {
|
|
@@ -57246,8 +55094,8 @@ var __iconData$85 = {
|
|
|
57246
55094
|
key: "1vg3eu"
|
|
57247
55095
|
}]]
|
|
57248
55096
|
};
|
|
57249
|
-
__iconData$
|
|
57250
|
-
var Camera = createLucideIcon(__iconData$
|
|
55097
|
+
__iconData$87.node;
|
|
55098
|
+
var Camera = createLucideIcon(__iconData$87);
|
|
57251
55099
|
//#endregion
|
|
57252
55100
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/chart-column.mjs
|
|
57253
55101
|
/**
|
|
@@ -57256,7 +55104,7 @@ var Camera = createLucideIcon(__iconData$85);
|
|
|
57256
55104
|
* This source code is licensed under the ISC license.
|
|
57257
55105
|
* See the LICENSE file in the root directory of this source tree.
|
|
57258
55106
|
*/
|
|
57259
|
-
var __iconData$
|
|
55107
|
+
var __iconData$86 = {
|
|
57260
55108
|
name: "chart-column",
|
|
57261
55109
|
size: 24,
|
|
57262
55110
|
node: [
|
|
@@ -57279,8 +55127,8 @@ var __iconData$84 = {
|
|
|
57279
55127
|
],
|
|
57280
55128
|
aliases: ["bar-chart-3"]
|
|
57281
55129
|
};
|
|
57282
|
-
__iconData$
|
|
57283
|
-
var ChartColumn = createLucideIcon(__iconData$
|
|
55130
|
+
__iconData$86.node;
|
|
55131
|
+
var ChartColumn = createLucideIcon(__iconData$86);
|
|
57284
55132
|
//#endregion
|
|
57285
55133
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/check.mjs
|
|
57286
55134
|
/**
|
|
@@ -57289,7 +55137,7 @@ var ChartColumn = createLucideIcon(__iconData$84);
|
|
|
57289
55137
|
* This source code is licensed under the ISC license.
|
|
57290
55138
|
* See the LICENSE file in the root directory of this source tree.
|
|
57291
55139
|
*/
|
|
57292
|
-
var __iconData$
|
|
55140
|
+
var __iconData$85 = {
|
|
57293
55141
|
name: "check",
|
|
57294
55142
|
size: 24,
|
|
57295
55143
|
node: [["path", {
|
|
@@ -57297,8 +55145,8 @@ var __iconData$83 = {
|
|
|
57297
55145
|
key: "1gmf2c"
|
|
57298
55146
|
}]]
|
|
57299
55147
|
};
|
|
57300
|
-
__iconData$
|
|
57301
|
-
var Check = createLucideIcon(__iconData$
|
|
55148
|
+
__iconData$85.node;
|
|
55149
|
+
var Check = createLucideIcon(__iconData$85);
|
|
57302
55150
|
//#endregion
|
|
57303
55151
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/circle-alert.mjs
|
|
57304
55152
|
/**
|
|
@@ -57307,7 +55155,7 @@ var Check = createLucideIcon(__iconData$83);
|
|
|
57307
55155
|
* This source code is licensed under the ISC license.
|
|
57308
55156
|
* See the LICENSE file in the root directory of this source tree.
|
|
57309
55157
|
*/
|
|
57310
|
-
var __iconData$
|
|
55158
|
+
var __iconData$84 = {
|
|
57311
55159
|
name: "circle-alert",
|
|
57312
55160
|
size: 24,
|
|
57313
55161
|
node: [
|
|
@@ -57334,8 +55182,8 @@ var __iconData$82 = {
|
|
|
57334
55182
|
],
|
|
57335
55183
|
aliases: ["alert-circle"]
|
|
57336
55184
|
};
|
|
57337
|
-
__iconData$
|
|
57338
|
-
var CircleAlert = createLucideIcon(__iconData$
|
|
55185
|
+
__iconData$84.node;
|
|
55186
|
+
var CircleAlert = createLucideIcon(__iconData$84);
|
|
57339
55187
|
//#endregion
|
|
57340
55188
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/circle-check-big.mjs
|
|
57341
55189
|
/**
|
|
@@ -57344,7 +55192,7 @@ var CircleAlert = createLucideIcon(__iconData$82);
|
|
|
57344
55192
|
* This source code is licensed under the ISC license.
|
|
57345
55193
|
* See the LICENSE file in the root directory of this source tree.
|
|
57346
55194
|
*/
|
|
57347
|
-
var __iconData$
|
|
55195
|
+
var __iconData$83 = {
|
|
57348
55196
|
name: "circle-check-big",
|
|
57349
55197
|
size: 24,
|
|
57350
55198
|
node: [["path", {
|
|
@@ -57356,8 +55204,8 @@ var __iconData$81 = {
|
|
|
57356
55204
|
}]],
|
|
57357
55205
|
aliases: ["check-circle"]
|
|
57358
55206
|
};
|
|
57359
|
-
__iconData$
|
|
57360
|
-
var CircleCheckBig = createLucideIcon(__iconData$
|
|
55207
|
+
__iconData$83.node;
|
|
55208
|
+
var CircleCheckBig = createLucideIcon(__iconData$83);
|
|
57361
55209
|
//#endregion
|
|
57362
55210
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/circle-check.mjs
|
|
57363
55211
|
/**
|
|
@@ -57366,7 +55214,7 @@ var CircleCheckBig = createLucideIcon(__iconData$81);
|
|
|
57366
55214
|
* This source code is licensed under the ISC license.
|
|
57367
55215
|
* See the LICENSE file in the root directory of this source tree.
|
|
57368
55216
|
*/
|
|
57369
|
-
var __iconData$
|
|
55217
|
+
var __iconData$82 = {
|
|
57370
55218
|
name: "circle-check",
|
|
57371
55219
|
size: 24,
|
|
57372
55220
|
node: [["circle", {
|
|
@@ -57380,8 +55228,8 @@ var __iconData$80 = {
|
|
|
57380
55228
|
}]],
|
|
57381
55229
|
aliases: ["check-circle-2"]
|
|
57382
55230
|
};
|
|
57383
|
-
__iconData$
|
|
57384
|
-
var CircleCheck = createLucideIcon(__iconData$
|
|
55231
|
+
__iconData$82.node;
|
|
55232
|
+
var CircleCheck = createLucideIcon(__iconData$82);
|
|
57385
55233
|
//#endregion
|
|
57386
55234
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/circle-dashed.mjs
|
|
57387
55235
|
/**
|
|
@@ -57390,7 +55238,7 @@ var CircleCheck = createLucideIcon(__iconData$80);
|
|
|
57390
55238
|
* This source code is licensed under the ISC license.
|
|
57391
55239
|
* See the LICENSE file in the root directory of this source tree.
|
|
57392
55240
|
*/
|
|
57393
|
-
var __iconData$
|
|
55241
|
+
var __iconData$81 = {
|
|
57394
55242
|
name: "circle-dashed",
|
|
57395
55243
|
size: 24,
|
|
57396
55244
|
node: [
|
|
@@ -57428,8 +55276,8 @@ var __iconData$79 = {
|
|
|
57428
55276
|
}]
|
|
57429
55277
|
]
|
|
57430
55278
|
};
|
|
57431
|
-
__iconData$
|
|
57432
|
-
var CircleDashed = createLucideIcon(__iconData$
|
|
55279
|
+
__iconData$81.node;
|
|
55280
|
+
var CircleDashed = createLucideIcon(__iconData$81);
|
|
57433
55281
|
//#endregion
|
|
57434
55282
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/circle-ellipsis.mjs
|
|
57435
55283
|
/**
|
|
@@ -57438,7 +55286,7 @@ var CircleDashed = createLucideIcon(__iconData$79);
|
|
|
57438
55286
|
* This source code is licensed under the ISC license.
|
|
57439
55287
|
* See the LICENSE file in the root directory of this source tree.
|
|
57440
55288
|
*/
|
|
57441
|
-
var __iconData$
|
|
55289
|
+
var __iconData$80 = {
|
|
57442
55290
|
name: "circle-ellipsis",
|
|
57443
55291
|
size: 24,
|
|
57444
55292
|
node: [
|
|
@@ -57462,8 +55310,8 @@ var __iconData$78 = {
|
|
|
57462
55310
|
}]
|
|
57463
55311
|
]
|
|
57464
55312
|
};
|
|
57465
|
-
__iconData$
|
|
57466
|
-
var CircleEllipsis = createLucideIcon(__iconData$
|
|
55313
|
+
__iconData$80.node;
|
|
55314
|
+
var CircleEllipsis = createLucideIcon(__iconData$80);
|
|
57467
55315
|
//#endregion
|
|
57468
55316
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/circle-fading-arrow-up.mjs
|
|
57469
55317
|
/**
|
|
@@ -57472,7 +55320,7 @@ var CircleEllipsis = createLucideIcon(__iconData$78);
|
|
|
57472
55320
|
* This source code is licensed under the ISC license.
|
|
57473
55321
|
* See the LICENSE file in the root directory of this source tree.
|
|
57474
55322
|
*/
|
|
57475
|
-
var __iconData$
|
|
55323
|
+
var __iconData$79 = {
|
|
57476
55324
|
name: "circle-fading-arrow-up",
|
|
57477
55325
|
size: 24,
|
|
57478
55326
|
node: [
|
|
@@ -57506,8 +55354,8 @@ var __iconData$77 = {
|
|
|
57506
55354
|
}]
|
|
57507
55355
|
]
|
|
57508
55356
|
};
|
|
57509
|
-
__iconData$
|
|
57510
|
-
var CircleFadingArrowUp = createLucideIcon(__iconData$
|
|
55357
|
+
__iconData$79.node;
|
|
55358
|
+
var CircleFadingArrowUp = createLucideIcon(__iconData$79);
|
|
57511
55359
|
//#endregion
|
|
57512
55360
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/circle-question-mark.mjs
|
|
57513
55361
|
/**
|
|
@@ -57516,7 +55364,7 @@ var CircleFadingArrowUp = createLucideIcon(__iconData$77);
|
|
|
57516
55364
|
* This source code is licensed under the ISC license.
|
|
57517
55365
|
* See the LICENSE file in the root directory of this source tree.
|
|
57518
55366
|
*/
|
|
57519
|
-
var __iconData$
|
|
55367
|
+
var __iconData$78 = {
|
|
57520
55368
|
name: "circle-question-mark",
|
|
57521
55369
|
size: 24,
|
|
57522
55370
|
node: [
|
|
@@ -57537,8 +55385,8 @@ var __iconData$76 = {
|
|
|
57537
55385
|
],
|
|
57538
55386
|
aliases: ["help-circle", "circle-help"]
|
|
57539
55387
|
};
|
|
57540
|
-
__iconData$
|
|
57541
|
-
var CircleQuestionMark = createLucideIcon(__iconData$
|
|
55388
|
+
__iconData$78.node;
|
|
55389
|
+
var CircleQuestionMark = createLucideIcon(__iconData$78);
|
|
57542
55390
|
//#endregion
|
|
57543
55391
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/clapperboard.mjs
|
|
57544
55392
|
/**
|
|
@@ -57547,7 +55395,7 @@ var CircleQuestionMark = createLucideIcon(__iconData$76);
|
|
|
57547
55395
|
* This source code is licensed under the ISC license.
|
|
57548
55396
|
* See the LICENSE file in the root directory of this source tree.
|
|
57549
55397
|
*/
|
|
57550
|
-
var __iconData$
|
|
55398
|
+
var __iconData$77 = {
|
|
57551
55399
|
name: "clapperboard",
|
|
57552
55400
|
size: 24,
|
|
57553
55401
|
node: [
|
|
@@ -57569,8 +55417,8 @@ var __iconData$75 = {
|
|
|
57569
55417
|
}]
|
|
57570
55418
|
]
|
|
57571
55419
|
};
|
|
57572
|
-
__iconData$
|
|
57573
|
-
var Clapperboard = createLucideIcon(__iconData$
|
|
55420
|
+
__iconData$77.node;
|
|
55421
|
+
var Clapperboard = createLucideIcon(__iconData$77);
|
|
57574
55422
|
//#endregion
|
|
57575
55423
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/clock-3.mjs
|
|
57576
55424
|
/**
|
|
@@ -57579,7 +55427,7 @@ var Clapperboard = createLucideIcon(__iconData$75);
|
|
|
57579
55427
|
* This source code is licensed under the ISC license.
|
|
57580
55428
|
* See the LICENSE file in the root directory of this source tree.
|
|
57581
55429
|
*/
|
|
57582
|
-
var __iconData$
|
|
55430
|
+
var __iconData$76 = {
|
|
57583
55431
|
name: "clock-3",
|
|
57584
55432
|
size: 24,
|
|
57585
55433
|
node: [["circle", {
|
|
@@ -57592,8 +55440,8 @@ var __iconData$74 = {
|
|
|
57592
55440
|
key: "135r8i"
|
|
57593
55441
|
}]]
|
|
57594
55442
|
};
|
|
57595
|
-
__iconData$
|
|
57596
|
-
var Clock3 = createLucideIcon(__iconData$
|
|
55443
|
+
__iconData$76.node;
|
|
55444
|
+
var Clock3 = createLucideIcon(__iconData$76);
|
|
57597
55445
|
//#endregion
|
|
57598
55446
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/clock.mjs
|
|
57599
55447
|
/**
|
|
@@ -57602,7 +55450,7 @@ var Clock3 = createLucideIcon(__iconData$74);
|
|
|
57602
55450
|
* This source code is licensed under the ISC license.
|
|
57603
55451
|
* See the LICENSE file in the root directory of this source tree.
|
|
57604
55452
|
*/
|
|
57605
|
-
var __iconData$
|
|
55453
|
+
var __iconData$75 = {
|
|
57606
55454
|
name: "clock",
|
|
57607
55455
|
size: 24,
|
|
57608
55456
|
node: [["circle", {
|
|
@@ -57615,8 +55463,8 @@ var __iconData$73 = {
|
|
|
57615
55463
|
key: "mmk7yg"
|
|
57616
55464
|
}]]
|
|
57617
55465
|
};
|
|
57618
|
-
__iconData$
|
|
57619
|
-
var Clock = createLucideIcon(__iconData$
|
|
55466
|
+
__iconData$75.node;
|
|
55467
|
+
var Clock = createLucideIcon(__iconData$75);
|
|
57620
55468
|
//#endregion
|
|
57621
55469
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/code.mjs
|
|
57622
55470
|
/**
|
|
@@ -57625,7 +55473,7 @@ var Clock = createLucideIcon(__iconData$73);
|
|
|
57625
55473
|
* This source code is licensed under the ISC license.
|
|
57626
55474
|
* See the LICENSE file in the root directory of this source tree.
|
|
57627
55475
|
*/
|
|
57628
|
-
var __iconData$
|
|
55476
|
+
var __iconData$74 = {
|
|
57629
55477
|
name: "code",
|
|
57630
55478
|
size: 24,
|
|
57631
55479
|
node: [["path", {
|
|
@@ -57636,8 +55484,8 @@ var __iconData$72 = {
|
|
|
57636
55484
|
key: "ppft3o"
|
|
57637
55485
|
}]]
|
|
57638
55486
|
};
|
|
57639
|
-
__iconData$
|
|
57640
|
-
var Code = createLucideIcon(__iconData$
|
|
55487
|
+
__iconData$74.node;
|
|
55488
|
+
var Code = createLucideIcon(__iconData$74);
|
|
57641
55489
|
//#endregion
|
|
57642
55490
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/copy.mjs
|
|
57643
55491
|
/**
|
|
@@ -57646,7 +55494,7 @@ var Code = createLucideIcon(__iconData$72);
|
|
|
57646
55494
|
* This source code is licensed under the ISC license.
|
|
57647
55495
|
* See the LICENSE file in the root directory of this source tree.
|
|
57648
55496
|
*/
|
|
57649
|
-
var __iconData$
|
|
55497
|
+
var __iconData$73 = {
|
|
57650
55498
|
name: "copy",
|
|
57651
55499
|
size: 24,
|
|
57652
55500
|
node: [["rect", {
|
|
@@ -57662,8 +55510,8 @@ var __iconData$71 = {
|
|
|
57662
55510
|
key: "zix9uf"
|
|
57663
55511
|
}]]
|
|
57664
55512
|
};
|
|
57665
|
-
__iconData$
|
|
57666
|
-
var Copy = createLucideIcon(__iconData$
|
|
55513
|
+
__iconData$73.node;
|
|
55514
|
+
var Copy = createLucideIcon(__iconData$73);
|
|
57667
55515
|
//#endregion
|
|
57668
55516
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/corner-down-left.mjs
|
|
57669
55517
|
/**
|
|
@@ -57672,7 +55520,7 @@ var Copy = createLucideIcon(__iconData$71);
|
|
|
57672
55520
|
* This source code is licensed under the ISC license.
|
|
57673
55521
|
* See the LICENSE file in the root directory of this source tree.
|
|
57674
55522
|
*/
|
|
57675
|
-
var __iconData$
|
|
55523
|
+
var __iconData$72 = {
|
|
57676
55524
|
name: "corner-down-left",
|
|
57677
55525
|
size: 24,
|
|
57678
55526
|
node: [["path", {
|
|
@@ -57683,8 +55531,8 @@ var __iconData$70 = {
|
|
|
57683
55531
|
key: "1kshq7"
|
|
57684
55532
|
}]]
|
|
57685
55533
|
};
|
|
57686
|
-
__iconData$
|
|
57687
|
-
var CornerDownLeft = createLucideIcon(__iconData$
|
|
55534
|
+
__iconData$72.node;
|
|
55535
|
+
var CornerDownLeft = createLucideIcon(__iconData$72);
|
|
57688
55536
|
//#endregion
|
|
57689
55537
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/cpu.mjs
|
|
57690
55538
|
/**
|
|
@@ -57693,7 +55541,7 @@ var CornerDownLeft = createLucideIcon(__iconData$70);
|
|
|
57693
55541
|
* This source code is licensed under the ISC license.
|
|
57694
55542
|
* See the LICENSE file in the root directory of this source tree.
|
|
57695
55543
|
*/
|
|
57696
|
-
var __iconData$
|
|
55544
|
+
var __iconData$71 = {
|
|
57697
55545
|
name: "cpu",
|
|
57698
55546
|
size: 24,
|
|
57699
55547
|
node: [
|
|
@@ -57763,8 +55611,8 @@ var __iconData$69 = {
|
|
|
57763
55611
|
}]
|
|
57764
55612
|
]
|
|
57765
55613
|
};
|
|
57766
|
-
__iconData$
|
|
57767
|
-
var Cpu = createLucideIcon(__iconData$
|
|
55614
|
+
__iconData$71.node;
|
|
55615
|
+
var Cpu = createLucideIcon(__iconData$71);
|
|
57768
55616
|
//#endregion
|
|
57769
55617
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/crown.mjs
|
|
57770
55618
|
/**
|
|
@@ -57773,7 +55621,7 @@ var Cpu = createLucideIcon(__iconData$69);
|
|
|
57773
55621
|
* This source code is licensed under the ISC license.
|
|
57774
55622
|
* See the LICENSE file in the root directory of this source tree.
|
|
57775
55623
|
*/
|
|
57776
|
-
var __iconData$
|
|
55624
|
+
var __iconData$70 = {
|
|
57777
55625
|
name: "crown",
|
|
57778
55626
|
size: 24,
|
|
57779
55627
|
node: [["path", {
|
|
@@ -57784,8 +55632,8 @@ var __iconData$68 = {
|
|
|
57784
55632
|
key: "11awu3"
|
|
57785
55633
|
}]]
|
|
57786
55634
|
};
|
|
57787
|
-
__iconData$
|
|
57788
|
-
var Crown = createLucideIcon(__iconData$
|
|
55635
|
+
__iconData$70.node;
|
|
55636
|
+
var Crown = createLucideIcon(__iconData$70);
|
|
57789
55637
|
//#endregion
|
|
57790
55638
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/download.mjs
|
|
57791
55639
|
/**
|
|
@@ -57794,7 +55642,7 @@ var Crown = createLucideIcon(__iconData$68);
|
|
|
57794
55642
|
* This source code is licensed under the ISC license.
|
|
57795
55643
|
* See the LICENSE file in the root directory of this source tree.
|
|
57796
55644
|
*/
|
|
57797
|
-
var __iconData$
|
|
55645
|
+
var __iconData$69 = {
|
|
57798
55646
|
name: "download",
|
|
57799
55647
|
size: 24,
|
|
57800
55648
|
node: [
|
|
@@ -57812,8 +55660,8 @@ var __iconData$67 = {
|
|
|
57812
55660
|
}]
|
|
57813
55661
|
]
|
|
57814
55662
|
};
|
|
57815
|
-
__iconData$
|
|
57816
|
-
var Download = createLucideIcon(__iconData$
|
|
55663
|
+
__iconData$69.node;
|
|
55664
|
+
var Download = createLucideIcon(__iconData$69);
|
|
57817
55665
|
//#endregion
|
|
57818
55666
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/external-link.mjs
|
|
57819
55667
|
/**
|
|
@@ -57822,7 +55670,7 @@ var Download = createLucideIcon(__iconData$67);
|
|
|
57822
55670
|
* This source code is licensed under the ISC license.
|
|
57823
55671
|
* See the LICENSE file in the root directory of this source tree.
|
|
57824
55672
|
*/
|
|
57825
|
-
var __iconData$
|
|
55673
|
+
var __iconData$68 = {
|
|
57826
55674
|
name: "external-link",
|
|
57827
55675
|
size: 24,
|
|
57828
55676
|
node: [
|
|
@@ -57840,8 +55688,8 @@ var __iconData$66 = {
|
|
|
57840
55688
|
}]
|
|
57841
55689
|
]
|
|
57842
55690
|
};
|
|
57843
|
-
__iconData$
|
|
57844
|
-
var ExternalLink = createLucideIcon(__iconData$
|
|
55691
|
+
__iconData$68.node;
|
|
55692
|
+
var ExternalLink = createLucideIcon(__iconData$68);
|
|
57845
55693
|
//#endregion
|
|
57846
55694
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/eye-off.mjs
|
|
57847
55695
|
/**
|
|
@@ -57850,7 +55698,7 @@ var ExternalLink = createLucideIcon(__iconData$66);
|
|
|
57850
55698
|
* This source code is licensed under the ISC license.
|
|
57851
55699
|
* See the LICENSE file in the root directory of this source tree.
|
|
57852
55700
|
*/
|
|
57853
|
-
var __iconData$
|
|
55701
|
+
var __iconData$67 = {
|
|
57854
55702
|
name: "eye-off",
|
|
57855
55703
|
size: 24,
|
|
57856
55704
|
node: [
|
|
@@ -57872,8 +55720,8 @@ var __iconData$65 = {
|
|
|
57872
55720
|
}]
|
|
57873
55721
|
]
|
|
57874
55722
|
};
|
|
57875
|
-
__iconData$
|
|
57876
|
-
var EyeOff = createLucideIcon(__iconData$
|
|
55723
|
+
__iconData$67.node;
|
|
55724
|
+
var EyeOff = createLucideIcon(__iconData$67);
|
|
57877
55725
|
//#endregion
|
|
57878
55726
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/eye.mjs
|
|
57879
55727
|
/**
|
|
@@ -57882,7 +55730,7 @@ var EyeOff = createLucideIcon(__iconData$65);
|
|
|
57882
55730
|
* This source code is licensed under the ISC license.
|
|
57883
55731
|
* See the LICENSE file in the root directory of this source tree.
|
|
57884
55732
|
*/
|
|
57885
|
-
var __iconData$
|
|
55733
|
+
var __iconData$66 = {
|
|
57886
55734
|
name: "eye",
|
|
57887
55735
|
size: 24,
|
|
57888
55736
|
node: [["path", {
|
|
@@ -57895,8 +55743,8 @@ var __iconData$64 = {
|
|
|
57895
55743
|
key: "1v7zrd"
|
|
57896
55744
|
}]]
|
|
57897
55745
|
};
|
|
57898
|
-
__iconData$
|
|
57899
|
-
var Eye = createLucideIcon(__iconData$
|
|
55746
|
+
__iconData$66.node;
|
|
55747
|
+
var Eye = createLucideIcon(__iconData$66);
|
|
57900
55748
|
//#endregion
|
|
57901
55749
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-exclamation-point.mjs
|
|
57902
55750
|
/**
|
|
@@ -57905,7 +55753,7 @@ var Eye = createLucideIcon(__iconData$64);
|
|
|
57905
55753
|
* This source code is licensed under the ISC license.
|
|
57906
55754
|
* See the LICENSE file in the root directory of this source tree.
|
|
57907
55755
|
*/
|
|
57908
|
-
var __iconData$
|
|
55756
|
+
var __iconData$65 = {
|
|
57909
55757
|
name: "file-exclamation-point",
|
|
57910
55758
|
size: 24,
|
|
57911
55759
|
node: [
|
|
@@ -57924,8 +55772,8 @@ var __iconData$63 = {
|
|
|
57924
55772
|
],
|
|
57925
55773
|
aliases: ["file-warning"]
|
|
57926
55774
|
};
|
|
57927
|
-
__iconData$
|
|
57928
|
-
var FileExclamationPoint = createLucideIcon(__iconData$
|
|
55775
|
+
__iconData$65.node;
|
|
55776
|
+
var FileExclamationPoint = createLucideIcon(__iconData$65);
|
|
57929
55777
|
//#endregion
|
|
57930
55778
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-play.mjs
|
|
57931
55779
|
/**
|
|
@@ -57934,7 +55782,7 @@ var FileExclamationPoint = createLucideIcon(__iconData$63);
|
|
|
57934
55782
|
* This source code is licensed under the ISC license.
|
|
57935
55783
|
* See the LICENSE file in the root directory of this source tree.
|
|
57936
55784
|
*/
|
|
57937
|
-
var __iconData$
|
|
55785
|
+
var __iconData$64 = {
|
|
57938
55786
|
name: "file-play",
|
|
57939
55787
|
size: 24,
|
|
57940
55788
|
node: [
|
|
@@ -57953,8 +55801,8 @@ var __iconData$62 = {
|
|
|
57953
55801
|
],
|
|
57954
55802
|
aliases: ["file-video"]
|
|
57955
55803
|
};
|
|
57956
|
-
__iconData$
|
|
57957
|
-
var FilePlay = createLucideIcon(__iconData$
|
|
55804
|
+
__iconData$64.node;
|
|
55805
|
+
var FilePlay = createLucideIcon(__iconData$64);
|
|
57958
55806
|
//#endregion
|
|
57959
55807
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-text.mjs
|
|
57960
55808
|
/**
|
|
@@ -57963,7 +55811,7 @@ var FilePlay = createLucideIcon(__iconData$62);
|
|
|
57963
55811
|
* This source code is licensed under the ISC license.
|
|
57964
55812
|
* See the LICENSE file in the root directory of this source tree.
|
|
57965
55813
|
*/
|
|
57966
|
-
var __iconData$
|
|
55814
|
+
var __iconData$63 = {
|
|
57967
55815
|
name: "file-text",
|
|
57968
55816
|
size: 24,
|
|
57969
55817
|
node: [
|
|
@@ -57989,8 +55837,8 @@ var __iconData$61 = {
|
|
|
57989
55837
|
}]
|
|
57990
55838
|
]
|
|
57991
55839
|
};
|
|
57992
|
-
__iconData$
|
|
57993
|
-
var FileText = createLucideIcon(__iconData$
|
|
55840
|
+
__iconData$63.node;
|
|
55841
|
+
var FileText = createLucideIcon(__iconData$63);
|
|
57994
55842
|
//#endregion
|
|
57995
55843
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/fingerprint-pattern.mjs
|
|
57996
55844
|
/**
|
|
@@ -57999,7 +55847,7 @@ var FileText = createLucideIcon(__iconData$61);
|
|
|
57999
55847
|
* This source code is licensed under the ISC license.
|
|
58000
55848
|
* See the LICENSE file in the root directory of this source tree.
|
|
58001
55849
|
*/
|
|
58002
|
-
var __iconData$
|
|
55850
|
+
var __iconData$62 = {
|
|
58003
55851
|
name: "fingerprint-pattern",
|
|
58004
55852
|
size: 24,
|
|
58005
55853
|
node: [
|
|
@@ -58042,8 +55890,8 @@ var __iconData$60 = {
|
|
|
58042
55890
|
],
|
|
58043
55891
|
aliases: ["fingerprint"]
|
|
58044
55892
|
};
|
|
58045
|
-
__iconData$
|
|
58046
|
-
var FingerprintPattern = createLucideIcon(__iconData$
|
|
55893
|
+
__iconData$62.node;
|
|
55894
|
+
var FingerprintPattern = createLucideIcon(__iconData$62);
|
|
58047
55895
|
//#endregion
|
|
58048
55896
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/gamepad-2.mjs
|
|
58049
55897
|
/**
|
|
@@ -58052,7 +55900,7 @@ var FingerprintPattern = createLucideIcon(__iconData$60);
|
|
|
58052
55900
|
* This source code is licensed under the ISC license.
|
|
58053
55901
|
* See the LICENSE file in the root directory of this source tree.
|
|
58054
55902
|
*/
|
|
58055
|
-
var __iconData$
|
|
55903
|
+
var __iconData$61 = {
|
|
58056
55904
|
name: "gamepad-2",
|
|
58057
55905
|
size: 24,
|
|
58058
55906
|
node: [
|
|
@@ -58090,8 +55938,8 @@ var __iconData$59 = {
|
|
|
58090
55938
|
}]
|
|
58091
55939
|
]
|
|
58092
55940
|
};
|
|
58093
|
-
__iconData$
|
|
58094
|
-
var Gamepad2 = createLucideIcon(__iconData$
|
|
55941
|
+
__iconData$61.node;
|
|
55942
|
+
var Gamepad2 = createLucideIcon(__iconData$61);
|
|
58095
55943
|
//#endregion
|
|
58096
55944
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/gauge.mjs
|
|
58097
55945
|
/**
|
|
@@ -58100,7 +55948,7 @@ var Gamepad2 = createLucideIcon(__iconData$59);
|
|
|
58100
55948
|
* This source code is licensed under the ISC license.
|
|
58101
55949
|
* See the LICENSE file in the root directory of this source tree.
|
|
58102
55950
|
*/
|
|
58103
|
-
var __iconData$
|
|
55951
|
+
var __iconData$60 = {
|
|
58104
55952
|
name: "gauge",
|
|
58105
55953
|
size: 24,
|
|
58106
55954
|
node: [["path", {
|
|
@@ -58111,8 +55959,8 @@ var __iconData$58 = {
|
|
|
58111
55959
|
key: "19p75a"
|
|
58112
55960
|
}]]
|
|
58113
55961
|
};
|
|
58114
|
-
__iconData$
|
|
58115
|
-
var Gauge = createLucideIcon(__iconData$
|
|
55962
|
+
__iconData$60.node;
|
|
55963
|
+
var Gauge = createLucideIcon(__iconData$60);
|
|
58116
55964
|
//#endregion
|
|
58117
55965
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/gift.mjs
|
|
58118
55966
|
/**
|
|
@@ -58121,7 +55969,7 @@ var Gauge = createLucideIcon(__iconData$58);
|
|
|
58121
55969
|
* This source code is licensed under the ISC license.
|
|
58122
55970
|
* See the LICENSE file in the root directory of this source tree.
|
|
58123
55971
|
*/
|
|
58124
|
-
var __iconData$
|
|
55972
|
+
var __iconData$59 = {
|
|
58125
55973
|
name: "gift",
|
|
58126
55974
|
size: 24,
|
|
58127
55975
|
node: [
|
|
@@ -58147,8 +55995,8 @@ var __iconData$57 = {
|
|
|
58147
55995
|
}]
|
|
58148
55996
|
]
|
|
58149
55997
|
};
|
|
58150
|
-
__iconData$
|
|
58151
|
-
var Gift = createLucideIcon(__iconData$
|
|
55998
|
+
__iconData$59.node;
|
|
55999
|
+
var Gift = createLucideIcon(__iconData$59);
|
|
58152
56000
|
//#endregion
|
|
58153
56001
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/git-branch.mjs
|
|
58154
56002
|
/**
|
|
@@ -58157,7 +56005,7 @@ var Gift = createLucideIcon(__iconData$57);
|
|
|
58157
56005
|
* This source code is licensed under the ISC license.
|
|
58158
56006
|
* See the LICENSE file in the root directory of this source tree.
|
|
58159
56007
|
*/
|
|
58160
|
-
var __iconData$
|
|
56008
|
+
var __iconData$58 = {
|
|
58161
56009
|
name: "git-branch",
|
|
58162
56010
|
size: 24,
|
|
58163
56011
|
node: [
|
|
@@ -58179,8 +56027,38 @@ var __iconData$56 = {
|
|
|
58179
56027
|
}]
|
|
58180
56028
|
]
|
|
58181
56029
|
};
|
|
58182
|
-
__iconData$
|
|
58183
|
-
var GitBranch = createLucideIcon(__iconData$
|
|
56030
|
+
__iconData$58.node;
|
|
56031
|
+
var GitBranch = createLucideIcon(__iconData$58);
|
|
56032
|
+
//#endregion
|
|
56033
|
+
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/globe.mjs
|
|
56034
|
+
/**
|
|
56035
|
+
* @license lucide-react v1.52.0 - ISC
|
|
56036
|
+
*
|
|
56037
|
+
* This source code is licensed under the ISC license.
|
|
56038
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
56039
|
+
*/
|
|
56040
|
+
var __iconData$57 = {
|
|
56041
|
+
name: "globe",
|
|
56042
|
+
size: 24,
|
|
56043
|
+
node: [
|
|
56044
|
+
["circle", {
|
|
56045
|
+
cx: "12",
|
|
56046
|
+
cy: "12",
|
|
56047
|
+
r: "10",
|
|
56048
|
+
key: "1mglay"
|
|
56049
|
+
}],
|
|
56050
|
+
["path", {
|
|
56051
|
+
d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",
|
|
56052
|
+
key: "13o1zl"
|
|
56053
|
+
}],
|
|
56054
|
+
["path", {
|
|
56055
|
+
d: "M2 12h20",
|
|
56056
|
+
key: "9i4pu4"
|
|
56057
|
+
}]
|
|
56058
|
+
]
|
|
56059
|
+
};
|
|
56060
|
+
__iconData$57.node;
|
|
56061
|
+
var Globe = createLucideIcon(__iconData$57);
|
|
58184
56062
|
//#endregion
|
|
58185
56063
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/hash.mjs
|
|
58186
56064
|
/**
|
|
@@ -58189,7 +56067,7 @@ var GitBranch = createLucideIcon(__iconData$56);
|
|
|
58189
56067
|
* This source code is licensed under the ISC license.
|
|
58190
56068
|
* See the LICENSE file in the root directory of this source tree.
|
|
58191
56069
|
*/
|
|
58192
|
-
var __iconData$
|
|
56070
|
+
var __iconData$56 = {
|
|
58193
56071
|
name: "hash",
|
|
58194
56072
|
size: 24,
|
|
58195
56073
|
node: [
|
|
@@ -58223,8 +56101,8 @@ var __iconData$55 = {
|
|
|
58223
56101
|
}]
|
|
58224
56102
|
]
|
|
58225
56103
|
};
|
|
58226
|
-
__iconData$
|
|
58227
|
-
var Hash = createLucideIcon(__iconData$
|
|
56104
|
+
__iconData$56.node;
|
|
56105
|
+
var Hash = createLucideIcon(__iconData$56);
|
|
58228
56106
|
//#endregion
|
|
58229
56107
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/heart.mjs
|
|
58230
56108
|
/**
|
|
@@ -58233,7 +56111,7 @@ var Hash = createLucideIcon(__iconData$55);
|
|
|
58233
56111
|
* This source code is licensed under the ISC license.
|
|
58234
56112
|
* See the LICENSE file in the root directory of this source tree.
|
|
58235
56113
|
*/
|
|
58236
|
-
var __iconData$
|
|
56114
|
+
var __iconData$55 = {
|
|
58237
56115
|
name: "heart",
|
|
58238
56116
|
size: 24,
|
|
58239
56117
|
node: [["path", {
|
|
@@ -58241,8 +56119,8 @@ var __iconData$54 = {
|
|
|
58241
56119
|
key: "mvr1a0"
|
|
58242
56120
|
}]]
|
|
58243
56121
|
};
|
|
58244
|
-
__iconData$
|
|
58245
|
-
var Heart = createLucideIcon(__iconData$
|
|
56122
|
+
__iconData$55.node;
|
|
56123
|
+
var Heart = createLucideIcon(__iconData$55);
|
|
58246
56124
|
//#endregion
|
|
58247
56125
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/image.mjs
|
|
58248
56126
|
/**
|
|
@@ -58251,7 +56129,7 @@ var Heart = createLucideIcon(__iconData$54);
|
|
|
58251
56129
|
* This source code is licensed under the ISC license.
|
|
58252
56130
|
* See the LICENSE file in the root directory of this source tree.
|
|
58253
56131
|
*/
|
|
58254
|
-
var __iconData$
|
|
56132
|
+
var __iconData$54 = {
|
|
58255
56133
|
name: "image",
|
|
58256
56134
|
size: 24,
|
|
58257
56135
|
node: [
|
|
@@ -58276,8 +56154,8 @@ var __iconData$53 = {
|
|
|
58276
56154
|
}]
|
|
58277
56155
|
]
|
|
58278
56156
|
};
|
|
58279
|
-
__iconData$
|
|
58280
|
-
var Image$1 = createLucideIcon(__iconData$
|
|
56157
|
+
__iconData$54.node;
|
|
56158
|
+
var Image$1 = createLucideIcon(__iconData$54);
|
|
58281
56159
|
//#endregion
|
|
58282
56160
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/info.mjs
|
|
58283
56161
|
/**
|
|
@@ -58286,7 +56164,7 @@ var Image$1 = createLucideIcon(__iconData$53);
|
|
|
58286
56164
|
* This source code is licensed under the ISC license.
|
|
58287
56165
|
* See the LICENSE file in the root directory of this source tree.
|
|
58288
56166
|
*/
|
|
58289
|
-
var __iconData$
|
|
56167
|
+
var __iconData$53 = {
|
|
58290
56168
|
name: "info",
|
|
58291
56169
|
size: 24,
|
|
58292
56170
|
node: [
|
|
@@ -58306,8 +56184,8 @@ var __iconData$52 = {
|
|
|
58306
56184
|
}]
|
|
58307
56185
|
]
|
|
58308
56186
|
};
|
|
58309
|
-
__iconData$
|
|
58310
|
-
var Info$1 = createLucideIcon(__iconData$
|
|
56187
|
+
__iconData$53.node;
|
|
56188
|
+
var Info$1 = createLucideIcon(__iconData$53);
|
|
58311
56189
|
//#endregion
|
|
58312
56190
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/layout-template.mjs
|
|
58313
56191
|
/**
|
|
@@ -58316,7 +56194,7 @@ var Info$1 = createLucideIcon(__iconData$52);
|
|
|
58316
56194
|
* This source code is licensed under the ISC license.
|
|
58317
56195
|
* See the LICENSE file in the root directory of this source tree.
|
|
58318
56196
|
*/
|
|
58319
|
-
var __iconData$
|
|
56197
|
+
var __iconData$52 = {
|
|
58320
56198
|
name: "layout-template",
|
|
58321
56199
|
size: 24,
|
|
58322
56200
|
node: [
|
|
@@ -58346,8 +56224,8 @@ var __iconData$51 = {
|
|
|
58346
56224
|
}]
|
|
58347
56225
|
]
|
|
58348
56226
|
};
|
|
58349
|
-
__iconData$
|
|
58350
|
-
var LayoutTemplate = createLucideIcon(__iconData$
|
|
56227
|
+
__iconData$52.node;
|
|
56228
|
+
var LayoutTemplate = createLucideIcon(__iconData$52);
|
|
58351
56229
|
//#endregion
|
|
58352
56230
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/link.mjs
|
|
58353
56231
|
/**
|
|
@@ -58356,7 +56234,7 @@ var LayoutTemplate = createLucideIcon(__iconData$51);
|
|
|
58356
56234
|
* This source code is licensed under the ISC license.
|
|
58357
56235
|
* See the LICENSE file in the root directory of this source tree.
|
|
58358
56236
|
*/
|
|
58359
|
-
var __iconData$
|
|
56237
|
+
var __iconData$51 = {
|
|
58360
56238
|
name: "link",
|
|
58361
56239
|
size: 24,
|
|
58362
56240
|
node: [["path", {
|
|
@@ -58367,8 +56245,8 @@ var __iconData$50 = {
|
|
|
58367
56245
|
key: "19qd67"
|
|
58368
56246
|
}]]
|
|
58369
56247
|
};
|
|
58370
|
-
__iconData$
|
|
58371
|
-
var Link = createLucideIcon(__iconData$
|
|
56248
|
+
__iconData$51.node;
|
|
56249
|
+
var Link = createLucideIcon(__iconData$51);
|
|
58372
56250
|
//#endregion
|
|
58373
56251
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/list-checks.mjs
|
|
58374
56252
|
/**
|
|
@@ -58377,7 +56255,7 @@ var Link = createLucideIcon(__iconData$50);
|
|
|
58377
56255
|
* This source code is licensed under the ISC license.
|
|
58378
56256
|
* See the LICENSE file in the root directory of this source tree.
|
|
58379
56257
|
*/
|
|
58380
|
-
var __iconData$
|
|
56258
|
+
var __iconData$50 = {
|
|
58381
56259
|
name: "list-checks",
|
|
58382
56260
|
size: 24,
|
|
58383
56261
|
node: [
|
|
@@ -58403,8 +56281,8 @@ var __iconData$49 = {
|
|
|
58403
56281
|
}]
|
|
58404
56282
|
]
|
|
58405
56283
|
};
|
|
58406
|
-
__iconData$
|
|
58407
|
-
var ListChecks = createLucideIcon(__iconData$
|
|
56284
|
+
__iconData$50.node;
|
|
56285
|
+
var ListChecks = createLucideIcon(__iconData$50);
|
|
58408
56286
|
//#endregion
|
|
58409
56287
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/loader-circle.mjs
|
|
58410
56288
|
/**
|
|
@@ -58413,7 +56291,7 @@ var ListChecks = createLucideIcon(__iconData$49);
|
|
|
58413
56291
|
* This source code is licensed under the ISC license.
|
|
58414
56292
|
* See the LICENSE file in the root directory of this source tree.
|
|
58415
56293
|
*/
|
|
58416
|
-
var __iconData$
|
|
56294
|
+
var __iconData$49 = {
|
|
58417
56295
|
name: "loader-circle",
|
|
58418
56296
|
size: 24,
|
|
58419
56297
|
node: [["path", {
|
|
@@ -58422,8 +56300,8 @@ var __iconData$48 = {
|
|
|
58422
56300
|
}]],
|
|
58423
56301
|
aliases: ["loader-2"]
|
|
58424
56302
|
};
|
|
58425
|
-
__iconData$
|
|
58426
|
-
var LoaderCircle = createLucideIcon(__iconData$
|
|
56303
|
+
__iconData$49.node;
|
|
56304
|
+
var LoaderCircle = createLucideIcon(__iconData$49);
|
|
58427
56305
|
//#endregion
|
|
58428
56306
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/map-pin.mjs
|
|
58429
56307
|
/**
|
|
@@ -58432,7 +56310,7 @@ var LoaderCircle = createLucideIcon(__iconData$48);
|
|
|
58432
56310
|
* This source code is licensed under the ISC license.
|
|
58433
56311
|
* See the LICENSE file in the root directory of this source tree.
|
|
58434
56312
|
*/
|
|
58435
|
-
var __iconData$
|
|
56313
|
+
var __iconData$48 = {
|
|
58436
56314
|
name: "map-pin",
|
|
58437
56315
|
size: 24,
|
|
58438
56316
|
node: [["path", {
|
|
@@ -58445,8 +56323,8 @@ var __iconData$47 = {
|
|
|
58445
56323
|
key: "ilqhr7"
|
|
58446
56324
|
}]]
|
|
58447
56325
|
};
|
|
58448
|
-
__iconData$
|
|
58449
|
-
var MapPin = createLucideIcon(__iconData$
|
|
56326
|
+
__iconData$48.node;
|
|
56327
|
+
var MapPin = createLucideIcon(__iconData$48);
|
|
58450
56328
|
//#endregion
|
|
58451
56329
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/maximize.mjs
|
|
58452
56330
|
/**
|
|
@@ -58455,7 +56333,7 @@ var MapPin = createLucideIcon(__iconData$47);
|
|
|
58455
56333
|
* This source code is licensed under the ISC license.
|
|
58456
56334
|
* See the LICENSE file in the root directory of this source tree.
|
|
58457
56335
|
*/
|
|
58458
|
-
var __iconData$
|
|
56336
|
+
var __iconData$47 = {
|
|
58459
56337
|
name: "maximize",
|
|
58460
56338
|
size: 24,
|
|
58461
56339
|
node: [
|
|
@@ -58477,8 +56355,8 @@ var __iconData$46 = {
|
|
|
58477
56355
|
}]
|
|
58478
56356
|
]
|
|
58479
56357
|
};
|
|
58480
|
-
__iconData$
|
|
58481
|
-
var Maximize = createLucideIcon(__iconData$
|
|
56358
|
+
__iconData$47.node;
|
|
56359
|
+
var Maximize = createLucideIcon(__iconData$47);
|
|
58482
56360
|
//#endregion
|
|
58483
56361
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/menu.mjs
|
|
58484
56362
|
/**
|
|
@@ -58487,7 +56365,7 @@ var Maximize = createLucideIcon(__iconData$46);
|
|
|
58487
56365
|
* This source code is licensed under the ISC license.
|
|
58488
56366
|
* See the LICENSE file in the root directory of this source tree.
|
|
58489
56367
|
*/
|
|
58490
|
-
var __iconData$
|
|
56368
|
+
var __iconData$46 = {
|
|
58491
56369
|
name: "menu",
|
|
58492
56370
|
size: 24,
|
|
58493
56371
|
node: [
|
|
@@ -58505,8 +56383,8 @@ var __iconData$45 = {
|
|
|
58505
56383
|
}]
|
|
58506
56384
|
]
|
|
58507
56385
|
};
|
|
58508
|
-
__iconData$
|
|
58509
|
-
var Menu = createLucideIcon(__iconData$
|
|
56386
|
+
__iconData$46.node;
|
|
56387
|
+
var Menu = createLucideIcon(__iconData$46);
|
|
58510
56388
|
//#endregion
|
|
58511
56389
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/message-circle.mjs
|
|
58512
56390
|
/**
|
|
@@ -58515,7 +56393,7 @@ var Menu = createLucideIcon(__iconData$45);
|
|
|
58515
56393
|
* This source code is licensed under the ISC license.
|
|
58516
56394
|
* See the LICENSE file in the root directory of this source tree.
|
|
58517
56395
|
*/
|
|
58518
|
-
var __iconData$
|
|
56396
|
+
var __iconData$45 = {
|
|
58519
56397
|
name: "message-circle",
|
|
58520
56398
|
size: 24,
|
|
58521
56399
|
node: [["path", {
|
|
@@ -58523,8 +56401,8 @@ var __iconData$44 = {
|
|
|
58523
56401
|
key: "1sd12s"
|
|
58524
56402
|
}]]
|
|
58525
56403
|
};
|
|
58526
|
-
__iconData$
|
|
58527
|
-
var MessageCircle = createLucideIcon(__iconData$
|
|
56404
|
+
__iconData$45.node;
|
|
56405
|
+
var MessageCircle = createLucideIcon(__iconData$45);
|
|
58528
56406
|
//#endregion
|
|
58529
56407
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/monitor.mjs
|
|
58530
56408
|
/**
|
|
@@ -58533,7 +56411,7 @@ var MessageCircle = createLucideIcon(__iconData$44);
|
|
|
58533
56411
|
* This source code is licensed under the ISC license.
|
|
58534
56412
|
* See the LICENSE file in the root directory of this source tree.
|
|
58535
56413
|
*/
|
|
58536
|
-
var __iconData$
|
|
56414
|
+
var __iconData$44 = {
|
|
58537
56415
|
name: "monitor",
|
|
58538
56416
|
size: 24,
|
|
58539
56417
|
node: [
|
|
@@ -58561,8 +56439,8 @@ var __iconData$43 = {
|
|
|
58561
56439
|
}]
|
|
58562
56440
|
]
|
|
58563
56441
|
};
|
|
58564
|
-
__iconData$
|
|
58565
|
-
var Monitor = createLucideIcon(__iconData$
|
|
56442
|
+
__iconData$44.node;
|
|
56443
|
+
var Monitor = createLucideIcon(__iconData$44);
|
|
58566
56444
|
//#endregion
|
|
58567
56445
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/moon.mjs
|
|
58568
56446
|
/**
|
|
@@ -58571,7 +56449,7 @@ var Monitor = createLucideIcon(__iconData$43);
|
|
|
58571
56449
|
* This source code is licensed under the ISC license.
|
|
58572
56450
|
* See the LICENSE file in the root directory of this source tree.
|
|
58573
56451
|
*/
|
|
58574
|
-
var __iconData$
|
|
56452
|
+
var __iconData$43 = {
|
|
58575
56453
|
name: "moon",
|
|
58576
56454
|
size: 24,
|
|
58577
56455
|
node: [["path", {
|
|
@@ -58579,8 +56457,8 @@ var __iconData$42 = {
|
|
|
58579
56457
|
key: "kfwtm"
|
|
58580
56458
|
}]]
|
|
58581
56459
|
};
|
|
58582
|
-
__iconData$
|
|
58583
|
-
var Moon = createLucideIcon(__iconData$
|
|
56460
|
+
__iconData$43.node;
|
|
56461
|
+
var Moon = createLucideIcon(__iconData$43);
|
|
58584
56462
|
//#endregion
|
|
58585
56463
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/music.mjs
|
|
58586
56464
|
/**
|
|
@@ -58589,7 +56467,7 @@ var Moon = createLucideIcon(__iconData$42);
|
|
|
58589
56467
|
* This source code is licensed under the ISC license.
|
|
58590
56468
|
* See the LICENSE file in the root directory of this source tree.
|
|
58591
56469
|
*/
|
|
58592
|
-
var __iconData$
|
|
56470
|
+
var __iconData$42 = {
|
|
58593
56471
|
name: "music",
|
|
58594
56472
|
size: 24,
|
|
58595
56473
|
node: [
|
|
@@ -58611,8 +56489,8 @@ var __iconData$41 = {
|
|
|
58611
56489
|
}]
|
|
58612
56490
|
]
|
|
58613
56491
|
};
|
|
58614
|
-
__iconData$
|
|
58615
|
-
var Music = createLucideIcon(__iconData$
|
|
56492
|
+
__iconData$42.node;
|
|
56493
|
+
var Music = createLucideIcon(__iconData$42);
|
|
58616
56494
|
//#endregion
|
|
58617
56495
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/network.mjs
|
|
58618
56496
|
/**
|
|
@@ -58621,7 +56499,7 @@ var Music = createLucideIcon(__iconData$41);
|
|
|
58621
56499
|
* This source code is licensed under the ISC license.
|
|
58622
56500
|
* See the LICENSE file in the root directory of this source tree.
|
|
58623
56501
|
*/
|
|
58624
|
-
var __iconData$
|
|
56502
|
+
var __iconData$41 = {
|
|
58625
56503
|
name: "network",
|
|
58626
56504
|
size: 24,
|
|
58627
56505
|
node: [
|
|
@@ -58659,8 +56537,8 @@ var __iconData$40 = {
|
|
|
58659
56537
|
}]
|
|
58660
56538
|
]
|
|
58661
56539
|
};
|
|
58662
|
-
__iconData$
|
|
58663
|
-
var Network = createLucideIcon(__iconData$
|
|
56540
|
+
__iconData$41.node;
|
|
56541
|
+
var Network = createLucideIcon(__iconData$41);
|
|
58664
56542
|
//#endregion
|
|
58665
56543
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/palette.mjs
|
|
58666
56544
|
/**
|
|
@@ -58669,7 +56547,7 @@ var Network = createLucideIcon(__iconData$40);
|
|
|
58669
56547
|
* This source code is licensed under the ISC license.
|
|
58670
56548
|
* See the LICENSE file in the root directory of this source tree.
|
|
58671
56549
|
*/
|
|
58672
|
-
var __iconData$
|
|
56550
|
+
var __iconData$40 = {
|
|
58673
56551
|
name: "palette",
|
|
58674
56552
|
size: 24,
|
|
58675
56553
|
node: [
|
|
@@ -58707,8 +56585,8 @@ var __iconData$39 = {
|
|
|
58707
56585
|
}]
|
|
58708
56586
|
]
|
|
58709
56587
|
};
|
|
58710
|
-
__iconData$
|
|
58711
|
-
var Palette = createLucideIcon(__iconData$
|
|
56588
|
+
__iconData$40.node;
|
|
56589
|
+
var Palette = createLucideIcon(__iconData$40);
|
|
58712
56590
|
//#endregion
|
|
58713
56591
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/pencil.mjs
|
|
58714
56592
|
/**
|
|
@@ -58717,7 +56595,7 @@ var Palette = createLucideIcon(__iconData$39);
|
|
|
58717
56595
|
* This source code is licensed under the ISC license.
|
|
58718
56596
|
* See the LICENSE file in the root directory of this source tree.
|
|
58719
56597
|
*/
|
|
58720
|
-
var __iconData$
|
|
56598
|
+
var __iconData$39 = {
|
|
58721
56599
|
name: "pencil",
|
|
58722
56600
|
size: 24,
|
|
58723
56601
|
node: [["path", {
|
|
@@ -58728,8 +56606,8 @@ var __iconData$38 = {
|
|
|
58728
56606
|
key: "1mk7zo"
|
|
58729
56607
|
}]]
|
|
58730
56608
|
};
|
|
58731
|
-
__iconData$
|
|
58732
|
-
var Pencil = createLucideIcon(__iconData$
|
|
56609
|
+
__iconData$39.node;
|
|
56610
|
+
var Pencil = createLucideIcon(__iconData$39);
|
|
58733
56611
|
//#endregion
|
|
58734
56612
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/play.mjs
|
|
58735
56613
|
/**
|
|
@@ -58738,7 +56616,7 @@ var Pencil = createLucideIcon(__iconData$38);
|
|
|
58738
56616
|
* This source code is licensed under the ISC license.
|
|
58739
56617
|
* See the LICENSE file in the root directory of this source tree.
|
|
58740
56618
|
*/
|
|
58741
|
-
var __iconData$
|
|
56619
|
+
var __iconData$38 = {
|
|
58742
56620
|
name: "play",
|
|
58743
56621
|
size: 24,
|
|
58744
56622
|
node: [["path", {
|
|
@@ -58746,8 +56624,8 @@ var __iconData$37 = {
|
|
|
58746
56624
|
key: "10ikf1"
|
|
58747
56625
|
}]]
|
|
58748
56626
|
};
|
|
58749
|
-
__iconData$
|
|
58750
|
-
var Play = createLucideIcon(__iconData$
|
|
56627
|
+
__iconData$38.node;
|
|
56628
|
+
var Play = createLucideIcon(__iconData$38);
|
|
58751
56629
|
//#endregion
|
|
58752
56630
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/plus.mjs
|
|
58753
56631
|
/**
|
|
@@ -58756,7 +56634,7 @@ var Play = createLucideIcon(__iconData$37);
|
|
|
58756
56634
|
* This source code is licensed under the ISC license.
|
|
58757
56635
|
* See the LICENSE file in the root directory of this source tree.
|
|
58758
56636
|
*/
|
|
58759
|
-
var __iconData$
|
|
56637
|
+
var __iconData$37 = {
|
|
58760
56638
|
name: "plus",
|
|
58761
56639
|
size: 24,
|
|
58762
56640
|
node: [["path", {
|
|
@@ -58767,8 +56645,8 @@ var __iconData$36 = {
|
|
|
58767
56645
|
key: "s699le"
|
|
58768
56646
|
}]]
|
|
58769
56647
|
};
|
|
58770
|
-
__iconData$
|
|
58771
|
-
var Plus = createLucideIcon(__iconData$
|
|
56648
|
+
__iconData$37.node;
|
|
56649
|
+
var Plus = createLucideIcon(__iconData$37);
|
|
58772
56650
|
//#endregion
|
|
58773
56651
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/puzzle.mjs
|
|
58774
56652
|
/**
|
|
@@ -58777,7 +56655,7 @@ var Plus = createLucideIcon(__iconData$36);
|
|
|
58777
56655
|
* This source code is licensed under the ISC license.
|
|
58778
56656
|
* See the LICENSE file in the root directory of this source tree.
|
|
58779
56657
|
*/
|
|
58780
|
-
var __iconData$
|
|
56658
|
+
var __iconData$36 = {
|
|
58781
56659
|
name: "puzzle",
|
|
58782
56660
|
size: 24,
|
|
58783
56661
|
node: [["path", {
|
|
@@ -58785,8 +56663,8 @@ var __iconData$35 = {
|
|
|
58785
56663
|
key: "w46dr5"
|
|
58786
56664
|
}]]
|
|
58787
56665
|
};
|
|
58788
|
-
__iconData$
|
|
58789
|
-
var Puzzle = createLucideIcon(__iconData$
|
|
56666
|
+
__iconData$36.node;
|
|
56667
|
+
var Puzzle = createLucideIcon(__iconData$36);
|
|
58790
56668
|
//#endregion
|
|
58791
56669
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/qr-code.mjs
|
|
58792
56670
|
/**
|
|
@@ -58795,7 +56673,7 @@ var Puzzle = createLucideIcon(__iconData$35);
|
|
|
58795
56673
|
* This source code is licensed under the ISC license.
|
|
58796
56674
|
* See the LICENSE file in the root directory of this source tree.
|
|
58797
56675
|
*/
|
|
58798
|
-
var __iconData$
|
|
56676
|
+
var __iconData$35 = {
|
|
58799
56677
|
name: "qr-code",
|
|
58800
56678
|
size: 24,
|
|
58801
56679
|
node: [
|
|
@@ -58861,8 +56739,8 @@ var __iconData$34 = {
|
|
|
58861
56739
|
}]
|
|
58862
56740
|
]
|
|
58863
56741
|
};
|
|
58864
|
-
__iconData$
|
|
58865
|
-
var QrCode = createLucideIcon(__iconData$
|
|
56742
|
+
__iconData$35.node;
|
|
56743
|
+
var QrCode = createLucideIcon(__iconData$35);
|
|
58866
56744
|
//#endregion
|
|
58867
56745
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/quote.mjs
|
|
58868
56746
|
/**
|
|
@@ -58871,7 +56749,7 @@ var QrCode = createLucideIcon(__iconData$34);
|
|
|
58871
56749
|
* This source code is licensed under the ISC license.
|
|
58872
56750
|
* See the LICENSE file in the root directory of this source tree.
|
|
58873
56751
|
*/
|
|
58874
|
-
var __iconData$
|
|
56752
|
+
var __iconData$34 = {
|
|
58875
56753
|
name: "quote",
|
|
58876
56754
|
size: 24,
|
|
58877
56755
|
node: [["path", {
|
|
@@ -58882,8 +56760,8 @@ var __iconData$33 = {
|
|
|
58882
56760
|
key: "1ymkrd"
|
|
58883
56761
|
}]]
|
|
58884
56762
|
};
|
|
58885
|
-
__iconData$
|
|
58886
|
-
var Quote = createLucideIcon(__iconData$
|
|
56763
|
+
__iconData$34.node;
|
|
56764
|
+
var Quote = createLucideIcon(__iconData$34);
|
|
58887
56765
|
//#endregion
|
|
58888
56766
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/radio.mjs
|
|
58889
56767
|
/**
|
|
@@ -58892,7 +56770,7 @@ var Quote = createLucideIcon(__iconData$33);
|
|
|
58892
56770
|
* This source code is licensed under the ISC license.
|
|
58893
56771
|
* See the LICENSE file in the root directory of this source tree.
|
|
58894
56772
|
*/
|
|
58895
|
-
var __iconData$
|
|
56773
|
+
var __iconData$33 = {
|
|
58896
56774
|
name: "radio",
|
|
58897
56775
|
size: 24,
|
|
58898
56776
|
node: [
|
|
@@ -58920,8 +56798,8 @@ var __iconData$32 = {
|
|
|
58920
56798
|
}]
|
|
58921
56799
|
]
|
|
58922
56800
|
};
|
|
58923
|
-
__iconData$
|
|
58924
|
-
var Radio = createLucideIcon(__iconData$
|
|
56801
|
+
__iconData$33.node;
|
|
56802
|
+
var Radio = createLucideIcon(__iconData$33);
|
|
58925
56803
|
//#endregion
|
|
58926
56804
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/refresh-cw.mjs
|
|
58927
56805
|
/**
|
|
@@ -58930,7 +56808,7 @@ var Radio = createLucideIcon(__iconData$32);
|
|
|
58930
56808
|
* This source code is licensed under the ISC license.
|
|
58931
56809
|
* See the LICENSE file in the root directory of this source tree.
|
|
58932
56810
|
*/
|
|
58933
|
-
var __iconData$
|
|
56811
|
+
var __iconData$32 = {
|
|
58934
56812
|
name: "refresh-cw",
|
|
58935
56813
|
size: 24,
|
|
58936
56814
|
node: [
|
|
@@ -58952,8 +56830,8 @@ var __iconData$31 = {
|
|
|
58952
56830
|
}]
|
|
58953
56831
|
]
|
|
58954
56832
|
};
|
|
58955
|
-
__iconData$
|
|
58956
|
-
var RefreshCw = createLucideIcon(__iconData$
|
|
56833
|
+
__iconData$32.node;
|
|
56834
|
+
var RefreshCw = createLucideIcon(__iconData$32);
|
|
58957
56835
|
//#endregion
|
|
58958
56836
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/repeat.mjs
|
|
58959
56837
|
/**
|
|
@@ -58962,7 +56840,7 @@ var RefreshCw = createLucideIcon(__iconData$31);
|
|
|
58962
56840
|
* This source code is licensed under the ISC license.
|
|
58963
56841
|
* See the LICENSE file in the root directory of this source tree.
|
|
58964
56842
|
*/
|
|
58965
|
-
var __iconData$
|
|
56843
|
+
var __iconData$31 = {
|
|
58966
56844
|
name: "repeat",
|
|
58967
56845
|
size: 24,
|
|
58968
56846
|
node: [
|
|
@@ -58984,8 +56862,8 @@ var __iconData$30 = {
|
|
|
58984
56862
|
}]
|
|
58985
56863
|
]
|
|
58986
56864
|
};
|
|
58987
|
-
__iconData$
|
|
58988
|
-
var Repeat = createLucideIcon(__iconData$
|
|
56865
|
+
__iconData$31.node;
|
|
56866
|
+
var Repeat = createLucideIcon(__iconData$31);
|
|
58989
56867
|
//#endregion
|
|
58990
56868
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/rotate-ccw.mjs
|
|
58991
56869
|
/**
|
|
@@ -58994,7 +56872,7 @@ var Repeat = createLucideIcon(__iconData$30);
|
|
|
58994
56872
|
* This source code is licensed under the ISC license.
|
|
58995
56873
|
* See the LICENSE file in the root directory of this source tree.
|
|
58996
56874
|
*/
|
|
58997
|
-
var __iconData$
|
|
56875
|
+
var __iconData$30 = {
|
|
58998
56876
|
name: "rotate-ccw",
|
|
58999
56877
|
size: 24,
|
|
59000
56878
|
node: [["path", {
|
|
@@ -59005,8 +56883,8 @@ var __iconData$29 = {
|
|
|
59005
56883
|
key: "1xhq8a"
|
|
59006
56884
|
}]]
|
|
59007
56885
|
};
|
|
59008
|
-
__iconData$
|
|
59009
|
-
var RotateCcw = createLucideIcon(__iconData$
|
|
56886
|
+
__iconData$30.node;
|
|
56887
|
+
var RotateCcw = createLucideIcon(__iconData$30);
|
|
59010
56888
|
//#endregion
|
|
59011
56889
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/route.mjs
|
|
59012
56890
|
/**
|
|
@@ -59015,7 +56893,7 @@ var RotateCcw = createLucideIcon(__iconData$29);
|
|
|
59015
56893
|
* This source code is licensed under the ISC license.
|
|
59016
56894
|
* See the LICENSE file in the root directory of this source tree.
|
|
59017
56895
|
*/
|
|
59018
|
-
var __iconData$
|
|
56896
|
+
var __iconData$29 = {
|
|
59019
56897
|
name: "route",
|
|
59020
56898
|
size: 24,
|
|
59021
56899
|
node: [
|
|
@@ -59037,8 +56915,8 @@ var __iconData$28 = {
|
|
|
59037
56915
|
}]
|
|
59038
56916
|
]
|
|
59039
56917
|
};
|
|
59040
|
-
__iconData$
|
|
59041
|
-
var Route = createLucideIcon(__iconData$
|
|
56918
|
+
__iconData$29.node;
|
|
56919
|
+
var Route = createLucideIcon(__iconData$29);
|
|
59042
56920
|
//#endregion
|
|
59043
56921
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/save.mjs
|
|
59044
56922
|
/**
|
|
@@ -59047,7 +56925,7 @@ var Route = createLucideIcon(__iconData$28);
|
|
|
59047
56925
|
* This source code is licensed under the ISC license.
|
|
59048
56926
|
* See the LICENSE file in the root directory of this source tree.
|
|
59049
56927
|
*/
|
|
59050
|
-
var __iconData$
|
|
56928
|
+
var __iconData$28 = {
|
|
59051
56929
|
name: "save",
|
|
59052
56930
|
size: 24,
|
|
59053
56931
|
node: [
|
|
@@ -59065,8 +56943,8 @@ var __iconData$27 = {
|
|
|
59065
56943
|
}]
|
|
59066
56944
|
]
|
|
59067
56945
|
};
|
|
59068
|
-
__iconData$
|
|
59069
|
-
var Save = createLucideIcon(__iconData$
|
|
56946
|
+
__iconData$28.node;
|
|
56947
|
+
var Save = createLucideIcon(__iconData$28);
|
|
59070
56948
|
//#endregion
|
|
59071
56949
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/scan-line.mjs
|
|
59072
56950
|
/**
|
|
@@ -59075,7 +56953,7 @@ var Save = createLucideIcon(__iconData$27);
|
|
|
59075
56953
|
* This source code is licensed under the ISC license.
|
|
59076
56954
|
* See the LICENSE file in the root directory of this source tree.
|
|
59077
56955
|
*/
|
|
59078
|
-
var __iconData$
|
|
56956
|
+
var __iconData$27 = {
|
|
59079
56957
|
name: "scan-line",
|
|
59080
56958
|
size: 24,
|
|
59081
56959
|
node: [
|
|
@@ -59101,8 +56979,8 @@ var __iconData$26 = {
|
|
|
59101
56979
|
}]
|
|
59102
56980
|
]
|
|
59103
56981
|
};
|
|
59104
|
-
__iconData$
|
|
59105
|
-
var ScanLine = createLucideIcon(__iconData$
|
|
56982
|
+
__iconData$27.node;
|
|
56983
|
+
var ScanLine = createLucideIcon(__iconData$27);
|
|
59106
56984
|
//#endregion
|
|
59107
56985
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/search.mjs
|
|
59108
56986
|
/**
|
|
@@ -59111,7 +56989,7 @@ var ScanLine = createLucideIcon(__iconData$26);
|
|
|
59111
56989
|
* This source code is licensed under the ISC license.
|
|
59112
56990
|
* See the LICENSE file in the root directory of this source tree.
|
|
59113
56991
|
*/
|
|
59114
|
-
var __iconData$
|
|
56992
|
+
var __iconData$26 = {
|
|
59115
56993
|
name: "search",
|
|
59116
56994
|
size: 24,
|
|
59117
56995
|
node: [["path", {
|
|
@@ -59124,8 +57002,8 @@ var __iconData$25 = {
|
|
|
59124
57002
|
key: "4ej97u"
|
|
59125
57003
|
}]]
|
|
59126
57004
|
};
|
|
59127
|
-
__iconData$
|
|
59128
|
-
var Search = createLucideIcon(__iconData$
|
|
57005
|
+
__iconData$26.node;
|
|
57006
|
+
var Search = createLucideIcon(__iconData$26);
|
|
59129
57007
|
//#endregion
|
|
59130
57008
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/settings-2.mjs
|
|
59131
57009
|
/**
|
|
@@ -59134,7 +57012,7 @@ var Search = createLucideIcon(__iconData$25);
|
|
|
59134
57012
|
* This source code is licensed under the ISC license.
|
|
59135
57013
|
* See the LICENSE file in the root directory of this source tree.
|
|
59136
57014
|
*/
|
|
59137
|
-
var __iconData$
|
|
57015
|
+
var __iconData$25 = {
|
|
59138
57016
|
name: "settings-2",
|
|
59139
57017
|
size: 24,
|
|
59140
57018
|
node: [
|
|
@@ -59160,8 +57038,8 @@ var __iconData$24 = {
|
|
|
59160
57038
|
}]
|
|
59161
57039
|
]
|
|
59162
57040
|
};
|
|
59163
|
-
__iconData$
|
|
59164
|
-
var Settings2 = createLucideIcon(__iconData$
|
|
57041
|
+
__iconData$25.node;
|
|
57042
|
+
var Settings2 = createLucideIcon(__iconData$25);
|
|
59165
57043
|
//#endregion
|
|
59166
57044
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/share-2.mjs
|
|
59167
57045
|
/**
|
|
@@ -59170,7 +57048,7 @@ var Settings2 = createLucideIcon(__iconData$24);
|
|
|
59170
57048
|
* This source code is licensed under the ISC license.
|
|
59171
57049
|
* See the LICENSE file in the root directory of this source tree.
|
|
59172
57050
|
*/
|
|
59173
|
-
var __iconData$
|
|
57051
|
+
var __iconData$24 = {
|
|
59174
57052
|
name: "share-2",
|
|
59175
57053
|
size: 24,
|
|
59176
57054
|
node: [
|
|
@@ -59208,8 +57086,8 @@ var __iconData$23 = {
|
|
|
59208
57086
|
}]
|
|
59209
57087
|
]
|
|
59210
57088
|
};
|
|
59211
|
-
__iconData$
|
|
59212
|
-
var Share2 = createLucideIcon(__iconData$
|
|
57089
|
+
__iconData$24.node;
|
|
57090
|
+
var Share2 = createLucideIcon(__iconData$24);
|
|
59213
57091
|
//#endregion
|
|
59214
57092
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/shield-alert.mjs
|
|
59215
57093
|
/**
|
|
@@ -59218,7 +57096,7 @@ var Share2 = createLucideIcon(__iconData$23);
|
|
|
59218
57096
|
* This source code is licensed under the ISC license.
|
|
59219
57097
|
* See the LICENSE file in the root directory of this source tree.
|
|
59220
57098
|
*/
|
|
59221
|
-
var __iconData$
|
|
57099
|
+
var __iconData$23 = {
|
|
59222
57100
|
name: "shield-alert",
|
|
59223
57101
|
size: 24,
|
|
59224
57102
|
node: [
|
|
@@ -59236,8 +57114,8 @@ var __iconData$22 = {
|
|
|
59236
57114
|
}]
|
|
59237
57115
|
]
|
|
59238
57116
|
};
|
|
59239
|
-
__iconData$
|
|
59240
|
-
var ShieldAlert = createLucideIcon(__iconData$
|
|
57117
|
+
__iconData$23.node;
|
|
57118
|
+
var ShieldAlert = createLucideIcon(__iconData$23);
|
|
59241
57119
|
//#endregion
|
|
59242
57120
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/shield-check.mjs
|
|
59243
57121
|
/**
|
|
@@ -59246,7 +57124,7 @@ var ShieldAlert = createLucideIcon(__iconData$22);
|
|
|
59246
57124
|
* This source code is licensed under the ISC license.
|
|
59247
57125
|
* See the LICENSE file in the root directory of this source tree.
|
|
59248
57126
|
*/
|
|
59249
|
-
var __iconData$
|
|
57127
|
+
var __iconData$22 = {
|
|
59250
57128
|
name: "shield-check",
|
|
59251
57129
|
size: 24,
|
|
59252
57130
|
node: [["path", {
|
|
@@ -59257,8 +57135,8 @@ var __iconData$21 = {
|
|
|
59257
57135
|
key: "dzmm74"
|
|
59258
57136
|
}]]
|
|
59259
57137
|
};
|
|
59260
|
-
__iconData$
|
|
59261
|
-
var ShieldCheck = createLucideIcon(__iconData$
|
|
57138
|
+
__iconData$22.node;
|
|
57139
|
+
var ShieldCheck = createLucideIcon(__iconData$22);
|
|
59262
57140
|
//#endregion
|
|
59263
57141
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/shield.mjs
|
|
59264
57142
|
/**
|
|
@@ -59267,7 +57145,7 @@ var ShieldCheck = createLucideIcon(__iconData$21);
|
|
|
59267
57145
|
* This source code is licensed under the ISC license.
|
|
59268
57146
|
* See the LICENSE file in the root directory of this source tree.
|
|
59269
57147
|
*/
|
|
59270
|
-
var __iconData$
|
|
57148
|
+
var __iconData$21 = {
|
|
59271
57149
|
name: "shield",
|
|
59272
57150
|
size: 24,
|
|
59273
57151
|
node: [["path", {
|
|
@@ -59275,8 +57153,8 @@ var __iconData$20 = {
|
|
|
59275
57153
|
key: "oel41y"
|
|
59276
57154
|
}]]
|
|
59277
57155
|
};
|
|
59278
|
-
__iconData$
|
|
59279
|
-
var Shield = createLucideIcon(__iconData$
|
|
57156
|
+
__iconData$21.node;
|
|
57157
|
+
var Shield = createLucideIcon(__iconData$21);
|
|
59280
57158
|
//#endregion
|
|
59281
57159
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/shopping-bag.mjs
|
|
59282
57160
|
/**
|
|
@@ -59285,7 +57163,7 @@ var Shield = createLucideIcon(__iconData$20);
|
|
|
59285
57163
|
* This source code is licensed under the ISC license.
|
|
59286
57164
|
* See the LICENSE file in the root directory of this source tree.
|
|
59287
57165
|
*/
|
|
59288
|
-
var __iconData$
|
|
57166
|
+
var __iconData$20 = {
|
|
59289
57167
|
name: "shopping-bag",
|
|
59290
57168
|
size: 24,
|
|
59291
57169
|
node: [
|
|
@@ -59303,8 +57181,8 @@ var __iconData$19 = {
|
|
|
59303
57181
|
}]
|
|
59304
57182
|
]
|
|
59305
57183
|
};
|
|
59306
|
-
__iconData$
|
|
59307
|
-
var ShoppingBag = createLucideIcon(__iconData$
|
|
57184
|
+
__iconData$20.node;
|
|
57185
|
+
var ShoppingBag = createLucideIcon(__iconData$20);
|
|
59308
57186
|
//#endregion
|
|
59309
57187
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/smartphone.mjs
|
|
59310
57188
|
/**
|
|
@@ -59313,7 +57191,7 @@ var ShoppingBag = createLucideIcon(__iconData$19);
|
|
|
59313
57191
|
* This source code is licensed under the ISC license.
|
|
59314
57192
|
* See the LICENSE file in the root directory of this source tree.
|
|
59315
57193
|
*/
|
|
59316
|
-
var __iconData$
|
|
57194
|
+
var __iconData$19 = {
|
|
59317
57195
|
name: "smartphone",
|
|
59318
57196
|
size: 24,
|
|
59319
57197
|
node: [["rect", {
|
|
@@ -59329,8 +57207,8 @@ var __iconData$18 = {
|
|
|
59329
57207
|
key: "mhygvu"
|
|
59330
57208
|
}]]
|
|
59331
57209
|
};
|
|
59332
|
-
__iconData$
|
|
59333
|
-
var Smartphone = createLucideIcon(__iconData$
|
|
57210
|
+
__iconData$19.node;
|
|
57211
|
+
var Smartphone = createLucideIcon(__iconData$19);
|
|
59334
57212
|
//#endregion
|
|
59335
57213
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/sparkles.mjs
|
|
59336
57214
|
/**
|
|
@@ -59339,7 +57217,7 @@ var Smartphone = createLucideIcon(__iconData$18);
|
|
|
59339
57217
|
* This source code is licensed under the ISC license.
|
|
59340
57218
|
* See the LICENSE file in the root directory of this source tree.
|
|
59341
57219
|
*/
|
|
59342
|
-
var __iconData$
|
|
57220
|
+
var __iconData$18 = {
|
|
59343
57221
|
name: "sparkles",
|
|
59344
57222
|
size: 24,
|
|
59345
57223
|
node: [
|
|
@@ -59364,8 +57242,8 @@ var __iconData$17 = {
|
|
|
59364
57242
|
],
|
|
59365
57243
|
aliases: ["stars"]
|
|
59366
57244
|
};
|
|
59367
|
-
__iconData$
|
|
59368
|
-
var Sparkles = createLucideIcon(__iconData$
|
|
57245
|
+
__iconData$18.node;
|
|
57246
|
+
var Sparkles = createLucideIcon(__iconData$18);
|
|
59369
57247
|
//#endregion
|
|
59370
57248
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/square-pen.mjs
|
|
59371
57249
|
/**
|
|
@@ -59374,7 +57252,7 @@ var Sparkles = createLucideIcon(__iconData$17);
|
|
|
59374
57252
|
* This source code is licensed under the ISC license.
|
|
59375
57253
|
* See the LICENSE file in the root directory of this source tree.
|
|
59376
57254
|
*/
|
|
59377
|
-
var __iconData$
|
|
57255
|
+
var __iconData$17 = {
|
|
59378
57256
|
name: "square-pen",
|
|
59379
57257
|
size: 24,
|
|
59380
57258
|
node: [["path", {
|
|
@@ -59390,8 +57268,8 @@ var __iconData$16 = {
|
|
|
59390
57268
|
"pen-square"
|
|
59391
57269
|
]
|
|
59392
57270
|
};
|
|
59393
|
-
__iconData$
|
|
59394
|
-
var SquarePen = createLucideIcon(__iconData$
|
|
57271
|
+
__iconData$17.node;
|
|
57272
|
+
var SquarePen = createLucideIcon(__iconData$17);
|
|
59395
57273
|
//#endregion
|
|
59396
57274
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/square.mjs
|
|
59397
57275
|
/**
|
|
@@ -59400,7 +57278,7 @@ var SquarePen = createLucideIcon(__iconData$16);
|
|
|
59400
57278
|
* This source code is licensed under the ISC license.
|
|
59401
57279
|
* See the LICENSE file in the root directory of this source tree.
|
|
59402
57280
|
*/
|
|
59403
|
-
var __iconData$
|
|
57281
|
+
var __iconData$16 = {
|
|
59404
57282
|
name: "square",
|
|
59405
57283
|
size: 24,
|
|
59406
57284
|
node: [["rect", {
|
|
@@ -59412,8 +57290,8 @@ var __iconData$15 = {
|
|
|
59412
57290
|
key: "afitv7"
|
|
59413
57291
|
}]]
|
|
59414
57292
|
};
|
|
59415
|
-
__iconData$
|
|
59416
|
-
var Square = createLucideIcon(__iconData$
|
|
57293
|
+
__iconData$16.node;
|
|
57294
|
+
var Square = createLucideIcon(__iconData$16);
|
|
59417
57295
|
//#endregion
|
|
59418
57296
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/star.mjs
|
|
59419
57297
|
/**
|
|
@@ -59422,7 +57300,7 @@ var Square = createLucideIcon(__iconData$15);
|
|
|
59422
57300
|
* This source code is licensed under the ISC license.
|
|
59423
57301
|
* See the LICENSE file in the root directory of this source tree.
|
|
59424
57302
|
*/
|
|
59425
|
-
var __iconData$
|
|
57303
|
+
var __iconData$15 = {
|
|
59426
57304
|
name: "star",
|
|
59427
57305
|
size: 24,
|
|
59428
57306
|
node: [["path", {
|
|
@@ -59430,8 +57308,8 @@ var __iconData$14 = {
|
|
|
59430
57308
|
key: "r04s7s"
|
|
59431
57309
|
}]]
|
|
59432
57310
|
};
|
|
59433
|
-
__iconData$
|
|
59434
|
-
var Star = createLucideIcon(__iconData$
|
|
57311
|
+
__iconData$15.node;
|
|
57312
|
+
var Star = createLucideIcon(__iconData$15);
|
|
59435
57313
|
//#endregion
|
|
59436
57314
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/sun.mjs
|
|
59437
57315
|
/**
|
|
@@ -59440,7 +57318,7 @@ var Star = createLucideIcon(__iconData$14);
|
|
|
59440
57318
|
* This source code is licensed under the ISC license.
|
|
59441
57319
|
* See the LICENSE file in the root directory of this source tree.
|
|
59442
57320
|
*/
|
|
59443
|
-
var __iconData$
|
|
57321
|
+
var __iconData$14 = {
|
|
59444
57322
|
name: "sun",
|
|
59445
57323
|
size: 24,
|
|
59446
57324
|
node: [
|
|
@@ -59484,8 +57362,8 @@ var __iconData$13 = {
|
|
|
59484
57362
|
}]
|
|
59485
57363
|
]
|
|
59486
57364
|
};
|
|
59487
|
-
__iconData$
|
|
59488
|
-
var Sun = createLucideIcon(__iconData$
|
|
57365
|
+
__iconData$14.node;
|
|
57366
|
+
var Sun = createLucideIcon(__iconData$14);
|
|
59489
57367
|
//#endregion
|
|
59490
57368
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/terminal.mjs
|
|
59491
57369
|
/**
|
|
@@ -59494,7 +57372,7 @@ var Sun = createLucideIcon(__iconData$13);
|
|
|
59494
57372
|
* This source code is licensed under the ISC license.
|
|
59495
57373
|
* See the LICENSE file in the root directory of this source tree.
|
|
59496
57374
|
*/
|
|
59497
|
-
var __iconData$
|
|
57375
|
+
var __iconData$13 = {
|
|
59498
57376
|
name: "terminal",
|
|
59499
57377
|
size: 24,
|
|
59500
57378
|
node: [["path", {
|
|
@@ -59505,8 +57383,8 @@ var __iconData$12 = {
|
|
|
59505
57383
|
key: "1yngyt"
|
|
59506
57384
|
}]]
|
|
59507
57385
|
};
|
|
59508
|
-
__iconData$
|
|
59509
|
-
var Terminal = createLucideIcon(__iconData$
|
|
57386
|
+
__iconData$13.node;
|
|
57387
|
+
var Terminal = createLucideIcon(__iconData$13);
|
|
59510
57388
|
//#endregion
|
|
59511
57389
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/timer.mjs
|
|
59512
57390
|
/**
|
|
@@ -59515,7 +57393,7 @@ var Terminal = createLucideIcon(__iconData$12);
|
|
|
59515
57393
|
* This source code is licensed under the ISC license.
|
|
59516
57394
|
* See the LICENSE file in the root directory of this source tree.
|
|
59517
57395
|
*/
|
|
59518
|
-
var __iconData$
|
|
57396
|
+
var __iconData$12 = {
|
|
59519
57397
|
name: "timer",
|
|
59520
57398
|
size: 24,
|
|
59521
57399
|
node: [
|
|
@@ -59541,8 +57419,8 @@ var __iconData$11 = {
|
|
|
59541
57419
|
}]
|
|
59542
57420
|
]
|
|
59543
57421
|
};
|
|
59544
|
-
__iconData$
|
|
59545
|
-
var Timer = createLucideIcon(__iconData$
|
|
57422
|
+
__iconData$12.node;
|
|
57423
|
+
var Timer = createLucideIcon(__iconData$12);
|
|
59546
57424
|
//#endregion
|
|
59547
57425
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/trash.mjs
|
|
59548
57426
|
/**
|
|
@@ -59551,7 +57429,7 @@ var Timer = createLucideIcon(__iconData$11);
|
|
|
59551
57429
|
* This source code is licensed under the ISC license.
|
|
59552
57430
|
* See the LICENSE file in the root directory of this source tree.
|
|
59553
57431
|
*/
|
|
59554
|
-
var __iconData$
|
|
57432
|
+
var __iconData$11 = {
|
|
59555
57433
|
name: "trash",
|
|
59556
57434
|
size: 24,
|
|
59557
57435
|
node: [
|
|
@@ -59578,8 +57456,8 @@ var __iconData$10 = {
|
|
|
59578
57456
|
],
|
|
59579
57457
|
aliases: ["trash-2"]
|
|
59580
57458
|
};
|
|
59581
|
-
__iconData$
|
|
59582
|
-
var Trash = createLucideIcon(__iconData$
|
|
57459
|
+
__iconData$11.node;
|
|
57460
|
+
var Trash = createLucideIcon(__iconData$11);
|
|
59583
57461
|
//#endregion
|
|
59584
57462
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/triangle-alert.mjs
|
|
59585
57463
|
/**
|
|
@@ -59588,7 +57466,7 @@ var Trash = createLucideIcon(__iconData$10);
|
|
|
59588
57466
|
* This source code is licensed under the ISC license.
|
|
59589
57467
|
* See the LICENSE file in the root directory of this source tree.
|
|
59590
57468
|
*/
|
|
59591
|
-
var __iconData$
|
|
57469
|
+
var __iconData$10 = {
|
|
59592
57470
|
name: "triangle-alert",
|
|
59593
57471
|
size: 24,
|
|
59594
57472
|
node: [
|
|
@@ -59607,8 +57485,8 @@ var __iconData$9 = {
|
|
|
59607
57485
|
],
|
|
59608
57486
|
aliases: ["alert-triangle"]
|
|
59609
57487
|
};
|
|
59610
|
-
__iconData$
|
|
59611
|
-
var TriangleAlert = createLucideIcon(__iconData$
|
|
57488
|
+
__iconData$10.node;
|
|
57489
|
+
var TriangleAlert = createLucideIcon(__iconData$10);
|
|
59612
57490
|
//#endregion
|
|
59613
57491
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/upload.mjs
|
|
59614
57492
|
/**
|
|
@@ -59617,7 +57495,7 @@ var TriangleAlert = createLucideIcon(__iconData$9);
|
|
|
59617
57495
|
* This source code is licensed under the ISC license.
|
|
59618
57496
|
* See the LICENSE file in the root directory of this source tree.
|
|
59619
57497
|
*/
|
|
59620
|
-
var __iconData$
|
|
57498
|
+
var __iconData$9 = {
|
|
59621
57499
|
name: "upload",
|
|
59622
57500
|
size: 24,
|
|
59623
57501
|
node: [
|
|
@@ -59635,8 +57513,8 @@ var __iconData$8 = {
|
|
|
59635
57513
|
}]
|
|
59636
57514
|
]
|
|
59637
57515
|
};
|
|
59638
|
-
__iconData$
|
|
59639
|
-
var Upload = createLucideIcon(__iconData$
|
|
57516
|
+
__iconData$9.node;
|
|
57517
|
+
var Upload = createLucideIcon(__iconData$9);
|
|
59640
57518
|
//#endregion
|
|
59641
57519
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/user-plus.mjs
|
|
59642
57520
|
/**
|
|
@@ -59645,7 +57523,7 @@ var Upload = createLucideIcon(__iconData$8);
|
|
|
59645
57523
|
* This source code is licensed under the ISC license.
|
|
59646
57524
|
* See the LICENSE file in the root directory of this source tree.
|
|
59647
57525
|
*/
|
|
59648
|
-
var __iconData$
|
|
57526
|
+
var __iconData$8 = {
|
|
59649
57527
|
name: "user-plus",
|
|
59650
57528
|
size: 24,
|
|
59651
57529
|
node: [
|
|
@@ -59675,8 +57553,32 @@ var __iconData$7 = {
|
|
|
59675
57553
|
}]
|
|
59676
57554
|
]
|
|
59677
57555
|
};
|
|
57556
|
+
__iconData$8.node;
|
|
57557
|
+
var UserPlus = createLucideIcon(__iconData$8);
|
|
57558
|
+
//#endregion
|
|
57559
|
+
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/user-round.mjs
|
|
57560
|
+
/**
|
|
57561
|
+
* @license lucide-react v1.52.0 - ISC
|
|
57562
|
+
*
|
|
57563
|
+
* This source code is licensed under the ISC license.
|
|
57564
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
57565
|
+
*/
|
|
57566
|
+
var __iconData$7 = {
|
|
57567
|
+
name: "user-round",
|
|
57568
|
+
size: 24,
|
|
57569
|
+
node: [["circle", {
|
|
57570
|
+
cx: "12",
|
|
57571
|
+
cy: "8",
|
|
57572
|
+
r: "5",
|
|
57573
|
+
key: "1hypcn"
|
|
57574
|
+
}], ["path", {
|
|
57575
|
+
d: "M20 21a8 8 0 0 0-16 0",
|
|
57576
|
+
key: "rfgkzh"
|
|
57577
|
+
}]],
|
|
57578
|
+
aliases: ["user-2"]
|
|
57579
|
+
};
|
|
59678
57580
|
__iconData$7.node;
|
|
59679
|
-
var
|
|
57581
|
+
var UserRound = createLucideIcon(__iconData$7);
|
|
59680
57582
|
//#endregion
|
|
59681
57583
|
//#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/user.mjs
|
|
59682
57584
|
/**
|
|
@@ -65683,9 +63585,9 @@ var o$3 = import_react.forwardRef((a, r) => /* @__PURE__ */ import_react.createE
|
|
|
65683
63585
|
o$3.displayName = "VideoCameraIcon";
|
|
65684
63586
|
//#endregion
|
|
65685
63587
|
//#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiAnthropic.mjs
|
|
65686
|
-
var defaultColor$
|
|
63588
|
+
var defaultColor$13 = "#191919";
|
|
65687
63589
|
var SiAnthropic = import_react.forwardRef(function SiAnthropic2({ title = "Anthropic", color = "currentColor", size = 24, ...others }, ref) {
|
|
65688
|
-
if (color === "default") color = defaultColor$
|
|
63590
|
+
if (color === "default") color = defaultColor$13;
|
|
65689
63591
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
65690
63592
|
xmlns: "http://www.w3.org/2000/svg",
|
|
65691
63593
|
width: size,
|
|
@@ -65699,9 +63601,9 @@ var SiAnthropic = import_react.forwardRef(function SiAnthropic2({ title = "Anthr
|
|
|
65699
63601
|
});
|
|
65700
63602
|
//#endregion
|
|
65701
63603
|
//#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiApple.mjs
|
|
65702
|
-
var defaultColor$
|
|
63604
|
+
var defaultColor$12 = "#000000";
|
|
65703
63605
|
var SiApple = import_react.forwardRef(function SiApple2({ title = "Apple", color = "currentColor", size = 24, ...others }, ref) {
|
|
65704
|
-
if (color === "default") color = defaultColor$
|
|
63606
|
+
if (color === "default") color = defaultColor$12;
|
|
65705
63607
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
65706
63608
|
xmlns: "http://www.w3.org/2000/svg",
|
|
65707
63609
|
width: size,
|
|
@@ -65715,9 +63617,9 @@ var SiApple = import_react.forwardRef(function SiApple2({ title = "Apple", color
|
|
|
65715
63617
|
});
|
|
65716
63618
|
//#endregion
|
|
65717
63619
|
//#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiBilibili.mjs
|
|
65718
|
-
var defaultColor$
|
|
63620
|
+
var defaultColor$11 = "#00A1D6";
|
|
65719
63621
|
var SiBilibili = import_react.forwardRef(function SiBilibili2({ title = "Bilibili", color = "currentColor", size = 24, ...others }, ref) {
|
|
65720
|
-
if (color === "default") color = defaultColor$
|
|
63622
|
+
if (color === "default") color = defaultColor$11;
|
|
65721
63623
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
65722
63624
|
xmlns: "http://www.w3.org/2000/svg",
|
|
65723
63625
|
width: size,
|
|
@@ -65731,9 +63633,9 @@ var SiBilibili = import_react.forwardRef(function SiBilibili2({ title = "Bilibil
|
|
|
65731
63633
|
});
|
|
65732
63634
|
//#endregion
|
|
65733
63635
|
//#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiGithub.mjs
|
|
65734
|
-
var defaultColor$
|
|
63636
|
+
var defaultColor$10 = "#181717";
|
|
65735
63637
|
var SiGithub = import_react.forwardRef(function SiGithub2({ title = "GitHub", color = "currentColor", size = 24, ...others }, ref) {
|
|
65736
|
-
if (color === "default") color = defaultColor$
|
|
63638
|
+
if (color === "default") color = defaultColor$10;
|
|
65737
63639
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
65738
63640
|
xmlns: "http://www.w3.org/2000/svg",
|
|
65739
63641
|
width: size,
|
|
@@ -65747,9 +63649,9 @@ var SiGithub = import_react.forwardRef(function SiGithub2({ title = "GitHub", co
|
|
|
65747
63649
|
});
|
|
65748
63650
|
//#endregion
|
|
65749
63651
|
//#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiGooglephotos.mjs
|
|
65750
|
-
var defaultColor$
|
|
63652
|
+
var defaultColor$9 = "#4285F4";
|
|
65751
63653
|
var SiGooglephotos = import_react.forwardRef(function SiGooglephotos2({ title = "Google Photos", color = "currentColor", size = 24, ...others }, ref) {
|
|
65752
|
-
if (color === "default") color = defaultColor$
|
|
63654
|
+
if (color === "default") color = defaultColor$9;
|
|
65753
63655
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
65754
63656
|
xmlns: "http://www.w3.org/2000/svg",
|
|
65755
63657
|
width: size,
|
|
@@ -65763,9 +63665,9 @@ var SiGooglephotos = import_react.forwardRef(function SiGooglephotos2({ title =
|
|
|
65763
63665
|
});
|
|
65764
63666
|
//#endregion
|
|
65765
63667
|
//#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiHonor.mjs
|
|
65766
|
-
var defaultColor$
|
|
63668
|
+
var defaultColor$8 = "#000000";
|
|
65767
63669
|
var SiHonor = import_react.forwardRef(function SiHonor2({ title = "Honor", color = "currentColor", size = 24, ...others }, ref) {
|
|
65768
|
-
if (color === "default") color = defaultColor$
|
|
63670
|
+
if (color === "default") color = defaultColor$8;
|
|
65769
63671
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
65770
63672
|
xmlns: "http://www.w3.org/2000/svg",
|
|
65771
63673
|
width: size,
|
|
@@ -65779,9 +63681,9 @@ var SiHonor = import_react.forwardRef(function SiHonor2({ title = "Honor", color
|
|
|
65779
63681
|
});
|
|
65780
63682
|
//#endregion
|
|
65781
63683
|
//#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiHuawei.mjs
|
|
65782
|
-
var defaultColor$
|
|
63684
|
+
var defaultColor$7 = "#FF0000";
|
|
65783
63685
|
var SiHuawei = import_react.forwardRef(function SiHuawei2({ title = "Huawei", color = "currentColor", size = 24, ...others }, ref) {
|
|
65784
|
-
if (color === "default") color = defaultColor$
|
|
63686
|
+
if (color === "default") color = defaultColor$7;
|
|
65785
63687
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
65786
63688
|
xmlns: "http://www.w3.org/2000/svg",
|
|
65787
63689
|
width: size,
|
|
@@ -65794,10 +63696,26 @@ var SiHuawei = import_react.forwardRef(function SiHuawei2({ title = "Huawei", co
|
|
|
65794
63696
|
});
|
|
65795
63697
|
});
|
|
65796
63698
|
//#endregion
|
|
63699
|
+
//#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiKuaishou.mjs
|
|
63700
|
+
var defaultColor$6 = "#FF4906";
|
|
63701
|
+
var SiKuaishou = import_react.forwardRef(function SiKuaishou2({ title = "Kuaishou", color = "currentColor", size = 24, ...others }, ref) {
|
|
63702
|
+
if (color === "default") color = defaultColor$6;
|
|
63703
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
63704
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
63705
|
+
width: size,
|
|
63706
|
+
height: size,
|
|
63707
|
+
fill: color,
|
|
63708
|
+
viewBox: "0 0 24 24",
|
|
63709
|
+
ref,
|
|
63710
|
+
...others,
|
|
63711
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("title", { children: title }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M18.315 12.264c2.33 0 4.218 1.88 4.218 4.2V19.8c0 2.32-1.888 4.2-4.218 4.2h-6.202a4.218 4.218 0 0 1-4.023-2.938l-3.676 1.833a2.04 2.04 0 0 1-2.731-.903 2.015 2.015 0 0 1-.216-.907v-5.94a2.03 2.03 0 0 1 2.035-2.024 2.044 2.044 0 0 1 .919.218l3.673 1.85a4.218 4.218 0 0 1 4.02-2.925zm-.062 2.162h-6.078c-1.153 0-2.09.921-2.108 2.065v3.247c0 1.148.925 2.081 2.073 2.1h6.113c1.153 0 2.09-.922 2.109-2.065v-3.247a2.104 2.104 0 0 0-2.074-2.1zM4.18 15.72a.554.554 0 0 0-.555.542v3.734a.556.556 0 0 0 .798.496l.01-.004 3.463-1.756V17.51l-3.467-1.73a.557.557 0 0 0-.249-.06zM9.28 0a5.667 5.667 0 0 1 4.98 2.965 4.921 4.921 0 0 1 3.36-1.317c2.714 0 4.913 2.177 4.913 4.863 0 2.686-2.2 4.863-4.912 4.863a4.921 4.921 0 0 1-3.996-2.034 5.651 5.651 0 0 1-4.345 2.034c-3.131 0-5.67-2.546-5.67-5.687C3.61 2.546 6.149 0 9.28 0Zm8.34 3.926c-1.441 0-2.61 1.157-2.61 2.585s1.169 2.585 2.61 2.585c1.443 0 2.612-1.157 2.612-2.585s-1.169-2.585-2.611-2.585zM9.28 2.287a3.395 3.395 0 0 0-3.39 3.4c0 1.877 1.518 3.4 3.39 3.4a3.395 3.395 0 0 0 3.39-3.4c0-1.878-1.518-3.4-3.39-3.4z" })]
|
|
63712
|
+
});
|
|
63713
|
+
});
|
|
63714
|
+
//#endregion
|
|
65797
63715
|
//#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiOneplus.mjs
|
|
65798
|
-
var defaultColor$
|
|
63716
|
+
var defaultColor$5 = "#F5010C";
|
|
65799
63717
|
var SiOneplus = import_react.forwardRef(function SiOneplus2({ title = "OnePlus", color = "currentColor", size = 24, ...others }, ref) {
|
|
65800
|
-
if (color === "default") color = defaultColor$
|
|
63718
|
+
if (color === "default") color = defaultColor$5;
|
|
65801
63719
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
65802
63720
|
xmlns: "http://www.w3.org/2000/svg",
|
|
65803
63721
|
width: size,
|
|
@@ -65811,9 +63729,9 @@ var SiOneplus = import_react.forwardRef(function SiOneplus2({ title = "OnePlus",
|
|
|
65811
63729
|
});
|
|
65812
63730
|
//#endregion
|
|
65813
63731
|
//#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiOppo.mjs
|
|
65814
|
-
var defaultColor$
|
|
63732
|
+
var defaultColor$4 = "#2D683D";
|
|
65815
63733
|
var SiOppo = import_react.forwardRef(function SiOppo2({ title = "OPPO", color = "currentColor", size = 24, ...others }, ref) {
|
|
65816
|
-
if (color === "default") color = defaultColor$
|
|
63734
|
+
if (color === "default") color = defaultColor$4;
|
|
65817
63735
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
65818
63736
|
xmlns: "http://www.w3.org/2000/svg",
|
|
65819
63737
|
width: size,
|
|
@@ -65827,9 +63745,9 @@ var SiOppo = import_react.forwardRef(function SiOppo2({ title = "OPPO", color =
|
|
|
65827
63745
|
});
|
|
65828
63746
|
//#endregion
|
|
65829
63747
|
//#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiSamsung.mjs
|
|
65830
|
-
var defaultColor$
|
|
63748
|
+
var defaultColor$3 = "#1428A0";
|
|
65831
63749
|
var SiSamsung = import_react.forwardRef(function SiSamsung2({ title = "Samsung", color = "currentColor", size = 24, ...others }, ref) {
|
|
65832
|
-
if (color === "default") color = defaultColor$
|
|
63750
|
+
if (color === "default") color = defaultColor$3;
|
|
65833
63751
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
65834
63752
|
xmlns: "http://www.w3.org/2000/svg",
|
|
65835
63753
|
width: size,
|
|
@@ -65843,9 +63761,9 @@ var SiSamsung = import_react.forwardRef(function SiSamsung2({ title = "Samsung",
|
|
|
65843
63761
|
});
|
|
65844
63762
|
//#endregion
|
|
65845
63763
|
//#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiVivo.mjs
|
|
65846
|
-
var defaultColor$
|
|
63764
|
+
var defaultColor$2 = "#415FFF";
|
|
65847
63765
|
var SiVivo = import_react.forwardRef(function SiVivo2({ title = "vivo", color = "currentColor", size = 24, ...others }, ref) {
|
|
65848
|
-
if (color === "default") color = defaultColor$
|
|
63766
|
+
if (color === "default") color = defaultColor$2;
|
|
65849
63767
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
65850
63768
|
xmlns: "http://www.w3.org/2000/svg",
|
|
65851
63769
|
width: size,
|
|
@@ -65858,6 +63776,22 @@ var SiVivo = import_react.forwardRef(function SiVivo2({ title = "vivo", color =
|
|
|
65858
63776
|
});
|
|
65859
63777
|
});
|
|
65860
63778
|
//#endregion
|
|
63779
|
+
//#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiXiaohongshu.mjs
|
|
63780
|
+
var defaultColor$1 = "#FF2442";
|
|
63781
|
+
var SiXiaohongshu = import_react.forwardRef(function SiXiaohongshu2({ title = "Xiaohongshu", color = "currentColor", size = 24, ...others }, ref) {
|
|
63782
|
+
if (color === "default") color = defaultColor$1;
|
|
63783
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
63784
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
63785
|
+
width: size,
|
|
63786
|
+
height: size,
|
|
63787
|
+
fill: color,
|
|
63788
|
+
viewBox: "0 0 24 24",
|
|
63789
|
+
ref,
|
|
63790
|
+
...others,
|
|
63791
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("title", { children: title }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M22.405 9.879c.002.016.01.02.07.019h.725a.797.797 0 0 0 .78-.972.794.794 0 0 0-.884-.618.795.795 0 0 0-.692.794c0 .101-.002.666.001.777zm-11.509 4.808c-.203.001-1.353.004-1.685.003a2.528 2.528 0 0 1-.766-.126.025.025 0 0 0-.03.014L7.7 16.127a.025.025 0 0 0 .01.032c.111.06.336.124.495.124.66.01 1.32.002 1.981 0 .01 0 .02-.006.023-.015l.712-1.545a.025.025 0 0 0-.024-.036zM.477 9.91c-.071 0-.076.002-.076.01a.834.834 0 0 0-.01.08c-.027.397-.038.495-.234 3.06-.012.24-.034.389-.135.607-.026.057-.033.042.003.112.046.092.681 1.523.787 1.74.008.015.011.02.017.02.008 0 .033-.026.047-.044.147-.187.268-.391.371-.606.306-.635.44-1.325.486-1.706.014-.11.021-.22.03-.33l.204-2.616.022-.293c.003-.029 0-.033-.03-.034zm7.203 3.757a1.427 1.427 0 0 1-.135-.607c-.004-.084-.031-.39-.235-3.06a.443.443 0 0 0-.01-.082c-.004-.011-.052-.008-.076-.008h-1.48c-.03.001-.034.005-.03.034l.021.293c.076.982.153 1.964.233 2.946.05.4.186 1.085.487 1.706.103.215.223.419.37.606.015.018.037.051.048.049.02-.003.742-1.642.804-1.765.036-.07.03-.055.003-.112zm3.861-.913h-.872a.126.126 0 0 1-.116-.178l1.178-2.625a.025.025 0 0 0-.023-.035l-1.318-.003a.148.148 0 0 1-.135-.21l.876-1.954a.025.025 0 0 0-.023-.035h-1.56c-.01 0-.02.006-.024.015l-.926 2.068c-.085.169-.314.634-.399.938a.534.534 0 0 0-.02.191.46.46 0 0 0 .23.378.981.981 0 0 0 .46.119h.59c.041 0-.688 1.482-.834 1.972a.53.53 0 0 0-.023.172.465.465 0 0 0 .23.398c.15.092.342.12.475.12l1.66-.001c.01 0 .02-.006.023-.015l.575-1.28a.025.025 0 0 0-.024-.035zm-6.93-4.937H3.1a.032.032 0 0 0-.034.033c0 1.048-.01 2.795-.01 6.829 0 .288-.269.262-.28.262h-.74c-.04.001-.044.004-.04.047.001.037.465 1.064.555 1.263.01.02.03.033.051.033.157.003.767.009.938-.014.153-.02.3-.06.438-.132.3-.156.49-.419.595-.765.052-.172.075-.353.075-.533.002-2.33 0-4.66-.007-6.991a.032.032 0 0 0-.032-.032zm11.784 6.896c0-.014-.01-.021-.024-.022h-1.465c-.048-.001-.049-.002-.05-.049v-4.66c0-.072-.005-.07.07-.07h.863c.08 0 .075.004.075-.074V8.393c0-.082.006-.076-.08-.076h-3.5c-.064 0-.075-.006-.075.073v1.445c0 .083-.006.077.08.077h.854c.075 0 .07-.004.07.07v4.624c0 .095.008.084-.085.084-.37 0-1.11-.002-1.304 0-.048.001-.06.03-.06.03l-.697 1.519s-.014.025-.008.036c.006.01.013.008.058.008 1.748.003 3.495.002 5.243.002.03-.001.034-.006.035-.033v-1.539zm4.177-3.43c0 .013-.007.023-.02.024-.346.006-.692.004-1.037.004-.014-.002-.022-.01-.022-.024-.005-.434-.007-.869-.01-1.303 0-.072-.006-.071.07-.07l.733-.003c.041 0 .081.002.12.015.093.025.16.107.165.204.006.431.002 1.153.001 1.153zm2.67.244a1.953 1.953 0 0 0-.883-.222h-.18c-.04-.001-.04-.003-.042-.04V10.21c0-.132-.007-.263-.025-.394a1.823 1.823 0 0 0-.153-.53 1.533 1.533 0 0 0-.677-.71 2.167 2.167 0 0 0-1-.258c-.153-.003-.567 0-.72 0-.07 0-.068.004-.068-.065V7.76c0-.031-.01-.041-.046-.039H17.93s-.016 0-.023.007c-.006.006-.008.012-.008.023v.546c-.008.036-.057.015-.082.022h-.95c-.022.002-.028.008-.03.032v1.481c0 .09-.004.082.082.082h.913c.082 0 .072.128.072.128V11.19s.003.117-.06.117h-1.482c-.068 0-.06.082-.06.082v1.445s-.01.068.064.068h1.457c.082 0 .076-.006.076.079v3.225c0 .088-.007.081.082.081h1.43c.09 0 .082.007.082-.08v-3.27c0-.029.006-.035.033-.035l2.323-.003c.098 0 .191.02.28.061a.46.46 0 0 1 .274.407c.008.395.003.79.003 1.185 0 .259-.107.367-.33.367h-1.218c-.023.002-.029.008-.028.033.184.437.374.871.57 1.303a.045.045 0 0 0 .04.026c.17.005.34.002.51.003.15-.002.517.004.666-.01a2.03 2.03 0 0 0 .408-.075c.59-.18.975-.698.976-1.313v-1.981c0-.128-.01-.254-.034-.38 0 .078-.029-.641-.724-.998z" })]
|
|
63792
|
+
});
|
|
63793
|
+
});
|
|
63794
|
+
//#endregion
|
|
65861
63795
|
//#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiXiaomi.mjs
|
|
65862
63796
|
var defaultColor = "#FF6900";
|
|
65863
63797
|
var SiXiaomi = import_react.forwardRef(function SiXiaomi2({ title = "Xiaomi", color = "currentColor", size = 24, ...others }, ref) {
|
|
@@ -159710,4 +157644,4 @@ var G = WebAssembly.compile((a = "AGFzbQEAAAABKwhgAX8Bf2AEf39/fwBgAAF/YAAAYAF/AG
|
|
|
159710
157644
|
});
|
|
159711
157645
|
var a;
|
|
159712
157646
|
//#endregion
|
|
159713
|
-
export { RiPieChart2Fill as $,
|
|
157647
|
+
export { RiPieChart2Fill as $, Globe as $n, array as $r, Video as $t, MdFitScreen as A, Quote as An, Calendar as Ar, n$2 as At, AiFillHeart as B, Monitor as Bn, require_jsx_runtime as Br, p$5 as Bt, webassembly_default as C, ScanLine as Cn, CircleDashed as Cr, o$3 as Ct, tailwind_css_default as D, Repeat as Dn, Check as Dr, s$3 as Dt, tsdown_default as E, RotateCcw as En, CircleAlert as Er, o$5 as Et, FaCommentDots as F, Pencil as Fn, BookOpenText as Fr, m$6 as Ft, RiArrowRightFill as G, LoaderCircle as Gn, require_server_node as Gr, parse$2 as Gt, AiFillStar as H, Menu as Hn, clsx as Hr, s$4 as Ht, FaMusic as I, Palette as In, BellRing as Ir, m$7 as It, RiHeart3Fill as J, LayoutTemplate as Jn, defineTemplate as Jr, format$1 as Jt, RiGroupLine as K, ListChecks as Kn, require_react as Kr, fromUnixTime as Kt, FaTiktok as L, Network as Ln, ArrowRight as Lr, c$7 as Lt, MdLightbulbOutline as M, Puzzle as Mn, Box as Mr, e$5 as Mt, MdLocationOn as N, Plus as Nn, Bot as Nr, c$6 as Nt, sqlite_default as O, RefreshCw as On, ChartColumn as Or, m$5 as Ot, MdSchedule as P, Play as Pn, Bookmark as Pr, a$6 as Pt, RiMessage3Fill as Q, Hash as Qn, any as Qr, WandSparkles as Qt, FaUserGroup as R, Music as Rn, Chip as Rr, o$8 as Rt, rehypeHighlight as S, Search as Sn, CircleEllipsis as Sr, SiAnthropic as St, typescript_default as T, Route as Tn, CircleCheckBig as Tr, o$4 as Tt, AiOutlineVideoCamera as U, Maximize as Un, createTemplateRenderer as Ur, m$8 as Ut, AiFillPushpin as V, MessageCircle as Vn, twMerge as Vr, n$3 as Vt, Markdown as W, MapPin as Wn, resolveTemplateStyle as Wr, zhCN as Wt, RiHeartLine as X, Image$1 as Xn, number$1 as Xr, Zap as Xt, RiHeart3Line as Y, Info$1 as Yn, require_protobufjs as Yr, differenceInSeconds as Yt, RiLiveLine as Z, Heart as Zn, _enum as Zr, X$2 as Zt, use as _, Shield as _n, Clock as _r, SiHonor as _t, drawDither as a, string$2 as ai, Upload as an, FileText as ar, RiTrophyFill as at, install$14 as b, Share2 as bn, CircleQuestionMark as br, SiBilibili as bt, install as c, unknown as ci, Timer as cn, Eye as cr, RiVideoLine as ct, install$5 as d, NEVER as di, Star as dn, Download as dr, SiVivo as dt, boolean$1 as ei, Users as en, GitBranch as er, RiShareForwardFill as et, install$6 as f, Square as fn, Crown as fr, SiSamsung as ft, install$11 as g, ShoppingBag as gn, Code as gr, SiHuawei as gt, install$10 as h, Smartphone as hn, Copy as hr, SiKuaishou as ht, qe as i, record as ii, UserPlus as in, FingerprintPattern as ir, RiTiktokFill as it, MdInfoOutline as j, QrCode as jn, Braces as jr, p$4 as jt, react_default as k, Radio as kn, Camera as kr, a$4 as kt, install$1 as l, ZodError as li, Terminal as ln, EyeOff as lr, SiXiaomi as lt, install$9 as m, Sparkles as mn, CornerDownLeft as mr, SiOneplus as mt, G as n, number$2 as ni, User as nn, Gauge as nr, RiStarLine as nt, require_jpeg_js as o, stringbool as oi, TriangleAlert as on, FilePlay as or, RiUserFollowLine as ot, install$8 as p, SquarePen as pn, Cpu as pr, SiOppo as pt, RiHashtag as q, Link as qn, HtmlWrapper as qr, formatDistanceToNow as qt, L as r, object as ri, UserRound as rn, Gamepad2 as rr, RiThumbUpFill as rt, require_heic_decode as s, union as si, Trash as sn, FileExclamationPoint as sr, RiVerifiedBadgeFill as st, F as t, literal as ti, UsersRound as tn, Gift as tr, RiStarFill as tt, install$4 as u, toJSONSchema as ui, Sun as un, ExternalLink as ur, SiXiaohongshu as ut, init as v, ShieldCheck as vn, Clock3 as vr, SiGooglephotos as vt, vite_default as w, Save as wn, CircleCheck as wr, r$3 as wt, install$15 as x, Settings2 as xn, CircleFadingArrowUp as xr, SiApple as xt, install$13 as y, ShieldAlert as yn, Clapperboard as yr, SiGithub as yt, BiImage as z, Moon as zn, Button as zr, c$8 as zt };
|