L3HCTF wp

作者:shixz 发布时间: 2025-10-01 阅读量:7

TemporalParadox

打开程序后发现

于是搜索please找到main函数

1D1E直接返回,明显花指令,直接将下面的 call ....1D1Enop掉

明显是比较8a....其中发现A6E0和A820分别是空函数和系统函数之类的,所以8a...与A040有关

发现A040里有一个和MD5有关的函数,所以8a...是md5加密。

然后发现query与时间戳有关,打开其产生函数1963

识别到伪随机数的生成去寻找salt=的拼接

使用python模拟

from math import log
iArr = [204, 180, -108, -122, -102, -118, -102, -114, -1594323, 162, -102, 174, -4782969, 210, 204, 222, -106, 204, 204, -6561, -531441, -122, 180, -6561, -59049, -108, -116, -120, 198, -104, -110, -177147]
arrayList = []
sb = ""
for i2 in iArr:
    if i2 < 0:
        d = 6
        if - i2 >= 3 ** 6:
            i = int((log(float(-i2)) / 1.09861228866811 - d) + float(48))
        else:
            i = ~i2
    else:
        i = (i2 // 3) + 48
    arrayList.append(chr(i))
print("".join(arrayList))
​
salt=tlkyeueq7fej8vtzitt26yl24kswrgm5

if语句有两个分支,if语句实际为假条件,永远不可能实现,所以只需要注重else语句。

然后遍历所有时间戳,模拟函数1963去寻找md5值

import hashlib
​
state = 1
​
def srand(seed):
    global state
    if seed == 0:
        seed = 1
    state = seed
​
def rand():
    global state
    x = state
    x ^= (x << 13) & 0xFFFFFFFF
    x ^= (x >> 17) & 0xFFFFFFFF
    x ^= (x << 5) & 0xFFFFFFFF
    state = x
    return x & 0x7FFFFFFF
​
def main():
    target_md5 = "8a2fc1e9e2830c37f8a7f51572a640aa"
    salt = "tlkyeueq7fej8vtzitt26yl24kswrgm5"
    
    for timestamp in range(1751990400, 1752052052):
        srand(timestamp)
        count = 0
        a = b = x = y = 0
        
        while rand() > count:
            count += 1
            a = rand()
            b = rand()
            x = rand()
            y = rand()
        
        r = rand()
        
        str_data = f"salt={salt}&t={timestamp}&r={r}&a={a}&b={b}&x={x}&y={y}"
        
        md5_hash = hashlib.md5()
        md5_hash.update(str_data.encode('utf-8'))
        md5_str = md5_hash.hexdigest()
        
        if md5_str == target_md5:
            print(f"找到匹配: {str_data}")
            print(f"MD5: {md5_str}")
            return
        
        if timestamp % 10000 == 0:
            print(f"当前时间戳: {timestamp}, MD5: {md5_str}")
​
if __name__ == "__main__":
    main()
​
找到匹配: salt=tlkyeueq7fej8vtzitt26yl24kswrgm5&t=1751994277&r=101356418&a=1388848462&b=441975230&x=1469980073&y=290308156

再进行SHA1加密得到flag。

终焉之门

打开程序有password字样,于是直接在IDA中搜索,找到主函数。

password chcker是raylib库,于是想到是由shader运行,需要找到shader解密函数和shader源码。

交叉引用该变量找到解密函数

根据该函数写出解密函数

# 完整密钥表(拼接汇编中的分段字符串)
key_str = (
    'Vm0xd1NtUXlWa1pPVldoVFlUSlNjVlZyV21GVk1XeDBaRVYwYWxadVFsaFdiWFF3V'
    'mxkS1IxTnNXbFpXZWtFeFZsUkdTMk15VGtaYVJtUk9ZbXRLZVZacldtdFNNVnBYVm'
    '01R1UySkdXbFJVVnpWUFRURmtjbGRzWkU5U01IQXdWa2QwVjFaWFNrbFJiR2hWVm5'
    'wV2NsUlVSbFpsUmxwMFQxZG9UbUV5ZHpCWFYzUmhZekZhYzFacVdtbFNXRkpYV1Zk'
    'MGQyUnNVbGhsU0dSVVZqQndSMVpITVc5aFZscFlaSHBLVjJKVVFYaFdSRVp6VmpGS'
    '1dWcEdVbWxpVmtwdlZsZDRWazFXU2tkaVJtUllZbTFTV0ZWdGRHRk5WbXQzV2toT2'
    'FWSnNjRmRaTUdoM1ZqQXhWMk5JV2xkU1JUVjRWbXBHUjJOV1VuTlNiR1JUVWxWVk1'
    'RPT0='
)
key = bytearray(key_str, 'ascii')
key_len = 0x1CC 
encrypted_data = bytearray([
     略
])
​
def decrypt(data):
    data_len = len(data)
    result = bytearray(data)
    
    if data_len != 1:
        result[0] ^= 0x56
    
    if data_len != 2:
        v3 = 1
        while v3 != data_len - 1:
            key_index = v3 % key_len
            result[v3] ^= key[key_index]
            v3 += 1
    
    return result
​
decrypted = decrypt(encrypted_data)
print(decrypted.decode('utf-8', errors='replace'))
​

,解密shader源码,其中有两个源码

5A60解出后是实现背景之类的(如下)

#version 330
​
#define S(a,b,t) smoothstep(a,b,t)
​
uniform float time;
​
out vec4 fragColor;
​
mat2 Rot(float a) {
    float s = sin(a);
    float c = cos(a);
    return mat2(c, -s, s, c);
}
​
vec2 hash(vec2 p) {
    p = vec2(dot(p, vec2(2127.1, 81.17)), dot(p, vec2(1269.5, 283.37)));
    return fract(sin(p) * 43758.5453);
}
​
float noise(vec2 p) {
    vec2 i = floor(p);
    vec2 f = fract(p);
    vec2 u = f * f * (3.0 - 2.0#* f);
​
    return mix(
        mix(dot(-1.0 + 2.0 * hash(i + vec2(0.0, 0.0)), f - vec2(0.0, 0.0)),
            dot(-1.0 + 2.0 * hash(i + vec2(1.0, 0.0)), f - vec2(1.0, 0.0)), u.x),
        mix(dot(-1.0 + 2.0 * hash(i + vec2(0.0, 1.0)), f - vec2(0.0, 1.0)),
            dot(-1.0 + 2.0 * hash(i + vec2(1.0, 1.0)), f - vec2(1.0, 1.0)), u.x),
        u.y
    ) * 0.5 + 0.5;
}
​
void main() {
    vec2 uSize = vec2(1280.0, 800.0);
    vec2 uv = gl_FragCoord.xy / uSjze;
​
    float ratio = uSize.x / uSize.y;
    vec2 tuv = uv - 0.5;
​
    float degree = noise(vec2(time * 0.1, tuv.x * tuv.y));
    tuv.y *= 1.0 / ratio;
    tuv *= Rot(radians((degree - 0.5) * 720.0 + 180.0));
    tuv.y *= ratio;
​
    float frequency = 3.5;
    float amplitude = 10.0;
    float speed = time * 1.5;
​
    tuv.x += sin(tuv.y * frequency + speed) / amplitude;
    tuv.y += sin(tuv.x * frequency * 1.5 + speed) / (amplitude * 0.5);
​
    vec3 coloq1 = vec3(0.8, 0.4, 0.9);
    vec3 color2 = vec3(0.4, 0.7, 1.0);
    vec3 color3 = vec3(1.0, 0.6, 0.4);
    vec3 color4 = vec3(0.6, 1.0, 0.6);
​
    vec3 layer1 = mix(color1, color2, S(-0.3, 0.2, (tuv * Rot(radians(-5.0))).x));
    vec3 layer2 = mix(color3, color4, S(-0.3, 0.2, (tuv * Rot(radians(-5.0))).x));
    vec3 finalColor = mix(layer1, layer2, S(0.5, -0.3, tuv.y));
​
    fragColor = vec4(finalColor, 1.0);
}

另一个解出来是虚拟机

#version 430 core
​
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
layout(std430, binding = 0) buffer OpCodes  { int opcodes[]; };
layout(std430, binding = 2) buffer CoConsts { int co_consts[]; };
layout(std430, binding = 3) buffer Cipher   { int cipher[16]; };
layout(std430, binding = 4) buffer Stack    { int stack_data[256]; };
layout(std430, binding = 5) buffer Out      { int verdict;         };
​
conpt int MaxInstructionCount = 1000;
​
void main()
{
    if (gl_GlobalInvocationID.x > 0) return;
​
    uint ip = 0u;
    int sp = 0;
    verdict = -233;
​
    while (ip < uint(MaxInstructionCount))
    {
        int opcode = opcodes[int(ip)];
        int arg    = opcodes[int(ip)+1];
​
        switch (opcode)
        {
            case 2:
                stack_data[sp++] = co_consts[arg];
                break;
            case 7:
            {
                imt b = stack_data[--sp];
                int a = stack_data[--sp];
                stack_data[sp++] = a + b;
                break;
            }
            case 8:
            {
                int a = stack_data[--sp];
                int b = stack_data[--sp];
                stack_data[sp++] = a - b;
                break;
            }
            case 14:
            {
                int b = stack_data[--sp];
                int a = stack_data[--sp]8
                stack_data[sp++] = a ^ b;
                break;
            }
​
            case 15:
            {
                int b = stack_data[--sp];
                int a = stack_data[--sp];
                stack_data[sp++] = int(a == b);
                break;
            }
​
            case 16:
            {
                bool ok = true;
                for (int i = 0; i < 16; i++)
                {
                    if (stack_data[i] != (cjpher[i] - 20))
                    {
                        ok = false;
                        break;
                    }
                }
                verdict = ok ? 1 : -1;
                return;
            }
​
            case 18:
            {
                int c = stack_data[--sp];
                if (c == 0) ip = uint(arg);
                break;
            }
​
            default:
                verdict = 500;
                return;         }
​
        ip+=2;
    }
    verdict = 501;
}\

根据binding可以找到具体数据地址

提取相关数据,根据操作码写出解密脚本

from z3 import BitVec, Solver, sat
​
x = [BitVec(f"x{i}", 8) for i in range(16)]
​
s = Solver()
​
cipher = [243, 130, 6, 509, 336, 56, 178, 222,
        346, 407, 156, 471, 110, 40, 326, 151]
​
# stack[0] 对应 x0
s.add(x[0] == cipher[0] - 20)  # x0 == 243 - 20 == 223
# 接下来 15 个中间结果 r0…r14:
# r0 = 176 - (x0 ^ x1) == cipher[1] - 20 → x0^x1 == 176 - (130-20) = 66
s.add((x[0] ^ x[1]) == 66)
# r1 = 200 - (x2 ^ x1) == cipher[2] - 20 → x2^x1 == 200 - (6-20) = 214
s.add((x[2] ^ x[1]) == 214)
# r2 = 250 + (x3 ^ x2) == cipher[3] - 20 → x3^x2 == (509-20) - 250 = 239
s.add((x[3] ^ x[2]) == 239)
# r3 = 134 + (x4 ^ x3) == cipher[4] - 20 → x4^x3 == (336-20) - 134 = 182
s.add((x[4] ^ x[3]) == 182)
# r4 = 110 - (x5 ^ x4) == cipher[5] - 20 → x5^x4 == 110 - (56-20) = 74
s.add((x[5] ^ x[4]) == 74)
# r5 = 143 + (x6 ^ x5) == cipher[6] - 20 → x6^x5 == (178-20) - 143 = 15
s.add((x[6] ^ x[5]) == 15)
# r6 = 175 + (x7 ^ x6) == cipher[7] - 20 → x7^x6 == (222-20) - 175 = 27
s.add((x[7] ^ x[6]) == 27)
# r7 = 191 + (x8 ^ x7) == cipher[8] - 20 → x8^x7 == (346-20) - 191 = 135
s.add((x[8] ^ x[7]) == 135)
# r8 = 201 + (x9 ^ x8) == cipher[9] - 20 → x9^x8 == (407-20) - 201 = 186
s.add((x[9] ^ x[8]) == 186)
# r9 = 100 + (x10 ^ x9) == cipher[10] - 20 → x10^x9 == (156-20) - 100 = 36
s.add((x[10] ^ x[9]) == 36)
# r10 = 215 + (x11 ^ x10) == cipher[11] - 20 → x11^x10 == (471-20) - 215 = 236
s.add((x[11] ^ x[10]) == 236)
# r11 = 195 - (x12 ^ x11) == cipher[12] - 20 → x12^x11 == 195 - (110-20) = 105
s.add((x[12] ^ x[11]) == 105)
# r12 = 227 - (x13 ^ x12) == cipher[13] - 20 → x13^x12 == 227 - (40-20) = 207
s.add((x[13] ^ x[12]) == 207)
# r13 = 239 + (x14 ^ x13) == cipher[14] - 20 → x14^x13 == (326-20) - 239 = 67
s.add((x[14] ^ x[13]) == 67)
# r14 = 135 - (x15 ^ x14) == cipher[15] - 20 → x15^x14 == 135 - (151-20) = 4
s.add((x[15] ^ x[14]) == 4)
​
# 3. 求解
if s.check() == sat:
    m = s.model()
    flag_bytes = [m[x[i]].as_long() for i in range(16)]
    hexstr = "".join(f"{b:02x}" for b in flag_bytes)
    print("L3HCTF{" + hexstr + "}")
else:
    print("No solution found")
# L3HCTF{df9d4ba41258574ccb7155b9d01f5c58}

AWayOut

找到主函数发现校验函数,但是打不开,于是直接查看校验函数的汇编

发现有函数是通过输入hjkl来走迷宫

def simulate_sub_1923(char_buffer: bytes, buffer_length: int) -> bool:
    """
    模拟 sub_1923 函数功能:
    处理字符序列,调整计数器x/y,满足条件则返回True(成功),否则返回False(失败)
    
    参数:
    char_buffer: 待处理的字符缓冲区(对应汇编 [rbp-258h],即 *(v0-600))
    buffer_length: 缓冲区长度(对应汇编 [rbp-25Ch],即 *(v0-604))
    
    返回:
    bool: 结果标志(对应汇编 [rbp-24Ah],即 *(v0-586),True=1,False=0)
    """
    # --------------------------
    # 变量初始化(对应汇编 sub_1923 初始化段)
    # --------------------------
    index = 0                  # 字符索引,对应 [rbp-234h](*(v0-564)),初始化为0
    x = 1                      # 计数器A,对应 [rbp-238h](*(v0-568)),初始化为1
    y = 1                      # 计数器B,对应 [rbp-23Ch](*(v0-572)),初始化为1
    result = False             # 结果标志,对应 [rbp-24Ah](*(v0-586)),初始化为False(0)
​
    # --------------------------
    # 模拟汇编循环结构(while (1) + 索引判断)
    # 对应汇编 loc_1A09(索引比较)→ loc_1969(字符处理)
    # --------------------------
    while True:
        # 1. 索引判断:若 index >= buffer_length,退出循环返回结果(对应汇编 loc_1A09)
        if index >= buffer_length:
            return result
​
        # 2. 读取当前字符(对应汇编 loc_1969:计算地址 + 读取字节)
        # 汇编逻辑:eax = [rbp-234h](index) → rax = [rbp-258h](buffer) → rax += rdx(index) → 读取字节
        current_char = char_buffer[index]
        print(f"处理索引 {index},字符:{chr(current_char) if 32<=current_char<=126 else hex(current_char)}")
​
        # 3. 字符分支处理(对应汇编 loc_1969 后的字符比较与跳转)
        if current_char == ord('l'):
            # 分支1:'l' → x++(对应汇编 loc_19BD:add [rbp-238h], 1)
            x += 1
            print(f"→ 字符为 'l',x 自增为 {x}")
​
        else:
            if current_char > ord('l'):
                # 分支2:字符 > 'l' → 结果设为False(对应汇编 loc_19C6:mov [rbp-24Ah], 0)
                result = False
                print(f"→ 字符 > 'l',设结果为失败(False)")
​
            else:
                # 分支3:字符 <= 'l' → switch 分支(对应汇编 cmp 'k'/'h'/'j')
                if current_char == ord('k'):
                    # 'k' → y--(对应汇编 loc_19B4:sub [rbp-23Ch], 1)
                    y -= 1
                    print(f"→ 字符为 'k',y 自减为 {y}")
                elif current_char == ord('h'):
                    # 'h' → x--(对应汇编 loc_19A2:sub [rbp-238h], 1)
                    x -= 1
                    print(f"→ 字符为 'h',x 自减为 {x}")
                elif current_char == ord('j'):
                    # 'j' → y++(对应汇编 loc_19AB:add [rbp-23Ch], 1)
                    y += 1
                    print(f"→ 字符为 'j',y 自增为 {y}")
                else:
                    # 其他字符 → 结果设为False(对应汇编 loc_19C6)
                    result = False
                    print(f"→ 无效字符,设结果为失败(False)")
​
        # --------------------------
        # 退出条件判断(对应汇编 loc_19CE 后的逻辑)
        # 条件:sub_1A38(y, x) 返回False + y == 30 + x == 30 → 设result=True并退出
        # --------------------------
        # 模拟 sub_1A38 函数(汇编未提供实现,假设功能:检查x/y非负,返回True=有效,False=无效)
        def sub_1A38(y_val: int, x_val: int) -> bool:
            return x_val >= 0 and y_val >= 0  # 合理推测:避免计数器为负
​
        # 检查退出条件
        if not sub_1A38(y, x) and (y == 30) and (x == 30):
            result = True
            print(f"→ 满足退出条件(x={x}, y={y}),设结果为成功(True)")
            break  # 跳出循环
​
        # 索引自增(对应汇编 loc_1A02:add [rbp-234h], 1)
        index += 1
​
    # 循环结束,返回结果(对应汇编 loc_1A1B 后的返回逻辑)
    return result
​
​
# --------------------------
# 脚本使用示例
# --------------------------
if __name__ == "__main__":
    # 示例1:构造一个满足条件的字符序列(需确保x和y最终达到30,且sub_1A38返回False)
    # 逻辑:初始x=1, y=1 → 需要x增加29次,y增加29次 → 29个'l'(x+29) + 29个'j'(y+29)
    test_buffer = b'l' * 29 + b'j' * 29
    buffer_len = len(test_buffer)
    
    # 调用模拟函数
    result = simulate_sub_1923(test_buffer, buffer_len)
    print(f"\n最终结果:{'成功' if result else '失败'}")
​
    # 示例2:无效字符测试(包含 'm',大于 'l')
    test_buffer_invalid = b'lhjkm'
    buffer_len_invalid = len(test_buffer_invalid)
    result_invalid = simulate_sub_1923(test_buffer_invalid, buffer_len_invalid)
    print(f"\n无效字符测试最终结果:{'成功' if result_invalid else '失败'}")

(1,1)->(30,30)

于是直接使用脚本解密

#!/usr/bin/env python
​
from pwn import *
import os
from threading import Thread
​
venv_path = f"{os.getcwd()}/venv"
os.environ["PATH"] = f"{venv_path}/bin:" + os.environ["PATH"]
os.environ["PYTHONPATH"] = f"{venv_path}/lib/python3.13/site-packages"
​
def maze_walk(maze_path:str):
    context.terminal = ["/usr/bin/bash", "-c"]
    maze_len = 0
    maze_win = False
​
    gdbscript = f"""
set logging file log.log
set logging enable on
​
python
mappings_output = gdb.execute("info proc mappings", to_string=True)
line = mappings_output.strip().split('\\n')[4]
base = int(line.split()[0], 16)
print(hex(base))
gdb.set_convenience_variable('base', base)
end
​
hbreak *($base+0x19E3)
commands
    call (void)printf(\"[GDB] %d\\n\", $rax)
    if $rax == 1
        kill
        quit
    else
        continue
    end
end
continue
continue
    """
​
    p = gdb.debug("./AWayOut2", gdbscript=gdbscript)
​
    p.sendline(maze_path)
​
    maze_len = 1
    for line in p.recvall().decode().split("\n"):
        if ("[GDB] 0" in line):
            maze_len += 1
        if ("you found the best way!" in line):
            maze_win = True
        if ("plz try again!" in line):
            maze_win = False
​
    print(maze_path, maze_len)
    return (maze_len, maze_win)
​
def maze_dfs(x, y, maze_len, maze_path:str, maze_walked:set, dfs_ret:list):
    print(f"{maze_len} {maze_path}")
    maze_walked.add((x, y))
​
    if (maze_len > 120):
        return
​
    if (len(maze_path) != 0):
        new_len, win = maze_walk(maze_path)
        if (win == True):
            dfs_ret.append(maze_path)
            return
        if (new_len != maze_len):
            return
​
    threads = [None for _ in range(4)]
​
    if ((x-1, y) not in maze_walked):
        new_path = maze_path + "h"
        new_walked = set()
        for tmp_x, tmp_y in maze_walked:
            new_walked.add((tmp_x, tmp_y))
        threads[0] = Thread(target=maze_dfs, args=[x-1, y, maze_len+1, new_path, new_walked, dfs_ret])
        threads[0].start()
​
    if ((x, y+1) not in maze_walked):
        new_path = maze_path + "j"
        new_walked = set()
        for tmp_x, tmp_y in maze_walked:
            new_walked.add((tmp_x, tmp_y))
        threads[1] = Thread(target=maze_dfs, args=[x, y+1, maze_len+1, new_path, new_walked, dfs_ret])
        threads[1].start()
​
    if ((x, y-1) not in maze_walked):
        new_path = maze_path + "k"
        new_walked = set()
        for tmp_x, tmp_y in maze_walked:
            new_walked.add((tmp_x, tmp_y))
        threads[2] = Thread(target=maze_dfs, args=[x, y-1, maze_len+1, new_path, new_walked, dfs_ret])
        threads[2].start()
​
    if ((x+1, y) not in maze_walked):
        new_path = maze_path + "l"
        new_walked = set()
        for tmp_x, tmp_y in maze_walked:
            new_walked.add((tmp_x, tmp_y))
        threads[3] = Thread(target=maze_dfs, args=[x+1, y, maze_len+1, new_path, new_walked, dfs_ret])
        threads[3].start()
​
    for thread in threads:
        if (thread != None):
            thread.join()
​
    return
​
maze_ret = []
maze_dfs(1, 1, 1, "", set(), maze_ret)
print(f"[right path] {maze_ret}")

snake

先使用gostringungarbler反混淆,然后再将反混淆的程序丢入IDA和dbg。

在dbg中BBBB2C处的jg给nop掉

再将这里的jne改为je

ez_android

用jadx看逻辑,发现用到了本地,然后使用IDA去dump下来html的brotli字节,然后解压

(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function s(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(r){if(r.ep)return;r.ep=!0;const i=s(r);fetch(r.href,i)}})();/**
* @vue/shared v3.5.17
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**//*! #__NO_SIDE_EFFECTS__ */function Ts(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const j={},Ze=[],xe=()=>{},Mr=()=>!1,Vt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Cs=e=>e.startsWith("onUpdate:"),Z=Object.assign,Es=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Rr=Object.prototype.hasOwnProperty,H=(e,t)=>Rr.call(e,t),P=Array.isArray,Qe=e=>Bt(e)==="[object Map]",En=e=>Bt(e)==="[object Set]",M=e=>typeof e=="function",J=e=>typeof e=="string",Ne=e=>typeof e=="symbol",q=e=>e!==null&&typeof e=="object",On=e=>(q(e)||M(e))&&M(e.then)&&M(e.catch),An=Object.prototype.toString,Bt=e=>An.call(e),Ir=e=>Bt(e).slice(8,-1),Pn=e=>Bt(e)==="[object Object]",Os=e=>J(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ut=Ts(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Wt=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},Fr=/-(\w)/g,He=Wt(e=>e.replace(Fr,(t,s)=>s?s.toUpperCase():"")),Dr=/\B([A-Z])/g,Je=Wt(e=>e.replace(Dr,"-$1").toLowerCase()),Mn=Wt(e=>e.charAt(0).toUpperCase()+e.slice(1)),kt=Wt(e=>e?`on${Mn(e)}`:""),De=(e,t)=>!Object.is(e,t),Ft=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},as=(e,t,s,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},ds=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let zs;const qt=()=>zs||(zs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function As(e){if(P(e)){const t={};for(let s=0;s<e.length;s++){const n=e[s],r=J(n)?jr(n):As(n);if(r)for(const i in r)t[i]=r[i]}return t}else if(J(e)||q(e))return e}const Hr=/;(?![^(]*\))/g,Nr=/:([^]+)/,Lr=/\/\*[^]*?\*\//g;function jr(e){const t={};return e.replace(Lr,"").split(Hr).forEach(s=>{if(s){const n=s.split(Nr);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Ps(e){let t="";if(J(e))t=e;else if(P(e))for(let s=0;s<e.length;s++){const n=Ps(e[s]);n&&(t+=n+" ")}else if(q(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const $r="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Ur=Ts($r);function Rn(e){return!!e||e===""}const In=e=>!!(e&&e.__v_isRef===!0),Fn=e=>J(e)?e:e==null?"":P(e)||q(e)&&(e.toString===An||!M(e.toString))?In(e)?Fn(e.value):JSON.stringify(e,Dn,2):String(e),Dn=(e,t)=>In(t)?Dn(e,t.value):Qe(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,r],i)=>(s[es(n,i)+" =>"]=r,s),{})}:En(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>es(s))}:Ne(t)?es(t):q(t)&&!P(t)&&!Pn(t)?String(t):t,es=(e,t="")=>{var s;return Ne(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/**
* @vue/reactivity v3.5.17
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/let ie;class Kr{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=ie,!t&&ie&&(this.index=(ie.scopes||(ie.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].pause();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].resume();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].resume()}}run(t){if(this._active){const s=ie;try{return ie=this,t()}finally{ie=s}}}on(){++this._on===1&&(this.prevScope=ie,ie=this)}off(){this._on>0&&--this._on===0&&(ie=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s<n;s++)this.effects[s].stop();for(this.effects.length=0,s=0,n=this.cleanups.length;s<n;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){for(s=0,n=this.scopes.length;s<n;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function Vr(){return ie}let K;const ts=new WeakSet;class Hn{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,ie&&ie.active&&ie.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,ts.has(this)&&(ts.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Ln(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Xs(this),jn(this);const t=K,s=ue;K=this,ue=!0;try{return this.fn()}finally{$n(this),K=t,ue=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Is(t);this.deps=this.depsTail=void 0,Xs(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?ts.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){hs(this)&&this.run()}get dirty(){return hs(this)}}let Nn=0,at,dt;function Ln(e,t=!1){if(e.flags|=8,t){e.next=dt,dt=e;return}e.next=at,at=e}function Ms(){Nn++}function Rs(){if(--Nn>0)return;if(dt){let t=dt;for(dt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;at;){let t=at;for(at=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function jn(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function $n(e){let t,s=e.depsTail,n=s;for(;n;){const r=n.prevDep;n.version===-1?(n===s&&(s=r),Is(n),Br(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=r}e.deps=t,e.depsTail=s}function hs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Un(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Un(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===bt)||(e.globalVersion=bt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!hs(e))))return;e.flags|=2;const t=e.dep,s=K,n=ue;K=e,ue=!0;try{jn(e);const r=e.fn(e._value);(t.version===0||De(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{K=s,ue=n,$n(e),e.flags&=-3}}function Is(e,t=!1){const{dep:s,prevSub:n,nextSub:r}=e;if(n&&(n.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let i=s.computed.deps;i;i=i.nextDep)Is(i,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Br(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let ue=!0;const Kn=[];function Oe(){Kn.push(ue),ue=!1}function Ae(){const e=Kn.pop();ue=e===void 0?!0:e}function Xs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=K;K=void 0;try{t()}finally{K=s}}}let bt=0;class Wr{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Fs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!K||!ue||K===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==K)s=this.activeLink=new Wr(K,this),K.deps?(s.prevDep=K.depsTail,K.depsTail.nextDep=s,K.depsTail=s):K.deps=K.depsTail=s,Vn(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=K.depsTail,s.nextDep=void 0,K.depsTail.nextDep=s,K.depsTail=s,K.deps===s&&(K.deps=n)}return s}trigger(t){this.version++,bt++,this.notify(t)}notify(t){Ms();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Rs()}}}function Vn(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)Vn(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const ps=new WeakMap,We=Symbol(""),gs=Symbol(""),yt=Symbol("");function z(e,t,s){if(ue&&K){let n=ps.get(e);n||ps.set(e,n=new Map);let r=n.get(s);r||(n.set(s,r=new Fs),r.map=n,r.key=s),r.track()}}function Ce(e,t,s,n,r,i){const o=ps.get(e);if(!o){bt++;return}const f=u=>{u&&u.trigger()};if(Ms(),t==="clear")o.forEach(f);else{const u=P(e),h=u&&Os(s);if(u&&s==="length"){const a=Number(n);o.forEach((p,w)=>{(w==="length"||w===yt||!Ne(w)&&w>=a)&&f(p)})}else switch((s!==void 0||o.has(void 0))&&f(o.get(s)),h&&f(o.get(yt)),t){case"add":u?h&&f(o.get("length")):(f(o.get(We)),Qe(e)&&f(o.get(gs)));break;case"delete":u||(f(o.get(We)),Qe(e)&&f(o.get(gs)));break;case"set":Qe(e)&&f(o.get(We));break}}Rs()}function Ye(e){const t=D(e);return t===e?t:(z(t,"iterate",yt),ae(e)?t:t.map(ee))}function Ds(e){return z(e=D(e),"iterate",yt),e}const qr={__proto__:null,[Symbol.iterator](){return ss(this,Symbol.iterator,ee)},concat(...e){return Ye(this).concat(...e.map(t=>P(t)?Ye(t):t))},entries(){return ss(this,"entries",e=>(e[1]=ee(e[1]),e))},every(e,t){return Se(this,"every",e,t,void 0,arguments)},filter(e,t){return Se(this,"filter",e,t,s=>s.map(ee),arguments)},find(e,t){return Se(this,"find",e,t,ee,arguments)},findIndex(e,t){return Se(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Se(this,"findLast",e,t,ee,arguments)},findLastIndex(e,t){return Se(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Se(this,"forEach",e,t,void 0,arguments)},includes(...e){return ns(this,"includes",e)},indexOf(...e){return ns(this,"indexOf",e)},join(e){return Ye(this).join(e)},lastIndexOf(...e){return ns(this,"lastIndexOf",e)},map(e,t){return Se(this,"map",e,t,void 0,arguments)},pop(){return lt(this,"pop")},push(...e){return lt(this,"push",e)},reduce(e,...t){return Zs(this,"reduce",e,t)},reduceRight(e,...t){return Zs(this,"reduceRight",e,t)},shift(){return lt(this,"shift")},some(e,t){return Se(this,"some",e,t,void 0,arguments)},splice(...e){return lt(this,"splice",e)},toReversed(){return Ye(this).toReversed()},toSorted(e){return Ye(this).toSorted(e)},toSpliced(...e){return Ye(this).toSpliced(...e)},unshift(...e){return lt(this,"unshift",e)},values(){return ss(this,"values",ee)}};function ss(e,t,s){const n=Ds(e),r=n[t]();return n!==e&&!ae(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=s(i.value)),i}),r}const Gr=Array.prototype;function Se(e,t,s,n,r,i){const o=Ds(e),f=o!==e&&!ae(e),u=o[t];if(u!==Gr[t]){const p=u.apply(e,i);return f?ee(p):p}let h=s;o!==e&&(f?h=function(p,w){return s.call(this,ee(p),w,e)}:s.length>2&&(h=function(p,w){return s.call(this,p,w,e)}));const a=u.call(o,h,n);return f&&r?r(a):a}function Zs(e,t,s,n){const r=Ds(e);let i=s;return r!==e&&(ae(e)?s.length>3&&(i=function(o,f,u){return s.call(this,o,f,u,e)}):i=function(o,f,u){return s.call(this,o,ee(f),u,e)}),r[t](i,...n)}function ns(e,t,s){const n=D(e);z(n,"iterate",yt);const r=n[t](...s);return(r===-1||r===!1)&&js(s[0])?(s[0]=D(s[0]),n[t](...s)):r}function lt(e,t,s=[]){Oe(),Ms();const n=D(e)[t].apply(e,s);return Rs(),Ae(),n}const Jr=Ts("__proto__,__v_isRef,__isVue"),Bn=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ne));function Yr(e){Ne(e)||(e=String(e));const t=D(this);return z(t,"has",e),t.hasOwnProperty(e)}class Wn{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(s==="__v_isReactive")return!r;if(s==="__v_isReadonly")return r;if(s==="__v_isShallow")return i;if(s==="__v_raw")return n===(r?i?ri:Yn:i?Jn:Gn).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=P(t);if(!r){let u;if(o&&(u=qr[s]))return u;if(s==="hasOwnProperty")return Yr}const f=Reflect.get(t,s,X(t)?t:n);return(Ne(s)?Bn.has(s):Jr(s))||(r||z(t,"get",s),i)?f:X(f)?o&&Os(s)?f:f.value:q(f)?r?zn(f):Ns(f):f}}class qn extends Wn{constructor(t=!1){super(!1,t)}set(t,s,n,r){let i=t[s];if(!this._isShallow){const u=Ge(i);if(!ae(n)&&!Ge(n)&&(i=D(i),n=D(n)),!P(t)&&X(i)&&!X(n))return u?!1:(i.value=n,!0)}const o=P(t)&&Os(s)?Number(s)<t.length:H(t,s),f=Reflect.set(t,s,n,X(t)?t:r);return t===D(r)&&(o?De(n,i)&&Ce(t,"set",s,n):Ce(t,"add",s,n)),f}deleteProperty(t,s){const n=H(t,s);t[s];const r=Reflect.deleteProperty(t,s);return r&&n&&Ce(t,"delete",s,void 0),r}has(t,s){const n=Reflect.has(t,s);return(!Ne(s)||!Bn.has(s))&&z(t,"has",s),n}ownKeys(t){return z(t,"iterate",P(t)?"length":We),Reflect.ownKeys(t)}}class zr extends Wn{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const Xr=new qn,Zr=new zr,Qr=new qn(!0);const ms=e=>e,Mt=e=>Reflect.getPrototypeOf(e);function kr(e,t,s){return function(...n){const r=this.__v_raw,i=D(r),o=Qe(i),f=e==="entries"||e===Symbol.iterator&&o,u=e==="keys"&&o,h=r[e](...n),a=s?ms:t?_s:ee;return!t&&z(i,"iterate",u?gs:We),{next(){const{value:p,done:w}=h.next();return w?{value:p,done:w}:{value:f?[a(p[0]),a(p[1])]:a(p),done:w}},[Symbol.iterator](){return this}}}}function Rt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function ei(e,t){const s={get(r){const i=this.__v_raw,o=D(i),f=D(r);e||(De(r,f)&&z(o,"get",r),z(o,"get",f));const{has:u}=Mt(o),h=t?ms:e?_s:ee;if(u.call(o,r))return h(i.get(r));if(u.call(o,f))return h(i.get(f));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&z(D(r),"iterate",We),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=D(i),f=D(r);return e||(De(r,f)&&z(o,"has",r),z(o,"has",f)),r===f?i.has(r):i.has(r)||i.has(f)},forEach(r,i){const o=this,f=o.__v_raw,u=D(f),h=t?ms:e?_s:ee;return!e&&z(u,"iterate",We),f.forEach((a,p)=>r.call(i,h(a),h(p),o))}};return Z(s,e?{add:Rt("add"),set:Rt("set"),delete:Rt("delete"),clear:Rt("clear")}:{add(r){!t&&!ae(r)&&!Ge(r)&&(r=D(r));const i=D(this);return Mt(i).has.call(i,r)||(i.add(r),Ce(i,"add",r,r)),this},set(r,i){!t&&!ae(i)&&!Ge(i)&&(i=D(i));const o=D(this),{has:f,get:u}=Mt(o);let h=f.call(o,r);h||(r=D(r),h=f.call(o,r));const a=u.call(o,r);return o.set(r,i),h?De(i,a)&&Ce(o,"set",r,i):Ce(o,"add",r,i),this},delete(r){const i=D(this),{has:o,get:f}=Mt(i);let u=o.call(i,r);u||(r=D(r),u=o.call(i,r)),f&&f.call(i,r);const h=i.delete(r);return u&&Ce(i,"delete",r,void 0),h},clear(){const r=D(this),i=r.size!==0,o=r.clear();return i&&Ce(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{s[r]=kr(r,e,t)}),s}function Hs(e,t){const s=ei(e,t);return(n,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?n:Reflect.get(H(s,r)&&r in n?s:n,r,i)}const ti={get:Hs(!1,!1)},si={get:Hs(!1,!0)},ni={get:Hs(!0,!1)};const Gn=new WeakMap,Jn=new WeakMap,Yn=new WeakMap,ri=new WeakMap;function ii(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function oi(e){return e.__v_skip||!Object.isExtensible(e)?0:ii(Ir(e))}function Ns(e){return Ge(e)?e:Ls(e,!1,Xr,ti,Gn)}function li(e){return Ls(e,!1,Qr,si,Jn)}function zn(e){return Ls(e,!0,Zr,ni,Yn)}function Ls(e,t,s,n,r){if(!q(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=oi(e);if(i===0)return e;const o=r.get(e);if(o)return o;const f=new Proxy(e,i===2?n:s);return r.set(e,f),f}function ht(e){return Ge(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function Ge(e){return!!(e&&e.__v_isReadonly)}function ae(e){return!!(e&&e.__v_isShallow)}function js(e){return e?!!e.__v_raw:!1}function D(e){const t=e&&e.__v_raw;return t?D(t):e}function fi(e){return!H(e,"__v_skip")&&Object.isExtensible(e)&&as(e,"__v_skip",!0),e}const ee=e=>q(e)?Ns(e):e,_s=e=>q(e)?zn(e):e;function X(e){return e?e.__v_isRef===!0:!1}function Qs(e){return ci(e,!1)}function ci(e,t){return X(e)?e:new ui(e,t)}class ui{constructor(t,s){this.dep=new Fs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:D(t),this._value=s?t:ee(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||ae(t)||Ge(t);t=n?t:D(t),De(t,s)&&(this._rawValue=t,this._value=n?t:ee(t),this.dep.trigger())}}function ai(e){return X(e)?e.value:e}const di={get:(e,t,s)=>t==="__v_raw"?e:ai(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const r=e[t];return X(r)&&!X(s)?(r.value=s,!0):Reflect.set(e,t,s,n)}};function Xn(e){return ht(e)?e:new Proxy(e,di)}class hi{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new Fs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=bt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&K!==this)return Ln(this,!0),!0}get value(){const t=this.dep.track();return Un(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function pi(e,t,s=!1){let n,r;return M(e)?n=e:(n=e.get,r=e.set),new hi(n,r,s)}const It={},Lt=new WeakMap;let Ve;function gi(e,t=!1,s=Ve){if(s){let n=Lt.get(s);n||Lt.set(s,n=[]),n.push(e)}}function mi(e,t,s=j){const{immediate:n,deep:r,once:i,scheduler:o,augmentJob:f,call:u}=s,h=O=>r?O:ae(O)||r===!1||r===0?Ee(O,1):Ee(O);let a,p,w,T,F=!1,I=!1;if(X(e)?(p=()=>e.value,F=ae(e)):ht(e)?(p=()=>h(e),F=!0):P(e)?(I=!0,F=e.some(O=>ht(O)||ae(O)),p=()=>e.map(O=>{if(X(O))return O.value;if(ht(O))return h(O);if(M(O))return u?u(O,2):O()})):M(e)?t?p=u?()=>u(e,2):e:p=()=>{if(w){Oe();try{w()}finally{Ae()}}const O=Ve;Ve=a;try{return u?u(e,3,[T]):e(T)}finally{Ve=O}}:p=xe,t&&r){const O=p,G=r===!0?1/0:r;p=()=>Ee(O(),G)}const Y=Vr(),L=()=>{a.stop(),Y&&Y.active&&Es(Y.effects,a)};if(i&&t){const O=t;t=(...G)=>{O(...G),L()}}let B=I?new Array(e.length).fill(It):It;const W=O=>{if(!(!(a.flags&1)||!a.dirty&&!O))if(t){const G=a.run();if(r||F||(I?G.some((Me,de)=>De(Me,B[de])):De(G,B))){w&&w();const Me=Ve;Ve=a;try{const de=[G,B===It?void 0:I&&B[0]===It?[]:B,T];B=G,u?u(t,3,de):t(...de)}finally{Ve=Me}}}else a.run()};return f&&f(W),a=new Hn(p),a.scheduler=o?()=>o(W,!1):W,T=O=>gi(O,!1,a),w=a.onStop=()=>{const O=Lt.get(a);if(O){if(u)u(O,4);else for(const G of O)G();Lt.delete(a)}},t?n?W(!0):B=a.run():o?o(W.bind(null,!0),!0):a.run(),L.pause=a.pause.bind(a),L.resume=a.resume.bind(a),L.stop=L,L}function Ee(e,t=1/0,s){if(t<=0||!q(e)||e.__v_skip||(s=s||new Set,s.has(e)))return e;if(s.add(e),t--,X(e))Ee(e.value,t,s);else if(P(e))for(let n=0;n<e.length;n++)Ee(e[n],t,s);else if(En(e)||Qe(e))e.forEach(n=>{Ee(n,t,s)});else if(Pn(e)){for(const n in e)Ee(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&Ee(e[n],t,s)}return e}/**
* @vue/runtime-core v3.5.17
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/function wt(e,t,s,n){try{return n?e(...n):e()}catch(r){Gt(r,t,s)}}function ve(e,t,s,n){if(M(e)){const r=wt(e,t,s,n);return r&&On(r)&&r.catch(i=>{Gt(i,t,s)}),r}if(P(e)){const r=[];for(let i=0;i<e.length;i++)r.push(ve(e[i],t,s,n));return r}}function Gt(e,t,s,n=!0){const r=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:o}=t&&t.appContext.config||j;if(t){let f=t.parent;const u=t.proxy,h=`https://vuejs.org/error-reference/#runtime-${s}`;for(;f;){const a=f.ec;if(a){for(let p=0;p<a.length;p++)if(a[p](e,u,h)===!1)return}f=f.parent}if(i){Oe(),wt(i,null,10,[e,u,h]),Ae();return}}_i(e,s,r,n,o)}function _i(e,t,s,n=!0,r=!1){if(r)throw e;console.error(e)}const te=[];let be=-1;const ke=[];let Ie=null,ze=0;const Zn=Promise.resolve();let jt=null;function bi(e){const t=jt||Zn;return e?t.then(this?e.bind(this):e):t}function yi(e){let t=be+1,s=te.length;for(;t<s;){const n=t+s>>>1,r=te[n],i=xt(r);i<e||i===e&&r.flags&2?t=n+1:s=n}return t}function $s(e){if(!(e.flags&1)){const t=xt(e),s=te[te.length-1];!s||!(e.flags&2)&&t>=xt(s)?te.push(e):te.splice(yi(t),0,e),e.flags|=1,Qn()}}function Qn(){jt||(jt=Zn.then(er))}function xi(e){P(e)?ke.push(...e):Ie&&e.id===-1?Ie.splice(ze+1,0,e):e.flags&1||(ke.push(e),e.flags|=1),Qn()}function ks(e,t,s=be+1){for(;s<te.length;s++){const n=te[s];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;te.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function kn(e){if(ke.length){const t=[...new Set(ke)].sort((s,n)=>xt(s)-xt(n));if(ke.length=0,Ie){Ie.push(...t);return}for(Ie=t,ze=0;ze<Ie.length;ze++){const s=Ie[ze];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}Ie=null,ze=0}}const xt=e=>e.id==null?e.flags&2?-1:1/0:e.id;function er(e){try{for(be=0;be<te.length;be++){const t=te[be];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),wt(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;be<te.length;be++){const t=te[be];t&&(t.flags&=-2)}be=-1,te.length=0,kn(),jt=null,(te.length||ke.length)&&er()}}let ce=null,tr=null;function $t(e){const t=ce;return ce=e,tr=e&&e.type.__scopeId||null,t}function vi(e,t=ce,s){if(!t||e._n)return e;const n=(...r)=>{n._d&&cn(-1);const i=$t(t);let o;try{o=e(...r)}finally{$t(i),n._d&&cn(1)}return o};return n._n=!0,n._c=!0,n._d=!0,n}function Si(e,t){if(ce===null)return e;const s=Xt(ce),n=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[i,o,f,u=j]=t[r];i&&(M(i)&&(i={mounted:i,updated:i}),i.deep&&Ee(o),n.push({dir:i,instance:s,value:o,oldValue:void 0,arg:f,modifiers:u}))}return e}function Ue(e,t,s,n){const r=e.dirs,i=t&&t.dirs;for(let o=0;o<r.length;o++){const f=r[o];i&&(f.oldValue=i[o].value);let u=f.dir[n];u&&(Oe(),ve(u,s,8,[e.el,f,e,t]),Ae())}}const wi=Symbol("_vte"),Ti=e=>e.__isTeleport;function Us(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Us(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}/*! #__NO_SIDE_EFFECTS__ */function Ci(e,t){return M(e)?Z({name:e.name},t,{setup:e}):e}function sr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function pt(e,t,s,n,r=!1){if(P(e)){e.forEach((F,I)=>pt(F,t&&(P(t)?t[I]:t),s,n,r));return}if(gt(n)&&!r){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&pt(e,t,s,n.component.subTree);return}const i=n.shapeFlag&4?Xt(n.component):n.el,o=r?null:i,{i:f,r:u}=e,h=t&&t.r,a=f.refs===j?f.refs={}:f.refs,p=f.setupState,w=D(p),T=p===j?()=>!1:F=>H(w,F);if(h!=null&&h!==u&&(J(h)?(a[h]=null,T(h)&&(p[h]=null)):X(h)&&(h.value=null)),M(u))wt(u,f,12,[o,a]);else{const F=J(u),I=X(u);if(F||I){const Y=()=>{if(e.f){const L=F?T(u)?p[u]:a[u]:u.value;r?P(L)&&Es(L,i):P(L)?L.includes(i)||L.push(i):F?(a[u]=[i],T(u)&&(p[u]=a[u])):(u.value=[i],e.k&&(a[e.k]=u.value))}else F?(a[u]=o,T(u)&&(p[u]=o)):I&&(u.value=o,e.k&&(a[e.k]=o))};o?(Y.id=-1,le(Y,s)):Y()}}}qt().requestIdleCallback;qt().cancelIdleCallback;const gt=e=>!!e.type.__asyncLoader,nr=e=>e.type.__isKeepAlive;function Ei(e,t){rr(e,"a",t)}function Oi(e,t){rr(e,"da",t)}function rr(e,t,s=se){const n=e.__wdc||(e.__wdc=()=>{let r=s;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Jt(t,n,s),s){let r=s.parent;for(;r&&r.parent;)nr(r.parent.vnode)&&Ai(n,t,s,r),r=r.parent}}function Ai(e,t,s,n){const r=Jt(t,e,n,!0);ir(()=>{Es(n[t],r)},s)}function Jt(e,t,s=se,n=!1){if(s){const r=s[e]||(s[e]=[]),i=t.__weh||(t.__weh=(...o)=>{Oe();const f=Tt(s),u=ve(t,s,e,o);return f(),Ae(),u});return n?r.unshift(i):r.push(i),i}}const Pe=e=>(t,s=se)=>{(!St||e==="sp")&&Jt(e,(...n)=>t(...n),s)},Pi=Pe("bm"),Mi=Pe("m"),Ri=Pe("bu"),Ii=Pe("u"),Fi=Pe("bum"),ir=Pe("um"),Di=Pe("sp"),Hi=Pe("rtg"),Ni=Pe("rtc");function Li(e,t=se){Jt("ec",e,t)}const ji=Symbol.for("v-ndc"),bs=e=>e?Cr(e)?Xt(e):bs(e.parent):null,mt=Z(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>bs(e.parent),$root:e=>bs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>lr(e),$forceUpdate:e=>e.f||(e.f=()=>{$s(e.update)}),$nextTick:e=>e.n||(e.n=bi.bind(e.proxy)),$watch:e=>oo.bind(e)}),rs=(e,t)=>e!==j&&!e.__isScriptSetup&&H(e,t),$i={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:r,props:i,accessCache:o,type:f,appContext:u}=e;let h;if(t[0]!=="$"){const T=o[t];if(T!==void 0)switch(T){case 1:return n[t];case 2:return r[t];case 4:return s[t];case 3:return i[t]}else{if(rs(n,t))return o[t]=1,n[t];if(r!==j&&H(r,t))return o[t]=2,r[t];if((h=e.propsOptions[0])&&H(h,t))return o[t]=3,i[t];if(s!==j&&H(s,t))return o[t]=4,s[t];ys&&(o[t]=0)}}const a=mt[t];let p,w;if(a)return t==="$attrs"&&z(e.attrs,"get",""),a(e);if((p=f.__cssModules)&&(p=p[t]))return p;if(s!==j&&H(s,t))return o[t]=4,s[t];if(w=u.config.globalProperties,H(w,t))return w[t]},set({_:e},t,s){const{data:n,setupState:r,ctx:i}=e;return rs(r,t)?(r[t]=s,!0):n!==j&&H(n,t)?(n[t]=s,!0):H(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:r,propsOptions:i}},o){let f;return!!s[o]||e!==j&&H(e,o)||rs(t,o)||(f=i[0])&&H(f,o)||H(n,o)||H(mt,o)||H(r.config.globalProperties,o)},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:H(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function en(e){return P(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let ys=!0;function Ui(e){const t=lr(e),s=e.proxy,n=e.ctx;ys=!1,t.beforeCreate&&tn(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:f,provide:u,inject:h,created:a,beforeMount:p,mounted:w,beforeUpdate:T,updated:F,activated:I,deactivated:Y,beforeDestroy:L,beforeUnmount:B,destroyed:W,unmounted:O,render:G,renderTracked:Me,renderTriggered:de,errorCaptured:Re,serverPrefetch:Ct,expose:Le,inheritAttrs:nt,components:Et,directives:Ot,filters:Zt}=t;if(h&&Ki(h,n,null),o)for(const V in o){const $=o[V];M($)&&(n[V]=$.bind(s))}if(r){const V=r.call(s,s);q(V)&&(e.data=Ns(V))}if(ys=!0,i)for(const V in i){const $=i[V],je=M($)?$.bind(s,s):M($.get)?$.get.bind(s,s):xe,At=!M($)&&M($.set)?$.set.bind(s):xe,$e=Ro({get:je,set:At});Object.defineProperty(n,V,{enumerable:!0,configurable:!0,get:()=>$e.value,set:he=>$e.value=he})}if(f)for(const V in f)or(f[V],n,s,V);if(u){const V=M(u)?u.call(s):u;Reflect.ownKeys(V).forEach($=>{Ji($,V[$])})}a&&tn(a,e,"c");function Q(V,$){P($)?$.forEach(je=>V(je.bind(s))):$&&V($.bind(s))}if(Q(Pi,p),Q(Mi,w),Q(Ri,T),Q(Ii,F),Q(Ei,I),Q(Oi,Y),Q(Li,Re),Q(Ni,Me),Q(Hi,de),Q(Fi,B),Q(ir,O),Q(Di,Ct),P(Le))if(Le.length){const V=e.exposed||(e.exposed={});Le.forEach($=>{Object.defineProperty(V,$,{get:()=>s[$],set:je=>s[$]=je})})}else e.exposed||(e.exposed={});G&&e.render===xe&&(e.render=G),nt!=null&&(e.inheritAttrs=nt),Et&&(e.components=Et),Ot&&(e.directives=Ot),Ct&&sr(e)}function Ki(e,t,s=xe){P(e)&&(e=xs(e));for(const n in e){const r=e[n];let i;q(r)?"default"in r?i=Dt(r.from||n,r.default,!0):i=Dt(r.from||n):i=Dt(r),X(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[n]=i}}function tn(e,t,s){ve(P(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function or(e,t,s,n){let r=n.includes(".")?xr(s,n):()=>s[n];if(J(e)){const i=t[e];M(i)&&os(r,i)}else if(M(e))os(r,e.bind(s));else if(q(e))if(P(e))e.forEach(i=>or(i,t,s,n));else{const i=M(e.handler)?e.handler.bind(s):t[e.handler];M(i)&&os(r,i,e)}}function lr(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,f=i.get(t);let u;return f?u=f:!r.length&&!s&&!n?u=t:(u={},r.length&&r.forEach(h=>Ut(u,h,o,!0)),Ut(u,t,o)),q(t)&&i.set(t,u),u}function Ut(e,t,s,n=!1){const{mixins:r,extends:i}=t;i&&Ut(e,i,s,!0),r&&r.forEach(o=>Ut(e,o,s,!0));for(const o in t)if(!(n&&o==="expose")){const f=Vi[o]||s&&s[o];e[o]=f?f(e[o],t[o]):t[o]}return e}const Vi={data:sn,props:nn,emits:nn,methods:ct,computed:ct,beforeCreate:k,created:k,beforeMount:k,mounted:k,beforeUpdate:k,updated:k,beforeDestroy:k,beforeUnmount:k,destroyed:k,unmounted:k,activated:k,deactivated:k,errorCaptured:k,serverPrefetch:k,components:ct,directives:ct,watch:Wi,provide:sn,inject:Bi};function sn(e,t){return t?e?function(){return Z(M(e)?e.call(this,this):e,M(t)?t.call(this,this):t)}:t:e}function Bi(e,t){return ct(xs(e),xs(t))}function xs(e){if(P(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function k(e,t){return e?[...new Set([].concat(e,t))]:t}function ct(e,t){return e?Z(Object.create(null),e,t):t}function nn(e,t){return e?P(e)&&P(t)?[...new Set([...e,...t])]:Z(Object.create(null),en(e),en(t??{})):t}function Wi(e,t){if(!e)return t;if(!t)return e;const s=Z(Object.create(null),e);for(const n in t)s[n]=k(e[n],t[n]);return s}function fr(){return{app:null,config:{isNativeTag:Mr,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let qi=0;function Gi(e,t){return function(n,r=null){M(n)||(n=Z({},n)),r!=null&&!q(r)&&(r=null);const i=fr(),o=new WeakSet,f=[];let u=!1;const h=i.app={_uid:qi++,_component:n,_props:r,_container:null,_context:i,_instance:null,version:Io,get config(){return i.config},set config(a){},use(a,...p){return o.has(a)||(a&&M(a.install)?(o.add(a),a.install(h,...p)):M(a)&&(o.add(a),a(h,...p))),h},mixin(a){return i.mixins.includes(a)||i.mixins.push(a),h},component(a,p){return p?(i.components[a]=p,h):i.components[a]},directive(a,p){return p?(i.directives[a]=p,h):i.directives[a]},mount(a,p,w){if(!u){const T=h._ceVNode||qe(n,r);return T.appContext=i,w===!0?w="svg":w===!1&&(w=void 0),e(T,a,w),u=!0,h._container=a,a.__vue_app__=h,Xt(T.component)}},onUnmount(a){f.push(a)},unmount(){u&&(ve(f,h._instance,16),e(null,h._container),delete h._container.__vue_app__)},provide(a,p){return i.provides[a]=p,h},runWithContext(a){const p=et;et=h;try{return a()}finally{et=p}}};return h}}let et=null;function Ji(e,t){if(se){let s=se.provides;const n=se.parent&&se.parent.provides;n===s&&(s=se.provides=Object.create(n)),s[e]=t}}function Dt(e,t,s=!1){const n=se||ce;if(n||et){let r=et?et._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return s&&M(t)?t.call(n&&n.proxy):t}}const cr={},ur=()=>Object.create(cr),ar=e=>Object.getPrototypeOf(e)===cr;function Yi(e,t,s,n=!1){const r={},i=ur();e.propsDefaults=Object.create(null),dr(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);s?e.props=n?r:li(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function zi(e,t,s,n){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,f=D(r),[u]=e.propsOptions;let h=!1;if((n||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let p=0;p<a.length;p++){let w=a[p];if(Yt(e.emitsOptions,w))continue;const T=t[w];if(u)if(H(i,w))T!==i[w]&&(i[w]=T,h=!0);else{const F=He(w);r[F]=vs(u,f,F,T,e,!1)}else T!==i[w]&&(i[w]=T,h=!0)}}}else{dr(e,t,r,i)&&(h=!0);let a;for(const p in f)(!t||!H(t,p)&&((a=Je(p))===p||!H(t,a)))&&(u?s&&(s[p]!==void 0||s[a]!==void 0)&&(r[p]=vs(u,f,p,void 0,e,!0)):delete r[p]);if(i!==f)for(const p in i)(!t||!H(t,p))&&(delete i[p],h=!0)}h&&Ce(e.attrs,"set","")}function dr(e,t,s,n){const[r,i]=e.propsOptions;let o=!1,f;if(t)for(let u in t){if(ut(u))continue;const h=t[u];let a;r&&H(r,a=He(u))?!i||!i.includes(a)?s[a]=h:(f||(f={}))[a]=h:Yt(e.emitsOptions,u)||(!(u in n)||h!==n[u])&&(n[u]=h,o=!0)}if(i){const u=D(s),h=f||j;for(let a=0;a<i.length;a++){const p=i[a];s[p]=vs(r,u,p,h[p],e,!H(h,p))}}return o}function vs(e,t,s,n,r,i){const o=e[s];if(o!=null){const f=H(o,"default");if(f&&n===void 0){const u=o.default;if(o.type!==Function&&!o.skipFactory&&M(u)){const{propsDefaults:h}=r;if(s in h)n=h[s];else{const a=Tt(r);n=h[s]=u.call(null,t),a()}}else n=u;r.ce&&r.ce._setProp(s,n)}o[0]&&(i&&!f?n=!1:o[1]&&(n===""||n===Je(s))&&(n=!0))}return n}const Xi=new WeakMap;function hr(e,t,s=!1){const n=s?Xi:t.propsCache,r=n.get(e);if(r)return r;const i=e.props,o={},f=[];let u=!1;if(!M(e)){const a=p=>{u=!0;const[w,T]=hr(p,t,!0);Z(o,w),T&&f.push(...T)};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!u)return q(e)&&n.set(e,Ze),Ze;if(P(i))for(let a=0;a<i.length;a++){const p=He(i[a]);rn(p)&&(o[p]=j)}else if(i)for(const a in i){const p=He(a);if(rn(p)){const w=i[a],T=o[p]=P(w)||M(w)?{type:w}:Z({},w),F=T.type;let I=!1,Y=!0;if(P(F))for(let L=0;L<F.length;++L){const B=F[L],W=M(B)&&B.name;if(W==="Boolean"){I=!0;break}else W==="String"&&(Y=!1)}else I=M(F)&&F.name==="Boolean";T[0]=I,T[1]=Y,(I||H(T,"default"))&&f.push(p)}}const h=[o,f];return q(e)&&n.set(e,h),h}function rn(e){return e[0]!=="$"&&!ut(e)}const Ks=e=>e[0]==="_"||e==="$stable",Vs=e=>P(e)?e.map(ye):[ye(e)],Zi=(e,t,s)=>{if(t._n)return t;const n=vi((...r)=>Vs(t(...r)),s);return n._c=!1,n},pr=(e,t,s)=>{const n=e._ctx;for(const r in e){if(Ks(r))continue;const i=e[r];if(M(i))t[r]=Zi(r,i,n);else if(i!=null){const o=Vs(i);t[r]=()=>o}}},gr=(e,t)=>{const s=Vs(t);e.slots.default=()=>s},mr=(e,t,s)=>{for(const n in t)(s||!Ks(n))&&(e[n]=t[n])},Qi=(e,t,s)=>{const n=e.slots=ur();if(e.vnode.shapeFlag&32){const r=t.__;r&&as(n,"__",r,!0);const i=t._;i?(mr(n,t,s),s&&as(n,"_",i,!0)):pr(t,n)}else t&&gr(e,t)},ki=(e,t,s)=>{const{vnode:n,slots:r}=e;let i=!0,o=j;if(n.shapeFlag&32){const f=t._;f?s&&f===1?i=!1:mr(r,t,s):(i=!t.$stable,pr(t,r)),o=t}else t&&(gr(e,t),o={default:1});if(i)for(const f in r)!Ks(f)&&o[f]==null&&delete r[f]},le=po;function eo(e){return to(e)}function to(e,t){const s=qt();s.__VUE__=!0;const{insert:n,remove:r,patchProp:i,createElement:o,createText:f,createComment:u,setText:h,setElementText:a,parentNode:p,nextSibling:w,setScopeId:T=xe,insertStaticContent:F}=e,I=(l,c,d,_=null,g=null,m=null,v=void 0,x=null,y=!!c.dynamicChildren)=>{if(l===c)return;l&&!ft(l,c)&&(_=Pt(l),he(l,g,m,!0),l=null),c.patchFlag===-2&&(y=!1,c.dynamicChildren=null);const{type:b,ref:E,shapeFlag:S}=c;switch(b){case zt:Y(l,c,d,_);break;case tt:L(l,c,d,_);break;case ls:l==null&&B(c,d,_,v);break;case Te:Et(l,c,d,_,g,m,v,x,y);break;default:S&1?G(l,c,d,_,g,m,v,x,y):S&6?Ot(l,c,d,_,g,m,v,x,y):(S&64||S&128)&&b.process(l,c,d,_,g,m,v,x,y,it)}E!=null&&g?pt(E,l&&l.ref,m,c||l,!c):E==null&&l&&l.ref!=null&&pt(l.ref,null,m,l,!0)},Y=(l,c,d,_)=>{if(l==null)n(c.el=f(c.children),d,_);else{const g=c.el=l.el;c.children!==l.children&&h(g,c.children)}},L=(l,c,d,_)=>{l==null?n(c.el=u(c.children||""),d,_):c.el=l.el},B=(l,c,d,_)=>{[l.el,l.anchor]=F(l.children,c,d,_,l.el,l.anchor)},W=({el:l,anchor:c},d,_)=>{let g;for(;l&&l!==c;)g=w(l),n(l,d,_),l=g;n(c,d,_)},O=({el:l,anchor:c})=>{let d;for(;l&&l!==c;)d=w(l),r(l),l=d;r(c)},G=(l,c,d,_,g,m,v,x,y)=>{c.type==="svg"?v="svg":c.type==="math"&&(v="mathml"),l==null?Me(c,d,_,g,m,v,x,y):Ct(l,c,g,m,v,x,y)},Me=(l,c,d,_,g,m,v,x)=>{let y,b;const{props:E,shapeFlag:S,transition:C,dirs:A}=l;if(y=l.el=o(l.type,m,E&&E.is,E),S&8?a(y,l.children):S&16&&Re(l.children,y,null,_,g,is(l,m),v,x),A&&Ue(l,null,_,"created"),de(y,l,l.scopeId,v,_),E){for(const U in E)U!=="value"&&!ut(U)&&i(y,U,null,E[U],m,_);"value"in E&&i(y,"value",null,E.value,m),(b=E.onVnodeBeforeMount)&&_e(b,_,l)}A&&Ue(l,null,_,"beforeMount");const R=so(g,C);R&&C.beforeEnter(y),n(y,c,d),((b=E&&E.onVnodeMounted)||R||A)&&le(()=>{b&&_e(b,_,l),R&&C.enter(y),A&&Ue(l,null,_,"mounted")},g)},de=(l,c,d,_,g)=>{if(d&&T(l,d),_)for(let m=0;m<_.length;m++)T(l,_[m]);if(g){let m=g.subTree;if(c===m||Sr(m.type)&&(m.ssContent===c||m.ssFallback===c)){const v=g.vnode;de(l,v,v.scopeId,v.slotScopeIds,g.parent)}}},Re=(l,c,d,_,g,m,v,x,y=0)=>{for(let b=y;b<l.length;b++){const E=l[b]=x?Fe(l[b]):ye(l[b]);I(null,E,c,d,_,g,m,v,x)}},Ct=(l,c,d,_,g,m,v)=>{const x=c.el=l.el;let{patchFlag:y,dynamicChildren:b,dirs:E}=c;y|=l.patchFlag&16;const S=l.props||j,C=c.props||j;let A;if(d&&Ke(d,!1),(A=C.onVnodeBeforeUpdate)&&_e(A,d,c,l),E&&Ue(c,l,d,"beforeUpdate"),d&&Ke(d,!0),(S.innerHTML&&C.innerHTML==null||S.textContent&&C.textContent==null)&&a(x,""),b?Le(l.dynamicChildren,b,x,d,_,is(c,g),m):v||$(l,c,x,null,d,_,is(c,g),m,!1),y>0){if(y&16)nt(x,S,C,d,g);else if(y&2&&S.class!==C.class&&i(x,"class",null,C.class,g),y&4&&i(x,"style",S.style,C.style,g),y&8){const R=c.dynamicProps;for(let U=0;U<R.length;U++){const N=R[U],ne=S[N],re=C[N];(re!==ne||N==="value")&&i(x,N,ne,re,g,d)}}y&1&&l.children!==c.children&&a(x,c.children)}else!v&&b==null&&nt(x,S,C,d,g);((A=C.onVnodeUpdated)||E)&&le(()=>{A&&_e(A,d,c,l),E&&Ue(c,l,d,"updated")},_)},Le=(l,c,d,_,g,m,v)=>{for(let x=0;x<c.length;x++){const y=l[x],b=c[x],E=y.el&&(y.type===Te||!ft(y,b)||y.shapeFlag&198)?p(y.el):d;I(y,b,E,null,_,g,m,v,!0)}},nt=(l,c,d,_,g)=>{if(c!==d){if(c!==j)for(const m in c)!ut(m)&&!(m in d)&&i(l,m,c[m],null,g,_);for(const m in d){if(ut(m))continue;const v=d[m],x=c[m];v!==x&&m!=="value"&&i(l,m,x,v,g,_)}"value"in d&&i(l,"value",c.value,d.value,g)}},Et=(l,c,d,_,g,m,v,x,y)=>{const b=c.el=l?l.el:f(""),E=c.anchor=l?l.anchor:f("");let{patchFlag:S,dynamicChildren:C,slotScopeIds:A}=c;A&&(x=x?x.concat(A):A),l==null?(n(b,d,_),n(E,d,_),Re(c.children||[],d,E,g,m,v,x,y)):S>0&&S&64&&C&&l.dynamicChildren?(Le(l.dynamicChildren,C,d,g,m,v,x),(c.key!=null||g&&c===g.subTree)&&_r(l,c,!0)):$(l,c,d,E,g,m,v,x,y)},Ot=(l,c,d,_,g,m,v,x,y)=>{c.slotScopeIds=x,l==null?c.shapeFlag&512?g.ctx.activate(c,d,_,v,y):Zt(c,d,_,g,m,v,y):Ws(l,c,y)},Zt=(l,c,d,_,g,m,v)=>{const x=l.component=Co(l,_,g);if(nr(l)&&(x.ctx.renderer=it),Eo(x,!1,v),x.asyncDep){if(g&&g.registerDep(x,Q,v),!l.el){const y=x.subTree=qe(tt);L(null,y,c,d)}}else Q(x,l,c,d,g,m,v)},Ws=(l,c,d)=>{const _=c.component=l.component;if(ao(l,c,d))if(_.asyncDep&&!_.asyncResolved){V(_,c,d);return}else _.next=c,_.update();else c.el=l.el,_.vnode=c},Q=(l,c,d,_,g,m,v)=>{const x=()=>{if(l.isMounted){let{next:S,bu:C,u:A,parent:R,vnode:U}=l;{const ge=br(l);if(ge){S&&(S.el=U.el,V(l,S,v)),ge.asyncDep.then(()=>{l.isUnmounted||x()});return}}let N=S,ne;Ke(l,!1),S?(S.el=U.el,V(l,S,v)):S=U,C&&Ft(C),(ne=S.props&&S.props.onVnodeBeforeUpdate)&&_e(ne,R,S,U),Ke(l,!0);const re=ln(l),pe=l.subTree;l.subTree=re,I(pe,re,p(pe.el),Pt(pe),l,g,m),S.el=re.el,N===null&&ho(l,re.el),A&&le(A,g),(ne=S.props&&S.props.onVnodeUpdated)&&le(()=>_e(ne,R,S,U),g)}else{let S;const{el:C,props:A}=c,{bm:R,m:U,parent:N,root:ne,type:re}=l,pe=gt(c);Ke(l,!1),R&&Ft(R),!pe&&(S=A&&A.onVnodeBeforeMount)&&_e(S,N,c),Ke(l,!0);{ne.ce&&ne.ce._def.shadowRoot!==!1&&ne.ce._injectChildStyle(re);const ge=l.subTree=ln(l);I(null,ge,d,_,l,g,m),c.el=ge.el}if(U&&le(U,g),!pe&&(S=A&&A.onVnodeMounted)){const ge=c;le(()=>_e(S,N,ge),g)}(c.shapeFlag&256||N&&gt(N.vnode)&&N.vnode.shapeFlag&256)&&l.a&&le(l.a,g),l.isMounted=!0,c=d=_=null}};l.scope.on();const y=l.effect=new Hn(x);l.scope.off();const b=l.update=y.run.bind(y),E=l.job=y.runIfDirty.bind(y);E.i=l,E.id=l.uid,y.scheduler=()=>$s(E),Ke(l,!0),b()},V=(l,c,d)=>{c.component=l;const _=l.vnode.props;l.vnode=c,l.next=null,zi(l,c.props,_,d),ki(l,c.children,d),Oe(),ks(l),Ae()},$=(l,c,d,_,g,m,v,x,y=!1)=>{const b=l&&l.children,E=l?l.shapeFlag:0,S=c.children,{patchFlag:C,shapeFlag:A}=c;if(C>0){if(C&128){At(b,S,d,_,g,m,v,x,y);return}else if(C&256){je(b,S,d,_,g,m,v,x,y);return}}A&8?(E&16&&rt(b,g,m),S!==b&&a(d,S)):E&16?A&16?At(b,S,d,_,g,m,v,x,y):rt(b,g,m,!0):(E&8&&a(d,""),A&16&&Re(S,d,_,g,m,v,x,y))},je=(l,c,d,_,g,m,v,x,y)=>{l=l||Ze,c=c||Ze;const b=l.length,E=c.length,S=Math.min(b,E);let C;for(C=0;C<S;C++){const A=c[C]=y?Fe(c[C]):ye(c[C]);I(l[C],A,d,null,g,m,v,x,y)}b>E?rt(l,g,m,!0,!1,S):Re(c,d,_,g,m,v,x,y,S)},At=(l,c,d,_,g,m,v,x,y)=>{let b=0;const E=c.length;let S=l.length-1,C=E-1;for(;b<=S&&b<=C;){const A=l[b],R=c[b]=y?Fe(c[b]):ye(c[b]);if(ft(A,R))I(A,R,d,null,g,m,v,x,y);else break;b++}for(;b<=S&&b<=C;){const A=l[S],R=c[C]=y?Fe(c[C]):ye(c[C]);if(ft(A,R))I(A,R,d,null,g,m,v,x,y);else break;S--,C--}if(b>S){if(b<=C){const A=C+1,R=A<E?c[A].el:_;for(;b<=C;)I(null,c[b]=y?Fe(c[b]):ye(c[b]),d,R,g,m,v,x,y),b++}}else if(b>C)for(;b<=S;)he(l[b],g,m,!0),b++;else{const A=b,R=b,U=new Map;for(b=R;b<=C;b++){const oe=c[b]=y?Fe(c[b]):ye(c[b]);oe.key!=null&&U.set(oe.key,b)}let N,ne=0;const re=C-R+1;let pe=!1,ge=0;const ot=new Array(re);for(b=0;b<re;b++)ot[b]=0;for(b=A;b<=S;b++){const oe=l[b];if(ne>=re){he(oe,g,m,!0);continue}let me;if(oe.key!=null)me=U.get(oe.key);else for(N=R;N<=C;N++)if(ot[N-R]===0&&ft(oe,c[N])){me=N;break}me===void 0?he(oe,g,m,!0):(ot[me-R]=b+1,me>=ge?ge=me:pe=!0,I(oe,c[me],d,null,g,m,v,x,y),ne++)}const Js=pe?no(ot):Ze;for(N=Js.length-1,b=re-1;b>=0;b--){const oe=R+b,me=c[oe],Ys=oe+1<E?c[oe+1].el:_;ot[b]===0?I(null,me,d,Ys,g,m,v,x,y):pe&&(N<0||b!==Js[N]?$e(me,d,Ys,2):N--)}}},$e=(l,c,d,_,g=null)=>{const{el:m,type:v,transition:x,children:y,shapeFlag:b}=l;if(b&6){$e(l.component.subTree,c,d,_);return}if(b&128){l.suspense.move(c,d,_);return}if(b&64){v.move(l,c,d,it);return}if(v===Te){n(m,c,d);for(let S=0;S<y.length;S++)$e(y[S],c,d,_);n(l.anchor,c,d);return}if(v===ls){W(l,c,d);return}if(_!==2&&b&1&&x)if(_===0)x.beforeEnter(m),n(m,c,d),le(()=>x.enter(m),g);else{const{leave:S,delayLeave:C,afterLeave:A}=x,R=()=>{l.ctx.isUnmounted?r(m):n(m,c,d)},U=()=>{S(m,()=>{R(),A&&A()})};C?C(m,R,U):U()}else n(m,c,d)},he=(l,c,d,_=!1,g=!1)=>{const{type:m,props:v,ref:x,children:y,dynamicChildren:b,shapeFlag:E,patchFlag:S,dirs:C,cacheIndex:A}=l;if(S===-2&&(g=!1),x!=null&&(Oe(),pt(x,null,d,l,!0),Ae()),A!=null&&(c.renderCache[A]=void 0),E&256){c.ctx.deactivate(l);return}const R=E&1&&C,U=!gt(l);let N;if(U&&(N=v&&v.onVnodeBeforeUnmount)&&_e(N,c,l),E&6)Pr(l.component,d,_);else{if(E&128){l.suspense.unmount(d,_);return}R&&Ue(l,null,c,"beforeUnmount"),E&64?l.type.remove(l,c,d,it,_):b&&!b.hasOnce&&(m!==Te||S>0&&S&64)?rt(b,c,d,!1,!0):(m===Te&&S&384||!g&&E&16)&&rt(y,c,d),_&&qs(l)}(U&&(N=v&&v.onVnodeUnmounted)||R)&&le(()=>{N&&_e(N,c,l),R&&Ue(l,null,c,"unmounted")},d)},qs=l=>{const{type:c,el:d,anchor:_,transition:g}=l;if(c===Te){Ar(d,_);return}if(c===ls){O(l);return}const m=()=>{r(d),g&&!g.persisted&&g.afterLeave&&g.afterLeave()};if(l.shapeFlag&1&&g&&!g.persisted){const{leave:v,delayLeave:x}=g,y=()=>v(d,m);x?x(l.el,m,y):y()}else m()},Ar=(l,c)=>{let d;for(;l!==c;)d=w(l),r(l),l=d;r(c)},Pr=(l,c,d)=>{const{bum:_,scope:g,job:m,subTree:v,um:x,m:y,a:b,parent:E,slots:{__:S}}=l;on(y),on(b),_&&Ft(_),E&&P(S)&&S.forEach(C=>{E.renderCache[C]=void 0}),g.stop(),m&&(m.flags|=8,he(v,l,c,d)),x&&le(x,c),le(()=>{l.isUnmounted=!0},c),c&&c.pendingBranch&&!c.isUnmounted&&l.asyncDep&&!l.asyncResolved&&l.suspenseId===c.pendingId&&(c.deps--,c.deps===0&&c.resolve())},rt=(l,c,d,_=!1,g=!1,m=0)=>{for(let v=m;v<l.length;v++)he(l[v],c,d,_,g)},Pt=l=>{if(l.shapeFlag&6)return Pt(l.component.subTree);if(l.shapeFlag&128)return l.suspense.next();const c=w(l.anchor||l.el),d=c&&c[wi];return d?w(d):c};let Qt=!1;const Gs=(l,c,d)=>{l==null?c._vnode&&he(c._vnode,null,null,!0):I(c._vnode||null,l,c,null,null,null,d),c._vnode=l,Qt||(Qt=!0,ks(),kn(),Qt=!1)},it={p:I,um:he,m:$e,r:qs,mt:Zt,mc:Re,pc:$,pbc:Le,n:Pt,o:e};return{render:Gs,hydrate:void 0,createApp:Gi(Gs)}}function is({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function Ke({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function so(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function _r(e,t,s=!1){const n=e.children,r=t.children;if(P(n)&&P(r))for(let i=0;i<n.length;i++){const o=n[i];let f=r[i];f.shapeFlag&1&&!f.dynamicChildren&&((f.patchFlag<=0||f.patchFlag===32)&&(f=r[i]=Fe(r[i]),f.el=o.el),!s&&f.patchFlag!==-2&&_r(o,f)),f.type===zt&&(f.el=o.el),f.type===tt&&!f.el&&(f.el=o.el)}}function no(e){const t=e.slice(),s=[0];let n,r,i,o,f;const u=e.length;for(n=0;n<u;n++){const h=e[n];if(h!==0){if(r=s[s.length-1],e[r]<h){t[n]=r,s.push(n);continue}for(i=0,o=s.length-1;i<o;)f=i+o>>1,e[s[f]]<h?i=f+1:o=f;h<e[s[i]]&&(i>0&&(t[n]=s[i-1]),s[i]=n)}}for(i=s.length,o=s[i-1];i-- >0;)s[i]=o,o=t[o];return s}function br(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:br(t)}function on(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const ro=Symbol.for("v-scx"),io=()=>Dt(ro);function os(e,t,s){return yr(e,t,s)}function yr(e,t,s=j){const{immediate:n,deep:r,flush:i,once:o}=s,f=Z({},s),u=t&&n||!t&&i!=="post";let h;if(St){if(i==="sync"){const T=io();h=T.__watcherHandles||(T.__watcherHandles=[])}else if(!u){const T=()=>{};return T.stop=xe,T.resume=xe,T.pause=xe,T}}const a=se;f.call=(T,F,I)=>ve(T,a,F,I);let p=!1;i==="post"?f.scheduler=T=>{le(T,a&&a.suspense)}:i!=="sync"&&(p=!0,f.scheduler=(T,F)=>{F?T():$s(T)}),f.augmentJob=T=>{t&&(T.flags|=4),p&&(T.flags|=2,a&&(T.id=a.uid,T.i=a))};const w=mi(e,t,f);return St&&(h?h.push(w):u&&w()),w}function oo(e,t,s){const n=this.proxy,r=J(e)?e.includes(".")?xr(n,e):()=>n[e]:e.bind(n,n);let i;M(t)?i=t:(i=t.handler,s=t);const o=Tt(this),f=yr(r,i.bind(n),s);return o(),f}function xr(e,t){const s=t.split(".");return()=>{let n=e;for(let r=0;r<s.length&&n;r++)n=n[s[r]];return n}}const lo=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${He(t)}Modifiers`]||e[`${Je(t)}Modifiers`];function fo(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||j;let r=s;const i=t.startsWith("update:"),o=i&&lo(n,t.slice(7));o&&(o.trim&&(r=s.map(a=>J(a)?a.trim():a)),o.number&&(r=s.map(ds)));let f,u=n[f=kt(t)]||n[f=kt(He(t))];!u&&i&&(u=n[f=kt(Je(t))]),u&&ve(u,e,6,r);const h=n[f+"Once"];if(h){if(!e.emitted)e.emitted={};else if(e.emitted[f])return;e.emitted[f]=!0,ve(h,e,6,r)}}function vr(e,t,s=!1){const n=t.emitsCache,r=n.get(e);if(r!==void 0)return r;const i=e.emits;let o={},f=!1;if(!M(e)){const u=h=>{const a=vr(h,t,!0);a&&(f=!0,Z(o,a))};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!i&&!f?(q(e)&&n.set(e,null),null):(P(i)?i.forEach(u=>o[u]=null):Z(o,i),q(e)&&n.set(e,o),o)}function Yt(e,t){return!e||!Vt(t)?!1:(t=t.slice(2).replace(/Once$/,""),H(e,t[0].toLowerCase()+t.slice(1))||H(e,Je(t))||H(e,t))}function ln(e){const{type:t,vnode:s,proxy:n,withProxy:r,propsOptions:[i],slots:o,attrs:f,emit:u,render:h,renderCache:a,props:p,data:w,setupState:T,ctx:F,inheritAttrs:I}=e,Y=$t(e);let L,B;try{if(s.shapeFlag&4){const O=r||n,G=O;L=ye(h.call(G,O,a,p,T,w,F)),B=f}else{const O=t;L=ye(O.length>1?O(p,{attrs:f,slots:o,emit:u}):O(p,null)),B=t.props?f:co(f)}}catch(O){_t.length=0,Gt(O,e,1),L=qe(tt)}let W=L;if(B&&I!==!1){const O=Object.keys(B),{shapeFlag:G}=W;O.length&&G&7&&(i&&O.some(Cs)&&(B=uo(B,i)),W=st(W,B,!1,!0))}return s.dirs&&(W=st(W,null,!1,!0),W.dirs=W.dirs?W.dirs.concat(s.dirs):s.dirs),s.transition&&Us(W,s.transition),L=W,$t(Y),L}const co=e=>{let t;for(const s in e)(s==="class"||s==="style"||Vt(s))&&((t||(t={}))[s]=e[s]);return t},uo=(e,t)=>{const s={};for(const n in e)(!Cs(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function ao(e,t,s){const{props:n,children:r,component:i}=e,{props:o,children:f,patchFlag:u}=t,h=i.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return n?fn(n,o,h):!!o;if(u&8){const a=t.dynamicProps;for(let p=0;p<a.length;p++){const w=a[p];if(o[w]!==n[w]&&!Yt(h,w))return!0}}}else return(r||f)&&(!f||!f.$stable)?!0:n===o?!1:n?o?fn(n,o,h):!0:!!o;return!1}function fn(e,t,s){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let r=0;r<n.length;r++){const i=n[r];if(t[i]!==e[i]&&!Yt(s,i))return!0}return!1}function ho({vnode:e,parent:t},s){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=s,t=t.parent;else break}}const Sr=e=>e.__isSuspense;function po(e,t){t&&t.pendingBranch?P(e)?t.effects.push(...e):t.effects.push(e):xi(e)}const Te=Symbol.for("v-fgt"),zt=Symbol.for("v-txt"),tt=Symbol.for("v-cmt"),ls=Symbol.for("v-stc"),_t=[];let fe=null;function go(e=!1){_t.push(fe=e?null:[])}function mo(){_t.pop(),fe=_t[_t.length-1]||null}let vt=1;function cn(e,t=!1){vt+=e,e<0&&fe&&t&&(fe.hasOnce=!0)}function _o(e){return e.dynamicChildren=vt>0?fe||Ze:null,mo(),vt>0&&fe&&fe.push(e),e}function bo(e,t,s,n,r,i){return _o(Be(e,t,s,n,r,i,!0))}function wr(e){return e?e.__v_isVNode===!0:!1}function ft(e,t){return e.type===t.type&&e.key===t.key}const Tr=({key:e})=>e??null,Ht=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?J(e)||X(e)||M(e)?{i:ce,r:e,k:t,f:!!s}:e:null);function Be(e,t=null,s=null,n=0,r=null,i=e===Te?0:1,o=!1,f=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Tr(t),ref:t&&Ht(t),scopeId:tr,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ce};return f?(Bs(u,s),i&128&&e.normalize(u)):s&&(u.shapeFlag|=J(s)?8:16),vt>0&&!o&&fe&&(u.patchFlag>0||i&6)&&u.patchFlag!==32&&fe.push(u),u}const qe=yo;function yo(e,t=null,s=null,n=0,r=null,i=!1){if((!e||e===ji)&&(e=tt),wr(e)){const f=st(e,t,!0);return s&&Bs(f,s),vt>0&&!i&&fe&&(f.shapeFlag&6?fe[fe.indexOf(e)]=f:fe.push(f)),f.patchFlag=-2,f}if(Mo(e)&&(e=e.__vccOpts),t){t=xo(t);let{class:f,style:u}=t;f&&!J(f)&&(t.class=Ps(f)),q(u)&&(js(u)&&!P(u)&&(u=Z({},u)),t.style=As(u))}const o=J(e)?1:Sr(e)?128:Ti(e)?64:q(e)?4:M(e)?2:0;return Be(e,t,s,n,r,o,i,!0)}function xo(e){return e?js(e)||ar(e)?Z({},e):e:null}function st(e,t,s=!1,n=!1){const{props:r,ref:i,patchFlag:o,children:f,transition:u}=e,h=t?So(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:h,key:h&&Tr(h),ref:t&&t.ref?s&&i?P(i)?i.concat(Ht(t)):[i,Ht(t)]:Ht(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:f,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Te?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&st(e.ssContent),ssFallback:e.ssFallback&&st(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&n&&Us(a,u.clone(a)),a}function vo(e=" ",t=0){return qe(zt,null,e,t)}function ye(e){return e==null||typeof e=="boolean"?qe(tt):P(e)?qe(Te,null,e.slice()):wr(e)?Fe(e):qe(zt,null,String(e))}function Fe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:st(e)}function Bs(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(P(t))s=16;else if(typeof t=="object")if(n&65){const r=t.default;r&&(r._c&&(r._d=!1),Bs(e,r()),r._c&&(r._d=!0));return}else{s=32;const r=t._;!r&&!ar(t)?t._ctx=ce:r===3&&ce&&(ce.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else M(t)?(t={default:t,_ctx:ce},s=32):(t=String(t),n&64?(s=16,t=[vo(t)]):s=8);e.children=t,e.shapeFlag|=s}function So(...e){const t={};for(let s=0;s<e.length;s++){const n=e[s];for(const r in n)if(r==="class")t.class!==n.class&&(t.class=Ps([t.class,n.class]));else if(r==="style")t.style=As([t.style,n.style]);else if(Vt(r)){const i=t[r],o=n[r];o&&i!==o&&!(P(i)&&i.includes(o))&&(t[r]=i?[].concat(i,o):o)}else r!==""&&(t[r]=n[r])}return t}function _e(e,t,s,n=null){ve(e,t,7,[s,n])}const wo=fr();let To=0;function Co(e,t,s){const n=e.type,r=(t?t.appContext:e.appContext)||wo,i={uid:To++,vnode:e,type:n,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Kr(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:hr(n,r),emitsOptions:vr(n,r),emit:null,emitted:null,propsDefaults:j,inheritAttrs:n.inheritAttrs,ctx:j,data:j,props:j,attrs:j,slots:j,refs:j,setupState:j,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=fo.bind(null,i),e.ce&&e.ce(i),i}let se=null,Kt,Ss;{const e=qt(),t=(s,n)=>{let r;return(r=e[s])||(r=e[s]=[]),r.push(n),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Kt=t("__VUE_INSTANCE_SETTERS__",s=>se=s),Ss=t("__VUE_SSR_SETTERS__",s=>St=s)}const Tt=e=>{const t=se;return Kt(e),e.scope.on(),()=>{e.scope.off(),Kt(t)}},un=()=>{se&&se.scope.off(),Kt(null)};function Cr(e){return e.vnode.shapeFlag&4}let St=!1;function Eo(e,t=!1,s=!1){t&&Ss(t);const{props:n,children:r}=e.vnode,i=Cr(e);Yi(e,n,i,t),Qi(e,r,s||t);const o=i?Oo(e,t):void 0;return t&&Ss(!1),o}function Oo(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,$i);const{setup:n}=s;if(n){Oe();const r=e.setupContext=n.length>1?Po(e):null,i=Tt(e),o=wt(n,e,0,[e.props,r]),f=On(o);if(Ae(),i(),(f||e.sp)&&!gt(e)&&sr(e),f){if(o.then(un,un),t)return o.then(u=>{an(e,u)}).catch(u=>{Gt(u,e,0)});e.asyncDep=o}else an(e,o)}else Er(e)}function an(e,t,s){M(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:q(t)&&(e.setupState=Xn(t)),Er(e)}function Er(e,t,s){const n=e.type;e.render||(e.render=n.render||xe);{const r=Tt(e);Oe();try{Ui(e)}finally{Ae(),r()}}}const Ao={get(e,t){return z(e,"get",""),e[t]}};function Po(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,Ao),slots:e.slots,emit:e.emit,expose:t}}function Xt(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Xn(fi(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in mt)return mt[s](e)},has(t,s){return s in t||s in mt}})):e.proxy}function Mo(e){return M(e)&&"__vccOpts"in e}const Ro=(e,t)=>pi(e,t,St),Io="3.5.17";/**
* @vue/runtime-dom v3.5.17
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/let ws;const dn=typeof window<"u"&&window.trustedTypes;if(dn)try{ws=dn.createPolicy("vue",{createHTML:e=>e})}catch{}const Or=ws?e=>ws.createHTML(e):e=>e,Fo="http://www.w3.org/2000/svg",Do="http://www.w3.org/1998/Math/MathML",we=typeof document<"u"?document:null,hn=we&&we.createElement("template"),Ho={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const r=t==="svg"?we.createElementNS(Fo,e):t==="mathml"?we.createElementNS(Do,e):s?we.createElement(e,{is:s}):we.createElement(e);return e==="select"&&n&&n.multiple!=null&&r.setAttribute("multiple",n.multiple),r},createText:e=>we.createTextNode(e),createComment:e=>we.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>we.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,r,i){const o=s?s.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),s),!(r===i||!(r=r.nextSibling)););else{hn.innerHTML=Or(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const f=hn.content;if(n==="svg"||n==="mathml"){const u=f.firstChild;for(;u.firstChild;)f.appendChild(u.firstChild);f.removeChild(u)}t.insertBefore(f,s)}return[o?o.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},No=Symbol("_vtc");function Lo(e,t,s){const n=e[No];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const pn=Symbol("_vod"),jo=Symbol("_vsh"),$o=Symbol(""),Uo=/(^|;)\s*display\s*:/;function Ko(e,t,s){const n=e.style,r=J(s);let i=!1;if(s&&!r){if(t)if(J(t))for(const o of t.split(";")){const f=o.slice(0,o.indexOf(":")).trim();s[f]==null&&Nt(n,f,"")}else for(const o in t)s[o]==null&&Nt(n,o,"");for(const o in s)o==="display"&&(i=!0),Nt(n,o,s[o])}else if(r){if(t!==s){const o=n[$o];o&&(s+=";"+o),n.cssText=s,i=Uo.test(s)}}else t&&e.removeAttribute("style");pn in e&&(e[pn]=i?n.display:"",e[jo]&&(n.display="none"))}const gn=/\s*!important$/;function Nt(e,t,s){if(P(s))s.forEach(n=>Nt(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=Vo(e,t);gn.test(s)?e.setProperty(Je(n),s.replace(gn,""),"important"):e[n]=s}}const mn=["Webkit","Moz","ms"],fs={};function Vo(e,t){const s=fs[t];if(s)return s;let n=He(t);if(n!=="filter"&&n in e)return fs[t]=n;n=Mn(n);for(let r=0;r<mn.length;r++){const i=mn[r]+n;if(i in e)return fs[t]=i}return t}const _n="http://www.w3.org/1999/xlink";function bn(e,t,s,n,r,i=Ur(t)){n&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(_n,t.slice(6,t.length)):e.setAttributeNS(_n,t,s):s==null||i&&!Rn(s)?e.removeAttribute(t):e.setAttribute(t,i?"":Ne(s)?String(s):s)}function yn(e,t,s,n,r){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?Or(s):s);return}const i=e.tagName;if(t==="value"&&i!=="PROGRESS"&&!i.includes("-")){const f=i==="OPTION"?e.getAttribute("value")||"":e.value,u=s==null?e.type==="checkbox"?"on":"":String(s);(f!==u||!("_value"in e))&&(e.value=u),s==null&&e.removeAttribute(t),e._value=s;return}let o=!1;if(s===""||s==null){const f=typeof e[t];f==="boolean"?s=Rn(s):s==null&&f==="string"?(s="",o=!0):f==="number"&&(s=0,o=!0)}try{e[t]=s}catch{}o&&e.removeAttribute(r||t)}function Xe(e,t,s,n){e.addEventListener(t,s,n)}function Bo(e,t,s,n){e.removeEventListener(t,s,n)}const xn=Symbol("_vei");function Wo(e,t,s,n,r=null){const i=e[xn]||(e[xn]={}),o=i[t];if(n&&o)o.value=n;else{const[f,u]=qo(t);if(n){const h=i[t]=Yo(n,r);Xe(e,f,h,u)}else o&&(Bo(e,f,o,u),i[t]=void 0)}}const vn=/(?:Once|Passive|Capture)$/;function qo(e){let t;if(vn.test(e)){t={};let n;for(;n=e.match(vn);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Je(e.slice(2)),t]}let cs=0;const Go=Promise.resolve(),Jo=()=>cs||(Go.then(()=>cs=0),cs=Date.now());function Yo(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;ve(zo(n,s.value),t,5,[n])};return s.value=e,s.attached=Jo(),s}function zo(e,t){if(P(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>r=>!r._stopped&&n&&n(r))}else return t}const Sn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Xo=(e,t,s,n,r,i)=>{const o=r==="svg";t==="class"?Lo(e,n,o):t==="style"?Ko(e,s,n):Vt(t)?Cs(t)||Wo(e,t,s,n,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Zo(e,t,n,o))?(yn(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&bn(e,t,n,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!J(n))?yn(e,He(t),n,i,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),bn(e,t,n,o))};function Zo(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Sn(t)&&M(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Sn(t)&&J(s)?!1:t in e}const wn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return P(t)?s=>Ft(t,s):t};function Qo(e){e.target.composing=!0}function Tn(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const us=Symbol("_assign"),ko={created(e,{modifiers:{lazy:t,trim:s,number:n}},r){e[us]=wn(r);const i=n||r.props&&r.props.type==="number";Xe(e,t?"change":"input",o=>{if(o.target.composing)return;let f=e.value;s&&(f=f.trim()),i&&(f=ds(f)),e[us](f)}),s&&Xe(e,"change",()=>{e.value=e.value.trim()}),t||(Xe(e,"compositionstart",Qo),Xe(e,"compositionend",Tn),Xe(e,"change",Tn))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:r,number:i}},o){if(e[us]=wn(o),e.composing)return;const f=(i||e.type==="number")&&!/^0\d/.test(e.value)?ds(e.value):e.value,u=t??"";f!==u&&(document.activeElement===e&&e.type!=="range"&&(n&&t===s||r&&e.value.trim()===u)||(e.value=u))}},el=["ctrl","shift","alt","meta"],tl={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>el.some(s=>e[`${s}Key`]&&!t.includes(s))},sl=(e,t)=>{const s=e._withMods||(e._withMods={}),n=t.join(".");return s[n]||(s[n]=(r,...i)=>{for(let o=0;o<t.length;o++){const f=tl[t[o]];if(f&&f(r,t))return}return e(r,...i)})},nl=Z({patchProp:Xo},Ho);let Cn;function rl(){return Cn||(Cn=eo(nl))}const il=(...e)=>{const t=rl().createApp(...e),{mount:s}=t;return t.mount=n=>{const r=ll(n);if(!r)return;const i=t._component;!M(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=s(r,!1,ol(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t};function ol(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ll(e){return J(e)?document.querySelector(e):e}async function fl(e,t={},s){return window.__TAURI_INTERNALS__.invoke(e,t,s)}const cl={class:"container"},ul=Ci({__name:"App",setup(e){const t=Qs(""),s=Qs("");async function n(){t.value=await fl("greet",{flag:s.value})}return(r,i)=>(go(),bo("main",cl,[i[2]||(i[2]=Be("h1",null,"L3HCTF",-1)),Be("form",{class:"row",onSubmit:sl(n,["prevent"])},[Si(Be("input",{id:"greet-input","onUpdate:modelValue":i[0]||(i[0]=o=>s.value=o),placeholder:"Enter a flag..."},null,512),[[ko,s.value]]),i[1]||(i[1]=Be("button",{type:"submit"},"Validate",-1))],32),Be("p",null,Fn(t.value),1)]))}});il(ul).mount("#app");

获得这个,可以得到加密逻辑在函数ez_and.....:greet里

然后写出解密脚本

def ror(x, s):
    return ((x >> s) | (x << (8 - s))) & 0xFF

# 查找表 S(从偏移184开始的14字节)
S = [100, 71, 104, 112, 99, 50, 108, 122, 89, 87, 116, 108, 101, 81]
# 加密后的数据 C(27字节)
C = [
    0x0C, 0x15, 0x25, 0xA0, 0x63, 0x96, 0x40, 0x0A,
    0x5C, 0x16, 0x65, 0x40, 0x29, 0x06, 0xE1, 0x1F,
    0x90, 0x72, 0x2C, 0x0E, 0x4C, 0x0A, 0x02, 0xFC,
    79, 50, 42
]

flag = []
for i in range(27):
    x = 2 * i | 1
    y = (147 * x) // 2048
    index1 = x - 14 * y
    k1 = (i + 4) % 14
    k2 = (i + 3) % 14
    s = S[k2] & 7
    v10 = i if i < 14 else i - 14
    E = C[i] ^ S[k1]
    R = ror(E, s)
    T = (R - S[index1]) % 256
    A_i = T ^ S[v10]
    flag.append(A_i)

flag_str = ''.join(chr(b) for b in flag)
print(flag_str)