[
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "### 1. 该问题的重现步骤是什么？\n\n### 2. 正常情况下应该是什么结果，你看到的呢？\n\n### 3. 服务器的运行环境是？\n\n- 操作系统版本：\n- Apache/Nginx 版本：\n- PHP 版本：\n- 主题版本：\n- 浏览器版本：\n\n[//]: # (如有图片请附上截图)"
  },
  {
    "path": "404.php",
    "content": "<?php\n\nif (!defined('__TYPECHO_ROOT_DIR__')) exit;\n\n$this->need('header.php');\n\n?>\n<main>\n    <div class=\"wrap min\">\n        <section class=\"board error-page\">\n\t\t\t<div class=\"post-title\">\n                <h2>404</h2>\n\t\t\t\t<p>你正在寻找的文章已经不见了，不妨看看其他文章？</p>\n            </div>\n\t\t\t<ul class=\"archives-list\">\n<?php\n\nfunction theme_random_posts(){\n\t$defaults = array(\n\t\t'xformat' => '<li class=\"archive-post\"><a class=\"archive-post-title\" href=\"{permalink}\">{title}</a><span class=\"date\">{date}</span></li>'\n\t);\n\n\t$db = Typecho_Db::get();\n\t$sql = $db -> select() -> from('table.contents')\n\t\t-> where('status = ?','publish')\n\t\t-> where('type = ?', 'post')\n\t\t-> limit(6)\n\t\t-> order('RAND()');\n\t$result = $db->fetchAll($sql);\n\n\tforeach($result as $value){\n\t\t$value = Typecho_Widget::widget('Widget_Abstract_Contents') -> filter($value);\n\t\techo str_replace(array('{permalink}', '{title}', '{date}'), array($value['permalink'], $value['title'], date(\"Y-m-d\", $value['created'])), $defaults['xformat']);\n\t}\n}\n\ntheme_random_posts();\n\n?>\n\t\t\t</ul>\n        </section>\n    </div>\n</main>\n\n<?php $this->need('footer.php'); ?>"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (C) 2018 Dreamer-Paul\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "README-EN.md",
    "content": "![Typecho Theme Fantasy Render Poster - Web Based Version](https://i.imgur.com/BF8J5tG.jpg \"Fantasy\")\n\n\n# Fantasy\nA Gorgeous, Fantastic Anime-Style Typecho Blog Theme. Based on The Official Website of Anime \"Slow Start\". <a href=\"README.md\">中文文档</a>\n\n## How to Use It\n1. `Star` this project.\n1. Download the theme source code from [here](https://github.com/Dreamer-Paul/Fantasy/archive/master.zip).\n1. Upload the theme to your server，rename it to `Fantasy` then put it under the  `usr/themes/` content.\n1. Log in to your Typecho dashboard，select to enable the theme. Then enjoy it!\n\n## Project Story\nPlease see my blog post for detail: [Fantasy Anime-Style Theme](https://paugram.com/coding/fantasy-theme.html)\n\n## Opensource License\nThe project is released and authorise the `MIT` lisence. Base on that, you will still need to keep the original authors' copyright code comments (include but not exclude CSS and JS, etc.). It will be best if you could include the theme's URL at your footer!\n\nIt isn't easy to develop this project! If you like it, please support me by `Star` it .\n\nAt the same time welcome to [my blog](https://paugram.com/about.html#donate) and donate me, thank you!\n\n## Credit\n### Used Opensource Project\n - [Kico Style](https://github.com/Dreamer-Paul/Kico-Style)\n - [Font Awesome](https://github.com/FortAwesome/Font-Awesome)"
  },
  {
    "path": "README.md",
    "content": "![Typecho Theme Fantasy Render Poster - Web Based Version](https://i.imgur.com/BF8J5tG.jpg \"Fantasy\")\n\n\n# Fantasy\n一个优美梦幻的动漫风 Typecho 博客主题。基于动漫 “Slow Start” 官网的设计风格编写而成。<a href=\"../master/README-EN.md\">English Document</a>\n\n## 使用方法\n1. `Star` 本项目\n1. 从这里 [下载](https://github.com/Dreamer-Paul/Fantasy/archive/master.zip) 主题源码\n1. 上传本主题，重命名为 `Fantasy` 并放置在 `usr/themes/` 目录下\n1. 登录你的 Typecho 后台，选择启用主题即可食用~\n\n## 项目故事\n详见我的博文：[Fantasy 动漫风主题](https://paugram.com/coding/fantasy-theme.html)\n\n## 开源协议\n本项目采用 `MIT` 开源协议进行授权，并在其基础上须保留原作者的版权注释（包括但不限于 CSS、JS 等文件），当然能在页尾写上主题地址就是最好的啦~\n\n原创不易！如果喜欢本项目，请 `Star` 它以示对我的支持~\n\n同时欢迎前往 [我的博客](https://paugram.com/about.html#donate) 为我提供赞助，谢谢您！\n\n## 使用的开源项目\n - [Kico Style](https://github.com/Dreamer-Paul/Kico-Style)\n - [Font Awesome](https://github.com/FortAwesome/Font-Awesome)"
  },
  {
    "path": "archive.php",
    "content": "<?php\n\nif (!defined('__TYPECHO_ROOT_DIR__')) exit;\n\n$this->need('header.php');\n\n?>\n<main>\n    <div class=\"wrap min\">\n        <section class=\"board head\">\n            <h3><?php $this->archiveTitle(array(\n                'category'  =>  _t('<i class=\"fa fa-folder\"></i>%s'),\n                'search'    =>  _t('<i class=\"fa fa-search\"></i>搜索结果：%s'),\n                'tag'       =>  _t('<i class=\"fa fa-tags\"></i>%s'),\n                'author'    =>  _t('<i class=\"fa fa-user\"></i>%s 的文章')\n            ), '', ''); ?></h3>\n        </section>\n        <section class=\"board\">\n<?php if ($this->have()): ?>\n<?php while($this->next()): ?>\n            <div class=\"post-item\">\n                <time class=\"date\"><?php $this->date(); ?></time>\n                <h3 class=\"title\"><a href=\"<?php $this->permalink() ?>\"><?php $this->title() ?></a></h3>\n            </div>\n<?php endwhile; ?>\n<?php else: ?>\n            <p>没有找到结果 (QWQ)</p>\n<?php endif; ?>\n        </section>\n        <?php $this->pageNav('', ''); ?>\n    </div>\n</main>\n\n<?php $this->need('footer.php'); ?>"
  },
  {
    "path": "bangumi.php",
    "content": "<?php\n\n/**\n * 追番\n *\n * @package custom\n */\n\nif (!defined('__TYPECHO_ROOT_DIR__')) exit;\n\n$this->need('header.php');\n\n?>\n<main>\n    <div class=\"wrap min\">\n        <section class=\"board\">\n            <div class=\"post-title\">\n                <h2><?php $this->title() ?></h2>\n            </div>\n            <article class=\"post-content exclude-img\">\n                <div class=\"row\">\n                    <?php Fantasy::bangumi($this); ?>\n                </div>\n            </article>\n        </section>\n        <?php $this->need('comments.php'); ?>\n    </div>\n</main>\n\n<?php $this->need('footer.php'); ?>"
  },
  {
    "path": "comments.php",
    "content": "<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>\n<?php function threadedComments($comments, $options) {\n    $commentClass = '';\n    if ($comments->authorId) {\n        if($comments->authorId == $comments->ownerId){\n            $commentClass .= ' by-author';\n        }\n    }\n\n    $commentLevelClass = $comments->levels > 0 ? ' comment-child' : ' comment-parent';\n?>\n\n    <div class=\"comment-item<?php echo $commentClass ?>\" id=\"<?php $comments->theId(); ?>\">\n        <?php $comments -> gravatar('150', 'wavatar'); ?>\n        <div class=\"content\">\n            <div class=\"comment-meta\">\n                <span class=\"comment-author\"><?php $comments->author(); ?></span>\n                <time class=\"comment-time\"><?php $comments->date(); ?></time>\n                <span class=\"comment-reply\"><?php $comments->reply(); ?></span>\n            </div>\n            <?php $comments->content(); ?>\n        </div>\n<?php if ($comments->children) { ?>\n        <div class=\"comment-children\">\n            <?php $comments->threadedComments($options); ?>\n        </div>\n<?php } ?>\n    </div>\n<?php } ?>\n\n<?php if($this->allow('comment')): ?>\n        <section class=\"board\">\n            <h3>参与讨论</h3>\n            <?php $this->comments()->to($comments); ?>\n            <div id=\"<?php $this->respondId(); ?>\">\n                <form class=\"comment-form\" id=\"<?php $this->respondId(); ?>\" action=\"<?php $this->commentUrl() ?>\" id=\"comment-form\" role=\"form\">\n                    <div class=\"cancel-reply\"><?php $comments->cancelReply(); ?></div>\n                    <figure class=\"comment-avatar\">\n<?php if($this->user->hasLogin()): ?>\n                        <img src=\"<?php echo Typecho_Common::gravatarUrl($this->user->mail, 150, 'X', 'mm', true) ?>\"/>\n<?php else: ?>\n                        <img src=\"<?php $this->options->themeUrl('static/img/avatar.jpg'); ?>\"/>\n<?php endif; ?>\n                    </figure>\n                    <fieldset>\n                        <textarea rows=\"2\" name=\"text\" placeholder=\"说下感想吧！\" required><?php $this->remember('text'); ?></textarea>\n<?php if(!$this->user->hasLogin()): ?>\n                        <input type=\"text\" name=\"author\" placeholder=\"昵称 *：\" value=\"<?php $this->remember('author'); ?>\" required=\"\">\n                        <input type=\"email\" name=\"mail\" placeholder=\"电邮 *：\" value=\"<?php $this->remember('mail'); ?>\"<?php if ($this->options->commentsRequireMail): ?> required<?php endif; ?>>\n                        <input type=\"url\" name=\"url\" placeholder=\"http://\" value=\"<?php $this->remember('url'); ?>\"<?php if ($this->options->commentsRequireURL): ?> required<?php endif; ?>>\n<?php else: ?>\n                        <p class=\"logined\"><a href=\"<?php $this->options->profileUrl(); ?>\"><?php $this->user->screenName(); ?></a>，欢迎回来！不是你？<a href=\"<?php $this->options->logoutUrl(); ?>\" title=\"登出\">登出</a></p>\n<?php endif; ?>\n                        <button class=\"btn submit\" type=\"submit\"></button>\n                    </fieldset>\n                </form>\n            </div>\n<?php if ($comments->have()): ?>\n        <?php $comments->listComments(array('before' => '<div class=\"comment-list\">', 'after' => '</div>')); ?>\n        <?php $comments->pageNav('', '', 3, '...', array('wrapTag' => 'section', 'itemTag' => 'span')); ?>\n<?php else: ?>\n    <p class=\"no-comment\">还没有评论呢！</p>\n<?php endif; ?>\n<?php endif; ?>\n        </section>"
  },
  {
    "path": "fantasy.php",
    "content": "<?php\n\nclass Fantasy {\n    // HTTPS 转换\n    static function convert_https($url){\n        return preg_replace(\"/^http:/\", \"https:\", $url);\n    }\n\n    // 追番\n    static function bangumi($t){\n        $uid = Typecho_Widget::widget('Widget_Options') -> bgm_user;\n        $uid = $uid ? $uid : 433599;\n        $bgm = file_get_contents(\"https://api.bgm.tv/user/\" . $uid . \"/collection?cat=playing\");\n        $bgm = json_decode($bgm);\n\n        if($bgm){\n            foreach($bgm as $item){\n                $bid  = $item -> subject -> id;\n                $name = $item -> subject -> name_cn ? $item -> subject -> name_cn : $item -> subject -> name;\n                $seem = $item -> ep_status;\n                $image = self::convert_https($item -> subject -> images -> large);\n                $total = property_exists($item -> subject, \"eps_count\") ? $item -> subject -> eps_count : $seem;\n                $width = (int)$seem / $total * 100;\n?>\n                    <div class=\"col-6 col-m-4\">\n                        <a class=\"bangumi-item\" target=\"_blank\" href=\"https://bgm.tv/subject/<?php echo $bid ?>\">\n                            <div class=\"bangumi-img\" style=\"background-image: url(<?php echo $image ?>)\">\n                                <div class=\"bangumi-status\">\n                                    <div class=\"bangumi-status-bar\" style=\"width: <?php echo $width ?>%\"></div>\n                                    <p>进度：<?php echo $seem ?> / <?php echo $total ?></p>\n                                </div>\n                            </div>\n                            <h3><?php echo $name ?></h3>\n                        </a>\n                    </div>\n<?php\n            }\n        }\n        else{\n?>\n                    <div class=\"col-12\">\n                        <p>追番数据获取失败，请检查如下细节：</p>\n                        <ul>\n                            <li>用户 ID 是否正确？</li>\n                            <li>该用户是否在“在看”添加了番剧？</li>\n                            <li>服务器能否正常连接 <code>api.bgm.tv</code> ？</li>\n                        </ul>\n                    </div>\n<?php\n        }\n\n        unset($bid, $name, $seem, $total, $img, $width);\n    }\n\n    // 时间转换\n    static function tran_time($ts){\n        $dur = time() - $ts;\n\n        if($dur < 0){\n            return $ts;\n        }\n        else if($dur < 60){\n            return $dur . ' 秒前';\n        }\n        else if($dur < 3600){\n            return floor($dur / 60) . ' 分钟前';\n        }\n        else if($dur < 86400){\n            return floor($dur / 3600) . ' 小时前';\n        }\n        else if($dur < 604800){ // 七天内\n            return floor($dur / 86400) . ' 天前';\n        }\n        else if($dur < 2592000){ // 一个月内\n            return floor($dur / 604800) . \" 周前\";\n        }\n\n        else{\n            return date(\"y.m.d\", $ts);\n        }\n    }\n\n    // 上次登录\n    static function get_last_login(){\n        $db = Typecho_Db::get();\n        $query = $db -> select() -> from('table.users');\n        $logged = $db -> fetchRow($query)[\"logged\"];\n\n        return self::tran_time($logged);\n    }\n}"
  },
  {
    "path": "footer.php",
    "content": "<footer>\n    <div class=\"wrap mid\">\n        <section class=\"foot-action\">\n            <div class=\"to-top\"></div>\n        </section>\n        <section class=\"foot-widget\">\n            <div class=\"row\">\n                <div class=\"col-m-3\">\n                    <h3>最新文章：</h3>\n                    <ul class=\"clear\">\n                        <?php $this -> widget('Widget_Contents_Post_Recent', 'pageSize=6') -> parse('<li><a href=\"{permalink}\" target=\"_blank\">{title}</a></li>'); ?>\n                    </ul>\n                </div>\n                <div class=\"col-m-3\">\n                    <h3>时光机：</h3>\n                    <ul class=\"clear\">\n                        <?php $this -> widget('Widget_Contents_Post_Date', 'type=month&format=Y 年 m 月&limit=6') -> parse('<li><a href=\"{permalink}\" rel=\"nofollow\" target=\"_blank\">{date}</a></li>'); ?>\n                    </ul>\n                </div>\n                <div class=\"col-m-3\">\n                    <h3>最近评论：</h3>\n                    <div class=\"foot-comments\">\n<?php $this -> widget('Widget_Comments_Recent', 'pageSize=5') -> to($comments); ?>\n                        <?php while($comments -> next()): ?>\n                            <a href=\"<?php $comments -> permalink(); ?>\" rel=\"nofollow\" target=\"_blank\"><img src=\"<?php echo Typecho_Common::gravatarUrl($comments -> mail, 32, 'X', 'wavatar', $this -> request -> isSecure()) ?>\"/><?php $comments -> author(false); ?>：<?php $comments -> excerpt(10, '...'); ?></a>\n                        <?php endwhile; ?>\n                    </div>\n                </div>\n                <div class=\"col-m-3\">\n                    <h3>站点信息：</h3>\n                    <ul class=\"clear\">\n<?php Typecho_Widget::widget('Widget_Stat')->to($stat); ?>\n                        <li>文章：<?php $stat->publishedPostsNum() ?> 篇</li>\n                        <li>分类：<?php $stat->categoriesNum() ?> 个</li>\n                        <li>评论：<?php $stat->publishedCommentsNum() ?> 条</li>\n                        <li>页面：<?php $stat->publishedPagesNum() ?> 个</li>\n                        <li>上次更新：<?php echo Fantasy::tran_time($this -> modified) ?></li>\n                        <li>上次登录：<?php echo Fantasy::get_last_login() ?></li>\n                    </ul>\n                </div>\n            </div>\n        </section>\n        <section class=\"foot-copyright\">\n            <div class=\"row\">\n                <div class=\"col-m-6 left bottom to-center\">\n<?php if(in_array('verify', $this -> options -> footer_content) && $this -> options -> verify_num): ?>\n                    <p><a href=\"http://www.miitbeian.gov.cn\" rel=\"nofollow\" target=\"_blank\"><?php $this -> options -> verify_num() ?></a></p>\n<?php endif; ?>\n<?php if(in_array('link', $this -> options -> footer_content) && $this -> options -> home_social): ?>\n                    <p class=\"foot-social\"><?php $this -> options -> home_social() ?></p>\n<?php endif; ?>\n<?php if(in_array('time', $this -> options -> footer_content)): ?>\n                    <p class=\"foot-date\">站点已萌萌哒存活了 <a>?</a> 天 <a>?</a> 小时 <a>?</a> 分 <a>?</a> 秒</p>\n<?php endif; ?>\n<?php if(in_array('hitokoto', $this -> options -> footer_content)): ?>\n                    <p class=\"foot-hitokoto\">重要的是无论我们选择哪条路，都要担负起选择的责任。</p>\n<?php endif; ?>\n                </div>\n                <div class=\"col-m-6 right bottom to-center\">\n                    <p>&copy; <?php echo date('Y') ?> <a href=\"<?php $this -> options -> siteUrl() ?>\"><?php $this->options->title(); ?></a>. 版权所有.</p>\n                    <p>Published With <a href=\"http://typecho.org\" target=\"_blank\" rel=\"nofollow\">Typecho.</a> Theme By <a href=\"https://github.com/Dreamer-Paul/Fantasy\" target=\"_blank\" rel=\"nofollow\">Fantasy</a>.</p>\n                </div>\n            </div>\n        </section>\n    </div>\n</footer>\n\n<script src=\"<?php $this->options->themeUrl('static/kico.js'); ?>\"></script>\n<script src=\"<?php $this->options->themeUrl('static/fantasy.js'); ?>\"></script>\n<script>var fantasy = new Fantasy_Theme({created: <?php if($this -> options -> site_created): ?>\"<?php echo $this -> options -> site_created; ?>\"<?php else: ?>false<?php endif; ?>});</script>\n<?php $this -> options -> custom_script() ?>\n<?php $this -> footer() ?>\n\n</body>\n</html>"
  },
  {
    "path": "functions.php",
    "content": "<?php\nif (!defined('__TYPECHO_ROOT_DIR__')) exit;\n\nrequire_once(\"fantasy.php\");\n\nfunction themeConfig($form) {\n\n    // 插件信息与更新检测\n    function paul_update($name, $version){\n        echo \"<style>.paul-info{text-align:center; margin:1em 0;} .paul-info > *{margin:0 0 1rem} .buttons a{background:#467b96; color:#fff; border-radius:4px; padding:.5em .75em; display:inline-block}</style>\";\n        echo \"<div class='paul-info'>\";\n        echo \"<h2>Fantasy 主题 (\".$version.\")</h2>\";\n        echo \"<p>By: <a href='https://github.com/Dreamer-Paul'>Dreamer-Paul</a></p>\";\n        echo \"<p class='buttons'><a href='https://paugram.com/coding/fantasy-theme.html'>项目介绍</a>\n              <a href='https://github.com/Dreamer-Paul/Fantasy/releases'>更新日志</a></p>\";\n\n        $update = file_get_contents(\"https://api.paugram.com/update/?name=\".$name.\"&current=\".$version.\"&site=\".$_SERVER['HTTP_HOST']);\n        $update = json_decode($update, true);\n\n        if(isset($update['text'])){echo \"<p>\".$update['text'].\"</p>\"; };\n        if(isset($update['message'])){echo \"<p>\".$update['message'].\"</p>\"; };\n\n        echo \"</div>\";\n    }\n    paul_update(\"Fantasy\", \"1.3\");\n\n    // 自定义站点图标\n    $favicon = new Typecho_Widget_Helper_Form_Element_Text('favicon', NULL, NULL, _t('站点图标'), _t('在这里填入一张 png 图片地址（<a>192x192px</a>），不填则使用默认图标'));\n    $form -> addInput($favicon);\n\n    // 自定义背景图\n    $background = new Typecho_Widget_Helper_Form_Element_Text('background', NULL, NULL, _t('站点背景'), _t('在这里填入一张图片地址，不填则显示默认背景'));\n    $form->addInput($background);\n\n    // 自定义社交链接\n    $home_social = new Typecho_Widget_Helper_Form_Element_Textarea('home_social', NULL, NULL, _t('自定义社交链接'), _t('在这里填入你的自定义社交链接，不填则不输出。（格式请看<a href=\"https://github.com/Dreamer-Paul/Single/releases/tag/1.1\" target=\"_blank\">帮助信息</a>）'));\n    $form -> addInput($home_social);\n\n    // 自定义样式表\n    $custom_css = new Typecho_Widget_Helper_Form_Element_Textarea('custom_css', NULL, NULL, _t('自定义样式表'), _t('在这里填入你的自定义样式表，不填则不输出'));\n    $form -> addInput($custom_css);\n\n    // 自定义统计代码\n    $custom_script = new Typecho_Widget_Helper_Form_Element_Textarea('custom_script', NULL, NULL, _t('统计代码'), _t('在这里填入你的统计代码，不填则不输出。需要 <a>&lt;script&gt;</a> 标签'));\n    $form->addInput($custom_script);\n\n    // 建站时间\n    $site_created = new Typecho_Widget_Helper_Form_Element_Text('site_created', NULL, '2018/07/09', _t('建站日期'), _t('在这里填入一个建站日期（格式：<a>2018/07/09</a>），不填则无法正常输出运行时间'));\n    $form -> addInput($site_created);\n\n    // 备案号\n    $verify_num = new Typecho_Widget_Helper_Form_Element_Text('verify_num', NULL, '', _t('备案号'), _t('在这里填入一个备案号，不填则无法输出'));\n    $form -> addInput($verify_num);\n\n    // 追番用户 ID\n    $bgm_user = new Typecho_Widget_Helper_Form_Element_Text('bgm_user', NULL, '', _t('追番用户 ID'), _t('在这里填入一个 <a>bangumi.tv</a> 的用户 ID，用于追番页面的输出，不填则输出作者的追番记录'));\n    $form -> addInput($bgm_user);\n\n    // 页尾展示内容\n    $footer_content = new Typecho_Widget_Helper_Form_Element_Checkbox('footer_content',\n        array(\n            'verify' => _t('备案号'),\n            'link' => _t('社交链接'),\n            'time' => _t('运行时间'),\n            'hitokoto' => _t('随机一言')\n        ),\n        array('time', 'hitokoto'), _t('页尾展示内容'));\n    $form -> addInput($footer_content -> multiMode());\n}\n\nfunction themeInit($archive){\n\n    // AJAX 头像\n    if(isset($_GET['action']) && $_GET['action'] == 'gravatar' && $_GET['email']){\n        $host = 'https://secure.gravatar.com/avatar/';\n        $email = strtolower($_GET['email']);\n        $hash = md5($email);\n\n        $reply = $host . $hash . '?d=robohash';\n\n        header(\"location: $reply\");\n        die();\n    }\n}"
  },
  {
    "path": "header.php",
    "content": "<!DOCTYPE html>\n<html lang=\"zh-cmn-hans\">\n<head>\n    <meta charset=\"UTF-8\">\n    <title><?php $this -> archiveTitle(array(\n            'category'  =>  _t('%s'),\n            'search'    =>  _t('含关键词 %s 的文章'),\n            'tag'       =>  _t('标签 %s 下的文章'),\n            'author'    =>  _t('%s 发布的文章')\n        ), '', ' - '); $this -> options -> title(); ?></title>\n<?php if($this -> options -> favicon): ?>\n    <link rel=\"icon\" href=\"<?php $this -> options -> favicon() ?>\" sizes=\"192x192\"/>\n<?php else: ?>\n    <link rel=\"icon\" href=\"<?php $this -> options -> themeUrl('static/img/icon.png'); ?>\" sizes=\"192x192\"/>\n<?php endif; ?>\n    <link href=\"<?php $this -> options -> themeUrl('static/kico.css'); ?>\" rel=\"stylesheet\" type=\"text/css\"/>\n    <link href=\"<?php $this -> options -> themeUrl('static/fantasy.css'); ?>\" rel=\"stylesheet\" type=\"text/css\"/>\n    <link href=\"https://fastly.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css\" rel=\"stylesheet\" type=\"text/css\"/>\n    <meta name=\"viewport\" content=\"width=device-width, maximum-scale=1, initial-scale=1\"/>\n    <?php $this->header('generator=&template=&pingback=&xmlrpc=&wlw='); ?>\n<?php if($this -> options -> background): ?>\n    <style>body{ background: url(<?php $this -> options -> background() ?>) center/cover fixed }</style>\n<?php endif; ?>\n<?php if($this -> options -> custom_css): ?>\n    <style><?php $this -> options -> custom_css() ?></style>\n<?php endif; ?>\n</head>\n<body>\n<aside>\n    <nav class=\"side-nav\">\n        <a href=\"<?php $this -> options -> siteUrl() ?>\">首页</a>\n        <?php $this -> widget('Widget_Contents_Page_List') -> parse('<a href=\"{permalink}\">{title}</a>'); ?>\n<?php if($this -> user -> hasLogin()): ?>\n        <a href=\"<?php $this -> options -> adminUrl() ?>\" target=\"_blank\">进入后台</a>\n<?php endif; ?>\n    </nav>\n    <nav class=\"side-action\">\n        <div class=\"search-btn\"></div>\n    </nav>\n    <div class=\"side-window\">\n        <div class=\"side-wrap\">\n            <form class=\"search-form\" method=\"post\">\n                <input type=\"text\" name=\"s\" placeholder=\"搜索什么？\">\n            </form>\n            <div class=\"side-category color-bar\">\n                <?php $this -> widget('Widget_Metas_Category_List') -> parse('<a href=\"{permalink}\">{name}</a>'); ?>\n            </div>\n        </div>\n    </div>\n</aside>\n<header>\n    <div class=\"toggle\"></div>\n    <div class=\"wrap min\">\n        <h1 class=\"headline\"><span><?php $this->options->title() ?></span></h1>\n<?php if ($this->options->home_social): ?>\n        <div class=\"head-social\">\n<?php $this->options->home_social() ?>\n        </div>\n<?php endif; ?>\n    </div>\n</header>"
  },
  {
    "path": "index.php",
    "content": "<?php\n\n/**\n * 一个优美梦幻的动漫风 Typecho 博客主题。\n *\n * @package Fantasy Theme\n * @author Dreamer-Paul\n * @version 1.3\n * @link https://paugram.com\n */\n\nif (!defined('__TYPECHO_ROOT_DIR__')) exit;\n\n$this->need('header.php');\n\n?>\n<main>\n    <div class=\"wrap min\">\n        <section class=\"board\">\n<?php while($this->next()): ?>\n            <div class=\"post-item\">\n                <time class=\"date\"><?php $this->date(); ?></time>\n                <h3 class=\"title\"><a href=\"<?php $this->permalink() ?>\"><?php $this->title() ?></a></h3>\n            </div>\n<?php endwhile; ?>\n        </section>\n        <?php $this->pageNav('', '', 3, '...', array('wrapTag' => 'section', 'itemTag' => 'span')); ?>\n    </div>\n</main>\n\n<?php $this->need('footer.php'); ?>"
  },
  {
    "path": "page.php",
    "content": "<?php\n\nif (!defined('__TYPECHO_ROOT_DIR__')) exit;\n\n$this->need('header.php');\n\n?>\n<main>\n    <div class=\"wrap min\">\n        <section class=\"board\">\n            <div class=\"post-title\">\n                <h2><?php $this->title() ?></h2>\n<?php if($this->authorId == $this->user->uid): ?>\n                <div class=\"post-meta\">\n                    <time class=\"date\"><?php $this->date(); ?></time>\n                    <span class=\"comments\"><?php $this->commentsNum('%d 条评论'); ?></span>\n                    <span class=\"edit\"><a href=\"<?php $this->options->adminUrl(); ?>write-page.php?cid=<?php echo $this->cid;?>\" target=\"_blank\">编辑</a></span>\n                </div>\n<?php endif; ?>\n            </div>\n            <article class=\"post-content\">\n                <?php $this->content(); ?>\n            </article>\n        </section>\n        <?php $this->need('comments.php'); ?>\n    </div>\n</main>\n\n<?php $this->need('footer.php'); ?>"
  },
  {
    "path": "post.php",
    "content": "<?php\n\nif (!defined('__TYPECHO_ROOT_DIR__')) exit;\n\n$this->need('header.php');\n\n?>\n<main>\n    <div class=\"wrap min\">\n        <section class=\"board\">\n            <div class=\"post-title\">\n                <h2><?php $this->title() ?></h2>\n                <div class=\"post-meta\">\n                    <time class=\"date\"><?php $this->date(); ?></time>\n                    <span class=\"category\"><?php $this->category('，'); ?></span>\n                    <span class=\"comments\"><?php $this->commentsNum('%d 评论'); ?></span>\n<?php if($this->authorId == $this->user->uid): ?>\n                    <span class=\"edit\"><a href=\"<?php $this->options->adminUrl(); ?>write-post.php?cid=<?php echo $this->cid;?>\" target=\"_blank\">编辑</a></span>\n<?php endif; ?>\n                </div>\n            </div>\n            <article class=\"post-content\">\n                <?php $this->content(); ?>\n            </article>\n        </section>\n        <?php $this->need('comments.php'); ?>\n    </div>\n</main>\n\n<?php $this->need('footer.php'); ?>"
  },
  {
    "path": "static/fantasy.css",
    "content": "@charset \"UTF-8\";\n\n/* ----\n\n# Fantasy Theme\n# By: Dreamer-Paul\n# Last Update: 2018.2.10\n\n一个优美梦幻的动漫风 Typecho 博客主题。\n\n本代码为奇趣保罗原创，并遵守 MIT 开源协议。欢迎访问我的博客：https://paugram.com\n\n---- */\n\n/* 0 - 全局\n-------------------------------- */\nbody{\n    color: #777790;\n    background: #f7f7f7 url(\"img/pattern-1.png\") repeat top center;\n}\n\na, a:hover{ color: #ffa9be }\n\nem{ background: #ffa9be }\n\nh1, h2, h3{ font-weight: normal }\n\nhr{ border-top: 2px #ccc dashed }\n\nblockquote{\n    color: #999;\n    padding: 1em;\n    border-radius: 1em;\n    background: #fafafa;\n    border: 2px #ccc dashed;\n}\n\n/* 1 - 页眉\n-------------------------------- */\nheader .toggle{\n    top: 1rem;\n    right: 1rem;\n    z-index: 2;\n    width: 3em;\n    height: 3em;\n    display: none;\n    cursor: pointer;\n    position: fixed;\n    background: #fff;\n    border-radius: 66%;\n    box-shadow: 0 0 20px rgba(0, 0, 0, .4);\n}\nheader .toggle:before{\n    display: block;\n    content: \"\\f0c9\";\n    text-align: center;\n    font: 1em/3em \"FontAwesome\";\n}\n\n/* 2 - 侧边栏\n-------------------------------- */\naside{\n    left: 0;\n    top: 8em;\n    z-index: 2;\n    position: fixed;\n    user-select: none;\n}\naside::-webkit-scrollbar{ width: 0 }\n\n/* - 侧边导航 */\n.side-nav{\n    z-index: 0;\n    background: #fff;\n    overflow: hidden;\n    position: relative;\n    border-radius: 0 1em 1em 0;\n    box-shadow: 0 0 10px rgba(0, 0, 0, .2);\n}\n.side-nav a{\n    color: #777790;\n    display: block;\n    padding: 1em 2em;\n    position: relative;\n}\n.side-nav a:before{\n    top: 0;\n    left: 0;\n    bottom: 0;\n    width: .5em;\n    content: '';\n    z-index: -1;\n    position: absolute;\n    transition: width .3s;\n}\n.side-nav a:hover{ color: #fff }\n.side-nav a:hover:before{ width: 100% }\n\n.side-nav a:nth-child(1):before{ background: #ff8b46 }\n.side-nav a:nth-child(2):before{ background: #ffc71d }\n.side-nav a:nth-child(3):before{ background: #d4f00f }\n.side-nav a:nth-child(4):before{ background: #b1c6ff }\n.side-nav a:nth-child(5):before{ background: #dcb5ff }\n.side-nav a:nth-child(6):before{ background: #ff9fab }\n.side-nav a:nth-child(7):before{ background: #eae489 }\n.side-nav a:nth-child(8):before{ background: #acf0dc }\n.side-nav a:nth-child(9):before{ background: #f9dba7 }\n.side-nav a:nth-child(10):before{ background: #a9d6f6 }\n.side-nav a:nth-child(11):before{ background: #b5e8a4 }\n.side-nav a:nth-child(12):before{ background: #ffb7a5 }\n\n/* - 侧边功能 */\n.side-action{\n    margin: 1em;\n    text-align: center;\n}\n.side-action .search-btn{ cursor: pointer }\n.side-action .search-btn:before{\n    content: \"\\f002\";\n    font: 1em/2em \"FontAwesome\";\n}\n\n/* - 功能窗 */\n.side-window{\n    top: 0;\n    left: 0;\n    opacity: 0;\n    z-index: -1;\n    width: 100%;\n    height: 100%;\n    display: table;\n    position: fixed;\n    visibility: hidden;\n    background: rgba(255, 255, 255, .9);\n    transition: opacity .3s, visibility .3s;\n}\n.side-window.active{\n    opacity: 1;\n    visibility: visible;\n}\n.side-wrap{\n    display: table-cell;\n    vertical-align: middle;\n}\n\n/* -- 搜索框和分类 */\n.search-form, .side-category{\n    width: 90%;\n    margin: 0 auto;\n    max-width: 600px;\n}\n.side-window.active .search-form, .side-window.active .side-category{\n    animation: fade-in-bottom .5s; -webkit-animation: fade-in-bottom .5s;\n}\n\n.search-form input{\n    width: 100%;\n    border: none;\n    display: block;\n    font-size: 1.5em;\n    border-radius: 0;\n    max-width: 600px;\n    padding: 0 0 .5em;\n    line-height: 1.5em;\n    border-bottom: 2px solid #777790;\n}\n\n.side-category{\n    text-align: center;\n    margin: 2em auto 0 auto;\n}\n\n.color-bar a{\n    color: #fff;\n    margin: .25em;\n    font-size: .85em;\n    border-radius: 3em;\n    padding: .5em .75em;\n    background: #777790;\n    display: inline-block;\n}\n\n.color-bar a:nth-child(1){ background: #ff8b46 }\n.color-bar a:nth-child(2){ background: #ffc71d }\n.color-bar a:nth-child(3){ background: #d4f00f }\n.color-bar a:nth-child(4){ background: #b1c6ff }\n.color-bar a:nth-child(5){ background: #dcb5ff }\n.color-bar a:nth-child(6){ background: #ff9fab }\n.color-bar a:nth-child(7){ background: #eae489 }\n.color-bar a:nth-child(8){ background: #acf0dc }\n.color-bar a:nth-child(9){ background: #f9dba7 }\n.color-bar a:nth-child(10){ background: #a9d6f6 }\n.color-bar a:nth-child(11){ background: #b5e8a4 }\n.color-bar a:nth-child(12){ background: #ffb7a5 }\n\n@media screen and (max-width: 600px){\n    header .toggle, .side-wrap{ display: block }\n\n    aside{\n        top: 0;\n        left: 0;\n        right: 0;\n        bottom: 0;\n        overflow: auto;\n        border-radius: 0;\n        transition: transform .3s;\n        transform: translateX(-100%);\n        background: rgba(255, 255, 255, .95);\n    }\n    aside.active{ transform: translateX(0) }\n\n    .side-nav{\n        background: none;\n        box-shadow: none;\n        border-radius: 0;\n    }\n    .side-nav a:hover{ color: inherit }\n    .side-nav a:hover:before{ width: 1em }\n\n    .side-action{ display: none }\n\n    .side-window{\n        opacity: 1;\n        height: auto;\n        display: block;\n        margin-top: 3em;\n        position: static;\n        background: none;\n        visibility: visible;\n    }\n\n    .search-form input{ font-size: 1em }\n}\n\n/* 3 - 正文\n-------------------------------- */\nheader{ margin: 3em 0 }\n\n.headline{\n    position: relative;\n    padding-bottom: .5em;\n    display: inline-block;\n    transition: transform .3s;\n}\n.headline:hover{ transform: rotate(-6deg) }\n.headline:after{\n    content: '';\n    height: 7px;\n    width: 100%;\n    left: 0;\n    bottom: 0;\n    position: absolute;\n    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAHCAYAAADwK5bPAAABDElEQVR4AWMoL5/wF4jfAvFVIF5TVjahuLR0kjIDFUFp6URVoLmlQPPXAfF1IH4HxP9Alv/Hgv8B8T6gBj8Ghv+M5FgI0ldW1h9QUTHxEMQ8THvAlhPA50CGNDQ0MBFjJUgd0MJAkD5CZoNdWFzcI1Ja2m9UXt6fWVExYSNQ4jcWxfeAuBkYGq5FRb2yubmT2KGWcQD1ywPl3IGWtgHph1j0/gRFaUVFf0JJyQS9ysopwjhdX13dJ11ePnECUMMPkGYK8FegOd0lJd1iJMdaVVW/JDAkeoCGvCHR0hegUACFKMWpFRTEoHgH+mIK0DFHgIY/A+LvUIu+AfETSMKaOKm0dIJPWtpMVmLMBQAofSPjvL1S8gAAAABJRU5ErkJggg==) repeat-x left center;\n}\n\n@media screen and (max-width: 600px){\n    .headline{\n        text-align: center;\n    }\n}\n\nheader, main{ margin-left: 8em; margin-bottom: 3em }\n\n@media screen and (max-width: 600px){\n    header, main{ margin-left: 0 }\n}\n\n.head-social{\n    float: right;\n    margin: 1.25em 0;\n    user-select: none;\n}\n.head-social a{\n    color: inherit;\n    margin: 0 .5em;\n    display: inline-block;\n    transition: transform .3s;\n}\n.head-social a:hover{ transform: scale(1.2) }\n.head-social i{ font-size: 1.2em }\n\n@media screen and (max-width: 600px){\n    header{ text-align: center }\n\n    .head-social{\n        float: none;\n        margin-top: 2em;\n    }\n}\n\n\n.board{\n    padding: 1.5em;\n    background: #fff;\n    border-radius: 1.5em;\n}\n.board + .board{ margin-top: 2em }\n\n.board.head{ display: inline-block }\n.board.head .fa{ margin-right: .75em }\n\n.post-item, .post-title{\n    margin-bottom: 1.5em;\n    padding-bottom: 1.5em;\n    border-bottom: 2px dotted #777790;\n}\n.post-item:last-child{\n    margin-bottom: 0;\n    padding-bottom: 0;\n    border-bottom: none;\n}\n.post-item .date{\n    display: block;\n    color: #ffa9be;\n    font-size: .85em;\n    margin-bottom: .5em;\n}\n.post-item a{\n    color: #777790;\n}\n.post-item h3:hover{ opacity: .6 }\n\n.post-item h3{\n    padding-left: 1em;\n    position: relative;\n    transition: opacity .3s;\n}\n.post-item h3:before{\n    content: '';\n    position: absolute;\n    left: 0;\n    top: .3em;\n    border: .4em solid transparent;\n    border-left-color: #ffa9be;\n}\n\n.post-meta{\n    display: table;\n    color: #777790;\n    font-size: .85em;\n}\n\n.post-meta .category:before, .post-meta .comments:before, .post-meta .viewed:before, .post-meta .edit:before{\n    content: '·';\n    margin: 0 .5em;\n}\n\n.post-content > h1, .post-content > h2, .post-content > h3,\n.post-special > h1, .post-special > h2, .post-special > h3{ position: relative }\n.post-content > h1:before, .post-content > h2:before, .post-content > h3:before,\n.post-special > h1:before, .post-special > h2:before, .post-special > h3:before{\n    left: -1.5rem;\n    top: 0;\n    bottom: 0;\n    width: .5em;\n    content: '';\n    display: block;\n    position: absolute;\n    background: #ffa9be;\n    border-radius: 0 .5em .5em 0;\n}\n\n/* -- 密码保护 */\n.post-content .protected .submit{\n    color: #fff;\n    padding: .5em 1em;\n    border-radius: 4px;\n    background: #ffa9be;\n    border: 1px solid #ffa9be;\n}\n\n/* - 分页 */\n.page-navigator{\n    margin: 2em auto;\n    user-select: none;\n    text-align: center;\n}\n.page-navigator span{\n    margin-right: .5em;\n    display: inline-block;\n}\n.page-navigator span:last-child{ margin-right: 0 }\n\n.page-navigator a{\n    width: 2em;\n    height: 2em;\n    color: inherit;\n    line-height: 1.75;\n    border-radius: 2em;\n    display: inline-block;\n    vertical-align: middle;\n    border: #777790 2px solid;\n    background: no-repeat center center;\n    transition: color .3s, background .3s;\n}\n.page-navigator a:hover, .page-navigator .current a{\n    color: #fff;\n    background-color: #777790;\n}\n\n.board .page-navigator{\n    margin: 2em auto 0 auto;\n}\n\n.page-navigator .category{\n    width: auto;\n    height: auto;\n    padding: .75em 1em;\n}\n\n.page-navigator .prev a{\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAYAAACJxx+AAAAAAXNSR0IArs4c6QAAALdJREFUGBljZMACKir6Xf7/Z0z+9+/fDBZk+cLCPk42NubO////5wDFGZmZmeThCioqJhoDJZYwMPzXgGn6/5+BkyU0dBWzouLTKqBkLVCCFSYJo1mUlJ61AE2rgAmg00yMjIx/0QWR+cySkkkHBQU//wYK2gIxM7IkkP2CESZQWtpvxMTEuAjI14aJAekLTDBOd3fhOU7ODyZA9/QBxf6BxBkZGb7DTYApBNHl5RPsgG6LBXpzPgDWrjI5DdIyLgAAAABJRU5ErkJggg==);\n}\n.page-navigator .prev a:hover{\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAYAAACJxx+AAAAAAXNSR0IArs4c6QAAAHpJREFUGBltjzEKgDAMRYsueh3dHHTxWDo7ubh6AG/i2kXwLkKtr8XWCA08muT/8KlSibLW9rBB95NZlLDADa72aGCo4XRbUVox5DDCJYTQesMUpsSrMzJMzEk1XLmIAdIR4QhDBQfI0kH3L0oBM5jX9X1TOhFbWKF5ACRiwtdwpbVuAAAAAElFTkSuQmCC);\n}\n\n.page-navigator .next a{\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAYAAACJxx+AAAAAAXNSR0IArs4c6QAAAK5JREFUGBljLC+faMXA8D+VgYFhfmdnwSEgjQKYbW09VgJFfIE4Hsjmc3GxOHTgwIE/MFVM//8zcEI5IHbx9+8CZyoqJhnCFDCWl084D+QYwASg9G8g3XTvnlQ7C5oEjMsKZDQrKT3jZoKJYKMZGRn/4jIBZEULB8f7NmwKbjAyMsR1dBScBpnKBOR8hxr/H8iewsnJaQyTBImz/P37r5KJiTkLGFjzgBI7oYrhFACoHTMyp9L38AAAAABJRU5ErkJggg==);\n}\n.page-navigator .next a:hover{\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAYAAACJxx+AAAAAAXNSR0IArs4c6QAAAHhJREFUGBlj+P//vxUQzwdiOwZsAChxDIhB4C8Q9wAxB4o6oMB5IEYGV4AcQ7giIAddAUjxLyCuAWJmFrhKVAYrkNsMxNxMqOIYvL8MQGNwWVEHlGPBpuA6UMIUbhaQA/PmPyB7MhBzwSVBDKCAPRCvBGJ3FAkoBwBhFKRDlAmnZgAAAABJRU5ErkJggg==);\n}\n\n/* - 评论区 */\n.comment-form{\n    position: relative;\n    margin-bottom: 2em;\n}\n.comment-form input{\n    margin-right: .5em;\n    display: inline-block;\n    width: calc((100% - 5.5em) / 3);\n}\n.comment-form input, .comment-form textarea{\n    padding: .75em;\n    border-radius: 1em;\n    border-color: #ddd;\n}\n\n@media screen and (max-width: 600px){\n    .comment-form{ margin-bottom: 5em }\n    .comment-form input, .comment-form textarea{ width: 100% }\n}\n\n.comment-form .submit{\n    right: 0;\n    padding: 0;\n    color: #fff;\n    width: 3em;\n    height: 3em;\n    position: absolute;\n    border-radius: 66%;\n    background: #ffa9be;\n}\n.comment-form .submit:before{\n    content: '\\f1d8';\n    font: 1em/1em FontAwesome;\n}\n.comment-form .logined{ display: inline-block }\n.comment-form .cancel-reply{\n    text-align: right;\n    margin-bottom: .5em;\n}\n\n.comment-avatar{\n    width: 3em;\n    float: left;\n    margin-right: 1em;\n}\n.comment-avatar img{\n    height: auto;\n    border-radius: 66%;\n}\n\n.comment-list .avatar{\n    width: 3em;\n    float: left;\n    height: auto;\n    display: block;\n    border-radius: 66%;\n    transition: box-shadow .3s;\n    box-shadow: 0 .25em .5em rgba(0, 0, 0, .2);\n}\n.comment-list div:hover .avatar{\n    box-shadow: 0 .3em .6em rgba(0, 0, 0, .3);\n}\n\n.comment-list .comment-item{ margin-bottom: 1em }\n.comment-list .comment-item:last-child{ margin-bottom: 0 }\n\n.comment-list .comment-meta{ margin-bottom: .5em }\n\n.comment-meta .comment-time{\n    color: #aaa;\n    font-size: .75em;\n    margin-left: .5em;\n}\n.comment-list .comment-author, .comment-list a{ font-weight: lighter }\n\n.comment-list .content{\n    background: #fff4fb;\n    border-radius: .5em;\n    margin: 0 0 1em 1.5em;\n    word-break: break-all;\n    padding: .75em .75em .75em 2.5em;\n}\n\n/* - 作者的评论 */\n.comment-item.by-author > .content{ background: aliceblue }\n.comment-item.by-author > .content a{ color: cornflowerblue }\n\n/* - 子评论 */\n.comment-list .comment-children{ margin-left: 1em }\n\n/* - 回复评论 */\n.comment-list .comment-reply{\n    opacity: 0;\n    float: right;\n    transition: opacity .3s;\n}\n.comment-list .content:hover .comment-reply{ opacity: 1 }\n\n.no-comment{\n    padding: 1em;\n    text-align: center;\n    border-radius: 1em;\n    background: #fafafa;\n}\n\n/* - 归档 */\n.archives-list a{ color: inherit }\n\n.archives-list li{\n    margin-bottom: .75em;\n    list-style-type: circle;\n}\n\n.archives-list .date{ float: right }\n\n/* - 追番 */\n.bangumi-item{\n    color: inherit;\n    text-align: center;\n}\n.bangumi-img{\n    overflow: hidden;\n    position: relative;\n    border-radius: 1em;\n    padding-bottom: 140%;\n    background: center/cover;\n}\n.bangumi-item h3{ margin: 1em 0 }\n\n.bangumi-status{\n    left: 0;\n    right: 0;\n    bottom: 0;\n    color: #fff;\n    position: absolute;\n    transition: transform .3s;\n    transform: translateY(100%);\n    background: rgba(0, 0, 0, .5);\n}\n.bangumi-img:hover .bangumi-status{ transform: translateY(0) }\n\n.bangumi-status-bar{\n    top: 0;\n    bottom: 0;\n    max-width: 100%;\n    position: absolute;\n    background: #ffa9be;\n}\n.bangumi-status p{\n    padding: .5em;\n    position: relative;\n}\n\n/* 4 - 页尾\n-------------------------------- */\nfooter{\n    padding: 2em 0;\n    background: #fff;\n    box-shadow: 0 0 8px rgba(0, 0, 0, .1);\n}\nfooter h3{ color: #666 }\n\n.foot-action{\n    z-index: 66;\n    right: 1rem;\n    bottom: 1rem;\n    position: fixed;\n    font-size: 1.2em;\n    line-height: 2em;\n    text-align: center;\n}\n.foot-action .to-top{\n    width: 2em;\n    height: 2em;\n    cursor: pointer;\n    background: #fff;\n    border-radius: 66%;\n    transform: scale(0);\n    transition: transform .3s;\n    box-shadow: 0 2px 10px rgba(0, 0, 0, .2);\n}\n.foot-action .to-top.active{ transform: scale(1) }\n.foot-action .to-top:before{\n    content: \"\\f062\";\n    font-family: FontAwesome;\n}\n\n.foot-widget{ margin-bottom: 3em }\n\n.foot-widget li{\n    overflow: hidden;\n    white-space: nowrap;\n    margin-bottom: .5em;\n    text-overflow: ellipsis;\n}\n.foot-widget li:before{\n    content: '\\f105';\n    margin-right: .75em;\n    font-family: \"FontAwesome\";\n}\n\n.foot-widget .foot-comments a{\n    color: inherit;\n    display: block;\n    overflow: hidden;\n    white-space: nowrap;\n    margin-bottom: .5em;\n    text-overflow: ellipsis;\n}\n.foot-widget .foot-comments img{\n    margin-right: .5em;\n    border-radius: 66%;\n}\n\n.foot-copyright{\n    color: #999;\n    font-size: .875em;\n}\n.foot-copyright p{ margin: .25em 0 }\n\n.foot-social a{\n    color: #777790;\n    margin-right: .75em;\n}\n.foot-social a:last-child{ margin: 0 }"
  },
  {
    "path": "static/fantasy.js",
    "content": "/* ----\n\n# Fantasy Theme\n# By: Dreamer-Paul\n# Last Update: 2018.12.1\n\n一个优美梦幻的动漫风 Typecho 博客主题。\n\n本代码为奇趣保罗原创，并遵守 MIT 开源协议。欢迎访问我的博客：https://paugram.com\n\n---- */\n\nvar Fantasy_Theme = function (config) {\n    var that = this;\n    var element = {\n        toggle: ks.select(\"header .toggle\"),\n        search: {\n            btn: ks.select(\".search-btn\"),\n            window: ks.select(\".side-window\"),\n            input: ks.select(\".side-window input\")\n        },\n        content: ks.select(\".post-content\"),\n        comment: {\n            form: ks.select(\".comment-form\"),\n            list: ks.select(\".comment-list\"),\n            mail: document.getElementsByName(\"mail\")[0],\n            avatar: ks.select(\".comment-avatar img\")\n        },\n        top: ks.select(\".to-top\"),\n        date: ks.select(\".foot-date\"),\n        hitokoto: ks.select(\".foot-hitokoto\")\n    };\n\n    // 菜单按钮\n    this.header = function () {\n        element.toggle.onclick = function () {\n            ks.select(\"aside\").classList.toggle(\"active\");\n        };\n\n        element.search.btn.onclick = function () {\n            element.search.input.focus();\n            element.search.window.classList.toggle(\"active\");\n        };\n    };\n    this.header();\n\n    // 自动添加外链\n    this.links = function (selector) {\n        var links = selector.getElementsByTagName(\"a\");\n\n        for(var i = 0; i < links.length; i++){\n            links[i].target = \"_blank\";\n        }\n    };\n\n    if(element.content){\n        this.links(element.content);\n    }\n    if(element.comment.list){\n        this.links(element.comment.list);\n    }\n\n    // 评论\n    this.comments = function () {\n        element.comment.mail.onblur = function (event) {\n            var reg = /@[a-zA-Z0-9]{2,10}(?:\\.[a-z]{2,4}){1,3}$/;\n\n            if(reg.test(event.target.value)){\n                element.comment.avatar.src = \"?action=gravatar&email=\" + event.target.value;\n            }\n        }\n    };\n\n    // 评论\n    if(element.comment.form && element.comment.mail){\n        this.comments();\n    }\n\n    // 返回头部\n    this.to_top = function () {\n        element.top.onclick = ks.scrollTop;\n\n        window.onscroll = function () {\n            var scroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;\n            scroll >= window.innerHeight ? element.top.classList.add(\"active\") : element.top.classList.remove(\"active\");\n        }\n    };\n    this.to_top();\n\n    // 运行时间\n    this.foot_date = function (date) {\n        function run_date(date){\n            var created = Date.parse(date);\n            var now = new Date().getTime();\n            var ran = now - created;\n\n            var day = ran / 86400000;\n            var day_c = Math.floor(day);\n\n            var hour = 24 * (day - day_c);\n            var hour_c = Math.floor(hour);\n\n            var min = 60 * (hour - hour_c);\n            var min_c = Math.floor(min);\n\n            var sec = Math.floor(60 * (min - min_c));\n\n            return \"站点已萌萌哒存活了 <a>\" + day_c + \"</a> 天 <a>\" + hour_c + \"</a> 小时 <a>\" + min_c + \"</a> 分 <a>\" + sec + \"</a> 秒\";\n        }\n\n        setInterval(function () {\n            element.date.innerHTML = run_date(date);\n        }, 1000);\n    };\n\n    if(element.date && config.created){\n        this.foot_date(config.created);\n    }\n\n    // 一言\n    this.hitokoto = function () {\n        ks.ajax({\n            method: \"GET\",\n            url: \"https://v1.hitokoto.cn\",\n            success: function (req){\n                element.hitokoto.innerText = JSON.parse(req.response)[\"hitokoto\"];\n            },\n            failed: function (req){\n                ks.notice(\"请求一言失败！\", {color: \"red\"});\n            }\n        });\n    };\n\n    if(element.hitokoto){\n        this.hitokoto();\n    }\n};\n\n// 图片缩放\nks.image(\".post-content:not(.exclude-image) img\");\n\n// 请保留版权说明\nif (window.console && window.console.log) {\n    console.log(\"%c Fantasy %c https://paugram.com \",\"color: #fff; margin: 1em 0; padding: 5px 0; background: #ffa9be;\",\"margin: 1em 0; padding: 5px 0; background: #efefef;\");\n}"
  },
  {
    "path": "static/kico.css",
    "content": "@charset \"UTF-8\";\n\n/* ----\n\n# Kico Style 2.1\n# By: Dreamer-Paul\n# Last Update: 2019.1.28\n\n一个简洁、有趣的开源响应式框架，仅包含基础样式，需按照一定规则进行二次开发。\n\n欢迎你加入缤奇，和我们一起改变世界。\n本代码为奇趣保罗原创，并遵守 MIT 开源协议。欢迎访问我的博客：https://paugram.com\n\n---- */\n\n/* 0 - 全局\n-------------------------------- */\nhtml, body,\ndl, dt, dd, ol, ul,\nh1, h2, h3, h4, h5, h6,\npre, code, form, p,\nfieldset, legend, figure{\n    margin: 0;\n    padding: 0;\n}\n\nhtml{\n    color: #353535;\n    font: 16px/1.5 'Microsoft Yahei', 'PingFang SC', 'Hiragino Sans GB', sans-serif;\n}\n\nhtml.font-s{ font-size: 14px }\nhtml.font-m{ font-size: 16px }\nhtml.font-l{ font-size: 18px }\n\n@media screen and (max-width: 500px){\n    html.font-auto{ font-size: 14px }\n}\n\n@media screen and (min-width: 1930px){\n    html.font-auto{ font-size: 18px }\n}\n\n*, *:before, *:after{ box-sizing: border-box }\n\n/* - 部分老式浏览器的更正 */\naside, article, section, figure, figcaption, header, main, footer, nav{ display: block }\n\n/* - 选择内容 */\n::-moz-selection{\n    color: #fff;\n    background-color: rgba(0, 0, 0, .66);\n}\n\n::selection{\n    color: #fff;\n    background-color: rgba(0, 0, 0, .66);\n}\n\n/* - 滚动条 */\n::-webkit-scrollbar{\n    width: 10px;\n    height: 10px;\n}\n\n::-webkit-scrollbar-thumb{\n    background: #ccc;\n    border-radius: 5px;\n}\n\n::-webkit-scrollbar-track:hover{\n    border-radius: 5px;\n    background: rgba(0, 0, 0, .05);\n}\n\nbody::-webkit-scrollbar-thumb{\n    box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1), inset 0 -1px 0 rgba(0, 0, 0, .07);\n}\n\nbody::-webkit-scrollbar-track:hover{\n    border-radius: 0;\n    box-shadow: inset 1px 0 0 rgba(0, 0, 0, .1);\n}\n\n.ks-scroll-hover::-webkit-scrollbar{\n    display: none;\n}\n\n.ks-scroll-hover:hover::-webkit-scrollbar{\n    display: inherit;\n}\n\n/* 1 - 容器\n-------------------------------- */\n.wrap{\n    margin-left: auto;\n    margin-right: auto;\n    max-width: 1200px;\n    padding: 0 1.25em;\n    box-sizing: content-box;\n}\n\n.wrap.min{ max-width: 800px }\n.wrap.mid{ max-width: 1000px }\n.wrap.max{ max-width: 1400px }\n.wrap.full{ max-width: 100% }\n\n.wrap.thin{ padding: 0 .75em }\n.wrap.thick{ padding: 0 1.5em }\n.wrap.clear{\n    padding-left: 0;\n    padding-right: 0;\n}\n\n.clearfix:after{\n    content: '';\n    clear: both;\n    display: block;\n}\n\n/* 2 - 元素\n-------------------------------- */\nh1{\n    font-size: 2em;\n}\n\nh1, h2, h3, h4, h5, h6{\n    margin-bottom: 1rem;\n}\n\nh1:last-child, h2:last-child, h3:last-child, h4:last-child, h5:last-child, h6:last-child, p:last-child{\n    margin-bottom: 0;\n}\n\np{\n    line-height: 1.8;\n    margin-bottom: 1em;\n}\n\na{\n    color: #3498db;\n    text-decoration: none;\n}\n\na:hover{\n    color: #ffc670;\n}\n\nabbr[title]{\n    cursor: help;\n    text-decoration: none;\n    border-bottom: 1px dotted;\n}\n\nem, mark, kbd{\n    padding: 0 .5em;\n    border-radius: .5em;\n    display: inline-block;\n}\n\nem{\n    color: #fff;\n    font-style: normal;\n    background: #3498db;\n}\n\nkbd{\n    color: #fff;\n    font-size: 90%;\n    background: #333;\n    font-family: 'Consolas', 'Courier New', monospace, \"微软雅黑\";\n}\n\nimg, svg, audio, video{\n    max-width: 100%;\n    vertical-align: middle;\n}\n\n/* - 文章 */\narticle{ word-break: break-all }\n\narticle > *{ margin-bottom: 1em }\narticle > *:last-child{ margin-bottom: 0 }\n\narticle h1, article h2, article h3{ font-size: 1.2em }\narticle h4, article h5, article h6{ font-size: 1.1em }\n\n/* - 按钮 */\n.btn{\n    outline: 0;\n    font: inherit;\n    color: inherit;\n    cursor: pointer;\n    background: #fff;\n    user-select: none;\n    border-radius: 4px;\n    padding: .8em 1.5em;\n    display: inline-block;\n    border: 1px solid transparent;\n}\n.btn:hover{ color: inherit }\n.btn:active{ background: #eee }\n\n/* -- 禁用的按钮 */\n.btn[disabled]{\n    opacity: .5;\n    cursor: not-allowed;\n}\n\n/* -- 有图标的按钮 */\n.btn i{\n    margin-right: 5px;\n}\n\n/* -- 按钮尺寸 */\n.btn.small{\n    padding: .5em 1em;\n}\n\n.btn.large{\n    font-size: 1.2em;\n    padding: 1em 2.5em;\n}\n\n/* -- 按钮颜色 */\n.btn.red, .btn.yellow, .btn.blue, .btn.green{ color: #fff }\n\n.btn.red{ background: #c40b00 }\n.btn.yellow{ background: #ffb03a }\n.btn.blue{ background: #3498db }\n.btn.green{ background: #27a17e }\n.btn.transparent{ background: transparent }\n\n.btn.red:active{ background: #b00000 }\n.btn.yellow:active{ background: #eb9c26 }\n.btn.blue:active{ background: #2084c7 }\n.btn.green:active{ background: #138d6a }\n\n/* - 代码 */\npre, code{\n    font-size: 1em;\n    font-family: 'Consolas', 'Courier New', monospace, \"微软雅黑\";\n}\n\npre{ word-wrap: normal }\n\ncode{\n    color: #c40b00;\n    font-size: 90%;\n    word-wrap: normal;\n    border-radius: 4px;\n    padding: .25em .5em;\n    word-break: break-all;\n    background-color: #f7f2f4;\n}\n\npre > code{\n    color: #fff;\n    padding: 1em;\n    display: block;\n    overflow-x: auto;\n    word-break: normal;\n    font-size: inherit;\n    border-radius: 5px;\n    background-color: #333;\n}\n\n/* - 项目列表 */\nul, ol{ margin-left: 1.25em }\nul.clear, ol.clear{\n    margin-left: 0;\n    list-style: none;\n}\n\ndl dd{ margin-left: 1.5em }\ndl dd:before{\n    content: \"--\";\n    margin-right: .25em;\n}\n\n/* - 补间动画 */\na, .btn{\n    transition: color 0.3s, background 0.3s;\n    -o-transition: color 0.3s, background 0.3s;\n    -moz-transition: color 0.3s, background 0.3s;\n    -webkit-transition: color 0.3s, background 0.3s;\n}\n\n/* - 引用*/\nblockquote{\n    margin: 0 0 1em;\n    line-height: 1.8;\n    font-style: oblique;\n    background: #f5fafd;\n    padding: 1em 1em 1em 2em;\n    border-left: 5px #3498db solid;\n}\n\ncite{\n    color: #3498db;\n    font-style: normal;\n}\n\n/* - 分割线 */\nhr{\n    border: 0;\n    margin: 1.5em 0;\n    border-top: 1px rgba(0, 0, 0, 0.5) solid;\n}\nhr.light{\n    border-top: 1px rgba(255, 255, 255, 0.5) solid;\n}\n\n/* - 表单 */\ninput, textarea{ max-width: 100% }\n\ninput[disabled]{\n    cursor: no-drop;\n}\n\ninput[readonly]{\n    background: rgb(235, 235, 228);\n}\n\ninput, textarea, select{\n    outline: none;\n    font: inherit;\n    background: none;\n}\n\ninput[type=\"text\"], input[type=\"email\"], input[type=\"url\"], input[type=\"password\"], input[type=\"number\"], input[type=\"search\"], textarea, select{\n    padding: .5em;\n    color: inherit;\n    border-radius: 4px;\n    border: #ccc 1px solid;\n}\n\ninput[type=\"number\"]:out-of-range{\n    background: rgba(255, 0, 0, .3);\n}\n\ninput[type=\"range\"]{\n    margin: 0;\n    height: 100%;\n    -webkit-appearance: none;\n    -moz-appearance: none;\n    cursor: ew-resize;\n    cursor: grab;\n    overflow: hidden;\n    min-height: 1.5rem;\n}\n\ninput[type=\"range\"]:focus {\n    box-shadow: none;\n    outline: none;\n}\n\ninput[type=\"range\"]:active::-webkit-slider-thumb {\n    border-color: #3498db;\n    background-color: #3498db;\n}\n\ninput[type=\"range\"]:active::-moz-range-thumb {\n    border-color: #3498db;\n    background-color: #3498db;\n}\n\ninput[type=\"range\"]:focus::-ms-thumb {\n    border-color: #9C27B0;\n    background-color: #673AB7;\n}\n\ninput[type=\"range\"]::-moz-focus-outer { border: 0 }\n\ninput[type=\"range\"]::-webkit-slider-runnable-track {\n    background: #3498db;\n    content: '';\n    height: 2px;\n    pointer-events: none;\n}\n\ninput[type=\"range\"]::-webkit-slider-thumb {\n    width: 14px;\n    height: 14px;\n    -webkit-appearance: none;\n    appearance: none;\n    background: #fff;\n    border-radius: 50px;\n    margin-top: -6px;\n    border: 1px solid rgba(0, 0, 0, 0.15);\n    transition: .3s border-color, .3s background-color;\n}\n\ninput[type=\"range\"]::-moz-range-track {\n    width: 240px;\n    height: 2px;\n    background: rgba(0, 50, 126, 0.12);\n}\n\ninput[type=\"range\"]::-moz-range-thumb {\n    width: 14px;\n    height: 14px;\n    background: #fff;\n    border-radius: 50px;\n    border: 1px solid rgba(0, 30, 75, 0.12);\n    position: relative;\n    transition: .3s border-color, .3s background-color;\n}\n\ninput[type=\"range\"]::-moz-range-progress {\n    height: 2px;\n    background: #467fcf;\n    border: 0;\n    margin-top: 0;\n}\n\ntextarea{\n    display: block;\n    overflow: auto;\n    resize: vertical;\n}\n\nprogress{\n    overflow: auto;\n    border-radius: 50px;\n}\n\nprogress::-webkit-progress-bar{\n    background-color: #eee;\n}\n\n/* - 缤奇表单模组 */\n.ks-form label{\n    display: block;\n    cursor: pointer;\n    user-select: none;\n}\n\n.ks-form label:last-child{\n    margin-bottom: 0;\n}\n\n.ks-form label input{\n    display: inline-block;\n}\n\n.ks-form label.submit > input[type=\"text\"]{\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n}\n\n.ks-form label.submit > input[type=\"text\"] + button{\n    vertical-align: middle;\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n}\n\n.ks-form input{\n    display: block;\n    vertical-align: middle;\n}\n\nform textarea{ width: 100% }\n\n/* -- 单选多选框 */\n.ks-form input[type=\"checkbox\"], .ks-form input[type=\"radio\"]{\n    float: left;\n    width: 1.5em;\n    height: 1.5em;\n    cursor: pointer;\n    position: relative;\n    margin: 0 .5em 0 0;\n    -moz-appearance: none;\n    -webkit-appearance: none;\n}\n\n.ks-form input[type=\"checkbox\"]:before, .ks-form input[type=\"radio\"]:before{\n    content: '';\n    width: 100%;\n    height: 100%;\n    display: block;\n    border-radius: .2em;\n    border: 0 solid #3498db;\n    box-shadow: 0 0 0 1px #ccc inset;\n    transition: border 0.3s, background 0.3s, box-shadow 0.3s;\n}\n\n.ks-form input[type=\"checkbox\"]:after{\n    top: 10%;\n    left: 10%;\n    width: 30%;\n    height: 60%;\n    content: '';\n    position: absolute;\n    transition: transform .3s;\n    transform-origin: 100% 100%;\n    border-right: .15em solid #fff;\n    border-bottom: .15em solid #fff;\n    transform: rotate(45deg) scale(0);\n}\n\n.ks-form input[type=\"radio\"]:before{\n    border-radius: 100%;\n}\n\n.ks-form input[type=\"checkbox\"]:checked:before{\n    box-shadow: none;\n    background: #3498db;\n}\n\n.ks-form input[type=\"checkbox\"]:checked:after{\n    transform: rotate(45deg) scale(1);\n}\n\n.ks-form input[type=\"radio\"]:checked:before{\n    background: #3498db;\n    border: 2px solid #3498db;\n    box-shadow: 0 0 0 .2em #fff inset;\n}\n\n/* -- 开关按钮 */\n.ks-form input.switch{\n    width: 4em;\n    height: 2em;\n    float: none;\n    cursor: pointer;\n    background: #eee;\n    position: relative;\n    border-radius: 50px;\n    border: 1px solid #ddd;\n    box-sizing: content-box;\n    transition: border .3s, background .3s;\n}\n\n.ks-form input.switch:before{\n    margin: 0;\n    border: 0;\n    width: 2em;\n    height: 2em;\n    content: '';\n    display: block;\n    box-shadow: none;\n    background: #fff;\n    position: absolute;\n    border-radius: 100%;\n    transition: transform 0.3s;\n}\n\n.ks-form input.switch:after{\n    content: normal;\n}\n\n.ks-form input.switch:checked{\n    box-shadow: none;\n    background: #3498db;\n    border-color: #3498db;\n}\n\n.ks-form input.switch:checked:before{\n    background: #fff;\n    transform: translateX(2em);\n}\n\n/* - 表单小组 */\nfieldset{\n    border: none;\n    margin-bottom: 2em;\n}\n\nfieldset > *{ margin-bottom: 1em }\n\nfieldset:last-child, fieldset > *:last-child{ margin-bottom: 0 }\n\n/* -- 单行表单 */\n.ks-form.inline fieldset label, .ks-form fieldset.inline label{\n    float: left;\n    display: block;\n    margin: 0 1em .5em 0;\n}\n\n.ks-form fieldset.inline:after{\n    content: '';\n    clear: both;\n    display: block;\n}\n\n/* - 表格*/\n.ks-table{\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    border-radius: 5px;\n}\n\ntable{\n    border: 0;\n    width: 100%;\n    max-width: 100%;\n    border-collapse: collapse;\n}\n\ntable th, table td{\n    padding: .75em;\n    text-align: left;\n    vertical-align: top;\n}\n\ntable > thead > tr{\n    border-bottom: 2px solid #ccc;\n}\n\ntable > tbody > tr > td{\n    border-bottom: 1px solid #ddd;\n}\n\ntable > tbody > tr:last-child > td{\n    border-bottom: 0;\n}\n\ntable > tbody > tr{\n    transition: background .3s;\n}\n\ntable > tbody > tr:hover{\n    background: #eee;\n}\n\ntable > thead > tr > th, table > tbody > tr > th, table > tfoot > tr > th,\ntable > thead > tr > td, table > tbody > tr > td, table > tfoot > tr > td{\n    white-space: nowrap;\n}\n\n/* - 蓝色风格 */\ntable.fill{\n    border: 1px solid transparent;\n}\n\ntable.fill > thead{\n    background: #3498db;\n    border-left: 1px solid #3498db;\n    border-right: 1px solid #3498db;\n}\ntable.fill > thead > tr{\n    border-bottom: none;\n}\ntable.fill > thead > tr > th, table.fill > thead > tr > td{\n    color: #fff;\n    padding: 1em .75em;\n}\n\ntable.fill > tbody{\n    border-left: 1px solid #ddd;\n    border-right: 1px solid #ddd;\n    border-bottom: 1px solid #ddd;\n}\ntable.fill > tbody > tr:nth-child(even) > th, table.fill > tbody > tr:nth-child(even){\n    background: #f7f7f7;\n}\n\n/* - 嵌入式网页 */\niframe{\n    border: none;\n}\n\n/* - 栅格系统 */\n.row{\n    display: flex;\n    flex-wrap: wrap;\n    margin-left: -1.25em;\n    margin-right: -1.25em;\n}\n\n.row.thin{\n    margin-left: -1em;\n    margin-right: -1em;\n}\n\n.row.full{\n    margin-left: 0;\n    margin-right: 0;\n}\n\n.row.scrollable{\n    overflow: auto;\n    margin-left: 0;\n    margin-right: 0;\n    flex-wrap: nowrap;\n}\n\n/* -- 对齐方式 */\n.row.right{ justify-content: flex-end; }\n.row.center{ justify-content: center; }\n.row.around{ justify-content: space-around; }\n.row.between{ justify-content: space-between; }\n\n/* -- 网格间距 */\n.row [class*=\"col-\"]{\n    position: relative;\n    padding-left: 1.25em;\n    padding-right: 1.25em;\n}\n\n.row.thin [class*=\"col-\"]{\n    padding-left: 1em;\n    padding-right: 1em;\n}\n\n.row.full [class*=\"col-\"]{\n    padding: 0;\n    margin-bottom: 0;\n}\n\n/* -- 网格主体 */\n.row [class*=\"col-s-\"],\n.row [class*=\"col-m-\"],\n.row [class*=\"col-l-\"]{\n    flex: 0 0 100%;\n    max-width: 100%;\n    margin-bottom: 2em;\n}\n\n.row [class*=\"col-s-\"]:last-child, .row [class*=\"col-m-\"]:last-child, .row [class*=\"col-l-\"]:last-child{\n    margin-bottom: 0;\n}\n\n@media screen and (min-width: 600px){\n    .row [class*=\"col-s-\"]{\n        margin-bottom: 0;\n    }\n}\n\n@media screen and (min-width: 900px){\n    .row [class*=\"col-m-\"]{\n        margin-bottom: 0;\n    }\n}\n\n@media screen and (min-width: 1024px){\n    .row [class*=\"col-l-\"]{\n        margin-bottom: 0;\n    }\n}\n\n@media screen and (max-width: 600px){\n    .row [class*=\"wrap-s\"]{\n        margin-bottom: 1em;\n    }\n}\n\n@media screen and (max-width: 900px){\n    .row [class*=\"wrap-m\"]{\n        margin-bottom: 1em;\n    }\n}\n\n@media screen and (min-width: 1024px){\n    .row [class*=\"wrap-l\"]{\n        margin-bottom: 1em;\n    }\n}\n\n@media screen and (min-width: 600px){\n    .col-s-left-1{ right: 8.3333%; }\n    .col-s-left-2{ right: 16.6666%; }\n    .col-s-left-3{ right: 25%; }\n    .col-s-left-4{ right: 33.3333%; }\n    .col-s-left-5{ right: 41.6666%; }\n    .col-s-left-6{ right: 50%; }\n    .col-s-left-7{ right: 58.3333%; }\n    .col-s-left-8{ right: 66.6666%; }\n    .col-s-left-9{ right: 75%; }\n    .col-s-left-10{ right: 83.3333%; }\n    .col-s-left-11{ right: 91.6666%; }\n    .col-s-left-12{ right: 100%; }\n\n    .col-s-right-1{ left: 8.3333%; }\n    .col-s-right-2{ left: 16.6666%; }\n    .col-s-right-3{ left: 25%; }\n    .col-s-right-4{ left: 33.3333%; }\n    .col-s-right-5{ left: 41.6666%; }\n    .col-s-right-6{ left: 50%; }\n    .col-s-right-7{ left: 58.3333%; }\n    .col-s-right-8{ left: 66.6666%; }\n    .col-s-right-9{ left: 75%; }\n    .col-s-right-10{ left: 83.3333%; }\n    .col-s-right-11{ left: 91.6666%; }\n    .col-s-right-12{ left: 100%; }\n}\n\n@media screen and (min-width: 900px){\n    .col-m-left-1{ right: 8.3333%; }\n    .col-m-left-2{ right: 16.6666%; }\n    .col-m-left-3{ right: 25%; }\n    .col-m-left-4{ right: 33.3333%; }\n    .col-m-left-5{ right: 41.6666%; }\n    .col-m-left-6{ right: 50%; }\n    .col-m-left-7{ right: 58.3333%; }\n    .col-m-left-8{ right: 66.6666%; }\n    .col-m-left-9{ right: 75%; }\n    .col-m-left-10{ right: 83.3333%; }\n    .col-m-left-11{ right: 91.6666%; }\n    .col-m-left-12{ right: 100%; }\n\n    .col-m-right-1{ left: 8.3333%; }\n    .col-m-right-2{ left: 16.6666%; }\n    .col-m-right-3{ left: 25%; }\n    .col-m-right-4{ left: 33.3333%; }\n    .col-m-right-5{ left: 41.6666%; }\n    .col-m-right-6{ left: 50%; }\n    .col-m-right-7{ left: 58.3333%; }\n    .col-m-right-8{ left: 66.6666%; }\n    .col-m-right-9{ left: 75%; }\n    .col-m-right-10{ left: 83.3333%; }\n    .col-m-right-11{ left: 91.6666%; }\n    .col-m-right-12{ left: 100%; }\n}\n\n@media screen and (min-width: 900px){\n    .col-l-left-1{ right: 8.3333%; }\n    .col-l-left-2{ right: 16.6666%; }\n    .col-l-left-3{ right: 25%; }\n    .col-l-left-4{ right: 33.3333%; }\n    .col-l-left-5{ right: 41.6666%; }\n    .col-l-left-6{ right: 50%; }\n    .col-l-left-7{ right: 58.3333%; }\n    .col-l-left-8{ right: 66.6666%; }\n    .col-l-left-9{ right: 75%; }\n    .col-l-left-10{ right: 83.3333%; }\n    .col-l-left-11{ right: 91.6666%; }\n    .col-l-left-12{ right: 100%; }\n\n    .col-l-right-1{ left: 8.3333%; }\n    .col-l-right-2{ left: 16.6666%; }\n    .col-l-right-3{ left: 25%; }\n    .col-l-right-4{ left: 33.3333%; }\n    .col-l-right-5{ left: 41.6666%; }\n    .col-l-right-6{ left: 50%; }\n    .col-l-right-7{ left: 58.3333%; }\n    .col-l-right-8{ left: 66.6666%; }\n    .col-l-right-9{ left: 75%; }\n    .col-l-right-10{ left: 83.3333%; }\n    .col-l-right-11{ left: 91.6666%; }\n    .col-l-right-12{ left: 100%; }\n}\n\n/* --- 固定的 */\n.row .col-1{\n    -ms-flex: 0 0 8.3333%;\n    flex: 0 0 8.3333%;\n    max-width: 8.3333%;\n}\n\n.row .col-2{\n    -ms-flex: 0 0 16.6666%;\n    flex: 0 0 16.6666%;\n    max-width: 16.6666%;\n}\n\n.row .col-3{\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%;\n}\n\n.row .col-4{\n    -ms-flex: 0 0 33.3333%;\n    flex: 0 0 33.3333%;\n    max-width: 33.3333%;\n}\n\n.row .col-5{\n    -ms-flex: 0 0 41.3333%;\n    flex: 0 0 41.6666%;\n    max-width: 41.6666%;\n}\n\n.row .col-6{\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%;\n}\n\n.row .col-7{\n    -ms-flex: 0 0 58.3333%;\n    flex: 0 0 58.3333%;\n    max-width: 58.3333%;\n}\n\n.row .col-8{\n    -ms-flex: 0 0 66.6666%;\n    flex: 0 0 66.6666%;\n    max-width: 66.6666%;\n}\n\n.row .col-9{\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%;\n}\n\n.row .col-10{\n    -ms-flex: 0 0 83.3333%;\n    flex: 0 0 83.3333%;\n    max-width: 83.3333%;\n}\n\n.row .col-11{\n    -ms-flex: 0 0 91.6666%;\n    flex: 0 0 91.6666%;\n    max-width: 91.6666%;\n}\n\n.row .col-12{\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%;\n}\n\n/* --- 手机 */\n@media screen and (min-width: 600px){\n    .row .col-s-1{\n        -ms-flex: 0 0 8.3333%;\n        flex: 0 0 8.3333%;\n        max-width: 8.3333%;\n    }\n\n    .row .col-s-2{\n        -ms-flex: 0 0 16.6666%;\n        flex: 0 0 16.6666%;\n        max-width: 16.6666%;\n    }\n\n    .row .col-s-3{\n        -ms-flex: 0 0 25%;\n        flex: 0 0 25%;\n        max-width: 25%;\n    }\n\n    .row .col-s-4{\n        -ms-flex: 0 0 33.3333%;\n        flex: 0 0 33.3333%;\n        max-width: 33.3333%;\n    }\n\n    .row .col-s-5{\n        -ms-flex: 0 0 41.3333%;\n        flex: 0 0 41.6666%;\n        max-width: 41.6666%;\n    }\n\n    .row .col-s-6{\n        -ms-flex: 0 0 50%;\n        flex: 0 0 50%;\n        max-width: 50%;\n    }\n\n    .row .col-s-7{\n        -ms-flex: 0 0 58.3333%;\n        flex: 0 0 58.3333%;\n        max-width: 58.3333%;\n    }\n\n    .row .col-s-8{\n        -ms-flex: 0 0 66.6666%;\n        flex: 0 0 66.6666%;\n        max-width: 66.6666%;\n    }\n\n    .row .col-s-9{\n        -ms-flex: 0 0 75%;\n        flex: 0 0 75%;\n        max-width: 75%;\n    }\n\n    .row .col-s-10{\n        -ms-flex: 0 0 83.3333%;\n        flex: 0 0 83.3333%;\n        max-width: 83.3333%;\n    }\n\n    .row .col-s-11{\n        -ms-flex: 0 0 91.6666%;\n        flex: 0 0 91.6666%;\n        max-width: 91.6666%;\n    }\n\n    .row .col-s-12{\n        -ms-flex: 0 0 100%;\n        flex: 0 0 100%;\n        max-width: 100%;\n    }\n}\n\n/* --- 平板 */\n@media screen and (min-width: 900px){\n    .row .col-m-1{\n        -ms-flex: 0 0 8.3333%;\n        flex: 0 0 8.3333%;\n        max-width: 8.3333%;\n    }\n\n    .row .col-m-2{\n        -ms-flex: 0 0 16.6666%;\n        flex: 0 0 16.6666%;\n        max-width: 16.6666%;\n    }\n\n    .row .col-m-3{\n        -ms-flex: 0 0 25%;\n        flex: 0 0 25%;\n        max-width: 25%;\n    }\n\n    .row .col-m-4{\n        -ms-flex: 0 0 33.3333%;\n        flex: 0 0 33.3333%;\n        max-width: 33.3333%;\n    }\n\n    .row .col-m-5{\n        -ms-flex: 0 0 41.3333%;\n        flex: 0 0 41.6666%;\n        max-width: 41.6666%;\n    }\n\n    .row .col-m-6{\n        -ms-flex: 0 0 50%;\n        flex: 0 0 50%;\n        max-width: 50%;\n    }\n\n    .row .col-m-7{\n        -ms-flex: 0 0 58.3333%;\n        flex: 0 0 58.3333%;\n        max-width: 58.3333%;\n    }\n\n    .row .col-m-8{\n        -ms-flex: 0 0 66.6666%;\n        flex: 0 0 66.6666%;\n        max-width: 66.6666%;\n    }\n\n    .row .col-m-9{\n        -ms-flex: 0 0 75%;\n        flex: 0 0 75%;\n        max-width: 75%;\n    }\n\n    .row .col-m-10{\n        -ms-flex: 0 0 83.3333%;\n        flex: 0 0 83.3333%;\n        max-width: 83.3333%;\n    }\n\n    .row .col-m-11{\n        -ms-flex: 0 0 91.6666%;\n        flex: 0 0 91.6666%;\n        max-width: 91.6666%;\n    }\n\n    .row .col-m-12{\n        -ms-flex: 0 0 100%;\n        flex: 0 0 100%;\n        max-width: 100%;\n    }\n}\n\n/* --- 电脑 */\n@media screen and (min-width: 1024px){\n    .row .col-l-1{\n        -ms-flex: 0 0 8.3333%;\n        flex: 0 0 8.3333%;\n        max-width: 8.3333%;\n    }\n\n    .row .col-l-2{\n        -ms-flex: 0 0 16.6666%;\n        flex: 0 0 16.6666%;\n        max-width: 16.6666%;\n    }\n\n    .row .col-l-3{\n        -ms-flex: 0 0 25%;\n        flex: 0 0 25%;\n        max-width: 25%;\n    }\n\n    .row .col-l-4{\n        -ms-flex: 0 0 33.3333%;\n        flex: 0 0 33.3333%;\n        max-width: 33.3333%;\n    }\n\n    .row .col-l-5{\n        -ms-flex: 0 0 41.3333%;\n        flex: 0 0 41.6666%;\n        max-width: 41.6666%;\n    }\n\n    .row .col-l-6{\n        -ms-flex: 0 0 50%;\n        flex: 0 0 50%;\n        max-width: 50%;\n    }\n\n    .row .col-l-7{\n        -ms-flex: 0 0 58.3333%;\n        flex: 0 0 58.3333%;\n        max-width: 58.3333%;\n    }\n\n    .row .col-l-8{\n        -ms-flex: 0 0 66.6666%;\n        flex: 0 0 66.6666%;\n        max-width: 66.6666%;\n    }\n\n    .row .col-l-9{\n        -ms-flex: 0 0 75%;\n        flex: 0 0 75%;\n        max-width: 75%;\n    }\n\n    .row .col-l-10{\n        -ms-flex: 0 0 83.3333%;\n        flex: 0 0 83.3333%;\n        max-width: 83.3333%;\n    }\n\n    .row .col-l-11{\n        -ms-flex: 0 0 91.6666%;\n        flex: 0 0 91.6666%;\n        max-width: 91.6666%;\n    }\n\n    .row .col-l-12{\n        -ms-flex: 0 0 100%;\n        flex: 0 0 100%;\n        max-width: 100%;\n    }\n}\n\n/* -- 网格对齐方式 */\n.row > .left, .row > .right, .row > .top, .row > .bottom, .row > .center{\n    display: flex;\n    flex-direction: column;\n}\n\n.row > .center{\n    align-items: center;\n    justify-content: center;\n}\n\n.row > .center-fixed{\n    text-align: center;\n}\n\n.row > .left{\n    -webkit-box-align: start;\n    align-items: flex-start;\n}\n\n.row > .right{\n    -webkit-box-align: end;\n    align-items: flex-end;\n}\n\n.row > .top{\n    justify-content: flex-start;\n}\n\n.row > .bottom{\n    justify-content: flex-end;\n}\n\n@media screen and (max-width: 900px){\n    .row > .to-center{\n        align-items: center !important;\n    }\n}\n\n/* - 隐藏栅格功能 */\n@media screen and (max-width: 600px){\n    .row > .hide-s{ display: none; }\n}\n\n@media screen and (max-width: 900px){\n    .row > .hide-m{ display: none; }\n}\n\n@media screen and (max-width: 1024px){\n    .row > .hide-l{ display: none; }\n}\n\n/* 4 - 动画\n-------------------------------- */\n\n/* - 淡入淡出 */\n@keyframes fade-in{ from{ opacity: 0 } to{ opacity: 1 } }\n@-webkit-keyframes fade-in{ from{ opacity: 0 } to{ opacity: 1 } }\n\n@keyframes fade-off{ from{ opacity: 1 } to{ opacity: 0 } }\n@-webkit-keyframes fade-off{ from{ opacity: 1 } to{ opacity: 0 } }\n\n@keyframes fade-in-top{ from{ opacity: 0; transform: translateY(20px) } to{ opacity: 1; transform: translateY(0) } }\n@-webkit-keyframes fade-in-top{ from{ opacity: 0; transform: translateY(20px) } to{ opacity: 1; transform: translateY(0) } }\n\n@keyframes fade-in-bottom{ from{ opacity: 0; transform: translateY(-20px) } to{ opacity: 1; transform: translateY(0) } }\n@-webkit-keyframes fade-in-bottom{ from{ opacity: 0; transform: translateY(-20px) } to{ opacity: 1; transform: translateY(0) } }\n\n@keyframes fade-in-left{ from{ opacity: 0; transform: translateX(20px) } to{ opacity: 1; transform: translateX(0) } }\n@-webkit-keyframes fade-in-left{ from{ opacity: 0; transform: translateX(20px) } to{ opacity: 1; transform: translateX(0) } }\n\n@keyframes fade-in-right{ from{ opacity: 0; transform: translateX(-20px) } to{ opacity: 1; transform: translateX(0) } }\n@-webkit-keyframes fade-in-right{ from{ opacity: 0; transform: translateX(-20px) } to{ opacity: 1; transform: translateX(0) } }\n\n/* - 淡入缩放 */\n@keyframes fade-small-large{ from{ opacity: 0; transform: scale(.5, .5) } to{ opacity: 1; transform: scale(1, 1) } }\n@-webkit-keyframes fade-small-large{ from{ opacity: 0; transform: scale(.5, .5) } to{ opacity: 1; transform: scale(1, 1) } }\n\n@keyframes fade-large-small{ from{ opacity: 1; transform: scale(1, 1) } to{ opacity: 0; transform: scale(.5, .5) } }\n@-webkit-keyframes fade-large-small{ from{ opacity: 1; transform: scale(1, 1) } to{ opacity: 0; transform: scale(.5, .5) } }\n\n@keyframes fade-larger-small{ from{ opacity: 0; transform: scale(1.5, 1.5) } to{ opacity: 1; transform: scale(1, 1) } }\n@-webkit-keyframes fade-larger-small{ from{ opacity: 0; transform: scale(1.5, 1.5) } to{ opacity: 1; transform: scale(1, 1) } }\n\n@keyframes fade-small-larger{ from{ opacity: 1; transform: scale(1, 1) } to{ opacity: 0; transform: scale(1.5, 1.5) } }\n@-webkit-keyframes fade-small-larger{ from{ opacity: 1; transform: scale(1, 1) } to{ opacity: 0; transform: scale(1.5, 1.5) } }\n\n@keyframes scale-small-large{ from{ transform: scale(0, 0) } to{ transform: scale(1, 1) } }\n@-webkit-keyframes scale-small-large{ from{ transform: scale(0, 0) } to{ transform: scale(1, 1) } }\n\n@keyframes scale-large-small{ from{ transform: scale(1, 1) } to{ transform: scale(0, 0) } }\n@-webkit-keyframes scale-large-small{ from{ transform: scale(1, 1) } to{ transform: scale(0, 0) } }\n\n/* - 平移 */\n@keyframes up-and-down{ from{ transform: translateY(-20px) } to{ transform: translateY(20px) } }\n@-webkit-keyframes up-and-down{ from{ transform: translateY(-20px) } to{ transform: translateY(20px) } }\n\n@keyframes left-and-right{ from{ transform: translateX(-20px) } to{ transform: translateX(20px) } }\n@-webkit-keyframes left-and-right{ from{ transform: translateX(-20px) } to{ transform: translateX(20px) } }\n\n/* - 旋转 */\n@keyframes rotate{ from{ transform: rotate(0deg) } to{ transform: rotate(360deg) } }\n@-webkit-keyframes rotate{ from{ transform: rotate(0deg) } to{ transform: rotate(360deg) } }\n\n/* - 弹跳*/\n@keyframes jump{\n    0% {\n        transform: translateY(0) scale(1.15,.8)\n    }\n\n    20% {\n        transform: translateY(-35px) scaleY(1.1)\n    }\n\n    50% {\n        transform: translateY(-50px) scale(1)\n    }\n\n    80% {\n        transform: translateY(-35px) scale(1)\n    }\n\n    to {\n        transform: translateY(0) scale(1.15,.8)\n    }\n}\n\n/* 5 - 组件\n-------------------------------- */\n\n/* - 弹窗 */\n.ks-notice-list{\n    top: 2em;\n    left: 0;\n    right: 0;\n    z-index: 60;\n    position: fixed;\n    user-select: none;\n    pointer-events: none;\n}\n\n.ks-notice{\n    color: #fff;\n    display: table;\n    background: #333;\n    border-radius: 3em;\n    pointer-events: auto;\n    margin: 0 auto 1em auto;\n    box-shadow: 0 5px 5px -2px rgba(0, 0, 0, 0.2);\n    animation: fade-small-large .3s both;\n    -webkit-animation: fade-small-large .3s both;\n}\n\n.ks-notice.remove{\n    animation: fade-in-top .3s both reverse;\n    -webkit-animation: fade-in-top .3s both reverse;\n}\n\n/* -- 弹窗颜色 */\n.ks-notice.red{\n    background: #ea644a;\n}\n\n.ks-notice.yellow{\n    background: #f1a325;\n}\n\n.ks-notice.blue{\n    background: #3498db;\n}\n\n.ks-notice.green{\n    background: #38b03f;\n}\n\n.ks-notice .content, .ks-notice.dismiss .close{\n    padding: .5em 1em;\n    display: table-cell;\n}\n\n.ks-notice.dismiss .close{\n    cursor: pointer;\n    border-radius: 0 1em 1em 0;\n    transition: background .3s;\n}\n\n.ks-notice.dismiss .close:hover{\n    background: rgba(0, 0, 0, .1);\n}\n\n.ks-notice.dismiss .close:after{\n    content: '×';\n    font: inherit;\n}\n\n/* - 遮罩 */\n.ks-overlay{\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    z-index: 50;\n    position: fixed;\n    animation: fade-in .5s both;\n    -webkit-animation: fade-in .5s both;\n    background: rgba(0, 0, 0, .5);\n}\n\n.ks-overlay.remove{\n    animation: fade-off .5s both;\n    -webkit-animation: fade-off .5s both;\n}\n\n/* - 图片放大 */\n[ks-image=active]{\n    cursor: pointer;\n    cursor: zoom-in;\n}\n\n.ks-image{\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    z-index: 66;\n    position: fixed;\n    user-select: none;\n}\n\n.ks-image:before{\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    content: '';\n    position: absolute;\n    animation: fade-in .5s both;\n    -webkit-animation: fade-in .5s both;\n    background: rgba(0, 0, 0, .5);\n}\n\n.ks-image .ks-prev{\n    width: 10%;\n    height: 100%;\n    position: absolute;\n    cursor: url(left.png), pointer;\n}\n.ks-image .ks-next{\n    right: 0;\n    width: 10%;\n    height: 100%;\n    position: absolute;\n    cursor: url(right.png), pointer;\n}\n\n.ks-image .ks-ball{\n    top: 1em;\n    right: 1em;\n    width: 2em;\n    height: 2em;\n    opacity: 0;\n    border-radius: 66%;\n    position: absolute;\n    pointer-events: none;\n    transition: opacity .3s;\n    border: .5em #fff solid;\n    border-left-color: #3498db;\n    animation: rotate .5s linear infinite paused;\n    -webkit-animation: rotate .5s linear infinite paused;\n}\n.ks-image .ks-ball.loading{\n    opacity: 1;\n    animation-play-state: running;\n}\n\n.ks-image img{\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    margin: auto;\n    max-width: 90%;\n    max-height: 90%;\n    cursor: zoom-out;\n    position: absolute;\n    animation: fade-small-large .3s backwards;\n    -webkit-animation: fade-small-large .3s backwards;\n}\n\n.ks-image.remove:before{\n    animation: fade-off .3s both;\n    -webkit-animation: fade-off .3s both;\n}\n\n.ks-image.remove img{\n    animation: fade-large-small .3s both;\n    -webkit-animation: fade-large-small .3s both;\n}\n\n.ks-image img[src$=\".jpg\"]{\n    box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n}\n\n/* ----\n\n:) Copyright (C) By Dreamer-Paul.\n\n---- */"
  },
  {
    "path": "static/kico.js",
    "content": "/* ----\n\n# Kico Style 2.1\n# By: Dreamer-Paul\n# Last Update: 2018.12.25\n\n一个简洁、有趣的开源响应式框架，仅包含基础样式，需按照一定规则进行二次开发。\n\n欢迎你加入缤奇，和我们一起改变世界。\n本代码为奇趣保罗原创，并遵守 MIT 开源协议。欢迎访问我的博客：https://paugram.com\n\n---- */\n\nfunction Kico_Style () {\n    var kico = {};\n    var that = this;\n\n    // 批量执行\n    this.forEach = function (data, fn) {\n        for(var i = 0; i < data.length; i++){\n            fn(data[i], i, data);\n        }\n    };\n\n    // 对象创建\n    this.create = function (tag, prop) {\n        var obj = document.createElement(tag);\n\n        if(prop){\n            if(prop.id)    obj.id = prop.id;\n            if(prop.href)  obj.href = prop.href;\n            if(prop.class) obj.className = prop.class;\n            if(prop.text)  obj.innerText = prop.text;\n            if(prop.html)  obj.innerHTML = prop.html;\n\n            if(prop.child){\n                if(prop.child.constructor === Array){\n                    that.forEach(prop.child, function (i) {\n                        obj.appendChild(i);\n                    });\n                }\n                else{\n                    obj.appendChild(prop.child);\n                }\n            }\n        }\n\n        return obj;\n    };\n\n    // 对象选择\n    this.select = function (obj) {\n        if(typeof obj === 'object'){\n            return obj;\n        }\n        else if(typeof obj === 'string'){\n            return document.querySelector(obj);\n        }\n    };\n\n    this.selectAll = function (obj) {\n        if(typeof obj === 'object'){\n            return obj;\n        }\n        else if(typeof obj === 'string'){\n            return document.querySelectorAll(obj);\n        }\n    };\n\n    // 弹窗\n    kico.notice_list = this.create(\"div\", {class: \"ks-notice-list\"});\n\n    this.notice = function (content, attr) {\n        var item = that.create(\"div\", {class: \"ks-notice\"});\n        item.innerHTML += \"<span class='content'>\" + content + \"</span>\";\n\n        kico.notice_list.appendChild(item);\n\n        if(!document.querySelector(\"body > .ks-notice-list\")) document.body.appendChild(kico.notice_list);\n\n        if(attr && attr.time){\n            setTimeout(notice_remove, attr.time);\n        }\n        else{\n            var close = this.create(\"span\", {class: \"close\"});\n\n            close.addEventListener(\"click\", function () {\n                notice_remove();\n            });\n\n            item.classList.add(\"dismiss\");\n            item.appendChild(close);\n        }\n\n        if(attr && attr.color){item.classList.add(attr.color);}\n\n        function notice_remove() {\n            item.classList.add(\"remove\");\n\n            setTimeout(function () {\n                try{\n                    kico.notice_list.removeChild(item);\n                    item = null;\n                }\n                catch(err) {}\n\n                if(document.querySelector(\"body > .ks-notice-list\") && kico.notice_list.childNodes.length === 0){\n                    document.body.removeChild(kico.notice_list);\n                }\n            }, 300);\n        }\n    };\n\n    // 遮罩\n    kico.overlay = this.create(\"div\", {class: \"ks-overlay\"});\n\n    this.overlay = function (attr) {\n        document.body.appendChild(kico.overlay);\n\n        if(attr && attr.time){\n            setTimeout(overlay_remove, attr.time);\n        }\n        else{\n            kico.overlay.onclick = function (){ overlay_remove() };\n        }\n\n        if(attr && attr.code){\n            kico.overlay.onclick = function (){ overlay_remove(); attr.code() }\n        }\n\n        function overlay_remove() {\n            kico.overlay.onclick = null;\n            kico.overlay.classList.add(\"remove\");\n\n            setTimeout(function () {\n                if(document.querySelector(\"body > .ks-overlay\")){\n                    kico.overlay.classList.remove(\"remove\");\n                    document.body.removeChild(kico.overlay);\n                }\n            }, 300);\n        }\n    };\n\n    // 图片缩放\n    kico.image_box = [];\n    kico.image_box.img = this.create(\"img\");\n    kico.image_box.prev = this.create(\"div\", {class: \"ks-prev\"});\n    kico.image_box.next = this.create(\"div\", {class: \"ks-next\"});\n    kico.image_box.ball = this.create(\"div\", {class: \"ks-ball\"});\n\n    kico.image_box.wrap = this.create(\"div\", {class: \"ks-image\", child: [\n        kico.image_box.img, kico.image_box.prev, kico.image_box.next, kico.image_box.ball\n    ]});\n\n    this.image = function (selector) {\n        var current = 0;\n        var get_images = this.selectAll(selector);\n\n        // 设置图片\n        function set_image(img) {\n            if(img.getAttribute(\"ks-original\") !== null){\n                kico.image_box.img.src = img.getAttribute(\"ks-original\");\n            }\n            else if(img.src){\n                kico.image_box.img.src = img.src;\n            }\n\n            kico.image_box.ball.classList.add(\"loading\");\n        }\n\n        // 设置按钮\n        function set_buttons(c) {\n            function l(){\n                if(current - 1 >= 0) current--;\n\n                set_image(get_images[current]);\n            }\n\n            function r(){\n                if(current + 1 < get_images.length) current++;\n\n                set_image(get_images[current]);\n            }\n\n            kico.image_box.prev.onclick = l;\n            kico.image_box.next.onclick = r;\n        }\n\n        // 循环内单条设定\n        function set_item(obj, num) {\n            var scale = 1;\n            var locationX, locationY;\n\n            obj.setAttribute(\"ks-image\", \"active\");\n\n            function single_click(){\n                current = num;\n\n                set_image(obj);\n                set_buttons(num);\n\n                if(!document.body.contains(kico.image_box.wrap)) {\n                    document.body.appendChild(kico.image_box.wrap);\n                }\n            }\n\n            obj.onclick = single_click;\n        }\n\n        this.forEach(get_images, function (i, j) {\n            if(i.src || i.getAttribute(\"ks-original\")){\n                set_item(i, j);\n            }\n        });\n\n        kico.image_box.img.onclick = function () {\n            kico.image_box.wrap.classList.add(\"remove\");\n            setTimeout(function () {\n                try{\n                    document.body.removeChild(kico.image_box.wrap);\n                    kico.image_box.wrap.classList.remove(\"remove\");\n                }\n                catch (err){}\n            }, 300);\n        };\n\n        kico.image_box.img.onload = function () {\n            kico.image_box.ball.classList.remove(\"loading\");\n        }\n    };\n\n    // AJAX 组件\n    this.ajax = function (prop) {\n        if(!prop.url){\n            prop.url = document.location.origin + document.location.pathname;\n        }\n\n        function test_crossDomain() {\n            var a = document.createElement(\"a\");\n            a.href = window.location.hostname;\n            return a.hostname === prop.url ? true : false;\n        }\n\n        if(prop.method === \"POST\"){\n            var data = new FormData();\n\n            for(var pk in prop.data){\n                data.append(pk, prop.data[pk]);\n            }\n        }\n        else if(prop.method === \"GET\"){\n            var url = prop.url + \"?\";\n\n            for(var k in prop.data){\n                url += k + \"=\" + prop.data[k] + \"&\";\n            }\n\n            prop.url = url.substr(0, url.length - 1);\n        }\n\n        var request = new XMLHttpRequest();\n        request.open(prop.method, prop.url);\n        if(prop.crossDomain){ request.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\"); }\n\n        if(prop.header){\n            for(var i in prop.header){\n                request.setRequestHeader(prop.header[i][0], prop.header[i][1]);\n            }\n        }\n\n        request.send(data);\n\n        request.onreadystatechange = function () {\n            if(request.readyState === 4){\n                if(request.status === 200 || request.status === 304){\n                    prop.success ? prop.success(request) : console.log(prop.method + \" 请求发送成功\");\n                }\n                else{\n                    prop.failed ? prop.failed(request) : console.log(prop.method + \" 请求发送失败\");\n                }\n            }\n        };\n    };\n\n    // 返回页头\n    this.scrollTop = function () {\n        function to_top(){\n            if(window.scrollY !== 0){\n                window.scrollTo(0, window.scrollY * 0.9);\n                requestAnimationFrame(to_top);\n            }\n            else{\n                cancelAnimationFrame(this);\n            }\n        }\n\n        window.requestAnimationFrame(to_top);\n    };\n\n    // Show Version\n    console.log(\"%c Kico Style %c https://paugram.com \",\"color: #fff; margin: 1em 0; padding: 5px 0; background: #3498db;\",\"margin: 1em 0; padding: 5px 0; background: #efefef;\");\n}\n\nvar ks = new Kico_Style();"
  }
]