From 00aa243053be263dbc5a5a5f59abd52d715bb660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=20=E5=A5=88=E6=9C=88?= <43605695+akinazuki@users.noreply.github.com> Date: Tue, 16 Aug 2022 00:58:20 +0800 Subject: [PATCH 01/10] rebuild blog --- _config.melody.yml | 14 +- _config.yml | 4 +- .../netease-eapi-music-recognize-reverse-1.md | 202 +++++++++++------- .../netease-eapi-music-recognize-reverse-2.md | 45 +++- .../netease-eapi-music-recognize-reverse-3.md | 21 +- source/about/index.md | 24 +++ source/labs/index.md | 8 + source/links/index.md | 23 ++ 8 files changed, 247 insertions(+), 94 deletions(-) create mode 100644 source/about/index.md create mode 100644 source/labs/index.md create mode 100644 source/links/index.md diff --git a/_config.melody.yml b/_config.melody.yml index 949934c..62d2193 100644 --- a/_config.melody.yml +++ b/_config.melody.yml @@ -127,9 +127,9 @@ cdn: fontawesome: https://cdn.jsdelivr.net/npm/font-awesome@latest/css/font-awesome.min.css # fontawesomeV5: https://use.fontawesome.com/releases/v5.3.1/css/all.css js: - anime: https://cdn.jsdelivr.net/npm/animejs@latest/lib/anime.min.js - jquery: https://cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js - fancybox: https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.js + anime: https://cdnjs.loli.net/ajax/libs/animejs/3.2.1/anime.min.js + jquery: https://cdnjs.loli.net/ajax/libs/jquery/3.6.0/jquery.min.js + fancybox: https://cdnjs.loli.net/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.js velocity: https://cdn.jsdelivr.net/npm/velocity-animate@latest/velocity.min.js velocity-ui: https://cdn.jsdelivr.net/npm/velocity-ui-pack@latest/velocity.ui.min.js @@ -211,9 +211,9 @@ addThis: # Comments System # --------------- disqus: - enable: false - #shortname: - #count: + enable: true + shortname: nazukis-blog + count: true # laibili: # enable: false @@ -269,7 +269,7 @@ disqus: # Footer Settings # --------------- -since: 2017 +since: 2015 footer_custom_text: 萌ICP备20229233号 diff --git a/_config.yml b/_config.yml index 1713a1f..6d40c2e 100644 --- a/_config.yml +++ b/_config.yml @@ -13,8 +13,8 @@ timezone: '' # URL ## Set your site url heare. For example, if you use GitHub Page, set url as 'https://username.github.io/project' -url: http://example.com -permalink: :year/:month/:day/:title/ +url: https://nazuki.moe +permalink: :title/ permalink_defaults: pretty_urls: trailing_index: true # Set to false to remove trailing 'index.html' from permalinks diff --git a/source/_posts/netease-eapi-music-recognize-reverse-1.md b/source/_posts/netease-eapi-music-recognize-reverse-1.md index f8a023a..c9bcb6d 100644 --- a/source/_posts/netease-eapi-music-recognize-reverse-1.md +++ b/source/_posts/netease-eapi-music-recognize-reverse-1.md @@ -1,103 +1,139 @@ --- -title: netease-eapi-music-recognize-reverse-1 -date: 2022-06-27 13:46:44 +title: 网易云音乐听歌识曲 API 逆向 (一) +date: 2022-05-05 tags: --- 首先是抓了一下协议, 网易云音乐的接口本身是有加密的, 但是没关系, 已经有 [NetEaseCloudMusic](https://github.com/Binaryify/NeteaseCloudMusicApi) 这样的项目逆向出了基本的通讯协议, 可以直接使用. + ![surge_mitm.png](https://s2.loli.net/2022/05/05/3BGhneWfKdCQzFm.png) + + + 网易云音乐识曲会向 `https://music.163.com/eapi/music/audio/match?_nmclfl=1` 这个接口发送请求 + 解密后的请求体大概长这样 ```json -{ - "rawdata":"eJx11H9M1HUYB\/C7+2p5\/PhHTUQGwW......", - "from":"recognize-song", - "verifyId":1, - "deviceId":"??????", - "os":"iOS", - "header":{ - - }, - "algorithmCode":"shazam_v2", - "times":1, - "sessionId":"??????", - "duration":3.4, - "e_r":true, - "sceneParams":"{\"action\":0,\"code\":2}" -} +{ + "rawdata":"eJx11H9M1HUYB/C7+2p5/PhHTUQGwW......", + "from":"recognize-song", + "verifyId":1, + "deviceId":"??????", + "os":"iOS", + "header":{ + + }, + "algorithmCode":"shazam_v2", + "times":1, + "sessionId":"??????", + "duration":3.4, + "e_r":true, + "sceneParams":"{"action":0,"code":2}" +} ``` - ![response_decrypted.png](https://s2.loli.net/2022/05/05/23zLWdGwqIacXoy.png) -猜测其中 `rawdata` 就是录音的 Base64 编码, 尝试解码扔进 ffprobe, 但是失败了 + +猜测其中 `rawdata` 就是录音的 Base64 编码, 尝试解码扔进 ffprobe, 但是失败了 有可能 `rawdata` 是根据音频频谱生成了摘要, `algorithmCode` 字段也提示了 `shazam_v2` 这个值 + 接下来开始逆向 APP + 下载了一份比较旧但还能用的 网易云音乐 APK -[old_version_apk.png](https://s2.loli.net/2022/05/05/uliO4SfnUpyIN1L.png) + +![old_version_apk.png](https://s2.loli.net/2022/05/05/uliO4SfnUpyIN1L.png) + 扔进 Jadx, 发现有比较奇特的混淆方法, 任意地方的字符串都会调用一个函数来进行解密 -[Obfuscation.jpg](https://s2.loli.net/2022/05/05/wrAiL2uzyHUsPD7.jpg) + +![Obfuscation.jpg](https://s2.loli.net/2022/05/05/wrAiL2uzyHUsPD7.jpg) + 定位到解密函数 -[decryptor.png](https://s2.loli.net/2022/05/05/d43Aw5fTby2h9ju.png) + +![decryptor.png](https://s2.loli.net/2022/05/05/d43Aw5fTby2h9ju.png) + 这里的解密看起来并不困难, `C0003a()` 这个类显然是 Base64 解码用的 -过我们要写出一个反向的操作(用来方便逆向查找字符串) +不过我们要写出一个反向的操作(用来方便逆向查找字符串) ```java -import java.util.Base64; - -class Main { - public static String key = "Encrypt"; - - public static void main(String[] args) { - if (args[0].equals("decrypt")) { - System.out.println(decrypt(args[1]));; - }else{ - System.out.println(encrypt(args[1])); - } - } - - public static String decrypt(String s) { - byte[] decode = Base64.getDecoder().decode(s); - String str2; - int length = decode.length; - int length2 = key.length(); - int i = 0; - int i2 = 0; - while (true) { - int i3 = i2; - if (i >= length) { - break; - } - int i4 = i3; - if (i3 >= length2) { - i4 = 0; - } - decode[i] = (byte) (decode[i] ^ key.charAt(i4)); - i++; - i2 = i4 + 1; - } - str2 = new String(decode); - return str2; - } - - public static String encrypt(String str_enc) { - byte[] s = str_enc.getBytes(); - int length = str_enc.length(); - int length2 = key.length(); - int i = 0; - int i2 = 0; - while (true) { - int i3 = i2; - if (i >= length) { - break; - } - int i4 = i3; - if (i3 >= length2) { - i4 = 0; - } - s[i] = (byte) (s[i] ^ key.charAt(i4)); - i++; - i2 = i4 + 1; - } - return Base64.getEncoder().encodeToString(s); - } -} +import java.util.Base64; + +class Main { + public static String key = "Encrypt"; + + public static void main(String[] args) { + if (args[0].equals("decrypt")) { + System.out.println(decrypt(args[1]));; + }else{ + System.out.println(encrypt(args[1])); + } + } + + public static String decrypt(String s) { + byte[] decode = Base64.getDecoder().decode(s); + String str2; + int length = decode.length; + int length2 = key.length(); + int i = 0; + int i2 = 0; + while (true) { + int i3 = i2; + if (i >= length) { + break; + } + int i4 = i3; + if (i3 >= length2) { + i4 = 0; + } + decode[i] = (byte) (decode[i] ^ key.charAt(i4)); + i++; + i2 = i4 + 1; + } + str2 = new String(decode); + return str2; + } + + public static String encrypt(String str_enc) { + byte[] s = str_enc.getBytes(); + int length = str_enc.length(); + int length2 = key.length(); + int i = 0; + int i2 = 0; + while (true) { + int i3 = i2; + if (i >= length) { + break; + } + int i4 = i3; + if (i3 >= length2) { + i4 = 0; + } + s[i] = (byte) (s[i] ^ key.charAt(i4)); + i++; + i2 = i4 + 1; + } + return Base64.getEncoder().encodeToString(s); + } +} ``` +根据 `rawdata` 这个关键词在 Jadx 里查找 + +![script.png](https://s2.loli.net/2022/05/05/HftdwSoXDxGZ4rK.png) + +确实能找到这个字符串 + +![jadx-search.png](https://s2.loli.net/2022/05/05/21eOoprbA8XMcwf.png) + +继续跟踪函数调用栈, 最终跟踪到了 `MusicDetector` 类 + +![classMusicDetector.png](https://s2.loli.net/2022/05/05/O2LAXsbWQKMmqfD.png) + +看起来是 `getFP()` 这个 Native 函数返回了一个三维数组, 最终封装成了 `rawdata` + +![native-getFP.png](https://s2.loli.net/2022/05/05/GaiMZqrzTgAUwCn.png) + +![binary-reverse.jpg](https://s2.loli.net/2022/05/05/X27B6ZKoY38PAtd.jpg) + +暂时跟踪不下去了, 看见汇编就头大( + +敬请期待第二章(咕咕咕 + +![image.png](https://s2.loli.net/2022/05/05/btmIr6v8R9L2onp.png) \ No newline at end of file diff --git a/source/_posts/netease-eapi-music-recognize-reverse-2.md b/source/_posts/netease-eapi-music-recognize-reverse-2.md index e089087..264eb0d 100644 --- a/source/_posts/netease-eapi-music-recognize-reverse-2.md +++ b/source/_posts/netease-eapi-music-recognize-reverse-2.md @@ -1,5 +1,48 @@ --- -title: netease-eapi-music-recognize-reverse-2 +title: 网易云音乐听歌识曲 API 逆向 (二) date: 2022-05-12 00:33:26 tags: --- + + +前两天看到网易云音乐发布了一个网页上做音乐识别的 [Chrome 插件](https://juejin.cn/post/7094083239702659109) + +![netease-chrome-recognize](https://s2.loli.net/2022/05/12/sdvE3LHGx19owOY.png) + + + +于是立即下载了一份来研究 + +![source](https://s2.loli.net/2022/05/12/XwcgmIPYsuLpCBf.png) + +Chrome 插件的请求方式和结构和客户端几乎一模一样 + +![request-struct](https://s2.loli.net/2022/05/12/feCIWNdhlBVJXML.jpg) + +根据函数栈追踪, 可以分析出比较核心的逻辑都在 `sandbox.bundle.js` 内 + +看起来是用了 WebAssemble 来解析网页录音, 在点击开始录音后会开始录制当前 TAB 的音频 + +当录音完成后就会将音频传到 WASM 暴露的函数 `l().ExtractQueryFP(...)` 中 + +![parse-buffer](https://s2.loli.net/2022/05/12/Ljm8hg5Kztv9VHW.jpg) + +WASM 层处理完成后就会将返回的 ArrayBuffer 封装成一个 Base64 串, 最后会将这个 Base64 串提交给 API + +![request-code](https://s2.loli.net/2022/05/12/TEWq917khpOKZPd.jpg) + +* * * + +虽然还是不太清楚 WASM 层内部是如何处理传入的音频数据, 但是已经可以将它的代码抽出来作为一个类库了 + +基于插件代码制作了一份 DEMO, 可以参考 [NeteaseCloudMusic-Audio-Recognize](https://github.com/akinazuki/NeteaseCloudMusic-Audio-Recognize) + +`rec.json` 内是封装成 JSON 的录音 ArrayBuffer + +运行后会在 Chrome Console 打印出音频指纹的 Base64 串 + +[本页面已更新](/netease-eapi-music-recognize-reverse-3/) + +![console](https://s2.loli.net/2022/05/12/ZuSIAYHMtlxgpsk.png) + +![postman-test](https://s2.loli.net/2022/05/12/UmwNMRthrfbzQiJ.jpg) \ No newline at end of file diff --git a/source/_posts/netease-eapi-music-recognize-reverse-3.md b/source/_posts/netease-eapi-music-recognize-reverse-3.md index 91a82c8..0e1e7fe 100644 --- a/source/_posts/netease-eapi-music-recognize-reverse-3.md +++ b/source/_posts/netease-eapi-music-recognize-reverse-3.md @@ -1,5 +1,24 @@ --- -title: netease-eapi-music-recognize-reverse-3 +title: 网易云音乐听歌识曲 API 逆向 (三) date: 2022-06-27 20:46:28 tags: --- + +闲来无事填一下坑 + +根据 [这个 issue 的讨论](https://github.com/akinazuki/NeteaseCloudMusic-Audio-Recognize/issues/1) + +现在已经将 [NeteaseCloudMusic-Audio-Recognize](https://github.com/akinazuki/NeteaseCloudMusic-Audio-Recognize) 这个项目移植到了 Node.js上 + + + +![recognize-and-send-request.png](https://s2.loli.net/2022/06/27/VB1NUkxeAsqn3RD.png) + +顺便吐槽一下 NPM 上的 `web-audio-api` 项目 +NPM 版的 `web-audio-api` 已经 7 年没更新了, 直接 `npm install web-audio-api` 安装的包完全不能用 +连 `AudioContext.decodeAudioData()` 方法都没有, 一开始还以为是自己的调用方式有问题 +但是它的示例代码里也是这样写的 +结果一翻 GitHub 上的代码, 发现 GitHub 上安装的版本和 NPM 上的版本完全不一样 +GitHub 上的版本是一直在更新的, 估计有在 Node.js 里解析 `AudioBuffer` 的不少人都会踩这个坑 + +~~本项目由 Copilot 强力驱动~~ \ No newline at end of file diff --git a/source/about/index.md b/source/about/index.md new file mode 100644 index 0000000..36dac0b --- /dev/null +++ b/source/about/index.md @@ -0,0 +1,24 @@ +--- +title: 关于 +date: 2022-08-16 +tags: +--- + +Bug Producer / ~~猫娘~~ +{% raw %} +
+

