[
  {
    "path": ".commitlintrc.js",
    "content": "module.exports = {\n    extends: ['@commitlint/config-conventional'],\n    rules: {},\n};\n"
  },
  {
    "path": ".eslintrc",
    "content": "{\n  \"extends\": \"react-app\",\n  \"plugins\": [\n    \"react-hooks\"\n  ],\n  \"rules\": {\n    \"react-hooks/rules-of-hooks\": \"error\",\n    \"react-hooks/exhaustive-deps\": \"warn\",\n    \"no-multi-spaces\": 1,\n    \"react/jsx-tag-spacing\": 1,        // 总是在自动关闭的标签前加一个空格，正常情况下也不需要换行\n    \"jsx-quotes\": 1,\n    \"react/jsx-closing-bracket-location\": 1,    // 遵循JSX语法缩进/格式\n    \"react/jsx-boolean-value\": 1,               // 如果属性值为 true, 可以直接省略\n    \"react/no-string-refs\": 1,      // 总是在Refs里使用回调函数\n    \"react/self-closing-comp\": 1,    // 对于没有子元素的标签来说总是自己关闭标签\n    \"react/sort-comp\": 1,            // 按照具体规范的React.createClass 的生命周期函数书写代码\n    \"react/jsx-pascal-case\": 1        // React模块名使用帕斯卡命名，实例使用骆驼式命名\n  }\n}"
  },
  {
    "path": ".gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# production\n/build\n\n# misc\n.DS_Store\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n"
  },
  {
    "path": ".prettierignore",
    "content": "public/theme.less"
  },
  {
    "path": ".prettierrc",
    "content": "{\n    \"trailingComma\": \"es5\",\n    \"tabWidth\": 4,\n    \"singleQuote\": true,\n    \"jsxBracketSameLine\": false,\n    \"printWidth\": 100\n}\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: node_js\nnode_js:\n  - \"10\"\nscript:\n  - yarn\n  - yarn build"
  },
  {
    "path": "CHANGELOG.md",
    "content": "### 更新日志\n\n#### 2017-07-08\n\n-   依赖包版本升级\n    -   react@15.6.1\n    -   antd@2.11.2\n    -   webpack@2.6.1\n    -   等等\n\n#### 2017-08-01\n\n-   引入 redux 系列\n    -   redux@3.7.2\n    -   redux-thunk@2.2.0\n    -   react-redux@5.0.5\n-   增加权限管理模块\n    -   使用 easy-mock 模拟数据模拟登录接口\n    -   使用 redux 系列将登录用户数据传递给权限组件\n    -   权限组件采用 Render Callback 的方式传递权限给需要受控制的组件（具体做法请查看源代码。）\n    -   用户状态保存在 localStorage 中\n    -   具体做法请运行项目查看\n    -   PS：以上管理权限只是一种方式，但这绝对不是唯一的方式，也不是最好的方式。如果你有更好的方式，不妨加上面的群和大家一起分享下。😄😄\n-   增加路径别名\n    -   使用@别名处理引入组件相对路径过长问题。\n    -   缺点：编辑器不能使用快捷提示和快捷跳转到相应的文件\n\n#### 2017-08-13\n\n-   权限管理模块增加页面跳转权限验证\n    -   点击权限管理的路由拦截，若没有访问权限则会跳转到 404 页面。\n    -   大致实现方式(非常简单)：通过向自定义 router 组件传入 store，登录之后可获取到 redux 中的权限 state 数据，并通过判断是否包含权限进行跳转。ps: 该 demo 的效果是管理员登录之后才能跳转到路由拦截页面。具体操作请拉取代码尝试。\n\n#### 2017-08-26\n\n-   增加响应式布局 - 替换 antd Col 组件的响应式栅格为 md(具体参数用法请查看 antd 官方文档) - 初始化页面是获取当前浏览器宽度设置菜单显示类型 - 监听 window 的 onresize 函数，设置菜单显示类型。PS：浏览器宽度存入 redux 中，方便组件之间传递。\n    ![截图](https://raw.githubusercontent.com/yezihaohao/react-admin/master/src/style/imgs/mobile.gif)\n\n#### 2017-09-13\n\n-   依赖包版本升级\n    -   antd@2.13.1(目前最新版)\n\n#### 2017-10-21\n\n-   开发环境增加 react-hot-loader-保持状态刷新组件(译：实时调整组件),可参考以下相关项目\n    -   [react-hot-loader](https://github.com/gaearon/react-hot-loader)\n\n#### 2017-12-12\n\n-   依赖包版本升级\n    -   antd@3.0.1(目前最新版)\n    -   react-router-dom@4.2.2\n-   大改动\n    -   react-router 切换 4.x 版本，切换响应的版本路由写法(具体见代码更新日志)\n    -   ps: react-router 3.x 的版本请查看代码分支 router3.x\n\n#### 2018-01-12\n\n-   增加 cssmodule 的支持（css, less）\n\n    -   建议用 css 预处理器，文件名为 xxx.module.less，引入相应组件即可使用。\n\n    -   具体做法参见新增模块，路由后缀：/app/cssModule。[点击访问](http://cheng_haohao.oschina.io/reactadmin/#/app/cssModule)\n\n#### 2018-10-13\n\n-   重大更新 :sparkles:\n    -   升级 create-react-app 2.x，详情文档见[官方文档](https://reactjs.org/blog/2018/10/01/create-react-app-v2.html)\n-   升级大部分第三方库，升级版本见[commit](https://github.com/yezihaohao/react-admin/commit/d8dc0ff0c6517c57a46d731adba69112a55145a9#diff-b9cfc7f2cdf78a7f4b91a753d10865a2)\n-   增加自定义主题功能 - 主题基础样式配置见[variables.less](https://github.com/yezihaohao/react-admin/blob/master/src/style/antd/variables.less) - 修改主题基础样式后执行`yarn theme 或 npm run theme`，默认主题即可生效 - 页面上可自定义主题颜色配置(根据此可添加字体大小等其他 antd 的默认样式)\n    ![自定义主题](https://raw.githubusercontent.com/yezihaohao/react-admin/master/screenshots/themepicker.png)\n\n#### 2018-11-07\n\n-   完善 PWA 的 manifest.json 文件，增加按钮手动触发安装 PWA 应用\n    -   最新版的 chrome 浏览器访问[ReactAdmin](https://admiring-dijkstra-34cb29.netlify.com/)即可体验\n\n![PWA](https://raw.githubusercontent.com/yezihaohao/react-admin/master/screenshots/pwa.png)\n\n#### 2018-11-26\n\n-   增加问号形式的路由参数扩展\n\n#### 2018-12-28\n\n-   增加[react-document-title](https://github.com/gaearon/react-document-title)组件，根据路由设置页面 title\n\n#### 2019-03-20\n\n-   增加[redux-alita](https://github.com/yezihaohao/redux-alita),极简的 redux 工具用法，详情见其代码仓库\n\n#### 2019-05-10\n\n-   升级 react，react-dom，增加 hooks 支持（去掉 react-hot-loader，老版本 hot-loader 使用 hook 有点问题）\n-   增加菜单可拖拽\n\n![截图](https://raw.githubusercontent.com/yezihaohao/react-admin/master/screenshots/menu_draggable.gif)\n\n#### 2019-09-04\n\n-   增加 Git 提交 message 规范约束工具[commitizen](https://github.com/commitizen/cz-cli)\n    -   Git 提交规范往往是团队编码必需，借助工具能形成更好的约束，如果你不喜欢用，可参照提交记录去掉[bd426fd](https://github.com/yezihaohao/react-admin/commit/a9401d191edd077bc3e59c8dbeeb61e5029cde95)\n\n#### 2019-09-26\n\n-   更新 create-react-app3.x 版本，升级部分依赖 lib，详情请查看提交记录（有问题请提 issue）\n\n#### 2019-10-26\n\n-   新增访客模式的路由配置+demo（主路由配置）\n    -   [在线 Demo](https://admiring-dijkstra-34cb29.netlify.com/#/app/extension/visitor)\n\n#### 2019-12-18\n\n-   新增多级菜单配置功能（菜单可配置成无限的树状菜单，菜单嵌套过多时，样式问题可能需要你调整）\n\n#### 2020-01-21\n\n-   新增服务端异步菜单功能\n\n#### 2020-08-02\n\n-   新增多环境配置方案，环境配置任你加，源码详情请查看[提交记录](https://github.com/yezihaohao/react-admin/commit/d2cb53dca7e7179c794dc9e699d057ed549aec62)\n    -   根目录增加 .env.ra.xxx，其中 xxx 是 package.json 中运行的脚本命令第三个参数，请结合项目查看\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2019 yezihaohao\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.\n"
  },
  {
    "path": "README.md",
    "content": "# react-admin([尝试一下在线编辑](https://codesandbox.io/s/react-admin-u9kdb))\n\nreact-admin system solution\n\n<img src=\"https://raw.githubusercontent.com/yezihaohao/react-admin/master/screenshots/logo.png\" alt=\"logo\" width=\"150\" height=\"53\" />\n\n![travis-ci](https://travis-ci.org/yezihaohao/react-admin.svg?branch=master)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n\n<!-- ### 🔥🔥🔥 默认主分支切换成 TypeScript 开发，如果你希望继续使用 JS 开发，请使用[JS](https://github.com/yezihaohao/react-admin/tree/js)分支代码(继续维护) -->\n\n### 文档地址：[wiki](https://github.com/yezihaohao/react-admin/wiki)\n\n### 问题和方案汇总：[issue](https://github.com/yezihaohao/react-admin/issues/12)\n\n### 更新日志迁移至[CHANGELOG.md](https://github.com/yezihaohao/react-admin/blob/master/CHANGELOG.md)😁(重要！对于了解项目部分功能和代码很有用！)\n\n### cli 安装和使用 react-admin 🔥\n\n使用 [saigao](https://github.com/yezihaohao/saigao) 快速安装和下载 react-admin 模板来开发项目：\n\n```js\nnpm i -g saigao\n\nsaigao myapp\n// 或者使用npx 下载模板\nnpx saigao myapp\n```\n\n### 前言\n\n> 网上 react 后台管理开源免费的完整版项目比较少，所以利用空余时间集成了一个版本出来，已放到 GitHub\n> 启动和打包的时间都稍长，请耐心等待两分钟\n\n-   [GitHub 地址](https://github.com/yezihaohao/react-admin)\n-   [预览地址](https://admiring-dijkstra-34cb29.netlify.com)(已增加响应式，可手机预览 😄)\n\n### 依赖模块\n\n<span style=\"color: rgb(184,49,47);\">项目是用 create-react-app 创建的，主要还是列出新加的功能依赖包</span>\n\n<span style=\"color: rgb(184,49,47);\">点击名称可跳转相关网站 😄😄</span>\n\n-   [react](https://facebook.github.io/react/)\n-   [react-router](https://react-guide.github.io/react-router-cn/)(<span style=\"color: rgb(243,121,52);\">react 路由，4.x 的版本，如果还使用 3.x 的版本，请切换分支（ps:分支不再维护）</span>)\n-   [redux](https://redux.js.org/)(基础用法，但是封装了通用 action 和 reducer，demo 中主要用于权限控制（ps：目前可以用 16.x 的 context api 代替），可以简单了解下)\n-   [antd](https://ant.design/index-cn)(<span style=\"color: rgb(243,121,52);\">蚂蚁金服开源的 react ui 组件框架</span>)\n-   [axios](https://github.com/mzabriskie/axios)(<span style=\"color: rgb(243,121,52);\">http 请求模块，可用于前端任何场景，很强大 👍</span>)\n-   [echarts-for-react](https://github.com/hustcc/echarts-for-react)(<span style=\"color: rgb(243,121,52);\">可视化图表，别人基于 react 对 echarts 的封装，足够用了</span>)\n-   [recharts](http://recharts.org/#/zh-CN/)(<span style=\"color: rgb(243,121,52);\">另一个基于 react 封装的图表，个人觉得是没有 echarts 好用</span>)\n-   [nprogress](https://github.com/rstacruz/nprogress)(<span style=\"color: rgb(243,121,52);\">顶部加载条，蛮好用 👍</span>)\n-   [react-draft-wysiwyg](https://github.com/jpuri/react-draft-wysiwyg)(<span style=\"color: rgb(243,121,52);\">别人基于 react 的富文本封装，如果找到其他更好的可以替换</span>)\n-   [react-draggable](https://github.com/mzabriskie/react-draggable)(<span style=\"color: rgb(243,121,52);\">拖拽模块，找了个简单版的</span>)\n-   [screenfull](https://github.com/sindresorhus/screenfull.js/)(<span style=\"color: rgb(243,121,52);\">全屏插件</span>)\n-   [photoswipe](https://github.com/dimsemenov/photoswipe)(<span style=\"color: rgb(243,121,52);\">图片弹层查看插件，不依赖 jQuery，还是蛮好用 👍</span>)\n-   [animate.css](http://daneden.me/animate)(<span style=\"color: rgb(243,121,52);\">css 动画库</span>)\n-   [react-loadable](https://github.com/jamiebuilds/react-loadable)(代码拆分，按需加载，预加载，样样都行，具体见其文档，推荐使用)\n-   [redux-alita](https://github.com/yezihaohao/redux-alita) 极简的 redux2react 工具\n-   其他小细节省略\n\n### 功能模块\n\n<span style=\"color: rgb(184,49,47);\">备注：项目只引入了 ant-design 的部分组件，其他的组件 antd 官网有源码，可以直接复制到项目中使用，后续有时间补上全部组件。</span>\n\n<span style=\"color: rgb(184,49,47);\">项目使用了 antd 的自定义主题功能-->黑色，若想替换其他颜色，具体操作请查看 antd 官网</span>\n\n<!--more-->\n\n-   首页\n    -   完整布局\n    -   换肤(全局功能，暂时只实现了顶部导航的换肤，后续加上其他模块)\n-   导航菜单\n    -   顶部导航(菜单伸缩，全屏功能)\n    -   左边菜单(增加滚动条以及适配路由的 active 操作)\n-   UI 模块\n    -   按钮(antd 组件)\n    -   图标(antd 组件并增加彩色表情符)\n    -   加载中(antd 组件并增加顶部加载条)\n    -   通知提醒框(antd 组件)\n    -   标签页(antd 组件)\n    -   轮播图(ant 动效组件)\n    -   富文本\n    -   拖拽\n    -   画廊\n-   动画\n    -   基础动画(animate.css 所有动画)\n    -   动画案例\n-   表格\n    -   基础表格(antd 组件)\n    -   高级表格(antd 组件)\n    -   异步表格(数据来自掘金酱的接口)\n-   表单\n    -   基础表单(antd 组件)\n-   图表\n    -   echarts 图表\n    -   recharts 图表\n-   页面\n    -   登录页面(包括 GitHub 第三方登录)\n    -   404 页面\n\n### 功能截图\n\n#### 首页\n\n![截图](https://raw.githubusercontent.com/yezihaohao/yezihaohao.github.io/master/imgs/rd1.gif)\n\n#### 按钮图标等\n\n![截图](https://raw.githubusercontent.com/yezihaohao/yezihaohao.github.io/master/imgs/rd2.gif)\n\n#### 轮播图\n\n![截图](https://raw.githubusercontent.com/yezihaohao/yezihaohao.github.io/master/imgs/rd3.gif)\n\n#### 富文本\n\n![截图](https://raw.githubusercontent.com/yezihaohao/yezihaohao.github.io/master/imgs/rd4.gif)\n\n#### 拖拽\n\n![截图](https://raw.githubusercontent.com/yezihaohao/yezihaohao.github.io/master/imgs/rd5.gif)\n\n#### 画廊\n\n![截图](https://raw.githubusercontent.com/yezihaohao/yezihaohao.github.io/master/imgs/rd6.gif)\n\n#### 动画\n\n![截图](https://raw.githubusercontent.com/yezihaohao/yezihaohao.github.io/master/imgs/rd7.gif)\n\n#### 表格\n\n![截图](https://raw.githubusercontent.com/yezihaohao/yezihaohao.github.io/master/imgs/rd8.gif)\n\n#### 表单\n\n![截图](https://raw.githubusercontent.com/yezihaohao/yezihaohao.github.io/master/imgs/rd9.gif)\n\n#### 图表\n\n![截图](https://raw.githubusercontent.com/yezihaohao/yezihaohao.github.io/master/imgs/rd10.gif)\n\n#### 页面\n\n![截图](https://raw.githubusercontent.com/yezihaohao/yezihaohao.github.io/master/imgs/rd11.gif)\n\n#### 菜单拖拽\n\n![截图](https://raw.githubusercontent.com/yezihaohao/react-admin/master/screenshots/menu_draggable.gif)\n\n### 代码目录\n\n```js\n+-- build/                                  ---打包的文件目录\n+-- config/                                 ---npm run eject 后的配置文件目录\n+-- node_modules/                           ---npm下载文件目录\n+-- public/\n|   --- index.html\t\t\t\t\t\t\t---首页入口html文件\n|   --- npm.json\t\t\t\t\t\t\t---echarts测试数据\n|   --- weibo.json\t\t\t\t\t\t\t---echarts测试数据\n+-- src/                                    ---核心代码目录\n|   +-- axios                               ---http请求存放目录\n|   |    --- index.js\n|   +-- components                          ---各式各样的组件存放目录\n|   |    +-- animation                      ---动画组件\n|   |    |    --- ...\n|   |    +-- charts                         ---图表组件\n|   |    |    --- ...\n|   |    +-- dashboard                      ---首页组件\n|   |    |    --- ...\n|   |    +-- forms                          ---表单组件\n|   |    |    --- ...\n|   |    +-- pages                          ---页面组件\n|   |    |    --- ...\n|   |    +-- tables                         ---表格组件\n|   |    |    --- ...\n|   |    +-- ui                             ---ui组件\n|   |    |    --- ...\n|   |    --- BreadcrumbCustom.jsx           ---面包屑组件\n|   |    --- HeaderCustom.jsx               ---顶部导航组件\n|   |    --- Page.jsx                       ---页面容器\n|   |    --- SiderCustom.jsx                ---左边菜单组件\n|   +-- style                               ---项目的样式存放目录，主要采用less编写\n|   +-- utils                               ---工具文件存放目录\n|   --- App.js                              ---组件入口文件\n|   --- index.js                            ---项目的整体js入口文件，包括路由配置等\n--- .env                                    ---启动项目自定义端口配置文件\n--- .eslintrc                               ---自定义eslint配置文件，包括增加的react jsx语法限制\n--- package.json\n```\n\n### 安装运行\n\n##### 1.下载或克隆项目源码\n\n##### 2.yarn 安装依赖(国内建议增加淘宝镜像源，不然很慢，你懂的 😁)\n\n> 有些老铁遇到运行时报错，首先确定下是不是最新稳定版的 nodejs 和 yarn，切记不要用 cnpm\n\n```js\n// 首推荐使用yarn装包，避免自动升级依赖包\nyarn;\n```\n\n##### 3.启动项目\n\n```js\nyarn start\n```\n\n##### 4.打包项目\n\n```js\nyarn build\n```\n\n### Q&A(点击问题查看答案)\n\n#### 1.[create-react-app 打包项目 run build 增加进度条信息?](https://github.com/yezihaohao/react-admin/issues/12#issuecomment-325383346)\n\n#### 2.[接口跨域了，怎么在本地开发时配置代理?](https://github.com/yezihaohao/react-admin/issues/12#issuecomment-326169055)\n\n#### 3.[在使用 hashRouter 的情况下怎么实现类似锚点跳转?](https://github.com/yezihaohao/react-admin/issues/12#issuecomment-345127221)\n\n#### 4.[怎么添加多页面配置?](https://github.com/yezihaohao/react-admin/issues/12#issuecomment-348088852)\n\n#### 5.[路由传参数接问号怎么传?](https://github.com/yezihaohao/react-admin/issues/12#issuecomment-375583089)\n\n#### 6.[如何兼容 IE 浏览器?](https://github.com/yezihaohao/react-admin/issues/12#issuecomment-510295292)\n\n### License\n\nMIT\n\n### 结尾\n\n该项目会不定时更新，后续时间会添加更多的模块\n\n欢迎和感谢大家 PR~~👏👏\n\n若有问题，可加 QQ 群与我交流\n\n-   1 群：264591039（已满）\n-   2 群：592688854（已满）\n-   3 群：743490497 (已满)\n-   4 群：150131600 (已满)\n\n如果对你有帮助，给个 star 哟~~❤️❤️❤️❤️\n"
  },
  {
    "path": "config/env.js",
    "content": "'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst paths = require('./paths');\n\n// Make sure that including paths.js after env.js will read .env variables.\ndelete require.cache[require.resolve('./paths')];\n\nconst NODE_ENV = process.env.NODE_ENV;\nconst REACT_ADMIN = process.env.REACT_ADMIN;\nif (!NODE_ENV) {\n    throw new Error('The NODE_ENV environment variable is required but was not specified.');\n}\n\n// https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use\nconst dotenvFiles = [\n    `${paths.dotenv}.${NODE_ENV}.local`,\n    `${paths.dotenv}.${NODE_ENV}`,\n    `${paths.dotenv}.ra.${REACT_ADMIN}`,\n    // Don't include `.env.local` for `test` environment\n    // since normally you expect tests to produce the same\n    // results for everyone\n    NODE_ENV !== 'test' && `${paths.dotenv}.local`,\n    paths.dotenv,\n].filter(Boolean);\n\n// Load environment variables from .env* files. Suppress warnings using silent\n// if this file is missing. dotenv will never modify any environment variables\n// that have already been set.  Variable expansion is supported in .env files.\n// https://github.com/motdotla/dotenv\n// https://github.com/motdotla/dotenv-expand\ndotenvFiles.forEach((dotenvFile) => {\n    if (fs.existsSync(dotenvFile)) {\n        require('dotenv-expand')(\n            require('dotenv').config({\n                path: dotenvFile,\n            })\n        );\n    }\n});\n\n// We support resolving modules according to `NODE_PATH`.\n// This lets you use absolute paths in imports inside large monorepos:\n// https://github.com/facebook/create-react-app/issues/253.\n// It works similar to `NODE_PATH` in Node itself:\n// https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders\n// Note that unlike in Node, only *relative* paths from `NODE_PATH` are honored.\n// Otherwise, we risk importing Node.js core modules into an app instead of Webpack shims.\n// https://github.com/facebook/create-react-app/issues/1023#issuecomment-265344421\n// We also resolve them to make sure all tools using them work consistently.\nconst appDirectory = fs.realpathSync(process.cwd());\nprocess.env.NODE_PATH = (process.env.NODE_PATH || '')\n    .split(path.delimiter)\n    .filter((folder) => folder && !path.isAbsolute(folder))\n    .map((folder) => path.resolve(appDirectory, folder))\n    .join(path.delimiter);\n\n// Grab NODE_ENV and REACT_APP_* environment variables and prepare them to be\n// injected into the application via DefinePlugin in Webpack configuration.\nconst REACT_APP = /^REACT_APP_/i;\nconst REACT_ADMIN_REG = /^REACT_ADMIN_/i;\n\nfunction getClientEnvironment(publicUrl) {\n    const raw = Object.keys(process.env)\n        .filter((key) => REACT_APP.test(key) || REACT_ADMIN_REG.test(key))\n        .reduce(\n            (env, key) => {\n                env[key] = process.env[key];\n                return env;\n            },\n            {\n                // Useful for determining whether we’re running in production mode.\n                // Most importantly, it switches React into the correct mode.\n                NODE_ENV: process.env.NODE_ENV || 'development',\n                // Useful for resolving the correct path to static assets in `public`.\n                // For example, <img src={process.env.PUBLIC_URL + '/img/logo.png'} />.\n                // This should only be used as an escape hatch. Normally you would put\n                // images into the `src` and `import` them in code to get their paths.\n                PUBLIC_URL: publicUrl,\n            }\n        );\n    // Stringify all values so we can feed into Webpack DefinePlugin\n    const stringified = {\n        'process.env': Object.keys(raw).reduce((env, key) => {\n            env[key] = JSON.stringify(raw[key]);\n            return env;\n        }, {}),\n    };\n\n    return { raw, stringified };\n}\n\nmodule.exports = getClientEnvironment;\n"
  },
  {
    "path": "config/jest/cssTransform.js",
    "content": "'use strict';\n\n// This is a custom Jest transformer turning style imports into empty objects.\n// http://facebook.github.io/jest/docs/en/webpack.html\n\nmodule.exports = {\n  process() {\n    return 'module.exports = {};';\n  },\n  getCacheKey() {\n    // The output is always the same.\n    return 'cssTransform';\n  },\n};\n"
  },
  {
    "path": "config/jest/fileTransform.js",
    "content": "'use strict';\n\nconst path = require('path');\nconst camelcase = require('camelcase');\n\n// This is a custom Jest transformer turning file imports into filenames.\n// http://facebook.github.io/jest/docs/en/webpack.html\n\nmodule.exports = {\n  process(src, filename) {\n    const assetFilename = JSON.stringify(path.basename(filename));\n\n    if (filename.match(/\\.svg$/)) {\n      // Based on how SVGR generates a component name:\n      // https://github.com/smooth-code/svgr/blob/01b194cf967347d43d4cbe6b434404731b87cf27/packages/core/src/state.js#L6\n      const pascalCaseFilename = camelcase(path.parse(filename).name, {\n        pascalCase: true,\n      });\n      const componentName = `Svg${pascalCaseFilename}`;\n      return `const React = require('react');\n      module.exports = {\n        __esModule: true,\n        default: ${assetFilename},\n        ReactComponent: React.forwardRef(function ${componentName}(props, ref) {\n          return {\n            $$typeof: Symbol.for('react.element'),\n            type: 'svg',\n            ref: ref,\n            key: null,\n            props: Object.assign({}, props, {\n              children: ${assetFilename}\n            })\n          };\n        }),\n      };`;\n    }\n\n    return `module.exports = ${assetFilename};`;\n  },\n};\n"
  },
  {
    "path": "config/modules.js",
    "content": "'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst paths = require('./paths');\nconst chalk = require('react-dev-utils/chalk');\nconst resolve = require('resolve');\n\n/**\n * Get additional module paths based on the baseUrl of a compilerOptions object.\n *\n * @param {Object} options\n */\nfunction getAdditionalModulePaths(options = {}) {\n  const baseUrl = options.baseUrl;\n\n  // We need to explicitly check for null and undefined (and not a falsy value) because\n  // TypeScript treats an empty string as `.`.\n  if (baseUrl == null) {\n    // If there's no baseUrl set we respect NODE_PATH\n    // Note that NODE_PATH is deprecated and will be removed\n    // in the next major release of create-react-app.\n\n    const nodePath = process.env.NODE_PATH || '';\n    return nodePath.split(path.delimiter).filter(Boolean);\n  }\n\n  const baseUrlResolved = path.resolve(paths.appPath, baseUrl);\n\n  // We don't need to do anything if `baseUrl` is set to `node_modules`. This is\n  // the default behavior.\n  if (path.relative(paths.appNodeModules, baseUrlResolved) === '') {\n    return null;\n  }\n\n  // Allow the user set the `baseUrl` to `appSrc`.\n  if (path.relative(paths.appSrc, baseUrlResolved) === '') {\n    return [paths.appSrc];\n  }\n\n  // If the path is equal to the root directory we ignore it here.\n  // We don't want to allow importing from the root directly as source files are\n  // not transpiled outside of `src`. We do allow importing them with the\n  // absolute path (e.g. `src/Components/Button.js`) but we set that up with\n  // an alias.\n  if (path.relative(paths.appPath, baseUrlResolved) === '') {\n    return null;\n  }\n\n  // Otherwise, throw an error.\n  throw new Error(\n    chalk.red.bold(\n      \"Your project's `baseUrl` can only be set to `src` or `node_modules`.\" +\n        ' Create React App does not support other values at this time.'\n    )\n  );\n}\n\n/**\n * Get webpack aliases based on the baseUrl of a compilerOptions object.\n *\n * @param {*} options\n */\nfunction getWebpackAliases(options = {}) {\n  const baseUrl = options.baseUrl;\n\n  if (!baseUrl) {\n    return {};\n  }\n\n  const baseUrlResolved = path.resolve(paths.appPath, baseUrl);\n\n  if (path.relative(paths.appPath, baseUrlResolved) === '') {\n    return {\n      src: paths.appSrc,\n    };\n  }\n}\n\n/**\n * Get jest aliases based on the baseUrl of a compilerOptions object.\n *\n * @param {*} options\n */\nfunction getJestAliases(options = {}) {\n  const baseUrl = options.baseUrl;\n\n  if (!baseUrl) {\n    return {};\n  }\n\n  const baseUrlResolved = path.resolve(paths.appPath, baseUrl);\n\n  if (path.relative(paths.appPath, baseUrlResolved) === '') {\n    return {\n      'src/(.*)$': '<rootDir>/src/$1',\n    };\n  }\n}\n\nfunction getModules() {\n  // Check if TypeScript is setup\n  const hasTsConfig = fs.existsSync(paths.appTsConfig);\n  const hasJsConfig = fs.existsSync(paths.appJsConfig);\n\n  if (hasTsConfig && hasJsConfig) {\n    throw new Error(\n      'You have both a tsconfig.json and a jsconfig.json. If you are using TypeScript please remove your jsconfig.json file.'\n    );\n  }\n\n  let config;\n\n  // If there's a tsconfig.json we assume it's a\n  // TypeScript project and set up the config\n  // based on tsconfig.json\n  if (hasTsConfig) {\n    const ts = require(resolve.sync('typescript', {\n      basedir: paths.appNodeModules,\n    }));\n    config = ts.readConfigFile(paths.appTsConfig, ts.sys.readFile).config;\n    // Otherwise we'll check if there is jsconfig.json\n    // for non TS projects.\n  } else if (hasJsConfig) {\n    config = require(paths.appJsConfig);\n  }\n\n  config = config || {};\n  const options = config.compilerOptions || {};\n\n  const additionalModulePaths = getAdditionalModulePaths(options);\n\n  return {\n    additionalModulePaths: additionalModulePaths,\n    webpackAliases: getWebpackAliases(options),\n    jestAliases: getJestAliases(options),\n    hasTsConfig,\n  };\n}\n\nmodule.exports = getModules();\n"
  },
  {
    "path": "config/paths.js",
    "content": "'use strict';\n\nconst path = require('path');\nconst fs = require('fs');\nconst url = require('url');\n\n// Make sure any symlinks in the project folder are resolved:\n// https://github.com/facebook/create-react-app/issues/637\nconst appDirectory = fs.realpathSync(process.cwd());\nconst resolveApp = relativePath => path.resolve(appDirectory, relativePath);\n\nconst envPublicUrl = process.env.PUBLIC_URL;\n\nfunction ensureSlash(inputPath, needsSlash) {\n  const hasSlash = inputPath.endsWith('/');\n  if (hasSlash && !needsSlash) {\n    return inputPath.substr(0, inputPath.length - 1);\n  } else if (!hasSlash && needsSlash) {\n    return `${inputPath}/`;\n  } else {\n    return inputPath;\n  }\n}\n\nconst getPublicUrl = appPackageJson =>\n  envPublicUrl || require(appPackageJson).homepage;\n\n// We use `PUBLIC_URL` environment variable or \"homepage\" field to infer\n// \"public path\" at which the app is served.\n// Webpack needs to know it to put the right <script> hrefs into HTML even in\n// single-page apps that may serve index.html for nested URLs like /todos/42.\n// We can't use a relative path in HTML because we don't want to load something\n// like /todos/42/static/js/bundle.7289d.js. We have to know the root.\nfunction getServedPath(appPackageJson) {\n  const publicUrl = getPublicUrl(appPackageJson);\n  const servedUrl =\n    envPublicUrl || (publicUrl ? url.parse(publicUrl).pathname : '/');\n  return ensureSlash(servedUrl, true);\n}\n\nconst moduleFileExtensions = [\n  'web.mjs',\n  'mjs',\n  'web.js',\n  'js',\n  'web.ts',\n  'ts',\n  'web.tsx',\n  'tsx',\n  'json',\n  'web.jsx',\n  'jsx',\n];\n\n// Resolve file paths in the same order as webpack\nconst resolveModule = (resolveFn, filePath) => {\n  const extension = moduleFileExtensions.find(extension =>\n    fs.existsSync(resolveFn(`${filePath}.${extension}`))\n  );\n\n  if (extension) {\n    return resolveFn(`${filePath}.${extension}`);\n  }\n\n  return resolveFn(`${filePath}.js`);\n};\n\n// config after eject: we're in ./config/\nmodule.exports = {\n  dotenv: resolveApp('.env'),\n  appPath: resolveApp('.'),\n  appBuild: resolveApp('build'),\n  appPublic: resolveApp('public'),\n  appHtml: resolveApp('public/index.html'),\n  appIndexJs: resolveModule(resolveApp, 'src/index'),\n  appPackageJson: resolveApp('package.json'),\n  appSrc: resolveApp('src'),\n  appTsConfig: resolveApp('tsconfig.json'),\n  appJsConfig: resolveApp('jsconfig.json'),\n  yarnLockFile: resolveApp('yarn.lock'),\n  testsSetup: resolveModule(resolveApp, 'src/setupTests'),\n  proxySetup: resolveApp('src/setupProxy.js'),\n  appNodeModules: resolveApp('node_modules'),\n  publicUrl: getPublicUrl(resolveApp('package.json')),\n  servedPath: getServedPath(resolveApp('package.json')),\n};\n\n\n\nmodule.exports.moduleFileExtensions = moduleFileExtensions;\n"
  },
  {
    "path": "config/pnpTs.js",
    "content": "'use strict';\n\nconst { resolveModuleName } = require('ts-pnp');\n\nexports.resolveModuleName = (\n  typescript,\n  moduleName,\n  containingFile,\n  compilerOptions,\n  resolutionHost\n) => {\n  return resolveModuleName(\n    moduleName,\n    containingFile,\n    compilerOptions,\n    resolutionHost,\n    typescript.resolveModuleName\n  );\n};\n\nexports.resolveTypeReferenceDirective = (\n  typescript,\n  moduleName,\n  containingFile,\n  compilerOptions,\n  resolutionHost\n) => {\n  return resolveModuleName(\n    moduleName,\n    containingFile,\n    compilerOptions,\n    resolutionHost,\n    typescript.resolveTypeReferenceDirective\n  );\n};\n"
  },
  {
    "path": "config/webpack.config.js",
    "content": "'use strict';\n\nconst fs = require('fs');\nconst isWsl = require('is-wsl');\nconst path = require('path');\nconst webpack = require('webpack');\nconst resolve = require('resolve');\nconst PnpWebpackPlugin = require('pnp-webpack-plugin');\nconst HtmlWebpackPlugin = require('html-webpack-plugin');\nconst CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin');\nconst InlineChunkHtmlPlugin = require('react-dev-utils/InlineChunkHtmlPlugin');\nconst TerserPlugin = require('terser-webpack-plugin');\nconst MiniCssExtractPlugin = require('mini-css-extract-plugin');\nconst OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');\nconst safePostCssParser = require('postcss-safe-parser');\nconst ManifestPlugin = require('webpack-manifest-plugin');\nconst InterpolateHtmlPlugin = require('react-dev-utils/InterpolateHtmlPlugin');\nconst WorkboxWebpackPlugin = require('workbox-webpack-plugin');\nconst WatchMissingNodeModulesPlugin = require('react-dev-utils/WatchMissingNodeModulesPlugin');\nconst ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin');\nconst getCSSModuleLocalIdent = require('react-dev-utils/getCSSModuleLocalIdent');\nconst paths = require('./paths');\nconst modules = require('./modules');\nconst getClientEnvironment = require('./env');\nconst ModuleNotFoundPlugin = require('react-dev-utils/ModuleNotFoundPlugin');\nconst ForkTsCheckerWebpackPlugin = require('react-dev-utils/ForkTsCheckerWebpackPlugin');\nconst typescriptFormatter = require('react-dev-utils/typescriptFormatter');\nconst eslint = require('eslint');\n\nconst postcssNormalize = require('postcss-normalize');\n\nconst appPackageJson = require(paths.appPackageJson);\n\n// Source maps are resource heavy and can cause out of memory issue for large source files.\nconst shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== 'false';\n// Some apps do not need the benefits of saving a web request, so not inlining the chunk\n// makes for a smoother build process.\nconst shouldInlineRuntimeChunk = process.env.INLINE_RUNTIME_CHUNK !== 'false';\n\nconst imageInlineSizeLimit = parseInt(\n  process.env.IMAGE_INLINE_SIZE_LIMIT || '10000'\n);\n\n// Check if TypeScript is setup\nconst useTypeScript = fs.existsSync(paths.appTsConfig);\n\n// style files regexes\nconst cssRegex = /\\.css$/;\nconst cssModuleRegex = /\\.module\\.css$/;\nconst sassRegex = /\\.(scss|sass)$/;\nconst sassModuleRegex = /\\.module\\.(scss|sass)$/;\nconst lessRegex = /\\.less$/;\nconst lessModuleRegex = /\\.module\\.less/;\n\n// This is the production and development configuration.\n// It is focused on developer experience, fast rebuilds, and a minimal bundle.\nmodule.exports = function(webpackEnv) {\n  const isEnvDevelopment = webpackEnv === 'development';\n  const isEnvProduction = webpackEnv === 'production';\n\n  // Variable used for enabling profiling in Production\n  // passed into alias object. Uses a flag if passed into the build command\n  const isEnvProductionProfile =\n    isEnvProduction && process.argv.includes('--profile');\n\n  // Webpack uses `publicPath` to determine where the app is being served from.\n  // It requires a trailing slash, or the file assets will get an incorrect path.\n  // In development, we always serve from the root. This makes config easier.\n  const publicPath = isEnvProduction\n    ? paths.servedPath\n    : isEnvDevelopment && '/';\n  // Some apps do not use client-side routing with pushState.\n  // For these, \"homepage\" can be set to \".\" to enable relative asset paths.\n  const shouldUseRelativeAssetPaths = publicPath === './';\n\n  // `publicUrl` is just like `publicPath`, but we will provide it to our app\n  // as %PUBLIC_URL% in `index.html` and `process.env.PUBLIC_URL` in JavaScript.\n  // Omit trailing slash as %PUBLIC_URL%/xyz looks better than %PUBLIC_URL%xyz.\n  const publicUrl = isEnvProduction\n    ? publicPath.slice(0, -1)\n    : isEnvDevelopment && '';\n  // Get environment variables to inject into our app.\n  const env = getClientEnvironment(publicUrl);\n\n  // common function to get style loaders\n  const getStyleLoaders = (cssOptions, preProcessor) => {\n    const loaders = [\n      isEnvDevelopment && require.resolve('style-loader'),\n      isEnvProduction && {\n        loader: MiniCssExtractPlugin.loader,\n        options: shouldUseRelativeAssetPaths ? { publicPath: '../../' } : {},\n      },\n      {\n        loader: require.resolve('css-loader'),\n        options: cssOptions,\n      },\n      {\n        // Options for PostCSS as we reference these options twice\n        // Adds vendor prefixing based on your specified browser support in\n        // package.json\n        loader: require.resolve('postcss-loader'),\n        options: {\n          // Necessary for external CSS imports to work\n          // https://github.com/facebook/create-react-app/issues/2677\n          ident: 'postcss',\n          plugins: () => [\n            require('postcss-flexbugs-fixes'),\n            require('postcss-preset-env')({\n              autoprefixer: {\n                flexbox: 'no-2009',\n              },\n              stage: 3,\n            }),\n            // Adds PostCSS Normalize as the reset css with default options,\n            // so that it honors browserslist config in package.json\n            // which in turn let's users customize the target behavior as per their needs.\n            postcssNormalize(),\n          ],\n          sourceMap: isEnvProduction && shouldUseSourceMap,\n        },\n      },\n    ].filter(Boolean);\n    if (preProcessor) {\n      loaders.push(\n        {\n          loader: require.resolve('resolve-url-loader'),\n          options: {\n            sourceMap: isEnvProduction && shouldUseSourceMap,\n          },\n        },\n        {\n          loader: require.resolve(preProcessor),\n          options: {\n            sourceMap: true,\n          },\n        }\n      );\n    }\n    return loaders;\n  };\n\n  return {\n    mode: isEnvProduction ? 'production' : isEnvDevelopment && 'development',\n    // Stop compilation early in production\n    bail: isEnvProduction,\n    devtool: isEnvProduction\n      ? shouldUseSourceMap\n        ? 'source-map'\n        : false\n      : isEnvDevelopment && 'cheap-module-source-map',\n    // These are the \"entry points\" to our application.\n    // This means they will be the \"root\" imports that are included in JS bundle.\n    entry: [\n      // Include an alternative client for WebpackDevServer. A client's job is to\n      // connect to WebpackDevServer by a socket and get notified about changes.\n      // When you save a file, the client will either apply hot updates (in case\n      // of CSS changes), or refresh the page (in case of JS changes). When you\n      // make a syntax error, this client will display a syntax error overlay.\n      // Note: instead of the default WebpackDevServer client, we use a custom one\n      // to bring better experience for Create React App users. You can replace\n      // the line below with these two lines if you prefer the stock client:\n      // require.resolve('webpack-dev-server/client') + '?/',\n      // require.resolve('webpack/hot/dev-server'),\n      isEnvDevelopment &&\n        require.resolve('react-dev-utils/webpackHotDevClient'),\n      // Finally, this is your app's code:\n      paths.appIndexJs,\n      // We include the app code last so that if there is a runtime error during\n      // initialization, it doesn't blow up the WebpackDevServer client, and\n      // changing JS code would still trigger a refresh.\n    ].filter(Boolean),\n    output: {\n      // The build folder.\n      path: isEnvProduction ? paths.appBuild : undefined,\n      // Add /* filename */ comments to generated require()s in the output.\n      pathinfo: isEnvDevelopment,\n      // There will be one main bundle, and one file per asynchronous chunk.\n      // In development, it does not produce real files.\n      filename: isEnvProduction\n        ? 'static/js/[name].[contenthash:8].js'\n        : isEnvDevelopment && 'static/js/bundle.js',\n      // TODO: remove this when upgrading to webpack 5\n      futureEmitAssets: true,\n      // There are also additional JS chunk files if you use code splitting.\n      chunkFilename: isEnvProduction\n        ? 'static/js/[name].[contenthash:8].chunk.js'\n        : isEnvDevelopment && 'static/js/[name].chunk.js',\n      // We inferred the \"public path\" (such as / or /my-project) from homepage.\n      // We use \"/\" in development.\n      publicPath: publicPath,\n      // Point sourcemap entries to original disk location (format as URL on Windows)\n      devtoolModuleFilenameTemplate: isEnvProduction\n        ? info =>\n            path\n              .relative(paths.appSrc, info.absoluteResourcePath)\n              .replace(/\\\\/g, '/')\n        : isEnvDevelopment &&\n          (info => path.resolve(info.absoluteResourcePath).replace(/\\\\/g, '/')),\n      // Prevents conflicts when multiple Webpack runtimes (from different apps)\n      // are used on the same page.\n      jsonpFunction: `webpackJsonp${appPackageJson.name}`,\n      // this defaults to 'window', but by setting it to 'this' then\n      // module chunks which are built will work in web workers as well.\n      globalObject: 'this',\n    },\n    optimization: {\n      minimize: isEnvProduction,\n      minimizer: [\n        // This is only used in production mode\n        new TerserPlugin({\n          terserOptions: {\n            parse: {\n              // We want terser to parse ecma 8 code. However, we don't want it\n              // to apply any minification steps that turns valid ecma 5 code\n              // into invalid ecma 5 code. This is why the 'compress' and 'output'\n              // sections only apply transformations that are ecma 5 safe\n              // https://github.com/facebook/create-react-app/pull/4234\n              ecma: 8,\n            },\n            compress: {\n              ecma: 5,\n              warnings: false,\n              // Disabled because of an issue with Uglify breaking seemingly valid code:\n              // https://github.com/facebook/create-react-app/issues/2376\n              // Pending further investigation:\n              // https://github.com/mishoo/UglifyJS2/issues/2011\n              comparisons: false,\n              // Disabled because of an issue with Terser breaking valid code:\n              // https://github.com/facebook/create-react-app/issues/5250\n              // Pending further investigation:\n              // https://github.com/terser-js/terser/issues/120\n              inline: 2,\n            },\n            mangle: {\n              safari10: true,\n            },\n            // Added for profiling in devtools\n            keep_classnames: isEnvProductionProfile,\n            keep_fnames: isEnvProductionProfile,\n            output: {\n              ecma: 5,\n              comments: false,\n              // Turned on because emoji and regex is not minified properly using default\n              // https://github.com/facebook/create-react-app/issues/2488\n              ascii_only: true,\n            },\n          },\n          // Use multi-process parallel running to improve the build speed\n          // Default number of concurrent runs: os.cpus().length - 1\n          // Disabled on WSL (Windows Subsystem for Linux) due to an issue with Terser\n          // https://github.com/webpack-contrib/terser-webpack-plugin/issues/21\n          parallel: !isWsl,\n          // Enable file caching\n          cache: true,\n          sourceMap: shouldUseSourceMap,\n        }),\n        // This is only used in production mode\n        new OptimizeCSSAssetsPlugin({\n          cssProcessorOptions: {\n            parser: safePostCssParser,\n            map: shouldUseSourceMap\n              ? {\n                  // `inline: false` forces the sourcemap to be output into a\n                  // separate file\n                  inline: false,\n                  // `annotation: true` appends the sourceMappingURL to the end of\n                  // the css file, helping the browser find the sourcemap\n                  annotation: true,\n                }\n              : false,\n          },\n        }),\n      ],\n      // Automatically split vendor and commons\n      // https://twitter.com/wSokra/status/969633336732905474\n      // https://medium.com/webpack/webpack-4-code-splitting-chunk-graph-and-the-splitchunks-optimization-be739a861366\n      splitChunks: {\n        chunks: 'all',\n        name: false,\n      },\n      // Keep the runtime chunk separated to enable long term caching\n      // https://twitter.com/wSokra/status/969679223278505985\n      // https://github.com/facebook/create-react-app/issues/5358\n      runtimeChunk: {\n        name: entrypoint => `runtime-${entrypoint.name}`,\n      },\n    },\n    resolve: {\n      // This allows you to set a fallback for where Webpack should look for modules.\n      // We placed these paths second because we want `node_modules` to \"win\"\n      // if there are any conflicts. This matches Node resolution mechanism.\n      // https://github.com/facebook/create-react-app/issues/253\n      modules: ['node_modules', paths.appNodeModules].concat(\n        modules.additionalModulePaths || []\n      ),\n      // These are the reasonable defaults supported by the Node ecosystem.\n      // We also include JSX as a common component filename extension to support\n      // some tools, although we do not recommend using it, see:\n      // https://github.com/facebook/create-react-app/issues/290\n      // `web` extension prefixes have been added for better support\n      // for React Native Web.\n      extensions: paths.moduleFileExtensions\n        .map(ext => `.${ext}`)\n        .filter(ext => useTypeScript || !ext.includes('ts')),\n      alias: {\n        // Support React Native Web\n        // https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/\n        'react-native': 'react-native-web',\n        // Allows for better profiling with ReactDevTools\n        ...(isEnvProductionProfile && {\n          'react-dom$': 'react-dom/profiling',\n          'scheduler/tracing': 'scheduler/tracing-profiling',\n        }),\n        ...(modules.webpackAliases || {}),\n        '@': paths.appSrc\n      },\n      plugins: [\n        // Adds support for installing with Plug'n'Play, leading to faster installs and adding\n        // guards against forgotten dependencies and such.\n        PnpWebpackPlugin,\n        // Prevents users from importing files from outside of src/ (or node_modules/).\n        // This often causes confusion because we only process files within src/ with babel.\n        // To fix this, we prevent you from importing files out of src/ -- if you'd like to,\n        // please link the files into your node_modules/ and let module-resolution kick in.\n        // Make sure your source files are compiled, as they will not be processed in any way.\n        new ModuleScopePlugin(paths.appSrc, [paths.appPackageJson]),\n      ],\n    },\n    resolveLoader: {\n      plugins: [\n        // Also related to Plug'n'Play, but this time it tells Webpack to load its loaders\n        // from the current package.\n        PnpWebpackPlugin.moduleLoader(module),\n      ],\n    },\n    module: {\n      strictExportPresence: true,\n      rules: [\n        // Disable require.ensure as it's not a standard language feature.\n        { parser: { requireEnsure: false } },\n\n        // First, run the linter.\n        // It's important to do this before Babel processes the JS.\n        {\n          test: /\\.(js|mjs|jsx|ts|tsx)$/,\n          enforce: 'pre',\n          use: [\n            {\n              options: {\n                cache: true,\n                formatter: require.resolve('react-dev-utils/eslintFormatter'),\n                eslintPath: require.resolve('eslint'),\n                resolvePluginsRelativeTo: __dirname,\n\n              },\n              loader: require.resolve('eslint-loader'),\n            },\n          ],\n          include: paths.appSrc,\n        },\n        {\n          // \"oneOf\" will traverse all following loaders until one will\n          // match the requirements. When no loader matches it will fall\n          // back to the \"file\" loader at the end of the loader list.\n          oneOf: [\n            // \"url\" loader works like \"file\" loader except that it embeds assets\n            // smaller than specified limit in bytes as data URLs to avoid requests.\n            // A missing `test` is equivalent to a match.\n            {\n              test: [/\\.bmp$/, /\\.gif$/, /\\.jpe?g$/, /\\.png$/],\n              loader: require.resolve('url-loader'),\n              options: {\n                limit: imageInlineSizeLimit,\n                name: 'static/media/[name].[hash:8].[ext]',\n              },\n            },\n            // Process application JS with Babel.\n            // The preset includes JSX, Flow, TypeScript, and some ESnext features.\n            {\n              test: /\\.(js|mjs|jsx|ts|tsx)$/,\n              include: paths.appSrc,\n              loader: require.resolve('babel-loader'),\n              options: {\n                customize: require.resolve(\n                  'babel-preset-react-app/webpack-overrides'\n                ),\n\n                plugins: [\n                  [\n                    require.resolve('babel-plugin-named-asset-import'),\n                    {\n                      loaderMap: {\n                        svg: {\n                          ReactComponent:\n                            '@svgr/webpack?-svgo,+titleProp,+ref![path]',\n                        },\n                      },\n                    },\n                  ],\n                ],\n                // This is a feature of `babel-loader` for webpack (not Babel itself).\n                // It enables caching results in ./node_modules/.cache/babel-loader/\n                // directory for faster rebuilds.\n                cacheDirectory: true,\n                // See #6846 for context on why cacheCompression is disabled\n                cacheCompression: false,\n                compact: isEnvProduction,\n              },\n            },\n            // Process any JS outside of the app with Babel.\n            // Unlike the application JS, we only compile the standard ES features.\n            {\n              test: /\\.(js|mjs)$/,\n              exclude: /@babel(?:\\/|\\\\{1,2})runtime/,\n              loader: require.resolve('babel-loader'),\n              options: {\n                babelrc: false,\n                configFile: false,\n                compact: false,\n                presets: [\n                  [\n                    require.resolve('babel-preset-react-app/dependencies'),\n                    { helpers: true },\n                  ],\n                ],\n                cacheDirectory: true,\n                // See #6846 for context on why cacheCompression is disabled\n                cacheCompression: false,\n\n                // If an error happens in a package, it's possible to be\n                // because it was compiled. Thus, we don't want the browser\n                // debugger to show the original code. Instead, the code\n                // being evaluated would be much more helpful.\n                sourceMaps: false,\n              },\n            },\n            // \"postcss\" loader applies autoprefixer to our CSS.\n            // \"css\" loader resolves paths in CSS and adds assets as dependencies.\n            // \"style\" loader turns CSS into JS modules that inject <style> tags.\n            // In production, we use MiniCSSExtractPlugin to extract that CSS\n            // to a file, but in development \"style\" loader enables hot editing\n            // of CSS.\n            // By default we support CSS Modules with the extension .module.css\n            {\n              test: cssRegex,\n              exclude: cssModuleRegex,\n              use: getStyleLoaders({\n                importLoaders: 1,\n                sourceMap: isEnvProduction && shouldUseSourceMap,\n              }),\n              // Don't consider CSS imports dead code even if the\n              // containing package claims to have no side effects.\n              // Remove this when webpack adds a warning or an error for this.\n              // See https://github.com/webpack/webpack/issues/6571\n              sideEffects: true,\n            },\n            // Adds support for CSS Modules (https://github.com/css-modules/css-modules)\n            // using the extension .module.css\n            {\n              test: cssModuleRegex,\n              use: getStyleLoaders({\n                importLoaders: 1,\n                sourceMap: isEnvProduction && shouldUseSourceMap,\n                modules: true,\n                getLocalIdent: getCSSModuleLocalIdent,\n              }),\n            },\n            // Opt-in support for SASS (using .scss or .sass extensions).\n            // By default we support SASS Modules with the\n            // extensions .module.scss or .module.sass\n            {\n              test: sassRegex,\n              exclude: sassModuleRegex,\n              use: getStyleLoaders(\n                {\n                  importLoaders: 2,\n                  sourceMap: isEnvProduction && shouldUseSourceMap,\n                },\n                'sass-loader'\n              ),\n              // Don't consider CSS imports dead code even if the\n              // containing package claims to have no side effects.\n              // Remove this when webpack adds a warning or an error for this.\n              // See https://github.com/webpack/webpack/issues/6571\n              sideEffects: true,\n            },\n            // Adds support for CSS Modules, but using SASS\n            // using the extension .module.scss or .module.sass\n            {\n              test: sassModuleRegex,\n              use: getStyleLoaders(\n                {\n                  importLoaders: 2,\n                  sourceMap: isEnvProduction && shouldUseSourceMap,\n                  modules: true,\n                  getLocalIdent: getCSSModuleLocalIdent,\n                },\n                'sass-loader'\n              ),\n            },\n            {\n              test: lessRegex,\n              exclude: lessModuleRegex,\n              use: getStyleLoaders(\n                {\n                  importLoaders: 2,\n                  sourceMap: isEnvProduction && shouldUseSourceMap,\n                },\n                'less-loader'\n              ),\n              // Don't consider CSS imports dead code even if the\n              // containing package claims to have no side effects.\n              // Remove this when webpack adds a warning or an error for this.\n              // See https://github.com/webpack/webpack/issues/6571\n              sideEffects: true,\n            },\n            // Adds support for CSS Modules, but using SASS\n            // using the extension .module.scss or .module.sass\n            {\n              test: lessModuleRegex,\n              use: getStyleLoaders(\n                {\n                  importLoaders: 2,\n                  sourceMap: isEnvProduction && shouldUseSourceMap,\n                  modules: true,\n                  getLocalIdent: getCSSModuleLocalIdent,\n                },\n                'less-loader'\n              ),\n            },\n            // \"file\" loader makes sure those assets get served by WebpackDevServer.\n            // When you `import` an asset, you get its (virtual) filename.\n            // In production, they would get copied to the `build` folder.\n            // This loader doesn't use a \"test\" so it will catch all modules\n            // that fall through the other loaders.\n            {\n              loader: require.resolve('file-loader'),\n              // Exclude `js` files to keep \"css\" loader working as it injects\n              // its runtime that would otherwise be processed through \"file\" loader.\n              // Also exclude `html` and `json` extensions so they get processed\n              // by webpacks internal loaders.\n              exclude: [/\\.(js|mjs|jsx|ts|tsx)$/, /\\.html$/, /\\.json$/],\n              options: {\n                name: 'static/media/[name].[hash:8].[ext]',\n              },\n            },\n            // ** STOP ** Are you adding a new loader?\n            // Make sure to add the new loader(s) before the \"file\" loader.\n          ],\n        },\n      ],\n    },\n    plugins: [\n      // Generates an `index.html` file with the <script> injected.\n      new HtmlWebpackPlugin(\n        Object.assign(\n          {},\n          {\n            inject: true,\n            template: paths.appHtml,\n          },\n          isEnvProduction\n            ? {\n                minify: {\n                  removeComments: true,\n                  collapseWhitespace: true,\n                  removeRedundantAttributes: true,\n                  useShortDoctype: true,\n                  removeEmptyAttributes: true,\n                  removeStyleLinkTypeAttributes: true,\n                  keepClosingSlash: true,\n                  minifyJS: true,\n                  minifyCSS: true,\n                  minifyURLs: true,\n                },\n              }\n            : undefined\n        )\n      ),\n      // Inlines the webpack runtime script. This script is too small to warrant\n      // a network request.\n      // https://github.com/facebook/create-react-app/issues/5358\n      isEnvProduction &&\n        shouldInlineRuntimeChunk &&\n        new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/runtime-.+[.]js/]),\n      // Makes some environment variables available in index.html.\n      // The public URL is available as %PUBLIC_URL% in index.html, e.g.:\n      // <link rel=\"icon\" href=\"%PUBLIC_URL%/favicon.ico\">\n      // In production, it will be an empty string unless you specify \"homepage\"\n      // in `package.json`, in which case it will be the pathname of that URL.\n      // In development, this will be an empty string.\n      new InterpolateHtmlPlugin(HtmlWebpackPlugin, env.raw),\n      // This gives some necessary context to module not found errors, such as\n      // the requesting resource.\n      new ModuleNotFoundPlugin(paths.appPath),\n      // Makes some environment variables available to the JS code, for example:\n      // if (process.env.NODE_ENV === 'production') { ... }. See `./env.js`.\n      // It is absolutely essential that NODE_ENV is set to production\n      // during a production build.\n      // Otherwise React will be compiled in the very slow development mode.\n      new webpack.DefinePlugin(env.stringified),\n      // This is necessary to emit hot updates (currently CSS only):\n      isEnvDevelopment && new webpack.HotModuleReplacementPlugin(),\n      // Watcher doesn't work well if you mistype casing in a path so we use\n      // a plugin that prints an error when you attempt to do this.\n      // See https://github.com/facebook/create-react-app/issues/240\n      isEnvDevelopment && new CaseSensitivePathsPlugin(),\n      // If you require a missing module and then `npm install` it, you still have\n      // to restart the development server for Webpack to discover it. This plugin\n      // makes the discovery automatic so you don't have to restart.\n      // See https://github.com/facebook/create-react-app/issues/186\n      isEnvDevelopment &&\n        new WatchMissingNodeModulesPlugin(paths.appNodeModules),\n      isEnvProduction &&\n        new MiniCssExtractPlugin({\n          // Options similar to the same options in webpackOptions.output\n          // both options are optional\n          filename: 'static/css/[name].[contenthash:8].css',\n          chunkFilename: 'static/css/[name].[contenthash:8].chunk.css',\n        }),\n      // Generate an asset manifest file with the following content:\n      // - \"files\" key: Mapping of all asset filenames to their corresponding\n      //   output file so that tools can pick it up without having to parse\n      //   `index.html`\n      // - \"entrypoints\" key: Array of files which are included in `index.html`,\n      //   can be used to reconstruct the HTML if necessary\n      new ManifestPlugin({\n        fileName: 'asset-manifest.json',\n        publicPath: publicPath,\n        generate: (seed, files, entrypoints) => {\n          const manifestFiles = files.reduce((manifest, file) => {\n            manifest[file.name] = file.path;\n            return manifest;\n          }, seed);\n          const entrypointFiles = entrypoints.main.filter(\n            fileName => !fileName.endsWith('.map')\n          );\n\n          return {\n            files: manifestFiles,\n            entrypoints: entrypointFiles,\n          };\n        },\n      }),\n      // Moment.js is an extremely popular library that bundles large locale files\n      // by default due to how Webpack interprets its code. This is a practical\n      // solution that requires the user to opt into importing specific locales.\n      // https://github.com/jmblog/how-to-optimize-momentjs-with-webpack\n      // You can remove this if you don't use Moment.js:\n      new webpack.IgnorePlugin(/^\\.\\/locale$/, /moment$/),\n      // Generate a service worker script that will precache, and keep up to date,\n      // the HTML & assets that are part of the Webpack build.\n      isEnvProduction &&\n        new WorkboxWebpackPlugin.GenerateSW({\n          clientsClaim: true,\n          exclude: [/\\.map$/, /asset-manifest\\.json$/],\n          importWorkboxFrom: 'cdn',\n          navigateFallback: publicUrl + '/index.html',\n          navigateFallbackBlacklist: [\n            // Exclude URLs starting with /_, as they're likely an API call\n            new RegExp('^/_'),\n            // Exclude any URLs whose last part seems to be a file extension\n            // as they're likely a resource and not a SPA route.\n            // URLs containing a \"?\" character won't be blacklisted as they're likely\n            // a route with query params (e.g. auth callbacks).\n            new RegExp('/[^/?]+\\\\.[^/]+$'),\n          ],\n        }),\n      // TypeScript type checking\n      useTypeScript &&\n        new ForkTsCheckerWebpackPlugin({\n          typescript: resolve.sync('typescript', {\n            basedir: paths.appNodeModules,\n          }),\n          async: isEnvDevelopment,\n          useTypescriptIncrementalApi: true,\n          checkSyntacticErrors: true,\n          resolveModuleNameModule: process.versions.pnp\n            ? `${__dirname}/pnpTs.js`\n            : undefined,\n          resolveTypeReferenceDirectiveModule: process.versions.pnp\n            ? `${__dirname}/pnpTs.js`\n            : undefined,\n          tsconfig: paths.appTsConfig,\n          reportFiles: [\n            '**',\n            '!**/__tests__/**',\n            '!**/?(*.)(spec|test).*',\n            '!**/src/setupProxy.*',\n            '!**/src/setupTests.*',\n          ],\n          silent: true,\n          // The formatter is invoked directly in WebpackDevServerUtils during development\n          formatter: isEnvProduction ? typescriptFormatter : undefined,\n        }),\n    ].filter(Boolean),\n    // Some libraries import Node modules but don't use them in the browser.\n    // Tell Webpack to provide empty mocks for them so importing them works.\n    node: {\n      module: 'empty',\n      dgram: 'empty',\n      dns: 'mock',\n      fs: 'empty',\n      http2: 'empty',\n      net: 'empty',\n      tls: 'empty',\n      child_process: 'empty',\n    },\n    // Turn off performance processing because we utilize\n    // our own hints via the FileSizeReporter\n    performance: false,\n  };\n};\n"
  },
  {
    "path": "config/webpackDevServer.config.js",
    "content": "'use strict';\n\nconst errorOverlayMiddleware = require('react-dev-utils/errorOverlayMiddleware');\nconst evalSourceMapMiddleware = require('react-dev-utils/evalSourceMapMiddleware');\nconst noopServiceWorkerMiddleware = require('react-dev-utils/noopServiceWorkerMiddleware');\nconst ignoredFiles = require('react-dev-utils/ignoredFiles');\nconst paths = require('./paths');\nconst fs = require('fs');\n\nconst protocol = process.env.HTTPS === 'true' ? 'https' : 'http';\nconst host = process.env.HOST || '0.0.0.0';\n\nmodule.exports = function(proxy, allowedHost) {\n  return {\n    // WebpackDevServer 2.4.3 introduced a security fix that prevents remote\n    // websites from potentially accessing local content through DNS rebinding:\n    // https://github.com/webpack/webpack-dev-server/issues/887\n    // https://medium.com/webpack/webpack-dev-server-middleware-security-issues-1489d950874a\n    // However, it made several existing use cases such as development in cloud\n    // environment or subdomains in development significantly more complicated:\n    // https://github.com/facebook/create-react-app/issues/2271\n    // https://github.com/facebook/create-react-app/issues/2233\n    // While we're investigating better solutions, for now we will take a\n    // compromise. Since our WDS configuration only serves files in the `public`\n    // folder we won't consider accessing them a vulnerability. However, if you\n    // use the `proxy` feature, it gets more dangerous because it can expose\n    // remote code execution vulnerabilities in backends like Django and Rails.\n    // So we will disable the host check normally, but enable it if you have\n    // specified the `proxy` setting. Finally, we let you override it if you\n    // really know what you're doing with a special environment variable.\n    disableHostCheck:\n      !proxy || process.env.DANGEROUSLY_DISABLE_HOST_CHECK === 'true',\n    // Enable gzip compression of generated files.\n    compress: true,\n    // Silence WebpackDevServer's own logs since they're generally not useful.\n    // It will still show compile warnings and errors with this setting.\n    clientLogLevel: 'none',\n    // By default WebpackDevServer serves physical files from current directory\n    // in addition to all the virtual build products that it serves from memory.\n    // This is confusing because those files won’t automatically be available in\n    // production build folder unless we copy them. However, copying the whole\n    // project directory is dangerous because we may expose sensitive files.\n    // Instead, we establish a convention that only files in `public` directory\n    // get served. Our build script will copy `public` into the `build` folder.\n    // In `index.html`, you can get URL of `public` folder with %PUBLIC_URL%:\n    // <link rel=\"icon\" href=\"%PUBLIC_URL%/favicon.ico\">\n    // In JavaScript code, you can access it with `process.env.PUBLIC_URL`.\n    // Note that we only recommend to use `public` folder as an escape hatch\n    // for files like `favicon.ico`, `manifest.json`, and libraries that are\n    // for some reason broken when imported through Webpack. If you just want to\n    // use an image, put it in `src` and `import` it from JavaScript instead.\n    contentBase: paths.appPublic,\n    // By default files from `contentBase` will not trigger a page reload.\n    watchContentBase: true,\n    // Enable hot reloading server. It will provide /sockjs-node/ endpoint\n    // for the WebpackDevServer client so it can learn when the files were\n    // updated. The WebpackDevServer client is included as an entry point\n    // in the Webpack development configuration. Note that only changes\n    // to CSS are currently hot reloaded. JS changes will refresh the browser.\n    hot: true,\n    // It is important to tell WebpackDevServer to use the same \"root\" path\n    // as we specified in the config. In development, we always serve from /.\n    publicPath: '/',\n    // WebpackDevServer is noisy by default so we emit custom message instead\n    // by listening to the compiler events with `compiler.hooks[...].tap` calls above.\n    quiet: true,\n    // Reportedly, this avoids CPU overload on some systems.\n    // https://github.com/facebook/create-react-app/issues/293\n    // src/node_modules is not ignored to support absolute imports\n    // https://github.com/facebook/create-react-app/issues/1065\n    watchOptions: {\n      ignored: ignoredFiles(paths.appSrc),\n    },\n    // Enable HTTPS if the HTTPS environment variable is set to 'true'\n    https: protocol === 'https',\n    host,\n    overlay: false,\n    historyApiFallback: {\n      // Paths with dots should still use the history fallback.\n      // See https://github.com/facebook/create-react-app/issues/387.\n      disableDotRule: true,\n    },\n    public: allowedHost,\n    proxy,\n    before(app, server) {\n      if (fs.existsSync(paths.proxySetup)) {\n        // This registers user provided middleware for proxy reasons\n        require(paths.proxySetup)(app);\n      }\n\n      // This lets us fetch source contents from webpack for the error overlay\n      app.use(evalSourceMapMiddleware(server));\n      // This lets us open files from the runtime error overlay.\n      app.use(errorOverlayMiddleware());\n\n      // This service worker file is effectively a 'no-op' that will reset any\n      // previous service worker registered for the same host:port combination.\n      // We do this in development to avoid hitting the production cache if\n      // it used the same host and port.\n      // https://github.com/facebook/create-react-app/issues/2272#issuecomment-302832432\n      app.use(noopServiceWorkerMiddleware());\n    },\n  };\n};\n"
  },
  {
    "path": "package.json",
    "content": "{\n    \"name\": \"react-admin\",\n    \"version\": \"3.0.0\",\n    \"private\": true,\n    \"homepage\": \".\",\n    \"dependencies\": {\n        \"@ant-design/icons\": \"^4.2.2\",\n        \"@babel/core\": \"7.6.0\",\n        \"@svgr/webpack\": \"4.3.2\",\n        \"@types/classnames\": \"^2.2.9\",\n        \"@types/echarts\": \"^4.1.15\",\n        \"@types/jest\": \"24.0.18\",\n        \"@types/node\": \"12.7.11\",\n        \"@types/nprogress\": \"^0.2.0\",\n        \"@types/photoswipe\": \"^4.0.29\",\n        \"@types/query-string\": \"^6.3.0\",\n        \"@types/react\": \"^16.9.49\",\n        \"@types/react-beautiful-dnd\": \"^12.1.2\",\n        \"@types/react-color\": \"^3.0.1\",\n        \"@types/react-document-title\": \"^2.0.3\",\n        \"@types/react-dom\": \"^16.9.8\",\n        \"@types/react-draft-wysiwyg\": \"^1.12.3\",\n        \"@types/react-loadable\": \"^5.5.1\",\n        \"@types/react-router-dom\": \"^5.1.0\",\n        \"@types/recharts\": \"^1.1.21\",\n        \"@typescript-eslint/eslint-plugin\": \"^3.9.1\",\n        \"@typescript-eslint/parser\": \"^3.9.1\",\n        \"ahooks\": \"^2.6.0\",\n        \"antd\": \"^4.6.4\",\n        \"axios\": \"^0.19.0\",\n        \"babel-eslint\": \"10.0.3\",\n        \"babel-jest\": \"^24.9.0\",\n        \"babel-loader\": \"8.0.6\",\n        \"babel-plugin-named-asset-import\": \"^0.3.4\",\n        \"babel-preset-react-app\": \"^9.0.2\",\n        \"camelcase\": \"^5.2.0\",\n        \"case-sensitive-paths-webpack-plugin\": \"2.2.0\",\n        \"css-loader\": \"2.1.1\",\n        \"dotenv\": \"6.2.0\",\n        \"dotenv-expand\": \"5.1.0\",\n        \"draft-js\": \"^0.11.7\",\n        \"draftjs-to-html\": \"^0.8.4\",\n        \"draftjs-to-markdown\": \"^0.5.1\",\n        \"echarts\": \"^4.3.0\",\n        \"echarts-for-react\": \"^2.0.15-beta.1\",\n        \"eslint\": \"^6.1.0\",\n        \"eslint-config-react-app\": \"^5.0.2\",\n        \"eslint-loader\": \"3.0.2\",\n        \"eslint-plugin-flowtype\": \"3.13.0\",\n        \"eslint-plugin-import\": \"2.18.2\",\n        \"eslint-plugin-jsx-a11y\": \"6.2.3\",\n        \"eslint-plugin-react\": \"7.14.3\",\n        \"eslint-plugin-react-hooks\": \"^1.6.1\",\n        \"file-loader\": \"3.0.1\",\n        \"fs-extra\": \"7.0.1\",\n        \"html-webpack-plugin\": \"4.0.0-beta.5\",\n        \"identity-obj-proxy\": \"3.0.0\",\n        \"is-wsl\": \"^1.1.0\",\n        \"jest\": \"24.9.0\",\n        \"jest-environment-jsdom-fourteen\": \"0.1.0\",\n        \"jest-resolve\": \"24.9.0\",\n        \"jest-watch-typeahead\": \"0.4.0\",\n        \"mini-css-extract-plugin\": \"0.8.0\",\n        \"nprogress\": \"^0.2.0\",\n        \"optimize-css-assets-webpack-plugin\": \"5.0.3\",\n        \"photoswipe\": \"^4.1.3\",\n        \"pnp-webpack-plugin\": \"1.5.0\",\n        \"postcss-flexbugs-fixes\": \"4.1.0\",\n        \"postcss-loader\": \"3.0.0\",\n        \"postcss-normalize\": \"7.0.1\",\n        \"postcss-preset-env\": \"6.7.0\",\n        \"postcss-safe-parser\": \"4.0.1\",\n        \"rc-banner-anim\": \"^2.4.2\",\n        \"react\": \"^16.10.2\",\n        \"react-app-polyfill\": \"^1.0.4\",\n        \"react-beautiful-dnd\": \"^13.0.0\",\n        \"react-color\": \"^2.17.3\",\n        \"react-dev-utils\": \"^9.1.0\",\n        \"react-document-title\": \"^2.0.3\",\n        \"react-dom\": \"^16.10.2\",\n        \"react-draft-wysiwyg\": \"^1.13.2\",\n        \"react-draggable\": \"^4.0.3\",\n        \"react-loadable\": \"^5.5.0\",\n        \"react-qmap\": \"^0.1.6\",\n        \"react-router-dom\": \"^5.1.2\",\n        \"recharts\": \"^1.7.1\",\n        \"redux-alita\": \"^2.3.3\",\n        \"resolve\": \"1.12.0\",\n        \"resolve-url-loader\": \"3.1.0\",\n        \"sass-loader\": \"7.2.0\",\n        \"screenfull\": \"^5.0.0\",\n        \"semver\": \"6.3.0\",\n        \"style-loader\": \"1.0.0\",\n        \"terser-webpack-plugin\": \"1.4.1\",\n        \"ts-pnp\": \"1.1.4\",\n        \"typescript\": \"3.9.7\",\n        \"umbrella-storage\": \"^1.0.2\",\n        \"url-loader\": \"2.1.0\",\n        \"webpack\": \"4.41.0\",\n        \"webpack-dev-server\": \"3.2.1\",\n        \"webpack-manifest-plugin\": \"2.1.1\",\n        \"workbox-webpack-plugin\": \"4.3.1\"\n    },\n    \"scripts\": {\n        \"start\": \"node scripts/start.js dev\",\n        \"build\": \"node scripts/build.js production\",\n        \"starandsea\": \"node scripts/build.js starandsea\",\n        \"test\": \"node scripts/test.js\",\n        \"commit\": \"git-cz\",\n        \"release\": \"standard-version\"\n    },\n    \"config\": {\n        \"commitizen\": {\n            \"path\": \"node_modules/cz-conventional-changelog\"\n        }\n    },\n    \"husky\": {\n        \"hooks\": {\n            \"commit-msg\": \"commitlint -e $GIT_PARAMS\",\n            \"pre-commit\": \"pretty-quick --staged\"\n        }\n    },\n    \"eslintConfig\": {\n        \"extends\": \"react-app\"\n    },\n    \"browserslist\": {\n        \"production\": [\n            \">0.2%\",\n            \"not dead\",\n            \"not op_mini all\"\n        ],\n        \"development\": [\n            \"last 1 chrome version\",\n            \"last 1 firefox version\",\n            \"last 1 safari version\"\n        ]\n    },\n    \"jest\": {\n        \"roots\": [\n            \"<rootDir>/src\"\n        ],\n        \"collectCoverageFrom\": [\n            \"src/**/*.{js,jsx,ts,tsx}\",\n            \"!src/**/*.d.ts\"\n        ],\n        \"setupFiles\": [\n            \"react-app-polyfill/jsdom\"\n        ],\n        \"setupFilesAfterEnv\": [],\n        \"testMatch\": [\n            \"<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}\",\n            \"<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}\"\n        ],\n        \"testEnvironment\": \"jest-environment-jsdom-fourteen\",\n        \"transform\": {\n            \"^.+\\\\.(js|jsx|ts|tsx)$\": \"<rootDir>/node_modules/babel-jest\",\n            \"^.+\\\\.css$\": \"<rootDir>/config/jest/cssTransform.js\",\n            \"^(?!.*\\\\.(js|jsx|ts|tsx|css|json)$)\": \"<rootDir>/config/jest/fileTransform.js\"\n        },\n        \"transformIgnorePatterns\": [\n            \"[/\\\\\\\\]node_modules[/\\\\\\\\].+\\\\.(js|jsx|ts|tsx)$\",\n            \"^.+\\\\.module\\\\.(css|sass|scss)$\"\n        ],\n        \"modulePaths\": [],\n        \"moduleNameMapper\": {\n            \"^react-native$\": \"react-native-web\",\n            \"^.+\\\\.module\\\\.(css|sass|scss)$\": \"identity-obj-proxy\"\n        },\n        \"moduleFileExtensions\": [\n            \"web.js\",\n            \"js\",\n            \"web.ts\",\n            \"ts\",\n            \"web.tsx\",\n            \"tsx\",\n            \"json\",\n            \"web.jsx\",\n            \"jsx\",\n            \"node\"\n        ],\n        \"watchPlugins\": [\n            \"jest-watch-typeahead/filename\",\n            \"jest-watch-typeahead/testname\"\n        ]\n    },\n    \"babel\": {\n        \"presets\": [\n            \"react-app\"\n        ],\n        \"plugins\": [\n            [\n                \"import\",\n                {\n                    \"libraryName\": \"antd\",\n                    \"style\": true\n                }\n            ]\n        ]\n    },\n    \"devDependencies\": {\n        \"@commitlint/cli\": \"^8.2.0\",\n        \"@commitlint/config-conventional\": \"^8.2.0\",\n        \"antd-theme-generator\": \"^1.1.7\",\n        \"babel-plugin-import\": \"^1.12.2\",\n        \"commitizen\": \"^4.0.3\",\n        \"cz-conventional-changelog\": \"^3.0.2\",\n        \"husky\": \"^3.0.5\",\n        \"less\": \"2.x\",\n        \"less-loader\": \"^5.0.0\",\n        \"prettier\": \"^2.0.4\",\n        \"pretty-quick\": \"^2.0.1\",\n        \"standard-version\": \"^7.0.0\"\n    }\n}\n"
  },
  {
    "path": "public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\" />\n        <link rel=\"shortcut icon\" href=\"%PUBLIC_URL%/logo.png\" />\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\" />\n        <meta name=\"theme-color\" content=\"#000000\" />\n        <!--\n\t\tmanifest.json provides metadata used when your web app is added to the\n\t\thomescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/\n    -->\n        <link rel=\"manifest\" href=\"%PUBLIC_URL%/manifest.json\" />\n        <!--\n\t\tNotice the use of %PUBLIC_URL% in the tags above.\n\t\tIt will be replaced with the URL of the `public` folder during the build.\n\t\tOnly files inside the `public` folder can be referenced from the HTML.\n\n\t\tUnlike \"/favicon.ico\" or \"favicon.ico\", \"%PUBLIC_URL%/favicon.ico\" will\n\t\twork correctly both with client-side routing and a non-root public URL.\n\t\tLearn how to configure a non-root public URL by running `npm run build`.\n    -->\n        <title>React Admin</title>\n    </head>\n\n    <body>\n        <link rel=\"stylesheet/less\" type=\"text/css\" href=\"./theme.less\" />\n        <script src=\"%PUBLIC_URL%/assets/less.min.js\"></script>\n        <script>\n            const primaryColor = localStorage.getItem('@primary-color');\n            primaryColor &&\n                window.less.modifyVars({\n                    '@primary-color': primaryColor,\n                });\n        </script>\n        <noscript>\n            You need to enable JavaScript to run this app.\n        </noscript>\n        <div id=\"root\"></div>\n        <!--\n\t\tThis HTML file is a template.\n\t\tIf you open it directly in the browser, you will see an empty page.\n\n\t\tYou can add webfonts, meta tags, or analytics to this file.\n\t\tThe build step will place the bundled scripts into the <body> tag.\n\n\t\tTo begin the development, run `npm start` or `yarn start`.\n\t\tTo create a production bundle, use `npm run build` or `yarn build`.\n    --></body>\n</html>\n"
  },
  {
    "path": "public/manifest.json",
    "content": "{\n  \"name\": \"ReactAdmin\",\n  \"short_name\": \"ReactAdmin\",\n  \"theme_color\": \"#313653\",\n  \"background_color\": \"#313653\",\n  \"display\": \"fullscreen\",\n  \"start_url\": \".\",\n  \"icons\": [\n    {\n      \"src\": \"images/icons/icon-72x72.png\",\n      \"sizes\": \"72x72\",\n      \"type\": \"image/png\"\n    },\n    {\n      \"src\": \"images/icons/icon-96x96.png\",\n      \"sizes\": \"96x96\",\n      \"type\": \"image/png\"\n    },\n    {\n      \"src\": \"images/icons/icon-128x128.png\",\n      \"sizes\": \"128x128\",\n      \"type\": \"image/png\"\n    },\n    {\n      \"src\": \"images/icons/icon-144x144.png\",\n      \"sizes\": \"144x144\",\n      \"type\": \"image/png\"\n    },\n    {\n      \"src\": \"images/icons/icon-152x152.png\",\n      \"sizes\": \"152x152\",\n      \"type\": \"image/png\"\n    },\n    {\n      \"src\": \"images/icons/icon-192x192.png\",\n      \"sizes\": \"192x192\",\n      \"type\": \"image/png\"\n    },\n    {\n      \"src\": \"images/icons/icon-384x384.png\",\n      \"sizes\": \"384x384\",\n      \"type\": \"image/png\"\n    },\n    {\n      \"src\": \"images/icons/icon-512x512.png\",\n      \"sizes\": \"512x512\",\n      \"type\": \"image/png\"\n    }\n  ],\n  \"splash_pages\": null\n}"
  },
  {
    "path": "public/robots.txt",
    "content": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\n"
  },
  {
    "path": "public/theme.less",
    "content": "@primary-color: #313653;\n/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\n/* stylelint-disable no-duplicate-selectors */\n/* stylelint-disable */\n.bezierEasingMixin() {\n@functions: ~`(function() {\n  var NEWTON_ITERATIONS = 4;\n  var NEWTON_MIN_SLOPE = 0.001;\n  var SUBDIVISION_PRECISION = 0.0000001;\n  var SUBDIVISION_MAX_ITERATIONS = 10;\n\n  var kSplineTableSize = 11;\n  var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n  var float32ArraySupported = typeof Float32Array === 'function';\n\n  function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\n  function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\n  function C (aA1)      { return 3.0 * aA1; }\n\n  // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n  function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n  // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n  function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\n  function binarySubdivide (aX, aA, aB, mX1, mX2) {\n    var currentX, currentT, i = 0;\n    do {\n      currentT = aA + (aB - aA) / 2.0;\n      currentX = calcBezier(currentT, mX1, mX2) - aX;\n      if (currentX > 0.0) {\n        aB = currentT;\n      } else {\n        aA = currentT;\n      }\n    } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n    return currentT;\n  }\n\n  function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n   for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n     var currentSlope = getSlope(aGuessT, mX1, mX2);\n     if (currentSlope === 0.0) {\n       return aGuessT;\n     }\n     var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n     aGuessT -= currentX / currentSlope;\n   }\n   return aGuessT;\n  }\n\n  var BezierEasing = function (mX1, mY1, mX2, mY2) {\n    if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n      throw new Error('bezier x values must be in [0, 1] range');\n    }\n\n    // Precompute samples table\n    var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n    if (mX1 !== mY1 || mX2 !== mY2) {\n      for (var i = 0; i < kSplineTableSize; ++i) {\n        sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n      }\n    }\n\n    function getTForX (aX) {\n      var intervalStart = 0.0;\n      var currentSample = 1;\n      var lastSample = kSplineTableSize - 1;\n\n      for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n        intervalStart += kSampleStepSize;\n      }\n      --currentSample;\n\n      // Interpolate to provide an initial guess for t\n      var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n      var guessForT = intervalStart + dist * kSampleStepSize;\n\n      var initialSlope = getSlope(guessForT, mX1, mX2);\n      if (initialSlope >= NEWTON_MIN_SLOPE) {\n        return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n      } else if (initialSlope === 0.0) {\n        return guessForT;\n      } else {\n        return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n      }\n    }\n\n    return function BezierEasing (x) {\n      if (mX1 === mY1 && mX2 === mY2) {\n        return x; // linear\n      }\n      // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n      if (x === 0) {\n        return 0;\n      }\n      if (x === 1) {\n        return 1;\n      }\n      return calcBezier(getTForX(x), mY1, mY2);\n    };\n  };\n\n  this.colorEasing = BezierEasing(0.26, 0.09, 0.37, 0.18);\n  // less 3 requires a return\n  return '';\n})()`;\n}\n// It is hacky way to make this function will be compiled preferentially by less\n// resolve error: `ReferenceError: colorPalette is not defined`\n// https://github.com/ant-design/ant-motion/issues/44\n.bezierEasingMixin();\n\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\n.tinyColorMixin() {\n@functions: ~`(function() {\n// TinyColor v1.4.1\n// https://github.com/bgrins/TinyColor\n// 2016-07-07, Brian Grinstead, MIT License\nvar trimLeft = /^\\s+/,\n    trimRight = /\\s+$/,\n    tinyCounter = 0,\n    mathRound = Math.round,\n    mathMin = Math.min,\n    mathMax = Math.max,\n    mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n    color = (color) ? color : '';\n    opts = opts || { };\n\n    // If input is already a tinycolor, return itself\n    if (color instanceof tinycolor) {\n       return color;\n    }\n    // If we are called as a function, call using new instead\n    if (!(this instanceof tinycolor)) {\n        return new tinycolor(color, opts);\n    }\n\n    var rgb = inputToRGB(color);\n    this._originalInput = color,\n    this._r = rgb.r,\n    this._g = rgb.g,\n    this._b = rgb.b,\n    this._a = rgb.a,\n    this._roundA = mathRound(100*this._a) / 100,\n    this._format = opts.format || rgb.format;\n    this._gradientType = opts.gradientType;\n\n    // Don't let the range of [0,255] come back in [0,1].\n    // Potentially lose a little bit of precision here, but will fix issues where\n    // .5 gets interpreted as half of the total, instead of half of 1\n    // If it was supposed to be 128, this was already taken care of by inputToRgb\n    if (this._r < 1) { this._r = mathRound(this._r); }\n    if (this._g < 1) { this._g = mathRound(this._g); }\n    if (this._b < 1) { this._b = mathRound(this._b); }\n\n    this._ok = rgb.ok;\n    this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n    isDark: function() {\n        return this.getBrightness() < 128;\n    },\n    isLight: function() {\n        return !this.isDark();\n    },\n    isValid: function() {\n        return this._ok;\n    },\n    getOriginalInput: function() {\n      return this._originalInput;\n    },\n    getFormat: function() {\n        return this._format;\n    },\n    getAlpha: function() {\n        return this._a;\n    },\n    getBrightness: function() {\n        //http://www.w3.org/TR/AERT#color-contrast\n        var rgb = this.toRgb();\n        return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n    },\n    getLuminance: function() {\n        //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n        var rgb = this.toRgb();\n        var RsRGB, GsRGB, BsRGB, R, G, B;\n        RsRGB = rgb.r/255;\n        GsRGB = rgb.g/255;\n        BsRGB = rgb.b/255;\n\n        if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n        if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n        if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n        return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n    },\n    setAlpha: function(value) {\n        this._a = boundAlpha(value);\n        this._roundA = mathRound(100*this._a) / 100;\n        return this;\n    },\n    toHsv: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n    },\n    toHsvString: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n        return (this._a == 1) ?\n          \"hsv(\"  + h + \", \" + s + \"%, \" + v + \"%)\" :\n          \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n    },\n    toHsl: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n    },\n    toHslString: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n        return (this._a == 1) ?\n          \"hsl(\"  + h + \", \" + s + \"%, \" + l + \"%)\" :\n          \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n    },\n    toHex: function(allow3Char) {\n        return rgbToHex(this._r, this._g, this._b, allow3Char);\n    },\n    toHexString: function(allow3Char) {\n        return '#' + this.toHex(allow3Char);\n    },\n    toHex8: function(allow4Char) {\n        return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n    },\n    toHex8String: function(allow4Char) {\n        return '#' + this.toHex8(allow4Char);\n    },\n    toRgb: function() {\n        return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n    },\n    toRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n          \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n    },\n    toPercentageRgb: function() {\n        return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n    },\n    toPercentageRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n          \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n    },\n    toName: function() {\n        if (this._a === 0) {\n            return \"transparent\";\n        }\n\n        if (this._a < 1) {\n            return false;\n        }\n\n        return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n    },\n    toFilter: function(secondColor) {\n        var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n        var secondHex8String = hex8String;\n        var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n        if (secondColor) {\n            var s = tinycolor(secondColor);\n            secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n        }\n\n        return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n    },\n    toString: function(format) {\n        var formatSet = !!format;\n        format = format || this._format;\n\n        var formattedString = false;\n        var hasAlpha = this._a < 1 && this._a >= 0;\n        var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n        if (needsAlphaFormat) {\n            // Special case for \"transparent\", all other non-alpha formats\n            // will return rgba when there is transparency.\n            if (format === \"name\" && this._a === 0) {\n                return this.toName();\n            }\n            return this.toRgbString();\n        }\n        if (format === \"rgb\") {\n            formattedString = this.toRgbString();\n        }\n        if (format === \"prgb\") {\n            formattedString = this.toPercentageRgbString();\n        }\n        if (format === \"hex\" || format === \"hex6\") {\n            formattedString = this.toHexString();\n        }\n        if (format === \"hex3\") {\n            formattedString = this.toHexString(true);\n        }\n        if (format === \"hex4\") {\n            formattedString = this.toHex8String(true);\n        }\n        if (format === \"hex8\") {\n            formattedString = this.toHex8String();\n        }\n        if (format === \"name\") {\n            formattedString = this.toName();\n        }\n        if (format === \"hsl\") {\n            formattedString = this.toHslString();\n        }\n        if (format === \"hsv\") {\n            formattedString = this.toHsvString();\n        }\n\n        return formattedString || this.toHexString();\n    },\n    clone: function() {\n        return tinycolor(this.toString());\n    },\n\n    _applyModification: function(fn, args) {\n        var color = fn.apply(null, [this].concat([].slice.call(args)));\n        this._r = color._r;\n        this._g = color._g;\n        this._b = color._b;\n        this.setAlpha(color._a);\n        return this;\n    },\n    lighten: function() {\n        return this._applyModification(lighten, arguments);\n    },\n    brighten: function() {\n        return this._applyModification(brighten, arguments);\n    },\n    darken: function() {\n        return this._applyModification(darken, arguments);\n    },\n    desaturate: function() {\n        return this._applyModification(desaturate, arguments);\n    },\n    saturate: function() {\n        return this._applyModification(saturate, arguments);\n    },\n    greyscale: function() {\n        return this._applyModification(greyscale, arguments);\n    },\n    spin: function() {\n        return this._applyModification(spin, arguments);\n    },\n\n    _applyCombination: function(fn, args) {\n        return fn.apply(null, [this].concat([].slice.call(args)));\n    },\n    analogous: function() {\n        return this._applyCombination(analogous, arguments);\n    },\n    complement: function() {\n        return this._applyCombination(complement, arguments);\n    },\n    monochromatic: function() {\n        return this._applyCombination(monochromatic, arguments);\n    },\n    splitcomplement: function() {\n        return this._applyCombination(splitcomplement, arguments);\n    },\n    triad: function() {\n        return this._applyCombination(triad, arguments);\n    },\n    tetrad: function() {\n        return this._applyCombination(tetrad, arguments);\n    }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n    if (typeof color == \"object\") {\n        var newColor = {};\n        for (var i in color) {\n            if (color.hasOwnProperty(i)) {\n                if (i === \"a\") {\n                    newColor[i] = color[i];\n                }\n                else {\n                    newColor[i] = convertToPercentage(color[i]);\n                }\n            }\n        }\n        color = newColor;\n    }\n\n    return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n//     \"red\"\n//     \"#f00\" or \"f00\"\n//     \"#ff0000\" or \"ff0000\"\n//     \"#ff000000\" or \"ff000000\"\n//     \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n//     \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n//     \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n//     \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n//     \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n//     \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n//     \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n    var rgb = { r: 0, g: 0, b: 0 };\n    var a = 1;\n    var s = null;\n    var v = null;\n    var l = null;\n    var ok = false;\n    var format = false;\n\n    if (typeof color == \"string\") {\n        color = stringInputToObject(color);\n    }\n\n    if (typeof color == \"object\") {\n        if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n            rgb = rgbToRgb(color.r, color.g, color.b);\n            ok = true;\n            format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n            s = convertToPercentage(color.s);\n            v = convertToPercentage(color.v);\n            rgb = hsvToRgb(color.h, s, v);\n            ok = true;\n            format = \"hsv\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n            s = convertToPercentage(color.s);\n            l = convertToPercentage(color.l);\n            rgb = hslToRgb(color.h, s, l);\n            ok = true;\n            format = \"hsl\";\n        }\n\n        if (color.hasOwnProperty(\"a\")) {\n            a = color.a;\n        }\n    }\n\n    a = boundAlpha(a);\n\n    return {\n        ok: ok,\n        format: color.format || format,\n        r: mathMin(255, mathMax(rgb.r, 0)),\n        g: mathMin(255, mathMax(rgb.g, 0)),\n        b: mathMin(255, mathMax(rgb.b, 0)),\n        a: a\n    };\n}\n\n// Conversion Functions\n// --------------------\n\n// rgbToHsl, rgbToHsv, hslToRgb, hsvToRgb modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// rgbToRgb\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n    return {\n        r: bound01(r, 255) * 255,\n        g: bound01(g, 255) * 255,\n        b: bound01(b, 255) * 255\n    };\n}\n\n// rgbToHsl\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, l = (max + min) / 2;\n\n    if(max == min) {\n        h = s = 0; // achromatic\n    }\n    else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n\n        h /= 6;\n    }\n\n    return { h: h, s: s, l: l };\n}\n\n// hslToRgb\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n    var r, g, b;\n\n    h = bound01(h, 360);\n    s = bound01(s, 100);\n    l = bound01(l, 100);\n\n    function hue2rgb(p, q, t) {\n        if(t < 0) t += 1;\n        if(t > 1) t -= 1;\n        if(t < 1/6) return p + (q - p) * 6 * t;\n        if(t < 1/2) return q;\n        if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n        return p;\n    }\n\n    if(s === 0) {\n        r = g = b = l; // achromatic\n    }\n    else {\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1/3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1/3);\n    }\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// rgbToHsv\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, v = max;\n\n    var d = max - min;\n    s = max === 0 ? 0 : d / max;\n\n    if(max == min) {\n        h = 0; // achromatic\n    }\n    else {\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n        h /= 6;\n    }\n    return { h: h, s: s, v: v };\n}\n\n// hsvToRgb\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n    h = bound01(h, 360) * 6;\n    s = bound01(s, 100);\n    v = bound01(v, 100);\n\n    var i = Math.floor(h),\n        f = h - i,\n        p = v * (1 - s),\n        q = v * (1 - f * s),\n        t = v * (1 - (1 - f) * s),\n        mod = i % 6,\n        r = [v, q, p, p, t, v][mod],\n        g = [t, v, v, q, p, p][mod],\n        b = [p, p, t, v, v, q][mod];\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// rgbToHex\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    // Return a 3 character hex if possible\n    if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// rgbaToHex\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16)),\n        pad2(convertDecimalToHex(a))\n    ];\n\n    // Return a 4 character hex if possible\n    if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// rgbaToArgbHex\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n    var hex = [\n        pad2(convertDecimalToHex(a)),\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    return hex.join(\"\");\n}\n\n// equals\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n    if (!color1 || !color2) { return false; }\n    return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n    return tinycolor.fromRatio({\n        r: mathRandom(),\n        g: mathRandom(),\n        b: mathRandom()\n    });\n};\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction desaturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s -= amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s += amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n    return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l += amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var rgb = tinycolor(color).toRgb();\n    rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n    rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n    rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n    return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l -= amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n    var hsl = tinycolor(color).toHsl();\n    var hue = (hsl.h + amount) % 360;\n    hsl.h = hue < 0 ? 360 + hue : hue;\n    return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction complement(color) {\n    var hsl = tinycolor(color).toHsl();\n    hsl.h = (hsl.h + 180) % 360;\n    return tinycolor(hsl);\n}\n\nfunction triad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction tetrad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction splitcomplement(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n        tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n    ];\n}\n\nfunction analogous(color, results, slices) {\n    results = results || 6;\n    slices = slices || 30;\n\n    var hsl = tinycolor(color).toHsl();\n    var part = 360 / slices;\n    var ret = [tinycolor(color)];\n\n    for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n        hsl.h = (hsl.h + part) % 360;\n        ret.push(tinycolor(hsl));\n    }\n    return ret;\n}\n\nfunction monochromatic(color, results) {\n    results = results || 6;\n    var hsv = tinycolor(color).toHsv();\n    var h = hsv.h, s = hsv.s, v = hsv.v;\n    var ret = [];\n    var modification = 1 / results;\n\n    while (results--) {\n        ret.push(tinycolor({ h: h, s: s, v: v}));\n        v = (v + modification) % 1;\n    }\n\n    return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n    amount = (amount === 0) ? 0 : (amount || 50);\n\n    var rgb1 = tinycolor(color1).toRgb();\n    var rgb2 = tinycolor(color2).toRgb();\n\n    var p = amount / 100;\n\n    var rgba = {\n        r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n        g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n        b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n        a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n    };\n\n    return tinycolor(rgba);\n};\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// contrast\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function(color1, color2) {\n    var c1 = tinycolor(color1);\n    var c2 = tinycolor(color2);\n    return (Math.max(c1.getLuminance(),c2.getLuminance())+0.05) / (Math.min(c1.getLuminance(),c2.getLuminance())+0.05);\n};\n\n// isReadable\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n//      the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n//      the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n//    tinycolor.isReadable(\"#000\", \"#111\") => false\n//    tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n    var readability = tinycolor.readability(color1, color2);\n    var wcag2Parms, out;\n\n    out = false;\n\n    wcag2Parms = validateWCAG2Parms(wcag2);\n    switch (wcag2Parms.level + wcag2Parms.size) {\n        case \"AAsmall\":\n        case \"AAAlarge\":\n            out = readability >= 4.5;\n            break;\n        case \"AAlarge\":\n            out = readability >= 3;\n            break;\n        case \"AAAsmall\":\n            out = readability >= 7;\n            break;\n    }\n    return out;\n\n};\n\n// mostReadable\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString();  // \"#ffffff\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n    var bestColor = null;\n    var bestScore = 0;\n    var readability;\n    var includeFallbackColors, level, size ;\n    args = args || {};\n    includeFallbackColors = args.includeFallbackColors ;\n    level = args.level;\n    size = args.size;\n\n    for (var i= 0; i < colorList.length ; i++) {\n        readability = tinycolor.readability(baseColor, colorList[i]);\n        if (readability > bestScore) {\n            bestScore = readability;\n            bestColor = tinycolor(colorList[i]);\n        }\n    }\n\n    if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n        return bestColor;\n    }\n    else {\n        args.includeFallbackColors=false;\n        return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n    }\n};\n\n// Big List of Colors\n// ------------------\n// <http://www.w3.org/TR/css3-color/#svg-color>\nvar names = tinycolor.names = {\n    aliceblue: \"f0f8ff\",\n    antiquewhite: \"faebd7\",\n    aqua: \"0ff\",\n    aquamarine: \"7fffd4\",\n    azure: \"f0ffff\",\n    beige: \"f5f5dc\",\n    bisque: \"ffe4c4\",\n    black: \"000\",\n    blanchedalmond: \"ffebcd\",\n    blue: \"00f\",\n    blueviolet: \"8a2be2\",\n    brown: \"a52a2a\",\n    burlywood: \"deb887\",\n    burntsienna: \"ea7e5d\",\n    cadetblue: \"5f9ea0\",\n    chartreuse: \"7fff00\",\n    chocolate: \"d2691e\",\n    coral: \"ff7f50\",\n    cornflowerblue: \"6495ed\",\n    cornsilk: \"fff8dc\",\n    crimson: \"dc143c\",\n    cyan: \"0ff\",\n    darkblue: \"00008b\",\n    darkcyan: \"008b8b\",\n    darkgoldenrod: \"b8860b\",\n    darkgray: \"a9a9a9\",\n    darkgreen: \"006400\",\n    darkgrey: \"a9a9a9\",\n    darkkhaki: \"bdb76b\",\n    darkmagenta: \"8b008b\",\n    darkolivegreen: \"556b2f\",\n    darkorange: \"ff8c00\",\n    darkorchid: \"9932cc\",\n    darkred: \"8b0000\",\n    darksalmon: \"e9967a\",\n    darkseagreen: \"8fbc8f\",\n    darkslateblue: \"483d8b\",\n    darkslategray: \"2f4f4f\",\n    darkslategrey: \"2f4f4f\",\n    darkturquoise: \"00ced1\",\n    darkviolet: \"9400d3\",\n    deeppink: \"ff1493\",\n    deepskyblue: \"00bfff\",\n    dimgray: \"696969\",\n    dimgrey: \"696969\",\n    dodgerblue: \"1e90ff\",\n    firebrick: \"b22222\",\n    floralwhite: \"fffaf0\",\n    forestgreen: \"228b22\",\n    fuchsia: \"f0f\",\n    gainsboro: \"dcdcdc\",\n    ghostwhite: \"f8f8ff\",\n    gold: \"ffd700\",\n    goldenrod: \"daa520\",\n    gray: \"808080\",\n    green: \"008000\",\n    greenyellow: \"adff2f\",\n    grey: \"808080\",\n    honeydew: \"f0fff0\",\n    hotpink: \"ff69b4\",\n    indianred: \"cd5c5c\",\n    indigo: \"4b0082\",\n    ivory: \"fffff0\",\n    khaki: \"f0e68c\",\n    lavender: \"e6e6fa\",\n    lavenderblush: \"fff0f5\",\n    lawngreen: \"7cfc00\",\n    lemonchiffon: \"fffacd\",\n    lightblue: \"add8e6\",\n    lightcoral: \"f08080\",\n    lightcyan: \"e0ffff\",\n    lightgoldenrodyellow: \"fafad2\",\n    lightgray: \"d3d3d3\",\n    lightgreen: \"90ee90\",\n    lightgrey: \"d3d3d3\",\n    lightpink: \"ffb6c1\",\n    lightsalmon: \"ffa07a\",\n    lightseagreen: \"20b2aa\",\n    lightskyblue: \"87cefa\",\n    lightslategray: \"789\",\n    lightslategrey: \"789\",\n    lightsteelblue: \"b0c4de\",\n    lightyellow: \"ffffe0\",\n    lime: \"0f0\",\n    limegreen: \"32cd32\",\n    linen: \"faf0e6\",\n    magenta: \"f0f\",\n    maroon: \"800000\",\n    mediumaquamarine: \"66cdaa\",\n    mediumblue: \"0000cd\",\n    mediumorchid: \"ba55d3\",\n    mediumpurple: \"9370db\",\n    mediumseagreen: \"3cb371\",\n    mediumslateblue: \"7b68ee\",\n    mediumspringgreen: \"00fa9a\",\n    mediumturquoise: \"48d1cc\",\n    mediumvioletred: \"c71585\",\n    midnightblue: \"191970\",\n    mintcream: \"f5fffa\",\n    mistyrose: \"ffe4e1\",\n    moccasin: \"ffe4b5\",\n    navajowhite: \"ffdead\",\n    navy: \"000080\",\n    oldlace: \"fdf5e6\",\n    olive: \"808000\",\n    olivedrab: \"6b8e23\",\n    orange: \"ffa500\",\n    orangered: \"ff4500\",\n    orchid: \"da70d6\",\n    palegoldenrod: \"eee8aa\",\n    palegreen: \"98fb98\",\n    paleturquoise: \"afeeee\",\n    palevioletred: \"db7093\",\n    papayawhip: \"ffefd5\",\n    peachpuff: \"ffdab9\",\n    peru: \"cd853f\",\n    pink: \"ffc0cb\",\n    plum: \"dda0dd\",\n    powderblue: \"b0e0e6\",\n    purple: \"800080\",\n    rebeccapurple: \"663399\",\n    red: \"f00\",\n    rosybrown: \"bc8f8f\",\n    royalblue: \"4169e1\",\n    saddlebrown: \"8b4513\",\n    salmon: \"fa8072\",\n    sandybrown: \"f4a460\",\n    seagreen: \"2e8b57\",\n    seashell: \"fff5ee\",\n    sienna: \"a0522d\",\n    silver: \"c0c0c0\",\n    skyblue: \"87ceeb\",\n    slateblue: \"6a5acd\",\n    slategray: \"708090\",\n    slategrey: \"708090\",\n    snow: \"fffafa\",\n    springgreen: \"00ff7f\",\n    steelblue: \"4682b4\",\n    tan: \"d2b48c\",\n    teal: \"008080\",\n    thistle: \"d8bfd8\",\n    tomato: \"ff6347\",\n    turquoise: \"40e0d0\",\n    violet: \"ee82ee\",\n    wheat: \"f5deb3\",\n    white: \"fff\",\n    whitesmoke: \"f5f5f5\",\n    yellow: \"ff0\",\n    yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via hexNames[hex]\nvar hexNames = tinycolor.hexNames = flip(names);\n\n// Utilities\n// ---------\n\n// { 'name1': 'val1' } becomes { 'val1': 'name1' }\nfunction flip(o) {\n    var flipped = { };\n    for (var i in o) {\n        if (o.hasOwnProperty(i)) {\n            flipped[o[i]] = i;\n        }\n    }\n    return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n    a = parseFloat(a);\n\n    if (isNaN(a) || a < 0 || a > 1) {\n        a = 1;\n    }\n\n    return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n    if (isOnePointZero(n)) { n = \"100%\"; }\n\n    var processPercent = isPercentage(n);\n    n = mathMin(max, mathMax(0, parseFloat(n)));\n\n    // Automatically convert percentage into number\n    if (processPercent) {\n        n = parseInt(n * max, 10) / 100;\n    }\n\n    // Handle floating point rounding errors\n    if ((Math.abs(n - max) < 0.000001)) {\n        return 1;\n    }\n\n    // Convert into [0, 1] range if it isn't already\n    return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n    return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n    return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n    return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n    return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n    return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n    if (n <= 1) {\n        n = (n * 100) + \"%\";\n    }\n\n    return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n    return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n    return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n    // <http://www.w3.org/TR/css3-values/#integers>\n    var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n    // <http://www.w3.org/TR/css3-values/#number-value>\n    var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n    // Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\n    var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n    // Actual matching.\n    // Parentheses and commas are optional, but not required.\n    // Whitespace can take the place of commas or opening paren\n    var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n    var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n    return {\n        CSS_UNIT: new RegExp(CSS_UNIT),\n        rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n        rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n        hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n        hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n        hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n        hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n        hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n        hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n    };\n})();\n\n// isValidCSSUnit\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see matchers above for definition).\nfunction isValidCSSUnit(color) {\n    return !!matchers.CSS_UNIT.exec(color);\n}\n\n// stringInputToObject\n// Permissive string parsing.  Take in a number of formats, and output an object\n// based on detected format.  Returns { r, g, b } or { h, s, l } or { h, s, v}\nfunction stringInputToObject(color) {\n\n    color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase();\n    var named = false;\n    if (names[color]) {\n        color = names[color];\n        named = true;\n    }\n    else if (color == 'transparent') {\n        return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n    }\n\n    // Try to match string input using regular expressions.\n    // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n    // Just return an object and let the conversion functions handle that.\n    // This way the result will be the same whether the tinycolor is initialized with string or object.\n    var match;\n    if ((match = matchers.rgb.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3] };\n    }\n    if ((match = matchers.rgba.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsl.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3] };\n    }\n    if ((match = matchers.hsla.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsv.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3] };\n    }\n    if ((match = matchers.hsva.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3], a: match[4] };\n    }\n    if ((match = matchers.hex8.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            a: convertHexToDecimal(match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex6.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n    if ((match = matchers.hex4.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            a: convertHexToDecimal(match[4] + '' + match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex3.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n\n    return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n    // return valid WCAG2 parms for isReadable.\n    // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n    var level, size;\n    parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n    level = (parms.level || \"AA\").toUpperCase();\n    size = (parms.size || \"small\").toLowerCase();\n    if (level !== \"AA\" && level !== \"AAA\") {\n        level = \"AA\";\n    }\n    if (size !== \"small\" && size !== \"large\") {\n        size = \"small\";\n    }\n    return {\"level\":level, \"size\":size};\n}\n\nthis.tinycolor = tinycolor;\n\n})()`;\n}\n// It is hacky way to make this function will be compiled preferentially by less\n// resolve error: `ReferenceError: colorPalette is not defined`\n// https://github.com/ant-design/ant-motion/issues/44\n.tinyColorMixin();\n\n// We create a very complex algorithm which take the place of original tint/shade color system\n// to make sure no one can understand it 👻\n// and create an entire color palette magicly by inputing just a single primary color.\n// We are using bezier-curve easing function and some color manipulations like tint/shade/darken/spin\n.colorPaletteMixin() {\n@functions: ~`(function() {\n  var hueStep = 2;\n  var saturationStep = 16;\n  var saturationStep2 = 5;\n  var brightnessStep1 = 5;\n  var brightnessStep2 = 15;\n  var lightColorCount = 5;\n  var darkColorCount = 4;\n\n  var getHue = function(hsv, i, isLight) {\n    var hue;\n    if (hsv.h >= 60 && hsv.h <= 240) {\n      hue = isLight ? hsv.h - hueStep * i : hsv.h + hueStep * i;\n    } else {\n      hue = isLight ? hsv.h + hueStep * i : hsv.h - hueStep * i;\n    }\n    if (hue < 0) {\n      hue += 360;\n    } else if (hue >= 360) {\n      hue -= 360;\n    }\n    return Math.round(hue);\n  };\n  var getSaturation = function(hsv, i, isLight) {\n    var saturation;\n    if (isLight) {\n      saturation = Math.round(hsv.s * 100) - saturationStep * i;\n    } else if (i === darkColorCount) {\n      saturation = Math.round(hsv.s * 100) + saturationStep;\n    } else {\n      saturation = Math.round(hsv.s * 100) + saturationStep2 * i;\n    }\n    if (saturation > 100) {\n      saturation = 100;\n    }\n    if (isLight && i === lightColorCount && saturation > 10) {\n      saturation = 10;\n    }\n    if (saturation < 6) {\n      saturation = 6;\n    }\n    return Math.round(saturation);\n  };\n  var getValue = function(hsv, i, isLight) {\n    if (isLight) {\n      return Math.round(hsv.v * 100) + brightnessStep1 * i;\n    }\n    return Math.round(hsv.v * 100) - brightnessStep2 * i;\n  };\n\n  this.colorPalette = function(color, index) {\n    var isLight = index <= 6;\n    var hsv = tinycolor(color).toHsv();\n    var i = isLight ? lightColorCount + 1 - index : index - lightColorCount - 1;\n    return tinycolor({\n      h: getHue(hsv, i, isLight),\n      s: getSaturation(hsv, i, isLight),\n      v: getValue(hsv, i, isLight),\n    }).toHexString();\n  };\n})()`;\n}\n// It is hacky way to make this function will be compiled preferentially by less\n// resolve error: `ReferenceError: colorPalette is not defined`\n// https://github.com/ant-design/ant-motion/issues/44\n.colorPaletteMixin();\n\n// color palettes\n@blue-1: color(~`colorPalette('@{blue-6}', 1) `);\n@blue-2: color(~`colorPalette('@{blue-6}', 2) `);\n@blue-3: color(~`colorPalette('@{blue-6}', 3) `);\n@blue-4: color(~`colorPalette('@{blue-6}', 4) `);\n@blue-5: color(~`colorPalette('@{blue-6}', 5) `);\n@blue-6: #1890ff;\n@blue-7: color(~`colorPalette('@{blue-6}', 7) `);\n@blue-8: color(~`colorPalette('@{blue-6}', 8) `);\n@blue-9: color(~`colorPalette('@{blue-6}', 9) `);\n@blue-10: color(~`colorPalette('@{blue-6}', 10) `);\n\n@purple-1: color(~`colorPalette('@{purple-6}', 1) `);\n@purple-2: color(~`colorPalette('@{purple-6}', 2) `);\n@purple-3: color(~`colorPalette('@{purple-6}', 3) `);\n@purple-4: color(~`colorPalette('@{purple-6}', 4) `);\n@purple-5: color(~`colorPalette('@{purple-6}', 5) `);\n@purple-6: #722ed1;\n@purple-7: color(~`colorPalette('@{purple-6}', 7) `);\n@purple-8: color(~`colorPalette('@{purple-6}', 8) `);\n@purple-9: color(~`colorPalette('@{purple-6}', 9) `);\n@purple-10: color(~`colorPalette('@{purple-6}', 10) `);\n\n@cyan-1: color(~`colorPalette('@{cyan-6}', 1) `);\n@cyan-2: color(~`colorPalette('@{cyan-6}', 2) `);\n@cyan-3: color(~`colorPalette('@{cyan-6}', 3) `);\n@cyan-4: color(~`colorPalette('@{cyan-6}', 4) `);\n@cyan-5: color(~`colorPalette('@{cyan-6}', 5) `);\n@cyan-6: #13c2c2;\n@cyan-7: color(~`colorPalette('@{cyan-6}', 7) `);\n@cyan-8: color(~`colorPalette('@{cyan-6}', 8) `);\n@cyan-9: color(~`colorPalette('@{cyan-6}', 9) `);\n@cyan-10: color(~`colorPalette('@{cyan-6}', 10) `);\n\n@green-1: color(~`colorPalette('@{green-6}', 1) `);\n@green-2: color(~`colorPalette('@{green-6}', 2) `);\n@green-3: color(~`colorPalette('@{green-6}', 3) `);\n@green-4: color(~`colorPalette('@{green-6}', 4) `);\n@green-5: color(~`colorPalette('@{green-6}', 5) `);\n@green-6: #52c41a;\n@green-7: color(~`colorPalette('@{green-6}', 7) `);\n@green-8: color(~`colorPalette('@{green-6}', 8) `);\n@green-9: color(~`colorPalette('@{green-6}', 9) `);\n@green-10: color(~`colorPalette('@{green-6}', 10) `);\n\n@magenta-1: color(~`colorPalette('@{magenta-6}', 1) `);\n@magenta-2: color(~`colorPalette('@{magenta-6}', 2) `);\n@magenta-3: color(~`colorPalette('@{magenta-6}', 3) `);\n@magenta-4: color(~`colorPalette('@{magenta-6}', 4) `);\n@magenta-5: color(~`colorPalette('@{magenta-6}', 5) `);\n@magenta-6: #eb2f96;\n@magenta-7: color(~`colorPalette('@{magenta-6}', 7) `);\n@magenta-8: color(~`colorPalette('@{magenta-6}', 8) `);\n@magenta-9: color(~`colorPalette('@{magenta-6}', 9) `);\n@magenta-10: color(~`colorPalette('@{magenta-6}', 10) `);\n\n// alias of magenta\n@pink-1: color(~`colorPalette('@{pink-6}', 1) `);\n@pink-2: color(~`colorPalette('@{pink-6}', 2) `);\n@pink-3: color(~`colorPalette('@{pink-6}', 3) `);\n@pink-4: color(~`colorPalette('@{pink-6}', 4) `);\n@pink-5: color(~`colorPalette('@{pink-6}', 5) `);\n@pink-6: #eb2f96;\n@pink-7: color(~`colorPalette('@{pink-6}', 7) `);\n@pink-8: color(~`colorPalette('@{pink-6}', 8) `);\n@pink-9: color(~`colorPalette('@{pink-6}', 9) `);\n@pink-10: color(~`colorPalette('@{pink-6}', 10) `);\n\n@red-1: color(~`colorPalette('@{red-6}', 1) `);\n@red-2: color(~`colorPalette('@{red-6}', 2) `);\n@red-3: color(~`colorPalette('@{red-6}', 3) `);\n@red-4: color(~`colorPalette('@{red-6}', 4) `);\n@red-5: color(~`colorPalette('@{red-6}', 5) `);\n@red-6: #f5222d;\n@red-7: color(~`colorPalette('@{red-6}', 7) `);\n@red-8: color(~`colorPalette('@{red-6}', 8) `);\n@red-9: color(~`colorPalette('@{red-6}', 9) `);\n@red-10: color(~`colorPalette('@{red-6}', 10) `);\n\n@orange-1: color(~`colorPalette('@{orange-6}', 1) `);\n@orange-2: color(~`colorPalette('@{orange-6}', 2) `);\n@orange-3: color(~`colorPalette('@{orange-6}', 3) `);\n@orange-4: color(~`colorPalette('@{orange-6}', 4) `);\n@orange-5: color(~`colorPalette('@{orange-6}', 5) `);\n@orange-6: #fa8c16;\n@orange-7: color(~`colorPalette('@{orange-6}', 7) `);\n@orange-8: color(~`colorPalette('@{orange-6}', 8) `);\n@orange-9: color(~`colorPalette('@{orange-6}', 9) `);\n@orange-10: color(~`colorPalette('@{orange-6}', 10) `);\n\n@yellow-1: color(~`colorPalette('@{yellow-6}', 1) `);\n@yellow-2: color(~`colorPalette('@{yellow-6}', 2) `);\n@yellow-3: color(~`colorPalette('@{yellow-6}', 3) `);\n@yellow-4: color(~`colorPalette('@{yellow-6}', 4) `);\n@yellow-5: color(~`colorPalette('@{yellow-6}', 5) `);\n@yellow-6: #fadb14;\n@yellow-7: color(~`colorPalette('@{yellow-6}', 7) `);\n@yellow-8: color(~`colorPalette('@{yellow-6}', 8) `);\n@yellow-9: color(~`colorPalette('@{yellow-6}', 9) `);\n@yellow-10: color(~`colorPalette('@{yellow-6}', 10) `);\n\n@volcano-1: color(~`colorPalette('@{volcano-6}', 1) `);\n@volcano-2: color(~`colorPalette('@{volcano-6}', 2) `);\n@volcano-3: color(~`colorPalette('@{volcano-6}', 3) `);\n@volcano-4: color(~`colorPalette('@{volcano-6}', 4) `);\n@volcano-5: color(~`colorPalette('@{volcano-6}', 5) `);\n@volcano-6: #fa541c;\n@volcano-7: color(~`colorPalette('@{volcano-6}', 7) `);\n@volcano-8: color(~`colorPalette('@{volcano-6}', 8) `);\n@volcano-9: color(~`colorPalette('@{volcano-6}', 9) `);\n@volcano-10: color(~`colorPalette('@{volcano-6}', 10) `);\n\n@geekblue-1: color(~`colorPalette('@{geekblue-6}', 1) `);\n@geekblue-2: color(~`colorPalette('@{geekblue-6}', 2) `);\n@geekblue-3: color(~`colorPalette('@{geekblue-6}', 3) `);\n@geekblue-4: color(~`colorPalette('@{geekblue-6}', 4) `);\n@geekblue-5: color(~`colorPalette('@{geekblue-6}', 5) `);\n@geekblue-6: #2f54eb;\n@geekblue-7: color(~`colorPalette('@{geekblue-6}', 7) `);\n@geekblue-8: color(~`colorPalette('@{geekblue-6}', 8) `);\n@geekblue-9: color(~`colorPalette('@{geekblue-6}', 9) `);\n@geekblue-10: color(~`colorPalette('@{geekblue-6}', 10) `);\n\n@lime-1: color(~`colorPalette('@{lime-6}', 1) `);\n@lime-2: color(~`colorPalette('@{lime-6}', 2) `);\n@lime-3: color(~`colorPalette('@{lime-6}', 3) `);\n@lime-4: color(~`colorPalette('@{lime-6}', 4) `);\n@lime-5: color(~`colorPalette('@{lime-6}', 5) `);\n@lime-6: #a0d911;\n@lime-7: color(~`colorPalette('@{lime-6}', 7) `);\n@lime-8: color(~`colorPalette('@{lime-6}', 8) `);\n@lime-9: color(~`colorPalette('@{lime-6}', 9) `);\n@lime-10: color(~`colorPalette('@{lime-6}', 10) `);\n\n@gold-1: color(~`colorPalette('@{gold-6}', 1) `);\n@gold-2: color(~`colorPalette('@{gold-6}', 2) `);\n@gold-3: color(~`colorPalette('@{gold-6}', 3) `);\n@gold-4: color(~`colorPalette('@{gold-6}', 4) `);\n@gold-5: color(~`colorPalette('@{gold-6}', 5) `);\n@gold-6: #faad14;\n@gold-7: color(~`colorPalette('@{gold-6}', 7) `);\n@gold-8: color(~`colorPalette('@{gold-6}', 8) `);\n@gold-9: color(~`colorPalette('@{gold-6}', 9) `);\n@gold-10: color(~`colorPalette('@{gold-6}', 10) `);\n\n@preset-colors: pink, magenta, red, volcano, orange, yellow, gold, cyan, lime, green, blue, geekblue,\n  purple;\n\n// The prefix to use on all css classes from ant.\n@ant-prefix: ant;\n\n// An override for the html selector for theme prefixes\n@html-selector: html;\n\n// -------- Colors -----------\n\n@info-color: @blue-6;\n@success-color: @green-6;\n@processing-color: @blue-6;\n@error-color: @red-6;\n@highlight-color: @red-6;\n@warning-color: @gold-6;\n@normal-color: #d9d9d9;\n@white: #fff;\n@black: #000;\n\n// Color used by default to control hover and active backgrounds and for\n// alert info backgrounds.\n@primary-1: color(~`colorPalette('@{primary-color}', 1) `); // replace tint(@primary-color, 90%)\n@primary-2: color(~`colorPalette('@{primary-color}', 2) `); // replace tint(@primary-color, 80%)\n@primary-3: color(~`colorPalette('@{primary-color}', 3) `); // unused\n@primary-4: color(~`colorPalette('@{primary-color}', 4) `); // unused\n@primary-5: color(\n  ~`colorPalette('@{primary-color}', 5) `\n); // color used to control the text color in many active and hover states, replace tint(@primary-color, 20%)\n@primary-6: @primary-color; // color used to control the text color of active buttons, don't use, use @primary-color\n@primary-7: color(~`colorPalette('@{primary-color}', 7) `); // replace shade(@primary-color, 5%)\n@primary-8: color(~`colorPalette('@{primary-color}', 8) `); // unused\n@primary-9: color(~`colorPalette('@{primary-color}', 9) `); // unused\n@primary-10: color(~`colorPalette('@{primary-color}', 10) `); // unused\n\n// Base Scaffolding Variables\n// ---\n\n// Background color for `<body>`\n@body-background: #fff;\n// Base background color for most components\n@component-background: #fff;\n@font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB',\n  'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif, 'Apple Color Emoji',\n  'Segoe UI Emoji', 'Segoe UI Symbol';\n@code-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;\n@text-color: fade(@black, 65%);\n@text-color-secondary: fade(@black, 45%);\n@text-color-inverse: @white;\n@icon-color: inherit;\n@icon-color-hover: fade(@black, 75%);\n@heading-color: fade(#000, 85%);\n@heading-color-dark: fade(@white, 100%);\n@text-color-dark: fade(@white, 85%);\n@text-color-secondary-dark: fade(@white, 65%);\n@text-selection-bg: @primary-color;\n@font-variant-base: tabular-nums;\n@font-feature-settings-base: 'tnum';\n@font-size-base: 14px;\n@font-size-lg: @font-size-base + 2px;\n@font-size-sm: 12px;\n@heading-1-size: ceil(@font-size-base * 2.71);\n@heading-2-size: ceil(@font-size-base * 2.14);\n@heading-3-size: ceil(@font-size-base * 1.71);\n@heading-4-size: ceil(@font-size-base * 1.42);\n@line-height-base: 1.5;\n@border-radius-base: 4px;\n@border-radius-sm: 2px;\n\n// vertical paddings\n@padding-lg: 24px; // containers\n@padding-md: 16px; // small containers and buttons\n@padding-sm: 12px; // Form controls and items\n@padding-xs: 8px; // small items\n\n// vertical padding for all form controls\n@control-padding-horizontal: @padding-sm;\n@control-padding-horizontal-sm: @padding-xs;\n\n// The background colors for active and hover states for things like\n// list items or table cells.\n@item-active-bg: @primary-1;\n@item-hover-bg: @primary-1;\n\n// ICONFONT\n@iconfont-css-prefix: anticon;\n\n// LINK\n@link-color: @primary-color;\n@link-hover-color: color(~`colorPalette('@{link-color}', 5) `);\n@link-active-color: color(~`colorPalette('@{link-color}', 7) `);\n@link-decoration: none;\n@link-hover-decoration: none;\n\n// Animation\n@ease-base-out: cubic-bezier(0.7, 0.3, 0.1, 1);\n@ease-base-in: cubic-bezier(0.9, 0, 0.3, 0.7);\n@ease-out: cubic-bezier(0.215, 0.61, 0.355, 1);\n@ease-in: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n@ease-in-out: cubic-bezier(0.645, 0.045, 0.355, 1);\n@ease-out-back: cubic-bezier(0.12, 0.4, 0.29, 1.46);\n@ease-in-back: cubic-bezier(0.71, -0.46, 0.88, 0.6);\n@ease-in-out-back: cubic-bezier(0.71, -0.46, 0.29, 1.46);\n@ease-out-circ: cubic-bezier(0.08, 0.82, 0.17, 1);\n@ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.34);\n@ease-in-out-circ: cubic-bezier(0.78, 0.14, 0.15, 0.86);\n@ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);\n@ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n@ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);\n\n// Border color\n@border-color-base: hsv(0, 0, 85%); // base border outline a component\n@border-color-split: hsv(0, 0, 91%); // split border inside a component\n@border-color-inverse: @white;\n@border-width-base: 1px; // width of the border for a component\n@border-style-base: solid; // style of a components border\n\n// Outline\n@outline-blur-size: 0;\n@outline-width: 2px;\n@outline-color: @primary-color;\n\n@background-color-light: hsv(0, 0, 98%); // background of header and selected item\n@background-color-base: hsv(0, 0, 96%); // Default grey background color\n\n// Disabled states\n@disabled-color: fade(#000, 25%);\n@disabled-bg: @background-color-base;\n@disabled-color-dark: fade(#fff, 35%);\n\n// Shadow\n@shadow-color: rgba(0, 0, 0, 0.15);\n@shadow-color-inverse: @component-background;\n@box-shadow-base: @shadow-1-down;\n@shadow-1-up: 0 -2px 8px @shadow-color;\n@shadow-1-down: 0 2px 8px @shadow-color;\n@shadow-1-left: -2px 0 8px @shadow-color;\n@shadow-1-right: 2px 0 8px @shadow-color;\n@shadow-2: 0 4px 12px @shadow-color;\n\n// Buttons\n@btn-font-weight: 400;\n@btn-border-radius-base: @border-radius-base;\n@btn-border-radius-sm: @border-radius-base;\n@btn-border-width: @border-width-base;\n@btn-border-style: @border-style-base;\n@btn-shadow: 0 2px 0 rgba(0, 0, 0, 0.015);\n@btn-primary-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\n@btn-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);\n\n@btn-primary-color: #fff;\n@btn-primary-bg: @primary-color;\n\n@btn-default-color: @text-color;\n@btn-default-bg: @component-background;\n@btn-default-border: @border-color-base;\n\n@btn-danger-color: #fff;\n@btn-danger-bg: color(~`colorPalette('@{error-color}', 5) `);\n@btn-danger-border: color(~`colorPalette('@{error-color}', 5) `);\n\n@btn-disable-color: @disabled-color;\n@btn-disable-bg: @disabled-bg;\n@btn-disable-border: @border-color-base;\n\n@btn-padding-base: 0 @padding-md - 1px;\n@btn-font-size-lg: @font-size-lg;\n@btn-font-size-sm: @font-size-base;\n@btn-padding-lg: @btn-padding-base;\n@btn-padding-sm: 0 @padding-xs - 1px;\n\n@btn-height-base: 32px;\n@btn-height-lg: 40px;\n@btn-height-sm: 24px;\n\n@btn-circle-size: @btn-height-base;\n@btn-circle-size-lg: @btn-height-lg;\n@btn-circle-size-sm: @btn-height-sm;\n\n@btn-square-size: @btn-height-base;\n@btn-square-size-lg: @btn-height-lg;\n@btn-square-size-sm: @btn-height-sm;\n\n@btn-group-border: @primary-5;\n\n// Checkbox\n@checkbox-size: 16px;\n@checkbox-color: @primary-color;\n@checkbox-check-color: #fff;\n@checkbox-border-width: @border-width-base;\n\n// Descriptions\n@descriptions-bg: #fafafa;\n\n// Dropdown\n@dropdown-selected-color: @primary-color;\n\n// Empty\n@empty-font-size: @font-size-base;\n\n// Radio\n@radio-size: 16px;\n@radio-dot-color: @primary-color;\n\n// Radio buttons\n@radio-button-bg: @btn-default-bg;\n@radio-button-checked-bg: @btn-default-bg;\n@radio-button-color: @btn-default-color;\n@radio-button-hover-color: @primary-5;\n@radio-button-active-color: @primary-7;\n\n// Media queries breakpoints\n// Extra small screen / phone\n@screen-xs: 480px;\n@screen-xs-min: @screen-xs;\n\n// Small screen / tablet\n@screen-sm: 576px;\n@screen-sm-min: @screen-sm;\n\n// Medium screen / desktop\n@screen-md: 768px;\n@screen-md-min: @screen-md;\n\n// Large screen / wide desktop\n@screen-lg: 992px;\n@screen-lg-min: @screen-lg;\n\n// Extra large screen / full hd\n@screen-xl: 1200px;\n@screen-xl-min: @screen-xl;\n\n// Extra extra large screen / large desktop\n@screen-xxl: 1600px;\n@screen-xxl-min: @screen-xxl;\n\n// provide a maximum\n@screen-xs-max: (@screen-sm-min - 1px);\n@screen-sm-max: (@screen-md-min - 1px);\n@screen-md-max: (@screen-lg-min - 1px);\n@screen-lg-max: (@screen-xl-min - 1px);\n@screen-xl-max: (@screen-xxl-min - 1px);\n\n// Grid system\n@grid-columns: 24;\n@grid-gutter-width: 0;\n\n// Layout\n@layout-body-background: #f0f2f5;\n@layout-header-background: #001529;\n@layout-footer-background: @layout-body-background;\n@layout-header-height: 64px;\n@layout-header-padding: 0 50px;\n@layout-footer-padding: 24px 50px;\n@layout-sider-background: @layout-header-background;\n@layout-trigger-height: 48px;\n@layout-trigger-background: #002140;\n@layout-trigger-color: #fff;\n@layout-zero-trigger-width: 36px;\n@layout-zero-trigger-height: 42px;\n// Layout light theme\n@layout-sider-background-light: #fff;\n@layout-trigger-background-light: #fff;\n@layout-trigger-color-light: @text-color;\n\n// z-index list, order by `z-index`\n@zindex-table-fixed: auto;\n@zindex-affix: 10;\n@zindex-back-top: 10;\n@zindex-badge: 10;\n@zindex-picker-panel: 10;\n@zindex-popup-close: 10;\n@zindex-modal: 1000;\n@zindex-modal-mask: 1000;\n@zindex-message: 1010;\n@zindex-notification: 1010;\n@zindex-popover: 1030;\n@zindex-dropdown: 1050;\n@zindex-picker: 1050;\n@zindex-tooltip: 1060;\n\n// Animation\n@animation-duration-slow: 0.3s; // Modal\n@animation-duration-base: 0.2s;\n@animation-duration-fast: 0.1s; // Tooltip\n\n//CollapsePanel\n@collapse-panel-border-radius: @border-radius-base;\n\n//Dropdown\n@dropdown-vertical-padding: 5px;\n@dropdown-font-size: @font-size-base;\n@dropdown-line-height: 22px;\n\n// Form\n// ---\n@label-required-color: @highlight-color;\n@label-color: @heading-color;\n@form-warning-input-bg: @input-bg;\n@form-item-margin-bottom: 24px;\n@form-item-trailing-colon: true;\n@form-vertical-label-padding: 0 0 8px;\n@form-vertical-label-margin: 0;\n@form-error-input-bg: @input-bg;\n\n// Input\n// ---\n@input-height-base: 32px;\n@input-height-lg: 40px;\n@input-height-sm: 24px;\n@input-padding-horizontal: @control-padding-horizontal - 1px;\n@input-padding-horizontal-base: @input-padding-horizontal;\n@input-padding-horizontal-sm: @control-padding-horizontal-sm - 1px;\n@input-padding-horizontal-lg: @input-padding-horizontal;\n@input-padding-vertical-base: 4px;\n@input-padding-vertical-sm: 1px;\n@input-padding-vertical-lg: 6px;\n@input-placeholder-color: hsv(0, 0, 75%);\n@input-color: @text-color;\n@input-border-color: @border-color-base;\n@input-bg: @component-background;\n@input-number-handler-active-bg: #f4f4f4;\n@input-number-handler-hover-bg: @primary-5;\n@input-number-handler-bg: @component-background;\n@input-number-handler-border-color: @border-color-base;\n@input-addon-bg: @background-color-light;\n@input-hover-border-color: @primary-5;\n@input-disabled-bg: @disabled-bg;\n@input-outline-offset: 0 0;\n\n// Select\n// ---\n@select-border-color: @border-color-base;\n@select-item-selected-font-weight: 600;\n@select-dropdown-bg: @component-background;\n@select-item-selected-bg: @background-color-light;\n@select-item-active-bg: @item-active-bg;\n\n// Anchor\n// ---\n@anchor-border-color: @border-color-split;\n\n// Tooltip\n// ---\n// Tooltip max width\n@tooltip-max-width: 250px;\n// Tooltip text color\n@tooltip-color: #fff;\n// Tooltip background color\n@tooltip-bg: rgba(0, 0, 0, 0.75);\n// Tooltip arrow width\n@tooltip-arrow-width: 5px;\n// Tooltip distance with trigger\n@tooltip-distance: @tooltip-arrow-width - 1px + 4px;\n// Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n// Popover\n// ---\n// Popover body background color\n@popover-bg: @component-background;\n// Popover text color\n@popover-color: @text-color;\n// Popover maximum width\n@popover-min-width: 177px;\n// Popover arrow width\n@popover-arrow-width: 6px;\n// Popover arrow color\n@popover-arrow-color: @popover-bg;\n// Popover outer arrow width\n// Popover outer arrow color\n@popover-arrow-outer-color: @popover-bg;\n// Popover distance with trigger\n@popover-distance: @popover-arrow-width + 4px;\n\n// Modal\n// --\n@modal-body-padding: 24px;\n@modal-header-bg: @component-background;\n@modal-footer-bg: transparent;\n@modal-footer-border-color-split: @border-color-split;\n@modal-mask-bg: fade(@black, 45%);\n\n// Progress\n// --\n@progress-default-color: @processing-color;\n@progress-remaining-color: @background-color-base;\n@progress-text-color: @text-color;\n@progress-radius: 100px;\n\n// Menu\n// ---\n@menu-inline-toplevel-item-height: 40px;\n@menu-item-height: 40px;\n@menu-collapsed-width: 80px;\n@menu-bg: @component-background;\n@menu-popup-bg: @component-background;\n@menu-item-color: @text-color;\n@menu-highlight-color: @primary-color;\n@menu-item-active-bg: @item-active-bg;\n@menu-item-active-border-width: 3px;\n@menu-item-group-title-color: @text-color-secondary;\n@menu-icon-size: @font-size-base;\n@menu-icon-size-lg: @font-size-lg;\n\n@menu-item-vertical-margin: 4px;\n@menu-item-font-size: @font-size-base;\n@menu-item-boundary-margin: 8px;\n@menu-icon-size: @font-size-base;\n@menu-icon-size-lg: @font-size-lg;\n@menu-dark-selected-item-icon-color: @white;\n@menu-dark-selected-item-text-color: @white;\n@dark-menu-item-hover-bg: transparent;\n\n// dark theme\n@menu-dark-color: @text-color-secondary-dark;\n@menu-dark-bg: @layout-header-background;\n@menu-dark-arrow-color: #fff;\n@menu-dark-submenu-bg: #000c17;\n@menu-dark-highlight-color: #fff;\n@menu-dark-item-active-bg: @primary-color;\n@menu-dark-selected-item-icon-color: @white;\n@menu-dark-selected-item-text-color: @white;\n@menu-dark-item-hover-bg: transparent;\n// Spin\n// ---\n@spin-dot-size-sm: 14px;\n@spin-dot-size: 20px;\n@spin-dot-size-lg: 32px;\n\n// Table\n// --\n@table-header-bg: @background-color-light;\n@table-header-color: @heading-color;\n@table-header-sort-bg: @background-color-base;\n@table-body-sort-bg: rgba(0, 0, 0, 0.01);\n@table-row-hover-bg: @primary-1;\n@table-selected-row-color: inherit;\n@table-selected-row-bg: #fafafa;\n@table-body-selected-sort-bg: @table-selected-row-bg;\n@table-selected-row-hover-bg: @table-selected-row-bg;\n@table-expanded-row-bg: #fbfbfb;\n@table-padding-vertical: 16px;\n@table-padding-horizontal: 16px;\n@table-border-radius-base: @border-radius-base;\n@table-footer-bg: @background-color-light;\n@table-footer-color: @heading-color;\n\n// Tag\n// --\n@tag-default-bg: @background-color-light;\n@tag-default-color: @text-color;\n@tag-font-size: @font-size-sm;\n\n// TimePicker\n// ---\n@time-picker-panel-column-width: 56px;\n@time-picker-panel-width: @time-picker-panel-column-width * 3;\n@time-picker-selected-bg: @background-color-base;\n\n// Carousel\n// ---\n@carousel-dot-width: 16px;\n@carousel-dot-height: 3px;\n@carousel-dot-active-width: 24px;\n\n// Badge\n// ---\n@badge-height: 20px;\n@badge-dot-size: 6px;\n@badge-font-size: @font-size-sm;\n@badge-font-weight: normal;\n@badge-status-size: 6px;\n@badge-text-color: @component-background;\n\n// Rate\n// ---\n@rate-star-color: @yellow-6;\n@rate-star-bg: @border-color-split;\n\n// Card\n// ---\n@card-head-color: @heading-color;\n@card-head-background: transparent;\n@card-head-padding: 16px;\n@card-inner-head-padding: 12px;\n@card-padding-base: 24px;\n@card-actions-background: @background-color-light;\n@card-skeleton-bg: #cfd8dc;\n@card-background: @component-background;\n@card-shadow: 0 2px 8px rgba(0, 0, 0, 0.09);\n@card-radius: @border-radius-sm;\n\n// Comment\n// ---\n@comment-padding-base: 16px 0;\n@comment-nest-indent: 44px;\n@comment-font-size-base: @font-size-base;\n@comment-font-size-sm: @font-size-sm;\n@comment-author-name-color: @text-color-secondary;\n@comment-author-time-color: #ccc;\n@comment-action-color: @text-color-secondary;\n@comment-action-hover-color: #595959;\n\n// Tabs\n// ---\n@tabs-card-head-background: @background-color-light;\n@tabs-card-height: 40px;\n@tabs-card-active-color: @primary-color;\n@tabs-title-font-size: @font-size-base;\n@tabs-title-font-size-lg: @font-size-lg;\n@tabs-title-font-size-sm: @font-size-base;\n@tabs-ink-bar-color: @primary-color;\n@tabs-bar-margin: 0 0 16px 0;\n@tabs-horizontal-margin: 0 32px 0 0;\n@tabs-horizontal-padding: 12px 16px;\n@tabs-horizontal-padding-lg: 16px;\n@tabs-horizontal-padding-sm: 8px 16px;\n@tabs-vertical-padding: 8px 24px;\n@tabs-vertical-margin: 0 0 16px 0;\n@tabs-scrolling-size: 32px;\n@tabs-highlight-color: @primary-color;\n@tabs-hover-color: @primary-5;\n@tabs-active-color: @primary-7;\n@tabs-card-gutter: 2px;\n@tabs-card-tab-active-border-top: 2px solid transparent;\n\n// BackTop\n// ---\n@back-top-color: #fff;\n@back-top-bg: @text-color-secondary;\n@back-top-hover-bg: @text-color;\n\n// Avatar\n// ---\n@avatar-size-base: 32px;\n@avatar-size-lg: 40px;\n@avatar-size-sm: 24px;\n@avatar-font-size-base: 18px;\n@avatar-font-size-lg: 24px;\n@avatar-font-size-sm: 14px;\n@avatar-bg: #ccc;\n@avatar-color: #fff;\n@avatar-border-radius: @border-radius-base;\n\n// Switch\n// ---\n@switch-height: 22px;\n@switch-sm-height: 16px;\n@switch-sm-checked-margin-left: -(@switch-sm-height - 3px);\n@switch-disabled-opacity: 0.4;\n@switch-color: @primary-color;\n@switch-shadow-color: fade(#00230b, 20%);\n\n// Pagination\n// ---\n@pagination-item-size: 32px;\n@pagination-item-size-sm: 24px;\n@pagination-font-family: Arial;\n@pagination-font-weight-active: 500;\n@pagination-item-bg-active: @component-background;\n\n// PageHeader\n// ---\n@page-header-padding: 24px;\n@page-header-padding-vertical: 16px;\n@page-header-padding-breadcrumb: 12px;\n@page-header-back-color: #000;\n\n// Breadcrumb\n// ---\n@breadcrumb-base-color: @text-color-secondary;\n@breadcrumb-last-item-color: @text-color;\n@breadcrumb-font-size: @font-size-base;\n@breadcrumb-icon-font-size: @font-size-base;\n@breadcrumb-link-color: @text-color-secondary;\n@breadcrumb-link-color-hover: @primary-5;\n@breadcrumb-separator-color: @text-color-secondary;\n@breadcrumb-separator-margin: 0 @padding-xs;\n\n// Slider\n// ---\n@slider-margin: 14px 6px 10px;\n@slider-rail-background-color: @background-color-base;\n@slider-rail-background-color-hover: #e1e1e1;\n@slider-track-background-color: @primary-3;\n@slider-track-background-color-hover: @primary-4;\n@slider-handle-border-width: 2px;\n@slider-handle-background-color: @component-background;\n@slider-handle-color: @primary-3;\n@slider-handle-color-hover: @primary-4;\n@slider-handle-color-focus: tint(@primary-color, 20%);\n@slider-handle-color-focus-shadow: fade(@primary-color, 20%);\n@slider-handle-color-tooltip-open: @primary-color;\n@slider-handle-shadow: 0;\n@slider-dot-border-color: @border-color-split;\n@slider-dot-border-color-active: tint(@primary-color, 50%);\n@slider-disabled-color: @disabled-color;\n@slider-disabled-background-color: @component-background;\n\n// Tree\n// ---\n@tree-title-height: 24px;\n@tree-child-padding: 18px;\n@tree-directory-selected-color: #fff;\n@tree-directory-selected-bg: @primary-color;\n@tree-node-hover-bg: @item-hover-bg;\n@tree-node-selected-bg: @primary-2;\n\n// Collapse\n// ---\n@collapse-header-padding: 12px 16px;\n@collapse-header-padding-extra: 40px;\n@collapse-header-bg: @background-color-light;\n@collapse-content-padding: @padding-md;\n@collapse-content-bg: @component-background;\n\n// Skeleton\n// ---\n@skeleton-color: #f2f2f2;\n\n// Transfer\n// ---\n@transfer-header-height: 40px;\n@transfer-disabled-bg: @disabled-bg;\n@transfer-list-height: 200px;\n\n// Message\n// ---\n@message-notice-content-padding: 10px 16px;\n\n// Motion\n// ---\n@wave-animation-width: 6px;\n\n// Alert\n// ---\n@alert-success-border-color: ~`colorPalette('@{success-color}', 3) `;\n@alert-success-bg-color: ~`colorPalette('@{success-color}', 1) `;\n@alert-success-icon-color: @success-color;\n@alert-info-border-color: ~`colorPalette('@{info-color}', 3) `;\n@alert-info-bg-color: ~`colorPalette('@{info-color}', 1) `;\n@alert-info-icon-color: @info-color;\n@alert-warning-border-color: ~`colorPalette('@{warning-color}', 3) `;\n@alert-warning-bg-color: ~`colorPalette('@{warning-color}', 1) `;\n@alert-warning-icon-color: @warning-color;\n@alert-error-border-color: ~`colorPalette('@{error-color}', 3) `;\n@alert-error-bg-color: ~`colorPalette('@{error-color}', 1) `;\n@alert-error-icon-color: @error-color;\n\n// List\n// ---\n@list-header-background: transparent;\n@list-footer-background: transparent;\n@list-empty-text-padding: @padding-md;\n@list-item-padding: @padding-sm 0;\n@list-item-meta-margin-bottom: @padding-md;\n@list-item-meta-avatar-margin-right: @padding-md;\n@list-item-meta-title-margin-bottom: @padding-sm;\n\n// Statistic\n// ---\n@statistic-title-font-size: @font-size-base;\n@statistic-content-font-size: 24px;\n@statistic-unit-font-size: 16px;\n@statistic-font-family: @font-family;\n\n// Drawer\n// ---\n@drawer-header-padding: 16px 24px;\n@drawer-body-padding: 24px;\n\n// Timeline\n// ---\n@timeline-width: 2px;\n@timeline-color: @border-color-split;\n@timeline-dot-border-width: 2px;\n@timeline-dot-color: @primary-color;\n@timeline-dot-bg: @component-background;\n\n// Typography\n// ---\n@typography-title-font-weight: 600;\n\n// 基础颜色\n@white: #ffffff;\n\n@primary-color-light: fade(lighten(@primary-color, 5%), 15%);\n// 顶部背景色\n@layout-header-background:@primary-color;\n// 左边菜单light颜色\n@layout-sider-background-light: #f9f9f9;\n// 字体颜色\n@text-color: #000000;\n@table-selected-row-bg: #fbfbfb;\n@primary-2: @primary-color-light;\n// 基础圆角\n@border-radius-base: 2px;\n// 输入框后缀背景色\n@input-addon-bg: @primary-color;\n\n\n.ant-menu-root.ant-menu-inline,\n.ant-menu-root.ant-menu-vertical {\n  background: @primary-color;\n  border-right: 1px solid @primary-color;\n  color: #ffffff;\n}\n.ant-menu-root.ant-menu-inline a,\n.ant-menu-root.ant-menu-vertical a {\n  color: #ffffff;\n}\n.ant-menu-root.ant-menu-inline .ant-menu-submenu-selected,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu-selected {\n  color: #ffffff;\n}\n.ant-menu-root.ant-menu-inline .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,\n.ant-menu-root.ant-menu-vertical .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,\n.ant-menu-root.ant-menu-inline .ant-menu-submenu-active,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu-active {\n  color: #ffffff;\n}\n.ant-menu-root.ant-menu-inline .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\n.ant-menu-root.ant-menu-inline .ant-menu-submenu-title .ant-menu-submenu-arrow::after,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu-title .ant-menu-submenu-arrow::after {\n  background: #ffffff;\n}\n.ant-menu-root.ant-menu-inline .ant-menu-submenu-title:hover,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu-title:hover {\n  color: #ffffff;\n}\n.ant-menu-root.ant-menu-inline .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before,\n.ant-menu-root.ant-menu-inline .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after {\n  background: #ffffff;\n}\n.ant-menu-root.ant-menu-inline .ant-menu-submenu > .ant-menu,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu > .ant-menu {\n  background-color: rgba(58, 64, 99, 0.15);\n}\n.ant-menu-root.ant-menu-inline .ant-menu-item > a:hover,\n.ant-menu-root.ant-menu-vertical .ant-menu-item > a:hover {\n  color: #ffffff;\n}\n.ant-menu-horizontal > .ant-menu-item-selected {\n  color: #ffffff;\n}\n.sider-custom .ant-menu-submenu-title {\n  color: #ffffff;\n}\n.bg--primary {\n  background: @primary-color;\n}\n.header .ant-menu {\n  background: transparent;\n  color: #ffffff;\n}\n.header .ant-menu .ant-menu-item:hover {\n  color: #ffffff;\n}\n.header__trigger {\n  color: #ffffff;\n}\nhtml {\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  color: #000000;\n  background-color: #fff;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  color: rgba(0, 0, 0, 0.85);\n}\nabbr[title],\nabbr[data-original-title] {\n  border-bottom: 0;\n}\na {\n  color: @primary-color;\n  background-color: transparent;\n}\na:hover {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\na:active {\n  color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\na[disabled] {\n  color: rgba(0, 0, 0, 0.25);\n}\nimg {\n  border-style: none;\n}\ntable {\n  border-collapse: collapse;\n}\ncaption {\n  color: rgba(0, 0, 0, 0.45);\n}\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  color: inherit;\n}\nbutton::-moz-focus-inner,\n[type='button']::-moz-focus-inner,\n[type='reset']::-moz-focus-inner,\n[type='submit']::-moz-focus-inner {\n  border-style: none;\n}\nfieldset {\n  border: 0;\n}\nlegend {\n  color: inherit;\n}\nmark {\n  background-color: #feffe6;\n}\n::selection {\n  color: #ffffff;\n  background: @primary-color;\n}\n.anticon {\n  color: inherit;\n}\nhtml {\n  --antd-wave-shadow-color: @primary-color;\n}\n[ant-click-animating-without-extra-node='true']::after,\n.ant-click-animating-node {\n  border-radius: inherit;\n  box-shadow: 0 0 0 0 @primary-color;\n  box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);\n}\n.ant-alert {\n  color: #000000;\n  border-radius: 2px;\n}\n.ant-alert-success {\n  background-color: #f6ffed;\n  border: 1px solid #b7eb8f;\n}\n.ant-alert-success .ant-alert-icon {\n  color: #52c41a;\n}\n.ant-alert-info {\n  background-color: #e6f7ff;\n  border: 1px solid #91d5ff;\n}\n.ant-alert-info .ant-alert-icon {\n  color: #1890ff;\n}\n.ant-alert-warning {\n  background-color: #fffbe6;\n  border: 1px solid #ffe58f;\n}\n.ant-alert-warning .ant-alert-icon {\n  color: #faad14;\n}\n.ant-alert-error {\n  background-color: #fff1f0;\n  border: 1px solid #ffa39e;\n}\n.ant-alert-error .ant-alert-icon {\n  color: #f5222d;\n}\n.ant-alert-close-icon {\n  background-color: transparent;\n  border: none;\n}\n.ant-alert-close-icon .anticon-close {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-alert-close-icon .anticon-close:hover {\n  color: rgba(0, 0, 0, 0.75);\n}\n.ant-alert-close-text {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-alert-close-text:hover {\n  color: rgba(0, 0, 0, 0.75);\n}\n.ant-alert-with-description {\n  color: #000000;\n  border-radius: 2px;\n}\n.ant-alert-with-description .ant-alert-message {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-alert-message {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-alert-banner {\n  border: 0;\n  border-radius: 0;\n}\n.ant-anchor {\n  color: #000000;\n}\n.ant-anchor-wrapper {\n  background-color: #fff;\n}\n.ant-anchor-ink::before {\n  background-color: #e8e8e8;\n}\n.ant-anchor-ink-ball {\n  background-color: #fff;\n  border: 2px solid @primary-color;\n  border-radius: 8px;\n}\n.ant-anchor-link-title {\n  color: #000000;\n}\n.ant-anchor-link-active > .ant-anchor-link-title {\n  color: @primary-color;\n}\n.ant-select-auto-complete {\n  color: #000000;\n}\n.ant-select-auto-complete.ant-select .ant-select-selection {\n  border: 0;\n  box-shadow: none;\n}\n.ant-select-auto-complete.ant-select .ant-input {\n  background: transparent;\n  border-width: 1px;\n}\n.ant-select-auto-complete.ant-select .ant-input:focus,\n.ant-select-auto-complete.ant-select .ant-input:hover {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n}\n.ant-select-auto-complete.ant-select .ant-input[disabled] {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  background-color: transparent;\n}\n.ant-select-auto-complete.ant-select .ant-input[disabled]:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-avatar {\n  color: #000000;\n  color: #fff;\n  background: #ccc;\n  border-radius: 50%;\n}\n.ant-avatar-image {\n  background: transparent;\n}\n.ant-avatar-lg {\n  border-radius: 50%;\n}\n.ant-avatar-sm {\n  border-radius: 50%;\n}\n.ant-avatar-square {\n  border-radius: 2px;\n}\n.ant-back-top {\n  color: #000000;\n}\n.ant-back-top-content {\n  color: #fff;\n  background-color: rgba(0, 0, 0, 0.45);\n  border-radius: 20px;\n}\n.ant-back-top-content:hover {\n  background-color: #000000;\n}\n.ant-back-top-icon {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAoCAYAAACWwljjAAAABGdBTUEAALGPC/xhBQAAAbtJREFUWAntmMtKw0AUhhMvS5cuxILgQlRUpIggIoKIIoigG1eC+AA+jo+i6FIXBfeuXIgoeKVeitVWJX5HWhhDksnUpp3FDPyZk3Nm5nycmZKkXhAEOXSA3lG7muTeRzmfy6HneUvIhnYkQK+Q9NhAA0Opg0vBEhjBKHiyb8iGMyQMOYuK41BcBSypAL+MYXSKjtFAW7EAGEO3qN4uMQbbAkXiSfRQJ1H6a+yhlkKRcAoVFYiweYNjtCVQJJpBz2GCiPt7fBOZQpFgDpUikse5HgnkM4Fi4QX0Fpc5wf9EbLqpUCy4jMoJSXWhFwbMNgWKhVbRhy5jirhs9fy/oFhgHVVTJEs7RLZ8sSEoJm6iz7SZDMbJ+/OKERQTttCXQRLToRUmrKWCYuA2+jbN0MB4OQobYShfdTCgn/sL1K36M7TLrN3n+758aPy2rrpR6+/od5E8tf/A1uLS9aId5T7J3CNYihkQ4D9PiMdMC7mp4rjB9kjFjZp8BlnVHJBuO1yFXIV0FdDF3RlyFdJVQBdv5AxVdIsq8apiZ2PyYO1EVykesGfZEESsCkweyR8MUW+V8uJ1gkYipmpdP1pm2aJVPEGzAAAAAElFTkSuQmCC) 100%/100% no-repeat;\n}\n.ant-badge {\n  color: #000000;\n  color: unset;\n}\n.ant-badge-count {\n  color: #fff;\n  background: #f5222d;\n  border-radius: 10px;\n  box-shadow: 0 0 0 1px #fff;\n}\n.ant-badge-count a,\n.ant-badge-count a:hover {\n  color: #fff;\n}\n.ant-badge-dot {\n  background: #f5222d;\n  border-radius: 100%;\n  box-shadow: 0 0 0 1px #fff;\n}\n.ant-badge-status-dot {\n  border-radius: 50%;\n}\n.ant-badge-status-success {\n  background-color: #52c41a;\n}\n.ant-badge-status-processing {\n  background-color: #1890ff;\n}\n.ant-badge-status-processing::after {\n  border: 1px solid #1890ff;\n  border-radius: 50%;\n}\n.ant-badge-status-default {\n  background-color: #d9d9d9;\n}\n.ant-badge-status-error {\n  background-color: #f5222d;\n}\n.ant-badge-status-warning {\n  background-color: #faad14;\n}\n.ant-badge-status-pink {\n  background: #eb2f96;\n}\n.ant-badge-status-magenta {\n  background: #eb2f96;\n}\n.ant-badge-status-red {\n  background: #f5222d;\n}\n.ant-badge-status-volcano {\n  background: #fa541c;\n}\n.ant-badge-status-orange {\n  background: #fa8c16;\n}\n.ant-badge-status-yellow {\n  background: #fadb14;\n}\n.ant-badge-status-gold {\n  background: #faad14;\n}\n.ant-badge-status-cyan {\n  background: #13c2c2;\n}\n.ant-badge-status-lime {\n  background: #a0d911;\n}\n.ant-badge-status-green {\n  background: #52c41a;\n}\n.ant-badge-status-blue {\n  background: #1890ff;\n}\n.ant-badge-status-geekblue {\n  background: #2f54eb;\n}\n.ant-badge-status-purple {\n  background: #722ed1;\n}\n.ant-badge-status-text {\n  color: #000000;\n}\n.ant-breadcrumb {\n  color: #000000;\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-breadcrumb a {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-breadcrumb a:hover {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-breadcrumb > span:last-child {\n  color: #000000;\n}\n.ant-breadcrumb > span:last-child a {\n  color: #000000;\n}\n.ant-breadcrumb-separator {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-btn {\n  background-image: none;\n  border: 1px solid transparent;\n  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015);\n  border-radius: 2px;\n  color: #000000;\n  background-color: #fff;\n  border-color: #d9d9d9;\n}\n.ant-btn:not([disabled]):active {\n  box-shadow: none;\n}\n.ant-btn-lg {\n  border-radius: 2px;\n}\n.ant-btn-sm {\n  border-radius: 2px;\n}\n.ant-btn > a:only-child {\n  color: currentColor;\n}\n.ant-btn > a:only-child::after {\n  background: transparent;\n}\n.ant-btn:hover,\n.ant-btn:focus {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  background-color: #fff;\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-btn:hover > a:only-child,\n.ant-btn:focus > a:only-child {\n  color: currentColor;\n}\n.ant-btn:hover > a:only-child::after,\n.ant-btn:focus > a:only-child::after {\n  background: transparent;\n}\n.ant-btn:active,\n.ant-btn.active {\n  color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n  background-color: #fff;\n  border-color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-btn:active > a:only-child,\n.ant-btn.active > a:only-child {\n  color: currentColor;\n}\n.ant-btn:active > a:only-child::after,\n.ant-btn.active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-disabled,\n.ant-btn.disabled,\n.ant-btn[disabled],\n.ant-btn-disabled:hover,\n.ant-btn.disabled:hover,\n.ant-btn[disabled]:hover,\n.ant-btn-disabled:focus,\n.ant-btn.disabled:focus,\n.ant-btn[disabled]:focus,\n.ant-btn-disabled:active,\n.ant-btn.disabled:active,\n.ant-btn[disabled]:active,\n.ant-btn-disabled.active,\n.ant-btn.disabled.active,\n.ant-btn[disabled].active {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  border-color: #d9d9d9;\n  box-shadow: none;\n}\n.ant-btn-disabled > a:only-child,\n.ant-btn.disabled > a:only-child,\n.ant-btn[disabled] > a:only-child,\n.ant-btn-disabled:hover > a:only-child,\n.ant-btn.disabled:hover > a:only-child,\n.ant-btn[disabled]:hover > a:only-child,\n.ant-btn-disabled:focus > a:only-child,\n.ant-btn.disabled:focus > a:only-child,\n.ant-btn[disabled]:focus > a:only-child,\n.ant-btn-disabled:active > a:only-child,\n.ant-btn.disabled:active > a:only-child,\n.ant-btn[disabled]:active > a:only-child,\n.ant-btn-disabled.active > a:only-child,\n.ant-btn.disabled.active > a:only-child,\n.ant-btn[disabled].active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-disabled > a:only-child::after,\n.ant-btn.disabled > a:only-child::after,\n.ant-btn[disabled] > a:only-child::after,\n.ant-btn-disabled:hover > a:only-child::after,\n.ant-btn.disabled:hover > a:only-child::after,\n.ant-btn[disabled]:hover > a:only-child::after,\n.ant-btn-disabled:focus > a:only-child::after,\n.ant-btn.disabled:focus > a:only-child::after,\n.ant-btn[disabled]:focus > a:only-child::after,\n.ant-btn-disabled:active > a:only-child::after,\n.ant-btn.disabled:active > a:only-child::after,\n.ant-btn[disabled]:active > a:only-child::after,\n.ant-btn-disabled.active > a:only-child::after,\n.ant-btn.disabled.active > a:only-child::after,\n.ant-btn[disabled].active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn:hover,\n.ant-btn:focus,\n.ant-btn:active,\n.ant-btn.active {\n  background: #fff;\n}\n.ant-btn-primary {\n  color: #fff;\n  background-color: @primary-color;\n  border-color: @primary-color;\n  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\n}\n.ant-btn-primary > a:only-child {\n  color: currentColor;\n}\n.ant-btn-primary > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-primary:hover,\n.ant-btn-primary:focus {\n  color: #fff;\n  background-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-btn-primary:hover > a:only-child,\n.ant-btn-primary:focus > a:only-child {\n  color: currentColor;\n}\n.ant-btn-primary:hover > a:only-child::after,\n.ant-btn-primary:focus > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-primary:active,\n.ant-btn-primary.active {\n  color: #fff;\n  background-color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n  border-color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-btn-primary:active > a:only-child,\n.ant-btn-primary.active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-primary:active > a:only-child::after,\n.ant-btn-primary.active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-primary-disabled,\n.ant-btn-primary.disabled,\n.ant-btn-primary[disabled],\n.ant-btn-primary-disabled:hover,\n.ant-btn-primary.disabled:hover,\n.ant-btn-primary[disabled]:hover,\n.ant-btn-primary-disabled:focus,\n.ant-btn-primary.disabled:focus,\n.ant-btn-primary[disabled]:focus,\n.ant-btn-primary-disabled:active,\n.ant-btn-primary.disabled:active,\n.ant-btn-primary[disabled]:active,\n.ant-btn-primary-disabled.active,\n.ant-btn-primary.disabled.active,\n.ant-btn-primary[disabled].active {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  border-color: #d9d9d9;\n  box-shadow: none;\n}\n.ant-btn-primary-disabled > a:only-child,\n.ant-btn-primary.disabled > a:only-child,\n.ant-btn-primary[disabled] > a:only-child,\n.ant-btn-primary-disabled:hover > a:only-child,\n.ant-btn-primary.disabled:hover > a:only-child,\n.ant-btn-primary[disabled]:hover > a:only-child,\n.ant-btn-primary-disabled:focus > a:only-child,\n.ant-btn-primary.disabled:focus > a:only-child,\n.ant-btn-primary[disabled]:focus > a:only-child,\n.ant-btn-primary-disabled:active > a:only-child,\n.ant-btn-primary.disabled:active > a:only-child,\n.ant-btn-primary[disabled]:active > a:only-child,\n.ant-btn-primary-disabled.active > a:only-child,\n.ant-btn-primary.disabled.active > a:only-child,\n.ant-btn-primary[disabled].active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-primary-disabled > a:only-child::after,\n.ant-btn-primary.disabled > a:only-child::after,\n.ant-btn-primary[disabled] > a:only-child::after,\n.ant-btn-primary-disabled:hover > a:only-child::after,\n.ant-btn-primary.disabled:hover > a:only-child::after,\n.ant-btn-primary[disabled]:hover > a:only-child::after,\n.ant-btn-primary-disabled:focus > a:only-child::after,\n.ant-btn-primary.disabled:focus > a:only-child::after,\n.ant-btn-primary[disabled]:focus > a:only-child::after,\n.ant-btn-primary-disabled:active > a:only-child::after,\n.ant-btn-primary.disabled:active > a:only-child::after,\n.ant-btn-primary[disabled]:active > a:only-child::after,\n.ant-btn-primary-disabled.active > a:only-child::after,\n.ant-btn-primary.disabled.active > a:only-child::after,\n.ant-btn-primary[disabled].active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) {\n  border-right-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-left-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled {\n  border-color: #d9d9d9;\n}\n.ant-btn-group .ant-btn-primary:first-child:not(:last-child) {\n  border-right-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled] {\n  border-right-color: #d9d9d9;\n}\n.ant-btn-group .ant-btn-primary:last-child:not(:first-child),\n.ant-btn-group .ant-btn-primary + .ant-btn-primary {\n  border-left-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled],\n.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] {\n  border-left-color: #d9d9d9;\n}\n.ant-btn-ghost {\n  color: #000000;\n  background-color: transparent;\n  border-color: #d9d9d9;\n}\n.ant-btn-ghost > a:only-child {\n  color: currentColor;\n}\n.ant-btn-ghost > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-ghost:hover,\n.ant-btn-ghost:focus {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  background-color: transparent;\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-btn-ghost:hover > a:only-child,\n.ant-btn-ghost:focus > a:only-child {\n  color: currentColor;\n}\n.ant-btn-ghost:hover > a:only-child::after,\n.ant-btn-ghost:focus > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-ghost:active,\n.ant-btn-ghost.active {\n  color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n  background-color: transparent;\n  border-color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-btn-ghost:active > a:only-child,\n.ant-btn-ghost.active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-ghost:active > a:only-child::after,\n.ant-btn-ghost.active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-ghost-disabled,\n.ant-btn-ghost.disabled,\n.ant-btn-ghost[disabled],\n.ant-btn-ghost-disabled:hover,\n.ant-btn-ghost.disabled:hover,\n.ant-btn-ghost[disabled]:hover,\n.ant-btn-ghost-disabled:focus,\n.ant-btn-ghost.disabled:focus,\n.ant-btn-ghost[disabled]:focus,\n.ant-btn-ghost-disabled:active,\n.ant-btn-ghost.disabled:active,\n.ant-btn-ghost[disabled]:active,\n.ant-btn-ghost-disabled.active,\n.ant-btn-ghost.disabled.active,\n.ant-btn-ghost[disabled].active {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  border-color: #d9d9d9;\n  box-shadow: none;\n}\n.ant-btn-ghost-disabled > a:only-child,\n.ant-btn-ghost.disabled > a:only-child,\n.ant-btn-ghost[disabled] > a:only-child,\n.ant-btn-ghost-disabled:hover > a:only-child,\n.ant-btn-ghost.disabled:hover > a:only-child,\n.ant-btn-ghost[disabled]:hover > a:only-child,\n.ant-btn-ghost-disabled:focus > a:only-child,\n.ant-btn-ghost.disabled:focus > a:only-child,\n.ant-btn-ghost[disabled]:focus > a:only-child,\n.ant-btn-ghost-disabled:active > a:only-child,\n.ant-btn-ghost.disabled:active > a:only-child,\n.ant-btn-ghost[disabled]:active > a:only-child,\n.ant-btn-ghost-disabled.active > a:only-child,\n.ant-btn-ghost.disabled.active > a:only-child,\n.ant-btn-ghost[disabled].active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-ghost-disabled > a:only-child::after,\n.ant-btn-ghost.disabled > a:only-child::after,\n.ant-btn-ghost[disabled] > a:only-child::after,\n.ant-btn-ghost-disabled:hover > a:only-child::after,\n.ant-btn-ghost.disabled:hover > a:only-child::after,\n.ant-btn-ghost[disabled]:hover > a:only-child::after,\n.ant-btn-ghost-disabled:focus > a:only-child::after,\n.ant-btn-ghost.disabled:focus > a:only-child::after,\n.ant-btn-ghost[disabled]:focus > a:only-child::after,\n.ant-btn-ghost-disabled:active > a:only-child::after,\n.ant-btn-ghost.disabled:active > a:only-child::after,\n.ant-btn-ghost[disabled]:active > a:only-child::after,\n.ant-btn-ghost-disabled.active > a:only-child::after,\n.ant-btn-ghost.disabled.active > a:only-child::after,\n.ant-btn-ghost[disabled].active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-dashed {\n  color: #000000;\n  background-color: #fff;\n  border-color: #d9d9d9;\n  border-style: dashed;\n}\n.ant-btn-dashed > a:only-child {\n  color: currentColor;\n}\n.ant-btn-dashed > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-dashed:hover,\n.ant-btn-dashed:focus {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  background-color: #fff;\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-btn-dashed:hover > a:only-child,\n.ant-btn-dashed:focus > a:only-child {\n  color: currentColor;\n}\n.ant-btn-dashed:hover > a:only-child::after,\n.ant-btn-dashed:focus > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-dashed:active,\n.ant-btn-dashed.active {\n  color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n  background-color: #fff;\n  border-color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-btn-dashed:active > a:only-child,\n.ant-btn-dashed.active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-dashed:active > a:only-child::after,\n.ant-btn-dashed.active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-dashed-disabled,\n.ant-btn-dashed.disabled,\n.ant-btn-dashed[disabled],\n.ant-btn-dashed-disabled:hover,\n.ant-btn-dashed.disabled:hover,\n.ant-btn-dashed[disabled]:hover,\n.ant-btn-dashed-disabled:focus,\n.ant-btn-dashed.disabled:focus,\n.ant-btn-dashed[disabled]:focus,\n.ant-btn-dashed-disabled:active,\n.ant-btn-dashed.disabled:active,\n.ant-btn-dashed[disabled]:active,\n.ant-btn-dashed-disabled.active,\n.ant-btn-dashed.disabled.active,\n.ant-btn-dashed[disabled].active {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  border-color: #d9d9d9;\n  box-shadow: none;\n}\n.ant-btn-dashed-disabled > a:only-child,\n.ant-btn-dashed.disabled > a:only-child,\n.ant-btn-dashed[disabled] > a:only-child,\n.ant-btn-dashed-disabled:hover > a:only-child,\n.ant-btn-dashed.disabled:hover > a:only-child,\n.ant-btn-dashed[disabled]:hover > a:only-child,\n.ant-btn-dashed-disabled:focus > a:only-child,\n.ant-btn-dashed.disabled:focus > a:only-child,\n.ant-btn-dashed[disabled]:focus > a:only-child,\n.ant-btn-dashed-disabled:active > a:only-child,\n.ant-btn-dashed.disabled:active > a:only-child,\n.ant-btn-dashed[disabled]:active > a:only-child,\n.ant-btn-dashed-disabled.active > a:only-child,\n.ant-btn-dashed.disabled.active > a:only-child,\n.ant-btn-dashed[disabled].active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-dashed-disabled > a:only-child::after,\n.ant-btn-dashed.disabled > a:only-child::after,\n.ant-btn-dashed[disabled] > a:only-child::after,\n.ant-btn-dashed-disabled:hover > a:only-child::after,\n.ant-btn-dashed.disabled:hover > a:only-child::after,\n.ant-btn-dashed[disabled]:hover > a:only-child::after,\n.ant-btn-dashed-disabled:focus > a:only-child::after,\n.ant-btn-dashed.disabled:focus > a:only-child::after,\n.ant-btn-dashed[disabled]:focus > a:only-child::after,\n.ant-btn-dashed-disabled:active > a:only-child::after,\n.ant-btn-dashed.disabled:active > a:only-child::after,\n.ant-btn-dashed[disabled]:active > a:only-child::after,\n.ant-btn-dashed-disabled.active > a:only-child::after,\n.ant-btn-dashed.disabled.active > a:only-child::after,\n.ant-btn-dashed[disabled].active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-danger {\n  color: #fff;\n  background-color: #ff4d4f;\n  border-color: #ff4d4f;\n  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\n}\n.ant-btn-danger > a:only-child {\n  color: currentColor;\n}\n.ant-btn-danger > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-danger:hover,\n.ant-btn-danger:focus {\n  color: #fff;\n  background-color: #ff7875;\n  border-color: #ff7875;\n}\n.ant-btn-danger:hover > a:only-child,\n.ant-btn-danger:focus > a:only-child {\n  color: currentColor;\n}\n.ant-btn-danger:hover > a:only-child::after,\n.ant-btn-danger:focus > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-danger:active,\n.ant-btn-danger.active {\n  color: #fff;\n  background-color: #d9363e;\n  border-color: #d9363e;\n}\n.ant-btn-danger:active > a:only-child,\n.ant-btn-danger.active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-danger:active > a:only-child::after,\n.ant-btn-danger.active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-danger-disabled,\n.ant-btn-danger.disabled,\n.ant-btn-danger[disabled],\n.ant-btn-danger-disabled:hover,\n.ant-btn-danger.disabled:hover,\n.ant-btn-danger[disabled]:hover,\n.ant-btn-danger-disabled:focus,\n.ant-btn-danger.disabled:focus,\n.ant-btn-danger[disabled]:focus,\n.ant-btn-danger-disabled:active,\n.ant-btn-danger.disabled:active,\n.ant-btn-danger[disabled]:active,\n.ant-btn-danger-disabled.active,\n.ant-btn-danger.disabled.active,\n.ant-btn-danger[disabled].active {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  border-color: #d9d9d9;\n  box-shadow: none;\n}\n.ant-btn-danger-disabled > a:only-child,\n.ant-btn-danger.disabled > a:only-child,\n.ant-btn-danger[disabled] > a:only-child,\n.ant-btn-danger-disabled:hover > a:only-child,\n.ant-btn-danger.disabled:hover > a:only-child,\n.ant-btn-danger[disabled]:hover > a:only-child,\n.ant-btn-danger-disabled:focus > a:only-child,\n.ant-btn-danger.disabled:focus > a:only-child,\n.ant-btn-danger[disabled]:focus > a:only-child,\n.ant-btn-danger-disabled:active > a:only-child,\n.ant-btn-danger.disabled:active > a:only-child,\n.ant-btn-danger[disabled]:active > a:only-child,\n.ant-btn-danger-disabled.active > a:only-child,\n.ant-btn-danger.disabled.active > a:only-child,\n.ant-btn-danger[disabled].active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-danger-disabled > a:only-child::after,\n.ant-btn-danger.disabled > a:only-child::after,\n.ant-btn-danger[disabled] > a:only-child::after,\n.ant-btn-danger-disabled:hover > a:only-child::after,\n.ant-btn-danger.disabled:hover > a:only-child::after,\n.ant-btn-danger[disabled]:hover > a:only-child::after,\n.ant-btn-danger-disabled:focus > a:only-child::after,\n.ant-btn-danger.disabled:focus > a:only-child::after,\n.ant-btn-danger[disabled]:focus > a:only-child::after,\n.ant-btn-danger-disabled:active > a:only-child::after,\n.ant-btn-danger.disabled:active > a:only-child::after,\n.ant-btn-danger[disabled]:active > a:only-child::after,\n.ant-btn-danger-disabled.active > a:only-child::after,\n.ant-btn-danger.disabled.active > a:only-child::after,\n.ant-btn-danger[disabled].active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-link {\n  color: @primary-color;\n  background-color: transparent;\n  border-color: transparent;\n  box-shadow: none;\n}\n.ant-btn-link > a:only-child {\n  color: currentColor;\n}\n.ant-btn-link > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-link:hover,\n.ant-btn-link:focus {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  background-color: transparent;\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-btn-link:hover > a:only-child,\n.ant-btn-link:focus > a:only-child {\n  color: currentColor;\n}\n.ant-btn-link:hover > a:only-child::after,\n.ant-btn-link:focus > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-link:active,\n.ant-btn-link.active {\n  color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n  background-color: transparent;\n  border-color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-btn-link:active > a:only-child,\n.ant-btn-link.active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-link:active > a:only-child::after,\n.ant-btn-link.active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-link-disabled,\n.ant-btn-link.disabled,\n.ant-btn-link[disabled],\n.ant-btn-link-disabled:hover,\n.ant-btn-link.disabled:hover,\n.ant-btn-link[disabled]:hover,\n.ant-btn-link-disabled:focus,\n.ant-btn-link.disabled:focus,\n.ant-btn-link[disabled]:focus,\n.ant-btn-link-disabled:active,\n.ant-btn-link.disabled:active,\n.ant-btn-link[disabled]:active,\n.ant-btn-link-disabled.active,\n.ant-btn-link.disabled.active,\n.ant-btn-link[disabled].active {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  border-color: #d9d9d9;\n  box-shadow: none;\n}\n.ant-btn-link-disabled > a:only-child,\n.ant-btn-link.disabled > a:only-child,\n.ant-btn-link[disabled] > a:only-child,\n.ant-btn-link-disabled:hover > a:only-child,\n.ant-btn-link.disabled:hover > a:only-child,\n.ant-btn-link[disabled]:hover > a:only-child,\n.ant-btn-link-disabled:focus > a:only-child,\n.ant-btn-link.disabled:focus > a:only-child,\n.ant-btn-link[disabled]:focus > a:only-child,\n.ant-btn-link-disabled:active > a:only-child,\n.ant-btn-link.disabled:active > a:only-child,\n.ant-btn-link[disabled]:active > a:only-child,\n.ant-btn-link-disabled.active > a:only-child,\n.ant-btn-link.disabled.active > a:only-child,\n.ant-btn-link[disabled].active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-link-disabled > a:only-child::after,\n.ant-btn-link.disabled > a:only-child::after,\n.ant-btn-link[disabled] > a:only-child::after,\n.ant-btn-link-disabled:hover > a:only-child::after,\n.ant-btn-link.disabled:hover > a:only-child::after,\n.ant-btn-link[disabled]:hover > a:only-child::after,\n.ant-btn-link-disabled:focus > a:only-child::after,\n.ant-btn-link.disabled:focus > a:only-child::after,\n.ant-btn-link[disabled]:focus > a:only-child::after,\n.ant-btn-link-disabled:active > a:only-child::after,\n.ant-btn-link.disabled:active > a:only-child::after,\n.ant-btn-link[disabled]:active > a:only-child::after,\n.ant-btn-link-disabled.active > a:only-child::after,\n.ant-btn-link.disabled.active > a:only-child::after,\n.ant-btn-link[disabled].active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-link:hover,\n.ant-btn-link:focus,\n.ant-btn-link:active {\n  border-color: transparent;\n}\n.ant-btn-link-disabled,\n.ant-btn-link.disabled,\n.ant-btn-link[disabled],\n.ant-btn-link-disabled:hover,\n.ant-btn-link.disabled:hover,\n.ant-btn-link[disabled]:hover,\n.ant-btn-link-disabled:focus,\n.ant-btn-link.disabled:focus,\n.ant-btn-link[disabled]:focus,\n.ant-btn-link-disabled:active,\n.ant-btn-link.disabled:active,\n.ant-btn-link[disabled]:active,\n.ant-btn-link-disabled.active,\n.ant-btn-link.disabled.active,\n.ant-btn-link[disabled].active {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: transparent;\n  border-color: transparent;\n  box-shadow: none;\n}\n.ant-btn-link-disabled > a:only-child,\n.ant-btn-link.disabled > a:only-child,\n.ant-btn-link[disabled] > a:only-child,\n.ant-btn-link-disabled:hover > a:only-child,\n.ant-btn-link.disabled:hover > a:only-child,\n.ant-btn-link[disabled]:hover > a:only-child,\n.ant-btn-link-disabled:focus > a:only-child,\n.ant-btn-link.disabled:focus > a:only-child,\n.ant-btn-link[disabled]:focus > a:only-child,\n.ant-btn-link-disabled:active > a:only-child,\n.ant-btn-link.disabled:active > a:only-child,\n.ant-btn-link[disabled]:active > a:only-child,\n.ant-btn-link-disabled.active > a:only-child,\n.ant-btn-link.disabled.active > a:only-child,\n.ant-btn-link[disabled].active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-link-disabled > a:only-child::after,\n.ant-btn-link.disabled > a:only-child::after,\n.ant-btn-link[disabled] > a:only-child::after,\n.ant-btn-link-disabled:hover > a:only-child::after,\n.ant-btn-link.disabled:hover > a:only-child::after,\n.ant-btn-link[disabled]:hover > a:only-child::after,\n.ant-btn-link-disabled:focus > a:only-child::after,\n.ant-btn-link.disabled:focus > a:only-child::after,\n.ant-btn-link[disabled]:focus > a:only-child::after,\n.ant-btn-link-disabled:active > a:only-child::after,\n.ant-btn-link.disabled:active > a:only-child::after,\n.ant-btn-link[disabled]:active > a:only-child::after,\n.ant-btn-link-disabled.active > a:only-child::after,\n.ant-btn-link.disabled.active > a:only-child::after,\n.ant-btn-link[disabled].active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-icon-only {\n  border-radius: 2px;\n}\n.ant-btn-icon-only.ant-btn-lg {\n  border-radius: 2px;\n}\n.ant-btn-icon-only.ant-btn-sm {\n  border-radius: 2px;\n}\n.ant-btn-round {\n  border-radius: 32px;\n}\n.ant-btn-round.ant-btn-lg {\n  border-radius: 40px;\n}\n.ant-btn-round.ant-btn-sm {\n  border-radius: 24px;\n}\n.ant-btn-circle,\n.ant-btn-circle-outline {\n  border-radius: 50%;\n}\n.ant-btn-circle.ant-btn-lg,\n.ant-btn-circle-outline.ant-btn-lg {\n  border-radius: 50%;\n}\n.ant-btn-circle.ant-btn-sm,\n.ant-btn-circle-outline.ant-btn-sm {\n  border-radius: 50%;\n}\n.ant-btn::before {\n  background: #fff;\n  border-radius: inherit;\n}\n.ant-btn-group-lg > .ant-btn,\n.ant-btn-group-lg > span > .ant-btn {\n  border-radius: 0;\n}\n.ant-btn-group-sm > .ant-btn,\n.ant-btn-group-sm > span > .ant-btn {\n  border-radius: 0;\n}\n.ant-btn-group .ant-btn-primary + .ant-btn:not(.ant-btn-primary):not([disabled]) {\n  border-left-color: transparent;\n}\n.ant-btn-group .ant-btn {\n  border-radius: 0;\n}\n.ant-btn-group > .ant-btn:only-child {\n  border-radius: 2px;\n}\n.ant-btn-group > span:only-child > .ant-btn {\n  border-radius: 2px;\n}\n.ant-btn-group > .ant-btn:first-child:not(:last-child),\n.ant-btn-group > span:first-child:not(:last-child) > .ant-btn {\n  border-top-left-radius: 2px;\n  border-bottom-left-radius: 2px;\n}\n.ant-btn-group > .ant-btn:last-child:not(:first-child),\n.ant-btn-group > span:last-child:not(:first-child) > .ant-btn {\n  border-top-right-radius: 2px;\n  border-bottom-right-radius: 2px;\n}\n.ant-btn-group-sm > .ant-btn:only-child {\n  border-radius: 2px;\n}\n.ant-btn-group-sm > span:only-child > .ant-btn {\n  border-radius: 2px;\n}\n.ant-btn-group-sm > .ant-btn:first-child:not(:last-child),\n.ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn {\n  border-top-left-radius: 2px;\n  border-bottom-left-radius: 2px;\n}\n.ant-btn-group-sm > .ant-btn:last-child:not(:first-child),\n.ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn {\n  border-top-right-radius: 2px;\n  border-bottom-right-radius: 2px;\n}\n.ant-btn-group > .ant-btn-group:not(:first-child):not(:last-child) > .ant-btn {\n  border-radius: 0;\n}\n.ant-btn-group > .ant-btn-group:first-child:not(:last-child) > .ant-btn:last-child {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.ant-btn-group > .ant-btn-group:last-child:not(:first-child) > .ant-btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.ant-btn-background-ghost {\n  color: #fff;\n  background: transparent !important;\n  border-color: #fff;\n}\n.ant-btn-background-ghost.ant-btn-primary {\n  color: @primary-color;\n  background-color: transparent;\n  border-color: @primary-color;\n}\n.ant-btn-background-ghost.ant-btn-primary > a:only-child {\n  color: currentColor;\n}\n.ant-btn-background-ghost.ant-btn-primary > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-background-ghost.ant-btn-primary:hover,\n.ant-btn-background-ghost.ant-btn-primary:focus {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  background-color: transparent;\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child {\n  color: currentColor;\n}\n.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-background-ghost.ant-btn-primary:active,\n.ant-btn-background-ghost.ant-btn-primary.active {\n  color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n  background-color: transparent;\n  border-color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-btn-background-ghost.ant-btn-primary:active > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary.active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-background-ghost.ant-btn-primary:active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary.active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-background-ghost.ant-btn-primary-disabled,\n.ant-btn-background-ghost.ant-btn-primary.disabled,\n.ant-btn-background-ghost.ant-btn-primary[disabled],\n.ant-btn-background-ghost.ant-btn-primary-disabled:hover,\n.ant-btn-background-ghost.ant-btn-primary.disabled:hover,\n.ant-btn-background-ghost.ant-btn-primary[disabled]:hover,\n.ant-btn-background-ghost.ant-btn-primary-disabled:focus,\n.ant-btn-background-ghost.ant-btn-primary.disabled:focus,\n.ant-btn-background-ghost.ant-btn-primary[disabled]:focus,\n.ant-btn-background-ghost.ant-btn-primary-disabled:active,\n.ant-btn-background-ghost.ant-btn-primary.disabled:active,\n.ant-btn-background-ghost.ant-btn-primary[disabled]:active,\n.ant-btn-background-ghost.ant-btn-primary-disabled.active,\n.ant-btn-background-ghost.ant-btn-primary.disabled.active,\n.ant-btn-background-ghost.ant-btn-primary[disabled].active {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  border-color: #d9d9d9;\n  box-shadow: none;\n}\n.ant-btn-background-ghost.ant-btn-primary-disabled > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary-disabled:hover > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary-disabled:focus > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary-disabled:active > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary-disabled.active > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child,\n.ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-background-ghost.ant-btn-primary-disabled > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary-disabled:hover > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary-disabled:focus > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary-disabled:active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary-disabled.active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-background-ghost.ant-btn-danger {\n  color: #ff4d4f;\n  background-color: transparent;\n  border-color: #ff4d4f;\n}\n.ant-btn-background-ghost.ant-btn-danger > a:only-child {\n  color: currentColor;\n}\n.ant-btn-background-ghost.ant-btn-danger > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-background-ghost.ant-btn-danger:hover,\n.ant-btn-background-ghost.ant-btn-danger:focus {\n  color: #ff7875;\n  background-color: transparent;\n  border-color: #ff7875;\n}\n.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child {\n  color: currentColor;\n}\n.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-background-ghost.ant-btn-danger:active,\n.ant-btn-background-ghost.ant-btn-danger.active {\n  color: #d9363e;\n  background-color: transparent;\n  border-color: #d9363e;\n}\n.ant-btn-background-ghost.ant-btn-danger:active > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger.active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-background-ghost.ant-btn-danger:active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger.active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-background-ghost.ant-btn-danger-disabled,\n.ant-btn-background-ghost.ant-btn-danger.disabled,\n.ant-btn-background-ghost.ant-btn-danger[disabled],\n.ant-btn-background-ghost.ant-btn-danger-disabled:hover,\n.ant-btn-background-ghost.ant-btn-danger.disabled:hover,\n.ant-btn-background-ghost.ant-btn-danger[disabled]:hover,\n.ant-btn-background-ghost.ant-btn-danger-disabled:focus,\n.ant-btn-background-ghost.ant-btn-danger.disabled:focus,\n.ant-btn-background-ghost.ant-btn-danger[disabled]:focus,\n.ant-btn-background-ghost.ant-btn-danger-disabled:active,\n.ant-btn-background-ghost.ant-btn-danger.disabled:active,\n.ant-btn-background-ghost.ant-btn-danger[disabled]:active,\n.ant-btn-background-ghost.ant-btn-danger-disabled.active,\n.ant-btn-background-ghost.ant-btn-danger.disabled.active,\n.ant-btn-background-ghost.ant-btn-danger[disabled].active {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  border-color: #d9d9d9;\n  box-shadow: none;\n}\n.ant-btn-background-ghost.ant-btn-danger-disabled > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger-disabled:hover > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger-disabled:focus > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger-disabled:active > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger-disabled.active > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child,\n.ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-background-ghost.ant-btn-danger-disabled > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger-disabled:hover > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger-disabled:focus > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger-disabled:active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger-disabled.active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-background-ghost.ant-btn-link {\n  color: @primary-color;\n  background-color: transparent;\n  border-color: transparent;\n  color: #fff;\n}\n.ant-btn-background-ghost.ant-btn-link > a:only-child {\n  color: currentColor;\n}\n.ant-btn-background-ghost.ant-btn-link > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-background-ghost.ant-btn-link:hover,\n.ant-btn-background-ghost.ant-btn-link:focus {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  background-color: transparent;\n  border-color: transparent;\n}\n.ant-btn-background-ghost.ant-btn-link:hover > a:only-child,\n.ant-btn-background-ghost.ant-btn-link:focus > a:only-child {\n  color: currentColor;\n}\n.ant-btn-background-ghost.ant-btn-link:hover > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link:focus > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-background-ghost.ant-btn-link:active,\n.ant-btn-background-ghost.ant-btn-link.active {\n  color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n  background-color: transparent;\n  border-color: transparent;\n}\n.ant-btn-background-ghost.ant-btn-link:active > a:only-child,\n.ant-btn-background-ghost.ant-btn-link.active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-background-ghost.ant-btn-link:active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link.active > a:only-child::after {\n  background: transparent;\n}\n.ant-btn-background-ghost.ant-btn-link-disabled,\n.ant-btn-background-ghost.ant-btn-link.disabled,\n.ant-btn-background-ghost.ant-btn-link[disabled],\n.ant-btn-background-ghost.ant-btn-link-disabled:hover,\n.ant-btn-background-ghost.ant-btn-link.disabled:hover,\n.ant-btn-background-ghost.ant-btn-link[disabled]:hover,\n.ant-btn-background-ghost.ant-btn-link-disabled:focus,\n.ant-btn-background-ghost.ant-btn-link.disabled:focus,\n.ant-btn-background-ghost.ant-btn-link[disabled]:focus,\n.ant-btn-background-ghost.ant-btn-link-disabled:active,\n.ant-btn-background-ghost.ant-btn-link.disabled:active,\n.ant-btn-background-ghost.ant-btn-link[disabled]:active,\n.ant-btn-background-ghost.ant-btn-link-disabled.active,\n.ant-btn-background-ghost.ant-btn-link.disabled.active,\n.ant-btn-background-ghost.ant-btn-link[disabled].active {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  border-color: #d9d9d9;\n  box-shadow: none;\n}\n.ant-btn-background-ghost.ant-btn-link-disabled > a:only-child,\n.ant-btn-background-ghost.ant-btn-link.disabled > a:only-child,\n.ant-btn-background-ghost.ant-btn-link[disabled] > a:only-child,\n.ant-btn-background-ghost.ant-btn-link-disabled:hover > a:only-child,\n.ant-btn-background-ghost.ant-btn-link.disabled:hover > a:only-child,\n.ant-btn-background-ghost.ant-btn-link[disabled]:hover > a:only-child,\n.ant-btn-background-ghost.ant-btn-link-disabled:focus > a:only-child,\n.ant-btn-background-ghost.ant-btn-link.disabled:focus > a:only-child,\n.ant-btn-background-ghost.ant-btn-link[disabled]:focus > a:only-child,\n.ant-btn-background-ghost.ant-btn-link-disabled:active > a:only-child,\n.ant-btn-background-ghost.ant-btn-link.disabled:active > a:only-child,\n.ant-btn-background-ghost.ant-btn-link[disabled]:active > a:only-child,\n.ant-btn-background-ghost.ant-btn-link-disabled.active > a:only-child,\n.ant-btn-background-ghost.ant-btn-link.disabled.active > a:only-child,\n.ant-btn-background-ghost.ant-btn-link[disabled].active > a:only-child {\n  color: currentColor;\n}\n.ant-btn-background-ghost.ant-btn-link-disabled > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link.disabled > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link[disabled] > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link-disabled:hover > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link.disabled:hover > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link[disabled]:hover > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link-disabled:focus > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link.disabled:focus > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link[disabled]:focus > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link-disabled:active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link.disabled:active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link[disabled]:active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link-disabled.active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link.disabled.active > a:only-child::after,\n.ant-btn-background-ghost.ant-btn-link[disabled].active > a:only-child::after {\n  background: transparent;\n}\n.ant-fullcalendar {\n  color: #000000;\n  border-top: 1px solid #d9d9d9;\n}\n.ant-fullcalendar table {\n  background-color: transparent;\n  border-collapse: collapse;\n}\n.ant-fullcalendar table,\n.ant-fullcalendar th,\n.ant-fullcalendar td {\n  border: 0;\n}\n.ant-fullcalendar-calendar-table {\n  border-spacing: 0;\n}\n.ant-fullcalendar-value {\n  color: #000000;\n  background: transparent;\n  border-radius: 2px;\n}\n.ant-fullcalendar-value:hover {\n  background: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-fullcalendar-value:active {\n  color: #ffffff;\n  background: @primary-color;\n}\n.ant-fullcalendar-today .ant-fullcalendar-value,\n.ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value {\n  box-shadow: 0 0 0 1px #313653 inset;\n}\n.ant-fullcalendar-selected-day .ant-fullcalendar-value,\n.ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value {\n  color: #ffffff;\n  background: @primary-color;\n}\n.ant-fullcalendar-disabled-cell-first-of-row .ant-fullcalendar-value {\n  border-top-left-radius: 2px;\n  border-bottom-left-radius: 2px;\n}\n.ant-fullcalendar-disabled-cell-last-of-row .ant-fullcalendar-value {\n  border-top-right-radius: 2px;\n  border-bottom-right-radius: 2px;\n}\n.ant-fullcalendar-last-month-cell .ant-fullcalendar-value,\n.ant-fullcalendar-next-month-btn-day .ant-fullcalendar-value {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-fullcalendar-month-panel-table {\n  border-collapse: separate;\n}\n.ant-fullcalendar-fullscreen {\n  border-top: 0;\n}\n.ant-fullcalendar-fullscreen .ant-fullcalendar-month,\n.ant-fullcalendar-fullscreen .ant-fullcalendar-date {\n  color: #000000;\n  border-top: 2px solid #e8e8e8;\n}\n.ant-fullcalendar-fullscreen .ant-fullcalendar-month:hover,\n.ant-fullcalendar-fullscreen .ant-fullcalendar-date:hover {\n  background: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-fullcalendar-fullscreen .ant-fullcalendar-month:active,\n.ant-fullcalendar-fullscreen .ant-fullcalendar-date:active {\n  background: rgba(58, 64, 99, 0.15);\n}\n.ant-fullcalendar-fullscreen .ant-fullcalendar-value {\n  background: transparent;\n}\n.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value {\n  color: #000000;\n}\n.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-month,\n.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-date {\n  background: transparent;\n  border-top-color: @primary-color;\n}\n.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value,\n.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value {\n  box-shadow: none;\n}\n.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-month,\n.ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-date {\n  background: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value,\n.ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-value {\n  color: @primary-color;\n}\n.ant-fullcalendar-fullscreen .ant-fullcalendar-last-month-cell .ant-fullcalendar-date,\n.ant-fullcalendar-fullscreen .ant-fullcalendar-next-month-btn-day .ant-fullcalendar-date {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date,\n.ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date:hover {\n  background: transparent;\n}\n.ant-fullcalendar-disabled-cell .ant-fullcalendar-value {\n  color: rgba(0, 0, 0, 0.25);\n  border-radius: 0;\n}\n.ant-card {\n  color: #000000;\n  background: #fff;\n  border-radius: 2px;\n}\n.ant-card-hoverable:hover {\n  border-color: rgba(0, 0, 0, 0.09);\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.09);\n}\n.ant-card-bordered {\n  border: 1px solid #e8e8e8;\n}\n.ant-card-head {\n  color: rgba(0, 0, 0, 0.85);\n  background: transparent;\n  border-bottom: 1px solid #e8e8e8;\n  border-radius: 2px 2px 0 0;\n}\n.ant-card-head .ant-tabs {\n  color: #000000;\n}\n.ant-card-head .ant-tabs-bar {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-card-extra {\n  color: #000000;\n}\n.ant-card-grid {\n  border: 0;\n  border-radius: 0;\n  box-shadow: 1px 0 0 0 #e8e8e8, 0 1px 0 0 #e8e8e8, 1px 1px 0 0 #e8e8e8, 1px 0 0 0 #e8e8e8 inset, 0 1px 0 0 #e8e8e8 inset;\n}\n.ant-card-grid-hoverable:hover {\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n.ant-card-cover img {\n  border-radius: 2px 2px 0 0;\n}\n.ant-card-actions {\n  background: #fafafa;\n  border-top: 1px solid #e8e8e8;\n}\n.ant-card-actions > li {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-card-actions > li > span:hover {\n  color: @primary-color;\n}\n.ant-card-actions > li > span a:not(.ant-btn),\n.ant-card-actions > li > span > .anticon {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-card-actions > li > span a:not(.ant-btn):hover,\n.ant-card-actions > li > span > .anticon:hover {\n  color: @primary-color;\n}\n.ant-card-actions > li:not(:last-child) {\n  border-right: 1px solid #e8e8e8;\n}\n.ant-card-type-inner .ant-card-head {\n  background: #fafafa;\n}\n.ant-card-meta-title {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-card-meta-description {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-card-loading-block {\n  background: linear-gradient(90deg, rgba(207, 216, 220, 0.2), rgba(207, 216, 220, 0.4), rgba(207, 216, 220, 0.2));\n  background-size: 600% 600%;\n  border-radius: 2px;\n}\n.ant-carousel {\n  color: #000000;\n}\n.ant-carousel .slick-slider {\n  -webkit-tap-highlight-color: transparent;\n}\n.ant-carousel .slick-vertical .slick-slide {\n  border: 1px solid transparent;\n}\n.ant-carousel .slick-prev,\n.ant-carousel .slick-next {\n  color: transparent;\n  background: transparent;\n  border: 0;\n}\n.ant-carousel .slick-prev:hover,\n.ant-carousel .slick-next:hover,\n.ant-carousel .slick-prev:focus,\n.ant-carousel .slick-next:focus {\n  color: transparent;\n  background: transparent;\n}\n.ant-carousel .slick-dots li button {\n  color: transparent;\n  background: #fff;\n  border: 0;\n  border-radius: 1px;\n}\n.ant-carousel .slick-dots li.slick-active button {\n  background: #fff;\n}\n.ant-cascader {\n  color: #000000;\n}\n.ant-cascader-input.ant-input {\n  background-color: transparent !important;\n}\n.ant-cascader-picker {\n  color: #000000;\n  background-color: #fff;\n  border-radius: 2px;\n}\n.ant-cascader-picker-with-value .ant-cascader-picker-label {\n  color: transparent;\n}\n.ant-cascader-picker-disabled {\n  color: rgba(0, 0, 0, 0.25);\n  background: #f5f5f5;\n}\n.ant-cascader-picker:focus .ant-cascader-input {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.ant-cascader-picker-show-search.ant-cascader-picker-focused {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-cascader-picker-clear {\n  color: rgba(0, 0, 0, 0.25);\n  background: #fff;\n}\n.ant-cascader-picker-clear:hover {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-cascader-picker-arrow {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-cascader-picker-label:hover + .ant-cascader-input {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n}\n.ant-cascader-menus {\n  background: #fff;\n  border-radius: 2px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n.ant-cascader-menu {\n  border-right: 1px solid #e8e8e8;\n}\n.ant-cascader-menu:first-child {\n  border-radius: 2px 0 0 2px;\n}\n.ant-cascader-menu:last-child {\n  border-right-color: transparent;\n  border-radius: 0 2px 2px 0;\n}\n.ant-cascader-menu:only-child {\n  border-radius: 2px;\n}\n.ant-cascader-menu-item:hover {\n  background: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-cascader-menu-item-disabled {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-cascader-menu-item-disabled:hover {\n  background: transparent;\n}\n.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled),\n.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled):hover {\n  background-color: #fafafa;\n}\n.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon,\n.ant-cascader-menu-item-loading-icon {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-cascader-menu-item .ant-cascader-menu-item-keyword {\n  color: #f5222d;\n}\n.ant-checkbox {\n  color: #000000;\n}\n.ant-checkbox-wrapper:hover .ant-checkbox-inner,\n.ant-checkbox:hover .ant-checkbox-inner,\n.ant-checkbox-input:focus + .ant-checkbox-inner {\n  border-color: @primary-color;\n}\n.ant-checkbox-checked::after {\n  border: 1px solid @primary-color;\n  border-radius: 2px;\n}\n.ant-checkbox-inner {\n  background-color: #fff;\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n  border-collapse: separate;\n}\n.ant-checkbox-inner::after {\n  border: 2px solid #fff;\n  border-top: 0;\n  border-left: 0;\n}\n.ant-checkbox-checked .ant-checkbox-inner::after {\n  border: 2px solid #fff;\n  border-top: 0;\n  border-left: 0;\n}\n.ant-checkbox-checked .ant-checkbox-inner {\n  background-color: @primary-color;\n  border-color: @primary-color;\n}\n.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner::after {\n  border-color: rgba(0, 0, 0, 0.25);\n}\n.ant-checkbox-disabled .ant-checkbox-inner {\n  background-color: #f5f5f5;\n  border-color: #d9d9d9 !important;\n}\n.ant-checkbox-disabled .ant-checkbox-inner::after {\n  border-color: #f5f5f5;\n  border-collapse: separate;\n}\n.ant-checkbox-disabled + span {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-checkbox-wrapper {\n  color: #000000;\n}\n.ant-checkbox-group {\n  color: #000000;\n}\n.ant-checkbox-indeterminate .ant-checkbox-inner {\n  background-color: #fff;\n  border-color: #d9d9d9;\n}\n.ant-checkbox-indeterminate .ant-checkbox-inner::after {\n  background-color: @primary-color;\n  border: 0;\n}\n.ant-checkbox-indeterminate.ant-checkbox-disabled .ant-checkbox-inner::after {\n  background-color: rgba(0, 0, 0, 0.25);\n  border-color: rgba(0, 0, 0, 0.25);\n}\n.ant-collapse {\n  color: #000000;\n  background-color: #fafafa;\n  border: 1px solid #d9d9d9;\n  border-bottom: 0;\n  border-radius: 2px;\n}\n.ant-collapse > .ant-collapse-item {\n  border-bottom: 1px solid #d9d9d9;\n}\n.ant-collapse > .ant-collapse-item:last-child,\n.ant-collapse > .ant-collapse-item:last-child > .ant-collapse-header {\n  border-radius: 0 0 2px 2px;\n}\n.ant-collapse > .ant-collapse-item > .ant-collapse-header {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow {\n  color: inherit;\n}\n.ant-collapse-content {\n  color: #000000;\n  background-color: #fff;\n  border-top: 1px solid #d9d9d9;\n}\n.ant-collapse-item:last-child > .ant-collapse-content {\n  border-radius: 0 0 2px 2px;\n}\n.ant-collapse-borderless {\n  background-color: #fff;\n  border: 0;\n}\n.ant-collapse-borderless > .ant-collapse-item {\n  border-bottom: 1px solid #d9d9d9;\n}\n.ant-collapse-borderless > .ant-collapse-item:last-child,\n.ant-collapse-borderless > .ant-collapse-item:last-child .ant-collapse-header {\n  border-radius: 0;\n}\n.ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content {\n  background-color: transparent;\n  border-top: 0;\n}\n.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header,\n.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header > .arrow {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-comment-avatar img {\n  border-radius: 50%;\n}\n.ant-comment-content-author-name {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-comment-content-author-name > * {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-comment-content-author-name > *:hover {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-comment-content-author-time {\n  color: #ccc;\n}\n.ant-comment-actions > li {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-comment-actions > li > span {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-comment-actions > li > span:hover {\n  color: #595959;\n}\n.ant-calendar-picker-container {\n  color: #000000;\n}\n.ant-calendar-picker {\n  color: #000000;\n}\n.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled) {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled) {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.ant-calendar-picker-clear {\n  color: rgba(0, 0, 0, 0.25);\n  background: #fff;\n}\n.ant-calendar-picker-clear:hover {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-calendar-picker-icon {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-calendar {\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ffffff;\n  border-radius: 2px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n.ant-calendar-input-wrap {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-calendar-input {\n  color: #000000;\n  background: #fff;\n  border: 0;\n}\n.ant-calendar-input::-moz-placeholder {\n  color: #bfbfbf;\n}\n.ant-calendar-input:-ms-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-calendar-input::-webkit-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-calendar-header {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-calendar-header a:hover {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-calendar-header .ant-calendar-century-select,\n.ant-calendar-header .ant-calendar-decade-select,\n.ant-calendar-header .ant-calendar-year-select,\n.ant-calendar-header .ant-calendar-month-select {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-calendar-header .ant-calendar-prev-century-btn,\n.ant-calendar-header .ant-calendar-next-century-btn,\n.ant-calendar-header .ant-calendar-prev-decade-btn,\n.ant-calendar-header .ant-calendar-next-decade-btn,\n.ant-calendar-header .ant-calendar-prev-month-btn,\n.ant-calendar-header .ant-calendar-next-month-btn,\n.ant-calendar-header .ant-calendar-prev-year-btn,\n.ant-calendar-header .ant-calendar-next-year-btn {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-calendar-header .ant-calendar-prev-century-btn::before,\n.ant-calendar-header .ant-calendar-prev-decade-btn::before,\n.ant-calendar-header .ant-calendar-prev-year-btn::before,\n.ant-calendar-header .ant-calendar-prev-century-btn::after,\n.ant-calendar-header .ant-calendar-prev-decade-btn::after,\n.ant-calendar-header .ant-calendar-prev-year-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-header .ant-calendar-prev-century-btn:hover::before,\n.ant-calendar-header .ant-calendar-prev-decade-btn:hover::before,\n.ant-calendar-header .ant-calendar-prev-year-btn:hover::before,\n.ant-calendar-header .ant-calendar-prev-century-btn:hover::after,\n.ant-calendar-header .ant-calendar-prev-decade-btn:hover::after,\n.ant-calendar-header .ant-calendar-prev-year-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar-header .ant-calendar-next-century-btn::before,\n.ant-calendar-header .ant-calendar-next-decade-btn::before,\n.ant-calendar-header .ant-calendar-next-year-btn::before,\n.ant-calendar-header .ant-calendar-next-century-btn::after,\n.ant-calendar-header .ant-calendar-next-decade-btn::after,\n.ant-calendar-header .ant-calendar-next-year-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-header .ant-calendar-next-century-btn:hover::before,\n.ant-calendar-header .ant-calendar-next-decade-btn:hover::before,\n.ant-calendar-header .ant-calendar-next-year-btn:hover::before,\n.ant-calendar-header .ant-calendar-next-century-btn:hover::after,\n.ant-calendar-header .ant-calendar-next-decade-btn:hover::after,\n.ant-calendar-header .ant-calendar-next-year-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar-header .ant-calendar-prev-month-btn::before,\n.ant-calendar-header .ant-calendar-prev-month-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-header .ant-calendar-prev-month-btn:hover::before,\n.ant-calendar-header .ant-calendar-prev-month-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar-header .ant-calendar-next-month-btn::before,\n.ant-calendar-header .ant-calendar-next-month-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-header .ant-calendar-next-month-btn:hover::before,\n.ant-calendar-header .ant-calendar-next-month-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar table {\n  background-color: transparent;\n  border-collapse: collapse;\n}\n.ant-calendar table,\n.ant-calendar th,\n.ant-calendar td {\n  border: 0;\n}\n.ant-calendar-calendar-table {\n  border-spacing: 0;\n}\n.ant-calendar-date {\n  color: #000000;\n  background: transparent;\n  border: 1px solid transparent;\n  border-radius: 2px;\n}\n.ant-calendar-date:hover {\n  background: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-calendar-date:active {\n  color: #ffffff;\n  background: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-calendar-today .ant-calendar-date {\n  color: @primary-color;\n  border-color: @primary-color;\n}\n.ant-calendar-selected-day .ant-calendar-date {\n  background: rgba(58, 64, 99, 0.15);\n}\n.ant-calendar-last-month-cell .ant-calendar-date,\n.ant-calendar-next-month-btn-day .ant-calendar-date,\n.ant-calendar-last-month-cell .ant-calendar-date:hover,\n.ant-calendar-next-month-btn-day .ant-calendar-date:hover {\n  color: rgba(0, 0, 0, 0.25);\n  background: transparent;\n  border-color: transparent;\n}\n.ant-calendar-disabled-cell .ant-calendar-date {\n  color: rgba(0, 0, 0, 0.25);\n  background: #f5f5f5;\n  border: 1px solid transparent;\n  border-radius: 0;\n}\n.ant-calendar-disabled-cell .ant-calendar-date:hover {\n  background: #f5f5f5;\n}\n.ant-calendar-disabled-cell.ant-calendar-selected-day .ant-calendar-date::before {\n  background: rgba(0, 0, 0, 0.1);\n  border-radius: 2px;\n}\n.ant-calendar-disabled-cell.ant-calendar-today .ant-calendar-date::before {\n  border: 1px solid rgba(0, 0, 0, 0.25);\n  border-radius: 2px;\n}\n.ant-calendar-disabled-cell-first-of-row .ant-calendar-date {\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.ant-calendar-disabled-cell-last-of-row .ant-calendar-date {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.ant-calendar-footer {\n  border-top: 1px solid #e8e8e8;\n}\n.ant-calendar-footer:empty {\n  border-top: 0;\n}\n.ant-calendar .ant-calendar-today-btn-disabled,\n.ant-calendar .ant-calendar-clear-btn-disabled {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-calendar .ant-calendar-clear-btn::after {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-calendar .ant-calendar-clear-btn:hover::after {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-calendar .ant-calendar-ok-btn {\n  background-image: none;\n  border: 1px solid transparent;\n  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015);\n  color: #fff;\n  background-color: @primary-color;\n  border-color: @primary-color;\n  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\n  border-radius: 2px;\n}\n.ant-calendar .ant-calendar-ok-btn:not([disabled]):active {\n  box-shadow: none;\n}\n.ant-calendar .ant-calendar-ok-btn-lg {\n  border-radius: 2px;\n}\n.ant-calendar .ant-calendar-ok-btn-sm {\n  border-radius: 2px;\n}\n.ant-calendar .ant-calendar-ok-btn > a:only-child {\n  color: currentColor;\n}\n.ant-calendar .ant-calendar-ok-btn > a:only-child::after {\n  background: transparent;\n}\n.ant-calendar .ant-calendar-ok-btn:hover,\n.ant-calendar .ant-calendar-ok-btn:focus {\n  color: #fff;\n  background-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-calendar .ant-calendar-ok-btn:hover > a:only-child,\n.ant-calendar .ant-calendar-ok-btn:focus > a:only-child {\n  color: currentColor;\n}\n.ant-calendar .ant-calendar-ok-btn:hover > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn:focus > a:only-child::after {\n  background: transparent;\n}\n.ant-calendar .ant-calendar-ok-btn:active,\n.ant-calendar .ant-calendar-ok-btn.active {\n  color: #fff;\n  background-color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n  border-color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-calendar .ant-calendar-ok-btn:active > a:only-child,\n.ant-calendar .ant-calendar-ok-btn.active > a:only-child {\n  color: currentColor;\n}\n.ant-calendar .ant-calendar-ok-btn:active > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn.active > a:only-child::after {\n  background: transparent;\n}\n.ant-calendar .ant-calendar-ok-btn-disabled,\n.ant-calendar .ant-calendar-ok-btn.disabled,\n.ant-calendar .ant-calendar-ok-btn[disabled],\n.ant-calendar .ant-calendar-ok-btn-disabled:hover,\n.ant-calendar .ant-calendar-ok-btn.disabled:hover,\n.ant-calendar .ant-calendar-ok-btn[disabled]:hover,\n.ant-calendar .ant-calendar-ok-btn-disabled:focus,\n.ant-calendar .ant-calendar-ok-btn.disabled:focus,\n.ant-calendar .ant-calendar-ok-btn[disabled]:focus,\n.ant-calendar .ant-calendar-ok-btn-disabled:active,\n.ant-calendar .ant-calendar-ok-btn.disabled:active,\n.ant-calendar .ant-calendar-ok-btn[disabled]:active,\n.ant-calendar .ant-calendar-ok-btn-disabled.active,\n.ant-calendar .ant-calendar-ok-btn.disabled.active,\n.ant-calendar .ant-calendar-ok-btn[disabled].active {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  border-color: #d9d9d9;\n  box-shadow: none;\n}\n.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child,\n.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child,\n.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child,\n.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child,\n.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child,\n.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child,\n.ant-calendar .ant-calendar-ok-btn-disabled:focus > a:only-child,\n.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child,\n.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child,\n.ant-calendar .ant-calendar-ok-btn-disabled:active > a:only-child,\n.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child,\n.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child,\n.ant-calendar .ant-calendar-ok-btn-disabled.active > a:only-child,\n.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child,\n.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child {\n  color: currentColor;\n}\n.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn-disabled:focus > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn-disabled:active > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn-disabled.active > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child::after {\n  background: transparent;\n}\n.ant-calendar .ant-calendar-ok-btn-disabled,\n.ant-calendar .ant-calendar-ok-btn.disabled,\n.ant-calendar .ant-calendar-ok-btn[disabled],\n.ant-calendar .ant-calendar-ok-btn-disabled:hover,\n.ant-calendar .ant-calendar-ok-btn.disabled:hover,\n.ant-calendar .ant-calendar-ok-btn[disabled]:hover,\n.ant-calendar .ant-calendar-ok-btn-disabled:focus,\n.ant-calendar .ant-calendar-ok-btn.disabled:focus,\n.ant-calendar .ant-calendar-ok-btn[disabled]:focus,\n.ant-calendar .ant-calendar-ok-btn-disabled:active,\n.ant-calendar .ant-calendar-ok-btn.disabled:active,\n.ant-calendar .ant-calendar-ok-btn[disabled]:active,\n.ant-calendar .ant-calendar-ok-btn-disabled.active,\n.ant-calendar .ant-calendar-ok-btn.disabled.active,\n.ant-calendar .ant-calendar-ok-btn[disabled].active {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  border-color: #d9d9d9;\n  box-shadow: none;\n}\n.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child,\n.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child,\n.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child,\n.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child,\n.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child,\n.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child,\n.ant-calendar .ant-calendar-ok-btn-disabled:focus > a:only-child,\n.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child,\n.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child,\n.ant-calendar .ant-calendar-ok-btn-disabled:active > a:only-child,\n.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child,\n.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child,\n.ant-calendar .ant-calendar-ok-btn-disabled.active > a:only-child,\n.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child,\n.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child {\n  color: currentColor;\n}\n.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn-disabled:focus > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn-disabled:active > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn-disabled.active > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child::after,\n.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child::after {\n  background: transparent;\n}\n.ant-calendar-range-picker-input {\n  background-color: transparent;\n  border: 0;\n}\n.ant-calendar-range-picker-input::-moz-placeholder {\n  color: #bfbfbf;\n}\n.ant-calendar-range-picker-input:-ms-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-calendar-range-picker-input::-webkit-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-calendar-range-picker-separator {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-calendar-range-left .ant-calendar-time-picker-inner {\n  border-right: 1px solid #e8e8e8;\n}\n.ant-calendar-range-right .ant-calendar-time-picker-inner {\n  border-left: 1px solid #e8e8e8;\n}\n.ant-calendar-range-middle {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-calendar-range .ant-calendar-today :not(.ant-calendar-disabled-cell) :not(.ant-calendar-last-month-cell) :not(.ant-calendar-next-month-btn-day) .ant-calendar-date {\n  color: @primary-color;\n  background: rgba(58, 64, 99, 0.15);\n  border-color: @primary-color;\n}\n.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date,\n.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date {\n  color: #ffffff;\n  background: @primary-color;\n  border: 1px solid transparent;\n}\n.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date:hover,\n.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date:hover {\n  background: @primary-color;\n}\n.ant-calendar-range .ant-calendar-input,\n.ant-calendar-range .ant-calendar-time-picker-input {\n  color: #000000;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n  border: 0;\n  box-shadow: none;\n}\n.ant-calendar-range .ant-calendar-input::-moz-placeholder,\n.ant-calendar-range .ant-calendar-time-picker-input::-moz-placeholder {\n  color: #bfbfbf;\n}\n.ant-calendar-range .ant-calendar-input:-ms-input-placeholder,\n.ant-calendar-range .ant-calendar-time-picker-input:-ms-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-calendar-range .ant-calendar-input::-webkit-input-placeholder,\n.ant-calendar-range .ant-calendar-time-picker-input::-webkit-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-calendar-range .ant-calendar-input:hover,\n.ant-calendar-range .ant-calendar-time-picker-input:hover {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n}\n.ant-calendar-range .ant-calendar-input:focus,\n.ant-calendar-range .ant-calendar-time-picker-input:focus {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.ant-calendar-range .ant-calendar-input-disabled,\n.ant-calendar-range .ant-calendar-time-picker-input-disabled {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-calendar-range .ant-calendar-input-disabled:hover,\n.ant-calendar-range .ant-calendar-time-picker-input-disabled:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-calendar-range .ant-calendar-input[disabled],\n.ant-calendar-range .ant-calendar-time-picker-input[disabled] {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-calendar-range .ant-calendar-input[disabled]:hover,\n.ant-calendar-range .ant-calendar-time-picker-input[disabled]:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-calendar-range .ant-calendar-input:focus,\n.ant-calendar-range .ant-calendar-time-picker-input:focus {\n  box-shadow: none;\n}\n.ant-calendar-range .ant-calendar-in-range-cell {\n  border-radius: 0;\n}\n.ant-calendar-range .ant-calendar-in-range-cell::before {\n  background: color(~`colorPalette(\"@{primary-color}\", 1)`);\n  border: 0;\n  border-radius: 0;\n}\n.ant-calendar-range .ant-calendar-header,\n.ant-calendar-range .ant-calendar-month-panel-header,\n.ant-calendar-range .ant-calendar-year-panel-header,\n.ant-calendar-range .ant-calendar-decade-panel-header {\n  border-bottom: 0;\n}\n.ant-calendar-range .ant-calendar-body,\n.ant-calendar-range .ant-calendar-month-panel-body,\n.ant-calendar-range .ant-calendar-year-panel-body,\n.ant-calendar-range .ant-calendar-decade-panel-body {\n  border-top: 1px solid #e8e8e8;\n}\n.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-inner {\n  background: none;\n}\n.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-combobox {\n  background-color: #fff;\n  border-top: 1px solid #e8e8e8;\n}\n.ant-calendar-range.ant-calendar-show-time-picker .ant-calendar-body {\n  border-top-color: transparent;\n}\n.ant-calendar-time-picker {\n  background-color: #fff;\n}\n.ant-calendar-time-picker-inner {\n  background-color: #fff;\n  background-clip: padding-box;\n}\n.ant-calendar-time-picker-select {\n  border-right: 1px solid #e8e8e8;\n}\n.ant-calendar-time-picker-select:first-child {\n  border-left: 0;\n}\n.ant-calendar-time-picker-select:last-child {\n  border-right: 0;\n}\n.ant-calendar-time-picker-select li:hover {\n  background: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-calendar-time-picker-select li:focus {\n  color: @primary-color;\n}\nli.ant-calendar-time-picker-select-option-selected {\n  background: #f5f5f5;\n}\nli.ant-calendar-time-picker-select-option-disabled {\n  color: rgba(0, 0, 0, 0.25);\n}\nli.ant-calendar-time-picker-select-option-disabled:hover {\n  background: transparent;\n}\n.ant-calendar-time .ant-calendar-day-select {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn-disabled {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-calendar-month-panel {\n  background: #fff;\n  border-radius: 2px;\n}\n.ant-calendar-month-panel-header {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-calendar-month-panel-header a:hover {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-calendar-month-panel-header .ant-calendar-month-panel-century-select,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-decade-select,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-year-select,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-month-select {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn::after,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn::after,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn:hover::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn:hover::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn:hover::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn:hover::after,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn:hover::after,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn::after,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn::after,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:hover::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:hover::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:hover::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:hover::after,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:hover::after,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn:hover::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:hover::before,\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar-month-panel-footer {\n  border-top: 1px solid #e8e8e8;\n}\n.ant-calendar-month-panel-table {\n  border-collapse: separate;\n}\n.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month {\n  color: #ffffff;\n  background: @primary-color;\n}\n.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover {\n  color: #ffffff;\n  background: @primary-color;\n}\n.ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month,\n.ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month:hover {\n  color: rgba(0, 0, 0, 0.25);\n  background: #f5f5f5;\n}\n.ant-calendar-month-panel-month {\n  color: #000000;\n  background: transparent;\n  border-radius: 2px;\n}\n.ant-calendar-month-panel-month:hover {\n  background: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-calendar-year-panel {\n  background: #fff;\n  border-radius: 2px;\n}\n.ant-calendar-year-panel-header {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-calendar-year-panel-header a:hover {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-calendar-year-panel-header .ant-calendar-year-panel-century-select,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-decade-select,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-year-select,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-month-select {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn::after,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn::after,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn:hover::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn:hover::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn:hover::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn:hover::after,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn:hover::after,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn::after,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn::after,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:hover::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:hover::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:hover::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:hover::after,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:hover::after,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn:hover::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:hover::before,\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar-year-panel-footer {\n  border-top: 1px solid #e8e8e8;\n}\n.ant-calendar-year-panel-table {\n  border-collapse: separate;\n}\n.ant-calendar-year-panel-year {\n  color: #000000;\n  background: transparent;\n  border-radius: 2px;\n}\n.ant-calendar-year-panel-year:hover {\n  background: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year {\n  color: #ffffff;\n  background: @primary-color;\n}\n.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover {\n  color: #ffffff;\n  background: @primary-color;\n}\n.ant-calendar-year-panel-last-decade-cell .ant-calendar-year-panel-year,\n.ant-calendar-year-panel-next-decade-cell .ant-calendar-year-panel-year {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-calendar-decade-panel {\n  background: #fff;\n  border-radius: 2px;\n}\n.ant-calendar-decade-panel-header {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-calendar-decade-panel-header a:hover {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-century-select,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-decade-select,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-year-select,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-month-select {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn::after,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn::after,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn:hover::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn:hover::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn:hover::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn:hover::after,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn:hover::after,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn::after,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn::after,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:hover::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:hover::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:hover::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:hover::after,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:hover::after,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn:hover::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn::after {\n  border: 0 solid #aaa;\n  border-width: 1.5px 0 0 1.5px;\n  border-radius: 1px;\n}\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:hover::before,\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:hover::after {\n  border-color: #000000;\n}\n.ant-calendar-decade-panel-footer {\n  border-top: 1px solid #e8e8e8;\n}\n.ant-calendar-decade-panel-table {\n  border-collapse: separate;\n}\n.ant-calendar-decade-panel-decade {\n  color: #000000;\n  background: transparent;\n  border-radius: 2px;\n}\n.ant-calendar-decade-panel-decade:hover {\n  background: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade {\n  color: #ffffff;\n  background: @primary-color;\n}\n.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover {\n  color: #ffffff;\n  background: @primary-color;\n}\n.ant-calendar-decade-panel-last-century-cell .ant-calendar-decade-panel-decade,\n.ant-calendar-decade-panel-next-century-cell .ant-calendar-decade-panel-decade {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-calendar-week-number .ant-calendar-body tr:hover {\n  background: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week {\n  background: rgba(58, 64, 99, 0.15);\n}\n.ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day .ant-calendar-date,\n.ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day:hover .ant-calendar-date {\n  color: #000000;\n  background: transparent;\n}\n.ant-descriptions-title {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-descriptions-view {\n  border-radius: 2px;\n}\n.ant-descriptions-row:last-child {\n  border-bottom: none;\n}\n.ant-descriptions-item-label {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-descriptions-item-content {\n  color: #000000;\n}\n.ant-descriptions-bordered .ant-descriptions-view {\n  border: 1px solid #e8e8e8;\n}\n.ant-descriptions-bordered .ant-descriptions-item-label,\n.ant-descriptions-bordered .ant-descriptions-item-content {\n  border-right: 1px solid #e8e8e8;\n}\n.ant-descriptions-bordered .ant-descriptions-item-label:last-child,\n.ant-descriptions-bordered .ant-descriptions-item-content:last-child {\n  border-right: none;\n}\n.ant-descriptions-bordered .ant-descriptions-item-label {\n  background-color: #fafafa;\n}\n.ant-descriptions-bordered .ant-descriptions-row {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-descriptions-bordered .ant-descriptions-row:last-child {\n  border-bottom: none;\n}\n.ant-divider {\n  color: #000000;\n  background: #e8e8e8;\n}\n.ant-divider-horizontal.ant-divider-with-text-center,\n.ant-divider-horizontal.ant-divider-with-text-left,\n.ant-divider-horizontal.ant-divider-with-text-right {\n  color: rgba(0, 0, 0, 0.85);\n  background: transparent;\n}\n.ant-divider-horizontal.ant-divider-with-text-center::before,\n.ant-divider-horizontal.ant-divider-with-text-left::before,\n.ant-divider-horizontal.ant-divider-with-text-right::before,\n.ant-divider-horizontal.ant-divider-with-text-center::after,\n.ant-divider-horizontal.ant-divider-with-text-left::after,\n.ant-divider-horizontal.ant-divider-with-text-right::after {\n  border-top: 1px solid #e8e8e8;\n}\n.ant-divider-dashed {\n  background: none;\n  border-color: #e8e8e8;\n  border-style: dashed;\n  border-width: 1px 0 0;\n}\n.ant-divider-horizontal.ant-divider-with-text-center.ant-divider-dashed,\n.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed,\n.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed {\n  border-top: 0;\n}\n.ant-divider-horizontal.ant-divider-with-text-center.ant-divider-dashed::before,\n.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed::before,\n.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed::before,\n.ant-divider-horizontal.ant-divider-with-text-center.ant-divider-dashed::after,\n.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed::after,\n.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed::after {\n  border-style: dashed none none;\n}\n.ant-divider-vertical.ant-divider-dashed {\n  border-width: 0 0 0 1px;\n}\n.ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper {\n  box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15);\n}\n.ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper {\n  box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15);\n}\n.ant-drawer-top.ant-drawer-open .ant-drawer-content-wrapper {\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n.ant-drawer-bottom.ant-drawer-open .ant-drawer-content-wrapper {\n  box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.15);\n}\n.ant-drawer-title {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-drawer-content {\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 0;\n}\n.ant-drawer-close {\n  color: rgba(0, 0, 0, 0.45);\n  background: transparent;\n  border: 0;\n}\n.ant-drawer-close:focus,\n.ant-drawer-close:hover {\n  color: rgba(0, 0, 0, 0.75);\n}\n.ant-drawer-header {\n  color: #000000;\n  background: #fff;\n  border-bottom: 1px solid #e8e8e8;\n  border-radius: 2px 2px 0 0;\n}\n.ant-drawer-header-no-title {\n  color: #000000;\n  background: #fff;\n}\n.ant-drawer-mask {\n  background-color: rgba(0, 0, 0, 0.45);\n}\n.ant-drawer-open-content {\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n}\n.ant-dropdown {\n  color: #000000;\n}\n.ant-dropdown-menu {\n  background-color: #fff;\n  background-clip: padding-box;\n  border-radius: 2px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n.ant-dropdown-menu-item-group-title {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-dropdown-menu-item,\n.ant-dropdown-menu-submenu-title {\n  color: #000000;\n}\n.ant-dropdown-menu-item > a,\n.ant-dropdown-menu-submenu-title > a {\n  color: #000000;\n}\n.ant-dropdown-menu-item-selected,\n.ant-dropdown-menu-submenu-title-selected,\n.ant-dropdown-menu-item-selected > a,\n.ant-dropdown-menu-submenu-title-selected > a {\n  color: @primary-color;\n  background-color: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-dropdown-menu-item:hover,\n.ant-dropdown-menu-submenu-title:hover {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-dropdown-menu-item-disabled,\n.ant-dropdown-menu-submenu-title-disabled {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-dropdown-menu-item-disabled:hover,\n.ant-dropdown-menu-submenu-title-disabled:hover {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #fff;\n}\n.ant-dropdown-menu-item-divider,\n.ant-dropdown-menu-submenu-title-divider {\n  background-color: #e8e8e8;\n}\n.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow-icon,\n.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title,\n.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #fff;\n}\n.ant-dropdown-menu-dark,\n.ant-dropdown-menu-dark .ant-dropdown-menu {\n  background: @primary-color;\n}\n.ant-dropdown-menu-dark .ant-dropdown-menu-item,\n.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title,\n.ant-dropdown-menu-dark .ant-dropdown-menu-item > a {\n  color: rgba(255, 255, 255, 0.65);\n}\n.ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow::after,\n.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow::after,\n.ant-dropdown-menu-dark .ant-dropdown-menu-item > a .ant-dropdown-menu-submenu-arrow::after {\n  color: rgba(255, 255, 255, 0.65);\n}\n.ant-dropdown-menu-dark .ant-dropdown-menu-item:hover,\n.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title:hover,\n.ant-dropdown-menu-dark .ant-dropdown-menu-item > a:hover {\n  color: #ffffff;\n  background: transparent;\n}\n.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected,\n.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover,\n.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected > a {\n  color: #ffffff;\n  background: @primary-color;\n}\n.ant-empty-normal {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-empty-small {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-form {\n  color: #000000;\n}\n.ant-form legend {\n  color: rgba(0, 0, 0, 0.45);\n  border: 0;\n  border-bottom: 1px solid #d9d9d9;\n}\n.ant-form output {\n  color: #000000;\n}\n.ant-form-item-required::before {\n  color: #f5222d;\n}\n.ant-form-item-label > label {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-form-item {\n  color: #000000;\n}\n.ant-form-explain,\n.ant-form-extra {\n  color: rgba(0, 0, 0, 0.45);\n}\nform .ant-upload {\n  background: transparent;\n}\n.has-success.has-feedback .ant-form-item-children-icon {\n  color: #52c41a;\n}\n.has-warning .ant-form-explain,\n.has-warning .ant-form-split {\n  color: #faad14;\n}\n.has-warning .ant-input,\n.has-warning .ant-input:hover {\n  background-color: #fff;\n  border-color: #faad14;\n}\n.has-warning .ant-input:focus {\n  border-color: #ffc53d;\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);\n}\n.has-warning .ant-input:not([disabled]):hover {\n  border-color: #faad14;\n}\n.has-warning .ant-calendar-picker-open .ant-calendar-picker-input {\n  border-color: #ffc53d;\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);\n}\n.has-warning .ant-input-affix-wrapper .ant-input,\n.has-warning .ant-input-affix-wrapper .ant-input:hover {\n  background-color: #fff;\n  border-color: #faad14;\n}\n.has-warning .ant-input-affix-wrapper .ant-input:focus {\n  border-color: #ffc53d;\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);\n}\n.has-warning .ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {\n  border-color: #faad14;\n}\n.has-warning .ant-input-prefix {\n  color: #faad14;\n}\n.has-warning .ant-input-group-addon {\n  color: #faad14;\n  background-color: #fff;\n  border-color: #faad14;\n}\n.has-warning .has-feedback {\n  color: #faad14;\n}\n.has-warning.has-feedback .ant-form-item-children-icon {\n  color: #faad14;\n}\n.has-warning .ant-select-selection {\n  border-color: #faad14;\n}\n.has-warning .ant-select-selection:hover {\n  border-color: #faad14;\n}\n.has-warning .ant-select-open .ant-select-selection,\n.has-warning .ant-select-focused .ant-select-selection {\n  border-color: #ffc53d;\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);\n}\n.has-warning .ant-calendar-picker-icon::after,\n.has-warning .ant-time-picker-icon::after,\n.has-warning .ant-picker-icon::after,\n.has-warning .ant-select-arrow,\n.has-warning .ant-cascader-picker-arrow {\n  color: #faad14;\n}\n.has-warning .ant-input-number,\n.has-warning .ant-time-picker-input {\n  border-color: #faad14;\n}\n.has-warning .ant-input-number-focused,\n.has-warning .ant-time-picker-input-focused,\n.has-warning .ant-input-number:focus,\n.has-warning .ant-time-picker-input:focus {\n  border-color: #ffc53d;\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);\n}\n.has-warning .ant-input-number:not([disabled]):hover,\n.has-warning .ant-time-picker-input:not([disabled]):hover {\n  border-color: #faad14;\n}\n.has-warning .ant-cascader-picker:focus .ant-cascader-input {\n  border-color: #ffc53d;\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);\n}\n.has-error .ant-form-explain,\n.has-error .ant-form-split {\n  color: #f5222d;\n}\n.has-error .ant-input,\n.has-error .ant-input:hover {\n  background-color: #fff;\n  border-color: #f5222d;\n}\n.has-error .ant-input:focus {\n  border-color: #ff4d4f;\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);\n}\n.has-error .ant-input:not([disabled]):hover {\n  border-color: #f5222d;\n}\n.has-error .ant-calendar-picker-open .ant-calendar-picker-input {\n  border-color: #ff4d4f;\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);\n}\n.has-error .ant-input-affix-wrapper .ant-input,\n.has-error .ant-input-affix-wrapper .ant-input:hover {\n  background-color: #fff;\n  border-color: #f5222d;\n}\n.has-error .ant-input-affix-wrapper .ant-input:focus {\n  border-color: #ff4d4f;\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);\n}\n.has-error .ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {\n  border-color: #f5222d;\n}\n.has-error .ant-input-prefix {\n  color: #f5222d;\n}\n.has-error .ant-input-group-addon {\n  color: #f5222d;\n  background-color: #fff;\n  border-color: #f5222d;\n}\n.has-error .has-feedback {\n  color: #f5222d;\n}\n.has-error.has-feedback .ant-form-item-children-icon {\n  color: #f5222d;\n}\n.has-error .ant-select-selection {\n  border-color: #f5222d;\n}\n.has-error .ant-select-selection:hover {\n  border-color: #f5222d;\n}\n.has-error .ant-select-open .ant-select-selection,\n.has-error .ant-select-focused .ant-select-selection {\n  border-color: #ff4d4f;\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);\n}\n.has-error .ant-select.ant-select-auto-complete .ant-input:focus {\n  border-color: #f5222d;\n}\n.has-error .ant-input-group-addon .ant-select-selection {\n  border-color: transparent;\n  box-shadow: none;\n}\n.has-error .ant-calendar-picker-icon::after,\n.has-error .ant-time-picker-icon::after,\n.has-error .ant-picker-icon::after,\n.has-error .ant-select-arrow,\n.has-error .ant-cascader-picker-arrow {\n  color: #f5222d;\n}\n.has-error .ant-input-number,\n.has-error .ant-time-picker-input {\n  border-color: #f5222d;\n}\n.has-error .ant-input-number-focused,\n.has-error .ant-time-picker-input-focused,\n.has-error .ant-input-number:focus,\n.has-error .ant-time-picker-input:focus {\n  border-color: #ff4d4f;\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);\n}\n.has-error .ant-input-number:not([disabled]):hover,\n.has-error .ant-time-picker-input:not([disabled]):hover {\n  border-color: #f5222d;\n}\n.has-error .ant-mention-wrapper .ant-mention-editor,\n.has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):hover {\n  border-color: #f5222d;\n}\n.has-error .ant-mention-wrapper.ant-mention-active:not([disabled]) .ant-mention-editor,\n.has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):focus {\n  border-color: #ff4d4f;\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);\n}\n.has-error .ant-cascader-picker:focus .ant-cascader-input {\n  border-color: #ff4d4f;\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);\n}\n.has-error .ant-transfer-list {\n  border-color: #f5222d;\n}\n.has-error .ant-transfer-list-search:not([disabled]) {\n  border-color: #d9d9d9;\n}\n.has-error .ant-transfer-list-search:not([disabled]):hover {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n}\n.has-error .ant-transfer-list-search:not([disabled]):focus {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.is-validating.has-feedback .ant-form-item-children-icon {\n  color: @primary-color;\n}\n.ant-input-number {\n  color: #000000;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n}\n.ant-input-number::-moz-placeholder {\n  color: #bfbfbf;\n}\n.ant-input-number:-ms-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-input-number::-webkit-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-input-number:hover {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n}\n.ant-input-number:focus {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.ant-input-number-disabled {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-input-number-disabled:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-input-number[disabled] {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-input-number[disabled]:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-input-number-handler {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-input-number-handler:active {\n  background: #f4f4f4;\n}\n.ant-input-number-handler:hover .ant-input-number-handler-up-inner,\n.ant-input-number-handler:hover .ant-input-number-handler-down-inner {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-input-number-handler-up-inner,\n.ant-input-number-handler-down-inner {\n  color: inherit;\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-input-number:hover {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n}\n.ant-input-number-focused {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.ant-input-number-disabled {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-input-number-disabled:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-input-number-input {\n  background-color: transparent;\n  border: 0;\n  border-radius: 2px;\n}\n.ant-input-number-input::-moz-placeholder {\n  color: #bfbfbf;\n}\n.ant-input-number-input:-ms-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-input-number-input::-webkit-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-input-number-handler-wrap {\n  background: #fff;\n  border-left: 1px solid #d9d9d9;\n  border-radius: 0 2px 2px 0;\n}\n.ant-input-number-handler-up {\n  border-top-right-radius: 2px;\n}\n.ant-input-number-handler-down {\n  border-top: 1px solid #d9d9d9;\n  border-bottom-right-radius: 2px;\n}\n.ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner,\n.ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-input {\n  color: #000000;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n}\n.ant-input::-moz-placeholder {\n  color: #bfbfbf;\n}\n.ant-input:-ms-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-input::-webkit-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-input:hover {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n}\n.ant-input:focus {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.ant-input-disabled {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-input-disabled:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-input[disabled] {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-input[disabled]:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-input-group {\n  color: #000000;\n  border-collapse: separate;\n  border-spacing: 0;\n}\n.ant-input-group-addon:not(:first-child):not(:last-child),\n.ant-input-group-wrap:not(:first-child):not(:last-child),\n.ant-input-group > .ant-input:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.ant-input-group .ant-input:focus {\n  border-right-width: 1px;\n}\n.ant-input-group .ant-input:hover {\n  border-right-width: 1px;\n}\n.ant-input-group-addon {\n  color: #000000;\n  background-color: @primary-color;\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n}\n.ant-input-group-addon .ant-select .ant-select-selection {\n  background-color: inherit;\n  border: 1px solid transparent;\n  box-shadow: none;\n}\n.ant-input-group-addon .ant-select-open .ant-select-selection,\n.ant-input-group-addon .ant-select-focused .ant-select-selection {\n  color: @primary-color;\n}\n.ant-input-group > .ant-input:first-child,\n.ant-input-group-addon:first-child {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.ant-input-group > .ant-input:first-child .ant-select .ant-select-selection,\n.ant-input-group-addon:first-child .ant-select .ant-select-selection {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.ant-input-group > .ant-input-affix-wrapper:not(:first-child) .ant-input {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.ant-input-group > .ant-input-affix-wrapper:not(:last-child) .ant-input {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.ant-input-group-addon:first-child {\n  border-right: 0;\n}\n.ant-input-group-addon:last-child {\n  border-left: 0;\n}\n.ant-input-group > .ant-input:last-child,\n.ant-input-group-addon:last-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.ant-input-group > .ant-input:last-child .ant-select .ant-select-selection,\n.ant-input-group-addon:last-child .ant-select .ant-select-selection {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child),\n.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child),\n.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child) {\n  border-right-width: 1px;\n}\n.ant-input-group.ant-input-group-compact > * {\n  border-radius: 0;\n}\n.ant-input-group.ant-input-group-compact > *:not(:last-child) {\n  border-right-width: 1px;\n}\n.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection,\n.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input,\n.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input,\n.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input,\n.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor,\n.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input {\n  border-right-width: 1px;\n  border-radius: 0;\n}\n.ant-input-group.ant-input-group-compact > *:first-child,\n.ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selection,\n.ant-input-group.ant-input-group-compact > .ant-calendar-picker:first-child .ant-input,\n.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input,\n.ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input,\n.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:first-child .ant-mention-editor,\n.ant-input-group.ant-input-group-compact > .ant-time-picker:first-child .ant-time-picker-input {\n  border-top-left-radius: 2px;\n  border-bottom-left-radius: 2px;\n}\n.ant-input-group.ant-input-group-compact > *:last-child,\n.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection,\n.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input,\n.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input,\n.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input,\n.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input,\n.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor,\n.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input {\n  border-right-width: 1px;\n  border-top-right-radius: 2px;\n  border-bottom-right-radius: 2px;\n}\n.ant-input-affix-wrapper {\n  color: #000000;\n}\n.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n}\n.ant-input-affix-wrapper .ant-input-prefix,\n.ant-input-affix-wrapper .ant-input-suffix {\n  color: #000000;\n}\n.ant-input-affix-wrapper .ant-input-disabled ~ .ant-input-suffix .anticon {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-input-password-icon {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-input-password-icon:hover {\n  color: #333;\n}\n.ant-input-clear-icon {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-input-clear-icon:hover {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-input-clear-icon:active {\n  color: #000000;\n}\n.ant-input-search-icon {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-input-search-icon:hover {\n  color: rgba(0, 0, 0, 0.8);\n}\n.ant-input-search-enter-button input {\n  border-right: 0;\n}\n.ant-input-search-enter-button + .ant-input-group-addon,\n.ant-input-search-enter-button input + .ant-input-group-addon {\n  border: 0;\n}\n.ant-input-search-enter-button + .ant-input-group-addon .ant-input-search-button,\n.ant-input-search-enter-button input + .ant-input-group-addon .ant-input-search-button {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.ant-layout {\n  background: #f0f2f5;\n}\n.ant-layout-header {\n  background: @primary-color;\n}\n.ant-layout-footer {\n  color: #000000;\n  background: #f0f2f5;\n}\n.ant-layout-sider {\n  background: @primary-color;\n}\n.ant-layout-sider-trigger {\n  color: #fff;\n  background: #002140;\n}\n.ant-layout-sider-zero-width-trigger {\n  color: #fff;\n  background: @primary-color;\n  border-radius: 0 2px 2px 0;\n}\n.ant-layout-sider-zero-width-trigger:hover {\n  background: #464a64;\n}\n.ant-layout-sider-zero-width-trigger-right {\n  border-radius: 2px 0 0 2px;\n}\n.ant-layout-sider-light {\n  background: #f9f9f9;\n}\n.ant-layout-sider-light .ant-layout-sider-trigger {\n  color: #000000;\n  background: #fff;\n}\n.ant-layout-sider-light .ant-layout-sider-zero-width-trigger {\n  color: #000000;\n  background: #fff;\n}\n.ant-list {\n  color: #000000;\n}\n.ant-list-empty-text {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-list-item-content {\n  color: #000000;\n}\n.ant-list-item-meta-title {\n  color: #000000;\n}\n.ant-list-item-meta-title > a {\n  color: #000000;\n}\n.ant-list-item-meta-title > a:hover {\n  color: @primary-color;\n}\n.ant-list-item-meta-description {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-list-item-action > li {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-list-item-action-split {\n  background-color: #e8e8e8;\n}\n.ant-list-header {\n  background: transparent;\n}\n.ant-list-footer {\n  background: transparent;\n}\n.ant-list-empty {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-list-split .ant-list-item {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-list-split .ant-list-item:last-child {\n  border-bottom: none;\n}\n.ant-list-split .ant-list-header {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-list-something-after-last-item .ant-spin-container > .ant-list-items > .ant-list-item:last-child {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-list-vertical .ant-list-item-meta-title {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-list-grid .ant-col > .ant-list-item {\n  border-bottom: none;\n}\n.ant-list-bordered {\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n}\n.ant-list-bordered .ant-list-item {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-mentions-wrapper {\n  color: #000000;\n}\n.ant-mentions-wrapper .ant-mentions-editor {\n  color: #000000;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n}\n.ant-mentions-wrapper .ant-mentions-editor::-moz-placeholder {\n  color: #bfbfbf;\n}\n.ant-mentions-wrapper .ant-mentions-editor:-ms-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-mentions-wrapper .ant-mentions-editor::-webkit-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-mentions-wrapper .ant-mentions-editor:hover {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n}\n.ant-mentions-wrapper .ant-mentions-editor:focus {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.ant-mentions-wrapper .ant-mentions-editor-disabled {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-mentions-wrapper .ant-mentions-editor-disabled:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-mentions-wrapper .ant-mentions-editor[disabled] {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-mentions-wrapper .ant-mentions-editor[disabled]:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-mentions-wrapper.ant-mentions-active:not(.disabled) .ant-mentions-editor {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.ant-mentions-wrapper.disabled .ant-mentions-editor {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-mentions-wrapper.disabled .ant-mentions-editor:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-mentions-wrapper .public-DraftEditorPlaceholder-root .public-DraftEditorPlaceholder-inner {\n  color: #bfbfbf;\n}\n.ant-mentions-dropdown {\n  color: #000000;\n  background-color: #fff;\n  border-radius: 2px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n.ant-mentions-dropdown-notfound.ant-mentions-dropdown-item {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-mentions-dropdown-notfound.ant-mentions-dropdown-item .anticon-loading {\n  color: @primary-color;\n}\n.ant-mentions-dropdown-item {\n  color: #000000;\n}\n.ant-mentions-dropdown-item:hover {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-mentions-dropdown-item.focus,\n.ant-mentions-dropdown-item-active {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-mentions-dropdown-item-disabled {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-mentions-dropdown-item-disabled:hover {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #fff;\n}\n.ant-mentions-dropdown-item-selected,\n.ant-mentions-dropdown-item-selected:hover {\n  color: #000000;\n  background-color: #f5f5f5;\n}\n.ant-mentions-dropdown-item-divider {\n  background-color: #e8e8e8;\n}\n.ant-mentions {\n  color: #000000;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n}\n.ant-mentions::-moz-placeholder {\n  color: #bfbfbf;\n}\n.ant-mentions:-ms-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-mentions::-webkit-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-mentions:hover {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n}\n.ant-mentions:focus {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.ant-mentions-disabled {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-mentions-disabled:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-mentions[disabled] {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-mentions[disabled]:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-mentions-disabled > textarea {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-mentions-disabled > textarea:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-mentions-focused {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.ant-mentions > textarea {\n  border: none;\n}\n.ant-mentions > textarea::-moz-placeholder {\n  color: #bfbfbf;\n}\n.ant-mentions > textarea:-ms-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-mentions > textarea::-webkit-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-mentions-measure {\n  color: transparent;\n}\n.ant-mentions-dropdown {\n  color: #000000;\n  background-color: #fff;\n  border-radius: 2px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n.ant-mentions-dropdown-menu-item {\n  color: #000000;\n}\n.ant-mentions-dropdown-menu-item:hover {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-mentions-dropdown-menu-item:first-child {\n  border-radius: 2px 2px 0 0;\n}\n.ant-mentions-dropdown-menu-item:last-child {\n  border-radius: 0 0 2px 2px;\n}\n.ant-mentions-dropdown-menu-item-disabled {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-mentions-dropdown-menu-item-disabled:hover {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #fff;\n}\n.ant-mentions-dropdown-menu-item-selected {\n  color: #000000;\n  background-color: #fafafa;\n}\n.ant-mentions-dropdown-menu-item-active {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-menu {\n  color: #000000;\n  background: #fff;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n.ant-menu-item-group-title {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-menu-submenu-selected {\n  color: @primary-color;\n}\n.ant-menu-item:active,\n.ant-menu-submenu-title:active {\n  background: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-menu-item > a {\n  color: #000000;\n}\n.ant-menu-item > a:hover {\n  color: @primary-color;\n}\n.ant-menu-item > a::before {\n  background-color: transparent;\n}\n.ant-menu-item-divider {\n  background-color: #e8e8e8;\n}\n.ant-menu-item:hover,\n.ant-menu-item-active,\n.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,\n.ant-menu-submenu-active,\n.ant-menu-submenu-title:hover {\n  color: @primary-color;\n}\n.ant-menu-horizontal > .ant-menu-item:hover,\n.ant-menu-horizontal > .ant-menu-item-active,\n.ant-menu-horizontal > .ant-menu-submenu .ant-menu-submenu-title:hover {\n  background-color: transparent;\n}\n.ant-menu-item-selected {\n  color: @primary-color;\n}\n.ant-menu-item-selected > a,\n.ant-menu-item-selected > a:hover {\n  color: @primary-color;\n}\n.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-menu-inline,\n.ant-menu-vertical,\n.ant-menu-vertical-left {\n  border-right: 1px solid #e8e8e8;\n}\n.ant-menu-vertical-right {\n  border-left: 1px solid #e8e8e8;\n}\n.ant-menu-vertical.ant-menu-sub,\n.ant-menu-vertical-left.ant-menu-sub,\n.ant-menu-vertical-right.ant-menu-sub {\n  border-right: 0;\n}\n.ant-menu-vertical.ant-menu-sub .ant-menu-item,\n.ant-menu-vertical-left.ant-menu-sub .ant-menu-item,\n.ant-menu-vertical-right.ant-menu-sub .ant-menu-item {\n  border-right: 0;\n}\n.ant-menu-vertical.ant-menu-sub .ant-menu-item::after,\n.ant-menu-vertical-left.ant-menu-sub .ant-menu-item::after,\n.ant-menu-vertical-right.ant-menu-sub .ant-menu-item::after {\n  border-right: 0;\n}\n.ant-menu > .ant-menu-item-divider {\n  background-color: #e8e8e8;\n}\n.ant-menu-submenu-popup {\n  background: #fff;\n  border-radius: 2px;\n}\n.ant-menu-submenu > .ant-menu {\n  background-color: #fff;\n  border-radius: 2px;\n}\n.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\n.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\n.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\n.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\n.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::after,\n.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::after,\n.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::after,\n.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::after {\n  background: #fff;\n  background: #000000 ;\n  background-image: linear-gradient(to right, #000000, #000000);\n  background-image: none ;\n  border-radius: 2px;\n}\n.ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after,\n.ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after,\n.ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after,\n.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after,\n.ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before,\n.ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before,\n.ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before,\n.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before {\n  background: linear-gradient(to right, #313653, #313653);\n}\n.ant-menu-vertical .ant-menu-submenu-selected,\n.ant-menu-vertical-left .ant-menu-submenu-selected,\n.ant-menu-vertical-right .ant-menu-submenu-selected {\n  color: @primary-color;\n}\n.ant-menu-vertical .ant-menu-submenu-selected > a,\n.ant-menu-vertical-left .ant-menu-submenu-selected > a,\n.ant-menu-vertical-right .ant-menu-submenu-selected > a {\n  color: @primary-color;\n}\n.ant-menu-horizontal {\n  border: 0;\n  border-bottom: 1px solid #e8e8e8;\n  box-shadow: none;\n}\n.ant-menu-horizontal > .ant-menu-item,\n.ant-menu-horizontal > .ant-menu-submenu {\n  border-bottom: 2px solid transparent;\n}\n.ant-menu-horizontal > .ant-menu-item:hover,\n.ant-menu-horizontal > .ant-menu-submenu:hover,\n.ant-menu-horizontal > .ant-menu-item-active,\n.ant-menu-horizontal > .ant-menu-submenu-active,\n.ant-menu-horizontal > .ant-menu-item-open,\n.ant-menu-horizontal > .ant-menu-submenu-open,\n.ant-menu-horizontal > .ant-menu-item-selected,\n.ant-menu-horizontal > .ant-menu-submenu-selected {\n  color: @primary-color;\n  border-bottom: 2px solid @primary-color;\n}\n.ant-menu-horizontal > .ant-menu-item > a {\n  color: #000000;\n}\n.ant-menu-horizontal > .ant-menu-item > a:hover {\n  color: @primary-color;\n}\n.ant-menu-horizontal > .ant-menu-item-selected > a {\n  color: @primary-color;\n}\n.ant-menu-vertical .ant-menu-item::after,\n.ant-menu-vertical-left .ant-menu-item::after,\n.ant-menu-vertical-right .ant-menu-item::after,\n.ant-menu-inline .ant-menu-item::after {\n  border-right: 3px solid @primary-color;\n}\n.ant-menu-inline-collapsed-tooltip a {\n  color: rgba(255, 255, 255, 0.85);\n}\n.ant-menu-root.ant-menu-vertical,\n.ant-menu-root.ant-menu-vertical-left,\n.ant-menu-root.ant-menu-vertical-right,\n.ant-menu-root.ant-menu-inline {\n  box-shadow: none;\n}\n.ant-menu-sub.ant-menu-inline {\n  border: 0;\n  border-radius: 0;\n  box-shadow: none;\n}\n.ant-menu-item-disabled,\n.ant-menu-submenu-disabled {\n  color: rgba(0, 0, 0, 0.25) !important;\n  background: none;\n  border-color: transparent !important;\n}\n.ant-menu-item-disabled > a,\n.ant-menu-submenu-disabled > a {\n  color: rgba(0, 0, 0, 0.25) !important;\n}\n.ant-menu-item-disabled > .ant-menu-submenu-title,\n.ant-menu-submenu-disabled > .ant-menu-submenu-title {\n  color: rgba(0, 0, 0, 0.25) !important;\n}\n.ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\n.ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\n.ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\n.ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after {\n  background: rgba(0, 0, 0, 0.25) !important;\n}\n.ant-menu-dark,\n.ant-menu-dark .ant-menu-sub {\n  color: rgba(255, 255, 255, 0.65);\n  background: @primary-color;\n}\n.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow::after,\n.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::after,\n.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\n.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::before {\n  background: #fff;\n}\n.ant-menu-dark.ant-menu-submenu-popup {\n  background: transparent;\n}\n.ant-menu-dark .ant-menu-inline.ant-menu-sub {\n  background: #000c17;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.45) inset;\n}\n.ant-menu-dark.ant-menu-horizontal {\n  border-bottom: 0;\n}\n.ant-menu-dark.ant-menu-horizontal > .ant-menu-item,\n.ant-menu-dark.ant-menu-horizontal > .ant-menu-submenu {\n  border-color: @primary-color;\n  border-bottom: 0;\n}\n.ant-menu-dark .ant-menu-item,\n.ant-menu-dark .ant-menu-item-group-title,\n.ant-menu-dark .ant-menu-item > a {\n  color: rgba(255, 255, 255, 0.65);\n}\n.ant-menu-dark.ant-menu-inline,\n.ant-menu-dark.ant-menu-vertical,\n.ant-menu-dark.ant-menu-vertical-left,\n.ant-menu-dark.ant-menu-vertical-right {\n  border-right: 0;\n}\n.ant-menu-dark.ant-menu-inline .ant-menu-item,\n.ant-menu-dark.ant-menu-vertical .ant-menu-item,\n.ant-menu-dark.ant-menu-vertical-left .ant-menu-item,\n.ant-menu-dark.ant-menu-vertical-right .ant-menu-item {\n  border-right: 0;\n}\n.ant-menu-dark.ant-menu-inline .ant-menu-item::after,\n.ant-menu-dark.ant-menu-vertical .ant-menu-item::after,\n.ant-menu-dark.ant-menu-vertical-left .ant-menu-item::after,\n.ant-menu-dark.ant-menu-vertical-right .ant-menu-item::after {\n  border-right: 0;\n}\n.ant-menu-dark .ant-menu-item:hover,\n.ant-menu-dark .ant-menu-item-active,\n.ant-menu-dark .ant-menu-submenu-active,\n.ant-menu-dark .ant-menu-submenu-open,\n.ant-menu-dark .ant-menu-submenu-selected,\n.ant-menu-dark .ant-menu-submenu-title:hover {\n  color: #fff;\n  background-color: transparent;\n}\n.ant-menu-dark .ant-menu-item:hover > a,\n.ant-menu-dark .ant-menu-item-active > a,\n.ant-menu-dark .ant-menu-submenu-active > a,\n.ant-menu-dark .ant-menu-submenu-open > a,\n.ant-menu-dark .ant-menu-submenu-selected > a,\n.ant-menu-dark .ant-menu-submenu-title:hover > a {\n  color: #fff;\n}\n.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\n.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\n.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\n.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\n.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\n.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\n.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,\n.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,\n.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,\n.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,\n.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,\n.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,\n.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\n.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\n.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\n.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\n.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\n.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\n.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before,\n.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before,\n.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before,\n.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before,\n.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before,\n.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before {\n  background: #fff;\n}\n.ant-menu-dark .ant-menu-item:hover {\n  background-color: transparent;\n}\n.ant-menu-dark .ant-menu-item-selected {\n  color: #fff;\n  border-right: 0;\n}\n.ant-menu-dark .ant-menu-item-selected::after {\n  border-right: 0;\n}\n.ant-menu-dark .ant-menu-item-selected > a,\n.ant-menu-dark .ant-menu-item-selected > a:hover {\n  color: #fff;\n}\n.ant-menu-dark .ant-menu-item-selected .anticon {\n  color: #ffffff;\n}\n.ant-menu-dark .ant-menu-item-selected .anticon + span {\n  color: #ffffff;\n}\n.ant-menu.ant-menu-dark .ant-menu-item-selected,\n.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected {\n  background-color: @primary-color;\n}\n.ant-menu-dark .ant-menu-item-disabled,\n.ant-menu-dark .ant-menu-submenu-disabled,\n.ant-menu-dark .ant-menu-item-disabled > a,\n.ant-menu-dark .ant-menu-submenu-disabled > a {\n  color: rgba(255, 255, 255, 0.35) !important;\n}\n.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title,\n.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title {\n  color: rgba(255, 255, 255, 0.35) !important;\n}\n.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\n.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\n.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\n.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after {\n  background: rgba(255, 255, 255, 0.35) !important;\n}\n.ant-message {\n  color: #000000;\n}\n.ant-message-notice-content {\n  background: #fff;\n  border-radius: 2px;\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n}\n.ant-message-success .anticon {\n  color: #52c41a;\n}\n.ant-message-error .anticon {\n  color: #f5222d;\n}\n.ant-message-warning .anticon {\n  color: #faad14;\n}\n.ant-message-info .anticon,\n.ant-message-loading .anticon {\n  color: #1890ff;\n}\n.ant-modal {\n  color: #000000;\n}\n.ant-modal-title {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-modal-content {\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 0;\n  border-radius: 2px;\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n}\n.ant-modal-close {\n  color: rgba(0, 0, 0, 0.45);\n  background: transparent;\n  border: 0;\n}\n.ant-modal-close:focus,\n.ant-modal-close:hover {\n  color: rgba(0, 0, 0, 0.75);\n}\n.ant-modal-header {\n  color: #000000;\n  background: #fff;\n  border-bottom: 1px solid #e8e8e8;\n  border-radius: 2px 2px 0 0;\n}\n.ant-modal-footer {\n  background: transparent;\n  border-top: 1px solid #e8e8e8;\n  border-radius: 0 0 2px 2px;\n}\n.ant-modal-mask {\n  background-color: rgba(0, 0, 0, 0.45);\n}\n.ant-modal-confirm-body .ant-modal-confirm-title {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-modal-confirm-body .ant-modal-confirm-content {\n  color: #000000;\n}\n.ant-modal-confirm-error .ant-modal-confirm-body > .anticon {\n  color: #f5222d;\n}\n.ant-modal-confirm-warning .ant-modal-confirm-body > .anticon,\n.ant-modal-confirm-confirm .ant-modal-confirm-body > .anticon {\n  color: #faad14;\n}\n.ant-modal-confirm-info .ant-modal-confirm-body > .anticon {\n  color: #1890ff;\n}\n.ant-modal-confirm-success .ant-modal-confirm-body > .anticon {\n  color: #52c41a;\n}\n.ant-notification {\n  color: #000000;\n}\n.ant-notification-notice {\n  background: #fff;\n  border-radius: 2px;\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n}\n.ant-notification-notice-message {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-notification-notice-message-single-line-auto-margin {\n  background-color: transparent;\n}\n.anticon.ant-notification-notice-icon-success {\n  color: #52c41a;\n}\n.anticon.ant-notification-notice-icon-info {\n  color: #1890ff;\n}\n.anticon.ant-notification-notice-icon-warning {\n  color: #faad14;\n}\n.anticon.ant-notification-notice-icon-error {\n  color: #f5222d;\n}\n.ant-notification-notice-close {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-notification-notice-close:hover {\n  color: rgba(0, 0, 0, 0.67);\n}\n.ant-page-header {\n  color: #000000;\n}\n.ant-page-header-back-button {\n  color: @primary-color;\n  color: #000;\n}\n.ant-page-header-back-button:focus,\n.ant-page-header-back-button:hover {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-page-header-back-button:active {\n  color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-page-header-heading-title {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-page-header-heading-sub-title {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-page-header-footer .ant-tabs-bar {\n  border-bottom: 0;\n}\n.ant-pagination {\n  color: #000000;\n}\n.ant-pagination-item {\n  background-color: #fff;\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n}\n.ant-pagination-item a {\n  color: #000000;\n}\n.ant-pagination-item:focus,\n.ant-pagination-item:hover {\n  border-color: @primary-color;\n}\n.ant-pagination-item:focus a,\n.ant-pagination-item:hover a {\n  color: @primary-color;\n}\n.ant-pagination-item-active {\n  background: #fff;\n  border-color: @primary-color;\n}\n.ant-pagination-item-active a {\n  color: @primary-color;\n}\n.ant-pagination-item-active:focus,\n.ant-pagination-item-active:hover {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-pagination-item-active:focus a,\n.ant-pagination-item-active:hover a {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon,\n.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon {\n  color: @primary-color;\n}\n.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-ellipsis,\n.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-ellipsis {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-pagination-prev,\n.ant-pagination-next,\n.ant-pagination-jump-prev,\n.ant-pagination-jump-next {\n  color: #000000;\n  border-radius: 2px;\n}\n.ant-pagination-prev a,\n.ant-pagination-next a {\n  color: #000000;\n}\n.ant-pagination-prev:hover a,\n.ant-pagination-next:hover a {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-pagination-prev .ant-pagination-item-link,\n.ant-pagination-next .ant-pagination-item-link {\n  background-color: #fff;\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n}\n.ant-pagination-prev:focus .ant-pagination-item-link,\n.ant-pagination-next:focus .ant-pagination-item-link,\n.ant-pagination-prev:hover .ant-pagination-item-link,\n.ant-pagination-next:hover .ant-pagination-item-link {\n  color: @primary-color;\n  border-color: @primary-color;\n}\n.ant-pagination-disabled a,\n.ant-pagination-disabled:hover a,\n.ant-pagination-disabled:focus a,\n.ant-pagination-disabled .ant-pagination-item-link,\n.ant-pagination-disabled:hover .ant-pagination-item-link,\n.ant-pagination-disabled:focus .ant-pagination-item-link {\n  color: rgba(0, 0, 0, 0.25);\n  border-color: #d9d9d9;\n}\n.ant-pagination-options-quick-jumper input {\n  color: #000000;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n}\n.ant-pagination-options-quick-jumper input::-moz-placeholder {\n  color: #bfbfbf;\n}\n.ant-pagination-options-quick-jumper input:-ms-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-pagination-options-quick-jumper input::-webkit-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-pagination-options-quick-jumper input:hover {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n}\n.ant-pagination-options-quick-jumper input:focus {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.ant-pagination-options-quick-jumper input-disabled {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-pagination-options-quick-jumper input-disabled:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-pagination-options-quick-jumper input[disabled] {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-pagination-options-quick-jumper input[disabled]:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link,\n.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link {\n  border: 0;\n}\n.ant-pagination-simple .ant-pagination-simple-pager input {\n  background-color: #fff;\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n}\n.ant-pagination-simple .ant-pagination-simple-pager input:hover {\n  border-color: @primary-color;\n}\n.ant-pagination.mini .ant-pagination-item:not(.ant-pagination-item-active) {\n  background: transparent;\n  border-color: transparent;\n}\n.ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link,\n.ant-pagination.mini .ant-pagination-next .ant-pagination-item-link {\n  background: transparent;\n  border-color: transparent;\n}\n.ant-pagination.ant-pagination-disabled .ant-pagination-item {\n  background: #f5f5f5;\n  border-color: #d9d9d9;\n}\n.ant-pagination.ant-pagination-disabled .ant-pagination-item a {\n  color: rgba(0, 0, 0, 0.25);\n  background: transparent;\n  border: none;\n}\n.ant-pagination.ant-pagination-disabled .ant-pagination-item-active {\n  background: #dbdbdb;\n  border-color: transparent;\n}\n.ant-pagination.ant-pagination-disabled .ant-pagination-item-active a {\n  color: #fff;\n}\n.ant-pagination.ant-pagination-disabled .ant-pagination-item-link,\n.ant-pagination.ant-pagination-disabled .ant-pagination-item-link:hover,\n.ant-pagination.ant-pagination-disabled .ant-pagination-item-link:focus {\n  color: rgba(0, 0, 0, 0.45);\n  background: #f5f5f5;\n  border-color: #d9d9d9;\n}\n.ant-popover {\n  color: #000000;\n}\n.ant-popover::after {\n  background: rgba(255, 255, 255, 0.01);\n}\n.ant-popover-inner {\n  background-color: #fff;\n  background-clip: padding-box;\n  border-radius: 2px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n  box-shadow: 0 0 8px rgba(0, 0, 0, 0.15) ;\n}\n.ant-popover-title {\n  color: rgba(0, 0, 0, 0.85);\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-popover-inner-content {\n  color: #000000;\n}\n.ant-popover-message {\n  color: #000000;\n}\n.ant-popover-message > .anticon {\n  color: #faad14;\n}\n.ant-popover-arrow {\n  background: transparent;\n  border-style: solid;\n  border-width: 4.24264069px;\n}\n.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow,\n.ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow,\n.ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow {\n  border-top-color: transparent;\n  border-right-color: #fff;\n  border-bottom-color: #fff;\n  border-left-color: transparent;\n  box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);\n}\n.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow,\n.ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow,\n.ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow {\n  border-top-color: transparent;\n  border-right-color: transparent;\n  border-bottom-color: #fff;\n  border-left-color: #fff;\n  box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07);\n}\n.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow,\n.ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow,\n.ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow {\n  border-top-color: #fff;\n  border-right-color: transparent;\n  border-bottom-color: transparent;\n  border-left-color: #fff;\n  box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.06);\n}\n.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow,\n.ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow,\n.ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow {\n  border-top-color: #fff;\n  border-right-color: #fff;\n  border-bottom-color: transparent;\n  border-left-color: transparent;\n  box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07);\n}\n.ant-progress {\n  color: #000000;\n}\n.ant-progress-inner {\n  background-color: #f5f5f5;\n  border-radius: 100px;\n}\n.ant-progress-success-bg,\n.ant-progress-bg {\n  background-color: #1890ff;\n  border-radius: 100px;\n}\n.ant-progress-success-bg {\n  background-color: #52c41a;\n}\n.ant-progress-text {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-progress-status-active .ant-progress-bg::before {\n  background: #fff;\n  border-radius: 10px;\n}\n.ant-progress-status-exception .ant-progress-bg {\n  background-color: #f5222d;\n}\n.ant-progress-status-exception .ant-progress-text {\n  color: #f5222d;\n}\n.ant-progress-status-success .ant-progress-bg {\n  background-color: #52c41a;\n}\n.ant-progress-status-success .ant-progress-text {\n  color: #52c41a;\n}\n.ant-progress-circle .ant-progress-inner {\n  background-color: transparent;\n}\n.ant-progress-circle .ant-progress-text {\n  color: #000000;\n}\n.ant-progress-circle.ant-progress-status-exception .ant-progress-text {\n  color: #f5222d;\n}\n.ant-progress-circle.ant-progress-status-success .ant-progress-text {\n  color: #52c41a;\n}\n.ant-radio-group {\n  color: #000000;\n}\n.ant-radio-wrapper {\n  color: #000000;\n}\n.ant-radio {\n  color: #000000;\n}\n.ant-radio-wrapper:hover .ant-radio,\n.ant-radio:hover .ant-radio-inner,\n.ant-radio-input:focus + .ant-radio-inner {\n  border-color: @primary-color;\n}\n.ant-radio-input:focus + .ant-radio-inner {\n  box-shadow: 0 0 0 3px rgba(49, 54, 83, 0.08);\n}\n.ant-radio-checked::after {\n  border: 1px solid @primary-color;\n  border-radius: 50%;\n}\n.ant-radio-inner {\n  background-color: #fff;\n  border-color: #d9d9d9;\n  border-style: solid;\n  border-width: 1px;\n  border-radius: 100px;\n}\n.ant-radio-inner::after {\n  background-color: @primary-color;\n  border-top: 0;\n  border-left: 0;\n  border-radius: 8px;\n}\n.ant-radio-checked .ant-radio-inner {\n  border-color: @primary-color;\n}\n.ant-radio-disabled .ant-radio-inner {\n  background-color: #f5f5f5;\n  border-color: #d9d9d9 !important;\n}\n.ant-radio-disabled .ant-radio-inner::after {\n  background-color: rgba(0, 0, 0, 0.2);\n}\n.ant-radio-disabled + span {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-radio-button-wrapper {\n  color: #000000;\n  background: #fff;\n  border: 1px solid #d9d9d9;\n  border-top-width: 1.02px;\n  border-left: 0;\n}\n.ant-radio-button-wrapper a {\n  color: #000000;\n}\n.ant-radio-button-wrapper:not(:first-child)::before {\n  background-color: #d9d9d9;\n}\n.ant-radio-button-wrapper:first-child {\n  border-left: 1px solid #d9d9d9;\n  border-radius: 2px 0 0 2px;\n}\n.ant-radio-button-wrapper:last-child {\n  border-radius: 0 2px 2px 0;\n}\n.ant-radio-button-wrapper:first-child:last-child {\n  border-radius: 2px;\n}\n.ant-radio-button-wrapper:hover {\n  color: @primary-color;\n}\n.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {\n  color: @primary-color;\n  background: #fff;\n  border-color: @primary-color;\n  box-shadow: -1px 0 0 0 @primary-color;\n}\n.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {\n  background-color: #313653 !important;\n}\n.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child {\n  border-color: @primary-color;\n  box-shadow: none !important;\n}\n.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  box-shadow: -1px 0 0 0 color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {\n  color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n  border-color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n  box-shadow: -1px 0 0 0 color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {\n  color: #fff;\n  background: @primary-color;\n  border-color: @primary-color;\n}\n.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {\n  color: #fff;\n  background: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {\n  color: #fff;\n  background: color(~`colorPalette(\"@{primary-color}\", 7)`);\n  border-color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-radio-button-wrapper-disabled {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  border-color: #d9d9d9;\n}\n.ant-radio-button-wrapper-disabled:first-child,\n.ant-radio-button-wrapper-disabled:hover {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  border-color: #d9d9d9;\n}\n.ant-radio-button-wrapper-disabled:first-child {\n  border-left-color: #d9d9d9;\n}\n.ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked {\n  color: #ffffff;\n  background-color: #e6e6e6;\n  border-color: #d9d9d9;\n  box-shadow: none;\n}\n.ant-rate {\n  color: #000000;\n  color: #fadb14;\n}\n.ant-rate-star {\n  color: inherit;\n}\n.ant-rate-star-first,\n.ant-rate-star-second {\n  color: #e8e8e8;\n}\n.ant-rate-star-half .ant-rate-star-first,\n.ant-rate-star-full .ant-rate-star-second {\n  color: inherit;\n}\n.ant-result-success .ant-result-icon > .anticon {\n  color: #52c41a;\n}\n.ant-result-error .ant-result-icon > .anticon {\n  color: #f5222d;\n}\n.ant-result-info .ant-result-icon > .anticon {\n  color: #1890ff;\n}\n.ant-result-warning .ant-result-icon > .anticon {\n  color: #faad14;\n}\n.ant-result-title {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-result-subtitle {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-result-content {\n  background-color: #fafafa;\n}\n.ant-select {\n  color: #000000;\n}\n.ant-select > ul > li > a {\n  background-color: #fff;\n}\n.ant-select-arrow {\n  color: inherit;\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-select-selection {\n  background-color: #fff;\n  border: 1px solid #d9d9d9;\n  border-top-width: 1.02px;\n  border-radius: 2px;\n}\n.ant-select-selection:hover {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n}\n.ant-select-focused .ant-select-selection,\n.ant-select-selection:focus,\n.ant-select-selection:active {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.ant-select-selection__clear {\n  color: rgba(0, 0, 0, 0.25);\n  background: #fff;\n}\n.ant-select-selection__clear:hover {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-select-disabled {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-select-disabled .ant-select-selection {\n  background: #f5f5f5;\n}\n.ant-select-disabled .ant-select-selection:hover,\n.ant-select-disabled .ant-select-selection:focus,\n.ant-select-disabled .ant-select-selection:active {\n  border-color: #d9d9d9;\n  box-shadow: none;\n}\n.ant-select-disabled .ant-select-selection--multiple .ant-select-selection__choice {\n  color: rgba(0, 0, 0, 0.33);\n  background: #f5f5f5;\n}\n.ant-select-disabled .ant-select-selection__choice__remove {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-select-disabled .ant-select-selection__choice__remove:hover {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-select-selection__placeholder,\n.ant-select-search__field__placeholder {\n  color: #bfbfbf;\n}\n.ant-select-search--inline .ant-select-search__field {\n  background: transparent;\n  border-width: 0;\n  border-radius: 2px;\n}\n.ant-select-selection--multiple .ant-select-selection__choice {\n  color: #000000;\n  background-color: #fafafa;\n  border: 1px solid #e8e8e8;\n  border-radius: 2px;\n}\n.ant-select-selection--multiple .ant-select-selection__choice__remove {\n  color: inherit;\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-select-selection--multiple .ant-select-selection__choice__remove:hover {\n  color: rgba(0, 0, 0, 0.75);\n}\n.ant-select-open .ant-select-selection {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.ant-select-combobox .ant-select-search__field {\n  box-shadow: none;\n}\n.ant-select-dropdown {\n  color: #000000;\n  background-color: #fff;\n  border-radius: 2px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n.ant-select-dropdown-menu-item-group-title {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-select-dropdown-menu-item-group-list .ant-select-dropdown-menu-item:first-child:not(:last-child),\n.ant-select-dropdown-menu-item-group:not(:last-child) .ant-select-dropdown-menu-item-group-list .ant-select-dropdown-menu-item:last-child {\n  border-radius: 0;\n}\n.ant-select-dropdown-menu-item {\n  color: #000000;\n}\n.ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled) {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-select-dropdown-menu-item:first-child {\n  border-radius: 2px 2px 0 0;\n}\n.ant-select-dropdown-menu-item:last-child {\n  border-radius: 0 0 2px 2px;\n}\n.ant-select-dropdown-menu-item-selected {\n  color: #000000;\n  background-color: #fafafa;\n}\n.ant-select-dropdown-menu-item-disabled {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-select-dropdown-menu-item-disabled:hover {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled) {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-select-dropdown-menu-item-divider {\n  background-color: #e8e8e8;\n}\n.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item .ant-select-selected-icon {\n  color: transparent;\n}\n.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item:hover .ant-select-selected-icon {\n  color: rgba(0, 0, 0, 0.87);\n}\n.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon,\n.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon {\n  color: @primary-color;\n}\n.ant-skeleton-header .ant-skeleton-avatar {\n  background: #f2f2f2;\n}\n.ant-skeleton-header .ant-skeleton-avatar.ant-skeleton-avatar-circle {\n  border-radius: 50%;\n}\n.ant-skeleton-header .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle {\n  border-radius: 50%;\n}\n.ant-skeleton-header .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle {\n  border-radius: 50%;\n}\n.ant-skeleton-content .ant-skeleton-title {\n  background: #f2f2f2;\n}\n.ant-skeleton-content .ant-skeleton-paragraph > li {\n  background: #f2f2f2;\n}\n.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title,\n.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li {\n  background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%);\n  background-size: 400% 100%;\n}\n.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar {\n  background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%);\n  background-size: 400% 100%;\n}\n.ant-slider {\n  color: #000000;\n}\n.ant-slider-rail {\n  background-color: #f5f5f5;\n  border-radius: 2px;\n}\n.ant-slider-track {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 3)`);\n  border-radius: 2px;\n}\n.ant-slider-handle {\n  background-color: #fff;\n  border: solid 2px color(~`colorPalette(\"@{primary-color}\", 3)`);\n  border-radius: 50%;\n  box-shadow: 0;\n}\n.ant-slider-handle:focus {\n  border-color: #5a5e75;\n  box-shadow: 0 0 0 5px rgba(49, 54, 83, 0.2);\n}\n.ant-slider-handle.ant-tooltip-open {\n  border-color: @primary-color;\n}\n.ant-slider:hover .ant-slider-rail {\n  background-color: #e1e1e1;\n}\n.ant-slider:hover .ant-slider-track {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 4)`);\n}\n.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open) {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 4)`);\n}\n.ant-slider-mark-text {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-slider-mark-text-active {\n  color: #000000;\n}\n.ant-slider-step {\n  background: transparent;\n}\n.ant-slider-dot {\n  background-color: #fff;\n  border: 2px solid #e8e8e8;\n  border-radius: 50%;\n}\n.ant-slider-dot-active {\n  border-color: #989ba9;\n}\n.ant-slider-disabled .ant-slider-track {\n  background-color: rgba(0, 0, 0, 0.25) !important;\n}\n.ant-slider-disabled .ant-slider-handle,\n.ant-slider-disabled .ant-slider-dot {\n  background-color: #fff;\n  border-color: rgba(0, 0, 0, 0.25) !important;\n  box-shadow: none;\n}\n.ant-spin {\n  color: #000000;\n  color: @primary-color;\n}\n.ant-spin-container::after {\n  background: #fff;\n}\n.ant-spin-tip {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-spin-dot-item {\n  background-color: @primary-color;\n  border-radius: 100%;\n}\n.ant-statistic {\n  color: #000000;\n}\n.ant-statistic-title {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-statistic-content {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-steps {\n  color: #000000;\n}\n.ant-steps-item-icon {\n  border: 1px solid rgba(0, 0, 0, 0.25);\n  border-radius: 32px;\n}\n.ant-steps-item-icon > .ant-steps-icon {\n  color: @primary-color;\n}\n.ant-steps-item-tail::after {\n  background: #e8e8e8;\n  border-radius: 1px;\n}\n.ant-steps-item-title {\n  color: #000000;\n}\n.ant-steps-item-title::after {\n  background: #e8e8e8;\n}\n.ant-steps-item-subtitle {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-steps-item-description {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-steps-item-wait .ant-steps-item-icon {\n  background-color: #fff;\n  border-color: rgba(0, 0, 0, 0.25);\n}\n.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {\n  background: rgba(0, 0, 0, 0.25);\n}\n.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after {\n  background-color: #e8e8e8;\n}\n.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-tail::after {\n  background-color: #e8e8e8;\n}\n.ant-steps-item-process .ant-steps-item-icon {\n  background-color: #fff;\n  border-color: @primary-color;\n}\n.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {\n  color: @primary-color;\n}\n.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {\n  background: @primary-color;\n}\n.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after {\n  background-color: #e8e8e8;\n}\n.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {\n  color: #000000;\n}\n.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-tail::after {\n  background-color: #e8e8e8;\n}\n.ant-steps-item-process .ant-steps-item-icon {\n  background: @primary-color;\n}\n.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {\n  color: #ffffff;\n}\n.ant-steps-item-finish .ant-steps-item-icon {\n  background-color: #fff;\n  border-color: @primary-color;\n}\n.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon {\n  color: @primary-color;\n}\n.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {\n  background: @primary-color;\n}\n.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {\n  color: #000000;\n}\n.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after {\n  background-color: @primary-color;\n}\n.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-tail::after {\n  background-color: @primary-color;\n}\n.ant-steps-item-error .ant-steps-item-icon {\n  background-color: #fff;\n  border-color: #f5222d;\n}\n.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon {\n  color: #f5222d;\n}\n.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {\n  background: #f5222d;\n}\n.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {\n  color: #f5222d;\n}\n.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after {\n  background-color: #e8e8e8;\n}\n.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {\n  color: #f5222d;\n}\n.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-tail::after {\n  background-color: #e8e8e8;\n}\n.ant-steps-item.ant-steps-next-error .ant-steps-item-title::after {\n  background: #f5222d;\n}\n.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button']:hover .ant-steps-item-title,\n.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button']:hover .ant-steps-item-subtitle,\n.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button']:hover .ant-steps-item-description {\n  color: @primary-color;\n}\n.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role='button']:hover .ant-steps-item-icon {\n  border-color: @primary-color;\n}\n.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role='button']:hover .ant-steps-item-icon .ant-steps-icon {\n  color: @primary-color;\n}\n.ant-steps-item-custom .ant-steps-item-icon {\n  background: none;\n  border: 0;\n}\n.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {\n  color: @primary-color;\n}\n.ant-steps-small .ant-steps-item-icon {\n  border-radius: 24px;\n}\n.ant-steps-small .ant-steps-item-description {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon {\n  background: none;\n  border: 0;\n  border-radius: 0;\n}\n.ant-steps-dot .ant-steps-item-icon,\n.ant-steps-dot.ant-steps-small .ant-steps-item-icon {\n  background: transparent;\n  border: 0;\n}\n.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot,\n.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot {\n  border-radius: 100px;\n}\n.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot::after,\n.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot::after {\n  background: rgba(0, 0, 0, 0.001);\n}\n.ant-steps-navigation .ant-steps-item::after {\n  border: 1px solid rgba(0, 0, 0, 0.25);\n  border-bottom: none;\n  border-left: none;\n}\n.ant-steps-navigation .ant-steps-item::before {\n  background-color: @primary-color;\n}\n.ant-steps-flex-not-supported.ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item {\n  background: #fff;\n}\n.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item .ant-steps-icon-dot::before,\n.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item .ant-steps-icon-dot::after {\n  background: #fff;\n}\n.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {\n  background: #ccc;\n}\n.ant-switch {\n  color: #000000;\n  background-color: rgba(0, 0, 0, 0.25);\n  border: 1px solid transparent;\n  border-radius: 100px;\n}\n.ant-switch-inner {\n  color: #ffffff;\n}\n.ant-switch-loading-icon,\n.ant-switch::after {\n  background-color: #fff;\n  border-radius: 18px;\n}\n.ant-switch::after {\n  box-shadow: 0 2px 4px 0 rgba(0, 35, 11, 0.2);\n}\n.ant-switch-loading-icon {\n  background: transparent;\n}\n.ant-switch-loading .ant-switch-loading-icon {\n  color: #000000;\n}\n.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon {\n  color: @primary-color;\n}\n.ant-switch:focus {\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.ant-switch:focus:hover {\n  box-shadow: none;\n}\n.ant-switch-checked {\n  background-color: @primary-color;\n}\n.ant-table {\n  color: #000000;\n}\n.ant-table table {\n  border-radius: 2px 2px 0 0;\n  border-collapse: separate;\n  border-spacing: 0;\n}\n.ant-table-thead > tr > th {\n  color: rgba(0, 0, 0, 0.85);\n  background: #fafafa;\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-table-thead > tr > th .anticon-filter,\n.ant-table-thead > tr > th .ant-table-filter-icon {\n  color: #bfbfbf;\n}\n.ant-table-thead > tr > th .ant-table-filter-selected.anticon-filter {\n  color: @primary-color;\n}\n.ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner {\n  color: #bfbfbf;\n}\n.ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up.on,\n.ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down.on {\n  color: @primary-color;\n}\n.ant-table-thead > tr > th.ant-table-column-has-actions {\n  background-clip: padding-box;\n  -webkit-background-clip: border-box;\n}\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters .anticon-filter.ant-table-filter-open,\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters .ant-table-filter-icon.ant-table-filter-open {\n  color: rgba(0, 0, 0, 0.45);\n  background: #e5e5e5;\n}\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .anticon-filter:hover,\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .ant-table-filter-icon:hover {\n  color: rgba(0, 0, 0, 0.45);\n  background: #e5e5e5;\n}\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .anticon-filter:active,\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .ant-table-filter-icon:active {\n  color: #000000;\n}\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover {\n  background: #f2f2f2;\n}\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover .anticon-filter,\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover .ant-table-filter-icon {\n  background: #f2f2f2;\n}\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:active .ant-table-column-sorter-up:not(.on),\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:active .ant-table-column-sorter-down:not(.on) {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-table-thead > tr > th .ant-table-header-column .ant-table-column-sorters::before {\n  background: transparent;\n}\n.ant-table-thead > tr > th .ant-table-header-column .ant-table-column-sorters:hover::before {\n  background: rgba(0, 0, 0, 0.04);\n}\n.ant-table-thead > tr:first-child > th:first-child {\n  border-top-left-radius: 2px;\n}\n.ant-table-thead > tr:first-child > th:last-child {\n  border-top-right-radius: 2px;\n}\n.ant-table-thead > tr:not(:last-child) > th[colspan] {\n  border-bottom: 0;\n}\n.ant-table-tbody > tr > td {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-table-thead > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td,\n.ant-table-tbody > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td,\n.ant-table-thead > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td,\n.ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {\n  background: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-table-thead > tr.ant-table-row-selected > td.ant-table-column-sort,\n.ant-table-tbody > tr.ant-table-row-selected > td.ant-table-column-sort {\n  background: #fbfbfb;\n}\n.ant-table-thead > tr:hover.ant-table-row-selected > td,\n.ant-table-tbody > tr:hover.ant-table-row-selected > td {\n  background: #fbfbfb;\n}\n.ant-table-thead > tr:hover.ant-table-row-selected > td.ant-table-column-sort,\n.ant-table-tbody > tr:hover.ant-table-row-selected > td.ant-table-column-sort {\n  background: #fbfbfb;\n}\n.ant-table-thead > tr:hover {\n  background: none;\n}\n.ant-table-footer {\n  color: rgba(0, 0, 0, 0.85);\n  background: #fafafa;\n  border-top: 1px solid #e8e8e8;\n  border-radius: 0 0 2px 2px;\n}\n.ant-table-footer::before {\n  background: #fafafa;\n}\n.ant-table.ant-table-bordered .ant-table-footer {\n  border: 1px solid #e8e8e8;\n}\n.ant-table-title {\n  border-radius: 2px 2px 0 0;\n}\n.ant-table.ant-table-bordered .ant-table-title {\n  border: 1px solid #e8e8e8;\n}\n.ant-table-title + .ant-table-content {\n  border-radius: 2px 2px 0 0;\n}\n.ant-table-bordered .ant-table-title + .ant-table-content,\n.ant-table-bordered .ant-table-title + .ant-table-content table,\n.ant-table-bordered .ant-table-title + .ant-table-content .ant-table-thead > tr:first-child > th {\n  border-radius: 0;\n}\n.ant-table-without-column-header .ant-table-title + .ant-table-content,\n.ant-table-without-column-header table {\n  border-radius: 0;\n}\n.ant-table-without-column-header.ant-table-bordered.ant-table-empty .ant-table-placeholder {\n  border-top: 1px solid #e8e8e8;\n  border-radius: 2px;\n}\n.ant-table-tbody > tr.ant-table-row-selected td {\n  color: inherit;\n  background: #fbfbfb;\n}\n.ant-table-thead > tr > th.ant-table-column-sort {\n  background: #f5f5f5;\n}\n.ant-table-tbody > tr > td.ant-table-column-sort {\n  background: rgba(0, 0, 0, 0.01);\n}\n.ant-table-header {\n  background: #fafafa;\n}\n.ant-table-header table {\n  border-radius: 2px 2px 0 0;\n}\n.ant-table-loading .ant-table-body {\n  background: #fff;\n}\n.ant-table-bordered .ant-table-header > table,\n.ant-table-bordered .ant-table-body > table,\n.ant-table-bordered .ant-table-fixed-left table,\n.ant-table-bordered .ant-table-fixed-right table {\n  border: 1px solid #e8e8e8;\n  border-right: 0;\n  border-bottom: 0;\n}\n.ant-table-bordered.ant-table-empty .ant-table-placeholder {\n  border-right: 1px solid #e8e8e8;\n  border-left: 1px solid #e8e8e8;\n}\n.ant-table-bordered.ant-table-fixed-header .ant-table-header > table {\n  border-bottom: 0;\n}\n.ant-table-bordered.ant-table-fixed-header .ant-table-body > table {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.ant-table-bordered.ant-table-fixed-header .ant-table-header + .ant-table-body > table,\n.ant-table-bordered.ant-table-fixed-header .ant-table-body-inner > table {\n  border-top: 0;\n}\n.ant-table-bordered .ant-table-thead > tr:not(:last-child) > th {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-table-bordered .ant-table-thead > tr > th,\n.ant-table-bordered .ant-table-tbody > tr > td {\n  border-right: 1px solid #e8e8e8;\n}\n.ant-table-placeholder {\n  color: rgba(0, 0, 0, 0.25);\n  background: #fff;\n  border-top: 1px solid #e8e8e8;\n  border-bottom: 1px solid #e8e8e8;\n  border-radius: 0 0 2px 2px;\n}\n.ant-table-filter-dropdown {\n  background: #fff;\n  border-radius: 2px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n.ant-table-filter-dropdown .ant-dropdown-menu {\n  border: 0;\n  border-radius: 2px 2px 0 0;\n  box-shadow: none;\n}\n.ant-table-filter-dropdown .ant-dropdown-menu-sub {\n  border-radius: 2px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n.ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title::after {\n  color: @primary-color;\n}\n.ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-item:last-child,\n.ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-submenu:last-child .ant-dropdown-menu-submenu-title {\n  border-radius: 0;\n}\n.ant-table-filter-dropdown-btns {\n  border-top: 1px solid #e8e8e8;\n}\n.ant-table-filter-dropdown-link {\n  color: @primary-color;\n}\n.ant-table-filter-dropdown-link:hover {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-table-filter-dropdown-link:active {\n  color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-table-selection .anticon-down {\n  color: #bfbfbf;\n}\n.ant-table-selection-menu {\n  background: #fff;\n  border-radius: 2px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n.ant-table-selection-menu .ant-action-down {\n  color: #bfbfbf;\n}\n.ant-table-selection-down:hover .anticon-down {\n  color: rgba(0, 0, 0, 0.6);\n}\n.ant-table-row-expand-icon {\n  color: @primary-color;\n  color: inherit;\n  background: #fff;\n  border: 1px solid #e8e8e8;\n  border-radius: 2px;\n}\n.ant-table-row-expand-icon:focus,\n.ant-table-row-expand-icon:hover {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-table-row-expand-icon:active {\n  color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-table-row-expand-icon:focus,\n.ant-table-row-expand-icon:hover,\n.ant-table-row-expand-icon:active {\n  border-color: currentColor;\n}\ntr.ant-table-expanded-row,\ntr.ant-table-expanded-row:hover {\n  background: #fbfbfb;\n}\n.ant-table-fixed-header > .ant-table-content > .ant-table-scroll > .ant-table-body {\n  background: #fff;\n}\n.ant-table-fixed-header .ant-table-scroll .ant-table-header::-webkit-scrollbar {\n  border: 1px solid #e8e8e8;\n  border-width: 0 0 1px 0;\n}\n.ant-table-hide-scrollbar {\n  scrollbar-color: transparent transparent;\n}\n.ant-table-hide-scrollbar::-webkit-scrollbar {\n  background-color: transparent;\n}\n.ant-table-bordered.ant-table-fixed-header .ant-table-scroll .ant-table-header::-webkit-scrollbar {\n  border: 1px solid #e8e8e8;\n  border-width: 1px 1px 1px 0;\n}\n.ant-table-bordered.ant-table-fixed-header .ant-table-scroll .ant-table-header.ant-table-hide-scrollbar .ant-table-thead > tr:only-child > th:last-child {\n  border-right-color: transparent;\n}\n.ant-table-fixed-left,\n.ant-table-fixed-right {\n  border-radius: 0;\n}\n.ant-table-fixed-left table,\n.ant-table-fixed-right table {\n  background: #fff;\n}\n.ant-table-fixed-header .ant-table-fixed-left .ant-table-body-outer .ant-table-fixed,\n.ant-table-fixed-header .ant-table-fixed-right .ant-table-body-outer .ant-table-fixed {\n  border-radius: 0;\n}\n.ant-table-fixed-left {\n  box-shadow: 6px 0 6px -4px rgba(0, 0, 0, 0.15);\n}\n.ant-table-fixed-left,\n.ant-table-fixed-left table {\n  border-radius: 2px 0 0 0;\n}\n.ant-table-fixed-left .ant-table-thead > tr > th:last-child {\n  border-top-right-radius: 0;\n}\n.ant-table-fixed-right {\n  box-shadow: -6px 0 6px -4px rgba(0, 0, 0, 0.15);\n}\n.ant-table-fixed-right,\n.ant-table-fixed-right table {\n  border-radius: 0 2px 0 0;\n}\n.ant-table-fixed-right .ant-table-expanded-row {\n  color: transparent;\n}\n.ant-table-fixed-right .ant-table-thead > tr > th:first-child {\n  border-top-left-radius: 0;\n}\n.ant-table.ant-table-scroll-position-left .ant-table-fixed-left {\n  box-shadow: none;\n}\n.ant-table.ant-table-scroll-position-right .ant-table-fixed-right {\n  box-shadow: none;\n}\n.ant-table-small {\n  border: 1px solid #e8e8e8;\n  border-radius: 2px;\n}\n.ant-table-small > .ant-table-title {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-table-small > .ant-table-content > .ant-table-header > table,\n.ant-table-small > .ant-table-content > .ant-table-body > table,\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table,\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table,\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table,\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table,\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table,\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table {\n  border: 0;\n}\n.ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th,\n.ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th,\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th,\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th,\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th,\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th,\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th,\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th {\n  background-color: transparent;\n}\n.ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr,\n.ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr,\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr,\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr,\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr,\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr,\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr,\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort,\n.ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th.ant-table-column-sort,\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort,\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th.ant-table-column-sort,\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort,\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort,\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th.ant-table-column-sort,\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th.ant-table-column-sort {\n  background-color: rgba(0, 0, 0, 0.01);\n}\n.ant-table-small > .ant-table-content .ant-table-header {\n  background-color: #fff;\n}\n.ant-table-small > .ant-table-content .ant-table-placeholder,\n.ant-table-small > .ant-table-content .ant-table-row:last-child td {\n  border-bottom: 0;\n}\n.ant-table-small.ant-table-bordered {\n  border-right: 0;\n}\n.ant-table-small.ant-table-bordered .ant-table-title {\n  border: 0;\n  border-right: 1px solid #e8e8e8;\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-table-small.ant-table-bordered .ant-table-content {\n  border-right: 1px solid #e8e8e8;\n}\n.ant-table-small.ant-table-bordered .ant-table-footer {\n  border: 0;\n  border-top: 1px solid #e8e8e8;\n  border-right: 1px solid #e8e8e8;\n}\n.ant-table-small.ant-table-bordered .ant-table-placeholder {\n  border-right: 0;\n  border-bottom: 0;\n  border-left: 0;\n}\n.ant-table-small.ant-table-bordered .ant-table-thead > tr:only-child > th:last-child,\n.ant-table-small.ant-table-bordered .ant-table-tbody > tr > td:last-child {\n  border-right: none;\n}\n.ant-table-small.ant-table-bordered .ant-table-fixed-left .ant-table-thead > tr > th:last-child,\n.ant-table-small.ant-table-bordered .ant-table-fixed-left .ant-table-tbody > tr > td:last-child {\n  border-right: 1px solid #e8e8e8;\n}\n.ant-table-small.ant-table-bordered .ant-table-fixed-right {\n  border-right: 1px solid #e8e8e8;\n  border-left: 1px solid #e8e8e8;\n}\n.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab {\n  background: #fafafa;\n  border: 1px solid #e8e8e8;\n  border-radius: 2px 2px 0 0;\n}\n.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active {\n  color: @primary-color;\n  background: #fff;\n  border-color: #e8e8e8;\n  border-bottom: 1px solid #fff;\n}\n.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active::before {\n  border-top: 2px solid transparent;\n}\n.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-disabled {\n  color: @primary-color;\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab .ant-tabs-close-x {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab .ant-tabs-close-x:hover {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-tabs-extra-content .ant-tabs-new-tab {\n  color: #000000;\n  border: 1px solid #e8e8e8;\n  border-radius: 2px;\n}\n.ant-tabs-extra-content .ant-tabs-new-tab:hover {\n  color: @primary-color;\n  border-color: @primary-color;\n}\n.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab,\n.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-tabs-vertical.ant-tabs-card.ant-tabs-left .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab {\n  border-right: 0;\n  border-radius: 2px 0 0 2px;\n}\n.ant-tabs-vertical.ant-tabs-card.ant-tabs-right .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab {\n  border-left: 0;\n  border-radius: 0 2px 2px 0;\n}\n.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab {\n  border-top: 0;\n  border-bottom: 1px solid #e8e8e8;\n  border-radius: 0 0 2px 2px;\n}\n.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active {\n  color: @primary-color;\n}\n.ant-tabs {\n  color: #000000;\n}\n.ant-tabs-ink-bar {\n  background-color: @primary-color;\n}\n.ant-tabs-bar {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-tabs-bottom .ant-tabs-bottom-bar {\n  border-top: 1px solid #e8e8e8;\n  border-bottom: none;\n}\n.ant-tabs-tab-prev,\n.ant-tabs-tab-next {\n  color: rgba(0, 0, 0, 0.45);\n  background-color: transparent;\n  border: 0;\n}\n.ant-tabs-tab-prev:hover,\n.ant-tabs-tab-next:hover {\n  color: #000000;\n}\n.ant-tabs-tab-btn-disabled,\n.ant-tabs-tab-btn-disabled:hover {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-tabs-nav .ant-tabs-tab::before {\n  border-top: 2px solid transparent;\n  border-radius: 2px 2px 0 0;\n}\n.ant-tabs-nav .ant-tabs-tab:hover {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-tabs-nav .ant-tabs-tab:active {\n  color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-tabs-nav .ant-tabs-tab-active {\n  color: @primary-color;\n}\n.ant-tabs-nav .ant-tabs-tab-disabled,\n.ant-tabs-nav .ant-tabs-tab-disabled:hover {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-tabs .ant-tabs-left-bar,\n.ant-tabs .ant-tabs-right-bar {\n  border-bottom: 0;\n}\n.ant-tabs .ant-tabs-left-bar {\n  border-right: 1px solid #e8e8e8;\n}\n.ant-tabs .ant-tabs-left-content {\n  border-left: 1px solid #e8e8e8;\n}\n.ant-tabs .ant-tabs-right-bar {\n  border-left: 1px solid #e8e8e8;\n}\n.ant-tabs .ant-tabs-right-content {\n  border-right: 1px solid #e8e8e8;\n}\n.ant-tag {\n  color: #000000;\n  background: #fafafa;\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n}\n.ant-tag,\n.ant-tag a,\n.ant-tag a:hover {\n  color: #000000;\n}\n.ant-tag .anticon-close {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-tag .anticon-close:hover {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-tag-has-color {\n  border-color: transparent;\n}\n.ant-tag-has-color,\n.ant-tag-has-color a,\n.ant-tag-has-color a:hover,\n.ant-tag-has-color .anticon-close,\n.ant-tag-has-color .anticon-close:hover {\n  color: #ffffff;\n}\n.ant-tag-checkable {\n  background-color: transparent;\n  border-color: transparent;\n}\n.ant-tag-checkable:not(.ant-tag-checkable-checked):hover {\n  color: @primary-color;\n}\n.ant-tag-checkable:active,\n.ant-tag-checkable-checked {\n  color: #ffffff;\n}\n.ant-tag-checkable-checked {\n  background-color: @primary-color;\n}\n.ant-tag-checkable:active {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-tag-pink {\n  color: #eb2f96;\n  background: #fff0f6;\n  border-color: #ffadd2;\n}\n.ant-tag-pink-inverse {\n  color: #ffffff;\n  background: #eb2f96;\n  border-color: #eb2f96;\n}\n.ant-tag-magenta {\n  color: #eb2f96;\n  background: #fff0f6;\n  border-color: #ffadd2;\n}\n.ant-tag-magenta-inverse {\n  color: #ffffff;\n  background: #eb2f96;\n  border-color: #eb2f96;\n}\n.ant-tag-red {\n  color: #f5222d;\n  background: #fff1f0;\n  border-color: #ffa39e;\n}\n.ant-tag-red-inverse {\n  color: #ffffff;\n  background: #f5222d;\n  border-color: #f5222d;\n}\n.ant-tag-volcano {\n  color: #fa541c;\n  background: #fff2e8;\n  border-color: #ffbb96;\n}\n.ant-tag-volcano-inverse {\n  color: #ffffff;\n  background: #fa541c;\n  border-color: #fa541c;\n}\n.ant-tag-orange {\n  color: #fa8c16;\n  background: #fff7e6;\n  border-color: #ffd591;\n}\n.ant-tag-orange-inverse {\n  color: #ffffff;\n  background: #fa8c16;\n  border-color: #fa8c16;\n}\n.ant-tag-yellow {\n  color: #fadb14;\n  background: #feffe6;\n  border-color: #fffb8f;\n}\n.ant-tag-yellow-inverse {\n  color: #ffffff;\n  background: #fadb14;\n  border-color: #fadb14;\n}\n.ant-tag-gold {\n  color: #faad14;\n  background: #fffbe6;\n  border-color: #ffe58f;\n}\n.ant-tag-gold-inverse {\n  color: #ffffff;\n  background: #faad14;\n  border-color: #faad14;\n}\n.ant-tag-cyan {\n  color: #13c2c2;\n  background: #e6fffb;\n  border-color: #87e8de;\n}\n.ant-tag-cyan-inverse {\n  color: #ffffff;\n  background: #13c2c2;\n  border-color: #13c2c2;\n}\n.ant-tag-lime {\n  color: #a0d911;\n  background: #fcffe6;\n  border-color: #eaff8f;\n}\n.ant-tag-lime-inverse {\n  color: #ffffff;\n  background: #a0d911;\n  border-color: #a0d911;\n}\n.ant-tag-green {\n  color: #52c41a;\n  background: #f6ffed;\n  border-color: #b7eb8f;\n}\n.ant-tag-green-inverse {\n  color: #ffffff;\n  background: #52c41a;\n  border-color: #52c41a;\n}\n.ant-tag-blue {\n  color: #1890ff;\n  background: #e6f7ff;\n  border-color: #91d5ff;\n}\n.ant-tag-blue-inverse {\n  color: #ffffff;\n  background: #1890ff;\n  border-color: #1890ff;\n}\n.ant-tag-geekblue {\n  color: #2f54eb;\n  background: #f0f5ff;\n  border-color: #adc6ff;\n}\n.ant-tag-geekblue-inverse {\n  color: #ffffff;\n  background: #2f54eb;\n  border-color: #2f54eb;\n}\n.ant-tag-purple {\n  color: #722ed1;\n  background: #f9f0ff;\n  border-color: #d3adf7;\n}\n.ant-tag-purple-inverse {\n  color: #ffffff;\n  background: #722ed1;\n  border-color: #722ed1;\n}\n.ant-time-picker-panel {\n  color: #000000;\n}\n.ant-time-picker-panel-inner {\n  background-color: #fff;\n  background-clip: padding-box;\n  border-radius: 2px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n.ant-time-picker-panel-input {\n  border: 0;\n}\n.ant-time-picker-panel-input::-moz-placeholder {\n  color: #bfbfbf;\n}\n.ant-time-picker-panel-input:-ms-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-time-picker-panel-input::-webkit-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-time-picker-panel-input-wrap {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-time-picker-panel-input-invalid {\n  border-color: #f5222d;\n}\n.ant-time-picker-panel-select {\n  border-left: 1px solid #e8e8e8;\n}\n.ant-time-picker-panel-select:first-child {\n  border-left: 0;\n}\n.ant-time-picker-panel-select:last-child {\n  border-right: 0;\n}\n.ant-time-picker-panel-select li:focus {\n  color: @primary-color;\n}\n.ant-time-picker-panel-select li:hover {\n  background: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\nli.ant-time-picker-panel-select-option-selected {\n  background: #f5f5f5;\n}\nli.ant-time-picker-panel-select-option-selected:hover {\n  background: #f5f5f5;\n}\nli.ant-time-picker-panel-select-option-disabled {\n  color: rgba(0, 0, 0, 0.25);\n}\nli.ant-time-picker-panel-select-option-disabled:hover {\n  background: transparent;\n}\n.ant-time-picker-panel-addon {\n  border-top: 1px solid #e8e8e8;\n}\n.ant-time-picker {\n  color: #000000;\n}\n.ant-time-picker-input {\n  color: #000000;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n}\n.ant-time-picker-input::-moz-placeholder {\n  color: #bfbfbf;\n}\n.ant-time-picker-input:-ms-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-time-picker-input::-webkit-input-placeholder {\n  color: #bfbfbf;\n}\n.ant-time-picker-input:hover {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n}\n.ant-time-picker-input:focus {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n  border-right-width: 1px !important;\n  box-shadow: 0 0 0 2px rgba(49, 54, 83, 0.2);\n}\n.ant-time-picker-input-disabled {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-time-picker-input-disabled:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-time-picker-input[disabled] {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-time-picker-input[disabled]:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-time-picker-input[disabled] {\n  color: rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n}\n.ant-time-picker-input[disabled]:hover {\n  border-color: #d9d9d9;\n  border-right-width: 1px !important;\n}\n.ant-time-picker-icon,\n.ant-time-picker-clear {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-time-picker-icon .ant-time-picker-clock-icon,\n.ant-time-picker-clear .ant-time-picker-clock-icon {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-time-picker-clear {\n  background: #fff;\n}\n.ant-time-picker-clear:hover {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-timeline {\n  color: #000000;\n}\n.ant-timeline-item-tail {\n  border-left: 2px solid #e8e8e8;\n}\n.ant-timeline-item-pending .ant-timeline-item-head {\n  background-color: transparent;\n}\n.ant-timeline-item-head {\n  background-color: #fff;\n  border: 2px solid transparent;\n  border-radius: 100px;\n}\n.ant-timeline-item-head-blue {\n  color: @primary-color;\n  border-color: @primary-color;\n}\n.ant-timeline-item-head-red {\n  color: #f5222d;\n  border-color: #f5222d;\n}\n.ant-timeline-item-head-green {\n  color: #52c41a;\n  border-color: #52c41a;\n}\n.ant-timeline-item-head-gray {\n  color: rgba(0, 0, 0, 0.25);\n  border-color: rgba(0, 0, 0, 0.25);\n}\n.ant-timeline-item-head-custom {\n  border: 0;\n  border-radius: 0;\n}\n.ant-timeline.ant-timeline-pending .ant-timeline-item-last .ant-timeline-item-tail {\n  border-left: 2px dotted #e8e8e8;\n}\n.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-tail {\n  border-left: 2px dotted #e8e8e8;\n}\n.ant-tooltip {\n  color: #000000;\n}\n.ant-tooltip-inner {\n  color: #fff;\n  background-color: rgba(0, 0, 0, 0.75);\n  border-radius: 2px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n.ant-tooltip-arrow {\n  background: transparent;\n}\n.ant-tooltip-arrow::before {\n  background-color: rgba(0, 0, 0, 0.75);\n}\n.ant-tooltip-placement-top .ant-tooltip-arrow::before,\n.ant-tooltip-placement-topLeft .ant-tooltip-arrow::before,\n.ant-tooltip-placement-topRight .ant-tooltip-arrow::before {\n  box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);\n}\n.ant-tooltip-placement-right .ant-tooltip-arrow::before,\n.ant-tooltip-placement-rightTop .ant-tooltip-arrow::before,\n.ant-tooltip-placement-rightBottom .ant-tooltip-arrow::before {\n  box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07);\n}\n.ant-tooltip-placement-left .ant-tooltip-arrow::before,\n.ant-tooltip-placement-leftTop .ant-tooltip-arrow::before,\n.ant-tooltip-placement-leftBottom .ant-tooltip-arrow::before {\n  box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07);\n}\n.ant-tooltip-placement-bottom .ant-tooltip-arrow::before,\n.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow::before,\n.ant-tooltip-placement-bottomRight .ant-tooltip-arrow::before {\n  box-shadow: -3px -3px 7px rgba(0, 0, 0, 0.07);\n}\n.ant-transfer {\n  color: #000000;\n}\n.ant-transfer-disabled .ant-transfer-list {\n  background: #f5f5f5;\n}\n.ant-transfer-list {\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n}\n.ant-transfer-list-search-action {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-transfer-list-search-action .anticon {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-transfer-list-search-action .anticon:hover {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-transfer-list-header {\n  color: #000000;\n  background: #fff;\n  border-bottom: 1px solid #e8e8e8;\n  border-radius: 2px 2px 0 0;\n}\n.ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-transfer-list-content-item-disabled {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-transfer-list-body-not-found {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-transfer-list-footer {\n  border-top: 1px solid #e8e8e8;\n  border-radius: 0 0 2px 2px;\n}\n.ant-transfer-customize-list .ant-table-wrapper .ant-table-small {\n  border: 0;\n  border-radius: 0;\n}\n.ant-transfer-customize-list .ant-table-wrapper .ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th {\n  background: #fafafa;\n}\n.ant-transfer-customize-list .ant-table-wrapper .ant-table-small > .ant-table-content .ant-table-row:last-child td {\n  border-bottom: 1px solid #e8e8e8;\n}\n.ant-transfer {\n  color: #000000;\n}\n.ant-transfer-disabled .ant-transfer-list {\n  background: #f5f5f5;\n}\n.ant-transfer-list {\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n}\n.ant-transfer-list-search-action {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-transfer-list-search-action .anticon {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-transfer-list-search-action .anticon:hover {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-transfer-list-header {\n  color: #000000;\n  background: #fff;\n  border-bottom: 1px solid #e8e8e8;\n  border-radius: 2px 2px 0 0;\n}\n.ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-transfer-list-content-item-disabled {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-transfer-list-body-not-found {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-transfer-list-footer {\n  border-top: 1px solid #e8e8e8;\n  border-radius: 0 0 2px 2px;\n}\n.ant-select-tree-checkbox {\n  color: #000000;\n}\n.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-inner,\n.ant-select-tree-checkbox:hover .ant-select-tree-checkbox-inner,\n.ant-select-tree-checkbox-input:focus + .ant-select-tree-checkbox-inner {\n  border-color: @primary-color;\n}\n.ant-select-tree-checkbox-checked::after {\n  border: 1px solid @primary-color;\n  border-radius: 2px;\n}\n.ant-select-tree-checkbox-inner {\n  background-color: #fff;\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n  border-collapse: separate;\n}\n.ant-select-tree-checkbox-inner::after {\n  border: 2px solid #fff;\n  border-top: 0;\n  border-left: 0;\n}\n.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner::after {\n  border: 2px solid #fff;\n  border-top: 0;\n  border-left: 0;\n}\n.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner {\n  background-color: @primary-color;\n  border-color: @primary-color;\n}\n.ant-select-tree-checkbox-disabled.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner::after {\n  border-color: rgba(0, 0, 0, 0.25);\n}\n.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner {\n  background-color: #f5f5f5;\n  border-color: #d9d9d9 !important;\n}\n.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner::after {\n  border-color: #f5f5f5;\n  border-collapse: separate;\n}\n.ant-select-tree-checkbox-disabled + span {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-select-tree-checkbox-wrapper {\n  color: #000000;\n}\n.ant-select-tree-checkbox-group {\n  color: #000000;\n}\n.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner {\n  background-color: #fff;\n  border-color: #d9d9d9;\n}\n.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner::after {\n  background-color: @primary-color;\n  border: 0;\n}\n.ant-select-tree-checkbox-indeterminate.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner::after {\n  background-color: rgba(0, 0, 0, 0.25);\n  border-color: rgba(0, 0, 0, 0.25);\n}\n.ant-select-tree {\n  color: #000000;\n}\n.ant-select-tree li .ant-select-tree-node-content-wrapper {\n  color: #000000;\n  border-radius: 2px;\n}\n.ant-select-tree li .ant-select-tree-node-content-wrapper:hover {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-select-tree li .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected {\n  background-color: rgba(58, 64, 99, 0.15);\n}\n.ant-select-tree li span.ant-select-tree-switcher,\n.ant-select-tree li span.ant-select-tree-iconEle {\n  border: 0 none;\n}\n.ant-select-tree li span.ant-select-icon_loading .ant-select-switcher-loading-icon {\n  color: @primary-color;\n}\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-loading-icon,\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-loading-icon {\n  color: @primary-color;\n}\nli.ant-select-tree-treenode-disabled > span:not(.ant-select-tree-switcher),\nli.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper,\nli.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper span {\n  color: rgba(0, 0, 0, 0.25);\n}\nli.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper:hover {\n  background: transparent;\n}\n.ant-select-tree-dropdown {\n  color: #000000;\n}\n.ant-select-tree-dropdown .ant-select-dropdown-search {\n  background: #fff;\n}\n.ant-select-tree-dropdown .ant-select-dropdown-search .ant-select-search__field {\n  border: 1px solid #d9d9d9;\n  border-radius: 4px;\n}\n.ant-select-tree-dropdown .ant-select-not-found {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper {\n  border-radius: 0;\n}\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:hover,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:hover {\n  background: transparent;\n}\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:hover::before,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:hover::before {\n  background: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper.ant-tree-node-selected,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper.ant-tree-node-selected {\n  color: #fff;\n  background: transparent;\n}\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-switcher,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-switcher {\n  color: #fff;\n}\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner {\n  border-color: @primary-color;\n}\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked::after,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked::after {\n  border-color: #fff;\n}\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner {\n  background: #fff;\n}\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after {\n  border-color: @primary-color;\n}\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper::before,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper::before {\n  background: @primary-color;\n}\n.ant-tree-checkbox {\n  color: #000000;\n}\n.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner,\n.ant-tree-checkbox:hover .ant-tree-checkbox-inner,\n.ant-tree-checkbox-input:focus + .ant-tree-checkbox-inner {\n  border-color: @primary-color;\n}\n.ant-tree-checkbox-checked::after {\n  border: 1px solid @primary-color;\n  border-radius: 2px;\n}\n.ant-tree-checkbox-inner {\n  background-color: #fff;\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n  border-collapse: separate;\n}\n.ant-tree-checkbox-inner::after {\n  border: 2px solid #fff;\n  border-top: 0;\n  border-left: 0;\n}\n.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after {\n  border: 2px solid #fff;\n  border-top: 0;\n  border-left: 0;\n}\n.ant-tree-checkbox-checked .ant-tree-checkbox-inner {\n  background-color: @primary-color;\n  border-color: @primary-color;\n}\n.ant-tree-checkbox-disabled.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after {\n  border-color: rgba(0, 0, 0, 0.25);\n}\n.ant-tree-checkbox-disabled .ant-tree-checkbox-inner {\n  background-color: #f5f5f5;\n  border-color: #d9d9d9 !important;\n}\n.ant-tree-checkbox-disabled .ant-tree-checkbox-inner::after {\n  border-color: #f5f5f5;\n  border-collapse: separate;\n}\n.ant-tree-checkbox-disabled + span {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-tree-checkbox-wrapper {\n  color: #000000;\n}\n.ant-tree-checkbox-group {\n  color: #000000;\n}\n.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner {\n  background-color: #fff;\n  border-color: #d9d9d9;\n}\n.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner::after {\n  background-color: @primary-color;\n  border: 0;\n}\n.ant-tree-checkbox-indeterminate.ant-tree-checkbox-disabled .ant-tree-checkbox-inner::after {\n  background-color: rgba(0, 0, 0, 0.25);\n  border-color: rgba(0, 0, 0, 0.25);\n}\n.ant-tree {\n  color: #000000;\n}\n.ant-tree li span[draggable],\n.ant-tree li span[draggable='true'] {\n  border-top: 2px transparent solid;\n  border-bottom: 2px transparent solid;\n}\n.ant-tree li.drag-over > span[draggable] {\n  color: white;\n  background-color: @primary-color;\n}\n.ant-tree li.drag-over-gap-top > span[draggable] {\n  border-top-color: @primary-color;\n}\n.ant-tree li.drag-over-gap-bottom > span[draggable] {\n  border-bottom-color: @primary-color;\n}\n.ant-tree li.filter-node > span {\n  color: #f5222d !important;\n}\n.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-loading-icon,\n.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-loading-icon {\n  color: @primary-color;\n}\n.ant-tree li .ant-tree-node-content-wrapper {\n  color: #000000;\n  border-radius: 2px;\n}\n.ant-tree li .ant-tree-node-content-wrapper:hover {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-tree li .ant-tree-node-content-wrapper.ant-tree-node-selected {\n  background-color: rgba(58, 64, 99, 0.15);\n}\n.ant-tree li span.ant-tree-switcher,\n.ant-tree li span.ant-tree-iconEle {\n  border: 0 none;\n}\nli.ant-tree-treenode-disabled > span:not(.ant-tree-switcher),\nli.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper,\nli.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper span {\n  color: rgba(0, 0, 0, 0.25);\n}\nli.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper:hover {\n  background: transparent;\n}\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher {\n  color: rgba(0, 0, 0, 0.45);\n  background: #fff;\n}\n.ant-tree.ant-tree-show-line li:not(:last-child)::before {\n  border-left: 1px solid #d9d9d9;\n}\n.ant-typography {\n  color: #000000;\n}\n.ant-typography.ant-typography-secondary {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-typography.ant-typography-warning {\n  color: #faad14;\n}\n.ant-typography.ant-typography-danger {\n  color: #f5222d;\n}\n.ant-typography.ant-typography-disabled {\n  color: rgba(0, 0, 0, 0.25);\n}\nh1.ant-typography,\n.ant-typography h1 {\n  color: rgba(0, 0, 0, 0.85);\n}\nh2.ant-typography,\n.ant-typography h2 {\n  color: rgba(0, 0, 0, 0.85);\n}\nh3.ant-typography,\n.ant-typography h3 {\n  color: rgba(0, 0, 0, 0.85);\n}\nh4.ant-typography,\n.ant-typography h4 {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-typography a {\n  color: @primary-color;\n}\n.ant-typography a:focus,\n.ant-typography a:hover {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-typography a:active {\n  color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-typography a[disabled] {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-typography code {\n  background: rgba(0, 0, 0, 0.06);\n  border: 1px solid rgba(0, 0, 0, 0.06);\n  border-radius: 3px;\n}\n.ant-typography mark {\n  background-color: #ffe58f;\n}\n.ant-typography-expand,\n.ant-typography-edit,\n.ant-typography-copy {\n  color: @primary-color;\n}\n.ant-typography-expand:focus,\n.ant-typography-edit:focus,\n.ant-typography-copy:focus,\n.ant-typography-expand:hover,\n.ant-typography-edit:hover,\n.ant-typography-copy:hover {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-typography-expand:active,\n.ant-typography-edit:active,\n.ant-typography-copy:active {\n  color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-typography-copy-success,\n.ant-typography-copy-success:hover,\n.ant-typography-copy-success:focus {\n  color: #52c41a;\n}\n.ant-typography-edit-content-confirm {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-upload {\n  color: #000000;\n}\n.ant-upload.ant-upload-select-picture-card {\n  background-color: #fafafa;\n  border: 1px dashed #d9d9d9;\n  border-radius: 2px;\n}\n.ant-upload.ant-upload-select-picture-card:hover {\n  border-color: @primary-color;\n}\n.ant-upload.ant-upload-drag {\n  background: #fafafa;\n  border: 1px dashed #d9d9d9;\n  border-radius: 2px;\n}\n.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled) {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 7)`);\n}\n.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover {\n  border-color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon {\n  color: color(~`colorPalette(\"@{primary-color}\", 5)`);\n}\n.ant-upload.ant-upload-drag p.ant-upload-text {\n  color: rgba(0, 0, 0, 0.85);\n}\n.ant-upload.ant-upload-drag p.ant-upload-hint {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-upload.ant-upload-drag .anticon-plus {\n  color: rgba(0, 0, 0, 0.25);\n}\n.ant-upload.ant-upload-drag .anticon-plus:hover {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-upload.ant-upload-drag:hover .anticon-plus {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-upload-list {\n  color: #000000;\n}\n.ant-upload-list-item-info .anticon-loading,\n.ant-upload-list-item-info .anticon-paper-clip {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-upload-list-item .anticon-close {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-upload-list-item .anticon-close:hover {\n  color: #000000;\n}\n.ant-upload-list-item:hover .ant-upload-list-item-info {\n  background-color: color(~`colorPalette(\"@{primary-color}\", 1)`);\n}\n.ant-upload-list-item-error,\n.ant-upload-list-item-error .anticon-paper-clip,\n.ant-upload-list-item-error .ant-upload-list-item-name {\n  color: #f5222d;\n}\n.ant-upload-list-item-error .anticon-close {\n  color: #f5222d !important;\n}\n.ant-upload-list-picture .ant-upload-list-item,\n.ant-upload-list-picture-card .ant-upload-list-item {\n  border: 1px solid #d9d9d9;\n  border-radius: 2px;\n}\n.ant-upload-list-picture .ant-upload-list-item:hover,\n.ant-upload-list-picture-card .ant-upload-list-item:hover {\n  background: transparent;\n}\n.ant-upload-list-picture .ant-upload-list-item-error,\n.ant-upload-list-picture-card .ant-upload-list-item-error {\n  border-color: #f5222d;\n}\n.ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info,\n.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info {\n  background: transparent;\n}\n.ant-upload-list-picture .ant-upload-list-item-uploading,\n.ant-upload-list-picture-card .ant-upload-list-item-uploading {\n  border-style: dashed;\n}\n.ant-upload-list-picture-card .ant-upload-list-item-info::before {\n  background-color: rgba(0, 0, 0, 0.5);\n}\n.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye-o,\n.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete {\n  color: rgba(255, 255, 255, 0.85);\n}\n.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye-o:hover,\n.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete:hover {\n  color: #ffffff;\n}\n.ant-upload-list-picture-card .ant-upload-list-item-uploading.ant-upload-list-item {\n  background-color: #fafafa;\n}\n.ant-upload-list-picture-card .ant-upload-list-item-uploading-text {\n  color: rgba(0, 0, 0, 0.45);\n}\n.ant-upload-list .ant-upload-success-icon {\n  color: #52c41a;\n}\n.ant-menu-root.ant-menu-inline,\n.ant-menu-root.ant-menu-vertical {\n  background: @primary-color;\n  border-right: 1px solid @primary-color;\n  color: #ffffff;\n}\n.ant-menu-root.ant-menu-inline a,\n.ant-menu-root.ant-menu-vertical a {\n  color: #ffffff;\n}\n.ant-menu-root.ant-menu-inline .ant-menu-submenu-selected,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu-selected {\n  color: #ffffff;\n}\n.ant-menu-root.ant-menu-inline .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,\n.ant-menu-root.ant-menu-vertical .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,\n.ant-menu-root.ant-menu-inline .ant-menu-submenu-active,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu-active {\n  color: #ffffff;\n}\n.ant-menu-root.ant-menu-inline .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\n.ant-menu-root.ant-menu-inline .ant-menu-submenu-title .ant-menu-submenu-arrow::after,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu-title .ant-menu-submenu-arrow::after {\n  background: #ffffff;\n}\n.ant-menu-root.ant-menu-inline .ant-menu-submenu-title:hover,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu-title:hover {\n  color: #ffffff;\n}\n.ant-menu-root.ant-menu-inline .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before,\n.ant-menu-root.ant-menu-inline .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after {\n  background: #ffffff;\n}\n.ant-menu-root.ant-menu-inline .ant-menu-submenu > .ant-menu,\n.ant-menu-root.ant-menu-vertical .ant-menu-submenu > .ant-menu {\n  background-color: rgba(58, 64, 99, 0.15);\n}\n.ant-menu-root.ant-menu-inline .ant-menu-item > a:hover,\n.ant-menu-root.ant-menu-vertical .ant-menu-item > a:hover {\n  color: #ffffff;\n}\n.ant-menu-horizontal > .ant-menu-item-selected {\n  color: #ffffff;\n}\n.sider-custom .ant-menu-submenu-title {\n  color: #ffffff;\n}\n.bg--primary {\n  background: @primary-color;\n}\n.header .ant-menu {\n  background: transparent;\n  color: #ffffff;\n}\n.header .ant-menu .ant-menu-item:hover {\n  color: #ffffff;\n}\n.header__trigger {\n  color: #ffffff;\n}\n\n"
  },
  {
    "path": "scripts/build.js",
    "content": "'use strict';\n\n// Do this as the first thing so that any code reading it knows the right env.\nprocess.env.BABEL_ENV = 'production';\nprocess.env.NODE_ENV = 'production';\nprocess.env.REACT_ADMIN = process.argv.slice(2)[0];\n\n// Makes the script crash on unhandled rejections instead of silently\n// ignoring them. In the future, promise rejections that are not handled will\n// terminate the Node.js process with a non-zero exit code.\nprocess.on('unhandledRejection', (err) => {\n    throw err;\n});\n\n// Ensure environment variables are read.\nrequire('../config/env');\n\nconst path = require('path');\nconst chalk = require('react-dev-utils/chalk');\nconst fs = require('fs-extra');\nconst webpack = require('webpack');\nconst configFactory = require('../config/webpack.config');\nconst paths = require('../config/paths');\nconst checkRequiredFiles = require('react-dev-utils/checkRequiredFiles');\nconst formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');\nconst printHostingInstructions = require('react-dev-utils/printHostingInstructions');\nconst FileSizeReporter = require('react-dev-utils/FileSizeReporter');\nconst printBuildError = require('react-dev-utils/printBuildError');\n\nconst measureFileSizesBeforeBuild = FileSizeReporter.measureFileSizesBeforeBuild;\nconst printFileSizesAfterBuild = FileSizeReporter.printFileSizesAfterBuild;\nconst useYarn = fs.existsSync(paths.yarnLockFile);\n\n// These sizes are pretty large. We'll warn for bundles exceeding them.\nconst WARN_AFTER_BUNDLE_GZIP_SIZE = 512 * 1024;\nconst WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024;\n\nconst isInteractive = process.stdout.isTTY;\n\n// Warn and crash if required files are missing\nif (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) {\n    process.exit(1);\n}\n\n// Generate configuration\nconst config = configFactory('production');\n\n// We require that you explicitly set browsers and do not fall back to\n// browserslist defaults.\nconst { checkBrowsers } = require('react-dev-utils/browsersHelper');\ncheckBrowsers(paths.appPath, isInteractive)\n    .then(() => {\n        // First, read the current file sizes in build directory.\n        // This lets us display how much they changed later.\n        return measureFileSizesBeforeBuild(paths.appBuild);\n    })\n    .then((previousFileSizes) => {\n        // Remove all content but keep the directory so that\n        // if you're in it, you don't end up in Trash\n        fs.emptyDirSync(paths.appBuild);\n        // Merge with the public folder\n        copyPublicFolder();\n        // Start the webpack build\n        return build(previousFileSizes);\n    })\n    .then(\n        ({ stats, previousFileSizes, warnings }) => {\n            if (warnings.length) {\n                console.log(chalk.yellow('Compiled with warnings.\\n'));\n                console.log(warnings.join('\\n\\n'));\n                console.log(\n                    '\\nSearch for the ' +\n                        chalk.underline(chalk.yellow('keywords')) +\n                        ' to learn more about each warning.'\n                );\n                console.log(\n                    'To ignore, add ' +\n                        chalk.cyan('// eslint-disable-next-line') +\n                        ' to the line before.\\n'\n                );\n            } else {\n                console.log(chalk.green('Compiled successfully.\\n'));\n            }\n\n            console.log('File sizes after gzip:\\n');\n            printFileSizesAfterBuild(\n                stats,\n                previousFileSizes,\n                paths.appBuild,\n                WARN_AFTER_BUNDLE_GZIP_SIZE,\n                WARN_AFTER_CHUNK_GZIP_SIZE\n            );\n            console.log();\n\n            const appPackage = require(paths.appPackageJson);\n            const publicUrl = paths.publicUrl;\n            const publicPath = config.output.publicPath;\n            const buildFolder = path.relative(process.cwd(), paths.appBuild);\n            printHostingInstructions(appPackage, publicUrl, publicPath, buildFolder, useYarn);\n        },\n        (err) => {\n            const tscCompileOnError = process.env.TSC_COMPILE_ON_ERROR === 'true';\n            if (tscCompileOnError) {\n                console.log(\n                    chalk.yellow(\n                        'Compiled with the following type errors (you may want to check these before deploying your app):\\n'\n                    )\n                );\n                printBuildError(err);\n            } else {\n                console.log(chalk.red('Failed to compile.\\n'));\n                printBuildError(err);\n                process.exit(1);\n            }\n        }\n    )\n    .catch((err) => {\n        if (err && err.message) {\n            console.log(err.message);\n        }\n        process.exit(1);\n    });\n\n// Create the production build and print the deployment instructions.\nfunction build(previousFileSizes) {\n    // We used to support resolving modules according to `NODE_PATH`.\n    // This now has been deprecated in favor of jsconfig/tsconfig.json\n    // This lets you use absolute paths in imports inside large monorepos:\n    if (process.env.NODE_PATH) {\n        console.log(\n            chalk.yellow(\n                'Setting NODE_PATH to resolve modules absolutely has been deprecated in favor of setting baseUrl in jsconfig.json (or tsconfig.json if you are using TypeScript) and will be removed in a future major release of create-react-app.'\n            )\n        );\n        console.log();\n    }\n\n    console.log('Creating an optimized production build...');\n\n    const compiler = webpack(config);\n    return new Promise((resolve, reject) => {\n        compiler.run((err, stats) => {\n            let messages;\n            if (err) {\n                if (!err.message) {\n                    return reject(err);\n                }\n                messages = formatWebpackMessages({\n                    errors: [err.message],\n                    warnings: [],\n                });\n            } else {\n                messages = formatWebpackMessages(\n                    stats.toJson({ all: false, warnings: true, errors: true })\n                );\n            }\n            if (messages.errors.length) {\n                // Only keep the first error. Others are often indicative\n                // of the same problem, but confuse the reader with noise.\n                if (messages.errors.length > 1) {\n                    messages.errors.length = 1;\n                }\n                return reject(new Error(messages.errors.join('\\n\\n')));\n            }\n            if (\n                process.env.CI &&\n                (typeof process.env.CI !== 'string' || process.env.CI.toLowerCase() !== 'false') &&\n                messages.warnings.length\n            ) {\n                console.log(\n                    chalk.yellow(\n                        '\\nTreating warnings as errors because process.env.CI = true.\\n' +\n                            'Most CI servers set it automatically.\\n'\n                    )\n                );\n                return reject(new Error(messages.warnings.join('\\n\\n')));\n            }\n\n            return resolve({\n                stats,\n                previousFileSizes,\n                warnings: messages.warnings,\n            });\n        });\n    });\n}\n\nfunction copyPublicFolder() {\n    fs.copySync(paths.appPublic, paths.appBuild, {\n        dereference: true,\n        filter: (file) => file !== paths.appHtml,\n    });\n}\n"
  },
  {
    "path": "scripts/start.js",
    "content": "'use strict';\n\n// Do this as the first thing so that any code reading it knows the right env.\nprocess.env.BABEL_ENV = 'development';\nprocess.env.NODE_ENV = 'development';\nprocess.env.REACT_ADMIN = process.argv.slice(2)[0];\n\n// Makes the script crash on unhandled rejections instead of silently\n// ignoring them. In the future, promise rejections that are not handled will\n// terminate the Node.js process with a non-zero exit code.\nprocess.on('unhandledRejection', (err) => {\n    throw err;\n});\n\n// Ensure environment variables are read.\nrequire('../config/env');\n\nconst fs = require('fs');\nconst chalk = require('react-dev-utils/chalk');\nconst webpack = require('webpack');\nconst WebpackDevServer = require('webpack-dev-server');\nconst clearConsole = require('react-dev-utils/clearConsole');\nconst checkRequiredFiles = require('react-dev-utils/checkRequiredFiles');\nconst {\n    choosePort,\n    createCompiler,\n    prepareProxy,\n    prepareUrls,\n} = require('react-dev-utils/WebpackDevServerUtils');\nconst openBrowser = require('react-dev-utils/openBrowser');\nconst paths = require('../config/paths');\nconst configFactory = require('../config/webpack.config');\nconst createDevServerConfig = require('../config/webpackDevServer.config');\n\nconst useYarn = fs.existsSync(paths.yarnLockFile);\nconst isInteractive = process.stdout.isTTY;\n\n// Warn and crash if required files are missing\nif (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) {\n    process.exit(1);\n}\n\n// Tools like Cloud9 rely on this.\nconst DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;\nconst HOST = process.env.HOST || '0.0.0.0';\n\nif (process.env.HOST) {\n    console.log(\n        chalk.cyan(\n            `Attempting to bind to HOST environment variable: ${chalk.yellow(\n                chalk.bold(process.env.HOST)\n            )}`\n        )\n    );\n    console.log(\n        `If this was unintentional, check that you haven't mistakenly set it in your shell.`\n    );\n    console.log(`Learn more here: ${chalk.yellow('https://bit.ly/CRA-advanced-config')}`);\n    console.log();\n}\n\n// We require that you explicitly set browsers and do not fall back to\n// browserslist defaults.\nconst { checkBrowsers } = require('react-dev-utils/browsersHelper');\ncheckBrowsers(paths.appPath, isInteractive)\n    .then(() => {\n        // We attempt to use the default port but if it is busy, we offer the user to\n        // run on a different port. `choosePort()` Promise resolves to the next free port.\n        return choosePort(HOST, DEFAULT_PORT);\n    })\n    .then((port) => {\n        if (port == null) {\n            // We have not found a port.\n            return;\n        }\n        const config = configFactory('development');\n        const protocol = process.env.HTTPS === 'true' ? 'https' : 'http';\n        const appName = require(paths.appPackageJson).name;\n        const useTypeScript = fs.existsSync(paths.appTsConfig);\n        const tscCompileOnError = process.env.TSC_COMPILE_ON_ERROR === 'true';\n        const urls = prepareUrls(protocol, HOST, port);\n        const devSocket = {\n            warnings: (warnings) => devServer.sockWrite(devServer.sockets, 'warnings', warnings),\n            errors: (errors) => devServer.sockWrite(devServer.sockets, 'errors', errors),\n        };\n        // Create a webpack compiler that is configured with custom messages.\n        const compiler = createCompiler({\n            appName,\n            config,\n            devSocket,\n            urls,\n            useYarn,\n            useTypeScript,\n            tscCompileOnError,\n            webpack,\n        });\n        // Load proxy config\n        const proxySetting = require(paths.appPackageJson).proxy;\n        const proxyConfig = prepareProxy(proxySetting, paths.appPublic);\n        // Serve webpack assets generated by the compiler over a web server.\n        const serverConfig = createDevServerConfig(proxyConfig, urls.lanUrlForConfig);\n        const devServer = new WebpackDevServer(compiler, serverConfig);\n        // Launch WebpackDevServer.\n        devServer.listen(port, HOST, (err) => {\n            if (err) {\n                return console.log(err);\n            }\n            if (isInteractive) {\n                clearConsole();\n            }\n\n            // We used to support resolving modules according to `NODE_PATH`.\n            // This now has been deprecated in favor of jsconfig/tsconfig.json\n            // This lets you use absolute paths in imports inside large monorepos:\n            if (process.env.NODE_PATH) {\n                console.log(\n                    chalk.yellow(\n                        'Setting NODE_PATH to resolve modules absolutely has been deprecated in favor of setting baseUrl in jsconfig.json (or tsconfig.json if you are using TypeScript) and will be removed in a future major release of create-react-app.'\n                    )\n                );\n                console.log();\n            }\n\n            console.log(chalk.cyan('Starting the development server...\\n'));\n            openBrowser(urls.localUrlForBrowser);\n        });\n\n        ['SIGINT', 'SIGTERM'].forEach(function (sig) {\n            process.on(sig, function () {\n                devServer.close();\n                process.exit();\n            });\n        });\n    })\n    .catch((err) => {\n        if (err && err.message) {\n            console.log(err.message);\n        }\n        process.exit(1);\n    });\n"
  },
  {
    "path": "scripts/test.js",
    "content": "'use strict';\n\n// Do this as the first thing so that any code reading it knows the right env.\nprocess.env.BABEL_ENV = 'test';\nprocess.env.NODE_ENV = 'test';\nprocess.env.PUBLIC_URL = '';\n\n// Makes the script crash on unhandled rejections instead of silently\n// ignoring them. In the future, promise rejections that are not handled will\n// terminate the Node.js process with a non-zero exit code.\nprocess.on('unhandledRejection', err => {\n  throw err;\n});\n\n// Ensure environment variables are read.\nrequire('../config/env');\n\n\nconst jest = require('jest');\nconst execSync = require('child_process').execSync;\nlet argv = process.argv.slice(2);\n\nfunction isInGitRepository() {\n  try {\n    execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore' });\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction isInMercurialRepository() {\n  try {\n    execSync('hg --cwd . root', { stdio: 'ignore' });\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n// Watch unless on CI or explicitly running all tests\nif (\n  !process.env.CI &&\n  argv.indexOf('--watchAll') === -1 &&\n  argv.indexOf('--watchAll=false') === -1\n) {\n  // https://github.com/facebook/create-react-app/issues/5210\n  const hasSourceControl = isInGitRepository() || isInMercurialRepository();\n  argv.push(hasSourceControl ? '--watch' : '--watchAll');\n}\n\n\njest.run(argv);\n"
  },
  {
    "path": "src/App.test.tsx",
    "content": "import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\n\nit('renders without crashing', () => {\n  const div = document.createElement('div');\n  ReactDOM.render(<App />, div);\n  ReactDOM.unmountComponentAtNode(div);\n});\n"
  },
  {
    "path": "src/App.tsx",
    "content": "import React, { useState, useEffect } from 'react';\nimport { Layout, notification } from 'antd';\nimport umbrella from 'umbrella-storage';\nimport { useAlita } from 'redux-alita';\nimport Routes from './routes';\nimport SiderCustom from './components/SiderCustom';\nimport HeaderCustom from './components/HeaderCustom';\nimport { ThemePicker, Copyright } from './components/widget';\nimport { checkLogin } from './utils';\nimport { fetchMenu } from './service';\nimport classNames from 'classnames';\nimport { SmileOutlined } from '@ant-design/icons';\n\nconst { Content, Footer } = Layout;\n\ntype AppProps = {};\n\nfunction checkIsMobile() {\n    const clientWidth = window.innerWidth;\n    return clientWidth <= 992;\n}\n\nlet _resizeThrottled = false;\nfunction resizeListener(handler: (isMobile: boolean) => void) {\n    const delay = 250;\n    if (!_resizeThrottled) {\n        _resizeThrottled = true;\n        const timer = setTimeout(() => {\n            handler(checkIsMobile());\n            _resizeThrottled = false;\n            clearTimeout(timer);\n        }, delay);\n    }\n}\nfunction handleResize(handler: (isMobile: boolean) => void) {\n    window.addEventListener('resize', resizeListener.bind(null, handler));\n}\n\nfunction openFNotification() {\n    const openNotification = () => {\n        notification.open({\n            message: '博主-yezihaohao',\n            description: (\n                <div>\n                    <p>\n                        GitHub地址：\n                        <a\n                            href=\"https://github.com/yezihaohao\"\n                            target=\"_blank\"\n                            rel=\"noopener noreferrer\"\n                        >\n                            https://github.com/yezihaohao\n                        </a>\n                    </p>\n                    <p>\n                        博客地址：\n                        <a\n                            href=\"https://yezihaohao.github.io/\"\n                            target=\"_blank\"\n                            rel=\"noopener noreferrer\"\n                        >\n                            https://yezihaohao.github.io/\n                        </a>\n                    </p>\n                </div>\n            ),\n            icon: <SmileOutlined style={{ color: 'red' }} />,\n            duration: 0,\n        });\n        umbrella.setLocalStorage('hideBlog', true);\n    };\n    const storageFirst = umbrella.getLocalStorage('hideBlog');\n    if (!storageFirst) {\n        openNotification();\n    }\n}\n\n/**\n * 获取服务端异步菜单\n * @param handler 执行回调\n */\nfunction fetchSmenu(handler: any) {\n    const setAlitaMenu = (menus: any) => {\n        handler(menus);\n        // this.props.setAlitaState({ stateName: 'smenus', data: menus });\n    };\n    setAlitaMenu(umbrella.getLocalStorage('smenus') || []);\n    fetchMenu().then((smenus) => {\n        setAlitaMenu(smenus);\n        umbrella.setLocalStorage('smenus', smenus);\n    });\n}\n\nconst App = (props: AppProps) => {\n    const [collapsed, setCollapsed] = useState<boolean>(false);\n    const [auth, responsive, setAlita] = useAlita(\n        { auth: { permissions: null } },\n        { responsive: { isMobile: false } },\n        { light: true }\n    );\n\n    useEffect(() => {\n        let user = umbrella.getLocalStorage('user');\n        user && setAlita('auth', user);\n        setAlita('responsive', { isMobile: checkIsMobile() });\n\n        handleResize((isMobile: boolean) => setAlita('responsive', { isMobile }));\n        openFNotification();\n        fetchSmenu((smenus: any[]) => setAlita('smenus', smenus));\n    }, [setAlita]);\n\n    function toggle() {\n        setCollapsed(!collapsed);\n    }\n    return (\n        <Layout>\n            {!responsive.isMobile && checkLogin(auth.permissions) && (\n                <SiderCustom collapsed={collapsed} />\n            )}\n            <ThemePicker />\n            <Layout\n                className={classNames('app_layout', { 'app_layout-mobile': responsive.isMobile })}\n            >\n                <HeaderCustom toggle={toggle} collapsed={collapsed} user={auth || {}} />\n                <Content className=\"app_layout_content\">\n                    <Routes auth={auth} />\n                </Content>\n                <Footer className=\"app_layout_foot\">\n                    <Copyright />\n                </Footer>\n            </Layout>\n        </Layout>\n    );\n};\n\nexport default App;\n"
  },
  {
    "path": "src/Page.tsx",
    "content": "import React from 'react';\nimport { HashRouter as Router, Route, Switch, Redirect } from 'react-router-dom';\nimport NotFound from './components/pages/NotFound';\nimport Login from './components/pages/Login';\nimport App from './App';\n\nexport default () => (\n    <Router>\n        <Switch>\n            <Route exact path=\"/\" render={() => <Redirect to=\"/app/dashboard/index\" push />} />\n            <Route path=\"/app\" component={App} />\n            <Route path=\"/404\" component={NotFound} />\n            <Route path=\"/login\" component={Login} />\n            <Route component={NotFound} />\n        </Switch>\n    </Router>\n);\n"
  },
  {
    "path": "src/components/HeaderCustom.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/13.\n */\nimport React, { useEffect, useState } from 'react';\nimport screenfull from 'screenfull';\nimport avater from '../style/imgs/b1.jpg';\nimport SiderCustom from './SiderCustom';\nimport { Menu, Layout, Badge, Popover } from 'antd';\nimport { gitOauthToken, gitOauthInfo } from '../service';\nimport { parseQuery } from '../utils';\nimport { useHistory } from 'react-router-dom';\nimport { PwaInstaller } from './widget';\nimport { useAlita } from 'redux-alita';\nimport umbrella from 'umbrella-storage';\nimport { useSwitch } from '../utils/hooks';\nimport {\n    ArrowsAltOutlined,\n    BarsOutlined,\n    MenuFoldOutlined,\n    MenuUnfoldOutlined,\n    NotificationOutlined,\n} from '@ant-design/icons';\nconst { Header } = Layout;\nconst SubMenu = Menu.SubMenu;\nconst MenuItemGroup = Menu.ItemGroup;\n\ntype HeaderCustomProps = {\n    toggle: () => void;\n    collapsed: boolean;\n    user: any;\n    responsive?: any;\n    path?: string;\n};\n\nconst HeaderCustom = (props: HeaderCustomProps) => {\n    const [user, setUser] = useState<any>();\n    const [responsive] = useAlita('responsive', { light: true });\n    const [visible, turn] = useSwitch();\n    const history = useHistory();\n\n    useEffect(() => {\n        const query = parseQuery();\n        let storageUser = umbrella.getLocalStorage('user');\n\n        if (!storageUser && query.code) {\n            gitOauthToken(query.code as string).then((res: any) => {\n                gitOauthInfo(res.access_token).then((info: any) => {\n                    setUser({\n                        user: info,\n                    });\n                    umbrella.setLocalStorage('user', info);\n                });\n            });\n        } else {\n            setUser({\n                user: storageUser,\n            });\n        }\n    }, []);\n\n    const screenFull = () => {\n        if (screenfull.isEnabled) {\n            screenfull.toggle();\n        }\n    };\n    const menuClick = (e: any) => {\n        e.key === 'logout' && logout();\n    };\n    const logout = () => {\n        umbrella.removeLocalStorage('user');\n        history.push('/login');\n    };\n    return (\n        <Header className=\"custom-theme header\">\n            {responsive?.isMobile ? (\n                <Popover\n                    content={<SiderCustom popoverHide={turn.turnOff} />}\n                    trigger=\"click\"\n                    placement=\"bottomLeft\"\n                    visible={visible}\n                    onVisibleChange={(visible) => (visible ? turn.turnOn() : turn.turnOff())}\n                >\n                    <BarsOutlined className=\"header__trigger custom-trigger\" />\n                </Popover>\n            ) : props.collapsed ? (\n                <MenuUnfoldOutlined\n                    className=\"header__trigger custom-trigger\"\n                    onClick={props.toggle}\n                />\n            ) : (\n                <MenuFoldOutlined\n                    className=\"header__trigger custom-trigger\"\n                    onClick={props.toggle}\n                />\n            )}\n            <Menu\n                mode=\"horizontal\"\n                style={{ lineHeight: '64px', float: 'right' }}\n                onClick={menuClick}\n            >\n                <Menu.Item key=\"pwa\">\n                    <PwaInstaller />\n                </Menu.Item>\n                <Menu.Item key=\"full\">\n                    <ArrowsAltOutlined onClick={screenFull} />\n                </Menu.Item>\n                <Menu.Item key=\"1\">\n                    <Badge count={25} overflowCount={10} style={{ marginLeft: 10 }}>\n                        <NotificationOutlined />\n                    </Badge>\n                </Menu.Item>\n                <SubMenu\n                    title={\n                        <span className=\"avatar\">\n                            <img src={avater} alt=\"头像\" />\n                            <i className=\"on bottom b-white\" />\n                        </span>\n                    }\n                >\n                    <MenuItemGroup title=\"用户中心\">\n                        <Menu.Item key=\"setting:1\">你好 - {user?.userName}</Menu.Item>\n                        <Menu.Item key=\"setting:2\">个人信息</Menu.Item>\n                        <Menu.Item key=\"logout\">\n                            <span onClick={logout}>退出登录</span>\n                        </Menu.Item>\n                    </MenuItemGroup>\n                    <MenuItemGroup title=\"设置中心\">\n                        <Menu.Item key=\"setting:3\">个人设置</Menu.Item>\n                        <Menu.Item key=\"setting:4\">系统设置</Menu.Item>\n                    </MenuItemGroup>\n                </SubMenu>\n            </Menu>\n        </Header>\n    );\n};\n\nexport default HeaderCustom;\n"
  },
  {
    "path": "src/components/Page.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/16.\n */\nimport React, { ReactNode } from 'react';\n\ninterface PageProps {\n    children?: ReactNode;\n}\n\nconst Page = (props: PageProps) => {\n    return <div style={{ height: '100%' }}>{props.children}</div>;\n};\n\nexport default Page;\n"
  },
  {
    "path": "src/components/SiderCustom.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/13.\n */\nimport React, { useState, useEffect } from 'react';\nimport { Layout } from 'antd';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport routes from '../routes/config';\nimport SiderMenu from './SiderMenu';\nimport { useAlita } from 'redux-alita';\nimport { useSwitch } from '../utils/hooks';\nimport { usePrevious } from 'ahooks';\nconst { Sider } = Layout;\n\ntype SiderCustomProps = RouteComponentProps<any> & {\n    popoverHide?: () => void;\n    collapsed?: boolean;\n    smenus?: any;\n};\ninterface IMenu {\n    openKeys: string[];\n    selectedKey: string;\n}\n\nconst SiderCustom = (props: SiderCustomProps) => {\n    const [collapsed, tCollapsed] = useSwitch();\n    const [firstHide, tFirstHide] = useSwitch();\n    const [menu, setMenu] = useState<IMenu>({ openKeys: [''], selectedKey: '' });\n    // 异步菜单\n    const [smenus] = useAlita({ smenus: [] }, { light: true });\n    const { location, collapsed: pCollapsed } = props;\n    const prePathname = usePrevious(props.location.pathname);\n\n    useEffect(() => {\n        const recombineOpenKeys = (openKeys: string[]) => {\n            let i = 0;\n            let strPlus = '';\n            let tempKeys: string[] = [];\n            // 多级菜单循环处理\n            while (i < openKeys.length) {\n                strPlus += openKeys[i];\n                tempKeys.push(strPlus);\n                i++;\n            }\n            return tempKeys;\n        };\n        const getOpenAndSelectKeys = () => {\n            return {\n                openKeys: recombineOpenKeys(location.pathname.match(/[/](\\w+)/gi) || []),\n                selectedKey: location.pathname,\n            };\n        };\n\n        if (pCollapsed !== collapsed) {\n            setMenu(getOpenAndSelectKeys());\n            tCollapsed.setSwitcher(!!pCollapsed);\n            tFirstHide.setSwitcher(!!pCollapsed);\n        }\n\n        if (prePathname !== location.pathname) {\n            setMenu(getOpenAndSelectKeys());\n        }\n    }, [prePathname, location.pathname, collapsed, tFirstHide, tCollapsed, pCollapsed]);\n\n    const menuClick = (e: any) => {\n        setMenu((state) => ({ ...state, selectedKey: e.key }));\n        props.popoverHide?.(); // 响应式布局控制小屏幕点击菜单时隐藏菜单操作\n    };\n\n    const openMenu: any = (v: string[]) => {\n        setMenu((state) => ({ ...state, openKeys: v }));\n        tFirstHide.turnOff();\n    };\n\n    return (\n        <Sider\n            trigger={null}\n            breakpoint=\"lg\"\n            collapsed={collapsed}\n            style={{ overflowY: 'auto' }}\n            className=\"sider-custom\"\n        >\n            <div className=\"logo\" />\n            <SiderMenu\n                menus={[...routes.menus, ...smenus]}\n                onClick={menuClick}\n                mode=\"inline\"\n                selectedKeys={[menu.selectedKey]}\n                openKeys={firstHide ? [] : menu.openKeys}\n                onOpenChange={openMenu}\n            />\n            <style>\n                {`\n                    #nprogress .spinner{\n                        left: ${collapsed ? '70px' : '206px'};\n                        right: 0 !important;\n                    }\n                    `}\n            </style>\n        </Sider>\n    );\n};\n\nexport default withRouter(SiderCustom);\n"
  },
  {
    "path": "src/components/SiderMenu.tsx",
    "content": "import React, { useState, useEffect } from 'react';\nimport { Menu } from 'antd';\nimport { Link } from 'react-router-dom';\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';\nimport { IFMenu } from '../routes/config';\nimport { MenuProps } from 'antd/lib/menu';\n\nconst renderMenuItem = (\n    item: IFMenu // item.route 菜单单独跳转的路由\n) => (\n    <Menu.Item key={item.key}>\n        <Link to={(item.route || item.key) + (item.query || '')}>\n            {/* {item.icon && <Icon type={item.icon} />} */}\n            <span className=\"nav-text\">{item.title}</span>\n        </Link>\n    </Menu.Item>\n);\n\nconst renderSubMenu = (item: IFMenu) => {\n    return (\n        <Menu.SubMenu\n            key={item.key}\n            title={\n                <span>\n                    {/* {item.icon && <Icon type={item.icon} />} */}\n                    <span className=\"nav-text\">{item.title}</span>\n                </span>\n            }\n        >\n            {item.subs!.map((sub) => (sub.subs ? renderSubMenu(sub) : renderMenuItem(sub)))}\n        </Menu.SubMenu>\n    );\n};\n\ntype SiderMenuProps = MenuProps & {\n    menus: any;\n    onClick: (e: any) => void;\n    selectedKeys: string[];\n    openKeys?: string[];\n    onOpenChange: (v: string[]) => void;\n};\n\nconst SiderMenu = ({ menus, ...props }: SiderMenuProps) => {\n    const [dragItems, setDragItems] = useState<any>([]);\n\n    useEffect(() => {\n        setDragItems(menus);\n    }, [menus]);\n\n    const reorder = (list: any, startIndex: number, endIndex: number) => {\n        const result = Array.from(list);\n        const [removed] = result.splice(startIndex, 1);\n        result.splice(endIndex, 0, removed);\n        return result;\n    };\n    const onDragEnd = (result: any) => {\n        // dropped outside the list\n        if (!result.destination) {\n            return;\n        }\n\n        const _items = reorder(dragItems, result.source.index, result.destination.index);\n        setDragItems(_items);\n    };\n    return (\n        <DragDropContext onDragEnd={onDragEnd}>\n            <Droppable droppableId=\"droppable\">\n                {(provided, snapshot) => (\n                    <div ref={provided.innerRef} {...provided.droppableProps}>\n                        {dragItems.map((item: IFMenu, index: number) => (\n                            <Draggable key={item.key} draggableId={item.key} index={index}>\n                                {(provided, snapshot) => (\n                                    <div\n                                        ref={provided.innerRef}\n                                        {...provided.draggableProps}\n                                        {...provided.dragHandleProps}\n                                        onDragStart={(e: React.DragEvent<any>) =>\n                                            provided.dragHandleProps &&\n                                            provided.dragHandleProps.onDragStart(e as any)\n                                        }\n                                    >\n                                        <Menu {...props}>\n                                            {item.subs!\n                                                ? renderSubMenu(item)\n                                                : renderMenuItem(item)}\n                                        </Menu>\n                                    </div>\n                                )}\n                            </Draggable>\n                        ))}\n                        {provided.placeholder}\n                    </div>\n                )}\n            </Droppable>\n        </DragDropContext>\n    );\n};\n\nexport default React.memo(SiderMenu);\n"
  },
  {
    "path": "src/components/animation/BasicAnimations.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/5/8.\n */\nimport React from 'react';\nimport { Row, Col, Card, Switch } from 'antd';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\n\nclass BasicAnimations extends React.Component {\n    state = {\n        animated: false,\n        animatedOne: -1,\n    };\n    animatedAll = (checked: boolean) => {\n        checked && this.setState({ animated: true });\n        !checked && this.setState({ animated: false });\n    };\n    animatedOne = (i: number) => {\n        this.setState({ animatedOne: i });\n    };\n    animatedOneOver = () => {\n        this.setState({ animatedOne: -1 });\n    };\n    render() {\n        const animations = [\n            'bounce',\n            'flash',\n            'rubberBand',\n            'shake',\n            'headShake',\n            'swing',\n            'tada',\n            'wobble',\n            'jello',\n            'bounceIn',\n            'bounceInDown',\n            'bounceInLeft',\n            'bounceInRight',\n            'bounceOut',\n            'bounceOutDown',\n            'bounceOutLeft',\n            'bounceOutLeft',\n            'bounceOutUp',\n            'fadeIn',\n            'fadeInDown',\n            'fadeInDownBig',\n            'fadeInLeft',\n            'fadeInLeftBig',\n            'fadeInRight',\n            'fadeInRightBig',\n            'fadeInUp',\n            'fadeInUpBig',\n            'fadeOut',\n            'fadeOutDown',\n            'fadeOutDownBig',\n            'fadeOutLeft',\n            'fadeOutLeftBig',\n            'fadeOutRight',\n            'fadeOutRightBig',\n            'fadeOutUp',\n            'fadeOutUpBig',\n            'flipInX',\n            'flipInY',\n            'flipOutX',\n            'flipOutY',\n            'lightSpeedIn',\n            'lightSpeedOut',\n            'rotateIn',\n            'rotateInDownLeft',\n            'rotateInDownRight',\n            'rotateInUpLeft',\n            'rotateInUpRight',\n            'rotateOut',\n            'rotateOutDownLeft',\n            'rotateOutDownRight',\n            'rotateOutUpLeft',\n            'rotateOutUpRight',\n            'hinge',\n            'jackInTheBox',\n            'rollIn',\n            'rollOut',\n            'zoomIn',\n            'zoomInDown',\n            'zoomInLeft',\n            'zoomInRight',\n            'zoomInUp',\n            'zoomOut',\n            'zoomOutDown',\n            'zoomOutLeft',\n            'zoomOutRight',\n            'zoomOutUp',\n            'slideInDown',\n            'slideInLeft',\n            'slideInRight',\n            'slideInUp',\n            'slideOutDown',\n            'slideOutLeft',\n            'slideOutRight',\n            'slideOutUp',\n        ];\n        return (\n            <div className=\"gutter-example button-demo\">\n                <BreadcrumbCustom breads={['动画', '基础动画']} />\n                <Row className=\"mb-m\">\n                    <span className=\"mr-s\">全部动画(单个动画请移动鼠标)</span>\n                    <Switch onChange={this.animatedAll} />\n                </Row>\n                <Row gutter={14}>\n                    {animations.map((v, i) => (\n                        <Col className=\"gutter-row\" md={6} key={i}>\n                            <div className=\"gutter-box\">\n                                <Card\n                                    className={`${\n                                        this.state.animated || this.state.animatedOne === i\n                                            ? 'animated'\n                                            : ''\n                                    } ${\n                                        this.state.animated || this.state.animatedOne === i\n                                            ? 'infinite'\n                                            : ''\n                                    } ${v}`}\n                                    onMouseEnter={() => this.animatedOne(i)}\n                                    onMouseLeave={() => this.animatedOneOver()}\n                                >\n                                    <div className=\"pa-m text-center\">\n                                        <h3>{v}</h3>\n                                    </div>\n                                </Card>\n                            </div>\n                        </Col>\n                    ))}\n                </Row>\n            </div>\n        );\n    }\n}\n\nexport default BasicAnimations;\n"
  },
  {
    "path": "src/components/animation/ExampleAnimations.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/5/8.\n */\nimport React from 'react';\nimport { Row, Col, Card, Table, Popconfirm, Button } from 'antd';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\n\ntype ExampleAnimationsProps = {};\ntype ExampleAnimationsState = {\n    dataSource: any;\n    count: number;\n    deleteIndex: number;\n};\n\nclass ExampleAnimations extends React.Component<ExampleAnimationsProps, ExampleAnimationsState> {\n    constructor(props: any) {\n        super(props);\n        this.columns = [\n            {\n                title: 'name',\n                dataIndex: 'name',\n                width: '30%',\n            },\n            {\n                title: 'age',\n                dataIndex: 'age',\n            },\n            {\n                title: 'address',\n                dataIndex: 'address',\n            },\n            {\n                title: 'operation',\n                dataIndex: 'operation',\n                render: (text: any, record: any, index: number) => {\n                    return this.state.dataSource.length > 1 ? (\n                        <Popconfirm\n                            title=\"Sure to delete?\"\n                            onConfirm={() => this.onDelete(record, index)}\n                        >\n                            <span>Delete</span>\n                        </Popconfirm>\n                    ) : null;\n                },\n            },\n        ];\n        this.state = {\n            dataSource: [\n                {\n                    key: '0',\n                    name: 'Edward King 0',\n                    age: '32',\n                    address: 'London, Park Lane no. 0',\n                },\n                {\n                    key: '1',\n                    name: 'Edward King 1',\n                    age: '32',\n                    address: 'London, Park Lane no. 1',\n                },\n            ],\n            count: 2,\n            deleteIndex: -1,\n        };\n    }\n    columns: any;\n    onDelete = (record: any, index: number) => {\n        const dataSource = [...this.state.dataSource];\n        dataSource.splice(index, 1);\n        this.setState({ deleteIndex: record.key });\n        setTimeout(() => {\n            this.setState({ dataSource });\n        }, 500);\n    };\n    handleAdd = () => {\n        const { count, dataSource } = this.state;\n        const newData = {\n            key: count,\n            name: `Edward King ${count}`,\n            age: 32,\n            address: `London, Park Lane no. ${count}`,\n        };\n        this.setState({\n            dataSource: [newData, ...dataSource],\n            count: count + 1,\n        });\n    };\n    render() {\n        const { dataSource } = this.state;\n        const columns = this.columns;\n        return (\n            <div className=\"gutter-example\">\n                <BreadcrumbCustom breads={['动画', '动画案例']} />\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={24}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <Button className=\"editable-add-btn mb-s\" onClick={this.handleAdd}>\n                                    Add\n                                </Button>\n                                <Table\n                                    bordered\n                                    dataSource={dataSource}\n                                    columns={columns}\n                                    rowClassName={(record: any, index: number) => {\n                                        if (this.state.deleteIndex === record.key)\n                                            return 'animated zoomOutLeft min-black';\n                                        return 'animated fadeInRight';\n                                    }}\n                                />\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n            </div>\n        );\n    }\n}\n\nexport default ExampleAnimations;\n"
  },
  {
    "path": "src/components/auth/Basic.tsx",
    "content": "/**\n * Created by 叶子 on 2017/7/31.\n */\nimport React, { Component } from 'react';\nimport { Row, Col, Card } from 'antd';\nimport beauty from '@/style/imgs/beauty.jpg';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport { AuthWidget } from '../widget';\n\nclass Basic extends Component {\n    render() {\n        return (\n            <div>\n                <BreadcrumbCustom breads={['权限管理', '基础演示']} />\n                <AuthWidget\n                    children={(auth: any) => (\n                        <Row>\n                            <Col span={24}>\n                                <Card bordered={false} bodyStyle={{ minHeight: 600 }}>\n                                    {!auth.uid && (\n                                        <h2 style={{ height: 500 }} className=\"center\">\n                                            登录之后你将看到一张美女图\n                                        </h2>\n                                    )}\n                                    {auth.permissions &&\n                                        auth.permissions.includes('auth/authPage/visit') && (\n                                            <div style={{ textAlign: 'center' }}>\n                                                <img src={beauty} alt=\"\" style={{ height: 400 }} />\n                                                {(auth.permissions.includes(\n                                                    'auth/authPage/edit'\n                                                ) && (\n                                                    <div>\n                                                        <p>\n                                                            看啥子美女，看点美景就行啦~\n                                                            <span\n                                                                role=\"img\"\n                                                                aria-label=\"\"\n                                                                aria-labelledby=\"\"\n                                                            >\n                                                                😄😄\n                                                            </span>\n                                                        </p>\n                                                        <p>管理员身份登录才能看到这两段话</p>\n                                                    </div>\n                                                )) || (\n                                                    <div>\n                                                        <p>管理员登录将看到不一样的效果</p>\n                                                    </div>\n                                                )}\n                                            </div>\n                                        )}\n                                </Card>\n                            </Col>\n                        </Row>\n                    )}\n                />\n            </div>\n        );\n    }\n}\n\nexport default Basic;\n"
  },
  {
    "path": "src/components/auth/RouterEnter.tsx",
    "content": "/**\n * Created by 叶子 on 2017/8/1.\n */\n/**\n * Created by 叶子 on 2017/7/31.\n */\nimport React, { Component } from 'react';\nimport { Row, Col, Card } from 'antd';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport { AuthWidget } from '../widget';\n\nclass RouterEnter extends Component {\n    componentDidMount() {\n        console.log('RouterEnter');\n    }\n    render() {\n        return (\n            <div>\n                <BreadcrumbCustom breads={['权限管理', '路由拦截']} />\n                <AuthWidget\n                    children={(auth: any) => (\n                        <Row>\n                            <Col span={24}>\n                                <Card bordered={false} bodyStyle={{ minHeight: 600 }}>\n                                    <h2 style={{ height: 500 }} className=\"center\">\n                                        只有管理员登录才能看到该页面，否则跳转到404页面\n                                    </h2>\n                                </Card>\n                            </Col>\n                        </Row>\n                    )}\n                />\n            </div>\n        );\n    }\n}\n\nexport default RouterEnter;\n"
  },
  {
    "path": "src/components/charts/Echarts.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/17.\n */\nimport React from 'react';\nimport { Row, Col, Card } from 'antd';\nimport EchartsArea from './EchartsArea';\nimport EchartsPie from './EchartsPie';\nimport EchartsEffectScatter from './EchartsEffectScatter';\nimport EchartsForce from './EchartsForce';\n\nclass Echarts extends React.Component {\n    render() {\n        return (\n            <div className=\"gutter-example\">\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={24}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"区域图\" bordered={false}>\n                                <EchartsArea />\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"关系图\" bordered={false}>\n                                {/*<EchartsGraphnpm />*/}\n                                <EchartsForce />\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"饼图\" bordered={false}>\n                                <EchartsPie />\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={24}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"散点图\" bordered={false}>\n                                <EchartsEffectScatter />\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n            </div>\n        )\n    }\n}\n\nexport default Echarts;"
  },
  {
    "path": "src/components/charts/EchartsArea.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/17.\n */\nimport React from 'react';\nimport ReactEcharts from 'echarts-for-react';\nimport echarts from 'echarts';\n\nlet base = +new Date(1968, 9, 3);\nlet oneDay = 24 * 3600 * 1000;\nlet date = [];\n\nlet data = [Math.random() * 300];\n\nfor (var i = 1; i < 20000; i++) {\n    var now = new Date((base += oneDay));\n    date.push([now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/'));\n    data.push(Math.round((Math.random() - 0.5) * 20 + data[i - 1]));\n}\n\nconst option = {\n    tooltip: {\n        trigger: 'axis',\n        position: function(pt: any) {\n            return [pt[0], '10%'];\n        },\n    },\n    title: {\n        left: 'center',\n        text: '大数据量面积图',\n    },\n    toolbox: {\n        feature: {\n            dataZoom: {\n                yAxisIndex: 'none',\n            },\n            restore: {},\n            saveAsImage: {},\n        },\n    },\n    xAxis: {\n        type: 'category',\n        boundaryGap: false,\n        data: date,\n    },\n    yAxis: {\n        type: 'value',\n        boundaryGap: [0, '100%'],\n    },\n    dataZoom: [\n        {\n            type: 'inside',\n            start: 0,\n            end: 10,\n        },\n        {\n            start: 0,\n            end: 10,\n            handleIcon:\n                'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',\n            handleSize: '80%',\n            handleStyle: {\n                color: '#fff',\n                shadowBlur: 3,\n                shadowColor: 'rgba(0, 0, 0, 0.6)',\n                shadowOffsetX: 2,\n                shadowOffsetY: 2,\n            },\n        },\n    ],\n    series: [\n        {\n            name: '模拟数据',\n            type: 'line',\n            smooth: true,\n            symbol: 'none',\n            sampling: 'average',\n            itemStyle: {\n                normal: {\n                    color: 'rgb(255, 70, 131)',\n                },\n            },\n            areaStyle: {\n                normal: {\n                    color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n                        {\n                            offset: 0,\n                            color: 'rgb(255, 158, 68)',\n                        },\n                        {\n                            offset: 1,\n                            color: 'rgb(255, 70, 131)',\n                        },\n                    ]),\n                },\n            },\n            data: data,\n        },\n    ],\n};\n\nclass EchartsArea extends React.Component {\n    render() {\n        return (\n            <ReactEcharts\n                option={option}\n                style={{ height: '300px', width: '100%' }}\n                className={'react_for_echarts'}\n            />\n        );\n    }\n}\n\nexport default EchartsArea;\n"
  },
  {
    "path": "src/components/charts/EchartsEffectScatter.tsx",
    "content": "/**\n * Created by SEELE on 2017/8/23.\n */\nimport React, { Component } from 'react';\nimport ReactEcharts from 'echarts-for-react';\nrequire('echarts/map/js/china.js');\n\nconst data = [\n    { name: '海门', value: 9 },\n    { name: '鄂尔多斯', value: 12 },\n    { name: '招远', value: 12 },\n    { name: '舟山', value: 12 },\n    { name: '齐齐哈尔', value: 14 },\n    { name: '盐城', value: 15 },\n    { name: '赤峰', value: 16 },\n    { name: '青岛', value: 18 },\n    { name: '乳山', value: 18 },\n    { name: '金昌', value: 19 },\n    { name: '泉州', value: 21 },\n    { name: '莱西', value: 21 },\n    { name: '日照', value: 21 },\n    { name: '胶南', value: 22 },\n    { name: '南通', value: 23 },\n    { name: '拉萨', value: 24 },\n    { name: '云浮', value: 24 },\n    { name: '梅州', value: 25 },\n    { name: '文登', value: 25 },\n    { name: '上海', value: 25 },\n    { name: '攀枝花', value: 25 },\n    { name: '威海', value: 25 },\n    { name: '承德', value: 25 },\n    { name: '厦门', value: 26 },\n    { name: '汕尾', value: 26 },\n    { name: '潮州', value: 26 },\n    { name: '丹东', value: 27 },\n    { name: '太仓', value: 27 },\n    { name: '曲靖', value: 27 },\n    { name: '烟台', value: 28 },\n    { name: '福州', value: 29 },\n    { name: '瓦房店', value: 30 },\n    { name: '即墨', value: 30 },\n    { name: '抚顺', value: 31 },\n    { name: '玉溪', value: 31 },\n    { name: '张家口', value: 31 },\n    { name: '阳泉', value: 31 },\n    { name: '莱州', value: 32 },\n    { name: '湖州', value: 32 },\n    { name: '汕头', value: 32 },\n    { name: '昆山', value: 33 },\n    { name: '宁波', value: 33 },\n    { name: '湛江', value: 33 },\n    { name: '揭阳', value: 34 },\n    { name: '荣成', value: 34 },\n    { name: '连云港', value: 35 },\n    { name: '葫芦岛', value: 35 },\n    { name: '常熟', value: 36 },\n    { name: '东莞', value: 36 },\n    { name: '河源', value: 36 },\n    { name: '淮安', value: 36 },\n    { name: '泰州', value: 36 },\n    { name: '南宁', value: 37 },\n    { name: '营口', value: 37 },\n    { name: '惠州', value: 37 },\n    { name: '江阴', value: 37 },\n    { name: '蓬莱', value: 37 },\n    { name: '韶关', value: 38 },\n    { name: '嘉峪关', value: 38 },\n    { name: '广州', value: 38 },\n    { name: '延安', value: 38 },\n    { name: '太原', value: 39 },\n    { name: '清远', value: 39 },\n    { name: '中山', value: 39 },\n    { name: '昆明', value: 39 },\n    { name: '寿光', value: 40 },\n    { name: '盘锦', value: 40 },\n    { name: '长治', value: 41 },\n    { name: '深圳', value: 41 },\n    { name: '珠海', value: 42 },\n    { name: '宿迁', value: 43 },\n    { name: '咸阳', value: 43 },\n    { name: '铜川', value: 44 },\n    { name: '平度', value: 44 },\n    { name: '佛山', value: 44 },\n    { name: '海口', value: 44 },\n    { name: '江门', value: 45 },\n    { name: '章丘', value: 45 },\n    { name: '肇庆', value: 46 },\n    { name: '大连', value: 47 },\n    { name: '临汾', value: 47 },\n    { name: '吴江', value: 47 },\n    { name: '石嘴山', value: 49 },\n    { name: '沈阳', value: 50 },\n    { name: '苏州', value: 50 },\n    { name: '茂名', value: 50 },\n    { name: '嘉兴', value: 51 },\n    { name: '长春', value: 51 },\n    { name: '胶州', value: 52 },\n    { name: '银川', value: 52 },\n    { name: '张家港', value: 52 },\n    { name: '三门峡', value: 53 },\n    { name: '锦州', value: 54 },\n    { name: '南昌', value: 54 },\n    { name: '柳州', value: 54 },\n    { name: '三亚', value: 54 },\n    { name: '自贡', value: 56 },\n    { name: '吉林', value: 56 },\n    { name: '阳江', value: 57 },\n    { name: '泸州', value: 57 },\n    { name: '西宁', value: 57 },\n    { name: '宜宾', value: 58 },\n    { name: '呼和浩特', value: 58 },\n    { name: '成都', value: 58 },\n    { name: '大同', value: 58 },\n    { name: '镇江', value: 59 },\n    { name: '桂林', value: 59 },\n    { name: '张家界', value: 59 },\n    { name: '宜兴', value: 59 },\n    { name: '北海', value: 60 },\n    { name: '西安', value: 61 },\n    { name: '金坛', value: 62 },\n    { name: '东营', value: 62 },\n    { name: '牡丹江', value: 63 },\n    { name: '遵义', value: 63 },\n    { name: '绍兴', value: 63 },\n    { name: '扬州', value: 64 },\n    { name: '常州', value: 64 },\n    { name: '潍坊', value: 65 },\n    { name: '重庆', value: 66 },\n    { name: '台州', value: 67 },\n    { name: '南京', value: 67 },\n    { name: '滨州', value: 70 },\n    { name: '贵阳', value: 71 },\n    { name: '无锡', value: 71 },\n    { name: '本溪', value: 71 },\n    { name: '克拉玛依', value: 72 },\n    { name: '渭南', value: 72 },\n    { name: '马鞍山', value: 72 },\n    { name: '宝鸡', value: 72 },\n    { name: '焦作', value: 75 },\n    { name: '句容', value: 75 },\n    { name: '北京', value: 79 },\n    { name: '徐州', value: 79 },\n    { name: '衡水', value: 80 },\n    { name: '包头', value: 80 },\n    { name: '绵阳', value: 80 },\n    { name: '乌鲁木齐', value: 84 },\n    { name: '枣庄', value: 84 },\n    { name: '杭州', value: 84 },\n    { name: '淄博', value: 85 },\n    { name: '鞍山', value: 86 },\n    { name: '溧阳', value: 86 },\n    { name: '库尔勒', value: 86 },\n    { name: '安阳', value: 90 },\n    { name: '开封', value: 90 },\n    { name: '济南', value: 92 },\n    { name: '德阳', value: 93 },\n    { name: '温州', value: 95 },\n    { name: '九江', value: 96 },\n    { name: '邯郸', value: 98 },\n    { name: '临安', value: 99 },\n    { name: '兰州', value: 99 },\n    { name: '沧州', value: 100 },\n    { name: '临沂', value: 103 },\n    { name: '南充', value: 104 },\n    { name: '天津', value: 105 },\n    { name: '富阳', value: 106 },\n    { name: '泰安', value: 112 },\n    { name: '诸暨', value: 112 },\n    { name: '郑州', value: 113 },\n    { name: '哈尔滨', value: 114 },\n    { name: '聊城', value: 116 },\n    { name: '芜湖', value: 117 },\n    { name: '唐山', value: 119 },\n    { name: '平顶山', value: 119 },\n    { name: '邢台', value: 119 },\n    { name: '德州', value: 120 },\n    { name: '济宁', value: 120 },\n    { name: '荆州', value: 127 },\n    { name: '宜昌', value: 130 },\n    { name: '义乌', value: 132 },\n    { name: '丽水', value: 133 },\n    { name: '洛阳', value: 134 },\n    { name: '秦皇岛', value: 136 },\n    { name: '株洲', value: 143 },\n    { name: '石家庄', value: 147 },\n    { name: '莱芜', value: 148 },\n    { name: '常德', value: 152 },\n    { name: '保定', value: 153 },\n    { name: '湘潭', value: 154 },\n    { name: '金华', value: 157 },\n    { name: '岳阳', value: 169 },\n    { name: '长沙', value: 175 },\n    { name: '衢州', value: 177 },\n    { name: '廊坊', value: 193 },\n    { name: '菏泽', value: 194 },\n    { name: '合肥', value: 229 },\n    { name: '武汉', value: 273 },\n    { name: '大庆', value: 279 },\n];\nconst geoCoordMap = {\n    海门: [121.15, 31.89],\n    鄂尔多斯: [109.781327, 39.608266],\n    招远: [120.38, 37.35],\n    舟山: [122.207216, 29.985295],\n    齐齐哈尔: [123.97, 47.33],\n    盐城: [120.13, 33.38],\n    赤峰: [118.87, 42.28],\n    青岛: [120.33, 36.07],\n    乳山: [121.52, 36.89],\n    金昌: [102.188043, 38.520089],\n    泉州: [118.58, 24.93],\n    莱西: [120.53, 36.86],\n    日照: [119.46, 35.42],\n    胶南: [119.97, 35.88],\n    南通: [121.05, 32.08],\n    拉萨: [91.11, 29.97],\n    云浮: [112.02, 22.93],\n    梅州: [116.1, 24.55],\n    文登: [122.05, 37.2],\n    上海: [121.48, 31.22],\n    攀枝花: [101.718637, 26.582347],\n    威海: [122.1, 37.5],\n    承德: [117.93, 40.97],\n    厦门: [118.1, 24.46],\n    汕尾: [115.375279, 22.786211],\n    潮州: [116.63, 23.68],\n    丹东: [124.37, 40.13],\n    太仓: [121.1, 31.45],\n    曲靖: [103.79, 25.51],\n    烟台: [121.39, 37.52],\n    福州: [119.3, 26.08],\n    瓦房店: [121.979603, 39.627114],\n    即墨: [120.45, 36.38],\n    抚顺: [123.97, 41.97],\n    玉溪: [102.52, 24.35],\n    张家口: [114.87, 40.82],\n    阳泉: [113.57, 37.85],\n    莱州: [119.942327, 37.177017],\n    湖州: [120.1, 30.86],\n    汕头: [116.69, 23.39],\n    昆山: [120.95, 31.39],\n    宁波: [121.56, 29.86],\n    湛江: [110.359377, 21.270708],\n    揭阳: [116.35, 23.55],\n    荣成: [122.41, 37.16],\n    连云港: [119.16, 34.59],\n    葫芦岛: [120.836932, 40.711052],\n    常熟: [120.74, 31.64],\n    东莞: [113.75, 23.04],\n    河源: [114.68, 23.73],\n    淮安: [119.15, 33.5],\n    泰州: [119.9, 32.49],\n    南宁: [108.33, 22.84],\n    营口: [122.18, 40.65],\n    惠州: [114.4, 23.09],\n    江阴: [120.26, 31.91],\n    蓬莱: [120.75, 37.8],\n    韶关: [113.62, 24.84],\n    嘉峪关: [98.289152, 39.77313],\n    广州: [113.23, 23.16],\n    延安: [109.47, 36.6],\n    太原: [112.53, 37.87],\n    清远: [113.01, 23.7],\n    中山: [113.38, 22.52],\n    昆明: [102.73, 25.04],\n    寿光: [118.73, 36.86],\n    盘锦: [122.070714, 41.119997],\n    长治: [113.08, 36.18],\n    深圳: [114.07, 22.62],\n    珠海: [113.52, 22.3],\n    宿迁: [118.3, 33.96],\n    咸阳: [108.72, 34.36],\n    铜川: [109.11, 35.09],\n    平度: [119.97, 36.77],\n    佛山: [113.11, 23.05],\n    海口: [110.35, 20.02],\n    江门: [113.06, 22.61],\n    章丘: [117.53, 36.72],\n    肇庆: [112.44, 23.05],\n    大连: [121.62, 38.92],\n    临汾: [111.5, 36.08],\n    吴江: [120.63, 31.16],\n    石嘴山: [106.39, 39.04],\n    沈阳: [123.38, 41.8],\n    苏州: [120.62, 31.32],\n    茂名: [110.88, 21.68],\n    嘉兴: [120.76, 30.77],\n    长春: [125.35, 43.88],\n    胶州: [120.03336, 36.264622],\n    银川: [106.27, 38.47],\n    张家港: [120.555821, 31.875428],\n    三门峡: [111.19, 34.76],\n    锦州: [121.15, 41.13],\n    南昌: [115.89, 28.68],\n    柳州: [109.4, 24.33],\n    三亚: [109.511909, 18.252847],\n    自贡: [104.778442, 29.33903],\n    吉林: [126.57, 43.87],\n    阳江: [111.95, 21.85],\n    泸州: [105.39, 28.91],\n    西宁: [101.74, 36.56],\n    宜宾: [104.56, 29.77],\n    呼和浩特: [111.65, 40.82],\n    成都: [104.06, 30.67],\n    大同: [113.3, 40.12],\n    镇江: [119.44, 32.2],\n    桂林: [110.28, 25.29],\n    张家界: [110.479191, 29.117096],\n    宜兴: [119.82, 31.36],\n    北海: [109.12, 21.49],\n    西安: [108.95, 34.27],\n    金坛: [119.56, 31.74],\n    东营: [118.49, 37.46],\n    牡丹江: [129.58, 44.6],\n    遵义: [106.9, 27.7],\n    绍兴: [120.58, 30.01],\n    扬州: [119.42, 32.39],\n    常州: [119.95, 31.79],\n    潍坊: [119.1, 36.62],\n    重庆: [106.54, 29.59],\n    台州: [121.420757, 28.656386],\n    南京: [118.78, 32.04],\n    滨州: [118.03, 37.36],\n    贵阳: [106.71, 26.57],\n    无锡: [120.29, 31.59],\n    本溪: [123.73, 41.3],\n    克拉玛依: [84.77, 45.59],\n    渭南: [109.5, 34.52],\n    马鞍山: [118.48, 31.56],\n    宝鸡: [107.15, 34.38],\n    焦作: [113.21, 35.24],\n    句容: [119.16, 31.95],\n    北京: [116.46, 39.92],\n    徐州: [117.2, 34.26],\n    衡水: [115.72, 37.72],\n    包头: [110, 40.58],\n    绵阳: [104.73, 31.48],\n    乌鲁木齐: [87.68, 43.77],\n    枣庄: [117.57, 34.86],\n    杭州: [120.19, 30.26],\n    淄博: [118.05, 36.78],\n    鞍山: [122.85, 41.12],\n    溧阳: [119.48, 31.43],\n    库尔勒: [86.06, 41.68],\n    安阳: [114.35, 36.1],\n    开封: [114.35, 34.79],\n    济南: [117, 36.65],\n    德阳: [104.37, 31.13],\n    温州: [120.65, 28.01],\n    九江: [115.97, 29.71],\n    邯郸: [114.47, 36.6],\n    临安: [119.72, 30.23],\n    兰州: [103.73, 36.03],\n    沧州: [116.83, 38.33],\n    临沂: [118.35, 35.05],\n    南充: [106.110698, 30.837793],\n    天津: [117.2, 39.13],\n    富阳: [119.95, 30.07],\n    泰安: [117.13, 36.18],\n    诸暨: [120.23, 29.71],\n    郑州: [113.65, 34.76],\n    哈尔滨: [126.63, 45.75],\n    聊城: [115.97, 36.45],\n    芜湖: [118.38, 31.33],\n    唐山: [118.02, 39.63],\n    平顶山: [113.29, 33.75],\n    邢台: [114.48, 37.05],\n    德州: [116.29, 37.45],\n    济宁: [116.59, 35.38],\n    荆州: [112.239741, 30.335165],\n    宜昌: [111.3, 30.7],\n    义乌: [120.06, 29.32],\n    丽水: [119.92, 28.45],\n    洛阳: [112.44, 34.7],\n    秦皇岛: [119.57, 39.95],\n    株洲: [113.16, 27.83],\n    石家庄: [114.48, 38.03],\n    莱芜: [117.67, 36.19],\n    常德: [111.69, 29.05],\n    保定: [115.48, 38.85],\n    湘潭: [112.91, 27.87],\n    金华: [119.64, 29.12],\n    岳阳: [113.09, 29.37],\n    长沙: [113, 28.21],\n    衢州: [118.88, 28.97],\n    廊坊: [116.7, 39.53],\n    菏泽: [115.480656, 35.23375],\n    合肥: [117.27, 31.86],\n    武汉: [114.31, 30.52],\n    大庆: [125.03, 46.58],\n};\n\nconst convertData = function(data: any) {\n    let res = [];\n    for (let i = 0; i < data.length; i++) {\n        let geoCoord = (geoCoordMap as any)[data[i].name];\n        if (geoCoord) {\n            res.push({\n                name: data[i].name,\n                value: geoCoord.concat(data[i].value),\n            });\n        }\n    }\n    return res;\n};\n\nconst option = {\n    backgroundColor: '#404a59',\n    title: {\n        text: '全国主要城市空气质量',\n        subtext: 'data from PM25.in',\n        sublink: 'http://www.pm25.in',\n        left: 'center',\n        textStyle: {\n            color: '#fff',\n        },\n    },\n    tooltip: {\n        trigger: 'item',\n    },\n    legend: {\n        orient: 'vertical',\n        y: 'bottom',\n        x: 'right',\n        data: ['pm2.5'],\n        textStyle: {\n            color: '#fff',\n        },\n    },\n    geo: {\n        map: 'china',\n        label: {\n            emphasis: {\n                show: false,\n            },\n        },\n        roam: true,\n        itemStyle: {\n            normal: {\n                areaColor: '#323c48',\n                borderColor: '#111',\n            },\n            emphasis: {\n                areaColor: '#2a333d',\n            },\n        },\n    },\n    series: [\n        {\n            name: 'pm2.5',\n            type: 'scatter',\n            coordinateSystem: 'geo',\n            data: convertData(data),\n            symbolSize: function(val: any) {\n                return val[2] / 10;\n            },\n            label: {\n                normal: {\n                    formatter: '{b}',\n                    position: 'right',\n                    show: false,\n                },\n                emphasis: {\n                    show: true,\n                },\n            },\n            itemStyle: {\n                normal: {\n                    color: '#ddb926',\n                },\n            },\n        },\n        {\n            name: 'Top 5',\n            type: 'effectScatter',\n            coordinateSystem: 'geo',\n            data: convertData(\n                data\n                    .sort(function(a, b) {\n                        return b.value - a.value;\n                    })\n                    .slice(0, 6)\n            ),\n            symbolSize: function(val: any) {\n                return val[2] / 10;\n            },\n            showEffectOn: 'render',\n            rippleEffect: {\n                brushType: 'stroke',\n            },\n            hoverAnimation: true,\n            label: {\n                normal: {\n                    formatter: '{b}',\n                    position: 'right',\n                    show: true,\n                },\n            },\n            itemStyle: {\n                normal: {\n                    color: '#f4e925',\n                    shadowBlur: 10,\n                    shadowColor: '#333',\n                },\n            },\n            zlevel: 1,\n        },\n    ],\n};\nclass EchartsEffectScatter extends Component {\n    render() {\n        return (\n            <ReactEcharts\n                option={option}\n                style={{ height: '400px', width: '100%' }}\n                className={'react_for_echarts'}\n            />\n        );\n    }\n}\n\nexport default EchartsEffectScatter;\n"
  },
  {
    "path": "src/components/charts/EchartsForce.tsx",
    "content": "/**\n * Created by SEELE on 2017/8/23.\n */\nimport React, { Component } from 'react';\nimport ReactEcharts from 'echarts-for-react';\n\nconst option = {\n    title: {\n        text: '',\n    },\n    tooltip: {},\n    animationDurationUpdate: 1500,\n    animationEasingUpdate: 'quinticInOut',\n    label: {\n        normal: {\n            show: true,\n            textStyle: {\n                fontSize: 12,\n            },\n        },\n    },\n    legend: {\n        x: 'center',\n        show: false,\n        data: ['朋友', '战友', '亲戚'],\n    },\n    series: [\n        {\n            type: 'graph',\n            layout: 'force',\n            symbolSize: 45,\n            focusNodeAdjacency: true,\n            roam: true,\n            categories: [\n                {\n                    name: '朋友',\n                    itemStyle: {\n                        normal: {\n                            color: '#009800',\n                        },\n                    },\n                },\n                {\n                    name: '战友',\n                    itemStyle: {\n                        normal: {\n                            color: '#4592FF',\n                        },\n                    },\n                },\n                {\n                    name: '亲戚',\n                    itemStyle: {\n                        normal: {\n                            color: '#3592F',\n                        },\n                    },\n                },\n            ],\n            label: {\n                normal: {\n                    show: true,\n                    textStyle: {\n                        fontSize: 12,\n                    },\n                },\n            },\n            force: {\n                repulsion: 1000,\n            },\n            edgeSymbolSize: [4, 50],\n            edgeLabel: {\n                normal: {\n                    show: true,\n                    textStyle: {\n                        fontSize: 10,\n                    },\n                    formatter: '{c}',\n                },\n            },\n            data: [\n                {\n                    name: '徐贱云',\n                    draggable: true,\n                },\n                {\n                    name: '冯可梁',\n                    category: 1,\n                    draggable: true,\n                },\n                {\n                    name: '邓志荣',\n                    category: 1,\n                    draggable: true,\n                },\n                {\n                    name: '李荣庆',\n                    category: 1,\n                    draggable: true,\n                },\n                {\n                    name: '郑志勇',\n                    category: 1,\n                    draggable: true,\n                },\n                {\n                    name: '赵英杰',\n                    category: 1,\n                    draggable: true,\n                },\n                {\n                    name: '王承军',\n                    category: 1,\n                    draggable: true,\n                },\n                {\n                    name: '陈卫东',\n                    category: 1,\n                    draggable: true,\n                },\n                {\n                    name: '邹劲松',\n                    category: 1,\n                    draggable: true,\n                },\n                {\n                    name: '赵成',\n                    category: 1,\n                    draggable: true,\n                },\n                {\n                    name: '陈现忠',\n                    category: 1,\n                    draggable: true,\n                },\n                {\n                    name: '陶泳',\n                    category: 1,\n                    draggable: true,\n                },\n                {\n                    name: '王德福',\n                    category: 1,\n                    draggable: true,\n                },\n            ],\n            links: [\n                {\n                    source: 0,\n                    target: 1,\n                    category: 0,\n                    value: '朋友',\n                },\n                {\n                    source: 0,\n                    target: 2,\n                    value: '战友',\n                },\n                {\n                    source: 0,\n                    target: 3,\n                    value: '房东',\n                },\n                {\n                    source: 0,\n                    target: 4,\n                    value: '朋友',\n                },\n                {\n                    source: 1,\n                    target: 2,\n                    value: '表亲',\n                },\n                {\n                    source: 0,\n                    target: 5,\n                    value: '朋友',\n                },\n                {\n                    source: 4,\n                    target: 5,\n                    value: '姑姑',\n                },\n                {\n                    source: 2,\n                    target: 8,\n                    value: '叔叔',\n                },\n                {\n                    source: 0,\n                    target: 12,\n                    value: '朋友',\n                },\n                {\n                    source: 6,\n                    target: 11,\n                    value: '爱人',\n                },\n                {\n                    source: 6,\n                    target: 3,\n                    value: '朋友',\n                },\n                {\n                    source: 7,\n                    target: 5,\n                    value: '朋友',\n                },\n                {\n                    source: 9,\n                    target: 10,\n                    value: '朋友',\n                },\n                {\n                    source: 3,\n                    target: 10,\n                    value: '朋友',\n                },\n                {\n                    source: 2,\n                    target: 11,\n                    value: '同学',\n                },\n            ],\n            lineStyle: {\n                normal: {\n                    opacity: 0.9,\n                    width: 1,\n                    curveness: 0,\n                },\n            },\n        },\n    ],\n};\nclass EchartsForce extends Component {\n    render() {\n        return (\n            <ReactEcharts\n                option={option}\n                style={{ height: '400px', width: '100%' }}\n                className={'react_for_echarts'}\n            />\n        );\n    }\n}\n\nexport default EchartsForce;\n"
  },
  {
    "path": "src/components/charts/EchartsGraphnpm.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/21.\n */\nimport React from 'react';\nimport ReactEcharts from 'echarts-for-react';\nimport { npmDependencies } from '../../service';\n\nclass EchartsGraphnpm extends React.Component {\n    state = {\n        option: {\n            title: {\n                text: 'NPM Dependencies',\n            },\n            animationDurationUpdate: 1500,\n            animationEasingUpdate: 'quinticInOut',\n            series: [\n                {\n                    type: 'graph',\n                    layout: 'none',\n                    // progressiveThreshold: 700,\n                    data: [],\n                    edges: [],\n                    label: {\n                        emphasis: {\n                            position: 'right',\n                            show: true,\n                        },\n                    },\n                    roam: true,\n                    focusNodeAdjacency: true,\n                    lineStyle: {\n                        normal: {\n                            width: 0.5,\n                            curveness: 0.3,\n                            opacity: 0.7,\n                        },\n                    },\n                },\n            ],\n        },\n    };\n    componentDidMount() {\n        npmDependencies().then((npm) => {\n            this.setState({\n                option: {\n                    series: [\n                        {\n                            data: npm.nodes.map(function (node: any) {\n                                return {\n                                    x: node.x,\n                                    y: node.y,\n                                    id: node.id,\n                                    name: node.label,\n                                    symbolSize: node.size,\n                                    itemStyle: {\n                                        normal: {\n                                            color: node.color,\n                                        },\n                                    },\n                                };\n                            }),\n                            edges: npm.edges.map(function (edge: any) {\n                                return {\n                                    source: edge.sourceID,\n                                    target: edge.targetID,\n                                };\n                            }),\n                        },\n                    ],\n                },\n            });\n        });\n    }\n    render() {\n        return (\n            <ReactEcharts\n                option={this.state.option}\n                style={{ height: '300px', width: '100%' }}\n                className={'react_for_echarts'}\n            />\n        );\n    }\n}\n\nexport default EchartsGraphnpm;\n"
  },
  {
    "path": "src/components/charts/EchartsPie.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/21.\n */\nimport React from 'react';\nimport ReactEcharts from 'echarts-for-react';\n\nconst option = {\n    title: {\n        text: 'Customized Pie',\n        left: 'center',\n        top: 20,\n        textStyle: {\n            color: '#777',\n        },\n    },\n\n    tooltip: {\n        trigger: 'item',\n        formatter: '{a} <br/>{b} : {c} ({d}%)',\n    },\n\n    visualMap: {\n        show: false,\n        min: 80,\n        max: 600,\n        inRange: {\n            colorLightness: [0, 1],\n        },\n    },\n    series: [\n        {\n            name: '访问来源',\n            type: 'pie',\n            radius: '55%',\n            center: ['50%', '50%'],\n            data: [\n                { value: 335, name: '直接访问' },\n                { value: 310, name: '邮件营销' },\n                { value: 274, name: '联盟广告' },\n                { value: 235, name: '视频广告' },\n                { value: 400, name: '搜索引擎' },\n            ].sort(function(a, b) {\n                return a.value - b.value;\n            }),\n            roseType: 'angle',\n            label: {\n                normal: {\n                    textStyle: {\n                        color: '#777',\n                    },\n                },\n            },\n            labelLine: {\n                normal: {\n                    lineStyle: {\n                        color: '#777',\n                    },\n                    smooth: 0.2,\n                    length: 10,\n                    length2: 20,\n                },\n            },\n            itemStyle: {\n                normal: {\n                    color: '#c23531',\n                    shadowBlur: 200,\n                    shadowColor: '#777',\n                },\n            },\n\n            animationType: 'scale',\n            animationEasing: 'elasticOut',\n            animationDelay: function(idx: any) {\n                return Math.random() * 200;\n            },\n        },\n    ],\n};\n\nconst EchartsPie = () => (\n    <ReactEcharts\n        option={option}\n        style={{ height: '300px', width: '100%' }}\n        className={'react_for_echarts'}\n    />\n);\n\nexport default EchartsPie;\n"
  },
  {
    "path": "src/components/charts/EchartsScatter.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/21.\n */\nimport React from 'react';\nimport ReactEcharts from 'echarts-for-react';\nimport { weibo } from '../../service';\nrequire('echarts/map/js/china.js');\n\nclass EchartsScatter extends React.Component {\n    state = {\n        option: {\n            backgroundColor: '#404a59',\n            title: {\n                text: '微博签到数据点亮中国',\n                subtext: 'From ThinkGIS',\n                sublink: 'http://www.thinkgis.cn/public/sina',\n                left: 'center',\n                top: 'top',\n                textStyle: {\n                    color: '#fff',\n                },\n            },\n            tooltip: {},\n            legend: {\n                left: 'left',\n                data: ['强', '中', '弱'],\n                textStyle: {\n                    color: '#ccc',\n                },\n            },\n            geo: {\n                map: 'china',\n                label: {\n                    emphasis: {\n                        show: false,\n                    },\n                },\n                itemStyle: {\n                    normal: {\n                        areaColor: '#323c48',\n                        borderColor: '#111',\n                    },\n                    emphasis: {\n                        areaColor: '#2a333d',\n                    },\n                },\n            },\n            series: [\n                {\n                    name: '弱',\n                    type: 'scatter',\n                    coordinateSystem: 'geo',\n                    symbolSize: 1,\n                    large: true,\n                    itemStyle: {\n                        normal: {\n                            shadowBlur: 2,\n                            shadowColor: 'rgba(37, 140, 249, 0.8)',\n                            color: 'rgba(37, 140, 249, 0.8)',\n                        },\n                    },\n                    data: [],\n                },\n                {\n                    name: '中',\n                    type: 'scatter',\n                    coordinateSystem: 'geo',\n                    symbolSize: 1,\n                    large: true,\n                    itemStyle: {\n                        normal: {\n                            shadowBlur: 2,\n                            shadowColor: 'rgba(14, 241, 242, 0.8)',\n                            color: 'rgba(14, 241, 242, 0.8)',\n                        },\n                    },\n                    data: [],\n                },\n                {\n                    name: '强',\n                    type: 'scatter',\n                    coordinateSystem: 'geo',\n                    symbolSize: 1,\n                    large: true,\n                    itemStyle: {\n                        normal: {\n                            shadowBlur: 2,\n                            shadowColor: 'rgba(255, 255, 255, 0.8)',\n                            color: 'rgba(255, 255, 255, 0.8)',\n                        },\n                    },\n                    data: [],\n                },\n            ],\n        },\n    };\n    componentDidMount() {\n        weibo().then((weiboData) => {\n            weiboData = weiboData.map(function (serieData: any) {\n                var px = serieData[0] / 1000;\n                var py = serieData[1] / 1000;\n                var res = [[px, py]];\n\n                for (var i = 2; i < serieData.length; i += 2) {\n                    var dx = serieData[i] / 1000;\n                    var dy = serieData[i + 1] / 1000;\n                    var x = px + dx;\n                    var y = py + dy;\n                    res.push([parseInt(x.toFixed(2), 10), parseInt(y.toFixed(2), 10), 1]);\n\n                    px = x;\n                    py = y;\n                }\n                return res;\n            });\n            this.setState({\n                option: {\n                    series: [\n                        { data: weiboData[0] },\n                        { data: weiboData[1] },\n                        { data: weiboData[2] },\n                    ],\n                },\n            });\n        });\n    }\n    render() {\n        return (\n            <ReactEcharts\n                option={this.state.option}\n                style={{ height: '400px', width: '100%' }}\n                className={'react_for_echarts'}\n            />\n        );\n    }\n}\n\nexport default EchartsScatter;\n"
  },
  {
    "path": "src/components/charts/Recharts.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/21.\n */\nimport React from 'react';\nimport { Row, Col, Card } from 'antd';\nimport RechartsSimpleLineChart from './RechartsSimpleLineChart';\nimport RechartsBarChart from './RechartsBarChart';\nimport RechartsRadialBarChart from './RechartsRadialBarChart';\nimport RechartsRadarChart from './RechartsRadarChart';\n\nclass Recharts extends React.Component {\n    render() {\n        return (\n            <div className=\"gutter-example\">\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={24}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"基础线形图\" bordered={false}>\n                                <RechartsSimpleLineChart />\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={24}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"基础线形图\" bordered={false}>\n                                <RechartsBarChart />\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"基础线形图\" bordered={false}>\n                                <RechartsRadialBarChart />\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"基础线形图\" bordered={false}>\n                                <RechartsRadarChart />\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n            </div>\n        )\n    }\n}\n\nexport default Recharts;"
  },
  {
    "path": "src/components/charts/RechartsBarChart.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/21.\n */\nimport React from 'react';\nimport {BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer} from 'recharts';\n\nconst data = [\n    {name: 'Page A', uv: 4000, pv: 2400, amt: 2400},\n    {name: 'Page B', uv: 3000, pv: 1398, amt: 2210},\n    {name: 'Page C', uv: 2000, pv: 9800, amt: 2290},\n    {name: 'Page D', uv: 2780, pv: 3908, amt: 2000},\n    {name: 'Page E', uv: 1890, pv: 4800, amt: 2181},\n    {name: 'Page F', uv: 2390, pv: 3800, amt: 2500},\n    {name: 'Page G', uv: 3490, pv: 4300, amt: 2100},\n];\n\nconst RechartsBarChart = () => (\n    <ResponsiveContainer width=\"100%\" height={300}>\n        <BarChart\n            data={data}\n            margin={{top: 5, right: 30, left: 20, bottom: 5}}\n        >\n            <XAxis dataKey=\"name\" />\n            <YAxis />\n            <CartesianGrid strokeDasharray=\"3 3\" />\n            <Tooltip />\n            <Legend />\n            <Bar dataKey=\"pv\" fill=\"#8884d8\" />\n            <Bar dataKey=\"uv\" fill=\"#82ca9d\" />\n        </BarChart>\n    </ResponsiveContainer>\n);\n\nexport default RechartsBarChart;"
  },
  {
    "path": "src/components/charts/RechartsRadarChart.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/22.\n */\nimport React from 'react';\nimport {Radar, RadarChart, PolarGrid, Legend,\n    PolarAngleAxis, PolarRadiusAxis, ResponsiveContainer} from 'recharts';\n\nconst data = [\n    { subject: 'Math', A: 120, B: 110, fullMark: 150 },\n    { subject: 'Chinese', A: 98, B: 130, fullMark: 150 },\n    { subject: 'English', A: 86, B: 130, fullMark: 150 },\n    { subject: 'Geography', A: 99, B: 100, fullMark: 150 },\n    { subject: 'Physics', A: 85, B: 90, fullMark: 150 },\n    { subject: 'History', A: 65, B: 85, fullMark: 150 },\n];\n\nconst RechartsRadarChart = () => (\n        <ResponsiveContainer width=\"100%\" height={300} >\n            <RadarChart outerRadius={90} data={data}>\n                <Radar name=\"Mike\" dataKey=\"A\" stroke=\"#8884d8\" fill=\"#8884d8\" fillOpacity={0.6} />\n                <Radar name=\"Lily\" dataKey=\"B\" stroke=\"#82ca9d\" fill=\"#82ca9d\" fillOpacity={0.6} />\n                <PolarGrid />\n                <Legend />\n                <PolarAngleAxis dataKey=\"subject\" />\n                <PolarRadiusAxis angle={30} domain={[0, 150]} />\n            </RadarChart>\n        </ResponsiveContainer>\n);\n\nexport default RechartsRadarChart;"
  },
  {
    "path": "src/components/charts/RechartsRadialBarChart.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/22.\n */\nimport React from 'react';\nimport { RadialBarChart, Legend, Tooltip, ResponsiveContainer } from 'recharts';\n\nconst data = [\n    { name: '18-24', uv: 31.47, pv: 2400, fill: '#8884d8' },\n    { name: '25-29', uv: 26.69, pv: 4567, fill: '#83a6ed' },\n    { name: '30-34', uv: 15.69, pv: 1398, fill: '#8dd1e1' },\n    { name: '35-39', uv: 8.22, pv: 9800, fill: '#82ca9d' },\n    { name: '40-49', uv: 8.63, pv: 3908, fill: '#a4de6c' },\n    { name: '50+', uv: 2.63, pv: 4800, fill: '#d0ed57' },\n    { name: 'unknow', uv: 6.67, pv: 4800, fill: '#ffc658' },\n];\n\nconst RechartsRadialBarChart = () => (\n    <ResponsiveContainer width=\"100%\" height={300}>\n        <RadialBarChart width={730} height={250} innerRadius=\"10%\" outerRadius=\"80%\" data={data}>\n            {/* <RadialBar\n                startAngle={90}\n                endAngle={-270}\n                minAngle={15}\n                label\n                background\n                clockWise\n                dataKey=\"uv\"\n            /> */}\n            <Legend\n                iconSize={10}\n                width={120}\n                height={140}\n                layout=\"vertical\"\n                verticalAlign=\"middle\"\n                align=\"right\"\n            />\n            <Tooltip />\n        </RadialBarChart>\n    </ResponsiveContainer>\n);\n\nexport default RechartsRadialBarChart;\n"
  },
  {
    "path": "src/components/charts/RechartsSimpleLineChart.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/21.\n */\nimport React from 'react';\nimport {LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer} from 'recharts';\n\n\nconst data = [\n    {name: 'Page A', uv: 4000, pv: 2400, amt: 2400},\n    {name: 'Page B', uv: 3000, pv: 1398, amt: 2210},\n    {name: 'Page C', uv: 2000, pv: 9800, amt: 2290},\n    {name: 'Page D', uv: 2780, pv: 3908, amt: 2000},\n    {name: 'Page E', uv: 1890, pv: 4800, amt: 2181},\n    {name: 'Page F', uv: 2390, pv: 3800, amt: 2500},\n    {name: 'Page G', uv: 3490, pv: 4300, amt: 2100},\n];\n\nconst RechartsSimpleLineChart = () => (\n    <ResponsiveContainer width=\"100%\" height={300}>\n        <LineChart\n            data={data}\n            margin={{top: 5, right: 30, left: 20, bottom: 5}}\n        >\n\n            <XAxis dataKey=\"name\" />\n            <YAxis />\n            <CartesianGrid strokeDasharray=\"3 3\" />\n            <Tooltip />\n            <Legend />\n            <Line type=\"monotone\" dataKey=\"pv\" stroke=\"#8884d8\" activeDot={{r: 8}} />\n            <Line type=\"monotone\" dataKey=\"uv\" stroke=\"#82ca9d\" />\n        </LineChart>\n    </ResponsiveContainer>\n);\n\nexport default RechartsSimpleLineChart;"
  },
  {
    "path": "src/components/cssmodule/index.module.less",
    "content": "@font-face {\n  font-family: 'Monoton';\n  font-style: normal;\n  font-weight: 400;\n  src: local('Monoton'), local('Monoton-Regular'), url(../../style/font/y6oxFxU60dYw9khW6q8jGw.woff2) format('woff2');\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2212, U+2215;\n}\n.header {\n  font-size: 7em;\n  width: 100%;\n  height: 500px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  color: #fff;\n  font-family: Monoton;\n  p {\n    animation: neon1 1.5s ease-in-out infinite alternate;\n    &:hover {\n      color: #FF1177;\n      animation: none;\n    }\n  }\n}\n@keyframes neon1 {\n  from {\n    text-shadow: 0 0 10px #fff, 0 0 20px #fff, 0 0 30px #fff, 0 0 40px #FF1177, 0 0 70px #FF1177, 0 0 80px #FF1177, 0 0 100px #FF1177, 0 0 150px #FF1177;\n  }\n  to {\n    text-shadow: 0 0 5px #fff, 0 0 10px #fff, 0 0 15px #fff, 0 0 20px #FF1177, 0 0 35px #FF1177, 0 0 40px #FF1177, 0 0 50px #FF1177, 0 0 75px #FF1177;\n  }\n}"
  },
  {
    "path": "src/components/cssmodule/index.tsx",
    "content": "/**\n *\n * 添加注释\n * Created by SEELE on 2018/1/12\n *\n */\nimport React, { Component } from 'react';\nimport { Col, Card, Row } from 'antd';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport styles from './index.module.less';\n\nclass Cssmodule extends Component {\n    render() {\n        return (\n            <div>\n                <BreadcrumbCustom breads={['cssModule']} />\n                <Row gutter={16}>\n                    <Col md={24}>\n                        <Card title=\"cssModule\" bordered={false}>\n                            <div className={styles.header}>\n                                <p>Hello CssModule</p>\n                            </div>\n                        </Card>\n                    </Col>\n                </Row>\n            </div>\n        );\n    }\n}\n\nexport default Cssmodule;\n"
  },
  {
    "path": "src/components/dashboard/Dashboard.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/5/3.\n */\nimport React from 'react';\nimport { Row, Col, Card, Timeline } from 'antd';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport EchartsViews from './EchartsViews';\nimport EchartsProjects from './EchartsProjects';\nimport b1 from '../../style/imgs/b1.jpg';\nimport {\n    CameraOutlined,\n    CloudOutlined,\n    HeartOutlined,\n    MailOutlined,\n    SyncOutlined,\n} from '@ant-design/icons';\n\nclass Dashboard extends React.Component {\n    render() {\n        return (\n            <div className=\"gutter-example button-demo\">\n                <BreadcrumbCustom />\n                <Row gutter={10}>\n                    <Col className=\"gutter-row\" md={4}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <div className=\"clear y-center\">\n                                    <div className=\"pull-left mr-m\">\n                                        <HeartOutlined className=\"text-2x text-danger\" />\n                                    </div>\n                                    <div className=\"clear\">\n                                        <div className=\"text-muted\">收藏</div>\n                                        <h2>301</h2>\n                                    </div>\n                                </div>\n                            </Card>\n                        </div>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <div className=\"clear y-center\">\n                                    <div className=\"pull-left mr-m\">\n                                        <CloudOutlined type=\"cloud\" className=\"text-2x\" />\n                                    </div>\n                                    <div className=\"clear\">\n                                        <div className=\"text-muted\">云数据</div>\n                                        <h2>30122</h2>\n                                    </div>\n                                </div>\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={4}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <div className=\"clear y-center\">\n                                    <div className=\"pull-left mr-m\">\n                                        <CameraOutlined className=\"text-2x text-info\" />\n                                    </div>\n                                    <div className=\"clear\">\n                                        <div className=\"text-muted\">照片</div>\n                                        <h2>802</h2>\n                                    </div>\n                                </div>\n                            </Card>\n                        </div>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <div className=\"clear y-center\">\n                                    <div className=\"pull-left mr-m\">\n                                        <MailOutlined className=\"text-2x text-success\" />\n                                    </div>\n                                    <div className=\"clear\">\n                                        <div className=\"text-muted\">邮件</div>\n                                        <h2>102</h2>\n                                    </div>\n                                </div>\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={16}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false} className={'no-padding'}>\n                                <EchartsProjects />\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n                <Row gutter={10}>\n                    <Col className=\"gutter-row\" md={8}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <div className=\"pb-m\">\n                                    <h3>任务</h3>\n                                    <small>10个已经完成，2个待完成，1个正在进行中</small>\n                                </div>\n                                <span className=\"card-tool\">\n                                    <SyncOutlined />\n                                </span>\n                                <Timeline>\n                                    <Timeline.Item color=\"green\">新版本迭代会</Timeline.Item>\n                                    <Timeline.Item color=\"green\">完成网站设计初版</Timeline.Item>\n                                    <Timeline.Item color=\"red\">\n                                        <p>联调接口</p>\n                                        <p>功能验收</p>\n                                    </Timeline.Item>\n\n                                    <Timeline.Item color=\"#108ee9\">\n                                        <p>登录功能设计</p>\n                                        <p>权限验证</p>\n                                        <p>页面排版</p>\n                                    </Timeline.Item>\n                                </Timeline>\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={8}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <div className=\"pb-m\">\n                                    <h3>消息栏</h3>\n                                </div>\n                                <span className=\"card-tool\">\n                                    <SyncOutlined />\n                                </span>\n                                <ul className=\"list-group no-border\">\n                                    <li className=\"list-group-item\">\n                                        <span className=\"pull-left w-40 mr-m\">\n                                            <img\n                                                src={b1}\n                                                className=\"img-responsive img-circle\"\n                                                alt=\"test\"\n                                            />\n                                        </span>\n                                        <div className=\"clear\">\n                                            <span className=\"block\">鸣人</span>\n                                            <span className=\"text-muted\">终于当上火影了！</span>\n                                        </div>\n                                    </li>\n                                    <li className=\"list-group-item\">\n                                        <span className=\"pull-left w-40 mr-m\">\n                                            <img\n                                                src={b1}\n                                                className=\"img-responsive img-circle\"\n                                                alt=\"test\"\n                                            />\n                                        </span>\n                                        <div className=\"clear\">\n                                            <span className=\"block\">佐助</span>\n                                            <span className=\"text-muted\">吊车尾~~</span>\n                                        </div>\n                                    </li>\n                                    <li className=\"list-group-item\">\n                                        <span className=\"pull-left w-40 mr-m\">\n                                            <img\n                                                src={b1}\n                                                className=\"img-responsive img-circle\"\n                                                alt=\"test\"\n                                            />\n                                        </span>\n                                        <div className=\"clear\">\n                                            <span className=\"block\">小樱</span>\n                                            <span className=\"text-muted\">佐助，你好帅！</span>\n                                        </div>\n                                    </li>\n                                    <li className=\"list-group-item\">\n                                        <span className=\"pull-left w-40 mr-m\">\n                                            <img\n                                                src={b1}\n                                                className=\"img-responsive img-circle\"\n                                                alt=\"test\"\n                                            />\n                                        </span>\n                                        <div className=\"clear\">\n                                            <span className=\"block\">雏田</span>\n                                            <span className=\"text-muted\">\n                                                鸣人君。。。那个。。。我。。喜欢你..\n                                            </span>\n                                        </div>\n                                    </li>\n                                </ul>\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={8}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <div className=\"pb-m\">\n                                    <h3>访问量统计</h3>\n                                    <small>最近7天用户访问量</small>\n                                </div>\n                                <span className=\"card-tool\">\n                                    <SyncOutlined type=\"sync\" />\n                                </span>\n                                <EchartsViews />\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n            </div>\n        );\n    }\n}\n\nexport default Dashboard;\n"
  },
  {
    "path": "src/components/dashboard/EchartsProjects.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/5/5.\n */\nimport React from 'react';\nimport ReactEcharts from 'echarts-for-react';\n\nlet xAxisData = [];\nlet data = [];\nfor (let i = 0; i < 50; i++) {\n    xAxisData.push(i);\n    data.push(Math.ceil((Math.cos(i / 5) * (i / 5) + i / 6) * 5) + 10);\n}\n\nconst option = {\n    title: {\n        text: '最近50天每天项目完成情况',\n        left: 'center',\n        textStyle: {\n            color: '#ccc',\n            fontSize: 10\n        }\n    },\n    backgroundColor: '#08263a',\n    xAxis: [{\n        show: true,\n        data: xAxisData,\n        axisLabel: {\n            textStyle: {\n                color: '#ccc'\n            }\n        }\n    }, {\n        show: false,\n        data: xAxisData\n    }],\n    tooltip: {},\n    visualMap: {\n        show: false,\n        min: 0,\n        max: 50,\n        dimension: 0,\n        inRange: {\n            color: ['#4a657a', '#308e92', '#b1cfa5', '#f5d69f', '#f5898b', '#ef5055']\n        }\n    },\n    yAxis: {\n        axisLine: {\n            show: false\n        },\n        axisLabel: {\n            textStyle: {\n                color: '#ccc'\n            }\n        },\n        splitLine: {\n            show: true,\n            lineStyle: {\n                color: '#08263f'\n            }\n        },\n        axisTick: {\n            show: false\n        }\n    },\n    series: [\n        {\n        name: 'Simulate Shadow',\n        type: 'line',\n        data: data,\n        z: 2,\n        showSymbol: false,\n        animationDelay: 0,\n        animationEasing: 'linear',\n        animationDuration: 1200,\n        lineStyle: {\n            normal: {\n                color: 'transparent'\n            }\n        },\n        areaStyle: {\n            normal: {\n                color: '#08263a',\n                shadowBlur: 50,\n                shadowColor: '#000'\n            }\n        }\n    }, {\n        name: '完成项目数',\n        type: 'bar',\n        data: data,\n        xAxisIndex: 1,\n        z: 3,\n        itemStyle: {\n            normal: {\n                barBorderRadius: 5\n            }\n        }\n    }],\n    animationEasing: 'elasticOut',\n    animationEasingUpdate: 'elasticOut',\n    animationDelay: function (idx: number) {\n        return idx * 20;\n    },\n    animationDelayUpdate: function (idx: number) {\n        return idx * 20;\n    }\n};\nconst EchartsProjects = () => (\n    <ReactEcharts\n        option={option}\n        style={{height: '212px', width: '100%'}}\n        className={'react_for_echarts'}\n    />\n);\n\nexport default EchartsProjects;"
  },
  {
    "path": "src/components/dashboard/EchartsViews.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/5/5.\n */\nimport React from 'react';\nimport ReactEcharts from 'echarts-for-react';\nimport echarts from 'echarts';\n\nconst option = {\n    title: {\n        text: '最近7天用户访问量',\n        left: '50%',\n        show: false,\n        textAlign: 'center'\n    },\n    tooltip: {\n        trigger: 'axis',\n        axisPointer: {\n            lineStyle: {\n                color: '#ddd'\n            }\n        },\n        backgroundColor: 'rgba(255,255,255,1)',\n        padding: [5, 10],\n        textStyle: {\n            color: '#7588E4',\n        },\n        extraCssText: 'box-shadow: 0 0 5px rgba(0,0,0,0.3)'\n    },\n    legend: {\n        right: 20,\n        orient: 'vertical',\n    },\n    xAxis: {\n        type: 'category',\n        data: ['2017-05-01', '2017-05-02', '2017-05-03', '2017-05-04', '2017-05-05', '2017-05-06','2017-05-07'],\n        boundaryGap: false,\n        splitLine: {\n            show: true,\n            interval: 'auto',\n            lineStyle: {\n                color: ['#D4DFF5']\n            }\n        },\n        axisTick: {\n            show: false\n        },\n        axisLine: {\n            lineStyle: {\n                color: '#609ee9'\n            }\n        },\n        axisLabel: {\n            margin: 10,\n            textStyle: {\n                fontSize: 10\n            }\n        }\n    },\n    yAxis: {\n        type: 'value',\n        splitLine: {\n            lineStyle: {\n                color: ['#D4DFF5']\n            }\n        },\n        axisTick: {\n            show: false\n        },\n        axisLine: {\n            lineStyle: {\n                color: '#609ee9'\n            }\n        },\n        axisLabel: {\n            margin: 0,\n            textStyle: {\n                fontSize: 8\n            }\n        }\n    },\n    series: [{\n        name: '昨日',\n        type: 'line',\n        smooth: true,\n        showSymbol: false,\n        symbol: 'circle',\n        symbolSize: 6,\n        data: ['1200', '1400', '808', '811', '626', '488', '1600'],\n        areaStyle: {\n            normal: {\n                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n                    offset: 0,\n                    color: 'rgba(216, 244, 247,1)'\n                }, {\n                    offset: 1,\n                    color: 'rgba(216, 244, 247,1)'\n                }], false)\n            }\n        },\n        itemStyle: {\n            normal: {\n                color: '#58c8da'\n            }\n        },\n        lineStyle: {\n            normal: {\n                width: 3\n            }\n        }\n    }]\n};\n\nconst EchartsViews = () => (\n    <ReactEcharts\n        option={option}\n        style={{height: '350px', width: '100%'}}\n        className={'react_for_echarts'}\n    />\n);\n\nexport default EchartsViews;"
  },
  {
    "path": "src/components/env/index.tsx",
    "content": "/*\n * File: index.tsx\n * Desc: 环境配置\n * File Created: 2020-08-02 23:00:28\n * Author: yezi\n * ------\n * Copyright 2020 - present, yezi\n */\nimport React from 'react';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport { Row, Col, Card, Descriptions } from 'antd';\n\nconst getEnvs = () => Object.keys(process.env).filter((key) => /^REACT_ADMIN_/i.test(key));\nconst Env = () => {\n    const envs = getEnvs();\n    console.log(process.env);\n    return (\n        <div>\n            <BreadcrumbCustom breads={['环境变量配置']} />\n            <Row gutter={16}>\n                <Col md={24}>\n                    <Card title=\"环境变量配置\" bordered={false}>\n                        <Descriptions>\n                            {envs.map((env) => (\n                                <Descriptions.Item key={env} label={env}>\n                                    {process.env[env]}\n                                </Descriptions.Item>\n                            ))}\n                        </Descriptions>\n                    </Card>\n                </Col>\n            </Row>\n        </div>\n    );\n};\n\nexport default Env;\n"
  },
  {
    "path": "src/components/extension/MultipleMenu.tsx",
    "content": "/*\n * File: MultipleMenu.tsx\n * Desc: 多级菜单组件\n * File Created: 2019-12-18 23:15:35\n * Author: chenghao\n * ------\n * Copyright 2019 - present, karakal\n */\nimport React from 'react';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport { Row, Col, Card } from 'antd';\n\nconst MultipleMenu = () => {\n    return (\n        <div>\n            <BreadcrumbCustom breads={['多级菜单']} />\n            <Row gutter={16}>\n                <Col md={24}>\n                    <Card title=\"多级菜单\" bordered={false}>\n                        <div>多级菜单的功能扩展</div>\n                        <div>菜单样式可能需要你来调整</div>\n                    </Card>\n                </Col>\n            </Row>\n        </div>\n    );\n};\n\nexport default MultipleMenu;\n"
  },
  {
    "path": "src/components/extension/QueryParams.tsx",
    "content": "/*\n * File: QueryParams.js\n * Desc: query参数demo\n * File Created: 2018-11-25 23:18:09\n * Author: chenghao\n * Copyright 2018 - present, chenghao\n */\nimport React, { Component } from 'react';\nimport { Row, Col, Card } from 'antd';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\n\ntype QueryParamsProps = {\n    query: any;\n};\n\nclass QueryParams extends Component<QueryParamsProps> {\n    render() {\n        const { query } = this.props;\n        return (\n            <div>\n                <BreadcrumbCustom breads={['queryParams']} />\n                <Row gutter={16}>\n                    <Col md={24}>\n                        <Card title=\"query参数Demo\" bordered={false}>\n                            <div>参数1： {query.param1}</div>\n                            <div>参数2： {query.param2}</div>\n                            <div>\n                                其他参数：{' '}\n                                {query.others || (\n                                    <a href=\"#/app/extension/queryParams?others=nothing\">\n                                        点击查看\n                                    </a>\n                                )}\n                            </div>\n                        </Card>\n                    </Col>\n                </Row>\n            </div>\n        );\n    }\n}\n\nexport default QueryParams;\n"
  },
  {
    "path": "src/components/extension/Visitor.tsx",
    "content": "/*\n * File: Visitor.tsx\n * Desc: 访客\n * File Created: 2019-10-25 22:31:37\n * Author: chenghao\n * ------\n * Copyright 2019 - present, chenghao\n */\nimport React from 'react';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport { Row, Col, Card } from 'antd';\n\nconst Visitor = () => {\n    return (\n        <>\n            <BreadcrumbCustom breads={['visitor']} />\n            <Row gutter={16}>\n                <Col md={24}>\n                    <Card\n                        title=\"访客模式\"\n                        bordered={false}\n                        bodyStyle={{\n                            display: 'flex',\n                            justifyContent: 'center',\n                            alignItems: 'center',\n                            height: 500,\n                        }}\n                    >\n                        访客模式的页面，你不需要登录即可访问的页面\n                    </Card>\n                </Col>\n            </Row>\n        </>\n    );\n};\n\nexport default Visitor;\n"
  },
  {
    "path": "src/components/index.tsx",
    "content": "/**\n * 路由组件出口文件\n * yezi 2018年6月24日\n */\nimport Loadable from 'react-loadable';\nimport Loading from './widget/Loading';\nimport BasicTable from './tables/BasicTables';\nimport AdvancedTable from './tables/AdvancedTables';\nimport AsynchronousTable from './tables/AsynchronousTable';\nimport Echarts from './charts/Echarts';\nimport Recharts from './charts/Recharts';\nimport Icons from './ui/Icons';\nimport Buttons from './ui/Buttons';\nimport Spins from './ui/Spins';\nimport Modals from './ui/Modals';\nimport Notifications from './ui/Notifications';\nimport Tabs from './ui/Tabs';\nimport Banners from './ui/banners';\nimport Drags from './ui/Draggable';\nimport Dashboard from './dashboard/Dashboard';\nimport Gallery from './ui/Gallery';\nimport BasicAnimations from './animation/BasicAnimations';\nimport ExampleAnimations from './animation/ExampleAnimations';\nimport AuthBasic from './auth/Basic';\nimport RouterEnter from './auth/RouterEnter';\nimport Cssmodule from './cssmodule';\nimport MapUi from './ui/map';\nimport QueryParams from './extension/QueryParams';\nimport Visitor from './extension/Visitor';\nimport MultipleMenu from './extension/MultipleMenu';\nimport Sub1 from './smenu/Sub1';\nimport Sub2 from './smenu/Sub2';\nimport Env from './env';\n\nconst WysiwygBundle = Loadable({\n    // 按需加载富文本配置\n    loader: () => import('./ui/Wysiwyg'),\n    loading: Loading,\n});\n\nexport default {\n    BasicTable,\n    AdvancedTable,\n    AsynchronousTable,\n    Echarts,\n    Recharts,\n    Icons,\n    Buttons,\n    Spins,\n    Modals,\n    Notifications,\n    Tabs,\n    Banners,\n    Drags,\n    Dashboard,\n    Gallery,\n    BasicAnimations,\n    ExampleAnimations,\n    AuthBasic,\n    RouterEnter,\n    WysiwygBundle,\n    Cssmodule,\n    MapUi,\n    QueryParams,\n    Visitor,\n    MultipleMenu,\n    Sub1,\n    Sub2,\n    Env,\n} as any;\n"
  },
  {
    "path": "src/components/pages/Login.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/16.\n */\nimport React, { useEffect } from 'react';\nimport { Button, Form, Input } from 'antd';\nimport { PwaInstaller } from '../widget';\nimport { useAlita } from 'redux-alita';\nimport { RouteComponentProps } from 'react-router';\nimport { FormProps } from 'antd/lib/form';\nimport umbrella from 'umbrella-storage';\nimport { GithubOutlined, LockOutlined, UserOutlined } from '@ant-design/icons';\nimport { useUpdateEffect } from 'ahooks';\n\nconst FormItem = Form.Item;\ntype LoginProps = {\n    setAlitaState: (param: any) => void;\n    auth: any;\n} & RouteComponentProps &\n    FormProps;\n\nconst Login = (props: LoginProps) => {\n    const { history } = props;\n    const [auth, setAlita] = useAlita({ auth: {} }, { light: true });\n\n    useEffect(() => {\n        setAlita('auth', null);\n    }, [setAlita]);\n\n    useUpdateEffect(() => {\n        if (auth && auth.uid) {\n            // 判断是否登陆\n            umbrella.setLocalStorage('user', auth);\n            history.push('/');\n        }\n    }, [history, auth]);\n\n    const handleSubmit = (values: any) => {\n        if (checkUser(values)) {\n            setAlita({ funcName: values.userName, stateName: 'auth' });\n        }\n    };\n    const checkUser = (values: any) => {\n        const users = [\n            ['admin', 'admin'],\n            ['guest', 'guest'],\n        ];\n        return users.some((user) => user[0] === values.userName && user[1] === values.password);\n    };\n    const gitHub = () => {\n        window.location.href =\n            'https://github.com/login/oauth/authorize?client_id=792cdcd244e98dcd2dee&redirect_uri=http://localhost:3006/&scope=user&state=reactAdmin';\n    };\n\n    return (\n        <div className=\"login\">\n            <div className=\"login-form\">\n                <div className=\"login-logo\">\n                    <span>React Admin</span>\n                    <PwaInstaller />\n                </div>\n                <Form onFinish={handleSubmit} style={{ maxWidth: '300px' }}>\n                    <FormItem\n                        name=\"userName\"\n                        rules={[{ required: true, message: '请输入用户名!' }]}\n                    >\n                        <Input\n                            prefix={<UserOutlined size={13} />}\n                            placeholder=\"管理员输入admin, 游客输入guest\"\n                        />\n                    </FormItem>\n                    <FormItem name=\"password\" rules={[{ required: true, message: '请输入密码!' }]}>\n                        <Input\n                            prefix={<LockOutlined size={13} />}\n                            type=\"password\"\n                            placeholder=\"管理员输入admin, 游客输入guest\"\n                        />\n                    </FormItem>\n                    <FormItem>\n                        <span className=\"login-form-forgot\" style={{ float: 'right' }}>\n                            忘记密码\n                        </span>\n                        <Button\n                            type=\"primary\"\n                            htmlType=\"submit\"\n                            className=\"login-form-button\"\n                            style={{ width: '100%' }}\n                        >\n                            登录\n                        </Button>\n                        <p style={{ display: 'flex', justifyContent: 'space-between' }}>\n                            <span>或 现在就去注册!</span>\n                            <span onClick={gitHub}>\n                                <GithubOutlined />\n                                (第三方登录)\n                            </span>\n                        </p>\n                    </FormItem>\n                </Form>\n            </div>\n        </div>\n    );\n};\n\nexport default Login;\n"
  },
  {
    "path": "src/components/pages/NotFound.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/5/7.\n */\nimport React from 'react';\nimport img from '../../style/imgs/404.png';\n\nclass NotFound extends React.Component {\n    state = {\n        animated: '',\n    };\n    enter = () => {\n        this.setState({ animated: 'hinge' });\n    };\n    render() {\n        return (\n            <div\n                className=\"center\"\n                style={{ height: '100%', background: '#ececec', overflow: 'hidden' }}\n            >\n                <img\n                    src={img}\n                    alt=\"404\"\n                    className={`animated swing ${this.state.animated}`}\n                    onMouseEnter={this.enter}\n                />\n            </div>\n        );\n    }\n}\n\nexport default NotFound;\n"
  },
  {
    "path": "src/components/smenu/Sub1.tsx",
    "content": "/*\n * File: Sub1.tsx\n * Desc: 异步子菜单\n * File Created: 2020-01-21 11:31:15\n * Author: chenghao at <865470087@qq.com>\n * ------\n * Copyright 2020 - present, chenghao\n */\nimport React from 'react';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport { Row, Col, Card } from 'antd';\n\nconst SmenuSub1 = () => {\n    return (\n        <div>\n            <BreadcrumbCustom breads={['异步菜单']} />\n            <Row gutter={16}>\n                <Col md={24}>\n                    <Card title=\"异步子菜单\" bordered={false}>\n                        <div>异步子菜单1</div>\n                    </Card>\n                </Col>\n            </Row>\n        </div>\n    );\n};\n\nexport default SmenuSub1;\n"
  },
  {
    "path": "src/components/smenu/Sub2.tsx",
    "content": "/*\n * File: Sub2.tsx\n * Desc: 异步子菜单\n * File Created: 2020-01-21 11:31:15\n * Author: chenghao at <865470087@qq.com>\n * ------\n * Copyright 2020 - present, chenghao\n */\nimport React from 'react';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport { Row, Col, Card } from 'antd';\n\nconst SmenuSub2 = () => {\n    return (\n        <div>\n            <BreadcrumbCustom breads={['异步菜单']} />\n            <Row gutter={16}>\n                <Col md={24}>\n                    <Card title=\"异步子菜单\" bordered={false}>\n                        <div>异步子菜单2</div>\n                    </Card>\n                </Col>\n            </Row>\n        </div>\n    );\n};\n\nexport default SmenuSub2;\n"
  },
  {
    "path": "src/components/tables/AdvancedTables.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/16.\n */\nimport React from 'react';\nimport { Row, Col, Card } from 'antd';\nimport FixedTable from './FixedTable';\nimport ExpandedTable from './ExpandedTable';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\n\nclass AdvancedTables extends React.Component {\n    render() {\n        return (\n            <div className=\"gutter-example\">\n                <BreadcrumbCustom breads={['表格', '高级表格']} />\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={24}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"固定列\" bordered={false}>\n                                <FixedTable />\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"可展开\" bordered={false}>\n                                <ExpandedTable />\n                            </Card>\n                        </div>\n                    </Col>\n                    {/* <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"可编辑\" bordered={false}>\n                                <EditableTable />\n                            </Card>\n                        </div>\n                    </Col> */}\n                </Row>\n            </div>\n        );\n    }\n}\n\nexport default AdvancedTables;\n"
  },
  {
    "path": "src/components/tables/AsynchronousTable.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/16.\n */\nimport React from 'react';\nimport { Table, Button, Row, Col, Card } from 'antd';\nimport { getBbcNews } from '../../service';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\n\nconst columns = [\n    {\n        title: '新闻标题',\n        dataIndex: 'title',\n        width: 100,\n        render: (text: any, record: any) => (\n            <a href={record.url} target=\"_blank\" rel=\"noopener noreferrer\">\n                {text}\n            </a>\n        ),\n    },\n    {\n        title: '作者',\n        dataIndex: 'author',\n        width: 80,\n    },\n    {\n        title: '发布时间',\n        dataIndex: 'publishedAt',\n        width: 80,\n    },\n    {\n        title: '描述',\n        dataIndex: 'description',\n        width: 200,\n    },\n];\n\nclass AsynchronousTable extends React.Component {\n    state = {\n        selectedRowKeys: [], // Check here to configure the default column\n        loading: false,\n        data: [],\n    };\n    componentDidMount() {\n        this.start();\n    }\n    start = () => {\n        this.setState({ loading: true });\n        getBbcNews().then(({ articles }: { articles: any }) => {\n            this.setState({\n                data: articles,\n                loading: false,\n            });\n        });\n    };\n    onSelectChange = (selectedRowKeys: string[]) => {\n        console.log('selectedRowKeys changed: ', selectedRowKeys);\n        this.setState({ selectedRowKeys });\n    };\n    render() {\n        const { loading, selectedRowKeys } = this.state;\n        const rowSelection = {\n            selectedRowKeys,\n            onChange: this.onSelectChange,\n        };\n        const hasSelected = selectedRowKeys.length > 0;\n        return (\n            <div className=\"gutter-example\">\n                <BreadcrumbCustom breads={['表格', '异步表格']} />\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={24}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"异步表格--BBC新闻今日热门\" bordered={false}>\n                                <div style={{ marginBottom: 16 }}>\n                                    <Button\n                                        type=\"primary\"\n                                        onClick={this.start}\n                                        disabled={loading}\n                                        loading={loading}\n                                    >\n                                        Reload\n                                    </Button>\n                                    <span style={{ marginLeft: 8 }}>\n                                        {hasSelected\n                                            ? `Selected ${selectedRowKeys.length} items`\n                                            : ''}\n                                    </span>\n                                </div>\n                                <Table\n                                    rowSelection={rowSelection as any}\n                                    columns={columns}\n                                    dataSource={this.state.data}\n                                />\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n            </div>\n        );\n    }\n}\n\nexport default AsynchronousTable;\n"
  },
  {
    "path": "src/components/tables/BasicTable.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/15.\n */\nimport React from 'react';\nimport { Table, Button } from 'antd';\nimport { DownOutlined } from '@ant-design/icons';\n\nconst columns = [\n    {\n        title: 'Name',\n        dataIndex: 'name',\n        key: 'name',\n        render: (text: any) => <span>{text}</span>,\n    },\n    {\n        title: 'Age',\n        dataIndex: 'age',\n        key: 'age',\n    },\n    {\n        title: 'Address',\n        dataIndex: 'address',\n        key: 'address',\n    },\n    {\n        title: 'Action',\n        key: 'action',\n        render: (text: any, record: any) => (\n            <span>\n                <Button>Action 一 {record.name}</Button>\n                <span className=\"ant-divider\" />\n                <Button>Delete</Button>\n                <span className=\"ant-divider\" />\n                <Button className=\"ant-dropdown-link\">\n                    More actions <DownOutlined />\n                </Button>\n            </span>\n        ),\n    },\n];\n\nconst data = [\n    {\n        key: '1',\n        name: 'John Brown',\n        age: 32,\n        address: 'New York No. 1 Lake Park',\n    },\n    {\n        key: '2',\n        name: 'Jim Green',\n        age: 42,\n        address: 'London No. 1 Lake Park',\n    },\n    {\n        key: '3',\n        name: 'Joe Black',\n        age: 32,\n        address: 'Sidney No. 1 Lake Park',\n    },\n];\n\nconst BasicTable = () => <Table columns={columns} dataSource={data} />;\n\nexport default BasicTable;\n"
  },
  {
    "path": "src/components/tables/BasicTables.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/15.\n */\nimport React from 'react';\nimport { Row, Col, Card } from 'antd';\nimport BasicTable from './BasicTable';\nimport SelectTable from './SelectTable';\nimport SortTable from './SortTable';\nimport SearchTable from './SearchTable';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\n\nconst BasicTables = () => (\n    <div className=\"gutter-example\">\n        <BreadcrumbCustom breads={['表格', '基础表格']} />\n        <Row gutter={16}>\n            <Col className=\"gutter-row\" md={24}>\n                <div className=\"gutter-box\">\n                    <Card title=\"基础表格\" bordered={false}>\n                        <BasicTable />\n                    </Card>\n                </div>\n            </Col>\n        </Row>\n        <Row gutter={16}>\n            <Col className=\"gutter-row\" md={24}>\n                <div className=\"gutter-box\">\n                    <Card title=\"基础表格\" bordered={false}>\n                        <SelectTable />\n                    </Card>\n                </div>\n            </Col>\n        </Row>\n        <Row gutter={16}>\n            <Col className=\"gutter-row\" md={12}>\n                <div className=\"gutter-box\">\n                    <Card title=\"可控的筛选和排序\" bordered={false}>\n                        <SortTable />\n                    </Card>\n                </div>\n            </Col>\n            <Col className=\"gutter-row\" md={12}>\n                <div className=\"gutter-box\">\n                    <Card title=\"自定义筛选\" bordered={false}>\n                        <SearchTable />\n                    </Card>\n                </div>\n            </Col>\n        </Row>\n    </div>\n);\n\nexport default BasicTables;\n"
  },
  {
    "path": "src/components/tables/ExpandedTable.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/16.\n */\nimport React from 'react';\nimport { Table, Button } from 'antd';\n\nconst columns = [\n    { title: 'Name', dataIndex: 'name', key: 'name' },\n    { title: 'Age', dataIndex: 'age', key: 'age' },\n    { title: 'Address', dataIndex: 'address', key: 'address' },\n    { title: 'Action', dataIndex: '', key: 'x', render: () => <Button>Delete</Button> },\n];\n\nconst data = [\n    { key: 1, name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park', description: 'My name is John Brown, I am 32 years old, living in New York No. 1 Lake Park.' },\n    { key: 2, name: 'Jim Green', age: 42, address: 'London No. 1 Lake Park', description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' },\n    { key: 3, name: 'Joe Black', age: 32, address: 'Sidney No. 1 Lake Park', description: 'My name is Joe Black, I am 32 years old, living in Sidney No. 1 Lake Park.' },\n];\n\nconst ExpandedTable = () => (\n    <Table\n        columns={columns}\n        expandedRowRender={record => <p>{record.description}</p>}\n        dataSource={data}\n    />\n);\n\nexport default ExpandedTable;"
  },
  {
    "path": "src/components/tables/FixedTable.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/16.\n */\nimport React from 'react';\nimport { Table } from 'antd';\nimport { ColumnProps } from 'antd/lib/table';\n\nconst columns: ColumnProps<any>[] = [\n    { title: 'Full Name', width: 100, dataIndex: 'name', key: 'name', fixed: 'left' },\n    { title: 'Age', width: 100, dataIndex: 'age', key: 'age', fixed: 'left' },\n    { title: 'Column 1', dataIndex: 'address', key: '1' },\n    { title: 'Column 2', dataIndex: 'address', key: '2' },\n    { title: 'Column 3', dataIndex: 'address', key: '3' },\n    { title: 'Column 4', dataIndex: 'address', key: '4' },\n    { title: 'Column 5', dataIndex: 'address', key: '5' },\n    { title: 'Column 6', dataIndex: 'address', key: '6' },\n    { title: 'Column 7', dataIndex: 'address', key: '7' },\n    { title: 'Column 8', dataIndex: 'address', key: '8' },\n    {\n        title: 'Action',\n        key: 'operation',\n        fixed: 'right',\n        width: 100,\n        render: () => <span>action</span>,\n    },\n];\n\nconst data = [\n    {\n        key: '1',\n        name: 'John Brown',\n        age: 32,\n        address: 'New York Park',\n    },\n    {\n        key: '2',\n        name: 'Jim Green',\n        age: 40,\n        address: 'London Park',\n    },\n];\n\nconst FixedTable = () => <Table columns={columns} dataSource={data} scroll={{ x: 1300 }} />;\n\nexport default FixedTable;\n"
  },
  {
    "path": "src/components/tables/SearchTable.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/16.\n */\nimport React from 'react';\nimport { Table, Input, Button } from 'antd';\nimport { SmileOutlined } from '@ant-design/icons';\n\nconst data = [\n    {\n        key: '1',\n        name: 'John Brown',\n        age: 32,\n        address: 'New York No. 1 Lake Park',\n    },\n    {\n        key: '2',\n        name: 'Joe Black',\n        age: 42,\n        address: 'London No. 1 Lake Park',\n    },\n    {\n        key: '3',\n        name: 'Jim Green',\n        age: 32,\n        address: 'Sidney No. 1 Lake Park',\n    },\n    {\n        key: '4',\n        name: 'Jim Red',\n        age: 32,\n        address: 'London No. 2 Lake Park',\n    },\n];\n\nclass SearchTable extends React.Component {\n    state = {\n        filterDropdownVisible: false,\n        data,\n        searchText: '',\n        filtered: false,\n    };\n    searchInput: any;\n    onInputChange = (e: any) => {\n        this.setState({ searchText: e.target.value });\n    };\n    onSearch = () => {\n        const { searchText } = this.state;\n        const reg = new RegExp(searchText, 'gi');\n        this.setState({\n            filterDropdownVisible: false,\n            filtered: !!searchText,\n            data: data\n                .map((record) => {\n                    const match = record.name.match(reg);\n                    if (!match) {\n                        return null;\n                    }\n                    return {\n                        ...record,\n                        name: (\n                            <span>\n                                {record.name\n                                    .split(reg)\n                                    .map((text, i) =>\n                                        i > 0\n                                            ? [<span className=\"highlight\">{match[0]}</span>, text]\n                                            : text\n                                    )}\n                            </span>\n                        ),\n                    };\n                })\n                .filter((record) => !!record),\n        });\n    };\n    render() {\n        const columns = [\n            {\n                title: 'Name',\n                dataIndex: 'name',\n                key: 'name',\n                filterDropdown: (\n                    <div className=\"custom-filter-dropdown\">\n                        <Input\n                            ref={(ele) => (this.searchInput = ele)}\n                            placeholder=\"Search name\"\n                            value={this.state.searchText}\n                            onChange={this.onInputChange}\n                            onPressEnter={this.onSearch}\n                        />\n                        <Button type=\"primary\" onClick={this.onSearch}>\n                            Search\n                        </Button>\n                    </div>\n                ),\n                filterIcon: (\n                    <SmileOutlined style={{ color: this.state.filtered ? '#108ee9' : '#aaa' }} />\n                ),\n                filterDropdownVisible: this.state.filterDropdownVisible,\n                onFilterDropdownVisibleChange: (visible: boolean) =>\n                    this.setState({ filterDropdownVisible: visible }, () =>\n                        this.searchInput.focus()\n                    ),\n            },\n            {\n                title: 'Age',\n                dataIndex: 'age',\n                key: 'age',\n            },\n            {\n                title: 'Address',\n                dataIndex: 'address',\n                key: 'address',\n                filters: [\n                    {\n                        text: 'London',\n                        value: 'London',\n                    },\n                    {\n                        text: 'New York',\n                        value: 'New York',\n                    },\n                ],\n                onFilter: (value: any, record: any) => record.address.indexOf(value) === 0,\n            },\n        ];\n        return (\n            <div>\n                <Table columns={columns} dataSource={this.state.data} />\n                <style>{`\n                    .custom-filter-dropdown {\n                      padding: 8px;\n                      border-radius: 6px;\n                      background: #fff;\n                      box-shadow: 0 1px 6px rgba(0, 0, 0, .2);\n                    }\n                    .custom-filter-dropdown input {\n                      width: 130px;\n                      margin-right: 8px;\n                    }\n                    .highlight {\n                      color: #f50;\n                    }\n                `}</style>\n            </div>\n        );\n    }\n}\n\nexport default SearchTable;\n"
  },
  {
    "path": "src/components/tables/SelectTable.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/15.\n */\nimport React from 'react';\nimport { Table } from 'antd';\n// import { TableRowSelection } from 'antd/lib/table';\n\nconst columns = [\n    {\n        title: 'Name',\n        dataIndex: 'name',\n    },\n    {\n        title: 'Age',\n        dataIndex: 'age',\n    },\n    {\n        title: 'Address',\n        dataIndex: 'address',\n    },\n];\n\nconst data: any[] = [];\nfor (let i = 0; i < 46; i++) {\n    data.push({\n        key: i,\n        name: `Edward King ${i}`,\n        age: 32,\n        address: `London, Park Lane no. ${i}`,\n    });\n}\n\nclass SelectTable extends React.Component {\n    state = {\n        selectedRowKeys: [], // Check here to configure the default column\n    };\n    onSelectChange = (selectedRowKeys: string[] | number[]) => {\n        console.log('selectedRowKeys changed: ', selectedRowKeys);\n        this.setState({ selectedRowKeys });\n    };\n    render() {\n        const { selectedRowKeys } = this.state;\n        const rowSelection: any = {\n            selectedRowKeys,\n            onChange: this.onSelectChange,\n            selections: [\n                {\n                    key: 'odd',\n                    text: '选择奇数列',\n                    onSelect: (changableRowKeys: string[]) => {\n                        let newSelectedRowKeys = [];\n                        newSelectedRowKeys = changableRowKeys.filter((key, index) => {\n                            if (index % 2 !== 0) {\n                                return false;\n                            }\n                            return true;\n                        });\n                        this.setState({ selectedRowKeys: newSelectedRowKeys });\n                    },\n                },\n                {\n                    key: 'even',\n                    text: '选择偶数列',\n                    onSelect: (changableRowKeys: string[]) => {\n                        let newSelectedRowKeys = [];\n                        newSelectedRowKeys = changableRowKeys.filter((key, index) => {\n                            if (index % 2 !== 0) {\n                                return true;\n                            }\n                            return false;\n                        });\n                        this.setState({ selectedRowKeys: newSelectedRowKeys });\n                    },\n                },\n            ],\n            // onSelection: this.onSelection,\n        };\n        return <Table rowSelection={rowSelection} columns={columns} dataSource={data} />;\n    }\n}\n\nexport default SelectTable;\n"
  },
  {
    "path": "src/components/tables/SortTable.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/15.\n */\nimport React from 'react';\nimport { Table, Button } from 'antd';\n\nconst data = [\n    {\n        key: '1',\n        name: 'John Brown',\n        age: 32,\n        address: 'New York No. 1 Lake Park',\n    },\n    {\n        key: '2',\n        name: 'Jim Green',\n        age: 42,\n        address: 'London No. 1 Lake Park',\n    },\n    {\n        key: '3',\n        name: 'Joe Black',\n        age: 32,\n        address: 'Sidney No. 1 Lake Park',\n    },\n    {\n        key: '4',\n        name: 'Jim Red',\n        age: 32,\n        address: 'London No. 2 Lake Park',\n    },\n];\n\ntype SortTableState = {\n    filteredInfo: any;\n    sortedInfo: any;\n};\nclass SortTable extends React.Component<any, SortTableState> {\n    constructor(props: any) {\n        super(props);\n        this.state = {\n            filteredInfo: {},\n            sortedInfo: {},\n        };\n    }\n    handleChange = (pagination: any, filters: any, sorter: any) => {\n        console.log('Various parameters', pagination, filters, sorter);\n        this.setState({\n            filteredInfo: filters,\n            sortedInfo: sorter,\n        });\n    };\n    clearFilters = () => {\n        this.setState({ filteredInfo: null });\n    };\n    clearAll = () => {\n        this.setState({\n            filteredInfo: null,\n            sortedInfo: null,\n        });\n    };\n    setAgeSort = () => {\n        this.setState({\n            sortedInfo: {\n                order: 'descend',\n                columnKey: 'age',\n            },\n        });\n    };\n    render() {\n        let { sortedInfo, filteredInfo } = this.state;\n        const columns = [\n            {\n                title: 'Name',\n                dataIndex: 'name',\n                key: 'name',\n                filters: [{ text: 'Joe', value: 'Joe' }, { text: 'Jim', value: 'Jim' }],\n                filteredValue: filteredInfo.name || null,\n                onFilter: (value: any, record: any) => record.name.includes(value),\n                sorter: (a: any, b: any) => a.name.length - b.name.length,\n                sortOrder: sortedInfo.columnKey === 'name' && sortedInfo.order,\n            },\n            {\n                title: 'Age',\n                dataIndex: 'age',\n                key: 'age',\n                sorter: (a: any, b: any) => a.age - b.age,\n                sortOrder: sortedInfo.columnKey === 'age' && sortedInfo.order,\n            },\n            {\n                title: 'Address',\n                dataIndex: 'address',\n                key: 'address',\n                filters: [\n                    { text: 'London', value: 'London' },\n                    { text: 'New York', value: 'New York' },\n                ],\n                filteredValue: filteredInfo.address || null,\n                onFilter: (value: any, record: any) => record.address.includes(value),\n                sorter: (a: any, b: any) => a.address.length - b.address.length,\n                sortOrder: sortedInfo.columnKey === 'address' && sortedInfo.order,\n            },\n        ];\n        return (\n            <div>\n                <div className=\"table-operations\">\n                    <Button onClick={this.setAgeSort}>Sort age</Button>\n                    <Button onClick={this.clearFilters}>Clear filters</Button>\n                    <Button onClick={this.clearAll}>Clear filters and sorters</Button>\n                </div>\n                <Table columns={columns} dataSource={data} onChange={this.handleChange} />\n            </div>\n        );\n    }\n}\n\nexport default SortTable;\n"
  },
  {
    "path": "src/components/ui/Buttons.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/23.\n */\nimport React from 'react';\nimport { Row, Col, Card, Button, Radio, Menu, Dropdown } from 'antd';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport { RadioChangeEvent } from 'antd/lib/radio';\nimport { ButtonSize } from 'antd/lib/button';\nimport { DownOutlined, LeftOutlined, RightOutlined } from '@ant-design/icons';\n\ntype ButtonsState = {\n    size: ButtonSize;\n    loading: boolean;\n    iconLoading: boolean;\n};\nclass Buttons extends React.Component<any, ButtonsState> {\n    constructor(props: any) {\n        super(props);\n        this.state = {\n            size: 'middle',\n            loading: false,\n            iconLoading: false,\n        };\n    }\n\n    handleSizeChange = (e: RadioChangeEvent) => {\n        this.setState({ size: e.target.value });\n    };\n    handleMenuClick = (e: any) => {\n        console.log('click', e);\n    };\n    enterLoading = () => {\n        this.setState({ loading: true });\n    };\n    enterIconLoading = () => {\n        this.setState({ iconLoading: true });\n    };\n    render() {\n        const size = this.state.size;\n        const menu = (\n            <Menu onClick={this.handleMenuClick}>\n                <Menu.Item key=\"1\">1st item</Menu.Item>\n                <Menu.Item key=\"2\">2nd item</Menu.Item>\n                <Menu.Item key=\"3\">3rd item</Menu.Item>\n            </Menu>\n        );\n        return (\n            <div className=\"gutter-example button-demo\">\n                <BreadcrumbCustom breads={['UI', '按钮']} />\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <Button type=\"primary\">Primary</Button>\n                                <Button>Default</Button>\n                                <Button type=\"dashed\">Dashed</Button>\n                                <Button danger>Danger</Button>\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <Button type=\"primary\" shape=\"circle\" icon=\"search\" />\n                                <Button type=\"primary\" icon=\"search\">\n                                    Search\n                                </Button>\n                                <Button shape=\"circle\" icon=\"search\" />\n                                <Button icon=\"search\">Search</Button>\n                                <br />\n                                <Button shape=\"circle\" icon=\"search\" />\n                                <Button icon=\"search\">Search</Button>\n                                <Button type=\"dashed\" shape=\"circle\" icon=\"search\" />\n                                <Button type=\"dashed\" icon=\"search\">\n                                    Search\n                                </Button>\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <Radio.Group value={size} onChange={this.handleSizeChange}>\n                                    <Radio.Button value=\"large\">Large</Radio.Button>\n                                    <Radio.Button value=\"middle\">Middle</Radio.Button>\n                                    <Radio.Button value=\"small\">Small</Radio.Button>\n                                </Radio.Group>\n                                <br />\n                                <br />\n                                <Button type=\"primary\" shape=\"circle\" icon=\"download\" size={size} />\n                                <Button type=\"primary\" icon=\"download\" size={size}>\n                                    Download\n                                </Button>\n                                <Button type=\"primary\" size={size}>\n                                    Normal\n                                </Button>\n                                <br />\n                                <Button.Group size={size}>\n                                    <Button type=\"primary\">\n                                        <LeftOutlined />\n                                        Backward\n                                    </Button>\n                                    <Button type=\"primary\">\n                                        Forward\n                                        <RightOutlined />\n                                    </Button>\n                                </Button.Group>\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <Button type=\"primary\">primary</Button>\n                                <Button>secondary</Button>\n                                <Dropdown overlay={menu}>\n                                    <Button>\n                                        more <DownOutlined />\n                                    </Button>\n                                </Dropdown>\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <Button type=\"primary\" loading>\n                                    Loading\n                                </Button>\n                                <Button type=\"primary\" size=\"small\" loading>\n                                    Loading\n                                </Button>\n                                <br />\n                                <Button\n                                    type=\"primary\"\n                                    loading={this.state.loading}\n                                    onClick={this.enterLoading}\n                                >\n                                    Click me!\n                                </Button>\n                                <Button\n                                    type=\"primary\"\n                                    icon=\"poweroff\"\n                                    loading={this.state.iconLoading}\n                                    onClick={this.enterIconLoading}\n                                >\n                                    Click me!\n                                </Button>\n                                <br />\n                                <Button shape=\"circle\" loading />\n                                <Button type=\"primary\" shape=\"circle\" loading />\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n                <style>{`\n                    .button-demo .ant-btn {\n                        margin-right: 8px;\n                        margin-bottom: 12px;\n                    }\n                `}</style>\n            </div>\n        );\n    }\n}\n\nexport default Buttons;\n"
  },
  {
    "path": "src/components/ui/Draggable.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/28.\n */\nimport React from 'react';\nimport { Row, Col, Card } from 'antd';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport Draggable from 'react-draggable';\n\nclass Drags extends React.Component {\n    state = {\n        activeDrags: 0,\n        deltaPosition: {\n            x: 0,\n            y: 0,\n        },\n        controlledPosition: {\n            x: -400,\n            y: 200,\n        },\n    };\n    onStart = () => {\n        let { activeDrags } = this.state;\n        this.setState({ activeDrags: ++activeDrags });\n    };\n    onStop = () => {\n        let { activeDrags } = this.state;\n        this.setState({ activeDrags: --activeDrags });\n    };\n    handleDrag = (e: any, ui: any) => {\n        const { x, y } = this.state.deltaPosition;\n        this.setState({\n            deltaPosition: {\n                x: x + ui.deltaX,\n                y: y + ui.deltaY,\n            },\n        });\n    };\n    render() {\n        const dragHandlers = { onStart: this.onStart, onStop: this.onStop };\n        const { deltaPosition } = this.state;\n        return (\n            <div className=\"gutter-example button-demo\">\n                <BreadcrumbCustom breads={['UI', '拖拽']} />\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={6}>\n                        <div className=\"gutter-box\">\n                            <Draggable {...dragHandlers}>\n                                <Card bordered={false} className={'dragDemo'}>\n                                    I can be dragged anywhere\n                                </Card>\n                            </Draggable>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={6}>\n                        <div className=\"gutter-box\">\n                            <Draggable axis=\"x\" {...dragHandlers}>\n                                <Card bordered={false} className={'dragDemo'}>\n                                    I can only be dragged horizonally (x axis)\n                                </Card>\n                            </Draggable>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={6}>\n                        <div className=\"gutter-box\">\n                            <Draggable axis=\"y\" {...dragHandlers}>\n                                <Card bordered={false} className={'dragDemo'}>\n                                    I can only be dragged vertically (y axis)\n                                </Card>\n                            </Draggable>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={6}>\n                        <div className=\"gutter-box\">\n                            <Draggable onDrag={this.handleDrag} {...dragHandlers}>\n                                <Card bordered={false} className={'dragDemo'}>\n                                    <div>I track my deltas</div>\n                                    <div>\n                                        x: {deltaPosition.x.toFixed(0)}, y:{' '}\n                                        {deltaPosition.y.toFixed(0)}\n                                    </div>\n                                </Card>\n                            </Draggable>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={6}>\n                        <div className=\"gutter-box\">\n                            <Draggable handle=\"strong\" {...dragHandlers}>\n                                <Card bordered={false} className={'dragDemo no-cursor'}>\n                                    <strong className=\"cursor-move\">\n                                        <div>Drag here</div>\n                                    </strong>\n                                    <div>You must click my handle to drag me</div>\n                                </Card>\n                            </Draggable>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={6}>\n                        <div className=\"gutter-box\">\n                            <Draggable cancel=\"strong\" {...dragHandlers}>\n                                <Card bordered={false} className={'dragDemo'}>\n                                    <strong className=\"no-cursor\">\n                                        <div>Can't drag here</div>\n                                    </strong>\n                                    <div>Dragging here works</div>\n                                </Card>\n                            </Draggable>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={6}>\n                        <div className=\"gutter-box\">\n                            <Draggable\n                                bounds={{ top: -100, left: -100, right: 100, bottom: 100 }}\n                                {...dragHandlers}\n                            >\n                                <Card bordered={false} className={'dragDemo'}>\n                                    <div>I can only be moved 100px in any direction.</div>\n                                </Card>\n                            </Draggable>\n                        </div>\n                    </Col>\n                </Row>\n                <style>{`\n                    .dragDemo {\n                        height: 180px;\n                    }\n                `}</style>\n            </div>\n        );\n    }\n}\n\nexport default Drags;\n"
  },
  {
    "path": "src/components/ui/Gallery.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/5/6.\n */\nimport React from 'react';\nimport { Row, Col, Card } from 'antd';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport PhotoSwipe from 'photoswipe';\nimport PhotoswipeUIDefault from 'photoswipe/dist/photoswipe-ui-default';\nimport 'photoswipe/dist/photoswipe.css';\nimport 'photoswipe/dist/default-skin/default-skin.css';\n\nclass Gallery extends React.Component {\n    state = {\n        gallery: null,\n    };\n    componentDidMount() {}\n    componentWillUnmount = () => {\n        this.closeGallery();\n    };\n    pswpElement: any;\n    gallery: any;\n    openGallery = (item: any) => {\n        const items = [\n            {\n                src: item,\n                w: 0,\n                h: 0,\n            },\n        ];\n        const pswpElement = this.pswpElement;\n        const options = { index: 0 };\n        this.gallery = new PhotoSwipe(pswpElement, PhotoswipeUIDefault, items, options);\n        this.gallery.listen('gettingData', (index: number, item: any) => {\n            const _this = this;\n            if (item.w < 1 || item.h < 1) {\n                // unknown size\n                var img = new Image();\n                img.onload = function () {\n                    // will get size after load\n                    item.w = (this as any).width; // set image width\n                    item.h = (this as any).height; // set image height\n                    _this.gallery.invalidateCurrItems(); // reinit Items\n                    _this.gallery.updateSize(true); // reinit Items\n                };\n                img.src = item.src; // let's download image\n            }\n        });\n        this.gallery.init();\n    };\n    closeGallery = () => {\n        if (!this.gallery) return;\n        this.gallery.close();\n    };\n    render() {\n        const imgs = [\n            [\n                'http://img.hb.aicdn.com/1cad414972c5db2b8c1942289e3aeef37175006a8bb16-CBtjtX_fw',\n                'http://img.hb.aicdn.com/016f2e13934397e17c3482a4529f3da1149d37fd2a99c-RVM1Gi_fw',\n                'http://img.hb.aicdn.com/8c5d5f2bf6427d1b5ed8657a7ae0c9938d3465e367899-AJ0zVA_fw',\n                'http://img.hb.aicdn.com/bd71ccac0b16bbcade255a1a8a63504d71c7dee9a8652-zBCN9d_fw',\n                'http://img.hb.aicdn.com/37a40cb04345463858d45418ae6ed9ef319e30dc37a45-o4pQ0j_fw',\n            ],\n            [\n                'http://img.hb.aicdn.com/5fad6c3a14a9b80c4448835bb6b23ab895d18e234eff3-BPGmox_fw',\n                'http://img.hb.aicdn.com/a1a19de5dac212a646ba6967ef565786399fb1665bd04-EEvwzR_fw',\n                'http://img.hb.aicdn.com/06595f8044e881de3a82d691768bc8c21a2a9f3633d60-XKjC2s_fw',\n                'http://img.hb.aicdn.com/880787b36d45efbe05aa409c867db29a3028e02da7f9b-qxGib9_fw',\n                'http://img.hb.aicdn.com/4964b97f6f6eb61a20922b40842adf0169c44e491c4b60-azX1S7_fw',\n            ],\n            [\n                'http://img.hb.aicdn.com/ff97d00944edfc706c62dd5c0e955c4099a37b407534f-BcUqf0_fw',\n                'http://img.hb.aicdn.com/0e22be22b08c6f78b94283b6cfa890093ac3cae8401e7-b1ftfi_fw',\n                'http://img.hb.aicdn.com/879f870e15f7cc0847c8ae19a5fcbe974d5904bb181d7-RGmtNU_fw',\n                'http://img.hb.aicdn.com/b4a8e62958555a97dc3de9ccb03284bf556c042925522-x50qGv_fw',\n                'http://img.hb.aicdn.com/1ef493a15674e9fd523b248ea4ec43d2ea9ce6952ff3e-WavWKc_fw',\n            ],\n            [\n                'http://img.hb.aicdn.com/8e16efec78ac4a3684fc8999d18e3661af40fd4510a25-DDvQON_fw',\n                'http://img.hb.aicdn.com/61dfa024c8040e6a5bcb03d42928fbcb0c87c1a54e731-yc4lvV_fw',\n                'http://img.hb.aicdn.com/6783b4d7811ad7fb87b1446c5488b91179f7608118289-hpEyP3_fw',\n                'http://img.hb.aicdn.com/7be61ba6bdb20a73be63edc387b16eec72d0bbb51c7ef-XafA07_fw',\n                'http://img.hb.aicdn.com/bd3ba3f907fe098b911947e0020615b50fc340ed2df72-WsuHuM_fw',\n            ],\n            [\n                'http://img.hb.aicdn.com/71471aaac95eade66400a390863b37c76d9addcd14982-0H6sak_fw',\n                'http://img.hb.aicdn.com/cb16c68c4d3b7a08b5e91cd351f6b723634ca3fc27d4d-m1JD8z_fw',\n                'http://img.hb.aicdn.com/e3559b6e8d7237857382050e5659a64cc0b7d696a2869-stcRXA_fw',\n                'http://img.hb.aicdn.com/4ea229436fcf2077502953907a6afb16d3c5cd611b8e2-0dVIeH_fw',\n                'http://img.hb.aicdn.com/98c786f4314736f95a42bf927bf65a82d305a532c6258-njI6id_fw',\n            ],\n        ];\n        const imgsTag = imgs.map((v1) =>\n            v1.map((v2) => (\n                <div className=\"gutter-box\" key={v2}>\n                    <Card bordered={false} bodyStyle={{ padding: 0 }}>\n                        <div>\n                            <img\n                                onClick={() => this.openGallery(v2)}\n                                alt=\"example\"\n                                width=\"100%\"\n                                src={v2}\n                            />\n                        </div>\n                        <div className=\"pa-m\">\n                            <h3>React Admin</h3>\n                            <small>\n                                <a\n                                    href=\"https://yezihaohao.github.io/\"\n                                    target=\"_blank\"\n                                    rel=\"noopener noreferrer\"\n                                >\n                                    https://yezihaohao.github.io/\n                                </a>\n                            </small>\n                        </div>\n                    </Card>\n                </div>\n            ))\n        );\n        return (\n            <div className=\"gutter-example button-demo\">\n                <BreadcrumbCustom\n                    breads={['UI', '画廊(图片来自花瓣网，仅学习，若侵权请联系删除)']}\n                />\n                <Row gutter={10}>\n                    <Col className=\"gutter-row\" md={5}>\n                        {imgsTag[0]}\n                    </Col>\n                    <Col className=\"gutter-row\" md={5}>\n                        {imgsTag[1]}\n                    </Col>\n                    <Col className=\"gutter-row\" md={5}>\n                        {imgsTag[2]}\n                    </Col>\n                    <Col className=\"gutter-row\" md={5}>\n                        {imgsTag[3]}\n                    </Col>\n                    <Col className=\"gutter-row\" md={4}>\n                        {imgsTag[4]}\n                    </Col>\n                </Row>\n                <div\n                    className=\"pswp\"\n                    tabIndex={-1}\n                    role=\"dialog\"\n                    aria-hidden=\"true\"\n                    ref={(div) => {\n                        this.pswpElement = div;\n                    }}\n                >\n                    <div className=\"pswp__bg\" />\n\n                    <div className=\"pswp__scroll-wrap\">\n                        <div className=\"pswp__container\">\n                            <div className=\"pswp__item\" />\n                            <div className=\"pswp__item\" />\n                            <div className=\"pswp__item\" />\n                        </div>\n\n                        <div className=\"pswp__ui pswp__ui--hidden\">\n                            <div className=\"pswp__top-bar\">\n                                <div className=\"pswp__counter\" />\n\n                                <button\n                                    className=\"pswp__button pswp__button--close\"\n                                    title=\"Close (Esc)\"\n                                />\n\n                                <button\n                                    className=\"pswp__button pswp__button--share\"\n                                    title=\"Share\"\n                                />\n\n                                <button\n                                    className=\"pswp__button pswp__button--fs\"\n                                    title=\"Toggle fullscreen\"\n                                />\n\n                                <button\n                                    className=\"pswp__button pswp__button--zoom\"\n                                    title=\"Zoom in/out\"\n                                />\n\n                                <div className=\"pswp__preloader\">\n                                    <div className=\"pswp__preloader__icn\">\n                                        <div className=\"pswp__preloader__cut\">\n                                            <div className=\"pswp__preloader__donut\" />\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n\n                            <div className=\"pswp__share-modal pswp__share-modal--hidden pswp__single-tap\">\n                                <div className=\"pswp__share-tooltip\" />\n                            </div>\n\n                            <button\n                                className=\"pswp__button pswp__button--arrow--left\"\n                                title=\"Previous (arrow left)\"\n                            />\n\n                            <button\n                                className=\"pswp__button pswp__button--arrow--right\"\n                                title=\"Next (arrow right)\"\n                            />\n\n                            <div className=\"pswp__caption\">\n                                <div className=\"pswp__caption__center\" />\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <style>{`\n                    .ant-card-body img {\n                        cursor: pointer;\n                    }\n                `}</style>\n            </div>\n        );\n    }\n}\n\nexport default Gallery;\n"
  },
  {
    "path": "src/components/ui/Icons.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/22.\n */\nimport React from 'react';\nimport Emoji from './emoji';\nimport { Row, Col, Card } from 'antd';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\n\nconst emojiList = () => {\n    let _elements = [];\n    for (let i = 1; i < 30; i++) {\n        _elements.push(\n            <li key={i}>\n                <Emoji type={'emoji-' + i} />\n                <span>{'emoji-' + i}</span>\n            </li>\n        );\n    }\n    return _elements;\n};\n\nconst icons = {\n    direction: [\n        'step-backward',\n        'step-forward',\n        'fast-backward',\n        'fast-forward',\n        'shrink',\n        'arrows-alt',\n        'down',\n        'up',\n        'left',\n        'right',\n        'caret-up',\n        'caret-down',\n        'caret-left',\n        'caret-right',\n        'up-circle',\n        'down-circle',\n        'left-circle',\n        'right-circle',\n        'up-circle-o',\n        'down-circle-o',\n        'right-circle-o',\n        'left-circle-o',\n        'double-right',\n        'double-left',\n        'verticle-left',\n        'verticle-right',\n        'forward',\n        'backward',\n        'rollback',\n        'enter',\n        'retweet',\n        'swap',\n        'swap-left',\n        'swap-right',\n        'arrow-up',\n        'arrow-down',\n        'arrow-left',\n        'arrow-right',\n        'play-circle',\n        'play-circle-o',\n        'up-square',\n        'down-square',\n        'left-square',\n        'right-square',\n        'up-square-o',\n        'down-square-o',\n        'left-square-o',\n        'right-square-o',\n        'login',\n        'logout',\n        'menu-fold',\n        'menu-unfold',\n    ],\n    suggestion: [\n        'question',\n        'question-circle-o',\n        'question-circle',\n        'plus',\n        'plus-circle-o',\n        'plus-circle',\n        'pause',\n        'pause-circle-o',\n        'pause-circle',\n        'minus',\n        'minus-circle-o',\n        'minus-circle',\n        'plus-square',\n        'plus-square-o',\n        'minus-square',\n        'minus-square-o',\n        'info',\n        'info-circle-o',\n        'info-circle',\n        'exclamation',\n        'exclamation-circle-o',\n        'exclamation-circle',\n        'close',\n        'close-circle',\n        'close-circle-o',\n        'close-square',\n        'close-square-o',\n        'check',\n        'check-circle',\n        'check-circle-o',\n        'check-square',\n        'check-square-o',\n        'clock-circle-o',\n        'clock-circle',\n    ],\n    logo: [\n        'android',\n        'android-o',\n        'apple',\n        'apple-o',\n        'windows',\n        'windows-o',\n        'ie',\n        'chrome',\n        'github',\n        'aliwangwang',\n        'aliwangwang-o',\n        'dingding',\n        'dingding-o',\n    ],\n    other: [\n        'lock',\n        'unlock',\n        'area-chart',\n        'pie-chart',\n        'bar-chart',\n        'dot-chart',\n        'bars',\n        'book',\n        'calendar',\n        'cloud',\n        'cloud-download',\n        'code',\n        'code-o',\n        'copy',\n        'credit-card',\n        'delete',\n        'desktop',\n        'download',\n        'edit',\n        'ellipsis',\n        'file',\n        'file-text',\n        'file-unknown',\n        'file-pdf',\n        'file-excel',\n        'file-jpg',\n        'file-ppt',\n        'file-add',\n        'folder',\n        'folder-open',\n        'folder-add',\n        'hdd',\n        'frown',\n        'frown-o',\n        'meh',\n        'meh-o',\n        'smile',\n        'smile-o',\n        'inbox',\n        'laptop',\n        'appstore-o',\n        'appstore',\n        'line-chart',\n        'link',\n        'mail',\n        'mobile',\n        'notification',\n        'paper-clip',\n        'picture',\n        'poweroff',\n        'reload',\n        'search',\n        'setting',\n        'share-alt',\n        'shopping-cart',\n        'tablet',\n        'tag',\n        'tag-o',\n        'tags',\n        'tags-o',\n        'to-top',\n        'upload',\n        'user',\n        'video-camera',\n        'home',\n        'loading',\n        'loading-3-quarters',\n        'cloud-upload-o',\n        'cloud-download-o',\n        'cloud-upload',\n        'cloud-o',\n        'star-o',\n        'star',\n        'heart-o',\n        'heart',\n        'environment',\n        'environment-o',\n        'eye',\n        'eye-o',\n        'camera',\n        'camera-o',\n        'save',\n        'team',\n        'solution',\n        'phone',\n        'filter',\n        'exception',\n        'export',\n        'customer-service',\n        'qrcode',\n        'scan',\n        'like',\n        'like-o',\n        'dislike',\n        'dislike-o',\n        'message',\n        'pay-circle',\n        'pay-circle-o',\n        'calculator',\n        'pushpin',\n        'pushpin-o',\n        'bulb',\n        'select',\n        'switcher',\n        'rocket',\n        'bell',\n        'disconnect',\n        'database',\n        'compass',\n        'barcode',\n        'hourglass',\n        'key',\n        'flag',\n        'layout',\n        'printer',\n        'sound',\n        'usb',\n        'skin',\n        'tool',\n        'sync',\n        'wifi',\n        'car',\n        'schedule',\n        'user-add',\n        'user-delete',\n        'usergroup-add',\n        'usergroup-delete',\n        'man',\n        'woman',\n        'shop',\n        'gift',\n        'idcard',\n        'medicine-box',\n        'red-envelope',\n        'coffee',\n        'copyright',\n        'trademark',\n        'safety',\n        'wallet',\n        'bank',\n        'trophy',\n        'contacts',\n        'global',\n        'shake',\n        'api',\n    ],\n};\nconst iconsList = Object.keys(icons).map((v) =>\n    (icons as any)[v].map((icon: any, i: number) => (\n        <li key={i}>\n            {/* <Icon type={icon} style={{ fontSize: 15 }} /> */}\n            <span>{icon}</span>\n        </li>\n    ))\n);\n\nconst Icons = () => (\n    <div className=\"gutter-example\">\n        <BreadcrumbCustom breads={['UI', '图标']} />\n        <Row gutter={16}>\n            <Col className=\"gutter-row\" md={24}>\n                <div className=\"gutter-box\">\n                    <Card bordered={false}>\n                        <ul className=\"icons-list\">{emojiList()}</ul>\n                    </Card>\n                </div>\n            </Col>\n        </Row>\n        <Row gutter={16}>\n            <Col className=\"gutter-row\" md={24}>\n                <div className=\"gutter-box\">\n                    <Card bordered={false}>\n                        <ul className=\"icons-list\">{iconsList}</ul>\n                    </Card>\n                </div>\n            </Col>\n        </Row>\n    </div>\n);\n\nexport default Icons;\n"
  },
  {
    "path": "src/components/ui/Modals.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/23.\n */\nimport React, { Component } from 'react';\nimport { Row, Col, Card, Modal, Button } from 'antd';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nconst confirm = Modal.confirm;\n\nclass S extends Component {\n    state = {\n        visible: false,\n        ModalText2: 'Content of the modal dialog',\n        visible2: false,\n        loading3: false,\n        visible3: false,\n        modal1Visible: false,\n        modal2Visible: false,\n        confirmLoading2: false,\n    };\n    showModal = () => {\n        this.setState({\n            visible: true,\n        });\n    };\n    handleOk = (e: React.MouseEvent<HTMLElement, MouseEvent>) => {\n        console.log(e);\n        this.setState({\n            visible: false,\n        });\n    };\n    handleCancel = (e: React.MouseEvent<HTMLElement>) => {\n        console.log(e);\n        this.setState({\n            visible: false,\n        });\n    };\n    showModal2 = () => {\n        this.setState({\n            visible2: true,\n        });\n    };\n    handleOk2 = () => {\n        this.setState({\n            ModalText2: 'The modal dialog will be closed after two seconds',\n            confirmLoading2: true,\n        });\n        setTimeout(() => {\n            this.setState({\n                visible2: false,\n                confirmLoading2: false,\n            });\n        }, 2000);\n    };\n    setModal1Visible = (modal1Visible: boolean) => {\n        this.setState({ modal1Visible });\n    };\n    setModal2Visible = (modal2Visible: boolean) => {\n        this.setState({ modal2Visible });\n    };\n    handleCancel2 = () => {\n        console.log('Clicked cancel button');\n        this.setState({\n            visible2: false,\n        });\n    };\n    showModal3 = () => {\n        this.setState({\n            visible3: true,\n        });\n    };\n    handleOk3 = () => {\n        this.setState({ loading3: true });\n        setTimeout(() => {\n            this.setState({ loading3: false, visible3: false });\n        }, 3000);\n    };\n    handleCancel3 = () => {\n        this.setState({ visible3: false });\n    };\n    showConfirm4 = () => {\n        confirm({\n            title: 'Want to delete these items?',\n            content: 'some descriptions',\n            onOk() {\n                console.log('OK');\n            },\n            onCancel() {\n                console.log('Cancel');\n            },\n        });\n    };\n    info = () => {\n        Modal.info({\n            title: 'This is a notification message',\n            content: (\n                <div>\n                    <p>some messages...some messages...</p>\n                    <p>some messages...some messages...</p>\n                </div>\n            ),\n            onOk() {},\n        });\n    };\n    success = () => {\n        Modal.success({\n            title: 'This is a success message',\n            content: 'some messages...some messages...',\n        });\n    };\n    error = () => {\n        Modal.error({\n            title: 'This is an error message',\n            content: 'some messages...some messages...',\n        });\n    };\n    warning = () => {\n        Modal.warning({\n            title: 'This is a warning message',\n            content: 'some messages...some messages...',\n        });\n    };\n    render() {\n        return (\n            <div className=\"gutter-example button-demo\">\n                <BreadcrumbCustom breads={['UI', '对话框']} />\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={24}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <p>\n                                    <Button type=\"primary\" onClick={this.showModal}>\n                                        基本用法\n                                    </Button>\n                                    <Modal\n                                        title=\"Basic Modal\"\n                                        visible={this.state.visible}\n                                        onOk={this.handleOk}\n                                        onCancel={this.handleCancel}\n                                    >\n                                        <p>some contents...</p>\n                                        <p>some contents...</p>\n                                        <p>some contents...</p>\n                                    </Modal>\n                                </p>\n                                <p>\n                                    <Button type=\"primary\" onClick={this.showModal2}>\n                                        异步关闭\n                                    </Button>\n                                    <Modal\n                                        title=\"Title of the modal dialog\"\n                                        visible={this.state.visible2}\n                                        onOk={this.handleOk2}\n                                        confirmLoading={this.state.confirmLoading2}\n                                        onCancel={this.handleCancel2}\n                                    >\n                                        <p>{this.state.ModalText2}</p>\n                                    </Modal>\n                                </p>\n                                <p>\n                                    <Button type=\"primary\" onClick={this.showModal3}>\n                                        自定义页脚\n                                    </Button>\n                                    <Modal\n                                        visible={this.state.visible3}\n                                        title=\"Title\"\n                                        onOk={this.handleOk3}\n                                        onCancel={this.handleCancel3}\n                                        footer={[\n                                            <Button\n                                                key=\"back\"\n                                                size=\"large\"\n                                                onClick={this.handleCancel3}\n                                            >\n                                                Return\n                                            </Button>,\n                                            <Button\n                                                key=\"submit\"\n                                                type=\"primary\"\n                                                size=\"large\"\n                                                loading={this.state.loading3}\n                                                onClick={this.handleOk3}\n                                            >\n                                                Submit\n                                            </Button>,\n                                        ]}\n                                    >\n                                        <p>Some contents...</p>\n                                        <p>Some contents...</p>\n                                        <p>Some contents...</p>\n                                        <p>Some contents...</p>\n                                        <p>Some contents...</p>\n                                    </Modal>\n                                </p>\n                                <p>\n                                    <Button onClick={this.showConfirm4}>确认框</Button>\n                                </p>\n                                <p>\n                                    <Button onClick={this.info}>信息提示</Button>\n                                    <Button onClick={this.success}>成功</Button>\n                                    <Button onClick={this.error}>失败</Button>\n                                    <Button onClick={this.warning}>警告</Button>\n                                </p>\n                                <p>\n                                    <Button\n                                        type=\"primary\"\n                                        onClick={() => this.setModal1Visible(true)}\n                                    >\n                                        距离顶部20px\n                                    </Button>\n                                    <Modal\n                                        title=\"20px to Top\"\n                                        style={{ top: 20 }}\n                                        visible={this.state.modal1Visible}\n                                        onOk={() => this.setModal1Visible(false)}\n                                        onCancel={() => this.setModal1Visible(false)}\n                                    >\n                                        <p>some contents...</p>\n                                        <p>some contents...</p>\n                                        <p>some contents...</p>\n                                    </Modal>\n                                    <br />\n                                    <br />\n                                    <Button\n                                        type=\"primary\"\n                                        onClick={() => this.setModal2Visible(true)}\n                                    >\n                                        垂直居中\n                                    </Button>\n                                    <Modal\n                                        title=\"Vertically centered modal dialog\"\n                                        wrapClassName=\"vertical-center-modal\"\n                                        visible={this.state.modal2Visible}\n                                        onOk={() => this.setModal2Visible(false)}\n                                        onCancel={() => this.setModal2Visible(false)}\n                                    >\n                                        <p>some contents...</p>\n                                        <p>some contents...</p>\n                                        <p>some contents...</p>\n                                    </Modal>\n                                </p>\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n            </div>\n        );\n    }\n}\n\nexport default S;\n"
  },
  {
    "path": "src/components/ui/Notifications.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/25.\n */\nimport React, { Component } from 'react';\nimport { Row, Col, Card, Button, notification, Select } from 'antd';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport { IconType, ConfigProps } from 'antd/lib/notification';\nimport { SmileOutlined } from '@ant-design/icons';\nconst { Option } = Select;\nconst options = ['topLeft', 'topRight', 'bottomLeft', 'bottomRight'];\nclass Notifications extends Component {\n    openNotification = () => {\n        notification.open({\n            message: 'Notification Title',\n            description:\n                'This is the content of the notification. This is the content of the notification. This is the content of the notification.',\n        });\n    };\n    openNotification2 = () => {\n        const args = {\n            message: 'Notification Title',\n            description:\n                'I will never close automatically. I will be close automatically. I will never close automatically.',\n            duration: 0,\n        };\n        notification.open(args);\n    };\n    openNotificationWithIcon = (type: IconType) => {\n        notification[type]({\n            message: 'Notification Title',\n            description:\n                'This is the content of the notification. This is the content of the notification. This is the content of the notification.',\n        });\n    };\n    openNotification3 = () => {\n        const key = `open${Date.now()}`;\n        const btnClick = function () {\n            // to hide notification box\n            notification.close(key);\n        };\n        const btn = (\n            <Button type=\"primary\" size=\"small\" onClick={btnClick}>\n                Confirm\n            </Button>\n        );\n        notification.open({\n            message: 'Notification Title',\n            description:\n                'A function will be be called after the notification is closed (automatically after the \"duration\" time of manually).',\n            btn,\n            key,\n            onClose: this.close,\n        });\n    };\n    close = () => {\n        console.log(\n            'Notification was closed. Either the close button was clicked or duration time elapsed.'\n        );\n    };\n    openNotification4 = () => {\n        notification.open({\n            message: 'Notification Title',\n            description:\n                'This is the content of the notification. This is the content of the notification. This is the content of the notification.',\n            icon: <SmileOutlined style={{ color: '#108ee9' }} />,\n        });\n    };\n\n    render() {\n        return (\n            <div className=\"gutter-example button-demo\">\n                <BreadcrumbCustom breads={['UI', '通知提醒框']} />\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <Button type=\"primary\" onClick={this.openNotification}>\n                                    基本用法-4.5秒关闭\n                                </Button>\n                            </Card>\n                        </div>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <Button type=\"primary\" onClick={this.openNotification2}>\n                                    取消自动关闭\n                                </Button>\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <Button\n                                    type=\"primary\"\n                                    onClick={() => this.openNotificationWithIcon('success')}\n                                >\n                                    成功\n                                </Button>\n                                <Button\n                                    type=\"primary\"\n                                    onClick={() => this.openNotificationWithIcon('info')}\n                                >\n                                    提醒\n                                </Button>\n                                <Button\n                                    type=\"primary\"\n                                    onClick={() => this.openNotificationWithIcon('warning')}\n                                >\n                                    警告\n                                </Button>\n                                <Button\n                                    type=\"primary\"\n                                    onClick={() => this.openNotificationWithIcon('error')}\n                                >\n                                    失败\n                                </Button>\n                            </Card>\n                        </div>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <Button type=\"primary\" onClick={this.openNotification3}>\n                                    自定义按钮\n                                </Button>\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <Button type=\"primary\" onClick={this.openNotification4}>\n                                    自定义通知图标\n                                </Button>\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <Select\n                                    defaultValue=\"topRight\"\n                                    style={{ width: 120, marginRight: 10 }}\n                                    onChange={(val: ConfigProps['placement']) => {\n                                        notification.config({\n                                            placement: val,\n                                        });\n                                    }}\n                                >\n                                    {options.map((val) => (\n                                        <Option key={val} value={val}>\n                                            {val}\n                                        </Option>\n                                    ))}\n                                </Select>\n                                <Button type=\"primary\" onClick={this.openNotification}>\n                                    打开消息通知\n                                </Button>\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n            </div>\n        );\n    }\n}\n\nexport default Notifications;\n"
  },
  {
    "path": "src/components/ui/Spins.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/23.\n */\nimport React from 'react';\nimport { Row, Col, Card, Spin, Alert, Switch, Button } from 'antd';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport NProgress from 'nprogress';\nimport 'nprogress/nprogress.css';\n\nclass Spins extends React.Component {\n    state = { loading: false };\n    toggle = (value: boolean) => {\n        this.setState({ loading: value });\n    };\n    nprogressStart = () => {\n        NProgress.start();\n    };\n    nprogressDone = () => {\n        NProgress.done();\n    };\n    render() {\n        const container = (\n            <Alert\n                message=\"Alert message title\"\n                description=\"Further details about the context of this alert.\"\n                type=\"info\"\n            />\n        );\n        return (\n            <div className=\"gutter-example button-demo\">\n                <BreadcrumbCustom breads={['UI', '加载中']} />\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <Spin />\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card>\n                                <Spin size=\"small\" />\n                                <Spin />\n                                <Spin size=\"large\" />\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <Spin tip=\"Loading...\">\n                                    <Alert\n                                        message=\"Alert message title\"\n                                        description=\"Further details about the context of this alert.\"\n                                        type=\"info\"\n                                    />\n                                </Spin>\n                            </Card>\n                        </div>\n                    </Col>\n\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <Spin spinning={this.state.loading}>{container}</Spin>\n                                Loading state：\n                                <Switch checked={this.state.loading} onChange={this.toggle} />\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card bordered={false}>\n                                <h4>顶部进度条</h4>\n                                <p>\n                                    <Button icon=\"caret-right\" onClick={this.nprogressStart} />\n                                    <span> NProgress.start() — 显示进度条</span>\n                                </p>\n                                <p style={{ marginTop: 20 }}>\n                                    <Button icon=\"caret-right\" onClick={this.nprogressDone} />\n                                    <span> NProgress.done() — 进度条完成</span>\n                                </p>\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n            </div>\n        );\n    }\n}\n\nexport default Spins;\n"
  },
  {
    "path": "src/components/ui/Tabs.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/25.\n */\nimport React, { Component } from 'react';\nimport { Row, Col, Card, Tabs, Radio, Button } from 'antd';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport { RadioChangeEvent } from 'antd/lib/radio';\nimport { TabsPosition } from 'antd/lib/tabs';\nimport { AndroidOutlined, AppleOutlined } from '@ant-design/icons';\nconst TabPane = Tabs.TabPane;\n\ntype TabsCustomState = {\n    activeKey: string;\n    panes: any;\n    mode: TabsPosition;\n};\nclass TabsCustom extends Component<any, TabsCustomState> {\n    constructor(props: any) {\n        super(props);\n        const panes = [\n            { title: 'Tab 1', content: 'Content of Tab Pane 1', key: '1' },\n            { title: 'Tab 2', content: 'Content of Tab Pane 2', key: '2' },\n        ];\n        this.state = {\n            activeKey: panes[0].key,\n            panes,\n            mode: 'top',\n        };\n    }\n    newTabIndex: number = 0;\n    callback = (key: string) => {\n        console.log(key);\n    };\n    handleModeChange = (e: RadioChangeEvent) => {\n        const mode = e.target.value;\n        this.setState({ mode });\n    };\n    onChange = (activeKey: string) => {\n        this.setState({ activeKey });\n    };\n    onEdit = (targetKey: string | React.MouseEvent<HTMLElement>, action: 'add' | 'remove'): any => {\n        this[action](targetKey as string);\n    };\n    add = () => {\n        const panes = this.state.panes;\n        const activeKey = `newTab${this.newTabIndex++}`;\n        panes.push({ title: 'New Tab', content: 'New Tab Pane', key: activeKey });\n        this.setState({ panes, activeKey });\n    };\n    remove = (targetKey: string) => {\n        let activeKey = this.state.activeKey;\n        let lastIndex = 0;\n        this.state.panes.forEach((pane: any, i: number) => {\n            if (pane.key === targetKey) {\n                lastIndex = i - 1;\n            }\n        });\n        const panes = this.state.panes.filter((pane: any) => pane.key !== targetKey);\n        if (lastIndex >= 0 && activeKey === targetKey) {\n            activeKey = panes[lastIndex].key;\n        }\n        this.setState({ panes, activeKey });\n    };\n    render() {\n        const { mode } = this.state;\n        return (\n            <div className=\"gutter-example button-demo\">\n                <BreadcrumbCustom breads={['UI', '标签页']} />\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"基本-默认选中第一项\" bordered={false}>\n                                <Tabs defaultActiveKey=\"1\" onChange={this.callback}>\n                                    <TabPane tab=\"Tab 1\" key=\"1\">\n                                        Content of Tab Pane 1\n                                    </TabPane>\n                                    <TabPane tab=\"Tab 2\" key=\"2\">\n                                        Content of Tab Pane 2\n                                    </TabPane>\n                                    <TabPane tab=\"Tab 3\" key=\"3\">\n                                        Content of Tab Pane 3\n                                    </TabPane>\n                                </Tabs>\n                            </Card>\n                        </div>\n                        <div className=\"gutter-box\">\n                            <Card title=\"带图标\" bordered={false}>\n                                <Tabs defaultActiveKey=\"2\" style={{ height: 150 }}>\n                                    <TabPane\n                                        tab={\n                                            <span>\n                                                <AppleOutlined />\n                                                Tab 1\n                                            </span>\n                                        }\n                                        key=\"1\"\n                                    >\n                                        Tab 1\n                                    </TabPane>\n                                    <TabPane\n                                        tab={\n                                            <span>\n                                                <AndroidOutlined />\n                                                Tab 2\n                                            </span>\n                                        }\n                                        key=\"2\"\n                                    >\n                                        Tab 2\n                                    </TabPane>\n                                </Tabs>\n                            </Card>\n                        </div>\n                        <div className=\"gutter-box\">\n                            <Card title=\"卡片式风格\" bordered={false}>\n                                <Tabs onChange={this.callback} type=\"card\">\n                                    <TabPane tab=\"Tab 1\" key=\"1\">\n                                        Content of Tab Pane 1\n                                    </TabPane>\n                                    <TabPane tab=\"Tab 2\" key=\"2\">\n                                        Content of Tab Pane 2\n                                    </TabPane>\n                                    <TabPane tab=\"Tab 3\" key=\"3\">\n                                        Content of Tab Pane 3\n                                    </TabPane>\n                                </Tabs>\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={12}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"禁用某项\" bordered={false}>\n                                <Tabs defaultActiveKey=\"1\">\n                                    <TabPane tab=\"Tab 1\" key=\"1\">\n                                        Tab 1\n                                    </TabPane>\n                                    <TabPane tab=\"Tab 2\" disabled key=\"2\">\n                                        Tab 2\n                                    </TabPane>\n                                    <TabPane tab=\"Tab 3\" key=\"3\">\n                                        Tab 3\n                                    </TabPane>\n                                </Tabs>\n                            </Card>\n                        </div>\n                        <div className=\"gutter-box\">\n                            <Card title=\"带滚动\" bordered={false}>\n                                <Radio.Group\n                                    onChange={this.handleModeChange}\n                                    value={mode}\n                                    style={{ marginBottom: 8 }}\n                                >\n                                    <Radio.Button value=\"top\">Horizontal</Radio.Button>\n                                    <Radio.Button value=\"left\">Vertical</Radio.Button>\n                                </Radio.Group>\n                                <Tabs\n                                    defaultActiveKey=\"1\"\n                                    tabPosition={mode}\n                                    style={{ height: 150 }}\n                                >\n                                    <TabPane tab=\"Tab 1\" key=\"1\">\n                                        Content of tab 1\n                                    </TabPane>\n                                    <TabPane tab=\"Tab 2\" key=\"2\">\n                                        Content of tab 2\n                                    </TabPane>\n                                    <TabPane tab=\"Tab 3\" key=\"3\">\n                                        Content of tab 3\n                                    </TabPane>\n                                    <TabPane tab=\"Tab 4\" key=\"4\">\n                                        Content of tab 4\n                                    </TabPane>\n                                    <TabPane tab=\"Tab 5\" key=\"5\">\n                                        Content of tab 5\n                                    </TabPane>\n                                    <TabPane tab=\"Tab 6\" key=\"6\">\n                                        Content of tab 6\n                                    </TabPane>\n                                    <TabPane tab=\"Tab 7\" key=\"7\">\n                                        Content of tab 7\n                                    </TabPane>\n                                    <TabPane tab=\"Tab 8\" key=\"8\">\n                                        Content of tab 8\n                                    </TabPane>\n                                    <TabPane tab=\"Tab 9\" key=\"9\">\n                                        Content of tab 9\n                                    </TabPane>\n                                </Tabs>\n                            </Card>\n                        </div>\n                        <div className=\"gutter-box\">\n                            <Card title=\"带删除和新增\" bordered={false}>\n                                <div style={{ marginBottom: 16 }}>\n                                    <Button onClick={this.add}>ADD</Button>\n                                </div>\n                                <Tabs\n                                    hideAdd\n                                    onChange={this.onChange}\n                                    activeKey={this.state.activeKey}\n                                    type=\"editable-card\"\n                                    // onEdit={this.onEdit}\n                                >\n                                    {this.state.panes.map((pane: any) => (\n                                        <TabPane tab={pane.title} key={pane.key}>\n                                            {pane.content}\n                                        </TabPane>\n                                    ))}\n                                </Tabs>\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n            </div>\n        );\n    }\n}\n\nexport default TabsCustom;\n"
  },
  {
    "path": "src/components/ui/Wysiwyg.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/26.\n */\nimport React, { Component } from 'react';\nimport { Row, Col, Card } from 'antd';\nimport BreadcrumbCustom from '../widget/BreadcrumbCustom';\nimport { Editor } from 'react-draft-wysiwyg';\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\nimport draftToHtml from 'draftjs-to-html';\nimport draftToMarkdown from 'draftjs-to-markdown';\nimport { EditorState } from 'draft-js';\n\nconst rawContentState = {\n    entityMap: {\n        '0': {\n            type: 'IMAGE',\n            mutability: 'MUTABLE',\n            data: { src: 'http://i.imgur.com/aMtBIep.png', height: 'auto', width: '100%' },\n        },\n    },\n    blocks: [\n        {\n            key: '9unl6',\n            text: '',\n            type: 'unstyled',\n            depth: 0,\n            inlineStyleRanges: [],\n            entityRanges: [],\n            data: {},\n        },\n        {\n            key: '95kn',\n            text: ' ',\n            type: 'atomic',\n            depth: 0,\n            inlineStyleRanges: [],\n            entityRanges: [{ offset: 0, length: 1, key: 0 }],\n            data: {},\n        },\n        {\n            key: '7rjes',\n            text: '',\n            type: 'unstyled',\n            depth: 0,\n            inlineStyleRanges: [],\n            entityRanges: [],\n            data: {},\n        },\n    ],\n};\ntype WysiwygState = {\n    editorContent: any;\n    contentState: any;\n    editorState: EditorState | undefined;\n};\nclass Wysiwyg extends Component {\n    state: WysiwygState = {\n        editorContent: undefined,\n        contentState: rawContentState,\n        editorState: undefined,\n    };\n\n    onEditorChange = (editorContent: any) => {\n        this.setState({\n            editorContent,\n        });\n    };\n\n    clearContent = () => {\n        this.setState({\n            contentState: '',\n        });\n    };\n\n    onContentStateChange = (contentState: any) => {\n        console.log('contentState', contentState);\n    };\n\n    onEditorStateChange = (editorState: any) => {\n        this.setState({\n            editorState,\n        });\n    };\n\n    imageUploadCallBack = (file: any) =>\n        new Promise((resolve, reject) => {\n            const xhr = new XMLHttpRequest(); // eslint-disable-line no-undef\n            xhr.open('POST', 'https://api.imgur.com/3/image');\n            xhr.setRequestHeader('Authorization', 'Client-ID 8d26ccd12712fca');\n            const data = new FormData(); // eslint-disable-line no-undef\n            data.append('image', file);\n            xhr.send(data);\n            xhr.addEventListener('load', () => {\n                const response = JSON.parse(xhr.responseText);\n                resolve(response);\n            });\n            xhr.addEventListener('error', () => {\n                const error = JSON.parse(xhr.responseText);\n                reject(error);\n            });\n        });\n\n    render() {\n        const { editorContent, editorState } = this.state;\n        return (\n            <div className=\"gutter-example button-demo\">\n                <BreadcrumbCustom breads={['UI', '富文本']} />\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={24}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"富文本编辑器\" bordered={false}>\n                                <Editor\n                                    editorState={editorState}\n                                    toolbarClassName=\"home-toolbar\"\n                                    wrapperClassName=\"home-wrapper\"\n                                    editorClassName=\"home-editor\"\n                                    onEditorStateChange={this.onEditorStateChange}\n                                    toolbar={{\n                                        history: { inDropdown: true },\n                                        inline: { inDropdown: false },\n                                        list: { inDropdown: true },\n                                        textAlign: { inDropdown: true },\n                                        image: { uploadCallback: this.imageUploadCallBack },\n                                    }}\n                                    onContentStateChange={this.onEditorChange}\n                                    placeholder=\"请输入正文~~尝试@哦，有惊喜\"\n                                    spellCheck\n                                    onFocus={() => {\n                                        console.log('focus');\n                                    }}\n                                    onBlur={() => {\n                                        console.log('blur');\n                                    }}\n                                    onTab={() => {\n                                        console.log('tab');\n                                        return true;\n                                    }}\n                                    localization={{\n                                        locale: 'zh',\n                                        translations: { 'generic.add': 'Test-Add' },\n                                    }}\n                                    mention={{\n                                        separator: ' ',\n                                        trigger: '@',\n                                        caseSensitive: true,\n                                        suggestions: [\n                                            { text: 'A', value: 'AB', url: 'href-a' },\n                                            { text: 'AB', value: 'ABC', url: 'href-ab' },\n                                            { text: 'ABC', value: 'ABCD', url: 'href-abc' },\n                                            { text: 'ABCD', value: 'ABCDDDD', url: 'href-abcd' },\n                                            { text: 'ABCDE', value: 'ABCDE', url: 'href-abcde' },\n                                            { text: 'ABCDEF', value: 'ABCDEF', url: 'href-abcdef' },\n                                            {\n                                                text: 'ABCDEFG',\n                                                value: 'ABCDEFG',\n                                                url: 'href-abcdefg',\n                                            },\n                                        ],\n                                    }}\n                                />\n\n                                <style>{`\n                                    .home-editor {\n                                        min-height: 300px;\n                                    }\n                                `}</style>\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={8}>\n                        <Card title=\"同步转换HTML\" bordered={false}>\n                            <pre>{draftToHtml(editorContent)}</pre>\n                        </Card>\n                    </Col>\n                    <Col className=\"gutter-row\" md={8}>\n                        <Card title=\"同步转换MarkDown\" bordered={false}>\n                            <pre style={{ whiteSpace: 'pre-wrap' }}>\n                                {draftToMarkdown(editorContent)}\n                            </pre>\n                        </Card>\n                    </Col>\n                    <Col className=\"gutter-row\" md={8}>\n                        <Card title=\"同步转换JSON\" bordered={false}>\n                            <pre style={{ whiteSpace: 'normal' }}>\n                                {JSON.stringify(editorContent)}\n                            </pre>\n                        </Card>\n                    </Col>\n                </Row>\n            </div>\n        );\n    }\n}\n\nexport default Wysiwyg;\n"
  },
  {
    "path": "src/components/ui/banners/AutoPlay.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/26.\n */\nimport React from 'react';\nimport BannerAnim, { Element } from 'rc-banner-anim';\nimport TweenOne from 'rc-tween-one';\nimport 'rc-banner-anim/assets/index.css';\nconst BgElement = Element.BgElement;\nclass AutoPlay extends React.Component {\n    render(){\n        return (\n            <BannerAnim prefixCls=\"banner-user\" autoPlay>\n                <Element\n                    prefixCls=\"banner-user-elem\"\n                    key=\"0\"\n                >\n                    <BgElement\n                        key=\"bg\"\n                        className=\"bg\"\n                        style={{\n                            background: '#364D79',\n                        }}\n                    />\n                    <TweenOne className=\"banner-user-title\" animation={{ y: 30, opacity: 0, type: 'from' }}>\n                        Ant Motion Banner\n                    </TweenOne>\n                    <TweenOne className=\"banner-user-text\"\n                              animation={{ y: 30, opacity: 0, type: 'from', delay: 100 }}\n                    >\n                        The Fast Way Use Animation In React\n                    </TweenOne>\n                </Element>\n                <Element\n                    prefixCls=\"banner-user-elem\"\n                    key=\"1\"\n                >\n                    <BgElement\n                        key=\"bg\"\n                        className=\"bg\"\n                        style={{\n                            background: '#64CBCC',\n                        }}\n                    />\n                    <TweenOne className=\"banner-user-title\" animation={{ y: 30, opacity: 0, type: 'from' }}>\n                        Ant Motion Banner\n                    </TweenOne>\n                    <TweenOne className=\"banner-user-text\"\n                              animation={{ y: 30, opacity: 0, type: 'from', delay: 100 }}\n                    >\n                        The Fast Way Use Animation In React\n                    </TweenOne>\n                </Element>\n            </BannerAnim>);\n    }\n}\n\nexport default AutoPlay;"
  },
  {
    "path": "src/components/ui/banners/Basic.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/26.\n */\nimport React from 'react';\nimport BannerAnim, { Element } from 'rc-banner-anim';\nimport TweenOne from 'rc-tween-one';\nimport 'rc-banner-anim/assets/index.css';\nconst BgElement = Element.BgElement;\nclass Basic extends React.Component {\n    render(){\n        return (\n            <BannerAnim prefixCls=\"banner-user\">\n                <Element\n                    prefixCls=\"banner-user-elem\"\n                    key=\"0\"\n                >\n                    <BgElement\n                        key=\"bg\"\n                        className=\"bg\"\n                        style={{\n                            background: '#364D79',\n                        }}\n                    />\n                    <TweenOne className=\"banner-user-title\" animation={{ y: 30, opacity: 0, type: 'from' }}>\n                        Ant Motion Banner\n                    </TweenOne>\n                    <TweenOne\n                        className=\"banner-user-text\"\n                        animation={{ y: 30, opacity: 0, type: 'from', delay: 100 }}\n                    >\n                        The Fast Way Use Animation In React\n                    </TweenOne>\n                </Element>\n                <Element\n                    prefixCls=\"banner-user-elem\"\n                    key=\"1\"\n                >\n                    <BgElement\n                        key=\"bg\"\n                        className=\"bg\"\n                        style={{\n                            background: '#64CBCC',\n                        }}\n                    />\n                    <TweenOne className=\"banner-user-title\" animation={{ y: 30, opacity: 0, type: 'from' }}>\n                        Ant Motion Banner\n                    </TweenOne>\n                    <TweenOne\n                        className=\"banner-user-text\"\n                        animation={{ y: 30, opacity: 0, type: 'from', delay: 100 }}\n                    >\n                        The Fast Way Use Animation In React\n                    </TweenOne>\n                </Element>\n            </BannerAnim>\n        );\n    }\n}\n\nexport default Basic;"
  },
  {
    "path": "src/components/ui/banners/Custom.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/26.\n */\nimport React from 'react';\nimport BannerAnim from 'rc-banner-anim';\nimport TweenOne, { TweenOneGroup } from 'rc-tween-one';\nimport 'rc-banner-anim/assets/index.css';\nconst { Element, Arrow, Thumb } = BannerAnim;\nconst BgElement = Element.BgElement;\ntype CustomState = {\n    intShow: number;\n    prevEnter: boolean;\n    nextEnter: boolean;\n    thumbEnter: boolean;\n};\nclass Custom extends React.Component<any, CustomState> {\n    imgArray: string[];\n    constructor(props: any) {\n        super(props);\n        this.imgArray = [\n            'https://zos.alipayobjects.com/rmsportal/hzPBTkqtFpLlWCi.jpg',\n            'https://zos.alipayobjects.com/rmsportal/gGlUMYGEIvjDOOw.jpg',\n        ];\n        this.state = {\n            intShow: 0,\n            prevEnter: false,\n            nextEnter: false,\n            thumbEnter: false,\n        };\n    }\n\n    onChange = (type: string, int: number) => {\n        if (type === 'before') {\n            this.setState({\n                intShow: int,\n            });\n        }\n    };\n\n    getNextPrevNumber() {\n        let nextInt = this.state.intShow + 1;\n        let prevInt = this.state.intShow - 1;\n        if (nextInt >= this.imgArray.length) {\n            nextInt = 0;\n        }\n        if (prevInt < 0) {\n            prevInt = this.imgArray.length - 1;\n        }\n\n        return [prevInt, nextInt];\n    }\n\n    prevEnter() {\n        this.setState({\n            prevEnter: true,\n        });\n    }\n\n    prevLeave() {\n        this.setState({\n            prevEnter: false,\n        });\n    }\n\n    nextEnter() {\n        this.setState({\n            nextEnter: true,\n        });\n    }\n\n    nextLeave() {\n        this.setState({\n            nextEnter: false,\n        });\n    }\n\n    onMouseEnter() {\n        this.setState({\n            thumbEnter: true,\n        });\n    }\n\n    onMouseLeave() {\n        this.setState({\n            thumbEnter: false,\n        });\n    }\n\n    render() {\n        const intArray = this.getNextPrevNumber();\n        const thumbChildren = this.imgArray.map((img, i) => (\n            <span key={i}>\n                <i style={{ backgroundImage: `url(${img})` }} />\n            </span>\n        ));\n        return (\n            <BannerAnim\n                onChange={this.onChange}\n                onMouseEnter={this.onMouseEnter}\n                onMouseLeave={this.onMouseLeave}\n                prefixCls=\"custom-arrow-thumb\"\n            >\n                <Element key=\"aaa\" prefixCls=\"banner-user-elem\">\n                    <BgElement\n                        key=\"bg\"\n                        className=\"bg\"\n                        style={{\n                            backgroundImage: `url(${this.imgArray[0]})`,\n                            backgroundSize: 'cover',\n                            backgroundPosition: 'center',\n                        }}\n                    />\n                    <TweenOne\n                        className=\"banner-user-title\"\n                        animation={{ y: 30, opacity: 0, type: 'from' }}\n                    >\n                        Ant Motion Banner\n                    </TweenOne>\n                    <TweenOne\n                        className=\"banner-user-text\"\n                        animation={{ y: 30, opacity: 0, type: 'from', delay: 100 }}\n                    >\n                        The Fast Way Use Animation In React\n                    </TweenOne>\n                </Element>\n                <Element key=\"bbb\" prefixCls=\"banner-user-elem\">\n                    <BgElement\n                        key=\"bg\"\n                        className=\"bg\"\n                        style={{\n                            backgroundImage: `url(${this.imgArray[1]})`,\n                            backgroundSize: 'cover',\n                            backgroundPosition: 'center',\n                        }}\n                    />\n                    <TweenOne\n                        className=\"banner-user-title\"\n                        animation={{ y: 30, opacity: 0, type: 'from' }}\n                    >\n                        Ant Motion Banner\n                    </TweenOne>\n                    <TweenOne\n                        className=\"banner-user-text\"\n                        animation={{ y: 30, opacity: 0, type: 'from', delay: 100 }}\n                    >\n                        The Fast Way Use Animation In React\n                    </TweenOne>\n                </Element>\n                <Arrow\n                    arrowType=\"prev\"\n                    key=\"prev\"\n                    prefixCls=\"user-arrow\"\n                    component={TweenOne}\n                    onMouseEnter={this.prevEnter}\n                    onMouseLeave={this.prevLeave}\n                    // animation={{ left: this.state.prevEnter ? 0 : -120 }}\n                >\n                    <div className=\"arrow\" />\n                    <TweenOneGroup\n                        enter={{ opacity: 0, type: 'from' }}\n                        leave={{ opacity: 0 }}\n                        appear={false}\n                        className=\"img-wrapper\"\n                        component=\"ul\"\n                    >\n                        <li\n                            style={{ backgroundImage: `url(${this.imgArray[intArray[0]]})` }}\n                            key={intArray[0]}\n                        />\n                    </TweenOneGroup>\n                </Arrow>\n                <Arrow\n                    arrowType=\"next\"\n                    key=\"next\"\n                    prefixCls=\"user-arrow\"\n                    component={TweenOne}\n                    onMouseEnter={this.nextEnter}\n                    onMouseLeave={this.nextLeave}\n                    // animation={{ right: this.state.nextEnter ? 0 : -120 }}\n                >\n                    <div className=\"arrow\" />\n                    <TweenOneGroup\n                        enter={{ opacity: 0, type: 'from' }}\n                        leave={{ opacity: 0 }}\n                        appear={false}\n                        className=\"img-wrapper\"\n                        component=\"ul\"\n                    >\n                        <li\n                            style={{ backgroundImage: `url(${this.imgArray[intArray[1]]})` }}\n                            key={intArray[1]}\n                        />\n                    </TweenOneGroup>\n                </Arrow>\n                <Thumb\n                    prefixCls=\"user-thumb\"\n                    key=\"thumb\"\n                    component={TweenOne}\n                    // animation={{ bottom: this.state.thumbEnter ? 0 : -70 }}\n                >\n                    {thumbChildren}\n                </Thumb>\n            </BannerAnim>\n        );\n    }\n}\n\nexport default Custom;\n"
  },
  {
    "path": "src/components/ui/banners/index.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/26.\n */\nimport React from 'react';\nimport { Row, Col, Card } from 'antd';\nimport BreadcrumbCustom from '../../widget/BreadcrumbCustom';\nimport Basic from './Basic';\nimport AutoPlay from './AutoPlay';\n// import Custom from './Custom';\n\nclass Banners extends React.Component {\n    render() {\n        return (\n            <div className=\"gutter-example button-demo\">\n                <BreadcrumbCustom breads={['UI', '轮播图']} />\n                <Row gutter={16}>\n                    <Col className=\"gutter-row\" md={24}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"基本用法\" bordered={false}>\n                                <Basic />\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={24}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"自动轮播-默认5秒\" bordered={false}>\n                                <AutoPlay />\n                            </Card>\n                        </div>\n                    </Col>\n                    <Col className=\"gutter-row\" md={24}>\n                        <div className=\"gutter-box\">\n                            <Card title=\"自定义左右箭头与缩略图\" bordered={false}>\n                                {/*引入自定义会导致组件冲突不显示*/}\n                                {/*<Custom />*/}\n                            </Card>\n                        </div>\n                    </Col>\n                </Row>\n            </div>\n        );\n    }\n}\n\nexport default Banners;\n"
  },
  {
    "path": "src/components/ui/emoji/iconfont.ts",
    "content": "function setFont(): void {\n    var svgSprite: string | null =\n        '<svg><symbol id=\"icon-emoji-\" viewBox=\"0 0 1024 1024\"><path d=\"M511.3 450.1m-430.5 0a430.5 430.5 0 1 0 861 0 430.5 430.5 0 1 0-861 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M511.3 891.6c-59.6 0-117.4-11.7-171.8-34.7-52.6-22.2-99.8-54.1-140.3-94.6-40.5-40.5-72.4-87.8-94.6-140.3-23-54.4-34.7-112.3-34.7-171.8 0-59.6 11.7-117.4 34.7-171.8 22.2-52.6 54.1-99.8 94.6-140.3 40.5-40.5 87.8-72.4 140.3-94.6 54.4-23 112.3-34.7 171.8-34.7s117.4 11.7 171.8 34.7c52.6 22.2 99.8 54.1 140.3 94.6 40.5 40.5 72.4 87.8 94.6 140.3 23 54.4 34.7 112.3 34.7 171.8 0 59.6-11.7 117.4-34.7 171.8-22.2 52.6-54.1 99.8-94.6 140.3s-87.8 72.4-140.3 94.6c-54.4 23-112.2 34.7-171.8 34.7z m0-861c-56.6 0-111.6 11.1-163.3 33-49.9 21.1-94.8 51.4-133.3 89.9-38.5 38.5-68.8 83.4-89.9 133.3-21.9 51.7-33 106.6-33 163.3s11.1 111.6 33 163.3c21.1 50 51.4 94.8 89.9 133.3 38.5 38.5 83.4 68.8 133.3 89.9 51.7 21.9 106.6 33 163.3 33 56.6 0 111.6-11.1 163.3-33 50-21.1 94.8-51.4 133.3-89.9s68.8-83.4 89.9-133.3c21.9-51.7 33-106.6 33-163.3s-11.1-111.6-33-163.3c-21.1-49.9-51.4-94.8-89.9-133.3-38.5-38.5-83.4-68.8-133.3-89.9-51.7-21.9-106.6-33-163.3-33z\" fill=\"#231815\" ></path><path d=\"M511.3 415.6m-396 0a396 396 0 1 0 792 0 396 396 0 1 0-792 0Z\" fill=\"#FFE20D\" ></path><path d=\"M511.3 891.6c-59.6 0-117.4-11.7-171.8-34.7-52.6-22.2-99.8-54.1-140.3-94.6-40.5-40.5-72.4-87.8-94.6-140.3-23-54.4-34.7-112.3-34.7-171.8 0-59.6 11.7-117.4 34.7-171.8 22.2-52.6 54.1-99.8 94.6-140.3 40.5-40.5 87.8-72.4 140.3-94.6 54.4-23 112.3-34.7 171.8-34.7s117.4 11.7 171.8 34.7c52.6 22.2 99.8 54.1 140.3 94.6 40.5 40.5 72.4 87.8 94.6 140.3 23 54.4 34.7 112.3 34.7 171.8 0 59.6-11.7 117.4-34.7 171.8-22.2 52.6-54.1 99.8-94.6 140.3s-87.8 72.4-140.3 94.6c-54.4 23-112.2 34.7-171.8 34.7z m0-861c-56.6 0-111.6 11.1-163.3 33-49.9 21.1-94.8 51.4-133.3 89.9-38.5 38.5-68.8 83.4-89.9 133.3-21.9 51.7-33 106.6-33 163.3s11.1 111.6 33 163.3c21.1 50 51.4 94.8 89.9 133.3 38.5 38.5 83.4 68.8 133.3 89.9 51.7 21.9 106.6 33 163.3 33 56.6 0 111.6-11.1 163.3-33 50-21.1 94.8-51.4 133.3-89.9s68.8-83.4 89.9-133.3c21.9-51.7 33-106.6 33-163.3s-11.1-111.6-33-163.3c-21.1-49.9-51.4-94.8-89.9-133.3-38.5-38.5-83.4-68.8-133.3-89.9-51.7-21.9-106.6-33-163.3-33z\" fill=\"#231815\" ></path><path d=\"M374.6 123.2a136.7 44.2 0 1 0 273.4 0 136.7 44.2 0 1 0-273.4 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M309 428.5m-35.6 0a35.6 35.6 0 1 0 71.2 0 35.6 35.6 0 1 0-71.2 0Z\" fill=\"#231815\" ></path><path d=\"M713.6 428.5m-35.6 0a35.6 35.6 0 1 0 71.2 0 35.6 35.6 0 1 0-71.2 0Z\" fill=\"#231815\" ></path><path d=\"M511.3 621.8c-69.6 0-134.8-8.3-190.9-22.7-20.2-5.2-39.4 12-35 31.7 22.2 100.6 114.9 176.1 225.9 176.1S715 731.4 737.2 630.8c4.3-19.7-14.8-36.9-35-31.7-56.1 14.4-121.3 22.7-190.9 22.7z\" fill=\"#FFA6D7\" ></path><path d=\"M511.3 817.9c-55.7 0-110.1-18.7-153.1-52.7-42.5-33.6-72.2-80.5-83.5-132-2.8-12.6 1.2-25.7 10.7-34.8 10-9.7 24.2-13.4 37.8-9.9 56.9 14.6 121.9 22.3 188.1 22.3s131.3-7.7 188.1-22.3c13.6-3.5 27.7 0.2 37.8 9.9 9.5 9.2 13.5 22.2 10.7 34.8-11.4 51.6-41 98.5-83.5 132-43 34-97.4 52.7-153.1 52.7zM313.1 609.2c-4.6 0-9 1.8-12.4 5-4 3.9-5.7 9.1-4.5 14.3 10.3 46.6 37.2 89.1 75.7 119.5 39.2 30.9 88.7 48 139.5 48s100.3-17 139.5-48c38.5-30.4 65.4-72.9 75.7-119.5 1.1-5.2-0.5-10.4-4.5-14.3-4.5-4.4-10.9-6-17-4.4-58.6 15.1-125.6 23-193.6 23s-135-8-193.6-23c-1.7-0.4-3.3-0.6-4.8-0.6z\" fill=\"#231815\" ></path><path d=\"M659.9 754.7c-40.2-32.6-92-52.2-148.6-52.2s-108.4 19.6-148.6 52.2c40.2 32.6 92 52.2 148.6 52.2s108.4-19.6 148.6-52.2z\" fill=\"#FF66C1\" ></path><path d=\"M511.3 817.9c-56.8 0-112-19.4-155.5-54.6-2.6-2.1-4.1-5.2-4.1-8.5s1.5-6.5 4.1-8.5c43.5-35.2 98.7-54.6 155.5-54.6s112 19.4 155.5 54.6c2.6 2.1 4.1 5.2 4.1 8.5s-1.5 6.5-4.1 8.5c-43.5 35.2-98.7 54.6-155.5 54.6zM381 754.7c37.6 26.7 83.4 41.2 130.4 41.2s92.7-14.5 130.4-41.2c-37.6-26.6-83.4-41.2-130.4-41.2-47 0.1-92.8 14.6-130.4 41.2z\" fill=\"#231815\" ></path><path d=\"M224.5 556.9a51 31.6 0 1 0 102 0 51 31.6 0 1 0-102 0Z\" fill=\"#FFA178\" ></path><path d=\"M696.2 556.9a51 31.6 0 1 0 102 0 51 31.6 0 1 0-102 0Z\" fill=\"#FFA178\" ></path><path d=\"M175.2 976.5a336.1 34.4 0 1 0 672.2 0 336.1 34.4 0 1 0-672.2 0Z\" fill=\"#E5E5E5\" ></path></symbol><symbol id=\"icon-emoji-1\" viewBox=\"0 0 1024 1024\"><path d=\"M476.1 450.2m-428.1 0a428.1 428.1 0 1 0 856.2 0 428.1 428.1 0 1 0-856.2 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M476.1 888.4c-59.1 0-116.5-11.6-170.5-34.4-52.2-22.1-99-53.7-139.3-93.9-40.2-40.2-71.8-87.1-93.9-139.3C49.6 566.8 38 509.4 38 450.2s11.6-116.5 34.4-170.5c22.1-52.2 53.7-99 93.9-139.3s87.1-71.8 139.3-93.9c54-22.8 111.4-34.4 170.5-34.4 59.1 0 116.5 11.6 170.5 34.4 52.2 22.1 99 53.7 139.3 93.9s71.8 87.1 93.9 139.3c22.8 54 34.4 111.4 34.4 170.5s-11.6 116.5-34.4 170.5c-22.1 52.2-53.7 99-93.9 139.3-40.2 40.2-87.1 71.8-139.3 93.9-53.9 22.9-111.3 34.5-170.5 34.5z m0-856.3c-56.5 0-111.2 11.1-162.8 32.9-49.8 21.1-94.5 51.2-132.9 89.6-38.4 38.4-68.6 83.1-89.6 132.9C69.1 339 58 393.8 58 450.2S69.1 561.4 90.9 613c21.1 49.8 51.2 94.5 89.6 132.9 38.4 38.4 83.1 68.6 132.9 89.6 51.5 21.8 106.3 32.9 162.8 32.9 56.5 0 111.2-11.1 162.8-32.9 49.8-21.1 94.5-51.2 132.9-89.6s68.6-83.1 89.6-132.9c21.8-51.5 32.9-106.3 32.9-162.8s-11.2-111.2-33-162.7c-21.1-49.8-51.2-94.5-89.6-132.9C733.4 116.2 688.7 86 638.9 65c-51.5-21.8-106.3-32.9-162.8-32.9z\" fill=\"#231815\" ></path><path d=\"M476.1 415.9m-393.8 0a393.8 393.8 0 1 0 787.6 0 393.8 393.8 0 1 0-787.6 0Z\" fill=\"#FFE20D\" ></path><path d=\"M476.1 888.4c-59.1 0-116.5-11.6-170.5-34.4-52.2-22.1-99-53.7-139.3-93.9-40.2-40.2-71.8-87.1-93.9-139.3C49.6 566.8 38 509.4 38 450.2s11.6-116.5 34.4-170.5c22.1-52.2 53.7-99 93.9-139.3s87.1-71.8 139.3-93.9c54-22.8 111.4-34.4 170.5-34.4 59.1 0 116.5 11.6 170.5 34.4 52.2 22.1 99 53.7 139.3 93.9s71.8 87.1 93.9 139.3c22.8 54 34.4 111.4 34.4 170.5s-11.6 116.5-34.4 170.5c-22.1 52.2-53.7 99-93.9 139.3-40.2 40.2-87.1 71.8-139.3 93.9-53.9 22.9-111.3 34.5-170.5 34.5z m0-856.3c-56.5 0-111.2 11.1-162.8 32.9-49.8 21.1-94.5 51.2-132.9 89.6-38.4 38.4-68.6 83.1-89.6 132.9C69.1 339 58 393.8 58 450.2S69.1 561.4 90.9 613c21.1 49.8 51.2 94.5 89.6 132.9 38.4 38.4 83.1 68.6 132.9 89.6 51.5 21.8 106.3 32.9 162.8 32.9 56.5 0 111.2-11.1 162.8-32.9 49.8-21.1 94.5-51.2 132.9-89.6s68.6-83.1 89.6-132.9c21.8-51.5 32.9-106.3 32.9-162.8s-11.2-111.2-33-162.7c-21.1-49.8-51.2-94.5-89.6-132.9C733.4 116.2 688.7 86 638.9 65c-51.5-21.8-106.3-32.9-162.8-32.9z\" fill=\"#231815\" ></path><path d=\"M340.1 125.1a136 44 0 1 0 272 0 136 44 0 1 0-272 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M190.9 556.5a50.7 31.4 0 1 0 101.4 0 50.7 31.4 0 1 0-101.4 0Z\" fill=\"#FFA178\" ></path><path d=\"M660 556.5a50.7 31.4 0 1 0 101.4 0 50.7 31.4 0 1 0-101.4 0Z\" fill=\"#FFA178\" ></path><path d=\"M276.5 491.7c-5.5 0-10-4.5-10-10 0-13.8-11.2-24.9-24.9-24.9s-24.9 11.2-24.9 24.9c0 5.5-4.5 10-10 10s-10-4.5-10-10c0-24.8 20.2-44.9 44.9-44.9s44.9 20.2 44.9 44.9c0 5.5-4.5 10-10 10zM745.7 491.7c-5.5 0-10-4.5-10-10 0-13.8-11.2-24.9-24.9-24.9s-24.9 11.2-24.9 24.9c0 5.5-4.5 10-10 10s-10-4.5-10-10c0-24.8 20.2-44.9 44.9-44.9 24.8 0 44.9 20.2 44.9 44.9 0 5.5-4.5 10-10 10z\" fill=\"#231815\" ></path><path d=\"M567.6 753.2s-68.6 12.9-91.4 12.9-91.4-12.9-91.4-12.9c-58.8-16.5-92.9-60.8-92.9-103.6s41.8-52.1 92.9-52.1c0 0 68.6 12.9 91.4 12.9s91.4-12.9 91.4-12.9c51.1 0 92.9 9.3 92.9 52.1s-42.2 83.1-92.9 103.6z\" fill=\"#FCFCFC\" ></path><path d=\"M476.1 776.1c-23.5 0-90.5-12.5-93.3-13-0.3-0.1-0.6-0.1-0.9-0.2-29.9-8.4-55.3-24-73.4-45-17.3-20.1-26.8-44.4-26.8-68.2 0-24 11.1-41.2 33.1-51.2 16.3-7.4 38.5-10.9 69.7-10.9 0.6 0 1.2 0.1 1.8 0.2 0.7 0.1 67.9 12.7 89.6 12.7 21.7 0 88.9-12.6 89.6-12.7 0.6-0.1 1.2-0.2 1.8-0.2 31.3 0 53.4 3.5 69.7 10.9 22 10 33.1 27.3 33.1 51.2 0 22.8-10.4 46-30.1 67-17.5 18.6-42 34.9-69 45.9-0.6 0.2-1.3 0.4-1.9 0.6-2.5 0.4-69.4 12.9-93 12.9zM387 743.5c5.8 1.1 68.4 12.6 89.2 12.6 20.2 0 80.2-11 88.6-12.5 24-9.9 45.6-24.3 61-40.7 16.2-17.2 24.7-35.7 24.7-53.3 0-20.7-9.8-41.9-82-42.1-8.7 1.6-70 12.9-92.4 12.9-22.3 0-83.7-11.3-92.4-12.9-72.2 0.2-82 21.4-82 42.1 0 19.1 7.8 38.7 22 55.2 15.5 18 37.4 31.3 63.3 38.7z\" fill=\"#231815\" ></path><path d=\"M358.6 743.9c-0.9 0-1.9-0.1-2.8-0.4-5.3-1.5-8.3-7.1-6.8-12.4l39.1-133.9c1.5-5.3 7.1-8.3 12.4-6.8 5.3 1.5 8.3 7.1 6.8 12.4l-39.1 133.9c-1.3 4.4-5.3 7.2-9.6 7.2zM593.7 748.8c-4.3 0-8.3-2.8-9.6-7.2L545 607.7c-1.5-5.3 1.5-10.9 6.8-12.4s10.9 1.5 12.4 6.8L603.3 736c1.5 5.3-1.5 10.9-6.8 12.4-0.9 0.2-1.9 0.4-2.8 0.4z\" fill=\"#231815\" ></path><path d=\"M476.1 763.2c-5.5 0-10-4.5-10-10V610.4c0-5.5 4.5-10 10-10s10 4.5 10 10v142.8c0 5.6-4.4 10-10 10z\" fill=\"#231815\" ></path><path d=\"M141.8 967.3a334.3 34.2 0 1 0 668.6 0 334.3 34.2 0 1 0-668.6 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M478.8 693.4c-25.4 0-51.1-1.8-76.7-5.4-68.5-9.6-112.4-28.4-114.3-29.2-5.1-2.2-7.4-8.1-5.2-13.2s8.1-7.4 13.2-5.2c14.9 6.4 56.9 20.5 109.7 27.9 38.6 5.4 77.4 6.5 115.2 3.4 47.1-3.9 92.9-14.4 136.1-31.4 5.1-2 10.9 0.5 13 5.7s-0.5 10.9-5.7 13c-45.1 17.7-93 28.7-142.2 32.7-14.2 1.1-28.7 1.7-43.1 1.7z\" fill=\"#231815\" ></path><path d=\"M865.1 497.4l39.9 73.1 73 39.9-73 39.9-39.9 73-40-73-73-39.9 73-39.9z\" fill=\"#FFFFFF\" ></path><path d=\"M865.1 733.3c-3.7 0-7-2-8.8-5.2l-38.5-70.4-70.4-38.5c-3.2-1.8-5.2-5.1-5.2-8.8s2-7 5.2-8.8l70.4-38.5 38.5-70.4c1.8-3.2 5.1-5.2 8.8-5.2s7 2 8.8 5.2l38.5 70.4 70.4 38.5c3.2 1.8 5.2 5.1 5.2 8.8s-2 7-5.2 8.8l-70.4 38.5-38.5 70.4c-1.8 3.2-5.2 5.2-8.8 5.2zM773 610.4l57 31.2c1.7 0.9 3.1 2.3 4 4l31.2 57 31.2-57c0.9-1.7 2.3-3.1 4-4l57-31.2-57-31.2c-1.7-0.9-3.1-2.3-4-4l-31.2-57-31.2 57c-0.9 1.7-2.3 3.1-4 4l-57 31.2z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-2\" viewBox=\"0 0 1024 1024\"><path d=\"M511.3 457.9m-374.9 0a374.9 374.9 0 1 0 749.8 0 374.9 374.9 0 1 0-749.8 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M511.3 842.8c-52 0-102.4-10.2-149.8-30.3-45.8-19.4-87-47.1-122.3-82.5-35.3-35.3-63.1-76.5-82.5-122.3-20.1-47.5-30.3-97.9-30.3-149.8 0-52 10.2-102.4 30.3-149.8 19.4-45.8 47.1-87 82.5-122.3 35.3-35.3 76.5-63.1 122.3-82.5C409 83.2 459.4 73 511.3 73s102.4 10.2 149.8 30.3c45.8 19.4 87 47.1 122.3 82.5 35.3 35.3 63.1 76.5 82.5 122.3 20.1 47.5 30.3 97.9 30.3 149.8 0 52-10.2 102.4-30.3 149.8-19.4 45.8-47.1 87-82.5 122.3-35.3 35.3-76.5 63.1-122.3 82.5-47.4 20.1-97.8 30.3-149.8 30.3z m0-749.8c-49.3 0-97 9.6-142 28.7-43.4 18.4-82.5 44.7-116 78.2s-59.8 72.5-78.2 116c-19 45-28.7 92.8-28.7 142s9.6 97 28.7 142c18.4 43.4 44.7 82.5 78.2 116s72.5 59.8 116 78.2c45 19 92.8 28.7 142 28.7s97-9.6 142-28.7c43.4-18.4 82.5-44.7 116-78.2s59.8-72.5 78.2-116c19-45 28.7-92.8 28.7-142s-9.6-97-28.7-142c-18.4-43.4-44.7-82.5-78.2-116s-72.5-59.8-116-78.2c-44.9-19.1-92.7-28.7-142-28.7z\" fill=\"#231815\" ></path><path d=\"M511.3 427.8m-344.8 0a344.8 344.8 0 1 0 689.6 0 344.8 344.8 0 1 0-689.6 0Z\" fill=\"#FFE20D\" ></path><path d=\"M511.3 842.8c-52 0-102.4-10.2-149.8-30.3-45.8-19.4-87-47.1-122.3-82.5-35.3-35.3-63.1-76.5-82.5-122.3-20.1-47.5-30.3-97.9-30.3-149.8 0-52 10.2-102.4 30.3-149.8 19.4-45.8 47.1-87 82.5-122.3 35.3-35.3 76.5-63.1 122.3-82.5C409 83.2 459.4 73 511.3 73s102.4 10.2 149.8 30.3c45.8 19.4 87 47.1 122.3 82.5 35.3 35.3 63.1 76.5 82.5 122.3 20.1 47.5 30.3 97.9 30.3 149.8 0 52-10.2 102.4-30.3 149.8-19.4 45.8-47.1 87-82.5 122.3-35.3 35.3-76.5 63.1-122.3 82.5-47.4 20.1-97.8 30.3-149.8 30.3z m0-749.8c-49.3 0-97 9.6-142 28.7-43.4 18.4-82.5 44.7-116 78.2s-59.8 72.5-78.2 116c-19 45-28.7 92.8-28.7 142s9.6 97 28.7 142c18.4 43.4 44.7 82.5 78.2 116s72.5 59.8 116 78.2c45 19 92.8 28.7 142 28.7s97-9.6 142-28.7c43.4-18.4 82.5-44.7 116-78.2s59.8-72.5 78.2-116c19-45 28.7-92.8 28.7-142s-9.6-97-28.7-142c-18.4-43.4-44.7-82.5-78.2-116s-72.5-59.8-116-78.2c-44.9-19.1-92.7-28.7-142-28.7z\" fill=\"#231815\" ></path><path d=\"M392.2 173.2a119.1 38.5 0 1 0 238.2 0 119.1 38.5 0 1 0-238.2 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M261.5 550.9a44.4 27.5 0 1 0 88.8 0 44.4 27.5 0 1 0-88.8 0Z\" fill=\"#FFA178\" ></path><path d=\"M672.3 550.9a44.4 27.5 0 1 0 88.8 0 44.4 27.5 0 1 0-88.8 0Z\" fill=\"#FFA178\" ></path><path d=\"M336.5 495.4c-5.5 0-10-4.5-10-10 0-11.4-9.2-20.6-20.6-20.6s-20.6 9.2-20.6 20.6c0 5.5-4.5 10-10 10s-10-4.5-10-10c0-22.4 18.2-40.6 40.6-40.6 22.4 0 40.6 18.2 40.6 40.6 0 5.5-4.5 10-10 10zM747.3 495.4c-5.5 0-10-4.5-10-10 0-11.4-9.2-20.6-20.6-20.6s-20.6 9.2-20.6 20.6c0 5.5-4.5 10-10 10s-10-4.5-10-10c0-22.4 18.2-40.6 40.6-40.6s40.6 18.2 40.6 40.6c0 5.5-4.4 10-10 10z\" fill=\"#231815\" ></path><path d=\"M218.6 910.6a292.7 29.9 0 1 0 585.4 0 292.7 29.9 0 1 0-585.4 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M511.3 628.2c-60.6 0-117.4-7.2-166.2-19.7-17.6-4.5-34.3 10.5-30.5 27.6 19.3 87.6 100 153.4 196.7 153.4S688.7 723.8 708 636.1c3.8-17.2-12.9-32.2-30.5-27.6-48.8 12.5-105.6 19.7-166.2 19.7z\" fill=\"#FFA6D7\" ></path><path d=\"M511.3 799.4c-48.6 0-96-16.3-133.6-46-37.1-29.3-63-70.2-72.9-115.2-2.5-11.2 1.1-22.6 9.4-30.7 8.9-8.6 21.3-11.8 33.3-8.7 49.5 12.7 106.1 19.4 163.7 19.4 57.6 0 114.3-6.7 163.7-19.4 12-3.1 24.4 0.2 33.3 8.7 8.4 8.1 11.9 19.6 9.4 30.7-9.9 45-35.8 85.9-72.9 115.2-37.3 29.7-84.8 46-133.4 46zM338.7 617.6c-3.9 0-7.7 1.5-10.5 4.3-3.4 3.3-4.8 7.7-3.8 12 8.9 40.5 32.3 77.4 65.8 103.8 34 26.9 77.1 41.7 121.2 41.7s87.2-14.8 121.2-41.7c33.5-26.4 56.8-63.3 65.8-103.8 1-4.4-0.4-8.8-3.8-12-3.8-3.7-9.2-5.1-14.4-3.8-51.1 13.1-109.4 20.1-168.7 20.1-59.3 0-117.6-6.9-168.7-20.1-1.5-0.3-2.8-0.5-4.1-0.5z\" fill=\"#231815\" ></path><path d=\"M640.7 744c-35-28.3-80.1-45.5-129.4-45.5S416.9 715.6 382 744c35 28.3 80.1 45.5 129.4 45.5s94.3-17.2 129.3-45.5z\" fill=\"#FF66C1\" ></path><path d=\"M511.3 799.4c-49.6 0-97.7-16.9-135.7-47.7-2.3-1.9-3.7-4.8-3.7-7.8s1.4-5.9 3.7-7.8c37.9-30.7 86.1-47.7 135.7-47.7 49.6 0 97.7 16.9 135.7 47.7 2.3 1.9 3.7 4.8 3.7 7.8s-1.4 5.9-3.7 7.8c-37.9 30.8-86.1 47.7-135.7 47.7zM398.5 744c32.6 22.9 72.2 35.5 112.8 35.5 40.6 0 80.2-12.5 112.8-35.5-32.6-22.9-72.2-35.5-112.8-35.5S431.1 721 398.5 744z\" fill=\"#231815\" ></path><path d=\"M172.2 352.7c25.1 12.4 47.5 88 47.5 88s-85.5-16.1-102.6-30c-17.1-13.9-18.6-38.2-3.4-54.2 15.3-16.1 38.5-13.7 58.5-3.8z\" fill=\"#16CEF9\" ></path><path d=\"M219.8 450.6c-0.6 0-1.2-0.1-1.9-0.2-0.2 0-21.9-4.1-45.4-9.9-49.2-12.1-58.6-19.7-61.6-22.2-10.4-8.5-16.6-20.4-17.5-33.4-0.8-13.1 3.8-25.6 13.1-35.4 16.4-17.2 42.6-19.4 70.1-5.8 12.8 6.3 25.2 23.9 37.9 53.6 8.9 20.7 14.5 39.6 14.8 40.4 1 3.3 0.2 7-2.2 9.5-1.8 2.3-4.5 3.4-7.3 3.4zM142 354.8c-7.4 0-14.9 2.1-20.9 8.5-5.4 5.7-8.1 12.9-7.7 20.4 0.5 7.4 4.1 14.2 10.1 19.2 2.7 2.2 13.3 8.3 53.7 18.3 10.1 2.5 19.9 4.7 27.7 6.3-9.8-27.7-25-59.8-37.1-65.8-5.4-2.7-15.5-6.9-25.8-6.9z\" fill=\"#231815\" ></path><path d=\"M41.2 444.5c16-6.5 63.8 17 63.8 17s-41.4 26.6-55.1 29c-13.7 2.4-26.8-6-29.1-18.7-2.4-12.8 7.6-22.2 20.4-27.3z\" fill=\"#16CEF9\" ></path><path d=\"M45.3 500.8c-16.6 0-31.4-11.3-34.4-27.3-3-16.1 6.9-30.4 26.6-38.4 5.8-2.4 16.8-4.3 45 5.9 14.3 5.2 26.4 11.1 26.9 11.4 3.2 1.6 5.4 4.8 5.6 8.4s-1.5 7-4.6 9c-7.2 4.6-43.9 27.9-58.8 30.4-2.1 0.5-4.2 0.6-6.3 0.6z m-0.3-47.1c-4.9 2-16 7.5-14.4 16.1 1.4 7.3 9.3 12.2 17.6 10.7 5.8-1 21.1-9.2 35.4-17.7-17.7-7-33.8-11-38.6-9.1z\" fill=\"#231815\" ></path><path d=\"M101.8 516.4c34.4-17.2 131.2 3.9 131.2 3.9s-64.8 63.1-88.8 77c-24 14-55.5 7.4-70.3-14.8-14.8-22.1 3-53.7 27.9-66.1z\" fill=\"#16CEF9\" ></path><path d=\"M117 614.6c-20.2 0-40-9.4-51.4-26.5-7.1-10.5-8.9-23.2-5.4-36.6 4.8-17.9 19.3-35.3 37.1-44.1 16-8 44.3-9.8 84.1-5.5 28.7 3.1 52.7 8.3 53.7 8.6 3.6 0.8 6.5 3.5 7.5 7s0 7.4-2.6 9.9c-2.7 2.6-66 64.1-90.8 78.5-10 5.9-21.1 8.7-32.2 8.7z m26.2-95c-15.1 0-28.5 1.5-36.9 5.7-12.7 6.3-23.4 18.9-26.7 31.4-2.1 7.8-1.2 14.6 2.6 20.3 11.9 17.8 37.4 23 56.9 11.7 16.1-9.4 52.8-43.2 72.9-62.2-19.5-3.4-46.2-6.9-68.8-6.9z\" fill=\"#231815\" ></path><path d=\"M846.3 354.5c-24.6 13.3-44.3 89.6-44.3 89.6s84.9-19.2 101.4-33.7c16.6-14.6 17.2-38.9 1.4-54.3-15.7-15.5-38.7-12.3-58.5-1.6z\" fill=\"#16CEF9\" ></path><path d=\"M802 454.1c-2.7 0-5.3-1.1-7.2-3-2.4-2.5-3.4-6.1-2.5-9.5 0.2-0.8 5.2-19.9 13.3-40.9 11.7-30.2 23.4-48.2 36-55 27-14.6 53.3-13.4 70.3 3.3 9.6 9.4 14.8 21.8 14.4 34.9-0.4 13.1-6.1 25.1-16.2 34-17.6 15.4-91.2 32.7-105.8 36-0.8 0.1-1.5 0.2-2.3 0.2z m49.1-90.8c-11.9 6.4-25.9 39.1-34.7 67.1 7.7-1.9 17.5-4.5 27.5-7.3 40-11.4 50.4-17.9 53-20.2 5.9-5.2 9.2-12.1 9.4-19.6 0.2-7.4-2.8-14.6-8.4-20.1-15-14.7-37.7-4.8-46.8 0.1z\" fill=\"#231815\" ></path><path d=\"M980.6 441.4c-16.2-5.9-63.1 19.3-63.1 19.3s42.3 25.1 56.1 27c13.8 1.9 26.5-7 28.5-19.8s-8.5-21.7-21.5-26.5z\" fill=\"#16CEF9\" ></path><path d=\"M977.2 498c-1.6 0-3.3-0.1-5-0.3-15-2-52.5-23.9-59.9-28.3-3.1-1.8-5-5.2-4.9-8.8 0.1-3.6 2.1-6.9 5.3-8.6 0.5-0.3 12.4-6.6 26.5-12.3 27.9-11.3 38.9-9.7 44.8-7.6 19.9 7.3 30.4 21.2 27.9 37.4-2.5 16.5-17.5 28.4-34.7 28.5z m-38.3-36.6c14.6 8 30.2 15.6 36 16.4 8.4 1.1 16.1-4 17.2-11.4 1.3-8.7-10-13.8-15-15.6-4.8-1.7-20.8 2.9-38.2 10.6z\" fill=\"#231815\" ></path><path d=\"M922.6 515.5c-35-15.9-131 8.7-131 8.7s67.1 60.7 91.6 73.8c24.5 13.1 55.7 5.4 69.7-17.3 14-22.7-4.9-53.7-30.3-65.2z\" fill=\"#16CEF9\" ></path><path d=\"M908.6 614.2c-10.3 0-20.6-2.4-30.1-7.5-25.3-13.5-90.8-72.7-93.6-75.2-2.7-2.5-3.9-6.2-3-9.8 0.9-3.6 3.7-6.4 7.2-7.3 1-0.3 24.8-6.3 53.4-10.5 39.6-5.8 67.9-5 84.2 2.4 18.1 8.2 33.3 25 38.7 42.8 4 13.2 2.6 25.9-4 36.7-11.2 18.2-31.7 28.4-52.8 28.4z m-95.8-84.7c20.9 18.3 58.7 50.8 75.1 59.6 19.9 10.6 45.2 4.5 56.5-13.7 3.6-5.8 4.3-12.7 1.9-20.4-3.7-12.3-14.9-24.5-27.8-30.4-21.2-9.6-73.2-1.8-105.7 4.9z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-3\" viewBox=\"0 0 1024 1024\"><path d=\"M512.9 449.6m-427.9 0a427.9 427.9 0 1 0 855.8 0 427.9 427.9 0 1 0-855.8 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M512.9 887.6c-59.1 0-116.5-11.6-170.5-34.4-52.1-22.1-99-53.6-139.2-93.8-40.2-40.2-71.8-87-93.8-139.2C86.6 566.1 75 508.7 75 449.6s11.6-116.5 34.4-170.5c22.1-52.1 53.6-99 93.8-139.2 40.2-40.2 87-71.8 139.2-93.8 54-22.8 111.3-34.4 170.5-34.4s116.5 11.6 170.5 34.4c52.1 22.1 99 53.6 139.2 93.8 40.2 40.2 71.8 87 93.8 139.2 22.8 54 34.4 111.3 34.4 170.5s-11.6 116.5-34.4 170.5c-22.1 52.1-53.6 99-93.8 139.2-40.2 40.2-87 71.8-139.2 93.8-54 22.9-111.3 34.5-170.5 34.5z m0-855.9c-56.4 0-111.2 11-162.7 32.8-49.8 21-94.5 51.2-132.8 89.6-38.4 38.4-68.5 83.1-89.6 132.8C106.1 338.5 95 393.2 95 449.6s11 111.2 32.8 162.7c21 49.8 51.2 94.5 89.6 132.8 38.4 38.4 83.1 68.5 132.8 89.6 51.5 21.8 106.2 32.8 162.7 32.8 56.4 0 111.2-11 162.7-32.8 49.8-21 94.5-51.2 132.8-89.6s68.6-83 89.6-132.8c21.8-51.5 32.8-106.2 32.8-162.7S919.8 338.5 898 287c-21-49.8-51.2-94.5-89.6-132.8-38.4-38.4-83.1-68.5-132.8-89.6-51.5-21.8-106.2-32.9-162.7-32.9z\" fill=\"#231815\" ></path><path d=\"M512.9 415.3m-393.6 0a393.6 393.6 0 1 0 787.2 0 393.6 393.6 0 1 0-787.2 0Z\" fill=\"#FFE20D\" ></path><path d=\"M512.9 887.6c-59.1 0-116.5-11.6-170.5-34.4-52.1-22.1-99-53.6-139.2-93.8-40.2-40.2-71.8-87-93.8-139.2C86.6 566.1 75 508.7 75 449.6s11.6-116.5 34.4-170.5c22.1-52.1 53.6-99 93.8-139.2 40.2-40.2 87-71.8 139.2-93.8 54-22.8 111.3-34.4 170.5-34.4s116.5 11.6 170.5 34.4c52.1 22.1 99 53.6 139.2 93.8 40.2 40.2 71.8 87 93.8 139.2 22.8 54 34.4 111.3 34.4 170.5s-11.6 116.5-34.4 170.5c-22.1 52.1-53.6 99-93.8 139.2-40.2 40.2-87 71.8-139.2 93.8-54 22.9-111.3 34.5-170.5 34.5z m0-855.9c-56.4 0-111.2 11-162.7 32.8-49.8 21-94.5 51.2-132.8 89.6-38.4 38.4-68.5 83.1-89.6 132.8C106.1 338.5 95 393.2 95 449.6s11 111.2 32.8 162.7c21 49.8 51.2 94.5 89.6 132.8 38.4 38.4 83.1 68.5 132.8 89.6 51.5 21.8 106.2 32.8 162.7 32.8 56.4 0 111.2-11 162.7-32.8 49.8-21 94.5-51.2 132.8-89.6s68.6-83 89.6-132.8c21.8-51.5 32.8-106.2 32.8-162.7S919.8 338.5 898 287c-21-49.8-51.2-94.5-89.6-132.8-38.4-38.4-83.1-68.5-132.8-89.6-51.5-21.8-106.2-32.9-162.7-32.9z\" fill=\"#231815\" ></path><path d=\"M377 124.7a135.9 44 0 1 0 271.8 0 135.9 44 0 1 0-271.8 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M512.9 620.3c-69.2 0-134-8.2-189.8-22.5-20.1-5.2-39.1 12-34.8 31.6 22 100 114.2 175 224.6 175s202.5-75 224.6-175c4.3-19.6-14.7-36.7-34.8-31.6-55.8 14.3-120.6 22.5-189.8 22.5z\" fill=\"#FFA6D7\" ></path><path d=\"M512.9 814.4c-55.2 0-109-18.5-151.6-52.2-42.1-33.2-71.5-79.7-82.7-130.7-2.7-12.2 1.2-24.9 10.4-33.8 9.8-9.4 23.5-13 36.7-9.6 56.6 14.5 121.4 22.2 187.3 22.2s130.7-7.7 187.3-22.2c13.2-3.4 26.9 0.2 36.7 9.6 9.2 8.9 13.1 21.5 10.4 33.8-11.2 51.1-40.6 97.5-82.7 130.7-42.8 33.6-96.6 52.2-151.8 52.2z m-197-207.6c-4.8 0-9.5 1.8-13 5.3-4.2 4.1-6 9.6-4.7 15.1 10.3 46.6 37.1 88.9 75.6 119.3 39.1 30.9 88.5 47.9 139.2 47.9 50.7 0 100.1-17 139.2-47.9 38.5-30.4 65.3-72.8 75.6-119.3 1.2-5.5-0.5-11-4.7-15.1-4.7-4.6-11.4-6.3-17.8-4.6-58.2 14.9-124.7 22.8-192.2 22.8-67.6 0-134-7.9-192.2-22.8-1.8-0.5-3.4-0.7-5-0.7z\" fill=\"#231815\" ></path><path d=\"M660.6 752.5c-39.9-32.4-91.4-51.9-147.7-51.9s-107.8 19.5-147.7 51.9c39.9 32.4 91.4 51.9 147.7 51.9s107.8-19.6 147.7-51.9z\" fill=\"#FF66C1\" ></path><path d=\"M512.9 814.4c-56.2 0-110.9-19.2-154-54.1-2.3-1.9-3.7-4.8-3.7-7.8s1.4-5.9 3.7-7.8c43-34.9 97.7-54.1 154-54.1 56.2 0 110.9 19.2 154 54.1 2.3 1.9 3.7 4.8 3.7 7.8s-1.4 5.9-3.7 7.8c-43 34.8-97.7 54.1-154 54.1z m-131.2-61.9c37.8 27.1 83.9 41.9 131.2 41.9 47.3 0 93.4-14.8 131.2-41.9-37.8-27.1-83.9-41.9-131.2-41.9-47.3 0-93.4 14.8-131.2 41.9z\" fill=\"#231815\" ></path><path d=\"M227.8 555.8a50.7 31.4 0 1 0 101.4 0 50.7 31.4 0 1 0-101.4 0Z\" fill=\"#FFA178\" ></path><path d=\"M696.7 555.8a50.7 31.4 0 1 0 101.4 0 50.7 31.4 0 1 0-101.4 0Z\" fill=\"#FFA178\" ></path><path d=\"M178.8 972.9a334.1 34.2 0 1 0 668.2 0 334.1 34.2 0 1 0-668.2 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M313.4 468.4c-5.5 0-10-4.5-10-10 0-13.7-11.2-24.9-24.9-24.9s-24.9 11.2-24.9 24.9c0 5.5-4.5 10-10 10s-10-4.5-10-10c0-24.8 20.2-44.9 44.9-44.9s44.9 20.2 44.9 44.9c0 5.5-4.5 10-10 10zM782.3 468.4c-5.5 0-10-4.5-10-10 0-13.7-11.2-24.9-24.9-24.9s-24.9 11.2-24.9 24.9c0 5.5-4.5 10-10 10s-10-4.5-10-10c0-24.8 20.2-44.9 44.9-44.9s44.9 20.2 44.9 44.9c0 5.5-4.4 10-10 10z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-4\" viewBox=\"0 0 1024 1024\"><path d=\"M496.4 449m-424.7 0a424.7 424.7 0 1 0 849.4 0 424.7 424.7 0 1 0-849.4 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M496.4 884.1c-58.7 0-115.7-11.5-169.4-34.2-51.8-21.9-98.4-53.3-138.3-93.3s-71.3-86.5-93.3-138.3C72.7 564.7 61.2 507.7 61.2 449s11.5-115.7 34.2-169.4c21.9-51.8 53.3-98.4 93.3-138.3 40-40 86.5-71.3 138.3-93.3 53.7-22.7 110.7-34.2 169.4-34.2S612.1 25.3 665.8 48c51.8 21.9 98.4 53.3 138.3 93.3 40 40 71.3 86.5 93.3 138.3 22.7 53.7 34.2 110.7 34.2 169.4S920 564.7 897.3 618.4c-21.9 51.8-53.3 98.4-93.3 138.3S717.5 828 665.7 850c-53.6 22.6-110.6 34.1-169.3 34.1z m0-849.3c-55.9 0-110.2 10.9-161.2 32.5-49.3 20.9-93.6 50.7-131.7 88.8-38 38-67.9 82.3-88.8 131.7C93.1 338.8 82.2 393 82.2 449s10.9 110.2 32.5 161.2c20.9 49.3 50.7 93.6 88.8 131.7 38 38 82.3 67.9 131.7 88.8 51.1 21.6 105.3 32.5 161.2 32.5 55.9 0 110.2-10.9 161.2-32.5 49.3-20.9 93.6-50.7 131.7-88.8 38-38 67.9-82.3 88.8-131.7 21.6-51.1 32.5-105.3 32.5-161.2s-11-110.2-32.6-161.3c-20.9-49.3-50.7-93.6-88.8-131.7-38-38-82.3-67.9-131.7-88.8-51-21.5-105.2-32.4-161.1-32.4z\" fill=\"#231815\" ></path><path d=\"M496.4 414.9m-390.6 0a390.6 390.6 0 1 0 781.2 0 390.6 390.6 0 1 0-781.2 0Z\" fill=\"#FFE20D\" ></path><path d=\"M496.4 884.1c-58.7 0-115.7-11.5-169.4-34.2-51.8-21.9-98.4-53.3-138.3-93.3s-71.3-86.5-93.3-138.3C72.7 564.7 61.2 507.7 61.2 449s11.5-115.7 34.2-169.4c21.9-51.8 53.3-98.4 93.3-138.3 40-40 86.5-71.3 138.3-93.3 53.7-22.7 110.7-34.2 169.4-34.2S612.1 25.3 665.8 48c51.8 21.9 98.4 53.3 138.3 93.3 40 40 71.3 86.5 93.3 138.3 22.7 53.7 34.2 110.7 34.2 169.4S920 564.7 897.3 618.4c-21.9 51.8-53.3 98.4-93.3 138.3S717.5 828 665.7 850c-53.6 22.6-110.6 34.1-169.3 34.1z m0-849.3c-55.9 0-110.2 10.9-161.2 32.5-49.3 20.9-93.6 50.7-131.7 88.8-38 38-67.9 82.3-88.8 131.7C93.1 338.8 82.2 393 82.2 449s10.9 110.2 32.5 161.2c20.9 49.3 50.7 93.6 88.8 131.7 38 38 82.3 67.9 131.7 88.8 51.1 21.6 105.3 32.5 161.2 32.5 55.9 0 110.2-10.9 161.2-32.5 49.3-20.9 93.6-50.7 131.7-88.8 38-38 67.9-82.3 88.8-131.7 21.6-51.1 32.5-105.3 32.5-161.2s-11-110.2-32.6-161.3c-20.9-49.3-50.7-93.6-88.8-131.7-38-38-82.3-67.9-131.7-88.8-51-21.5-105.2-32.4-161.1-32.4z\" fill=\"#231815\" ></path><path d=\"M361.5 126.5a134.9 43.6 0 1 0 269.8 0 134.9 43.6 0 1 0-269.8 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M496.4 618.3c-68.7 0-133-8.2-188.3-22.4-19.9-5.1-38.8 11.9-34.5 31.3C295.4 726.5 386.8 801 496.4 801s201-74.5 222.9-173.7c4.3-19.4-14.6-36.4-34.5-31.3-55.5 14.2-119.8 22.3-188.4 22.3z\" fill=\"#FFA6D7\" ></path><path d=\"M496.4 811.5c-54.9 0-108.4-18.4-150.8-51.9-41.9-33.1-71.1-79.3-82.3-130.1-2.7-12.4 1.2-25.1 10.5-34 9.8-9.5 23.6-13.1 36.9-9.7 56.1 14.4 120.3 22 185.7 22 65.4 0 129.6-7.6 185.7-22 13.3-3.4 27.1 0.2 36.9 9.7 9.3 9 13.2 21.7 10.5 34-11.2 50.8-40.4 97-82.3 130.1-42.4 33.5-96 51.9-150.8 51.9zM300.8 605.6c-4.6 0-9.1 1.8-12.5 5.1-4 3.9-5.7 9.2-4.6 14.4 10.1 46.1 36.7 88 74.8 118.1 38.7 30.6 87.6 47.4 137.8 47.4 50.2 0 99.1-16.8 137.8-47.4 38.1-30.1 64.6-72 74.8-118.1 1.2-5.3-0.5-10.5-4.6-14.4-4.5-4.4-10.9-6.1-17.1-4.5-57.8 14.8-123.8 22.7-190.9 22.7-67.1 0-133.1-7.8-190.9-22.7-1.5-0.5-3.1-0.6-4.6-0.6z\" fill=\"#231815\" ></path><path d=\"M642.9 749.5c-39.6-32.1-90.7-51.5-146.6-51.5s-106.9 19.4-146.6 51.5c39.6 32.1 90.7 51.5 146.6 51.5s107-19.4 146.6-51.5z\" fill=\"#FF66C1\" ></path><path d=\"M496.4 811.5c-55.9 0-110.3-19.1-153.2-53.8-2.5-2-3.9-5-3.9-8.2s1.4-6.2 3.9-8.2c42.8-34.7 97.2-53.8 153.2-53.8s110.3 19.1 153.2 53.8c2.5 2 3.9 5 3.9 8.2s-1.4 6.2-3.9 8.2c-42.9 34.7-97.3 53.8-153.2 53.8z m-129.3-62c37.3 26.5 82.6 41 129.2 41s91.9-14.5 129.2-41c-37.3-26.5-82.6-41-129.2-41s-91.9 14.5-129.2 41z\" fill=\"#231815\" ></path><path d=\"M213.4 554.3a50.3 31.1 0 1 0 100.6 0 50.3 31.1 0 1 0-100.6 0Z\" fill=\"#FFA178\" ></path><path d=\"M678.8 554.3a50.3 31.1 0 1 0 100.6 0 50.3 31.1 0 1 0-100.6 0Z\" fill=\"#FFA178\" ></path><path d=\"M164.8 968.2a331.6 33.9 0 1 0 663.2 0 331.6 33.9 0 1 0-663.2 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M298.3 468.1c-5.8 0-10.5-4.7-10.5-10.5 0-13.3-10.8-24.2-24.2-24.2-13.3 0-24.2 10.8-24.2 24.2 0 5.8-4.7 10.5-10.5 10.5s-10.5-4.7-10.5-10.5c0-24.9 20.3-45.2 45.2-45.2 24.9 0 45.2 20.3 45.2 45.2 0 5.8-4.7 10.5-10.5 10.5zM763.7 468.1c-5.8 0-10.5-4.7-10.5-10.5 0-13.3-10.8-24.2-24.2-24.2-13.3 0-24.2 10.8-24.2 24.2 0 5.8-4.7 10.5-10.5 10.5s-10.5-4.7-10.5-10.5c0-24.9 20.3-45.2 45.2-45.2s45.2 20.3 45.2 45.2c0 5.8-4.7 10.5-10.5 10.5z\" fill=\"#231815\" ></path><path d=\"M951 627.6c0 44.7-36.3 81-81 81s-81-36.3-81-81 81-173.2 81-173.2 81 128.5 81 173.2z\" fill=\"#17B4CE\" ></path><path d=\"M870 719.1c-50.5 0-91.5-41-91.5-91.5 0-20.6 13.7-56 41.7-108.4 20.2-37.6 40.7-70.1 40.9-70.5 1.9-3.1 5.3-4.9 8.9-4.9s7 1.9 8.9 4.9c0.2 0.3 20.7 32.9 40.9 70.5 28.1 52.3 41.7 87.8 41.7 108.4 0 50.5-41 91.5-91.5 91.5z m0-244.7c-25.6 42.4-70.5 123-70.5 153.2 0 38.9 31.6 70.5 70.5 70.5s70.5-31.6 70.5-70.5c0-30.2-44.9-110.8-70.5-153.2z\" fill=\"#231815\" ></path><path d=\"M951 605.2c0 38.9-36.3 70.5-81 70.5s-81-31.6-81-70.5 81-150.7 81-150.7 81 111.7 81 150.7z\" fill=\"#16CEF9\" ></path><path d=\"M870 719.1c-50.5 0-91.5-41-91.5-91.5 0-20.6 13.7-56 41.7-108.4 20.2-37.6 40.7-70.1 40.9-70.5 1.9-3.1 5.3-4.9 8.9-4.9s7 1.9 8.9 4.9c0.2 0.3 20.7 32.9 40.9 70.5 28.1 52.3 41.7 87.8 41.7 108.4 0 50.5-41 91.5-91.5 91.5z m0-244.7c-25.6 42.4-70.5 123-70.5 153.2 0 38.9 31.6 70.5 70.5 70.5s70.5-31.6 70.5-70.5c0-30.2-44.9-110.8-70.5-153.2z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-5\" viewBox=\"0 0 1024 1024\"><path d=\"M511.3 455.4m-423.6 0a423.6 423.6 0 1 0 847.2 0 423.6 423.6 0 1 0-847.2 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M511.3 889.1c-58.5 0-115.3-11.5-168.8-34.1-51.6-21.8-98-53.1-137.8-92.9-39.8-39.8-71.1-86.2-92.9-137.8C89.2 570.7 77.7 514 77.7 455.4c0-58.5 11.5-115.3 34.1-168.8 21.8-51.6 53.1-98 92.9-137.8s86.2-71.1 137.8-92.9C396 33.2 452.8 21.8 511.3 21.8s115.3 11.5 168.8 34.1c51.6 21.8 98 53.1 137.8 92.9 39.8 39.8 71.1 86.2 92.9 137.8 22.6 53.5 34.1 110.3 34.1 168.8 0 58.5-11.5 115.3-34.1 168.8-21.8 51.6-53.1 98-92.9 137.8-39.8 39.8-86.2 71.1-137.8 92.9-53.4 22.7-110.2 34.2-168.8 34.2z m0-847.3c-55.8 0-110 10.9-161 32.5C301 95.1 256.8 125 218.8 163s-67.8 82.2-88.7 131.5c-21.6 51-32.5 105.2-32.5 161s10.9 110 32.5 161c20.8 49.3 50.7 93.5 88.7 131.5s82.2 67.8 131.5 88.7c51 21.6 105.2 32.5 161 32.5s110-10.9 161-32.5c49.3-20.8 93.5-50.7 131.5-88.7s67.8-82.2 88.7-131.5c21.6-51 32.5-105.2 32.5-161s-10.9-110-32.5-161c-20.8-49.3-50.7-93.5-88.7-131.5s-82.2-67.8-131.5-88.7c-50.9-21.6-105.1-32.5-161-32.5z\" fill=\"#231815\" ></path><path d=\"M511.3 421.4m-389.7 0a389.7 389.7 0 1 0 779.4 0 389.7 389.7 0 1 0-779.4 0Z\" fill=\"#FFE20D\" ></path><path d=\"M511.3 889.1c-58.5 0-115.3-11.5-168.8-34.1-51.6-21.8-98-53.1-137.8-92.9-39.8-39.8-71.1-86.2-92.9-137.8C89.2 570.7 77.7 514 77.7 455.4c0-58.5 11.5-115.3 34.1-168.8 21.8-51.6 53.1-98 92.9-137.8s86.2-71.1 137.8-92.9C396 33.2 452.8 21.8 511.3 21.8s115.3 11.5 168.8 34.1c51.6 21.8 98 53.1 137.8 92.9 39.8 39.8 71.1 86.2 92.9 137.8 22.6 53.5 34.1 110.3 34.1 168.8 0 58.5-11.5 115.3-34.1 168.8-21.8 51.6-53.1 98-92.9 137.8-39.8 39.8-86.2 71.1-137.8 92.9-53.4 22.7-110.2 34.2-168.8 34.2z m0-847.3c-55.8 0-110 10.9-161 32.5C301 95.1 256.8 125 218.8 163s-67.8 82.2-88.7 131.5c-21.6 51-32.5 105.2-32.5 161s10.9 110 32.5 161c20.8 49.3 50.7 93.5 88.7 131.5s82.2 67.8 131.5 88.7c51 21.6 105.2 32.5 161 32.5s110-10.9 161-32.5c49.3-20.8 93.5-50.7 131.5-88.7s67.8-82.2 88.7-131.5c21.6-51 32.5-105.2 32.5-161s-10.9-110-32.5-161c-20.8-49.3-50.7-93.5-88.7-131.5s-82.2-67.8-131.5-88.7c-50.9-21.6-105.1-32.5-161-32.5z\" fill=\"#231815\" ></path><path d=\"M376.7 133.7a134.6 43.5 0 1 0 269.2 0 134.6 43.5 0 1 0-269.2 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M511.3 624.4c-68.5 0-132.7-8.1-187.9-22.3-19.9-5.1-38.7 11.8-34.5 31.2 21.8 99 113 173.3 222.3 173.3s200.5-74.3 222.3-173.3c4.3-19.4-14.6-36.3-34.5-31.2-55 14.1-119.2 22.3-187.7 22.3z\" fill=\"#FFA6D7\" ></path><path d=\"M511.3 816.6c-54.6 0-108-18.4-150.2-51.7-41.7-32.9-70.8-78.9-81.9-129.5-2.7-12.2 1.2-24.7 10.3-33.5 9.7-9.4 23.3-12.9 36.4-9.6 56 14.4 120.1 22 185.4 22 65.2 0 129.3-7.6 185.4-22 13.1-3.4 26.7 0.2 36.4 9.6 9.1 8.8 13 21.4 10.3 33.5-11.1 50.6-40.2 96.6-81.9 129.5-42.2 33.3-95.5 51.7-150.2 51.7z m-195-205.5c-4.7 0-9.3 1.8-12.8 5.2-4.2 4-5.9 9.4-4.7 14.8 10.1 46.1 36.7 88 74.8 118.1 38.7 30.5 87.6 47.4 137.8 47.4s99.1-16.8 137.8-47.4c38.1-30.1 64.6-72 74.8-118.1 1.2-5.4-0.5-10.8-4.7-14.8-4.6-4.5-11.2-6.2-17.5-4.6-57.6 14.8-123.4 22.6-190.3 22.6s-132.7-7.8-190.3-22.6c-1.8-0.4-3.4-0.6-4.9-0.6z\" fill=\"#231815\" ></path><path d=\"M657.5 755.2c-39.5-32-90.5-51.4-146.2-51.4s-106.7 19.3-146.2 51.4c39.5 32 90.5 51.4 146.2 51.4s106.7-19.3 146.2-51.4z\" fill=\"#FF66C1\" ></path><path d=\"M511.3 816.6c-55.7 0-109.9-19-152.5-53.6-2.3-1.9-3.7-4.8-3.7-7.8s1.4-5.9 3.7-7.8c42.6-34.6 96.8-53.6 152.5-53.6s109.9 19 152.5 53.6c2.3 1.9 3.7 4.8 3.7 7.8s-1.4 5.9-3.7 7.8c-42.6 34.6-96.8 53.6-152.5 53.6z m-129.7-61.4c37.4 26.8 82.9 41.4 129.7 41.4 46.8 0 92.4-14.6 129.7-41.4-37.3-26.8-82.9-41.4-129.7-41.4-46.8 0.1-92.3 14.7-129.7 41.4z\" fill=\"#231815\" ></path><path d=\"M229 560.5a50.2 31.1 0 1 0 100.4 0 50.2 31.1 0 1 0-100.4 0Z\" fill=\"#FFA178\" ></path><path d=\"M693.3 560.5a50.2 31.1 0 1 0 100.4 0 50.2 31.1 0 1 0-100.4 0Z\" fill=\"#FFA178\" ></path><path d=\"M180.5 973.4a330.8 33.8 0 1 0 661.6 0 330.8 33.8 0 1 0-661.6 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M767.4 501.7c-1.7 0-3.5-0.5-5.1-1.4l-63.1-37.7-1.2-0.9c-7-5.7-11-14.2-11-23.2s4-17.5 11-23.2l1.2-0.9 63.1-37.6c4.7-2.8 10.9-1.3 13.7 3.5 2.8 4.7 1.3 10.9-3.5 13.7l-62.3 37.2c-2 1.9-3.2 4.6-3.2 7.4 0 2.8 1.2 5.5 3.2 7.4l62.3 37.2c4.7 2.8 6.3 9 3.5 13.7-1.8 3-5.2 4.8-8.6 4.8zM255.2 501.7c-3.4 0-6.7-1.7-8.6-4.9-2.8-4.7-1.3-10.9 3.5-13.7l62.3-37.2c2-1.9 3.2-4.6 3.2-7.4 0-2.8-1.2-5.5-3.2-7.4l-62.3-37.2c-4.7-2.8-6.3-9-3.5-13.7 2.8-4.7 9-6.3 13.7-3.5l63.1 37.7 1.2 0.9c7 5.7 11 14.2 11 23.2s-4 17.5-11 23.2l-1.2 0.9-63.1 37.7c-1.6 0.9-3.3 1.4-5.1 1.4z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-6\" viewBox=\"0 0 1024 1024\"><path d=\"M443.3 451.7m-416.9 0a416.9 416.9 0 1 0 833.8 0 416.9 416.9 0 1 0-833.8 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M443.3 878.6c-57.6 0-113.5-11.3-166.2-33.6-50.8-21.5-96.5-52.3-135.7-91.5s-70-84.9-91.5-135.7c-22.3-52.6-33.6-108.6-33.6-166.2S27.7 338.1 50 285.5c21.5-50.8 52.3-96.5 91.5-135.7s84.9-70 135.7-91.5C329.8 36 385.7 24.7 443.3 24.7c57.6 0 113.5 11.3 166.2 33.6 50.8 21.5 96.5 52.3 135.7 91.5 39.2 39.2 70 84.9 91.5 135.7 22.3 52.6 33.6 108.6 33.6 166.2S859 565.2 836.7 617.8c-21.5 50.8-52.3 96.5-91.5 135.7-39.2 39.2-84.9 70-135.7 91.5-52.6 22.3-108.5 33.6-166.2 33.6z m0-833.9c-54.9 0-108.2 10.8-158.4 32-48.5 20.5-92 49.8-129.4 87.2-37.4 37.4-66.7 80.9-87.2 129.4-21.2 50.2-32 103.5-32 158.4s10.8 108.2 32 158.4c20.5 48.5 49.8 92 87.2 129.3 37.4 37.4 80.9 66.7 129.4 87.2 50.2 21.2 103.5 32 158.4 32s108.2-10.8 158.4-32c48.5-20.5 92-49.8 129.3-87.2s66.7-80.9 87.2-129.3c21.2-50.2 32-103.5 32-158.4s-10.8-108.2-32-158.4c-20.5-48.5-49.8-92-87.2-129.4-37.4-37.4-80.9-66.7-129.3-87.2-50.1-21.2-103.4-32-158.4-32z\" fill=\"#231815\" ></path><path d=\"M443.3 418.2m-383.5 0a383.5 383.5 0 1 0 767 0 383.5 383.5 0 1 0-767 0Z\" fill=\"#FFE20D\" ></path><path d=\"M443.3 878.6c-57.6 0-113.5-11.3-166.2-33.6-50.8-21.5-96.5-52.3-135.7-91.5s-70-84.9-91.5-135.7c-22.3-52.6-33.6-108.6-33.6-166.2S27.7 338.1 50 285.5c21.5-50.8 52.3-96.5 91.5-135.7s84.9-70 135.7-91.5C329.8 36 385.7 24.7 443.3 24.7c57.6 0 113.5 11.3 166.2 33.6 50.8 21.5 96.5 52.3 135.7 91.5 39.2 39.2 70 84.9 91.5 135.7 22.3 52.6 33.6 108.6 33.6 166.2S859 565.2 836.7 617.8c-21.5 50.8-52.3 96.5-91.5 135.7-39.2 39.2-84.9 70-135.7 91.5-52.6 22.3-108.5 33.6-166.2 33.6z m0-833.9c-54.9 0-108.2 10.8-158.4 32-48.5 20.5-92 49.8-129.4 87.2-37.4 37.4-66.7 80.9-87.2 129.4-21.2 50.2-32 103.5-32 158.4s10.8 108.2 32 158.4c20.5 48.5 49.8 92 87.2 129.3 37.4 37.4 80.9 66.7 129.4 87.2 50.2 21.2 103.5 32 158.4 32s108.2-10.8 158.4-32c48.5-20.5 92-49.8 129.3-87.2s66.7-80.9 87.2-129.3c21.2-50.2 32-103.5 32-158.4s-10.8-108.2-32-158.4c-20.5-48.5-49.8-92-87.2-129.4-37.4-37.4-80.9-66.7-129.3-87.2-50.1-21.2-103.4-32-158.4-32z\" fill=\"#231815\" ></path><path d=\"M310.9 135a132.4 42.8 0 1 0 264.8 0 132.4 42.8 0 1 0-264.8 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M247.4 430.8m-34.5 0a34.5 34.5 0 1 0 69 0 34.5 34.5 0 1 0-69 0Z\" fill=\"#231815\" ></path><path d=\"M443.3 699.4c-49.5 0-96.6-20.3-126-54.2-3.6-4.2-3.2-10.5 1-14.1 4.2-3.6 10.5-3.2 14.1 1 25.6 29.6 67.1 47.3 110.8 47.3 43.8 0 85.2-17.7 110.8-47.3 3.6-4.2 9.9-4.6 14.1-1 4.2 3.6 4.6 9.9 1 14.1-29.2 34-76.3 54.2-125.8 54.2z\" fill=\"#231815\" ></path><path d=\"M165.5 555.1a49.4 30.6 0 1 0 98.8 0 49.4 30.6 0 1 0-98.8 0Z\" fill=\"#FFA178\" ></path><path d=\"M622.4 555.1a49.4 30.6 0 1 0 98.8 0 49.4 30.6 0 1 0-98.8 0Z\" fill=\"#FFA178\" ></path><path d=\"M117.8 961.5a325.5 33.3 0 1 0 651 0 325.5 33.3 0 1 0-651 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M613.8 460.8c-4.6 0-8.8-3.2-9.8-7.9-1.2-5.4 0.4-13.2 11.8-33.9 6-11 12.2-20.7 12.5-21.1 3-4.7 9.1-6 13.8-3.1 4.7 3 6 9.1 3.1 13.8-6.2 9.7-12.8 21.2-17 29.8l70.5-10.8c5.5-0.8 10.6 2.9 11.4 8.4 0.8 5.5-2.9 10.6-8.4 11.4l-86.4 13.2c-0.5 0.1-1 0.2-1.5 0.2z\" fill=\"#231815\" ></path><path d=\"M926 122.8l-93.7 69.4c-6.4 4.8-13.7-0.8-10.8-8.2l42.2-108.7c2.1-5.4 8.4-7.9 12.3-4.9l51.5 39.3c3.9 3 3.1 9.7-1.5 13.1z\" fill=\"#FFFFFF\" ></path><path d=\"M827.3 204c-3.6 0-7-1.1-10-3.3-6-4.6-8.1-12.7-5.2-20.3l42.2-108.7c2.3-5.8 7.1-10.3 12.9-11.9 5.2-1.5 10.6-0.5 14.7 2.7l51.5 39.3c4.1 3.2 6.5 8.1 6.5 13.5 0 6.1-3.1 11.9-8.1 15.6l-93.7 69.4c-3.2 2.5-7 3.7-10.8 3.7z m45.2-123.7l-38 97.9 84.3-62.5-46.3-35.4z\" fill=\"#231815\" ></path><path d=\"M994.9 236.9l-115.5 15.9c-7.9 1.1-11.6-7.2-5.5-12.4l89.2-75c4.4-3.7 11.1-2.9 13.1 1.6l26.3 59.2c2.1 4.4-1.8 9.9-7.6 10.7z\" fill=\"#FFFFFF\" ></path><path d=\"M878.1 262.8c-7 0-13.1-3.8-15.9-9.9-3.1-6.9-1-15.1 5.2-20.3l89.2-75c4.8-4 11.2-5.6 17.1-4.2 5.3 1.2 9.5 4.7 11.6 9.4l26.3 59.2c2.1 4.8 1.8 10.2-0.8 15-3 5.3-8.4 9-14.6 9.8l-115.5 15.9c-0.8 0.1-1.7 0.1-2.6 0.1z m90.4-88.9l-80.3 67.5 104-14.3-23.7-53.2z\" fill=\"#231815\" ></path><path d=\"M987.7 381.6l-105.8-49c-7.3-3.4-5.9-12.4 2.1-13.4l115.6-15c5.7-0.7 11 3.6 10.2 8.4l-9.8 64c-0.8 4.9-7 7.4-12.3 5z\" fill=\"#FFFFFF\" ></path><path d=\"M992 392.5c-2.9 0-5.8-0.6-8.4-1.9l-105.8-49c-7.3-3.4-11.5-10.7-10.4-18.2 1.1-7.5 7.3-13.2 15.3-14.2l115.6-15c6.2-0.8 12.4 1.3 16.7 5.7 3.8 3.9 5.5 9.1 4.7 14.2l-9.8 64c-0.8 5.1-4 9.6-8.8 12.1-2.8 1.6-6 2.3-9.1 2.3z m-96.7-64.7l95.3 44.1 8.8-57.6-104.1 13.5z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-7\" viewBox=\"0 0 1024 1024\"><path d=\"M509.4 571.5m-325.8 0a325.8 325.8 0 1 0 651.6 0 325.8 325.8 0 1 0-651.6 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M509.4 907.4c-89.7 0-174-34.9-237.5-98.4-63.4-63.4-98.4-147.8-98.4-237.5 0-89.7 34.9-174 98.4-237.5 63.4-63.4 147.8-98.4 237.5-98.4 89.7 0 174 34.9 237.5 98.4 63.4 63.4 98.4 147.8 98.4 237.5 0 89.7-34.9 174-98.4 237.5-63.5 63.4-147.8 98.4-237.5 98.4z m0-651.7c-84.4 0-163.7 32.9-223.3 92.5s-92.5 139-92.5 223.3c0 84.4 32.9 163.7 92.5 223.3 59.7 59.7 139 92.5 223.3 92.5s163.7-32.9 223.3-92.5c59.7-59.7 92.5-139 92.5-223.3 0-84.4-32.9-163.7-92.5-223.3s-139-92.5-223.3-92.5z\" fill=\"#231815\" ></path><path d=\"M509.4 545.4m-299.7 0a299.7 299.7 0 1 0 599.4 0 299.7 299.7 0 1 0-599.4 0Z\" fill=\"#FFE20D\" ></path><path d=\"M509.4 907.4c-89.7 0-174-34.9-237.5-98.4-63.4-63.4-98.4-147.8-98.4-237.5 0-89.7 34.9-174 98.4-237.5 63.4-63.4 147.8-98.4 237.5-98.4 89.7 0 174 34.9 237.5 98.4 63.4 63.4 98.4 147.8 98.4 237.5 0 89.7-34.9 174-98.4 237.5-63.5 63.4-147.8 98.4-237.5 98.4z m0-651.7c-84.4 0-163.7 32.9-223.3 92.5s-92.5 139-92.5 223.3c0 84.4 32.9 163.7 92.5 223.3 59.7 59.7 139 92.5 223.3 92.5s163.7-32.9 223.3-92.5c59.7-59.7 92.5-139 92.5-223.3 0-84.4-32.9-163.7-92.5-223.3s-139-92.5-223.3-92.5z\" fill=\"#231815\" ></path><path d=\"M405.9 324.1a103.5 33.5 0 1 0 207 0 103.5 33.5 0 1 0-207 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M509.4 701.5c-52.7 0-102-6.3-144.5-17.2-15.3-3.9-29.8 9.1-26.5 24 16.8 76.2 86.9 133.3 171 133.3s154.2-57.1 171-133.3c3.3-14.9-11.2-28-26.5-24-42.5 10.9-91.8 17.2-144.5 17.2z\" fill=\"#FFA6D7\" ></path><path d=\"M509.4 851.6c-42.5 0-84.1-14.3-116.9-40.2-32.5-25.6-55.2-61.5-63.8-100.9-2.2-10.1 1-20.6 8.6-27.9 8-7.8 19.3-10.7 30.2-7.9 42.9 11 92 16.8 142 16.8s99.1-5.8 142-16.8c10.9-2.8 22.1 0.2 30.2 7.9 7.6 7.3 10.8 17.8 8.6 27.9-8.7 39.4-31.3 75.2-63.8 100.9-33.1 25.9-74.6 40.2-117.1 40.2z m-150.1-158c-3.1 0-6 1.2-8.2 3.3-1.2 1.2-4 4.5-2.9 9.2 7.7 34.9 27.8 66.7 56.7 89.5 29.3 23.2 66.5 35.9 104.5 35.9 38.1 0 75.2-12.8 104.5-35.9 28.9-22.8 49-54.6 56.7-89.5 1-4.8-1.7-8.1-2.9-9.2-3-2.9-7.2-4-11.3-2.9-44.5 11.4-95.3 17.5-147 17.5s-102.5-6-147-17.5c-1-0.3-2.1-0.4-3.1-0.4z\" fill=\"#231815\" ></path><path d=\"M621.8 802.1c-30.4-24.6-69.6-39.5-112.4-39.5-42.8 0-82.1 14.9-112.4 39.5 30.4 24.6 69.6 39.5 112.4 39.5 42.8 0 82-14.8 112.4-39.5z\" fill=\"#FF66C1\" ></path><path d=\"M509.4 851.6c-43.4 0-85.5-14.8-118.7-41.7-2.3-1.9-3.7-4.8-3.7-7.8s1.4-5.9 3.7-7.8c33.2-26.9 75.4-41.7 118.7-41.7 43.4 0 85.5 14.8 118.7 41.7 2.3 1.9 3.7 4.8 3.7 7.8s-1.4 5.9-3.7 7.8c-33.2 26.9-75.4 41.7-118.7 41.7z m-95.8-49.5c27.8 19.1 61.4 29.5 95.7 29.5 34.4 0 67.9-10.4 95.7-29.5-27.8-19.1-61.4-29.5-95.7-29.5-34.3 0-67.9 10.4-95.7 29.5z\" fill=\"#231815\" ></path><path d=\"M292.2 652.4a38.6 23.9 0 1 0 77.2 0 38.6 23.9 0 1 0-77.2 0Z\" fill=\"#FFA178\" ></path><path d=\"M649.3 652.4a38.6 23.9 0 1 0 77.2 0 38.6 23.9 0 1 0-77.2 0Z\" fill=\"#FFA178\" ></path><path d=\"M255 969.9a254.4 26 0 1 0 508.8 0 254.4 26 0 1 0-508.8 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M357.4 588.2c-5.5 0-10-4.5-10-10 0-9.2-7.4-16.6-16.6-16.6s-16.6 7.4-16.6 16.6c0 5.5-4.5 10-10 10s-10-4.5-10-10c0-20.2 16.4-36.6 36.6-36.6s36.6 16.4 36.6 36.6c0 5.5-4.5 10-10 10zM714.5 588.2c-5.5 0-10-4.5-10-10 0-9.2-7.4-16.6-16.6-16.6s-16.6 7.4-16.6 16.6c0 5.5-4.5 10-10 10s-10-4.5-10-10c0-20.2 16.4-36.6 36.6-36.6s36.6 16.4 36.6 36.6c0 5.5-4.5 10-10 10z\" fill=\"#231815\" ></path><path d=\"M509.4 22.8c-152.7 0-276.6 43-276.6 96.1S356.6 215 509.4 215 786 172 786 118.9 662.1 22.8 509.4 22.8z m0 154.9c-113.7 0-220.6-26.3-220.6-58.8s106.9-58.8 220.6-58.8S730 86.4 730 118.9c-0.1 32.4-106.9 58.8-220.6 58.8z\" fill=\"#FFE20D\" ></path><path d=\"M509.4 225c-75 0-145.6-10.2-198.8-28.7-56.6-19.7-87.7-47.2-87.7-77.4 0-30.3 31.2-57.8 87.7-77.4C363.8 23 434.4 12.8 509.4 12.8c75 0 145.6 10.2 198.8 28.7 56.6 19.7 87.7 47.2 87.7 77.4 0 30.3-31.2 57.8-87.7 77.4C655 214.8 584.3 225 509.4 225z m0-192.2c-72.8 0-141.1 9.8-192.3 27.6-46.5 16.2-74.3 38-74.3 58.5s27.8 42.4 74.3 58.5c51.2 17.8 119.5 27.6 192.3 27.6s141.1-9.8 192.3-27.6c46.5-16.2 74.3-38 74.3-58.5s-27.8-42.4-74.3-58.5c-51.3-17.8-119.5-27.6-192.3-27.6z m0 154.9c-55.9 0-112.6-6.4-155.4-17.5-49.9-13-75.1-30.2-75.1-51.2 0-21 25.3-38.3 75.1-51.2 42.9-11.1 99.5-17.5 155.4-17.5S622 56.7 664.8 67.8c49.9 13 75.1 30.2 75.1 51.2 0 21-25.3 38.3-75.1 51.2-42.9 11.1-99.5 17.5-155.4 17.5z m0-117.6c-54.3 0-109.1 6.2-150.4 16.9-41.3 10.7-60.2 24.1-60.2 31.9 0 7.8 18.8 21.1 60.2 31.9 41.3 10.7 96.1 16.9 150.4 16.9s109.1-6.2 150.4-16.9c41.3-10.7 60.2-24.1 60.2-31.9 0-7.8-18.8-21.1-60.2-31.9-41.3-10.7-96.2-16.9-150.4-16.9z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-8\" viewBox=\"0 0 1024 1024\"><path d=\"M513 411.6m-388.8 0a388.8 388.8 0 1 0 777.6 0 388.8 388.8 0 1 0-777.6 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M513 810.4c-53.8 0-106.1-10.5-155.2-31.3-47.5-20.1-90.1-48.8-126.8-85.5s-65.4-79.3-85.5-126.8c-20.8-49.2-31.3-101.4-31.3-155.2s10.5-106.1 31.3-155.2c20.1-47.5 48.8-90.1 85.5-126.8s79.3-65.4 126.8-85.5C406.9 23.3 459.2 12.8 513 12.8s106.1 10.5 155.2 31.3C715.7 64.2 758.4 93 795 129.6s65.4 79.3 85.5 126.8c20.8 49.2 31.3 101.4 31.3 155.2s-10.5 106.1-31.3 155.2c-20.1 47.5-48.8 90.1-85.5 126.8s-79.3 65.4-126.8 85.5c-49.1 20.7-101.4 31.3-155.2 31.3z m0-777.6c-51.1 0-100.7 10-147.4 29.8-45.1 19.1-85.6 46.4-120.4 81.2C210.4 178.5 183 219 164 264.1c-19.7 46.7-29.8 96.3-29.8 147.4s10 100.7 29.8 147.4c19.1 45.1 46.4 85.6 81.2 120.4 34.8 34.8 75.3 62.1 120.4 81.2 46.7 19.8 96.3 29.8 147.4 29.8 51.1 0 100.7-10 147.4-29.8 45.1-19.1 85.6-46.4 120.4-81.2C815.6 644.6 843 604.1 862 559c19.8-46.7 29.8-96.3 29.8-147.4s-10-100.7-29.8-147.4c-19.1-45.1-46.4-85.6-81.2-120.4C746 109 705.5 81.7 660.4 62.6 613.7 42.8 564.1 32.8 513 32.8z\" fill=\"#231815\" ></path><path d=\"M513 380.4m-357.6 0a357.6 357.6 0 1 0 715.2 0 357.6 357.6 0 1 0-715.2 0Z\" fill=\"#FFE20D\" ></path><path d=\"M513 810.4c-53.8 0-106.1-10.5-155.2-31.3-47.5-20.1-90.1-48.8-126.8-85.5s-65.4-79.3-85.5-126.8c-20.8-49.2-31.3-101.4-31.3-155.2s10.5-106.1 31.3-155.2c20.1-47.5 48.8-90.1 85.5-126.8s79.3-65.4 126.8-85.5C406.9 23.3 459.2 12.8 513 12.8s106.1 10.5 155.2 31.3C715.7 64.2 758.4 93 795 129.6s65.4 79.3 85.5 126.8c20.8 49.2 31.3 101.4 31.3 155.2s-10.5 106.1-31.3 155.2c-20.1 47.5-48.8 90.1-85.5 126.8s-79.3 65.4-126.8 85.5c-49.1 20.7-101.4 31.3-155.2 31.3z m0-777.6c-51.1 0-100.7 10-147.4 29.8-45.1 19.1-85.6 46.4-120.4 81.2C210.4 178.5 183 219 164 264.1c-19.7 46.7-29.8 96.3-29.8 147.4s10 100.7 29.8 147.4c19.1 45.1 46.4 85.6 81.2 120.4 34.8 34.8 75.3 62.1 120.4 81.2 46.7 19.8 96.3 29.8 147.4 29.8 51.1 0 100.7-10 147.4-29.8 45.1-19.1 85.6-46.4 120.4-81.2C815.6 644.6 843 604.1 862 559c19.8-46.7 29.8-96.3 29.8-147.4s-10-100.7-29.8-147.4c-19.1-45.1-46.4-85.6-81.2-120.4C746 109 705.5 81.7 660.4 62.6 613.7 42.8 564.1 32.8 513 32.8z\" fill=\"#231815\" ></path><path d=\"M389.5 116.3a123.5 40 0 1 0 247 0 123.5 40 0 1 0-247 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M513 566.6c-62.9 0-121.7-7.5-172.4-20.5-18.3-4.7-35.5 10.9-31.6 28.7 20 90.9 103.7 159 204 159s184-68.2 204-159c3.9-17.8-13.4-33.4-31.6-28.7-50.7 13.1-109.5 20.5-172.4 20.5z\" fill=\"#FFA6D7\" ></path><path d=\"M513 743.9c-50.3 0-99.4-16.9-138.3-47.6-38.4-30.3-65.2-72.7-75.5-119.3-2.5-11.4 1.1-23.2 9.7-31.5 9.1-8.8 21.9-12.1 34.2-9 51.4 13.2 110.1 20.2 169.9 20.2s118.6-7 169.9-20.2c12.3-3.2 25.1 0.2 34.2 9 8.6 8.3 12.2 20.1 9.7 31.5-10.3 46.6-37.1 89-75.5 119.3-38.9 30.6-88 47.6-138.3 47.6zM334 555.3c-4.1 0-8.1 1.6-11.2 4.5-3.6 3.5-5.1 8.2-4.1 12.8 9.3 42.1 33.5 80.4 68.3 107.9 35.4 27.9 80.1 43.3 125.9 43.3 45.8 0 90.6-15.4 125.9-43.3 34.8-27.5 59.1-65.8 68.3-107.9 1-4.7-0.4-9.4-4.1-12.8-4.1-3.9-9.8-5.4-15.3-4-53 13.6-113.4 20.8-174.9 20.8s-121.9-7.2-174.9-20.8c-1.2-0.3-2.6-0.5-3.9-0.5z\" fill=\"#231815\" ></path><path d=\"M254 508a46 28.5 0 1 0 92 0 46 28.5 0 1 0-92 0Z\" fill=\"#FFA178\" ></path><path d=\"M680 508a46 28.5 0 1 0 92 0 46 28.5 0 1 0-92 0Z\" fill=\"#FFA178\" ></path><path d=\"M209.4 983.7a303.6 31.1 0 1 0 607.2 0 303.6 31.1 0 1 0-607.2 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M279.4 276.5m-151.3 0a151.3 151.3 0 1 0 302.6 0 151.3 151.3 0 1 0-302.6 0Z\" fill=\"#FFE20D\" ></path><path d=\"M279.4 437.8c-89 0-161.3-72.4-161.3-161.3s72.4-161.3 161.3-161.3 161.3 72.4 161.3 161.3-72.3 161.3-161.3 161.3z m0-302.7c-77.9 0-141.3 63.4-141.3 141.3s63.4 141.3 141.3 141.3 141.3-63.4 141.3-141.3-63.3-141.3-141.3-141.3z\" fill=\"#231815\" ></path><path d=\"M128.1 260.9a151.3 135.7 0 1 0 302.6 0 151.3 135.7 0 1 0-302.6 0Z\" fill=\"#FFFACF\" ></path><path d=\"M279.4 437.8c-89 0-161.3-72.4-161.3-161.3s72.4-161.3 161.3-161.3 161.3 72.4 161.3 161.3-72.3 161.3-161.3 161.3z m0-302.7c-77.9 0-141.3 63.4-141.3 141.3s63.4 141.3 141.3 141.3 141.3-63.4 141.3-141.3-63.3-141.3-141.3-141.3z\" fill=\"#231815\" ></path><path d=\"M268.8 360.1v-18.8c-9.4-1.2-17-3.3-22.9-6.3-5.9-3-10.9-7.9-15.2-14.6-4.3-6.7-6.8-15-7.5-24.7l18.9-3.5c1.5 10.1 4 17.5 7.7 22.2 5.3 6.7 11.6 10.4 19 11.2v-59.7c-7.7-1.5-15.6-4.4-23.7-9-6-3.3-10.6-8-13.8-13.9-3.2-5.9-4.8-12.6-4.8-20.1 0-13.3 4.7-24.2 14.2-32.4 6.3-5.6 15.7-9 28.1-10.2v-9h11.1v9c10.9 1 19.6 4.2 26 9.6 8.2 6.8 13.1 16.2 14.8 28l-19.4 2.9c-1.1-7.4-3.4-13-6.9-16.9-3.5-3.9-8.3-6.5-14.4-7.8v54.1c9.5 2.4 15.7 4.2 18.8 5.5 5.8 2.6 10.6 5.7 14.3 9.4 3.7 3.7 6.5 8.1 8.5 13.1 2 5.1 3 10.6 3 16.5 0 13-4.1 23.8-12.4 32.5s-19 13.3-32.1 14v19h-11.3z m0-164.3c-7.3 1.1-13 4-17.3 8.8-4.2 4.7-6.3 10.3-6.3 16.8 0 6.4 1.8 11.7 5.4 16.1 3.6 4.3 9.6 7.8 18.2 10.3v-52z m11 129.7c7.3-0.9 13.3-4.1 18.1-9.5 4.8-5.4 7.1-12.1 7.1-20.1 0-6.8-1.7-12.3-5.1-16.4-3.4-4.1-10.1-7.8-20.2-11.1v57.1z\" fill=\"\" ></path><path d=\"M745.4 276.5m-151.3 0a151.3 151.3 0 1 0 302.6 0 151.3 151.3 0 1 0-302.6 0Z\" fill=\"#FFE20D\" ></path><path d=\"M745.4 437.8c-89 0-161.3-72.4-161.3-161.3s72.4-161.3 161.3-161.3 161.3 72.4 161.3 161.3-72.4 161.3-161.3 161.3z m0-302.7c-77.9 0-141.3 63.4-141.3 141.3s63.4 141.3 141.3 141.3 141.3-63.4 141.3-141.3-63.4-141.3-141.3-141.3z\" fill=\"#231815\" ></path><path d=\"M594.1 260.9a151.3 135.7 0 1 0 302.6 0 151.3 135.7 0 1 0-302.6 0Z\" fill=\"#FFFACF\" ></path><path d=\"M745.4 437.8c-89 0-161.3-72.4-161.3-161.3s72.4-161.3 161.3-161.3 161.3 72.4 161.3 161.3-72.4 161.3-161.3 161.3z m0-302.7c-77.9 0-141.3 63.4-141.3 141.3s63.4 141.3 141.3 141.3 141.3-63.4 141.3-141.3-63.4-141.3-141.3-141.3z\" fill=\"#231815\" ></path><path d=\"M734.7 360.1v-18.8c-9.4-1.2-17-3.3-22.9-6.3-5.9-3-10.9-7.9-15.2-14.6-4.3-6.7-6.8-15-7.5-24.7l18.9-3.5c1.5 10.1 4 17.5 7.7 22.2 5.3 6.7 11.6 10.4 19 11.2v-59.7c-7.7-1.5-15.6-4.4-23.7-9-6-3.3-10.6-8-13.8-13.9-3.2-5.9-4.8-12.6-4.8-20.1 0-13.3 4.7-24.2 14.2-32.4 6.3-5.6 15.7-9 28.2-10.2v-9h11.1v9c10.9 1 19.6 4.2 26 9.6 8.2 6.8 13.1 16.2 14.8 28l-19.4 2.9c-1.1-7.4-3.4-13-6.9-16.9-3.5-3.9-8.3-6.5-14.4-7.8v54.1c9.5 2.4 15.7 4.2 18.8 5.5 5.8 2.6 10.6 5.7 14.3 9.4 3.7 3.7 6.5 8.1 8.5 13.1 2 5.1 3 10.6 3 16.5 0 13-4.1 23.8-12.4 32.5s-19 13.3-32.1 14v19h-11.4z m0-164.3c-7.3 1.1-13.1 4-17.3 8.8-4.2 4.7-6.3 10.3-6.3 16.8 0 6.4 1.8 11.7 5.4 16.1 3.6 4.3 9.6 7.8 18.2 10.3v-52z m11.1 129.7c7.3-0.9 13.3-4.1 18.1-9.5 4.8-5.4 7.1-12.1 7.1-20.1 0-6.8-1.7-12.3-5.1-16.4-3.4-4.1-10.1-7.8-20.2-11.1v57.1z\" fill=\"\" ></path><path d=\"M522.4 866c-40 0-72.7-30.8-72.7-68.5V682.6c0-37.7 32.7-5.3 72.7-5.3s72.7-32.3 72.7 5.3v114.9c0 37.7-32.7 68.5-72.7 68.5z\" fill=\"#FC5965\" ></path><path d=\"M522.4 876c-45.6 0-82.7-35.2-82.7-78.5V682.6c0-7.6 1-18.4 9.3-24.4 9.7-7.1 22.1-3.1 36.6 1.5 11.1 3.5 23.7 7.6 36.9 7.6s25.8-4 36.9-7.6c14.5-4.6 26.9-8.6 36.6-1.5 8.3 6.1 9.3 16.8 9.3 24.4v114.9c-0.2 43.3-37.3 78.5-82.9 78.5z m-61.7-201.7c-0.3 0.6-1.1 2.8-1.1 8.2v114.9c0 32.3 28.1 58.5 62.7 58.5s62.7-26.2 62.7-58.5V682.6c0-5.4-0.8-7.6-1.1-8.2-3-0.6-12.4 2.4-18.7 4.4-11.9 3.8-26.7 8.5-42.9 8.5s-31.1-4.7-42.9-8.5c-6.3-2.1-15.7-5.1-18.7-4.5z\" fill=\"#231815\" ></path><path d=\"M522.4 714.5c-40 0-72.7 21.8-72.7 12.5v-57.9c0-9.3 32.7 4.9 72.7 4.9s72.7-14.2 72.7-4.9V727c0 9.4-32.7-12.5-72.7-12.5z\" fill=\"#F9919D\" ></path><path d=\"M522.4 876c-45.6 0-82.7-35.2-82.7-78.5V682.6c0-7.6 1-18.4 9.3-24.4 9.7-7.1 22.1-3.1 36.6 1.5 11.1 3.5 23.7 7.6 36.9 7.6s25.8-4 36.9-7.6c14.5-4.6 26.9-8.6 36.6-1.5 8.3 6.1 9.3 16.8 9.3 24.4v114.9c-0.2 43.3-37.3 78.5-82.9 78.5z m-61.7-201.7c-0.3 0.6-1.1 2.8-1.1 8.2v114.9c0 32.3 28.1 58.5 62.7 58.5s62.7-26.2 62.7-58.5V682.6c0-5.4-0.8-7.6-1.1-8.2-3-0.6-12.4 2.4-18.7 4.4-11.9 3.8-26.7 8.5-42.9 8.5s-31.1-4.7-42.9-8.5c-6.3-2.1-15.7-5.1-18.7-4.5z\" fill=\"#231815\" ></path><path d=\"M653 905.7c0 15.3-12.4 27.7-27.7 27.7s-27.7-12.4-27.7-27.7 27.7-59.3 27.7-59.3 27.7 44 27.7 59.3z\" fill=\"#16CEF9\" ></path><path d=\"M625.3 943.4c-20.8 0-37.7-16.9-37.7-37.7 0-5.2 1.6-15 15-40.1 7-13.1 13.9-24 14.2-24.5 1.8-2.9 5-4.7 8.5-4.7s6.6 1.8 8.5 4.7c0.3 0.5 7.2 11.4 14.2 24.5 13.5 25.1 15 34.9 15 40.1 0 20.8-16.9 37.7-37.7 37.7z m0-77.6c-9.6 16.7-17.7 33.9-17.7 39.9 0 9.8 7.9 17.7 17.7 17.7 9.8 0 17.7-7.9 17.7-17.7 0-4.9-6.6-20.5-17.7-39.9z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-9\" viewBox=\"0 0 1024 1024\"><path d=\"M528.7 536.6m-350.3 0a350.3 350.3 0 1 0 700.6 0 350.3 350.3 0 1 0-700.6 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M528.7 896.9c-48.6 0-95.8-9.5-140.3-28.3-42.9-18.1-81.4-44.1-114.5-77.2-33.1-33.1-59.1-71.6-77.2-114.5-18.8-44.4-28.3-91.6-28.3-140.3s9.5-95.8 28.3-140.3c18.1-42.9 44.1-81.4 77.2-114.5 33.1-33.1 71.6-59.1 114.5-77.2 44.4-18.8 91.6-28.3 140.3-28.3s95.8 9.5 140.3 28.3c42.9 18.1 81.4 44.1 114.5 77.2 33.1 33.1 59.1 71.6 77.2 114.5 18.8 44.4 28.3 91.6 28.3 140.3s-9.5 95.8-28.3 140.3c-18.1 42.9-44.1 81.4-77.2 114.5-33.1 33.1-71.6 59.1-114.5 77.2-44.5 18.8-91.7 28.3-140.3 28.3z m0-700.7c-90.9 0-176.4 35.4-240.7 99.7-64.3 64.3-99.7 149.7-99.7 240.7S223.8 713 288 777.2c64.3 64.3 149.7 99.7 240.7 99.7s176.4-35.4 240.7-99.7S869 627.5 869 536.6s-35.4-176.4-99.7-240.7c-64.2-64.2-149.7-99.7-240.6-99.7z\" fill=\"#231815\" ></path><path d=\"M528.7 508.5m-322.2 0a322.2 322.2 0 1 0 644.4 0 322.2 322.2 0 1 0-644.4 0Z\" fill=\"#FFE20D\" ></path><path d=\"M528.7 896.9c-48.6 0-95.8-9.5-140.3-28.3-42.9-18.1-81.4-44.1-114.5-77.2-33.1-33.1-59.1-71.6-77.2-114.5-18.8-44.4-28.3-91.6-28.3-140.3s9.5-95.8 28.3-140.3c18.1-42.9 44.1-81.4 77.2-114.5 33.1-33.1 71.6-59.1 114.5-77.2 44.4-18.8 91.6-28.3 140.3-28.3s95.8 9.5 140.3 28.3c42.9 18.1 81.4 44.1 114.5 77.2 33.1 33.1 59.1 71.6 77.2 114.5 18.8 44.4 28.3 91.6 28.3 140.3s-9.5 95.8-28.3 140.3c-18.1 42.9-44.1 81.4-77.2 114.5-33.1 33.1-71.6 59.1-114.5 77.2-44.5 18.8-91.7 28.3-140.3 28.3z m0-700.7c-90.9 0-176.4 35.4-240.7 99.7-64.3 64.3-99.7 149.7-99.7 240.7S223.8 713 288 777.2c64.3 64.3 149.7 99.7 240.7 99.7s176.4-35.4 240.7-99.7S869 627.5 869 536.6s-35.4-176.4-99.7-240.7c-64.2-64.2-149.7-99.7-240.6-99.7z\" fill=\"#231815\" ></path><path d=\"M417.4 270.5a111.3 36 0 1 0 222.6 0 111.3 36 0 1 0-222.6 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M530.4 722.2m-123.2 0a123.2 123.2 0 1 0 246.4 0 123.2 123.2 0 1 0-246.4 0Z\" fill=\"#FFA6D7\" ></path><path d=\"M530.4 855.4c-73.5 0-133.2-59.8-133.2-133.2S456.9 589 530.4 589s133.2 59.8 133.2 133.2-59.8 133.2-133.2 133.2z m0-246.4c-62.4 0-113.2 50.8-113.2 113.2 0 62.4 50.8 113.2 113.2 113.2 62.4 0 113.2-50.8 113.2-113.2 0-62.4-50.8-113.2-113.2-113.2z\" fill=\"#231815\" ></path><path d=\"M295.2 623.5a41.5 25.7 0 1 0 83 0 41.5 25.7 0 1 0-83 0Z\" fill=\"#FFA178\" ></path><path d=\"M679.1 623.5a41.5 25.7 0 1 0 83 0 41.5 25.7 0 1 0-83 0Z\" fill=\"#FFA178\" ></path><path d=\"M255.2 965a273.5 28 0 1 0 547 0 273.5 28 0 1 0-547 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M720.6 553.7c-21.3 0-38.6-17.3-38.6-38.6 0-5.5 4.5-10 10-10s10 4.5 10 10c0 10.3 8.3 18.6 18.6 18.6s18.6-8.3 18.6-18.6c0-5.5 4.5-10 10-10s10 4.5 10 10c0 21.3-17.3 38.6-38.6 38.6zM336.7 553.7c-21.3 0-38.6-17.3-38.6-38.6 0-5.5 4.5-10 10-10s10 4.5 10 10c0 10.3 8.3 18.6 18.6 18.6s18.6-8.3 18.6-18.6c0-5.5 4.5-10 10-10s10 4.5 10 10c0 21.3-17.3 38.6-38.6 38.6z\" fill=\"#231815\" ></path><path d=\"M530.4 722.2c-45.6 0-85.4 24.8-106.7 61.6 21.3 36.8 61.1 61.6 106.7 61.6s85.4-24.8 106.7-61.6c-21.3-36.8-61.1-61.6-106.7-61.6z\" fill=\"#FF66C1\" ></path><path d=\"M530.4 855.4c-47.4 0-91.6-25.5-115.3-66.6-1.8-3.1-1.8-6.9 0-10 23.8-41.1 68-66.6 115.3-66.6 47.4 0 91.6 25.5 115.3 66.6 1.8 3.1 1.8 6.9 0 10-23.8 41.1-68 66.6-115.3 66.6z m-95-71.6c20.8 32 56.7 51.6 95 51.6s74.2-19.6 95-51.6c-20.8-32-56.7-51.6-95-51.6s-74.2 19.6-95 51.6z\" fill=\"#231815\" ></path><path d=\"M347.9 156.2l-85.3 32.6s43.3-95.4 62.8-124.3c4.9-7.2 7.5-15.4 5.4-23.2 0-0.1-0.1-0.3-0.1-0.4l-0.6-1.8c0-0.1 0-0.1-0.1-0.2-0.1-0.3-0.3-0.6-0.4-1-0.1-0.3-0.3-0.7-0.4-1-0.3-0.6-0.6-1.1-0.9-1.7-0.1-0.1-0.1-0.2-0.2-0.4-6.2-10.2-19-14.9-30.5-10.5L154 79c-12.9 4.9-19.5 19.5-14.5 32.5C144.4 124.4 159 131 172 126l84-32.1-62 122.7c-6.5 7.4-7.9 17.6-4.3 26.2 0.1 0.2 0.1 0.4 0.2 0.7 4.9 12.9 19.5 19.5 32.5 14.5l143.5-54.8c12.9-4.9 19.5-19.5 14.5-32.5-5-12.9-19.6-19.5-32.5-14.5z\" fill=\"#CDC0F9\" ></path><path d=\"M213.4 269.6c-14.2 0-27.5-8.6-32.9-22.6l-0.3-0.9c-4.7-12-2.7-25.3 5.4-35.1l49.8-98.6-59.9 22.9c-18.1 6.9-38.5-2.2-45.4-20.3-6.9-18.1 2.2-38.5 20.3-45.4L294 14.9c15.9-6.1 33.8 0.1 42.6 14.6 0.1 0.1 0.2 0.3 0.3 0.5 0.4 0.6 0.8 1.4 1.3 2.4 0.2 0.4 0.3 0.7 0.5 1.1l0.2 0.4c0.2 0.4 0.4 0.8 0.5 1.2 0.1 0.2 0.1 0.3 0.2 0.5 0.3 0.8 0.5 1.6 0.7 2.2 0.1 0.3 0.2 0.5 0.2 0.7 2.7 10 0.4 20.9-6.7 31.4-13.1 19.3-37.8 70.7-51.7 100.6l62.4-23.8c18.1-6.9 38.5 2.2 45.4 20.3s-2.2 38.5-20.3 45.4l-143.5 54.8c-4.3 1.6-8.5 2.4-12.7 2.4zM199.3 240c3 7.7 11.7 11.5 19.5 8.6l143.5-54.8c7.8-3 11.7-11.7 8.7-19.5-3-7.8-11.7-11.7-19.5-8.7l-85.3 32.6c-3.8 1.4-8.1 0.5-10.9-2.5-2.8-3-3.5-7.3-1.8-11 1.8-3.9 43.9-96.6 63.6-125.7 2.6-3.8 5.4-9.5 4-14.9-0.1-0.2-0.1-0.3-0.1-0.5-0.1-0.3-0.2-0.7-0.3-1.1 0-0.1 0-0.1-0.1-0.2l-0.3-0.6-0.3-0.6c-0.1-0.3-0.3-0.6-0.6-1 0-0.1-0.1-0.2-0.2-0.3-3.9-6.2-11.5-8.8-18.3-6.3L157.6 88.3c-7.8 3-11.7 11.7-8.7 19.5 3 7.8 11.7 11.7 19.5 8.7l84.1-32.1c3.9-1.5 8.2-0.4 11 2.6 2.8 3.1 3.4 7.5 1.5 11.2l-62 122.7c-0.4 0.8-0.9 1.5-1.4 2.1-3.8 4.3-4.8 10.5-2.6 15.8 0.1 0.2 0.1 0.3 0.2 0.5 0 0.3 0 0.5 0.1 0.7z\" fill=\"#231815\" ></path><path d=\"M347.9 156.2l-85.3 32.6s43.3-95.4 62.8-124.3c4.3-6.4 6.8-13.4 5.9-20.4L142 116.3c6.3 9.6 18.8 13.9 29.9 9.7L256 93.9l-62 122.7c-6.5 7.4-7.9 17.6-4.3 26.2 0.1 0.2 0.1 0.4 0.2 0.7 4.9 12.9 19.5 19.5 32.5 14.5l143.5-54.8c12.9-4.9 19.5-19.5 14.5-32.5-5-12.9-19.6-19.5-32.5-14.5z\" fill=\"#A698EA\" ></path><path d=\"M213.4 269.6c-14.2 0-27.5-8.6-32.9-22.6l-0.3-0.9c-4.7-12-2.7-25.3 5.4-35.1l49.8-98.6-59.9 22.9c-18.1 6.9-38.5-2.2-45.4-20.3-6.9-18.1 2.2-38.5 20.3-45.4L294 14.9c15.9-6.1 33.8 0.1 42.6 14.6 0.1 0.1 0.2 0.3 0.3 0.5 0.4 0.6 0.8 1.4 1.3 2.4 0.2 0.4 0.3 0.7 0.5 1.1l0.2 0.4c0.2 0.4 0.4 0.8 0.5 1.2 0.1 0.2 0.1 0.3 0.2 0.5 0.3 0.8 0.5 1.6 0.7 2.2 0.1 0.3 0.2 0.5 0.2 0.7 2.7 10 0.4 20.9-6.7 31.4-13.1 19.3-37.8 70.7-51.7 100.6l62.4-23.8c18.1-6.9 38.5 2.2 45.4 20.3s-2.2 38.5-20.3 45.4l-143.5 54.8c-4.3 1.6-8.5 2.4-12.7 2.4zM199.3 240c3 7.7 11.7 11.5 19.5 8.6l143.5-54.8c7.8-3 11.7-11.7 8.7-19.5-3-7.8-11.7-11.7-19.5-8.7l-85.3 32.6c-3.8 1.4-8.1 0.5-10.9-2.5-2.8-3-3.5-7.3-1.8-11 1.8-3.9 43.9-96.6 63.6-125.7 2.6-3.8 5.4-9.5 4-14.9-0.1-0.2-0.1-0.3-0.1-0.5-0.1-0.3-0.2-0.7-0.3-1.1 0-0.1 0-0.1-0.1-0.2l-0.3-0.6-0.3-0.6c-0.1-0.3-0.3-0.6-0.6-1 0-0.1-0.1-0.2-0.2-0.3-3.9-6.2-11.5-8.8-18.3-6.3L157.6 88.3c-7.8 3-11.7 11.7-8.7 19.5 3 7.8 11.7 11.7 19.5 8.7l84.1-32.1c3.9-1.5 8.2-0.4 11 2.6 2.8 3.1 3.4 7.5 1.5 11.2l-62 122.7c-0.4 0.8-0.9 1.5-1.4 2.1-3.8 4.3-4.8 10.5-2.6 15.8 0.1 0.2 0.1 0.3 0.2 0.5 0 0.3 0 0.5 0.1 0.7z\" fill=\"#231815\" ></path><path d=\"M530.7 221.5l-59.1-6.9s53.8-42 73.8-52.8c5-2.7 9-6.6 10.1-11.8 0-0.1 0-0.2 0.1-0.3 0.1-0.4 0.2-0.8 0.2-1.2v-0.1-0.7-0.7-1.3-0.3c-0.5-7.7-6.5-14.3-14.4-15.2L442 118.5c-8.9-1.1-17.1 5.4-18.2 14.3-1.1 8.9 5.4 17.1 14.3 18.2l58.2 6.8-72.8 52.1c-6 2.3-9.8 7.8-10.4 13.8 0 0.1-0.1 0.3-0.1 0.4-1.1 8.9 5.4 17.1 14.3 18.2l99.4 11.7c8.9 1.1 17.1-5.4 18.2-14.3 1.2-9-5.3-17.1-14.2-18.2z\" fill=\"#CDC0F9\" ></path><path d=\"M528.8 264.2c-1 0-2.1-0.1-3.1-0.2l-99.4-11.7c-7-0.8-13.2-4.3-17.6-9.9s-6.3-12.4-5.5-19.4c0-0.2 0.1-0.4 0.1-0.7 1-9.4 6.9-17.4 15.4-21.2l50.9-36.4-32.5-3.8c-7-0.8-13.2-4.3-17.6-9.9-4.4-5.5-6.3-12.4-5.5-19.4 0.8-7 4.3-13.2 9.9-17.6 5.5-4.4 12.4-6.3 19.4-5.5l99.4 11.7c12.7 1.5 22.4 11.8 23.2 24.5v2.5c0 0.3 0 0.6-0.1 1v0.1c0 0.4 0 0.7-0.1 1.1 0 0.1 0 0.3-0.1 0.5-0.1 0.6-0.2 1.2-0.3 1.6 0 0.2-0.1 0.4-0.1 0.6-1.7 7.6-6.9 14-15.1 18.4-11.6 6.2-35.6 23.9-52.8 36.9l34.6 4.1c14.4 1.7 24.8 14.8 23.1 29.3-0.8 7-4.3 13.2-9.9 17.6-4.7 3.8-10.4 5.8-16.3 5.8zM423 225.5c-0.1 1.6 0.3 3.2 1.4 4.5 1.1 1.3 2.6 2.2 4.2 2.4l99.4 11.7c1.7 0.2 3.3-0.3 4.7-1.3 1.3-1.1 2.2-2.6 2.4-4.2 0.4-3.4-2.2-6.7-5.6-7.1l-59.1-6.9c-4-0.5-7.4-3.3-8.5-7.2-1.1-3.9 0.3-8.1 3.5-10.6 2.2-1.7 54.7-42.7 75.2-53.7 1.6-0.9 4.5-2.7 5.1-5v-0.2c0-0.2 0.1-0.3 0.1-0.5v-0.6-0.5-0.2c-0.2-3-2.6-5.5-5.6-5.8l-99.4-11.7c-1.7-0.2-3.3 0.3-4.7 1.3s-2.2 2.6-2.4 4.2c-0.2 1.7 0.3 3.3 1.3 4.7 1.1 1.3 2.6 2.2 4.2 2.4l58.2 6.8c4.1 0.5 7.5 3.4 8.5 7.4s-0.5 8.2-3.9 10.6l-72.8 52.1c-0.7 0.5-1.4 0.9-2.2 1.2-2.2 0.9-3.8 3-4 5.4 0 0.2 0 0.3-0.1 0.5 0.2 0.1 0.2 0.2 0.1 0.3z\" fill=\"#231815\" ></path><path d=\"M530.7 221.5l-59.1-6.9s53.8-42 73.8-52.8c4.4-2.4 8-5.7 9.6-10l-131.1-15.4c0.8 7.5 6.6 13.7 14.4 14.6l58.2 6.8-72.8 52.1c-6 2.3-9.8 7.8-10.4 13.8 0 0.1-0.1 0.3-0.1 0.4-1.1 8.9 5.4 17.1 14.3 18.2l99.4 11.7c8.9 1.1 17.1-5.4 18.2-14.3 1-9-5.5-17.1-14.4-18.2z\" fill=\"#A698EA\" ></path><path d=\"M528.8 264.2c-1 0-2.1-0.1-3.1-0.2l-99.4-11.7c-7-0.8-13.2-4.3-17.6-9.9s-6.3-12.4-5.5-19.4c0-0.2 0.1-0.4 0.1-0.7 1-9.4 6.9-17.4 15.4-21.2l50.9-36.4-32.5-3.8c-7-0.8-13.2-4.3-17.6-9.9-4.4-5.5-6.3-12.4-5.5-19.4 0.8-7 4.3-13.2 9.9-17.6 5.5-4.4 12.4-6.3 19.4-5.5l99.4 11.7c12.7 1.5 22.4 11.8 23.2 24.5v2.5c0 0.3 0 0.6-0.1 1v0.1c0 0.4 0 0.7-0.1 1.1 0 0.1 0 0.3-0.1 0.5-0.1 0.6-0.2 1.2-0.3 1.6 0 0.2-0.1 0.4-0.1 0.6-1.7 7.6-6.9 14-15.1 18.4-11.6 6.2-35.6 23.9-52.8 36.9l34.6 4.1c14.4 1.7 24.8 14.8 23.1 29.3-0.8 7-4.3 13.2-9.9 17.6-4.7 3.8-10.4 5.8-16.3 5.8zM423 225.5c-0.1 1.6 0.3 3.2 1.4 4.5 1.1 1.3 2.6 2.2 4.2 2.4l99.4 11.7c1.7 0.2 3.3-0.3 4.7-1.3 1.3-1.1 2.2-2.6 2.4-4.2 0.4-3.4-2.2-6.7-5.6-7.1l-59.1-6.9c-4-0.5-7.4-3.3-8.5-7.2-1.1-3.9 0.3-8.1 3.5-10.6 2.2-1.7 54.7-42.7 75.2-53.7 1.6-0.9 4.5-2.7 5.1-5v-0.2c0-0.2 0.1-0.3 0.1-0.5v-0.6-0.5-0.2c-0.2-3-2.6-5.5-5.6-5.8l-99.4-11.7c-1.7-0.2-3.3 0.3-4.7 1.3s-2.2 2.6-2.4 4.2c-0.2 1.7 0.3 3.3 1.3 4.7 1.1 1.3 2.6 2.2 4.2 2.4l58.2 6.8c4.1 0.5 7.5 3.4 8.5 7.4s-0.5 8.2-3.9 10.6l-72.8 52.1c-0.7 0.5-1.4 0.9-2.2 1.2-2.2 0.9-3.8 3-4 5.4 0 0.2 0 0.3-0.1 0.5 0.2 0.1 0.2 0.2 0.1 0.3z\" fill=\"#231815\" ></path><path d=\"M269.8 373.3l-48.3 11.3s30.3-48.3 42.9-62.4c3.2-3.5 5.2-7.7 4.6-12.1v-0.2c-0.1-0.3-0.1-0.7-0.2-1v-0.1c0-0.2-0.1-0.4-0.2-0.6-0.1-0.2-0.1-0.4-0.2-0.6-0.1-0.3-0.2-0.7-0.4-1 0-0.1-0.1-0.1-0.1-0.2-2.6-5.9-9.1-9.4-15.6-7.9L171 317.6c-7.3 1.7-11.9 9.1-10.2 16.4 1.7 7.3 9.1 11.9 16.4 10.2l47.6-11.2-42.4 61.6c-4 3.5-5.5 8.9-4.3 13.8 0 0.1 0 0.2 0.1 0.4 1.7 7.3 9.1 11.9 16.4 10.2l81.3-19.1c7.3-1.7 11.9-9.1 10.2-16.4-1.6-7.3-9-11.9-16.3-10.2z\" fill=\"#CDC0F9\" ></path><path d=\"M191.6 429.4c-10.7 0-20.5-7.4-23-18.3 0-0.2-0.1-0.4-0.1-0.6-2-8.2 0.5-16.6 6.4-22.4l27.1-39.3-22.5 5.3c-6.1 1.4-12.5 0.4-17.9-2.9-5.4-3.3-9.1-8.6-10.6-14.7s-0.4-12.5 2.9-17.9c3.3-5.4 8.6-9.1 14.7-10.6l81.3-19.1c11.1-2.6 22.5 3.1 27.1 13.6 0.1 0.1 0.1 0.3 0.2 0.4 0.2 0.4 0.4 1 0.6 1.6 0.1 0.2 0.2 0.6 0.3 0.9v0.1c0.1 0.3 0.2 0.6 0.3 1 0 0.1 0.1 0.3 0.1 0.4 0.1 0.6 0.2 1 0.3 1.4 0 0.2 0.1 0.4 0.1 0.6 0.9 6.9-1.5 13.9-7.1 20-6.7 7.5-19 25.7-28.6 40.3l24.3-5.7c6.1-1.4 12.5-0.4 17.9 2.9 5.4 3.3 9.1 8.6 10.6 14.7 3 12.7-4.9 25.5-17.6 28.4L197 428.7c-1.8 0.5-3.6 0.7-5.4 0.7z m-3.5-22.7c0.3 1.1 1.1 1.8 1.6 2.1 0.5 0.3 1.5 0.8 2.8 0.5l81.3-19.1c1.9-0.5 3.2-2.5 2.7-4.4-0.5-1.9-2.5-3.2-4.4-2.7l-48.3 11.3c-3.9 0.9-8.1-0.6-10.4-3.9s-2.5-7.7-0.3-11.1c1.3-2 30.9-49.1 43.9-63.7 1.4-1.6 2.2-3.1 2.1-4.1v-0.2-0.3c0-0.1 0-0.2-0.1-0.2l-0.1-0.2c0-0.1-0.1-0.1-0.1-0.2 0 0 0-0.1-0.1-0.1-0.7-1.6-2.5-2.4-4.2-2l-81.3 19.1c-1.9 0.5-3.2 2.5-2.7 4.4 0.3 1.3 1.2 2 1.6 2.3 0.5 0.3 1.5 0.8 2.8 0.5l47.6-11.2c4-0.9 8.2 0.7 10.5 4.1 2.3 3.4 2.3 7.9 0 11.3l-42.4 61.6c-0.5 0.7-1 1.3-1.7 1.9-1.3 1.1-1.4 2.7-1.1 3.7 0 0.2 0.1 0.3 0.1 0.5 0.2-0.1 0.2 0 0.2 0.1z\" fill=\"#231815\" ></path><path d=\"M269.8 373.3l-48.3 11.3s30.3-48.3 42.9-62.4c2.8-3.1 4.7-6.7 4.7-10.6l-107.3 25.1c2.7 5.6 9.1 8.9 15.4 7.4l47.6-11.2-42.4 61.6c-4 3.5-5.5 8.9-4.3 13.8 0 0.1 0 0.2 0.1 0.4 1.7 7.3 9.1 11.9 16.4 10.2l81.3-19.1c7.3-1.7 11.9-9.1 10.2-16.4-1.6-7.2-9-11.8-16.3-10.1z\" fill=\"#A698EA\" ></path><path d=\"M191.6 429.4c-10.7 0-20.5-7.4-23-18.3 0-0.2-0.1-0.4-0.1-0.6-2-8.2 0.5-16.6 6.4-22.4l27.1-39.3-22.5 5.3c-6.1 1.4-12.5 0.4-17.9-2.9-5.4-3.3-9.1-8.6-10.6-14.7s-0.4-12.5 2.9-17.9c3.3-5.4 8.6-9.1 14.7-10.6l81.3-19.1c11.1-2.6 22.5 3.1 27.1 13.6 0.1 0.1 0.1 0.3 0.2 0.4 0.2 0.4 0.4 1 0.6 1.6 0.1 0.2 0.2 0.6 0.3 0.9v0.1c0.1 0.3 0.2 0.6 0.3 1 0 0.1 0.1 0.3 0.1 0.4 0.1 0.6 0.2 1 0.3 1.4 0 0.2 0.1 0.4 0.1 0.6 0.9 6.9-1.5 13.9-7.1 20-6.7 7.5-19 25.7-28.6 40.3l24.3-5.7c6.1-1.4 12.5-0.4 17.9 2.9 5.4 3.3 9.1 8.6 10.6 14.7 3 12.7-4.9 25.5-17.6 28.4L197 428.7c-1.8 0.5-3.6 0.7-5.4 0.7z m-3.5-22.7c0.3 1.1 1.1 1.8 1.6 2.1 0.5 0.3 1.5 0.8 2.8 0.5l81.3-19.1c1.9-0.5 3.2-2.5 2.7-4.4-0.5-1.9-2.5-3.2-4.4-2.7l-48.3 11.3c-3.9 0.9-8.1-0.6-10.4-3.9s-2.5-7.7-0.3-11.1c1.3-2 30.9-49.1 43.9-63.7 1.4-1.6 2.2-3.1 2.1-4.1v-0.2-0.3c0-0.1 0-0.2-0.1-0.2l-0.1-0.2c0-0.1-0.1-0.1-0.1-0.2 0 0 0-0.1-0.1-0.1-0.7-1.6-2.5-2.4-4.2-2l-81.3 19.1c-1.9 0.5-3.2 2.5-2.7 4.4 0.3 1.3 1.2 2 1.6 2.3 0.5 0.3 1.5 0.8 2.8 0.5l47.6-11.2c4-0.9 8.2 0.7 10.5 4.1 2.3 3.4 2.3 7.9 0 11.3l-42.4 61.6c-0.5 0.7-1 1.3-1.7 1.9-1.3 1.1-1.4 2.7-1.1 3.7 0 0.2 0.1 0.3 0.1 0.5 0.2-0.1 0.2 0 0.2 0.1z\" fill=\"#231815\" ></path><path d=\"M642.2 767.4l-79.1 62c0 0.1-0.1 0.2-0.1 0.3v121.1c0 8.8 6.4 16.9 15.7 18.7 12.8 2.5 24.2-6.6 24.2-18.1V839.7h13.5c15 0 27.1-11.4 26.8-25.4l-1-46.9z\" fill=\"#16CEF9\" ></path><path d=\"M582.9 979.9c-2 0-4.1-0.2-6.2-0.6-13.8-2.7-23.8-14.7-23.8-28.5V829.6c0-1.5 0.4-3.1 1-4.4l0.2-0.3c0.7-1.3 1.6-2.5 2.8-3.4l79.1-62c3-2.3 7-2.8 10.4-1.2 3.4 1.6 5.6 5 5.7 8.8l1.1 47c0.2 9.1-3.3 17.8-9.8 24.4-6.9 7.1-16.8 11.2-27 11.2h-3.5v101.6c0 8.3-3.8 16.1-10.4 21.5-5.5 4.6-12.4 7.1-19.6 7.1zM573 834.3v116.4c0 4.3 3.2 8 7.6 8.9 3.4 0.7 6.8-0.1 9.2-2.2 1.2-1 3.1-3 3.1-6.1V839.7c0-5.5 4.5-10 10-10h13.5c4.9 0 9.5-1.9 12.7-5.2 2.7-2.8 4.2-6.3 4.1-10l-0.6-27-59.6 46.8z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-10\" viewBox=\"0 0 1024 1024\"><path d=\"M511.4 449.2m-423.4 0a423.4 423.4 0 1 0 846.8 0 423.4 423.4 0 1 0-846.8 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M511.4 882.6c-58.5 0-115.3-11.5-168.7-34.1-51.6-21.8-98-53.1-137.8-92.9-39.8-39.8-71-86.1-92.9-137.8-22.6-53.4-34.1-110.2-34.1-168.7S89.4 333.9 112 280.5c21.8-51.6 53.1-98 92.9-137.8s86.1-71 137.8-92.9c53.4-22.6 110.2-34.1 168.7-34.1 58.5 0 115.3 11.5 168.7 34.1 51.6 21.8 98 53.1 137.8 92.9 39.8 39.8 71 86.1 92.9 137.8 22.6 53.4 34.1 110.2 34.1 168.7s-11.5 115.3-34.1 168.7c-21.8 51.6-53.1 98-92.9 137.8-39.8 39.8-86.1 71-137.8 92.9-53.5 22.5-110.2 34-168.7 34z m0-846.8c-55.8 0-110 10.9-160.9 32.5-49.3 20.8-93.5 50.6-131.5 88.6-38 38-67.8 82.2-88.6 131.4-21.6 51-32.5 105.1-32.5 160.9s10.9 110 32.5 160.9c20.8 49.2 50.6 93.4 88.6 131.4 38 38 82.2 67.8 131.4 88.6 51 21.6 105.1 32.5 160.9 32.5s110-10.9 160.9-32.5c49.2-20.8 93.4-50.6 131.4-88.6 38-38 67.8-82.2 88.6-131.4 21.6-51 32.5-105.1 32.5-160.9s-10.9-110-32.5-160.9c-20.8-49.2-50.6-93.4-88.6-131.4-38-38-82.2-67.8-131.4-88.6-50.9-21.6-105-32.5-160.8-32.5z\" fill=\"#231815\" ></path><path d=\"M511.4 415.2m-389.5 0a389.5 389.5 0 1 0 779 0 389.5 389.5 0 1 0-779 0Z\" fill=\"#FFE20D\" ></path><path d=\"M511.4 882.6c-58.5 0-115.3-11.5-168.7-34.1-51.6-21.8-98-53.1-137.8-92.9-39.8-39.8-71-86.1-92.9-137.8-22.6-53.4-34.1-110.2-34.1-168.7S89.4 333.9 112 280.5c21.8-51.6 53.1-98 92.9-137.8s86.1-71 137.8-92.9c53.4-22.6 110.2-34.1 168.7-34.1 58.5 0 115.3 11.5 168.7 34.1 51.6 21.8 98 53.1 137.8 92.9 39.8 39.8 71 86.1 92.9 137.8 22.6 53.4 34.1 110.2 34.1 168.7s-11.5 115.3-34.1 168.7c-21.8 51.6-53.1 98-92.9 137.8-39.8 39.8-86.1 71-137.8 92.9-53.5 22.5-110.2 34-168.7 34z m0-846.8c-55.8 0-110 10.9-160.9 32.5-49.3 20.8-93.5 50.6-131.5 88.6-38 38-67.8 82.2-88.6 131.4-21.6 51-32.5 105.1-32.5 160.9s10.9 110 32.5 160.9c20.8 49.2 50.6 93.4 88.6 131.4 38 38 82.2 67.8 131.4 88.6 51 21.6 105.1 32.5 160.9 32.5s110-10.9 160.9-32.5c49.2-20.8 93.4-50.6 131.4-88.6 38-38 67.8-82.2 88.6-131.4 21.6-51 32.5-105.1 32.5-160.9s-10.9-110-32.5-160.9c-20.8-49.2-50.6-93.4-88.6-131.4-38-38-82.2-67.8-131.4-88.6-50.9-21.6-105-32.5-160.8-32.5z\" fill=\"#231815\" ></path><path d=\"M376.9 127.6a134.5 43.5 0 1 0 269 0 134.5 43.5 0 1 0-269 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M511.4 618c-68.5 0-132.6-8.1-187.7-22.3-19.9-5.1-38.7 11.8-34.4 31.2 21.8 99 113 173.2 222.2 173.2s200.3-74.2 222-173.1c4.3-19.4-14.6-36.3-34.4-31.2-55.2 14.1-119.3 22.2-187.7 22.2z\" fill=\"#FFA6D7\" ></path><path d=\"M511.4 810.2c-54.6 0-107.9-18.3-150.1-51.6-41.7-32.9-70.7-78.9-81.9-129.4-2.7-12.2 1.2-24.7 10.3-33.5 9.7-9.3 23.3-12.9 36.4-9.6 56 14.4 120.1 22 185.3 22 65.2 0 129.3-7.6 185.3-22 13.1-3.4 26.7 0.2 36.4 9.6 9.1 8.8 13 21.3 10.3 33.5-11.1 50.5-40.2 96.5-81.9 129.4-42.2 33.2-95.5 51.6-150.1 51.6z m-195-205.4c-4.7 0-9.3 1.8-12.8 5.2-4.2 4-5.9 9.4-4.7 14.8 10.1 46 36.7 88 74.7 118 38.7 30.5 87.6 47.3 137.7 47.3 50.1 0 99-16.8 137.7-47.3 38.1-30 64.6-72 74.7-118 1.2-5.4-0.5-10.8-4.7-14.8-4.6-4.5-11.2-6.2-17.5-4.6C644 620.2 578.2 628 511.4 628c-66.9 0-132.6-7.8-190.2-22.6-1.7-0.4-3.2-0.6-4.8-0.6z\" fill=\"#231815\" ></path><path d=\"M657.5 748.8c-39.5-32-90.4-51.3-146.1-51.3s-106.6 19.3-146.1 51.3c39.5 32 90.4 51.3 146.1 51.3s106.6-19.3 146.1-51.3z\" fill=\"#FF66C1\" ></path><path d=\"M511.4 810.2c-55.7 0-109.8-19-152.4-53.6-2.3-1.9-3.7-4.8-3.7-7.8s1.4-5.9 3.7-7.8c42.6-34.5 96.7-53.6 152.4-53.6s109.8 19 152.4 53.6c2.3 1.9 3.7 4.8 3.7 7.8s-1.4 5.9-3.7 7.8c-42.6 34.5-96.8 53.6-152.4 53.6z m-129.7-61.4c37.3 26.7 82.9 41.3 129.6 41.3s92.3-14.6 129.6-41.3c-37.3-26.7-82.9-41.3-129.6-41.3-46.7 0-92.2 14.6-129.6 41.3z\" fill=\"#231815\" ></path><path d=\"M229.3 554.2a50.1 31 0 1 0 100.2 0 50.1 31 0 1 0-100.2 0Z\" fill=\"#FFA178\" ></path><path d=\"M693.3 554.2a50.1 31 0 1 0 100.2 0 50.1 31 0 1 0-100.2 0Z\" fill=\"#FFA178\" ></path><path d=\"M180.8 966.9a330.6 33.8 0 1 0 661.2 0 330.6 33.8 0 1 0-661.2 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M665.2 742.3l-108.8 54.8c0 0.1-0.1 0.2-0.2 0.3v146.4c0 10.7 7.7 20.4 19 22.6 15.5 3 29.3-8 29.3-21.9V809.6l60.7-67.3z\" fill=\"#16CEF9\" ></path><path d=\"M580.4 976.9c-2.3 0-4.7-0.2-7-0.7-15.7-3-27.1-16.7-27.1-32.4V797.4c0-1.6 0.4-3.1 1.1-4.5l0.2-0.3c1-1.9 2.5-3.5 4.4-4.5l108.8-54.8c4.3-2.2 9.5-1 12.4 2.9 2.9 3.8 2.7 9.2-0.5 12.8l-58.1 64.4v131.1c0 9.4-4.3 18.3-11.8 24.4-6.3 5.2-14.2 8-22.4 8z m-14.2-173.6v140.5c0 6.2 4.6 11.6 10.9 12.8 4.7 0.9 9.4-0.2 12.9-3.1 2.9-2.4 4.5-5.6 4.5-9V809.6c0-2.5 0.9-4.9 2.6-6.7l25-27.7-55.9 28.1z\" fill=\"#231815\" ></path><path d=\"M371.1 54.4c-33.9 9.8-60 33.2-74.4 62.6-27.9-17.1-62.5-22.9-96.3-13.1-63.9 18.5-100.7 85.3-82.2 149.1 18.5 63.9 237.1 184 268.5 174.9 31.4-9.1 152.1-227.4 133.6-291.3-18.6-63.9-85.4-100.7-149.2-82.2z\" fill=\"#F97B67\" ></path><path d=\"M382.8 438.4c-7.6 0-22.4-2.6-52.8-15.9-26.2-11.4-57.4-27.8-87.7-46.2C206.2 354.5 121 299 108.4 255.8c-20-69.1 20-141.5 89-161.5 31.7-9.2 65.8-5.8 95.2 9.1 16.9-28.4 44-49.4 75.7-58.6 33.5-9.7 68.7-5.8 99.2 11.1 30.5 16.8 52.6 44.5 62.3 78 12.5 43.3-29.9 135.7-48.8 173.4-15.8 31.7-33.4 62.2-49.5 85.9-27.2 40-38.5 43.3-42.2 44.3-1.1 0.3-3.1 0.9-6.5 0.9zM233.4 109.1c-10.2 0-20.4 1.4-30.4 4.3-58.5 16.9-92.3 78.3-75.4 136.8 7.2 24.8 54.9 66.5 124.4 108.7 29.4 17.9 59.7 33.9 85.2 45 37.4 16.4 46.5 14.4 46.6 14.4 0.1 0 8.8-3.2 31.7-37 15.6-23 32.6-52.7 48-83.5 36.3-72.8 54.3-133.5 47.1-158.3-8.2-28.3-26.9-51.8-52.8-66-25.8-14.2-55.7-17.6-84-9.4l-2.8-9.6 2.8 9.6c-29.6 8.6-54.5 29.5-68.3 57.4l-4.8 9.8-9.4-5.7c-17.5-10.9-37.7-16.5-57.9-16.5z\" fill=\"#231815\" ></path><path d=\"M407.3 179.7c-33.9 9.8-60 33.2-74.4 62.6-27.9-17.1-62.5-22.9-96.3-13.1-38.2 11-66.5 39.4-79.3 73.9 69.1 61.7 205.1 131.9 229.4 124.8 24.3-7 101.8-139 127.3-228.1-29.4-22.3-68.5-31.1-106.7-20.1z\" fill=\"#FC4427\" ></path><path d=\"M382.8 438.4c-7.6 0-22.4-2.6-52.8-15.9-26.2-11.4-57.4-27.8-87.7-46.2C206.2 354.5 121 299 108.4 255.8c-20-69.1 20-141.5 89-161.5 31.7-9.2 65.8-5.8 95.2 9.1 16.9-28.4 44-49.4 75.7-58.6 33.5-9.7 68.7-5.8 99.2 11.1 30.5 16.8 52.6 44.5 62.3 78 12.5 43.3-29.9 135.7-48.8 173.4-15.8 31.7-33.4 62.2-49.5 85.9-27.2 40-38.5 43.3-42.2 44.3-1.1 0.3-3.1 0.9-6.5 0.9zM233.4 109.1c-10.2 0-20.4 1.4-30.4 4.3-58.5 16.9-92.3 78.3-75.4 136.8 7.2 24.8 54.9 66.5 124.4 108.7 29.4 17.9 59.7 33.9 85.2 45 37.4 16.4 46.5 14.4 46.6 14.4 0.1 0 8.8-3.2 31.7-37 15.6-23 32.6-52.7 48-83.5 36.3-72.8 54.3-133.5 47.1-158.3-8.2-28.3-26.9-51.8-52.8-66-25.8-14.2-55.7-17.6-84-9.4l-2.8-9.6 2.8 9.6c-29.6 8.6-54.5 29.5-68.3 57.4l-4.8 9.8-9.4-5.7c-17.5-10.9-37.7-16.5-57.9-16.5z\" fill=\"#231815\" ></path><path d=\"M751.7 257.3c-16.6-9.2-35.5-10.2-52.1-4.5-4.1-17.1-15-32.5-31.7-41.7-31.3-17.3-70.7-5.9-88 25.5-17.3 31.3 20.2 160.2 35.6 168.7 15.4 8.5 144.4-28.6 161.7-60 17.2-31.4 5.8-70.8-25.5-88z\" fill=\"#F97B67\" ></path><path d=\"M623.2 416.5c-6.8 0-10.3-1.2-12.6-2.5-4.1-2.3-10-7.8-19-30.6-5.7-14.5-11.4-32.8-16-51.5-6.9-28-16.6-78.3-4.6-100.1 9.6-17.5 25.5-30.2 44.7-35.7 19.2-5.6 39.4-3.3 56.9 6.3 15.3 8.5 27.2 22.1 33.5 38.3 17.1-3.3 35-0.6 50.3 7.9 17.5 9.6 30.2 25.5 35.7 44.7s3.3 39.4-6.3 56.9c-12 21.8-59.7 40.4-87.1 49.6-18.3 6.1-36.8 11.1-52.1 14-10.5 1.9-18 2.7-23.4 2.7z m-2.8-20.1c6.8 1.1 35.8-3.3 74.8-16.6 46.8-16 68.7-31.2 73.2-39.3 7.1-12.8 8.7-27.6 4.6-41.7-4.1-14.1-13.4-25.7-26.2-32.8-13.4-7.4-29.5-8.8-44.1-3.8l-10.4 3.5-2.6-10.7c-3.6-15-13.4-27.8-26.8-35.2-12.8-7.1-27.6-8.7-41.7-4.6-14.1 4.1-25.7 13.4-32.8 26.2-4.5 8.2-5.7 34.8 5.8 82.9 9.9 40 21.7 66.9 26.2 72.1z\" fill=\"#231815\" ></path><path d=\"M717.8 318.7c-16.6-9.2-35.5-10.2-52.1-4.5-4.1-17.1-15-32.5-31.7-41.7-18.7-10.3-40.3-10.3-58.3-2.1 2.8 49.8 27.9 128.2 39.8 134.8 11.9 6.6 91.6-14.1 135.2-38.3-2.6-19.7-14.2-37.9-32.9-48.2z\" fill=\"#FC4427\" ></path><path d=\"M623.2 416.5c-6.8 0-10.3-1.2-12.6-2.5-4.1-2.3-10-7.8-19-30.6-5.7-14.5-11.4-32.8-16-51.5-6.9-28-16.6-78.3-4.6-100.1 9.6-17.5 25.5-30.2 44.7-35.7 19.2-5.6 39.4-3.3 56.9 6.3 15.3 8.5 27.2 22.1 33.5 38.3 17.1-3.3 35-0.6 50.3 7.9 17.5 9.6 30.2 25.5 35.7 44.7s3.3 39.4-6.3 56.9c-12 21.8-59.7 40.4-87.1 49.6-18.3 6.1-36.8 11.1-52.1 14-10.5 1.9-18 2.7-23.4 2.7z m-2.8-20.1c6.8 1.1 35.8-3.3 74.8-16.6 46.8-16 68.7-31.2 73.2-39.3 7.1-12.8 8.7-27.6 4.6-41.7-4.1-14.1-13.4-25.7-26.2-32.8-13.4-7.4-29.5-8.8-44.1-3.8l-10.4 3.5-2.6-10.7c-3.6-15-13.4-27.8-26.8-35.2-12.8-7.1-27.6-8.7-41.7-4.6-14.1 4.1-25.7 13.4-32.8 26.2-4.5 8.2-5.7 34.8 5.8 82.9 9.9 40 21.7 66.9 26.2 72.1z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-11\" viewBox=\"0 0 1024 1024\"><path d=\"M512.1 448.8m-426 0a426 426 0 1 0 852 0 426 426 0 1 0-852 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M512.1 884.8c-58.9 0-116-11.5-169.7-34.3-51.9-22-98.5-53.4-138.6-93.4-40-40-71.5-86.7-93.4-138.6-22.7-53.8-34.3-110.9-34.3-169.7s11.5-116 34.3-169.7c22-51.9 53.4-98.5 93.4-138.6S290.5 69 342.4 47c53.8-22.7 110.9-34.3 169.7-34.3s116 11.5 169.7 34.3c51.9 22 98.5 53.4 138.6 93.4 40 40 71.5 86.7 93.4 138.6 22.7 53.8 34.3 110.9 34.3 169.7s-11.5 116-34.3 169.7c-22 51.9-53.4 98.5-93.4 138.6-40 40-86.7 71.5-138.6 93.4-53.7 22.8-110.8 34.4-169.7 34.4z m0-852c-56.2 0-110.6 11-161.9 32.7-49.5 21-94 50.9-132.2 89.2-38.2 38.2-68.2 82.7-89.2 132.2-21.7 51.3-32.7 105.8-32.7 161.9s11 110.6 32.7 161.9c21 49.5 50.9 94 89.2 132.2 38.2 38.2 82.7 68.2 132.2 89.2 51.3 21.7 105.8 32.7 161.9 32.7 56.2 0 110.6-11 161.9-32.7 49.5-21 94-50.9 132.2-89.2 38.2-38.2 68.2-82.7 89.2-132.2 21.7-51.3 32.7-105.8 32.7-161.9s-11-110.6-32.7-161.9c-21-49.5-50.9-94-89.2-132.2C768 116.4 723.6 86.4 674 65.5c-51.3-21.7-105.7-32.7-161.9-32.7z\" fill=\"#231815\" ></path><path d=\"M512.1 414.6m-391.8 0a391.8 391.8 0 1 0 783.6 0 391.8 391.8 0 1 0-783.6 0Z\" fill=\"#FFE20D\" ></path><path d=\"M512.1 884.8c-58.9 0-116-11.5-169.7-34.3-51.9-22-98.5-53.4-138.6-93.4-40-40-71.5-86.7-93.4-138.6-22.7-53.8-34.3-110.9-34.3-169.7s11.5-116 34.3-169.7c22-51.9 53.4-98.5 93.4-138.6S290.5 69 342.4 47c53.8-22.7 110.9-34.3 169.7-34.3s116 11.5 169.7 34.3c51.9 22 98.5 53.4 138.6 93.4 40 40 71.5 86.7 93.4 138.6 22.7 53.8 34.3 110.9 34.3 169.7s-11.5 116-34.3 169.7c-22 51.9-53.4 98.5-93.4 138.6-40 40-86.7 71.5-138.6 93.4-53.7 22.8-110.8 34.4-169.7 34.4z m0-852c-56.2 0-110.6 11-161.9 32.7-49.5 21-94 50.9-132.2 89.2-38.2 38.2-68.2 82.7-89.2 132.2-21.7 51.3-32.7 105.8-32.7 161.9s11 110.6 32.7 161.9c21 49.5 50.9 94 89.2 132.2 38.2 38.2 82.7 68.2 132.2 89.2 51.3 21.7 105.8 32.7 161.9 32.7 56.2 0 110.6-11 161.9-32.7 49.5-21 94-50.9 132.2-89.2 38.2-38.2 68.2-82.7 89.2-132.2 21.7-51.3 32.7-105.8 32.7-161.9s-11-110.6-32.7-161.9c-21-49.5-50.9-94-89.2-132.2C768 116.4 723.6 86.4 674 65.5c-51.3-21.7-105.7-32.7-161.9-32.7z\" fill=\"#231815\" ></path><path d=\"M376.8 125.3a135.3 43.8 0 1 0 270.6 0 135.3 43.8 0 1 0-270.6 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M499.5 739.9c-21.3 0-43-3.3-64.6-9.9-5.3-1.6-8.3-7.2-6.6-12.5 1.6-5.3 7.2-8.3 12.5-6.6 39.4 12.1 79.5 12 115.9-0.2 36.4-12.2 68.4-36.3 92.5-69.7 3.2-4.5 9.5-5.5 14-2.2 4.5 3.2 5.5 9.5 2.2 14-26.6 36.8-62 63.4-102.4 77-20.3 6.7-41.7 10.1-63.5 10.1z\" fill=\"#231815\" ></path><path d=\"M228.3 554.5a50.4 31.2 0 1 0 100.8 0 50.4 31.2 0 1 0-100.8 0Z\" fill=\"#FFA178\" ></path><path d=\"M695.1 554.5a50.4 31.2 0 1 0 100.8 0 50.4 31.2 0 1 0-100.8 0Z\" fill=\"#FFA178\" ></path><path d=\"M179.5 969.6a332.6 34 0 1 0 665.2 0 332.6 34 0 1 0-665.2 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M147.1 397.3c-1.8 0-3.6-0.5-5.3-1.5-4.7-2.9-6.1-9.1-3.2-13.8 24.1-38.5 57.6-67.5 96.9-83.8 39.3-16.3 83.5-19.4 127.8-9.2 5.4 1.2 8.7 6.6 7.5 12-1.2 5.4-6.6 8.7-12 7.5-40.2-9.3-80.2-6.5-115.6 8.2-35.5 14.7-65.7 40.9-87.6 75.9-1.9 3.1-5.2 4.7-8.5 4.7zM840.5 397.3c-3.3 0-6.6-1.7-8.5-4.7-21.8-35-52.1-61.2-87.6-75.9-35.5-14.7-75.4-17.5-115.6-8.2-5.4 1.2-10.8-2.1-12-7.5-1.2-5.4 2.1-10.8 7.5-12 44.3-10.3 88.5-7.1 127.8 9.2 39.3 16.3 72.8 45.2 96.9 83.8 2.9 4.7 1.5 10.9-3.2 13.8-1.7 1-3.5 1.5-5.3 1.5zM310.1 399.1c-1.2-0.3-2.3-0.5-3.6-0.5h-93.6c-7.8 0-14.1 6.4-14.1 14.1s6.4 14.1 14.1 14.1l66.5 11.9c4.5 9.6 14.2 16.4 25.6 16.4 15.6 0 28.3-12.7 28.3-28.3 0-13.8-10-25.3-23.2-27.7zM746.3 399.1c-1.2-0.3-2.3-0.5-3.6-0.5h-93.6c-7.8 0-14.1 6.4-14.1 14.1s6.4 14.1 14.1 14.1l66.5 11.9c4.5 9.6 14.2 16.4 25.6 16.4 15.6 0 28.3-12.7 28.3-28.3 0-13.8-10-25.3-23.2-27.7z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-12\" viewBox=\"0 0 1024 1024\"><path d=\"M513 447.9m-422.1 0a422.1 422.1 0 1 0 844.2 0 422.1 422.1 0 1 0-844.2 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M513 880.1c-58.3 0-114.9-11.4-168.2-34-51.5-21.8-97.7-52.9-137.4-92.6-39.7-39.7-70.8-85.9-92.6-137.4-22.5-53.3-34-109.9-34-168.2s11.4-114.9 34-168.2c21.8-51.5 52.9-97.7 92.6-137.4 39.7-39.7 85.9-70.8 137.4-92.6 53.3-22.5 109.9-34 168.2-34 58.3 0 114.9 11.4 168.2 34 51.5 21.8 97.7 52.9 137.4 92.6 39.7 39.7 70.8 85.9 92.6 137.4 22.5 53.3 34 109.9 34 168.2s-11.4 114.9-34 168.2c-21.8 51.5-52.9 97.7-92.6 137.4-39.7 39.7-85.9 70.8-137.4 92.6-53.3 22.5-109.9 34-168.2 34z m0-844.3c-55.6 0-109.6 10.9-160.4 32.4-49.1 20.8-93.2 50.5-131 88.3-37.9 37.9-67.6 81.9-88.3 131-21.5 50.8-32.4 104.8-32.4 160.4s10.9 109.6 32.4 160.4c20.8 49.1 50.5 93.2 88.3 131 37.9 37.9 81.9 67.6 131 88.3C403.4 849.1 457.4 860 513 860c55.6 0 109.6-10.9 160.4-32.4 49.1-20.8 93.2-50.5 131-88.3s67.6-81.9 88.3-131c21.5-50.8 32.4-104.8 32.4-160.4s-10.9-109.6-32.4-160.4c-20.8-49.1-50.5-93.2-88.3-131s-81.9-67.6-131-88.3C622.6 46.7 568.6 35.8 513 35.8z\" fill=\"#231815\" ></path><path d=\"M513 414.1m-388.3 0a388.3 388.3 0 1 0 776.6 0 388.3 388.3 0 1 0-776.6 0Z\" fill=\"#FFE20D\" ></path><path d=\"M513 880.1c-58.3 0-114.9-11.4-168.2-34-51.5-21.8-97.7-52.9-137.4-92.6-39.7-39.7-70.8-85.9-92.6-137.4-22.5-53.3-34-109.9-34-168.2s11.4-114.9 34-168.2c21.8-51.5 52.9-97.7 92.6-137.4 39.7-39.7 85.9-70.8 137.4-92.6 53.3-22.5 109.9-34 168.2-34 58.3 0 114.9 11.4 168.2 34 51.5 21.8 97.7 52.9 137.4 92.6 39.7 39.7 70.8 85.9 92.6 137.4 22.5 53.3 34 109.9 34 168.2s-11.4 114.9-34 168.2c-21.8 51.5-52.9 97.7-92.6 137.4-39.7 39.7-85.9 70.8-137.4 92.6-53.3 22.5-109.9 34-168.2 34z m0-844.3c-55.6 0-109.6 10.9-160.4 32.4-49.1 20.8-93.2 50.5-131 88.3-37.9 37.9-67.6 81.9-88.3 131-21.5 50.8-32.4 104.8-32.4 160.4s10.9 109.6 32.4 160.4c20.8 49.1 50.5 93.2 88.3 131 37.9 37.9 81.9 67.6 131 88.3C403.4 849.1 457.4 860 513 860c55.6 0 109.6-10.9 160.4-32.4 49.1-20.8 93.2-50.5 131-88.3s67.6-81.9 88.3-131c21.5-50.8 32.4-104.8 32.4-160.4s-10.9-109.6-32.4-160.4c-20.8-49.1-50.5-93.2-88.3-131s-81.9-67.6-131-88.3C622.6 46.7 568.6 35.8 513 35.8z\" fill=\"#231815\" ></path><path d=\"M378.9 127.3a134.1 43.4 0 1 0 268.2 0 134.1 43.4 0 1 0-268.2 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M231.7 552.7a50 30.9 0 1 0 100 0 50 30.9 0 1 0-100 0Z\" fill=\"#FFA178\" ></path><path d=\"M694.3 552.7a50 30.9 0 1 0 100 0 50 30.9 0 1 0-100 0Z\" fill=\"#FFA178\" ></path><path d=\"M183.4 964.1a329.6 33.7 0 1 0 659.2 0 329.6 33.7 0 1 0-659.2 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M265.8 349.7c-1.4 0-2.9 0-4.3-0.1-5.5-0.1-9.9-4.7-9.8-10.2 0.1-5.5 4.7-9.9 10.2-9.8 23 0.6 47-4 69.4-13.3 22.4-9.3 42.6-23 58.5-39.6 3.8-4 10.1-4.1 14.1-0.3s4.1 10.1 0.3 14.1c-17.8 18.7-40.4 34-65.3 44.3-23.4 9.8-48.6 14.9-73.1 14.9zM748.6 330.6c-24.4 0-49.7-5.1-73.2-14.9-24.9-10.3-47.5-25.6-65.3-44.3-3.8-4-3.7-10.3 0.3-14.1 4-3.8 10.3-3.7 14.1 0.3 15.9 16.7 36.1 30.3 58.5 39.6s46.4 13.9 69.4 13.3c5.5-0.1 10.1 4.2 10.2 9.8 0.1 5.5-4.2 10.1-9.8 10.2-1.4 0.1-2.8 0.1-4.2 0.1zM312.9 398.7c-1.1-0.3-2.3-0.5-3.6-0.5h-92.8c-7.7 0-14 6.3-14 14s6.3 14 14 14l65.9 11.8c4.5 9.5 14.1 16.2 25.3 16.2 15.5 0 28-12.6 28-28 0.1-13.7-9.8-25.1-22.8-27.5zM745.1 398.7c-1.1-0.3-2.3-0.5-3.6-0.5h-92.8c-7.7 0-14 6.3-14 14s6.3 14 14 14l65.9 11.8c4.5 9.5 14.1 16.2 25.3 16.2 15.5 0 28-12.6 28-28 0.2-13.7-9.7-25.1-22.8-27.5zM675.9 674.1H466c-5.5 0-10-4.5-10-10s4.5-10 10-10h209.9c5.5 0 10 4.5 10 10s-4.5 10-10 10z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-13\" viewBox=\"0 0 1024 1024\"><path d=\"M513 454.2m-425 0a425 425 0 1 0 850 0 425 425 0 1 0-850 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M513 889.2c-58.7 0-115.7-11.5-169.3-34.2-51.8-21.9-98.3-53.3-138.3-93.2s-71.3-86.5-93.2-138.3C89.5 569.9 78 512.9 78 454.2c0-58.7 11.5-115.7 34.2-169.3 21.9-51.8 53.3-98.3 93.2-138.3s86.5-71.3 138.3-93.2C397.3 30.7 454.3 19.2 513 19.2s115.7 11.5 169.3 34.2c51.8 21.9 98.3 53.3 138.3 93.2s71.3 86.5 93.2 138.3c22.7 53.6 34.2 110.6 34.2 169.3 0 58.7-11.5 115.7-34.2 169.3-21.9 51.8-53.3 98.3-93.2 138.3s-86.5 71.3-138.3 93.2c-53.6 22.7-110.6 34.2-169.3 34.2z m0-850c-56 0-110.4 11-161.5 32.6-49.4 20.9-93.8 50.8-131.9 88.9s-68 82.5-88.9 131.9C109 343.8 98 398.2 98 454.2s11 110.4 32.6 161.5c20.9 49.4 50.8 93.8 88.9 131.9 38.1 38.1 82.5 68 131.9 88.9 51.2 21.6 105.5 32.6 161.5 32.6s110.4-11 161.5-32.6c49.4-20.9 93.8-50.8 131.9-88.9 38.1-38.1 68-82.5 88.9-131.9C917 564.6 928 510.2 928 454.2s-11-110.4-32.6-161.5c-20.9-49.4-50.8-93.8-88.9-131.9-38.1-38.1-82.5-68-131.9-88.9C623.4 50.2 569 39.2 513 39.2z\" fill=\"#231815\" ></path><path d=\"M513 420.1m-390.9 0a390.9 390.9 0 1 0 781.8 0 390.9 390.9 0 1 0-781.8 0Z\" fill=\"#FFE20D\" ></path><path d=\"M513 889.2c-58.7 0-115.7-11.5-169.3-34.2-51.8-21.9-98.3-53.3-138.3-93.2s-71.3-86.5-93.2-138.3C89.5 569.9 78 512.9 78 454.2c0-58.7 11.5-115.7 34.2-169.3 21.9-51.8 53.3-98.3 93.2-138.3s86.5-71.3 138.3-93.2C397.3 30.7 454.3 19.2 513 19.2s115.7 11.5 169.3 34.2c51.8 21.9 98.3 53.3 138.3 93.2s71.3 86.5 93.2 138.3c22.7 53.6 34.2 110.6 34.2 169.3 0 58.7-11.5 115.7-34.2 169.3-21.9 51.8-53.3 98.3-93.2 138.3s-86.5 71.3-138.3 93.2c-53.6 22.7-110.6 34.2-169.3 34.2z m0-850c-56 0-110.4 11-161.5 32.6-49.4 20.9-93.8 50.8-131.9 88.9s-68 82.5-88.9 131.9C109 343.8 98 398.2 98 454.2s11 110.4 32.6 161.5c20.9 49.4 50.8 93.8 88.9 131.9 38.1 38.1 82.5 68 131.9 88.9 51.2 21.6 105.5 32.6 161.5 32.6s110.4-11 161.5-32.6c49.4-20.9 93.8-50.8 131.9-88.9 38.1-38.1 68-82.5 88.9-131.9C917 564.6 928 510.2 928 454.2s-11-110.4-32.6-161.5c-20.9-49.4-50.8-93.8-88.9-131.9-38.1-38.1-82.5-68-131.9-88.9C623.4 50.2 569 39.2 513 39.2z\" fill=\"#231815\" ></path><path d=\"M378 131.5a135 43.7 0 1 0 270 0 135 43.7 0 1 0-270 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M313.3 432.9m-35.1 0a35.1 35.1 0 1 0 70.2 0 35.1 35.1 0 1 0-70.2 0Z\" fill=\"#231815\" ></path><path d=\"M712.7 432.9m-35.1 0a35.1 35.1 0 1 0 70.2 0 35.1 35.1 0 1 0-70.2 0Z\" fill=\"#231815\" ></path><path d=\"M616.3 688.7c-1.5 0-3-0.3-4.4-1-30.8-15.1-64.1-22.8-98.9-22.8-34.8 0-68.1 7.7-98.9 22.8-5 2.4-10.9 0.4-13.4-4.6-2.4-5-0.4-11 4.6-13.4 33.6-16.5 69.8-24.8 107.7-24.8 37.9 0 74.2 8.4 107.7 24.8 5 2.4 7 8.4 4.6 13.4-1.7 3.5-5.3 5.6-9 5.6z\" fill=\"#231815\" ></path><path d=\"M229.8 559.7a50.3 31.2 0 1 0 100.6 0 50.3 31.2 0 1 0-100.6 0Z\" fill=\"#FFA178\" ></path><path d=\"M695.6 559.7a50.3 31.2 0 1 0 100.6 0 50.3 31.2 0 1 0-100.6 0Z\" fill=\"#FFA178\" ></path><path d=\"M181.2 973.9a331.8 34 0 1 0 663.6 0 331.8 34 0 1 0-663.6 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M268.7 372.7c-4.5 0-8.5-3-9.7-7.5-1.4-5.4 1.9-10.8 7.2-12.2 17.7-4.5 36.3-12.2 53.9-22.2s33.8-22.1 46.7-34.9c3.9-3.9 10.2-3.9 14.1 0 3.9 3.9 3.9 10.2 0 14.1-14.2 14.1-31.7 27.3-50.9 38.2-19.1 10.9-39.5 19.2-58.9 24.2-0.8 0.2-1.6 0.3-2.4 0.3zM757.3 372.7c-0.8 0-1.7-0.1-2.5-0.3-19.4-4.9-39.7-13.3-58.9-24.2-19.1-10.9-36.7-24.1-50.9-38.2-3.9-3.9-3.9-10.2 0-14.1 3.9-3.9 10.2-3.9 14.1 0 12.9 12.9 29 24.9 46.7 34.9 17.6 10 36.3 17.7 53.9 22.2 5.4 1.4 8.6 6.8 7.2 12.2-1.1 4.5-5.1 7.5-9.6 7.5z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-14\" viewBox=\"0 0 1024 1024\"><path d=\"M513 449.7m-430.2 0a430.2 430.2 0 1 0 860.4 0 430.2 430.2 0 1 0-860.4 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M513 889.9c-59.4 0-117.1-11.6-171.3-34.6-52.4-22.2-99.5-53.9-139.9-94.3-40.4-40.4-72.2-87.5-94.3-139.9-23-54.3-34.6-111.9-34.6-171.3s11.6-117.1 34.6-171.3c22.2-52.4 53.9-99.5 94.3-139.9 40.4-40.4 87.5-72.2 139.9-94.3C395.9 21.1 453.6 9.5 513 9.5s117.1 11.6 171.3 34.6c52.4 22.2 99.5 53.9 139.9 94.3 40.4 40.4 72.2 87.5 94.3 139.9 23 54.3 34.6 111.9 34.6 171.3S941.6 566.7 918.6 621c-22.2 52.4-53.9 99.5-94.3 139.9s-87.5 72.2-139.9 94.3c-54.3 23-112 34.7-171.4 34.7z m0-860.4c-56.7 0-111.8 11.1-163.6 33-50 21.2-95 51.5-133.6 90.1s-68.9 83.5-90.1 133.6c-21.9 51.8-33 106.8-33 163.6s11.1 111.8 33 163.6c21.2 50 51.5 95 90.1 133.6 38.6 38.6 83.5 68.9 133.6 90.1 51.8 21.9 106.8 33 163.6 33s111.8-11.1 163.6-33c50-21.2 95-51.5 133.6-90.1 38.6-38.6 68.9-83.5 90.1-133.6 21.9-51.8 33-106.8 33-163.6s-11.1-111.8-33-163.6c-21.2-50-51.5-95-90.1-133.6s-83.5-68.9-133.6-90.1c-51.8-21.9-106.9-33-163.6-33z\" fill=\"#231815\" ></path><path d=\"M513 415.2m-395.7 0a395.7 395.7 0 1 0 791.4 0 395.7 395.7 0 1 0-791.4 0Z\" fill=\"#FFE20D\" ></path><path d=\"M513 889.9c-59.4 0-117.1-11.6-171.3-34.6-52.4-22.2-99.5-53.9-139.9-94.3-40.4-40.4-72.2-87.5-94.3-139.9-23-54.3-34.6-111.9-34.6-171.3s11.6-117.1 34.6-171.3c22.2-52.4 53.9-99.5 94.3-139.9 40.4-40.4 87.5-72.2 139.9-94.3C395.9 21.1 453.6 9.5 513 9.5s117.1 11.6 171.3 34.6c52.4 22.2 99.5 53.9 139.9 94.3 40.4 40.4 72.2 87.5 94.3 139.9 23 54.3 34.6 111.9 34.6 171.3S941.6 566.7 918.6 621c-22.2 52.4-53.9 99.5-94.3 139.9s-87.5 72.2-139.9 94.3c-54.3 23-112 34.7-171.4 34.7z m0-860.4c-56.7 0-111.8 11.1-163.6 33-50 21.2-95 51.5-133.6 90.1s-68.9 83.5-90.1 133.6c-21.9 51.8-33 106.8-33 163.6s11.1 111.8 33 163.6c21.2 50 51.5 95 90.1 133.6 38.6 38.6 83.5 68.9 133.6 90.1 51.8 21.9 106.8 33 163.6 33s111.8-11.1 163.6-33c50-21.2 95-51.5 133.6-90.1 38.6-38.6 68.9-83.5 90.1-133.6 21.9-51.8 33-106.8 33-163.6s-11.1-111.8-33-163.6c-21.2-50-51.5-95-90.1-133.6s-83.5-68.9-133.6-90.1c-51.8-21.9-106.9-33-163.6-33z\" fill=\"#231815\" ></path><path d=\"M376.3 123a136.7 44.2 0 1 0 273.4 0 136.7 44.2 0 1 0-273.4 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M513 621.2c-69.6 0-134.7-8.3-190.8-22.6-20.2-5.2-39.3 12-35 31.7 22.1 100.5 114.8 176 225.7 176s203.6-75.4 225.7-176c4.3-19.7-14.8-36.9-35-31.7-55.9 14.4-121 22.6-190.6 22.6z\" fill=\"#FFA6D7\" ></path><path d=\"M513 816.3c-55.4 0-109.6-18.6-152.4-52.4-42.3-33.4-71.8-80.1-83.1-131.4-2.7-12.3 1.2-25 10.4-33.9 9.8-9.5 23.6-13.1 36.8-9.7 56.9 14.6 122 22.3 188.3 22.3s131.4-7.7 188.3-22.3c13.3-3.4 27 0.2 36.8 9.7 9.2 8.9 13.1 21.6 10.4 33.9-11.3 51.3-40.8 98-83.1 131.4-42.8 33.8-97 52.4-152.4 52.4zM314.9 607.7c-4.9 0-9.5 1.8-13.1 5.3-4.3 4.1-6 9.7-4.8 15.2 10.3 46.8 37.3 89.4 76 120 39.3 31 89 48.1 140 48.1s100.7-17.1 140-48.1c38.7-30.6 65.7-73.2 76-120 1.2-5.5-0.5-11.1-4.8-15.2-4.8-4.6-11.5-6.3-17.9-4.7-58.5 15-125.3 23-193.2 23-67.9 0-134.7-7.9-193.2-23-1.8-0.4-3.4-0.6-5-0.6z\" fill=\"#231815\" ></path><path d=\"M661.5 754.1C621.3 721.6 569.6 702 513 702s-108.3 19.6-148.5 52.2c40.1 32.5 91.9 52.2 148.5 52.2s108.3-19.7 148.5-52.3z\" fill=\"#FF66C1\" ></path><path d=\"M513 816.3c-56.5 0-111.5-19.3-154.8-54.4-2.3-1.9-3.7-4.8-3.7-7.8s1.4-5.9 3.7-7.8c43.3-35 98.3-54.3 154.8-54.3 56.5 0 111.5 19.3 154.8 54.4 2.3 1.9 3.7 4.8 3.7 7.8s-1.4 5.9-3.7 7.8c-43.3 35-98.3 54.3-154.8 54.3z m-132-62.2c38 27.3 84.4 42.2 132 42.2 47.6 0 94-14.9 132-42.2-38-27.3-84.4-42.2-132-42.2-47.6 0.1-94 15-132 42.2z\" fill=\"#231815\" ></path><path d=\"M226.4 556.4a50.9 31.5 0 1 0 101.8 0 50.9 31.5 0 1 0-101.8 0Z\" fill=\"#FFA178\" ></path><path d=\"M697.8 556.4a50.9 31.5 0 1 0 101.8 0 50.9 31.5 0 1 0-101.8 0Z\" fill=\"#FFA178\" ></path><path d=\"M177.1 975.7a335.9 34.4 0 1 0 671.8 0 335.9 34.4 0 1 0-671.8 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M302.8 218.2l53 97.1 97.1 53.1-97.1 53.1-53 97.1-53.1-97.1-97.1-53.1 97.1-53.1z\" fill=\"#FFFFFF\" ></path><path d=\"M302.8 528.6c-3.7 0-7-2-8.8-5.2l-51.7-94.5-94.5-51.7c-3.2-1.8-5.2-5.1-5.2-8.8s2-7 5.2-8.8l94.5-51.7 51.7-94.5c1.8-3.2 5.1-5.2 8.8-5.2s7 2 8.8 5.2l51.7 94.5 94.5 51.7c3.2 1.8 5.2 5.1 5.2 8.8s-2 7-5.2 8.8l-94.5 51.7-51.7 94.5c-1.8 3.2-5.2 5.2-8.8 5.2zM173.4 368.4l81 44.3c1.7 0.9 3.1 2.3 4 4l44.3 81 44.3-81c0.9-1.7 2.3-3.1 4-4l81-44.3-81-44.3c-1.7-0.9-3.1-2.3-4-4l-44.3-81-44.3 81c-0.9 1.7-2.3 3.1-4 4l-81 44.3z\" fill=\"#231815\" ></path><path d=\"M723.2 218.2l53.1 97.1 97.1 53.1-97.1 53.1-53.1 97.1-53-97.1-97.1-53.1 97.1-53.1z\" fill=\"#FFFFFF\" ></path><path d=\"M723.2 528.6c-3.7 0-7-2-8.8-5.2l-51.7-94.5-94.5-51.7c-3.2-1.8-5.2-5.1-5.2-8.8s2-7 5.2-8.8l94.5-51.7 51.7-94.5c1.8-3.2 5.1-5.2 8.8-5.2 3.7 0 7 2 8.8 5.2l51.7 94.5 94.5 51.7c3.2 1.8 5.2 5.1 5.2 8.8s-2 7-5.2 8.8l-94.5 51.7-51.7 94.5c-1.7 3.2-5.1 5.2-8.8 5.2zM593.9 368.4l81 44.3c1.7 0.9 3.1 2.3 4 4l44.3 81 44.3-81c0.9-1.7 2.3-3.1 4-4l81-44.3-81-44.3c-1.7-0.9-3.1-2.3-4-4l-44.3-81-44.3 81c-0.9 1.7-2.3 3.1-4 4l-81 44.3z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-15\" viewBox=\"0 0 1024 1024\"><path d=\"M919.5 373.1c0 224.7-215.7 473.7-406.8 473.7s-406.8-249-406.8-473.7S288 19.8 512.7 19.8s406.8 128.6 406.8 353.3z\" fill=\"#2DAD88\" ></path><path d=\"M512.7 856.8c-48.1 0-98.2-14.7-149.1-43.7-47.2-26.9-93.4-65.8-133.5-112.3-40.1-46.6-73.5-100.1-96.7-154.9-24.9-58.9-37.5-117-37.5-172.7 0-110 42.5-202.9 122.8-268.6 37.5-30.7 82.1-54.4 132.6-70.6 50-16 104.3-24.1 161.4-24.1S624.1 18 674.1 34c50.5 16.2 95.1 39.9 132.6 70.6 80.4 65.7 122.8 158.6 122.8 268.6 0 55.7-12.6 113.8-37.5 172.7-23.2 54.8-56.6 108.4-96.7 154.9-40.1 46.6-86.3 85.4-133.5 112.3-50.8 29-101 43.7-149.1 43.7z m0-827c-110.4 0-210.3 32-281.3 90.1-75.6 61.8-115.5 149.4-115.5 253.2 0 53 12.1 108.5 35.9 164.9 22.4 52.9 54.7 104.7 93.4 149.7 38.6 44.8 83 82.2 128.3 108 47.8 27.3 94.7 41.1 139.2 41.1 44.6 0 91.4-13.8 139.2-41.1 45.3-25.8 89.6-63.2 128.3-108 38.8-45 71.1-96.8 93.4-149.7 23.8-56.4 35.9-111.9 35.9-164.9 0-103.8-39.9-191.3-115.5-253.2-71-58.1-170.9-90.1-281.3-90.1z\" fill=\"#231815\" ></path><path d=\"M919.5 335.4c0 200.7-215.7 421.1-406.8 421.1S105.9 536.1 105.9 335.4 288 19.8 512.7 19.8s406.8 114.9 406.8 315.6z\" fill=\"#17DDA9\" ></path><path d=\"M512.7 856.8c-48.1 0-98.2-14.7-149.1-43.7-47.2-26.9-93.4-65.8-133.5-112.3-40.1-46.6-73.5-100.1-96.7-154.9-24.9-58.9-37.5-117-37.5-172.7 0-110 42.5-202.9 122.8-268.6 37.5-30.7 82.1-54.4 132.6-70.6 50-16 104.3-24.1 161.4-24.1S624.1 18 674.1 34c50.5 16.2 95.1 39.9 132.6 70.6 80.4 65.7 122.8 158.6 122.8 268.6 0 55.7-12.6 113.8-37.5 172.7-23.2 54.8-56.6 108.4-96.7 154.9-40.1 46.6-86.3 85.4-133.5 112.3-50.8 29-101 43.7-149.1 43.7z m0-827c-110.4 0-210.3 32-281.3 90.1-75.6 61.8-115.5 149.4-115.5 253.2 0 53 12.1 108.5 35.9 164.9 22.4 52.9 54.7 104.7 93.4 149.7 38.6 44.8 83 82.2 128.3 108 47.8 27.3 94.7 41.1 139.2 41.1 44.6 0 91.4-13.8 139.2-41.1 45.3-25.8 89.6-63.2 128.3-108 38.8-45 71.1-96.8 93.4-149.7 23.8-56.4 35.9-111.9 35.9-164.9 0-103.8-39.9-191.3-115.5-253.2-71-58.1-170.9-90.1-281.3-90.1z\" fill=\"#231815\" ></path><path d=\"M371.4 88.7a141.3 45.7 0 1 0 282.6 0 141.3 45.7 0 1 0-282.6 0Z\" fill=\"#75F9C6\" ></path><path d=\"M512.7 644.8c-39.6 0-77.5-8.7-112.6-25.9-5-2.4-7-8.4-4.6-13.4 2.4-5 8.4-7 13.4-4.6 32.3 15.9 67.2 23.9 103.8 23.9 36.5 0 71.5-8 103.8-23.9 5-2.4 11-0.4 13.4 4.6s0.4 11-4.6 13.4c-35.1 17.2-72.9 25.9-112.6 25.9z\" fill=\"#231815\" ></path><path d=\"M165.3 970.6a347.4 35.5 0 1 0 694.8 0 347.4 35.5 0 1 0-694.8 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M427.3 393.1c-2.7 20.2-19.2 36.8-39.4 39.4-38.1 5-99.6 6.5-133.9-27.9-52.2-52.2-61.9-127-21.7-167.2s115-30.5 167.2 21.7c34.2 34.4 32.8 95.9 27.8 134z\" fill=\"#E6C0FF\" ></path><path d=\"M348.8 445.2c-10.7 0-21-0.7-30.7-2-30.5-4.1-54.5-14.7-71.3-31.5-26.8-26.8-43.9-60.1-48.3-93.9-4.5-34.7 4.9-65.8 26.6-87.4 21.7-21.7 52.7-31.1 87.4-26.6 33.8 4.4 67.1 21.5 93.9 48.3 16.8 16.8 27.4 40.8 31.5 71.3 2.9 21.2 2.6 45.1-0.8 71-3.2 24.6-23.4 44.8-48 48-14 1.9-27.5 2.8-40.3 2.8z m-52.6-222.5c-22 0-42.1 7.1-56.9 21.9-36.2 36.2-26.5 104.9 21.7 153 31.9 31.9 92.4 29.4 125.5 25 15.8-2.1 28.7-15 30.8-30.8 4.4-33.2 6.9-93.6-25-125.5-28.5-28.6-64.2-43.6-96.1-43.6z\" fill=\"#231815\" ></path><path d=\"M423.8 402.9c-3.2 18-18.6 33.3-36.6 36.6-33.9 6.1-88.4 10-117.3-18.9-43.9-43.9-49.2-109.7-12-147s103.1-31.9 147 12c28.9 28.9 24.9 83.4 18.9 117.3z\" fill=\"#C987F9\" ></path><path d=\"M348.8 445.2c-10.7 0-21-0.7-30.7-2-30.5-4.1-54.5-14.7-71.3-31.5-26.8-26.8-43.9-60.1-48.3-93.9-4.5-34.7 4.9-65.8 26.6-87.4 21.7-21.7 52.7-31.1 87.4-26.6 33.8 4.4 67.1 21.5 93.9 48.3 16.8 16.8 27.4 40.8 31.5 71.3 2.9 21.2 2.6 45.1-0.8 71-3.2 24.6-23.4 44.8-48 48-14 1.9-27.5 2.8-40.3 2.8z m-52.6-222.5c-22 0-42.1 7.1-56.9 21.9-36.2 36.2-26.5 104.9 21.7 153 31.9 31.9 92.4 29.4 125.5 25 15.8-2.1 28.7-15 30.8-30.8 4.4-33.2 6.9-93.6-25-125.5-28.5-28.6-64.2-43.6-96.1-43.6z\" fill=\"#231815\" ></path><path d=\"M598.2 393.1c2.7 20.2 19.2 36.8 39.4 39.4 38.1 5 99.6 6.5 133.9-27.9 52.2-52.2 61.9-127 21.7-167.2S678.2 207 626 259.2c-34.3 34.3-32.8 95.8-27.8 133.9z\" fill=\"#E6C0FF\" ></path><path d=\"M676.6 445.2c-12.8 0-26.3-0.9-40.3-2.8-24.6-3.2-44.8-23.4-48-48-3.4-25.9-3.7-49.8-0.8-71 4.1-30.5 14.7-54.5 31.5-71.3 26.8-26.8 60.1-43.9 93.9-48.3 34.7-4.5 65.8 4.9 87.4 26.6 21.7 21.7 31.1 52.7 26.6 87.4-4.4 33.8-21.5 67.1-48.3 93.9-16.8 16.8-40.8 27.4-71.3 31.5-9.7 1.4-19.9 2-30.7 2z m52.7-222.5c-31.9 0-67.6 15-96.2 43.6-31.9 31.9-29.4 92.4-25 125.5 2.1 15.8 15 28.7 30.8 30.8 33.2 4.4 93.6 6.9 125.5-25 48.2-48.2 57.9-116.8 21.7-153-14.7-14.8-34.9-21.9-56.8-21.9z\" fill=\"#231815\" ></path><path d=\"M601.7 402.9c3.2 18 18.6 33.3 36.6 36.6 33.9 6.1 88.4 10 117.3-18.9 43.9-43.9 49.2-109.7 12-147s-103.1-31.9-147 12c-28.9 28.9-25 83.4-18.9 117.3z\" fill=\"#C987F9\" ></path><path d=\"M676.6 445.2c-12.8 0-26.3-0.9-40.3-2.8-24.6-3.2-44.8-23.4-48-48-3.4-25.9-3.7-49.8-0.8-71 4.1-30.5 14.7-54.5 31.5-71.3 26.8-26.8 60.1-43.9 93.9-48.3 34.7-4.5 65.8 4.9 87.4 26.6 21.7 21.7 31.1 52.7 26.6 87.4-4.4 33.8-21.5 67.1-48.3 93.9-16.8 16.8-40.8 27.4-71.3 31.5-9.7 1.4-19.9 2-30.7 2z m52.7-222.5c-31.9 0-67.6 15-96.2 43.6-31.9 31.9-29.4 92.4-25 125.5 2.1 15.8 15 28.7 30.8 30.8 33.2 4.4 93.6 6.9 125.5-25 48.2-48.2 57.9-116.8 21.7-153-14.7-14.8-34.9-21.9-56.8-21.9z\" fill=\"#231815\" ></path><path d=\"M216.2 523a52.7 32.6 0 1 0 105.4 0 52.7 32.6 0 1 0-105.4 0Z\" fill=\"#2DAD88\" ></path><path d=\"M703.8 523a52.7 32.6 0 1 0 105.4 0 52.7 32.6 0 1 0-105.4 0Z\" fill=\"#2DAD88\" ></path><path d=\"M490.3 522.3c-5.5 0-10-4.5-10-10V486c0-5.5 4.5-10 10-10s10 4.5 10 10v26.3c0 5.5-4.5 10-10 10zM535.1 522.3c-5.5 0-10-4.5-10-10V486c0-5.5 4.5-10 10-10s10 4.5 10 10v26.3c0 5.5-4.4 10-10 10z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-16\" viewBox=\"0 0 1024 1024\"><path d=\"M513 455.6m-427.6 0a427.6 427.6 0 1 0 855.2 0 427.6 427.6 0 1 0-855.2 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M513 893.2c-59.1 0-116.4-11.6-170.3-34.4-52.1-22-98.9-53.6-139.1-93.8-40.2-40.2-71.7-87-93.8-139.1C87 572 75.4 514.7 75.4 455.6S87 339.2 109.8 285.3c22-52.1 53.6-98.9 93.8-139.1 40.2-40.2 87-71.7 139.1-93.8C396.6 29.6 453.9 18 513 18s116.4 11.6 170.3 34.4c52.1 22 98.9 53.6 139.1 93.8 40.2 40.2 71.7 87 93.8 139.1 22.8 54 34.4 111.3 34.4 170.3S939 572 916.2 625.9c-22 52.1-53.6 98.9-93.8 139.1s-87 71.7-139.1 93.8c-53.9 22.8-111.2 34.4-170.3 34.4zM513 38c-56.4 0-111.1 11-162.5 32.8-49.7 21-94.4 51.1-132.7 89.5s-68.5 83-89.5 132.7c-21.8 51.5-32.8 106.2-32.8 162.5s11 111.1 32.8 162.5c21 49.7 51.1 94.4 89.5 132.7 38.4 38.4 83 68.5 132.7 89.5C402 862 456.7 873 513 873c56.4 0 111.1-11 162.5-32.8 49.7-21 94.4-51.1 132.7-89.5 38.4-38.4 68.5-83 89.5-132.7 21.8-51.5 32.8-106.2 32.8-162.5s-11-111.1-32.8-162.5c-21-49.7-51.1-94.4-89.5-132.7-38.4-38.4-83-68.5-132.7-89.5C624.1 49 569.4 38 513 38z\" fill=\"#231815\" ></path><path d=\"M513 421.3m-393.3 0a393.3 393.3 0 1 0 786.6 0 393.3 393.3 0 1 0-786.6 0Z\" fill=\"#FFE20D\" ></path><path d=\"M513 893.2c-59.1 0-116.4-11.6-170.3-34.4-52.1-22-98.9-53.6-139.1-93.8-40.2-40.2-71.7-87-93.8-139.1C87 572 75.4 514.7 75.4 455.6S87 339.2 109.8 285.3c22-52.1 53.6-98.9 93.8-139.1 40.2-40.2 87-71.7 139.1-93.8C396.6 29.6 453.9 18 513 18s116.4 11.6 170.3 34.4c52.1 22 98.9 53.6 139.1 93.8 40.2 40.2 71.7 87 93.8 139.1 22.8 54 34.4 111.3 34.4 170.3S939 572 916.2 625.9c-22 52.1-53.6 98.9-93.8 139.1s-87 71.7-139.1 93.8c-53.9 22.8-111.2 34.4-170.3 34.4zM513 38c-56.4 0-111.1 11-162.5 32.8-49.7 21-94.4 51.1-132.7 89.5s-68.5 83-89.5 132.7c-21.8 51.5-32.8 106.2-32.8 162.5s11 111.1 32.8 162.5c21 49.7 51.1 94.4 89.5 132.7 38.4 38.4 83 68.5 132.7 89.5C402 862 456.7 873 513 873c56.4 0 111.1-11 162.5-32.8 49.7-21 94.4-51.1 132.7-89.5 38.4-38.4 68.5-83 89.5-132.7 21.8-51.5 32.8-106.2 32.8-162.5s-11-111.1-32.8-162.5c-21-49.7-51.1-94.4-89.5-132.7-38.4-38.4-83-68.5-132.7-89.5C624.1 49 569.4 38 513 38z\" fill=\"#231815\" ></path><path d=\"M377.2 130.9a135.8 43.9 0 1 0 271.6 0 135.8 43.9 0 1 0-271.6 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M513 626.1c-69.1 0-133.9-8.2-189.6-22.5-20.1-5.2-39.1 12-34.8 31.5C310.6 735.1 402.7 810 513 810s202.4-75 224.4-174.9c4.3-19.6-14.7-36.7-34.8-31.5-55.7 14.3-120.5 22.5-189.6 22.5z\" fill=\"#FFA6D7\" ></path><path d=\"M513 820c-55.1 0-108.9-18.5-151.5-52.1-42.1-33.2-71.4-79.6-82.7-130.6-2.7-12.2 1.2-24.9 10.4-33.7 9.7-9.4 23.5-13 36.7-9.6 56.6 14.5 121.3 22.2 187.1 22.2 65.9 0 130.6-7.7 187.1-22.2 13.2-3.4 26.9 0.2 36.7 9.6 9.2 8.9 13.1 21.5 10.4 33.7-11.2 51-40.6 97.4-82.7 130.6C621.9 801.5 568.1 820 513 820zM316.1 612.7c-4.8 0-9.4 1.8-13 5.2-4.2 4.1-6 9.6-4.7 15.1 10.2 46.5 37.1 88.9 75.5 119.2C413 783 462.4 800 513 800c50.6 0 100-17 139.1-47.8 38.4-30.4 65.3-72.7 75.5-119.2 1.2-5.5-0.5-11-4.7-15.1-4.7-4.6-11.4-6.3-17.8-4.6-58.2 14.9-124.6 22.8-192.1 22.8s-133.9-7.9-192.1-22.8c-1.6-0.4-3.2-0.6-4.8-0.6z\" fill=\"#231815\" ></path><path d=\"M660.6 758.2c-39.9-32.3-91.3-51.8-147.6-51.8s-107.7 19.5-147.6 51.8C405.3 790.5 456.8 810 513 810s107.7-19.5 147.6-51.8z\" fill=\"#FF66C1\" ></path><path d=\"M513 820c-56.2 0-110.8-19.2-153.9-54.1-2.3-1.9-3.7-4.8-3.7-7.8s1.4-5.9 3.7-7.8c43-34.9 97.7-54.1 153.9-54.1s110.8 19.2 153.9 54.1c2.3 1.9 3.7 4.8 3.7 7.8s-1.4 5.9-3.7 7.8C623.8 800.8 569.2 820 513 820z m-131.1-61.8C419.7 785.3 465.7 800 513 800s93.3-14.8 131.1-41.8c-37.7-27.1-83.8-41.8-131.1-41.8s-93.3 14.7-131.1 41.8z\" fill=\"#231815\" ></path><path d=\"M228.1 561.7a50.6 31.3 0 1 0 101.2 0 50.6 31.3 0 1 0-101.2 0Z\" fill=\"#FFA178\" ></path><path d=\"M696.7 561.7a50.6 31.3 0 1 0 101.2 0 50.6 31.3 0 1 0-101.2 0Z\" fill=\"#FFA178\" ></path><path d=\"M179.1 978.4a333.9 34.2 0 1 0 667.8 0 333.9 34.2 0 1 0-667.8 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M197.6 403.1h155\" fill=\"#FFFFFF\" ></path><path d=\"M352.6 413.1h-155c-5.5 0-10-4.5-10-10s4.5-10 10-10h155c5.5 0 10 4.5 10 10s-4.5 10-10 10z\" fill=\"#231815\" ></path><path d=\"M221.7 768.5c31.5 29.4 67.5 54.1 106.8 72.9V403.1H221.7v365.4z\" fill=\"#16CEF9\" ></path><path d=\"M328.5 851.4c-1.5 0-2.9-0.3-4.3-1-39.8-19.1-76.6-44.2-109.2-74.6-2-1.9-3.2-4.5-3.2-7.3V403.1c0-5.5 4.5-10 10-10h106.8c5.5 0 10 4.5 10 10v438.3c0 3.4-1.8 6.6-4.7 8.5-1.7 1-3.6 1.5-5.4 1.5z m-96.8-87.3c26.4 24.1 55.5 44.6 86.8 61.1v-412h-86.8v350.9z\" fill=\"#231815\" ></path><path d=\"M815.5 403.1h-155\" fill=\"#FFFFFF\" ></path><path d=\"M815.5 413.1h-155c-5.5 0-10-4.5-10-10s4.5-10 10-10h155c5.5 0 10 4.5 10 10s-4.5 10-10 10z\" fill=\"#231815\" ></path><path d=\"M791.4 768.5c-31.5 29.4-67.5 54.1-106.8 72.9V403.1h106.8v365.4z\" fill=\"#16CEF9\" ></path><path d=\"M684.6 851.4c-1.9 0-3.7-0.5-5.3-1.5-2.9-1.8-4.7-5-4.7-8.5V403.1c0-5.5 4.5-10 10-10h106.8c5.5 0 10 4.5 10 10v365.4c0 2.8-1.2 5.4-3.2 7.3-32.7 30.4-69.4 55.5-109.2 74.6-1.4 0.7-2.9 1-4.4 1z m10-438.3v412c31.3-16.5 60.4-37 86.8-61.1V413h-86.8z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-17\" viewBox=\"0 0 1024 1024\"><path d=\"M513 449.2m-423.4 0a423.4 423.4 0 1 0 846.8 0 423.4 423.4 0 1 0-846.8 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M513 882.5c-58.5 0-115.3-11.5-168.7-34.1-51.6-21.8-98-53.1-137.8-92.9-39.8-39.8-71-86.1-92.9-137.8C91 564.3 79.5 507.5 79.5 449S91 333.7 113.6 280.3c21.8-51.6 53.1-98 92.9-137.8 39.8-39.8 86.1-71 137.8-92.9C397.7 27.2 454.5 15.8 513 15.8s115.3 11.5 168.7 34.1c51.6 21.8 98 53.1 137.8 92.9 39.8 39.8 71 86.1 92.9 137.8 22.6 53.4 34.1 110.2 34.1 168.7S935 564.6 912.4 618c-21.8 51.6-53.1 98-92.9 137.8-39.8 39.8-86.1 71-137.8 92.9-53.4 22.4-110.2 33.8-168.7 33.8z m0-846.7c-55.8 0-109.9 10.9-160.9 32.5-49.2 20.8-93.4 50.6-131.4 88.6-38 38-67.8 82.2-88.6 131.4-21.6 51-32.5 105.1-32.5 160.9s10.9 109.9 32.5 160.9c20.8 49.2 50.6 93.4 88.6 131.4 38 38 82.2 67.8 131.4 88.6 51 21.6 105.1 32.5 160.9 32.5 55.8 0 109.9-10.9 160.9-32.5 49.2-20.8 93.4-50.6 131.4-88.6s67.8-82.2 88.6-131.4c21.6-51 32.5-105.1 32.5-160.9s-10.9-109.9-32.5-160.9c-20.8-49.2-50.6-93.4-88.6-131.4-38-38-82.2-67.8-131.4-88.6-51-21.6-105.1-32.5-160.9-32.5z\" fill=\"#231815\" ></path><path d=\"M513 415.2m-389.4 0a389.4 389.4 0 1 0 778.8 0 389.4 389.4 0 1 0-778.8 0Z\" fill=\"#FFE20D\" ></path><path d=\"M513 882.5c-58.5 0-115.3-11.5-168.7-34.1-51.6-21.8-98-53.1-137.8-92.9-39.8-39.8-71-86.1-92.9-137.8C91 564.3 79.5 507.5 79.5 449S91 333.7 113.6 280.3c21.8-51.6 53.1-98 92.9-137.8 39.8-39.8 86.1-71 137.8-92.9C397.7 27.2 454.5 15.8 513 15.8s115.3 11.5 168.7 34.1c51.6 21.8 98 53.1 137.8 92.9 39.8 39.8 71 86.1 92.9 137.8 22.6 53.4 34.1 110.2 34.1 168.7S935 564.6 912.4 618c-21.8 51.6-53.1 98-92.9 137.8-39.8 39.8-86.1 71-137.8 92.9-53.4 22.4-110.2 33.8-168.7 33.8z m0-846.7c-55.8 0-109.9 10.9-160.9 32.5-49.2 20.8-93.4 50.6-131.4 88.6-38 38-67.8 82.2-88.6 131.4-21.6 51-32.5 105.1-32.5 160.9s10.9 109.9 32.5 160.9c20.8 49.2 50.6 93.4 88.6 131.4 38 38 82.2 67.8 131.4 88.6 51 21.6 105.1 32.5 160.9 32.5 55.8 0 109.9-10.9 160.9-32.5 49.2-20.8 93.4-50.6 131.4-88.6s67.8-82.2 88.6-131.4c21.6-51 32.5-105.1 32.5-160.9s-10.9-109.9-32.5-160.9c-20.8-49.2-50.6-93.4-88.6-131.4-38-38-82.2-67.8-131.4-88.6-51-21.6-105.1-32.5-160.9-32.5z\" fill=\"#231815\" ></path><path d=\"M378.5 127.6a134.5 43.5 0 1 0 269 0 134.5 43.5 0 1 0-269 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M230.9 554.2a50.1 31 0 1 0 100.2 0 50.1 31 0 1 0-100.2 0Z\" fill=\"#FFA178\" ></path><path d=\"M694.9 554.2a50.1 31 0 1 0 100.2 0 50.1 31 0 1 0-100.2 0Z\" fill=\"#FFA178\" ></path><path d=\"M179.2 966.9a330.6 33.8 0 1 0 661.2 0 330.6 33.8 0 1 0-661.2 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M269.6 368c-4.5 0-8.5-3-9.7-7.5-1.4-5.4 1.9-10.8 7.2-12.2 17.6-4.5 36.2-12.1 53.7-22.1 17.5-10 33.6-22 46.5-34.8 3.9-3.9 10.2-3.9 14.1 0 3.9 3.9 3.9 10.2 0 14.1-14.1 14-31.6 27.2-50.7 38s-39.4 19.2-58.6 24.1c-0.8 0.3-1.7 0.4-2.5 0.4zM756.4 368c-0.8 0-1.7-0.1-2.5-0.3-19.3-4.9-39.6-13.3-58.6-24.1-19.1-10.8-36.6-24-50.7-38-3.9-3.9-3.9-10.2 0-14.1 3.9-3.9 10.2-3.9 14.1 0 12.9 12.8 28.9 24.8 46.5 34.8 17.6 10 36.1 17.6 53.7 22.1 5.4 1.4 8.6 6.8 7.2 12.2-1.2 4.4-5.2 7.4-9.7 7.4z\" fill=\"#231815\" ></path><path d=\"M230.6 438.2h100.8\" fill=\"#FFFFFF\" ></path><path d=\"M331.4 448.2H230.6c-5.5 0-10-4.5-10-10s4.5-10 10-10h100.8c5.5 0 10 4.5 10 10s-4.4 10-10 10z\" fill=\"#231815\" ></path><path d=\"M694.6 438.2h100.8\" fill=\"#FFFFFF\" ></path><path d=\"M795.4 448.2H694.6c-5.5 0-10-4.5-10-10s4.5-10 10-10h100.8c5.5 0 10 4.5 10 10s-4.5 10-10 10z\" fill=\"#231815\" ></path><path d=\"M482.3 657.7c-5.5 0-10-4.5-10-10s4.5-10 10-10c27.8 0 51.3-16.2 51.3-35.4s-23.5-35.4-51.3-35.4c-5.5 0-10-4.5-10-10s4.5-10 10-10c18.5 0 36 5.4 49.3 15.3 14.2 10.5 22 24.8 22 40.1s-7.8 29.6-22 40.1c-13.2 9.8-30.8 15.3-49.3 15.3z\" fill=\"#231815\" ></path><path d=\"M482.3 748.4c-5.5 0-10-4.5-10-10s4.5-10 10-10c27.8 0 51.3-16.2 51.3-35.4s-23.5-35.4-51.3-35.4c-5.5 0-10-4.5-10-10s4.5-10 10-10c18.5 0 36 5.4 49.3 15.3 14.2 10.5 22 24.8 22 40.1s-7.8 29.6-22 40.1c-13.2 9.9-30.8 15.3-49.3 15.3z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-18\" viewBox=\"0 0 1024 1024\"><path d=\"M523.1 18.8C303.9 18.8 150 187 150 394.5c0 117.6 33.2 222.5 122.6 291.4V780c0 40.6 33.2 61.8 73.7 61.8S420 820.6 420 780l0.1-52.4c0-8.1 7.4-15.1 15.5-15.1s14.8 6.7 14.8 14.8v60.3c0 1-0.1 2-0.3 2.9 5.3 33.6 36 51.2 72.8 51.2s67.4-17.5 72.8-51c0-0.2-0.1-0.4-0.1-0.6V729c0-8.8 7.2-15.9 15.9-15.9s15.9 7.2 15.9 15.9v61.2c0 0.9-0.1 1.8-0.3 2.7 6.3 32.1 36.5 48.9 72.5 48.9 40.6 0 73.7-21.2 73.7-61.8v-94.1c89.4-68.9 122.6-173.8 122.6-291.4 0.3-207.5-153.6-375.7-372.8-375.7z\" fill=\"#D2F1FC\" ></path><path d=\"M699.8 851.3c-20.1 0-38.3-4.8-52.5-13.9-15.6-10-25.8-24.8-29.3-42.7-0.2-1.1-0.2-2.3 0-3.5 0.1-0.5 0.1-0.9 0.1-1.1V729c0-3.5-2.9-6.4-6.4-6.4s-6.4 2.9-6.4 6.4v60.7c0 0.3 0 0.5 0.1 0.8 0 0.6 0 1.3-0.1 1.9-3 18.6-13 34-28.8 44.4-14.3 9.5-32.8 14.5-53.4 14.5-44.2 0-76.5-23.2-82.2-59.2-0.2-1.1-0.2-2.3 0.1-3.4 0.1-0.4 0.1-0.7 0.1-1.1v-60.3c0-2.9-2.4-5.3-5.3-5.3-3 0-6 2.8-6 5.6l-0.1 52.4c0 42.6-33.5 71.3-83.2 71.3-49.8 0-83.2-28.7-83.2-71.3v-89.5c-81.4-64.7-122.6-164.3-122.6-296 0-104.3 38-201 107-272.3 34.5-35.6 75.2-63.4 121.1-82.7 47.8-20.1 99.8-30.3 154.5-30.3S630 19.4 677.8 39.5c45.9 19.3 86.7 47.1 121.1 82.7 69 71.2 107 167.9 107 272.3 0 131.8-41.2 231.3-122.6 296V780c-0.2 42.7-33.7 71.3-83.5 71.3zM637 792.6c4.6 19.5 23.3 39.7 62.8 39.7 18.5 0 34.9-4.9 46.2-13.7 11.9-9.3 18-22.3 18-38.6v-94.1c0-2.9 1.4-5.7 3.7-7.5 78.9-60.8 118.9-156.3 118.9-283.9 0-99.4-36.1-191.4-101.7-259-32.7-33.7-71.3-60.1-114.8-78.4-45.5-19.1-95-28.8-147.1-28.8S421.5 38 376 57.1c-43.5 18.3-82.2 44.7-114.8 78.4-65.6 67.7-101.7 159.7-101.7 259 0 127.5 40 223 118.9 283.9 2.3 1.8 3.7 4.6 3.7 7.5V780c0 16.3 6.1 29.3 18 38.6 11.4 8.8 27.8 13.7 46.2 13.7s34.9-4.9 46.2-13.7c11.9-9.3 18-22.3 18-38.6l0.1-52.4c0-13.3 11.5-24.5 25-24.5 13.4 0 24.3 10.9 24.3 24.3v60.3c0 1-0.1 1.9-0.2 2.9 3.9 20.4 22.4 41.7 63.2 41.7 40.9 0 59.4-21.5 63.2-41.9V729c0-14 11.4-25.4 25.4-25.4s25.4 11.4 25.4 25.4v61.2c0.3 0.9 0.2 1.6 0.1 2.4z\" fill=\"#231815\" ></path><path d=\"M377.7 134.7a145.4 47 0 1 0 290.8 0 145.4 47 0 1 0-290.8 0Z\" fill=\"#EBFCFC\" ></path><path d=\"M165.6 973.4a357.5 36.6 0 1 0 715 0 357.5 36.6 0 1 0-715 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M364.7 446.7m-82.7 0a82.7 82.7 0 1 0 165.4 0 82.7 82.7 0 1 0-165.4 0Z\" fill=\"#5E6263\" ></path><path d=\"M364.7 538.8c-50.8 0-92.2-41.3-92.2-92.2s41.3-92.2 92.2-92.2 92.2 41.3 92.2 92.2-41.3 92.2-92.2 92.2z m0-165.3c-40.3 0-73.2 32.8-73.2 73.2 0 40.3 32.8 73.2 73.2 73.2s73.2-32.8 73.2-73.2c0-40.4-32.8-73.2-73.2-73.2z\" fill=\"#231815\" ></path><path d=\"M282 461.8a82.7 67.5 0 1 0 165.4 0 82.7 67.5 0 1 0-165.4 0Z\" fill=\"#A0A4A5\" ></path><path d=\"M364.7 538.8c-50.8 0-92.2-41.3-92.2-92.2s41.3-92.2 92.2-92.2 92.2 41.3 92.2 92.2-41.3 92.2-92.2 92.2z m0-165.3c-40.3 0-73.2 32.8-73.2 73.2 0 40.3 32.8 73.2 73.2 73.2s73.2-32.8 73.2-73.2c0-40.4-32.8-73.2-73.2-73.2z\" fill=\"#231815\" ></path><path d=\"M681.4 446.7m-82.7 0a82.7 82.7 0 1 0 165.4 0 82.7 82.7 0 1 0-165.4 0Z\" fill=\"#5E6263\" ></path><path d=\"M681.4 538.8c-50.8 0-92.2-41.3-92.2-92.2s41.3-92.2 92.2-92.2 92.2 41.3 92.2 92.2-41.3 92.2-92.2 92.2z m0-165.3c-40.3 0-73.2 32.8-73.2 73.2 0 40.3 32.8 73.2 73.2 73.2s73.2-32.8 73.2-73.2c0-40.4-32.8-73.2-73.2-73.2z\" fill=\"#231815\" ></path><path d=\"M598.7 461.8a82.7 67.5 0 1 0 165.4 0 82.7 67.5 0 1 0-165.4 0Z\" fill=\"#A0A4A5\" ></path><path d=\"M681.4 538.8c-50.8 0-92.2-41.3-92.2-92.2s41.3-92.2 92.2-92.2 92.2 41.3 92.2 92.2-41.3 92.2-92.2 92.2z m0-165.3c-40.3 0-73.2 32.8-73.2 73.2 0 40.3 32.8 73.2 73.2 73.2s73.2-32.8 73.2-73.2c0-40.4-32.8-73.2-73.2-73.2z\" fill=\"#231815\" ></path><path d=\"M476.7 593.7l26.3-45.6c8.9-15.4 31.2-15.4 40.1 0l26.3 45.6c8.9 15.4-2.2 34.7-20 34.7h-52.6c-17.8 0-29-19.2-20.1-34.7z\" fill=\"#5E6263\" ></path><path d=\"M549.4 637.9h-52.6c-11.8 0-22.4-6.1-28.3-16.3-5.9-10.2-5.9-22.4 0-32.6l26.3-45.6c5.9-10.2 16.5-16.3 28.3-16.3s22.4 6.1 28.3 16.3l26.3 45.6c5.9 10.2 5.9 22.4 0 32.6-5.9 10.2-16.5 16.3-28.3 16.3z m-26.3-91.8c-4.9 0-9.3 2.5-11.8 6.8L485 598.5c-2.5 4.3-2.5 9.4 0 13.6 2.5 4.3 6.9 6.8 11.8 6.8h52.6c4.9 0 9.3-2.5 11.8-6.8s2.5-9.4 0-13.6l-26.3-45.6c-2.5-4.3-6.9-6.8-11.8-6.8z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-19\" viewBox=\"0 0 1024 1024\"><path d=\"M120.2 956a392.1 40.1 0 1 0 784.2 0 392.1 40.1 0 1 0-784.2 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M813 495.3c15.7-19.6 25.1-44.1 25.1-70.6 0-64-54.5-116.4-121-116.4h-13c11-10.3 19.2-23.2 23.8-37.7 9-13.5 14.3-29.5 14.3-46.6 0-47.8-40.6-86.8-90.2-86.8H530.8c-1.9 0-20.7-3.2-22.2-4.1-17.8-10-19.9-33.4-19.9-54.6 0-6.6 6.9-46.4 7.8-52.7-75.9 13.7-139.7 111-139.7 188 0 31.9 11.7 78.4 28.8 94.5h-78.1c-66.6 0-121 52.4-121 116.4 0 26.5 9.4 51 25.1 70.6-71.8 20-124.8 84-124.8 159.3 0 91.2 77.6 165.9 172.4 165.9h506.2c94.8 0 172.4-74.6 172.4-165.9 0-75.3-53-139.3-124.8-159.3z\" fill=\"#F2B986\" ></path><path d=\"M765.4 830.5H259.2c-48.5 0-94.2-18.3-128.7-51.5-34.6-33.3-53.7-77.5-53.7-124.4 0-38.8 13-75.7 37.6-106.6 20.9-26.2 49.3-46.5 81.1-58-12.5-19.7-19-42-19-65.3 0-69.7 58.8-126.4 131-126.4h58.7c-4.9-9.4-8.6-19.9-11.1-28.5-5.3-18.5-8.4-38.9-8.4-55.9 0-40 15.8-85 43.2-123.6 29.2-41 66.4-67.4 104.7-74.3 3.2-0.6 6.4 0.4 8.7 2.7 2.3 2.2 3.4 5.5 2.9 8.6-0.2 1.6-0.8 4.8-1.5 9.3-1.7 10.3-6.2 37.6-6.2 41.9 0 31.8 7 41.1 14.1 45.4 3.6 0.9 15.8 3 18.4 3.3h121c55.3 0 100.2 43.4 100.2 96.8 0 18-5.3 35.6-15.2 51-2.8 8.3-6.7 16.2-11.6 23.5 68.4 4.2 122.7 59.2 122.7 126.2 0 23.2-6.5 45.5-19 65.3 31.8 11.6 60.2 31.8 81.1 58 24.6 30.9 37.6 67.8 37.6 106.6 0 46.9-19.1 91-53.7 124.4-34.6 33.2-80.3 51.5-128.7 51.5zM307.5 318.3c-61.2 0-111 47.7-111 106.4 0 23.3 7.9 45.6 22.9 64.4 2.1 2.6 2.7 6.1 1.7 9.3-1 3.2-3.6 5.7-6.8 6.6-69.2 19.3-117.5 80.8-117.5 149.7 0 41.4 16.9 80.4 47.6 109.9 30.8 29.6 71.6 45.9 114.8 45.9h506.2c43.3 0 84-16.3 114.8-45.9 30.7-29.5 47.6-68.6 47.6-109.9 0-68.9-48.3-130.4-117.5-149.7-3.2-0.9-5.8-3.4-6.8-6.6-1-3.2-0.4-6.7 1.7-9.3 15-18.8 22.9-41 22.9-64.4 0-58.7-49.8-106.4-111-106.4h-13c-4.1 0-7.8-2.5-9.3-6.3-1.5-3.8-0.5-8.2 2.4-11 9.8-9.2 17.1-20.8 21.1-33.4 0.3-0.9 0.7-1.8 1.2-2.5 8.3-12.4 12.6-26.6 12.6-41.1 0-42.4-36-76.8-80.2-76.8H530.8c-1.5 0-22.9-3-27.1-5.4-22.1-12.4-25-39-25-63.3 0-4.5 2-17.8 5.5-39.2-28 9.4-55.7 31.6-77.8 62.6-24.7 34.7-39.5 76.6-39.5 112 0 33 12.2 74.6 25.6 87.2 3 2.8 4 7.2 2.4 11-1.5 3.8-5.2 6.3-9.3 6.3h-78.1z\" fill=\"#231815\" ></path><path d=\"M937.8 654.6c0-75.3-52.9-139.3-124.8-159.3 15.7-19.6 25.1-44.1 25.1-70.6 0-64-54.5-116.4-121-116.4h-13c11-10.3 19.2-23.2 23.8-37.7 9-13.5 14.3-29.5 14.3-46.6 0-16.7-5.1-32.3-13.7-45.6 0 0-26.1-37.4-116-41.2h-81.8c-0.8 0-4.4-0.5-8.4-1.2-26 35.8-42.3 80-42.3 119 0 31.9 11.7 78.4 28.8 94.5h-78.1c-66.6 0-121 52.4-121 116.4 0 26.5 9.4 51 25.1 70.6-71.8 20-124.8 84-124.8 159.3 0 49.6 22.9 94.2 59 124.7h496.3c94.9 0 172.5-74.6 172.5-165.9z\" fill=\"#A0683F\" ></path><path d=\"M765.4 830.5H259.2c-48.5 0-94.2-18.3-128.7-51.5-34.6-33.3-53.7-77.5-53.7-124.4 0-38.8 13-75.7 37.6-106.6 20.9-26.2 49.3-46.5 81.1-58-12.5-19.7-19-42-19-65.3 0-69.7 58.8-126.4 131-126.4h58.7c-4.9-9.4-8.6-19.9-11.1-28.5-5.3-18.5-8.4-38.9-8.4-55.9 0-40 15.8-85 43.2-123.6 29.2-41 66.4-67.4 104.7-74.3 3.2-0.6 6.4 0.4 8.7 2.7 2.3 2.2 3.4 5.5 2.9 8.6-0.2 1.6-0.8 4.8-1.5 9.3-1.7 10.3-6.2 37.6-6.2 41.9 0 31.8 7 41.1 14.1 45.4 3.6 0.9 15.8 3 18.4 3.3h121c55.3 0 100.2 43.4 100.2 96.8 0 18-5.3 35.6-15.2 51-2.8 8.3-6.7 16.2-11.6 23.5 68.4 4.2 122.7 59.2 122.7 126.2 0 23.2-6.5 45.5-19 65.3 31.8 11.6 60.2 31.8 81.1 58 24.6 30.9 37.6 67.8 37.6 106.6 0 46.9-19.1 91-53.7 124.4-34.6 33.2-80.3 51.5-128.7 51.5zM307.5 318.3c-61.2 0-111 47.7-111 106.4 0 23.3 7.9 45.6 22.9 64.4 2.1 2.6 2.7 6.1 1.7 9.3-1 3.2-3.6 5.7-6.8 6.6-69.2 19.3-117.5 80.8-117.5 149.7 0 41.4 16.9 80.4 47.6 109.9 30.8 29.6 71.6 45.9 114.8 45.9h506.2c43.3 0 84-16.3 114.8-45.9 30.7-29.5 47.6-68.6 47.6-109.9 0-68.9-48.3-130.4-117.5-149.7-3.2-0.9-5.8-3.4-6.8-6.6-1-3.2-0.4-6.7 1.7-9.3 15-18.8 22.9-41 22.9-64.4 0-58.7-49.8-106.4-111-106.4h-13c-4.1 0-7.8-2.5-9.3-6.3-1.5-3.8-0.5-8.2 2.4-11 9.8-9.2 17.1-20.8 21.1-33.4 0.3-0.9 0.7-1.8 1.2-2.5 8.3-12.4 12.6-26.6 12.6-41.1 0-42.4-36-76.8-80.2-76.8H530.8c-1.5 0-22.9-3-27.1-5.4-22.1-12.4-25-39-25-63.3 0-4.5 2-17.8 5.5-39.2-28 9.4-55.7 31.6-77.8 62.6-24.7 34.7-39.5 76.6-39.5 112 0 33 12.2 74.6 25.6 87.2 3 2.8 4 7.2 2.4 11-1.5 3.8-5.2 6.3-9.3 6.3h-78.1z\" fill=\"#231815\" ></path><path d=\"M332.3 519.9m-26.2 0a26.2 26.2 0 1 0 52.4 0 26.2 26.2 0 1 0-52.4 0Z\" fill=\"#231815\" ></path><path d=\"M692.2 519.9m-26.2 0a26.2 26.2 0 1 0 52.4 0 26.2 26.2 0 1 0-52.4 0Z\" fill=\"#231815\" ></path><path d=\"M512.3 642.4c-48.6 0-94.1-5.8-133.2-15.8-14.1-3.6-27.5 8.4-24.4 22.1 15.5 70.2 80.1 122.9 157.6 122.9s142.2-52.7 157.6-122.9c3-13.8-10.3-25.8-24.4-22.1-39.2 10-84.6 15.8-133.2 15.8z\" fill=\"#FFA6D7\" ></path><path d=\"M512.3 781.6c-39.4 0-77.8-13.2-108.3-37.3-30.1-23.8-51.1-57-59.1-93.5-2.1-9.6 0.9-19.5 8.1-26.5 7.6-7.3 18.3-10.1 28.6-7.5 39.5 10.1 84.7 15.5 130.7 15.5 46 0 91.2-5.4 130.7-15.5 10.3-2.6 21 0.2 28.6 7.5 7.2 7 10.2 16.9 8.1 26.5-8 36.5-29 69.7-59.1 93.5-30.5 24-68.9 37.3-108.3 37.3zM374 635.9c-2.6 0-5.1 1-7.1 2.9-1.3 1.3-3.3 3.9-2.5 7.8 7.1 32 25.5 61.2 52 82.1 26.9 21.3 61 33 95.9 33s69-11.7 95.9-33c26.5-20.9 44.9-50.1 52-82.1 0.9-3.9-1.2-6.5-2.5-7.8-2.6-2.5-6.2-3.4-9.7-2.5-41.1 10.6-88 16.1-135.7 16.1-47.7 0-94.6-5.6-135.7-16.1-0.9-0.3-1.8-0.4-2.6-0.4z\" fill=\"#231815\" ></path><path d=\"M615.9 735.2c-28-22.7-64.2-36.4-103.7-36.4s-75.6 13.7-103.7 36.4c28 22.7 64.2 36.4 103.7 36.4s75.7-13.7 103.7-36.4z\" fill=\"#FF66C1\" ></path><path d=\"M512.3 781.6c-40.2 0-79.2-13.7-110-38.7-2.3-1.9-3.7-4.8-3.7-7.8s1.4-5.9 3.7-7.8c30.7-24.9 69.8-38.7 110-38.7s79.2 13.7 110 38.7c2.3 1.9 3.7 4.8 3.7 7.8s-1.4 5.9-3.7 7.8c-30.8 25-69.9 38.7-110 38.7z m-86.9-46.4c25.3 17.1 55.7 26.4 86.9 26.4s61.5-9.3 86.9-26.4c-25.3-17.1-55.7-26.4-86.9-26.4s-61.6 9.2-86.9 26.4z\" fill=\"#231815\" ></path><path d=\"M224.6 627a44.2 27.4 0 1 0 88.4 0 44.2 27.4 0 1 0-88.4 0Z\" fill=\"#7A4420\" ></path><path d=\"M708.6 627a44.2 27.4 0 1 0 88.4 0 44.2 27.4 0 1 0-88.4 0Z\" fill=\"#7A4420\" ></path></symbol><symbol id=\"icon-emoji-20\" viewBox=\"0 0 1024 1024\"><path d=\"M492.4 447.7m-428 0a428 428 0 1 0 856 0 428 428 0 1 0-856 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M492.4 885.7c-59.1 0-116.5-11.6-170.5-34.4-52.2-22.1-99-53.6-139.2-93.9-40.2-40.2-71.8-87.1-93.9-139.2-22.8-54-34.4-111.4-34.4-170.5S66 331.3 88.9 277.3c22.1-52.2 53.6-99 93.9-139.2C223 97.9 269.9 66.3 322 44.2 376 21.4 433.4 9.8 492.5 9.8S609 21.4 663 44.2c52.2 22.1 99 53.6 139.2 93.9 40.2 40.2 71.8 87.1 93.9 139.2 22.8 54 34.4 111.4 34.4 170.5S918.8 564.2 896 618.2c-22.1 52.2-53.6 99-93.9 139.2-40.2 40.2-87.1 71.8-139.2 93.9-54 22.8-111.4 34.4-170.5 34.4z m0-855.9c-56.4 0-111.2 11-162.7 32.8-49.8 21.1-94.5 51.2-132.9 89.6-38.4 38.4-68.5 83.1-89.6 132.9-21.8 51.5-32.8 106.3-32.8 162.7s11 111.2 32.8 162.7c21.1 49.8 51.2 94.5 89.6 132.9 38.4 38.4 83.1 68.5 132.9 89.6 51.5 21.8 106.3 32.8 162.7 32.8 56.4 0 111.2-11 162.7-32.8 49.8-21.1 94.5-51.2 132.9-89.6 38.4-38.4 68.5-83.1 89.6-132.9 21.8-51.5 32.8-106.3 32.8-162.7s-11-111.2-32.8-162.7c-21.1-49.8-51.2-94.5-89.6-132.9-38.4-38.4-83.1-68.5-132.9-89.6-51.5-21.8-106.3-32.8-162.7-32.8z\" fill=\"#231815\" ></path><path d=\"M492.4 413.4m-393.6 0a393.6 393.6 0 1 0 787.2 0 393.6 393.6 0 1 0-787.2 0Z\" fill=\"#FFE20D\" ></path><path d=\"M492.4 885.7c-59.1 0-116.5-11.6-170.5-34.4-52.2-22.1-99-53.6-139.2-93.9-40.2-40.2-71.8-87.1-93.9-139.2-22.8-54-34.4-111.4-34.4-170.5S66 331.3 88.9 277.3c22.1-52.2 53.6-99 93.9-139.2C223 97.9 269.9 66.3 322 44.2 376 21.4 433.4 9.8 492.5 9.8S609 21.4 663 44.2c52.2 22.1 99 53.6 139.2 93.9 40.2 40.2 71.8 87.1 93.9 139.2 22.8 54 34.4 111.4 34.4 170.5S918.8 564.2 896 618.2c-22.1 52.2-53.6 99-93.9 139.2-40.2 40.2-87.1 71.8-139.2 93.9-54 22.8-111.4 34.4-170.5 34.4z m0-855.9c-56.4 0-111.2 11-162.7 32.8-49.8 21.1-94.5 51.2-132.9 89.6-38.4 38.4-68.5 83.1-89.6 132.9-21.8 51.5-32.8 106.3-32.8 162.7s11 111.2 32.8 162.7c21.1 49.8 51.2 94.5 89.6 132.9 38.4 38.4 83.1 68.5 132.9 89.6 51.5 21.8 106.3 32.8 162.7 32.8 56.4 0 111.2-11 162.7-32.8 49.8-21.1 94.5-51.2 132.9-89.6 38.4-38.4 68.5-83.1 89.6-132.9 21.8-51.5 32.8-106.3 32.8-162.7s-11-111.2-32.8-162.7c-21.1-49.8-51.2-94.5-89.6-132.9-38.4-38.4-83.1-68.5-132.9-89.6-51.5-21.8-106.3-32.8-162.7-32.8z\" fill=\"#231815\" ></path><path d=\"M356.4 122.7a136 44 0 1 0 272 0 136 44 0 1 0-272 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M207.2 553.9a50.7 31.4 0 1 0 101.4 0 50.7 31.4 0 1 0-101.4 0Z\" fill=\"#FFA178\" ></path><path d=\"M676.2 553.9a50.7 31.4 0 1 0 101.4 0 50.7 31.4 0 1 0-101.4 0Z\" fill=\"#FFA178\" ></path><path d=\"M158.2 971a334.2 34.2 0 1 0 668.4 0 334.2 34.2 0 1 0-668.4 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M461.4 658.4c-5.5 0-10-4.5-10-10s4.5-10 10-10c28.2 0 52-16.4 52-35.9s-23.8-35.9-52-35.9c-5.5 0-10-4.5-10-10s4.5-10 10-10c18.7 0 36.4 5.5 49.8 15.4 14.3 10.6 22.2 25 22.2 40.5s-7.9 29.9-22.2 40.5c-13.4 9.9-31.1 15.4-49.8 15.4z\" fill=\"#231815\" ></path><path d=\"M461.4 750.2c-5.5 0-10-4.5-10-10s4.5-10 10-10c28.2 0 52-16.4 52-35.9s-23.8-35.9-52-35.9c-5.5 0-10-4.5-10-10s4.5-10 10-10c18.7 0 36.4 5.5 49.8 15.4 14.3 10.6 22.2 25 22.2 40.5s-7.9 29.9-22.2 40.5c-13.4 9.9-31.1 15.4-49.8 15.4z\" fill=\"#231815\" ></path><path d=\"M726.9 442c-24.8 0-44.9-20.2-44.9-44.9 0-5.5 4.5-10 10-10s10 4.5 10 10c0 13.7 11.2 24.9 24.9 24.9s24.9-11.2 24.9-24.9c0-5.5 4.5-10 10-10s10 4.5 10 10c0 24.7-20.1 44.9-44.9 44.9zM257.9 442c-24.8 0-44.9-20.2-44.9-44.9 0-5.5 4.5-10 10-10s10 4.5 10 10c0 13.7 11.2 24.9 24.9 24.9s24.9-11.2 24.9-24.9c0-5.5 4.5-10 10-10s10 4.5 10 10c0 24.7-20.1 44.9-44.9 44.9z\" fill=\"#231815\" ></path><path d=\"M891.1 587.6c-27.3-10.3-56.3-7.8-80.4 4.5-10-25.2-30-46.2-57.3-56.6-51.5-19.5-109.1 6.5-128.6 58s65.7 239.8 91 249.3 213.8-75.1 233.3-126.6-6.5-109.1-58-128.6z\" fill=\"#F97B67\" ></path><path d=\"M720.9 853.6c-4.8 0-7.2-0.9-8.6-1.4-3.5-1.3-12.7-4.8-32.8-40.2-11.7-20.7-24.3-47.1-35.3-74.4-12.1-30-21.3-58.6-26.8-82.6-6.7-29.7-7.4-51-2-65.1 10.4-27.4 30.8-49.2 57.5-61.2 26.7-12.1 56.5-13 84-2.6 25.5 9.6 46.4 28.6 58.8 52.7 25.3-9.9 53.5-10.3 79-0.6 56.6 21.4 85.2 84.9 63.8 141.5-5.3 14.1-19.9 29.6-44.6 47.4-19.9 14.4-45.8 29.7-74.7 44.2-26.3 13.2-53.2 24.7-75.7 32.4-23 8-35.5 9.9-42.6 9.9z m-1.5-20.1c1.1 0.2 9.9 1.1 39.5-9.3 21.8-7.6 47.6-18.8 72.9-31.5 59.2-29.9 100.6-60.5 108-80 8.5-22.4 7.7-46.8-2.1-68.7-9.9-21.9-27.6-38.6-50-47-23.5-8.9-49.8-7.4-72.4 4l-9.8 5-4-10.2c-9.3-23.5-28.1-42-51.6-50.9-22.4-8.5-46.8-7.7-68.7 2.1-21.9 9.9-38.6 27.6-47 50.1-7.4 19.5 3.3 69.9 28 131.5 10.5 26.2 22.5 51.7 33.8 71.9 15.2 27.2 22.4 32.3 23.4 33z\" fill=\"#231815\" ></path><path d=\"M852.9 688.6c-27.3-10.3-56.3-7.8-80.4 4.5-10-25.2-30-46.2-57.3-56.6-30.8-11.6-63.6-7-89.3 9.6 15.1 75.2 70.4 189.3 90 196.7 19.6 7.4 136.5-41.5 197.7-87.9-8.4-29.4-29.9-54.6-60.7-66.3z\" fill=\"#FC4427\" ></path><path d=\"M720.9 853.6c-4.8 0-7.2-0.9-8.6-1.4-3.5-1.3-12.7-4.8-32.8-40.2-11.7-20.7-24.3-47.1-35.3-74.4-12.1-30-21.3-58.6-26.8-82.6-6.7-29.7-7.4-51-2-65.1 10.4-27.4 30.8-49.2 57.5-61.2 26.7-12.1 56.5-13 84-2.6 25.5 9.6 46.4 28.6 58.8 52.7 25.3-9.9 53.5-10.3 79-0.6 56.6 21.4 85.2 84.9 63.8 141.5-5.3 14.1-19.9 29.6-44.6 47.4-19.9 14.4-45.8 29.7-74.7 44.2-26.3 13.2-53.2 24.7-75.7 32.4-23 8-35.5 9.9-42.6 9.9z m-1.5-20.1c1.1 0.2 9.9 1.1 39.5-9.3 21.8-7.6 47.6-18.8 72.9-31.5 59.2-29.9 100.6-60.5 108-80 8.5-22.4 7.7-46.8-2.1-68.7-9.9-21.9-27.6-38.6-50-47-23.5-8.9-49.8-7.4-72.4 4l-9.8 5-4-10.2c-9.3-23.5-28.1-42-51.6-50.9-22.4-8.5-46.8-7.7-68.7 2.1-21.9 9.9-38.6 27.6-47 50.1-7.4 19.5 3.3 69.9 28 131.5 10.5 26.2 22.5 51.7 33.8 71.9 15.2 27.2 22.4 32.3 23.4 33z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-21\" viewBox=\"0 0 1024 1024\"><path d=\"M513 449.2m-423.4 0a423.4 423.4 0 1 0 846.8 0 423.4 423.4 0 1 0-846.8 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M513 882.5c-58.5 0-115.3-11.5-168.7-34.1-51.6-21.8-98-53.1-137.8-92.9-39.8-39.8-71-86.1-92.9-137.8C91 564.3 79.5 507.5 79.5 449S91 333.7 113.6 280.3c21.8-51.6 53.1-98 92.9-137.8 39.8-39.8 86.1-71 137.8-92.9C397.7 27.2 454.5 15.8 513 15.8c58.5 0 115.3 11.5 168.7 34.1 51.6 21.8 98 53.1 137.8 92.9 39.8 39.8 71 86.1 92.9 137.8 22.6 53.4 34.1 110.2 34.1 168.7S935 564.6 912.4 618c-21.8 51.6-53.1 98-92.9 137.8-39.8 39.8-86.1 71-137.8 92.9-53.4 22.4-110.2 33.8-168.7 33.8z m0-846.7c-55.8 0-109.9 10.9-160.9 32.5-49.2 20.8-93.4 50.6-131.4 88.6-38 38-67.8 82.2-88.6 131.4-21.6 51-32.5 105.1-32.5 160.9s10.9 109.9 32.5 160.9c20.8 49.2 50.6 93.4 88.6 131.4 38 38 82.2 67.8 131.4 88.6 51 21.6 105.1 32.5 160.9 32.5s109.9-10.9 160.9-32.5c49.2-20.8 93.4-50.6 131.4-88.6s67.8-82.2 88.6-131.4c21.6-51 32.5-105.1 32.5-160.9s-10.9-109.9-32.5-160.9c-20.8-49.2-50.6-93.4-88.6-131.4-38-38-82.2-67.8-131.4-88.6-51-21.6-105.1-32.5-160.9-32.5z\" fill=\"#231815\" ></path><path d=\"M513 415.2m-389.4 0a389.4 389.4 0 1 0 778.8 0 389.4 389.4 0 1 0-778.8 0Z\" fill=\"#FFE20D\" ></path><path d=\"M513 882.5c-58.5 0-115.3-11.5-168.7-34.1-51.6-21.8-98-53.1-137.8-92.9-39.8-39.8-71-86.1-92.9-137.8C91 564.3 79.5 507.5 79.5 449S91 333.7 113.6 280.3c21.8-51.6 53.1-98 92.9-137.8 39.8-39.8 86.1-71 137.8-92.9C397.7 27.2 454.5 15.8 513 15.8c58.5 0 115.3 11.5 168.7 34.1 51.6 21.8 98 53.1 137.8 92.9 39.8 39.8 71 86.1 92.9 137.8 22.6 53.4 34.1 110.2 34.1 168.7S935 564.6 912.4 618c-21.8 51.6-53.1 98-92.9 137.8-39.8 39.8-86.1 71-137.8 92.9-53.4 22.4-110.2 33.8-168.7 33.8z m0-846.7c-55.8 0-109.9 10.9-160.9 32.5-49.2 20.8-93.4 50.6-131.4 88.6-38 38-67.8 82.2-88.6 131.4-21.6 51-32.5 105.1-32.5 160.9s10.9 109.9 32.5 160.9c20.8 49.2 50.6 93.4 88.6 131.4 38 38 82.2 67.8 131.4 88.6 51 21.6 105.1 32.5 160.9 32.5s109.9-10.9 160.9-32.5c49.2-20.8 93.4-50.6 131.4-88.6s67.8-82.2 88.6-131.4c21.6-51 32.5-105.1 32.5-160.9s-10.9-109.9-32.5-160.9c-20.8-49.2-50.6-93.4-88.6-131.4-38-38-82.2-67.8-131.4-88.6-51-21.6-105.1-32.5-160.9-32.5z\" fill=\"#231815\" ></path><path d=\"M378.5 127.6a134.5 43.5 0 1 0 269 0 134.5 43.5 0 1 0-269 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M712 557.4m-35 0a35 35 0 1 0 70 0 35 35 0 1 0-70 0Z\" fill=\"#231815\" ></path><path d=\"M314 557.4m-35 0a35 35 0 1 0 70 0 35 35 0 1 0-70 0Z\" fill=\"#231815\" ></path><path d=\"M694.9 431.1a50.1 31 0 1 0 100.2 0 50.1 31 0 1 0-100.2 0Z\" fill=\"#FFA178\" ></path><path d=\"M230.9 431.1a50.1 31 0 1 0 100.2 0 50.1 31 0 1 0-100.2 0Z\" fill=\"#FFA178\" ></path><path d=\"M182.4 966.9a330.6 33.8 0 1 0 661.2 0 330.6 33.8 0 1 0-661.2 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M392.8 333.5c-2.3 0-4.6-0.8-6.5-2.4-4.2-3.6-4.6-9.9-1-14.1 29.8-34.4 77.6-55 127.8-55s98 20.6 127.8 55c3.6 4.2 3.2 10.5-1 14.1-4.2 3.6-10.5 3.2-14.1-1-26-30.1-68.2-48.1-112.7-48.1s-86.6 18-112.7 48.1c-2.1 2.2-4.8 3.4-7.6 3.4z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-22\" viewBox=\"0 0 1024 1024\"><path d=\"M511.3 447.9m-422.1 0a422.1 422.1 0 1 0 844.2 0 422.1 422.1 0 1 0-844.2 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M511.3 880c-58.3 0-114.9-11.4-168.2-34-51.5-21.8-97.7-52.9-137.4-92.6-39.7-39.7-70.8-85.9-92.6-137.4-22.5-53.3-34-109.9-34-168.2 0-58.3 11.4-114.9 34-168.2 21.8-51.5 52.9-97.7 92.6-137.4 39.7-39.7 85.9-70.8 137.4-92.6 53.3-22.5 109.9-34 168.2-34 58.3 0 114.9 11.4 168.2 34 51.5 21.8 97.7 52.9 137.4 92.6 39.7 39.7 70.8 85.9 92.6 137.4 22.5 53.3 34 109.9 34 168.2s-11.4 114.9-34 168.2c-21.8 51.5-52.9 97.7-92.6 137.4S731 824.2 679.5 846c-53.2 22.6-109.8 34-168.2 34z m0-844.2c-55.6 0-109.6 10.9-160.4 32.4-49.1 20.8-93.1 50.5-131 88.3s-67.6 81.9-88.3 131c-21.5 50.8-32.4 104.8-32.4 160.4s10.9 109.6 32.4 160.4c20.8 49.1 50.5 93.2 88.3 131 37.9 37.9 81.9 67.6 131 88.3 50.8 21.5 104.8 32.4 160.4 32.4 55.6 0 109.6-10.9 160.4-32.4 49.1-20.8 93.2-50.5 131-88.3 37.9-37.9 67.6-81.9 88.3-131 21.5-50.8 32.4-104.8 32.4-160.4S912.5 338.3 891 287.5c-20.8-49.1-50.5-93.1-88.3-131-37.9-37.9-81.9-67.6-131-88.3C620.9 46.7 567 35.8 511.3 35.8z\" fill=\"#231815\" ></path><path d=\"M511.3 414m-388.3 0a388.3 388.3 0 1 0 776.6 0 388.3 388.3 0 1 0-776.6 0Z\" fill=\"#FFE20D\" ></path><path d=\"M511.3 880c-58.3 0-114.9-11.4-168.2-34-51.5-21.8-97.7-52.9-137.4-92.6-39.7-39.7-70.8-85.9-92.6-137.4-22.5-53.3-34-109.9-34-168.2 0-58.3 11.4-114.9 34-168.2 21.8-51.5 52.9-97.7 92.6-137.4 39.7-39.7 85.9-70.8 137.4-92.6 53.3-22.5 109.9-34 168.2-34 58.3 0 114.9 11.4 168.2 34 51.5 21.8 97.7 52.9 137.4 92.6 39.7 39.7 70.8 85.9 92.6 137.4 22.5 53.3 34 109.9 34 168.2s-11.4 114.9-34 168.2c-21.8 51.5-52.9 97.7-92.6 137.4S731 824.2 679.5 846c-53.2 22.6-109.8 34-168.2 34z m0-844.2c-55.6 0-109.6 10.9-160.4 32.4-49.1 20.8-93.1 50.5-131 88.3s-67.6 81.9-88.3 131c-21.5 50.8-32.4 104.8-32.4 160.4s10.9 109.6 32.4 160.4c20.8 49.1 50.5 93.2 88.3 131 37.9 37.9 81.9 67.6 131 88.3 50.8 21.5 104.8 32.4 160.4 32.4 55.6 0 109.6-10.9 160.4-32.4 49.1-20.8 93.2-50.5 131-88.3 37.9-37.9 67.6-81.9 88.3-131 21.5-50.8 32.4-104.8 32.4-160.4S912.5 338.3 891 287.5c-20.8-49.1-50.5-93.1-88.3-131-37.9-37.9-81.9-67.6-131-88.3C620.9 46.7 567 35.8 511.3 35.8z\" fill=\"#231815\" ></path><path d=\"M377.2 127.3a134.1 43.4 0 1 0 268.2 0 134.1 43.4 0 1 0-268.2 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M230 552.6a50 30.9 0 1 0 100 0 50 30.9 0 1 0-100 0Z\" fill=\"#FFA178\" ></path><path d=\"M692.6 552.6a50 30.9 0 1 0 100 0 50 30.9 0 1 0-100 0Z\" fill=\"#FFA178\" ></path><path d=\"M181.7 964a329.6 33.7 0 1 0 659.2 0 329.6 33.7 0 1 0-659.2 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M314.5 466.5c-5.5 0-10-4.5-10-10 0-13.5-11-24.5-24.5-24.5s-24.5 11-24.5 24.5c0 5.5-4.5 10-10 10s-10-4.5-10-10c0-24.5 19.9-44.5 44.5-44.5s44.5 19.9 44.5 44.5c0 5.5-4.5 10-10 10zM777.1 466.5c-5.5 0-10-4.5-10-10 0-13.5-11-24.5-24.5-24.5s-24.5 11-24.5 24.5c0 5.5-4.5 10-10 10s-10-4.5-10-10c0-24.5 19.9-44.5 44.5-44.5s44.5 19.9 44.5 44.5c0 5.5-4.5 10-10 10z\" fill=\"#231815\" ></path><path d=\"M511.3 707.5c-50.1 0-97.7-20.5-127.4-54.8-3.6-4.2-3.2-10.5 1-14.1 4.2-3.6 10.5-3.2 14.1 1 26 30 67.9 47.9 112.3 47.9 44.4 0 86.4-17.9 112.3-47.9 3.6-4.2 9.9-4.6 14.1-1 4.2 3.6 4.6 9.9 1 14.1-29.6 34.3-77.3 54.8-127.4 54.8z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-23\" viewBox=\"0 0 1024 1024\"><path d=\"M512.3 451.5m-428.2 0a428.2 428.2 0 1 0 856.4 0 428.2 428.2 0 1 0-856.4 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M512.3 889.7c-59.2 0-116.5-11.6-170.6-34.4-52.2-22.1-99-53.7-139.3-93.9-40.2-40.2-71.8-87.1-93.9-139.3-22.9-54-34.4-111.4-34.4-170.6S85.7 335 108.5 280.9c22.1-52.2 53.7-99 93.9-139.3 40.2-40.2 87.1-71.8 139.3-93.9 54-22.9 111.4-34.4 170.6-34.4 59.2 0 116.5 11.6 170.6 34.4 52.2 22.1 99 53.7 139.3 93.9 40.2 40.2 71.8 87.1 93.9 139.3 22.9 54 34.4 111.4 34.4 170.6S938.9 568 916.1 622.1c-22.1 52.2-53.7 99-93.9 139.3s-87.1 71.8-139.3 93.9c-54.1 22.8-111.5 34.4-170.6 34.4z m0-856.4c-56.5 0-111.2 11.1-162.8 32.9-49.8 21.1-94.5 51.2-132.9 89.6S148 238.9 127 288.7C105.1 340.3 94.1 395 94.1 451.5s11.1 111.2 32.9 162.8c21.1 49.8 51.2 94.5 89.6 132.9s83.1 68.6 132.9 89.6c51.6 21.8 106.3 32.9 162.8 32.9s111.2-11.1 162.8-32.9c49.8-21.1 94.5-51.2 132.9-89.6s68.6-83.1 89.6-132.9c21.8-51.6 32.9-106.3 32.9-162.8s-11.1-111.2-32.9-162.8c-21.1-49.8-51.2-94.5-89.6-132.9s-83.1-68.6-132.9-89.6c-51.6-21.9-106.4-32.9-162.8-32.9z\" fill=\"#231815\" ></path><path d=\"M512.3 417.1m-393.9 0a393.9 393.9 0 1 0 787.8 0 393.9 393.9 0 1 0-787.8 0Z\" fill=\"#FFE20D\" ></path><path d=\"M512.3 889.7c-59.2 0-116.5-11.6-170.6-34.4-52.2-22.1-99-53.7-139.3-93.9-40.2-40.2-71.8-87.1-93.9-139.3-22.9-54-34.4-111.4-34.4-170.6S85.7 335 108.5 280.9c22.1-52.2 53.7-99 93.9-139.3 40.2-40.2 87.1-71.8 139.3-93.9 54-22.9 111.4-34.4 170.6-34.4 59.2 0 116.5 11.6 170.6 34.4 52.2 22.1 99 53.7 139.3 93.9 40.2 40.2 71.8 87.1 93.9 139.3 22.9 54 34.4 111.4 34.4 170.6S938.9 568 916.1 622.1c-22.1 52.2-53.7 99-93.9 139.3s-87.1 71.8-139.3 93.9c-54.1 22.8-111.5 34.4-170.6 34.4z m0-856.4c-56.5 0-111.2 11.1-162.8 32.9-49.8 21.1-94.5 51.2-132.9 89.6S148 238.9 127 288.7C105.1 340.3 94.1 395 94.1 451.5s11.1 111.2 32.9 162.8c21.1 49.8 51.2 94.5 89.6 132.9s83.1 68.6 132.9 89.6c51.6 21.8 106.3 32.9 162.8 32.9s111.2-11.1 162.8-32.9c49.8-21.1 94.5-51.2 132.9-89.6s68.6-83.1 89.6-132.9c21.8-51.6 32.9-106.3 32.9-162.8s-11.1-111.2-32.9-162.8c-21.1-49.8-51.2-94.5-89.6-132.9s-83.1-68.6-132.9-89.6c-51.6-21.9-106.4-32.9-162.8-32.9z\" fill=\"#231815\" ></path><path d=\"M376.3 126.3a136 44 0 1 0 272 0 136 44 0 1 0-272 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M227 557.7a50.7 31.4 0 1 0 101.4 0 50.7 31.4 0 1 0-101.4 0Z\" fill=\"#FFA178\" ></path><path d=\"M696.2 557.7a50.7 31.4 0 1 0 101.4 0 50.7 31.4 0 1 0-101.4 0Z\" fill=\"#FFA178\" ></path><path d=\"M183.9 975.1a334.3 34.2 0 1 0 668.6 0 334.3 34.2 0 1 0-668.6 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M317 409.5m-79.2 0a79.2 79.2 0 1 0 158.4 0 79.2 79.2 0 1 0-158.4 0Z\" fill=\"#FFFFFF\" ></path><path d=\"M317 498.7c-49.2 0-89.2-40-89.2-89.2s40-89.2 89.2-89.2 89.2 40 89.2 89.2-40 89.2-89.2 89.2z m0-158.5c-38.2 0-69.2 31.1-69.2 69.2s31.1 69.2 69.2 69.2 69.2-31.1 69.2-69.2-31.1-69.2-69.2-69.2z\" fill=\"#231815\" ></path><path d=\"M707.6 409.5m-79.2 0a79.2 79.2 0 1 0 158.4 0 79.2 79.2 0 1 0-158.4 0Z\" fill=\"#FFFFFF\" ></path><path d=\"M707.6 498.7c-49.2 0-89.2-40-89.2-89.2s40-89.2 89.2-89.2 89.2 40 89.2 89.2-40 89.2-89.2 89.2z m0-158.5c-38.2 0-69.2 31.1-69.2 69.2s31.1 69.2 69.2 69.2 69.2-31.1 69.2-69.2-31-69.2-69.2-69.2z\" fill=\"#231815\" ></path><path d=\"M512.3 675.3m-42.3 0a42.3 42.3 0 1 0 84.6 0 42.3 42.3 0 1 0-84.6 0Z\" fill=\"#FFA6D7\" ></path><path d=\"M512.3 727.6c-28.8 0-52.3-23.4-52.3-52.3s23.4-52.3 52.3-52.3 52.3 23.4 52.3 52.3-23.5 52.3-52.3 52.3z m0-84.6c-17.8 0-32.3 14.5-32.3 32.3 0 17.8 14.5 32.3 32.3 32.3 17.8 0 32.3-14.5 32.3-32.3-0.1-17.8-14.5-32.3-32.3-32.3z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-24\" viewBox=\"0 0 1024 1024\"><path d=\"M933.4 39.2l28.1 51.5 51.5 28.1-51.5 28.2-28.1 51.5-28.2-51.5-51.5-28.2 51.5-28.1z\" fill=\"#FFFFFF\" ></path><path d=\"M933.4 208.5c-3.7 0-7-2-8.8-5.2l-26.8-48.9-48.9-26.8c-3.2-1.8-5.2-5.1-5.2-8.8s2-7 5.2-8.8l48.9-26.8 26.8-48.9c1.8-3.2 5.1-5.2 8.8-5.2s7 2 8.8 5.2L969 83.2l48.9 26.8c3.2 1.8 5.2 5.1 5.2 8.8s-2 7-5.2 8.8L969 154.4l-26.8 48.9c-1.8 3.2-5.2 5.2-8.8 5.2z m-58.8-89.7l35.4 19.4c1.7 0.9 3.1 2.3 4 4l19.4 35.4 19.4-35.4c0.9-1.7 2.3-3.1 4-4l35.4-19.4-35.4-19.4c-1.7-0.9-3.1-2.3-4-4L933.4 60 914 95.5c-0.9 1.7-2.3 3.1-4 4l-35.4 19.3z\" fill=\"#231815\" ></path><path d=\"M119 643.4l38.1 69.8 69.8 38.2-69.8 38.1-38.1 69.9-38.2-69.9L11 751.4l69.8-38.2z\" fill=\"#FFFFFF\" ></path><path d=\"M119 869.4c-3.7 0-7-2-8.8-5.2L73.4 797 6.2 760.1C3 758.4 1 755 1 751.4s2-7 5.2-8.8l67.2-36.8 36.8-67.2c1.8-3.2 5.1-5.2 8.8-5.2s7 2 8.8 5.2l36.8 67.2 67.2 36.8c3.2 1.8 5.2 5.1 5.2 8.8s-2 7-5.2 8.8L164.6 797l-36.8 67.2c-1.8 3.2-5.2 5.2-8.8 5.2z m-87.2-118l53.8 29.4c1.7 0.9 3.1 2.3 4 4l29.4 53.8 29.4-53.8c0.9-1.7 2.3-3.1 4-4l53.8-29.4-53.9-29.4c-1.7-0.9-3.1-2.3-4-4L119 664.2 89.6 718c-0.9 1.7-2.3 3.1-4 4l-53.8 29.4z\" fill=\"#231815\" ></path><path d=\"M532.2 451.2m-409.4 0a409.4 409.4 0 1 0 818.8 0 409.4 409.4 0 1 0-818.8 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M532.2 870.5c-56.6 0-111.5-11.1-163.2-33-49.9-21.1-94.8-51.4-133.3-89.9s-68.7-83.4-89.9-133.3c-21.9-51.7-33-106.6-33-163.2s11.1-111.5 33-163.2c21.1-49.9 51.4-94.8 89.9-133.3S319 85.9 369 64.8c51.7-21.9 106.6-33 163.2-33 56.6 0 111.5 11.1 163.2 33 49.9 21.1 94.8 51.4 133.3 89.9s68.7 83.4 89.9 133.3c21.9 51.7 33 106.6 33 163.2s-11.1 111.5-33 163.2c-21.1 49.9-51.4 94.8-89.9 133.3s-83.4 68.7-133.3 89.9c-51.7 21.8-106.6 32.9-163.2 32.9z m0-818.7c-53.9 0-106.2 10.6-155.4 31.4-47.6 20.1-90.3 48.9-126.9 85.6-36.7 36.7-65.5 79.4-85.6 126.9-20.8 49.2-31.4 101.5-31.4 155.4s10.6 106.2 31.4 155.4c20.1 47.6 48.9 90.3 85.6 126.9 36.7 36.7 79.4 65.5 126.9 85.6 49.2 20.8 101.5 31.4 155.4 31.4s106.2-10.6 155.4-31.4c47.6-20.1 90.3-48.9 126.9-85.6 36.7-36.7 65.5-79.4 85.6-126.9 20.8-49.2 31.4-101.5 31.4-155.4S921 344.9 900.2 295.7c-20.1-47.6-48.9-90.3-85.6-126.9-36.7-36.7-79.4-65.5-126.9-85.6-49.3-20.8-101.6-31.4-155.5-31.4z\" fill=\"#231815\" ></path><path d=\"M532.2 418.3m-376.5 0a376.5 376.5 0 1 0 753 0 376.5 376.5 0 1 0-753 0Z\" fill=\"#FFE20D\" ></path><path d=\"M532.2 870.5c-56.6 0-111.5-11.1-163.2-33-49.9-21.1-94.8-51.4-133.3-89.9s-68.7-83.4-89.9-133.3c-21.9-51.7-33-106.6-33-163.2s11.1-111.5 33-163.2c21.1-49.9 51.4-94.8 89.9-133.3S319 85.9 369 64.8c51.7-21.9 106.6-33 163.2-33 56.6 0 111.5 11.1 163.2 33 49.9 21.1 94.8 51.4 133.3 89.9s68.7 83.4 89.9 133.3c21.9 51.7 33 106.6 33 163.2s-11.1 111.5-33 163.2c-21.1 49.9-51.4 94.8-89.9 133.3s-83.4 68.7-133.3 89.9c-51.7 21.8-106.6 32.9-163.2 32.9z m0-818.7c-53.9 0-106.2 10.6-155.4 31.4-47.6 20.1-90.3 48.9-126.9 85.6-36.7 36.7-65.5 79.4-85.6 126.9-20.8 49.2-31.4 101.5-31.4 155.4s10.6 106.2 31.4 155.4c20.1 47.6 48.9 90.3 85.6 126.9 36.7 36.7 79.4 65.5 126.9 85.6 49.2 20.8 101.5 31.4 155.4 31.4s106.2-10.6 155.4-31.4c47.6-20.1 90.3-48.9 126.9-85.6 36.7-36.7 65.5-79.4 85.6-126.9 20.8-49.2 31.4-101.5 31.4-155.4S921 344.9 900.2 295.7c-20.1-47.6-48.9-90.3-85.6-126.9-36.7-36.7-79.4-65.5-126.9-85.6-49.3-20.8-101.6-31.4-155.5-31.4z\" fill=\"#231815\" ></path><path d=\"M402.2 140.3a130 42.1 0 1 0 260 0 130 42.1 0 1 0-260 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M259.4 552.7a48.5 30 0 1 0 97 0 48.5 30 0 1 0-97 0Z\" fill=\"#FFA178\" ></path><path d=\"M708 552.7a48.5 30 0 1 0 97 0 48.5 30 0 1 0-97 0Z\" fill=\"#FFA178\" ></path><path d=\"M214.5 951.7a319.6 32.7 0 1 0 639.2 0 319.6 32.7 0 1 0-639.2 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M532.2 703.2c-48.7 0-94.9-19.9-123.8-53.3-3.6-4.2-3.2-10.5 1-14.1 4.2-3.6 10.5-3.2 14.1 1 25.1 29 65.7 46.4 108.7 46.4 42.9 0 83.6-17.3 108.7-46.4 3.6-4.2 9.9-4.6 14.1-1 4.2 3.6 4.6 9.9 1 14.1-28.8 33.4-75.1 53.3-123.8 53.3z\" fill=\"#231815\" ></path><path d=\"M368.6 488.9H231.9c-60.3 0-109.1-48.9-109.1-109.1v-83.2c0-38.3 31-69.3 69.3-69.3h212c40.6 0 73.6 32.9 73.6 73.6v79c0 59.9-49.1 109-109.1 109z\" fill=\"#969899\" ></path><path d=\"M368.6 498.9H231.9c-65.7 0-119.1-53.4-119.1-119.1v-83.2c0-43.7 35.6-79.3 79.3-79.3h212c46.1 0 83.6 37.5 83.6 83.6v79c0 65.5-53.5 119-119.1 119zM192.2 237.2c-32.7 0-59.3 26.6-59.3 59.3v83.2c0 54.7 44.5 99.1 99.1 99.1h136.6c54.7 0 99.1-44.5 99.1-99.1v-79c0-35-28.5-63.6-63.6-63.6H192.2z\" fill=\"#231815\" ></path><path d=\"M406.4 227.4L188.3 475c16.1 8.7 34.2 13.9 53.5 13.9h116.9c65.7 0 119-58.5 119-122.2V300c0-39-31.6-70.7-71.3-72.6z\" fill=\"#778087\" ></path><path d=\"M375.3 498.9H225.2c-62 0-112.4-50.4-112.4-112.4v-82.7c0-47.7 38.8-86.6 86.6-86.6h201.7c47.7 0 86.6 38.8 86.6 86.6v82.7c0 62-50.4 112.4-112.4 112.4zM199.4 237.2c-36.7 0-66.6 29.9-66.6 66.6v82.7c0 50.9 41.4 92.4 92.4 92.4h150.1c50.9 0 92.4-41.4 92.4-92.4v-82.7c0-36.7-29.9-66.6-66.6-66.6H199.4z\" fill=\"#231815\" ></path><path d=\"M839.2 488.9H695.8c-60.2 0-109.1-48.8-109.1-109.1v-77.5c0-41.5 33.6-75.1 75.1-75.1h210.4c38.3 0 69.4 31.1 69.4 69.4v89.9c0 56.3-46.1 102.4-102.4 102.4z\" fill=\"#969899\" ></path><path d=\"M839.2 498.9H695.8c-65.7 0-119.1-53.4-119.1-119.1v-77.5c0-46.9 38.2-85.1 85.1-85.1h210.4c43.8 0 79.4 35.6 79.4 79.4v89.9c0 62-50.5 112.4-112.4 112.4zM661.8 237.2c-35.9 0-65.1 29.2-65.1 65.1v77.5c0 54.6 44.4 99.1 99.1 99.1h143.4c50.9 0 92.4-41.4 92.4-92.4v-89.9c0-32.7-26.6-59.4-59.4-59.4H661.8z\" fill=\"#231815\" ></path><path d=\"M870.3 227.4L652.2 475c16.1 8.7 34.2 13.9 53.5 13.9h116.9c65.7 0 119-58.5 119-122.2V300c0-39-31.6-70.7-71.3-72.6z\" fill=\"#778087\" ></path><path d=\"M832.4 498.9H695.8c-65.7 0-119.1-53.4-119.1-119.1v-76c0-47.7 38.8-86.6 86.6-86.6H865c47.7 0 86.6 38.8 86.6 86.6v76c0 65.6-53.5 119.1-119.2 119.1zM663.3 237.2c-36.7 0-66.6 29.9-66.6 66.6v76c0 54.7 44.5 99.1 99.1 99.1h136.6c54.7 0 99.1-44.5 99.1-99.1v-76c0-36.7-29.9-66.6-66.6-66.6H663.3z\" fill=\"#231815\" ></path><path d=\"M477.2 282.7c-1.6 0-3.2-0.4-4.7-1.2-4.9-2.6-6.7-8.7-4.1-13.5 12.7-23.6 37.1-38.3 63.8-38.3 26.5 0 50.8 14.5 63.6 37.9 2.6 4.8 0.9 10.9-4 13.6-4.8 2.6-10.9 0.9-13.6-4-9.2-16.9-26.9-27.5-46-27.5-19.3 0-36.9 10.6-46.1 27.7-1.9 3.4-5.3 5.3-8.9 5.3z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-25\" viewBox=\"0 0 1024 1024\"><path d=\"M497.3 448.6m-426.9 0a426.9 426.9 0 1 0 853.8 0 426.9 426.9 0 1 0-853.8 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M497.3 885.6c-59 0-116.2-11.6-170.1-34.3-52-22-98.8-53.5-138.9-93.6-40.1-40.1-71.6-86.9-93.6-138.9-22.8-53.9-34.3-111.1-34.3-170.1S72 332.5 94.7 278.6c22-52 53.5-98.8 93.6-138.9C228.4 99.5 275.2 68 327.2 46c53.9-22.8 111.1-34.3 170.1-34.3S613.5 23.3 667.4 46c52 22 98.8 53.5 138.9 93.6 40.1 40.1 71.6 86.8 93.6 138.9 22.8 53.9 34.3 111.1 34.3 170.1s-11.6 116.2-34.3 170.1c-22 52-53.5 98.8-93.6 138.9-40.1 40.1-86.8 71.6-138.9 93.6-53.9 22.8-111.2 34.4-170.1 34.4z m0-853.9c-56.3 0-110.9 11-162.3 32.8-49.6 21-94.2 51.1-132.5 89.4s-68.4 82.9-89.4 132.5c-21.7 51.4-32.8 106-32.8 162.3s11 110.9 32.8 162.3c21 49.6 51.1 94.2 89.4 132.5s82.9 68.4 132.5 89.4c51.4 21.7 106 32.8 162.3 32.8 56.3 0 110.9-11 162.3-32.8 49.6-21 94.2-51.1 132.5-89.4 38.3-38.3 68.4-82.9 89.4-132.5 21.7-51.4 32.8-106 32.8-162.3s-11-110.9-32.8-162.3c-21-49.6-51.1-94.2-89.4-132.5s-82.9-68.4-132.5-89.4c-51.4-21.8-106-32.8-162.3-32.8z\" fill=\"#231815\" ></path><path d=\"M497.3 414.4m-392.7 0a392.7 392.7 0 1 0 785.4 0 392.7 392.7 0 1 0-785.4 0Z\" fill=\"#FFE20D\" ></path><path d=\"M497.3 885.6c-59 0-116.2-11.6-170.1-34.3-52-22-98.8-53.5-138.9-93.6-40.1-40.1-71.6-86.9-93.6-138.9-22.8-53.9-34.3-111.1-34.3-170.1S72 332.5 94.7 278.6c22-52 53.5-98.8 93.6-138.9C228.4 99.5 275.2 68 327.2 46c53.9-22.8 111.1-34.3 170.1-34.3S613.5 23.3 667.4 46c52 22 98.8 53.5 138.9 93.6 40.1 40.1 71.6 86.8 93.6 138.9 22.8 53.9 34.3 111.1 34.3 170.1s-11.6 116.2-34.3 170.1c-22 52-53.5 98.8-93.6 138.9-40.1 40.1-86.8 71.6-138.9 93.6-53.9 22.8-111.2 34.4-170.1 34.4z m0-853.9c-56.3 0-110.9 11-162.3 32.8-49.6 21-94.2 51.1-132.5 89.4s-68.4 82.9-89.4 132.5c-21.7 51.4-32.8 106-32.8 162.3s11 110.9 32.8 162.3c21 49.6 51.1 94.2 89.4 132.5s82.9 68.4 132.5 89.4c51.4 21.7 106 32.8 162.3 32.8 56.3 0 110.9-11 162.3-32.8 49.6-21 94.2-51.1 132.5-89.4 38.3-38.3 68.4-82.9 89.4-132.5 21.7-51.4 32.8-106 32.8-162.3s-11-110.9-32.8-162.3c-21-49.6-51.1-94.2-89.4-132.5s-82.9-68.4-132.5-89.4c-51.4-21.8-106-32.8-162.3-32.8z\" fill=\"#231815\" ></path><path d=\"M361.7 124.4a135.6 43.9 0 1 0 271.2 0 135.6 43.9 0 1 0-271.2 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M212.7 554.6a50.6 31.3 0 1 0 101.2 0 50.6 31.3 0 1 0-101.2 0Z\" fill=\"#FFA178\" ></path><path d=\"M680.6 554.6a50.6 31.3 0 1 0 101.2 0 50.6 31.3 0 1 0-101.2 0Z\" fill=\"#FFA178\" ></path><path d=\"M164 970.6a333.3 34.1 0 1 0 666.6 0 333.3 34.1 0 1 0-666.6 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M466.4 658.8c-5.5 0-10-4.5-10-10s4.5-10 10-10c28.1 0 51.8-16.4 51.8-35.8s-23.7-35.8-51.8-35.8c-5.5 0-10-4.5-10-10s4.5-10 10-10c18.6 0 36.3 5.5 49.7 15.4 14.3 10.6 22.2 24.9 22.2 40.4s-7.9 29.8-22.2 40.4c-13.5 9.9-31.1 15.4-49.7 15.4z\" fill=\"#231815\" ></path><path d=\"M466.4 750.3c-5.5 0-10-4.5-10-10s4.5-10 10-10c28.1 0 51.8-16.4 51.8-35.8s-23.7-35.8-51.8-35.8c-5.5 0-10-4.5-10-10s4.5-10 10-10c18.6 0 36.3 5.5 49.7 15.4 14.3 10.6 22.2 24.9 22.2 40.4s-7.9 29.8-22.2 40.4c-13.5 10-31.1 15.4-49.7 15.4z\" fill=\"#231815\" ></path><path d=\"M766 442.9c-5.5 0-10-4.5-10-10 0-13.7-11.1-24.8-24.8-24.8-13.7 0-24.8 11.1-24.8 24.8 0 5.5-4.5 10-10 10s-10-4.5-10-10c0-24.7 20.1-44.8 44.8-44.8 24.7 0 44.8 20.1 44.8 44.8 0 5.5-4.4 10-10 10z\" fill=\"#231815\" ></path><path d=\"M895 588.1c-27.2-10.3-56.1-7.8-80.2 4.5-10-25.1-29.9-46.1-57.2-56.4-51.4-19.4-108.8 6.5-128.3 57.9-19.4 51.4 65.6 239.2 90.8 248.7 25.3 9.6 213.3-74.9 232.7-126.3 19.5-51.5-6.4-108.9-57.8-128.4z\" fill=\"#F97B67\" ></path><path d=\"M725.2 853.5c-4.8 0-7.2-0.9-8.6-1.4-3.5-1.3-12.7-4.8-32.7-40.1-11.7-20.6-24.2-47-35.2-74.2-12.1-29.9-21.3-58.4-26.7-82.4-6.7-29.7-7.3-50.9-2-64.9 21.4-56.5 84.7-85 141.2-63.7 25.4 9.6 46.3 28.5 58.6 52.6 25.2-9.9 53.4-10.2 78.8-0.6 27.4 10.3 49 30.7 61.1 57.4s12.9 56.4 2.6 83.8c-5.3 14-19.9 29.5-44.5 47.3-19.9 14.4-45.7 29.6-74.5 44.1-26.2 13.2-53.1 24.6-75.5 32.3-23 7.9-35.5 9.8-42.6 9.8z m-1.5-20.1c1.1 0.2 9.9 1.1 39.4-9.2 21.7-7.6 47.5-18.8 72.7-31.4 59.1-29.8 100.4-60.4 107.7-79.8 8.5-22.4 7.7-46.7-2.1-68.5s-27.6-38.5-49.9-46.9c-23.4-8.8-49.7-7.4-72.2 4l-9.8 5-4-10.2c-9.3-23.4-28-41.9-51.4-50.8-46.2-17.5-97.9 5.9-115.4 52-7.4 19.4 3.3 69.7 27.9 131.1 10.5 26.2 22.4 51.6 33.7 71.7 15.3 27.2 22.4 32.4 23.4 33z\" fill=\"#231815\" ></path><path d=\"M856.9 688.9c-27.2-10.3-56.1-7.8-80.2 4.5-10-25.1-29.9-46.1-57.2-56.4-30.7-11.6-63.5-7-89.1 9.6 15.1 75.1 70.3 188.9 89.8 196.2 19.5 7.4 136.2-41.4 197.2-87.7-8.3-29.4-29.8-54.6-60.5-66.2z\" fill=\"#FC4427\" ></path><path d=\"M725.2 853.5c-4.8 0-7.2-0.9-8.6-1.4-3.5-1.3-12.7-4.8-32.7-40.1-11.7-20.6-24.2-47-35.2-74.2-12.1-29.9-21.3-58.4-26.7-82.4-6.7-29.7-7.3-50.9-2-64.9 21.4-56.5 84.7-85 141.2-63.7 25.4 9.6 46.3 28.5 58.6 52.6 25.2-9.9 53.4-10.2 78.8-0.6 27.4 10.3 49 30.7 61.1 57.4s12.9 56.4 2.6 83.8c-5.3 14-19.9 29.5-44.5 47.3-19.9 14.4-45.7 29.6-74.5 44.1-26.2 13.2-53.1 24.6-75.5 32.3-23 7.9-35.5 9.8-42.6 9.8z m-1.5-20.1c1.1 0.2 9.9 1.1 39.4-9.2 21.7-7.6 47.5-18.8 72.7-31.4 59.1-29.8 100.4-60.4 107.7-79.8 8.5-22.4 7.7-46.7-2.1-68.5s-27.6-38.5-49.9-46.9c-23.4-8.8-49.7-7.4-72.2 4l-9.8 5-4-10.2c-9.3-23.4-28-41.9-51.4-50.8-46.2-17.5-97.9 5.9-115.4 52-7.4 19.4 3.3 69.7 27.9 131.1 10.5 26.2 22.4 51.6 33.7 71.7 15.3 27.2 22.4 32.4 23.4 33z\" fill=\"#231815\" ></path><path d=\"M283.5 428m-35.3 0a35.3 35.3 0 1 0 70.6 0 35.3 35.3 0 1 0-70.6 0Z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-26\" viewBox=\"0 0 1024 1024\"><path d=\"M511.3 447.4m-430.4 0a430.4 430.4 0 1 0 860.8 0 430.4 430.4 0 1 0-860.8 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M511.3 887.8c-59.4 0-117.1-11.6-171.4-34.6-52.4-22.2-99.5-53.9-140-94.4-40.4-40.4-72.2-87.5-94.4-140-23-54.3-34.6-112-34.6-171.4 0-59.4 11.6-117.1 34.6-171.4 22.2-52.4 53.9-99.5 94.4-140 40.4-40.4 87.5-72.2 140-94.4C394.2 18.6 451.9 7 511.3 7c59.4 0 117.1 11.6 171.4 34.6 52.4 22.2 99.5 53.9 140 94.4 40.4 40.4 72.2 87.5 94.4 140 23 54.3 34.6 112 34.6 171.4 0 59.4-11.6 117.1-34.6 171.4-22.2 52.4-53.9 99.5-94.4 140s-87.5 72.2-140 94.4c-54.2 22.9-111.9 34.6-171.4 34.6z m0-860.8c-56.8 0-111.8 11.1-163.6 33-50.1 21.2-95 51.5-133.6 90.1-38.6 38.6-68.9 83.6-90.1 133.6-21.9 51.8-33 106.9-33 163.6s11.1 111.8 33 163.6c21.2 50.1 51.5 95 90.1 133.6 38.6 38.6 83.6 68.9 133.6 90.1 51.8 21.9 106.9 33 163.6 33 56.8 0 111.8-11.1 163.6-33 50.1-21.2 95-51.5 133.6-90.1 38.6-38.6 68.9-83.6 90.1-133.6 21.9-51.8 33-106.9 33-163.6s-11.1-111.8-33-163.6c-21.2-50.1-51.5-95-90.1-133.6C770 111.5 725 81.2 675 60c-51.9-21.9-106.9-33-163.7-33z\" fill=\"#231815\" ></path><path d=\"M511.3 412.9m-395.9 0a395.9 395.9 0 1 0 791.8 0 395.9 395.9 0 1 0-791.8 0Z\" fill=\"#FFE20D\" ></path><path d=\"M511.3 887.8c-59.4 0-117.1-11.6-171.4-34.6-52.4-22.2-99.5-53.9-140-94.4-40.4-40.4-72.2-87.5-94.4-140-23-54.3-34.6-112-34.6-171.4 0-59.4 11.6-117.1 34.6-171.4 22.2-52.4 53.9-99.5 94.4-140 40.4-40.4 87.5-72.2 140-94.4C394.2 18.6 451.9 7 511.3 7c59.4 0 117.1 11.6 171.4 34.6 52.4 22.2 99.5 53.9 140 94.4 40.4 40.4 72.2 87.5 94.4 140 23 54.3 34.6 112 34.6 171.4 0 59.4-11.6 117.1-34.6 171.4-22.2 52.4-53.9 99.5-94.4 140s-87.5 72.2-140 94.4c-54.2 22.9-111.9 34.6-171.4 34.6z m0-860.8c-56.8 0-111.8 11.1-163.6 33-50.1 21.2-95 51.5-133.6 90.1-38.6 38.6-68.9 83.6-90.1 133.6-21.9 51.8-33 106.9-33 163.6s11.1 111.8 33 163.6c21.2 50.1 51.5 95 90.1 133.6 38.6 38.6 83.6 68.9 133.6 90.1 51.8 21.9 106.9 33 163.6 33 56.8 0 111.8-11.1 163.6-33 50.1-21.2 95-51.5 133.6-90.1 38.6-38.6 68.9-83.6 90.1-133.6 21.9-51.8 33-106.9 33-163.6s-11.1-111.8-33-163.6c-21.2-50.1-51.5-95-90.1-133.6C770 111.5 725 81.2 675 60c-51.9-21.9-106.9-33-163.7-33z\" fill=\"#231815\" ></path><path d=\"M374.6 120.5a136.7 44.2 0 1 0 273.4 0 136.7 44.2 0 1 0-273.4 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M309.1 425.8m-35.6 0a35.6 35.6 0 1 0 71.2 0 35.6 35.6 0 1 0-71.2 0Z\" fill=\"#231815\" ></path><path d=\"M713.6 425.8m-35.6 0a35.6 35.6 0 1 0 71.2 0 35.6 35.6 0 1 0-71.2 0Z\" fill=\"#231815\" ></path><path d=\"M224.5 554.2a51 31.6 0 1 0 102 0 51 31.6 0 1 0-102 0Z\" fill=\"#FFA178\" ></path><path d=\"M696.2 554.2a51 31.6 0 1 0 102 0 51 31.6 0 1 0-102 0Z\" fill=\"#FFA178\" ></path><path d=\"M175.3 973.6a336 34.4 0 1 0 672 0 336 34.4 0 1 0-672 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M599.7 671.4H423c-5.5 0-10-4.5-10-10s4.5-10 10-10h176.7c5.5 0 10 4.5 10 10s-4.5 10-10 10z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-27\" viewBox=\"0 0 1024 1024\"><path d=\"M511.3 447.1m-430.1 0a430.1 430.1 0 1 0 860.2 0 430.1 430.1 0 1 0-860.2 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M511.3 887.3c-59.4 0-117.1-11.6-171.3-34.6-52.4-22.2-99.5-53.9-139.9-94.3-40.4-40.4-72.2-87.5-94.3-139.9-23-54.3-34.6-111.9-34.6-171.3s11.6-117.1 34.6-171.3c22.2-52.4 53.9-99.5 94.3-139.9 40.4-40.4 87.5-72.2 139.9-94.3C394.3 18.6 451.9 7 511.3 7c59.4 0 117.1 11.6 171.3 34.6 52.4 22.2 99.5 53.9 139.9 94.3 40.4 40.4 72.2 87.5 94.3 139.9 23 54.3 34.6 111.9 34.6 171.3s-11.6 117.1-34.6 171.3c-22.2 52.4-53.9 99.5-94.3 139.9s-87.5 72.2-139.9 94.3c-54.2 23-111.9 34.7-171.3 34.7z m0-860.3c-56.7 0-111.7 11.1-163.5 33-50 21.2-95 51.5-133.5 90s-68.9 83.5-90 133.5c-21.9 51.8-33 106.8-33 163.5s11.1 111.7 33 163.5c21.2 50 51.5 95 90 133.5s83.5 68.9 133.5 90c51.8 21.9 106.8 33 163.5 33s111.7-11.1 163.5-33c50-21.2 95-51.5 133.5-90s68.9-83.5 90-133.5c21.9-51.8 33-106.8 33-163.5s-11.1-111.7-33-163.5c-21.2-50-51.5-95-90-133.5s-83.5-68.9-133.5-90c-51.7-21.9-106.7-33-163.5-33z\" fill=\"#231815\" ></path><path d=\"M511.3 412.6m-395.6 0a395.6 395.6 0 1 0 791.2 0 395.6 395.6 0 1 0-791.2 0Z\" fill=\"#FFE20D\" ></path><path d=\"M511.3 887.3c-59.4 0-117.1-11.6-171.3-34.6-52.4-22.2-99.5-53.9-139.9-94.3-40.4-40.4-72.2-87.5-94.3-139.9-23-54.3-34.6-111.9-34.6-171.3s11.6-117.1 34.6-171.3c22.2-52.4 53.9-99.5 94.3-139.9 40.4-40.4 87.5-72.2 139.9-94.3C394.3 18.6 451.9 7 511.3 7c59.4 0 117.1 11.6 171.3 34.6 52.4 22.2 99.5 53.9 139.9 94.3 40.4 40.4 72.2 87.5 94.3 139.9 23 54.3 34.6 111.9 34.6 171.3s-11.6 117.1-34.6 171.3c-22.2 52.4-53.9 99.5-94.3 139.9s-87.5 72.2-139.9 94.3c-54.2 23-111.9 34.7-171.3 34.7z m0-860.3c-56.7 0-111.7 11.1-163.5 33-50 21.2-95 51.5-133.5 90s-68.9 83.5-90 133.5c-21.9 51.8-33 106.8-33 163.5s11.1 111.7 33 163.5c21.2 50 51.5 95 90 133.5s83.5 68.9 133.5 90c51.8 21.9 106.8 33 163.5 33s111.7-11.1 163.5-33c50-21.2 95-51.5 133.5-90s68.9-83.5 90-133.5c21.9-51.8 33-106.8 33-163.5s-11.1-111.7-33-163.5c-21.2-50-51.5-95-90-133.5s-83.5-68.9-133.5-90c-51.7-21.9-106.7-33-163.5-33z\" fill=\"#231815\" ></path><path d=\"M374.7 120.5a136.6 44.2 0 1 0 273.2 0 136.6 44.2 0 1 0-273.2 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M224.7 553.9a50.9 31.5 0 1 0 101.8 0 50.9 31.5 0 1 0-101.8 0Z\" fill=\"#FFA178\" ></path><path d=\"M696.1 553.9a50.9 31.5 0 1 0 101.8 0 50.9 31.5 0 1 0-101.8 0Z\" fill=\"#FFA178\" ></path><path d=\"M175.5 973.1a335.8 34.4 0 1 0 671.6 0 335.8 34.4 0 1 0-671.6 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M310.8 465.9c-5.5 0-10-4.5-10-10 0-13.8-11.3-25.1-25.1-25.1s-25.1 11.3-25.1 25.1c0 5.5-4.5 10-10 10s-10-4.5-10-10c0-24.9 20.2-45.1 45.1-45.1s45.1 20.2 45.1 45.1c0 5.5-4.5 10-10 10zM782.1 465.9c-5.5 0-10-4.5-10-10 0-13.8-11.3-25.1-25.1-25.1s-25.1 11.3-25.1 25.1c0 5.5-4.5 10-10 10s-10-4.5-10-10c0-24.9 20.2-45.1 45.1-45.1s45.1 20.2 45.1 45.1c0 5.5-4.4 10-10 10z\" fill=\"#231815\" ></path><path d=\"M511.3 711.5c-25.6 0-51-5.2-73.6-15.1-22-9.6-41.4-23.7-56.1-40.7-3.6-4.2-3.2-10.5 1-14.1 4.2-3.6 10.5-3.2 14.1 1 26.5 30.6 69.3 48.9 114.6 48.9s88.1-18.3 114.6-48.9c3.6-4.2 9.9-4.6 14.1-1 4.2 3.6 4.6 9.9 1 14.1-14.7 17-34.1 31.1-56.1 40.7-22.5 9.8-48 15.1-73.6 15.1z\" fill=\"#231815\" ></path><path d=\"M607.1 691.3c-1.5-4.4-3.9-13.7-6.9-17-16.6 7.1-40.1 23.3-64 25.4-1.5 6-1.4 12.5 0.8 18.7l17.3 50.3c6.2 17.9 26.5 27.7 45.1 21.8 18.7-5.9 30.7-36.2 24.5-54.1l-16.8-45.1z\" fill=\"#F9919D\" ></path><path d=\"M588.3 802.3c-19.2 0-37.1-11.8-43.4-30.3l-17.3-50.3c-2.7-7.9-3.1-16.3-1-24.5l1.7-6.9 7.1-0.6c15.3-1.4 31.2-9.6 45.2-16.9 5.6-2.9 10.9-5.7 15.8-7.8l6.6-2.8 4.8 5.3c3.5 3.9 5.6 9.9 7.9 17.4 0.3 1.1 0.7 2.1 0.9 2.9l16.8 45.3c4.1 11.9 2.3 28.1-4.8 42.3-6.3 12.6-15.6 21.3-26.1 24.6-4.8 1.6-9.5 2.3-14.2 2.3z m-43.1-93.8c0.1 2.3 0.5 4.5 1.2 6.7l17.3 50.3c4.4 12.9 19.1 19.8 32.6 15.5 5.2-1.6 10.5-7.1 14.3-14.6 4.6-9.2 6.1-19.9 3.8-26.7l-16.8-45.3c-0.3-1-0.7-2.2-1.1-3.5-0.3-0.8-0.6-2-1.1-3.3-1.9 0.9-3.8 1.9-5.7 3-12.8 6.7-28.2 14.7-44.5 17.9z\" fill=\"#231815\" ></path><path d=\"M586.8 699.1c-1-3-2.7-5.6-4.7-7.9-13.6 3.9-29.2 6.8-46.2 8.2-1.6 4.9-1.8 10.2 0 15.5L557 775c4.6 13.1 19.8 20.3 33.8 16 14-4.3 21.6-18.7 17-31.8l-21-60.1z\" fill=\"#FC5965\" ></path><path d=\"M588.3 800.1c-19.1 0-37.1-11.6-43.4-29.7l-17.2-48.8c-0.8-1.6-1.5-3-2-4.2-3.3-6.8-5.6-11.2-3.4-19.6l1.8-6.9 7.1-0.6c18-1.6 39.9-11.3 55.9-18.4 3.6-1.6 7-3.1 10-4.4l6.5-2.7 4.8 5.2c3.6 3.9 5.7 9.9 8.1 17.3 0.3 1 0.6 1.9 0.9 2.7l14.3 38.5c4.5 12.8 2.4 31.6-5.2 46.7-5.9 11.7-14.4 19.8-24 22.8-4.8 1.4-9.5 2.1-14.2 2.1z m-44.7-91.4c0.7 1.4 1.5 3 2.4 4.9l0.2 0.5 17.5 49.8c4.3 12.4 19.3 19.3 32.7 15.1 4.3-1.3 8.7-5.9 12-12.6 5.1-10.1 6.9-23.4 4.3-31.1l-14.3-38.5c-0.3-0.9-0.7-2-1.1-3.2-0.3-0.9-0.7-2.3-1.2-3.7-0.3 0.1-0.7 0.3-1 0.4-14.4 6.3-33.3 14.7-51.5 18.4z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-28\" viewBox=\"0 0 1024 1024\"><path d=\"M513 448.3m-429.3 0a429.3 429.3 0 1 0 858.6 0 429.3 429.3 0 1 0-858.6 0Z\" fill=\"#F2CF3D\" ></path><path d=\"M513 887.5c-59.3 0-116.8-11.6-171-34.5-52.3-22.1-99.3-53.8-139.6-94.1s-72-87.3-94.1-139.6c-22.9-54.2-34.5-111.7-34.5-171s11.6-116.8 34.5-171c22.1-52.3 53.8-99.3 94.1-139.6s87.3-72 139.6-94.1C396.2 20.6 453.7 9 513 9s116.8 11.6 171 34.5c52.3 22.1 99.3 53.8 139.6 94.1s72 87.3 94.1 139.6c22.9 54.2 34.5 111.7 34.5 171s-11.6 116.8-34.5 171c-22.1 52.3-53.8 99.3-94.1 139.6s-87.3 72-139.6 94.1c-54.2 23-111.7 34.6-171 34.6zM513 29c-56.6 0-111.5 11.1-163.2 32.9-49.9 21.1-94.8 51.3-133.3 89.9-38.5 38.5-68.7 83.3-89.9 133.3-21.9 51.7-32.9 106.6-32.9 163.2 0 56.6 11.1 111.5 32.9 163.2 21.1 49.9 51.3 94.8 89.9 133.3 38.5 38.5 83.3 68.7 133.3 89.9 51.7 21.9 106.6 32.9 163.2 32.9 56.6 0 111.5-11.1 163.2-32.9 49.9-21.1 94.8-51.3 133.3-89.9s68.7-83.3 89.9-133.3c21.9-51.7 32.9-106.6 32.9-163.2 0-56.6-11.1-111.5-32.9-163.2-21.1-49.9-51.3-94.8-89.9-133.3-38.5-38.5-83.3-68.7-133.3-89.9C624.5 40.1 569.6 29 513 29z\" fill=\"#231815\" ></path><path d=\"M513 413.8m-394.8 0a394.8 394.8 0 1 0 789.6 0 394.8 394.8 0 1 0-789.6 0Z\" fill=\"#FFE20D\" ></path><path d=\"M513 887.5c-59.3 0-116.8-11.6-171-34.5-52.3-22.1-99.3-53.8-139.6-94.1s-72-87.3-94.1-139.6c-22.9-54.2-34.5-111.7-34.5-171s11.6-116.8 34.5-171c22.1-52.3 53.8-99.3 94.1-139.6s87.3-72 139.6-94.1C396.2 20.6 453.7 9 513 9s116.8 11.6 171 34.5c52.3 22.1 99.3 53.8 139.6 94.1s72 87.3 94.1 139.6c22.9 54.2 34.5 111.7 34.5 171s-11.6 116.8-34.5 171c-22.1 52.3-53.8 99.3-94.1 139.6s-87.3 72-139.6 94.1c-54.2 23-111.7 34.6-171 34.6zM513 29c-56.6 0-111.5 11.1-163.2 32.9-49.9 21.1-94.8 51.3-133.3 89.9-38.5 38.5-68.7 83.3-89.9 133.3-21.9 51.7-32.9 106.6-32.9 163.2 0 56.6 11.1 111.5 32.9 163.2 21.1 49.9 51.3 94.8 89.9 133.3 38.5 38.5 83.3 68.7 133.3 89.9 51.7 21.9 106.6 32.9 163.2 32.9 56.6 0 111.5-11.1 163.2-32.9 49.9-21.1 94.8-51.3 133.3-89.9s68.7-83.3 89.9-133.3c21.9-51.7 32.9-106.6 32.9-163.2 0-56.6-11.1-111.5-32.9-163.2-21.1-49.9-51.3-94.8-89.9-133.3-38.5-38.5-83.3-68.7-133.3-89.9C624.5 40.1 569.6 29 513 29z\" fill=\"#231815\" ></path><path d=\"M376.6 122.3a136.4 44.1 0 1 0 272.8 0 136.4 44.1 0 1 0-272.8 0Z\" fill=\"#FFF0B3\" ></path><path d=\"M311.3 426.8m-35.5 0a35.5 35.5 0 1 0 71 0 35.5 35.5 0 1 0-71 0Z\" fill=\"#231815\" ></path><path d=\"M714.7 426.8m-35.5 0a35.5 35.5 0 1 0 71 0 35.5 35.5 0 1 0-71 0Z\" fill=\"#231815\" ></path><path d=\"M513 626.1c-41.9 0-81.2-7.9-114.9-21.8-12.2-5-23.7 11.6-21.1 30.5C390.3 731.5 446.1 804 513 804s122.7-72.6 136-169.2c2.6-18.9-8.9-35.5-21.1-30.5-33.7 13.9-73 21.8-114.9 21.8z\" fill=\"#FFA6D7\" ></path><path d=\"M513 814.1c-35.2 0-69.2-18.5-95.9-52.1-25.5-32.1-43.3-76.8-50-125.7-2.1-15.1 3.1-30.3 12.9-37.9 6.6-5.1 14.5-6.3 21.9-3.2 33.6 13.8 72 21 111.1 21 39.1 0 77.6-7.3 111.1-21 7.4-3 15.4-1.8 21.9 3.2 9.8 7.6 14.9 22.8 12.9 37.9-6.8 48.9-24.5 93.6-50 125.7-26.7 33.6-60.7 52.1-95.9 52.1zM393.7 613.5c-0.3 0-0.8 0.2-1.5 0.7-3.5 2.7-6.5 10.4-5.3 19.3 12.8 93.1 65.9 160.6 126.1 160.6 60.2 0 113.2-67.5 126.1-160.6 1.2-8.9-1.8-16.6-5.3-19.3-1.2-0.9-1.7-0.7-2.1-0.5-36 14.7-77 22.5-118.7 22.5s-82.8-7.8-118.7-22.5c-0.2-0.2-0.4-0.2-0.6-0.2z\" fill=\"#231815\" ></path><path d=\"M227 554.8a50.8 31.5 0 1 0 101.6 0 50.8 31.5 0 1 0-101.6 0Z\" fill=\"#FFA178\" ></path><path d=\"M697.4 554.8a50.8 31.5 0 1 0 101.6 0 50.8 31.5 0 1 0-101.6 0Z\" fill=\"#FFA178\" ></path><path d=\"M177.8 973.2a335.2 34.3 0 1 0 670.4 0 335.2 34.3 0 1 0-670.4 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M513 901.9c-36.7 0-66.7-29.9-66.7-66.5V723.8c0-36.6 30-5.2 66.7-5.2s66.7-31.4 66.7 5.2v111.6c0 36.6-30 66.5-66.7 66.5z\" fill=\"#FC5965\" ></path><path d=\"M513 911.9c-42.3 0-76.7-34.3-76.7-76.5V723.8c0-7.6 0.9-18.3 9.1-24.2 9.3-6.7 20.8-2.8 34.2 1.7 10.1 3.4 21.6 7.3 33.4 7.3 11.9 0 23.3-3.9 33.4-7.3 13.3-4.5 24.9-8.4 34.2-1.7 8.2 5.9 9.1 16.6 9.1 24.2v111.6c0 42.2-34.4 76.5-76.7 76.5zM457.2 716c-0.3 0.9-0.9 3.1-0.9 7.8v111.6c0 31.2 25.4 56.5 56.7 56.5 31.3 0 56.7-25.4 56.7-56.5V723.8c0-4.7-0.6-6.9-0.9-7.8-3-0.1-10.7 2.5-16 4.2-11 3.7-24.7 8.3-39.8 8.3-15.1 0-28.8-4.6-39.8-8.3-5.3-1.7-13-4.3-16-4.2z\" fill=\"#231815\" ></path><path d=\"M513 752.1c-36.7 0-66.7 20-66.7 11.5v-53.2c0-8.6 30 4.5 66.7 4.5s66.7-13.1 66.7-4.5v53.2c0 8.6-30-11.5-66.7-11.5z\" fill=\"#F9919D\" ></path><path d=\"M513 901.1c-42.3 0-76.7-32.7-76.7-72.9V722.8c0-4.1 0-16.6 8.8-23.1 9.2-6.7 20.8-3 34.3 1.3 10.1 3.2 21.6 6.9 33.6 6.9s23.4-3.7 33.6-6.9c13.5-4.3 25.1-8 34.3-1.3 8.8 6.5 8.8 19 8.8 23.1v105.5c0 40.1-34.4 72.8-76.7 72.8zM457 716c-0.3 0.8-0.8 2.8-0.8 6.8v105.5c0 29.1 25.4 52.9 56.7 52.9 31.3 0 56.7-23.7 56.7-52.9V722.8c0-4-0.5-5.9-0.8-6.8-3-0.2-10.9 2.3-16.3 4-11 3.5-24.6 7.8-39.7 7.8-15 0-28.7-4.3-39.7-7.8-5.1-1.6-13-4.2-16.1-4z\" fill=\"#231815\" ></path></symbol><symbol id=\"icon-emoji-29\" viewBox=\"0 0 1024 1024\"><path d=\"M511.3 452.6m-423.2 0a423.2 423.2 0 1 0 846.4 0 423.2 423.2 0 1 0-846.4 0Z\" fill=\"#D64C3E\" ></path><path d=\"M511.3 886.8c-58.6 0-115.5-11.5-169-34.1-51.7-21.9-98.1-53.2-138-93-39.9-39.9-71.2-86.3-93-138-22.6-53.5-34.1-110.4-34.1-169 0-58.6 11.5-115.5 34.1-169 21.9-51.7 53.2-98.1 93-138 39.9-39.9 86.3-71.2 138-93 53.5-22.6 110.4-34.1 169-34.1s115.5 11.5 169 34.1c51.7 21.9 98.1 53.2 138 93 39.9 39.9 71.2 86.3 93 138 22.6 53.5 34.1 110.4 34.1 169 0 58.6-11.5 115.5-34.1 169-21.9 51.7-53.2 98.1-93 138-39.9 39.9-86.3 71.2-138 93-53.5 22.7-110.4 34.1-169 34.1z m0-846.3c-55.7 0-109.6 10.9-160.4 32.4-49.1 20.8-93.2 50.5-131 88.3s-67.6 81.9-88.3 131C110 343 99.1 397 99.1 452.6S110 562.2 131.5 613c20.8 49.1 50.5 93.2 88.3 131s81.9 67.6 131 88.3c50.8 21.5 104.8 32.4 160.4 32.4 55.6 0 109.6-10.9 160.4-32.4 49.1-20.8 93.2-50.5 131-88.3s67.6-81.9 88.3-131c21.5-50.8 32.4-104.8 32.4-160.4 0-55.6-10.9-109.6-32.4-160.4-20.8-49.1-50.5-93.2-88.3-131s-81.9-67.6-131-88.3C621 51.4 567 40.5 511.3 40.5z\" fill=\"#231815\" ></path><path d=\"M509.1 417.5m-389.3 0a389.3 389.3 0 1 0 778.6 0 389.3 389.3 0 1 0-778.6 0Z\" fill=\"#F76239\" ></path><path d=\"M511.3 886.8c-58.6 0-115.5-11.5-169-34.1-51.7-21.9-98.1-53.2-138-93-39.9-39.9-71.2-86.3-93-138-22.6-53.5-34.1-110.4-34.1-169 0-58.6 11.5-115.5 34.1-169 21.9-51.7 53.2-98.1 93-138 39.9-39.9 86.3-71.2 138-93 53.5-22.6 110.4-34.1 169-34.1s115.5 11.5 169 34.1c51.7 21.9 98.1 53.2 138 93 39.9 39.9 71.2 86.3 93 138 22.6 53.5 34.1 110.4 34.1 169 0 58.6-11.5 115.5-34.1 169-21.9 51.7-53.2 98.1-93 138-39.9 39.9-86.3 71.2-138 93-53.5 22.7-110.4 34.1-169 34.1z m0-846.3c-55.7 0-109.6 10.9-160.4 32.4-49.1 20.8-93.2 50.5-131 88.3s-67.6 81.9-88.3 131C110 343 99.1 397 99.1 452.6S110 562.2 131.5 613c20.8 49.1 50.5 93.2 88.3 131s81.9 67.6 131 88.3c50.8 21.5 104.8 32.4 160.4 32.4 55.6 0 109.6-10.9 160.4-32.4 49.1-20.8 93.2-50.5 131-88.3s67.6-81.9 88.3-131c21.5-50.8 32.4-104.8 32.4-160.4 0-55.6-10.9-109.6-32.4-160.4-20.8-49.1-50.5-93.2-88.3-131s-81.9-67.6-131-88.3C621 51.4 567 40.5 511.3 40.5z\" fill=\"#231815\" ></path><path d=\"M376.9 131.3a134.4 43.5 0 1 0 268.8 0 134.4 43.5 0 1 0-268.8 0Z\" fill=\"#FC7E72\" ></path><path d=\"M312.5 431.4m-35 0a35 35 0 1 0 70 0 35 35 0 1 0-70 0Z\" fill=\"#231815\" ></path><path d=\"M710.2 431.4m-35 0a35 35 0 1 0 70 0 35 35 0 1 0-70 0Z\" fill=\"#231815\" ></path><path d=\"M614.2 687.2c-1.6 0-3.3-0.4-4.8-1.1-30.5-15-63.5-22.6-98.1-22.6-34.5 0-67.5 7.6-98 22.6-5.5 2.7-12 0.4-14.7-5-2.7-5.5-0.4-12 5-14.7 33.6-16.5 69.8-24.8 107.7-24.8 37.9 0 74.2 8.4 107.7 24.8 5.5 2.7 7.7 9.3 5 14.7-1.8 3.8-5.7 6.1-9.8 6.1z\" fill=\"#231815\" ></path><path d=\"M229.4 557.6a50.1 31 0 1 0 100.2 0 50.1 31 0 1 0-100.2 0Z\" fill=\"#D83D3D\" ></path><path d=\"M693.1 557.6a50.1 31 0 1 0 100.2 0 50.1 31 0 1 0-100.2 0Z\" fill=\"#D83D3D\" ></path><path d=\"M180.9 970.1a330.4 33.8 0 1 0 660.8 0 330.4 33.8 0 1 0-660.8 0Z\" fill=\"#E5E5E5\" ></path><path d=\"M649.9 391.6c-2.8 0-5.6-1.1-7.8-3.2-4.3-4.3-4.3-11.3 0-15.6 14.2-14.1 31.8-27.3 50.9-38.2 19.1-10.9 39.5-19.2 58.9-24.2 5.9-1.5 11.9 2 13.4 7.9s-2 11.9-7.9 13.4c-17.5 4.5-36 12.1-53.4 22-17.5 9.9-33.5 21.9-46.2 34.6-2.3 2.2-5.1 3.3-7.9 3.3zM372.8 391.6c-2.8 0-5.6-1.1-7.8-3.2-12.8-12.7-28.8-24.7-46.2-34.6-17.5-9.9-35.9-17.5-53.4-22-5.9-1.5-9.4-7.5-7.9-13.4s7.5-9.4 13.4-7.9c19.4 4.9 39.7 13.3 58.9 24.2 19.1 10.9 36.7 24.1 50.9 38.2 4.3 4.3 4.3 11.3 0 15.6-2.3 2-5.1 3.1-7.9 3.1zM604.2 226.5c-3.9 0-7.7-0.6-11.2-1.7-5.8-1.9-9-8.1-7.1-13.9 1.9-5.8 8.1-9 13.9-7.1 3.3 1.1 9.8 1 17.4-2.7 8.9-4.4 12.9-13.5 13.4-16.2-1-5.4 2.2-10.7 7.5-12.4 5.8-1.8 12 1.4 13.8 7.2 3.6 11.3-6.8 32.2-25 41.1-7.6 3.8-15.4 5.7-22.7 5.7zM707.7 249.1c-11.7 0-28.5-9.9-36.2-25.7-5.7-11.6-7.1-24-3.9-33.9 1.9-5.8 8.1-9 13.9-7.1 5.8 1.9 9 8.1 7.1 13.9-1.1 3.3-1 9.8 2.7 17.4 4.4 8.9 13.5 12.9 16.2 13.4 5.4-1 10.7 2.2 12.4 7.5 1.8 5.8-1.4 12-7.2 13.8-1.6 0.5-3.3 0.7-5 0.7zM666.9 281.4c-4.9 0-9.3-3.3-10.6-8.2-0.9-3.3-4.5-8.8-11.7-13.2-9.6-5.8-21.3-2.3-25-0.4-5.4 2.7-12 0.5-14.8-4.9-2.7-5.4-0.5-12 4.9-14.8 9-4.5 28.8-9.3 46.2 1.3 11.1 6.7 18.9 16.3 21.6 26.4 1.6 5.9-2 11.9-7.8 13.4-0.9 0.2-1.9 0.4-2.8 0.4z\" fill=\"#231815\" ></path></symbol></svg>';\n    var script = (function() {\n        var scripts = document.getElementsByTagName('script');\n        return scripts[scripts.length - 1];\n    })();\n    var shouldInjectCss = script.getAttribute('data-injectcss');\n    var ready = function(fn: any) {\n        if (document.addEventListener) {\n            if (~['complete', 'loaded', 'interactive'].indexOf(document.readyState)) {\n                setTimeout(fn, 0);\n            } else {\n                var loadFn = function() {\n                    document.removeEventListener('DOMContentLoaded', loadFn, false);\n                    fn();\n                };\n                document.addEventListener('DOMContentLoaded', loadFn, false);\n            }\n        } else if ((document as any).attachEvent) {\n            IEContentLoaded(window, fn);\n        }\n        function IEContentLoaded(w: any, fn: any) {\n            var d = w.document,\n                done = false,\n                init = function() {\n                    if (!done) {\n                        done = true;\n                        fn();\n                    }\n                };\n            var polling = function() {\n                try {\n                    d.documentElement.doScroll('left');\n                } catch (e) {\n                    setTimeout(polling, 50);\n                    return;\n                }\n                init();\n            };\n            polling();\n            d.onreadystatechange = function() {\n                if (d.readyState === 'complete') {\n                    d.onreadystatechange = null;\n                    init();\n                }\n            };\n        }\n    };\n    var before = function(el: any, target: any) {\n        target.parentNode.insertBefore(el, target);\n    };\n    var prepend = function(el: any, target: any) {\n        if (target.firstChild) {\n            before(el, target.firstChild);\n        } else {\n            target.appendChild(el);\n        }\n    };\n    function appendSvg() {\n        var div, svg;\n        div = document.createElement('div');\n        div.innerHTML = svgSprite!;\n        svgSprite = null;\n        svg = div.getElementsByTagName('svg')[0];\n        if (svg) {\n            svg.setAttribute('aria-hidden', 'true');\n            svg.style.position = 'absolute';\n            svg.style.width = '0px';\n            svg.style.height = '0px';\n            svg.style.overflow = 'hidden';\n            prepend(svg, document.body);\n        }\n    }\n    if (shouldInjectCss && !(window as any).__iconfont__svg__cssinject__) {\n        (window as any).__iconfont__svg__cssinject__ = true;\n        try {\n            document.write(\n                '<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>'\n            );\n        } catch (e) {\n            console && console.log(e);\n        }\n    }\n    ready(appendSvg);\n}\n\nexport default setFont;\n"
  },
  {
    "path": "src/components/ui/emoji/index.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/22.\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport setFont from './iconfont';\n\nsetFont();\ntype EmojiProps = {\n    type: string;\n};\nconst Emoji = ({ type }: EmojiProps) => {\n    const useTag = `<use xlink:href=${'#icon-' + type} />`;\n    return (\n        <i className=\"emoji\">\n            <svg className=\"emoji\" dangerouslySetInnerHTML={{ __html: useTag }} />\n            <style>{`\n            .emoji {\n                display: inline-block;\n                overflow: hidden;\n            }\n            .emoji svg {\n                width: 3em;\n                height: 3em;\n                vertical-align: -0.15em;\n                fill: currentColor;\n                overflow: hidden;\n            }\n        `}</style>\n        </i>\n    );\n};\n\nEmoji.propTypes = {\n    type: PropTypes.string.isRequired,\n};\n\nexport default Emoji;\n"
  },
  {
    "path": "src/components/ui/map/Tencent.tsx",
    "content": "import React from 'react';\nimport ReactQMap from 'react-qmap';\n\nconst getContianer = (dom: any) => {\n    const middleControl = document.createElement('div');\n    middleControl.style.cssText =\n        'width: 22px;height: 30px;position: absolute;left: 50%;top: 50%;z-index: 999;margin-left: -23px;margin-top: -23px;';\n    middleControl.innerHTML = `<img src=\"${require('../../../style/imgs/spot_location.png')}\" style=\"width: 100%;height: 100%;\" />`;\n    dom.appendChild(middleControl);\n};\n\nexport default () => (\n    <ReactQMap\n        center={{ latitude: 30.53786, longitude: 104.07265 }}\n        initialOptions={{ zoomControl: true, mapTypeControl: true }}\n        apiKey=\"UN6BZ-MP2W6-XWCSX-M2ATU-QORGZ-OWFOE\"\n        style={{ height: 500 }}\n        mySpot={{ latitude: 30.53786, longitude: 104.07265 }}\n        getContainer={getContianer}\n    />\n);\n"
  },
  {
    "path": "src/components/ui/map/index.tsx",
    "content": "import React from 'react';\nimport Tencent from './Tencent';\nimport { Row, Col, Card } from 'antd';\nimport BreadcrumbCustom from '../../widget/BreadcrumbCustom';\n\nexport default () => (\n    <div>\n        <BreadcrumbCustom breads={['UI', '地图']} />\n        <Row gutter={16}>\n            <Col md={24}>\n                <div style={{ height: 500 }}>\n                    <Card bordered={false} title=\"腾讯地图\">\n                        <Tencent />\n                    </Card>\n                </div>\n            </Col>\n        </Row>\n    </div>\n);\n"
  },
  {
    "path": "src/components/widget/AuthWidget.tsx",
    "content": "/**\n * Created by 叶子 on 2017/7/31.\n */\nimport { Component } from 'react';\nimport { connectAlita } from 'redux-alita';\n\ntype AuthWidgetProps = {\n    auth: any;\n    children: (param: any) => React.ReactElement;\n};\n\nclass AuthWidget extends Component<AuthWidgetProps> {\n    render() {\n        const { auth = {} } = this.props;\n        return this.props.children(auth.data || {});\n    }\n}\n\nexport default connectAlita(['auth'])(AuthWidget);\n"
  },
  {
    "path": "src/components/widget/BreadcrumbCustom.tsx",
    "content": "/**\n * Created by hao.cheng on 2017/4/22.\n */\nimport React, { ReactNode } from 'react';\nimport { Breadcrumb } from 'antd';\nimport { Link } from 'react-router-dom';\n\ninterface BreadcrumbCustomProps {\n    breads?: ReactNode[];\n}\nconst BreadcrumbCustom = (props: BreadcrumbCustomProps) => {\n    const { breads } = props;\n    return (\n        <Breadcrumb style={{ margin: '12px 0' }}>\n            <Breadcrumb.Item>\n                <Link to={'/app/dashboard/index'}>首页</Link>\n            </Breadcrumb.Item>\n            {breads?.map((bread, i) => (\n                <Breadcrumb.Item key={i}>{bread}</Breadcrumb.Item>\n            ))}\n        </Breadcrumb>\n    );\n};\n\nexport default BreadcrumbCustom;\n"
  },
  {
    "path": "src/components/widget/Copyright.tsx",
    "content": "/*\n * File: Copyright.tsx\n * Desc: 版权信息\n * File Created: 2020-04-12 22:50:33\n * Author: chenghao\n * ------\n * Copyright 2020 - present, karakal\n */\nimport React from 'react';\n\nconst Copyright = () => {\n    return (\n        <div>\n            react-admin ©{new Date().getFullYear()} Created by yezihaohao@yezi.haohao@foxmail.com\n        </div>\n    );\n};\n\nexport default Copyright;\n"
  },
  {
    "path": "src/components/widget/Loading.tsx",
    "content": "import React from 'react';\n\nexport default () => (\n    <div\n        style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}\n    >\n        页面加载中...\n    </div>\n);\n"
  },
  {
    "path": "src/components/widget/PwaInstaller.tsx",
    "content": "/*\n * File: PwaInstaller.js\n * Desc: pwa手动触发安装\n * File Created: 2018-11-07 21:13:18\n * Author: chenghao\n *\n * Copyright 2018 - present, chenghao\n */\nimport React, { Component } from 'react';\n\nclass PwaInstaller extends Component {\n    state = {\n        installed: true,\n    };\n    componentDidMount() {\n        window.addEventListener('beforeinstallprompt', this.beforeInstallPrompt);\n    }\n    componentWillUnmount() {\n        window.removeEventListener('beforeinstallprompt', this.beforeInstallPrompt);\n    }\n    deferredPrompt: any;\n    beforeInstallPrompt = (e: Event) => {\n        console.log('beforeinstallprompt Event fired');\n        // 未安装PWA应用\n        this.setState({ installed: false });\n\n        e.preventDefault();\n        // Stash the event so it can be triggered later.\n        this.deferredPrompt = e;\n        return false;\n    };\n    download = () => {\n        if (this.deferredPrompt !== undefined) {\n            // The user has had a postive interaction with our app and Chrome\n            // has tried to prompt previously, so let's show the prompt.\n            this.deferredPrompt.prompt();\n            // Follow what the user has done with the prompt.\n            this.deferredPrompt.userChoice.then((choiceResult: any) => {\n                console.log(choiceResult.outcome);\n                if (choiceResult.outcome === 'dismissed') {\n                    console.log('User cancelled home screen install');\n                } else {\n                    console.log('User added to home screen');\n                }\n                // We no longer need the prompt.  Clear it up.\n                this.deferredPrompt = null;\n            });\n        }\n    };\n    render() {\n        const { installed } = this.state;\n        return (\n            !installed && (\n                <div className=\"installer\" onClick={this.download}>\n                    <div className=\"installer__btn\" />\n                </div>\n            )\n        );\n    }\n}\n\nexport default PwaInstaller;\n"
  },
  {
    "path": "src/components/widget/ThemePicker.tsx",
    "content": "import React, { Component } from 'react';\nimport { SketchPicker } from 'react-color';\nimport classNames from 'classnames';\nimport { SettingOutlined } from '@ant-design/icons';\n\nclass ThemePicker extends Component {\n    state = {\n        switcherOn: false,\n        background: localStorage.getItem('@primary-color') || '#313653',\n    };\n    _switcherOn = () => {\n        this.setState({\n            switcherOn: !this.state.switcherOn,\n        });\n    };\n    _handleChangeComplete = (color: any) => {\n        console.log(color);\n        this.setState({ background: color.hex });\n        localStorage.setItem('@primary-color', color.hex);\n\n        (window as any).less.modifyVars({\n            '@primary-color': color.hex,\n        });\n    };\n    render() {\n        const { switcherOn, background } = this.state;\n        return (\n            <div className={classNames('switcher dark-white', { active: switcherOn })}>\n                <span className=\"sw-btn dark-white\" onClick={this._switcherOn}>\n                    <SettingOutlined type=\"setting\" className=\"text-dark\" />\n                </span>\n                <div style={{ padding: 10 }} className=\"clear\">\n                    <SketchPicker\n                        color={background}\n                        onChangeComplete={this._handleChangeComplete}\n                    />\n                </div>\n            </div>\n        );\n    }\n}\n\nexport default ThemePicker;\n"
  },
  {
    "path": "src/components/widget/index.tsx",
    "content": "export { default as PwaInstaller } from './PwaInstaller';\nexport { default as AuthWidget } from './AuthWidget';\nexport { default as ThemePicker } from './ThemePicker';\nexport { default as Copyright } from './Copyright';\n"
  },
  {
    "path": "src/index.tsx",
    "content": "import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AlitaProvider, setConfig } from 'redux-alita';\nimport umbrella from 'umbrella-storage';\nimport Page from './Page';\nimport * as serviceWorker from './serviceWorker';\nimport * as apis from './service';\n// import { AppContainer } from 'react-hot-loader';\nimport './style/lib/animate.css';\nimport './style/index.less';\nimport './style/antd/index.less';\n\nsetConfig(apis);\numbrella.config('REACT-ADMIN');\n// const render = Component => { // 增加react-hot-loader保持状态刷新操作，如果不需要可去掉并把下面注释的打开\n//     ReactDOM.render(\n//         <AppContainer>\n//             <Provider store={store}>\n//                 <Component store={store} />\n//             </Provider>\n//         </AppContainer>\n//         ,\n//         document.getElementById('root')\n//     );\n// };\n\n// render(Page);\n\n// Webpack Hot Module Replacement API\n// if (module.hot) {\n//     // 隐藏You cannot change <Router routes>; it will be ignored 错误提示\n//     // react-hot-loader 使用在react-router 3.x上引起的提示，react-router 4.x不存在\n//     // 详情可参照https://github.com/gaearon/react-hot-loader/issues/298\n//     const orgError = console.error; // eslint-disable-line no-console\n//     console.error = (...args) => { // eslint-disable-line no-console\n//         if (args && args.length === 1 && typeof args[0] === 'string' && args[0].indexOf('You cannot change <Router routes>;') > -1) {\n//             // React route changed\n//         } else {\n//             // Log the error as normally\n//             orgError.apply(console, args);\n//         }\n//     };\n//     module.hot.accept('./Page', () => {\n//         render(Page);\n//     })\n// }\n\nReactDOM.render(\n    // <AppContainer>\n    <AlitaProvider>\n        <Page />\n    </AlitaProvider>,\n    // </AppContainer>\n    document.getElementById('root')\n);\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\n// serviceWorker.unregister();\nserviceWorker.register();\n"
  },
  {
    "path": "src/react-app-env.d.ts",
    "content": "/// <reference types=\"node\" />\n/// <reference types=\"react\" />\n/// <reference types=\"react-dom\" />\n\ndeclare namespace NodeJS {\n    interface ProcessEnv {\n        readonly NODE_ENV: 'development' | 'production' | 'test';\n        readonly PUBLIC_URL: string;\n    }\n}\n\ndeclare module '*.bmp' {\n    const src: string;\n    export default src;\n}\n\ndeclare module '*.gif' {\n    const src: string;\n    export default src;\n}\n\ndeclare module '*.jpg' {\n    const src: string;\n    export default src;\n}\n\ndeclare module '*.jpeg' {\n    const src: string;\n    export default src;\n}\n\ndeclare module '*.png' {\n    const src: string;\n    export default src;\n}\n\ndeclare module '*.webp' {\n    const src: string;\n    export default src;\n}\n\ndeclare module '*.svg' {\n    import * as React from 'react';\n\n    export const ReactComponent: React.FunctionComponent<React.SVGProps<SVGSVGElement>>;\n\n    const src: string;\n    export default src;\n}\n\ndeclare module '*.module.css' {\n    const classes: { readonly [key: string]: string };\n    export default classes;\n}\n\ndeclare module '*.module.scss' {\n    const classes: { readonly [key: string]: string };\n    export default classes;\n}\n\ndeclare module '*.module.sass' {\n    const classes: { readonly [key: string]: string };\n    export default classes;\n}\n\ndeclare module '*.module.less' {\n    const classes: { readonly [key: string]: string };\n    export default classes;\n}\n\ndeclare module 'draftjs-to-html';\n\ndeclare module 'draftjs-to-markdown';\n\ndeclare module 'react-qmap';\n"
  },
  {
    "path": "src/routes/RouteWrapper.tsx",
    "content": "/*\n * File: RouteWrapper.tsx\n * Desc: 描述\n * File Created: 2020-05-19 11:32:58\n * Author: chenghao at <hao.cheng@karakal.com.cn>\n * ------\n * Copyright 2020 - present, karakal\n */\nimport React, { useMemo } from 'react';\nimport DocumentTitle from 'react-document-title';\nimport queryString from 'query-string';\n\nconst RouteWrapper = (props: any) => {\n    let { Comp, route, ...restProps } = props;\n    /** useMemo 缓存query，避免每次生成生的query */\n    const queryMemo = useMemo(() => {\n        const queryReg = /\\?\\S*/g;\n        const matchQuery = (reg: RegExp) => {\n            const queryParams = restProps.location.search.match(reg);\n            return queryParams ? queryParams[0] : '{}';\n        };\n        return queryString.parse(matchQuery(queryReg));\n    }, [restProps.location.search]);\n    const mergeQueryToProps = () => {\n        const queryReg = /\\?\\S*/g;\n        const removeQueryInRouter = (restProps: any, reg: RegExp) => {\n            const { params } = restProps.match;\n            Object.keys(params).forEach((key) => {\n                params[key] = params[key] && params[key].replace(reg, '');\n            });\n            restProps.match.params = { ...params };\n        };\n\n        restProps = removeQueryInRouter(restProps, queryReg);\n        const merge = {\n            ...restProps,\n            query: queryMemo,\n        };\n        return merge;\n    };\n    return (\n        <DocumentTitle title={route.title}>\n            <Comp {...mergeQueryToProps()} />\n        </DocumentTitle>\n    );\n};\n\nexport default RouteWrapper;\n"
  },
  {
    "path": "src/routes/config.ts",
    "content": "export interface IFMenuBase {\n    key: string;\n    title: string;\n    icon?: string;\n    component?: string;\n    query?: string;\n    requireAuth?: string;\n    route?: string;\n    /** 是否登录校验，true不进行校验（访客） */\n    login?: boolean;\n}\n\nexport interface IFMenu extends IFMenuBase {\n    subs?: IFMenu[];\n}\n\nconst menus: {\n    menus: IFMenu[];\n    others: IFMenu[] | [];\n    [index: string]: any;\n} = {\n    menus: [\n        // 菜单相关路由\n        { key: '/app/dashboard/index', title: '首页', icon: 'mobile', component: 'Dashboard' },\n        {\n            key: '/app/ui',\n            title: 'UI',\n            icon: 'scan',\n            subs: [\n                { key: '/app/ui/buttons', title: '按钮', component: 'Buttons' },\n                { key: '/app/ui/icons', title: '图标', component: 'Icons' },\n                { key: '/app/ui/spins', title: '加载中', component: 'Spins' },\n                { key: '/app/ui/modals', title: '对话框', component: 'Modals' },\n                { key: '/app/ui/notifications', title: '通知提醒框', component: 'Notifications' },\n                { key: '/app/ui/tabs', title: '标签页', component: 'Tabs' },\n                { key: '/app/ui/banners', title: '轮播图', component: 'Banners' },\n                { key: '/app/ui/wysiwyg', title: '富文本', component: 'WysiwygBundle' },\n                { key: '/app/ui/drags', title: '拖拽', component: 'Drags' },\n                { key: '/app/ui/gallery', title: '画廊', component: 'Gallery' },\n                { key: '/app/ui/map', title: '地图', component: 'MapUi' },\n            ],\n        },\n        {\n            key: '/app/animation',\n            title: '动画',\n            icon: 'rocket',\n            subs: [\n                {\n                    key: '/app/animation/basicAnimations',\n                    title: '基础动画',\n                    component: 'BasicAnimations',\n                },\n                {\n                    key: '/app/animation/exampleAnimations',\n                    title: '动画案例',\n                    component: 'ExampleAnimations',\n                },\n            ],\n        },\n        {\n            key: '/app/table',\n            title: '表格',\n            icon: 'copy',\n            subs: [\n                { key: '/app/table/basicTable', title: '基础表格', component: 'BasicTable' },\n                { key: '/app/table/advancedTable', title: '高级表格', component: 'AdvancedTable' },\n                {\n                    key: '/app/table/asynchronousTable',\n                    title: '异步表格',\n                    component: 'AsynchronousTable',\n                },\n            ],\n        },\n        {\n            key: '/app/chart',\n            title: '图表',\n            icon: 'area-chart',\n            subs: [\n                { key: '/app/chart/echarts', title: 'echarts', component: 'Echarts' },\n                { key: '/app/chart/recharts', title: 'recharts', component: 'Recharts' },\n            ],\n        },\n        {\n            key: '/subs4',\n            title: '页面',\n            icon: 'switcher',\n            subs: [\n                { key: '/login', title: '登录' },\n                { key: '/404', title: '404' },\n            ],\n        },\n        {\n            key: '/app/auth',\n            title: '权限管理',\n            icon: 'safety',\n            subs: [\n                { key: '/app/auth/basic', title: '基础演示', component: 'AuthBasic' },\n                {\n                    key: '/app/auth/routerEnter',\n                    title: '路由拦截',\n                    component: 'RouterEnter',\n                    requireAuth: 'auth/testPage',\n                },\n            ],\n        },\n        {\n            key: '/app/cssModule',\n            title: 'cssModule',\n            icon: 'star',\n            component: 'Cssmodule',\n        },\n        {\n            key: '/app/extension',\n            title: '功能扩展',\n            icon: 'bars',\n            subs: [\n                {\n                    key: '/app/extension/queryParams',\n                    title: '问号形式参数',\n                    component: 'QueryParams',\n                    query: '?param1=1&param2=2',\n                },\n                {\n                    key: '/app/extension/visitor',\n                    title: '访客模式',\n                    component: 'Visitor',\n                    login: true,\n                },\n                {\n                    key: '/app/extension/multiple',\n                    title: '多级菜单',\n                    subs: [\n                        {\n                            key: '/app/extension/multiple/child',\n                            title: '多级菜单子菜单',\n                            subs: [\n                                {\n                                    key: '/app/extension/multiple/child/child',\n                                    title: '多级菜单子子菜单',\n                                    component: 'MultipleMenu',\n                                },\n                            ],\n                        },\n                    ],\n                },\n                {\n                    key: '/app/extension/env',\n                    title: '环境配置',\n                    component: 'Env',\n                },\n            ],\n        },\n    ],\n    others: [], // 非菜单相关路由\n};\n\nexport default menus;\n"
  },
  {
    "path": "src/routes/index.tsx",
    "content": "/**\n * Created by 叶子 on 2017/8/13.\n */\nimport React from 'react';\nimport { Route, Redirect, Switch } from 'react-router-dom';\nimport { useAlita } from 'redux-alita';\nimport umbrella from 'umbrella-storage';\nimport AllComponents from '../components';\nimport routesConfig, { IFMenuBase, IFMenu } from './config';\nimport { checkLogin } from '../utils';\nimport RouteWrapper from './RouteWrapper';\n\ntype CRouterProps = {\n    auth: any;\n};\n\nconst CRouter = (props: CRouterProps) => {\n    const { auth } = props;\n    const [smenus] = useAlita({ smenus: null }, { light: true });\n\n    const getPermits = (): any[] | null => {\n        return auth ? auth.permissions : null;\n    };\n    const requireAuth = (permit: any, component: React.ReactElement) => {\n        const permits = getPermits();\n        if (!permits || !permits.includes(permit)) return <Redirect to={'404'} />;\n        return component;\n    };\n    const requireLogin = (component: React.ReactElement, permit: any) => {\n        const permits = getPermits();\n        if (!checkLogin(permits)) {\n            // 线上环境判断是否登录\n            return <Redirect to={'/login'} />;\n        }\n        return permit ? requireAuth(permit, component) : component;\n    };\n    const createMenu = (r: IFMenu) => {\n        const route = (r: IFMenuBase) => {\n            const Component = r.component && AllComponents[r.component];\n            return (\n                <Route\n                    key={r.route || r.key}\n                    exact\n                    path={r.route || r.key}\n                    render={(props: any) => {\n                        // 重新包装组件\n                        const wrapper = (\n                            <RouteWrapper {...{ ...props, Comp: Component, route: r }} />\n                        );\n                        return r.login ? wrapper : requireLogin(wrapper, r.requireAuth);\n                    }}\n                />\n            );\n        };\n\n        const subRoute = (r: IFMenu): any =>\n            r.subs && r.subs.map((subR: IFMenu) => (subR.subs ? subRoute(subR) : route(subR)));\n\n        return r.component ? route(r) : subRoute(r);\n    };\n    const createRoute = (key: string) => routesConfig[key].map(createMenu);\n    const getAsyncMenus = () => smenus || umbrella.getLocalStorage('smenus') || [];\n    return (\n        <Switch>\n            {Object.keys(routesConfig).map((key) => createRoute(key))}\n            {getAsyncMenus().map(createMenu)}\n            <Route render={() => <Redirect to=\"/404\" />} />\n        </Switch>\n    );\n};\n\nexport default CRouter;\n"
  },
  {
    "path": "src/service/config.ts",
    "content": "/**\n * Created by 叶子 on 2017/7/30.\n * 接口地址配置文件\n */\n\n//easy-mock模拟数据接口地址\nconst MOCK_API = 'https://react-admin-mock.now.sh/api';\nexport const MOCK_AUTH_ADMIN = MOCK_API + '/admin.js'; // 管理员权限接口\nexport const MOCK_AUTH_VISITOR = MOCK_API + '/visitor.js'; // 访问权限接口\n/** 服务端异步菜单接口 */\nexport const MOCK_MENU = MOCK_API + '/menu.js';\n\n// github授权\nexport const GIT_OAUTH = 'https://github.com/login/oauth';\n// github用户\nexport const GIT_USER = 'https://api.github.com/user';\n\n// bbc top news\nexport const NEWS_BBC =\n    'https://newsapi.org/v2/top-headlines?sources=bbc-news&apiKey=429904aa01f54a39a278a406acf50070';\n"
  },
  {
    "path": "src/service/index.ts",
    "content": "/**\n * Created by hao.cheng on 2017/4/16.\n */\nimport axios from 'axios';\nimport { get, post } from './tools';\nimport * as config from './config';\n\nexport const getBbcNews = () => get({ url: config.NEWS_BBC });\n\nexport const npmDependencies = () =>\n    axios\n        .get('./npm.json')\n        .then((res) => res.data)\n        .catch((err) => console.log(err));\n\nexport const weibo = () =>\n    axios\n        .get('./weibo.json')\n        .then((res) => res.data)\n        .catch((err) => console.log(err));\n\nexport const gitOauthLogin = () =>\n    get({\n        url: `${config.GIT_OAUTH}/authorize?client_id=792cdcd244e98dcd2dee&redirect_uri=http://localhost:3006/&scope=user&state=reactAdmin`,\n    });\nexport const gitOauthToken = (code: string) =>\n    post({\n        url: `https://cors-anywhere.herokuapp.com/${config.GIT_OAUTH}/access_token`,\n        data: {\n            client_id: '792cdcd244e98dcd2dee',\n            client_secret: '81c4ff9df390d482b7c8b214a55cf24bf1f53059',\n            redirect_uri: 'http://localhost:3006/',\n            state: 'reactAdmin',\n            code,\n        },\n    });\n// {headers: {Accept: 'application/json'}}\nexport const gitOauthInfo = (access_token: string) =>\n    get({ url: `${config.GIT_USER}access_token=${access_token}` });\n\n// easy-mock数据交互\n// 管理员权限获取\nexport const admin = () => get({ url: config.MOCK_AUTH_ADMIN });\n// 访问权限获取\nexport const guest = () => get({ url: config.MOCK_AUTH_VISITOR });\n/** 获取服务端菜单 */\nexport const fetchMenu = () => get({ url: config.MOCK_MENU });\n"
  },
  {
    "path": "src/service/tools.ts",
    "content": "/**\n * Created by 叶子 on 2017/7/30.\n * http通用工具函数\n */\nimport axios from 'axios';\nimport { message } from 'antd';\n\ninterface IFRequestParam {\n    url: string;\n    msg?: string;\n    config?: any;\n    data?: any;\n}\n/**\n * 公用get请求\n * @param url       接口地址\n * @param msg       接口异常提示\n * @param headers   接口所需header配置\n */\nexport const get = ({ url, msg = '接口异常', config }: IFRequestParam) =>\n    axios\n        .get(url, config)\n        .then((res) => res.data)\n        .catch((err) => {\n            console.log(err);\n            message.warn(msg);\n        });\n\n/**\n * 公用post请求\n * @param url       接口地址\n * @param data      接口参数\n * @param msg       接口异常提示\n * @param headers   接口所需header配置\n */\nexport const post = ({ url, data, msg = '接口异常', config }: IFRequestParam) =>\n    axios\n        .post(url, data, config)\n        .then((res) => res.data)\n        .catch((err) => {\n            console.log(err);\n            message.warn(msg);\n        });\n"
  },
  {
    "path": "src/serviceWorker.ts",
    "content": "// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n  window.location.hostname === 'localhost' ||\n    // [::1] is the IPv6 localhost address.\n    window.location.hostname === '[::1]' ||\n    // 127.0.0.1/8 is considered localhost for IPv4.\n    window.location.hostname.match(\n      /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n    )\n);\n\ntype Config = {\n  onSuccess?: (registration: ServiceWorkerRegistration) => void;\n  onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n  if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n    // The URL constructor is available in all browsers that support SW.\n    const publicUrl = new URL(\n      (process as { env: { [key: string]: string } }).env.PUBLIC_URL,\n      window.location.href\n    );\n    if (publicUrl.origin !== window.location.origin) {\n      // Our service worker won't work if PUBLIC_URL is on a different origin\n      // from what our page is served on. This might happen if a CDN is used to\n      // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n      return;\n    }\n\n    window.addEventListener('load', () => {\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n      if (isLocalhost) {\n        // This is running on localhost. Let's check if a service worker still exists or not.\n        checkValidServiceWorker(swUrl, config);\n\n        // Add some additional logging to localhost, pointing developers to the\n        // service worker/PWA documentation.\n        navigator.serviceWorker.ready.then(() => {\n          console.log(\n            'This web app is being served cache-first by a service ' +\n              'worker. To learn more, visit https://bit.ly/CRA-PWA'\n          );\n        });\n      } else {\n        // Is not localhost. Just register service worker\n        registerValidSW(swUrl, config);\n      }\n    });\n  }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n  navigator.serviceWorker\n    .register(swUrl)\n    .then(registration => {\n      registration.onupdatefound = () => {\n        const installingWorker = registration.installing;\n        if (installingWorker == null) {\n          return;\n        }\n        installingWorker.onstatechange = () => {\n          if (installingWorker.state === 'installed') {\n            if (navigator.serviceWorker.controller) {\n              // At this point, the updated precached content has been fetched,\n              // but the previous service worker will still serve the older\n              // content until all client tabs are closed.\n              console.log(\n                'New content is available and will be used when all ' +\n                  'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n              );\n\n              // Execute callback\n              if (config && config.onUpdate) {\n                config.onUpdate(registration);\n              }\n            } else {\n              // At this point, everything has been precached.\n              // It's the perfect time to display a\n              // \"Content is cached for offline use.\" message.\n              console.log('Content is cached for offline use.');\n\n              // Execute callback\n              if (config && config.onSuccess) {\n                config.onSuccess(registration);\n              }\n            }\n          }\n        };\n      };\n    })\n    .catch(error => {\n      console.error('Error during service worker registration:', error);\n    });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n  // Check if the service worker can be found. If it can't reload the page.\n  fetch(swUrl)\n    .then(response => {\n      // Ensure service worker exists, and that we really are getting a JS file.\n      const contentType = response.headers.get('content-type');\n      if (\n        response.status === 404 ||\n        (contentType != null && contentType.indexOf('javascript') === -1)\n      ) {\n        // No service worker found. Probably a different app. Reload the page.\n        navigator.serviceWorker.ready.then(registration => {\n          registration.unregister().then(() => {\n            window.location.reload();\n          });\n        });\n      } else {\n        // Service worker found. Proceed as normal.\n        registerValidSW(swUrl, config);\n      }\n    })\n    .catch(() => {\n      console.log(\n        'No internet connection found. App is running in offline mode.'\n      );\n    });\n}\n\nexport function unregister() {\n  if ('serviceWorker' in navigator) {\n    navigator.serviceWorker.ready.then(registration => {\n      registration.unregister();\n    });\n  }\n}\n"
  },
  {
    "path": "src/style/antd/header.less",
    "content": ".header {\n    padding: 0;\n    height: 65px;\n    .ant-menu {\n        background: transparent;\n        color: @white;\n        .ant-menu-item {\n            &:hover {\n                color: @white;\n            }\n        }\n    }\n}\n.header__trigger {\n    color: @white;\n}\n"
  },
  {
    "path": "src/style/antd/index.less",
    "content": "@import './variables.less';\n@import './menu.less';\n@import './utils.less';\n@import './header.less';\n@import './layout.less';\n@import './reset.less';\n"
  },
  {
    "path": "src/style/antd/layout.less",
    "content": ".ant-layout-content {\n    min-height: auto;\n}\n\n.ant-layout {\n    &.ant-layout-has-sider {\n        &.app_layout-mobile {\n            flex-direction: column;\n            .ant-layout-content {\n                margin: 0;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/style/antd/menu.less",
    "content": ".ant-menu-root {\n    &.ant-menu-inline, &.ant-menu-vertical {\n        background: @primary-color;\n        border-right: 1px solid @primary-color;\n        color: @white;\n        a {\n            color: @white;\n        }\n        .ant-menu-submenu-selected,  {\n            color: @white;\n        }\n        .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open, .ant-menu-submenu-active {\n            color: @white;\n        }\n        .ant-menu-submenu-title {\n            .ant-menu-submenu-arrow {\n                &::before, &::after {\n                    background: @white;\n                }\n            }\n            &:hover {\n                color: @white;\n                .ant-menu-submenu-arrow {\n                    &::before, &::after {\n                        background: @white;\n                    }\n                }\n            }\n        }\n        .ant-menu-submenu > .ant-menu {\n            background-color: @primary-color-light;\n        }\n        .ant-menu-item > a:hover {\n            color: @white;\n        }\n    }\n}\n.ant-menu-horizontal {\n    > .ant-menu-item-selected {\n        color: @white;\n    }\n}\n\n.sider-custom {\n    .ant-menu-submenu-title {\n        color: @white;\n    }\n}"
  },
  {
    "path": "src/style/antd/reset.less",
    "content": "/*\n * File: reset.less\n * Desc: 样式重写\n * File Created: 2020-04-12 23:08:16\n * Author: chenghao\n * ------\n * Copyright 2020 - present, karakal\n */\n"
  },
  {
    "path": "src/style/antd/utils.less",
    "content": "[class*=btn] {\n    cursor: pointer\n}\n\n.bg--primary {\n    background: @primary-color;\n}"
  },
  {
    "path": "src/style/antd/variables.less",
    "content": "@import \"../../../node_modules/antd/lib/style/themes/default.less\";\n// 基础颜色\n@white: #ffffff;\n@primary-color: #313653;\n@primary-color-light: fade(lighten(@primary-color, 5%), 15%);\n// 顶部背景色\n@layout-header-background:@primary-color;\n// 左边菜单light颜色\n@layout-sider-background-light: #f9f9f9;\n// 字体颜色\n@text-color: #000000;\n@table-selected-row-bg: #fbfbfb;\n@primary-2: @primary-color-light;\n// 基础圆角\n@border-radius-base: 2px;\n// 输入框后缀背景色\n@input-addon-bg: @primary-color;\n\n"
  },
  {
    "path": "src/style/app.less",
    "content": "/*\n * File: app.less\n * Desc: 描述\n * File Created: 2020-07-26 18:27:37\n * Author: yezi\n * ------\n * Copyright 2020 - present, yezi\n */\n@prefix: app;\n\n.@{prefix} {\n    &_layout {\n        flex-direction: column;\n        &_content {\n            margin: 0 16px;\n            overflow: initial;\n            flex: 1 1 0;\n        }\n        &_foot {\n            text-align: center;\n        }\n    }\n}\n"
  },
  {
    "path": "src/style/banner.less",
    "content": ".banner-user {\n  height: 200px;\n}\n.banner-user-elem {\n  text-align: center;\n  color: #fff;\n  position: relative;\n  overflow: hidden;\n  .banner-user-title {\n    font-size: 32px;\n    top: 40%;\n  }\n  .banner-user-text {\n    top: 40%;\n  }\n}\n.banner-anim-elem {\n  .bg {\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    top: 0;\n    left: 0;\n    overflow: hidden;\n  }\n}\n\n.custom-arrow-thumb{\n  height: 220px;\n  .user-arrow {\n    top: 50%;\n    margin-top: -40px;\n    .img-wrapper {\n      width: 120px;\n      height: 80px;\n      float: left;\n      position: relative;\n      li {\n        width: 100%;\n        height: 100%;\n        background-size: cover;\n        background-position: center;\n        position: absolute;\n      }\n    }\n    .arrow {\n      width: 20px;\n      height: 80px;\n      background: rgba(0, 0, 0, 0.3);\n      position: relative;\n      &:before, &:after {\n        width: 2px;\n        height: 15px;\n        background: #fff;\n        display: block;\n        content: ' ';\n        position: absolute;\n      }\n    }\n    &.next {\n      right: -120px;\n      .arrow {\n        float: left;\n        &:before {\n          -webkit-transform: rotate(-40deg);\n          transform: rotate(-40deg);\n          top: 28px;\n          left: 10px;\n        }\n        &:after {\n          -webkit-transform: rotate(40deg);\n          transform: rotate(40deg);\n          bottom: 27px;\n          left: 10px;\n        }\n      }\n    }\n    &.prev {\n      left: -120px;\n      .arrow {\n        float: right;\n        &:before {\n          -webkit-transform: rotate(40deg);\n          transform: rotate(40deg);\n          top: 28px;\n          left: 8px;\n        }\n        &:after {\n          -webkit-transform: rotate(-40deg);\n          transform: rotate(-40deg);\n          bottom: 27px;\n          left: 8px;\n        }\n      }\n    }\n  }\n  .user-thumb {\n    overflow: hidden;\n    background: rgba(255, 255, 255, 0.15);\n    height: 40px;\n    > span {\n      width: 50px;\n      height: 30px;\n      margin: 5px;\n      box-shadow: 0 0 5px rgba(0, 0, 0, 0.15);\n      -webkit-transition: background .3s;\n      transition: background .3s;\n      background: transparent;\n      &.active {\n        background: rgba(255, 255, 255, 0.45);\n      }\n      i {\n        display: block;\n        width: 46px;\n        height: 26px;\n        margin: 2px;\n        background-size: cover;\n        background-position: center;\n      }\n    }\n  }\n}"
  },
  {
    "path": "src/style/button.less",
    "content": ".ant-btn+.ant-btn {\n  margin-left: 10px;\n}"
  },
  {
    "path": "src/style/card.less",
    "content": ".react-draggable, .cursor-move{\n  cursor: move;\n  strong {\n    background: #ddd;\n    border: 1px solid #999;\n    border-radius: 3px;\n    display: block;\n    margin-bottom: 10px;\n    padding: 3px 5px;\n    text-align: center;\n  }\n}\n.no-cursor {\n  cursor: auto;\n}\n.card-tool {\n  position: absolute;\n  right: 24px;\n  top: 24px;\n}\n\n.list-group {\n  .list-group-item {\n    position: relative;\n    display: block;\n    margin-bottom: -1px;\n    padding: 12px 16px;\n    background: transparent;\n    border: 1px solid #ddd;\n    border-color: rgba(120, 130, 140, 0.065);\n    border-width: 1px 0;\n    &:first-child {\n      border-top-width: 0;\n    }\n    &:last-child {\n      border-bottom-width: 0;\n    }\n  }\n}\n.no-padding {\n  .ant-card-body {\n    padding: 0 !important;\n  }\n}"
  },
  {
    "path": "src/style/global.less",
    "content": "small {\n  opacity: .6;\n}\n.text-muted{\n  opacity: .6;\n}\n.clear{\n  display: block;\n  overflow: hidden;\n}\n.center {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n.y-center{\n  display: flex;\n  align-items: center;\n}\n.block{\n  display: block;\n}\n.inline {\n  display: inline;\n}\n.none{\n  display: none;\n}\n.b-white {\n  border-color: #ffffff;\n}\n.w-full {\n  width: 100%;\n}\n\n.w-auto {\n  width: auto;\n}\n\n.h-auto {\n  height: auto;\n}\n\n.h-full {\n  height: 100%;\n}\n\n.h-v {\n  height: 100vh;\n}\n\n.h-v-5 {\n  height: 50vh;\n}\n\n\n.pull-left {\n  float: left;\n}\n\n.pull-right {\n  float: right;\n}\n\n.w-40 {\n  width:  40px;\n  height: 40px;\n  line-height: 40px;\n  display: inline-block;\n  text-align: center;\n}"
  },
  {
    "path": "src/style/icons.less",
    "content": "ul.icons-list{\n  list-style: none;\n  overflow: hidden;\n  li{\n    float: left;\n    width: 10%;\n    text-align: center;\n    list-style: none;\n    cursor: pointer;\n    height: 100px;\n    transition: all .3s;\n    background-color: #fff;\n    &:hover{\n      background-color: #cccccc;\n      color: #fff;\n    }\n    i{\n      margin: 16px 0 10px;\n    }\n    span{\n      display: block;\n      text-align: center;\n    }\n  }\n}"
  },
  {
    "path": "src/style/img.less",
    "content": "img {\n  vertical-align: middle;\n}\n.img-responsive{\n  width: 100%;\n  height: auto;\n}\n.img-circle {\n  border-radius: 50%;\n}\n"
  },
  {
    "path": "src/style/index.less",
    "content": "@import 'variables';\n@import 'global';\n@import 'scroll';\n@import 'table';\n@import 'login';\n@import 'icons';\n@import 'button';\n@import 'modal';\n@import 'menu';\n@import 'banner';\n@import 'card';\n@import 'img';\n@import 'utils-text';\n@import 'utils-color';\n@import 'utils-size';\n@import 'utils-border';\n@import 'utils-spacing';\n@import 'app.less';\nbody {\n    margin: 0;\n    padding: 0;\n    font-family: sans-serif;\n}\n\n#root {\n    height: 100%;\n}\n.ant-layout {\n    height: 100%;\n    .logo {\n        height: 32px;\n        background: #ffffff;\n        border-radius: 6px;\n        margin: 16px;\n    }\n    .ant-layout-sider-collapsed {\n        .anticon {\n            font-size: 16px;\n            // margin-left: 8px;\n        }\n        .nav-text {\n            display: none;\n        }\n        .ant-menu-submenu-vertical > .ant-menu-submenu-title:after {\n            display: none;\n        }\n        .ant-menu-dark:not(.ant-menu-inline) .ant-menu-submenu-open {\n            color: inherit;\n        }\n    }\n    p {\n        margin: 10px 0 10px 0;\n    }\n}\n.gutter-example {\n    .ant-row {\n        //margin-left: 0 !important;\n        //margin-right: 0 !important;\n        > div {\n            background: transparent;\n            border: 0;\n        }\n    }\n}\n.gutter-box {\n    padding: 5px 0;\n}\n\n:global {\n    .ant-card-head-title {\n        font-size: 14px !important;\n    }\n}\n"
  },
  {
    "path": "src/style/lib/animate.css",
    "content": "@charset \"UTF-8\";\n\n/*!\n * animate.css -http://daneden.me/animate\n * Version - 3.5.1\n * Licensed under the MIT license - http://opensource.org/licenses/MIT\n *\n * Copyright (c) 2016 Daniel Eden\n */\n\n.animated {\n    -webkit-animation-duration: 1s;\n    animation-duration: 1s;\n    -webkit-animation-fill-mode: both;\n    animation-fill-mode: both;\n}\n\n.animated.infinite {\n    -webkit-animation-iteration-count: infinite;\n    animation-iteration-count: infinite;\n}\n\n.animated.hinge {\n    -webkit-animation-duration: 2s;\n    animation-duration: 2s;\n}\n\n.animated.flipOutX,\n.animated.flipOutY,\n.animated.bounceIn,\n.animated.bounceOut {\n    -webkit-animation-duration: 0.75s;\n    animation-duration: 0.75s;\n}\n\n@-webkit-keyframes bounce {\n    from,\n    20%,\n    53%,\n    80%,\n    to {\n        -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n        animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n\n    40%,\n    43% {\n        -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n        animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n        -webkit-transform: translate3d(0, -30px, 0);\n        transform: translate3d(0, -30px, 0);\n    }\n\n    70% {\n        -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n        animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n        -webkit-transform: translate3d(0, -15px, 0);\n        transform: translate3d(0, -15px, 0);\n    }\n\n    90% {\n        -webkit-transform: translate3d(0, -4px, 0);\n        transform: translate3d(0, -4px, 0);\n    }\n}\n\n@keyframes bounce {\n    from,\n    20%,\n    53%,\n    80%,\n    to {\n        -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n        animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n\n    40%,\n    43% {\n        -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n        animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n        -webkit-transform: translate3d(0, -30px, 0);\n        transform: translate3d(0, -30px, 0);\n    }\n\n    70% {\n        -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n        animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n        -webkit-transform: translate3d(0, -15px, 0);\n        transform: translate3d(0, -15px, 0);\n    }\n\n    90% {\n        -webkit-transform: translate3d(0, -4px, 0);\n        transform: translate3d(0, -4px, 0);\n    }\n}\n\n.bounce {\n    -webkit-animation-name: bounce;\n    animation-name: bounce;\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n}\n\n@-webkit-keyframes flash {\n    from,\n    50%,\n    to {\n        opacity: 1;\n    }\n\n    25%,\n    75% {\n        opacity: 0;\n    }\n}\n\n@keyframes flash {\n    from,\n    50%,\n    to {\n        opacity: 1;\n    }\n\n    25%,\n    75% {\n        opacity: 0;\n    }\n}\n\n.flash {\n    -webkit-animation-name: flash;\n    animation-name: flash;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes pulse {\n    from {\n        -webkit-transform: scale3d(1, 1, 1);\n        transform: scale3d(1, 1, 1);\n    }\n\n    50% {\n        -webkit-transform: scale3d(1.05, 1.05, 1.05);\n        transform: scale3d(1.05, 1.05, 1.05);\n    }\n\n    to {\n        -webkit-transform: scale3d(1, 1, 1);\n        transform: scale3d(1, 1, 1);\n    }\n}\n\n@keyframes pulse {\n    from {\n        -webkit-transform: scale3d(1, 1, 1);\n        transform: scale3d(1, 1, 1);\n    }\n\n    50% {\n        -webkit-transform: scale3d(1.05, 1.05, 1.05);\n        transform: scale3d(1.05, 1.05, 1.05);\n    }\n\n    to {\n        -webkit-transform: scale3d(1, 1, 1);\n        transform: scale3d(1, 1, 1);\n    }\n}\n\n.pulse {\n    -webkit-animation-name: pulse;\n    animation-name: pulse;\n}\n\n@-webkit-keyframes rubberBand {\n    from {\n        -webkit-transform: scale3d(1, 1, 1);\n        transform: scale3d(1, 1, 1);\n    }\n\n    30% {\n        -webkit-transform: scale3d(1.25, 0.75, 1);\n        transform: scale3d(1.25, 0.75, 1);\n    }\n\n    40% {\n        -webkit-transform: scale3d(0.75, 1.25, 1);\n        transform: scale3d(0.75, 1.25, 1);\n    }\n\n    50% {\n        -webkit-transform: scale3d(1.15, 0.85, 1);\n        transform: scale3d(1.15, 0.85, 1);\n    }\n\n    65% {\n        -webkit-transform: scale3d(0.95, 1.05, 1);\n        transform: scale3d(0.95, 1.05, 1);\n    }\n\n    75% {\n        -webkit-transform: scale3d(1.05, 0.95, 1);\n        transform: scale3d(1.05, 0.95, 1);\n    }\n\n    to {\n        -webkit-transform: scale3d(1, 1, 1);\n        transform: scale3d(1, 1, 1);\n    }\n}\n\n@keyframes rubberBand {\n    from {\n        -webkit-transform: scale3d(1, 1, 1);\n        transform: scale3d(1, 1, 1);\n    }\n\n    30% {\n        -webkit-transform: scale3d(1.25, 0.75, 1);\n        transform: scale3d(1.25, 0.75, 1);\n    }\n\n    40% {\n        -webkit-transform: scale3d(0.75, 1.25, 1);\n        transform: scale3d(0.75, 1.25, 1);\n    }\n\n    50% {\n        -webkit-transform: scale3d(1.15, 0.85, 1);\n        transform: scale3d(1.15, 0.85, 1);\n    }\n\n    65% {\n        -webkit-transform: scale3d(0.95, 1.05, 1);\n        transform: scale3d(0.95, 1.05, 1);\n    }\n\n    75% {\n        -webkit-transform: scale3d(1.05, 0.95, 1);\n        transform: scale3d(1.05, 0.95, 1);\n    }\n\n    to {\n        -webkit-transform: scale3d(1, 1, 1);\n        transform: scale3d(1, 1, 1);\n    }\n}\n\n.rubberBand {\n    -webkit-animation-name: rubberBand;\n    animation-name: rubberBand;\n}\n\n@-webkit-keyframes shake {\n    from,\n    to {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n\n    10%,\n    30%,\n    50%,\n    70%,\n    90% {\n        -webkit-transform: translate3d(-10px, 0, 0);\n        transform: translate3d(-10px, 0, 0);\n    }\n\n    20%,\n    40%,\n    60%,\n    80% {\n        -webkit-transform: translate3d(10px, 0, 0);\n        transform: translate3d(10px, 0, 0);\n    }\n}\n\n@keyframes shake {\n    from,\n    to {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n\n    10%,\n    30%,\n    50%,\n    70%,\n    90% {\n        -webkit-transform: translate3d(-10px, 0, 0);\n        transform: translate3d(-10px, 0, 0);\n    }\n\n    20%,\n    40%,\n    60%,\n    80% {\n        -webkit-transform: translate3d(10px, 0, 0);\n        transform: translate3d(10px, 0, 0);\n    }\n}\n\n.shake {\n    -webkit-animation-name: shake;\n    animation-name: shake;\n}\n\n@-webkit-keyframes headShake {\n    0% {\n        -webkit-transform: translateX(0);\n        transform: translateX(0);\n    }\n\n    6.5% {\n        -webkit-transform: translateX(-6px) rotateY(-9deg);\n        transform: translateX(-6px) rotateY(-9deg);\n    }\n\n    18.5% {\n        -webkit-transform: translateX(5px) rotateY(7deg);\n        transform: translateX(5px) rotateY(7deg);\n    }\n\n    31.5% {\n        -webkit-transform: translateX(-3px) rotateY(-5deg);\n        transform: translateX(-3px) rotateY(-5deg);\n    }\n\n    43.5% {\n        -webkit-transform: translateX(2px) rotateY(3deg);\n        transform: translateX(2px) rotateY(3deg);\n    }\n\n    50% {\n        -webkit-transform: translateX(0);\n        transform: translateX(0);\n    }\n}\n\n@keyframes headShake {\n    0% {\n        -webkit-transform: translateX(0);\n        transform: translateX(0);\n    }\n\n    6.5% {\n        -webkit-transform: translateX(-6px) rotateY(-9deg);\n        transform: translateX(-6px) rotateY(-9deg);\n    }\n\n    18.5% {\n        -webkit-transform: translateX(5px) rotateY(7deg);\n        transform: translateX(5px) rotateY(7deg);\n    }\n\n    31.5% {\n        -webkit-transform: translateX(-3px) rotateY(-5deg);\n        transform: translateX(-3px) rotateY(-5deg);\n    }\n\n    43.5% {\n        -webkit-transform: translateX(2px) rotateY(3deg);\n        transform: translateX(2px) rotateY(3deg);\n    }\n\n    50% {\n        -webkit-transform: translateX(0);\n        transform: translateX(0);\n    }\n}\n\n.headShake {\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n    -webkit-animation-name: headShake;\n    animation-name: headShake;\n}\n\n@-webkit-keyframes swing {\n    20% {\n        -webkit-transform: rotate3d(0, 0, 1, 15deg);\n        transform: rotate3d(0, 0, 1, 15deg);\n    }\n\n    40% {\n        -webkit-transform: rotate3d(0, 0, 1, -10deg);\n        transform: rotate3d(0, 0, 1, -10deg);\n    }\n\n    60% {\n        -webkit-transform: rotate3d(0, 0, 1, 5deg);\n        transform: rotate3d(0, 0, 1, 5deg);\n    }\n\n    80% {\n        -webkit-transform: rotate3d(0, 0, 1, -5deg);\n        transform: rotate3d(0, 0, 1, -5deg);\n    }\n\n    to {\n        -webkit-transform: rotate3d(0, 0, 1, 0deg);\n        transform: rotate3d(0, 0, 1, 0deg);\n    }\n}\n\n@keyframes swing {\n    20% {\n        -webkit-transform: rotate3d(0, 0, 1, 15deg);\n        transform: rotate3d(0, 0, 1, 15deg);\n    }\n\n    40% {\n        -webkit-transform: rotate3d(0, 0, 1, -10deg);\n        transform: rotate3d(0, 0, 1, -10deg);\n    }\n\n    60% {\n        -webkit-transform: rotate3d(0, 0, 1, 5deg);\n        transform: rotate3d(0, 0, 1, 5deg);\n    }\n\n    80% {\n        -webkit-transform: rotate3d(0, 0, 1, -5deg);\n        transform: rotate3d(0, 0, 1, -5deg);\n    }\n\n    to {\n        -webkit-transform: rotate3d(0, 0, 1, 0deg);\n        transform: rotate3d(0, 0, 1, 0deg);\n    }\n}\n\n.swing {\n    -webkit-transform-origin: top center;\n    transform-origin: top center;\n    -webkit-animation-name: swing;\n    animation-name: swing;\n}\n\n@-webkit-keyframes tada {\n    from {\n        -webkit-transform: scale3d(1, 1, 1);\n        transform: scale3d(1, 1, 1);\n    }\n\n    10%,\n    20% {\n        -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n        transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n    }\n\n    30%,\n    50%,\n    70%,\n    90% {\n        -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n        transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n    }\n\n    40%,\n    60%,\n    80% {\n        -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n        transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n    }\n\n    to {\n        -webkit-transform: scale3d(1, 1, 1);\n        transform: scale3d(1, 1, 1);\n    }\n}\n\n@keyframes tada {\n    from {\n        -webkit-transform: scale3d(1, 1, 1);\n        transform: scale3d(1, 1, 1);\n    }\n\n    10%,\n    20% {\n        -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n        transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n    }\n\n    30%,\n    50%,\n    70%,\n    90% {\n        -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n        transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n    }\n\n    40%,\n    60%,\n    80% {\n        -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n        transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n    }\n\n    to {\n        -webkit-transform: scale3d(1, 1, 1);\n        transform: scale3d(1, 1, 1);\n    }\n}\n\n.tada {\n    -webkit-animation-name: tada;\n    animation-name: tada;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes wobble {\n    from {\n        -webkit-transform: none;\n        transform: none;\n    }\n\n    15% {\n        -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n        transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n    }\n\n    30% {\n        -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n        transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n    }\n\n    45% {\n        -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n        transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n    }\n\n    60% {\n        -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n        transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n    }\n\n    75% {\n        -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n        transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n    }\n\n    to {\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n@keyframes wobble {\n    from {\n        -webkit-transform: none;\n        transform: none;\n    }\n\n    15% {\n        -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n        transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n    }\n\n    30% {\n        -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n        transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n    }\n\n    45% {\n        -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n        transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n    }\n\n    60% {\n        -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n        transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n    }\n\n    75% {\n        -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n        transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n    }\n\n    to {\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n.wobble {\n    -webkit-animation-name: wobble;\n    animation-name: wobble;\n}\n\n@-webkit-keyframes jello {\n    from,\n    11.1%,\n    to {\n        -webkit-transform: none;\n        transform: none;\n    }\n\n    22.2% {\n        -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n        transform: skewX(-12.5deg) skewY(-12.5deg);\n    }\n\n    33.3% {\n        -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n        transform: skewX(6.25deg) skewY(6.25deg);\n    }\n\n    44.4% {\n        -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n        transform: skewX(-3.125deg) skewY(-3.125deg);\n    }\n\n    55.5% {\n        -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n        transform: skewX(1.5625deg) skewY(1.5625deg);\n    }\n\n    66.6% {\n        -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n        transform: skewX(-0.78125deg) skewY(-0.78125deg);\n    }\n\n    77.7% {\n        -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n        transform: skewX(0.390625deg) skewY(0.390625deg);\n    }\n\n    88.8% {\n        -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n        transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n    }\n}\n\n@keyframes jello {\n    from,\n    11.1%,\n    to {\n        -webkit-transform: none;\n        transform: none;\n    }\n\n    22.2% {\n        -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n        transform: skewX(-12.5deg) skewY(-12.5deg);\n    }\n\n    33.3% {\n        -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n        transform: skewX(6.25deg) skewY(6.25deg);\n    }\n\n    44.4% {\n        -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n        transform: skewX(-3.125deg) skewY(-3.125deg);\n    }\n\n    55.5% {\n        -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n        transform: skewX(1.5625deg) skewY(1.5625deg);\n    }\n\n    66.6% {\n        -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n        transform: skewX(-0.78125deg) skewY(-0.78125deg);\n    }\n\n    77.7% {\n        -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n        transform: skewX(0.390625deg) skewY(0.390625deg);\n    }\n\n    88.8% {\n        -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n        transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n    }\n}\n\n.jello {\n    -webkit-animation-name: jello;\n    animation-name: jello;\n    -webkit-transform-origin: center;\n    transform-origin: center;\n}\n\n@-webkit-keyframes bounceIn {\n    from,\n    20%,\n    40%,\n    60%,\n    80%,\n    to {\n        -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n        animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    }\n\n    0% {\n        opacity: 0;\n        -webkit-transform: scale3d(0.3, 0.3, 0.3);\n        transform: scale3d(0.3, 0.3, 0.3);\n    }\n\n    20% {\n        -webkit-transform: scale3d(1.1, 1.1, 1.1);\n        transform: scale3d(1.1, 1.1, 1.1);\n    }\n\n    40% {\n        -webkit-transform: scale3d(0.9, 0.9, 0.9);\n        transform: scale3d(0.9, 0.9, 0.9);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: scale3d(1.03, 1.03, 1.03);\n        transform: scale3d(1.03, 1.03, 1.03);\n    }\n\n    80% {\n        -webkit-transform: scale3d(0.97, 0.97, 0.97);\n        transform: scale3d(0.97, 0.97, 0.97);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: scale3d(1, 1, 1);\n        transform: scale3d(1, 1, 1);\n    }\n}\n\n@keyframes bounceIn {\n    from,\n    20%,\n    40%,\n    60%,\n    80%,\n    to {\n        -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n        animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    }\n\n    0% {\n        opacity: 0;\n        -webkit-transform: scale3d(0.3, 0.3, 0.3);\n        transform: scale3d(0.3, 0.3, 0.3);\n    }\n\n    20% {\n        -webkit-transform: scale3d(1.1, 1.1, 1.1);\n        transform: scale3d(1.1, 1.1, 1.1);\n    }\n\n    40% {\n        -webkit-transform: scale3d(0.9, 0.9, 0.9);\n        transform: scale3d(0.9, 0.9, 0.9);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: scale3d(1.03, 1.03, 1.03);\n        transform: scale3d(1.03, 1.03, 1.03);\n    }\n\n    80% {\n        -webkit-transform: scale3d(0.97, 0.97, 0.97);\n        transform: scale3d(0.97, 0.97, 0.97);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: scale3d(1, 1, 1);\n        transform: scale3d(1, 1, 1);\n    }\n}\n\n.bounceIn {\n    -webkit-animation-name: bounceIn;\n    animation-name: bounceIn;\n}\n\n@-webkit-keyframes bounceInDown {\n    from,\n    60%,\n    75%,\n    90%,\n    to {\n        -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n        animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    }\n\n    0% {\n        opacity: 0;\n        -webkit-transform: translate3d(0, -3000px, 0);\n        transform: translate3d(0, -3000px, 0);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: translate3d(0, 25px, 0);\n        transform: translate3d(0, 25px, 0);\n    }\n\n    75% {\n        -webkit-transform: translate3d(0, -10px, 0);\n        transform: translate3d(0, -10px, 0);\n    }\n\n    90% {\n        -webkit-transform: translate3d(0, 5px, 0);\n        transform: translate3d(0, 5px, 0);\n    }\n\n    to {\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n@keyframes bounceInDown {\n    from,\n    60%,\n    75%,\n    90%,\n    to {\n        -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n        animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    }\n\n    0% {\n        opacity: 0;\n        -webkit-transform: translate3d(0, -3000px, 0);\n        transform: translate3d(0, -3000px, 0);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: translate3d(0, 25px, 0);\n        transform: translate3d(0, 25px, 0);\n    }\n\n    75% {\n        -webkit-transform: translate3d(0, -10px, 0);\n        transform: translate3d(0, -10px, 0);\n    }\n\n    90% {\n        -webkit-transform: translate3d(0, 5px, 0);\n        transform: translate3d(0, 5px, 0);\n    }\n\n    to {\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n.bounceInDown {\n    -webkit-animation-name: bounceInDown;\n    animation-name: bounceInDown;\n}\n\n@-webkit-keyframes bounceInLeft {\n    from,\n    60%,\n    75%,\n    90%,\n    to {\n        -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n        animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    }\n\n    0% {\n        opacity: 0;\n        -webkit-transform: translate3d(-3000px, 0, 0);\n        transform: translate3d(-3000px, 0, 0);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: translate3d(25px, 0, 0);\n        transform: translate3d(25px, 0, 0);\n    }\n\n    75% {\n        -webkit-transform: translate3d(-10px, 0, 0);\n        transform: translate3d(-10px, 0, 0);\n    }\n\n    90% {\n        -webkit-transform: translate3d(5px, 0, 0);\n        transform: translate3d(5px, 0, 0);\n    }\n\n    to {\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n@keyframes bounceInLeft {\n    from,\n    60%,\n    75%,\n    90%,\n    to {\n        -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n        animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    }\n\n    0% {\n        opacity: 0;\n        -webkit-transform: translate3d(-3000px, 0, 0);\n        transform: translate3d(-3000px, 0, 0);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: translate3d(25px, 0, 0);\n        transform: translate3d(25px, 0, 0);\n    }\n\n    75% {\n        -webkit-transform: translate3d(-10px, 0, 0);\n        transform: translate3d(-10px, 0, 0);\n    }\n\n    90% {\n        -webkit-transform: translate3d(5px, 0, 0);\n        transform: translate3d(5px, 0, 0);\n    }\n\n    to {\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n.bounceInLeft {\n    -webkit-animation-name: bounceInLeft;\n    animation-name: bounceInLeft;\n}\n\n@-webkit-keyframes bounceInRight {\n    from,\n    60%,\n    75%,\n    90%,\n    to {\n        -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n        animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    }\n\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(3000px, 0, 0);\n        transform: translate3d(3000px, 0, 0);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: translate3d(-25px, 0, 0);\n        transform: translate3d(-25px, 0, 0);\n    }\n\n    75% {\n        -webkit-transform: translate3d(10px, 0, 0);\n        transform: translate3d(10px, 0, 0);\n    }\n\n    90% {\n        -webkit-transform: translate3d(-5px, 0, 0);\n        transform: translate3d(-5px, 0, 0);\n    }\n\n    to {\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n@keyframes bounceInRight {\n    from,\n    60%,\n    75%,\n    90%,\n    to {\n        -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n        animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    }\n\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(3000px, 0, 0);\n        transform: translate3d(3000px, 0, 0);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: translate3d(-25px, 0, 0);\n        transform: translate3d(-25px, 0, 0);\n    }\n\n    75% {\n        -webkit-transform: translate3d(10px, 0, 0);\n        transform: translate3d(10px, 0, 0);\n    }\n\n    90% {\n        -webkit-transform: translate3d(-5px, 0, 0);\n        transform: translate3d(-5px, 0, 0);\n    }\n\n    to {\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n.bounceInRight {\n    -webkit-animation-name: bounceInRight;\n    animation-name: bounceInRight;\n}\n\n@-webkit-keyframes bounceInUp {\n    from,\n    60%,\n    75%,\n    90%,\n    to {\n        -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n        animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    }\n\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(0, 3000px, 0);\n        transform: translate3d(0, 3000px, 0);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: translate3d(0, -20px, 0);\n        transform: translate3d(0, -20px, 0);\n    }\n\n    75% {\n        -webkit-transform: translate3d(0, 10px, 0);\n        transform: translate3d(0, 10px, 0);\n    }\n\n    90% {\n        -webkit-transform: translate3d(0, -5px, 0);\n        transform: translate3d(0, -5px, 0);\n    }\n\n    to {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n}\n\n@keyframes bounceInUp {\n    from,\n    60%,\n    75%,\n    90%,\n    to {\n        -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n        animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    }\n\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(0, 3000px, 0);\n        transform: translate3d(0, 3000px, 0);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: translate3d(0, -20px, 0);\n        transform: translate3d(0, -20px, 0);\n    }\n\n    75% {\n        -webkit-transform: translate3d(0, 10px, 0);\n        transform: translate3d(0, 10px, 0);\n    }\n\n    90% {\n        -webkit-transform: translate3d(0, -5px, 0);\n        transform: translate3d(0, -5px, 0);\n    }\n\n    to {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n}\n\n.bounceInUp {\n    -webkit-animation-name: bounceInUp;\n    animation-name: bounceInUp;\n}\n\n@-webkit-keyframes bounceOut {\n    20% {\n        -webkit-transform: scale3d(0.9, 0.9, 0.9);\n        transform: scale3d(0.9, 0.9, 0.9);\n    }\n\n    50%,\n    55% {\n        opacity: 1;\n        -webkit-transform: scale3d(1.1, 1.1, 1.1);\n        transform: scale3d(1.1, 1.1, 1.1);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: scale3d(0.3, 0.3, 0.3);\n        transform: scale3d(0.3, 0.3, 0.3);\n    }\n}\n\n@keyframes bounceOut {\n    20% {\n        -webkit-transform: scale3d(0.9, 0.9, 0.9);\n        transform: scale3d(0.9, 0.9, 0.9);\n    }\n\n    50%,\n    55% {\n        opacity: 1;\n        -webkit-transform: scale3d(1.1, 1.1, 1.1);\n        transform: scale3d(1.1, 1.1, 1.1);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: scale3d(0.3, 0.3, 0.3);\n        transform: scale3d(0.3, 0.3, 0.3);\n    }\n}\n\n.bounceOut {\n    -webkit-animation-name: bounceOut;\n    animation-name: bounceOut;\n}\n\n@-webkit-keyframes bounceOutDown {\n    20% {\n        -webkit-transform: translate3d(0, 10px, 0);\n        transform: translate3d(0, 10px, 0);\n    }\n\n    40%,\n    45% {\n        opacity: 1;\n        -webkit-transform: translate3d(0, -20px, 0);\n        transform: translate3d(0, -20px, 0);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(0, 2000px, 0);\n        transform: translate3d(0, 2000px, 0);\n    }\n}\n\n@keyframes bounceOutDown {\n    20% {\n        -webkit-transform: translate3d(0, 10px, 0);\n        transform: translate3d(0, 10px, 0);\n    }\n\n    40%,\n    45% {\n        opacity: 1;\n        -webkit-transform: translate3d(0, -20px, 0);\n        transform: translate3d(0, -20px, 0);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(0, 2000px, 0);\n        transform: translate3d(0, 2000px, 0);\n    }\n}\n\n.bounceOutDown {\n    -webkit-animation-name: bounceOutDown;\n    animation-name: bounceOutDown;\n}\n\n@-webkit-keyframes bounceOutLeft {\n    20% {\n        opacity: 1;\n        -webkit-transform: translate3d(20px, 0, 0);\n        transform: translate3d(20px, 0, 0);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(-2000px, 0, 0);\n        transform: translate3d(-2000px, 0, 0);\n    }\n}\n\n@keyframes bounceOutLeft {\n    20% {\n        opacity: 1;\n        -webkit-transform: translate3d(20px, 0, 0);\n        transform: translate3d(20px, 0, 0);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(-2000px, 0, 0);\n        transform: translate3d(-2000px, 0, 0);\n    }\n}\n\n.bounceOutLeft {\n    -webkit-animation-name: bounceOutLeft;\n    animation-name: bounceOutLeft;\n}\n\n@-webkit-keyframes bounceOutRight {\n    20% {\n        opacity: 1;\n        -webkit-transform: translate3d(-20px, 0, 0);\n        transform: translate3d(-20px, 0, 0);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(2000px, 0, 0);\n        transform: translate3d(2000px, 0, 0);\n    }\n}\n\n@keyframes bounceOutRight {\n    20% {\n        opacity: 1;\n        -webkit-transform: translate3d(-20px, 0, 0);\n        transform: translate3d(-20px, 0, 0);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(2000px, 0, 0);\n        transform: translate3d(2000px, 0, 0);\n    }\n}\n\n.bounceOutRight {\n    -webkit-animation-name: bounceOutRight;\n    animation-name: bounceOutRight;\n}\n\n@-webkit-keyframes bounceOutUp {\n    20% {\n        -webkit-transform: translate3d(0, -10px, 0);\n        transform: translate3d(0, -10px, 0);\n    }\n\n    40%,\n    45% {\n        opacity: 1;\n        -webkit-transform: translate3d(0, 20px, 0);\n        transform: translate3d(0, 20px, 0);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(0, -2000px, 0);\n        transform: translate3d(0, -2000px, 0);\n    }\n}\n\n@keyframes bounceOutUp {\n    20% {\n        -webkit-transform: translate3d(0, -10px, 0);\n        transform: translate3d(0, -10px, 0);\n    }\n\n    40%,\n    45% {\n        opacity: 1;\n        -webkit-transform: translate3d(0, 20px, 0);\n        transform: translate3d(0, 20px, 0);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(0, -2000px, 0);\n        transform: translate3d(0, -2000px, 0);\n    }\n}\n\n.bounceOutUp {\n    -webkit-animation-name: bounceOutUp;\n    animation-name: bounceOutUp;\n}\n\n@-webkit-keyframes fadeIn {\n    from {\n        opacity: 0;\n    }\n\n    to {\n        opacity: 1;\n    }\n}\n\n@keyframes fadeIn {\n    from {\n        opacity: 0;\n    }\n\n    to {\n        opacity: 1;\n    }\n}\n\n.fadeIn {\n    -webkit-animation-name: fadeIn;\n    animation-name: fadeIn;\n}\n\n@-webkit-keyframes fadeInDown {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(0, -100%, 0);\n        transform: translate3d(0, -100%, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n@keyframes fadeInDown {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(0, -100%, 0);\n        transform: translate3d(0, -100%, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n.fadeInDown {\n    -webkit-animation-name: fadeInDown;\n    animation-name: fadeInDown;\n}\n\n@-webkit-keyframes fadeInDownBig {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(0, -2000px, 0);\n        transform: translate3d(0, -2000px, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n@keyframes fadeInDownBig {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(0, -2000px, 0);\n        transform: translate3d(0, -2000px, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n.fadeInDownBig {\n    -webkit-animation-name: fadeInDownBig;\n    animation-name: fadeInDownBig;\n}\n\n@-webkit-keyframes fadeInLeft {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(-100%, 0, 0);\n        transform: translate3d(-100%, 0, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n@keyframes fadeInLeft {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(-100%, 0, 0);\n        transform: translate3d(-100%, 0, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n.fadeInLeft {\n    -webkit-animation-name: fadeInLeft;\n    animation-name: fadeInLeft;\n}\n\n@-webkit-keyframes fadeInLeftBig {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(-2000px, 0, 0);\n        transform: translate3d(-2000px, 0, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n@keyframes fadeInLeftBig {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(-2000px, 0, 0);\n        transform: translate3d(-2000px, 0, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n.fadeInLeftBig {\n    -webkit-animation-name: fadeInLeftBig;\n    animation-name: fadeInLeftBig;\n}\n\n@-webkit-keyframes fadeInRight {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(100%, 0, 0);\n        transform: translate3d(100%, 0, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n@keyframes fadeInRight {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(100%, 0, 0);\n        transform: translate3d(100%, 0, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n.fadeInRight {\n    -webkit-animation-name: fadeInRight;\n    animation-name: fadeInRight;\n}\n\n@-webkit-keyframes fadeInRightBig {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(2000px, 0, 0);\n        transform: translate3d(2000px, 0, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n@keyframes fadeInRightBig {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(2000px, 0, 0);\n        transform: translate3d(2000px, 0, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n.fadeInRightBig {\n    -webkit-animation-name: fadeInRightBig;\n    animation-name: fadeInRightBig;\n}\n\n@-webkit-keyframes fadeInUp {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(0, 100%, 0);\n        transform: translate3d(0, 100%, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n@keyframes fadeInUp {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(0, 100%, 0);\n        transform: translate3d(0, 100%, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n.fadeInUp {\n    -webkit-animation-name: fadeInUp;\n    animation-name: fadeInUp;\n}\n\n@-webkit-keyframes fadeInUpBig {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(0, 2000px, 0);\n        transform: translate3d(0, 2000px, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n@keyframes fadeInUpBig {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(0, 2000px, 0);\n        transform: translate3d(0, 2000px, 0);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n.fadeInUpBig {\n    -webkit-animation-name: fadeInUpBig;\n    animation-name: fadeInUpBig;\n}\n\n@-webkit-keyframes fadeOut {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n    }\n}\n\n@keyframes fadeOut {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n    }\n}\n\n.fadeOut {\n    -webkit-animation-name: fadeOut;\n    animation-name: fadeOut;\n}\n\n@-webkit-keyframes fadeOutDown {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(0, 100%, 0);\n        transform: translate3d(0, 100%, 0);\n    }\n}\n\n@keyframes fadeOutDown {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(0, 100%, 0);\n        transform: translate3d(0, 100%, 0);\n    }\n}\n\n.fadeOutDown {\n    -webkit-animation-name: fadeOutDown;\n    animation-name: fadeOutDown;\n}\n\n@-webkit-keyframes fadeOutDownBig {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(0, 2000px, 0);\n        transform: translate3d(0, 2000px, 0);\n    }\n}\n\n@keyframes fadeOutDownBig {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(0, 2000px, 0);\n        transform: translate3d(0, 2000px, 0);\n    }\n}\n\n.fadeOutDownBig {\n    -webkit-animation-name: fadeOutDownBig;\n    animation-name: fadeOutDownBig;\n}\n\n@-webkit-keyframes fadeOutLeft {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(-100%, 0, 0);\n        transform: translate3d(-100%, 0, 0);\n    }\n}\n\n@keyframes fadeOutLeft {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(-100%, 0, 0);\n        transform: translate3d(-100%, 0, 0);\n    }\n}\n\n.fadeOutLeft {\n    -webkit-animation-name: fadeOutLeft;\n    animation-name: fadeOutLeft;\n}\n\n@-webkit-keyframes fadeOutLeftBig {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(-2000px, 0, 0);\n        transform: translate3d(-2000px, 0, 0);\n    }\n}\n\n@keyframes fadeOutLeftBig {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(-2000px, 0, 0);\n        transform: translate3d(-2000px, 0, 0);\n    }\n}\n\n.fadeOutLeftBig {\n    -webkit-animation-name: fadeOutLeftBig;\n    animation-name: fadeOutLeftBig;\n}\n\n@-webkit-keyframes fadeOutRight {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(100%, 0, 0);\n        transform: translate3d(100%, 0, 0);\n    }\n}\n\n@keyframes fadeOutRight {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(100%, 0, 0);\n        transform: translate3d(100%, 0, 0);\n    }\n}\n\n.fadeOutRight {\n    -webkit-animation-name: fadeOutRight;\n    animation-name: fadeOutRight;\n}\n\n@-webkit-keyframes fadeOutRightBig {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(2000px, 0, 0);\n        transform: translate3d(2000px, 0, 0);\n    }\n}\n\n@keyframes fadeOutRightBig {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(2000px, 0, 0);\n        transform: translate3d(2000px, 0, 0);\n    }\n}\n\n.fadeOutRightBig {\n    -webkit-animation-name: fadeOutRightBig;\n    animation-name: fadeOutRightBig;\n}\n\n@-webkit-keyframes fadeOutUp {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(0, -100%, 0);\n        transform: translate3d(0, -100%, 0);\n    }\n}\n\n@keyframes fadeOutUp {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(0, -100%, 0);\n        transform: translate3d(0, -100%, 0);\n    }\n}\n\n.fadeOutUp {\n    -webkit-animation-name: fadeOutUp;\n    animation-name: fadeOutUp;\n}\n\n@-webkit-keyframes fadeOutUpBig {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(0, -2000px, 0);\n        transform: translate3d(0, -2000px, 0);\n    }\n}\n\n@keyframes fadeOutUpBig {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(0, -2000px, 0);\n        transform: translate3d(0, -2000px, 0);\n    }\n}\n\n.fadeOutUpBig {\n    -webkit-animation-name: fadeOutUpBig;\n    animation-name: fadeOutUpBig;\n}\n\n@-webkit-keyframes flip {\n    from {\n        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n        transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n        -webkit-animation-timing-function: ease-out;\n        animation-timing-function: ease-out;\n    }\n\n    40% {\n        -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n        transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n        -webkit-animation-timing-function: ease-out;\n        animation-timing-function: ease-out;\n    }\n\n    50% {\n        -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n        transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in;\n    }\n\n    80% {\n        -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n        transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in;\n    }\n\n    to {\n        -webkit-transform: perspective(400px);\n        transform: perspective(400px);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in;\n    }\n}\n\n@keyframes flip {\n    from {\n        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n        transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n        -webkit-animation-timing-function: ease-out;\n        animation-timing-function: ease-out;\n    }\n\n    40% {\n        -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n        transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n        -webkit-animation-timing-function: ease-out;\n        animation-timing-function: ease-out;\n    }\n\n    50% {\n        -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n        transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in;\n    }\n\n    80% {\n        -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n        transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in;\n    }\n\n    to {\n        -webkit-transform: perspective(400px);\n        transform: perspective(400px);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in;\n    }\n}\n\n.animated.flip {\n    -webkit-backface-visibility: visible;\n    backface-visibility: visible;\n    -webkit-animation-name: flip;\n    animation-name: flip;\n}\n\n@-webkit-keyframes flipInX {\n    from {\n        -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n        transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in;\n        opacity: 0;\n    }\n\n    40% {\n        -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n        transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in;\n    }\n\n    60% {\n        -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n        transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n        opacity: 1;\n    }\n\n    80% {\n        -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n        transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n    }\n\n    to {\n        -webkit-transform: perspective(400px);\n        transform: perspective(400px);\n    }\n}\n\n@keyframes flipInX {\n    from {\n        -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n        transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in;\n        opacity: 0;\n    }\n\n    40% {\n        -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n        transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in;\n    }\n\n    60% {\n        -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n        transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n        opacity: 1;\n    }\n\n    80% {\n        -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n        transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n    }\n\n    to {\n        -webkit-transform: perspective(400px);\n        transform: perspective(400px);\n    }\n}\n\n.flipInX {\n    -webkit-backface-visibility: visible !important;\n    backface-visibility: visible !important;\n    -webkit-animation-name: flipInX;\n    animation-name: flipInX;\n}\n\n@-webkit-keyframes flipInY {\n    from {\n        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n        transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in;\n        opacity: 0;\n    }\n\n    40% {\n        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n        transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in;\n    }\n\n    60% {\n        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n        transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n        opacity: 1;\n    }\n\n    80% {\n        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n        transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n    }\n\n    to {\n        -webkit-transform: perspective(400px);\n        transform: perspective(400px);\n    }\n}\n\n@keyframes flipInY {\n    from {\n        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n        transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in;\n        opacity: 0;\n    }\n\n    40% {\n        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n        transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in;\n    }\n\n    60% {\n        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n        transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n        opacity: 1;\n    }\n\n    80% {\n        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n        transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n    }\n\n    to {\n        -webkit-transform: perspective(400px);\n        transform: perspective(400px);\n    }\n}\n\n.flipInY {\n    -webkit-backface-visibility: visible !important;\n    backface-visibility: visible !important;\n    -webkit-animation-name: flipInY;\n    animation-name: flipInY;\n}\n\n@-webkit-keyframes flipOutX {\n    from {\n        -webkit-transform: perspective(400px);\n        transform: perspective(400px);\n    }\n\n    30% {\n        -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n        transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n        transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n        opacity: 0;\n    }\n}\n\n@keyframes flipOutX {\n    from {\n        -webkit-transform: perspective(400px);\n        transform: perspective(400px);\n    }\n\n    30% {\n        -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n        transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n        transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n        opacity: 0;\n    }\n}\n\n.flipOutX {\n    -webkit-animation-name: flipOutX;\n    animation-name: flipOutX;\n    -webkit-backface-visibility: visible !important;\n    backface-visibility: visible !important;\n}\n\n@-webkit-keyframes flipOutY {\n    from {\n        -webkit-transform: perspective(400px);\n        transform: perspective(400px);\n    }\n\n    30% {\n        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n        transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n        transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n        opacity: 0;\n    }\n}\n\n@keyframes flipOutY {\n    from {\n        -webkit-transform: perspective(400px);\n        transform: perspective(400px);\n    }\n\n    30% {\n        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n        transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n        transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n        opacity: 0;\n    }\n}\n\n.flipOutY {\n    -webkit-backface-visibility: visible !important;\n    backface-visibility: visible !important;\n    -webkit-animation-name: flipOutY;\n    animation-name: flipOutY;\n}\n\n@-webkit-keyframes lightSpeedIn {\n    from {\n        -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n        transform: translate3d(100%, 0, 0) skewX(-30deg);\n        opacity: 0;\n    }\n\n    60% {\n        -webkit-transform: skewX(20deg);\n        transform: skewX(20deg);\n        opacity: 1;\n    }\n\n    80% {\n        -webkit-transform: skewX(-5deg);\n        transform: skewX(-5deg);\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform: none;\n        transform: none;\n        opacity: 1;\n    }\n}\n\n@keyframes lightSpeedIn {\n    from {\n        -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n        transform: translate3d(100%, 0, 0) skewX(-30deg);\n        opacity: 0;\n    }\n\n    60% {\n        -webkit-transform: skewX(20deg);\n        transform: skewX(20deg);\n        opacity: 1;\n    }\n\n    80% {\n        -webkit-transform: skewX(-5deg);\n        transform: skewX(-5deg);\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform: none;\n        transform: none;\n        opacity: 1;\n    }\n}\n\n.lightSpeedIn {\n    -webkit-animation-name: lightSpeedIn;\n    animation-name: lightSpeedIn;\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out;\n}\n\n@-webkit-keyframes lightSpeedOut {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n        transform: translate3d(100%, 0, 0) skewX(30deg);\n        opacity: 0;\n    }\n}\n\n@keyframes lightSpeedOut {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n        transform: translate3d(100%, 0, 0) skewX(30deg);\n        opacity: 0;\n    }\n}\n\n.lightSpeedOut {\n    -webkit-animation-name: lightSpeedOut;\n    animation-name: lightSpeedOut;\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n}\n\n@-webkit-keyframes rotateIn {\n    from {\n        -webkit-transform-origin: center;\n        transform-origin: center;\n        -webkit-transform: rotate3d(0, 0, 1, -200deg);\n        transform: rotate3d(0, 0, 1, -200deg);\n        opacity: 0;\n    }\n\n    to {\n        -webkit-transform-origin: center;\n        transform-origin: center;\n        -webkit-transform: none;\n        transform: none;\n        opacity: 1;\n    }\n}\n\n@keyframes rotateIn {\n    from {\n        -webkit-transform-origin: center;\n        transform-origin: center;\n        -webkit-transform: rotate3d(0, 0, 1, -200deg);\n        transform: rotate3d(0, 0, 1, -200deg);\n        opacity: 0;\n    }\n\n    to {\n        -webkit-transform-origin: center;\n        transform-origin: center;\n        -webkit-transform: none;\n        transform: none;\n        opacity: 1;\n    }\n}\n\n.rotateIn {\n    -webkit-animation-name: rotateIn;\n    animation-name: rotateIn;\n}\n\n@-webkit-keyframes rotateInDownLeft {\n    from {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate3d(0, 0, 1, -45deg);\n        transform: rotate3d(0, 0, 1, -45deg);\n        opacity: 0;\n    }\n\n    to {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: none;\n        transform: none;\n        opacity: 1;\n    }\n}\n\n@keyframes rotateInDownLeft {\n    from {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate3d(0, 0, 1, -45deg);\n        transform: rotate3d(0, 0, 1, -45deg);\n        opacity: 0;\n    }\n\n    to {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: none;\n        transform: none;\n        opacity: 1;\n    }\n}\n\n.rotateInDownLeft {\n    -webkit-animation-name: rotateInDownLeft;\n    animation-name: rotateInDownLeft;\n}\n\n@-webkit-keyframes rotateInDownRight {\n    from {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate3d(0, 0, 1, 45deg);\n        transform: rotate3d(0, 0, 1, 45deg);\n        opacity: 0;\n    }\n\n    to {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: none;\n        transform: none;\n        opacity: 1;\n    }\n}\n\n@keyframes rotateInDownRight {\n    from {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate3d(0, 0, 1, 45deg);\n        transform: rotate3d(0, 0, 1, 45deg);\n        opacity: 0;\n    }\n\n    to {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: none;\n        transform: none;\n        opacity: 1;\n    }\n}\n\n.rotateInDownRight {\n    -webkit-animation-name: rotateInDownRight;\n    animation-name: rotateInDownRight;\n}\n\n@-webkit-keyframes rotateInUpLeft {\n    from {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate3d(0, 0, 1, 45deg);\n        transform: rotate3d(0, 0, 1, 45deg);\n        opacity: 0;\n    }\n\n    to {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: none;\n        transform: none;\n        opacity: 1;\n    }\n}\n\n@keyframes rotateInUpLeft {\n    from {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate3d(0, 0, 1, 45deg);\n        transform: rotate3d(0, 0, 1, 45deg);\n        opacity: 0;\n    }\n\n    to {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: none;\n        transform: none;\n        opacity: 1;\n    }\n}\n\n.rotateInUpLeft {\n    -webkit-animation-name: rotateInUpLeft;\n    animation-name: rotateInUpLeft;\n}\n\n@-webkit-keyframes rotateInUpRight {\n    from {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate3d(0, 0, 1, -90deg);\n        transform: rotate3d(0, 0, 1, -90deg);\n        opacity: 0;\n    }\n\n    to {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: none;\n        transform: none;\n        opacity: 1;\n    }\n}\n\n@keyframes rotateInUpRight {\n    from {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate3d(0, 0, 1, -90deg);\n        transform: rotate3d(0, 0, 1, -90deg);\n        opacity: 0;\n    }\n\n    to {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: none;\n        transform: none;\n        opacity: 1;\n    }\n}\n\n.rotateInUpRight {\n    -webkit-animation-name: rotateInUpRight;\n    animation-name: rotateInUpRight;\n}\n\n@-webkit-keyframes rotateOut {\n    from {\n        -webkit-transform-origin: center;\n        transform-origin: center;\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform-origin: center;\n        transform-origin: center;\n        -webkit-transform: rotate3d(0, 0, 1, 200deg);\n        transform: rotate3d(0, 0, 1, 200deg);\n        opacity: 0;\n    }\n}\n\n@keyframes rotateOut {\n    from {\n        -webkit-transform-origin: center;\n        transform-origin: center;\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform-origin: center;\n        transform-origin: center;\n        -webkit-transform: rotate3d(0, 0, 1, 200deg);\n        transform: rotate3d(0, 0, 1, 200deg);\n        opacity: 0;\n    }\n}\n\n.rotateOut {\n    -webkit-animation-name: rotateOut;\n    animation-name: rotateOut;\n}\n\n@-webkit-keyframes rotateOutDownLeft {\n    from {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate3d(0, 0, 1, 45deg);\n        transform: rotate3d(0, 0, 1, 45deg);\n        opacity: 0;\n    }\n}\n\n@keyframes rotateOutDownLeft {\n    from {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate3d(0, 0, 1, 45deg);\n        transform: rotate3d(0, 0, 1, 45deg);\n        opacity: 0;\n    }\n}\n\n.rotateOutDownLeft {\n    -webkit-animation-name: rotateOutDownLeft;\n    animation-name: rotateOutDownLeft;\n}\n\n@-webkit-keyframes rotateOutDownRight {\n    from {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate3d(0, 0, 1, -45deg);\n        transform: rotate3d(0, 0, 1, -45deg);\n        opacity: 0;\n    }\n}\n\n@keyframes rotateOutDownRight {\n    from {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate3d(0, 0, 1, -45deg);\n        transform: rotate3d(0, 0, 1, -45deg);\n        opacity: 0;\n    }\n}\n\n.rotateOutDownRight {\n    -webkit-animation-name: rotateOutDownRight;\n    animation-name: rotateOutDownRight;\n}\n\n@-webkit-keyframes rotateOutUpLeft {\n    from {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate3d(0, 0, 1, -45deg);\n        transform: rotate3d(0, 0, 1, -45deg);\n        opacity: 0;\n    }\n}\n\n@keyframes rotateOutUpLeft {\n    from {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate3d(0, 0, 1, -45deg);\n        transform: rotate3d(0, 0, 1, -45deg);\n        opacity: 0;\n    }\n}\n\n.rotateOutUpLeft {\n    -webkit-animation-name: rotateOutUpLeft;\n    animation-name: rotateOutUpLeft;\n}\n\n@-webkit-keyframes rotateOutUpRight {\n    from {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate3d(0, 0, 1, 90deg);\n        transform: rotate3d(0, 0, 1, 90deg);\n        opacity: 0;\n    }\n}\n\n@keyframes rotateOutUpRight {\n    from {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate3d(0, 0, 1, 90deg);\n        transform: rotate3d(0, 0, 1, 90deg);\n        opacity: 0;\n    }\n}\n\n.rotateOutUpRight {\n    -webkit-animation-name: rotateOutUpRight;\n    animation-name: rotateOutUpRight;\n}\n\n@-webkit-keyframes hinge {\n    0% {\n        -webkit-transform-origin: top left;\n        transform-origin: top left;\n        -webkit-animation-timing-function: ease-in-out;\n        animation-timing-function: ease-in-out;\n    }\n\n    20%,\n    60% {\n        -webkit-transform: rotate3d(0, 0, 1, 80deg);\n        transform: rotate3d(0, 0, 1, 80deg);\n        -webkit-transform-origin: top left;\n        transform-origin: top left;\n        -webkit-animation-timing-function: ease-in-out;\n        animation-timing-function: ease-in-out;\n    }\n\n    40%,\n    80% {\n        -webkit-transform: rotate3d(0, 0, 1, 60deg);\n        transform: rotate3d(0, 0, 1, 60deg);\n        -webkit-transform-origin: top left;\n        transform-origin: top left;\n        -webkit-animation-timing-function: ease-in-out;\n        animation-timing-function: ease-in-out;\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform: translate3d(0, 700px, 0);\n        transform: translate3d(0, 700px, 0);\n        opacity: 0;\n    }\n}\n\n@keyframes hinge {\n    0% {\n        -webkit-transform-origin: top left;\n        transform-origin: top left;\n        -webkit-animation-timing-function: ease-in-out;\n        animation-timing-function: ease-in-out;\n    }\n\n    20%,\n    60% {\n        -webkit-transform: rotate3d(0, 0, 1, 80deg);\n        transform: rotate3d(0, 0, 1, 80deg);\n        -webkit-transform-origin: top left;\n        transform-origin: top left;\n        -webkit-animation-timing-function: ease-in-out;\n        animation-timing-function: ease-in-out;\n    }\n\n    40%,\n    80% {\n        -webkit-transform: rotate3d(0, 0, 1, 60deg);\n        transform: rotate3d(0, 0, 1, 60deg);\n        -webkit-transform-origin: top left;\n        transform-origin: top left;\n        -webkit-animation-timing-function: ease-in-out;\n        animation-timing-function: ease-in-out;\n        opacity: 1;\n    }\n\n    to {\n        -webkit-transform: translate3d(0, 700px, 0);\n        transform: translate3d(0, 700px, 0);\n        opacity: 0;\n    }\n}\n\n.hinge {\n    -webkit-animation-name: hinge;\n    animation-name: hinge;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollIn {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n        transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n@keyframes rollIn {\n    from {\n        opacity: 0;\n        -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n        transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n    }\n\n    to {\n        opacity: 1;\n        -webkit-transform: none;\n        transform: none;\n    }\n}\n\n.rollIn {\n    -webkit-animation-name: rollIn;\n    animation-name: rollIn;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollOut {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n        transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n    }\n}\n\n@keyframes rollOut {\n    from {\n        opacity: 1;\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n        transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n    }\n}\n\n.rollOut {\n    -webkit-animation-name: rollOut;\n    animation-name: rollOut;\n}\n\n@-webkit-keyframes zoomIn {\n    from {\n        opacity: 0;\n        -webkit-transform: scale3d(0.3, 0.3, 0.3);\n        transform: scale3d(0.3, 0.3, 0.3);\n    }\n\n    50% {\n        opacity: 1;\n    }\n}\n\n@keyframes zoomIn {\n    from {\n        opacity: 0;\n        -webkit-transform: scale3d(0.3, 0.3, 0.3);\n        transform: scale3d(0.3, 0.3, 0.3);\n    }\n\n    50% {\n        opacity: 1;\n    }\n}\n\n.zoomIn {\n    -webkit-animation-name: zoomIn;\n    animation-name: zoomIn;\n}\n\n@-webkit-keyframes zoomInDown {\n    from {\n        opacity: 0;\n        -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n        transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n        animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n        animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    }\n}\n\n@keyframes zoomInDown {\n    from {\n        opacity: 0;\n        -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n        transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n        animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n        animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    }\n}\n\n.zoomInDown {\n    -webkit-animation-name: zoomInDown;\n    animation-name: zoomInDown;\n}\n\n@-webkit-keyframes zoomInLeft {\n    from {\n        opacity: 0;\n        -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n        transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n        animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n        animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    }\n}\n\n@keyframes zoomInLeft {\n    from {\n        opacity: 0;\n        -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n        transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n        animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n        animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    }\n}\n\n.zoomInLeft {\n    -webkit-animation-name: zoomInLeft;\n    animation-name: zoomInLeft;\n}\n\n@-webkit-keyframes zoomInRight {\n    from {\n        opacity: 0;\n        -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n        transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n        animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n        animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    }\n}\n\n@keyframes zoomInRight {\n    from {\n        opacity: 0;\n        -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n        transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n        animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n        animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    }\n}\n\n.zoomInRight {\n    -webkit-animation-name: zoomInRight;\n    animation-name: zoomInRight;\n}\n\n@-webkit-keyframes zoomInUp {\n    from {\n        opacity: 0;\n        -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n        transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n        animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n        animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    }\n}\n\n@keyframes zoomInUp {\n    from {\n        opacity: 0;\n        -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n        transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n        animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    }\n\n    60% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n        animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    }\n}\n\n.zoomInUp {\n    -webkit-animation-name: zoomInUp;\n    animation-name: zoomInUp;\n}\n\n@-webkit-keyframes zoomOut {\n    from {\n        opacity: 1;\n    }\n\n    50% {\n        opacity: 0;\n        -webkit-transform: scale3d(0.3, 0.3, 0.3);\n        transform: scale3d(0.3, 0.3, 0.3);\n    }\n\n    to {\n        opacity: 0;\n    }\n}\n\n@keyframes zoomOut {\n    from {\n        opacity: 1;\n    }\n\n    50% {\n        opacity: 0;\n        -webkit-transform: scale3d(0.3, 0.3, 0.3);\n        transform: scale3d(0.3, 0.3, 0.3);\n    }\n\n    to {\n        opacity: 0;\n    }\n}\n\n.zoomOut {\n    -webkit-animation-name: zoomOut;\n    animation-name: zoomOut;\n}\n\n@-webkit-keyframes zoomOutDown {\n    40% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n        animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n        transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n        -webkit-transform-origin: center bottom;\n        transform-origin: center bottom;\n        -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n        animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    }\n}\n\n@keyframes zoomOutDown {\n    40% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n        animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n        transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n        -webkit-transform-origin: center bottom;\n        transform-origin: center bottom;\n        -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n        animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    }\n}\n\n.zoomOutDown {\n    -webkit-animation-name: zoomOutDown;\n    animation-name: zoomOutDown;\n}\n\n@-webkit-keyframes zoomOutLeft {\n    40% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);\n        transform: scale(0.1) translate3d(-2000px, 0, 0);\n        -webkit-transform-origin: left center;\n        transform-origin: left center;\n    }\n}\n\n@keyframes zoomOutLeft {\n    40% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);\n        transform: scale(0.1) translate3d(-2000px, 0, 0);\n        -webkit-transform-origin: left center;\n        transform-origin: left center;\n    }\n}\n\n.zoomOutLeft {\n    -webkit-animation-name: zoomOutLeft;\n    animation-name: zoomOutLeft;\n}\n\n@-webkit-keyframes zoomOutRight {\n    40% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);\n        transform: scale(0.1) translate3d(2000px, 0, 0);\n        -webkit-transform-origin: right center;\n        transform-origin: right center;\n    }\n}\n\n@keyframes zoomOutRight {\n    40% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);\n        transform: scale(0.1) translate3d(2000px, 0, 0);\n        -webkit-transform-origin: right center;\n        transform-origin: right center;\n    }\n}\n\n.zoomOutRight {\n    -webkit-animation-name: zoomOutRight;\n    animation-name: zoomOutRight;\n}\n\n@-webkit-keyframes zoomOutUp {\n    40% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n        animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n        transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n        -webkit-transform-origin: center bottom;\n        transform-origin: center bottom;\n        -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n        animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    }\n}\n\n@keyframes zoomOutUp {\n    40% {\n        opacity: 1;\n        -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n        transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n        -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n        animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    }\n\n    to {\n        opacity: 0;\n        -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n        transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n        -webkit-transform-origin: center bottom;\n        transform-origin: center bottom;\n        -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n        animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    }\n}\n\n.zoomOutUp {\n    -webkit-animation-name: zoomOutUp;\n    animation-name: zoomOutUp;\n}\n\n@-webkit-keyframes slideInDown {\n    from {\n        -webkit-transform: translate3d(0, -100%, 0);\n        transform: translate3d(0, -100%, 0);\n        visibility: visible;\n    }\n\n    to {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n}\n\n@keyframes slideInDown {\n    from {\n        -webkit-transform: translate3d(0, -100%, 0);\n        transform: translate3d(0, -100%, 0);\n        visibility: visible;\n    }\n\n    to {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n}\n\n.slideInDown {\n    -webkit-animation-name: slideInDown;\n    animation-name: slideInDown;\n}\n\n@-webkit-keyframes slideInLeft {\n    from {\n        -webkit-transform: translate3d(-100%, 0, 0);\n        transform: translate3d(-100%, 0, 0);\n        visibility: visible;\n    }\n\n    to {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n}\n\n@keyframes slideInLeft {\n    from {\n        -webkit-transform: translate3d(-100%, 0, 0);\n        transform: translate3d(-100%, 0, 0);\n        visibility: visible;\n    }\n\n    to {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n}\n\n.slideInLeft {\n    -webkit-animation-name: slideInLeft;\n    animation-name: slideInLeft;\n}\n\n@-webkit-keyframes slideInRight {\n    from {\n        -webkit-transform: translate3d(100%, 0, 0);\n        transform: translate3d(100%, 0, 0);\n        visibility: visible;\n    }\n\n    to {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n}\n\n@keyframes slideInRight {\n    from {\n        -webkit-transform: translate3d(100%, 0, 0);\n        transform: translate3d(100%, 0, 0);\n        visibility: visible;\n    }\n\n    to {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n}\n\n.slideInRight {\n    -webkit-animation-name: slideInRight;\n    animation-name: slideInRight;\n}\n\n@-webkit-keyframes slideInUp {\n    from {\n        -webkit-transform: translate3d(0, 100%, 0);\n        transform: translate3d(0, 100%, 0);\n        visibility: visible;\n    }\n\n    to {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n}\n\n@keyframes slideInUp {\n    from {\n        -webkit-transform: translate3d(0, 100%, 0);\n        transform: translate3d(0, 100%, 0);\n        visibility: visible;\n    }\n\n    to {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n}\n\n.slideInUp {\n    -webkit-animation-name: slideInUp;\n    animation-name: slideInUp;\n}\n\n@-webkit-keyframes slideOutDown {\n    from {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n\n    to {\n        visibility: hidden;\n        -webkit-transform: translate3d(0, 100%, 0);\n        transform: translate3d(0, 100%, 0);\n    }\n}\n\n@keyframes slideOutDown {\n    from {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n\n    to {\n        visibility: hidden;\n        -webkit-transform: translate3d(0, 100%, 0);\n        transform: translate3d(0, 100%, 0);\n    }\n}\n\n.slideOutDown {\n    -webkit-animation-name: slideOutDown;\n    animation-name: slideOutDown;\n}\n\n@-webkit-keyframes slideOutLeft {\n    from {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n\n    to {\n        visibility: hidden;\n        -webkit-transform: translate3d(-100%, 0, 0);\n        transform: translate3d(-100%, 0, 0);\n    }\n}\n\n@keyframes slideOutLeft {\n    from {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n\n    to {\n        visibility: hidden;\n        -webkit-transform: translate3d(-100%, 0, 0);\n        transform: translate3d(-100%, 0, 0);\n    }\n}\n\n.slideOutLeft {\n    -webkit-animation-name: slideOutLeft;\n    animation-name: slideOutLeft;\n}\n\n@-webkit-keyframes slideOutRight {\n    from {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n\n    to {\n        visibility: hidden;\n        -webkit-transform: translate3d(100%, 0, 0);\n        transform: translate3d(100%, 0, 0);\n    }\n}\n\n@keyframes slideOutRight {\n    from {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n\n    to {\n        visibility: hidden;\n        -webkit-transform: translate3d(100%, 0, 0);\n        transform: translate3d(100%, 0, 0);\n    }\n}\n\n.slideOutRight {\n    -webkit-animation-name: slideOutRight;\n    animation-name: slideOutRight;\n}\n\n@-webkit-keyframes slideOutUp {\n    from {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n\n    to {\n        visibility: hidden;\n        -webkit-transform: translate3d(0, -100%, 0);\n        transform: translate3d(0, -100%, 0);\n    }\n}\n\n@keyframes slideOutUp {\n    from {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0);\n    }\n\n    to {\n        visibility: hidden;\n        -webkit-transform: translate3d(0, -100%, 0);\n        transform: translate3d(0, -100%, 0);\n    }\n}\n\n.slideOutUp {\n    -webkit-animation-name: slideOutUp;\n    animation-name: slideOutUp;\n}\n"
  },
  {
    "path": "src/style/login.less",
    "content": ".login{\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  height: 100%;\n  background: #f3f3f3;\n  .login-form{\n    width: 320px;\n    height: 340px;\n    padding: 36px;\n    box-shadow: 0 0 100px rgba(0,0,0,.08);\n    background: #fff;\n    .login-logo{\n      text-align: center;\n      height: 40px;\n      line-height: 40px;\n      cursor: pointer;\n      margin-bottom: 24px;\n      span {\n        vertical-align: text-bottom;\n        font-size: 16px;\n        text-transform: uppercase;\n        display: inline-block;\n      }\n    }\n  }\n}\n.installer {\n  width: 0;\n  height: 0;\n  border-style: solid;\n  border-width: 0 100px 100px 0;\n  border-color: transparent #313653 transparent transparent;\n  position: fixed;\n  top: 0;\n  right: 0;\n}\n.installer__btn {\n  width: 50px;\n  height: 50px;\n  transform: rotate(45deg);\n  left: 50px;\n  position: absolute;\n  background: url('./imgs/installer.png') no-repeat;\n  background-size: cover;\n}"
  },
  {
    "path": "src/style/menu.less",
    "content": ".ant-menu-dark {\n  &.ant-menu-inline {\n    .ant-menu-item-selected {\n      background-color: #5f5f5f !important;\n    }\n  }\n}\n.custom-trigger {\n  font-size: 18px;\n  line-height: 64px;\n  padding: 0 16px;\n  cursor: pointer;\n  transition: color .3s;\n}\n.ant-layout-sider-collapsed {\n  overflow-y: initial !important;\n}\n.avatar {\n  position: relative;\n  display: inline-block;\n  width: 40px;\n  line-height: 1;\n  border-radius: 500px;\n  white-space: nowrap;\n  font-weight: bold;\n  i {\n    position: absolute;\n    left: 0;\n    top: 0;\n    width: 10px;\n    height: 10px;\n    margin: 1px;\n    border-width: 2px;\n    border-style: solid;\n    border-radius: 100%;\n    &.bottom {\n      left: auto;\n      top: auto;\n      bottom: 0;\n      right: 0;\n    }\n    &.on {\n      background-color: #6cc788;\n    }\n  }\n  img {\n    border-radius: 500px;\n    width: 100%;\n  }\n}\n.switcher {\n  z-index: 1050;\n  position: fixed;\n  top: 78px;\n  right: -240px;\n  width: 240px;\n  transition: right 0.2s ease;\n  border: 1px solid rgba(120, 120, 120, 0.1);\n  background-clip: padding-box;\n  &.active {\n    right: -2px;\n  }\n  .sw-btn {\n    position: absolute;\n    left: -43px;\n    top: -1px;\n    padding: 10px 15px;\n    z-index: 1045;\n    border: 1px solid rgba(120, 120, 120, 0.1);\n    border-right-width: 0;\n    background-clip: padding-box;\n  }\n}"
  },
  {
    "path": "src/style/modal.less",
    "content": ".vertical-center-modal {\n  text-align: center;\n  white-space: nowrap;\n  &:before {\n    content: '';\n    display: inline-block;\n    height: 100%;\n    vertical-align: middle;\n    width: 0;\n  }\n  .ant-modal {\n    display: inline-block;\n    vertical-align: middle;\n    top: 0;\n    text-align: left;\n  }\n}\n/*\n// Use flex which not working in IE\n.vertical-center-modal {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.vertical-center-modal .ant-modal {\n  top: 0;\n}\n*/"
  },
  {
    "path": "src/style/scroll.less",
    "content": "//美化webkit内核滚动条\n::-webkit-scrollbar {\n  width: 8px;\n  height: 8px;\n}\n::-webkit-scrollbar-thumb {\n  background-color: #777;\n}"
  },
  {
    "path": "src/style/table.less",
    "content": ".table-operations {\n  margin-bottom: 16px;\n  > button {\n    margin-right: 8px;\n  }\n}\n\n.editable-row-text {\n  padding: 5px;\n}\n\n.editable-row-operations a {\n  margin-right: 8px;\n}"
  },
  {
    "path": "src/style/theme/index.js",
    "content": "/**\n * Created by hao.cheng on 2017/5/6.\n */\nimport themeinfo from './theme-info.json';\nimport themegrey from './theme-grey.json';\nimport themedanger from './theme-danger.json';\nimport themewarn from './theme-warn.json';\n\nexport default { themeinfo, themegrey, themedanger, themewarn };\n"
  },
  {
    "path": "src/style/theme/theme-danger.json",
    "content": "{\n  \"header\": {\n    \"background\": \"#f44455\"\n  }\n}"
  },
  {
    "path": "src/style/theme/theme-grey.json",
    "content": "{\n  \"header\": {\n    \"background\": \"#001529\"\n  }\n}"
  },
  {
    "path": "src/style/theme/theme-info.json",
    "content": "{\n  \"header\": {\n    \"background\": \"#6887ff\"\n  }\n}"
  },
  {
    "path": "src/style/theme/theme-warn.json",
    "content": "{\n  \"header\": {\n    \"background\": \"#fcc100\"\n  }\n}"
  },
  {
    "path": "src/style/utils-border.less",
    "content": ".b-a {\n  border: 1px solid @border-color;\n}"
  },
  {
    "path": "src/style/utils-color.less",
    "content": ".color-variant(@bg, @color) {\n  color: @color;\n  background-color: @bg;\n}\n.dark-white {\n  color: @dark;\n  background-color: @white;\n}\n.min-black {\n  .color-variant(@min-black, @black-color)\n}\n.black {\n  .color-variant(@black, @black-color);\n}\n\n.dark {\n  .color-variant(@dark, @dark-color);\n}\n\n.grey {\n .color-variant(@grey, @grey-color);\n}\n\n.primary {\n .color-variant(@primary, @primary-color);\n}\n\n.info {\n  .color-variant(@info, @info-color);\n}\n.warn {\n  .color-variant(@warn, @warn-color);\n}\n.danger {\n  .color-variant(@danger, @danger-color)\n}"
  },
  {
    "path": "src/style/utils-size.less",
    "content": ".w-8{\n  width:  8px;\n  height: 8px;\n  display: inline-block;\n}\n.w-16{\n  width:  16px;\n  height: 16px;\n  display: inline-block;\n}\n.w-20{\n  width:  20px;\n  height: 20px;\n  display: inline-block;\n}\n.w-24{\n  width:  24px;\n  height: 24px;\n  display: inline-block;\n  text-align: center;\n}\n.w-32{\n  width:  32px;\n  height: 32px;\n  line-height: 32px;\n  display: inline-block;\n  text-align: center;\n}\n.w-40{\n  width:  40px;\n  height: 40px;\n  line-height: 40px;\n  display: inline-block;\n  text-align: center;\n}\n.w-48{\n  width:  48px;\n  height: 48px;\n  line-height: 48px;\n  display: inline-block;\n  text-align: center;\n}\n.w-56{\n  width:  56px;\n  height: 56px;\n  line-height: 56px;\n  display: inline-block;\n  text-align: center;\n}"
  },
  {
    "path": "src/style/utils-spacing.less",
    "content": ".pb-s { padding-bottom: @spacer * 0.5 !important;  }\n.pb-m { padding-bottom: @spacer * 1 !important;  }\n.pb-l { padding-bottom: @spacer * 2 !important;  }\n.pa-s { padding: @spacer * 0.5 !important; }\n.pa-m { padding: @spacer * 1 !important; }\n.pa-l { padding: @spacer * 2 !important; }\n\n.mr-s { margin-right: @spacer * 0.5 !important;  }\n.mr-m { margin-right: @spacer * 1 !important;  }\n.mr-l { margin-right: @spacer * 2 !important;  }\n.mb-s { margin-bottom: @spacer * 0.5 !important;  }\n.mb-m { margin-bottom: @spacer * 1 !important;  }\n.mb-l { margin-bottom: @spacer * 2 !important;  }\n"
  },
  {
    "path": "src/style/utils-text.less",
    "content": ".text{\n  font-size: 1rem;\n}\n.text-2x{\n  font-size: 2rem;\n}\n.text-3x{\n  font-size: 3rem;\n}\n.text-4x{\n  font-size: 4rem;\n}\n\n.text-center {\n  text-align: center;\n}\n\n.text-left {\n  text-align: left;\n}\n\n.text-right {\n  text-align: right;\n}\n\n.text-danger,\n.text-danger-hover a:hover {\n  color: #f44455 !important;\n}\n.text-dark,\n.text-dark-hover a:hover {\n  color: #2e3e4e !important;\n}\n.text-info,\n.text-info-hover a:hover {\n  color: #6887ff !important;\n}\n.text-success,\n.text-success-hover a:hover {\n  color: #6cc788 !important;\n}\n.text-blue,\n.text-blue-hover a:hover {\n  color: #2196f3 !important; }\n"
  },
  {
    "path": "src/style/variables.less",
    "content": "@full-black:  \t\trgba(0, 0, 0, 1);\n@dark-black:  \t\trgba(0, 0, 0, 0.87);\n@light-black: \t\trgba(0, 0, 0, 0.54);\n@min-black:   \t\trgba(0, 0, 0, 0.065);\n\n@full-white:  \t\trgba(255, 255, 255, 1);\n@dark-white:  \t\trgba(255, 255, 255, 0.87);\n@light-white: \t\trgba(255, 255, 255, 0.54);\n@min-white:   \t\trgba(255, 255, 255, 0.1);\n\n@primary:           #0cc2aa;\n@accent:            #a88add;\n@warn:              #fcc100;\n\n@info:              #6887ff;\n@success:           #6cc788;\n@warning:           #f77a99;\n@danger:            #f44455;\n\n@light:             #f8f8f8;\n@grey:              #424242;\n@dark:              #2e3e4e;\n@black:\t\t\t\t#2a2b3c;\n@white:\t\t\t\t#ffffff;\n\n@primary-color:     @dark-white;\n@accent-color:\t\t@dark-white;\n@warn-color:\t\t@dark-white;\n@success-color:\t\t@dark-white;\n@info-color:\t\t@dark-white;\n@warning-color:\t\t@dark-white;\n@danger-color:     \t@dark-white;\n@light-color:\t\t@dark-black;\n@grey-color:\t\t@dark-white;\n@dark-color:\t\t@dark-white;\n@black-color:\t\t@dark-white;\n\n@border-color:\t \trgba(120, 130, 140, 0.13);\n\n@spacer:            1rem;"
  },
  {
    "path": "src/utils/hooks.ts",
    "content": "/*\n * File: hooks.ts\n * Desc: 自定义hooks\n * File Created: 2020-08-24 22:45:40\n * Author: yezi\n * ------\n * Copyright 2020 - present, yezi\n */\nimport { useState } from 'react';\n\ninterface ITurn {\n    turnOn: () => void;\n    turnOff: () => void;\n    setSwitcher: React.Dispatch<React.SetStateAction<boolean>>;\n}\n/**\n * 布尔开关\n * @param init\n */\nexport function useSwitch(init: boolean = false): [boolean, ITurn] {\n    const [switcher, setSwitcher] = useState(init);\n    const turnOn = () => setSwitcher(true);\n    const turnOff = () => setSwitcher(false);\n    return [switcher, { turnOn, turnOff, setSwitcher }];\n}\n"
  },
  {
    "path": "src/utils/index.ts",
    "content": "/**\n * Created by hao.cheng on 2017/4/28.\n */\nimport queryString from 'query-string';\n/**\n * 获取URL参数\n */\nexport function parseQuery() {\n    return queryString.parseUrl(window.location.href).query;\n}\n\n/**\n * 校验是否登录\n * @param permits\n */\nexport const checkLogin = (permits: any): boolean =>\n    (process.env.NODE_ENV === 'production' && !!permits) || process.env.NODE_ENV === 'development';\n"
  },
  {
    "path": "theme.js",
    "content": "const path = require('path');\nconst { generateTheme } = require('antd-theme-generator');\n\nconst options = {\n    antDir: path.join(__dirname, './node_modules/antd'),\n    stylesDir: path.join(__dirname, './src/style/antd'),\n    varFile: path.join(__dirname, './src/style/antd/variables.less'),\n    mainLessFile: path.join(__dirname, './src/style/antd/index.less'),\n    indexFileName: 'index.html',\n    outputFilePath: path.join(__dirname, './public/theme.less'),\n}\n\ngenerateTheme(options).then(less => {\n    console.log('Theme generated successfully');\n}).catch(error => {\n    console.log('Error', error);\n});"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\n      \"dom\",\n      \"dom.iterable\",\n      \"esnext\"\n    ],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"noEmit\": true,\n    \"jsx\": \"react\"\n  },\n  \"include\": [\n    \"src\"\n  ]\n}\n"
  }
]