<!doctype html>
<html lang="zh-cmn-Hans">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, shrink-to-fit=no" />
    <meta name="renderer" content="webkit" />
    <meta name="force-rendering" content="webkit" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
    <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3597621909882025"
        crossorigin="anonymous"></script>
    <link rel="search" type="application/opensearchdescription+xml" href="opensearch.xml" title="🍋OIso🔍>
    <script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script>
    <script>
        window.OneSignal = window.OneSignal || [];
        OneSignal.push(function () {
            OneSignal.init({
                appId: "7ece0660-f9eb-4e71-b866-1241084211f7",
            });
        });
    </script>

    <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
    <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>
    <script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
    <style>
        /* Make the image fully responsive */
        .carousel-inner img {
            width: 100%;
            height: 100%;
        }
    </style>

    <script>
        window['api'] = '//online.oiso.cf';
    </script>

    <style>
        #suggestionContainer {
            overflow: hidden;
            z-index: 114514;
            border-radius: 15px;
            transition: .25s;
            -webkit-backdrop-filter: blur(30px) saturate(1.25);
            backdrop-filter: blur(30px) saturate(1.25);
            box-shadow: rgba(0, 0, 0, 0.25) 0px 54px 55px, rgba(0, 0, 0, 0.12) 0px -12px 30px, rgba(0, 0, 0, 0.12) 0px 4px 6px, rgba(0, 0, 0, 0.17) 0px 12px 13px, rgba(0, 0, 0, 0.09) 0px -3px 5px;
        }

        #suggestionContainer div {
            /* border-radius: 15px; */
            display: -webkit-box;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 1;
            overflow: hidden;
            clear: both;
            height: 30px;
            padding-left: 20px;
            line-height: 30px;
            cursor: pointer;
            background: rgba(0, 0, 0, 0.09);
            color: rgba(255, 255, 255, .8);
            transition: .25s;
        }

        #suggestionContainer div:hover {
            background: rgba(0, 0, 0, 0.27);
            color: rgba(255, 255, 255, .8);
            transition: .25s;
        }

        .mdui-card {
            transition: all 0.75s;
            opacity: 0.83;
        }

        .mdui-card:hover {
            transition: all 0.75s;
            opacity: 0.95;
            -webkit-box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12) !important;
            box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12) !important
        }

        .mdui-dialog,
        .mdui-dialog-open {
            border-radius: 7px;
        }

        #lbt {
            margin: 0%;
        }

        .name {
            /* margin: 0 8px !important; */
            font-size: 20px;
        }

        .avatar {
            width: 36px;
            height: 36px;
            border-radius: 50%;
            margin: 0 12px !important;
            transform: translateY(10px);
        }

        .infoBoard {
            opacity: 0.85;
        }

        img.avatar {
            align-self: center;
        }

        img.avatar {
            line-height: normal;
        }

        .box {
            display: flex;
            z-index: 3;
            height: 44px;
            background: #fff;
            border: 1px solid #dfe1e5;
            box-shadow: none;
            border-radius: 24px;
            margin: 0 auto;
            width: calc(632px + 6px);
            width: auto;
            max-width: 584px;
            background: rgba(255, 255, 255, 0.75);
        }

        .search {
            display: flex;
            flex: 1;
            flex-wrap: wrap;
            border: none;
            outline: none;
            background: rgba(255, 255, 255, 0);
        }

        .left {
            display: flex;
            align-items: center;
            padding-right: 20px;
            margin-top: -5px;
        }

        .right {
            display: flex;
            flex: 0 0 auto;
            margin-top: -5px;
            align-items: stretch;
            flex-direction: row;
            padding-left: 20px;
        }

        .topbar {
            flex: 1 0 auto;
            display: flex;
            cursor: pointer;
            align-items: center;
            border: 0;
            background: transparent;
            outline: none;
            /* padding: 0 8px; */
            width: 24px;
            /* line-height: 24px; */
            transform: translateY(30%) translateX(-35%);
            /* transform: translateX(-30%); */
        }

        [text~="xs"] {
            font-size: 0.75rem;
            line-height: 1rem;
        }

        [bg~="gray-100"] {
            --un-bg-opacity: 1;
            background-color: rgba(243, 244, 246, var(--un-bg-opacity));
        }

        /* @media (prefers-color-scheme: dark) {
            .dARkdOOr {
                background-color: rgb(70, 70, 70) !important;
            }
        }
        } */
        /* 下几个版本没出问题就删 这是什么牛马名字 */

        .justify-center {
            justify-content: center;
        }

        .items-center {
            align-items: center;
        }

        .flex,
        [flex~="\~"] {
            display: flex;
        }

        [w~="full"] {
            width: 100%;
        }

        [h~="\31 2"] {
            height: 2.5rem;
        }

        .right-0 {
            right: 0rem;
        }

        .left-0 {
            left: 0rem;
        }

        .bottom-0 {
            bottom: 0rem;
        }

        .fixed {
            position: fixed !important;
        }

        /*包含以下四种的链接*/
        a {
            text-decoration: none;
            color: deepskyblue;
        }

        /*正常的未被访问过的链接*/
        a:link {
            text-decoration: none;
        }

        /*已经访问过的链接*/
        a:visited {
            text-decoration: none;
        }

        /*鼠标划过(停留)的链接*/
        a:hover {
            text-decoration: none;
        }

        /* 正在点击的链接*/
        a:active {
            text-decoration: none;
        }

        .color {
            position: fixed !important;
            z-index: 999;
            top: 45px;
            right: 0;
            _position: absolute !important;
            *zoom: 1 !important;
        }

        html {
            height: 100%;
            width: 100%;
            overflow: -moz-hidden-unscrollable;
        }

        body {
            height: 100%;
            width: 100%;
            -ms-overflow-style: none;
            overflow: auto;
        }

        .bg-blur {
            float: left;
            width: 100%;
            background-repeat: no-repeat;
            background-position: center;
            /* background-size: ; */
            /* -webkit-filter: blur(15px);
            -moz-filter: blur(15px);
            -o-filter: blur(15px);
            -ms-filter: blur(15px); */
            /* filter: blur(15px); */
        }

        .cover {
            z-index: -1;
            opacity: 0;
            /* backdrop-filter: saturate(150%) blur(5px); */
            transform: translateZ(0);
            position: fixed;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            background-image: radial-gradient(rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, .5) 100%),
                radial-gradient(rgba(0, 0, 0, 0) 33%, rgba(0, 0, 0, .3) 166%);
            transition: .25s
        }

        body::-webkit-scrollbar {
            display: none;
        }

        /*给card圆角*/
        .mdui-card {
            border-radius: 10px !important;
        }

        /*底部条 左上 右上 圆角*/
        .bottom-nav {
            border-radius: 10px 10px 0 0 !important;
        }

        .bg {
            z-index: -999;
            position: fixed;
            background: url(https://api.heyc.eu.org/bing/process?blur=15) center/cover no-repeat;
            height: 600px;
            text-align: center;
            line-height: 600px;
            /* background-image: url(https://api.oneneko.com/v1/bing_today); */
            height: 100%;
            width: 100%;
            -ms-overflow-style: none;
            overflow: auto;
        }
    </style>
    <style>
        .am-comment-main {
            /*圆角*/
            border-radius: 10px !important;
            border: #dfe1e5 1px solid;
            /* 内边距 */
            padding: 10px;
            /* 下边距 */
            margin-bottom: 10px;
        }

        .tag {
            display: inline-block;
            padding: 0 3px;
            box-sizing: border-box;
            font-weight: 400;
            line-height: 1.5;
            border-radius: 2px;
            font-size: 0.8em;
            margin-right: 5px;
        }

        #p-d .p-material_icons .icon-code {
            -webkit-tap-highlight-color: transparent;
            border-radius: 2px;
            cursor: pointer;
            height: 120px;
            min-width: 108px;
            text-align: center;
        }

        .mdui-col,
        [class*=mdui-col-lg-],
        [class*=mdui-col-md-],
        [class*=mdui-col-sm-],
        [class*=mdui-col-xl-],
        [class*=mdui-col-xs-] {
            position: relative;
            -webkit-box-sizing: border-box;
            box-sizing: border-box;
            min-height: 1px;
            padding-right: 8px;
            padding-left: 8px;
        }

        #p-d .p-material_icons .icons-wrapper {
            margin-top: 40px;
        }

        #lbt {
            color: rgb(225, 225, 225)
        }
    </style>
    <style>
        .mainContainer {
            /* display: block; */
            /* width: 1024px; */
            margin-left: auto;
            margin-right: auto;
        }

        .urlInput {
            display: block;
            width: 100%;
            margin-left: auto;
            margin-right: auto;
            margin-top: 8px;
            margin-bottom: 8px;
        }

        .centeredVideo {
            display: block;
            width: 100%;
            height: 576px;
            margin-left: auto;
            margin-right: auto;
            margin-bottom: auto;
        }

        .controls {
            display: block;
            width: 100%;
            text-align: left;
            margin-left: auto;
            margin-right: auto;
        }
    </style>
    <!-- 借用 Luogu cdn -->
    <script src="https://cdn.luogu.com.cn/js/jquery-2.1.1.min.js"></script>
    <!-- MDUI CSS -->
    <link rel="stylesheet" href="http://unpkg.zhimg.com/mdui@1.0.2/dist/css/mdui.min.css" />
    <title>🍋OIso🔍 - 一款为 OIer 和开发者而生的搜索引擎</title>
    <link rel="shortcut icon" href="img/favicon.svg">
</head>