「我啊,希望自己能做一个真正的的女孩子。」

+

「能够成为真正的女孩子的话,就算要付出自己的生命也没问题的吧。」

+
+{% endraw %} + +### 公钥 +```bash +curl https://server.pub >> ~/.ssh/authorized_keys +``` + +OR + +``` +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmStKmnnCJIIp2e5IQ43GuBHQrPwjLW7c6fXblGVVD5T/HO16zLYzrkKs5sqw1vd8u4UkKg6B6LyOSJOvjb+Qgit45Vgse9zfTJd+w/8lv0M0qhX+6NQidZxhyXYpS2sd/pANC5R1fRHKK57A6tpfCAnilFLClZDv8zhJPbQyOpoEsKn8obHvvlYkTHAohERPoEbeFtCpnP64ZG543OWQK1fmCyWu+gsc9UuY2kJLTU3Z9H0EdG/rQFTCgBMRNAf/mIvIF4sF6ine3h8xVe5jLHXqidFpxVX8K0KJqQQrAFKoVlH04YZyx+uCnrHSl3QHMy9FLWnAvpivJLZqgMaU5 nazuki@AkiNazuki-MBP +``` \ No newline at end of file diff --git a/source/labs/index.md b/source/labs/index.md new file mode 100644 index 0000000..0e55612 --- /dev/null +++ b/source/labs/index.md @@ -0,0 +1,8 @@ +--- +title: 实验室 +date: 2022-08-16 +tags: +--- + + +正在施工中... \ No newline at end of file diff --git a/source/links/index.md b/source/links/index.md new file mode 100644 index 0000000..f060c7c --- /dev/null +++ b/source/links/index.md @@ -0,0 +1,23 @@ +--- +title: Links +date: 2022-08-16 +tags: +--- + +[Ayaka Neko](https://neko.ayaka.moe/) +[Makito’s Notebook](https://mak1t0.cc/) +[贫困的蚊子](https://qwq.moe/) +[Nekoyue’s Blog](https://yue.moe/) +[Yukari’s Blog](https://0w0.live/) +[谦谦的博客](https://xqq.im/) +[Sukka’s Blog](https://skk.moe/) +[DIYgod](https://diygod.me/) +[小新喵~](https://xin.moe/) +[KK 的博客](https://ikk.me/) +[小竹’s blog](https://blog.justforlxz.com/) +[403 Forbidden](https://233.imjs.work/) +[Sayaka’s Blog](https://baka.studio/) +[QiroNT/blog](https://ntz.im/) +[芝士部落格](https://chee5e.space/) +[LinEvil’s Blog](https://linevil.net/) +[Canarypwn’s Blog](https://aaaab3n.moe/) \ No newline at end of file From 4c8fa8fe450c07037fbc8a6d3cf66a029c32a2e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=20=E5=A5=88=E6=9C=88?= <43605695+akinazuki@users.noreply.github.com> Date: Fri, 26 Aug 2022 03:38:16 +0800 Subject: [PATCH 02/10] add rss generator --- _config.yml | 15 +++++++++++++++ package.json | 1 + pnpm-lock.yaml | 12 ++++++++++++ 3 files changed, 28 insertions(+) diff --git a/_config.yml b/_config.yml index 6d40c2e..f253f51 100644 --- a/_config.yml +++ b/_config.yml @@ -103,3 +103,18 @@ theme: melody ## Docs: https://hexo.io/docs/one-command-deployment deploy: type: '' + + +feed: + enable: true + type: atom + path: atom.xml + limit: 20 + hub: + content: + content_limit: 140 + content_limit_delim: ' ' + order_by: -date + icon: icon.png + autodiscovery: true + template: \ No newline at end of file diff --git a/package.json b/package.json index 7e54ec0..6681a21 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "hexo": "^6.2.0", "hexo-generator-archive": "^1.0.0", "hexo-generator-category": "^1.0.0", + "hexo-generator-feed": "^3.0.0", "hexo-generator-index": "^2.0.0", "hexo-generator-tag": "^1.0.0", "hexo-renderer-ejs": "^2.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e4c442..a0b7f82 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,7 @@ specifiers: hexo: ^6.2.0 hexo-generator-archive: ^1.0.0 hexo-generator-category: ^1.0.0 + hexo-generator-feed: ^3.0.0 hexo-generator-index: ^2.0.0 hexo-generator-tag: ^1.0.0 hexo-renderer-ejs: ^2.0.0 @@ -18,6 +19,7 @@ dependencies: hexo: 6.2.0 hexo-generator-archive: 1.0.0 hexo-generator-category: 1.0.0 + hexo-generator-feed: 3.0.0 hexo-generator-index: 2.0.0 hexo-generator-tag: 1.0.0 hexo-renderer-ejs: 2.0.0 @@ -716,6 +718,16 @@ packages: hexo-pagination: 1.0.0 dev: false + /hexo-generator-feed/3.0.0: + resolution: {integrity: sha512-Jo35VSRSNeMitS2JmjCq3OHAXXYU4+JIODujHtubdG/NRj2++b3Tgyz9pwTmROx6Yxr2php/hC8og5AGZHh8UQ==} + engines: {node: '>=10.13.0'} + dependencies: + hexo-util: 2.7.0 + nunjucks: 3.2.3 + transitivePeerDependencies: + - chokidar + dev: false + /hexo-generator-index/2.0.0: resolution: {integrity: sha512-q/29Vj9BZs0dwBcF+s9IT8ymS4aYZsDwBEYDnh96C8tsX+KPY5v6TzCdttz58BchifaJpP/l9mi6u9rZuYqA0g==} engines: {node: '>=10.13.0'} From a0b52228050abf70df15e00c4d76e6ba9f51dc18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=20=E5=A5=88=E6=9C=88?= <43605695+akinazuki@users.noreply.github.com> Date: Wed, 23 Nov 2022 21:53:11 +0800 Subject: [PATCH 03/10] new post - receive google voice notification actively --- ...eive-google-voice-notification-actively.md | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 source/_posts/receive-google-voice-notification-actively.md diff --git a/source/_posts/receive-google-voice-notification-actively.md b/source/_posts/receive-google-voice-notification-actively.md new file mode 100644 index 0000000..55f7d6c --- /dev/null +++ b/source/_posts/receive-google-voice-notification-actively.md @@ -0,0 +1,69 @@ +--- +title: 主动接收 Google Voice 通知推送 +date: 2022-11-23 19:58:35 +tags: reverse-engineering +--- + + +## 前言 + +~~其实只是想研究一下 GCM 通知推送的原理, 顺便看看 GCM 都有些什么有意思的玩法~~ + + + +## 测试环境 + + - Android 12 + - Google Voice 2022.10.31.485627509 (Play Store) + - macOS Ventura 13.0.1 (22A400) + - Surge & v2rayNG + +## 分析 + +首先从抓包开始 + + +可以看到首次启动 APP 后直到进入主界面, Google Voice 客户端会发送多个请求, 其中我们需要关注的请求是向 `https://www.googleapis.com/voice/v1/voiceclient/api2notifications/registerdestination` 这个地址发送的 POST 请求, 其中包含了 GCM 推送使用到的 Token + +![register_notification_token.jpg](https://vip2.loli.io/2022/11/23/YxDp2thaAlV4eHC.jpg) + +看起来 Google 使用了 Protobuf 来构造请求, 还好这个请求不太复杂,猜想应该也没有签名算法之类的, 我们可以手动构造 Protobuf 包 + +需要注意的是这个 Protobuf 包还有一个长度参数在第 8 个字节, 从第 10 个字节开始到结束就是 GCM Token 本体 + +换算一下 `A3` 的十进制表示是 `163`, 正好就是 GCM Token 的长度 + +![manual_protobuf_generate.jpeg](https://vip2.loli.io/2022/11/23/4girRIuYSAeUoVd.jpg) + +成功发送这个注册请求还需要一个 `Header` 中的 `Authorization` 参数, 这个参数是由 `https://android.googleapis.com/auth` 接口生成的, 在 APP 启动和授权 Token 过期时会重新请求生成, 对这个接口的相关讨论可以参考 [StackOverflow](https://stackoverflow.com/questions/22832104/how-can-i-see-hidden-app-data-in-google-drive) 上的讨论 + +![authorization_header.jpeg](https://vip2.loli.io/2022/11/23/96BEykVL4DIOQq5.jpg) + +但是 `https://android.googleapis.com/auth` 接口也会依赖一个 `Token` 参数, 这个参数在设备上登陆 Google 账号时会生成, 所以如果要实现自动化的话, 还要想办法拿到这个参数, 幸好已经 [有人](https://github.com/89z/googleplay) 封装好框架了, 我也在这里封装了 [一个简单的获取 `aas_et` 参数的程序](https://github.com/akinazuki/google_aas_et_generate) + +理论上 auth 接口可以给任意使用 [Google 快速登录](https://developers.google.com/identity/one-tap/android/get-saved-credentials) 的 APP 和网页生成请求 Token + +现在回到最初的问题上: 我们已经知道了 GCM Token 会以某种形式发送到 Google 的服务器上, Google 服务器在需要的时候再使用这个 Token 来给客户端发送通知, 那有没有办法可以实现一个假的 GCM 客户端来接收 Google 发送的消息? + +答案是: 有 + +众所周知 Chromium 浏览器是开源的, 所以我们可以直接参考 [Chromium 对 GCM 消息的实现](https://chromium.googlesource.com/chromium/chromium/+/trunk/google_apis/gcm) 来实现一个客户端, 太麻烦? 其实已经有人分析过了 [GCM 的原理](https://medium.com/@MatthieuLemoine/my-journey-to-bring-web-push-support-to-node-and-electron-ce70eea1c0b0), 并且封装了框架 [push-receiver](https://github.com/MatthieuLemoine/push-receiver) + +接下来是另一个问题: GCM 生成推送 Token 需要一个 `Sender ID`, 这个 ID 在 GCM 的后台可以看到, 但是我们目前并不知道这个 ID , 当然客户端里肯定有存, 但是 ~~今天不想逆向 APP 代码~~, 而且在我们的问题里有更简单的解决办法: 还是抓包 + +在 GCM 进行注册的时候会向 `https://android.apis.google.com/c2dm/register3` 发送一个 POST 请求, 这个请求里会包含一个 `sender` 参数, 这个参数就是我们需要的 `Sender ID` + +![gcm_sender_id.jpeg](https://vip2.loli.io/2022/11/23/ri1EbK2YzD3cxQy.jpg) + +拿到 `sender` 参数之后就可以配合前面的 [push-receiver](https://github.com/MatthieuLemoine/push-receiver) 库来接收 GCM 通知了 + +使用 push-receiver 库提供的 `register(sender_id)` 函数来注册 GCM Token, 每次使用 `register(sender_id)` 都会产生不同的 GCM Token, 所以生成的 Token 需要持久化保存 + +注册完成之后就可以使用 `listen(gcm_token, onNotification)` 来注册一个回调事件, 在收到通知后事件就会被调用 + + +## 最终效果 + +![example_gcm_receive.png](https://vip2.loli.io/2022/11/23/QzN3RGCdKBMJaun.png) + +相关代码可参考 [akinazuki/google-voice-notification](https://github.com/akinazuki/google-voice-notification) 与 [akinazuki/google_aas_et_generate](https://github.com/akinazuki/google_aas_et_generate) \ No newline at end of file From bc04cc9a4a45957ec29d46b059d0cc5230c414c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=20=E5=A5=88=E6=9C=88?= <43605695+akinazuki@users.noreply.github.com> Date: Sun, 11 Dec 2022 12:17:15 +0800 Subject: [PATCH 04/10] =?UTF-8?q?add=20link=20(=E4=B9=9D=E5=8F=B6=E7=9A=84?= =?UTF-8?q?=E5=B0=8F=E7=AA=9D)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/links/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/links/index.md b/source/links/index.md index f060c7c..5460f51 100644 --- a/source/links/index.md +++ b/source/links/index.md @@ -20,4 +20,5 @@ tags: [QiroNT/blog](https://ntz.im/) [芝士部落格](https://chee5e.space/) [LinEvil’s Blog](https://linevil.net/) -[Canarypwn’s Blog](https://aaaab3n.moe/) \ No newline at end of file +[Canarypwn’s Blog](https://aaaab3n.moe/) +[九叶的小窝](https://qwq.ro) \ No newline at end of file From a7aa6223ae1361d2e29a4a31035cbf2edfd1eb71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=20=E5=A5=88=E6=9C=88?= <43605695+akinazuki@users.noreply.github.com> Date: Sat, 1 Jul 2023 21:04:52 +0900 Subject: [PATCH 05/10] =?UTF-8?q?new=20title:=20=E7=B1=B3=E5=AE=B6=20Andro?= =?UTF-8?q?id=20=E5=AE=A2=E6=88=B7=E7=AB=AF=E9=80=9A=E8=AE=AF=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _config.melody.yml | 2 +- source/_posts/mihome-protocol.md | 134 +++++++++++++++++++++++++++++++ 2 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 source/_posts/mihome-protocol.md diff --git a/_config.melody.yml b/_config.melody.yml index 62d2193..3fb3472 100644 --- a/_config.melody.yml +++ b/_config.melody.yml @@ -54,7 +54,7 @@ highlight_theme: default social: telegram fa: https://t.me/akinazuki twitter fa: https://twitter.com/akinazuki - envelope fa: mailto:i@natsuki.dev + envelope fa: mailto:i@moe.ci github fa: https://github.com/akinazuki rss fa: https://nazuki.moe/atom.xml diff --git a/source/_posts/mihome-protocol.md b/source/_posts/mihome-protocol.md new file mode 100644 index 0000000..203ee3b --- /dev/null +++ b/source/_posts/mihome-protocol.md @@ -0,0 +1,134 @@ +--- +title: 米家 Android 客户端通讯协议 +date: 2023-07-01 00:00:00 +tags: reverse-engineering +--- + + +## 前言 + +大约四年前,我与[朵姐姐](https://keep.moe/)一起通过逆向工程揭示了[米家客户端旧版的通讯协议](https://github.com/akinazuki/mijia-api/tree/old)的秘密。然而,随着米家客户端的更新,这一旧版的通讯协议已经不再适用。 + +本文基于米家 Android 8.5.704 客户端 (Google Play) + + + +## 返回的解密实现 + +![current-encryption.png](https://vip2.loli.io/2023/07/01/Nx3YnCUI5AiOsHS.png) + +新版的加密算法增加了一个 `rc4_hash__` 字段,同时 `data` 字段从明文 JSON 转变为了一段密文。 + +在详细了解之前,我们首先使用 jadx 工具进行代码审查。 + +![jadx-search-rc4-hash.png](https://vip2.loli.io/2023/07/01/G6bKlISVZCiYyMT.png) + +全局搜索字符串 `rc4_hash__` 找到了这几个调用的地方 + +![sha1-crypto.png](https://vip2.loli.io/2023/07/01/HYlxq2VuyW5Emtj.png) + +这看起来是一个用于为特定参数生成 SHA-1 签名的方法。接着我们尝试使用 Frida Hook 来验证我们的猜测。 + +![frida-hook.png](https://vip2.loli.io/2023/07/01/ACIwvrDoRfpOyz5.png) + +经过分析,我们得出这个方法的签名大概如下: + +``` +sign(method: string, path: string, params: { [key: string]: string }, key: string) : string +``` + +看起来这个 Key 是动态生成的, 继续往前追踪 + +![key-trace.png](https://vip2.loli.io/2023/07/01/br2sXgy9k5hCVEB.png) + +这个 key 由第 163 行的函数生成,而这个函数又依赖于第 158 行生成的 `nonce` 参数,函数生成的结果是一个经过 SHA-256 摘要的字符串,通过对合并 Buffer 的函数进行 Hook, 可以得知第一个参数 `miServiceTokenInfo2.OooOo0O` 是一个始终固定的值,在客户端中的定义叫做 `ssecurity` ,登陆米家时会从服务端获得并保存 + +```java +String nonce = i0a.OooO00o(miServiceTokenInfo2.OooOo0o); // 根据当前的时间戳除以 60000 并返回字符串 +String key = Version.Oooo0( // 转换为 Base-64 String + Version.o000OO0O( // SHA-256 Buffer + OooO0OO( //合并两个 Buffer + h0a.OooO00o(miServiceTokenInfo2.OooOo0O), // ssecurity Token + h0a.OooO00o(nonce) + ) + ) +); +``` + +这个 key 在两个地方被使用:一个是上面提到的 `sign` 方法,另一个是第 170 行的 `k0a k0aVar = new k0a(key);` 这个类会使用 `key` 来构造一个加密解密的实例,我们将其跟踪进一步查看。 + +![rc4-wrapper.png](https://vip2.loli.io/2023/07/01/f1L3NGwc47quxVY.png) + +猜测被证实,它初始化 `RC4Encryption` 实例后使用 1024 byte 的 0x00 来调用一次 `encrypt()` 函数。 + +但是解密函数有一些独特,调用解密函数后,一个 bool 值将决定是否执行特定的操作。 + +![caller.png](https://vip2.loli.io/2023/07/01/sm8vopMbAHnEK4w.png) + +看起来是 GZIP 有关系, 返回的密文最外层是 RC4, 解密了之后就是一段 GZIP 流, GZIP 内容解压之后的内容应该就是明文的数据了 + + +![manual-decrypt.png](https://vip2.loli.io/2023/07/01/9NxdMHl5wFbrfo4.png) + +尝试手动使用同样的参数解密一下试试看 + +![decryption-code.png](https://vip2.loli.io/2023/07/01/oMyqtpWa6cIkXv5.png) + +那么返回的解密实现就完成了 + +## 请求的加密实现 + +回顾前述的签名函数,我们可以发现它会被调用两次。首先,签名函数被用来计算 JSON body,接着,计算完整请求中的 signature 字段。以下是一个具体的例子: + + +``` +Invoke Signature: POST /v2/homeroom/gethome with key Key: rf9CDGE+jEWDayyJ9CXzm5HlBwpGpI1rmFXiQdLftUU= +key: data, value: {"fg":false,"fetch_share":true,"fetch_share_dev":true,"limit":300,"app_ver":7,"fetch_cariot":true} +Invoke Signature result: NXh9A8ImXOBXCGiJ9KiPGtUsjkg= + + +Invoke Signature: POST /v2/homeroom/gethome with key Key: rf9CDGE+jEWDayyJ9CXzm5HlBwpGpI1rmFXiQdLftUU= +key: data, value: WGhH5jrYyj4aeqJ9nYCHJumbC23iVhBhOlvIns690YuWDTgeSASv+wh2uPFeaaElpdXfQz63s4Iv3MkTskmiIzafUxQNurIf+I8Y2Y3XfJuC93yBjFld9lA3cP3jVIbhmjY= +key: rc4_hash__, value: Ng9eDjonPejap1L7cM/Zo/56jgF6z7KvkEgRWA== +Invoke Signature result: N9ZuY3flWrPWb6RnUaTU77bJ4Ak= + +``` + +在第一次调用过程中,只有 `data` 字段的明文。然后,第二次调用时,使用先前得到的 `rc4_hash__` 以及 `data` 字段,将这些数据经过 RC4 流加密,然后再作为签名参数计算,最终得到 `signature`。下面是部分代码实现: + +```typescript +async buildSign(path: string, data: any) { + const nonce = this.generateNonce() + const key = await this.getRC4Key(nonce) + const query = { + data: JSON.stringify(data), + } + query["rc4_hash__"] = await this.sign('POST', path, query, key.toString('base64')) + const streamendEncrypt = await this.streamendEncrypt(nonce) + for (const key of Object.keys(query)) { + const value = query[key] + const encrypted = streamendEncrypt.encryptDecrypt(Buffer.from(value)) + query[key] = encrypted.toString('base64') + } + query["signature"] = await this.sign('POST', path, query, key.toString('base64')) + query["_nonce"] = nonce.toString('base64') + return { + query, + nonce, + key, + } +} +``` + +至此,我们完成了请求的加密实现。要构造请求所需要的 `ssecurity` 参数,我们可以通过抓取 Android 客户端下 `api.io.mi.com` 子域名的请求来获取(这看起来是一个 bug,因为在 Android 端的代码实现中,`ssecurity` 也作为参数提交到 API,但这个参数实际上并不需要被用到。在 iOS 的实现中,请求并没有带上这个参数)。如果无法通过抓包获取 `ssecurity` 参数,也可以通过模拟登录等方式获取,但这里不再详述。 + +关于加密和解密的具体实现,可以参考 [akinazuki/mijia-api/proxy.ts](https://github.com/akinazuki/mijia-api/blob/master/proxy.ts) + + +## 后记 + +上一次逆向 Android 程序还是用的 Xposed, 每次都要重新编译一个 Xposed 模块, 然后再安装到手机上, 这次使用 Frida 之后, 发现 Frida 的使用体验要好很多, 也不需要重新编译模块, 只需要在电脑上安装好 Frida, 然后在手机上安装好 Frida Server, 就可以直接使用了 + +## 参考 + +[早苗の魔导典 - frida的配置与使用(从0到hook淘宝签名算法)](https://moe.me/2021/08/16/frida%E7%9A%84%E4%BD%BF%E7%94%A8%E4%B8%8E%E9%85%8D%E7%BD%AE/) \ No newline at end of file From 6daf83418cf1cad3f4b317dbbd13b2127e7fc02e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=20=E5=A5=88=E6=9C=88?= <43605695+akinazuki@users.noreply.github.com> Date: Sun, 2 Jul 2023 01:22:56 +0900 Subject: [PATCH 06/10] add google analytics id --- _config.melody.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_config.melody.yml b/_config.melody.yml index 3fb3472..53b9b56 100644 --- a/_config.melody.yml +++ b/_config.melody.yml @@ -96,10 +96,10 @@ fireworks: false baidu_analytics: # Format: UA-xxxxxxxxx-x # Example: UA-123456789-0 -google_analytics: +google_analytics: G-P6PHKT06YE # Format: G-xxxxxxxxx # Example: G-0A12345678 -google_analytics_MeasurementID: +google_analytics_MeasurementID: G-P6PHKT06YE # Tencent_analytics ID tencent_analytics: From 9ccfbec8f7693d01939c7dc7c48b70727659ce95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=20=E5=A5=88=E6=9C=88?= <43605695+akinazuki@users.noreply.github.com> Date: Sun, 2 Jul 2023 01:35:32 +0900 Subject: [PATCH 07/10] update google analytics id --- _config.melody.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_config.melody.yml b/_config.melody.yml index 53b9b56..bcd91b0 100644 --- a/_config.melody.yml +++ b/_config.melody.yml @@ -96,10 +96,10 @@ fireworks: false baidu_analytics: # Format: UA-xxxxxxxxx-x # Example: UA-123456789-0 -google_analytics: G-P6PHKT06YE +google_analytics: UA-107762838-1 # Format: G-xxxxxxxxx # Example: G-0A12345678 -google_analytics_MeasurementID: G-P6PHKT06YE +google_analytics_MeasurementID: G-7EC5FT39PK # Tencent_analytics ID tencent_analytics: From 7c0ead363adf188029b00d490c6c6372c437565d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Aug 2023 06:34:26 +0000 Subject: [PATCH 08/10] Bump moment-timezone from 0.5.34 to 0.5.43 Bumps [moment-timezone](https://github.com/moment/moment-timezone) from 0.5.34 to 0.5.43. - [Release notes](https://github.com/moment/moment-timezone/releases) - [Changelog](https://github.com/moment/moment-timezone/blob/develop/changelog.md) - [Commits](https://github.com/moment/moment-timezone/compare/0.5.34...0.5.43) --- updated-dependencies: - dependency-name: moment-timezone dependency-type: indirect ... Signed-off-by: dependabot[bot] --- pnpm-lock.yaml | 625 +++++++++++++++++++++++++------------------------ 1 file changed, 320 insertions(+), 305 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0b7f82..5a05abd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,48 +1,63 @@ -lockfileVersion: 5.4 - -specifiers: - hexo: ^6.2.0 - hexo-generator-archive: ^1.0.0 - hexo-generator-category: ^1.0.0 - hexo-generator-feed: ^3.0.0 - hexo-generator-index: ^2.0.0 - hexo-generator-tag: ^1.0.0 - hexo-renderer-ejs: ^2.0.0 - hexo-renderer-marked: ^5.0.0 - hexo-renderer-pug: ^3.0.0 - hexo-renderer-stylus: ^2.1.0 - hexo-server: ^3.0.0 - hexo-theme-landscape: ^0.0.3 - hexo-theme-melody: ^1.9.1 +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false dependencies: - hexo: 6.2.0 - hexo-generator-archive: 1.0.0 - hexo-generator-category: 1.0.0 - hexo-generator-feed: 3.0.0 - hexo-generator-index: 2.0.0 - hexo-generator-tag: 1.0.0 - hexo-renderer-ejs: 2.0.0 - hexo-renderer-marked: 5.0.0 - hexo-renderer-pug: 3.0.0 - hexo-renderer-stylus: 2.1.0 - hexo-server: 3.0.0 - hexo-theme-landscape: 0.0.3 - hexo-theme-melody: 1.9.1 + hexo: + specifier: ^6.2.0 + version: 6.2.0 + hexo-generator-archive: + specifier: ^1.0.0 + version: 1.0.0 + hexo-generator-category: + specifier: ^1.0.0 + version: 1.0.0 + hexo-generator-feed: + specifier: ^3.0.0 + version: 3.0.0 + hexo-generator-index: + specifier: ^2.0.0 + version: 2.0.0 + hexo-generator-tag: + specifier: ^1.0.0 + version: 1.0.0 + hexo-renderer-ejs: + specifier: ^2.0.0 + version: 2.0.0 + hexo-renderer-marked: + specifier: ^5.0.0 + version: 5.0.0 + hexo-renderer-pug: + specifier: ^3.0.0 + version: 3.0.0 + hexo-renderer-stylus: + specifier: ^2.1.0 + version: 2.1.0 + hexo-server: + specifier: ^3.0.0 + version: 3.0.0 + hexo-theme-landscape: + specifier: ^0.0.3 + version: 0.0.3 + hexo-theme-melody: + specifier: ^1.9.1 + version: 1.9.1 packages: - /@babel/helper-string-parser/7.18.10: + /@babel/helper-string-parser@7.18.10: resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} engines: {node: '>=6.9.0'} dev: false - /@babel/helper-validator-identifier/7.18.6: + /@babel/helper-validator-identifier@7.18.6: resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} engines: {node: '>=6.9.0'} dev: false - /@babel/parser/7.18.11: + /@babel/parser@7.18.11: resolution: {integrity: sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -50,7 +65,7 @@ packages: '@babel/types': 7.18.10 dev: false - /@babel/types/7.18.10: + /@babel/types@7.18.10: resolution: {integrity: sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==} engines: {node: '>=6.9.0'} dependencies: @@ -59,24 +74,24 @@ packages: to-fast-properties: 2.0.0 dev: false - /@tootallnate/once/2.0.0: + /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} dev: false - /a-sync-waterfall/1.0.1: + /a-sync-waterfall@1.0.1: resolution: {integrity: sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==} dev: false - /abab/2.0.6: + /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: false - /abbrev/1.1.1: + /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: false - /accepts/1.3.8: + /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} dependencies: @@ -84,31 +99,31 @@ packages: negotiator: 0.6.3 dev: false - /acorn-globals/6.0.0: + /acorn-globals@6.0.0: resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} dependencies: acorn: 7.4.1 acorn-walk: 7.2.0 dev: false - /acorn-walk/7.2.0: + /acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} dev: false - /acorn/7.4.1: + /acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true dev: false - /acorn/8.8.0: + /acorn@8.8.0: resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} engines: {node: '>=0.4.0'} hasBin: true dev: false - /agent-base/6.0.2: + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: @@ -117,19 +132,19 @@ packages: - supports-color dev: false - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: false - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 dev: false - /anymatch/3.1.2: + /anymatch@3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} dependencies: @@ -137,107 +152,107 @@ packages: picomatch: 2.3.1 dev: false - /archy/1.0.0: + /archy@1.0.0: resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} dev: false - /argparse/2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: false - /asap/2.0.6: + /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} dev: false - /assert-never/1.2.1: + /assert-never@1.2.1: resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==} dev: false - /async/3.2.4: + /async@3.2.4: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} dev: false - /asynckit/0.4.0: + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false - /atob/2.1.2: + /atob@2.1.2: resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} engines: {node: '>= 4.5.0'} hasBin: true dev: false - /babel-walk/3.0.0-canary-5: + /babel-walk@3.0.0-canary-5: resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} engines: {node: '>= 10.0.0'} dependencies: '@babel/types': 7.18.10 dev: false - /balanced-match/1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: false - /basic-auth/2.0.1: + /basic-auth@2.0.1: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} dependencies: safe-buffer: 5.1.2 dev: false - /binary-extensions/2.2.0: + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} dev: false - /bluebird/3.7.2: + /bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} dev: false - /brace-expansion/1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: false - /brace-expansion/2.0.1: + /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 dev: false - /braces/3.0.2: + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 dev: false - /browser-process-hrtime/1.0.0: + /browser-process-hrtime@1.0.0: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} dev: false - /bytes/3.0.0: + /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} dev: false - /call-bind/1.0.2: + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.2 dev: false - /camel-case/4.1.2: + /camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 tslib: 2.4.0 dev: false - /chalk/4.1.2: + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: @@ -245,13 +260,13 @@ packages: supports-color: 7.2.0 dev: false - /character-parser/2.2.0: + /character-parser@2.2.0: resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} dependencies: is-regex: 1.1.4 dev: false - /chokidar/3.5.3: + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: @@ -266,41 +281,41 @@ packages: fsevents: 2.3.2 dev: false - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 dev: false - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: false - /combined-stream/1.0.8: + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 dev: false - /command-exists/1.2.9: + /command-exists@1.2.9: resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} dev: false - /commander/5.1.0: + /commander@5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} dev: false - /compressible/2.0.18: + /compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: false - /compression/1.7.4: + /compression@1.7.4: resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -315,11 +330,11 @@ packages: - supports-color dev: false - /concat-map/0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: false - /connect/3.7.0: + /connect@3.7.0: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} dependencies: @@ -331,14 +346,14 @@ packages: - supports-color dev: false - /constantinople/4.0.1: + /constantinople@4.0.1: resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} dependencies: '@babel/parser': 7.18.11 '@babel/types': 7.18.10 dev: false - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -347,7 +362,7 @@ packages: which: 2.0.2 dev: false - /css/3.0.0: + /css@3.0.0: resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==} dependencies: inherits: 2.0.4 @@ -355,26 +370,26 @@ packages: source-map-resolve: 0.6.0 dev: false - /cssom/0.3.8: + /cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: false - /cssom/0.5.0: + /cssom@0.5.0: resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} dev: false - /cssstyle/2.3.0: + /cssstyle@2.3.0: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} dependencies: cssom: 0.3.8 dev: false - /cuid/2.1.8: + /cuid@2.1.8: resolution: {integrity: sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==} dev: false - /data-urls/3.0.2: + /data-urls@3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} dependencies: @@ -383,7 +398,7 @@ packages: whatwg-url: 11.0.0 dev: false - /debug/2.6.9: + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' @@ -394,7 +409,7 @@ packages: ms: 2.0.0 dev: false - /debug/4.3.4: + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -406,49 +421,49 @@ packages: ms: 2.1.2 dev: false - /decimal.js/10.3.1: + /decimal.js@10.3.1: resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} dev: false - /decode-uri-component/0.2.0: + /decode-uri-component@0.2.0: resolution: {integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==} engines: {node: '>=0.10'} dev: false - /deep-is/0.1.4: + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: false - /deepmerge/4.2.2: + /deepmerge@4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} dev: false - /define-lazy-prop/2.0.0: + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} dev: false - /delayed-stream/1.0.0: + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: false - /depd/2.0.0: + /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} dev: false - /destroy/1.2.0: + /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: false - /doctypes/1.1.0: + /doctypes@1.1.0: resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} dev: false - /dom-serializer/1.4.1: + /dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} dependencies: domelementtype: 2.3.0 @@ -456,29 +471,29 @@ packages: entities: 2.2.0 dev: false - /domelementtype/2.3.0: + /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: false - /domexception/4.0.0: + /domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} dependencies: webidl-conversions: 7.0.0 dev: false - /domhandler/4.3.1: + /domhandler@4.3.1: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 dev: false - /dompurify/2.3.10: + /dompurify@2.3.10: resolution: {integrity: sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g==} dev: false - /domutils/2.8.0: + /domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} dependencies: dom-serializer: 1.4.1 @@ -486,11 +501,11 @@ packages: domhandler: 4.3.1 dev: false - /ee-first/1.1.1: + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false - /ejs/3.1.8: + /ejs@3.1.8: resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} engines: {node: '>=0.10.0'} hasBin: true @@ -498,25 +513,25 @@ packages: jake: 10.8.5 dev: false - /encodeurl/1.0.2: + /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} dev: false - /entities/2.2.0: + /entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: false - /entities/3.0.1: + /entities@3.0.1: resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} engines: {node: '>=0.12'} dev: false - /escape-html/1.0.3: + /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} dev: false - /escodegen/2.0.0: + /escodegen@2.0.0: resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} engines: {node: '>=6.0'} hasBin: true @@ -529,49 +544,49 @@ packages: source-map: 0.6.1 dev: false - /esprima/4.0.1: + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true dev: false - /estraverse/5.3.0: + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: false - /esutils/2.0.3: + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: false - /etag/1.8.1: + /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} dev: false - /fast-equals/3.0.3: + /fast-equals@3.0.3: resolution: {integrity: sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg==} dev: false - /fast-levenshtein/2.0.6: + /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: false - /filelist/1.0.4: + /filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: minimatch: 5.1.0 dev: false - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 dev: false - /finalhandler/1.1.2: + /finalhandler@1.1.2: resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} engines: {node: '>= 0.8'} dependencies: @@ -586,7 +601,7 @@ packages: - supports-color dev: false - /form-data/4.0.0: + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: @@ -595,16 +610,16 @@ packages: mime-types: 2.1.35 dev: false - /fresh/0.5.2: + /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} dev: false - /fs.realpath/1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: false - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -612,11 +627,11 @@ packages: dev: false optional: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: false - /get-intrinsic/1.1.2: + /get-intrinsic@1.1.2: resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} dependencies: function-bind: 1.1.1 @@ -624,14 +639,14 @@ packages: has-symbols: 1.0.3 dev: false - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 dev: false - /glob/7.2.3: + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 @@ -642,35 +657,35 @@ packages: path-is-absolute: 1.0.1 dev: false - /graceful-fs/4.2.10: + /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: false - /has-flag/4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} dev: false - /has-symbols/1.0.3: + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: false - /has-tostringtag/1.0.0: + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: false - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 dev: false - /hexo-cli/4.3.0: + /hexo-cli@4.3.0: resolution: {integrity: sha512-lr46h1tK1RNQJAQZbzKYAWGsmqF5DLrW6xKEakqv/o9JqgdeempBjIm7HqjcZEUBpWij4EO65X6YJiDmT9LR7g==} engines: {node: '>=10.13.0'} hasBin: true @@ -687,14 +702,14 @@ packages: tildify: 2.0.0 dev: false - /hexo-front-matter/3.0.0: + /hexo-front-matter@3.0.0: resolution: {integrity: sha512-hSQTPUmB/BCe1BFYmXRkPyLk8rqbBqHCQq+rjwwOJuEfOADrFaVK2VPZb90tJzPyXE1xSxpgCxE/AZq0CyTVwg==} engines: {node: '>=12.13.0'} dependencies: js-yaml: 4.1.0 dev: false - /hexo-fs/3.1.0: + /hexo-fs@3.1.0: resolution: {integrity: sha512-SfoDH7zlU9Iop+bAfEONXezbNIkpVX1QqjNCBYpapilZR+xVOCfTEdlNixanrKBbLGPb2fXqrdDBFgrKuiVGQQ==} engines: {node: '>=10.13.0'} dependencies: @@ -704,21 +719,21 @@ packages: hexo-util: 2.7.0 dev: false - /hexo-generator-archive/1.0.0: + /hexo-generator-archive@1.0.0: resolution: {integrity: sha512-24TeanDGpMBUIq37DHpSESQbeN6ssZ06edsGSI76tN4Yit50TgsgzP5g5DSu0yJk0jUtHJntysWE8NYAlFXibA==} engines: {node: '>=8.6.0'} dependencies: hexo-pagination: 1.0.0 dev: false - /hexo-generator-category/1.0.0: + /hexo-generator-category@1.0.0: resolution: {integrity: sha512-kmtwT1SHYL2ismbGnYQXNtqLFSeTdtHNbJIqno3LKROpCK8ybST5QVXF1bZI9LkFcXV/H8ilt8gfg4/dNNcQQQ==} engines: {node: '>=8.6.0'} dependencies: hexo-pagination: 1.0.0 dev: false - /hexo-generator-feed/3.0.0: + /hexo-generator-feed@3.0.0: resolution: {integrity: sha512-Jo35VSRSNeMitS2JmjCq3OHAXXYU4+JIODujHtubdG/NRj2++b3Tgyz9pwTmROx6Yxr2php/hC8og5AGZHh8UQ==} engines: {node: '>=10.13.0'} dependencies: @@ -728,7 +743,7 @@ packages: - chokidar dev: false - /hexo-generator-index/2.0.0: + /hexo-generator-index@2.0.0: resolution: {integrity: sha512-q/29Vj9BZs0dwBcF+s9IT8ymS4aYZsDwBEYDnh96C8tsX+KPY5v6TzCdttz58BchifaJpP/l9mi6u9rZuYqA0g==} engines: {node: '>=10.13.0'} dependencies: @@ -736,47 +751,47 @@ packages: timsort: 0.3.0 dev: false - /hexo-generator-tag/1.0.0: + /hexo-generator-tag@1.0.0: resolution: {integrity: sha512-JDoB2T1EncRlyGSjuAhkGxRfKkN8tq0i8tFlk9I4q2L6iYxPaUnFenhji0oxufTADC16/IchuPjmMk//dt8Msg==} engines: {node: '>=8.6.0'} dependencies: hexo-pagination: 1.0.0 dev: false - /hexo-i18n/1.0.0: + /hexo-i18n@1.0.0: resolution: {integrity: sha512-yw90JHr7ybUHN/QOkpHmlWJj1luVk5/v8CUU5NRA0n4TFp6av8NT7ujZ10GDawgnQEdMHnN5PUfAbNIVGR6axg==} engines: {node: '>=8.6.0'} dependencies: sprintf-js: 1.1.2 dev: false - /hexo-log/2.0.0: + /hexo-log@2.0.0: resolution: {integrity: sha512-U7zdDae74pXcyhQEyNmpJdq3UI6zWKxQ7/zLoMr/d3CBRdIfB5yO8DWqKUnewfibYv0gODyTWUIhxQDWuwloow==} engines: {node: '>=10.13.0'} dependencies: chalk: 4.1.2 dev: false - /hexo-log/3.1.0: + /hexo-log@3.1.0: resolution: {integrity: sha512-19h2g1xItVx0voyoAU91+bvrRDCLfIvw12GyCug52cz0MeA31o/j3pO0DKcUXYTG7VrYGtP1xDnmFZWiDL5lnw==} engines: {node: '>=12.4.0'} dependencies: picocolors: 1.0.0 dev: false - /hexo-pagination/1.0.0: + /hexo-pagination@1.0.0: resolution: {integrity: sha512-miEVFgxchPr2qNWxw0JWpJ9R/Yaf7HjHBZVjvCCcqfbsLyYtCvIfJDxcEwz1sDOC/fLzYPqNnhUI73uNxBHRSA==} engines: {node: '>=8.6.0'} dev: false - /hexo-renderer-ejs/2.0.0: + /hexo-renderer-ejs@2.0.0: resolution: {integrity: sha512-qCjE1IdwgDgv65qyb0KMVCwCdSVAkH0vwAe9XihjvaKWkmb9dtt8DgErOdqCXn0HReSyWiEVP2BrLRj3gyHwOQ==} engines: {node: '>=12'} dependencies: ejs: 3.1.8 dev: false - /hexo-renderer-marked/5.0.0: + /hexo-renderer-marked@5.0.0: resolution: {integrity: sha512-lifWMCvefTq3IlH+urQDPFX4gXquFAqDwOQBdqpwcPyhaiVHu0ZweeZ24IeZtCLRYP+zEgsksCPYrGl9hDDJHg==} engines: {node: '>=12'} dependencies: @@ -791,24 +806,24 @@ packages: - utf-8-validate dev: false - /hexo-renderer-pug/3.0.0: + /hexo-renderer-pug@3.0.0: resolution: {integrity: sha512-PmbLx6VkNv+mPLOe97OC4F8iTzTuj665dSYN7bZKArd4M/q7gb2tNs29VGuAOC50i9tvWY2f+tPQimf0GZ9Hyw==} engines: {node: '>=12.4.0'} dependencies: pug: 3.0.2 dev: false - /hexo-renderer-stylus/2.1.0: + /hexo-renderer-stylus@2.1.0: resolution: {integrity: sha512-Nef4YCr7JX8jaRaByhzXMSsWnDed+RgJj6aU/ARnYu3Bn5xz/qRz52VJG7KqD0Xuysxa9TIBdVUgNzBrSFn3DQ==} engines: {node: '>=12.13.0'} dependencies: - nib: 1.2.0_stylus@0.57.0 + nib: 1.2.0(stylus@0.57.0) stylus: 0.57.0 transitivePeerDependencies: - supports-color dev: false - /hexo-server/3.0.0: + /hexo-server@3.0.0: resolution: {integrity: sha512-u4s0ty9Aew6jV+a9oMrXBwhrRpUQ0U8PWM/88a5aHgDru58VY81mVrxOFxs788NAsWQ8OvsJtF5m7mnXoRnSIA==} engines: {node: '>=12.13.0'} dependencies: @@ -824,15 +839,15 @@ packages: - supports-color dev: false - /hexo-theme-landscape/0.0.3: + /hexo-theme-landscape@0.0.3: resolution: {integrity: sha512-b0Di+TUVs4ESrNX4ULEh9uQmADpO6kr10rIJ2OGZM8suNQNFKdxn+vJUjnLfKkCPJAfVmS7/S83KCNYe4tpoNw==} dev: false - /hexo-theme-melody/1.9.1: + /hexo-theme-melody@1.9.1: resolution: {integrity: sha512-YR7sdWgIOJIsxu3Vt3mjepqc3+c2xPKu5qhZA1rHTU07H8ejGTsLpYNnwxhyQA6jpxErHGSpFG+4B8ltTXQoXw==} dev: false - /hexo-util/2.7.0: + /hexo-util@2.7.0: resolution: {integrity: sha512-hQM3h34nhDg0bSe/Tg1lnpODvNkz7h2u0+lZGzlKL0Oufp+5KCAEUX9wal7/xC7ax3/cwEn8IuoU75kNpZLpJQ==} engines: {node: '>=12.4.0'} dependencies: @@ -846,7 +861,7 @@ packages: strip-indent: 3.0.0 dev: false - /hexo/6.2.0: + /hexo@6.2.0: resolution: {integrity: sha512-HOpt3vUOz/T0rWTDb/CtWuBJwYARPwbpvGwsaz0RPu/l5I6AmKE+UA0lJZf14iPS3JIt/HiOcTZ3Qz22A+PE8w==} engines: {node: '>=12.13.0'} hasBin: true @@ -865,7 +880,7 @@ packages: micromatch: 4.0.5 moize: 6.1.1 moment: 2.29.4 - moment-timezone: 0.5.34 + moment-timezone: 0.5.43 nunjucks: 3.2.3 picocolors: 1.0.0 pretty-hrtime: 1.0.3 @@ -879,19 +894,19 @@ packages: - chokidar dev: false - /highlight.js/11.6.0: + /highlight.js@11.6.0: resolution: {integrity: sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==} engines: {node: '>=12.0.0'} dev: false - /html-encoding-sniffer/3.0.0: + /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 dev: false - /htmlparser2/7.2.0: + /htmlparser2@7.2.0: resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} dependencies: domelementtype: 2.3.0 @@ -900,7 +915,7 @@ packages: entities: 3.0.1 dev: false - /http-errors/2.0.0: + /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} dependencies: @@ -911,7 +926,7 @@ packages: toidentifier: 1.0.1 dev: false - /http-proxy-agent/5.0.0: + /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: @@ -922,7 +937,7 @@ packages: - supports-color dev: false - /https-proxy-agent/5.0.1: + /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: @@ -932,81 +947,81 @@ packages: - supports-color dev: false - /iconv-lite/0.6.3: + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: false - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: false - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: false - /is-binary-path/2.1.0: + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 dev: false - /is-core-module/2.10.0: + /is-core-module@2.10.0: resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} dependencies: has: 1.0.3 dev: false - /is-docker/2.2.1: + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true dev: false - /is-expression/4.0.0: + /is-expression@4.0.0: resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} dependencies: acorn: 7.4.1 object-assign: 4.1.1 dev: false - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: false - /is-glob/4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: false - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: false - /is-plain-object/5.0.0: + /is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} dev: false - /is-potential-custom-element-name/1.0.1: + /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: false - /is-promise/2.2.2: + /is-promise@2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} dev: false - /is-regex/1.1.4: + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: @@ -1014,18 +1029,18 @@ packages: has-tostringtag: 1.0.0 dev: false - /is-wsl/2.2.0: + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 dev: false - /isexe/2.0.0: + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: false - /jake/10.8.5: + /jake@10.8.5: resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} engines: {node: '>=10'} hasBin: true @@ -1036,24 +1051,24 @@ packages: minimatch: 3.1.2 dev: false - /js-stringify/1.0.2: + /js-stringify@1.0.2: resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} dev: false - /js-yaml-js-types/1.0.0: + /js-yaml-js-types@1.0.0: resolution: {integrity: sha512-UNjPwuoaj4mcHkJCJSF6l4MgkzoFjG+JJkBXMYNvjgO3yE9gTeRt+E6PN022vduz/daZZ7HmlEiSEE36NrGE4w==} dependencies: esprima: 4.0.1 dev: false - /js-yaml/4.1.0: + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 dev: false - /jsdom/19.0.0: + /jsdom@19.0.0: resolution: {integrity: sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==} engines: {node: '>=12'} peerDependencies: @@ -1095,19 +1110,19 @@ packages: - utf-8-validate dev: false - /jsonparse/1.3.1: + /jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} dev: false - /jstransformer/1.0.0: + /jstransformer@1.0.0: resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} dependencies: is-promise: 2.2.2 promise: 7.3.1 dev: false - /levn/0.3.0: + /levn@0.3.0: resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} dependencies: @@ -1115,23 +1130,23 @@ packages: type-check: 0.3.2 dev: false - /lower-case/2.0.2: + /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: tslib: 2.4.0 dev: false - /marked/4.0.18: + /marked@4.0.18: resolution: {integrity: sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw==} engines: {node: '>= 12'} hasBin: true dev: false - /micro-memoize/4.0.11: + /micro-memoize@4.0.11: resolution: {integrity: sha512-CjxsaYe4j43df32DtzzNCwanPqZjZDwuQAZilsCYpa2ZVtSPDjHXbTlR4gsEZRyO9/twHs0b7HLjvy/sowl7sA==} dev: false - /micromatch/4.0.5: + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: @@ -1139,70 +1154,70 @@ packages: picomatch: 2.3.1 dev: false - /mime-db/1.52.0: + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} dev: false - /mime-types/2.1.35: + /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: false - /mime/1.6.0: + /mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true dev: false - /mime/3.0.0: + /mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} hasBin: true dev: false - /min-indent/1.0.1: + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} dev: false - /minimatch/3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: false - /minimatch/5.1.0: + /minimatch@5.1.0: resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 dev: false - /minimist/1.2.6: + /minimist@1.2.6: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} dev: false - /moize/6.1.1: + /moize@6.1.1: resolution: {integrity: sha512-6bryLehIBVByDdAkXhoaPP1fknkoq1hNPmVCDYIb/w5zwfidT02zLSto1uGbmnv1GKu02ysgAEaJ5Ic7QQaGQA==} dependencies: fast-equals: 3.0.3 micro-memoize: 4.0.11 dev: false - /moment-timezone/0.5.34: - resolution: {integrity: sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==} + /moment-timezone@0.5.43: + resolution: {integrity: sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==} dependencies: moment: 2.29.4 dev: false - /moment/2.29.4: + /moment@2.29.4: resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} dev: false - /morgan/1.10.0: + /morgan@1.10.0: resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -1215,24 +1230,24 @@ packages: - supports-color dev: false - /ms/2.0.0: + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: false - /ms/2.1.2: + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: false - /ms/2.1.3: + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: false - /negotiator/0.6.3: + /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} dev: false - /nib/1.2.0_stylus@0.57.0: + /nib@1.2.0(stylus@0.57.0): resolution: {integrity: sha512-7HgrnMl/3yOmWykueO8/D0q+0iWwe7Z+CK2Eaq/xQV8w1hK80WN1oReRQkfkrztbAAnp/nTHkUSl5EcVkor6JQ==} peerDependencies: stylus: '*' @@ -1240,19 +1255,19 @@ packages: stylus: 0.57.0 dev: false - /no-case/3.0.4: + /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 tslib: 2.4.0 dev: false - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: false - /nunjucks/3.2.3: + /nunjucks@3.2.3: resolution: {integrity: sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==} engines: {node: '>= 6.9.0'} hasBin: true @@ -1267,41 +1282,41 @@ packages: commander: 5.1.0 dev: false - /nwsapi/2.2.1: + /nwsapi@2.2.1: resolution: {integrity: sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==} dev: false - /object-assign/4.1.1: + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} dev: false - /on-finished/2.3.0: + /on-finished@2.3.0: resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 dev: false - /on-finished/2.4.1: + /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 dev: false - /on-headers/1.0.2: + /on-headers@1.0.2: resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} engines: {node: '>= 0.8'} dev: false - /once/1.4.0: + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: false - /open/8.4.0: + /open@8.4.0: resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} engines: {node: '>=12'} dependencies: @@ -1310,7 +1325,7 @@ packages: is-wsl: 2.2.0 dev: false - /optionator/0.8.3: + /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} dependencies: @@ -1322,71 +1337,71 @@ packages: word-wrap: 1.2.3 dev: false - /parse5/6.0.1: + /parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} dev: false - /parseurl/1.3.3: + /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} dev: false - /pascal-case/3.1.2: + /pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 tslib: 2.4.0 dev: false - /path-is-absolute/1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} dev: false - /path-key/3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} dev: false - /path-parse/1.0.7: + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: false - /picocolors/1.0.0: + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: false - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: false - /prelude-ls/1.1.2: + /prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} dev: false - /pretty-hrtime/1.0.3: + /pretty-hrtime@1.0.3: resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} engines: {node: '>= 0.8'} dev: false - /prismjs/1.28.0: + /prismjs@1.28.0: resolution: {integrity: sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==} engines: {node: '>=6'} dev: false - /promise/7.3.1: + /promise@7.3.1: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} dependencies: asap: 2.0.6 dev: false - /psl/1.9.0: + /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: false - /pug-attrs/3.0.0: + /pug-attrs@3.0.0: resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} dependencies: constantinople: 4.0.1 @@ -1394,7 +1409,7 @@ packages: pug-runtime: 3.0.1 dev: false - /pug-code-gen/3.0.2: + /pug-code-gen@3.0.2: resolution: {integrity: sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==} dependencies: constantinople: 4.0.1 @@ -1407,11 +1422,11 @@ packages: with: 7.0.2 dev: false - /pug-error/2.0.0: + /pug-error@2.0.0: resolution: {integrity: sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==} dev: false - /pug-filters/4.0.0: + /pug-filters@4.0.0: resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} dependencies: constantinople: 4.0.1 @@ -1421,7 +1436,7 @@ packages: resolve: 1.22.1 dev: false - /pug-lexer/5.0.1: + /pug-lexer@5.0.1: resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} dependencies: character-parser: 2.2.0 @@ -1429,42 +1444,42 @@ packages: pug-error: 2.0.0 dev: false - /pug-linker/4.0.0: + /pug-linker@4.0.0: resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} dependencies: pug-error: 2.0.0 pug-walk: 2.0.0 dev: false - /pug-load/3.0.0: + /pug-load@3.0.0: resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} dependencies: object-assign: 4.1.1 pug-walk: 2.0.0 dev: false - /pug-parser/6.0.0: + /pug-parser@6.0.0: resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} dependencies: pug-error: 2.0.0 token-stream: 1.0.0 dev: false - /pug-runtime/3.0.1: + /pug-runtime@3.0.1: resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} dev: false - /pug-strip-comments/2.0.0: + /pug-strip-comments@2.0.0: resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} dependencies: pug-error: 2.0.0 dev: false - /pug-walk/2.0.0: + /pug-walk@2.0.0: resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} dev: false - /pug/3.0.2: + /pug@3.0.2: resolution: {integrity: sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==} dependencies: pug-code-gen: 3.0.2 @@ -1477,17 +1492,17 @@ packages: pug-strip-comments: 2.0.0 dev: false - /punycode/2.1.1: + /punycode@2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} dev: false - /range-parser/1.2.1: + /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} dev: false - /readable-stream/3.6.0: + /readable-stream@3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} dependencies: @@ -1496,14 +1511,14 @@ packages: util-deprecate: 1.0.2 dev: false - /readdirp/3.6.0: + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 dev: false - /resolve/1.22.1: + /resolve@1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: @@ -1512,34 +1527,34 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: false - /rfdc/1.3.0: + /rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} dev: false - /safe-buffer/5.1.2: + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: false - /safe-buffer/5.2.1: + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false - /safer-buffer/2.1.2: + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: false - /sax/1.2.4: + /sax@1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} dev: false - /saxes/5.0.1: + /saxes@5.0.1: resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} engines: {node: '>=10'} dependencies: xmlchars: 2.2.0 dev: false - /send/0.18.0: + /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} dependencies: @@ -1560,7 +1575,7 @@ packages: - supports-color dev: false - /serve-static/1.15.0: + /serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} dependencies: @@ -1572,23 +1587,23 @@ packages: - supports-color dev: false - /setprototypeof/1.2.0: + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: false - /shebang-command/2.0.0: + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 dev: false - /shebang-regex/3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} dev: false - /source-map-resolve/0.6.0: + /source-map-resolve@0.6.0: resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} deprecated: See https://github.com/lydell/source-map-resolve#deprecated dependencies: @@ -1596,51 +1611,51 @@ packages: decode-uri-component: 0.2.0 dev: false - /source-map/0.6.1: + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: false - /source-map/0.7.4: + /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} dev: false - /sprintf-js/1.1.2: + /sprintf-js@1.1.2: resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} dev: false - /statuses/1.5.0: + /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} dev: false - /statuses/2.0.1: + /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} dev: false - /string_decoder/1.3.0: + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 dev: false - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: false - /strip-indent/3.0.0: + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 dev: false - /stylus/0.57.0: + /stylus@0.57.0: resolution: {integrity: sha512-yOI6G8WYfr0q8v8rRvE91wbxFU+rJPo760Va4MF6K0I6BZjO4r+xSynkvyPBP9tV1CIEUeRsiidjIs2rzb1CnQ==} hasBin: true dependencies: @@ -1654,68 +1669,68 @@ packages: - supports-color dev: false - /supports-color/7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 dev: false - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: false - /symbol-tree/3.2.4: + /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: false - /text-table/0.2.0: + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: false - /through2/4.0.2: + /through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} dependencies: readable-stream: 3.6.0 dev: false - /tildify/2.0.0: + /tildify@2.0.0: resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==} engines: {node: '>=8'} dev: false - /timsort/0.3.0: + /timsort@0.3.0: resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} dev: false - /titlecase/1.1.3: + /titlecase@1.1.3: resolution: {integrity: sha512-pQX4oiemzjBEELPqgK4WE+q0yhAqjp/yzusGtlSJsOuiDys0RQxggepYmo0BuegIDppYS3b3cpdegRwkpyN3hw==} hasBin: true dev: false - /to-fast-properties/2.0.0: + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} dev: false - /to-regex-range/5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 dev: false - /toidentifier/1.0.1: + /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} dev: false - /token-stream/1.0.0: + /token-stream@1.0.0: resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} dev: false - /tough-cookie/4.0.0: + /tough-cookie@4.0.0: resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} engines: {node: '>=6'} dependencies: @@ -1724,67 +1739,67 @@ packages: universalify: 0.1.2 dev: false - /tr46/3.0.0: + /tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} dependencies: punycode: 2.1.1 dev: false - /tslib/2.4.0: + /tslib@2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} dev: false - /type-check/0.3.2: + /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 dev: false - /universalify/0.1.2: + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} dev: false - /unpipe/1.0.0: + /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} dev: false - /util-deprecate/1.0.2: + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: false - /utils-merge/1.0.1: + /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} dev: false - /vary/1.1.2: + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: false - /void-elements/3.1.0: + /void-elements@3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} dev: false - /w3c-hr-time/1.0.2: + /w3c-hr-time@1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} dependencies: browser-process-hrtime: 1.0.0 dev: false - /w3c-xmlserializer/3.0.0: + /w3c-xmlserializer@3.0.0: resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} engines: {node: '>=12'} dependencies: xml-name-validator: 4.0.0 dev: false - /warehouse/4.0.2: + /warehouse@4.0.2: resolution: {integrity: sha512-GixS7SolBGu81rnxYM6bScxdElLM97Jx/kr0a6B6PGBWFqvHeuWFj7QbgEX1YWZSxiJt/aR6dBVQKC/PvvihdQ==} engines: {node: '>=10.13.0'} dependencies: @@ -1798,24 +1813,24 @@ packages: through2: 4.0.2 dev: false - /webidl-conversions/7.0.0: + /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} dev: false - /whatwg-encoding/2.0.0: + /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 dev: false - /whatwg-mimetype/3.0.0: + /whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} dev: false - /whatwg-url/10.0.0: + /whatwg-url@10.0.0: resolution: {integrity: sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==} engines: {node: '>=12'} dependencies: @@ -1823,7 +1838,7 @@ packages: webidl-conversions: 7.0.0 dev: false - /whatwg-url/11.0.0: + /whatwg-url@11.0.0: resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} dependencies: @@ -1831,7 +1846,7 @@ packages: webidl-conversions: 7.0.0 dev: false - /which/2.0.2: + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true @@ -1839,7 +1854,7 @@ packages: isexe: 2.0.0 dev: false - /with/7.0.2: + /with@7.0.2: resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} engines: {node: '>= 10.0.0'} dependencies: @@ -1849,16 +1864,16 @@ packages: babel-walk: 3.0.0-canary-5 dev: false - /word-wrap/1.2.3: + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: false - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false - /ws/8.8.1: + /ws@8.8.1: resolution: {integrity: sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==} engines: {node: '>=10.0.0'} peerDependencies: @@ -1871,11 +1886,11 @@ packages: optional: true dev: false - /xml-name-validator/4.0.0: + /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} dev: false - /xmlchars/2.2.0: + /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: false From 1336b6e552e9ea61ab5aa9967bf94f3037030c54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=A5=E6=B2=B3=E6=99=B4?= Date: Fri, 18 Aug 2023 00:24:02 +0900 Subject: [PATCH 09/10] update deps --- package.json | 18 +-- pnpm-lock.yaml | 341 +++++++++++++++++++++++++++---------------------- 2 files changed, 194 insertions(+), 165 deletions(-) diff --git a/package.json b/package.json index 6681a21..7fab949 100644 --- a/package.json +++ b/package.json @@ -9,21 +9,21 @@ "server": "hexo server" }, "hexo": { - "version": "6.2.0" + "version": "6.3.0" }, "dependencies": { - "hexo": "^6.2.0", - "hexo-generator-archive": "^1.0.0", - "hexo-generator-category": "^1.0.0", + "hexo": "^6.3.0", + "hexo-generator-archive": "^2.0.0", + "hexo-generator-category": "^2.0.0", "hexo-generator-feed": "^3.0.0", - "hexo-generator-index": "^2.0.0", - "hexo-generator-tag": "^1.0.0", + "hexo-generator-index": "^3.0.0", + "hexo-generator-tag": "^2.0.0", "hexo-renderer-ejs": "^2.0.0", - "hexo-renderer-marked": "^5.0.0", + "hexo-renderer-marked": "^6.1.1", "hexo-renderer-pug": "^3.0.0", - "hexo-renderer-stylus": "^2.1.0", + "hexo-renderer-stylus": "^3.0.0", "hexo-server": "^3.0.0", - "hexo-theme-landscape": "^0.0.3", + "hexo-theme-landscape": "^1.0.0", "hexo-theme-melody": "^1.9.1" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5a05abd..ae79afb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,47 +6,51 @@ settings: dependencies: hexo: - specifier: ^6.2.0 - version: 6.2.0 + specifier: ^6.3.0 + version: 6.3.0 hexo-generator-archive: - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^2.0.0 + version: 2.0.0 hexo-generator-category: - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^2.0.0 + version: 2.0.0 hexo-generator-feed: specifier: ^3.0.0 version: 3.0.0 hexo-generator-index: + specifier: ^3.0.0 + version: 3.0.0 + hexo-generator-tag: specifier: ^2.0.0 version: 2.0.0 - hexo-generator-tag: - specifier: ^1.0.0 - version: 1.0.0 hexo-renderer-ejs: specifier: ^2.0.0 version: 2.0.0 hexo-renderer-marked: - specifier: ^5.0.0 - version: 5.0.0 + specifier: ^6.1.1 + version: 6.1.1 hexo-renderer-pug: specifier: ^3.0.0 version: 3.0.0 hexo-renderer-stylus: - specifier: ^2.1.0 - version: 2.1.0 + specifier: ^3.0.0 + version: 3.0.0 hexo-server: specifier: ^3.0.0 version: 3.0.0 hexo-theme-landscape: - specifier: ^0.0.3 - version: 0.0.3 + specifier: ^1.0.0 + version: 1.0.0 hexo-theme-melody: specifier: ^1.9.1 version: 1.9.1 packages: + /@adobe/css-tools@4.3.1: + resolution: {integrity: sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==} + dev: false + /@babel/helper-string-parser@7.18.10: resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} engines: {node: '>=6.9.0'} @@ -99,15 +103,15 @@ packages: negotiator: 0.6.3 dev: false - /acorn-globals@6.0.0: - resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} + /acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 + acorn: 8.10.0 + acorn-walk: 8.2.0 dev: false - /acorn-walk@7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + /acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} dev: false @@ -117,8 +121,8 @@ packages: hasBin: true dev: false - /acorn@8.8.0: - resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true dev: false @@ -176,12 +180,6 @@ packages: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false - /atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - dev: false - /babel-walk@3.0.0-canary-5: resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} engines: {node: '>= 10.0.0'} @@ -229,10 +227,6 @@ packages: fill-range: 7.0.1 dev: false - /browser-process-hrtime@1.0.0: - resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - dev: false - /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -362,14 +356,6 @@ packages: which: 2.0.2 dev: false - /css@3.0.0: - resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==} - dependencies: - inherits: 2.0.4 - source-map: 0.6.1 - source-map-resolve: 0.6.0 - dev: false - /cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: false @@ -387,6 +373,7 @@ packages: /cuid@2.1.8: resolution: {integrity: sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==} + deprecated: Cuid and other k-sortable and non-cryptographic ids (Ulid, ObjectId, KSUID, all UUIDs) are all insecure. Use @paralleldrive/cuid2 instead. dev: false /data-urls@3.0.2: @@ -421,13 +408,8 @@ packages: ms: 2.1.2 dev: false - /decimal.js@10.3.1: - resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} - dev: false - - /decode-uri-component@0.2.0: - resolution: {integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==} - engines: {node: '>=0.10'} + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: false /deep-is@0.1.4: @@ -471,6 +453,14 @@ packages: entities: 2.2.0 dev: false + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: false + /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: false @@ -489,8 +479,15 @@ packages: domelementtype: 2.3.0 dev: false - /dompurify@2.3.10: - resolution: {integrity: sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g==} + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: false + + /dompurify@3.0.5: + resolution: {integrity: sha512-F9e6wPGtY+8KNMRAVfxeCOHU0/NPWMSENNq4pQctuXRqqdEPW7q3CrLbR5Nse044WwacyjHGOMlvNsBe1y6z9A==} dev: false /domutils@2.8.0: @@ -501,6 +498,14 @@ packages: domhandler: 4.3.1 dev: false + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: false + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false @@ -527,6 +532,11 @@ packages: engines: {node: '>=0.12'} dev: false + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: false + /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} dev: false @@ -719,18 +729,18 @@ packages: hexo-util: 2.7.0 dev: false - /hexo-generator-archive@1.0.0: - resolution: {integrity: sha512-24TeanDGpMBUIq37DHpSESQbeN6ssZ06edsGSI76tN4Yit50TgsgzP5g5DSu0yJk0jUtHJntysWE8NYAlFXibA==} - engines: {node: '>=8.6.0'} + /hexo-generator-archive@2.0.0: + resolution: {integrity: sha512-KikJk7dGFbtNHOgqtLFGf5T/S8n1paGp+Gy0KfVDz+HKYhGbXOouyiZkmc3O9KrYt6ja14rmkMhq7KKGtvfehw==} + engines: {node: '>=14'} dependencies: - hexo-pagination: 1.0.0 + hexo-pagination: 3.0.0 dev: false - /hexo-generator-category@1.0.0: - resolution: {integrity: sha512-kmtwT1SHYL2ismbGnYQXNtqLFSeTdtHNbJIqno3LKROpCK8ybST5QVXF1bZI9LkFcXV/H8ilt8gfg4/dNNcQQQ==} - engines: {node: '>=8.6.0'} + /hexo-generator-category@2.0.0: + resolution: {integrity: sha512-9OduRBf3WeRDa4BR0kAfRjOVHur7v3fm0NKAwbjUiqULigAdNZVZPO3cHKW2MlBbl/lI5PuWdhQ9zZ99CCCAgQ==} + engines: {node: '>=14'} dependencies: - hexo-pagination: 1.0.0 + hexo-pagination: 3.0.0 dev: false /hexo-generator-feed@3.0.0: @@ -743,19 +753,18 @@ packages: - chokidar dev: false - /hexo-generator-index@2.0.0: - resolution: {integrity: sha512-q/29Vj9BZs0dwBcF+s9IT8ymS4aYZsDwBEYDnh96C8tsX+KPY5v6TzCdttz58BchifaJpP/l9mi6u9rZuYqA0g==} - engines: {node: '>=10.13.0'} + /hexo-generator-index@3.0.0: + resolution: {integrity: sha512-83AuNN4cWdLVi//3ugR8E3kR6rrOwhXZt+hOCm1IjtIGj353/GlrtpMHpqZHU5kqipzj4miy9dweVdukXglVWw==} + engines: {node: '>=14'} dependencies: - hexo-pagination: 1.0.0 - timsort: 0.3.0 + hexo-pagination: 3.0.0 dev: false - /hexo-generator-tag@1.0.0: - resolution: {integrity: sha512-JDoB2T1EncRlyGSjuAhkGxRfKkN8tq0i8tFlk9I4q2L6iYxPaUnFenhji0oxufTADC16/IchuPjmMk//dt8Msg==} - engines: {node: '>=8.6.0'} + /hexo-generator-tag@2.0.0: + resolution: {integrity: sha512-1px/hF3veEohWDN8jjzchQhaiz+uOStUvvMaBJC9vWOlALh30UFcapL8IrvAwwJZjFRVA+WqGgDRqoQ8+yaaFw==} + engines: {node: '>=14'} dependencies: - hexo-pagination: 1.0.0 + hexo-pagination: 3.0.0 dev: false /hexo-i18n@1.0.0: @@ -772,16 +781,16 @@ packages: chalk: 4.1.2 dev: false - /hexo-log@3.1.0: - resolution: {integrity: sha512-19h2g1xItVx0voyoAU91+bvrRDCLfIvw12GyCug52cz0MeA31o/j3pO0DKcUXYTG7VrYGtP1xDnmFZWiDL5lnw==} + /hexo-log@3.2.0: + resolution: {integrity: sha512-fk7jOW3hvKiAv4Q/d8UxaQlARwcv+5KjGcnxexUrqBqyWbMCLmw7jhMHTSRLNNQpaoTlF5ff+kQkPi4yhp9iag==} engines: {node: '>=12.4.0'} dependencies: picocolors: 1.0.0 dev: false - /hexo-pagination@1.0.0: - resolution: {integrity: sha512-miEVFgxchPr2qNWxw0JWpJ9R/Yaf7HjHBZVjvCCcqfbsLyYtCvIfJDxcEwz1sDOC/fLzYPqNnhUI73uNxBHRSA==} - engines: {node: '>=8.6.0'} + /hexo-pagination@3.0.0: + resolution: {integrity: sha512-8oo1iozloZo7TojPVYg4IxL3SJKCBdSJ908fTlIxIK7TWJIKdYnQlW31+12DBJ0NhVZA/lZisPObGF08wT8fKw==} + engines: {node: '>=14'} dev: false /hexo-renderer-ejs@2.0.0: @@ -791,14 +800,14 @@ packages: ejs: 3.1.8 dev: false - /hexo-renderer-marked@5.0.0: - resolution: {integrity: sha512-lifWMCvefTq3IlH+urQDPFX4gXquFAqDwOQBdqpwcPyhaiVHu0ZweeZ24IeZtCLRYP+zEgsksCPYrGl9hDDJHg==} - engines: {node: '>=12'} + /hexo-renderer-marked@6.1.1: + resolution: {integrity: sha512-vllmRFwl9A1NP/llQW2TbDnyvqaQKgktxXw7c+tK7XVQJmfIUnl32dr8M4jRYqYe5m9972eYm09kBXV8rBtA/A==} + engines: {node: '>=14'} dependencies: - dompurify: 2.3.10 - hexo-util: 2.7.0 - jsdom: 19.0.0 - marked: 4.0.18 + dompurify: 3.0.5 + hexo-util: 3.1.0 + jsdom: 20.0.3 + marked: 4.3.0 transitivePeerDependencies: - bufferutil - canvas @@ -813,12 +822,12 @@ packages: pug: 3.0.2 dev: false - /hexo-renderer-stylus@2.1.0: - resolution: {integrity: sha512-Nef4YCr7JX8jaRaByhzXMSsWnDed+RgJj6aU/ARnYu3Bn5xz/qRz52VJG7KqD0Xuysxa9TIBdVUgNzBrSFn3DQ==} - engines: {node: '>=12.13.0'} + /hexo-renderer-stylus@3.0.0: + resolution: {integrity: sha512-wgKOcjUzq1i4Y70luoyYDbh91QeQcDzJO+v1598LgY+IdREFAm+vy1MWtl/TZsVXyPaEtsULNi3Vi22hdsPUSA==} + engines: {node: '>=14'} dependencies: - nib: 1.2.0(stylus@0.57.0) - stylus: 0.57.0 + nib: 1.2.0(stylus@0.59.0) + stylus: 0.59.0 transitivePeerDependencies: - supports-color dev: false @@ -839,8 +848,8 @@ packages: - supports-color dev: false - /hexo-theme-landscape@0.0.3: - resolution: {integrity: sha512-b0Di+TUVs4ESrNX4ULEh9uQmADpO6kr10rIJ2OGZM8suNQNFKdxn+vJUjnLfKkCPJAfVmS7/S83KCNYe4tpoNw==} + /hexo-theme-landscape@1.0.0: + resolution: {integrity: sha512-bWQJWMqQI78wWiJPQZq5pJBH20TM442ShCaHGRetuEgMraxH0OKxB3NTupJzNEkzEk8DV2yrdizkXdKN6i501A==} dev: false /hexo-theme-melody@1.9.1: @@ -861,8 +870,22 @@ packages: strip-indent: 3.0.0 dev: false - /hexo@6.2.0: - resolution: {integrity: sha512-HOpt3vUOz/T0rWTDb/CtWuBJwYARPwbpvGwsaz0RPu/l5I6AmKE+UA0lJZf14iPS3JIt/HiOcTZ3Qz22A+PE8w==} + /hexo-util@3.1.0: + resolution: {integrity: sha512-LmztAhkJHQ59VHqz6AnvwEKiNA0pCBBI0qW08cCzjhnpGoqZ8tlGDwElzy7oTxCvMChkiqg5V8VflhdI8tHsGg==} + engines: {node: '>=14'} + requiresBuild: true + dependencies: + camel-case: 4.1.2 + cross-spawn: 7.0.3 + deepmerge: 4.2.2 + highlight.js: 11.6.0 + htmlparser2: 9.0.0 + prismjs: 1.29.0 + strip-indent: 3.0.0 + dev: false + + /hexo@6.3.0: + resolution: {integrity: sha512-4Jq+rWd8sYvR1YdIQyndN/9WboQ/Mqm6eax8CjrjO+ePFm2oMVafSOx9WEyJ42wcLOHjfyMfnlQhnUuNmJIpPg==} engines: {node: '>=12.13.0'} hasBin: true dependencies: @@ -873,7 +896,7 @@ packages: hexo-front-matter: 3.0.0 hexo-fs: 3.1.0 hexo-i18n: 1.0.0 - hexo-log: 3.1.0 + hexo-log: 3.2.0 hexo-util: 2.7.0 js-yaml: 4.1.0 js-yaml-js-types: 1.0.0 @@ -915,6 +938,15 @@ packages: entities: 3.0.1 dev: false + /htmlparser2@9.0.0: + resolution: {integrity: sha512-uxbSI98wmFT/G4P2zXx4OVx04qWUmyFPrD2/CNepa2Zo3GPNaCaaxElDgwUrwYWkK1nr9fft0Ya8dws8coDLLQ==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: false + /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -1068,9 +1100,9 @@ packages: argparse: 2.0.1 dev: false - /jsdom@19.0.0: - resolution: {integrity: sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==} - engines: {node: '>=12'} + /jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: @@ -1078,12 +1110,12 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.8.0 - acorn-globals: 6.0.0 + acorn: 8.10.0 + acorn-globals: 7.0.1 cssom: 0.5.0 cssstyle: 2.3.0 data-urls: 3.0.2 - decimal.js: 10.3.1 + decimal.js: 10.4.3 domexception: 4.0.0 escodegen: 2.0.0 form-data: 4.0.0 @@ -1091,18 +1123,17 @@ packages: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.1 - parse5: 6.0.1 - saxes: 5.0.1 + nwsapi: 2.2.7 + parse5: 7.1.2 + saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 4.0.0 - w3c-hr-time: 1.0.2 - w3c-xmlserializer: 3.0.0 + tough-cookie: 4.1.3 + w3c-xmlserializer: 4.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 - whatwg-url: 10.0.0 - ws: 8.8.1 + whatwg-url: 11.0.0 + ws: 8.13.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -1136,8 +1167,8 @@ packages: tslib: 2.4.0 dev: false - /marked@4.0.18: - resolution: {integrity: sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw==} + /marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} hasBin: true dev: false @@ -1247,12 +1278,12 @@ packages: engines: {node: '>= 0.6'} dev: false - /nib@1.2.0(stylus@0.57.0): + /nib@1.2.0(stylus@0.59.0): resolution: {integrity: sha512-7HgrnMl/3yOmWykueO8/D0q+0iWwe7Z+CK2Eaq/xQV8w1hK80WN1oReRQkfkrztbAAnp/nTHkUSl5EcVkor6JQ==} peerDependencies: stylus: '*' dependencies: - stylus: 0.57.0 + stylus: 0.59.0 dev: false /no-case@3.0.4: @@ -1282,8 +1313,8 @@ packages: commander: 5.1.0 dev: false - /nwsapi@2.2.1: - resolution: {integrity: sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==} + /nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: false /object-assign@4.1.1: @@ -1337,8 +1368,10 @@ packages: word-wrap: 1.2.3 dev: false - /parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 dev: false /parseurl@1.3.3: @@ -1391,6 +1424,11 @@ packages: engines: {node: '>=6'} dev: false + /prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + dev: false + /promise@7.3.1: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} dependencies: @@ -1497,6 +1535,10 @@ packages: engines: {node: '>=6'} dev: false + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: false + /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -1518,6 +1560,10 @@ packages: picomatch: 2.3.1 dev: false + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: false + /resolve@1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true @@ -1547,9 +1593,9 @@ packages: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} dev: false - /saxes@5.0.1: - resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} - engines: {node: '>=10'} + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 dev: false @@ -1603,18 +1649,12 @@ packages: engines: {node: '>=8'} dev: false - /source-map-resolve@0.6.0: - resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.0 - dev: false - /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + requiresBuild: true dev: false + optional: true /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} @@ -1655,14 +1695,13 @@ packages: min-indent: 1.0.1 dev: false - /stylus@0.57.0: - resolution: {integrity: sha512-yOI6G8WYfr0q8v8rRvE91wbxFU+rJPo760Va4MF6K0I6BZjO4r+xSynkvyPBP9tV1CIEUeRsiidjIs2rzb1CnQ==} + /stylus@0.59.0: + resolution: {integrity: sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==} hasBin: true dependencies: - css: 3.0.0 + '@adobe/css-tools': 4.3.1 debug: 4.3.4 glob: 7.2.3 - safer-buffer: 2.1.2 sax: 1.2.4 source-map: 0.7.4 transitivePeerDependencies: @@ -1700,10 +1739,6 @@ packages: engines: {node: '>=8'} dev: false - /timsort@0.3.0: - resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} - dev: false - /titlecase@1.1.3: resolution: {integrity: sha512-pQX4oiemzjBEELPqgK4WE+q0yhAqjp/yzusGtlSJsOuiDys0RQxggepYmo0BuegIDppYS3b3cpdegRwkpyN3hw==} hasBin: true @@ -1730,13 +1765,14 @@ packages: resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} dev: false - /tough-cookie@4.0.0: - resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} + /tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} engines: {node: '>=6'} dependencies: psl: 1.9.0 punycode: 2.1.1 - universalify: 0.1.2 + universalify: 0.2.0 + url-parse: 1.5.10 dev: false /tr46@3.0.0: @@ -1757,8 +1793,8 @@ packages: prelude-ls: 1.1.2 dev: false - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} dev: false @@ -1767,6 +1803,13 @@ packages: engines: {node: '>= 0.8'} dev: false + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: false + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: false @@ -1786,15 +1829,9 @@ packages: engines: {node: '>=0.10.0'} dev: false - /w3c-hr-time@1.0.2: - resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} - dependencies: - browser-process-hrtime: 1.0.0 - dev: false - - /w3c-xmlserializer@3.0.0: - resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} - engines: {node: '>=12'} + /w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} dependencies: xml-name-validator: 4.0.0 dev: false @@ -1806,7 +1843,7 @@ packages: bluebird: 3.7.2 cuid: 2.1.8 graceful-fs: 4.2.10 - hexo-log: 3.1.0 + hexo-log: 3.2.0 is-plain-object: 5.0.0 jsonparse: 1.3.1 rfdc: 1.3.0 @@ -1830,14 +1867,6 @@ packages: engines: {node: '>=12'} dev: false - /whatwg-url@10.0.0: - resolution: {integrity: sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==} - engines: {node: '>=12'} - dependencies: - tr46: 3.0.0 - webidl-conversions: 7.0.0 - dev: false - /whatwg-url@11.0.0: resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} @@ -1873,12 +1902,12 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false - /ws@8.8.1: - resolution: {integrity: sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==} + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 + utf-8-validate: '>=5.0.2' peerDependenciesMeta: bufferutil: optional: true From f616e3230adfe4bb4db640214789b2a2eebd669d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Aug 2023 15:25:16 +0000 Subject: [PATCH 10/10] Bump word-wrap from 1.2.3 to 1.2.5 Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.5. - [Release notes](https://github.com/jonschlinkert/word-wrap/releases) - [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.5) --- updated-dependencies: - dependency-name: word-wrap dependency-type: indirect ... Signed-off-by: dependabot[bot] --- pnpm-lock.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ae79afb..4f3d199 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1365,7 +1365,7 @@ packages: levn: 0.3.0 prelude-ls: 1.1.2 type-check: 0.3.2 - word-wrap: 1.2.3 + word-wrap: 1.2.5 dev: false /parse5@7.1.2: @@ -1893,8 +1893,8 @@ packages: babel-walk: 3.0.0-canary-5 dev: false - /word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} dev: false