<body class="mdui-theme-layout-auto">
    <div class="bg bg-blur"></div>
    <div class="cover js-cursor-container" id="cover" style="opacity: 1;"></div>
    <!-- <div class="mdui-toolbar mdui-color-theme">
        <div class="mdui-toolbar-spacer"></div>
        <span class="mdui-btn mdui-btn-icon mdui-ripple mdui-ripple-light-blue"
            mdui-dialog="{target: '#dialog-docs-theme'}">
            <i class="mdui-icon material-icons">color_lens</i>
        </span>
    </div> -->
    <!-- 个性化先咕了,太懒了(逃 ε=ε=ε=┏(゜ロ゜;)┛ -->

    <div class="mdui-toolbar">
        <div class="mdui-toolbar-spacer"></div>

        <button id="lbt" class="mdui-btn mdui-ripple mdui-ripple-white" mdui-dialog="{target: '#dialog-login'}"
            onclick="get_key();">
            Logging
        </button>
    </div>

    <div class="mdui-container">
        <center>
            <img id="logo" src="img/logo.png" class="mdui-img-fluid" style="transform: translateY(100%);"
                onload="if(this.width >= 333){this.width = 333;}" />
        </center>
        <center>
            <div id="container" class="box mdui-hoverable" style="transform: translateY(170px);">
                <div class="left"></div>
                <input class="search" id="inputBox" type="text" placeholder="OIso数据库正在全面升级,搜索结果或不全,重大更新敬请期待!"
                    onkeypress="getKey();" />
                <div class="right">
                    <i class="mdui-icon material-icons topbar mdui-text-color-black" onclick="go();">search</i>
                </div>
            </div>
        </center>
        <div id="suggestionContainer"
            style="height: auto; opacity: 1; display: block; position: absolute; top: 400px; left: 50%; transform: translateX(-50%); width: 584px;">

        </div>
    </div>
    <script>
        // 编辑 .bg 中 background 的 URL 中的 random 参数以防止缓存
        // 例如:https://www.wxiou.cn/api/?blur=15&random=1234
        random = Math.random().toString(36).substring(2);
        url = "https://www.wxiou.cn/api/?blur=15&random=" + random;
        // make it important!
        document.querySelector(".bg").style.background = "url(" + url + ") !important";
    </script>
    <script type="text/javascript">
        // window['now'] = ''
        // setInterval(function () { //每0.5秒刷新一次
        //     var text = document.getElementById('inputBox').value;
        //     if (text != window['now']) {
        //         window['now'] = text;
        //         getSuggest();
        //     }
        // }, 500); 
        //获得文本框元素
        var lostfocus = false;
        var txtSearch = document.getElementById('inputBox');
        window['onfunction'] = false;
        //文本框得到焦点事件 onfocus()
        txtSearch.onfocus = function () {
            window['onfunction'] = true;
            document.getElementById("container").setAttribute("class", "box mdui-hoverable mdui-shadow-7");
            // 如果不为空
            if (txtSearch.value != '') {
                // 显示搜索建议
                getSuggest();
            }
        }
        //文本框失去焦点事件 onblur()
        txtSearch.onblur = function () {
            window['onfunction'] = false;
            document.getElementById("container").setAttribute("class", "box mdui-hoverable");
        }
    </script>
    <!-- MDUI JavaScript -->
    <script src="http://unpkg.zhimg.com/mdui@1.0.2/dist/js/mdui.min.js"></script>
    <script>
        let zy = ["小黑子,露出鸡脚了吧~", "Bebe~oh~", "🐔你太美"]
        function go() {
            var value = document.getElementById("inputBox").value;
            if (value == '') {
                mdui.snackbar(zy[Math.floor(Math.random() * 3)]);
            } else {
                location.href = "/search?q=" + encodeURIComponent(document.getElementById("inputBox").value)
            }
        }
        let sugStatus = false;
        function getSuggest() {
            if (sugStatus === true) {
                return;
            }
            var myurl = `${window['api']}/suggestion?q=${$("#inputBox")[0].value}`;
            console.log(myurl);
            sugStatus = true;
            $.ajax({
                url: myurl, success: (data) => {
                    lostfocus = false;
                    // data = $.parseJSON(data);
                    console.log(data);
                    let hits = data.hits.hits;
                    $("#suggestionContainer").empty();
                    let sel = $("#suggestionContainer");
                    for (const hit in hits) {
                        console.log(hits[hit]._id);
                        sel.append(`<div onclick="gosug('${hits[hit]._source.name}')">${hits[hit]._source.name}</div>`);
                    }
                    if (lostfocus) {
                        $("#suggestionContainer").empty();
                        lostfocus = false;
                    }
                    sugStatus = false;
                }, error: () => {
                    console.log("获取提示信息失败...");
                    sugStatus = false;
                }
            });
        }
        // 当inputBox的内容发生变化
        $("#inputBox").bind('input propertychange', function () {
            if (window['onfunction'] === true) {
                setTimeout(function () {
                    getSuggest();
                }, 200);
            }
        })
        function gosug(name) {
            console.log("gosug" + name)
            $("#inputBox")[0].value = name;
            go();
        }
        function getKey() {
            if (event.keyCode == 13) {
                go();
            }
        }
    </script>
    <script>
        fetch(window['api']).then(function (response) {
            return response.text();
        }).then(function (data) {
            // console.log(data);
            if (data != `OIso 2023. All rights reserved.`) {
                mdui.snackbar("服务器消息:" + data);
            }
        }).catch((error) => {
            mdui.snackbar({
                message: '服务器炸了:' + error + ',快去轰炸管理员!',
                buttonText: '查看宕机监测',
                onButtonClick: function () {
                    window.open('https://stats.uptimerobot.com/JRlkxCB95r')
                }
            });
            // console.error('Server Error: ', error);
        });
    </script>

    <!-- <div id="footer" style="position: absolute; bottom: 0; left: 50%; transform: translate(-50%, -50%);">
        <div style="height: 23px;">
            <center>
                <p><a href="https://oiso.cf">🍋Oiso.cf🔍</a> 2022 - 现在 | Developed by <a href="https://www.amzcd.top">diyanqi</a></p>
            </center>
        </div>
    </div> -->
    <div class="infoBoard bottom-nav mdui-card fixed left-0 right-0 bottom-0 flex justify-center items-center"
        dark="bg-dark-700" bg="gray-100" w="full" h="12" text="xs" style="z-index: 999;">
        <div class="inline-flex justify-center items-center" m="x-2" style="letter-spacing:0.3px;" opacity="75"><a
                href="/"><img width="28" height="16" class="filter grayscale" m="x-2" src="img/favicon.svg"
                    alt="🍋OIso🔍" style="margin-top: -2px;transform: translateY(3px);"></a> ©️ 2023&nbsp;<a
                href="/">OIso.cf</a>&nbsp;| v1.0 正式版 | Developed
            by&nbsp;<a class="icon-btn mr-2" title="Blog" href="https://www.amzcd.top/"
                target="_blank">diyanqi</a>&nbsp;&amp;&nbsp;<a class="icon-btn mr-2" title="Blog"
                href="https://www.lotuses.net/" target="_blank">Lotuses</a>&nbsp;,&nbsp;<a class="icon-btn mr-2"
                title="Blog" href="https://github.com/orgs/oiso-developer-team/" target="_blank">OIso 开发团队</a> | <a
                class="icon-btn mr-2" title="评论需 Github 账号,洛谷也可私信我" href="https://www.amzcd.top/posts/OIso/"
                target="_blank">👉食用指南&反馈👈</a> | <a class="bing-background" href="https://bing.com"
                target="_blank">Bing Wallpaper</a> | <a href="https://icp.gov.moe/?keyword=20230322"
                target="_blank">萌ICP备20230322号</a>
        </div>
        <div class="inline-flex justify-center items-center" m="x-2"><a href="/about" class="icon-btn mx-2" title="关于">
                <div i-ri-information-line=""></div>
            </a></div>
    </div>

    <button class="mdui-fab mdui-fab-fixed mdui-ripple mdui-color-theme-accent"
        style="bottom: 20px; right: 20px; z-index: 999;" onclick="switch_page();" hidden id="updown">
        <i class="mdui-icon material-icons">keyboard_arrow_down</i>
    </button>
    <script>
        window['nowpage'] = 0;
        function switch_page() {
            if (window['nowpage'] == 0) {
                window['nowpage'] = 1;
                // 平滑地滑到页底
                $('html, body').animate({ scrollTop: $(document).height() }, 'slow');
                // 将箭头换个方向
                $(".mdui-fab i").html("keyboard_arrow_up");
            } else if (window['nowpage'] == 1) {
                window['nowpage'] = 0;
                // 平滑地滑到页顶
                $('html, body').animate({ scrollTop: 0 }, 'slow');
                // 将箭头换个方向
                $(".mdui-fab i").html("keyboard_arrow_down");
            }
        }
    </script>

    <div class="mdui-dialog" id="dialog-logout" style="border-radius: 20px;">
        <div class="mdui-dialog-title">退出登录</div>
        <div class="mdui-dialog-content">确定要退出登录吗?</div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-cancel="" style="border-radius: 15px;">取消</button>
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" onclick="gologout();"
                style="border-radius: 15px;">确定</button>
        </div>
        <script>
            function gologout() {
                fetch(window['api'] + "/logout", {
                    credentials: 'include'
                }).then(function (response) {
                    return response.text();
                }).then(function (data) {
                    // console.log(data);
                    if (data == 'True') {
                        mdui.snackbar("登出成功;正在刷新页面");
                        setTimeout(function () {
                            location.reload();
                        }, 1000);
                    } else {
                        mdui.snackbar("登出失败:" + data);
                    }
                }).catch(function () {
                    mdui.snackbar("服务器炸了:" + error);
                });
            }
        </script>
    </div>

    <div class="mdui-dialog" id="dialog-login" style="border-radius: 20px;">
        <div class="mdui-dialog-title">通过洛谷登录</div>
        <div class="mdui-dialog-content mdui-typo">

            <p class="mdui-typo-title">STEP 1</p>
            <p>利用您已经登录的洛谷账号,新建一个<a href="https://www.luogu.com.cn/paste" target="_blank">洛谷剪贴板</a>,并将下面的密钥粘贴其中<b>(有效期为
                    10 分钟)</b>。</p>
            <pre>加载中,请稍后……</pre>
            <script>
                function copy_key() {
                    var key = document.querySelector("#dialog-login pre").innerText;
                    var input = document.createElement("input");
                    input.value = key;
                    document.body.appendChild(input);
                    input.select();
                    document.execCommand("copy");
                    document.body.removeChild(input);
                    mdui.snackbar({
                        message: "已复制密钥",
                        position: "right-top"
                    });
                }
            </script>
            <p><button class="mdui-btn mdui-color-theme-accent mdui-ripple mdui-btn-dense"
                    onclick="copy_key();">【一键粘贴】</button>然后选择发布。注意要<b>公开</b>可见!</p>

            <p class="mdui-typo-title">STEP 2</p>
            <p>发布后,请将这个云剪贴板的链接粘贴到下面(要<b>完整</b>的链接!):</p>
            <div class="mdui-textfield">
                <input class="mdui-textfield-input" type="text"
                    placeholder="形如:https://www.luogu.com.cn/paste/ler564eo" />
            </div>
            <p>完成后,请点击下方确认按钮进行校验。</p>

        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-cancel="" style="border-radius: 15px;">取消</button>
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" onclick="gologin();"
                style="border-radius: 15px;">确认</button>
        </div>
        <script>
            window['test'] = "ok!";
            function get_key() {
                fetch(window['api'] + "/key_request", {
                    credentials: 'include'
                }).then(function (response) {
                    return response.text();
                }).then(function (data) {
                    // console.log(data);
                    document.querySelector("#dialog-login pre").innerText = data;
                }).catch(function () {
                    mdui.snackbar("获取密钥失败:" + error);
                });
            }
            function gologin() {
                var url = document.querySelector("#dialog-login input").value;
                if (url == "") {
                    mdui.snackbar("总不能什么都不输入吧QWQ");
                    return;
                }
                fetch(window['api'] + "/key_check?url=" + url, {
                    credentials: 'include'
                }).then(function (response) {
                    return response.text();
                }).then(function (data) {
                    // console.log(data);
                    if (data != "False") {
                        mdui.snackbar("登录成功!即将刷新页面!");
                        setTimeout(function () {
                            location.reload();
                        }, 1000);
                    } else {
                        mdui.snackbar("登录失败:" + data);
                    }
                }).catch(function () {
                    mdui.snackbar("服务器开小差了:" + error);
                });
            }
        </script>
    </div>
    <div class="mdui-dialog" id="dialog-docs-theme" style="border-radius: 20px;">
        <div class="mdui-dialog-title">主题色设置</div>
        <div id="colorset" class="mdui-p-a-2 mdui-dialog-content">
            <small>*提示:当前配色只会在当前浏览器中保存!</small>
            <p class="mdui-typo-title">主题色</p>
            <div class="mdui-row-xs-1 mdui-row-sm-2 mdui-row-md-3">
                <div class="mdui-col">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-layout" value="auto" checked="">
                        <i class="mdui-radio-icon"></i>
                        Auto
                    </label>
                </div>
                <div class="mdui-col">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-layout" value="light">
                        <i class="mdui-radio-icon"></i>
                        Light
                    </label>
                </div>
                <div class="mdui-col">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-layout" value="dark">
                        <i class="mdui-radio-icon"></i>
                        Dark
                    </label>
                </div>
            </div>

            <p class="mdui-typo-title mdui-text-color-theme">主色</p>
            <form class="mdui-row-xs-1 mdui-row-sm-2 mdui-row-md-3">
                <div class="mdui-col mdui-text-color-amber">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="amber">
                        <i class="mdui-radio-icon"></i>
                        Amber
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-blue">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="blue">
                        <i class="mdui-radio-icon"></i>
                        Blue
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-blue-grey">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="blue-grey">
                        <i class="mdui-radio-icon"></i>
                        Blue Grey
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-brown">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="brown">
                        <i class="mdui-radio-icon"></i>
                        Brown
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-cyan">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="cyan">
                        <i class="mdui-radio-icon"></i>
                        Cyan
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-deep-orange">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="deep-orange">
                        <i class="mdui-radio-icon"></i>
                        Deep Orange
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-deep-purple">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="deep-purple">
                        <i class="mdui-radio-icon"></i>
                        Deep Purple
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-green">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="green">
                        <i class="mdui-radio-icon"></i>
                        Green
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-grey">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="grey">
                        <i class="mdui-radio-icon"></i>
                        Grey
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-indigo">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="indigo" checked="">
                        <i class="mdui-radio-icon"></i>
                        Indigo
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-light-blue">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="light-blue">
                        <i class="mdui-radio-icon"></i>
                        Light Blue
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-light-green">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="light-green">
                        <i class="mdui-radio-icon"></i>
                        Light Green
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-lime">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="lime">
                        <i class="mdui-radio-icon"></i>
                        Lime
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-orange">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="orange">
                        <i class="mdui-radio-icon"></i>
                        Orange
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-pink">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="pink">
                        <i class="mdui-radio-icon"></i>
                        Pink
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-purple">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="purple">
                        <i class="mdui-radio-icon"></i>
                        Purple
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-red">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="red">
                        <i class="mdui-radio-icon"></i>
                        Red
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-teal">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="teal">
                        <i class="mdui-radio-icon"></i>
                        Teal
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-yellow">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-primary" value="yellow">
                        <i class="mdui-radio-icon"></i>
                        Yellow
                    </label>
                </div>
            </form>

            <p class="mdui-typo-title mdui-text-color-theme-accent">强调色</p>
            <form class="mdui-row-xs-1 mdui-row-sm-2 mdui-row-md-3">
                <div class="mdui-col mdui-text-color-amber">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="amber">
                        <i class="mdui-radio-icon"></i>
                        Amber
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-blue">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="blue">
                        <i class="mdui-radio-icon"></i>
                        Blue
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-cyan">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="cyan">
                        <i class="mdui-radio-icon"></i>
                        Cyan
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-deep-orange">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="deep-orange">
                        <i class="mdui-radio-icon"></i>
                        Deep Orange
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-deep-purple">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="deep-purple">
                        <i class="mdui-radio-icon"></i>
                        Deep Purple
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-green">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="green">
                        <i class="mdui-radio-icon"></i>
                        Green
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-indigo">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="indigo">
                        <i class="mdui-radio-icon"></i>
                        Indigo
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-light-blue">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="light-blue">
                        <i class="mdui-radio-icon"></i>
                        Light Blue
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-light-green">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="light-green">
                        <i class="mdui-radio-icon"></i>
                        Light Green
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-lime">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="lime">
                        <i class="mdui-radio-icon"></i>
                        Lime
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-orange">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="orange">
                        <i class="mdui-radio-icon"></i>
                        Orange
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-pink">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="pink" checked="">
                        <i class="mdui-radio-icon"></i>
                        Pink
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-purple">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="purple">
                        <i class="mdui-radio-icon"></i>
                        Purple
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-red">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="red">
                        <i class="mdui-radio-icon"></i>
                        Red
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-teal">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="teal">
                        <i class="mdui-radio-icon"></i>
                        Teal
                    </label>
                </div>
                <div class="mdui-col mdui-text-color-yellow">
                    <label class="mdui-radio mdui-m-b-1">
                        <input type="radio" name="theme-accent" value="yellow">
                        <i class="mdui-radio-icon"></i>
                        Yellow
                    </label>
                </div>
            </form>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" style="border-radius: 15px;">完成(自动保存)</button>
        </div>
    </div>

    <script>
        document.addEventListener('click', e => {
            // 如果点击的不是 suggestionContainer
            var targ = e.target;
            var myid = targ.id;
            if (myid != 'suggestionContainer' && myid != 'inputBox') {
                $("#suggestionContainer").empty();
                lostfocus = true;
            }
            setTimeout(function () {
                var radio = document.getElementsByTagName("input");
                for (i = 0; i < radio.length; i++) {
                    if (radio[i].checked) {
                        // console.log(radio[i]);
                        c = document.getElementsByTagName("body")[0].className.split(" ");
                        for (j in c) {
                            if (c[j].indexOf(radio[i].name) != -1) {
                                document.getElementsByTagName("body")[0].classList.remove(c[j]);
                            }
                        }
                        document.getElementsByTagName("body")[0].classList.add("mdui-" + radio[i].name + "-" + radio[i].value);
                        window.localStorage.setItem(radio[i].name, radio[i].value);
                    }
                }
                // console.log("log!");
            }, 50);
        })
    </script>
    <script>
        var radio = document.getElementsByTagName("input");
        for (i = 0; i < radio.length; i++) {
            if (radio[i].checked) {
                if (window.localStorage.getItem(radio[i].name) != radio[i].value) {
                    radio[i].removeAttribute("checked");
                }
            } else {
                if (window.localStorage.getItem(radio[i].name) == radio[i].value) {
                    radio[i].setAttribute("checked", "checked");
                }
            }
        }

        var radio = document.getElementsByTagName("input");
        for (i = 0; i < radio.length; i++) {
            if (radio[i].checked) {
                // console.log(radio[i]);
                c = document.getElementsByTagName("body")[0].className.split(" ");
                for (j in c) {
                    if (c[j].indexOf(radio[i].name) != -1) {
                        document.getElementsByTagName("body")[0].classList.remove(c[j]);
                    }
                }
                document.getElementsByTagName("body")[0].classList.add("mdui-" + radio[i].name + "-" + radio[i].value);
                window.localStorage.setItem(radio[i].name, radio[i].value);
            }
        }
        // console.log("log2!");
    </script>

    <div class="mdui-dialog" id="dialog-editPendant" style="border-radius: 20px;">
        <div class="mdui-dialog-title">编辑头像挂件</div>
        <div class="mdui-dialog-content mdui-typo">
            <p><b>高级计划</b>期间可注册及修改。</p>
            <p>您需要安装 OIso 油猴插件 tamperOIso,方可在洛谷上看到自己及他人的头像挂件。</p>
            <h5>示例地址</h5>
            <pre>https://s2.loli.net/2023/02/26/pXr84FtJlSI67LG.png
https://s2.loli.net/2023/02/26/1OK6EYewAP4htSN.png</pre>
            <h5>设置头像挂件图片地址</h5>
            <div class="mdui-textfield">
                <input class="mdui-textfield-input" id="pendanturl" type="url" placeholder="请先将图片传到图床" />
            </div>
            <h5>预览</h5>
            <center>
                <!-- luogu avatar img -->
                <img id="avatarimg" style="border-radius: 50%;" />
                <img id="pendantimg"
                    style="margin-left: -100px;height: 100px;transform: scale(1.35);opacity: 0.75;border-radius: 5%;" />
            </center>
            <p>完成后,请点击下方确认按钮。</p>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-cancel="" style="border-radius: 15px;">取消</button>
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" onclick="save_pendant();"
                style="border-radius: 15px;">确认</button>
        </div>
    </div>
    <script>
        // pendanturl的内容发生变化时:
        $("#pendanturl").bind('input propertychange', function () {
            // console.log("log!");
            $("#pendantimg").attr("src", $("#pendanturl").val());
        });
        function get_pendant() {
            var url = window['api'] + "/pendant/get?uid=" + String(window['uid']);
            console.log(url);
            $.ajax({
                url: url,
                type: "GET",
                success: function (data) {
                    console.log(data);
                    if (data == 'False') {
                        mdui.snackbar("您还没有设置头像挂件捏");
                    } else {
                        document.getElementById("pendanturl").value = data;
                        document.getElementById("pendantimg").src = data;
                    }
                }
            });
        }
        function save_pendant() {
            var url = window['api'] + "/pendant/edit?url=" + $("#pendanturl").val();
            $.ajax({
                url: url,
                type: "GET",
                dataType: "json",
                xhrFields: {
                    withCredentials: true
                },
                success: function (data) {
                    if (data == 'True') {
                        mdui.snackbar("设置成功");
                    } else {
                        mdui.snackbar(data);
                    }
                }
            });
        }
    </script>

    <div class="mdui-dialog" id="dialog-editTag" style="border-radius: 20px;">
        <div class="mdui-dialog-title">编辑 tag</div>
        <div class="mdui-dialog-content mdui-typo">
            <p>高级用户:一次购买,永久获得。</p>
            <h5>设置文字颜色</h5>
            <div class="mdui-textfield">
                <input type="color" id="textcolor" />
            </div>
            <h5>设置背景颜色</h5>
            <div class="mdui-textfield">
                <input type="color" id="background" />
            </div>
            <h5>设置显示文字(支持部分 Markdown 语法),<b>50个字符以内</b></h5>
            <div class="mdui-textfield">
                <input class="mdui-textfield-input" type="text" placeholder="可用超链接、下划线、删除线、加粗、倾斜等" id="content" />
            </div>
            <p>完成后,请点击下方确认按钮。</p>
            <p>注:请勿包含一些迷惑他人的内容。</p>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-cancel="" style="border-radius: 15px;">取消</button>
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" onclick="goTag();"
                style="border-radius: 15px;">确认</button>
        </div>
        <script>
            function goTag() {
                var content = encodeURIComponent(document.getElementById("content").value);
                var f = encodeURIComponent(document.getElementById("textcolor").value);
                var b = encodeURIComponent(document.getElementById("background").value);
                fetch(`${window['api']}/tag/edit?f=${String(f)}&b=${String(b)}&content=${content}`, {
                    credentials: 'include'
                }).then(function (response) {
                    return response.text();
                }).then(function (data) {
                    // console.log(data);
                    if (data == "True") {
                        mdui.snackbar("修改成功!");
                        // get_benben();
                    } else {
                        mdui.snackbar("修改失败:" + data);
                    }
                }).catch(function () {
                    mdui.snackbar("服务器寄了:" + data);
                });
            }
        </script>
        <script>
            function get_tag() {
                // url: /tag/getmine
                fetch(`${window['api']}/tag/getmine`, {
                    credentials: 'include'
                }).then(function (response) {
                    return response.text();
                }).then(function (data) {
                    if (data == 'False') {
                        return;
                    }
                    data = JSON.parse(data);
                    // console.log(data);
                    /*
                    {
                        "fontcolor": "#000000",
                        "background": "#12afce",
                        "content": "114514"
                    }
                    */
                    document.getElementById("textcolor").value = data["fontcolor"];
                    document.getElementById("background").value = data["background"];
                    document.getElementById("content").value = data["content"];
                }).catch(function () {
                    mdui.snackbar("出错了:" + error);
                });
            }
        </script>
    </div>

    <div class="mdui-dialog" id="dialog-spider" style="border-radius: 20px;">
        <div class="mdui-dialog-title">博客收录</div>
        <div class="mdui-dialog-content mdui-typo">

            <p>由于种种原因,我们无法及时爬取您的博客。所以您可以在这里手动请求爬取您的博客。</p>
            <p><b>仅能爬取洛谷博客、CSDN 和 cnblogs 博客。其他博客请至 <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                        onclick="window.open('https://icp.gov.moe/');">icp.gov.moe</button> 进行萌备,通过后即可爬取。</b></p>
            <p>博客爬取有以下几种形式:</p>
            <p>1. 您可以输入某一篇洛谷文章的链接,那么会爬取这一篇文章。如 https://www.luogu.com.cn/blog/chen-zhe/luo-gu-ping-ce-ji-ji-ri
            </p>
            <p>2. 您可以输入某个洛谷用户的 uid ,是一串数字,由此爬取该用户的所有文章。如 100544</p>
            <p>3. 您可以输入某个 CSDN 用户的主页。如 https://blog.csdn.net/Floatiy</p>
            <p>4. 您可以输入某个 cnblogs 用户的主页。如 https://www.cnblogs.com/Jasper08</p>
            <p>5. 您可以输入您的博客网址,如 https://www.amzcd.top ;注意,输入的域名(请确认是否需要www)是要可以在 https://icp.gov.moe/ 查到的。</p>
            <div class="mdui-textfield">
                <input class="mdui-textfield-input" type="text" placeholder="请按照上面的格式输入,系统会自动识别" />
            </div>
            <p>完成后,请点击下方确认按钮。</p>
            <p>注意,不管您选择哪种方式,<b>一天最多爬15次</b>。</p>

        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-cancel="" style="border-radius: 15px;">取消</button>
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" onclick="gospider();"
                style="border-radius: 15px;">确认</button>
        </div>
        <script>
            function gospider() {
                var url = document.querySelector("#dialog-spider input").value;
                if (isNaN(url)) {
                    // 说明是链接
                    if (url.indexOf("https://www.luogu.com.cn/blog/") == 0) {
                        fetch(window['api'] + "/spider/request?type=lgblog_single_passage&id=" + url, {
                            credentials: 'include'
                        }).then(function (response) {
                            return response.text();
                        }).then(function (data) {
                            // console.log(data);
                            if (data == "True") {
                                mdui.snackbar("请求 洛谷文章 成功!已排入爬虫队列!");
                            } else {
                                mdui.snackbar("出错了:" + data);
                            }
                        }).catch(function () {
                            mdui.snackbar("失败了:" + error);
                        });
                        return;
                    } else if (url.indexOf("https://www.cnblogs.com/") == 0) {
                        fetch(window['api'] + "/spider/request?type=cnblogs&id=" + url, {
                            credentials: 'include'
                        }).then(function (response) {
                            return response.text();
                        }).then(function (data) {
                            // console.log(data);
                            if (data == "True") {
                                mdui.snackbar("请求 cnblogs 成功!已排入爬虫队列!");
                            } else {
                                mdui.snackbar("出错了:" + data);
                            }
                        }).catch(function () {
                            mdui.snackbar("失败了:" + error);
                        });
                        return;
                    } else if (url.indexOf("https://blog.csdn.net/") == 0) {
                        fetch(window['api'] + "/spider/request?type=csdn&id=" + url, {
                            credentials: 'include'
                        }).then(function (response) {
                            return response.text();
                        }).then(function (data) {
                            // console.log(data);
                            if (data == "True") {
                                mdui.snackbar("请求 csdn 成功!已排入爬虫队列!");
                            } else {
                                mdui.snackbar("出错了:" + data);
                            }
                        }).catch(function () {
                            mdui.snackbar("失败了:" + error);
                        });
                        return;
                    } else {
                        fetch(window['api'] + "/spider/request?type=personal&id=" + url, {
                            credentials: 'include'
                        }).then(function (response) {
                            return response.text();
                        }).then(function (data) {
                            // console.log(data);
                            if (data == "True") {
                                mdui.snackbar("请求 个人博客 成功!已排入爬虫队列!");
                            } else {
                                mdui.snackbar("出错了:" + data);
                            }
                        }).catch(function () {
                            mdui.snackbar("失败了:" + error);
                        });
                        return;
                    }
                } else {
                    // 说明是uid
                    fetch(window['api'] + "/spider/request?type=lgblog_user&id=" + url, {
                        credentials: 'include'
                    }).then(function (response) {
                        return response.text();
                    }).then(function (data) {
                        // console.log(data);
                        if (data == "True") {
                            mdui.snackbar("请求 洛谷用户博客 成功!已排入爬虫队列!");
                        } else {
                            mdui.snackbar("出错了:" + data);
                        }
                    }).catch(function () {
                        mdui.snackbar("失败了:" + error);
                    });
                    return;
                }
            }
        </script>
    </div>

    <div class="mdui-dialog" id="dialog-third-party-blog" style="border-radius: 20px;">
        <div class="mdui-dialog-title">第三方博客爬取</div>
        <div class="mdui-dialog-content mdui-typo">
            <p>请填充下列内容,然后通过邮件发送给 <a id="email"></a> 或通过洛谷<a href="https://www.luogu.com.cn/chat?uid=222419"
                    target="_blank">私信我</a></p>
            <pre>第三方博客爬取:
博客地址:【如 https://www.amzcd.top 】
博客名称:【如 diyanqi's Blog! 】
</pre>
            <p>暂时先这样吧,感觉全自动化有点麻烦。</p>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" style="border-radius: 15px;">完成</button>
        </div>
    </div>
    <script>
        let at = "@";
        let email_address = "diyanqi" + at + "qq.com";
        document.getElementById("email").setAttribute("href", "mailto:" + email_address);
        document.getElementById("email").innerText = email_address;
    </script>

    <div class="mdui-dialog" id="dialog-spider-status" style="border-radius: 20px;">
        <div class="mdui-dialog-title">爬虫状态</div>
        <div class="mdui-dialog-content mdui-typo">
            <div class="mdui-card-content" id="spider-status">获取中……</div>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" style="border-radius: 15px;">完成</button>
        </div>
    </div>

    <div class="mdui-dialog" id="dialog-bingimg-detail" style="border-radius: 20px;">
        <div class="mdui-dialog-title">必应壁纸信息</div>
        <div class="mdui-dialog-content mdui-typo">
            <div class="mdui-typo">
                <a herf="ksadf" class="bg-info" id="detail" target="_blank">加载中...</a>
            </div>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" style="border-radius: 15px;">完成</button>
        </div>
    </div>

    <script>
        function start_live() {
            // 将云听歌换成 /live
            try {
                document.getElementById("live").setAttribute("src", "/live/index.html");
            } catch (e) {
                console.log("云听歌不存在");
            }
            try {
                document.getElementById("livebot").setAttribute("src", "/live/index.html");
            } catch (e) {
                console.log("云听歌不存在");
            }
        }
    </script>

    <div class="mdui-dialog" id="dialog-mylive" style="border-radius: 20px;">
        <div class="mdui-dialog-title" id="live_dialog_title">我的直播间</div>
        <div class="mdui-dialog-content mdui-typo">
            <div class="mdui-typo">
                <h3>免责声明</h3>
                <b>使用本直播功能即默认您已阅读 由中华人民共和国国家互联网信息办公室发布的 <a href="http://www.cac.gov.cn/2016-11/04/c_1119847629.htm"
                        target="_blank">互联网直播服务管理规定</a> 。
                    本直播不含打赏功能,仅供信息学竞赛选手的学习交流之用,造成的后果开发者及平台服务提供者概不负责。严禁直播任何损害国家利益、有害社会公德、违反国家法律等的一切内容。违者将封禁账号,并将用户相关信息举报至有关部门。</b>
                <h3>直播间信息</h3>
                <p>请放心填写,此信息日后可多次修改。</p>
                <div class="mdui-textfield mdui-textfield-floating-label">
                    <label class="mdui-textfield-label">直播间标题</label>
                    <input class="mdui-textfield-input" type="text" id="title" />
                </div>
                <div class="mdui-textfield mdui-textfield-floating-label">
                    <label class="mdui-textfield-label">简介</label>
                    <input class="mdui-textfield-input" type="text" id="desc" />
                </div>
                <div class="mdui-textfield mdui-textfield-floating-label">
                    <label class="mdui-textfield-label">封面图片 url</label>
                    <input class="mdui-textfield-input" type="url" id="coverurl" />
                </div>
                <select class="mdui-select" id="category">
                    <option value="disabled" disabled>请选择分区</option>
                    <option value="coding">写代码</option>
                    <option value="gaming">游戏休闲</option>
                    <option value="learning">授课学习</option>
                    <option value="other">其他</option>
                </select>
                <div>
                    <h3>推流</h3>
                    <p>推荐使用 OBS 进行推流。推荐画质:960x540;24 fps。使用极高的画质并故意卡服者,将作封禁处理。</p>
                    <h5>服务器地址</h5>
                    <pre id="baseurl"></pre>
                    <h5>推流码</h5>
                    <pre id="streamkey"></pre>
                </div>
            </div>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" style="border-radius: 15px;"
                onclick="submit_liveinfo();">提交</button>
        </div>
    </div>
    <script>
        function get_mylive_detail() {
            var uidstr = String(window["uid"]);
            document.getElementById("live_dialog_title").innerText = "用户 " + uidstr + " 的直播间信息";
            var url = window['api'] + "/live/detail?room=" + uidstr;
            $.ajax({
                url: url,
                type: "GET",
                dataType: "json",
                xhrFields: {
                    withCredentials: true
                },
                success: function (data) {
                    if (data["code"] == 200) {
                        var detail = data["data"];
                        document.getElementById("title").value = detail["title"];
                        document.getElementById("desc").value = detail["desc"];
                        document.getElementById("coverurl").value = detail["cover"];
                        document.getElementById("category").value = detail["category"];
                        mdui.mutation();
                        get_stream_key();
                    } else {
                        window['first_time'] = true;
                        mdui.snackbar("这是你第一次创建直播间,快去填写信息吧!")
                    }
                },
                error: function (data) {
                    mdui.snackbar("获取直播间信息失败!")
                }
            });
        }
        function submit_liveinfo() {
            var uidstr = String(window["uid"]);
            var title = document.getElementById("title").value;
            var desc = document.getElementById("desc").value;
            var cover = document.getElementById("coverurl").value;
            var category = document.getElementById("category").value;
            var url = window['api'] + "/live/register";
            $.ajax({
                url: url,
                type: "POST",
                dataType: "json",
                xhrFields: {
                    withCredentials: true
                },
                data: {
                    "title": title,
                    "desc": desc,
                    "cover": cover,
                    "category": category
                },
                success: function (data) {
                    if (data["code"] == 200) {
                        if (window['first_time']) {
                            window['first_time'] = false;
                            mdui.snackbar("创建成功!刷新页面并重新打开此窗口即可获得推流地址!")
                        } else {
                            mdui.snackbar("编辑成功!")
                        }
                    } else {
                        if (window['first_time']) {
                            window['first_time'] = false;
                            mdui.snackbar("创建失败!")
                        } else {
                            mdui.snackbar("编辑失败!")
                        }
                    }
                },
                error: function (data) {
                    mdui.snackbar("编辑失败!")
                }
            });
        }
        function get_stream_key() {
            var uidstr = String(window["uid"]);
            var url = window['api'] + "/live/rtmpurl";
            $.ajax({
                url: url,
                type: "GET",
                dataType: "json",
                xhrFields: {
                    withCredentials: true
                },
                success: function (data) {
                    if (data["code"] == 200) {
                        var detail = data;
                        document.getElementById("baseurl").innerText = detail["baseurl"];
                        document.getElementById("streamkey").innerText = detail["key"];
                    } else {
                        mdui.snackbar("获取推流地址失败!")
                    }
                },
                error: function (data) {
                    mdui.snackbar("获取推流地址失败!")
                }
            });
        }
    </script>

    <div class="mdui-dialog" id="dialog-livelist" style="border-radius: 20px;">
        <div class="mdui-dialog-title" id="live_dialog_title">直播选台</div>
        <div class="mdui-dialog-content mdui-typo">
            <div class="mdui-typo">
                <ul class="mdui-list">
                    <li class="mdui-list-item mdui-ripple" onclick="watchlive('roomid');">
                        <div class="mdui-list-item-content">
                            <div class="mdui-list-item-title mdui-list-item-one-line">加载中,请稍后……</div>
                            <div class="mdui-list-item-text mdui-list-item-two-line">哔哩,哔啵。</div>
                        </div>
                    </li>
                </ul>
            </div>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" style="border-radius: 15px;">完成</button>
        </div>
    </div>
    <script>
        function get_live_list() {
            var url = window['api'] + "/live/list";
            $.ajax({
                url: url,
                type: "GET",
                dataType: "json",
                xhrFields: {
                    withCredentials: true
                },
                success: function (data) {
                    if (data["code"] == 200) {
                        var detail = data["data"];
                        var list = document.getElementsByClassName("mdui-list")[0];
                        list.innerHTML = "";
                        for (var i = 0; i < detail.length; i++) {
                            var item = document.createElement("li");
                            item.className = "mdui-list-item mdui-ripple";
                            item.setAttribute("onclick", "watchlive('" + detail[i]["roomid"] + "');");
                            var item_content = document.createElement("div");
                            item_content.className = "mdui-list-item-content";
                            var item_title = document.createElement("div");
                            item_title.className = "mdui-list-item-title mdui-list-item-one-line";
                            item_title.innerText = detail[i]["title"];
                            var item_text = document.createElement("div");
                            item_text.className = "mdui-list-item-text mdui-list-item-two-line";
                            item_text.innerText = detail[i]["desc"];
                            item_content.appendChild(item_title);
                            item_content.appendChild(item_text);
                            item.appendChild(item_content);
                            list.appendChild(item);
                        }
                        mdui.mutation();
                    } else {
                        mdui.snackbar("获取直播列表失败!")
                    }
                },
                error: function (data) {
                    mdui.snackbar("获取直播列表失败!")
                }
            });
        }
        function watchlive(roomid) {
            window['live_chosen'] = roomid;
            document.getElementById("mediadiv").innerHTML = `<div class="mainContainer" id="mainContain">
                <video id="videoElement" class="centeredVideo" controls 
                style="height: 333px; width: 100%; object-fit: fill;"
                >Your browser is too old to
                    support HTML5 video.</video>
            </div>`;
            setTimeout(function () {
                setup_stream_user(roomid);
            }, 100);
            setTimeout(function () {
                if (document.getElementById("videoElement").paused) {
                    mdui.snackbar({
                        message: '播放不通畅?试试刷新页面!',
                        buttonText: '立即刷新',
                        onButtonClick: function () {
                            window.location.reload();
                        }
                    });
                }
            }, 5000);
        }
        function setup_stream_user(roomid) {
            url = window['api'] + "/live/detail?room=" + roomid;
            $.ajax({
                url: url,
                type: "GET",
                dataType: "json",
                xhrFields: {
                    withCredentials: true
                },
                success: function (data) {
                    if (data["code"] == 200) {
                        setup_stream(data["urls"]["flv"]);
                        document.getElementById("stream_title").innerText = data["data"]["title"] + " - 用户 " + String(data["data"]["uid"]);
                    } else {
                        mdui.snackbar("获取直播地址失败!")
                    }
                },
                error: function (data) {
                    mdui.snackbar("获取直播地址失败!")
                }
            });
        }
        get_live_list();
    </script>

    <div class="mdui-dialog" id="dialog-aidraw" style="border-radius: 20px;">
        <div class="mdui-dialog-title">AI 作图</div>
        <div class="mdui-dialog-content mdui-typo">
            <div class="mdui-typo">
                <h5>注:此功能为 VIP 功能。限制请求:30次/天。</h5>
                <h5>请输入作图提示词,用英文逗号<code>,</code>分隔提示词。使用英文提示词质量更佳。</h5>
                <h5>调用 OpenAI API,作图时间约为 7 秒,请耐心等待。</h5>
                <!-- 一个输入框,请输入作图提示词 -->
                <div class="mdui-textfield mdui-textfield-floating-label">
                    <label class="mdui-textfield-label">作图提示词,用英文逗号分隔!</label>
                    <input class="mdui-textfield-input" type="text" id="live_dialog_input" />
                </div>
                <!-- 按钮:作图!-->
                <button class="mdui-btn mdui-ripple mdui-color-theme-accent" onclick="aidraw_submit();"
                    id="aidb">作图!</button>
                <div class="mdui-progress" id="aiprogress" hidden>
                    <div class="mdui-progress-indeterminate"></div>
                </div>
                <!-- 两个并排的图片 -->
                <div class="mdui-container">
                    <div class="mdui-row">
                        <div class="mdui-col-md-6 mdui-col-xs-12">
                            <div class="mdui-card">
                                <div class="mdui-card-media">
                                    <img src="https://s2.loli.net/2023/02/01/5aPMjvoSYe1D9Zm.png" id="img1" />
                                    <div class="mdui-card-media-covered">
                                        <div class="mdui-card-actions">
                                            <button class="mdui-btn mdui-ripple mdui-ripple-white"
                                                onclick="down('img1');">下载</button>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="mdui-col-md-6 mdui-col-xs-12">
                            <div class="mdui-card">
                                <div class="mdui-card-media">
                                    <img src="https://s2.loli.net/2023/02/01/5aPMjvoSYe1D9Zm.png" id="img2" />
                                    <div class="mdui-card-media-covered">
                                        <div class="mdui-card-actions">
                                            <button class="mdui-btn mdui-ripple mdui-ripple-white"
                                                onclick="down('img2');">下载</button>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" style="border-radius: 15px;">结束</button>
        </div>
    </div>
    <script>
        function aidraw_submit() {
            // https://api.oiso.cf:2096/ai/waifu?desc=cat,girl
            document.getElementById("aidb").disabled = true;
            document.getElementById("aiprogress").hidden = false;
            mdui.snackbar("已提交任务,大约需要 30 秒,请耐心等待!")
            var desc = document.getElementById("live_dialog_input").value;
            if (desc == "") {
                mdui.snackbar("请输入作图提示词!");
                return;
            }
            var url = window['api'] + "/ai/waifu?desc=" + desc;
            $.ajax({
                url: url,
                type: "GET",
                dataType: "json",
                xhrFields: {
                    withCredentials: true
                },
                success: function (data) {
                    document.getElementById("img1").src = data["img1"];
                    document.getElementById("img2").src = data["img2"];
                    mdui.snackbar("作图成功!");
                    document.getElementById("aidb").disabled = false;
                    document.getElementById("aiprogress").hidden = true;
                },
                error: function (data) {
                    mdui.snackbar("作图失败!");
                    document.getElementById("aidb").disabled = false;
                    document.getElementById("aiprogress").hidden = true;
                }
            });
        }
        function down(id) {
            var img = document.getElementById(id).src;
            var a = document.createElement("a");
            a.href = img;
            a.download = "waifu.png";
            a.click();
        }
    </script>

    <div class="mdui-dialog" id="dialog-imgupload" style="border-radius: 20px;">
        <div class="mdui-dialog-title">图片上传(使用编程猫社区 API )</div>
        <div class="mdui-dialog-content mdui-typo mdui-container">
            <input type="file" name="file" id="file" class="mdui-btn mdui-ripple" style="border-radius: 15px;">
            <button class="mdui-btn mdui-ripple" style="border-radius: 15px;" id="subup">上传</button>
            <br />
            <div class="mdui-progress" id="upprogress">
                <div class="mdui-progress-indeterminate"></div>
            </div>
            <br />
            <div class="mdui-row">
                <pre id="url" class="mdui-col-xs-10">直链</pre>
                <button class="mdui-btn mdui-ripple mdui-col-xs-2" style="border-radius: 15px;" id="copy-url">
                    <i class="mdui-icon material-icons mdui-icon-left">content_copy</i> 复制直链
                </button>
            </div>
            <div class="mdui-row">
                <pre id="url-markdown" class="mdui-col-xs-10">Markdown 格式</pre>
                <button class="mdui-btn mdui-ripple mdui-col-xs-2" style="border-radius: 15px;" id="copy-url-markdown">
                    <i class="mdui-icon material-icons mdui-icon-left">content_copy</i> 复制 Markdown
                </button>
            </div>
            <div class="mdui-row">
                <pre id="url-html" class="mdui-col-xs-10">HTML 格式</pre>
                <button class="mdui-btn mdui-ripple mdui-col-xs-2" style="border-radius: 15px;" id="copy-url-html">
                    <i class="mdui-icon material-icons mdui-icon-left">content_copy</i> 复制 HTML
                </button>
            </div>
            <div class="mdui-row">
                <pre id="url-bbcode" class="mdui-col-xs-10">BBCode 格式</pre>
                <button class="mdui-btn mdui-ripple mdui-col-xs-2" style="border-radius: 15px;" id="copy-url-bbcode">
                    <i class="mdui-icon material-icons mdui-icon-left">content_copy</i> 复制 BBCode
                </button>
            </div>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" style="border-radius: 15px;">完成</button>
        </div>
    </div>
    <script>
        function copyToClip(content) {
            var aux = document.createElement("input");
            aux.setAttribute("value", content);
            document.body.appendChild(aux);
            aux.select();
            document.execCommand("copy");
            document.body.removeChild(aux);
        }
        document.getElementById("subup").onclick = function () {
            document.getElementById("subup").disabled = true;
            document.getElementById("subup").innerText = "上传中...";
            let file = document.getElementById("file").files[0];
            let formData = new FormData();
            formData.append("file", file);
            let xhr = new XMLHttpRequest();
            xhr.open("POST", window['api'] + "/img/upload", true);
            xhr.withCredentials = true;
            xhr.send(formData);
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    var data = JSON.parse(xhr.responseText);
                    if (data.code == 200) {
                        mdui.snackbar(data.msg);
                        document.getElementById('url').innerText = data.url;
                        document.getElementById('copy-url').onclick = function () {
                            copyToClip(data.url);
                            mdui.snackbar("已复制到剪贴板");
                        }
                        document.getElementById('url-markdown').innerText = "![](" + data.url + ")";
                        document.getElementById('copy-url-markdown').onclick = function () {
                            copyToClip("![](" + data.url + ")");
                            mdui.snackbar("已复制到剪贴板");
                        }
                        document.getElementById('url-html').innerText = "<img src=\"" + data.url + "\"/>";
                        document.getElementById('copy-url-html').onclick = function () {
                            copyToClip("<img src=\"" + data.url + "\"/>");
                            mdui.snackbar("已复制到剪贴板");
                        }
                        document.getElementById('url-bbcode').innerText = "[img]" + data.url + "[/img]";
                        document.getElementById('copy-url-bbcode').onclick = function () {
                            copyToClip("[img]" + data.url + "[/img]");
                            mdui.snackbar("已复制到剪贴板");
                        }
                    } else {
                        mdui.snackbar("出错了:" + data.msg);
                    }
                }
                document.getElementById("subup").disabled = false;
                document.getElementById("subup").innerText = "上传";
            }
            //进度条
            xhr.upload.onprogress = function (e) {
                console.log(e.loaded, e.total);
                if (e.lengthComputable) {
                    var percent = e.loaded / e.total * 100;
                    console.log("上传进度:" + percent + "%")
                    document.getElementById("upprogress").style.display = "block";
                    document.getElementById("upprogress").style.width = percent + "%";
                }
            }
        }
    </script>

    <div class="mdui-dialog" id="dialog-online_show" style="border-radius: 20px;">
        <div class="mdui-dialog-title" id="show_number">在线人数</div>
        <div class="mdui-dialog-content mdui-typo">
            <ul class="mdui-list" id="show_people">
                <li class="mdui-list-item mdui-ripple">1</li>
                <li class="mdui-list-item mdui-ripple">2</li>
                <li class="mdui-list-item mdui-ripple">3</li>
            </ul>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" style="border-radius: 15px;">完成</button>
        </div>
    </div>

    <div class="mdui-dialog" id="dialog-vip" style="border-radius: 20px;">
        <div class="mdui-dialog-title">会员计划</div>
        <div class="mdui-dialog-content mdui-typo">
            <p>成为我们的会员,不但能够维持我们的服务器费用,还可以激励我们更好地开发,更能为您带来更多会员权益。</p>
            <div class="mdui-table-fluid">
                <table class="mdui-table">
                    <thead>
                        <tr>
                            <th>条目</th>
                            <th>OIso Free 免费计划</th>
                            <th>OIso Premium 会员计划</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>搜索限制</td>
                            <td>500次/天</td>
                            <td>无限制</td>
                        </tr>
                        <tr>
                            <td>博客收录</td>
                            <td>15次/天</td>
                            <td>15次/天</td>
                        </tr>
                        <tr>
                            <td>免费图床</td>
                            <td>15张/天</td>
                            <td>15张/天</td>
                        </tr>
                        <tr>
                            <td>tamperOIso 洛谷增强脚本</td>
                            <td>免费获取</td>
                            <td>免费获取</td>
                        </tr>
                        <tr>
                            <td>广告</td>
                            <td>偶尔的广告</td>
                            <td>无广告</td>
                        </tr>
                        <tr>
                            <td>AI 对话服务</td>
                            <td></td>
                            <td>无限制使用(非滥用)</td>
                        </tr>
                        <tr>
                            <td>AI 画图服务</td>
                            <td></td>
                            <td>30请求/天(非滥用)</td>
                        </tr>
                        <tr>
                            <td>首页 tag</td>
                            <td>如果之前订阅过 Premium 计划并注册过 tag ,日后也能修改</td>
                            <td>一次购买,永久拥有</td>
                        </tr>
                        <tr>
                            <td>洛谷网头像挂件</td>
                            <td></td>
                            <td>计划有效期内可编辑(需安装油猴插件)</td>
                        </tr>
                        <tr>
                            <td>进入我们的感谢名单</td>
                            <td></td>
                            <td>永久获得</td>
                        </tr>
                        <tr>
                            <td>更多权益</td>
                            <td>正在开发中!</td>
                            <td>敬请期待!</td>
                        </tr>
                    </tbody>
                </table>
            </div>
            <p id="present_trail">您当前的计划:</p>
            <p id="expire_time">到期时间:</p>
            <p>什么,在哪里赞助我们?点击右方<a target="_blank" href="https://afdian.net/a/diyanqi" style="color:yellow;">小黄车</a>即可购买!
            </p>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" style="border-radius: 15px;">完成</button>
        </div>
    </div>

    <div class="mdui-dialog" id="dialog-thanks" style="border-radius: 20px;">
        <div class="mdui-dialog-title">鸣谢名单</div>
        <div class="mdui-dialog-content mdui-typo">
            <p>感谢以下同学赞助 OIso !您的支持是开发者的不懈动力!</p>
            <ul class="mdui-list" id="thx"></ul>
            <script>
                const lst = [
                    [325014, "liuliuabc"],
                    [541095, "CR7_houyetong"],
                    [719939, "a12a"],
                    [765440, "hycJuRuo"],
                    [231343, "Icedpiggy"],
                    [632128, "niceeeeeeeeeeee"],
                    [874567, "WMH922"],
                    [609249, "__Walter_Fang__"],
                ];
                var thx = document.getElementById("thx");
                thx.innerHTML = "";
                for (var i = 0; i < lst.length; i++) {
                    var item = document.createElement("li");
                    item.className = "mdui-list-item mdui-ripple";
                    item.setAttribute("onclick", "window.open('https://www.luogu.com.cn/user/" + lst[i][0] + "');");
                    var item_avatar = document.createElement("div");
                    item_avatar.className = "mdui-list-item-avatar";
                    var item_avatar_img = document.createElement("img");
                    item_avatar_img.src = "https://cdn.luogu.com.cn/upload/usericon/" + lst[i][0] + ".png";
                    item_avatar.appendChild(item_avatar_img);
                    var item_content = document.createElement("div");
                    item_content.className = "mdui-list-item-content";
                    item_content.innerText = "@" + lst[i][1];
                    item.appendChild(item_avatar);
                    item.appendChild(item_content);
                    thx.appendChild(item);
                }
            </script>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" style="border-radius: 15px;">完成</button>
        </div>
    </div>

    <div class="mdui-dialog" id="dialog-redeem" style="border-radius: 20px;">
        <div class="mdui-dialog-title">兑换代码</div>
        <div class="mdui-dialog-content mdui-typo">
            <p>成为我们的会员,不但能够维持我们的服务器费用,还可以激励我们更好地开发,更能为您带来更多会员权益。</p>
            <p>您可以在下方输入兑换代码,以兑换 OIso 会员服务等。</p>
            <p><b>一天只有10次请求机会,这是为了防止暴力破解,请您谅解。</b></p>
            <p><b>TIP:只有等当前计划到期了以后才能兑换新的计划。</b></p>
            <p>
            <div class="mdui-textfield">
                <input class="mdui-textfield-input" id="redeem_code" type="text"
                    placeholder="形如:XXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX" />
            </div>
            </p>
            <p>
                <button class="mdui-btn mdui-ripple mdui-color-theme-accent" id="redeem_btn"
                    style="border-radius: 15px;">点我兑换!</button>
            </p>
            <p>什么,在哪里获取兑换代码?点击右方<a target="_blank" href="https://afdian.net/a/diyanqi"
                    style="color:yellow;">小黄车</a>即可购买!</p>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" style="border-radius: 15px;">完成</button>
        </div>
    </div>
    <script>
        document.getElementById("redeem_btn").onclick = function () {
            var code = document.getElementById("redeem_code").value;
            if (code == "") {
                mdui.snackbar({
                    message: '请输入兑换代码!',
                    position: 'right-top'
                });
            } else {
                // window["api"]+/redeem?code=code; withCredentials=true; use ajax
                $.ajax({
                    url: window["api"] + "/redeem?code=" + code,
                    type: "GET",
                    xhrFields: {
                        withCredentials: true
                    },
                    success: function (data) {
                        if (data["code"] == 200) {
                            mdui.snackbar({
                                message: '兑换成功!' + data["msg"],
                                position: 'right-top'
                            });
                            document.getElementById("present_trail").innerHTML = "您当前的计划:" + data["data"]["plan"];
                            document.getElementById("expire_time").innerHTML = "到期时间:" + data["data"]["expire"];
                        } else {
                            mdui.snackbar({
                                message: data["msg"],
                                position: 'right-top'
                            });
                        }
                    },
                    error: function (data) {
                        mdui.snackbar({
                            message: '兑换失败!' + data["msg"],
                            position: 'right-top'
                        });
                    }
                });
            }
        }
    </script>

    <div class="mdui-dialog" id="dialog-free" style="border-radius: 20px;">
        <div class="mdui-dialog-title">签到领红包</div>
        <div class="mdui-dialog-content mdui-typo">
            <h3>每日签到心情好</h3>
            <!--<button class="mdui-btn mdui-ripple mdui-color-theme-accent" id="dk_btn" style="border-radius: 15px;"
                onclick="dk();" disabled>点我签到获取3积分</button>-->
            <h3>支付宝红包</h3>
            <p>您只需支付宝搜索「813197162」,或者通过支付宝扫描二维码,即可领取 OIso 官方每日红包。</p>
            <img src="/img/redPacket.png" />
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" style="border-radius: 15px;">完成</button>
        </div>
    </div>

    <div class="mdui-dialog" id="dialog-rewards" style="border-radius: 20px;">
        <div class="mdui-dialog-title">我的积分</div>
        <div class="mdui-dialog-content mdui-typo">
            <p>积分可以在 OIso 中换取会员计划等。</p>
            <p><b id="current_point">当前积分:获取中……</b></p>
            <h3>积分奖励细则</h3>
            <p>1. 每日打卡:+3积分</p>
            <p>2. 邀请1位新用户登录:+3积分</p>
            <p>您可以复制下方的 Markdown 发送给好友!发到犇犇,发到帖子下,发到任何合理合规的地方!</p>
            <pre
                id="reflink">通过这个链接 →[https://www.oiso.cf/](https://www.oiso.cf?ref=222419)← 登录 OIso 官网,免费领取 3 积分,也能为我助力!</pre>
            <p>3. 安装油猴脚本:+5积分</p>
            <p>油猴脚本点击右边链接安装:<a href="https://tamper.oiso.cf/tamperoiso.user.js" target="_blank">tamperOIso</a></p>
            <h3>兑换会员</h3>
            <p>1. 25 积分兑换 3 天 Premium 会员!</p>
            <button class="mdui-btn mdui-ripple mdui-color-theme-accent" id="redeem1_btn" style="border-radius: 15px;"
                onclick="redeem1();">点击兑换 3 天 Premium 会员!</button>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" style="border-radius: 15px;">完成</button>
        </div>
    </div>

    <div class="mdui-dialog" id="dialog-qq" style="border-radius: 20px;">
        <div class="mdui-dialog-title">QQ 用户群</div>
        <div class="mdui-dialog-content mdui-typo">
            <p>OIso 用户体验反馈群:891536401</p>
            <p>入群验证码:1145141919810</p>
            <button class="mdui-btn mdui-ripple mdui-color-theme-accent" id="qq_jq_btn" style="border-radius: 15px;"
                onclick="window.open('http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=0fNrMp2BEfCPEK4rT8PDkpVLRBeuL6VA&authKey=k0O9FleyVDWW7ai8hOXPTZ2d0SFfn5%2FJNKqyLmfvDHyluHAR03Vh8gA0pe1f9dJL&noverify=0&group_code=891536401');"
                >点我一键加群!</button>
        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" style="border-radius: 15px;">完成</button>
        </div>
    </div>
    <script>
        function redeem1() {
            $("#redeem1_btn").attr("disabled", true);
            $.ajax({
                url: window["api"] + "/rewards/redeem1",
                type: "GET",
                xhrFields: {
                    withCredentials: true
                },
                success: function (data) {
                    if (data["code"] == 200) {
                        mdui.snackbar({
                            message: data["msg"],
                            position: 'right-top'
                        });
                        $("#redeem1_btn").attr("disabled", false);
                    } else {
                        mdui.snackbar({
                            message: data["msg"],
                            position: 'right-top'
                        });
                        $("#redeem1_btn").attr("disabled", false);
                    }
                },
                error: function (data) {
                    mdui.snackbar({
                        message: '兑换失败!' + data["msg"],
                        position: 'right-top'
                    });
                    $("#redeem1_btn").attr("disabled", false);
                }
            });
        }

        $("#reflink").click(function () {
            var clipboard = new ClipboardJS('#reflink');
            clipboard.on('success', function (e) {
                mdui.snackbar({
                    message: '复制成功!',
                    position: 'right-top'
                });
            });
            clipboard.on('error', function (e) {
                mdui.snackbar({
                    message: '复制失败!',
                    position: 'right-top'
                });
            });
        });
        function get_my_rewards() {
            $.ajax({
                url: window["api"] + "/rewards/getmine",
                type: "GET",
                xhrFields: {
                    withCredentials: true
                },
                success: function (data) {
                    document.getElementById("current_point").innerHTML = "当前积分:" + data;
                },
                error: function (data) {
                    mdui.snackbar({
                        message: '获取积分失败!',
                        position: 'right-top'
                    });
                }
            });
        }
    </script>
    <script>
        // 获取url中是否有ref参数
        var url = location.search;
        var theRequest = new Object();
        if (url.indexOf("?") != -1) {
            var str = url.substr(1);
            strs = str.split("&");
            for (var i = 0; i < strs.length; i++) {
                theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
            }
        }
        if (theRequest["ref"] != undefined) {
            $.ajax({
                url: window["api"] + "/rewards/ref/" + theRequest["ref"],
                type: "GET",
                xhrFields: {
                    withCredentials: true
                },
                success: function (data) {
                    ;
                }
            });
        }
    </script>

    <div class="mdui-dialog" id="dialog-csong" style="border-radius: 20px;">
        <div class="mdui-dialog-title">云点歌</div>
        <div class="mdui-dialog-content mdui-typo">

            <p>在网易云音乐中找到一首歌曲。其链接应该形如<code>https://music.163.com/#/song?id=1966373892</code>。</p>
            <p>然后请将链接中的<code>id</code>(对于上面的链接,其<code>id</code>是<code>1966373892</code>)粘贴到下面:</p>
            <div class="mdui-textfield">
                <input class="mdui-textfield-input" type="text" placeholder="形如:1966373892" />
            </div>
            <p>完成后,请点击下方确认按钮。</p>
            <p>注意,如果您<b>在2分钟内已经点过歌了</b>,或<b>这首歌已经被点过了且排在播放队列中</b>,您的请求会被拒绝。</p>

        </div>
        <div class="mdui-divider"></div>
        <div class="mdui-dialog-actions">
            <button class="mdui-btn mdui-ripple" mdui-dialog-cancel="" style="border-radius: 15px;">取消</button>
            <button class="mdui-btn mdui-ripple" mdui-dialog-confirm="" onclick="gocsong();"
                style="border-radius: 15px;">确认</button>
        </div>
        <script>
            function gocsong() {
                var url = document.querySelector("#dialog-csong input").value;
                if (isNaN(url)) {
                    mdui.snackbar("请输入正确的歌曲ID,是一串数字。");
                    return;
                }
                fetch(window['api'] + "/song?song=" + url, {
                    credentials: 'include'
                }).then(function (response) {
                    return response.text();
                }).then(function (data) {
                    // console.log(data);
                    if (data == "True") {
                        mdui.snackbar("点歌成功!已排入点歌队列!");
                    } else {
                        mdui.snackbar("点歌失败:" + data);
                    }
                }).catch(function () {
                    mdui.snackbar("点歌失败:" + data);
                });
            }
        </script>
    </div>

    <div class="mdui-container">
        <div class="mdui-container" id="happy" hidden>
            <div class="mdui-row">
                <!--左边画面,右边聊天-->
                <div class="mdui-col-xs-12 mdui-col-md-8">
                    <div class="mdui-card mdui-shadow-20">
                        <div class="mdui-card-primary mdui-typo">
                            <div class="mdui-card-primary-title" id="stream_title">直播信息加载中……</div>
                        </div>
                        <div class="mdui-card-media" id="mediadiv">
                            <div class="mainContainer" id="mainContain">
                                <video id="videoElement" class="centeredVideo" controls>Your browser is too old to
                                    support HTML5 video.</video>
                            </div>
                        </div>
                    </div>

                    <div class="controls" hidden>
                        <button onclick="flv_start()" hidden>开始</button>
                        <button onclick="flv_pause()" hidden>暂停</button>
                        <button onclick="flv_destroy()" hidden>停止</button>
                        <input style="width:100px" type="text" name="seekpoint" hidden />
                        <button onclick="flv_seekto()" hidden>跳转</button>
                    </div>
                    <script src="https://cdn.bootcdn.net/ajax/libs/flv.js/1.5.0/flv.js"></script>
                    <br>
                    <div class="mdui-card mdui-shadow-20">
                        <div class="mdui-card-content">
                            <div class="icons-wrapper mdui-row-xs-3 mdui-row-sm-4 mdui-row-md-6 mdui-row-lg-6">
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-online_show'}" id="onlinenumber">
                                        <i class="mdui-icon mdui-icon-left material-icons">people</i>
                                        在线人数
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-csong'}" disabled>
                                        <i class="mdui-icon mdui-icon-left material-icons">queue_music</i>
                                        在线点歌
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-spider-status'}">
                                        <i class="mdui-icon mdui-icon-left material-icons">web</i>
                                        爬虫状态
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-spider'}">
                                        <i class="mdui-icon mdui-icon-left material-icons">bug_report</i>
                                        博客收录
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-editTag'}" onclick="get_tag();">
                                        <i class="mdui-icon mdui-icon-left material-icons">label</i>
                                        编辑 tag
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-editPendant'}" onclick="get_pendant();">
                                        <i class="mdui-icon mdui-icon-left material-icons">account_circle</i>
                                        头像挂件
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-logout'}">
                                        <i class="mdui-icon mdui-icon-left material-icons">exit_to_app</i>
                                        退出登录
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        onclick="window.open('https://stats.uptimerobot.com/JRlkxCB95r')">
                                        <i class="mdui-icon mdui-icon-left material-icons">panorama_fish_eye</i>
                                        宕机监控
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-docs-theme'}">
                                        <i class="mdui-icon mdui-icon-left material-icons">color_lens</i>
                                        主题颜色
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-bingimg-detail'}">
                                        <i class="mdui-icon mdui-icon-left material-icons">info</i>
                                        壁纸信息
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-imgupload'}">
                                        <i class="mdui-icon mdui-icon-left material-icons">image</i>
                                        图片上传
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-mylive'}" onclick="get_mylive_detail();">
                                        <i class="mdui-icon mdui-icon-left material-icons">live_tv</i>
                                        我要直播
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-livelist'}" onclick="get_live_list();">
                                        <i class="mdui-icon mdui-icon-left material-icons">tv</i>
                                        直播选台
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        onclick="window.open('https://converter.amzcd.top/');">
                                        <i class="mdui-icon mdui-icon-left material-icons">autorenew</i>
                                        格式转换
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-aidraw'}"
                                        mdui-tooltip="{content: 'Premium 会员专享'}">
                                        <i class="mdui-icon mdui-icon-left material-icons">sentiment_satisfied</i>
                                        AI 作图
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple" id="openGPT" disabled="disabled
                                        onclick="window.open('https://www.oiso.cf/webgpt-main/');"
                                        mdui-tooltip="{content: 'Premium 会员专享 [全新上线!]'}">
                                        <i class="mdui-icon mdui-icon-left material-icons">chat</i>
                                        Chat🐔PT
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-vip'}">
                                        <i class="mdui-icon mdui-icon-left material-icons">done_all</i>
                                        会员计划
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-redeem'}">
                                        <i class="mdui-icon mdui-icon-left material-icons">redeem</i>
                                        兑换代码
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-thanks'}">
                                        <i class="mdui-icon mdui-icon-left material-icons">whatshot</i>
                                        鸣谢名单
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        onclick="window.open('https://tamper.oiso.cf/tamperoiso.user.js');">
                                        <i class="mdui-icon mdui-icon-left material-icons">hdr_strong</i>
                                        油猴脚本
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-free'}">
                                        <i class="mdui-icon mdui-icon-left material-icons">monetization_on</i>
                                        签到红包
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-rewards'}" onclick="get_my_rewards();"
                                        mdui-tooltip="{content: '做任务,领积分,换会员!'}">
                                        <i class="mdui-icon mdui-icon-left material-icons">cake</i>
                                        我的积分
                                    </button>
                                </div>
                                <div class="mdui-col icon-code-wrap">
                                    <button style="border-radius: 15px;" class="mdui-btn mdui-ripple"
                                        mdui-dialog="{target: '#dialog-qq'}">
                                        <i class="mdui-icon mdui-icon-left material-icons">group</i>
                                        反馈群聊
                                    </button>
                                </div>
                            </div>
                        </div>
                    </div>
                    <br>
                </div>
                <div class="mdui-col-xs-12 mdui-col-md-4">
                    <div class="mdui-card">
                        <div hidden="hidden" id="media" class="mdui-card-media"
                            style="border-radius: 20px;overflow: hidden;">
                            <!-- <div class="mdui-card-media-content">
                                <div class="mdui-card-primary">
                                    <div class="mdui-card-primary-subtitle" id="sub">云听歌</div>
                                </div>
                            </div> -->
                            <img id="liveimg" src="https://via.placeholder.com/1920x1080" />
                            <!-- <iframe id="live" src="/musicPlayer/index.html" width="100%" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> -->
                        </div>
                        <!-- 轮播图 -->

                        <div id="demo" class="carousel slide" data-ride="carousel">

                            <!-- 指示符 -->
                            <ul class="carousel-indicators">
                                <!-- <li data-target="#demo" data-slide-to="0" class="active"></li>
                                <li data-target="#demo" data-slide-to="1"></li>
                                <li data-target="#demo" data-slide-to="2"></li> -->
                            </ul>

                            <!-- 轮播图片 -->
                            <div class="carousel-inner">
                                <!-- <div class="carousel-item active">
                                    <img src="https://static.runoob.com/images/mix/img_fjords_wide.jpg">
                                </div>
                                <div class="carousel-item">
                                    <img src="https://static.runoob.com/images/mix/img_nature_wide.jpg">
                                </div>
                                <div class="carousel-item">
                                    <img src="https://static.runoob.com/images/mix/img_mountains_wide.jpg">
                                </div> -->
                            </div>

                            <script>
                                window['carousels'] = [
                                    'https://s2.loli.net/2023/03/09/juQSlhVcsprzyiP.png',
                                    'https://s2.loli.net/2023/03/09/dKseN2UiR9Mkj17.png'
                                ];
                                window['carousel_links'] = [
                                    'https://afdian.net/a/diyanqi',
                                    'https://tamper.oiso.cf/tamperoiso.user.js'
                                ]
                                document.getElementsByClassName('carousel-inner')[0].innerHTML = carousels.map((item, index) => {
                                    return `<div class="carousel-item ${index === 0 ? 'active' : ''}">
                                        <a href="${carousel_links[index]}" target="_blank">
                                            <img src="${item}">
                                        </a>
                                    </div>`
                                }).join('');
                                document.getElementsByClassName('carousel-indicators')[0].innerHTML = carousels.map((item, index) => {
                                    return `<li data-target="#demo" data-slide-to="${index}" class="${index === 0 ? 'active' : ''}"></li>`
                                }).join('');
                            </script>

                            <!-- 左右切换按钮 -->
                            <a class="carousel-control-prev" href="#demo" data-slide="prev">
                                <span class="carousel-control-prev-icon"></span>
                            </a>
                            <a class="carousel-control-next" href="#demo" data-slide="next">
                                <span class="carousel-control-next-icon"></span>
                            </a>

                        </div>
                    </div>
                    <br />
                    <div class="mdui-card mdui-shadow-20">
                        <div class="mdui-card-content" style="padding-bottom: 0;">
                            <div class="mdui-textfield">
                                <textarea class="mdui-textfield-input" type="text" placeholder="按回车键发送" id="ib"
                                    style="cursor:text"></textarea>
                            </div>
                            <div class="mdui-card-content" id="benben">
                                <div class="mdui-spinner mdui-spinner-colorful"></div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <script>
                $.ajax({
                    url: window['api'] + "/bingimg/detail", success: (data) => {
                        // console.log(data);
                        // 先解析成json对象
                        var json = JSON.parse(data);
                        // { "images": [ { "startdate": "20230111", "fullstartdate": "202301111600", "enddate": "20230112", "url": "/th?id=OHR.RumeliHisari_ZH-CN0185820275_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp", "urlbase": "/th?id=OHR.RumeliHisari_ZH-CN0185820275", "copyright": "博斯普鲁斯海峡的如梅利堡垒,土耳其伊斯坦布尔 (© Drone in Wonderland/Amazing Aerial Agency)", "copyrightlink": "https://www.bing.com/search?q=%E5%A6%82%E6%A2%85%E5%88%A9%E5%A0%A1%E5%9E%92&form=hpcapt&mkt=zh-cn", "title": "两大洲交接的地方", "quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20230111_RumeliHisari%22&FORM=HPQUIZ", "wp": true, "hsh": "b18686a00c2932211c717fad37ba6747", "drk": 1, "top": 1, "bot": 1, "hs": [] } ], "tooltips": { "loading": "正在加载...", "previous": "上一个图像", "next": "下一个图像", "walle": "此图片不能下载用作壁纸。", "walls": "下载今日美图。仅限用作桌面壁纸。" } }
                        var copyright = json.images[0].copyright;
                        var title = json.images[0].title;
                        var copyrightlink = json.images[0].copyrightlink;
                        $("#detail").html(title + " - " + copyright);
                        $("#detail").attr("href", "https://cn.bing.com" + json.images[0].url);
                        // copilot 就是好用,我不会写也能给我写上(((
                    }
                });
            </script>
            <script>
                function getWindowHeight2() {
                    var windowHeight = 0;
                    if (document.compatMode == "CSS1Compat") {
                        windowHeight = document.documentElement.clientHeight;
                    } else {
                        windowHeight = document.body.clientHeight;
                    }
                    return windowHeight;
                }
                document.getElementById("benben").setAttribute("style", "max-height:" + String(getWindowHeight2() * 0.5) + "px;overflow:scroll;")
            </script>
            <script>
                function send_benben() {
                    document.getElementById("ib").setAttribute("disabled", "disabled");
                    var time_is_up = false;
                    setTimeout(() => {
                        document.getElementById("ib").removeAttribute("disabled");
                        document.getElementById("ib").value = "";
                        time_is_up = true;
                    }, 5000);
                    var text = document.getElementById("ib").value;
                    if (text == "") {
                        mdui.snackbar("总要说点什么吧?");
                        return;
                    }
                    text = encodeURIComponent(text);
                    fetch(window['api'] + "/msg?msg=" + text, {
                        credentials: 'include'
                    }).then(function (response) {
                        return response.text();
                    }).then(function (data) {
                        // console.log(data);
                        if (data == "True") {
                            mdui.snackbar("发送成功!");
                            get_benben();
                            document.getElementById("ib").value = "冷却中……";
                            if (time_is_up) {
                                document.getElementById("ib").value = "";
                            }
                        } else {
                            mdui.snackbar("发送失败:" + data);
                        }
                    }).catch(function () {
                        mdui.snackbar("发送失败:" + error);
                    });
                }
                document.getElementById("ib").addEventListener("keyup", function (event) {
                    // console.log(event);
                    if (event.keyCode === 13) {
                        event.preventDefault();
                        // 把最后的换行去掉
                        document.getElementById("ib").value = document.getElementById("ib").value.replace(/\n$/, "");
                        send_benben();
                    }
                });
            </script>
            <br><br>
            <br><br>
            <!-- <iframe scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" src="https://player.bilibili.com/player.html?bvid=BV1GJ411x7h7&amp;high_quality=1" style="position: absolute;top: 0; left: 0; width: 100%; height: 100%;"></iframe>   -->
        </div>
    </div>
    <script>
        function parseElement(htmlString) {
            return new DOMParser().parseFromString(htmlString, 'text/html').body.childNodes[0]
        }
        function getWindowHeight() {
            var windowHeight = 0;
            if (document.compatMode == "CSS1Compat") {
                windowHeight = document.documentElement.clientHeight;
            } else {
                windowHeight = document.body.clientHeight;
            }
            return windowHeight;
        }

        // console.log(getWindowHeight());

        document.getElementById("happy").style.position = "absolute";
        document.getElementById("happy").style.top = getWindowHeight() + "px";

        function replyto(content) {
            document.getElementById("ib").value = " > " + content;
            document.getElementById("ib").focus();
            // 把光标移到文本框最前面
            var input = document.getElementById("ib");
            if (input.setSelectionRange) {
                input.focus();
                input.setSelectionRange(0, 0);
            } else if (input.createTextRange) {
                var range = input.createTextRange();
                range.collapse(true);
                range.moveEnd('character', 0);
                range.moveStart('character', 0);
                range.select();
            }
        }


    </script>

    <script>

    </script>
    <script> // 鼠标点击特效
        function clickEffect() {
            let balls = [];
            let longPressed = false;
            let longPress;
            let multiplier = 0;
            let width, height;
            let origin;
            let normal;
            let ctx;
            const colours = ["#F73859", "#14FFEC", "#00E0FF", "#FF99FE", "#FAF15D"];
            const canvas = document.createElement("canvas");
            document.body.appendChild(canvas);
            canvas.setAttribute("style", "width: 100%; height: 100%; top: 0; left: 0; z-index: 99999; position: fixed; pointer-events: none;");
            const pointer = document.createElement("span");
            pointer.classList.add("pointer");
            document.body.appendChild(pointer);

            if (canvas.getContext && window.addEventListener) {
                ctx = canvas.getContext("2d");
                updateSize();
                window.addEventListener('resize', updateSize, false);
                loop();
                window.addEventListener("mousedown", function (e) {
                    pushBalls(randBetween(10, 20), e.clientX, e.clientY);
                    document.body.classList.add("is-pressed");
                    longPress = setTimeout(function () {
                        document.body.classList.add("is-longpress");
                        longPressed = true;
                    }, 500);
                }, false);
                window.addEventListener("mouseup", function (e) {
                    clearInterval(longPress);
                    if (longPressed == true) {
                        document.body.classList.remove("is-longpress");
                        pushBalls(randBetween(50 + Math.ceil(multiplier), 100 + Math.ceil(multiplier)), e.clientX, e.clientY);
                        longPressed = false;
                    }
                    document.body.classList.remove("is-pressed");
                }, false);
                window.addEventListener("mousemove", function (e) {
                    let x = e.clientX;
                    let y = e.clientY;
                    pointer.style.top = y + "px";
                    pointer.style.left = x + "px";
                }, false);
            } else {
                console.log("canvas or addEventListener is unsupported!");
            }


            function updateSize() {
                canvas.width = window.innerWidth * 2;
                canvas.height = window.innerHeight * 2;
                canvas.style.width = window.innerWidth + 'px';
                canvas.style.height = window.innerHeight + 'px';
                ctx.scale(2, 2);
                width = (canvas.width = window.innerWidth);
                height = (canvas.height = window.innerHeight);
                origin = {
                    x: width / 2,
                    y: height / 2
                };
                normal = {
                    x: width / 2,
                    y: height / 2
                };
            }
            class Ball {
                constructor(x = origin.x, y = origin.y) {
                    this.x = x;
                    this.y = y;
                    this.angle = Math.PI * 2 * Math.random();
                    if (longPressed == true) {
                        this.multiplier = randBetween(14 + multiplier, 15 + multiplier);
                    } else {
                        this.multiplier = randBetween(6, 12);
                    }
                    this.vx = (this.multiplier + Math.random() * 0.5) * Math.cos(this.angle);
                    this.vy = (this.multiplier + Math.random() * 0.5) * Math.sin(this.angle);
                    this.r = randBetween(8, 12) + 3 * Math.random();
                    this.color = colours[Math.floor(Math.random() * colours.length)];
                }
                update() {
                    this.x += this.vx - normal.x;
                    this.y += this.vy - normal.y;
                    normal.x = -2 / window.innerWidth * Math.sin(this.angle);
                    normal.y = -2 / window.innerHeight * Math.cos(this.angle);
                    this.r -= 0.3;
                    this.vx *= 0.9;
                    this.vy *= 0.9;
                }
            }

            function pushBalls(count = 1, x = origin.x, y = origin.y) {
                for (let i = 0; i < count; i++) {
                    balls.push(new Ball(x, y));
                }
            }

            function randBetween(min, max) {
                return Math.floor(Math.random() * max) + min;
            }

            function loop() {
                ctx.fillStyle = "rgba(255, 255, 255, 0)";
                ctx.clearRect(0, 0, canvas.width, canvas.height);
                for (let i = 0; i < balls.length; i++) {
                    let b = balls[i];
                    if (b.r < 0) continue;
                    ctx.fillStyle = b.color;
                    ctx.beginPath();
                    ctx.arc(b.x, b.y, b.r, 0, Math.PI * 2, false);
                    ctx.fill();
                    b.update();
                }
                if (longPressed == true) {
                    multiplier += 0.2;
                } else if (!longPressed && multiplier >= 0) {
                    multiplier -= 0.4;
                }
                removeBall();
                requestAnimationFrame(loop);
            }

            function removeBall() {
                for (let i = 0; i < balls.length; i++) {
                    let b = balls[i];
                    if (b.x + b.r < 0 || b.x - b.r > width || b.y + b.r < 0 || b.y - b.r > height || b.r < 0) {
                        balls.splice(i, 1);
                    }
                }
            }
        }
        // clickEffect(); tnnd 卡爆了
    </script>
    <script type="text/javascript" src="https://cdn.lyshark.com/javascript/socket.io/socket.io.min.js"></script>
    <script type="text/javascript">
        document.write("<script src='/js/index.js?" + Math.random() + "'><\/script>");
    </script>
</body>

</html>