From e2514b23c31d1ce56068c2b168112ce8126650c1 Mon Sep 17 00:00:00 2001 From: jww0924 Date: Mon, 26 Aug 2024 16:01:36 +0800 Subject: [PATCH] build: robot auto-sync by win32 2024-08-26T08:01:36.409Z --- 404.html | 15 +- __docusaurus/debug/config/index.html | 15 +- __docusaurus/debug/content/index.html | 15 +- __docusaurus/debug/globalData/index.html | 15 +- __docusaurus/debug/index.html | 15 +- __docusaurus/debug/metadata/index.html | 15 +- __docusaurus/debug/registry/index.html | 15 +- __docusaurus/debug/routes/index.html | 15 +- assets/css/styles.56a1642d.css | 1 + assets/js/01a85c17.b6ef853c.js | 1 + assets/js/073a51d1.204097b7.js | 1 + assets/js/0fc4eb6a.b49bd1e3.js | 1 + assets/js/17896441.cccd47f5.js | 1 + assets/js/1a4e3797.79813273.js | 1 + assets/js/1be78505.02232c1c.js | 1 + assets/js/1d184a4b.444a0d98.js | 1 + assets/js/1df93b7f.983cccaa.js | 1 + assets/js/1f391b9e.ee9f2306.js | 1 + assets/js/230687da.e9d97272.js | 1 + assets/js/23abe487.515b5e4a.js | 1 + assets/js/246f2c6f.f94728e0.js | 1 + assets/js/29a28e1e.d19a04c4.js | 1 + assets/js/32e38082.d2245c18.js | 1 + assets/js/3450.c478ccbd.js | 1 + assets/js/414e6411.a3e139d4.js | 1 + assets/js/421626d5.8a82997b.js | 1 + assets/js/4608.7152e48a.js | 1 + assets/js/4a4af889.fddbde14.js | 1 + assets/js/517ba51f.bb230516.js | 1 + assets/js/5525.2f76822b.js | 1 + assets/js/6154.4018dad5.js | 2 + assets/js/6154.4018dad5.js.LICENSE.txt | 1 + assets/js/63fdf73a.f5c2a309.js | 1 + assets/js/6794d4cd.b2c33aee.js | 1 + assets/js/6875c492.6aa74591.js | 1 + assets/js/68e633d4.e5b462d1.js | 1 + assets/js/75878fc8.86e6f175.js | 1 + assets/js/77c24adf.af5a943c.js | 1 + assets/js/7ab7618d.c85dba5a.js | 1 + assets/js/7b1c603c.446cf18f.js | 1 + assets/js/829cf858.1d193097.js | 1 + assets/js/82f1444c.5e5b262c.js | 1 + assets/js/8443.2dd03d6d.js | 2 + assets/js/8443.2dd03d6d.js.LICENSE.txt | 1 + assets/js/85860a8a.d6f4ed2a.js | 1 + assets/js/8a16ec3d.49b1e2df.js | 1 + assets/js/9289a52b.37a3543c.js | 1 + assets/js/935f2afb.d77d7265.js | 1 + assets/js/9dd4daa8.2af42fb0.js | 1 + assets/js/9e4087bc.77de6894.js | 1 + assets/js/a6aa9e1f.7fe95d09.js | 1 + assets/js/aa2aae2c.106602ae.js | 1 + assets/js/b39cf048.8b61dec6.js | 1 + assets/js/ba8b3534.8bac3445.js | 1 + assets/js/bcb5da56.1ac20d80.js | 1 + assets/js/ccc49370.89986fa2.js | 1 + assets/js/ce0e256b.fb3067ea.js | 1 + assets/js/e1686c3a.1084e63b.js | 1 + assets/js/ede3a018.36fdc5b5.js | 1 + assets/js/f07a586e.2bc221d2.js | 1 + assets/js/f76679b7.853c5501.js | 1 + assets/js/main.900560f9.js | 2 + assets/js/main.900560f9.js.LICENSE.txt | 141 ++++++++++ assets/js/runtime~main.34dd8778.js | 1 + changelog/index.html | 15 +- en/blog/1/index.html | 27 ++ en/blog/archive/index.html | 20 ++ en/blog/atom.xml | 241 +++++++++++++++++ .../index.html | 26 ++ en/blog/index.html | 20 ++ en/blog/rss.xml | 236 +++++++++++++++++ en/blog/tags/c-kibana/index.html | 20 ++ en/blog/tags/index.html | 20 ++ en/docs/UserCase/index.html | 24 ++ en/docs/api-docs/index.html | 20 ++ en/docs/index.html | 24 ++ en/docs/troubleshooting/index.html | 20 ++ img/index_template.png | Bin 193775 -> 201964 bytes index.html | 15 +- search-index.json | 2 +- search/index.html | 15 +- sitemap.xml | 2 +- zh/blog/1/index.html | 27 ++ zh/blog/archive/index.html | 20 ++ zh/blog/atom.xml | 242 ++++++++++++++++++ .../index.html | 27 ++ zh/blog/index.html | 20 ++ zh/blog/rss.xml | 237 +++++++++++++++++ zh/blog/tags/c-kibana/index.html | 20 ++ zh/blog/tags/index.html | 20 ++ zh/docs/UserCase/index.html | 24 ++ zh/docs/api-docs/index.html | 20 ++ zh/docs/index.html | 27 ++ zh/docs/troubleshooting/index.html | 23 ++ 94 files changed, 1705 insertions(+), 68 deletions(-) create mode 100644 assets/css/styles.56a1642d.css create mode 100644 assets/js/01a85c17.b6ef853c.js create mode 100644 assets/js/073a51d1.204097b7.js create mode 100644 assets/js/0fc4eb6a.b49bd1e3.js create mode 100644 assets/js/17896441.cccd47f5.js create mode 100644 assets/js/1a4e3797.79813273.js create mode 100644 assets/js/1be78505.02232c1c.js create mode 100644 assets/js/1d184a4b.444a0d98.js create mode 100644 assets/js/1df93b7f.983cccaa.js create mode 100644 assets/js/1f391b9e.ee9f2306.js create mode 100644 assets/js/230687da.e9d97272.js create mode 100644 assets/js/23abe487.515b5e4a.js create mode 100644 assets/js/246f2c6f.f94728e0.js create mode 100644 assets/js/29a28e1e.d19a04c4.js create mode 100644 assets/js/32e38082.d2245c18.js create mode 100644 assets/js/3450.c478ccbd.js create mode 100644 assets/js/414e6411.a3e139d4.js create mode 100644 assets/js/421626d5.8a82997b.js create mode 100644 assets/js/4608.7152e48a.js create mode 100644 assets/js/4a4af889.fddbde14.js create mode 100644 assets/js/517ba51f.bb230516.js create mode 100644 assets/js/5525.2f76822b.js create mode 100644 assets/js/6154.4018dad5.js create mode 100644 assets/js/6154.4018dad5.js.LICENSE.txt create mode 100644 assets/js/63fdf73a.f5c2a309.js create mode 100644 assets/js/6794d4cd.b2c33aee.js create mode 100644 assets/js/6875c492.6aa74591.js create mode 100644 assets/js/68e633d4.e5b462d1.js create mode 100644 assets/js/75878fc8.86e6f175.js create mode 100644 assets/js/77c24adf.af5a943c.js create mode 100644 assets/js/7ab7618d.c85dba5a.js create mode 100644 assets/js/7b1c603c.446cf18f.js create mode 100644 assets/js/829cf858.1d193097.js create mode 100644 assets/js/82f1444c.5e5b262c.js create mode 100644 assets/js/8443.2dd03d6d.js create mode 100644 assets/js/8443.2dd03d6d.js.LICENSE.txt create mode 100644 assets/js/85860a8a.d6f4ed2a.js create mode 100644 assets/js/8a16ec3d.49b1e2df.js create mode 100644 assets/js/9289a52b.37a3543c.js create mode 100644 assets/js/935f2afb.d77d7265.js create mode 100644 assets/js/9dd4daa8.2af42fb0.js create mode 100644 assets/js/9e4087bc.77de6894.js create mode 100644 assets/js/a6aa9e1f.7fe95d09.js create mode 100644 assets/js/aa2aae2c.106602ae.js create mode 100644 assets/js/b39cf048.8b61dec6.js create mode 100644 assets/js/ba8b3534.8bac3445.js create mode 100644 assets/js/bcb5da56.1ac20d80.js create mode 100644 assets/js/ccc49370.89986fa2.js create mode 100644 assets/js/ce0e256b.fb3067ea.js create mode 100644 assets/js/e1686c3a.1084e63b.js create mode 100644 assets/js/ede3a018.36fdc5b5.js create mode 100644 assets/js/f07a586e.2bc221d2.js create mode 100644 assets/js/f76679b7.853c5501.js create mode 100644 assets/js/main.900560f9.js create mode 100644 assets/js/main.900560f9.js.LICENSE.txt create mode 100644 assets/js/runtime~main.34dd8778.js create mode 100644 en/blog/1/index.html create mode 100644 en/blog/archive/index.html create mode 100644 en/blog/atom.xml create mode 100644 en/blog/build-logging-platform-with-native-kibana-and-clickhouse/index.html create mode 100644 en/blog/index.html create mode 100644 en/blog/rss.xml create mode 100644 en/blog/tags/c-kibana/index.html create mode 100644 en/blog/tags/index.html create mode 100644 en/docs/UserCase/index.html create mode 100644 en/docs/api-docs/index.html create mode 100644 en/docs/index.html create mode 100644 en/docs/troubleshooting/index.html create mode 100644 zh/blog/1/index.html create mode 100644 zh/blog/archive/index.html create mode 100644 zh/blog/atom.xml create mode 100644 zh/blog/build-logging-platform-with-native-kibana-and-clickhouse/index.html create mode 100644 zh/blog/index.html create mode 100644 zh/blog/rss.xml create mode 100644 zh/blog/tags/c-kibana/index.html create mode 100644 zh/blog/tags/index.html create mode 100644 zh/docs/UserCase/index.html create mode 100644 zh/docs/api-docs/index.html create mode 100644 zh/docs/index.html create mode 100644 zh/docs/troubleshooting/index.html diff --git a/404.html b/404.html index c5a2a28..a4bcac7 100644 --- a/404.html +++ b/404.html @@ -4,14 +4,17 @@ -Page Not Found | 𝑪𝑲𝒊𝒃𝒂𝒏𝒂 - - + + + +Page Not Found | 𝑪𝑲𝒊𝒃𝒂𝒏𝒂 + +
-
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/__docusaurus/debug/config/index.html b/__docusaurus/debug/config/index.html index 3b93059..06c9df9 100644 --- a/__docusaurus/debug/config/index.html +++ b/__docusaurus/debug/config/index.html @@ -4,14 +4,17 @@ -Docusaurus debug panel - - + + + +Docusaurus debug panel + +
-

Site config

- - +

Site config

+ + \ No newline at end of file diff --git a/__docusaurus/debug/content/index.html b/__docusaurus/debug/content/index.html index e18694f..83f53cf 100644 --- a/__docusaurus/debug/content/index.html +++ b/__docusaurus/debug/content/index.html @@ -4,14 +4,17 @@ -Docusaurus debug panel - - + + + +Docusaurus debug panel + +
-

Plugin content

docusaurus-plugin-content-docs

default
en

docusaurus-plugin-content-pages

default
- - +

Plugin content

docusaurus-plugin-content-blog

blog-en
blog-zh

docusaurus-plugin-content-docs

default
en

docusaurus-plugin-content-pages

default
+ + \ No newline at end of file diff --git a/__docusaurus/debug/globalData/index.html b/__docusaurus/debug/globalData/index.html index eea27bf..0c9bb09 100644 --- a/__docusaurus/debug/globalData/index.html +++ b/__docusaurus/debug/globalData/index.html @@ -4,14 +4,17 @@ -Docusaurus debug panel - - + + + +Docusaurus debug panel + +
-

Global data

- - +

Global data

+ + \ No newline at end of file diff --git a/__docusaurus/debug/index.html b/__docusaurus/debug/index.html index f8dadff..b96e207 100644 --- a/__docusaurus/debug/index.html +++ b/__docusaurus/debug/index.html @@ -4,14 +4,17 @@ -Docusaurus debug panel - - + + + +Docusaurus debug panel + +
-

Site config

- - +

Site config

+ + \ No newline at end of file diff --git a/__docusaurus/debug/metadata/index.html b/__docusaurus/debug/metadata/index.html index 8a12ae3..db95311 100644 --- a/__docusaurus/debug/metadata/index.html +++ b/__docusaurus/debug/metadata/index.html @@ -4,14 +4,17 @@ -Docusaurus debug panel - - + + + +Docusaurus debug panel + +
-

Site Metadata

Docusaurus Version: 2.0.0-beta.14
Site Version: 0.0.0

Plugins and themes

  • 0.0.0
    docusaurus-plugin-image-zoom
    Type: package
  • 0.2.1
    docusaurus-plugin-sass
    Type: package
  • 0.0.2
    docusaurus-plugin-local-resolve
    Type: package
  • 2.0.0-beta.14
    docusaurus-plugin-content-docs
    Type: package
  • 2.0.0-beta.14
    docusaurus-plugin-content-pages
    Type: package
  • 2.0.0-beta.14
    docusaurus-plugin-debug
    Type: package
  • 2.0.0-beta.14
    docusaurus-plugin-sitemap
    Type: package
  • 0.0.1
    docusaurus-theme-classic
    Type: package
  • 0.23.3
    @easyops-cn/docusaurus-search-local
    Type: package
- - +

Site Metadata

Docusaurus Version: 2.0.0-beta.14
Site Version: 0.0.0

Plugins and themes

  • 2.0.0-beta.14
    docusaurus-theme-classic
    Type: package
  • 0.0.0
    docusaurus-plugin-image-zoom
    Type: package
  • 0.2.2
    docusaurus-plugin-sass
    Type: package
  • 0.0.2
    docusaurus-plugin-local-resolve
    Type: package
  • 2.0.0-beta.14
    docusaurus-plugin-content-blog
    Type: package
  • 2.0.0-beta.14
    docusaurus-plugin-content-docs
    Type: package
  • 2.0.0-beta.14
    docusaurus-plugin-content-pages
    Type: package
  • 2.0.0-beta.14
    docusaurus-plugin-debug
    Type: package
  • 2.0.0-beta.14
    docusaurus-plugin-sitemap
    Type: package
  • 0.23.1
    @easyops-cn/docusaurus-search-local
    Type: package
+ + \ No newline at end of file diff --git a/__docusaurus/debug/registry/index.html b/__docusaurus/debug/registry/index.html index f59a2f3..a8fe180 100644 --- a/__docusaurus/debug/registry/index.html +++ b/__docusaurus/debug/registry/index.html @@ -4,14 +4,17 @@ -Docusaurus debug panel - - + + + +Docusaurus debug panel + +
-

Registry

  • Aliased Path: @theme/DocItem
    Resolved Path: 9950
  • Aliased Path: @site/docs/zh/api-docs.md
    Resolved Path: 8210
  • Aliased Path: @theme/SearchPage
    Resolved Path: 599
  • Aliased Path: @theme/DocPage
    Resolved Path: 6570
  • Aliased Path: @site/src/pages/index.tsx
    Resolved Path: 2246
  • Aliased Path: @theme/MDXPage
    Resolved Path: 9420
  • Aliased Path: ~docs/en/version-current-metadata-prop-751.json
    Resolved Path: 8108
  • Aliased Path: @theme/DebugConfig
    Resolved Path: 4920
  • Aliased Path: ~debug/default/docusaurus-debug-all-content-673.json
    Resolved Path: 4383
  • Aliased Path: @site/docs/en/troubleshooting.md
    Resolved Path: 8649
  • Aliased Path: @generated/docusaurus.config
    Resolved Path: 5091
  • Aliased Path: @site/docs/zh/troubleshooting.md
    Resolved Path: 1386
  • Aliased Path: @theme/DebugRegistry
    Resolved Path: 8813
  • Aliased Path: @theme/DebugSiteMetadata
    Resolved Path: 6768
  • Aliased Path: @site/src/pages/changelog.md
    Resolved Path: 4360
  • Aliased Path: @site/docs/en/api-docs.md
    Resolved Path: 783
  • Aliased Path: @site/docs/en/UserCase.md
    Resolved Path: 4472
  • Aliased Path: @site/docs/zh/UserCase.md
    Resolved Path: 2301
  • Aliased Path: ~docs/default/version-current-metadata-prop-751.json
    Resolved Path: 5610
  • Aliased Path: @theme/DebugRoutes
    Resolved Path: 5620
  • Aliased Path: @theme/DebugContent
    Resolved Path: 3219
  • Aliased Path: @site/docs/zh/index.md
    Resolved Path: 9452
  • Aliased Path: @theme/DebugGlobalData
    Resolved Path: 1641
  • Aliased Path: @site/docs/en/index.md
    Resolved Path: 7583
- - +

Registry

  • Aliased Path: @theme/DocItem
    Resolved Path: 25848
  • Aliased Path: @theme/BlogTagsListPage
    Resolved Path: 68255
  • Aliased Path: @site/docs/zh/api-docs.md
    Resolved Path: 81506
  • Aliased Path: ~blog/blog-en/ckibana-docs-en-blog-tags-tags-25c.json
    Resolved Path: 7055
  • Aliased Path: @theme/SearchPage
    Resolved Path: 43149
  • Aliased Path: @theme/DocPage
    Resolved Path: 94920
  • Aliased Path: ~blog/blog-en/ckibana-docs-en-blog-tags-c-kibana-3ba.json
    Resolved Path: 16733
  • Aliased Path: @site/src/pages/index.tsx
    Resolved Path: 8788
  • Aliased Path: @theme/MDXPage
    Resolved Path: 93590
  • Aliased Path: ~docs/en/version-current-metadata-prop-751.json
    Resolved Path: 24734
  • Aliased Path: @theme/DebugConfig
    Resolved Path: 6074
  • Aliased Path: ~debug/default/docusaurus-debug-all-content-673.json
    Resolved Path: 26267
  • Aliased Path: @site/blog/zh/build-logging-platform-with-native-kibana-and-clickhouse.md
    Resolved Path: 21654
  • Aliased Path: @site/docs/en/troubleshooting.md
    Resolved Path: 27261
  • Aliased Path: ~blog/blog-en/ckibana-docs-en-blog-archive-35e.json
    Resolved Path: 24184
  • Aliased Path: ~blog/blog-en/ckibana-docs-en-blog-a52.json
    Resolved Path: 49700
  • Aliased Path: @site/blog/en/1.md?truncated=true
    Resolved Path: 60109
  • Aliased Path: ~blog/blog-zh/ckibana-docs-zh-blog-tags-c-kibana-ad6.json
    Resolved Path: 2806
  • Aliased Path: @generated/docusaurus.config
    Resolved Path: 99782
  • Aliased Path: @site/docs/zh/troubleshooting.md
    Resolved Path: 8949
  • Aliased Path: @theme/DebugRegistry
    Resolved Path: 28165
  • Aliased Path: @theme/BlogTagsPostsPage
    Resolved Path: 50642
  • Aliased Path: @theme/DebugSiteMetadata
    Resolved Path: 13767
  • Aliased Path: @site/src/pages/changelog.md
    Resolved Path: 17610
  • Aliased Path: @site/docs/en/api-docs.md
    Resolved Path: 88143
  • Aliased Path: @site/docs/en/UserCase.md
    Resolved Path: 71934
  • Aliased Path: @site/blog/en/1.md
    Resolved Path: 73879
  • Aliased Path: @site/docs/zh/UserCase.md
    Resolved Path: 9651
  • Aliased Path: @site/blog/en/build-logging-platform-with-native-kibana-and-clickhouse.md
    Resolved Path: 98393
  • Aliased Path: @site/blog/zh/1.md?truncated=true
    Resolved Path: 52849
  • Aliased Path: ~blog/blog-zh/ckibana-docs-zh-blog-archive-449.json
    Resolved Path: 2896
  • Aliased Path: ~blog/blog-zh/ckibana-docs-zh-blog-tags-tags-f1b.json
    Resolved Path: 58322
  • Aliased Path: ~docs/default/version-current-metadata-prop-751.json
    Resolved Path: 1109
  • Aliased Path: @theme/DebugRoutes
    Resolved Path: 77327
  • Aliased Path: @site/blog/en/build-logging-platform-with-native-kibana-and-clickhouse.md?truncated=true
    Resolved Path: 23440
  • Aliased Path: @theme/BlogArchivePage
    Resolved Path: 63012
  • Aliased Path: @theme/BlogListPage
    Resolved Path: 77638
  • Aliased Path: ~blog/blog-en/blog-post-list-prop-blog-en.json
    Resolved Path: 49426
  • Aliased Path: @site/blog/zh/1.md
    Resolved Path: 67519
  • Aliased Path: @theme/DebugContent
    Resolved Path: 50793
  • Aliased Path: @site/blog/zh/build-logging-platform-with-native-kibana-and-clickhouse.md?truncated=true
    Resolved Path: 43881
  • Aliased Path: @theme/BlogPostPage
    Resolved Path: 39360
  • Aliased Path: @site/docs/zh/index.md
    Resolved Path: 25382
  • Aliased Path: ~blog/blog-zh/ckibana-docs-zh-blog-4c6.json
    Resolved Path: 45564
  • Aliased Path: @theme/DebugGlobalData
    Resolved Path: 82507
  • Aliased Path: ~blog/blog-zh/blog-post-list-prop-blog-zh.json
    Resolved Path: 5962
  • Aliased Path: @site/docs/en/index.md
    Resolved Path: 73620
+ + \ No newline at end of file diff --git a/__docusaurus/debug/routes/index.html b/__docusaurus/debug/routes/index.html index b66a64d..dca99a9 100644 --- a/__docusaurus/debug/routes/index.html +++ b/__docusaurus/debug/routes/index.html @@ -4,14 +4,17 @@ -Docusaurus debug panel - - + + + +Docusaurus debug panel + +
-

Routes

  • /ckibana-docs/__docusaurus/debug
    Is exact: true
  • /ckibana-docs/__docusaurus/debug/config
    Is exact: true
  • /ckibana-docs/__docusaurus/debug/content
    Is exact: true
  • /ckibana-docs/__docusaurus/debug/globalData
    Is exact: true
  • /ckibana-docs/__docusaurus/debug/metadata
    Is exact: true
  • /ckibana-docs/__docusaurus/debug/registry
    Is exact: true
  • /ckibana-docs/__docusaurus/debug/routes
    Is exact: true
  • /ckibana-docs/changelog
    Is exact: true
  • /ckibana-docs/search
    Is exact: true
  • /ckibana-docs/en/
    Is exact: false
    Child Routes:
  • /ckibana-docs/zh/
    Is exact: false
    Child Routes:
  • /ckibana-docs/
    Is exact: true
  • *
    Is exact: false
- - +

Routes

  • /ckibana-docs/__docusaurus/debug
    Is exact: true
  • /ckibana-docs/__docusaurus/debug/config
    Is exact: true
  • /ckibana-docs/__docusaurus/debug/content
    Is exact: true
  • /ckibana-docs/__docusaurus/debug/globalData
    Is exact: true
  • /ckibana-docs/__docusaurus/debug/metadata
    Is exact: true
  • /ckibana-docs/__docusaurus/debug/registry
    Is exact: true
  • /ckibana-docs/__docusaurus/debug/routes
    Is exact: true
  • /ckibana-docs/changelog
    Is exact: true
  • /ckibana-docs/en/blog
    Is exact: true
  • /ckibana-docs/en/blog/1
    Is exact: true
  • /ckibana-docs/en/blog/archive
    Is exact: true
  • /ckibana-docs/en/blog/build-logging-platform-with-native-kibana-and-clickhouse
    Is exact: true
  • /ckibana-docs/en/blog/tags
    Is exact: true
  • /ckibana-docs/en/blog/tags/c-kibana
    Is exact: true
  • /ckibana-docs/search
    Is exact: true
  • /ckibana-docs/zh/blog
    Is exact: true
  • /ckibana-docs/zh/blog/1
    Is exact: true
  • /ckibana-docs/zh/blog/archive
    Is exact: true
  • /ckibana-docs/zh/blog/build-logging-platform-with-native-kibana-and-clickhouse
    Is exact: true
  • /ckibana-docs/zh/blog/tags
    Is exact: true
  • /ckibana-docs/zh/blog/tags/c-kibana
    Is exact: true
  • /ckibana-docs/en/docs/
    Is exact: false
    Child Routes:
  • /ckibana-docs/zh/docs/
    Is exact: false
    Child Routes:
  • /ckibana-docs/
    Is exact: true
  • *
    Is exact: false
+ + \ No newline at end of file diff --git a/assets/css/styles.56a1642d.css b/assets/css/styles.56a1642d.css new file mode 100644 index 0000000..30ec67f --- /dev/null +++ b/assets/css/styles.56a1642d.css @@ -0,0 +1 @@ +.container,.row .col{padding:0 var(--ifm-spacing-horizontal);width:100%}.row .col,img{max-width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.avatar__photo,.card,.text--truncate{overflow:hidden}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.admonition-icon svg,.alert__icon svg{fill:var(--ifm-alert-foreground-color)}.hitPath_gCTv,.hitTitle_4Fan,.navbar__title,.text--truncate{text-overflow:ellipsis;white-space:nowrap}.button,.dropdown__link,.navbar__title,.text--truncate{white-space:nowrap}*,.loadingRing_Zg7X div{box-sizing:border-box}.toggle_iYfV,html{-webkit-tap-highlight-color:transparent}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1);--ifm-z-index-dropdown:3;--ifm-z-index-fixed:4;--ifm-z-index-overlay:5;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-color-emphasis-100);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:var(--ifm-color-emphasis-100);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-border-color:var(--ifm-color-emphasis-500);--ifm-hr-border-width:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size-sm:2rem;--ifm-avatar-photo-size-md:3rem;--ifm-avatar-photo-size-lg:4rem;--ifm-avatar-photo-size-xl:6rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.0625rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:1rem;--ifm-breadcrumb-padding-vertical:0.5rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-margin:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:1rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:calc(var(--ifm-global-radius)*var(--ifm-pagination-size-multiplier));--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.0625rem;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-size-multiplier:1;--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.0625rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--ifm-tabs-spacing:0.0625rem}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}html{-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base)}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.container--fluid{max-width:inherit}.row{display:flex;flex-direction:row;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row .col{--ifm-col-width:100%;flex:1 0;margin-left:0}.row .col[class*=col--]{flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--1{--ifm-col-width:8.33333%}.row .col.col--offset-1{margin-left:8.33333%}.row .col.col--2{--ifm-col-width:16.66667%}.row .col.col--offset-2{margin-left:16.66667%}.row .col.col--3{--ifm-col-width:25%}.row .col.col--offset-3{margin-left:25%}.row .col.col--4{--ifm-col-width:33.33333%}.row .col.col--offset-4{margin-left:33.33333%}.row .col.col--5{--ifm-col-width:41.66667%}.row .col.col--offset-5{margin-left:41.66667%}.row .col.col--6{--ifm-col-width:50%}.row .col.col--offset-6{margin-left:50%}.row .col.col--7{--ifm-col-width:58.33333%}.row .col.col--offset-7{margin-left:58.33333%}.row .col.col--8{--ifm-col-width:66.66667%}.row .col.col--offset-8{margin-left:66.66667%}.row .col.col--9{--ifm-col-width:75%}.row .col.col--offset-9{margin-left:75%}.row .col.col--10{--ifm-col-width:83.33333%}.row .col.col--offset-10{margin-left:83.33333%}.row .col.col--11{--ifm-col-width:91.66667%}.row .col.col--offset-11{margin-left:91.66667%}.row .col.col--12{--ifm-col-width:100%}.row .col.col--offset-12{margin-left:100%}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:transparent;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}blockquote,hr{border-style:solid}table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.breadcrumbs__link:hover,.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-color:var(--ifm-blockquote-border-color);border-width:0;border-left-width:var(--ifm-blockquote-border-left-width);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{border-color:var(--ifm-hr-border-color);border-width:var(--ifm-hr-border-width);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonition h5,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:rgba(53,120,229,.15);--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:rgba(235,237,240,.15);--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:rgba(0,164,0,.15);--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:rgba(84,199,236,.15);--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:rgba(255,186,0,.15);--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:rgba(250,56,62,.15);--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border-color:var(--ifm-alert-border-color);border-style:solid;border-width:var(--ifm-alert-border-width);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{-webkit-text-decoration-color:var(--ifm-alert-border-color);text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.avatar__photo-link,.cursor_PFw8 .hideAction_KhBz>svg,.md-figure-block img,.tocCollapsibleContent_0dom a,docs-demo{display:block}.avatar__photo{border-radius:50%;height:var(--ifm-avatar-photo-size-md);width:var(--ifm-avatar-photo-size-md)}.avatar__photo--sm{height:var(--ifm-avatar-photo-size-sm);width:var(--ifm-avatar-photo-size-sm)}.avatar__photo--lg{height:var(--ifm-avatar-photo-size-lg);width:var(--ifm-avatar-photo-size-lg)}.avatar__photo--xl{height:var(--ifm-avatar-photo-size-xl);width:var(--ifm-avatar-photo-size-xl)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo+.avatar__intro{margin-left:var(--ifm-avatar-intro-margin)}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.avatar--vertical .avatar__intro{margin-left:0}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:first-child){margin-left:var(--ifm-breadcrumb-spacing)}.breadcrumbs__item:not(:last-child){margin-right:var(--ifm-breadcrumb-spacing)}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 .5rem;opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__item--active .breadcrumbs__link,.breadcrumbs__item:not(.breadcrumbs__item--active):hover .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);color:var(--ifm-font-color-base);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border-color:var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);border-style:solid;border-width:var(--ifm-button-border-width);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;-ms-user-select:none;user-select:none}.copyButton_M3SB,.toggle_iYfV{-webkit-user-select:none;-ms-user-select:none}.button,.button:hover{color:var(--ifm-button-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}.button.button--secondary.button--outline:not(.button--active):not(:hover),.searchQueryInput_5r-w,.sidebarItemLink_zyXk,.tags-link{color:var(--ifm-font-color-base)}.button--primary{--ifm-button-border-color:var(--ifm-color-primary)}.button--primary:not(.button--outline){--ifm-button-background-color:var(--ifm-color-primary)}.button--primary:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-border-color:var(--ifm-color-primary-darker);--ifm-button-background-color:var(--ifm-color-primary-darker);background-color:var(--ifm-color-primary-darker);border-color:var(--ifm-color-primary-darker)}.button--secondary{--ifm-button-border-color:var(--ifm-color-secondary)}.button--secondary:not(.button--outline){--ifm-button-background-color:var(--ifm-color-secondary)}.button--secondary:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-border-color:var(--ifm-color-secondary-darker);--ifm-button-background-color:var(--ifm-color-secondary-darker);background-color:var(--ifm-color-secondary-darker);border-color:var(--ifm-color-secondary-darker)}.button--success{--ifm-button-border-color:var(--ifm-color-success)}.button--success:not(.button--outline){--ifm-button-background-color:var(--ifm-color-success)}.button--success:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-border-color:var(--ifm-color-success-darker);--ifm-button-background-color:var(--ifm-color-success-darker);background-color:var(--ifm-color-success-darker);border-color:var(--ifm-color-success-darker)}.button--info{--ifm-button-border-color:var(--ifm-color-info)}.button--info:not(.button--outline){--ifm-button-background-color:var(--ifm-color-info)}.button--info:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-border-color:var(--ifm-color-info-darker);--ifm-button-background-color:var(--ifm-color-info-darker);background-color:var(--ifm-color-info-darker);border-color:var(--ifm-color-info-darker)}.button--warning{--ifm-button-border-color:var(--ifm-color-warning)}.button--warning:not(.button--outline){--ifm-button-background-color:var(--ifm-color-warning)}.button--warning:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-border-color:var(--ifm-color-warning-darker);--ifm-button-background-color:var(--ifm-color-warning-darker);background-color:var(--ifm-color-warning-darker);border-color:var(--ifm-color-warning-darker)}.button--danger{--ifm-button-border-color:var(--ifm-color-danger)}.button--danger:not(.button--outline){--ifm-button-background-color:var(--ifm-color-danger)}.button--danger:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-border-color:var(--ifm-color-danger-darker);--ifm-button-background-color:var(--ifm-color-danger-darker);background-color:var(--ifm-color-danger-darker);border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:var(--ifm-button-group-margin)}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group>.button--active{z-index:1}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.admonition-content>:last-child,.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child,.searchResultItem_18XW>h2{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color)}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;transform:translateY(0);visibility:visible}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.sidebar_q\+wC,.tableOfContents_vrFS{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem)}.menu__caret,.menu__link,.menu__list-item-collapsible{transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:10rem}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.footer__item{margin-top:0}.footer__items{list-style:none;margin-bottom:0;padding-left:0}.list_95iW,.list_Yqws,.list_tREd,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.blogPostTitle_RC3s,.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_Q743[data-collapsed=false].isBrowser_rWTL>summary:before,.details_Q743[open]:not(.isBrowser_rWTL)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{border-radius:.25rem;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;justify-content:space-between;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:"";filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background:var(--ifm-menu-color-background-active)}.menu__caret{margin-left:.1rem}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar--fixed-top{position:-webkit-sticky;position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-timing-function:ease-in-out;visibility:hidden;top:0;left:0}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar__title{flex:1 1 auto;overflow:hidden}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}#nprogress,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:hsla(0,0%,100%,.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,.5);color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:hsla(0,0%,100%,.05);--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input:-ms-input-placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-duration:.25s;transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);right:0;transition-duration:.1s;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination__item,.pagination__link,.searchBarContainer_I7kZ.searchIndexLoading_oVRS .searchBarLoadingRing_J5Ez{display:inline-block}.pagination{font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item:not(:first-child){margin-left:var(--ifm-pagination-page-spacing)}.pagination__item:not(:last-child){margin-right:var(--ifm-pagination-page-spacing)}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_zyXk:hover{text-decoration:none}.docs-wrapper,.pagination-nav{display:flex}.pagination-nav__item{display:flex;flex:1 50%;max-width:50%}.pagination-nav__item--next{text-align:right}.pagination-nav__item+.pagination-nav__item{margin-left:var(--ifm-spacing-horizontal)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);flex-grow:1;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__item:first-child .pagination-nav__label:before{content:"« "}.pagination-nav__item--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pills__item--active{background:var(--ifm-pills-color-background-active);color:var(--ifm-pills-color-active)}.pills__item:not(.pills__item--active):hover{background-color:var(--ifm-pills-color-background-active)}.pills__item:not(:first-child){margin-left:var(--ifm-pills-spacing)}.pills__item:not(:last-child){margin-right:var(--ifm-pills-spacing)}.docItemContainer_PQH2 article>:first-child,.docItemContainer_PQH2 header+*,.pills__item+.pills__item{margin-top:0}.pills--block{display:flex;justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto;padding-left:0}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#18191a;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,.05);--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#333437;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--grafana-gradient-brand-vertical:var(--gradients-brandVertical);--ifm-background-color:var(--background-canvas);--ifm-card-background-color:var(--background-primary);--ifm-card-border-radius:0;--ifm-code-background:var(--background-secondary);--ifm-color-danger:var(--error-main);--ifm-color-info:var(--info-main);--ifm-color-primary-dark:var(--warning-shade);--ifm-color-primary-darker:var(--warning-main);--ifm-color-primary:var(--text-primary);--ifm-color-secondary:var(--text-secondary);--ifm-color-success:var(--success-main);--ifm-color-warning:var(--warning-main);--ifm-link-focus-color:var(--text-maxContrast);--ifm-link-hover-color:var(--text-maxContrast);--ifm-navbar-background-color:var(--background-primary);--ifm-pagination-nav-color-hover:var(--warning-text);--ifm-pre-background:var(--background-secondary);--ifm-table-border-color:var(--background-primary);--ifm-table-stripe-background:var(--background-secondary);--ifm-tabs-color-active-border:var(--warning-main)}.admonition h5{margin-bottom:8px;margin-top:0}.admonition-icon{display:inline-block;margin-right:.4em;vertical-align:middle}.admonition-icon svg{stroke-width:0;stroke:var(--ifm-alert-foreground-color);display:inline-block;height:22px;width:22px}.admonition{margin-bottom:1em}:root{--spacing:8;--htmlFontSize:14;--fontFamily:"Inter","Helvetica","Arial",sans-serif;--fontFamilyMonospace:"Roboto Mono",monospace;--fontSize:14;--fontWeightLight:300;--fontWeightRegular:400;--fontWeightMedium:500;--fontWeightBold:500;--size-base:14px;--size-xs:10px;--size-sm:12px;--size-md:14px;--size-lg:18px;--h1-fontFamily:"Inter","Helvetica","Arial",sans-serif;--h1-fontWeight:400;--h1-fontSize:2rem;--h1-lineHeight:1.1428571428571428;--h1-letterSpacing:-0.00893em;--h2-fontFamily:"Inter","Helvetica","Arial",sans-serif;--h2-fontWeight:400;--h2-fontSize:1.7142857142857142rem;--h2-lineHeight:1.1666666666666667;--h2-letterSpacing:0em;--h3-fontFamily:"Inter","Helvetica","Arial",sans-serif;--h3-fontWeight:400;--h3-fontSize:1.5714285714285714rem;--h3-lineHeight:1.0909090909090908;--h3-letterSpacing:0em;--h4-fontFamily:"Inter","Helvetica","Arial",sans-serif;--h4-fontWeight:400;--h4-fontSize:1.2857142857142858rem;--h4-lineHeight:1.2222222222222223;--h4-letterSpacing:0.01389em;--h5-fontFamily:"Inter","Helvetica","Arial",sans-serif;--h5-fontWeight:400;--h5-fontSize:1.1428571428571428rem;--h5-lineHeight:1.375;--h5-letterSpacing:0em;--h6-fontFamily:"Inter","Helvetica","Arial",sans-serif;--h6-fontWeight:500;--h6-fontSize:1rem;--h6-lineHeight:1.5714285714285714;--h6-letterSpacing:0.01071em;--body-fontFamily:"Inter","Helvetica","Arial",sans-serif;--body-fontWeight:400;--body-fontSize:1rem;--body-lineHeight:1.5714285714285714;--body-letterSpacing:0.01071em;--bodySmall-fontFamily:"Inter","Helvetica","Arial",sans-serif;--bodySmall-fontWeight:400;--bodySmall-fontSize:0.8571428571428571rem;--bodySmall-lineHeight:1.5;--bodySmall-letterSpacing:0.0125em;--mode:dark;--whiteBase:204,204,220;--border-weak:rgba(204,204,220,.12);--border-medium:rgba(204,204,220,.2);--border-strong:rgba(204,204,220,.3);--text-primary:#ccccdc;--text-secondary:rgba(204,204,220,.65);--text-disabled:rgba(204,204,220,.6);--text-link:#6e9fff;--text-maxContrast:#fff;--primary-main:#3d71d9;--primary-text:#6e9fff;--primary-border:#6e9fff;--primary-name:primary;--primary-shade:#5a86de;--primary-transparent:#3d71d926;--primary-contrastText:#fff;--secondary-main:rgba(204,204,220,.1);--secondary-shade:rgba(204,204,220,.14);--secondary-transparent:rgba(204,204,220,.08);--secondary-text:#ccccdc;--secondary-contrastText:#ccccdc;--secondary-border:rgba(204,204,220,.08);--secondary-name:secondary;--info-main:#3d71d9;--info-text:#6e9fff;--info-border:#6e9fff;--info-name:info;--info-shade:#5a86de;--info-transparent:#3d71d926;--info-contrastText:#fff;--error-main:#d10e5c;--error-text:#ff5286;--error-name:error;--error-border:#ff5286;--error-shade:#d73274;--error-transparent:#d10e5c26;--error-contrastText:#fff;--success-main:#1a7f4b;--success-text:#6ccf8e;--success-name:success;--success-border:#6ccf8e;--success-shade:#3c9266;--success-transparent:#1a7f4b26;--success-contrastText:#fff;--warning-main:#f90;--warning-text:#fbad37;--warning-name:warning;--warning-border:#fbad37;--warning-shade:#ffa826;--warning-transparent:#ff990026;--warning-contrastText:#000;--background-canvas:#111217;--background-primary:#181b1f;--background-secondary:#22252b;--action-hover:rgba(204,204,220,.16);--action-selected:rgba(204,204,220,.12);--action-focus:rgba(204,204,220,.16);--action-hoverOpacity:0.08;--action-disabledText:rgba(204,204,220,.6);--action-disabledBackground:rgba(204,204,220,.04);--action-disabledOpacity:0.38;--gradients-brandHorizontal:linear-gradient(270deg,#f55f3e,#f83);--gradients-brandVertical:linear-gradient(0.01deg,#f55f3e 0.01%,#f83 99.99%);--contrastThreshold:3;--hoverFactor:0.03;--tonalOffset:0.15;--docusaurus-announcement-bar-height:auto;--collapse-button-bg-color-dark:#2e333a;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}:root:root{--ifm-font-family-base:var(--fontFamily);--ifm-font-family-monospace:var(--fontFamilyMonospace);--ifm-heading-font-weight:var(--ifm-font-weight-semibold);--ifm-line-height-base:var(--body-lineHeight);--ifm-avatar-intro-margin:0.5rem;--ifm-button-border-radius:0}.alert--info{--ifm-alert-background-color-highlight:color-mix(in srgb,var(--info-shade),transparent 80%);--ifm-alert-background-color:color-mix(in srgb,var(--info-main),transparent 80%);--ifm-alert-border-color:color-mix(in srgb,var(--info-border),transparent 80%)}.alert--warning{--ifm-alert-background-color-highlight:color-mix(in srgb,var(--warning-shade),transparent 60%);--ifm-alert-background-color:color-mix(in srgb,var(--warning-main),transparent 60%);--ifm-alert-border-color:color-mix(in srgb,var(--warning-border),transparent 60%)}.alert--success{--ifm-alert-background-color-highlight:color-mix(in srgb,var(--success-shade),transparent 60%);--ifm-alert-background-color:color-mix(in srgb,var(--success-main),transparent 60%);--ifm-alert-border-color:color-mix(in srgb,var(--success-border),transparent 60%)}.alert--danger{--ifm-alert-background-color-highlight:color-mix(in srgb,var(--error-shade),transparent 70%);--ifm-alert-background-color:color-mix(in srgb,var(--error-main),transparent 70%);--ifm-alert-border-color:color-mix(in srgb,var(--error-border),transparent 70%)}.card{border:1px solid var(--border-weak)}.footer.footer--dark{--ifm-footer-background-color:rgba(0,0,0,.45)}.button--outline{--ifm-button-color:var(--ifm-button-border-color);--ifm-button-color:#fff;--ifm-button-border-color:#fff}.menu__link,.menu__list-item-collapsible{border-image:linear-gradient(var(--ifm-navbar-background-color),var(--ifm-navbar-background-color)) 1;border-left:2px solid;border-radius:0}.menu__link--active:not(.menu__link--sublist),.menu__list-item-collapsible.menu__list-item-collapsible--active{background-color:transparent;border-image:var(--grafana-gradient-brand-vertical) 1}.md-figure-block{margin:.5rem 0}.md-figure-caption{color:var(--ifm-blockquote-color);font-size:.9rem;margin-bottom:var(--ifm-global-spacing)}#nprogress .bar{background:#29d;height:2px;left:0;position:fixed;top:0;width:100%;z-index:6}#nprogress .peg{box-shadow:0 0 10px #29d,0 0 5px #29d;height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}#docusaurus-base-url-issue-banner-container{display:none}.details_Q743{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_Q743>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_Q743>summary::-webkit-details-marker{display:none}.details_Q743>summary:before{border-color:transparent transparent transparent var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_K5uX{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.skipToContent_OuoZ{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_OuoZ:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.announcementBar_axC9{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.searchHint_2RRg,html[data-theme=dark] .gettingStartedSection_JvAi{background-color:var(--ifm-navbar-background-color)}.collapseSidebarButton_eoK2,.docSidebarContainer_0YBq,.docs-demo-device__md-bar,.hideAction_KhBz>svg,.sidebarLogo_hmkv,.themedImage_TMUO,html[data-announcement-bar-initially-dismissed=true] .announcementBar_axC9{display:none}.announcementBarPlaceholder_xYHE{flex:0 0 10px}.announcementBarClose_A3A1{align-self:stretch;flex:0 0 30px;line-height:0;padding:0}.announcementBarContent_6uhP{flex:1 1 auto;font-size:85%;padding:5px 0;text-align:center}.announcementBarContent_6uhP a{color:inherit;text-decoration:underline}.searchBar_DBlZ .dropdownMenu_0bDV{background:var(--search-local-modal-background,#f5f6f7);border-radius:6px;box-shadow:var(--search-local-modal-shadow,inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64);left:auto!important;margin-top:8px;padding:var(--search-local-spacing,12px);position:relative;right:0!important;width:var(--search-local-modal-width,560px)}html[data-theme=dark] .searchBar_DBlZ .dropdownMenu_0bDV{background:var(--search-local-modal-background,var(--ifm-background-color));box-shadow:var(--search-local-modal-shadow,inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309)}.searchBar_DBlZ .dropdownMenu_0bDV .suggestion_uMTE{align-items:center;background:var(--search-local-hit-background,#fff);border-radius:4px;box-shadow:var(--search-local-hit-shadow,0 1px 3px 0 #d4d9e1);color:var(--search-local-hit-color,#444950);cursor:pointer;display:flex;flex-direction:row;height:var(--search-local-hit-height,56px);padding:0 var(--search-local-spacing,12px);width:100%}html[data-theme=dark] .dropdownMenu_0bDV .suggestion_uMTE{background:var(--search-local-hit-background,var(--ifm-color-emphasis-100));box-shadow:var(--search-local-hit-shadow,none);color:var(--search-local-hit-color,var(--ifm-font-color-base))}.searchBar_DBlZ .dropdownMenu_0bDV .suggestion_uMTE:not(:last-child){margin-bottom:4px}.searchBar_DBlZ .dropdownMenu_0bDV .suggestion_uMTE.cursor_PFw8{background-color:var(--search-local-highlight-color,var(--ifm-color-primary))}.hitFooter_9rOv a,.hitIcon_rLCp,.hitPath_gCTv,.hitTree_v\+XL,.noResultsIcon_jKPf{color:var(--search-local-muted-color,#969faf)}html[data-theme=dark] .hitIcon_rLCp,html[data-theme=dark] .hitPath_gCTv,html[data-theme=dark] .hitTree_v\+XL,html[data-theme=dark] .noResultsIcon_jKPf{color:var(--search-local-muted-color,var(--ifm-color-secondary-darkest))}.hitTree_v\+XL{align-items:center;display:flex}.hitTree_v\+XL>svg{height:var(--search-local-hit-height,56px);opacity:.5;width:24px}.hitIcon_rLCp,.hitTree_v\+XL>svg{stroke-width:var(--search-local-icon-stroke-width,1.4)}.hitAction_ETy-,.hitIcon_rLCp{height:20px;width:20px}.hitWrapper_RTFf{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;margin:0 8px;overflow-x:hidden;width:80%}.hitWrapper_RTFf mark{background:none;color:var(--search-local-highlight-color,var(--ifm-color-primary))}.hitTitle_4Fan{font-size:.9em}.hitPath_gCTv{font-size:.75em}.hitPath_gCTv,.hitTitle_4Fan{overflow-x:hidden}.noResults_iBoj{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:var(--search-local-spacing,12px) 0}.noResultsIcon_jKPf{margin-bottom:var(--search-local-spacing,12px)}.hitFooter_9rOv{font-size:.85em;margin-top:var(--search-local-spacing,12px);text-align:center}.hitFooter_9rOv a,.suggestion_uMTE.cursor_PFw8 mark{text-decoration:underline}.suggestion_uMTE.cursor_PFw8,.suggestion_uMTE.cursor_PFw8 .hitIcon_rLCp,.suggestion_uMTE.cursor_PFw8 .hitPath_gCTv,.suggestion_uMTE.cursor_PFw8 .hitTree_v\+XL,.suggestion_uMTE.cursor_PFw8 mark{color:var(--search-local-hit-active-color,var(--ifm-color-white))!important}.searchBarContainer_I7kZ{margin-left:16px}.searchBarContainer_I7kZ .searchBarLoadingRing_J5Ez{display:none;left:10px;position:absolute;top:6px}.navbar__search{position:relative}.searchIndexLoading_oVRS .navbar__search-input{background-image:none}.searchHintContainer_CDc6{align-items:center;display:flex;gap:4px;height:100%;justify-content:center;pointer-events:none;position:absolute;right:10px;top:0}.searchHint_2RRg{border:1px solid var(--ifm-color-emphasis-500);box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-500);color:var(--ifm-navbar-search-input-placeholder-color)}.loadingRing_Zg7X{display:inline-block;height:20px;opacity:var(--search-local-loading-icon-opacity,.5);position:relative;width:20px}.loadingRing_Zg7X div{animation:1.2s cubic-bezier(.5,0,.5,1) infinite a;border:2px solid var(--search-load-loading-icon-color,var(--ifm-navbar-search-input-color));border-color:var(--search-load-loading-icon-color,var(--ifm-navbar-search-input-color)) transparent transparent transparent;border-radius:50%;display:block;height:16px;margin:2px;position:absolute;width:16px}.loadingRing_Zg7X div:first-child{animation-delay:-.45s}.loadingRing_Zg7X div:nth-child(2){animation-delay:-.3s}.loadingRing_Zg7X div:nth-child(3){animation-delay:-.15s}@keyframes a{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.toggle_iYfV{cursor:pointer;position:relative;touch-action:pan-x;user-select:none}.toggleScreenReader_h9qa{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;position:absolute;width:1px}.toggleDisabled_xj38{cursor:not-allowed}.toggleTrack_t-f2{background-color:#4d4d4d;border-radius:30px;height:24px;transition:.2s;width:50px}.toggleTrackCheck_mk7D,.toggleTrackX_dm8H{bottom:0;height:10px;margin:auto 0;position:absolute;top:0}.toggleTrackCheck_mk7D{left:8px;opacity:0;transition:opacity .25s;width:14px}.toggleChecked_a04y .toggleTrackCheck_mk7D,.toggleTrackX_dm8H,[data-theme=dark] .toggle_iYfV .toggleTrackCheck_mk7D{opacity:1;transition:opacity .25s}.toggleTrackX_dm8H{right:10px;width:10px}.toggleChecked_a04y .toggleTrackX_dm8H,[data-theme=dark] .toggle_iYfV .toggleTrackX_dm8H{opacity:0}.toggleTrackThumb_W6To{background-color:#fafafa;border:1px solid #4d4d4d;border-radius:50%;height:22px;left:1px;position:absolute;top:1px;transition:.25s;width:22px}.toggleChecked_a04y .toggleTrackThumb_W6To,[data-theme=dark] .toggle_iYfV .toggleTrackThumb_W6To{left:27px}.toggleFocused_pRSw .toggleTrackThumb_W6To,.toggle_iYfV:hover .toggleTrackThumb_W6To{box-shadow:0 0 2px 3px var(--ifm-color-primary)}.toggle_iYfV:active:not(.toggleDisabled_xj38) .toggleTrackThumb_W6To{box-shadow:0 0 5px 5px var(--ifm-color-primary)}.toggleIcon_pHJ9{align-items:center;display:flex;height:10px;justify-content:center;width:10px}.iconExternalLink_wgqa{margin-left:.3rem;position:relative;top:1px}.iconLanguage_EbrZ,.iconLanguage_vbAj{margin-right:5px;vertical-align:text-bottom}html[data-theme=dark] .themedImage--dark_uzRr,html[data-theme=light] .themedImage--light_4Vu1{display:initial}.navbarHideable_RReh{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_FBwS{transform:translate3d(0,calc(-100% - 2px),0)}.navbarSidebarToggle_AVbO{margin-right:1rem}.footerLogoLink_SRtH{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.codeBlockContent_csEI:hover>.copyButton_M3SB,.codeBlockTitle_oQzk:hover+.codeBlockContent_csEI .copyButton_M3SB,.copyButton_M3SB:focus,.footerLogoLink_SRtH:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.docs-demo-mode-toggle button:active,.docs-demo-mode-toggle button:focus,body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.main-wrapper{flex:1 0 auto}.docusaurus-mt-lg{margin-top:3rem}.sidebar_q\+wC{overflow-y:auto;position:-webkit-sticky;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_9G5K{font-size:var(--ifm-h3-font-size);font-weight:var(--ifm-font-weight-bold)}.sidebarItemList_6T4b{font-size:.9rem;list-style:none;padding-left:0}.sidebarItem_cjdF{margin-top:.7rem}.sidebarItemLinkActive_wcJs{color:var(--ifm-color-primary)!important}.searchQueryInput_5r-w{background:var(--ifm-background-color);border:var(--ifm-global-border-width) solid var(--ifm-color-content-secondary);border-radius:var(--ifm-global-radius);font-size:var(--ifm-font-size-base);margin-bottom:1rem;padding:.5rem;width:100%}.codeBlockContainer_J\+bg,.codeBlock_rtdJ,.copyButton_M3SB{border-radius:var(--ifm-global-radius)}.searchResultItem_18XW{border-bottom:1px solid #dfe3e8;padding:1rem 0}.searchResultItemPath_TjRL{color:var(--ifm-color-content-secondary);font-size:.8rem;margin:.5rem 0 0}.searchResultItemSummary_5qSX{font-style:italic;margin:.5rem 0 0}.sidebarMenuIcon_iZzd{vertical-align:middle}.sidebarMenuCloseIcon_6kU2{align-items:center;display:inline-flex;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);height:24px;justify-content:center;line-height:.9;width:24px}.heroBanner_etFc,.nav_a6CY{align-items:center;display:flex}.heroBanner_etFc{aspect-ratio:3.01/1;background-size:cover;overflow:hidden;padding:1rem;position:relative;text-align:left}.heroSubtitle_kZBx{border-image:var(--grafana-gradient-brand-vertical) 1;border-left:4px solid}.codeBlockContainer_J\+bg{box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_csEI{direction:ltr;position:relative}.codeBlockTitle_oQzk{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:var(--ifm-global-radius);border-top-right-radius:var(--ifm-global-radius);font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlockTitle_oQzk+.codeBlockContent_csEI .codeBlock_rtdJ{border-top-left-radius:0;border-top-right-radius:0}.codeBlock_rtdJ{margin:0;padding:0}.copyButton_M3SB{background:rgba(0,0,0,.3);color:var(--ifm-color-white);opacity:0;padding:.4rem .5rem;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2);transition:opacity .2s ease-in-out;user-select:none}.codeBlockLines_1zSZ{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.gettingStartedSection_JvAi{background-color:#f7f7f7}.featureImage_IxXC{margin:0 auto}.container_y4id{background-color:#18191a;color:#fff;min-height:100vh;overflow-x:hidden;padding:80px 20px 20px}.container_y4id code{background-color:#444950;color:#fff}.nav_a6CY{background-color:#242526;height:3.75rem;justify-content:space-evenly;position:fixed;width:100%;z-index:1}.navlink_h2iO{border-radius:4px;color:#fff;font-size:clamp(12px,4vw,16px);font-weight:500;padding:6px;text-align:center}.name_vd9S,.routeName_5sAW{color:#e06b6b}.navlink_h2iO:hover{background-color:#292a2b;text-decoration:none}.active_\+wf5{background-color:#363739}.listItem_CMp4,.listItem_Sw3I,.listItem_jw47{background-color:#242526;border-radius:4px;list-style:none;margin-bottom:20px;padding:10px}.sectionTitle_0tIz{margin-top:20px}.version_UWZZ{float:right}.name_vd9S{font-weight:800}.route_Vw2A{margin-bottom:10px}.tag_WK-t{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_WK-t:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_LXbV{border-radius:.5rem;font-size:90%;padding:.3rem .5rem}.tagWithCount_S5Zl{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_S5Zl:after,.tagWithCount_S5Zl:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_S5Zl:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_S5Zl:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_S5Zl span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_7kA\+{display:inline-block;margin:.5rem .5rem 0 1rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;-ms-user-select:none;user-select:none}.hash-link:before{content:"#"}.tags_NBRY{display:inline}.tag_F03v{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_mt2f{font-size:smaller;font-style:italic;margin-top:.2rem}.anchorWithStickyNavbar_y2LR{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_3ly5{scroll-margin-top:.5rem}.details_h\+cY{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}ul.contains-task-list{list-style:none;padding-left:0}.backToTopButton_i9tI{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);width:3rem;z-index:var(--ifm-z-index-fixed)}.backToTopButton_i9tI:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_wCmF{opacity:1;transform:scale(1)}.docMainContainer_r8cw,.docPage_lDyR{display:flex;width:100%}.blogPostData_A2Le{font-size:.9rem}.blogPostDetailsFull_2lop{flex-direction:column}.image_9q7L{height:100%;object-fit:cover;width:100%}.authorCol_8c0z{flex-grow:1!important;max-width:inherit!important}.tableOfContents_vrFS{overflow-y:auto;position:-webkit-sticky;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.tocCollapsible_aw-L{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleButton_zr6a{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_zr6a:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleContent_0dom>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_0dom ul li{margin:.4rem .8rem}.tocCollapsibleExpanded_FSiv .tocCollapsibleButton_zr6a:after{transform:none}.docs-demo-device{--device-padding:1rem;--device-width:344px;--device-height:704px;--device-frame-width:12px;padding:var(--device-padding)}.docs-demo-mode-toggle{align-items:center;background:#ecf0f5;border-radius:18px;display:flex;height:28px;justify-content:center;margin:1rem auto 0;width:128px}.docs-demo-mode-toggle button{background-color:transparent;border:none;border-radius:16px;color:#5b708b;cursor:pointer;font-family:var(--font-family);font-size:11px;letter-spacing:-.02em;line-height:21px;padding-top:2px;transition:background-color .2s,color .2s;width:calc(50% - 2px)}.docs-demo-mode-toggle button.is-selected{background-color:#fff;box-shadow:0 2px 3px rgba(0,16,46,.15);color:#000;font-weight:600}.docs-demo-device>figure{background-repeat:no-repeat;background-size:contain;box-shadow:0 2px 8px rgba(2,8,20,.1),0 8px 16px rgba(2,8,20,.08);height:var(--device-height);margin:0;overflow:hidden;position:relative;width:var(--device-width);z-index:1}.docs-demo-device>figure>iframe{border:none;height:calc(100% - var(--device-frame-width)*2);left:0;margin:var(--device-frame-width);-webkit-mask-image:-webkit-radial-gradient(#fff,#000);overflow:hidden;position:absolute;top:0;width:calc(100% - var(--device-frame-width)*2);z-index:1}.docs-demo-device.ios figure{background-image:url(/ckibana-docs/assets/images/iphone-device-skin-6e7299311f1ad1397d5508ff8aad5a9c.png);border-radius:54px}.docs-demo-device.ios>figure>iframe{border-radius:38px}.docs-demo-device.md figure{background-image:url(/ckibana-docs/assets/images/android-device-skin-30bf09d5c45a8e4ef68447de27128580.png);border-radius:44px}.docs-demo-device.md>figure>iframe{border-radius:32px}.docs-demo-device.ios figure:after{background-color:rgba(0,0,0,.5);border-radius:2px;bottom:18px;content:"";height:4px;width:35%;z-index:1}.docs-demo-device.ios figure:after,.docs-demo-device__ios-notch{display:none;left:50%;position:absolute;transform:translateX(-50%)}.docs-demo-device__ios-notch{fill:#090a0d;top:12px;width:165px;z-index:2}.docs-demo-device.ios .docs-demo-device__ios-notch,.docs-demo-device.ios figure:after{display:block}.docs-demo-device.md .docs-demo-device__md-bar{fill:hsla(0,0%,49%,.3);display:block;padding:.5rem 2.2rem;position:relative;top:12px;width:100%;z-index:2}.docs-demo-source{align-items:center;display:flex;font-size:13px;justify-content:center}.docs-demo-source>ion-icon{margin-right:5px}.mdxPageWrapper_eQvw{justify-content:center}@media screen and (min-width:768px){.heroBannerWrapper_Yk8e{line-height:1.2;margin-left:3rem;max-width:50%}}@media screen and (min-width:800px){.nav_a6CY{align-items:center;background-color:#18191a;border-right:1px solid #606770;flex-direction:column;float:left;height:100vh;justify-content:flex-start;padding-top:20px;width:200px}.navlink_h2iO{margin-top:20px;text-align:left;width:80%}.container_y4id{float:right;padding-top:40px;width:calc(100% - 200px)}}@media (min-width:997px){:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_A3A1,.announcementBarPlaceholder_xYHE{flex-basis:50px}.menuLinkText_OKON{cursor:auto}.menuLinkText_OKON:hover{background:none}.menuLinkText_OKON.hasHref_TwRn{cursor:pointer}.sidebar_a3j0{display:flex;flex-direction:column;height:100%;max-height:100vh;padding-top:var(--ifm-navbar-height);position:-webkit-sticky;position:sticky;top:0;transition:opacity 50ms;width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_VlPv{padding-top:0}.sidebarHidden_OqfG{height:0;opacity:0;overflow:hidden;visibility:hidden}.sidebarLogo_hmkv{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_hmkv img{height:2rem;margin-right:.5rem}.menu_cyFh{flex-grow:1;padding:.5rem}.menuWithAnnouncementBar_\+O1J{margin-bottom:var(--docusaurus-announcement-bar-height)}.collapseSidebarButton_eoK2{background-color:var(--ifm-button-background-color);border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:-webkit-sticky;position:sticky}.collapseSidebarButtonIcon_e\+kA{margin-top:4px;transform:rotate(180deg)}.expandSidebarButtonIcon_cxi8,html[dir=rtl] .collapseSidebarButtonIcon_e\+kA{transform:rotate(0)}html[data-theme=dark] .collapseSidebarButton_eoK2,html[data-theme=dark] .collapsedDocSidebar_zZpm:focus,html[data-theme=dark] .collapsedDocSidebar_zZpm:hover{background-color:var(--collapse-button-bg-color-dark)}.collapsedDocSidebar_zZpm:focus,.collapsedDocSidebar_zZpm:hover,html[data-theme=dark] .collapseSidebarButton_eoK2:focus,html[data-theme=dark] .collapseSidebarButton_eoK2:hover{background-color:var(--ifm-color-emphasis-200)}.lastUpdated_mt2f{text-align:right}.docMainContainer_r8cw{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_SOUu{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docSidebarContainer_0YBq{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_Qlt2{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.collapsedDocSidebar_zZpm{align-items:center;display:flex;height:100%;justify-content:center;max-height:100vh;position:-webkit-sticky;position:sticky;top:0;transition:background-color var(--ifm-transition-fast) ease}html[dir=rtl] .expandSidebarButtonIcon_cxi8{transform:rotate(180deg)}.docItemWrapperEnhanced_aT5H{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.docItemCol_MGa7{max-width:75%!important}.tocMobile_psec{display:none}}@media screen and (min-width:1366px){.heroBannerWrapper_Yk8e{margin-left:5rem;max-width:40%}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.row .col.col.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.footer__link-separator,.navbar__item,.sidebar_q\+wC,.tableOfContents_vrFS,.toggle_2i4l{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.pills--block .pills__item:not(:first-child){margin-top:var(--ifm-pills-spacing)}.pills--block .pills__item:not(:last-child){margin-bottom:var(--ifm-pills-spacing)}.tabs--block .tabs__item:not(:first-child){margin-top:var(--ifm-tabs-spacing)}.tabs--block .tabs__item:not(:last-child){margin-bottom:var(--ifm-tabs-spacing)}.docItemContainer_VKW9{padding:0 .3rem}}@media (max-width:576px){.navbar__search-input:not(:focus){width:2rem}.searchBar_DBlZ .dropdownMenu_0bDV{max-width:calc(100vw - var(--ifm-navbar-padding-horizontal)*2);width:var(--search-local-modal-width-sm,340px)}.searchHintContainer_CDc6{display:none}}@media (hover:hover){.backToTopButton_i9tI:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media print{.announcementBar_axC9,.footer,.menu,.navbar,.pagination-nav,.table-of-contents{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_1zSZ{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/js/01a85c17.b6ef853c.js b/assets/js/01a85c17.b6ef853c.js new file mode 100644 index 0000000..ef09233 --- /dev/null +++ b/assets/js/01a85c17.b6ef853c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[4013],{7774:function(e,t,a){a.d(t,{Z:function(){return m}});var l=a(7294),n=a(6010),r=a(9960),c="tag_WK-t",s="tagRegular_LXbV",i="tagWithCount_S5Zl";var m=function(e){var t,a=e.permalink,m=e.name,o=e.count;return l.createElement(r.default,{href:a,className:(0,n.Z)(c,(t={},t[s]=!o,t[i]=o,t))},m,o&&l.createElement("span",null,o))}},7663:function(e,t,a){a.d(t,{Z:function(){return h}});var l=a(3366),n=a(7294),r=a(6010),c=a(7019),s=a(9960),i="sidebar_q+wC",m="sidebarItemTitle_9G5K",o="sidebarItemList_6T4b",u="sidebarItem_cjdF",d="sidebarItemLink_zyXk",g="sidebarItemLinkActive_wcJs",b=a(5999);function p(e){var t=e.sidebar;return 0===t.items.length?null:n.createElement("nav",{className:(0,r.Z)(i,"thin-scrollbar"),"aria-label":(0,b.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},n.createElement("div",{className:(0,r.Z)(m,"margin-bottom--md")},t.title),n.createElement("ul",{className:o},t.items.map((function(e){return n.createElement("li",{key:e.permalink,className:u},n.createElement(s.default,{isNavLink:!0,to:e.permalink,className:d,activeClassName:g},e.title))}))))}var f={fontSize:"13px",width:"100%",whiteSpace:"nowrap",textOverflow:"ellipsis",display:"inline-block",lineHeight:"20px",height:"20px"};var v=function(e){var t=e.hashTagObj;return n.createElement("aside",{className:"col col--2"},n.createElement("h3",{style:{fontFamily:"New York"}},"All tags"),n.createElement("section",null,Object.values(t).map((function(e){return n.createElement("div",{key:e.permalink},n.createElement(s.default,{href:e.permalink,style:f,className:"tags-link"},e.name,e.count&&n.createElement("span",null,"\u2003[",e.count,"]")))}))))},E=["blogTags","items","sidebar","toc","children"];var h=function(e){var t=e.blogTags,a=void 0===t?"":t,s=e.items,i=e.sidebar,m=e.toc,o=e.children,u=(0,l.Z)(e,E),d=i&&i.items.length>0,g={};if(a){var b=JSON.parse(JSON.stringify(a||{}));Object.keys(b||{}).forEach((function(e){var t,a=null==b?void 0:b[e];g[a.name]={name:a.name,count:null==a||null==(t=a.items)?void 0:t.length,permalink:a.permalink}}))}else null==s||s.forEach((function(e){var t,a;((null==e||null==(t=e.content)||null==(a=t.metadata)?void 0:a.tags)||[]).forEach((function(e){g[e.label]?++g[e.label].count:g[e.label]={name:e.label,count:1,permalink:e.permalink}}))}));return n.createElement(c.Z,u,n.createElement("div",{className:"container margin-vert--lg",style:{maxWidth:"100%"}},n.createElement("div",{className:"row"},d&&s&&n.createElement("aside",{className:"col col--3"},n.createElement(p,{sidebar:i})),n.createElement("main",{className:(0,r.Z)("col",{"col--7":d&&s,"col--9 col--offset-1":!d,"col--10":d&&!s,"col--12":!m&&!s}),itemScope:!0,itemType:"https://schema.org/Blog"},o),d&&s&&n.createElement(v,{hashTagObj:g}),m&&n.createElement("div",{className:"col col--2"},m))))}},5534:function(e,t,a){a.r(t),a.d(t,{default:function(){return o}});var l=a(7294),n=a(7663),r=a(7774),c=a(3810),s="tag_7kA+";function i(e){var t=e.letterEntry;return l.createElement("article",null,l.createElement("h2",null,t.letter),l.createElement("ul",{className:"padding--none"},t.tags.map((function(e){return l.createElement("li",{key:e.permalink,className:s},l.createElement(r.Z,e))}))),l.createElement("hr",null))}var m=function(e){var t=e.tags,a=(0,c.PZ)(t);return l.createElement("section",{className:"margin-vert--lg"},a.map((function(e){return l.createElement(i,{key:e.letter,letterEntry:e})})))};var o=function(e){var t=e.tags,a=e.sidebar,r=(0,c.MA)();return l.createElement(n.Z,{title:r,wrapperClassName:c.kM.wrapper.blogPages,pageClassName:c.kM.page.blogTagsListPage,searchMetadata:{tag:"blog_tags_list"},sidebar:a},l.createElement("h1",null,r),l.createElement(m,{tags:Object.values(t)}))}}}]); \ No newline at end of file diff --git a/assets/js/073a51d1.204097b7.js b/assets/js/073a51d1.204097b7.js new file mode 100644 index 0000000..0c6a723 --- /dev/null +++ b/assets/js/073a51d1.204097b7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[7007],{3905:function(t,e,n){n.d(e,{Zo:function(){return s},kt:function(){return m}});var a=n(7294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function o(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var p=a.createContext({}),u=function(t){var e=a.useContext(p),n=e;return t&&(n="function"==typeof t?t(e):o(o({},e),t)),n},s=function(t){var e=u(t.components);return a.createElement(p.Provider,{value:e},t.children)},d={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},c=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,l=t.originalType,p=t.parentName,s=i(t,["components","mdxType","originalType","parentName"]),c=u(n),m=r,k=c["".concat(p,".").concat(m)]||c[m]||d[m]||l;return n?a.createElement(k,o(o({ref:e},s),{},{components:n})):a.createElement(k,o({ref:e},s))}));function m(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=n.length,o=new Array(l);o[0]=c;var i={};for(var p in e)hasOwnProperty.call(e,p)&&(i[p]=e[p]);i.originalType=t,i.mdxType="string"==typeof t?t:r,o[1]=i;for(var u=2;u0,d=!!(a||r||s);return o||d?n.createElement("footer",{className:(0,l.Z)(u.kM.docs.docFooter,"docusaurus-mt-lg")},o&&n.createElement(_,{tags:c}),d&&n.createElement(w,{editUrl:a,lastUpdatedAt:r,lastUpdatedBy:s,formattedLastUpdatedAt:i})):null}var y=a(7708),T="tocCollapsible_aw-L",M="tocCollapsibleButton_zr6a",x="tocCollapsibleContent_0dom",A="tocCollapsibleExpanded_FSiv",H=a(5002);function S(e){var t,a=e.toc,r=e.className,s=e.minHeadingLevel,c=e.maxHeadingLevel,o=(0,u.uR)({initialState:!0}),d=o.collapsed,m=o.toggleCollapsed;return n.createElement("div",{className:(0,l.Z)(T,(t={},t[A]=!d,t),r)},n.createElement("button",{type:"button",className:(0,l.Z)("clean-btn",M),onClick:m},n.createElement(i.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page")),n.createElement(u.zF,{lazy:!0,className:x,collapsed:d},n.createElement(H.Z,{toc:a,minHeadingLevel:s,maxHeadingLevel:c})))}var B=a(9649),V="docItemCol_MGa7",O="tocMobile_psec",D=a(5861),R=a(7757),F=a.n(R),I=function(e){var t=(0,n.useState)("ios"),a=t[0],r=t[1],i=(0,n.useRef)(null),s=(0,n.useRef)(!1),c=(0,n.useRef)([]),o=(0,n.useRef)(null);(0,n.useEffect)((function(){window.addEventListener("demoMessage",d)}),[]);var d=(0,n.useCallback)(function(){var e=(0,D.Z)(F().mark((function e(t){return F().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:s.current?m(t):c.current.push(t);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[]),m=function(e){o.current=e;try{i.current&&i.current.contentWindow&&i.current.contentWindow.postMessage(e.detail,"*")}catch(t){}},u=n.createElement("div",{className:"docs-demo-mode-toggle"},["ios","md"].map((function(e){return n.createElement("button",{className:(0,l.Z)({"is-selected":e===a}),title:"Toggle "+("ios"===e?"iOS":"Android")+" mode",onClick:function(){return r(e)}},"ios"===e?"iOS":"Android")}))),v=n.createElement("a",{href:e.source,className:"docs-demo-source",target:"_blank",title:"Demo Source"}," View Source"),p=n.createElement("div",{className:"docs-demo-device "+a},n.createElement("figure",null,n.createElement("svg",{className:"docs-demo-device__md-bar",viewBox:"0 0 1384.3 40.3"},n.createElement("path",{className:"st0",d:"M1343 5l18.8 32.3c.8 1.3 2.7 1.3 3.5 0L1384 5c.8-1.3-.2-3-1.7-3h-37.6c-1.5 0-2.5 1.7-1.7 3z"}),n.createElement("circle",{className:"st0",cx:"1299",cy:"20.2",r:"20"}),n.createElement("path",{className:"st0",d:"M1213 1.2h30c2.2 0 4 1.8 4 4v30c0 2.2-1.8 4-4 4h-30c-2.2 0-4-1.8-4-4v-30c0-2.3 1.8-4 4-4zM16 4.2h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H16c-8.8 0-16-7.2-16-16s7.2-16 16-16z"})),n.createElement("svg",{className:"docs-demo-device__ios-notch",viewBox:"0 0 219 31"},n.createElement("path",{d:"M0 1V0h219v1a5 5 0 0 0-5 5v3c0 12.15-9.85 22-22 22H27C14.85 31 5 21.15 5 9V6a5 5 0 0 0-5-5z","fill-rule":"evenodd"})),n.createElement("iframe",{loading:"lazy",importance:"low",onLoad:function(){c.current.forEach((function(e){return m(e)})),m(o.current),c.current=[],s.current=!0},src:e.url+"?ionic:mode="+a,ref:i})));return n.createElement("div",{className:"doc-demo"},u,p,e.source&&v)};function z(e){var t,a=e.content,i=e.versionMetadata,s=a.metadata,c=a.frontMatter,d=c.image,m=c.keywords,v=c.hide_title,p=c.hide_table_of_contents,g=c.toc_min_heading_level,h=c.toc_max_heading_level,b=c.demoUrl,N=c.demoSourceUrl,C=(a.metadata.editUrl,(0,n.useState)(!1)),k=(C[0],C[1],s.description),L=s.title,Z=!v&&void 0===a.contentTitle,_=(0,r.Z)(),w=!p&&a.toc&&a.toc.length>0,T=w&&("desktop"===_||"ssr"===_);return n.createElement(n.Fragment,null,n.createElement(E.Z,{title:L,description:k,keywords:m,image:d}),n.createElement("div",{className:"row"},n.createElement("div",{style:{position:"relative"},className:(0,l.Z)("col",(t={},t[V]=!p,t))},n.createElement(f,{versionMetadata:i}),n.createElement("div",{style:{width:"100%"}},n.createElement("article",null,i.badge&&n.createElement("span",{className:(0,l.Z)(u.kM.docs.docVersionBadge,"badge badge--secondary")},"Version: ",i.label),w&&n.createElement(S,{toc:a.toc,minHeadingLevel:g,maxHeadingLevel:h,className:(0,l.Z)(u.kM.docs.docTocMobile,O)}),n.createElement("div",{className:(0,l.Z)(u.kM.docs.docMarkdown,"markdown")},Z&&n.createElement(B.N,null,L),n.createElement(a,null)),n.createElement(U,e)),n.createElement(o,{metadata:s})),b&&n.createElement("div",{className:(0,l.Z)("doc-demo-wrapper")},n.createElement(I,{url:b,source:N}))),T&&n.createElement("div",{className:"col col--3"},n.createElement(y.Z,{toc:a.toc,minHeadingLevel:g,maxHeadingLevel:h,className:u.kM.docs.docTocDesktop}))))}},7708:function(e,t,a){a.d(t,{Z:function(){return u}});var n=a(7462),l=a(3366),r=a(7294),i=a(6010),s=a(5002),c="tableOfContents_vrFS",o=["className"];var d=function(e){var t=e.className,a=(0,l.Z)(e,o);return r.createElement("div",{className:(0,i.Z)(c,"thin-scrollbar",t)},r.createElement(s.Z,(0,n.Z)({},a,{linkClassName:"table-of-contents__link toc-highlight",linkActiveClassName:"table-of-contents__link--active"})))},m=["toc","editUrl"];function u(e){var t=e.toc,a=(e.editUrl,(0,l.Z)(e,m));return t.length<=0?null:r.createElement("div",{className:"toc-wrapper",style:{paddingInlineEnd:"1rem",paddingInlineStart:"1rem"}},r.createElement("h2",null,"Contents"),r.createElement(d,(0,n.Z)({toc:t},a)))}}}]); \ No newline at end of file diff --git a/assets/js/1a4e3797.79813273.js b/assets/js/1a4e3797.79813273.js new file mode 100644 index 0000000..91b2930 --- /dev/null +++ b/assets/js/1a4e3797.79813273.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[7920],{8374:function(e,t,n){n.r(t),n.d(t,{default:function(){return R}});var a=n(5861),r=n(7757),c=n.n(r),u=n(7294),l=n(2263),s=n(7019),o=n(2859),i=n(9960),m=n(6775),f=n(412);var h=function(){var e=(0,m.k6)(),t=(0,m.TH)(),n=(0,l.default)().siteConfig.baseUrl;return{searchValue:f.Z.canUseDOM&&new URLSearchParams(t.search).get("q")||"",updateSearchPath:function(n){var a=new URLSearchParams(t.search);n?a.set("q",n):a.delete("q"),e.replace({search:a.toString()})},generateSearchPageLink:function(e){return n+"search?q="+encodeURIComponent(e)}}},p=n(22),d=n(8202),_=n(2539),E=n(726),g=n(1073),v=n(311),S=n(1029);function w(e,t){return e.replace(/\{\{\s*(\w+)\s*\}\}/g,(function(e,n){return Object.prototype.hasOwnProperty.call(t,n)?String(t[n]):e}))}var y="searchQueryInput_5r-w",I="searchResultItem_18XW",k="searchResultItemPath_TjRL",b="searchResultItemSummary_5qSX";function C(e){var t=e.searchResult,n=t.document,a=t.type,r=t.page,c=t.tokens,l=t.metadata,s=0===a,o=2===a,m=(s?n.b:r.b).slice(),f=o?n.s:n.t;return s||m.push(r.t),u.createElement("article",{className:I},u.createElement("h2",null,u.createElement(i.default,{to:n.u+(n.h||""),dangerouslySetInnerHTML:{__html:o?(0,_.C)(f,c):(0,E.o)(f,(0,g.m)(l,"t"),c,100)}})),m.length>0&&u.createElement("p",{className:k},m.join(" \u203a ")),o&&u.createElement("p",{className:b,dangerouslySetInnerHTML:{__html:(0,E.o)(n.t,(0,g.m)(l,"t"),c,100)}}))}var R=function(){var e=(0,l.default)().siteConfig.baseUrl,t=h(),n=t.searchValue,r=t.updateSearchPath,i=(0,u.useState)(n),m=i[0],f=i[1],_=(0,u.useState)(),E=_[0],g=_[1],I=(0,u.useState)(),k=I[0],b=I[1],R=(0,u.useMemo)((function(){return m?w(S.Iz.search_results_for,{keyword:m}):S.Iz.search_the_documentation}),[m]);(0,u.useEffect)((function(){r(m),E&&(m?E(m,(function(e){b(e)})):b(void 0))}),[m,E]);var P=(0,u.useCallback)((function(e){f(e.target.value)}),[]);return(0,u.useEffect)((function(){n&&n!==m&&f(n)}),[n]),(0,u.useEffect)((function(){function t(){return(t=(0,a.Z)(c().mark((function t(){var n,a,r;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,(0,p.w)(e);case 2:n=t.sent,a=n.wrappedIndexes,r=n.zhDictionary,g((function(){return(0,d.v)(a,r,100)}));case 6:case"end":return t.stop()}}),t)})))).apply(this,arguments)}!function(){t.apply(this,arguments)}()}),[e]),u.createElement(s.Z,{title:R},u.createElement(o.default,null,u.createElement("meta",{property:"robots",content:"noindex, follow"})),u.createElement("div",{className:"container margin-vert--lg"},u.createElement("h1",null,R),u.createElement("input",{type:"search",name:"q",className:y,"aria-label":"Search",onChange:P,value:m,autoComplete:"off",autoFocus:!0}),!E&&m&&u.createElement("div",null,u.createElement(v.Z,null)),k&&(k.length>0?u.createElement("p",null,w(1===k.length?S.Iz.count_documents_found:S.Iz.count_documents_found_plural,{count:k.length})):u.createElement("p",null,S.Iz.no_documents_were_found)),u.createElement("section",null,k&&k.map((function(e){return u.createElement(C,{key:e.document.i,searchResult:e})})))))}}}]); \ No newline at end of file diff --git a/assets/js/1be78505.02232c1c.js b/assets/js/1be78505.02232c1c.js new file mode 100644 index 0000000..3a2ef1b --- /dev/null +++ b/assets/js/1be78505.02232c1c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[9514,4608],{5849:function(e,t,n){n.r(t),n.d(t,{default:function(){return te}});var a=n(7294),l=n(3905),r=n(6291),o=n(7019),i=n(6010),c=n(3810),s=n(3783),d=n(5537),u=n(7462);var m=function(e){return a.createElement("svg",(0,u.Z)({width:"20",height:"20","aria-hidden":"true"},e),a.createElement("g",{fill:"#7a7a7a"},a.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),a.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})))},p=n(5999),b=n(3366),h=n(9960),f=n(3919),v=n(541),E="menuLinkText_OKON",g="hasHref_TwRn",k=n(2389),_=["items"],C=["item"],Z=["item","onItemClick","activePath","level"],N=["item","onItemClick","activePath","level"],T=(0,a.memo)((function(e){var t=e.items,n=(0,b.Z)(e,_);return a.createElement(a.Fragment,null,t.map((function(e,t){return a.createElement(S,(0,u.Z)({key:t,item:e},n))})))}));function S(e){var t=e.item,n=(0,b.Z)(e,C);return"category"===t.type?0===t.items.length?null:a.createElement(y,(0,u.Z)({item:t},n)):a.createElement(I,(0,u.Z)({item:t},n))}function y(e){var t,n=e.item,l=e.onItemClick,r=e.activePath,o=e.level,s=(0,b.Z)(e,Z),d=n.items,m=n.label,f=n.collapsible,v=n.className,_=n.href,C=function(e){var t=(0,k.Z)();return(0,a.useMemo)((function(){return e.href?e.href:!t&&e.collapsible?(0,c.Wl)(e):void 0}),[e,t])}(n),N=(0,c._F)(n,r),S=(0,c.uR)({initialState:function(){return!!f&&(!N&&n.collapsed)}}),y=S.collapsed,I=S.setCollapsed,A=S.toggleCollapsed;return function(e){var t=e.isActive,n=e.collapsed,l=e.setCollapsed,r=(0,c.D9)(t);(0,a.useEffect)((function(){t&&!r&&n&&l(!1)}),[t,r,n,l])}({isActive:N,collapsed:y,setCollapsed:I}),a.createElement("li",{className:(0,i.Z)(c.kM.docs.docSidebarItemCategory,c.kM.docs.docSidebarItemCategoryLevel(o),"menu__list-item",{"menu__list-item--collapsed":y},v)},a.createElement("div",{className:"menu__list-item-collapsible"},a.createElement(h.default,(0,u.Z)({className:(0,i.Z)("menu__link",(t={"menu__link--sublist":f&&!_,"menu__link--active":N},t[E]=!f,t[g]=!!C,t)),onClick:f?function(e){null==l||l(n),_?I(!1):(e.preventDefault(),A())}:function(){null==l||l(n)},href:f?null!=C?C:"#":C},s),m),_&&f&&a.createElement("button",{"aria-label":(0,p.I)({id:"theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel",message:"Toggle the collapsible sidebar category '{label}'",description:"The ARIA label to toggle the collapsible sidebar category"},{label:m}),type:"button",className:"clean-btn menu__caret",onClick:function(e){e.preventDefault(),A()}})),a.createElement(c.zF,{lazy:!0,as:"ul",className:"menu__list",collapsed:y},a.createElement(T,{items:d,tabIndex:y?-1:0,onItemClick:l,activePath:r,level:o+1})))}function I(e){var t=e.item,n=e.onItemClick,l=e.activePath,r=e.level,o=(0,b.Z)(e,N),s=t.href,d=t.label,m=t.className,p=(0,c._F)(t,l);return a.createElement("li",{className:(0,i.Z)(c.kM.docs.docSidebarItemLink,c.kM.docs.docSidebarItemLinkLevel(r),"menu__list-item",m),key:d},a.createElement(h.default,(0,u.Z)({className:(0,i.Z)("menu__link",{"menu__link--active":p}),"aria-current":p?"page":void 0,to:s},(0,f.Z)(s)&&{onClick:n?function(){return n(t)}:void 0},o),(0,f.Z)(s)?d:a.createElement("span",null,d,a.createElement(v.Z,null))))}var A="sidebar_a3j0",M="sidebarWithHideableNavbar_VlPv",w="sidebarHidden_OqfG",F="sidebarLogo_hmkv",P="menu_cyFh",L="menuWithAnnouncementBar_+O1J",B="collapseSidebarButton_eoK2",x="collapseSidebarButtonIcon_e+kA";function R(e){var t=e.onClick;return a.createElement("button",{type:"button",title:(0,p.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,p.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,i.Z)("button button--secondary button--outline",B),onClick:t},a.createElement(m,{className:x}))}function H(e){var t,n,l=e.path,r=e.sidebar,o=e.onCollapse,s=e.isHidden,u=function(){var e=(0,c.nT)().isActive,t=(0,a.useState)(e),n=t[0],l=t[1];return(0,c.RF)((function(t){var n=t.scrollY;e&&l(0===n)}),[e]),e&&n}(),m=(0,c.LU)(),p=m.navbar.hideOnScroll,b=m.hideableSidebar;return a.createElement("div",{className:(0,i.Z)(A,(t={},t[M]=p,t[w]=s,t))},p&&a.createElement(d.Z,{tabIndex:-1,className:F}),a.createElement("nav",{className:(0,i.Z)("menu thin-scrollbar",P,(n={},n[L]=u,n))},a.createElement("ul",{className:(0,i.Z)(c.kM.docs.docSidebarMenu,"menu__list")},a.createElement(T,{items:r,activePath:l,level:1}))),b&&a.createElement(R,{onClick:o}))}var D=function(e){var t=e.toggleSidebar,n=e.sidebar,l=e.path;return a.createElement("ul",{className:(0,i.Z)(c.kM.docs.docSidebarMenu,"menu__list")},a.createElement(T,{items:n,activePath:l,onItemClick:function(e){"category"===e.type&&e.href&&t(),"link"===e.type&&t()},level:1}))};function O(e){return a.createElement(c.Cv,{component:D,props:e})}var W=a.memo(H),j=a.memo(O);function z(e){var t=(0,s.Z)(),n="desktop"===t||"ssr"===t,l="mobile"===t;return a.createElement(a.Fragment,null,n&&a.createElement(W,e),l&&a.createElement(j,e))}function q(e){return a.createElement(a.Fragment,null,a.createElement(z,e))}var Y=n(8483),K=n(4608),Q="backToTopButton_i9tI",U="backToTopButtonShow_wCmF";function V(){var e=(0,a.useRef)(null);return{smoothScrollTop:function(){var t;e.current=(t=null,function e(){var n=document.documentElement.scrollTop;n>0&&(t=requestAnimationFrame(e),window.scrollTo(0,Math.floor(.85*n)))}(),function(){return t&&cancelAnimationFrame(t)})},cancelScrollToTop:function(){return null==e.current?void 0:e.current()}}}var G=function(){var e,t=(0,a.useState)(!1),n=t[0],l=t[1],r=(0,a.useRef)(!1),o=V(),s=o.smoothScrollTop,d=o.cancelScrollToTop;return(0,c.RF)((function(e,t){var n=e.scrollY,a=null==t?void 0:t.scrollY;if(a)if(r.current)r.current=!1;else{var o=n0&&e[n-1]===t?e:e.concat(t)},d=function(e,t){var n=e.plain,a=Object.create(null),r=e.styles.reduce((function(e,n){var a=n.languages,r=n.style;return a&&!a.includes(t)||n.types.forEach((function(t){var n=s({},e[t],r);e[t]=n})),e}),a);return r.root=n,r.plain=s({},n,{backgroundColor:null}),r};function y(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&-1===t.indexOf(a)&&(n[a]=e[a]);return n}var g=function(e){function t(){for(var t=this,n=[],a=arguments.length;a--;)n[a]=arguments[a];e.apply(this,n),i(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?d(e.theme,e.language):void 0;return t.themeDict=n})),i(this,"getLineProps",(function(e){var n=e.key,a=e.className,r=e.style,l=s({},y(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),o=t.getThemeDict(t.props);return void 0!==o&&(l.style=o.plain),void 0!==r&&(l.style=void 0!==l.style?s({},l.style,r):r),void 0!==n&&(l.key=n),a&&(l.className+=" "+a),l})),i(this,"getStyleForToken",(function(e){var n=e.types,a=e.empty,r=n.length,l=t.getThemeDict(t.props);if(void 0!==l){if(1===r&&"plain"===n[0])return a?{display:"inline-block"}:void 0;if(1===r&&!a)return l[n[0]];var o=a?{display:"inline-block"}:{},c=n.map((function(e){return l[e]}));return Object.assign.apply(Object,[o].concat(c))}})),i(this,"getTokenProps",(function(e){var n=e.key,a=e.className,r=e.style,l=e.token,o=s({},y(e,["key","className","style","token"]),{className:"token "+l.types.join(" "),children:l.content,style:t.getStyleForToken(l),key:void 0});return void 0!==r&&(o.style=void 0!==o.style?s({},o.style,r):r),void 0!==n&&(o.key=n),a&&(o.className+=" "+a),o})),i(this,"tokenize",(function(e,t,n,a){var r={code:t,grammar:n,language:a,tokens:[]};e.hooks.run("before-tokenize",r);var l=r.tokens=e.tokenize(r.code,r.grammar,r.language);return e.hooks.run("after-tokenize",r),l}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,a=e.code,r=e.children,l=this.getThemeDict(this.props),o=t.languages[n];return r({tokens:function(e){for(var t=[[]],n=[e],a=[0],r=[e.length],l=0,o=0,c=[],i=[c];o>-1;){for(;(l=a[o]++)0?d:["plain"],s=y):(d=m(d,y.type),y.alias&&(d=m(d,y.alias)),s=y.content),"string"==typeof s){var g=s.split(u),f=g.length;c.push({types:d,content:g[0]});for(var h=1;h0&&r.getRangeAt(0);t.append(n),n.select(),n.selectionStart=0,n.selectionEnd=e.length;let o=!1;try{o=document.execCommand("copy")}catch{}n.remove(),l&&(r.removeAllRanges(),r.addRange(l)),a&&a.focus()}(B),d(!0),setTimeout((function(){return d(!1)}),2e3)};return r.createElement(f,(0,a.Z)({},c,{key:String(g),theme:C,code:B,language:S}),(function(e){var t=e.className,n=e.style,c=e.tokens,i=e.getLineProps,s=e.getTokenProps;return r.createElement("div",{className:(0,l.Z)(x,o,b.kM.common.codeBlock)},k&&r.createElement("div",{style:n,className:O},k),r.createElement("div",{className:(0,l.Z)(_,S)},r.createElement("pre",{tabIndex:0,className:(0,l.Z)(t,w,"thin-scrollbar"),style:n},r.createElement("code",{className:Z},c.map((function(e,t){1===e.length&&"\n"===e[0].content&&(e[0].content="");var n=i({line:e,key:t});return P.includes(t)&&(n.className+=" docusaurus-highlight-code-line"),r.createElement("span",(0,a.Z)({key:t},n),e.map((function(e,t){return r.createElement("span",(0,a.Z)({key:t},s({token:e,key:t})))})),r.createElement("br",null))})))),r.createElement("button",{type:"button","aria-label":(0,h.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),className:(0,l.Z)(N,"clean-btn"),onClick:T},m?r.createElement(h.Z,{id:"theme.CodeBlock.copied",description:"The copied button label on code blocks"},"Copied"):r.createElement(h.Z,{id:"theme.CodeBlock.copy",description:"The copy button label on code blocks"},"Copy"))))}))}},9639:function(e,t,n){n.r(t),n.d(t,{default:function(){return L}});var a,r=n(7294),l=n(6010),o=n(9960),c=n(2263),i=n(7019),s=n(7462),u=["title","titleId"];function p(){return p=Object.assign||function(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var d,y=function(e){var t=e.title,n=e.titleId,l=m(e,u);return r.createElement("svg",p({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24","aria-labelledby":n},l),t?r.createElement("title",{id:n},t):null,a||(a=r.createElement("path",{d:"M13.3 12.22A4.92 4.92 0 0 0 15 8.5a5 5 0 0 0-10 0 4.92 4.92 0 0 0 1.7 3.72A8 8 0 0 0 2 19.5a1 1 0 0 0 2 0 6 6 0 0 1 12 0 1 1 0 0 0 2 0 8 8 0 0 0-4.7-7.28ZM10 11.5a3 3 0 1 1 3-3 3 3 0 0 1-3 3Zm11.71-2.37a1 1 0 0 0-1.42 0l-2 2-.62-.63a1 1 0 0 0-1.42 0 1 1 0 0 0 0 1.41l1.34 1.34a1 1 0 0 0 1.41 0l2.67-2.67a1 1 0 0 0 .04-1.45Z"})))},g=["title","titleId"];function f(){return f=Object.assign||function(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var b,v=function(e){var t=e.title,n=e.titleId,a=h(e,g);return r.createElement("svg",f({xmlns:"http://www.w3.org/2000/svg","data-name":"Layer 1",viewBox:"0 0 24 24","aria-labelledby":n},a),t?r.createElement("title",{id:n},t):null,d||(d=r.createElement("path",{d:"M10 13H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1Zm-1 6H5v-4h4ZM20 3h-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1Zm-1 6h-4V5h4Zm1 7h-2v-2a1 1 0 0 0-2 0v2h-2a1 1 0 0 0 0 2h2v2a1 1 0 0 0 2 0v-2h2a1 1 0 0 0 0-2ZM10 3H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1ZM9 9H5V5h4Z"})))},k=["title","titleId"];function E(){return E=Object.assign||function(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var _=function(e){var t=e.title,n=e.titleId,a=x(e,k);return r.createElement("svg",E({xmlns:"http://www.w3.org/2000/svg","data-name":"Layer 1",viewBox:"0 0 24 24","aria-labelledby":n},a),t?r.createElement("title",{id:n},t):null,b||(b=r.createElement("path",{d:"M17 22H5a3 3 0 0 1-3-3V9a3 3 0 0 1 3-3h1a4 4 0 0 1 7.3-2.18A3.86 3.86 0 0 1 14 6h3a1 1 0 0 1 1 1v3a4 4 0 0 1 2.18 7.3A3.86 3.86 0 0 1 18 18v3a1 1 0 0 1-1 1ZM5 8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h11v-3.18a1 1 0 0 1 .42-.82 1 1 0 0 1 .91-.13 1.77 1.77 0 0 0 1.74-.23 2 2 0 0 0 .93-1.37 2 2 0 0 0-.48-1.59 1.89 1.89 0 0 0-2.17-.55 1 1 0 0 1-.91-.13 1 1 0 0 1-.42-.82V8h-3.2a1 1 0 0 1-1-1.33 1.77 1.77 0 0 0-.23-1.74 1.94 1.94 0 0 0-3-.43A2 2 0 0 0 8 6a1.89 1.89 0 0 0 .13.67A1 1 0 0 1 7.18 8Z"})))},O=JSON.parse('{"zh":{"title":"CKibana \u9884\u89c8","subtitle":"CKibana 0.2.0","quick_start_btn_text":"\u5feb\u901f\u5165\u95e8","feature_list":[{"title":"\u6613\u4e8e\u4f7f\u7528","description":"\u4f7f\u7528\u6237\u65b9\u4fbf\u5feb\u6377\u5730\u5b9e\u73b0Clickhouse\u6570\u636e\u53ef\u89c6\u5316\u67e5\u8be2\u4e0e\u5206\u6790\uff0c\u5c24\u5176\u662f\u6709Kibana\u4f7f\u7528\u7ecf\u9a8c\u7684\u7528\u6237","icon":"EasyUseIcon"},{"title":"\u529f\u80fd\u5f3a\u5927","description":"\u5145\u5206\u5229\u7528\u539f\u751fKibana\u5f3a\u5927\u7684\u53ef\u89c6\u5316\u529f\u80fd\u5bf9Clickhouse\u4e2d\u7684\u6570\u636e\u8fdb\u884c\u67e5\u8be2\u4e0e\u5206\u6790","icon":"FeatureRichIcon"},{"title":"\u53ef\u6269\u5c55","description":"\u540e\u7eed\u5982\u679c\u9700\u8981\u652f\u6301\u65b0\u7684ElasticSearch\u8bed\u6cd5,\u53ef\u4ee5\u65b9\u4fbf\u5730\u8fdb\u884c\u6269\u5c55","icon":"ExtensibleIcon"}],"get_started_examples":{"title":"\u5feb\u901f\u5f00\u59cb","description":"\u53ef\u4ee5\u4f7f\u7528docker-compose\u4e00\u884c\u547d\u4ee4\u5c31\u53ef\u4ee5\u62c9\u8d77\u5168\u90e8\u7684\u6d4b\u8bd5\u73af\u5883,\u5305\u62ec\u6709\u5185\u7f6e\u7684\u56fe\u8868\u53ef\u4f9b\u4f7f\u7528","example_shell_text":"\u8bf7\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a","example_shell":"cd ckibana/docker-compose; docker-compose up -d"}},"en":{"title":"CKibana public preview","subtitle":"CKibana 0.2.0","quick_start_btn_text":"Quick Start","feature_list":[{"title":"Easy to Use","description":"Visualizing data in ClickHouse using native Kibana.","icon":"EasyUseIcon"},{"title":"Feature Rich","description":"Fully utilize the powerful visualization features of Kibana to analyze data in ClickHouse.","icon":"FeatureRichIcon"},{"title":"Extensible","description":"If there is a need to support new ElasticSearch syntax in the future, it can be easily extended.","icon":"ExtensibleIcon"}],"get_started_examples":{"title":"Get started in seconds","description":"With just one command using docker-compose, you can launch the entire testing environment, including built-in charts for use.","example_shell_text":"Please run the following command: ","example_shell":"cd ckibana/docker-compose; docker-compose up -d"}}}'),w=n(1262),N={EasyUse:y,FeatureRich:v,Extensible:_};function Z(e){var t=e.title,n=e.description,a=e.icon,o=N[a];return r.createElement("div",{className:"col"},r.createElement("div",{className:(0,l.Z)("card card--full-height padding--md")},r.createElement("span",{className:"avatar margin-bottom--sm"},o&&r.createElement(o,{"aria-hidden":"true",style:{fill:"currentColor",width:24}}),r.createElement("h3",{className:"margin-bottom--none text--normal"},t)),r.createElement("p",{className:"margin-bottom--none"},n)))}function C(){return r.createElement(w.default,null,(function(){var e=(0,c.default)().i18n.defaultLocale,t=localStorage.getItem("i18n-ckibana-locale")||e,n=O[t].feature_list||[];return r.createElement("section",{className:"margin-bottom--lg"},r.createElement("div",{className:"container"},r.createElement("div",{className:"row"},n.map((function(e,t){return r.createElement(Z,(0,s.Z)({key:t},e))})))))}))}var j={heroBanner:"heroBanner_etFc",heroSubtitle:"heroSubtitle_kZBx",heroBannerWrapper:"heroBannerWrapper_Yk8e"},S=n(4996),I=n(3899),P="featureImage_IxXC";var B=function(){return r.createElement(w.default,null,(function(){var e=(0,c.default)().i18n.defaultLocale,t=localStorage.getItem("i18n-ckibana-locale")||e,n=O[t];return r.createElement("div",{className:"container margin-bottom--xl text--left"},r.createElement("div",{className:"card padding--lg"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--5"},r.createElement("h2",null,n.get_started_examples.title),r.createElement("p",null,n.get_started_examples.description,r.createElement("br",null),r.createElement("br",null),n.get_started_examples.example_shell_text),r.createElement(I.Z,null,n.get_started_examples.example_shell),r.createElement("br",null)),r.createElement("div",{className:"col col--6 col--offset-1"},r.createElement("img",{className:P,alt:"Easy to get started in seconds",src:(0,S.Z)("img/index_template.png")})))))}))};function T(){return r.createElement(w.default,null,(function(){var e=(0,c.default)(),t=(e.siteConfig,e.i18n.defaultLocale),n=localStorage.getItem("i18n-ckibana-locale")||t,a=O[n];return r.createElement("header",{className:(0,l.Z)("container margin-top--lg margin-bottom--lg",j.heroContent)},r.createElement("div",{className:(0,l.Z)(j.heroBanner),style:{backgroundImage:"url('img/banner.jpg')"}},r.createElement("div",{className:j.heroBannerWrapper},r.createElement("h3",{className:(0,l.Z)("text--normal padding-left--sm",j.heroSubtitle)},a.title),r.createElement("p",{className:"margin-left--md text--bold"},a.subtitle),r.createElement(o.default,{className:"margin-left--md button button--primary",to:"/"+n+"/docs/"},a.quick_start_btn_text))))}))}function L(){var e=(0,c.default)().siteConfig;return r.createElement(i.Z,{title:""+e.title,description:"CKibana\u662f\u4e00\u4e2a\u53ef\u4ee5\u5728\u539f\u751fkibana\u4e0a\u76f4\u63a5\u67e5\u8be2Clickhouse\u7684\u4e00\u4e2a\u670d\u52a1"},r.createElement(T,null),r.createElement("main",null,r.createElement(C,null),r.createElement(B,null)))}}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.ee9f2306.js b/assets/js/1f391b9e.ee9f2306.js new file mode 100644 index 0000000..d5457c6 --- /dev/null +++ b/assets/js/1f391b9e.ee9f2306.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[3085],{6416:function(e,n,l){l.r(n),l.d(n,{default:function(){return u}});var t=l(7294),a=l(6010),r=l(7019),i=l(3905),c=l(8483),s=l(7708),o=l(3810),d="mdxPageWrapper_eQvw";var u=function(e){var n=e.content,l=n.frontMatter,u=n.metadata,m=l.title,v=l.description,p=l.wrapperClassName,f=l.hide_table_of_contents,h=u.permalink;return t.createElement(r.Z,{title:m,description:v,permalink:h,wrapperClassName:null!=p?p:o.kM.wrapper.mdxPages,pageClassName:o.kM.page.mdxPage},t.createElement("main",{className:"container container--fluid margin-vert--lg"},t.createElement("div",{className:(0,a.Z)("row",d)},t.createElement("div",{className:(0,a.Z)("col",!f&&"col--8")},t.createElement(i.Zo,{components:c.Z},t.createElement(n,null))),!f&&n.toc&&t.createElement("div",{className:"col col--2"},t.createElement(s.Z,{toc:n.toc,minHeadingLevel:l.toc_min_heading_level,maxHeadingLevel:l.toc_max_heading_level})))))}},5002:function(e,n,l){l.d(n,{Z:function(){return o}});var t=l(7462),a=l(3366),r=l(7294),i=l(3810),c=["toc","className","linkClassName","linkActiveClassName","minHeadingLevel","maxHeadingLevel"];function s(e){var n=e.toc,l=e.className,t=e.linkClassName,a=e.isChild;return n.length?r.createElement("ul",{className:a?void 0:l},n.map((function(e){return r.createElement("li",{key:e.id},r.createElement("a",{href:"#"+e.id,className:null!=t?t:void 0,dangerouslySetInnerHTML:{__html:e.value}}),r.createElement(s,{isChild:!0,toc:e.children,className:l,linkClassName:t}))}))):null}function o(e){var n=e.toc,l=e.className,o=void 0===l?"table-of-contents table-of-contents__left-border":l,d=e.linkClassName,u=void 0===d?"table-of-contents__link":d,m=e.linkActiveClassName,v=void 0===m?void 0:m,p=e.minHeadingLevel,f=e.maxHeadingLevel,h=(0,a.Z)(e,c),g=(0,i.LU)(),N=null!=p?p:g.tableOfContents.minHeadingLevel,E=null!=f?f:g.tableOfContents.maxHeadingLevel,b=(0,i.DA)({toc:n,minHeadingLevel:N,maxHeadingLevel:E}),k=(0,r.useMemo)((function(){if(u&&v)return{linkClassName:u,linkActiveClassName:v,minHeadingLevel:N,maxHeadingLevel:E}}),[u,v,N,E]);return(0,i.Si)(k),r.createElement(s,(0,t.Z)({toc:b,className:o,linkClassName:u},h))}},8483:function(e,n,l){var t=l(3366),a=l(7294),r=l(7440),i=l(5935),c=l(9911),s=l(1262),o=["children"],d=["children"],u=function e(n,l,t){var a,r;if(Array.isArray(null==n||null==(a=n.props)?void 0:a.children)&&null!=n&&null!=(r=n.props)&&r.originalType){var i,s,o=t.createElement(null==n||null==(i=n.props)?void 0:i.originalType),d=(0,c.Qc)((0,c.Pz)((null==n?void 0:n.props)||{}));delete d.children,Object.keys(d).forEach((function(e){o.setAttribute(e,d[e])})),l.appendChild(e(null==n||null==(s=n.props)?void 0:s.children,o,t))}else if(Array.isArray(n))n.forEach((function(n){e(n,l,t)}));else{var u;if(null!=n&&null!=(u=n.props)&&u.originalType){var m,v,p=t.createElement(null==n||null==(m=n.props)?void 0:m.originalType),f=(0,c.Qc)((0,c.Pz)((null==n?void 0:n.props)||{}));delete f.children,Object.keys(f).forEach((function(e){p.setAttribute(e,f[e])})),l.appendChild(e(null==n||null==(v=n.props)?void 0:v.children,p,t))}else l.append(n)}return l},m=function(e){var n,l=e.children,r=(0,t.Z)(e,o),c=(null==(n=l[0])?void 0:n.props.children)||(null==l?void 0:l.props.children),s=!Array.isArray(c)||c.every((function(e){return e.props.children})),d=Object.assign({},r),m=s?l:l.slice(1),v=document.createElement("table");Object.keys(d).forEach((function(e){v.setAttribute(e,d[e])})),u(m,v,document);var p=document.createElement("div");p.appendChild(v),p.setAttribute("class","table-wrapper");var f=(0,i.ZP)(p.innerHTML);return a.createElement("div",{className:"table-wrapper"},f)};n.Z=Object.assign({},r.Z,{table:function(e){var n=e.children,l=(0,t.Z)(e,d);return a.createElement(s.default,null,(function(){return m(Object.assign({children:n},l))}))}})},7708:function(e,n,l){l.d(n,{Z:function(){return m}});var t=l(7462),a=l(3366),r=l(7294),i=l(6010),c=l(5002),s="tableOfContents_vrFS",o=["className"];var d=function(e){var n=e.className,l=(0,a.Z)(e,o);return r.createElement("div",{className:(0,i.Z)(s,"thin-scrollbar",n)},r.createElement(c.Z,(0,t.Z)({},l,{linkClassName:"table-of-contents__link toc-highlight",linkActiveClassName:"table-of-contents__link--active"})))},u=["toc","editUrl"];function m(e){var n=e.toc,l=(e.editUrl,(0,a.Z)(e,u));return n.length<=0?null:r.createElement("div",{className:"toc-wrapper",style:{paddingInlineEnd:"1rem",paddingInlineStart:"1rem"}},r.createElement("h2",null,"Contents"),r.createElement(d,(0,t.Z)({toc:n},l)))}}}]); \ No newline at end of file diff --git a/assets/js/230687da.e9d97272.js b/assets/js/230687da.e9d97272.js new file mode 100644 index 0000000..f9f10eb --- /dev/null +++ b/assets/js/230687da.e9d97272.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[1139],{4734:function(e){e.exports=JSON.parse('{"pluginId":"en","version":"current","label":"Next","banner":null,"badge":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"usercase","href":"/ckibana-docs/en/docs/UserCase","docId":"UserCase"},{"type":"link","label":"api-docs","href":"/ckibana-docs/en/docs/api-docs","docId":"api-docs"},{"type":"link","label":"troubleshooting","href":"/ckibana-docs/en/docs/troubleshooting","docId":"troubleshooting"},{"type":"link","label":"Introduce","href":"/ckibana-docs/en/docs/","docId":"index"}]},"docs":{"api-docs":{"id":"api-docs","title":"api-docs","description":"application.yaml","sidebar":"tutorialSidebar"},"index":{"id":"index","title":"Introduce","description":"License","sidebar":"tutorialSidebar"},"troubleshooting":{"id":"troubleshooting","title":"troubleshooting","description":"1\u3001Cannot open Kibana.","sidebar":"tutorialSidebar"},"UserCase":{"id":"UserCase","title":"usercase","description":"1\u3001Accessing the native Kibana.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/23abe487.515b5e4a.js b/assets/js/23abe487.515b5e4a.js new file mode 100644 index 0000000..92ecda6 --- /dev/null +++ b/assets/js/23abe487.515b5e4a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[9627],{6074:function(e,t,u){Object.defineProperty(t,"__esModule",{value:!0});var l=u(655),a=(0,l.__importDefault)(u(7294)),f=(0,l.__importDefault)(u(4022)),r=(0,l.__importDefault)(u(4493)),c=(0,l.__importDefault)(u(2263));t.default=function(){var e=(0,c.default)().siteConfig;return a.default.createElement(f.default,null,a.default.createElement("h2",null,"Site config"),a.default.createElement(r.default,{src:e,collapseDepth:3}))}}}]); \ No newline at end of file diff --git a/assets/js/246f2c6f.f94728e0.js b/assets/js/246f2c6f.f94728e0.js new file mode 100644 index 0000000..dffe6c4 --- /dev/null +++ b/assets/js/246f2c6f.f94728e0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[9285],{6267:function(n){n.exports=JSON.parse('{"docusaurus-theme-classic":{"default":null},"docusaurus-plugin-image-zoom":{"default":null},"docusaurus-plugin-sass":{"default":null},"docusaurus-plugin-local-resolve":{"default":null},"docusaurus-plugin-content-blog":{"blog-en":{"blogSidebarTitle":"All posts","blogPosts":[{"id":"/build-logging-platform-with-native-kibana-and-clickhouse","metadata":{"permalink":"/ckibana-docs/en/blog/build-logging-platform-with-native-kibana-and-clickhouse","source":"@site/blog/en/build-logging-platform-with-native-kibana-and-clickhouse.md","title":"How to Build a Logging Platform using Native Kibana and ClickHouse","description":"How to Build a Logging Platform using Native Kibana and ClickHouse","date":"2024-08-26T07:53:36.317Z","formattedDate":"August 26, 2024","tags":[{"label":"CKibana","permalink":"/ckibana-docs/en/blog/tags/c-kibana"}],"readingTime":10.515,"truncated":true,"authors":[{"name":"CKibana-Team"}],"nextItem":{"title":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","permalink":"/ckibana-docs/en/blog/1"}},"content":"> This article will introduce how to build a logging platform based on native Kibana and Clickhouse.\\r\\n\\r\\n\x3c!--truncate--\x3e\\r\\nIn the rapid development of business, the demand for querying and analyzing various log data leads to a sharp increase in the scale of log storage. Traditional ELK and log systems centered around ElasticSearch subsequently face many challenges in terms of cost, stability, and performance. More and more companies at home and abroad, such as Ctrip, Kuaishou, Bilibili, Cloudflare, and Uber, have been seen switching their storage to ClickHouse, with obvious benefits from their shares. Our log system has also begun to try migrating from ElasticSearch to ClickHouse, exploring and accumulating a set of comprehensive solutions that maximally cater to the existing users\' habits to achieve a smooth transition.\\r\\n\\r\\n## 1 Background Introduction\\r\\n\\r\\nSince the transition from ElasticSearch to Clickhouse in 2020, our company\'s largest log system has seen significant improvements in both cost and stability. It reliably supported over 500 billion logs per day during this year\'s National Day period, with costs reduced to just 30% of the original ElasticSearch solution.\\r\\n\\r\\nBesides this log system, there are many other logging systems within the company, most of which are based on the open-source ELK approach. As scales have increased, issues with costs and stability have gradually emerged, prompting plans to switch all logging system storage foundations to Clickhouse.\\r\\n\\r\\nThe industry has widely shared the selection and usage of Clickhouse for logging scenarios, which will not be the focus of this article. Those interested can search for relevant information on their own.\\r\\n\\r\\nAfter completing the storage switch, the most crucial issue to address is the query UI user experience. While some companies have developed their own query UIs after switching log storage to Clickhouse, accommodating users\' existing habits for a seamless transition from native Kibana to a new platform is challenging. It requires all business colleagues to familiarize themselves with a new set of syntax and UI interactions, inadvertently adding significant costs.\\r\\n\\r\\nTherefore, making it possible for users to migrate to new platform without any learning cost is a rather challenging issue.\\r\\n\\r\\n## 2 Solution Introduction\\r\\n\\r\\nOur approach is actually quite simple and intuitive. We chose to add an additional proxy layer between native Kibana and Elasticsearch. This proxy is responsible for the syntax translation between Elasticsearch and ClickHouse:\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana02.png)\\r\\n\\r\\nWe developed our own Proxy (named CKibana), which translates chart requests into ClickHouse syntax, fetches results from ClickHouse, and then simulates an Elasticsearch response to return to Kibana. This allows us to directly display data from ClickHouse in the native Kibana interface. In addition to the syntax conversion, we also addressed many practical issues encountered during use.\\r\\n\\r\\nConsidering the limitations of ClickHouse\'s query concurrency capabilities, we retained Elasticsearch. This Elasticsearch can be used for advanced features such as result caching and storing metadata related to Kibana, and it is very lightweight.\\r\\n\\r\\n## 3 How to Use CKibana\\r\\n\\r\\n### Components\\r\\n\\r\\n1. Kibana: Used to provide a UI display for business purposes.\\r\\n2. ElasticSearch: Used for storing Kibana metadata and for query caching among other advanced features.\\r\\n3. ClickHouse: The storage system where the actual log data is stored.\\r\\n4. CKibana: Provides Proxy and other advanced functionalities, enabling users to query ClickHouse data directly on the native Kibana.\\r\\n\\r\\n### Getting Started\\r\\n\\r\\n#### Launching CKibana\\r\\n\\r\\nTo start using CKibana, you\'ll first need to configure it with the necessary Elasticsearch details.\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana03.png)\\r\\n\\r\\nOnce you have your configuration set up, ensure that you have JDK 17 or higher installed on your system for CKibana to run. You can then launch CKibana with the following command:\\r\\n\\r\\n`java -jar ckibana.jar`\\r\\n\\r\\n#### Kibana Configuration\\r\\n\\r\\nTo modify the Kibana configuration, change the Elasticsearch address to the CKibana address\uff1a\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana04.png)\\r\\n\\r\\nAt this point, Kibana is fully functional and can use CKibana as an Elasticsearch Proxy\uff1a\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana05.png)\\r\\n\\r\\n#### Configuring ClickHouse Connection Information and Index Whitelist\\r\\n\\r\\nSet up the ClickHouse connection:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateCk?url=ckUrl&user=default&pass=default&defaultCkDatabase=ops\'`\\r\\n\\r\\n#### Configure the index to switch to ClickHouse\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateWhiteIndexList?list=index1,index2\'`\\r\\n\\r\\nThe corresponding relationship between field types in ElasticSearch and ClickHouse is as follows:\\r\\n\\r\\n| es | ck |\\r\\n|----------|---------|\\r\\n| keyword | String |\\r\\n| text | String |\\r\\n| ip | String(support ipv4 and ipv6) |\\r\\n| integer | Int32 |\\r\\n| long | Int64 |\\r\\n| float | Float32 |\\r\\n| double | Float64 |\\r\\n\\r\\n#### Create index pattern\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana06.png)\\r\\n\\r\\nKey Points to Note:\\r\\n\\r\\n1. First, ensure that the input index pattern matches the ClickHouse table exactly; the index pattern and the ClickHouse table name must be an exact match.\\r\\n2. If the corresponding table cannot be selected, you can troubleshoot based on the SQL in the CKibana logs to see if the corresponding table can be queried.\\r\\n3. Pay attention to the time field; otherwise, the time field will not be selectable. The selection logic is as follows:\\r\\n - Fields of the Date type, such as DateTime64, will be considered as time types.\\r\\n - Field names containing \\"time\\", for example (@timestamp UInt64), will be considered as time types.\\r\\n\\r\\nIn either of these two cases, if any one condition is met, the field will be considered a time field. If you are unable to select a time field, it\'s necessary to check whether the fields in the ClickHouse table comply with the matching logic.\\r\\n\\r\\n#### Here we go\\r\\n\\r\\nAfter configuring the index pattern, you can now make full use of Kibana\'s visual analysis capabilities![Untitled](https://oss.17usoft.com/infra-github/ckibana07.png)\\r\\n\\r\\n### Advanced Features\\r\\n\\r\\n#### Sampling\\r\\n\\r\\nMost of Kibana\'s charts focus on trends. When the result set is too large, it consumes more ClickHouse resources. We provide a sampling feature that ensures the chart trends are close to actual trends while effectively controlling the use of ClickHouse resources, especially when dealing with large datasets.\\r\\n\\r\\nNote:\\r\\n- The corresponding ClickHouse table needs to be created according to the ck sampling table requirements.[clickhouse sample](https://clickhouse.com/docs/en/sql-reference/statements/select/sample)\\r\\n- If the sampling threshold is set too low, it can result in a significant difference between the reconstructed values and the true values. We have set our online sampling threshold to 5 million.\\r\\n\\r\\nEnabling sampling requires two steps:\\r\\n1. Configure the tables to be sampled.\\r\\n2. Update the sampling threshold. Sampling is triggered when the result set exceeds this threshold.\\r\\n\\r\\n\\r\\nSampling logic: `Math.max(0.01, Double.parseDouble(String.format(\\"%.5f\\", sampleParam.getSampleCountMaxThreshold() * 1.00 / sampleParam.getSampleTotalCount())))`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana08.png)\\r\\n\\r\\nExpanding the response from the rate limiter, you can see the sampling value.\\r\\n\\r\\n#### Time Rounding + Caching\\r\\n\\r\\nWhen an issue occurs online, a large number of SRE and business colleagues need to query the nginx logs for troubleshooting, and their query conditions are mostly the same. However, ClickHouse aims to achieve the best query performance by utilizing as many CPUs as possible for computations. This situation leads to ClickHouse\'s CPU usage spiking to full capacity. Moreover, under continuous retries by colleagues, the CPU cannot recover.\\r\\n\\r\\nTherefore, we implemented a feature for time rounding + caching.\\r\\n\\r\\nTime Rounding: For instance, setting rounding to 20s means that the second\'s precision in the query time conditions will be %20, effectively introducing a maximum delay of 20s for data queries.With time rounding in place, a large number of query conditions become identical. At this point, enabling result caching can significantly alleviate the pressure on ClickHouse.\\r\\n\\r\\nSet up time rounding:\\r\\n`curl --location --request POST \'localhost:8080/config/updateRoundAbleMinPeriod?roundAbleMinPeriod=20000\' \u5355\u4f4dms`\\r\\n\\r\\nEnable caching:\\r\\n`curl --location --request POST \'localhost:8080/config/updateUseCache?useCache=true\'`\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana09.png)\\r\\n\\r\\nWhether the cache is hit can be seen in the response structure.\\r\\n\\r\\n#### Query Monitoring + Blacklisting\\r\\n\\r\\nKibana\'s query syntax is relatively flexible, but some queries can consume substantial resources from ClickHouse. Therefore, we have implemented monitoring for all queries and their execution times. This allows us to easily view which queries have been performed and set up blacklisting controls for them. By doing this, we can restrict queries that are not very efficient.\\r\\n\\r\\n\\r\\nEnable monitoring:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateEnableMonitoring?enableMonitoring=true\'`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana10.png)\\r\\n\\r\\nAs shown in the figure above, we can monitor the details, syntax, and execution time of each query.\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana11.png)\\r\\n\\r\\nThis allows us to leverage Kibana\'s powerful built-in chart features for more intuitive analysis.\\r\\n\\r\\n#### Query TimeRange Limits\\r\\n\\r\\nOften, when users want to view the latest trends based on certain conditions, they might directly query data for recent periods, such as the last 7 days. This can lead to significant resource consumption. To manage this, CKibana has implemented a maximum time range for queries, which helps in limiting usage and conserving resources.\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateMaxTimeRange?maxTimeRange=864000000\' \u5355\u4f4dms`\\r\\n\\r\\n#### keyword Query\\r\\n\\r\\nTo better align with ElasticSearch usage conventions, a `field.keyword` query is equivalent to an exact search on the field, whereas without .keyword it implies a fuzzy search.\\r\\n\\r\\nFor example, `host.keyword:\\"www.baidu.com\\"` when translated into SQL becomes:`host=\\"www.baidu.com\\"`.\\r\\n\\r\\n#### Discover Performance Optimization\\r\\n\\r\\nClickHouse is highly suitable for analytical processing (AP) scenarios, particularly when large time spans are involved in queries. Traditional SQL commands like `select x from table where x order by time desc limit 10` can lead to very low query performance and consume a significant amount of ClickHouse resources.\\r\\n\\r\\nTo address scenarios that involve trend graphs plus details, we have optimized performance to fully leverage ClickHouse\'s AP capabilities. This optimization involves splitting the execution into two steps:\\r\\n1. Leveraging ClickHouse\'s aggregation capabilities to query the number of logs that meet the criteria per minute.\\r\\n2. Based on the number of logs per minute, automatically trimming the log search time span. For instance, if the number of logs within a minute fulfills the requirement, then the query detail time span is automatically reduced to one minute.\\r\\n\\r\\nThis feature of automatically trimming the query time leads to a significant improvement in the query performance of the Discover version and greatly optimizes CPU usage in ClickHouse.\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana15.png)\\r\\n\\r\\nAs illustrated above, a Discover query is divided into three SQL statements:\\r\\n1. Determine whether sampling is needed\\r\\n2. Count the number of logs per minute\\r\\n3. Automatically trim the query time range\\r\\n\\r\\n## 4 Usage scenarios: Nginx logs\\r\\n\\r\\n#### Clickhouse Table\\r\\n\\r\\n``` CREATE TABLE bjops.ops_bjtlblog_local\\r\\n(\\r\\n`@timestamp` UInt64,\\r\\n`X-Request-Id` String,\\r\\n`addr` String,\\r\\n`ap_area` String,\\r\\n`byte` Int64,\\r\\n`bytes_recv` Int64,\\r\\n`Bbtes_sent` Int64,\\r\\n`content-type` String,\\r\\n`content_length` Int64,\\r\\n`crp` String,\\r\\n`csi` String,\\r\\n`cspanid` String,\\r\\n`difftime` Int32,\\r\\n`error_body` String,\\r\\n`error_client` String,\\r\\n`error_host` String,\\r\\n`error_request` String,\\r\\n`error_server` String,\\r\\n`error_upstream` String,\\r\\n`forwarded` String,\\r\\n`host` String,\\r\\n`hostname` String,\\r\\n`idc` LowCardinality(String),\\r\\n`index_name` LowCardinality(String),\\r\\n`ip` String,\\r\\n`logant_idc` LowCardinality(String),\\r\\n`logant_type` LowCardinality(String),\\r\\n`origin_ip` String,\\r\\n`referer` String,\\r\\n`remote_port` String,\\r\\n`request_method` LowCardinality(String),\\r\\n`request_time` Int64,\\r\\n`request_uri` String,\\r\\n`request_url` String,\\r\\n`scheme` String,\\r\\n`server_addr` String,\\r\\n`server_name` String,\\r\\n`server_port` String,\\r\\n`server_protocol` String,\\r\\n`source` String,\\r\\n`sspanid` String,\\r\\n`st` String,\\r\\n`status` Int32,\\r\\n`timeuse` Float64,\\r\\n`traceid` String,\\r\\n`type` String,\\r\\n`ua` String,\\r\\n`up_addr` String,\\r\\n`up_status` Int32,\\r\\n`upstream_name` String,\\r\\n`upstream_response_time` Int32,\\r\\n`worker_pid` String,\\r\\n`ck_assembly_extension` String,\\r\\n`bytes_sent` Int64,\\r\\nINDEX timestamp_index `@timestamp` TYPE minmax GRANULARITY 8192\\r\\n)\\r\\nENGINE = MergeTree\\r\\nPARTITION BY (toYYYYMMDD(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')), toHour(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')))\\r\\nORDER BY (host, request_uri, intHash64(`@timestamp`))\\r\\nSAMPLE BY intHash64(`@timestamp`)\\r\\nSETTINGS in_memory_parts_enable_wal = 0, index_granularity = 8192\\r\\n```\\r\\n\\r\\nAlways place `host` at the first position in the ORDER BY clause, as most Nginx log queries require sorting based on the `host`.\\r\\n\\r\\n#### CKibana Configuration\\r\\n```\\r\\n{\\r\\n\\t\\"Proxy\\": {\\r\\n\\t\\t\\"ck\\": {\\r\\n\\t\\t\\t\\"url\\": \\"ip:6321\\",\\r\\n\\t\\t\\t\\"user\\": \\"user\\",\\r\\n\\t\\t\\t\\"pass\\": \\"pass\\",\\r\\n\\t\\t\\t\\"defaultCkDatabase\\": \\"db\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"es\\": {\\r\\n\\t\\t\\t\\"host\\": \\"ip:31940\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"roundAbleMinPeriod\\": 120000,\\r\\n\\t\\t\\"round\\": 20000,\\r\\n\\t\\t\\"maxTimeRange\\": 86400000,\\r\\n\\t\\t\\"blackIndexList\\": null,\\r\\n\\t\\t\\"whiteIndexList\\": [\\"ops_bjtlblog_all\\", \\"other_index_all\\"],\\r\\n\\t\\t\\"enableMonitoring\\": true\\r\\n\\t},\\r\\n\\t\\"query\\": {\\r\\n\\t\\t\\"sampleIndexPatterns\\": [\\"ops_bjtlblog_all\\"],\\r\\n\\t\\t\\"sampleCountMaxThreshold\\": 5000000,\\r\\n\\t\\t\\"useCache\\": true,\\r\\n\\t\\t\\"maxResultRow\\": 30000\\r\\n\\t},\\r\\n\\t\\"threadPool\\": {\\r\\n\\t\\t\\"msearchProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t},\\r\\n\\t\\t\\"commonProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t}\\r\\n\\t},\\r\\n\\t\\"defaultShard\\": 2\\r\\n}\\r\\n```\\r\\n\\r\\n#### Use Cases\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana12.png)\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana13.png)\\r\\n\\r\\n## 4 Benefits\\r\\n\\r\\nAs of now, by leveraging CKibana\'s core capabilities, we have successfully completed the full migration of all Nginx access logs and business-customized logs from Elasticsearch to Clickhouse, reducing our storage costs to below 30% of the original. Moreover, thanks to ClickHouse\'s distributed table capabilities, log queries remain unaffected even in the event of a single center failure, offering significant improvements over Elasticsearch in both cost and stability. We have also continued to use the flexible and powerful native Kibana as our visualization tool, allowing users to conveniently perform log queries and analyses using their familiar Kibana dashboard.\\r\\n\\r\\n## 5 Finally\\r\\n\\r\\nThroughout the continuous evolution of our logging system, we could not have progressed without the support of many outstanding open-source projects. We are now officially open-sourcing CKibana (ClickHouse Proxy for Kibana & Clickhouse visualization tool), hoping to help more people. We also look forward to collaborating with the community to continuously enhance its functions and features, fully unleashing the power of the Kibana visualization + ClickHouse storage combination in log scenarios, making it smoother for everyone to use. \\r\\n\\r\\nGithub Repo: https://github.com/TongchengOpenSource/ckibana/\\r\\n\\r\\nWe welcome you to go to our GitHub and give us a star, as well as provide feedback and suggestions. Of course, issues and PRs are always welcomed.\\r\\n\\r\\nThanks!"},{"id":"/1","metadata":{"permalink":"/ckibana-docs/en/blog/1","source":"@site/blog/en/1.md","title":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","description":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","date":"2024-08-26T06:52:57.848Z","formattedDate":"August 26, 2024","tags":[{"label":"CKibana","permalink":"/ckibana-docs/en/blog/tags/c-kibana"}],"readingTime":13.985,"truncated":true,"authors":[{"name":"\u57fa\u7840\u67b6\u6784\u7814\u53d1\u90e8\u2014\u5468\u795d\u7fa4"}],"prevItem":{"title":"How to Build a Logging Platform using Native Kibana and ClickHouse","permalink":"/ckibana-docs/en/blog/build-logging-platform-with-native-kibana-and-clickhouse"}},"content":"> \u672c\u6587\u5c06\u4ecb\u7ecd\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0\\r\\n\\r\\n\x3c!--truncate--\x3e\\r\\n\u4e1a\u52a1\u5feb\u901f\u53d1\u5c55\u8fc7\u7a0b\u4e2d\u5bf9\u4e8e\u5404\u79cd\u65e5\u5fd7\u6570\u636e\u7684\u67e5\u8be2\u5206\u6790\u9700\u6c42\u4f1a\u5bfc\u81f4\u65e5\u5fd7\u5b58\u50a8\u89c4\u6a21\u6025\u5267\u589e\u957f\uff0c\u4f20\u7edfELK\u548c\u4ee5ElasticSearch\u4e3a\u6838\u5fc3\u5b58\u50a8\u7684\u65e5\u5fd7\u7cfb\u7edf\u968f\u4e4b\u4f1a\u9762\u4e34\u6210\u672c\u3001\u7a33\u5b9a\u6027\u4ee5\u53ca\u6027\u80fd\u7b49\u8bf8\u591a\u6311\u6218\uff0c\u4e1a\u754c\u4e5f\u770b\u5230\u8d8a\u6765\u8d8a\u591a\u7684\u56fd\u5185\u5916\u516c\u53f8\u5c06\u5b58\u50a8\u5207\u6362\u5230ClickHouse\uff0c\u6bd4\u5982\u643a\u7a0b\u3001\u5feb\u624b\u3001B\u7ad9\u3001Cloudflare\u548cUber\u7b49\uff0c\u4ece\u4ed6\u4eec\u7684\u5206\u4eab\u4e2d\u770b\u5230\u6536\u76ca\u90fd\u5f88\u660e\u663e\uff0c\u6211\u4eec\u7684\u65e5\u5fd7\u7cfb\u7edf\u4e5f\u5f00\u59cb\u5c1d\u8bd5\u4eceElasticSearch\u8fc1\u79fb\u5230ClickHouse\uff0c\u5e76\u5728\u8fc7\u7a0b\u4e2d\u63a2\u7d22\u548c\u79ef\u7d2f\u4e86\u4e00\u5957\u6700\u5927\u7a0b\u5ea6\u7167\u987e\u539f\u6709\u7528\u6237\u4f7f\u7528\u4e60\u60ef\u5b9e\u73b0\u5e73\u6ed1\u5207\u6362\u7684\u6574\u4f53\u65b9\u6848\u3002\\r\\n\\r\\n## 1 \u80cc\u666f\u4ecb\u7ecd\\r\\n\u516c\u53f8\u5185\u6d41\u91cf\u6700\u5927\u7684\u901a\u7528\u65e5\u5fd7\u7cfb\u7edf\u5e95\u5c42\u5b58\u50a8\u81ea\u4ece2020\u5e74\u7531ElasticSearch\u9010\u6b65\u5207\u6362\u5230Clickhouse\u4e4b\u540e\u5728\u6210\u672c\u4ee5\u53ca\u7a33\u5b9a\u6027\u7b49\u65b9\u9762\u5747\u6709\u663e\u8457\u63d0\u5347\u3002\u5728\u4eca\u5e74\u56fd\u5e86\u671f\u95f4\u7a33\u5b9a\u652f\u6491\u4e86\u8d85\u8fc75000\u4ebf\u6761/\u5929\u7684\u65e5\u5fd7\u91cf\uff0c\u800c\u6210\u672c\u4e5f\u4ec5\u4ec5\u662f\u539f\u5148ElasticSearch\u65b9\u6848\u768430%\u3002\\r\\n\\r\\n\u9664\u4e86\u8be5\u65e5\u5fd7\u7cfb\u7edf\u5916\uff0c\u516c\u53f8\u5185\u8fd8\u5b58\u5728\u5f88\u591a\u65e5\u5fd7\u7cfb\u7edf\uff0c\u5927\u591a\u57fa\u4e8e\u5f00\u6e90\u4e3b\u6d41ELK\u65b9\u5f0f\u3002\u5728\u89c4\u6a21\u8d8a\u6765\u8d8a\u5927\u540e\uff0c\u6210\u672c\u8ddf\u7a33\u5b9a\u6027\u65b9\u9762\u7684\u95ee\u9898\u4e5f\u5c31\u9010\u6e10\u66b4\u9732\u4e86\uff0c\u6240\u4ee5\u8ba1\u5212\u5c06\u6240\u6709\u65e5\u5fd7\u7cfb\u7edf\u7684\u5e95\u5c42\u5b58\u50a8\u5168\u90e8\u5207\u6362\u6210ClickHouse\u3002\\r\\n\\r\\n\u5173\u4e8e\u65e5\u5fd7\u573a\u666f\u4e0bClickhouse\u7684\u9009\u578b\u4e0e\u7528\u6cd5\u4e1a\u754c\u5df2\u7ecf\u6709\u5f88\u591a\u7684\u516c\u5f00\u5206\u4eab\uff0c\u4e0d\u4f5c\u4e3a\u672c\u6587\u91cd\u70b9\uff0c\u6709\u5174\u8da3\u53ef\u81ea\u884c\u641c\u7d22\u4e0b\u76f8\u5173\u8d44\u6599\u3002\\r\\n\\r\\n\u5728\u5b58\u50a8\u5207\u6362\u5b8c\u6210\u4e4b\u540e\u6700\u91cd\u8981\u7684\u662f\u89e3\u51b3\u67e5\u8be2UI\u7528\u6237\u4f53\u9a8c\u95ee\u9898\uff0c\u4e5f\u770b\u5230\u6709\u516c\u53f8\u5728\u628a\u65e5\u5fd7\u5b58\u50a8\u5207\u5230Clickhouse\u540e\u9009\u62e9\u81ea\u7814\u4e00\u5957\u67e5\u8be2UI\uff0c\u4f46\u60f3\u8981\u7167\u987e\u7528\u6237\u539f\u5148\u6240\u6709\u4f7f\u7528\u4e60\u60ef\u4ece\u539f\u751fKibana\u65e0\u7f1d\u5207\u6362\u5230\u65b0\u5e73\u53f0\u662f\u4e0d\u592a\u5b9e\u73b0\u7684\uff0c\u9700\u8981\u6240\u6709\u4e1a\u52a1\u540c\u4e8b\u719f\u6089\u4e00\u5957\u65b0\u7684\u8bed\u6cd5\u8ddfUI\u4ea4\u4e92\uff0c\u65e0\u5f62\u4e2d\u7ed9\u4ed6\u4eec\u52a0\u4e86\u5f88\u5927\u7684\u6210\u672c\u3002\\r\\n\\r\\n\u6240\u4ee5\uff0c\u600e\u4e48\u80fd\u591f\u8ba9\u4e1a\u52a1\u7528\u6237\u4ee5\u96f6\u5b66\u4e60\u6210\u672c\u4f7f\u7528\u65b0\u5e73\u53f0\uff0c\u8fd9\u662f\u4e00\u4e2a\u6700\u68d8\u624b\u7684\u95ee\u9898\u3002\\r\\n\\r\\n## 2 \u65b9\u6848\u4ecb\u7ecd\\r\\n\u6211\u4eec\u7684\u601d\u8def\u5176\u5b9e\u4e5f\u6bd4\u8f83\u5bfb\u5e38\uff0c\u6211\u4eec\u9009\u62e9\u5728\u539f\u751fKibana\u8ddfElasticSearch\u4e4b\u95f4\u65b0\u589e\u4e00\u5c42Proxy\uff0c\u8be5Proxy\u6765\u505aElasticSearch\u8ddfClickHouse\u7684\u8bed\u6cd5\u8f6c\u6362\uff0c\u5982\u56fe:\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana02.png)\\r\\n\\r\\n\u6211\u4eec\u81ea\u7814\u4e86\u4e00\u5957Proxy\uff08\u53d6\u540dCKibana\uff09\uff0c\u8be5Proxy\u8d1f\u8d23\u5c06\u56fe\u8868\u8bf7\u6c42\u8f6c\u6362\u6210ClickHouse\u8bed\u6cd5\u67e5\u8be2\u5230ClickHouse\u7ed3\u679c\u540e\u6a21\u62df\u6210ElasticSearch\u54cd\u5e94\u8fd4\u56de\u7ed9Kibana\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u76f4\u63a5\u5728\u539f\u751fKibana\u4e0a\u9762\u5c55\u793aClickHouse\u4e2d\u7684\u6570\u636e\uff0c\u9664\u4e86\u8bed\u6cd5\u8f6c\u6362\uff0c\u6211\u4eec\u8fd8\u89e3\u51b3\u4e86\u5f88\u591a\u5b9e\u9645\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684\u95ee\u9898\u3002\\r\\n\\r\\n`CKibana: \u73b0\u5df2\u6b63\u5f0f\u5f00\u6e90\uff0chttps://github.com/TongchengOpenSource/ckibana`\\r\\n\\r\\n\u4ecb\u4e8eClickHouse\u7684\u67e5\u8be2\u5e76\u53d1\u80fd\u529b\u9650\u5236\uff0c\u6211\u4eec\u4fdd\u7559\u4e86ElasticSearch\uff0c\u8be5ElasticSearch\u53ef\u4ee5\u7528\u6765\u505a\u7ed3\u679c\u7684\u7f13\u5b58\u7b49\u9ad8\u7ea7\u7279\u6027\u4ee5\u53ca\u4fdd\u5b58Kibana\u76f8\u5173\u7684\u5143\u6570\u636e\uff0c\u672c\u8eab\u975e\u5e38\u8f7b\u91cf\u3002\\r\\n\\r\\n## 3 CKibana\u4f7f\u7528\\r\\n### \u51c6\u5907\u73af\u5883\\r\\n1. Kibana: \u7528\u6765\u63d0\u4f9b\u7ed9\u4e1a\u52a1\u505aUI\u5c55\u793a\\r\\n2. ElasticSearch: \u7528\u6765\u505akibana\u5143\u6570\u636e\u5b58\u50a8+\u67e5\u8be2\u7f13\u5b58\u7b49\u9ad8\u7ea7\u7279\u6027\\r\\n3. ClickHouse: \u771f\u5b9e\u5b58\u65e5\u5fd7\u6570\u636e\u7684\u5b58\u50a8\\r\\n4. CKibana: \u63d0\u4f9bProxy\u7b49\u9ad8\u7ea7\u529f\u80fd\uff0c\u5b9e\u73b0\u8ba9\u7528\u6237\u76f4\u63a5\u5728\u539f\u751fKibana\u4e0a\u67e5\u8be2ClickHouse\u6570\u636e\\r\\n\\r\\n### \u5f00\u59cb\u4f7f\u7528\\r\\n#### \u542f\u52a8CKibana\\r\\n\u914d\u7f6eElasticSearch\u76f8\u5173\u4fe1\u606f\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana03.png)\\r\\n\\r\\n\u542f\u52a8\uff0c\u9700\u8981JDK17+\\r\\n\\r\\n`java -jar ckibana.jar`\\r\\n\\r\\n#### \u4fee\u6539Kibana\\r\\n\u4fee\u6539Kibana\u914d\u7f6e\uff0c\u5c06ElasticSearch\u5730\u5740\u6539\u4e3aCKibana\u5730\u5740\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana04.png)\\r\\n\\r\\n\u6b64\u65f6\uff0cKibana\u529f\u80fd\u5b8c\u5168\u53ef\u7528\uff0c\u53ef\u4ee5\u5c06CKibana\u5f53\u6210\u4e00\u4e2aElasticSearch Proxy\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana05.png)\\r\\n\\r\\n#### \u914d\u7f6eClickHouse\u8fde\u63a5\u4fe1\u606f\u4e0e\u7d22\u5f15\u767d\u540d\u5355\\r\\n\\r\\n\u8bbe\u7f6eClickHouse\u8fde\u63a5\u4fe1\u606f:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateCk?url=ckUrl&user=default&pass=default&defaultCkDatabase=ops\'`\\r\\n\\r\\n#### \u914d\u7f6e\u9700\u8981\u5207\u6362\u5230ClickHouse\u7684index\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateWhiteIndexList?list=index1,index2\'`\\r\\n\\r\\nClickHouse\u5b57\u6bb5\u8ddfElasticSearch\u5b57\u6bb5\u7684\u5173\u7cfb\\r\\n\\r\\n| es\u7c7b\u578b | ck\u7c7b\u578b |\\r\\n|----------|---------|\\r\\n| keyword | String |\\r\\n| text | String |\\r\\n| ip | String(\u4ee3\u7406\u81ea\u52a8\u8bc6\u522bipv4\u548cipv6) |\\r\\n| integer | Int32 |\\r\\n| long | Int64 |\\r\\n| float | Float32 |\\r\\n| double | Float64 |\\r\\n\\r\\n#### \u521b\u5efaindex pattern\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana06.png)\\r\\n\\r\\n\u6ce8\u610f\u70b9:\\r\\n1. \u9996\u5148\u786e\u5b9a\u8f93\u5165\u7684index pattern\u8ddfClickHouse\u8868\u662f\u5426\u4e00\u81f4\uff0cindex pattern\u8ddf\u8ddfClickHouse\u8868\u540d\u662f\u7cbe\u786e\u5339\u914d\\r\\n2. \u5982\u679c\u4e0d\u80fd\u6652\u9009\u5230\u5bf9\u5e94\u7684\u8868\u683c\uff0c\u53ef\u4ee5\u57fa\u4e8eCKibana\u65e5\u5fd7\u4e2d\u7684sql\u6392\u67e5\uff0c\u662f\u5426\u53ef\u67e5\u8be2\u5230\u5bf9\u5e94\u7684\u8868\\r\\n3. \u6ce8\u610f\u65f6\u95f4\u5b57\u6bb5\uff0c\u5426\u5219\u4f1a\u7b5b\u9009\u4e0d\u4e86\u65f6\u95f4\u5b57\u6bb5\uff0c\u7b5b\u9009\u903b\u8f91\u5982\u4e0b:\\r\\n- \u5b57\u6bb5\u4e3aDate\u7c7b\u578b\uff0c\u6bd4\u5982DateTime64\u7c7b\u578b\uff0c\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u7c7b\u578b\\r\\n- \u5b57\u6bb5\u540d\u4e2d\u5305\u542btime\uff0c\u6bd4\u5982\uff08@timestamp UInt64\uff09\uff0c\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u7c7b\u578b\\r\\n\\r\\n\u8fd9\u4e24\u79cd\u60c5\u51b5\u4e0b\u6ee1\u8db3\u4efb\u610f\u4e00\u4e2a\uff0c\u5b57\u6bb5\u90fd\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u5b57\u6bb5\uff0c\u5982\u679c\u9009\u62e9\u4e0d\u4e86\u65f6\u95f4\u5b57\u6bb5\uff0c\u9700\u8981\u68c0\u67e5\u4e0bClickHouse\u8868\u4e2d\u5b57\u6bb5\u662f\u5426\u7b26\u5408\u5339\u914d\u903b\u8f91\u3002\\r\\n#### \u5f00\u59cb\u4f7f\u7528\\r\\n\u914d\u7f6e\u5b8c\u6210index pattern\u540e\uff0c\u5c31\u53ef\u4ee5\u6b63\u5e38\u7684\u4f7f\u7528Kibana\u7684\u56fe\u8868\u529f\u80fd\u4e86\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana07.png)\\r\\n\\r\\n### \u9ad8\u7ea7\u529f\u80fd\\r\\n#### \u91c7\u6837\\r\\nKibana\u7684\u56fe\u8868\u5927\u90e8\u5206\u90fd\u662f\u5173\u6ce8\u8d8b\u52bf\uff0c\u5f53\u547d\u4e2d\u7ed3\u679c\u96c6\u592a\u5927\u65f6\u5019\uff0c\u6d88\u8017\u7684ClickHouse\u7684\u8d44\u6e90\u4e5f\u8f83\u591a\u3002\u6211\u4eec\u63d0\u4f9b\u4e86\u91c7\u6837\u529f\u80fd\uff0c\u5728\u6570\u636e\u96c6\u8f83\u5927\u7684\u65f6\u5019\uff0c\u80fd\u591f\u4fdd\u969c\u56fe\u8868\u8d8b\u52bf\u8ddf\u5b9e\u9645\u7684\u5dee\u4e0d\u591a\uff0c\u800c\u4e14\u53ef\u4ee5\u5f88\u597d\u7684\u63a7\u5236ClickHouse\u7684\u8d44\u6e90\u4f7f\u7528\u3002\\r\\n\\r\\n`- \u6ce8: \u5bf9\u5e94\u7684ClickHouse\u7684\u8868\u9700\u8981\u6309\u7167ck\u7684\u91c7\u6837\u8868\u521b\u5efa [clickhouse sample](https://clickhouse.com/docs/en/sql-reference/statements/select/sample)\\r\\n- \u5982\u679c\u91c7\u6837\u9608\u503c\u8bbe\u7f6e\u7684\u8fc7\u5c0f\uff0c\u4f1a\u5bfc\u81f4\u8fd8\u539f\u51fa\u6765\u7684\u503c\u8ddf\u771f\u5b9e\u503c\u5dee\u5f02\u8f83\u5927\uff0c\u6211\u4eec\u7ebf\u4e0a\u8bbe\u7f6e\u7684\u91c7\u6837\u503c\u4e3a500w`\\r\\n\\r\\n\u5f00\u542f\u91c7\u6837\u9700\u8981\u4e24\u6b65:\\r\\n1. \u914d\u7f6e\u9700\u8981\u91c7\u6837\u7684\u8868\\r\\n2. \u66f4\u65b0\u91c7\u6837\u9608\u503c\uff0c\u5f53\u547d\u4e2d\u7ed3\u679c\u96c6\u8d85\u8fc7\u9608\u503c\u65f6\uff0c\u4f1a\u89e6\u53d1\u91c7\u6837\\r\\n\\r\\n\u91c7\u6837\u903b\u8f91 `Math.max(0.01, Double.parseDouble(String.format(\\"%.5f\\", sampleParam.getSampleCountMaxThreshold() * 1.00 / sampleParam.getSampleTotalCount())))`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana08.png)\\r\\n\\r\\n\u5c55\u5f00\u6d41\u91cf\u5668\u7684\u54cd\u5e94\u7ed3\u679c\uff0c\u53ef\u4ee5\u770b\u5230\u91c7\u6837\u503c\\r\\n\\r\\n#### \u65f6\u95f4round+\u7f13\u5b58\\r\\n\u5f53\u7ebf\u4e0a\u51fa\u73b0\u4e00\u4e2a\u6545\u969c\u65f6\u5019\uff0c\u6709\u5927\u91cf\u7684sre\u540c\u5b66\u8ddf\u4e1a\u52a1\u540c\u5b66\u90fd\u9700\u8981\u901a\u8fc7nginx\u65e5\u5fd7\u6765\u67e5\u8be2\u95ee\u9898\uff0c\u800c\u4e14\u67e5\u8be2\u7684\u6761\u4ef6\u57fa\u672c\u90fd\u76f8\u540c\uff0c\u4f46\u662fClickHouse\u4e3a\u4e86\u4f7f\u5f97\u67e5\u8be2\u6027\u80fd\u6700\u597d\uff0c\u800c\u5c3d\u91cf\u7684\u4f7f\u7528\u66f4\u591a\u7684cpu\u6765\u53c2\u52a0\u8ba1\u7b97\uff0c\u8fd9\u6837\u5bfc\u81f4\u8fd9\u4e9b\u573a\u666f\u4e0bClickHouse\u7684cpu\u4f1a\u76f4\u63a5\u8dd1\u6ee1\u3002\u4e14\u5728\u540c\u5b66\u4eec\u7684\u4e0d\u65adretry\u4e0b\uff0ccpu\u4e0d\u80fd\u6062\u590d\u3002\\r\\n\\r\\n\u6240\u4ee5\u6211\u4eec\u505a\u4e86\u4e00\u4e2a\u65f6\u95f4round+\u7f13\u5b58\u529f\u80fd\u3002\\r\\n\\r\\n\u65f6\u95f4round: \u6bd4\u5982\u8bbe\u7f6eround\u4e3a20s\uff0c\u5219\u67e5\u8be2\u65f6\u95f4\u6761\u4ef6\u4e2d\u7684s\u7684\u7cbe\u5ea6\u4f1a`%20`\uff0c\u76f8\u5f53\u4e8e\u6700\u591a\u5ef6\u8fdf\u4e8620s\u6765\u67e5\u8be2\u6570\u636e\u3002\\r\\n\\r\\n\u6709\u4e86\u65f6\u95f4round\u540e\uff0c\u5219\u5927\u91cf\u7684\u67e5\u8be2\u6761\u4ef6\u5c31\u4e00\u81f4\u4e86\uff0c\u8fd9\u4e2a\u65f6\u5019\u53ea\u9700\u8981\u5f00\u542f\u7ed3\u679c\u7f13\u5b58\uff0c\u5219\u5c31\u53ef\u4ee5\u5f88\u597d\u7684\u7f13\u89e3ClickHouse\u7684\u538b\u529b\u3002\\r\\n\\r\\n\u8bbe\u7f6e\u65f6\u95f4round:\\r\\n`curl --location --request POST \'localhost:8080/config/updateRoundAbleMinPeriod?roundAbleMinPeriod=20000\' \u5355\u4f4dms`\\r\\n\\r\\n\u8bbe\u7f6e\u6253\u5f00\u7f13\u5b58:\\r\\n`curl --location --request POST \'localhost:8080/config/updateUseCache?useCache=true\'`\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana09.png)\\r\\n\\r\\n\u662f\u5426\u547d\u4e2d\u7f13\u5b58\uff0c\u5728\u54cd\u5e94\u7ed3\u6784\u91cc\u9762\u53ef\u4ee5\u770b\u5230\\r\\n\\r\\n#### \u67e5\u8be2\u76d1\u63a7 + \u9ed1\u540d\u5355\\r\\nKibana\u7684\u67e5\u8be2\u8bed\u6cd5\u76f8\u5bf9\u6bd4\u8f83\u968f\u610f\uff0c\u4e00\u4e9b\u67e5\u8be2\u5bf9ClickHouse\u7684\u8d44\u6e90\u6d88\u8017\u4f1a\u6bd4\u8f83\u5927\uff0c\u6240\u4ee5\u6211\u4eec\u5c06\u6240\u6709\u7684\u67e5\u8be2\u4ee5\u53ca\u8017\u65f6\u90fd\u505a\u4e86\u76d1\u63a7\uff0c\u8fd9\u6837\u53ef\u4ee5\u6bd4\u8f83\u65b9\u4fbf\u7684\u67e5\u770b\u90fd\u505a\u4e86\u54ea\u4e9b\u67e5\u8be2\uff0c\u8bbe\u7f6e\u53ef\u4ee5\u5bf9\u67e5\u8be2\u505a\u9ed1\u540d\u5355\u7684\u63a7\u5236\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u9650\u5236\u4e0d\u592a\u53cb\u597d\u7684\u67e5\u8be2\\r\\n\\r\\n\u5f00\u542f\u76d1\u63a7:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateEnableMonitoring?enableMonitoring=true\'`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana10.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe\uff0c\u6211\u4eec\u53ef\u4ee5\u76d1\u63a7\u6bcf\u4e2a\u67e5\u8be2\u7684\u8be6\u60c5\uff0c\u8bed\u6cd5\u4ee5\u53ca\u8017\u65f6\u3002\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana11.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe\uff0c\u53ef\u4ee5\u57fa\u4e8ekibana\u56fe\u8868\u529f\u80fd\uff0c\u505a\u66f4\u76f4\u89c2\u7684\u5206\u6790\u3002\\r\\n\\r\\n#### \u67e5\u8be2\u65f6\u95f4\u9650\u5236\\r\\n\u5f88\u591a\u65f6\u5019\uff0c\u6709\u4eba\u60f3\u8981\u67e5\u770b\u67d0\u4e2a\u6761\u4ef6\u6700\u8fd1\u7684\u8d8b\u52bf\uff0c\u76f4\u63a5\u67e5\u8be2\u6700\u8fd17\u5929\u7b49\u7b49\uff0c\u8fd9\u6837\u4f1a\u5bfc\u81f4\u8d44\u6e90\u6d88\u8017\u6bd4\u8f83\u5927\uff0c\u6240\u4ee5CKibana\u652f\u6301\u4e86\u6700\u957f\u65f6\u95f4\u67e5\u8be2\u8303\u56f4\uff0c\u6765\u9650\u5236\u4f7f\u7528\u3002\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateMaxTimeRange?maxTimeRange=864000000\' \u5355\u4f4dms`\\r\\n\\r\\n#### keyword\u67e5\u8be2\\r\\n\u4e3a\u4e86\u66f4\u597d\u7684\u5339\u914dElasticSearch\u7684\u4f7f\u7528\u4e60\u60ef\u3002 `field.keyword` \u67e5\u8be2\u76f8\u5f53\u4e8e\u5bf9field\u7684\u7cbe\u786e\u67e5\u8be2\uff0c\u5426\u5219\u4e3a\u6a21\u7cca\u641c\u7d22\\r\\n\\r\\n\u6bd4\u5982 `host.keyword:\\"www.baidu.com\\"` \u6362\u6210sql\u4e3a: `host=\\"www.baidu.com\\"`\\r\\n\\r\\n#### Discover\u6027\u80fd\u4f18\u5316\\r\\nClickHouse\u7684\u5f3a\u9879\u5728AP\u573a\u666f,\u5f53\u67e5\u8be2\u65f6\u95f4\u8de8\u5ea6\u6bd4\u8f83\u5927\u65f6,\u4f20\u7edf\u7684SQL:`select x from table where x order by time desc limit 10` \u8fd9\u79cd\u65b9\u5f0f\u4f1a\u5bfc\u81f4\u67e5\u8be2\u6027\u80fd\u975e\u5e38\u4f4e,\u800c\u4e14\u6d88\u8017\u5927\u91cf\u7684ClickHouse\u8d44\u6e90\u3002\\r\\n\u9488\u5bf9\u8fd9\u79cd\u5e26\u8d8b\u52bf\u56fe+\u660e\u7ec6\u7684\u573a\u666f\u6211\u4eec\u505a\u4e86\u6027\u80fd\u4f18\u5316,\u5145\u5206\u53d1\u6325ClickHouse\u7684AP\u80fd\u529b\u3002\u4f1a\u5c06\u6267\u884c\u62c6\u5206\u4e3a\u4e24\u6b65:\\r\\n1. \u57fa\u4e8eCk \u805a\u5408\u80fd\u529b,\u67e5\u8be2\u51fa\u6bcf\u5206\u949f\u6ee1\u8db3\u6761\u4ef6\u7684\u65e5\u5fd7\u6570\u91cf\\r\\n2. \u57fa\u4e8e\u6bcf\u5206\u949f\u7684\u65e5\u5fd7\u6570\u91cf\u81ea\u52a8\u88c1\u526a\u65e5\u5fd7\u641c\u7d22\u7684\u65f6\u95f4\u8de8\u5ea6,\u6bd4\u5982\u4e00\u5206\u949f\u5185\u7684\u65e5\u5fd7\u6761\u6570\u5c31\u6ee1\u8db3\u4e86\u8981\u6c42,\u5219\u67e5\u8be2\u660e\u7ec6\u65f6\u81ea\u52a8\u7f29\u51cf\u52301\u5206\u949f\u7684\u8de8\u5ea6\u3002\\r\\n\\r\\n\u57fa\u4e8e\u67e5\u8be2\u65f6\u95f4\u7684\u81ea\u52a8\u88c1\u526a\u529f\u80fd,\u4f1a\u4f7f\u5f97Discover\u7248\u672c\u67e5\u8be2\u6027\u80fd\u6709\u8d28\u7684\u63d0\u5347\u4e14\u5bf9ClickHouse\u7684cpu\u5360\u7528\u6709\u5f88\u5927\u7684\u4f18\u5316\u3002\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana15.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe,\u4e00\u4e2aDiscover\u67e5\u8be2\u62c6\u6210\u4e863\u4e2asql:\\r\\n1. \u8ba1\u7b97\u662f\u5426\u9700\u8981\u91c7\u6837\\r\\n2. \u7edf\u8ba1\u6bcf\u5206\u949f\u7684\u65e5\u5fd7\u6570\\r\\n3. \u81ea\u52a8\u88c1\u526a\u67e5\u8be2\u65f6\u95f4\u8303\u56f4\\r\\n\\r\\n## 4 Nginx\u65e5\u5fd7\u76f8\u5173\u4f7f\u7528\u6848\u4f8b\\r\\n\\r\\n#### Clickhouse\u8868\u7ed3\u6784\\r\\n\\r\\n``` CREATE TABLE bjops.ops_bjtlblog_local\\r\\n(\\r\\n`@timestamp` UInt64,\\r\\n`X-Request-Id` String,\\r\\n`addr` String,\\r\\n`ap_area` String,\\r\\n`byte` Int64,\\r\\n`bytes_recv` Int64,\\r\\n`Bbtes_sent` Int64,\\r\\n`content-type` String,\\r\\n`content_length` Int64,\\r\\n`crp` String,\\r\\n`csi` String,\\r\\n`cspanid` String,\\r\\n`difftime` Int32,\\r\\n`error_body` String,\\r\\n`error_client` String,\\r\\n`error_host` String,\\r\\n`error_request` String,\\r\\n`error_server` String,\\r\\n`error_upstream` String,\\r\\n`forwarded` String,\\r\\n`host` String,\\r\\n`hostname` String,\\r\\n`idc` LowCardinality(String),\\r\\n`index_name` LowCardinality(String),\\r\\n`ip` String,\\r\\n`logant_idc` LowCardinality(String),\\r\\n`logant_type` LowCardinality(String),\\r\\n`origin_ip` String,\\r\\n`referer` String,\\r\\n`remote_port` String,\\r\\n`request_method` LowCardinality(String),\\r\\n`request_time` Int64,\\r\\n`request_uri` String,\\r\\n`request_url` String,\\r\\n`scheme` String,\\r\\n`server_addr` String,\\r\\n`server_name` String,\\r\\n`server_port` String,\\r\\n`server_protocol` String,\\r\\n`source` String,\\r\\n`sspanid` String,\\r\\n`st` String,\\r\\n`status` Int32,\\r\\n`timeuse` Float64,\\r\\n`traceid` String,\\r\\n`type` String,\\r\\n`ua` String,\\r\\n`up_addr` String,\\r\\n`up_status` Int32,\\r\\n`upstream_name` String,\\r\\n`upstream_response_time` Int32,\\r\\n`worker_pid` String,\\r\\n`ck_assembly_extension` String,\\r\\n`bytes_sent` Int64,\\r\\nINDEX timestamp_index `@timestamp` TYPE minmax GRANULARITY 8192\\r\\n)\\r\\nENGINE = MergeTree\\r\\nPARTITION BY (toYYYYMMDD(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')), toHour(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')))\\r\\nORDER BY (host, request_uri, intHash64(`@timestamp`))\\r\\nSAMPLE BY intHash64(`@timestamp`)\\r\\nSETTINGS in_memory_parts_enable_wal = 0, index_granularity = 8192\\r\\n```\\r\\n\\r\\n\u5207\u8bb0\u5c06`host`\u653e\u7f6e\u5728order by\u7684\u7b2c\u4e00\u4f4d\u3002\u56e0\u4e3a\u67e5Nginx\u65e5\u5fd7\u5927\u591a\u6570\u60c5\u51b5\u4e0b\u9700\u8981\u6839\u636e`host`\u67e5\u8be2\u3002\\r\\n\\r\\n#### CKibana\u6240\u6709\u914d\u7f6e\\r\\n```\\r\\n{\\r\\n\\t\\"Proxy\\": {\\r\\n\\t\\t\\"ck\\": {\\r\\n\\t\\t\\t\\"url\\": \\"ip:6321\\",\\r\\n\\t\\t\\t\\"user\\": \\"user\\",\\r\\n\\t\\t\\t\\"pass\\": \\"pass\\",\\r\\n\\t\\t\\t\\"defaultCkDatabase\\": \\"db\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"es\\": {\\r\\n\\t\\t\\t\\"host\\": \\"ip:31940\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"roundAbleMinPeriod\\": 120000,\\r\\n\\t\\t\\"round\\": 20000,\\r\\n\\t\\t\\"maxTimeRange\\": 86400000,\\r\\n\\t\\t\\"blackIndexList\\": null,\\r\\n\\t\\t\\"whiteIndexList\\": [\\"ops_bjtlblog_all\\", \\"other_index_all\\"],\\r\\n\\t\\t\\"enableMonitoring\\": true\\r\\n\\t},\\r\\n\\t\\"query\\": {\\r\\n\\t\\t\\"sampleIndexPatterns\\": [\\"ops_bjtlblog_all\\"],\\r\\n\\t\\t\\"sampleCountMaxThreshold\\": 5000000,\\r\\n\\t\\t\\"useCache\\": true,\\r\\n\\t\\t\\"maxResultRow\\": 30000\\r\\n\\t},\\r\\n\\t\\"threadPool\\": {\\r\\n\\t\\t\\"msearchProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t},\\r\\n\\t\\t\\"commonProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t}\\r\\n\\t},\\r\\n\\t\\"defaultShard\\": 2\\r\\n}\\r\\n```\\r\\n\\r\\n#### \u7ebf\u4e0a\u6548\u679c\u56fe\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana12.png)\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana13.png)\\r\\n\\r\\n## 4 \u6536\u76ca\\r\\n\u622a\u6b62\u5230\u76ee\u524d\uff0c\u501f\u52a9CKibana\u7684\u6838\u5fc3\u80fd\u529b\uff0c\u6211\u4eec\u5df2\u7ecf\u5b8c\u6210\u4e86\u6240\u6709Nginx\u8bbf\u95ee\u65e5\u5fd7\u548c\u4e1a\u52a1\u81ea\u5b9a\u4e49\u65e5\u5fd7\u5168\u91cf\u4eceElasticSearch\u5207\u6362\u5230Clickhouse\uff0c\u5b58\u50a8\u6210\u672c\u964d\u4e3a\u539f\u6765\u768430%\u4ee5\u5185\u3002\u540c\u65f6\u57fa\u4e8eClickHouse\u7684\u5206\u5e03\u5f0f\u8868\u80fd\u529b\u53ef\u4ee5\u505a\u5230\u5373\u4f7f\u5728\u5355\u4e2d\u5fc3\u6545\u969c\u65f6\u65e5\u5fd7\u67e5\u8be2\u4e5f\u4e0d\u53d7\u4efb\u4f55\u5f71\u54cd\uff0c\u65e0\u8bba\u5728\u6210\u672c\u8fd8\u662f\u7a33\u5b9a\u6027\u65b9\u9762\u76f8\u6bd4ElasticSearch\u90fd\u6709\u4e86\u8f83\u5927\u7684\u63d0\u5347\uff0c\u5e76\u6cbf\u7528\u4e86\u7075\u6d3b\u5f3a\u5927\u7684\u539f\u751fKibana\u4f5c\u4e3a\u53ef\u89c6\u5316\u5de5\u5177\uff0c\u53ef\u4ee5\u8ba9\u7528\u6237\u7ee7\u7eed\u4f7f\u7528\u81ea\u5df1\u4e60\u60ef\u7684Kibana\u9762\u677f\u4fbf\u6377\u5730\u8fdb\u884c\u65e5\u5fd7\u67e5\u8be2\u548c\u5206\u6790\u3002\\r\\n\\r\\n## 5 \u6700\u540e\\r\\n\u5728\u6211\u4eec\u65e5\u5fd7\u7cfb\u7edf\u4e0d\u65ad\u6f14\u8fdb\u7684\u8fc7\u7a0b\u4e2d\u79bb\u4e0d\u5f00\u4f17\u591a\u4f18\u79c0\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u73b0\u5728\u6211\u4eec\u4e5f\u5c06CKibana (ClickHouse Proxy for Kibana & Clickhouse visualization tool) \u6b63\u5f0f\u5f00\u6e90\u4e86\uff0c\u5e0c\u671b\u80fd\u591f\u5e2e\u52a9\u5230\u66f4\u591a\u7684\u4eba\u540c\u65f6\u4e5f\u671f\u671b\u80fd\u8ddf\u793e\u533a\u4e00\u8d77\u5171\u5efa\u4e0d\u65ad\u5b8c\u5584\u529f\u80fd\u4e0e\u7279\u6027\uff0c\u5145\u5206\u53d1\u6325\u65e5\u5fd7\u573a\u666f\u4e0bKibana\u53ef\u89c6\u5316+ClickHouse\u5b58\u50a8\u8fd9\u5bf9\u7ec4\u5408\u7684\u5a01\u529b\uff0c\u8ba9\u5927\u5bb6\u7528\u8d77\u6765\u66f4\u52a0\u4e1d\u6ed1\uff0c\u6b22\u8fceStar\u548c\u7ed9\u6211\u4eec\u63d0ISSUE\u3002\\r\\n\\r\\n\u9879\u76eeGithub\u5730\u5740: https://github.com/TongchengOpenSource/ckibana"}],"blogListPaginated":[{"metadata":{"permalink":"/ckibana-docs/en/blog","page":1,"postsPerPage":2,"totalPages":1,"totalCount":2,"previousPage":null,"nextPage":null,"blogDescription":"Blog","blogTitle":"Blog"},"items":["/build-logging-platform-with-native-kibana-and-clickhouse","/1"]}],"blogTags":{"/ckibana-docs/en/blog/tags/c-kibana":{"name":"CKibana","items":["/build-logging-platform-with-native-kibana-and-clickhouse","/1"],"permalink":"/ckibana-docs/en/blog/tags/c-kibana"}},"blogTagsListPath":"/ckibana-docs/en/blog/tags"},"blog-zh":{"blogSidebarTitle":"All posts","blogPosts":[{"id":"/build-logging-platform-with-native-kibana-and-clickhouse","metadata":{"permalink":"/ckibana-docs/zh/blog/build-logging-platform-with-native-kibana-and-clickhouse","source":"@site/blog/zh/build-logging-platform-with-native-kibana-and-clickhouse.md","title":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","description":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","date":"2024-08-26T07:53:36.320Z","formattedDate":"August 26, 2024","tags":[{"label":"CKibana","permalink":"/ckibana-docs/zh/blog/tags/c-kibana"}],"readingTime":13.985,"truncated":true,"authors":[{"name":"\u57fa\u7840\u67b6\u6784\u7814\u53d1\u90e8\u2014\u5468\u795d\u7fa4"}],"nextItem":{"title":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","permalink":"/ckibana-docs/zh/blog/1"}},"content":"> \u672c\u6587\u5c06\u4ecb\u7ecd\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0\\r\\n\\r\\n\x3c!--truncate--\x3e\\r\\n\u4e1a\u52a1\u5feb\u901f\u53d1\u5c55\u8fc7\u7a0b\u4e2d\u5bf9\u4e8e\u5404\u79cd\u65e5\u5fd7\u6570\u636e\u7684\u67e5\u8be2\u5206\u6790\u9700\u6c42\u4f1a\u5bfc\u81f4\u65e5\u5fd7\u5b58\u50a8\u89c4\u6a21\u6025\u5267\u589e\u957f\uff0c\u4f20\u7edfELK\u548c\u4ee5ElasticSearch\u4e3a\u6838\u5fc3\u5b58\u50a8\u7684\u65e5\u5fd7\u7cfb\u7edf\u968f\u4e4b\u4f1a\u9762\u4e34\u6210\u672c\u3001\u7a33\u5b9a\u6027\u4ee5\u53ca\u6027\u80fd\u7b49\u8bf8\u591a\u6311\u6218\uff0c\u4e1a\u754c\u4e5f\u770b\u5230\u8d8a\u6765\u8d8a\u591a\u7684\u56fd\u5185\u5916\u516c\u53f8\u5c06\u5b58\u50a8\u5207\u6362\u5230ClickHouse\uff0c\u6bd4\u5982\u643a\u7a0b\u3001\u5feb\u624b\u3001B\u7ad9\u3001Cloudflare\u548cUber\u7b49\uff0c\u4ece\u4ed6\u4eec\u7684\u5206\u4eab\u4e2d\u770b\u5230\u6536\u76ca\u90fd\u5f88\u660e\u663e\uff0c\u6211\u4eec\u7684\u65e5\u5fd7\u7cfb\u7edf\u4e5f\u5f00\u59cb\u5c1d\u8bd5\u4eceElasticSearch\u8fc1\u79fb\u5230ClickHouse\uff0c\u5e76\u5728\u8fc7\u7a0b\u4e2d\u63a2\u7d22\u548c\u79ef\u7d2f\u4e86\u4e00\u5957\u6700\u5927\u7a0b\u5ea6\u7167\u987e\u539f\u6709\u7528\u6237\u4f7f\u7528\u4e60\u60ef\u5b9e\u73b0\u5e73\u6ed1\u5207\u6362\u7684\u6574\u4f53\u65b9\u6848\u3002\\r\\n\\r\\n## 1 \u80cc\u666f\u4ecb\u7ecd\\r\\n\u516c\u53f8\u5185\u6d41\u91cf\u6700\u5927\u7684\u901a\u7528\u65e5\u5fd7\u7cfb\u7edf\u5e95\u5c42\u5b58\u50a8\u81ea\u4ece2020\u5e74\u7531ElasticSearch\u9010\u6b65\u5207\u6362\u5230Clickhouse\u4e4b\u540e\u5728\u6210\u672c\u4ee5\u53ca\u7a33\u5b9a\u6027\u7b49\u65b9\u9762\u5747\u6709\u663e\u8457\u63d0\u5347\u3002\u5728\u4eca\u5e74\u56fd\u5e86\u671f\u95f4\u7a33\u5b9a\u652f\u6491\u4e86\u8d85\u8fc75000\u4ebf\u6761/\u5929\u7684\u65e5\u5fd7\u91cf\uff0c\u800c\u6210\u672c\u4e5f\u4ec5\u4ec5\u662f\u539f\u5148ElasticSearch\u65b9\u6848\u768430%\u3002\\r\\n\\r\\n\u9664\u4e86\u8be5\u65e5\u5fd7\u7cfb\u7edf\u5916\uff0c\u516c\u53f8\u5185\u8fd8\u5b58\u5728\u5f88\u591a\u65e5\u5fd7\u7cfb\u7edf\uff0c\u5927\u591a\u57fa\u4e8e\u5f00\u6e90\u4e3b\u6d41ELK\u65b9\u5f0f\u3002\u5728\u89c4\u6a21\u8d8a\u6765\u8d8a\u5927\u540e\uff0c\u6210\u672c\u8ddf\u7a33\u5b9a\u6027\u65b9\u9762\u7684\u95ee\u9898\u4e5f\u5c31\u9010\u6e10\u66b4\u9732\u4e86\uff0c\u6240\u4ee5\u8ba1\u5212\u5c06\u6240\u6709\u65e5\u5fd7\u7cfb\u7edf\u7684\u5e95\u5c42\u5b58\u50a8\u5168\u90e8\u5207\u6362\u6210ClickHouse\u3002\\r\\n\\r\\n\u5173\u4e8e\u65e5\u5fd7\u573a\u666f\u4e0bClickhouse\u7684\u9009\u578b\u4e0e\u7528\u6cd5\u4e1a\u754c\u5df2\u7ecf\u6709\u5f88\u591a\u7684\u516c\u5f00\u5206\u4eab\uff0c\u4e0d\u4f5c\u4e3a\u672c\u6587\u91cd\u70b9\uff0c\u6709\u5174\u8da3\u53ef\u81ea\u884c\u641c\u7d22\u4e0b\u76f8\u5173\u8d44\u6599\u3002\\r\\n\\r\\n\u5728\u5b58\u50a8\u5207\u6362\u5b8c\u6210\u4e4b\u540e\u6700\u91cd\u8981\u7684\u662f\u89e3\u51b3\u67e5\u8be2UI\u7528\u6237\u4f53\u9a8c\u95ee\u9898\uff0c\u4e5f\u770b\u5230\u6709\u516c\u53f8\u5728\u628a\u65e5\u5fd7\u5b58\u50a8\u5207\u5230Clickhouse\u540e\u9009\u62e9\u81ea\u7814\u4e00\u5957\u67e5\u8be2UI\uff0c\u4f46\u60f3\u8981\u7167\u987e\u7528\u6237\u539f\u5148\u6240\u6709\u4f7f\u7528\u4e60\u60ef\u4ece\u539f\u751fKibana\u65e0\u7f1d\u5207\u6362\u5230\u65b0\u5e73\u53f0\u662f\u4e0d\u592a\u5b9e\u73b0\u7684\uff0c\u9700\u8981\u6240\u6709\u4e1a\u52a1\u540c\u4e8b\u719f\u6089\u4e00\u5957\u65b0\u7684\u8bed\u6cd5\u8ddfUI\u4ea4\u4e92\uff0c\u65e0\u5f62\u4e2d\u7ed9\u4ed6\u4eec\u52a0\u4e86\u5f88\u5927\u7684\u6210\u672c\u3002\\r\\n\\r\\n\u6240\u4ee5\uff0c\u600e\u4e48\u80fd\u591f\u8ba9\u4e1a\u52a1\u7528\u6237\u4ee5\u96f6\u5b66\u4e60\u6210\u672c\u4f7f\u7528\u65b0\u5e73\u53f0\uff0c\u8fd9\u662f\u4e00\u4e2a\u6700\u68d8\u624b\u7684\u95ee\u9898\u3002\\r\\n\\r\\n## 2 \u65b9\u6848\u4ecb\u7ecd\\r\\n\u6211\u4eec\u7684\u601d\u8def\u5176\u5b9e\u4e5f\u6bd4\u8f83\u5bfb\u5e38\uff0c\u6211\u4eec\u9009\u62e9\u5728\u539f\u751fKibana\u8ddfElasticSearch\u4e4b\u95f4\u65b0\u589e\u4e00\u5c42Proxy\uff0c\u8be5Proxy\u6765\u505aElasticSearch\u8ddfClickHouse\u7684\u8bed\u6cd5\u8f6c\u6362\uff0c\u5982\u56fe:\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana02.png)\\r\\n\\r\\n\u6211\u4eec\u81ea\u7814\u4e86\u4e00\u5957Proxy\uff08\u53d6\u540dCKibana\uff09\uff0c\u8be5Proxy\u8d1f\u8d23\u5c06\u56fe\u8868\u8bf7\u6c42\u8f6c\u6362\u6210ClickHouse\u8bed\u6cd5\u67e5\u8be2\u5230ClickHouse\u7ed3\u679c\u540e\u6a21\u62df\u6210ElasticSearch\u54cd\u5e94\u8fd4\u56de\u7ed9Kibana\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u76f4\u63a5\u5728\u539f\u751fKibana\u4e0a\u9762\u5c55\u793aClickHouse\u4e2d\u7684\u6570\u636e\uff0c\u9664\u4e86\u8bed\u6cd5\u8f6c\u6362\uff0c\u6211\u4eec\u8fd8\u89e3\u51b3\u4e86\u5f88\u591a\u5b9e\u9645\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684\u95ee\u9898\u3002\\r\\n\\r\\n`CKibana: \u73b0\u5df2\u6b63\u5f0f\u5f00\u6e90\uff0chttps://github.com/TongchengOpenSource/ckibana`\\r\\n\\r\\n\u4ecb\u4e8eClickHouse\u7684\u67e5\u8be2\u5e76\u53d1\u80fd\u529b\u9650\u5236\uff0c\u6211\u4eec\u4fdd\u7559\u4e86ElasticSearch\uff0c\u8be5ElasticSearch\u53ef\u4ee5\u7528\u6765\u505a\u7ed3\u679c\u7684\u7f13\u5b58\u7b49\u9ad8\u7ea7\u7279\u6027\u4ee5\u53ca\u4fdd\u5b58Kibana\u76f8\u5173\u7684\u5143\u6570\u636e\uff0c\u672c\u8eab\u975e\u5e38\u8f7b\u91cf\u3002\\r\\n\\r\\n## 3 CKibana\u4f7f\u7528\\r\\n### \u51c6\u5907\u73af\u5883\\r\\n1. Kibana: \u7528\u6765\u63d0\u4f9b\u7ed9\u4e1a\u52a1\u505aUI\u5c55\u793a\\r\\n2. ElasticSearch: \u7528\u6765\u505akibana\u5143\u6570\u636e\u5b58\u50a8+\u67e5\u8be2\u7f13\u5b58\u7b49\u9ad8\u7ea7\u7279\u6027\\r\\n3. ClickHouse: \u771f\u5b9e\u5b58\u65e5\u5fd7\u6570\u636e\u7684\u5b58\u50a8\\r\\n4. CKibana: \u63d0\u4f9bProxy\u7b49\u9ad8\u7ea7\u529f\u80fd\uff0c\u5b9e\u73b0\u8ba9\u7528\u6237\u76f4\u63a5\u5728\u539f\u751fKibana\u4e0a\u67e5\u8be2ClickHouse\u6570\u636e\\r\\n\\r\\n### \u5f00\u59cb\u4f7f\u7528\\r\\n#### \u542f\u52a8CKibana\\r\\n\u914d\u7f6eElasticSearch\u76f8\u5173\u4fe1\u606f\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana03.png)\\r\\n\\r\\n\u542f\u52a8\uff0c\u9700\u8981JDK17+\\r\\n\\r\\n`java -jar ckibana.jar`\\r\\n\\r\\n#### \u4fee\u6539Kibana\\r\\n\u4fee\u6539Kibana\u914d\u7f6e\uff0c\u5c06ElasticSearch\u5730\u5740\u6539\u4e3aCKibana\u5730\u5740\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana04.png)\\r\\n\\r\\n\u6b64\u65f6\uff0cKibana\u529f\u80fd\u5b8c\u5168\u53ef\u7528\uff0c\u53ef\u4ee5\u5c06CKibana\u5f53\u6210\u4e00\u4e2aElasticSearch Proxy\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana05.png)\\r\\n\\r\\n#### \u914d\u7f6eClickHouse\u8fde\u63a5\u4fe1\u606f\u4e0e\u7d22\u5f15\u767d\u540d\u5355\\r\\n\\r\\n\u8bbe\u7f6eClickHouse\u8fde\u63a5\u4fe1\u606f:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateCk?url=ckUrl&user=default&pass=default&defaultCkDatabase=ops\'`\\r\\n\\r\\n#### \u914d\u7f6e\u9700\u8981\u5207\u6362\u5230ClickHouse\u7684index\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateWhiteIndexList?list=index1,index2\'`\\r\\n\\r\\nClickHouse\u5b57\u6bb5\u8ddfElasticSearch\u5b57\u6bb5\u7684\u5173\u7cfb\\r\\n\\r\\n| es\u7c7b\u578b | ck\u7c7b\u578b |\\r\\n|----------|---------|\\r\\n| keyword | String |\\r\\n| text | String |\\r\\n| ip | String(\u4ee3\u7406\u81ea\u52a8\u8bc6\u522bipv4\u548cipv6) |\\r\\n| integer | Int32 |\\r\\n| long | Int64 |\\r\\n| float | Float32 |\\r\\n| double | Float64 |\\r\\n\\r\\n#### \u521b\u5efaindex pattern\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana06.png)\\r\\n\\r\\n\u6ce8\u610f\u70b9:\\r\\n1. \u9996\u5148\u786e\u5b9a\u8f93\u5165\u7684index pattern\u8ddfClickHouse\u8868\u662f\u5426\u4e00\u81f4\uff0cindex pattern\u8ddf\u8ddfClickHouse\u8868\u540d\u662f\u7cbe\u786e\u5339\u914d\\r\\n2. \u5982\u679c\u4e0d\u80fd\u6652\u9009\u5230\u5bf9\u5e94\u7684\u8868\u683c\uff0c\u53ef\u4ee5\u57fa\u4e8eCKibana\u65e5\u5fd7\u4e2d\u7684sql\u6392\u67e5\uff0c\u662f\u5426\u53ef\u67e5\u8be2\u5230\u5bf9\u5e94\u7684\u8868\\r\\n3. \u6ce8\u610f\u65f6\u95f4\u5b57\u6bb5\uff0c\u5426\u5219\u4f1a\u7b5b\u9009\u4e0d\u4e86\u65f6\u95f4\u5b57\u6bb5\uff0c\u7b5b\u9009\u903b\u8f91\u5982\u4e0b:\\r\\n- \u5b57\u6bb5\u4e3aDate\u7c7b\u578b\uff0c\u6bd4\u5982DateTime64\u7c7b\u578b\uff0c\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u7c7b\u578b\\r\\n- \u5b57\u6bb5\u540d\u4e2d\u5305\u542btime\uff0c\u6bd4\u5982\uff08@timestamp UInt64\uff09\uff0c\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u7c7b\u578b\\r\\n\\r\\n\u8fd9\u4e24\u79cd\u60c5\u51b5\u4e0b\u6ee1\u8db3\u4efb\u610f\u4e00\u4e2a\uff0c\u5b57\u6bb5\u90fd\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u5b57\u6bb5\uff0c\u5982\u679c\u9009\u62e9\u4e0d\u4e86\u65f6\u95f4\u5b57\u6bb5\uff0c\u9700\u8981\u68c0\u67e5\u4e0bClickHouse\u8868\u4e2d\u5b57\u6bb5\u662f\u5426\u7b26\u5408\u5339\u914d\u903b\u8f91\u3002\\r\\n#### \u5f00\u59cb\u4f7f\u7528\\r\\n\u914d\u7f6e\u5b8c\u6210index pattern\u540e\uff0c\u5c31\u53ef\u4ee5\u6b63\u5e38\u7684\u4f7f\u7528Kibana\u7684\u56fe\u8868\u529f\u80fd\u4e86\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana07.png)\\r\\n\\r\\n### \u9ad8\u7ea7\u529f\u80fd\\r\\n#### \u91c7\u6837\\r\\nKibana\u7684\u56fe\u8868\u5927\u90e8\u5206\u90fd\u662f\u5173\u6ce8\u8d8b\u52bf\uff0c\u5f53\u547d\u4e2d\u7ed3\u679c\u96c6\u592a\u5927\u65f6\u5019\uff0c\u6d88\u8017\u7684ClickHouse\u7684\u8d44\u6e90\u4e5f\u8f83\u591a\u3002\u6211\u4eec\u63d0\u4f9b\u4e86\u91c7\u6837\u529f\u80fd\uff0c\u5728\u6570\u636e\u96c6\u8f83\u5927\u7684\u65f6\u5019\uff0c\u80fd\u591f\u4fdd\u969c\u56fe\u8868\u8d8b\u52bf\u8ddf\u5b9e\u9645\u7684\u5dee\u4e0d\u591a\uff0c\u800c\u4e14\u53ef\u4ee5\u5f88\u597d\u7684\u63a7\u5236ClickHouse\u7684\u8d44\u6e90\u4f7f\u7528\u3002\\r\\n\\r\\n`- \u6ce8: \u5bf9\u5e94\u7684ClickHouse\u7684\u8868\u9700\u8981\u6309\u7167ck\u7684\u91c7\u6837\u8868\u521b\u5efa [clickhouse sample](https://clickhouse.com/docs/en/sql-reference/statements/select/sample)\\r\\n- \u5982\u679c\u91c7\u6837\u9608\u503c\u8bbe\u7f6e\u7684\u8fc7\u5c0f\uff0c\u4f1a\u5bfc\u81f4\u8fd8\u539f\u51fa\u6765\u7684\u503c\u8ddf\u771f\u5b9e\u503c\u5dee\u5f02\u8f83\u5927\uff0c\u6211\u4eec\u7ebf\u4e0a\u8bbe\u7f6e\u7684\u91c7\u6837\u503c\u4e3a500w`\\r\\n\\r\\n\u5f00\u542f\u91c7\u6837\u9700\u8981\u4e24\u6b65:\\r\\n1. \u914d\u7f6e\u9700\u8981\u91c7\u6837\u7684\u8868\\r\\n2. \u66f4\u65b0\u91c7\u6837\u9608\u503c\uff0c\u5f53\u547d\u4e2d\u7ed3\u679c\u96c6\u8d85\u8fc7\u9608\u503c\u65f6\uff0c\u4f1a\u89e6\u53d1\u91c7\u6837\\r\\n\\r\\n\u91c7\u6837\u903b\u8f91 `Math.max(0.01, Double.parseDouble(String.format(\\"%.5f\\", sampleParam.getSampleCountMaxThreshold() * 1.00 / sampleParam.getSampleTotalCount())))`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana08.png)\\r\\n\\r\\n\u5c55\u5f00\u6d41\u91cf\u5668\u7684\u54cd\u5e94\u7ed3\u679c\uff0c\u53ef\u4ee5\u770b\u5230\u91c7\u6837\u503c\\r\\n\\r\\n#### \u65f6\u95f4round+\u7f13\u5b58\\r\\n\u5f53\u7ebf\u4e0a\u51fa\u73b0\u4e00\u4e2a\u6545\u969c\u65f6\u5019\uff0c\u6709\u5927\u91cf\u7684sre\u540c\u5b66\u8ddf\u4e1a\u52a1\u540c\u5b66\u90fd\u9700\u8981\u901a\u8fc7nginx\u65e5\u5fd7\u6765\u67e5\u8be2\u95ee\u9898\uff0c\u800c\u4e14\u67e5\u8be2\u7684\u6761\u4ef6\u57fa\u672c\u90fd\u76f8\u540c\uff0c\u4f46\u662fClickHouse\u4e3a\u4e86\u4f7f\u5f97\u67e5\u8be2\u6027\u80fd\u6700\u597d\uff0c\u800c\u5c3d\u91cf\u7684\u4f7f\u7528\u66f4\u591a\u7684cpu\u6765\u53c2\u52a0\u8ba1\u7b97\uff0c\u8fd9\u6837\u5bfc\u81f4\u8fd9\u4e9b\u573a\u666f\u4e0bClickHouse\u7684cpu\u4f1a\u76f4\u63a5\u8dd1\u6ee1\u3002\u4e14\u5728\u540c\u5b66\u4eec\u7684\u4e0d\u65adretry\u4e0b\uff0ccpu\u4e0d\u80fd\u6062\u590d\u3002\\r\\n\\r\\n\u6240\u4ee5\u6211\u4eec\u505a\u4e86\u4e00\u4e2a\u65f6\u95f4round+\u7f13\u5b58\u529f\u80fd\u3002\\r\\n\\r\\n\u65f6\u95f4round: \u6bd4\u5982\u8bbe\u7f6eround\u4e3a20s\uff0c\u5219\u67e5\u8be2\u65f6\u95f4\u6761\u4ef6\u4e2d\u7684s\u7684\u7cbe\u5ea6\u4f1a`%20`\uff0c\u76f8\u5f53\u4e8e\u6700\u591a\u5ef6\u8fdf\u4e8620s\u6765\u67e5\u8be2\u6570\u636e\u3002\\r\\n\\r\\n\u6709\u4e86\u65f6\u95f4round\u540e\uff0c\u5219\u5927\u91cf\u7684\u67e5\u8be2\u6761\u4ef6\u5c31\u4e00\u81f4\u4e86\uff0c\u8fd9\u4e2a\u65f6\u5019\u53ea\u9700\u8981\u5f00\u542f\u7ed3\u679c\u7f13\u5b58\uff0c\u5219\u5c31\u53ef\u4ee5\u5f88\u597d\u7684\u7f13\u89e3ClickHouse\u7684\u538b\u529b\u3002\\r\\n\\r\\n\u8bbe\u7f6e\u65f6\u95f4round:\\r\\n`curl --location --request POST \'localhost:8080/config/updateRoundAbleMinPeriod?roundAbleMinPeriod=20000\' \u5355\u4f4dms`\\r\\n\\r\\n\u8bbe\u7f6e\u6253\u5f00\u7f13\u5b58:\\r\\n`curl --location --request POST \'localhost:8080/config/updateUseCache?useCache=true\'`\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana09.png)\\r\\n\\r\\n\u662f\u5426\u547d\u4e2d\u7f13\u5b58\uff0c\u5728\u54cd\u5e94\u7ed3\u6784\u91cc\u9762\u53ef\u4ee5\u770b\u5230\\r\\n\\r\\n#### \u67e5\u8be2\u76d1\u63a7 + \u9ed1\u540d\u5355\\r\\nKibana\u7684\u67e5\u8be2\u8bed\u6cd5\u76f8\u5bf9\u6bd4\u8f83\u968f\u610f\uff0c\u4e00\u4e9b\u67e5\u8be2\u5bf9ClickHouse\u7684\u8d44\u6e90\u6d88\u8017\u4f1a\u6bd4\u8f83\u5927\uff0c\u6240\u4ee5\u6211\u4eec\u5c06\u6240\u6709\u7684\u67e5\u8be2\u4ee5\u53ca\u8017\u65f6\u90fd\u505a\u4e86\u76d1\u63a7\uff0c\u8fd9\u6837\u53ef\u4ee5\u6bd4\u8f83\u65b9\u4fbf\u7684\u67e5\u770b\u90fd\u505a\u4e86\u54ea\u4e9b\u67e5\u8be2\uff0c\u8bbe\u7f6e\u53ef\u4ee5\u5bf9\u67e5\u8be2\u505a\u9ed1\u540d\u5355\u7684\u63a7\u5236\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u9650\u5236\u4e0d\u592a\u53cb\u597d\u7684\u67e5\u8be2\\r\\n\\r\\n\u5f00\u542f\u76d1\u63a7:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateEnableMonitoring?enableMonitoring=true\'`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana10.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe\uff0c\u6211\u4eec\u53ef\u4ee5\u76d1\u63a7\u6bcf\u4e2a\u67e5\u8be2\u7684\u8be6\u60c5\uff0c\u8bed\u6cd5\u4ee5\u53ca\u8017\u65f6\u3002\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana11.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe\uff0c\u53ef\u4ee5\u57fa\u4e8ekibana\u56fe\u8868\u529f\u80fd\uff0c\u505a\u66f4\u76f4\u89c2\u7684\u5206\u6790\u3002\\r\\n\\r\\n#### \u67e5\u8be2\u65f6\u95f4\u9650\u5236\\r\\n\u5f88\u591a\u65f6\u5019\uff0c\u6709\u4eba\u60f3\u8981\u67e5\u770b\u67d0\u4e2a\u6761\u4ef6\u6700\u8fd1\u7684\u8d8b\u52bf\uff0c\u76f4\u63a5\u67e5\u8be2\u6700\u8fd17\u5929\u7b49\u7b49\uff0c\u8fd9\u6837\u4f1a\u5bfc\u81f4\u8d44\u6e90\u6d88\u8017\u6bd4\u8f83\u5927\uff0c\u6240\u4ee5CKibana\u652f\u6301\u4e86\u6700\u957f\u65f6\u95f4\u67e5\u8be2\u8303\u56f4\uff0c\u6765\u9650\u5236\u4f7f\u7528\u3002\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateMaxTimeRange?maxTimeRange=864000000\' \u5355\u4f4dms`\\r\\n\\r\\n#### keyword\u67e5\u8be2\\r\\n\u4e3a\u4e86\u66f4\u597d\u7684\u5339\u914dElasticSearch\u7684\u4f7f\u7528\u4e60\u60ef\u3002 `field.keyword` \u67e5\u8be2\u76f8\u5f53\u4e8e\u5bf9field\u7684\u7cbe\u786e\u67e5\u8be2\uff0c\u5426\u5219\u4e3a\u6a21\u7cca\u641c\u7d22\\r\\n\\r\\n\u6bd4\u5982 `host.keyword:\\"www.baidu.com\\"` \u6362\u6210sql\u4e3a: `host=\\"www.baidu.com\\"`\\r\\n\\r\\n#### Discover\u6027\u80fd\u4f18\u5316\\r\\nClickHouse\u7684\u5f3a\u9879\u5728AP\u573a\u666f,\u5f53\u67e5\u8be2\u65f6\u95f4\u8de8\u5ea6\u6bd4\u8f83\u5927\u65f6,\u4f20\u7edf\u7684SQL:`select x from table where x order by time desc limit 10` \u8fd9\u79cd\u65b9\u5f0f\u4f1a\u5bfc\u81f4\u67e5\u8be2\u6027\u80fd\u975e\u5e38\u4f4e,\u800c\u4e14\u6d88\u8017\u5927\u91cf\u7684ClickHouse\u8d44\u6e90\u3002\\r\\n\u9488\u5bf9\u8fd9\u79cd\u5e26\u8d8b\u52bf\u56fe+\u660e\u7ec6\u7684\u573a\u666f\u6211\u4eec\u505a\u4e86\u6027\u80fd\u4f18\u5316,\u5145\u5206\u53d1\u6325ClickHouse\u7684AP\u80fd\u529b\u3002\u4f1a\u5c06\u6267\u884c\u62c6\u5206\u4e3a\u4e24\u6b65:\\r\\n1. \u57fa\u4e8eCk \u805a\u5408\u80fd\u529b,\u67e5\u8be2\u51fa\u6bcf\u5206\u949f\u6ee1\u8db3\u6761\u4ef6\u7684\u65e5\u5fd7\u6570\u91cf\\r\\n2. \u57fa\u4e8e\u6bcf\u5206\u949f\u7684\u65e5\u5fd7\u6570\u91cf\u81ea\u52a8\u88c1\u526a\u65e5\u5fd7\u641c\u7d22\u7684\u65f6\u95f4\u8de8\u5ea6,\u6bd4\u5982\u4e00\u5206\u949f\u5185\u7684\u65e5\u5fd7\u6761\u6570\u5c31\u6ee1\u8db3\u4e86\u8981\u6c42,\u5219\u67e5\u8be2\u660e\u7ec6\u65f6\u81ea\u52a8\u7f29\u51cf\u52301\u5206\u949f\u7684\u8de8\u5ea6\u3002\\r\\n\\r\\n\u57fa\u4e8e\u67e5\u8be2\u65f6\u95f4\u7684\u81ea\u52a8\u88c1\u526a\u529f\u80fd,\u4f1a\u4f7f\u5f97Discover\u7248\u672c\u67e5\u8be2\u6027\u80fd\u6709\u8d28\u7684\u63d0\u5347\u4e14\u5bf9ClickHouse\u7684cpu\u5360\u7528\u6709\u5f88\u5927\u7684\u4f18\u5316\u3002\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana15.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe,\u4e00\u4e2aDiscover\u67e5\u8be2\u62c6\u6210\u4e863\u4e2asql:\\r\\n1. \u8ba1\u7b97\u662f\u5426\u9700\u8981\u91c7\u6837\\r\\n2. \u7edf\u8ba1\u6bcf\u5206\u949f\u7684\u65e5\u5fd7\u6570\\r\\n3. \u81ea\u52a8\u88c1\u526a\u67e5\u8be2\u65f6\u95f4\u8303\u56f4\\r\\n\\r\\n## 4 Nginx\u65e5\u5fd7\u76f8\u5173\u4f7f\u7528\u6848\u4f8b\\r\\n\\r\\n#### Clickhouse\u8868\u7ed3\u6784\\r\\n\\r\\n``` CREATE TABLE bjops.ops_bjtlblog_local\\r\\n(\\r\\n`@timestamp` UInt64,\\r\\n`X-Request-Id` String,\\r\\n`addr` String,\\r\\n`ap_area` String,\\r\\n`byte` Int64,\\r\\n`bytes_recv` Int64,\\r\\n`Bbtes_sent` Int64,\\r\\n`content-type` String,\\r\\n`content_length` Int64,\\r\\n`crp` String,\\r\\n`csi` String,\\r\\n`cspanid` String,\\r\\n`difftime` Int32,\\r\\n`error_body` String,\\r\\n`error_client` String,\\r\\n`error_host` String,\\r\\n`error_request` String,\\r\\n`error_server` String,\\r\\n`error_upstream` String,\\r\\n`forwarded` String,\\r\\n`host` String,\\r\\n`hostname` String,\\r\\n`idc` LowCardinality(String),\\r\\n`index_name` LowCardinality(String),\\r\\n`ip` String,\\r\\n`logant_idc` LowCardinality(String),\\r\\n`logant_type` LowCardinality(String),\\r\\n`origin_ip` String,\\r\\n`referer` String,\\r\\n`remote_port` String,\\r\\n`request_method` LowCardinality(String),\\r\\n`request_time` Int64,\\r\\n`request_uri` String,\\r\\n`request_url` String,\\r\\n`scheme` String,\\r\\n`server_addr` String,\\r\\n`server_name` String,\\r\\n`server_port` String,\\r\\n`server_protocol` String,\\r\\n`source` String,\\r\\n`sspanid` String,\\r\\n`st` String,\\r\\n`status` Int32,\\r\\n`timeuse` Float64,\\r\\n`traceid` String,\\r\\n`type` String,\\r\\n`ua` String,\\r\\n`up_addr` String,\\r\\n`up_status` Int32,\\r\\n`upstream_name` String,\\r\\n`upstream_response_time` Int32,\\r\\n`worker_pid` String,\\r\\n`ck_assembly_extension` String,\\r\\n`bytes_sent` Int64,\\r\\nINDEX timestamp_index `@timestamp` TYPE minmax GRANULARITY 8192\\r\\n)\\r\\nENGINE = MergeTree\\r\\nPARTITION BY (toYYYYMMDD(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')), toHour(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')))\\r\\nORDER BY (host, request_uri, intHash64(`@timestamp`))\\r\\nSAMPLE BY intHash64(`@timestamp`)\\r\\nSETTINGS in_memory_parts_enable_wal = 0, index_granularity = 8192\\r\\n```\\r\\n\\r\\n\u5207\u8bb0\u5c06`host`\u653e\u7f6e\u5728order by\u7684\u7b2c\u4e00\u4f4d\u3002\u56e0\u4e3a\u67e5Nginx\u65e5\u5fd7\u5927\u591a\u6570\u60c5\u51b5\u4e0b\u9700\u8981\u6839\u636e`host`\u67e5\u8be2\u3002\\r\\n\\r\\n#### CKibana\u6240\u6709\u914d\u7f6e\\r\\n```\\r\\n{\\r\\n\\t\\"Proxy\\": {\\r\\n\\t\\t\\"ck\\": {\\r\\n\\t\\t\\t\\"url\\": \\"ip:6321\\",\\r\\n\\t\\t\\t\\"user\\": \\"user\\",\\r\\n\\t\\t\\t\\"pass\\": \\"pass\\",\\r\\n\\t\\t\\t\\"defaultCkDatabase\\": \\"db\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"es\\": {\\r\\n\\t\\t\\t\\"host\\": \\"ip:31940\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"roundAbleMinPeriod\\": 120000,\\r\\n\\t\\t\\"round\\": 20000,\\r\\n\\t\\t\\"maxTimeRange\\": 86400000,\\r\\n\\t\\t\\"blackIndexList\\": null,\\r\\n\\t\\t\\"whiteIndexList\\": [\\"ops_bjtlblog_all\\", \\"other_index_all\\"],\\r\\n\\t\\t\\"enableMonitoring\\": true\\r\\n\\t},\\r\\n\\t\\"query\\": {\\r\\n\\t\\t\\"sampleIndexPatterns\\": [\\"ops_bjtlblog_all\\"],\\r\\n\\t\\t\\"sampleCountMaxThreshold\\": 5000000,\\r\\n\\t\\t\\"useCache\\": true,\\r\\n\\t\\t\\"maxResultRow\\": 30000\\r\\n\\t},\\r\\n\\t\\"threadPool\\": {\\r\\n\\t\\t\\"msearchProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t},\\r\\n\\t\\t\\"commonProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t}\\r\\n\\t},\\r\\n\\t\\"defaultShard\\": 2\\r\\n}\\r\\n```\\r\\n\\r\\n#### \u7ebf\u4e0a\u6548\u679c\u56fe\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana12.png)\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana13.png)\\r\\n\\r\\n## 4 \u6536\u76ca\\r\\n\u622a\u6b62\u5230\u76ee\u524d\uff0c\u501f\u52a9CKibana\u7684\u6838\u5fc3\u80fd\u529b\uff0c\u6211\u4eec\u5df2\u7ecf\u5b8c\u6210\u4e86\u6240\u6709Nginx\u8bbf\u95ee\u65e5\u5fd7\u548c\u4e1a\u52a1\u81ea\u5b9a\u4e49\u65e5\u5fd7\u5168\u91cf\u4eceElasticSearch\u5207\u6362\u5230Clickhouse\uff0c\u5b58\u50a8\u6210\u672c\u964d\u4e3a\u539f\u6765\u768430%\u4ee5\u5185\u3002\u540c\u65f6\u57fa\u4e8eClickHouse\u7684\u5206\u5e03\u5f0f\u8868\u80fd\u529b\u53ef\u4ee5\u505a\u5230\u5373\u4f7f\u5728\u5355\u4e2d\u5fc3\u6545\u969c\u65f6\u65e5\u5fd7\u67e5\u8be2\u4e5f\u4e0d\u53d7\u4efb\u4f55\u5f71\u54cd\uff0c\u65e0\u8bba\u5728\u6210\u672c\u8fd8\u662f\u7a33\u5b9a\u6027\u65b9\u9762\u76f8\u6bd4ElasticSearch\u90fd\u6709\u4e86\u8f83\u5927\u7684\u63d0\u5347\uff0c\u5e76\u6cbf\u7528\u4e86\u7075\u6d3b\u5f3a\u5927\u7684\u539f\u751fKibana\u4f5c\u4e3a\u53ef\u89c6\u5316\u5de5\u5177\uff0c\u53ef\u4ee5\u8ba9\u7528\u6237\u7ee7\u7eed\u4f7f\u7528\u81ea\u5df1\u4e60\u60ef\u7684Kibana\u9762\u677f\u4fbf\u6377\u5730\u8fdb\u884c\u65e5\u5fd7\u67e5\u8be2\u548c\u5206\u6790\u3002\\r\\n\\r\\n## 5 \u6700\u540e\\r\\n\u5728\u6211\u4eec\u65e5\u5fd7\u7cfb\u7edf\u4e0d\u65ad\u6f14\u8fdb\u7684\u8fc7\u7a0b\u4e2d\u79bb\u4e0d\u5f00\u4f17\u591a\u4f18\u79c0\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u73b0\u5728\u6211\u4eec\u4e5f\u5c06CKibana (ClickHouse Proxy for Kibana & Clickhouse visualization tool) \u6b63\u5f0f\u5f00\u6e90\u4e86\uff0c\u5e0c\u671b\u80fd\u591f\u5e2e\u52a9\u5230\u66f4\u591a\u7684\u4eba\u540c\u65f6\u4e5f\u671f\u671b\u80fd\u8ddf\u793e\u533a\u4e00\u8d77\u5171\u5efa\u4e0d\u65ad\u5b8c\u5584\u529f\u80fd\u4e0e\u7279\u6027\uff0c\u5145\u5206\u53d1\u6325\u65e5\u5fd7\u573a\u666f\u4e0bKibana\u53ef\u89c6\u5316+ClickHouse\u5b58\u50a8\u8fd9\u5bf9\u7ec4\u5408\u7684\u5a01\u529b\uff0c\u8ba9\u5927\u5bb6\u7528\u8d77\u6765\u66f4\u52a0\u4e1d\u6ed1\uff0c\u6b22\u8fceStar\u548c\u7ed9\u6211\u4eec\u63d0ISSUE\u3002\\r\\n\\r\\n\u9879\u76eeGithub\u5730\u5740: https://github.com/TongchengOpenSource/ckibana"},{"id":"/1","metadata":{"permalink":"/ckibana-docs/zh/blog/1","source":"@site/blog/zh/1.md","title":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","description":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","date":"2024-08-26T06:52:57.848Z","formattedDate":"August 26, 2024","tags":[{"label":"CKibana","permalink":"/ckibana-docs/zh/blog/tags/c-kibana"}],"readingTime":13.985,"truncated":true,"authors":[{"name":"\u57fa\u7840\u67b6\u6784\u7814\u53d1\u90e8\u2014\u5468\u795d\u7fa4"}],"prevItem":{"title":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","permalink":"/ckibana-docs/zh/blog/build-logging-platform-with-native-kibana-and-clickhouse"}},"content":"> \u672c\u6587\u5c06\u4ecb\u7ecd\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0\\r\\n\\r\\n\x3c!--truncate--\x3e\\r\\n\u4e1a\u52a1\u5feb\u901f\u53d1\u5c55\u8fc7\u7a0b\u4e2d\u5bf9\u4e8e\u5404\u79cd\u65e5\u5fd7\u6570\u636e\u7684\u67e5\u8be2\u5206\u6790\u9700\u6c42\u4f1a\u5bfc\u81f4\u65e5\u5fd7\u5b58\u50a8\u89c4\u6a21\u6025\u5267\u589e\u957f\uff0c\u4f20\u7edfELK\u548c\u4ee5ElasticSearch\u4e3a\u6838\u5fc3\u5b58\u50a8\u7684\u65e5\u5fd7\u7cfb\u7edf\u968f\u4e4b\u4f1a\u9762\u4e34\u6210\u672c\u3001\u7a33\u5b9a\u6027\u4ee5\u53ca\u6027\u80fd\u7b49\u8bf8\u591a\u6311\u6218\uff0c\u4e1a\u754c\u4e5f\u770b\u5230\u8d8a\u6765\u8d8a\u591a\u7684\u56fd\u5185\u5916\u516c\u53f8\u5c06\u5b58\u50a8\u5207\u6362\u5230ClickHouse\uff0c\u6bd4\u5982\u643a\u7a0b\u3001\u5feb\u624b\u3001B\u7ad9\u3001Cloudflare\u548cUber\u7b49\uff0c\u4ece\u4ed6\u4eec\u7684\u5206\u4eab\u4e2d\u770b\u5230\u6536\u76ca\u90fd\u5f88\u660e\u663e\uff0c\u6211\u4eec\u7684\u65e5\u5fd7\u7cfb\u7edf\u4e5f\u5f00\u59cb\u5c1d\u8bd5\u4eceElasticSearch\u8fc1\u79fb\u5230ClickHouse\uff0c\u5e76\u5728\u8fc7\u7a0b\u4e2d\u63a2\u7d22\u548c\u79ef\u7d2f\u4e86\u4e00\u5957\u6700\u5927\u7a0b\u5ea6\u7167\u987e\u539f\u6709\u7528\u6237\u4f7f\u7528\u4e60\u60ef\u5b9e\u73b0\u5e73\u6ed1\u5207\u6362\u7684\u6574\u4f53\u65b9\u6848\u3002\\r\\n\\r\\n## 1 \u80cc\u666f\u4ecb\u7ecd\\r\\n\u516c\u53f8\u5185\u6d41\u91cf\u6700\u5927\u7684\u901a\u7528\u65e5\u5fd7\u7cfb\u7edf\u5e95\u5c42\u5b58\u50a8\u81ea\u4ece2020\u5e74\u7531ElasticSearch\u9010\u6b65\u5207\u6362\u5230Clickhouse\u4e4b\u540e\u5728\u6210\u672c\u4ee5\u53ca\u7a33\u5b9a\u6027\u7b49\u65b9\u9762\u5747\u6709\u663e\u8457\u63d0\u5347\u3002\u5728\u4eca\u5e74\u56fd\u5e86\u671f\u95f4\u7a33\u5b9a\u652f\u6491\u4e86\u8d85\u8fc75000\u4ebf\u6761/\u5929\u7684\u65e5\u5fd7\u91cf\uff0c\u800c\u6210\u672c\u4e5f\u4ec5\u4ec5\u662f\u539f\u5148ElasticSearch\u65b9\u6848\u768430%\u3002\\r\\n\\r\\n\u9664\u4e86\u8be5\u65e5\u5fd7\u7cfb\u7edf\u5916\uff0c\u516c\u53f8\u5185\u8fd8\u5b58\u5728\u5f88\u591a\u65e5\u5fd7\u7cfb\u7edf\uff0c\u5927\u591a\u57fa\u4e8e\u5f00\u6e90\u4e3b\u6d41ELK\u65b9\u5f0f\u3002\u5728\u89c4\u6a21\u8d8a\u6765\u8d8a\u5927\u540e\uff0c\u6210\u672c\u8ddf\u7a33\u5b9a\u6027\u65b9\u9762\u7684\u95ee\u9898\u4e5f\u5c31\u9010\u6e10\u66b4\u9732\u4e86\uff0c\u6240\u4ee5\u8ba1\u5212\u5c06\u6240\u6709\u65e5\u5fd7\u7cfb\u7edf\u7684\u5e95\u5c42\u5b58\u50a8\u5168\u90e8\u5207\u6362\u6210ClickHouse\u3002\\r\\n\\r\\n\u5173\u4e8e\u65e5\u5fd7\u573a\u666f\u4e0bClickhouse\u7684\u9009\u578b\u4e0e\u7528\u6cd5\u4e1a\u754c\u5df2\u7ecf\u6709\u5f88\u591a\u7684\u516c\u5f00\u5206\u4eab\uff0c\u4e0d\u4f5c\u4e3a\u672c\u6587\u91cd\u70b9\uff0c\u6709\u5174\u8da3\u53ef\u81ea\u884c\u641c\u7d22\u4e0b\u76f8\u5173\u8d44\u6599\u3002\\r\\n\\r\\n\u5728\u5b58\u50a8\u5207\u6362\u5b8c\u6210\u4e4b\u540e\u6700\u91cd\u8981\u7684\u662f\u89e3\u51b3\u67e5\u8be2UI\u7528\u6237\u4f53\u9a8c\u95ee\u9898\uff0c\u4e5f\u770b\u5230\u6709\u516c\u53f8\u5728\u628a\u65e5\u5fd7\u5b58\u50a8\u5207\u5230Clickhouse\u540e\u9009\u62e9\u81ea\u7814\u4e00\u5957\u67e5\u8be2UI\uff0c\u4f46\u60f3\u8981\u7167\u987e\u7528\u6237\u539f\u5148\u6240\u6709\u4f7f\u7528\u4e60\u60ef\u4ece\u539f\u751fKibana\u65e0\u7f1d\u5207\u6362\u5230\u65b0\u5e73\u53f0\u662f\u4e0d\u592a\u5b9e\u73b0\u7684\uff0c\u9700\u8981\u6240\u6709\u4e1a\u52a1\u540c\u4e8b\u719f\u6089\u4e00\u5957\u65b0\u7684\u8bed\u6cd5\u8ddfUI\u4ea4\u4e92\uff0c\u65e0\u5f62\u4e2d\u7ed9\u4ed6\u4eec\u52a0\u4e86\u5f88\u5927\u7684\u6210\u672c\u3002\\r\\n\\r\\n\u6240\u4ee5\uff0c\u600e\u4e48\u80fd\u591f\u8ba9\u4e1a\u52a1\u7528\u6237\u4ee5\u96f6\u5b66\u4e60\u6210\u672c\u4f7f\u7528\u65b0\u5e73\u53f0\uff0c\u8fd9\u662f\u4e00\u4e2a\u6700\u68d8\u624b\u7684\u95ee\u9898\u3002\\r\\n\\r\\n## 2 \u65b9\u6848\u4ecb\u7ecd\\r\\n\u6211\u4eec\u7684\u601d\u8def\u5176\u5b9e\u4e5f\u6bd4\u8f83\u5bfb\u5e38\uff0c\u6211\u4eec\u9009\u62e9\u5728\u539f\u751fKibana\u8ddfElasticSearch\u4e4b\u95f4\u65b0\u589e\u4e00\u5c42Proxy\uff0c\u8be5Proxy\u6765\u505aElasticSearch\u8ddfClickHouse\u7684\u8bed\u6cd5\u8f6c\u6362\uff0c\u5982\u56fe:\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana02.png)\\r\\n\\r\\n\u6211\u4eec\u81ea\u7814\u4e86\u4e00\u5957Proxy\uff08\u53d6\u540dCKibana\uff09\uff0c\u8be5Proxy\u8d1f\u8d23\u5c06\u56fe\u8868\u8bf7\u6c42\u8f6c\u6362\u6210ClickHouse\u8bed\u6cd5\u67e5\u8be2\u5230ClickHouse\u7ed3\u679c\u540e\u6a21\u62df\u6210ElasticSearch\u54cd\u5e94\u8fd4\u56de\u7ed9Kibana\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u76f4\u63a5\u5728\u539f\u751fKibana\u4e0a\u9762\u5c55\u793aClickHouse\u4e2d\u7684\u6570\u636e\uff0c\u9664\u4e86\u8bed\u6cd5\u8f6c\u6362\uff0c\u6211\u4eec\u8fd8\u89e3\u51b3\u4e86\u5f88\u591a\u5b9e\u9645\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684\u95ee\u9898\u3002\\r\\n\\r\\n`CKibana: \u73b0\u5df2\u6b63\u5f0f\u5f00\u6e90\uff0chttps://github.com/TongchengOpenSource/ckibana`\\r\\n\\r\\n\u4ecb\u4e8eClickHouse\u7684\u67e5\u8be2\u5e76\u53d1\u80fd\u529b\u9650\u5236\uff0c\u6211\u4eec\u4fdd\u7559\u4e86ElasticSearch\uff0c\u8be5ElasticSearch\u53ef\u4ee5\u7528\u6765\u505a\u7ed3\u679c\u7684\u7f13\u5b58\u7b49\u9ad8\u7ea7\u7279\u6027\u4ee5\u53ca\u4fdd\u5b58Kibana\u76f8\u5173\u7684\u5143\u6570\u636e\uff0c\u672c\u8eab\u975e\u5e38\u8f7b\u91cf\u3002\\r\\n\\r\\n## 3 CKibana\u4f7f\u7528\\r\\n### \u51c6\u5907\u73af\u5883\\r\\n1. Kibana: \u7528\u6765\u63d0\u4f9b\u7ed9\u4e1a\u52a1\u505aUI\u5c55\u793a\\r\\n2. ElasticSearch: \u7528\u6765\u505akibana\u5143\u6570\u636e\u5b58\u50a8+\u67e5\u8be2\u7f13\u5b58\u7b49\u9ad8\u7ea7\u7279\u6027\\r\\n3. ClickHouse: \u771f\u5b9e\u5b58\u65e5\u5fd7\u6570\u636e\u7684\u5b58\u50a8\\r\\n4. CKibana: \u63d0\u4f9bProxy\u7b49\u9ad8\u7ea7\u529f\u80fd\uff0c\u5b9e\u73b0\u8ba9\u7528\u6237\u76f4\u63a5\u5728\u539f\u751fKibana\u4e0a\u67e5\u8be2ClickHouse\u6570\u636e\\r\\n\\r\\n### \u5f00\u59cb\u4f7f\u7528\\r\\n#### \u542f\u52a8CKibana\\r\\n\u914d\u7f6eElasticSearch\u76f8\u5173\u4fe1\u606f\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana03.png)\\r\\n\\r\\n\u542f\u52a8\uff0c\u9700\u8981JDK17+\\r\\n\\r\\n`java -jar ckibana.jar`\\r\\n\\r\\n#### \u4fee\u6539Kibana\\r\\n\u4fee\u6539Kibana\u914d\u7f6e\uff0c\u5c06ElasticSearch\u5730\u5740\u6539\u4e3aCKibana\u5730\u5740\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana04.png)\\r\\n\\r\\n\u6b64\u65f6\uff0cKibana\u529f\u80fd\u5b8c\u5168\u53ef\u7528\uff0c\u53ef\u4ee5\u5c06CKibana\u5f53\u6210\u4e00\u4e2aElasticSearch Proxy\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana05.png)\\r\\n\\r\\n#### \u914d\u7f6eClickHouse\u8fde\u63a5\u4fe1\u606f\u4e0e\u7d22\u5f15\u767d\u540d\u5355\\r\\n\\r\\n\u8bbe\u7f6eClickHouse\u8fde\u63a5\u4fe1\u606f:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateCk?url=ckUrl&user=default&pass=default&defaultCkDatabase=ops\'`\\r\\n\\r\\n#### \u914d\u7f6e\u9700\u8981\u5207\u6362\u5230ClickHouse\u7684index\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateWhiteIndexList?list=index1,index2\'`\\r\\n\\r\\nClickHouse\u5b57\u6bb5\u8ddfElasticSearch\u5b57\u6bb5\u7684\u5173\u7cfb\\r\\n\\r\\n| es\u7c7b\u578b | ck\u7c7b\u578b |\\r\\n|----------|---------|\\r\\n| keyword | String |\\r\\n| text | String |\\r\\n| ip | String(\u4ee3\u7406\u81ea\u52a8\u8bc6\u522bipv4\u548cipv6) |\\r\\n| integer | Int32 |\\r\\n| long | Int64 |\\r\\n| float | Float32 |\\r\\n| double | Float64 |\\r\\n\\r\\n#### \u521b\u5efaindex pattern\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana06.png)\\r\\n\\r\\n\u6ce8\u610f\u70b9:\\r\\n1. \u9996\u5148\u786e\u5b9a\u8f93\u5165\u7684index pattern\u8ddfClickHouse\u8868\u662f\u5426\u4e00\u81f4\uff0cindex pattern\u8ddf\u8ddfClickHouse\u8868\u540d\u662f\u7cbe\u786e\u5339\u914d\\r\\n2. \u5982\u679c\u4e0d\u80fd\u6652\u9009\u5230\u5bf9\u5e94\u7684\u8868\u683c\uff0c\u53ef\u4ee5\u57fa\u4e8eCKibana\u65e5\u5fd7\u4e2d\u7684sql\u6392\u67e5\uff0c\u662f\u5426\u53ef\u67e5\u8be2\u5230\u5bf9\u5e94\u7684\u8868\\r\\n3. \u6ce8\u610f\u65f6\u95f4\u5b57\u6bb5\uff0c\u5426\u5219\u4f1a\u7b5b\u9009\u4e0d\u4e86\u65f6\u95f4\u5b57\u6bb5\uff0c\u7b5b\u9009\u903b\u8f91\u5982\u4e0b:\\r\\n- \u5b57\u6bb5\u4e3aDate\u7c7b\u578b\uff0c\u6bd4\u5982DateTime64\u7c7b\u578b\uff0c\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u7c7b\u578b\\r\\n- \u5b57\u6bb5\u540d\u4e2d\u5305\u542btime\uff0c\u6bd4\u5982\uff08@timestamp UInt64\uff09\uff0c\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u7c7b\u578b\\r\\n\\r\\n\u8fd9\u4e24\u79cd\u60c5\u51b5\u4e0b\u6ee1\u8db3\u4efb\u610f\u4e00\u4e2a\uff0c\u5b57\u6bb5\u90fd\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u5b57\u6bb5\uff0c\u5982\u679c\u9009\u62e9\u4e0d\u4e86\u65f6\u95f4\u5b57\u6bb5\uff0c\u9700\u8981\u68c0\u67e5\u4e0bClickHouse\u8868\u4e2d\u5b57\u6bb5\u662f\u5426\u7b26\u5408\u5339\u914d\u903b\u8f91\u3002\\r\\n#### \u5f00\u59cb\u4f7f\u7528\\r\\n\u914d\u7f6e\u5b8c\u6210index pattern\u540e\uff0c\u5c31\u53ef\u4ee5\u6b63\u5e38\u7684\u4f7f\u7528Kibana\u7684\u56fe\u8868\u529f\u80fd\u4e86\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana07.png)\\r\\n\\r\\n### \u9ad8\u7ea7\u529f\u80fd\\r\\n#### \u91c7\u6837\\r\\nKibana\u7684\u56fe\u8868\u5927\u90e8\u5206\u90fd\u662f\u5173\u6ce8\u8d8b\u52bf\uff0c\u5f53\u547d\u4e2d\u7ed3\u679c\u96c6\u592a\u5927\u65f6\u5019\uff0c\u6d88\u8017\u7684ClickHouse\u7684\u8d44\u6e90\u4e5f\u8f83\u591a\u3002\u6211\u4eec\u63d0\u4f9b\u4e86\u91c7\u6837\u529f\u80fd\uff0c\u5728\u6570\u636e\u96c6\u8f83\u5927\u7684\u65f6\u5019\uff0c\u80fd\u591f\u4fdd\u969c\u56fe\u8868\u8d8b\u52bf\u8ddf\u5b9e\u9645\u7684\u5dee\u4e0d\u591a\uff0c\u800c\u4e14\u53ef\u4ee5\u5f88\u597d\u7684\u63a7\u5236ClickHouse\u7684\u8d44\u6e90\u4f7f\u7528\u3002\\r\\n\\r\\n`- \u6ce8: \u5bf9\u5e94\u7684ClickHouse\u7684\u8868\u9700\u8981\u6309\u7167ck\u7684\u91c7\u6837\u8868\u521b\u5efa [clickhouse sample](https://clickhouse.com/docs/en/sql-reference/statements/select/sample)\\r\\n- \u5982\u679c\u91c7\u6837\u9608\u503c\u8bbe\u7f6e\u7684\u8fc7\u5c0f\uff0c\u4f1a\u5bfc\u81f4\u8fd8\u539f\u51fa\u6765\u7684\u503c\u8ddf\u771f\u5b9e\u503c\u5dee\u5f02\u8f83\u5927\uff0c\u6211\u4eec\u7ebf\u4e0a\u8bbe\u7f6e\u7684\u91c7\u6837\u503c\u4e3a500w`\\r\\n\\r\\n\u5f00\u542f\u91c7\u6837\u9700\u8981\u4e24\u6b65:\\r\\n1. \u914d\u7f6e\u9700\u8981\u91c7\u6837\u7684\u8868\\r\\n2. \u66f4\u65b0\u91c7\u6837\u9608\u503c\uff0c\u5f53\u547d\u4e2d\u7ed3\u679c\u96c6\u8d85\u8fc7\u9608\u503c\u65f6\uff0c\u4f1a\u89e6\u53d1\u91c7\u6837\\r\\n\\r\\n\u91c7\u6837\u903b\u8f91 `Math.max(0.01, Double.parseDouble(String.format(\\"%.5f\\", sampleParam.getSampleCountMaxThreshold() * 1.00 / sampleParam.getSampleTotalCount())))`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana08.png)\\r\\n\\r\\n\u5c55\u5f00\u6d41\u91cf\u5668\u7684\u54cd\u5e94\u7ed3\u679c\uff0c\u53ef\u4ee5\u770b\u5230\u91c7\u6837\u503c\\r\\n\\r\\n#### \u65f6\u95f4round+\u7f13\u5b58\\r\\n\u5f53\u7ebf\u4e0a\u51fa\u73b0\u4e00\u4e2a\u6545\u969c\u65f6\u5019\uff0c\u6709\u5927\u91cf\u7684sre\u540c\u5b66\u8ddf\u4e1a\u52a1\u540c\u5b66\u90fd\u9700\u8981\u901a\u8fc7nginx\u65e5\u5fd7\u6765\u67e5\u8be2\u95ee\u9898\uff0c\u800c\u4e14\u67e5\u8be2\u7684\u6761\u4ef6\u57fa\u672c\u90fd\u76f8\u540c\uff0c\u4f46\u662fClickHouse\u4e3a\u4e86\u4f7f\u5f97\u67e5\u8be2\u6027\u80fd\u6700\u597d\uff0c\u800c\u5c3d\u91cf\u7684\u4f7f\u7528\u66f4\u591a\u7684cpu\u6765\u53c2\u52a0\u8ba1\u7b97\uff0c\u8fd9\u6837\u5bfc\u81f4\u8fd9\u4e9b\u573a\u666f\u4e0bClickHouse\u7684cpu\u4f1a\u76f4\u63a5\u8dd1\u6ee1\u3002\u4e14\u5728\u540c\u5b66\u4eec\u7684\u4e0d\u65adretry\u4e0b\uff0ccpu\u4e0d\u80fd\u6062\u590d\u3002\\r\\n\\r\\n\u6240\u4ee5\u6211\u4eec\u505a\u4e86\u4e00\u4e2a\u65f6\u95f4round+\u7f13\u5b58\u529f\u80fd\u3002\\r\\n\\r\\n\u65f6\u95f4round: \u6bd4\u5982\u8bbe\u7f6eround\u4e3a20s\uff0c\u5219\u67e5\u8be2\u65f6\u95f4\u6761\u4ef6\u4e2d\u7684s\u7684\u7cbe\u5ea6\u4f1a`%20`\uff0c\u76f8\u5f53\u4e8e\u6700\u591a\u5ef6\u8fdf\u4e8620s\u6765\u67e5\u8be2\u6570\u636e\u3002\\r\\n\\r\\n\u6709\u4e86\u65f6\u95f4round\u540e\uff0c\u5219\u5927\u91cf\u7684\u67e5\u8be2\u6761\u4ef6\u5c31\u4e00\u81f4\u4e86\uff0c\u8fd9\u4e2a\u65f6\u5019\u53ea\u9700\u8981\u5f00\u542f\u7ed3\u679c\u7f13\u5b58\uff0c\u5219\u5c31\u53ef\u4ee5\u5f88\u597d\u7684\u7f13\u89e3ClickHouse\u7684\u538b\u529b\u3002\\r\\n\\r\\n\u8bbe\u7f6e\u65f6\u95f4round:\\r\\n`curl --location --request POST \'localhost:8080/config/updateRoundAbleMinPeriod?roundAbleMinPeriod=20000\' \u5355\u4f4dms`\\r\\n\\r\\n\u8bbe\u7f6e\u6253\u5f00\u7f13\u5b58:\\r\\n`curl --location --request POST \'localhost:8080/config/updateUseCache?useCache=true\'`\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana09.png)\\r\\n\\r\\n\u662f\u5426\u547d\u4e2d\u7f13\u5b58\uff0c\u5728\u54cd\u5e94\u7ed3\u6784\u91cc\u9762\u53ef\u4ee5\u770b\u5230\\r\\n\\r\\n#### \u67e5\u8be2\u76d1\u63a7 + \u9ed1\u540d\u5355\\r\\nKibana\u7684\u67e5\u8be2\u8bed\u6cd5\u76f8\u5bf9\u6bd4\u8f83\u968f\u610f\uff0c\u4e00\u4e9b\u67e5\u8be2\u5bf9ClickHouse\u7684\u8d44\u6e90\u6d88\u8017\u4f1a\u6bd4\u8f83\u5927\uff0c\u6240\u4ee5\u6211\u4eec\u5c06\u6240\u6709\u7684\u67e5\u8be2\u4ee5\u53ca\u8017\u65f6\u90fd\u505a\u4e86\u76d1\u63a7\uff0c\u8fd9\u6837\u53ef\u4ee5\u6bd4\u8f83\u65b9\u4fbf\u7684\u67e5\u770b\u90fd\u505a\u4e86\u54ea\u4e9b\u67e5\u8be2\uff0c\u8bbe\u7f6e\u53ef\u4ee5\u5bf9\u67e5\u8be2\u505a\u9ed1\u540d\u5355\u7684\u63a7\u5236\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u9650\u5236\u4e0d\u592a\u53cb\u597d\u7684\u67e5\u8be2\\r\\n\\r\\n\u5f00\u542f\u76d1\u63a7:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateEnableMonitoring?enableMonitoring=true\'`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana10.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe\uff0c\u6211\u4eec\u53ef\u4ee5\u76d1\u63a7\u6bcf\u4e2a\u67e5\u8be2\u7684\u8be6\u60c5\uff0c\u8bed\u6cd5\u4ee5\u53ca\u8017\u65f6\u3002\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana11.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe\uff0c\u53ef\u4ee5\u57fa\u4e8ekibana\u56fe\u8868\u529f\u80fd\uff0c\u505a\u66f4\u76f4\u89c2\u7684\u5206\u6790\u3002\\r\\n\\r\\n#### \u67e5\u8be2\u65f6\u95f4\u9650\u5236\\r\\n\u5f88\u591a\u65f6\u5019\uff0c\u6709\u4eba\u60f3\u8981\u67e5\u770b\u67d0\u4e2a\u6761\u4ef6\u6700\u8fd1\u7684\u8d8b\u52bf\uff0c\u76f4\u63a5\u67e5\u8be2\u6700\u8fd17\u5929\u7b49\u7b49\uff0c\u8fd9\u6837\u4f1a\u5bfc\u81f4\u8d44\u6e90\u6d88\u8017\u6bd4\u8f83\u5927\uff0c\u6240\u4ee5CKibana\u652f\u6301\u4e86\u6700\u957f\u65f6\u95f4\u67e5\u8be2\u8303\u56f4\uff0c\u6765\u9650\u5236\u4f7f\u7528\u3002\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateMaxTimeRange?maxTimeRange=864000000\' \u5355\u4f4dms`\\r\\n\\r\\n#### keyword\u67e5\u8be2\\r\\n\u4e3a\u4e86\u66f4\u597d\u7684\u5339\u914dElasticSearch\u7684\u4f7f\u7528\u4e60\u60ef\u3002 `field.keyword` \u67e5\u8be2\u76f8\u5f53\u4e8e\u5bf9field\u7684\u7cbe\u786e\u67e5\u8be2\uff0c\u5426\u5219\u4e3a\u6a21\u7cca\u641c\u7d22\\r\\n\\r\\n\u6bd4\u5982 `host.keyword:\\"www.baidu.com\\"` \u6362\u6210sql\u4e3a: `host=\\"www.baidu.com\\"`\\r\\n\\r\\n#### Discover\u6027\u80fd\u4f18\u5316\\r\\nClickHouse\u7684\u5f3a\u9879\u5728AP\u573a\u666f,\u5f53\u67e5\u8be2\u65f6\u95f4\u8de8\u5ea6\u6bd4\u8f83\u5927\u65f6,\u4f20\u7edf\u7684SQL:`select x from table where x order by time desc limit 10` \u8fd9\u79cd\u65b9\u5f0f\u4f1a\u5bfc\u81f4\u67e5\u8be2\u6027\u80fd\u975e\u5e38\u4f4e,\u800c\u4e14\u6d88\u8017\u5927\u91cf\u7684ClickHouse\u8d44\u6e90\u3002\\r\\n\u9488\u5bf9\u8fd9\u79cd\u5e26\u8d8b\u52bf\u56fe+\u660e\u7ec6\u7684\u573a\u666f\u6211\u4eec\u505a\u4e86\u6027\u80fd\u4f18\u5316,\u5145\u5206\u53d1\u6325ClickHouse\u7684AP\u80fd\u529b\u3002\u4f1a\u5c06\u6267\u884c\u62c6\u5206\u4e3a\u4e24\u6b65:\\r\\n1. \u57fa\u4e8eCk \u805a\u5408\u80fd\u529b,\u67e5\u8be2\u51fa\u6bcf\u5206\u949f\u6ee1\u8db3\u6761\u4ef6\u7684\u65e5\u5fd7\u6570\u91cf\\r\\n2. \u57fa\u4e8e\u6bcf\u5206\u949f\u7684\u65e5\u5fd7\u6570\u91cf\u81ea\u52a8\u88c1\u526a\u65e5\u5fd7\u641c\u7d22\u7684\u65f6\u95f4\u8de8\u5ea6,\u6bd4\u5982\u4e00\u5206\u949f\u5185\u7684\u65e5\u5fd7\u6761\u6570\u5c31\u6ee1\u8db3\u4e86\u8981\u6c42,\u5219\u67e5\u8be2\u660e\u7ec6\u65f6\u81ea\u52a8\u7f29\u51cf\u52301\u5206\u949f\u7684\u8de8\u5ea6\u3002\\r\\n\\r\\n\u57fa\u4e8e\u67e5\u8be2\u65f6\u95f4\u7684\u81ea\u52a8\u88c1\u526a\u529f\u80fd,\u4f1a\u4f7f\u5f97Discover\u7248\u672c\u67e5\u8be2\u6027\u80fd\u6709\u8d28\u7684\u63d0\u5347\u4e14\u5bf9ClickHouse\u7684cpu\u5360\u7528\u6709\u5f88\u5927\u7684\u4f18\u5316\u3002\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana15.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe,\u4e00\u4e2aDiscover\u67e5\u8be2\u62c6\u6210\u4e863\u4e2asql:\\r\\n1. \u8ba1\u7b97\u662f\u5426\u9700\u8981\u91c7\u6837\\r\\n2. \u7edf\u8ba1\u6bcf\u5206\u949f\u7684\u65e5\u5fd7\u6570\\r\\n3. \u81ea\u52a8\u88c1\u526a\u67e5\u8be2\u65f6\u95f4\u8303\u56f4\\r\\n\\r\\n## 4 Nginx\u65e5\u5fd7\u76f8\u5173\u4f7f\u7528\u6848\u4f8b\\r\\n\\r\\n#### Clickhouse\u8868\u7ed3\u6784\\r\\n\\r\\n``` CREATE TABLE bjops.ops_bjtlblog_local\\r\\n(\\r\\n`@timestamp` UInt64,\\r\\n`X-Request-Id` String,\\r\\n`addr` String,\\r\\n`ap_area` String,\\r\\n`byte` Int64,\\r\\n`bytes_recv` Int64,\\r\\n`Bbtes_sent` Int64,\\r\\n`content-type` String,\\r\\n`content_length` Int64,\\r\\n`crp` String,\\r\\n`csi` String,\\r\\n`cspanid` String,\\r\\n`difftime` Int32,\\r\\n`error_body` String,\\r\\n`error_client` String,\\r\\n`error_host` String,\\r\\n`error_request` String,\\r\\n`error_server` String,\\r\\n`error_upstream` String,\\r\\n`forwarded` String,\\r\\n`host` String,\\r\\n`hostname` String,\\r\\n`idc` LowCardinality(String),\\r\\n`index_name` LowCardinality(String),\\r\\n`ip` String,\\r\\n`logant_idc` LowCardinality(String),\\r\\n`logant_type` LowCardinality(String),\\r\\n`origin_ip` String,\\r\\n`referer` String,\\r\\n`remote_port` String,\\r\\n`request_method` LowCardinality(String),\\r\\n`request_time` Int64,\\r\\n`request_uri` String,\\r\\n`request_url` String,\\r\\n`scheme` String,\\r\\n`server_addr` String,\\r\\n`server_name` String,\\r\\n`server_port` String,\\r\\n`server_protocol` String,\\r\\n`source` String,\\r\\n`sspanid` String,\\r\\n`st` String,\\r\\n`status` Int32,\\r\\n`timeuse` Float64,\\r\\n`traceid` String,\\r\\n`type` String,\\r\\n`ua` String,\\r\\n`up_addr` String,\\r\\n`up_status` Int32,\\r\\n`upstream_name` String,\\r\\n`upstream_response_time` Int32,\\r\\n`worker_pid` String,\\r\\n`ck_assembly_extension` String,\\r\\n`bytes_sent` Int64,\\r\\nINDEX timestamp_index `@timestamp` TYPE minmax GRANULARITY 8192\\r\\n)\\r\\nENGINE = MergeTree\\r\\nPARTITION BY (toYYYYMMDD(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')), toHour(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')))\\r\\nORDER BY (host, request_uri, intHash64(`@timestamp`))\\r\\nSAMPLE BY intHash64(`@timestamp`)\\r\\nSETTINGS in_memory_parts_enable_wal = 0, index_granularity = 8192\\r\\n```\\r\\n\\r\\n\u5207\u8bb0\u5c06`host`\u653e\u7f6e\u5728order by\u7684\u7b2c\u4e00\u4f4d\u3002\u56e0\u4e3a\u67e5Nginx\u65e5\u5fd7\u5927\u591a\u6570\u60c5\u51b5\u4e0b\u9700\u8981\u6839\u636e`host`\u67e5\u8be2\u3002\\r\\n\\r\\n#### CKibana\u6240\u6709\u914d\u7f6e\\r\\n```\\r\\n{\\r\\n\\t\\"Proxy\\": {\\r\\n\\t\\t\\"ck\\": {\\r\\n\\t\\t\\t\\"url\\": \\"ip:6321\\",\\r\\n\\t\\t\\t\\"user\\": \\"user\\",\\r\\n\\t\\t\\t\\"pass\\": \\"pass\\",\\r\\n\\t\\t\\t\\"defaultCkDatabase\\": \\"db\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"es\\": {\\r\\n\\t\\t\\t\\"host\\": \\"ip:31940\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"roundAbleMinPeriod\\": 120000,\\r\\n\\t\\t\\"round\\": 20000,\\r\\n\\t\\t\\"maxTimeRange\\": 86400000,\\r\\n\\t\\t\\"blackIndexList\\": null,\\r\\n\\t\\t\\"whiteIndexList\\": [\\"ops_bjtlblog_all\\", \\"other_index_all\\"],\\r\\n\\t\\t\\"enableMonitoring\\": true\\r\\n\\t},\\r\\n\\t\\"query\\": {\\r\\n\\t\\t\\"sampleIndexPatterns\\": [\\"ops_bjtlblog_all\\"],\\r\\n\\t\\t\\"sampleCountMaxThreshold\\": 5000000,\\r\\n\\t\\t\\"useCache\\": true,\\r\\n\\t\\t\\"maxResultRow\\": 30000\\r\\n\\t},\\r\\n\\t\\"threadPool\\": {\\r\\n\\t\\t\\"msearchProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t},\\r\\n\\t\\t\\"commonProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t}\\r\\n\\t},\\r\\n\\t\\"defaultShard\\": 2\\r\\n}\\r\\n```\\r\\n\\r\\n#### \u7ebf\u4e0a\u6548\u679c\u56fe\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana12.png)\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana13.png)\\r\\n\\r\\n## 4 \u6536\u76ca\\r\\n\u622a\u6b62\u5230\u76ee\u524d\uff0c\u501f\u52a9CKibana\u7684\u6838\u5fc3\u80fd\u529b\uff0c\u6211\u4eec\u5df2\u7ecf\u5b8c\u6210\u4e86\u6240\u6709Nginx\u8bbf\u95ee\u65e5\u5fd7\u548c\u4e1a\u52a1\u81ea\u5b9a\u4e49\u65e5\u5fd7\u5168\u91cf\u4eceElasticSearch\u5207\u6362\u5230Clickhouse\uff0c\u5b58\u50a8\u6210\u672c\u964d\u4e3a\u539f\u6765\u768430%\u4ee5\u5185\u3002\u540c\u65f6\u57fa\u4e8eClickHouse\u7684\u5206\u5e03\u5f0f\u8868\u80fd\u529b\u53ef\u4ee5\u505a\u5230\u5373\u4f7f\u5728\u5355\u4e2d\u5fc3\u6545\u969c\u65f6\u65e5\u5fd7\u67e5\u8be2\u4e5f\u4e0d\u53d7\u4efb\u4f55\u5f71\u54cd\uff0c\u65e0\u8bba\u5728\u6210\u672c\u8fd8\u662f\u7a33\u5b9a\u6027\u65b9\u9762\u76f8\u6bd4ElasticSearch\u90fd\u6709\u4e86\u8f83\u5927\u7684\u63d0\u5347\uff0c\u5e76\u6cbf\u7528\u4e86\u7075\u6d3b\u5f3a\u5927\u7684\u539f\u751fKibana\u4f5c\u4e3a\u53ef\u89c6\u5316\u5de5\u5177\uff0c\u53ef\u4ee5\u8ba9\u7528\u6237\u7ee7\u7eed\u4f7f\u7528\u81ea\u5df1\u4e60\u60ef\u7684Kibana\u9762\u677f\u4fbf\u6377\u5730\u8fdb\u884c\u65e5\u5fd7\u67e5\u8be2\u548c\u5206\u6790\u3002\\r\\n\\r\\n## 5 \u6700\u540e\\r\\n\u5728\u6211\u4eec\u65e5\u5fd7\u7cfb\u7edf\u4e0d\u65ad\u6f14\u8fdb\u7684\u8fc7\u7a0b\u4e2d\u79bb\u4e0d\u5f00\u4f17\u591a\u4f18\u79c0\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u73b0\u5728\u6211\u4eec\u4e5f\u5c06CKibana (ClickHouse Proxy for Kibana & Clickhouse visualization tool) \u6b63\u5f0f\u5f00\u6e90\u4e86\uff0c\u5e0c\u671b\u80fd\u591f\u5e2e\u52a9\u5230\u66f4\u591a\u7684\u4eba\u540c\u65f6\u4e5f\u671f\u671b\u80fd\u8ddf\u793e\u533a\u4e00\u8d77\u5171\u5efa\u4e0d\u65ad\u5b8c\u5584\u529f\u80fd\u4e0e\u7279\u6027\uff0c\u5145\u5206\u53d1\u6325\u65e5\u5fd7\u573a\u666f\u4e0bKibana\u53ef\u89c6\u5316+ClickHouse\u5b58\u50a8\u8fd9\u5bf9\u7ec4\u5408\u7684\u5a01\u529b\uff0c\u8ba9\u5927\u5bb6\u7528\u8d77\u6765\u66f4\u52a0\u4e1d\u6ed1\uff0c\u6b22\u8fceStar\u548c\u7ed9\u6211\u4eec\u63d0ISSUE\u3002\\r\\n\\r\\n\u9879\u76eeGithub\u5730\u5740: https://github.com/TongchengOpenSource/ckibana"}],"blogListPaginated":[{"metadata":{"permalink":"/ckibana-docs/zh/blog","page":1,"postsPerPage":2,"totalPages":1,"totalCount":2,"previousPage":null,"nextPage":null,"blogDescription":"Blog","blogTitle":"Blog"},"items":["/build-logging-platform-with-native-kibana-and-clickhouse","/1"]}],"blogTags":{"/ckibana-docs/zh/blog/tags/c-kibana":{"name":"CKibana","items":["/build-logging-platform-with-native-kibana-and-clickhouse","/1"],"permalink":"/ckibana-docs/zh/blog/tags/c-kibana"}},"blogTagsListPath":"/ckibana-docs/zh/blog/tags"}},"docusaurus-plugin-content-docs":{"default":{"loadedVersions":[{"versionName":"current","versionLabel":"Next","versionPath":"/ckibana-docs/zh/docs/","tagsPath":"/ckibana-docs/zh/docs/tags","versionBanner":null,"versionBadge":false,"versionClassName":"docs-version-current","isLast":true,"routePriority":-1,"sidebarFilePath":"C:\\\\work\\\\docusaurus-docs\\\\sidebars.js","contentPath":"C:\\\\work\\\\docusaurus-docs\\\\docs\\\\zh","contentPathLocalized":"C:\\\\work\\\\docusaurus-docs\\\\i18n\\\\en\\\\docusaurus-plugin-content-docs\\\\current","docs":[{"unversionedId":"api-docs","id":"api-docs","title":"api-docs","description":"application\u6587\u4ef6","source":"@site/docs/zh/api-docs.md","sourceDirName":".","slug":"/api-docs","permalink":"/ckibana-docs/zh/docs/api-docs","editUrl":false,"tags":[],"version":"current","sidebarPosition":3,"frontMatter":{"sidebar_position":3},"sidebar":"tutorialSidebar","previous":{"title":"usercase","permalink":"/ckibana-docs/zh/docs/UserCase"},"next":{"title":"troubleshooting","permalink":"/ckibana-docs/zh/docs/troubleshooting"}},{"unversionedId":"index","id":"index","title":"\u7b80\u4ecb","description":"License","source":"@site/docs/zh/index.md","sourceDirName":".","slug":"/","permalink":"/ckibana-docs/zh/docs/","editUrl":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"troubleshooting","permalink":"/ckibana-docs/zh/docs/troubleshooting"}},{"unversionedId":"troubleshooting","id":"troubleshooting","title":"troubleshooting","description":"1\u3001CKibana\u542f\u52a8\u6210\u529f\u4e14\u6ca1\u62a5\u9519\uff0c\u4f46\u662f\u8bbf\u95eekibana\u51fa\u73b0\u5982\u4e0b\u9519\u8bef","source":"@site/docs/zh/troubleshooting.md","sourceDirName":".","slug":"/troubleshooting","permalink":"/ckibana-docs/zh/docs/troubleshooting","editUrl":false,"tags":[],"version":"current","sidebarPosition":4,"frontMatter":{"sidebar_position":4},"sidebar":"tutorialSidebar","previous":{"title":"api-docs","permalink":"/ckibana-docs/zh/docs/api-docs"},"next":{"title":"\u7b80\u4ecb","permalink":"/ckibana-docs/zh/docs/"}},{"unversionedId":"UserCase","id":"UserCase","title":"usercase","description":"1\u3001\u8bbf\u95ee\u539f\u751fkibana","source":"@site/docs/zh/UserCase.md","sourceDirName":".","slug":"/UserCase","permalink":"/ckibana-docs/zh/docs/UserCase","editUrl":false,"tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"sidebar_position":2},"sidebar":"tutorialSidebar","next":{"title":"api-docs","permalink":"/ckibana-docs/zh/docs/api-docs"}}],"sidebars":{"tutorialSidebar":[{"type":"doc","id":"UserCase"},{"type":"doc","id":"api-docs"},{"type":"doc","id":"troubleshooting"},{"type":"doc","id":"index"}]},"mainDocId":"index","categoryGeneratedIndices":[]}]},"en":{"loadedVersions":[{"versionName":"current","versionLabel":"Next","versionPath":"/ckibana-docs/en/docs/","tagsPath":"/ckibana-docs/en/docs/tags","versionBanner":null,"versionBadge":false,"versionClassName":"docs-version-current","isLast":true,"routePriority":-1,"sidebarFilePath":"C:\\\\work\\\\docusaurus-docs\\\\sidebars.js","contentPath":"C:\\\\work\\\\docusaurus-docs\\\\docs\\\\en","contentPathLocalized":"C:\\\\work\\\\docusaurus-docs\\\\i18n\\\\en\\\\docusaurus-plugin-content-docs-en\\\\current","docs":[{"unversionedId":"api-docs","id":"api-docs","title":"api-docs","description":"application.yaml","source":"@site/docs/en/api-docs.md","sourceDirName":".","slug":"/api-docs","permalink":"/ckibana-docs/en/docs/api-docs","editUrl":false,"tags":[],"version":"current","sidebarPosition":3,"frontMatter":{"sidebar_position":3},"sidebar":"tutorialSidebar","previous":{"title":"usercase","permalink":"/ckibana-docs/en/docs/UserCase"},"next":{"title":"troubleshooting","permalink":"/ckibana-docs/en/docs/troubleshooting"}},{"unversionedId":"index","id":"index","title":"Introduce","description":"License","source":"@site/docs/en/index.md","sourceDirName":".","slug":"/","permalink":"/ckibana-docs/en/docs/","editUrl":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"troubleshooting","permalink":"/ckibana-docs/en/docs/troubleshooting"}},{"unversionedId":"troubleshooting","id":"troubleshooting","title":"troubleshooting","description":"1\u3001Cannot open Kibana.","source":"@site/docs/en/troubleshooting.md","sourceDirName":".","slug":"/troubleshooting","permalink":"/ckibana-docs/en/docs/troubleshooting","editUrl":false,"tags":[],"version":"current","sidebarPosition":4,"frontMatter":{"sidebar_position":4},"sidebar":"tutorialSidebar","previous":{"title":"api-docs","permalink":"/ckibana-docs/en/docs/api-docs"},"next":{"title":"Introduce","permalink":"/ckibana-docs/en/docs/"}},{"unversionedId":"UserCase","id":"UserCase","title":"usercase","description":"1\u3001Accessing the native Kibana.","source":"@site/docs/en/UserCase.md","sourceDirName":".","slug":"/UserCase","permalink":"/ckibana-docs/en/docs/UserCase","editUrl":false,"tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"sidebar_position":2},"sidebar":"tutorialSidebar","next":{"title":"api-docs","permalink":"/ckibana-docs/en/docs/api-docs"}}],"sidebars":{"tutorialSidebar":[{"type":"doc","id":"UserCase"},{"type":"doc","id":"api-docs"},{"type":"doc","id":"troubleshooting"},{"type":"doc","id":"index"}]},"mainDocId":"index","categoryGeneratedIndices":[]}]}},"docusaurus-plugin-content-pages":{"default":[{"type":"mdx","permalink":"/ckibana-docs/changelog","source":"@site/src/pages/changelog.md"},{"type":"jsx","permalink":"/ckibana-docs/","source":"@site/src/pages/index.tsx"}]},"docusaurus-plugin-debug":{"default":null},"docusaurus-plugin-sitemap":{"default":null},"@easyops-cn/docusaurus-search-local":{"default":null}}')}}]); \ No newline at end of file diff --git a/assets/js/29a28e1e.d19a04c4.js b/assets/js/29a28e1e.d19a04c4.js new file mode 100644 index 0000000..1457ca3 --- /dev/null +++ b/assets/js/29a28e1e.d19a04c4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[8182],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return d}});var a=n(7294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}var u=a.createContext({}),c=function(e){var t=a.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(u.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var n=e.components,l=e.mdxType,i=e.originalType,u=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),k=c(n),d=l,m=k["".concat(u,".").concat(d)]||k[d]||s[d]||i;return n?a.createElement(m,r(r({ref:t},p),{},{components:n})):a.createElement(m,r({ref:t},p))}));function d(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var i=n.length,r=new Array(i);r[0]=k;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o.mdxType="string"==typeof e?e:l,r[1]=o;for(var c=2;c=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=i.createContext({}),c=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},d=i.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=c(n),h=r,b=d["".concat(l,".").concat(h)]||d[h]||p[h]||a;return n?i.createElement(b,o(o({ref:t},u),{},{components:n})):i.createElement(b,o({ref:t},u))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,o=new Array(a);o[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var c=2;cindex pattern",id:"2unable-to-create-an-index-pattern",children:[{value:"The troubleshooting steps are as follows:",id:"the-troubleshooting-steps-are-as-follows",children:[],level:3}],level:2},{value:"3\u3001When creating an index pattern, the time field cannot be selected.",id:"3when-creating-an-index-pattern-the-time-field-cannot-be-selected",children:[],level:2},{value:"4\u3001Unable to retrieve data.",id:"4unable-to-retrieve-data",children:[],level:2},{value:"5\u3001High CPU usage in ClickHouse",id:"5high-cpu-usage-in-clickhouse",children:[],level:2},{value:"6\u3001User Privilege Error",id:"6user-privilege-error",children:[],level:2}],p={toc:u};function d(e){var t=e.components,s=(0,r.Z)(e,o);return(0,a.kt)("wrapper",(0,i.Z)({},p,s,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"troubleshooting"},"troubleshooting"),(0,a.kt)("h2",{id:"1cannot-open-kibana"},"1\u3001Cannot open Kibana."),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(7991).Z})),(0,a.kt)("p",null,"The high probability of this error is that the initialization configuration is not correct."),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"1\uff09Check if the metadata cluster in the configuration is correct")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"2\uff09Check the ",(0,a.kt)("inlineCode",{parentName:"strong"},"elasticsearchHosts")," parameter in Kibana's configuration to see if the proxy address is correct and accessible. The following information should appear to indicate that the proxy configuration is correct")),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(5252).Z})),(0,a.kt)("h2",{id:"2unable-to-create-an-index-pattern"},"2\u3001Unable to create an ",(0,a.kt)("inlineCode",{parentName:"h2"},"index pattern")),(0,a.kt)("p",null,"As shown in the figure, the red box is when creating the index pattern. If the corresponding index pattern cannot be created."),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(4793).Z})),(0,a.kt)("h3",{id:"the-troubleshooting-steps-are-as-follows"},"The troubleshooting steps are as follows:"),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"1\uff09First determine whether a whitelist has been added to the table name, please refer to:",(0,a.kt)("a",{parentName:"strong",href:"https://github.com/TongchengOpenSource/ckibana-docs/blob/main/api-docs.md"},"api-docs")," Update the whitelist index interface")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"2\uff09Determine whether the index pattern to be created is consistent with the ck table. The index pattern and the ck table name are an exact match")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"3\uff09Check whether the configuration of the ClickHouse database is normal.")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"4\uff09Using the SQL output from the logs, check whether the corresponding table can be queried in ClickHouse")),(0,a.kt)("p",null,"After opening this interface, the output of the sql can be seen in CKibana's log, paste it into clickhouse and execute to view it."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"[query][87ms] sql=SELECT name FROM system.tables WHERE database = 'ops'\n")),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(2041).Z})),(0,a.kt)("h2",{id:"3when-creating-an-index-pattern-the-time-field-cannot-be-selected"},"3\u3001When creating an index pattern, the time field cannot be selected."),(0,a.kt)("p",null,"The logic for matching the time field is:"),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"1\uff09Fields of type Date, such as DateTime64, will be recognized as time fields.")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},'2\uff09Alternatively, if the field name contains "time", such as (@timestamp UInt64), it will be recognized as a time field.')),(0,a.kt)("p",null,"Either of these conditions will be satisfied and the field will be recognized as a time field. If the time field cannot be selected, you need to check whether the fields in the ClickHouse table meet the matching logic."),(0,a.kt)("h2",{id:"4unable-to-retrieve-data"},"4\u3001Unable to retrieve data."),(0,a.kt)("p",null,"You can see the specific SQL query being executed by opening the F12 console and inspecting the response."),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(2768).Z})),(0,a.kt)("h2",{id:"5high-cpu-usage-in-clickhouse"},"5\u3001High CPU usage in ClickHouse"),(0,a.kt)("p",null,"Specific analysis can be done based on ",(0,a.kt)("inlineCode",{parentName:"p"},"system.query_log")," in ClickHouse, with a focus on the two indicators ",(0,a.kt)("inlineCode",{parentName:"p"},"read_rows")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"read_bytes")),(0,a.kt)("p",null,"The processing plan includes:"),(0,a.kt)("p",null,"**1\uff09Find the corresponding SQL query and add it to the CKibana blacklist."),(0,a.kt)("p",null,"**2\uff09Adjust the corresponding chart"),(0,a.kt)("h2",{id:"6user-privilege-error"},"6\u3001User Privilege Error"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-java"},' [{"type":"security_exception","reason":"action [indices:data/write/bulk[s]] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.kibana_analytics_8.11.3_001], this action is granted by the index privileges [create_doc,create,delete,index,write,all]"},{"type":"security_exception","reason":"action [indices:data/write/bulk[s]] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.kibana_analytics_8.11.3_001],\n')),(0,a.kt)("p",null,"When a similar error occurs, it means that the user lacks the following permissions, which can be solved by adding them in kibana:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"kibana_system")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"kibana_admin")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"superuser"))))}d.isMDXComponent=!0},4793:function(e,t,n){t.Z=n.p+"assets/images/img01-aa99af9a331d76742dd18077e7ec3ae6.png"},7991:function(e,t,n){t.Z=n.p+"assets/images/img02-866ea913c621c0783cbccec13fa22125.png"},5252:function(e,t,n){t.Z=n.p+"assets/images/img03-9a602c7078790aa3b2503dbe6f810cb3.png"},2768:function(e,t,n){t.Z=n.p+"assets/images/troubleshooting01-978f5c98da7d4607eb4ac57d4e4fab15.png"},2041:function(e,t,n){t.Z=n.p+"assets/images/troubleshooting02-81484b9d91c93cbb1b20c97a3fad8d15.png"}}]); \ No newline at end of file diff --git a/assets/js/3450.c478ccbd.js b/assets/js/3450.c478ccbd.js new file mode 100644 index 0000000..5c29837 --- /dev/null +++ b/assets/js/3450.c478ccbd.js @@ -0,0 +1 @@ +(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[3450],{4493:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(655),r=(0,a.__importDefault)(n(7294)),o=(0,a.__importDefault)(n(1262));function i(e){return r.default.createElement(o.default,null,(function(){var t=n(5171).default;return r.default.createElement(t,Object.assign({},e))}))}t.default=function(e){var t=e.src,n=e.collapseDepth;return r.default.createElement(i,{src:t,style:{marginTop:"10px",padding:"10px",borderRadius:"4px",backgroundColor:"#292a2b"},name:null,theme:"paraiso",shouldCollapse:function(e){return null!==e.name&&Object.keys(e.src).length>50},collapsed:n,groupArraysAfterLength:5,enableClipboard:!1,displayDataTypes:!1})}},4022:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(655),r=(0,a.__importDefault)(n(7294)),o=(0,a.__importDefault)(n(2859)),i=(0,a.__importDefault)(n(9960)),s=(0,a.__importDefault)(n(5647));function c(e){var t=e.to,n=e.children;return r.default.createElement(i.default,{className:s.default.navlink,isNavLink:!0,to:t,exact:!0,activeStyle:{backgroundColor:"#363739"}},n)}t.default=function(e){var t=e.children;return r.default.createElement(r.default.Fragment,null,r.default.createElement(o.default,null,r.default.createElement("html",{lang:"en"}),r.default.createElement("title",null,"Docusaurus debug panel")),r.default.createElement("div",null,r.default.createElement("nav",{className:s.default.nav},r.default.createElement(c,{to:"/__docusaurus/debug"},"Config"),r.default.createElement(c,{to:"/__docusaurus/debug/metadata"},"Metadata"),r.default.createElement(c,{to:"/__docusaurus/debug/registry"},"Registry"),r.default.createElement(c,{to:"/__docusaurus/debug/routes"},"Routes"),r.default.createElement(c,{to:"/__docusaurus/debug/content"},"Content"),r.default.createElement(c,{to:"/__docusaurus/debug/globalData"},"Global data")),r.default.createElement("main",{className:s.default.container},t)))}},5647:function(e,t,n){"use strict";n.r(t),t.default={container:"container_y4id",nav:"nav_a6CY",navlink:"navlink_h2iO",active:"active_+wf5"}},5171:function(e,t,n){var a;e.exports=(a=n(7294),function(e){var t={};function n(a){if(t[a])return t[a].exports;var r=t[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(a,r,function(t){return e[t]}.bind(null,r));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=48)}([function(e,t){e.exports=a},function(e,t){var n=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=n)},function(e,t,n){var a=n(26)("wks"),r=n(17),o=n(3).Symbol,i="function"==typeof o;(e.exports=function(e){return a[e]||(a[e]=i&&o[e]||(i?o:r)("Symbol."+e))}).store=a},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t,n){e.exports=!n(8)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var a=n(7),r=n(16);e.exports=n(4)?function(e,t,n){return a.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var a=n(10),r=n(35),o=n(23),i=Object.defineProperty;t.f=n(4)?Object.defineProperty:function(e,t,n){if(a(e),t=o(t,!0),a(n),r)try{return i(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var a=n(40),r=n(22);e.exports=function(e){return a(r(e))}},function(e,t,n){var a=n(11);e.exports=function(e){if(!a(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){e.exports={}},function(e,t,n){var a=n(39),r=n(27);e.exports=Object.keys||function(e){return a(e,r)}},function(e,t){e.exports=!0},function(e,t,n){var a=n(3),r=n(1),o=n(53),i=n(6),s=n(5),c=function(e,t,n){var l,u,f,d=e&c.F,p=e&c.G,b=e&c.S,h=e&c.P,v=e&c.B,m=e&c.W,y=p?r:r[t]||(r[t]={}),g=y.prototype,E=p?a:b?a[t]:(a[t]||{}).prototype;for(l in p&&(n=t),n)(u=!d&&E&&void 0!==E[l])&&s(y,l)||(f=u?E[l]:n[l],y[l]=p&&"function"!=typeof E[l]?n[l]:v&&u?o(f,a):m&&E[l]==f?function(e){var t=function(t,n,a){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,a)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(f):h&&"function"==typeof f?o(Function.call,f):f,h&&((y.virtual||(y.virtual={}))[l]=f,e&c.R&&g&&!g[l]&&i(g,l,f)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){var n=0,a=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+a).toString(36))}},function(e,t,n){var a=n(22);e.exports=function(e){return Object(a(e))}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){"use strict";var a=n(52)(!0);n(34)(String,"String",(function(e){this._t=String(e),this._i=0}),(function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=a(t,n),this._i+=e.length,{value:e,done:!1})}))},function(e,t){var n=Math.ceil,a=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?a:n)(e)}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var a=n(11);e.exports=function(e,t){if(!a(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!a(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!a(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!a(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var a=n(26)("keys"),r=n(17);e.exports=function(e){return a[e]||(a[e]=r(e))}},function(e,t,n){var a=n(1),r=n(3),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:a.version,mode:n(14)?"pure":"global",copyright:"\xa9 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var a=n(7).f,r=n(5),o=n(2)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,o)&&a(e,o,{configurable:!0,value:t})}},function(e,t,n){n(62);for(var a=n(3),r=n(6),o=n(12),i=n(2)("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),c=0;cdocument.F=Object<\/script>"),e.close(),c=e.F;a--;)delete c.prototype[o[a]];return c()};e.exports=Object.create||function(e,t){var n;return null!==e?(s.prototype=a(e),n=new s,s.prototype=null,n[i]=e):n=c(),void 0===t?n:r(n,t)}},function(e,t,n){var a=n(5),r=n(9),o=n(57)(!1),i=n(25)("IE_PROTO");e.exports=function(e,t){var n,s=r(e),c=0,l=[];for(n in s)n!=i&&a(s,n)&&l.push(n);for(;t.length>c;)a(s,n=t[c++])&&(~o(l,n)||l.push(n));return l}},function(e,t,n){var a=n(24);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==a(e)?e.split(""):Object(e)}},function(e,t,n){var a=n(39),r=n(27).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return a(e,r)}},function(e,t,n){var a=n(24),r=n(2)("toStringTag"),o="Arguments"==a(function(){return arguments}());e.exports=function(e){var t,n,i;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),r))?n:o?a(t):"Object"==(i=a(t))&&"function"==typeof t.callee?"Arguments":i}},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){var n=/-?\d+(\.\d+)?%?/g;e.exports=function(e){return e.match(n)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getBase16Theme=t.createStyling=t.invertTheme=void 0;var a=p(n(49)),r=p(n(76)),o=p(n(81)),i=p(n(89)),s=p(n(93)),c=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(94)),l=p(n(132)),u=p(n(133)),f=p(n(138)),d=n(139);function p(e){return e&&e.__esModule?e:{default:e}}var b=c.default,h=(0,i.default)(b),v=(0,f.default)(u.default,d.rgb2yuv,(function(e){var t,n=(0,o.default)(e,3);return[(t=n[0],t<.25?1:t<.5?.9-t:1.1-t),n[1],n[2]]}),d.yuv2rgb,l.default),m=function(e){return function(t){return{className:[t.className,e.className].filter(Boolean).join(" "),style:(0,r.default)({},t.style||{},e.style||{})}}},y=function(e,t){var n=(0,i.default)(t);for(var o in e)-1===n.indexOf(o)&&n.push(o);return n.reduce((function(n,o){return n[o]=function(e,t){if(void 0===e)return t;if(void 0===t)return e;var n=void 0===e?"undefined":(0,a.default)(e),o=void 0===t?"undefined":(0,a.default)(t);switch(n){case"string":switch(o){case"string":return[t,e].filter(Boolean).join(" ");case"object":return m({className:e,style:t});case"function":return function(n){for(var a=arguments.length,r=Array(a>1?a-1:0),o=1;o1?a-1:0),o=1;o1?a-1:0),o=1;o1?a-1:0),o=1;o1?a-1:0),o=1;o2?n-2:0),s=2;s3?t-3:0),a=3;a1&&void 0!==arguments[1]?arguments[1]:{},c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},l=o.defaultBase16,u=void 0===l?b:l,f=o.base16Themes,d=j(c,void 0===f?null:f);d&&(c=(0,r.default)({},d,c));var p=h.reduce((function(e,t){return e[t]=c[t]||u[t],e}),{}),v=(0,i.default)(c).reduce((function(e,t){return-1===h.indexOf(t)?(e[t]=c[t],e):e}),{}),m=e(p),E=y(v,m);return(0,s.default)(g,2).apply(void 0,[E].concat(n))}),3),t.getBase16Theme=function(e,t){if(e&&e.extend&&(e=e.extend),"string"==typeof e){var n=e.split(":"),a=(0,o.default)(n,2),r=a[0],i=a[1];e=(t||{})[r]||c[r],"inverted"===i&&(e=E(e))}return e&&e.hasOwnProperty("base00")?e:void 0})},function(e,t,n){"use strict";var a,r="object"==typeof Reflect?Reflect:null,o=r&&"function"==typeof r.apply?r.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};a=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var i=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,e.exports.once=function(e,t){return new Promise((function(n,a){function r(){void 0!==o&&e.removeListener("error",o),n([].slice.call(arguments))}var o;"error"!==t&&(o=function(n){e.removeListener(t,r),a(n)},e.once("error",o)),e.once(t,r)}))},s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var c=10;function l(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function u(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function f(e,t,n,a){var r,o,i,s;if(l(n),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),o=e._events),i=o[t]),void 0===i)i=o[t]=n,++e._eventsCount;else if("function"==typeof i?i=o[t]=a?[n,i]:[i,n]:a?i.unshift(n):i.push(n),(r=u(e))>0&&i.length>r&&!i.warned){i.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=i.length,s=c,console&&console.warn&&console.warn(s)}return e}function d(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function p(e,t,n){var a={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},r=d.bind(a);return r.listener=n,a.wrapFn=r,r}function b(e,t,n){var a=e._events;if(void 0===a)return[];var r=a[t];return void 0===r?[]:"function"==typeof r?n?[r.listener||r]:[r]:n?function(e){for(var t=new Array(e.length),n=0;n0&&(i=t[0]),i instanceof Error)throw i;var s=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw s.context=i,s}var c=r[e];if(void 0===c)return!1;if("function"==typeof c)o(c,this,t);else{var l=c.length,u=v(c,l);for(n=0;n=0;o--)if(n[o]===t||n[o].listener===t){i=n[o].listener,r=o;break}if(r<0)return this;0===r?n.shift():function(e,t){for(;t+1=0;a--)this.removeListener(e,t[a]);return this},s.prototype.listeners=function(e){return b(this,e,!0)},s.prototype.rawListeners=function(e){return b(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):h.call(e,t)},s.prototype.listenerCount=h,s.prototype.eventNames=function(){return this._eventsCount>0?a(this._events):[]}},function(e,t,n){e.exports.Dispatcher=n(140)},function(e,t,n){e.exports=n(142)},function(e,t,n){"use strict";t.__esModule=!0;var a=i(n(50)),r=i(n(65)),o="function"==typeof r.default&&"symbol"==typeof a.default?function(e){return typeof e}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":typeof e};function i(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof r.default&&"symbol"===o(a.default)?function(e){return void 0===e?"undefined":o(e)}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":void 0===e?"undefined":o(e)}},function(e,t,n){e.exports={default:n(51),__esModule:!0}},function(e,t,n){n(20),n(29),e.exports=n(30).f("iterator")},function(e,t,n){var a=n(21),r=n(22);e.exports=function(e){return function(t,n){var o,i,s=String(r(t)),c=a(n),l=s.length;return c<0||c>=l?e?"":void 0:(o=s.charCodeAt(c))<55296||o>56319||c+1===l||(i=s.charCodeAt(c+1))<56320||i>57343?e?s.charAt(c):o:e?s.slice(c,c+2):i-56320+(o-55296<<10)+65536}}},function(e,t,n){var a=n(54);e.exports=function(e,t,n){if(a(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,a){return e.call(t,n,a)};case 3:return function(n,a,r){return e.call(t,n,a,r)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){"use strict";var a=n(38),r=n(16),o=n(28),i={};n(6)(i,n(2)("iterator"),(function(){return this})),e.exports=function(e,t,n){e.prototype=a(i,{next:r(1,n)}),o(e,t+" Iterator")}},function(e,t,n){var a=n(7),r=n(10),o=n(13);e.exports=n(4)?Object.defineProperties:function(e,t){r(e);for(var n,i=o(t),s=i.length,c=0;s>c;)a.f(e,n=i[c++],t[n]);return e}},function(e,t,n){var a=n(9),r=n(58),o=n(59);e.exports=function(e){return function(t,n,i){var s,c=a(t),l=r(c.length),u=o(i,l);if(e&&n!=n){for(;l>u;)if((s=c[u++])!=s)return!0}else for(;l>u;u++)if((e||u in c)&&c[u]===n)return e||u||0;return!e&&-1}}},function(e,t,n){var a=n(21),r=Math.min;e.exports=function(e){return e>0?r(a(e),9007199254740991):0}},function(e,t,n){var a=n(21),r=Math.max,o=Math.min;e.exports=function(e,t){return(e=a(e))<0?r(e+t,0):o(e,t)}},function(e,t,n){var a=n(3).document;e.exports=a&&a.documentElement},function(e,t,n){var a=n(5),r=n(18),o=n(25)("IE_PROTO"),i=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=r(e),a(e,o)?e[o]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?i:null}},function(e,t,n){"use strict";var a=n(63),r=n(64),o=n(12),i=n(9);e.exports=n(34)(Array,"Array",(function(e,t){this._t=i(e),this._i=0,this._k=t}),(function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,r(1)):r(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])}),"values"),o.Arguments=o.Array,a("keys"),a("values"),a("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){e.exports={default:n(66),__esModule:!0}},function(e,t,n){n(67),n(73),n(74),n(75),e.exports=n(1).Symbol},function(e,t,n){"use strict";var a=n(3),r=n(5),o=n(4),i=n(15),s=n(37),c=n(68).KEY,l=n(8),u=n(26),f=n(28),d=n(17),p=n(2),b=n(30),h=n(31),v=n(69),m=n(70),y=n(10),g=n(11),E=n(18),j=n(9),_=n(23),x=n(16),k=n(38),O=n(71),C=n(72),S=n(32),w=n(7),A=n(13),M=C.f,P=w.f,F=O.f,D=a.Symbol,I=a.JSON,R=I&&I.stringify,L=p("_hidden"),B=p("toPrimitive"),N={}.propertyIsEnumerable,z=u("symbol-registry"),T=u("symbols"),q=u("op-symbols"),V=Object.prototype,K="function"==typeof D&&!!S.f,W=a.QObject,H=!W||!W.prototype||!W.prototype.findChild,U=o&&l((function(){return 7!=k(P({},"a",{get:function(){return P(this,"a",{value:7}).a}})).a}))?function(e,t,n){var a=M(V,t);a&&delete V[t],P(e,t,n),a&&e!==V&&P(V,t,a)}:P,G=function(e){var t=T[e]=k(D.prototype);return t._k=e,t},Y=K&&"symbol"==typeof D.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof D},$=function(e,t,n){return e===V&&$(q,t,n),y(e),t=_(t,!0),y(n),r(T,t)?(n.enumerable?(r(e,L)&&e[L][t]&&(e[L][t]=!1),n=k(n,{enumerable:x(0,!1)})):(r(e,L)||P(e,L,x(1,{})),e[L][t]=!0),U(e,t,n)):P(e,t,n)},J=function(e,t){y(e);for(var n,a=v(t=j(t)),r=0,o=a.length;o>r;)$(e,n=a[r++],t[n]);return e},Q=function(e){var t=N.call(this,e=_(e,!0));return!(this===V&&r(T,e)&&!r(q,e))&&(!(t||!r(this,e)||!r(T,e)||r(this,L)&&this[L][e])||t)},Z=function(e,t){if(e=j(e),t=_(t,!0),e!==V||!r(T,t)||r(q,t)){var n=M(e,t);return!n||!r(T,t)||r(e,L)&&e[L][t]||(n.enumerable=!0),n}},X=function(e){for(var t,n=F(j(e)),a=[],o=0;n.length>o;)r(T,t=n[o++])||t==L||t==c||a.push(t);return a},ee=function(e){for(var t,n=e===V,a=F(n?q:j(e)),o=[],i=0;a.length>i;)!r(T,t=a[i++])||n&&!r(V,t)||o.push(T[t]);return o};K||(s((D=function(){if(this instanceof D)throw TypeError("Symbol is not a constructor!");var e=d(arguments.length>0?arguments[0]:void 0),t=function(n){this===V&&t.call(q,n),r(this,L)&&r(this[L],e)&&(this[L][e]=!1),U(this,e,x(1,n))};return o&&H&&U(V,e,{configurable:!0,set:t}),G(e)}).prototype,"toString",(function(){return this._k})),C.f=Z,w.f=$,n(41).f=O.f=X,n(19).f=Q,S.f=ee,o&&!n(14)&&s(V,"propertyIsEnumerable",Q,!0),b.f=function(e){return G(p(e))}),i(i.G+i.W+i.F*!K,{Symbol:D});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ne=0;te.length>ne;)p(te[ne++]);for(var ae=A(p.store),re=0;ae.length>re;)h(ae[re++]);i(i.S+i.F*!K,"Symbol",{for:function(e){return r(z,e+="")?z[e]:z[e]=D(e)},keyFor:function(e){if(!Y(e))throw TypeError(e+" is not a symbol!");for(var t in z)if(z[t]===e)return t},useSetter:function(){H=!0},useSimple:function(){H=!1}}),i(i.S+i.F*!K,"Object",{create:function(e,t){return void 0===t?k(e):J(k(e),t)},defineProperty:$,defineProperties:J,getOwnPropertyDescriptor:Z,getOwnPropertyNames:X,getOwnPropertySymbols:ee});var oe=l((function(){S.f(1)}));i(i.S+i.F*oe,"Object",{getOwnPropertySymbols:function(e){return S.f(E(e))}}),I&&i(i.S+i.F*(!K||l((function(){var e=D();return"[null]"!=R([e])||"{}"!=R({a:e})||"{}"!=R(Object(e))}))),"JSON",{stringify:function(e){for(var t,n,a=[e],r=1;arguments.length>r;)a.push(arguments[r++]);if(n=t=a[1],(g(t)||void 0!==e)&&!Y(e))return m(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!Y(t))return t}),a[1]=t,R.apply(I,a)}}),D.prototype[B]||n(6)(D.prototype,B,D.prototype.valueOf),f(D,"Symbol"),f(Math,"Math",!0),f(a.JSON,"JSON",!0)},function(e,t,n){var a=n(17)("meta"),r=n(11),o=n(5),i=n(7).f,s=0,c=Object.isExtensible||function(){return!0},l=!n(8)((function(){return c(Object.preventExtensions({}))})),u=function(e){i(e,a,{value:{i:"O"+ ++s,w:{}}})},f=e.exports={KEY:a,NEED:!1,fastKey:function(e,t){if(!r(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!o(e,a)){if(!c(e))return"F";if(!t)return"E";u(e)}return e[a].i},getWeak:function(e,t){if(!o(e,a)){if(!c(e))return!0;if(!t)return!1;u(e)}return e[a].w},onFreeze:function(e){return l&&f.NEED&&c(e)&&!o(e,a)&&u(e),e}}},function(e,t,n){var a=n(13),r=n(32),o=n(19);e.exports=function(e){var t=a(e),n=r.f;if(n)for(var i,s=n(e),c=o.f,l=0;s.length>l;)c.call(e,i=s[l++])&&t.push(i);return t}},function(e,t,n){var a=n(24);e.exports=Array.isArray||function(e){return"Array"==a(e)}},function(e,t,n){var a=n(9),r=n(41).f,o={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return i&&"[object Window]"==o.call(e)?function(e){try{return r(e)}catch(e){return i.slice()}}(e):r(a(e))}},function(e,t,n){var a=n(19),r=n(16),o=n(9),i=n(23),s=n(5),c=n(35),l=Object.getOwnPropertyDescriptor;t.f=n(4)?l:function(e,t){if(e=o(e),t=i(t,!0),c)try{return l(e,t)}catch(e){}if(s(e,t))return r(!a.f.call(e,t),e[t])}},function(e,t){},function(e,t,n){n(31)("asyncIterator")},function(e,t,n){n(31)("observable")},function(e,t,n){"use strict";t.__esModule=!0;var a,r=(a=n(77))&&a.__esModule?a:{default:a};t.default=r.default||function(e){for(var t=1;tu;)for(var p,b=c(arguments[u++]),h=f?r(b).concat(f(b)):r(b),v=h.length,m=0;v>m;)p=h[m++],a&&!d.call(b,p)||(n[p]=b[p]);return n}:l},function(e,t,n){"use strict";t.__esModule=!0;var a=o(n(82)),r=o(n(85));function o(e){return e&&e.__esModule?e:{default:e}}t.default=function(e,t){if(Array.isArray(e))return e;if((0,a.default)(Object(e)))return function(e,t){var n=[],a=!0,o=!1,i=void 0;try{for(var s,c=(0,r.default)(e);!(a=(s=c.next()).done)&&(n.push(s.value),!t||n.length!==t);a=!0);}catch(e){o=!0,i=e}finally{try{!a&&c.return&&c.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}},function(e,t,n){e.exports={default:n(83),__esModule:!0}},function(e,t,n){n(29),n(20),e.exports=n(84)},function(e,t,n){var a=n(42),r=n(2)("iterator"),o=n(12);e.exports=n(1).isIterable=function(e){var t=Object(e);return void 0!==t[r]||"@@iterator"in t||o.hasOwnProperty(a(t))}},function(e,t,n){e.exports={default:n(86),__esModule:!0}},function(e,t,n){n(29),n(20),e.exports=n(87)},function(e,t,n){var a=n(10),r=n(88);e.exports=n(1).getIterator=function(e){var t=r(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return a(t.call(e))}},function(e,t,n){var a=n(42),r=n(2)("iterator"),o=n(12);e.exports=n(1).getIteratorMethod=function(e){if(null!=e)return e[r]||e["@@iterator"]||o[a(e)]}},function(e,t,n){e.exports={default:n(90),__esModule:!0}},function(e,t,n){n(91),e.exports=n(1).Object.keys},function(e,t,n){var a=n(18),r=n(13);n(92)("keys",(function(){return function(e){return r(a(e))}}))},function(e,t,n){var a=n(15),r=n(1),o=n(8);e.exports=function(e,t){var n=(r.Object||{})[e]||Object[e],i={};i[e]=t(n),a(a.S+a.F*o((function(){n(1)})),"Object",i)}},function(e,t,n){(function(t){var n=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],a=/^\s+|\s+$/g,r=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,o=/\{\n\/\* \[wrapped with (.+)\] \*/,i=/,? & /,s=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,l=/^\[object .+?Constructor\]$/,u=/^0o[0-7]+$/i,f=/^(?:0|[1-9]\d*)$/,d=parseInt,p="object"==typeof t&&t&&t.Object===Object&&t,b="object"==typeof self&&self&&self.Object===Object&&self,h=p||b||Function("return this")();function v(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function m(e,t){return!(!e||!e.length)&&function(e,t,n){if(t!=t)return function(e,t,n,a){for(var r=e.length,o=n+(a?1:-1);a?o--:++o-1}function y(e){return e!=e}function g(e,t){for(var n=e.length,a=0;n--;)e[n]===t&&a++;return a}function E(e,t){for(var n=-1,a=e.length,r=0,o=[];++n2?_:void 0);function L(e){return X(e)?F(e):{}}function B(e){return!(!X(e)||function(e){return!!S&&S in e}(e))&&(function(e){var t=X(e)?M.call(e):"";return"[object Function]"==t||"[object GeneratorFunction]"==t}(e)||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}(e)?P:l).test(function(e){if(null!=e){try{return w.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e))}function N(e,t,n,a){for(var r=-1,o=e.length,i=n.length,s=-1,c=t.length,l=D(o-i,0),u=Array(c+l),f=!a;++s1&&j.reverse(),u&&c1?"& ":"")+t[a],t=t.join(n>2?", ":" "),e.replace(r,"{\n/* [wrapped with "+t+"] */\n")}function Y(e,t){return!!(t=null==t?9007199254740991:t)&&("number"==typeof e||f.test(e))&&e>-1&&e%1==0&&e1&&a--,o=6*a<1?t+6*(n-t)*a:2*a<1?n:3*a<2?t+(n-t)*(2/3-a)*6:t,r[l]=255*o;return r}},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t,a="object"==typeof self&&self&&self.Object===Object&&self,r=n||a||Function("return this")();function o(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function i(e,t){for(var n=-1,a=t.length,r=e.length;++n-1&&e%1==0&&e<=9007199254740991}(e.length)&&!function(e){var t=function(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}(e)?l.call(e):"";return"[object Function]"==t||"[object GeneratorFunction]"==t}(e)}(e)}(e)&&c.call(e,"callee")&&(!f.call(e,"callee")||"[object Arguments]"==l.call(e))}(e)||!!(d&&e&&e[d])}var h,v,m,y=Array.isArray,g=(v=function(e){var t=(e=function e(t,n,a,r,o){var s=-1,c=t.length;for(a||(a=b),o||(o=[]);++s0&&a(l)?n>1?e(l,n-1,a,r,o):i(o,l):r||(o[o.length]=l)}return o}(e,1)).length,n=t;for(h&&e.reverse();n--;)if("function"!=typeof e[n])throw new TypeError("Expected a function");return function(){for(var n=0,a=t?e[n].apply(this,arguments):arguments[0];++n2?n-2:0),o=2;o=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function x(e){var t=function(e){return{}.toString.call(e).match(/\s([a-zA-Z]+)/)[1].toLowerCase()}(e);return"number"===t&&(t=isNaN(e)?"nan":(0|e)!=e?"float":"integer"),t}y.__suppressDeprecationWarning=!0,g.__suppressDeprecationWarning=!0,E.__suppressDeprecationWarning=!0;var k={scheme:"rjv-default",author:"mac gainor",base00:"rgba(0, 0, 0, 0)",base01:"rgb(245, 245, 245)",base02:"rgb(235, 235, 235)",base03:"#93a1a1",base04:"rgba(0, 0, 0, 0.3)",base05:"#586e75",base06:"#073642",base07:"#002b36",base08:"#d33682",base09:"#cb4b16",base0A:"#dc322f",base0B:"#859900",base0C:"#6c71c4",base0D:"#586e75",base0E:"#2aa198",base0F:"#268bd2"},O={scheme:"rjv-grey",author:"mac gainor",base00:"rgba(1, 1, 1, 0)",base01:"rgba(1, 1, 1, 0.1)",base02:"rgba(0, 0, 0, 0.2)",base03:"rgba(1, 1, 1, 0.3)",base04:"rgba(0, 0, 0, 0.4)",base05:"rgba(1, 1, 1, 0.5)",base06:"rgba(1, 1, 1, 0.6)",base07:"rgba(1, 1, 1, 0.7)",base08:"rgba(1, 1, 1, 0.8)",base09:"rgba(1, 1, 1, 0.8)",base0A:"rgba(1, 1, 1, 0.8)",base0B:"rgba(1, 1, 1, 0.8)",base0C:"rgba(1, 1, 1, 0.8)",base0D:"rgba(1, 1, 1, 0.8)",base0E:"rgba(1, 1, 1, 0.8)",base0F:"rgba(1, 1, 1, 0.8)"},C={white:"#fff",black:"#000",transparent:"rgba(1, 1, 1, 0)",globalFontFamily:"monospace",globalCursor:"default",indentBlockWidth:"5px",braceFontWeight:"bold",braceCursor:"pointer",ellipsisFontSize:"18px",ellipsisLineHeight:"10px",ellipsisCursor:"pointer",keyMargin:"0px 5px",keyLetterSpacing:"0.5px",keyFontStyle:"none",keyBorderRadius:"3px",keyColonWeight:"bold",keyVerticalAlign:"top",keyOpacity:"0.85",keyOpacityHover:"1",keyValPaddingTop:"3px",keyValPaddingBottom:"3px",keyValPaddingRight:"5px",keyValBorderLeft:"1px solid",keyValBorderHover:"2px solid",keyValPaddingHover:"3px 5px 3px 4px",pushedContentMarginLeft:"6px",variableValuePaddingRight:"6px",nullFontSize:"11px",nullFontWeight:"bold",nullPadding:"1px 2px",nullBorderRadius:"3px",nanFontSize:"11px",nanFontWeight:"bold",nanPadding:"1px 2px",nanBorderRadius:"3px",undefinedFontSize:"11px",undefinedFontWeight:"bold",undefinedPadding:"1px 2px",undefinedBorderRadius:"3px",dataTypeFontSize:"11px",dataTypeMarginRight:"4px",datatypeOpacity:"0.8",objectSizeBorderRadius:"3px",objectSizeFontStyle:"italic",objectSizeMargin:"0px 6px 0px 0px",clipboardCursor:"pointer",clipboardCheckMarginLeft:"-12px",metaDataPadding:"0px 0px 0px 10px",arrayGroupMetaPadding:"0px 0px 0px 4px",iconContainerWidth:"17px",tooltipPadding:"4px",editInputMinWidth:"130px",editInputBorderRadius:"2px",editInputPadding:"5px",editInputMarginRight:"4px",editInputFontFamily:"monospace",iconCursor:"pointer",iconFontSize:"15px",iconPaddingRight:"1px",dateValueMarginLeft:"2px",iconMarginRight:"3px",detectedRowPaddingTop:"3px",addKeyCoverBackground:"rgba(255, 255, 255, 0.3)",addKeyCoverPosition:"absolute",addKeyCoverPositionPx:"0px",addKeyModalWidth:"200px",addKeyModalMargin:"auto",addKeyModalPadding:"10px",addKeyModalRadius:"3px"},S=n(45),w=function(e){var t=function(e){return{backgroundColor:e.base00,ellipsisColor:e.base09,braceColor:e.base07,expandedIcon:e.base0D,collapsedIcon:e.base0E,keyColor:e.base07,arrayKeyColor:e.base0C,objectSize:e.base04,copyToClipboard:e.base0F,copyToClipboardCheck:e.base0D,objectBorder:e.base02,dataTypes:{boolean:e.base0E,date:e.base0D,float:e.base0B,function:e.base0D,integer:e.base0F,string:e.base09,nan:e.base08,null:e.base0A,undefined:e.base05,regexp:e.base0A,background:e.base02},editVariable:{editIcon:e.base0E,cancelIcon:e.base09,removeIcon:e.base09,addIcon:e.base0E,checkIcon:e.base0E,background:e.base01,color:e.base0A,border:e.base07},addKeyModal:{background:e.base05,border:e.base04,color:e.base0A,labelColor:e.base01},validationFailure:{background:e.base09,iconColor:e.base01,fontColor:e.base01}}}(e);return{"app-container":{fontFamily:C.globalFontFamily,cursor:C.globalCursor,backgroundColor:t.backgroundColor,position:"relative"},ellipsis:{display:"inline-block",color:t.ellipsisColor,fontSize:C.ellipsisFontSize,lineHeight:C.ellipsisLineHeight,cursor:C.ellipsisCursor},"brace-row":{display:"inline-block",cursor:"pointer"},brace:{display:"inline-block",cursor:C.braceCursor,fontWeight:C.braceFontWeight,color:t.braceColor},"expanded-icon":{color:t.expandedIcon},"collapsed-icon":{color:t.collapsedIcon},colon:{display:"inline-block",margin:C.keyMargin,color:t.keyColor,verticalAlign:"top"},objectKeyVal:function(e,n){return{style:o({paddingTop:C.keyValPaddingTop,paddingRight:C.keyValPaddingRight,paddingBottom:C.keyValPaddingBottom,borderLeft:C.keyValBorderLeft+" "+t.objectBorder,":hover":{paddingLeft:n.paddingLeft-1+"px",borderLeft:C.keyValBorderHover+" "+t.objectBorder}},n)}},"object-key-val-no-border":{padding:C.keyValPadding},"pushed-content":{marginLeft:C.pushedContentMarginLeft},variableValue:function(e,t){return{style:o({display:"inline-block",paddingRight:C.variableValuePaddingRight,position:"relative"},t)}},"object-name":{display:"inline-block",color:t.keyColor,letterSpacing:C.keyLetterSpacing,fontStyle:C.keyFontStyle,verticalAlign:C.keyVerticalAlign,opacity:C.keyOpacity,":hover":{opacity:C.keyOpacityHover}},"array-key":{display:"inline-block",color:t.arrayKeyColor,letterSpacing:C.keyLetterSpacing,fontStyle:C.keyFontStyle,verticalAlign:C.keyVerticalAlign,opacity:C.keyOpacity,":hover":{opacity:C.keyOpacityHover}},"object-size":{color:t.objectSize,borderRadius:C.objectSizeBorderRadius,fontStyle:C.objectSizeFontStyle,margin:C.objectSizeMargin,cursor:"default"},"data-type-label":{fontSize:C.dataTypeFontSize,marginRight:C.dataTypeMarginRight,opacity:C.datatypeOpacity},boolean:{display:"inline-block",color:t.dataTypes.boolean},date:{display:"inline-block",color:t.dataTypes.date},"date-value":{marginLeft:C.dateValueMarginLeft},float:{display:"inline-block",color:t.dataTypes.float},function:{display:"inline-block",color:t.dataTypes.function,cursor:"pointer",whiteSpace:"pre-line"},"function-value":{fontStyle:"italic"},integer:{display:"inline-block",color:t.dataTypes.integer},string:{display:"inline-block",color:t.dataTypes.string},nan:{display:"inline-block",color:t.dataTypes.nan,fontSize:C.nanFontSize,fontWeight:C.nanFontWeight,backgroundColor:t.dataTypes.background,padding:C.nanPadding,borderRadius:C.nanBorderRadius},null:{display:"inline-block",color:t.dataTypes.null,fontSize:C.nullFontSize,fontWeight:C.nullFontWeight,backgroundColor:t.dataTypes.background,padding:C.nullPadding,borderRadius:C.nullBorderRadius},undefined:{display:"inline-block",color:t.dataTypes.undefined,fontSize:C.undefinedFontSize,padding:C.undefinedPadding,borderRadius:C.undefinedBorderRadius,backgroundColor:t.dataTypes.background},regexp:{display:"inline-block",color:t.dataTypes.regexp},"copy-to-clipboard":{cursor:C.clipboardCursor},"copy-icon":{color:t.copyToClipboard,fontSize:C.iconFontSize,marginRight:C.iconMarginRight,verticalAlign:"top"},"copy-icon-copied":{color:t.copyToClipboardCheck,marginLeft:C.clipboardCheckMarginLeft},"array-group-meta-data":{display:"inline-block",padding:C.arrayGroupMetaPadding},"object-meta-data":{display:"inline-block",padding:C.metaDataPadding},"icon-container":{display:"inline-block",width:C.iconContainerWidth},tooltip:{padding:C.tooltipPadding},removeVarIcon:{verticalAlign:"top",display:"inline-block",color:t.editVariable.removeIcon,cursor:C.iconCursor,fontSize:C.iconFontSize,marginRight:C.iconMarginRight},addVarIcon:{verticalAlign:"top",display:"inline-block",color:t.editVariable.addIcon,cursor:C.iconCursor,fontSize:C.iconFontSize,marginRight:C.iconMarginRight},editVarIcon:{verticalAlign:"top",display:"inline-block",color:t.editVariable.editIcon,cursor:C.iconCursor,fontSize:C.iconFontSize,marginRight:C.iconMarginRight},"edit-icon-container":{display:"inline-block",verticalAlign:"top"},"check-icon":{display:"inline-block",cursor:C.iconCursor,color:t.editVariable.checkIcon,fontSize:C.iconFontSize,paddingRight:C.iconPaddingRight},"cancel-icon":{display:"inline-block",cursor:C.iconCursor,color:t.editVariable.cancelIcon,fontSize:C.iconFontSize,paddingRight:C.iconPaddingRight},"edit-input":{display:"inline-block",minWidth:C.editInputMinWidth,borderRadius:C.editInputBorderRadius,backgroundColor:t.editVariable.background,color:t.editVariable.color,padding:C.editInputPadding,marginRight:C.editInputMarginRight,fontFamily:C.editInputFontFamily},"detected-row":{paddingTop:C.detectedRowPaddingTop},"key-modal-request":{position:C.addKeyCoverPosition,top:C.addKeyCoverPositionPx,left:C.addKeyCoverPositionPx,right:C.addKeyCoverPositionPx,bottom:C.addKeyCoverPositionPx,backgroundColor:C.addKeyCoverBackground},"key-modal":{width:C.addKeyModalWidth,backgroundColor:t.addKeyModal.background,marginLeft:C.addKeyModalMargin,marginRight:C.addKeyModalMargin,padding:C.addKeyModalPadding,borderRadius:C.addKeyModalRadius,marginTop:"15px",position:"relative"},"key-modal-label":{color:t.addKeyModal.labelColor,marginLeft:"2px",marginBottom:"5px",fontSize:"11px"},"key-modal-input-container":{overflow:"hidden"},"key-modal-input":{width:"100%",padding:"3px 6px",fontFamily:"monospace",color:t.addKeyModal.color,border:"none",boxSizing:"border-box",borderRadius:"2px"},"key-modal-cancel":{backgroundColor:t.editVariable.removeIcon,position:"absolute",top:"0px",right:"0px",borderRadius:"0px 3px 0px 3px",cursor:"pointer"},"key-modal-cancel-icon":{color:t.addKeyModal.labelColor,fontSize:C.iconFontSize,transform:"rotate(45deg)"},"key-modal-submit":{color:t.editVariable.addIcon,fontSize:C.iconFontSize,position:"absolute",right:"2px",top:"3px",cursor:"pointer"},"function-ellipsis":{display:"inline-block",color:t.ellipsisColor,fontSize:C.ellipsisFontSize,lineHeight:C.ellipsisLineHeight,cursor:C.ellipsisCursor},"validation-failure":{float:"right",padding:"3px 6px",borderRadius:"2px",cursor:"pointer",color:t.validationFailure.fontColor,backgroundColor:t.validationFailure.background},"validation-failure-label":{marginRight:"6px"},"validation-failure-clear":{position:"relative",verticalAlign:"top",cursor:"pointer",color:t.validationFailure.iconColor,fontSize:C.iconFontSize,transform:"rotate(45deg)"}}};function A(e,t,n){return e||console.error("theme has not been set"),function(e){var t=k;return!1!==e&&"none"!==e||(t=O),Object(S.createStyling)(w,{defaultBase16:t})(e)}(e)(t,n)}var M=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props,t=(e.rjvId,e.type_name),n=e.displayDataTypes,a=e.theme;return n?m.a.createElement("span",Object.assign({className:"data-type-label"},A(a,"data-type-label")),t):null}}]),n}(m.a.PureComponent),P=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props;return m.a.createElement("div",A(e.theme,"boolean"),m.a.createElement(M,Object.assign({type_name:"bool"},e)),e.value?"true":"false")}}]),n}(m.a.PureComponent),F=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props;return m.a.createElement("div",A(e.theme,"date"),m.a.createElement(M,Object.assign({type_name:"date"},e)),m.a.createElement("span",Object.assign({className:"date-value"},A(e.theme,"date-value")),e.value.toLocaleTimeString("en-us",{weekday:"short",year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})))}}]),n}(m.a.PureComponent),D=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props;return m.a.createElement("div",A(e.theme,"float"),m.a.createElement(M,Object.assign({type_name:"float"},e)),this.props.value)}}]),n}(m.a.PureComponent);function I(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,s=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return i=e.done,e},e:function(e){s=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(s)throw o}}}}function B(e){return function(e){if(Array.isArray(e))return I(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||R(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var N=n(46),z=new(n(47).Dispatcher),T=new(function(e){u(n,e);var t=h(n);function n(){var e;i(this,n);for(var a=arguments.length,r=new Array(a),s=0;st&&(r.style.cursor="pointer",this.state.collapsed&&(a=m.a.createElement("span",null,a.substring(0,t),m.a.createElement("span",A(n,"ellipsis")," ...")))),m.a.createElement("div",A(n,"string"),m.a.createElement(M,Object.assign({type_name:"string"},e)),m.a.createElement("span",Object.assign({className:"string-value"},r,{onClick:this.toggleCollapsed}),'"',a,'"'))}}]),n}(m.a.PureComponent),Y=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){return m.a.createElement("div",A(this.props.theme,"undefined"),"undefined")}}]),n}(m.a.PureComponent);function $(){return($=Object.assign||function(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,["cacheMeasurements","maxRows","minRows","onChange","onHeightChange"]),f=void 0!==u.value,d=Object(v.useRef)(null),p=X(d,t),b=Object(v.useRef)(0),h=Object(v.useRef)(),m=function(){var e=d.current,t=a&&h.current?h.current:function(e){var t=window.getComputedStyle(e);if(null===t)return null;var n,a=(n=t,re.reduce((function(e,t){return e[t]=n[t],e}),{})),r=a.boxSizing;return""===r?null:(oe&&"border-box"===r&&(a.width=parseFloat(a.width)+parseFloat(a.borderRightWidth)+parseFloat(a.borderLeftWidth)+parseFloat(a.paddingRight)+parseFloat(a.paddingLeft)+"px"),{sizingStyle:a,paddingSize:parseFloat(a.paddingBottom)+parseFloat(a.paddingTop),borderSize:parseFloat(a.borderBottomWidth)+parseFloat(a.borderTopWidth)})}(e);if(t){h.current=t;var n=function(e,t,n,a){void 0===n&&(n=1),void 0===a&&(a=1/0),ne||((ne=document.createElement("textarea")).setAttribute("tab-index","-1"),ne.setAttribute("aria-hidden","true"),te(ne)),null===ne.parentNode&&document.body.appendChild(ne);var r=e.paddingSize,o=e.borderSize,i=e.sizingStyle,s=i.boxSizing;Object.keys(i).forEach((function(e){var t=e;ne.style[t]=i[t]})),te(ne),ne.value=t;var c=function(e,t){var n=e.scrollHeight;return"border-box"===t.sizingStyle.boxSizing?n+t.borderSize:n-t.paddingSize}(ne,e);ne.value="x";var l=ne.scrollHeight-r,u=l*n;"border-box"===s&&(u=u+r+o),c=Math.max(u,c);var f=l*a;return"border-box"===s&&(f=f+r+o),[c=Math.min(f,c),l]}(t,e.value||e.placeholder||"x",o,r),i=n[0],s=n[1];b.current!==i&&(b.current=i,e.style.setProperty("height",i+"px","important"),l(i,{rowHeight:s}))}};return Object(v.useLayoutEffect)(m),n=Q(m),Object(v.useLayoutEffect)((function(){var e=function(e){n.current(e)};return window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),Object(v.createElement)("textarea",$({},u,{onChange:function(e){f||m(),s(e)},ref:p}))},se=Object(v.forwardRef)(ie);function ce(e){e=e.trim();try{if("["===(e=JSON.stringify(JSON.parse(e)))[0])return le("array",JSON.parse(e));if("{"===e[0])return le("object",JSON.parse(e));if(e.match(/\-?\d+\.\d+/)&&e.match(/\-?\d+\.\d+/)[0]===e)return le("float",parseFloat(e));if(e.match(/\-?\d+e-\d+/)&&e.match(/\-?\d+e-\d+/)[0]===e)return le("float",Number(e));if(e.match(/\-?\d+/)&&e.match(/\-?\d+/)[0]===e)return le("integer",parseInt(e));if(e.match(/\-?\d+e\+\d+/)&&e.match(/\-?\d+e\+\d+/)[0]===e)return le("integer",Number(e))}catch(e){}switch(e=e.toLowerCase()){case"undefined":return le("undefined",void 0);case"nan":return le("nan",NaN);case"null":return le("null",null);case"true":return le("boolean",!0);case"false":return le("boolean",!1);default:if(e=Date.parse(e))return le("date",new Date(e))}return le(!1,null)}function le(e,t){return{type:e,value:t}}var ue=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props,t=e.style,n=_(e,["style"]);return m.a.createElement("span",n,m.a.createElement("svg",Object.assign({},_e(t),{viewBox:"0 0 24 24",fill:"currentColor",preserveAspectRatio:"xMidYMid meet"}),m.a.createElement("path",{d:"M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,13H17V11H7"})))}}]),n}(m.a.PureComponent),fe=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props,t=e.style,n=_(e,["style"]);return m.a.createElement("span",n,m.a.createElement("svg",Object.assign({},_e(t),{viewBox:"0 0 24 24",fill:"currentColor",preserveAspectRatio:"xMidYMid meet"}),m.a.createElement("path",{d:"M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z"})))}}]),n}(m.a.PureComponent),de=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props,t=e.style,n=_(e,["style"]),a=_e(t).style;return m.a.createElement("span",n,m.a.createElement("svg",{fill:a.color,width:a.height,height:a.width,style:a,viewBox:"0 0 1792 1792"},m.a.createElement("path",{d:"M1344 800v64q0 14-9 23t-23 9h-832q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h832q14 0 23 9t9 23zm128 448v-832q0-66-47-113t-113-47h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113zm128-832v832q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z"})))}}]),n}(m.a.PureComponent),pe=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props,t=e.style,n=_(e,["style"]),a=_e(t).style;return m.a.createElement("span",n,m.a.createElement("svg",{fill:a.color,width:a.height,height:a.width,style:a,viewBox:"0 0 1792 1792"},m.a.createElement("path",{d:"M1344 800v64q0 14-9 23t-23 9h-352v352q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-352h-352q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h352v-352q0-14 9-23t23-9h64q14 0 23 9t9 23v352h352q14 0 23 9t9 23zm128 448v-832q0-66-47-113t-113-47h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113zm128-832v832q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z"})))}}]),n}(m.a.PureComponent),be=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props,t=e.style,n=_(e,["style"]);return m.a.createElement("span",n,m.a.createElement("svg",{style:o(o({},_e(t).style),{},{paddingLeft:"2px",verticalAlign:"top"}),viewBox:"0 0 15 15",fill:"currentColor"},m.a.createElement("path",{d:"M0 14l6-6-6-6z"})))}}]),n}(m.a.PureComponent),he=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props,t=e.style,n=_(e,["style"]);return m.a.createElement("span",n,m.a.createElement("svg",{style:o(o({},_e(t).style),{},{paddingLeft:"2px",verticalAlign:"top"}),viewBox:"0 0 15 15",fill:"currentColor"},m.a.createElement("path",{d:"M0 5l6 6 6-6z"})))}}]),n}(m.a.PureComponent),ve=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props,t=e.style,n=_(e,["style"]);return m.a.createElement("span",n,m.a.createElement("svg",Object.assign({},_e(t),{viewBox:"0 0 40 40",fill:"currentColor",preserveAspectRatio:"xMidYMid meet"}),m.a.createElement("g",null,m.a.createElement("path",{d:"m30 35h-25v-22.5h25v7.5h2.5v-12.5c0-1.4-1.1-2.5-2.5-2.5h-7.5c0-2.8-2.2-5-5-5s-5 2.2-5 5h-7.5c-1.4 0-2.5 1.1-2.5 2.5v27.5c0 1.4 1.1 2.5 2.5 2.5h25c1.4 0 2.5-1.1 2.5-2.5v-5h-2.5v5z m-20-27.5h2.5s2.5-1.1 2.5-2.5 1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5 1.3 2.5 2.5 2.5h2.5s2.5 1.1 2.5 2.5h-20c0-1.5 1.1-2.5 2.5-2.5z m-2.5 20h5v-2.5h-5v2.5z m17.5-5v-5l-10 7.5 10 7.5v-5h12.5v-5h-12.5z m-17.5 10h7.5v-2.5h-7.5v2.5z m12.5-17.5h-12.5v2.5h12.5v-2.5z m-7.5 5h-5v2.5h5v-2.5z"}))))}}]),n}(m.a.PureComponent),me=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props,t=e.style,n=_(e,["style"]);return m.a.createElement("span",n,m.a.createElement("svg",Object.assign({},_e(t),{viewBox:"0 0 40 40",fill:"currentColor",preserveAspectRatio:"xMidYMid meet"}),m.a.createElement("g",null,m.a.createElement("path",{d:"m28.6 25q0-0.5-0.4-1l-4-4 4-4q0.4-0.5 0.4-1 0-0.6-0.4-1.1l-2-2q-0.4-0.4-1-0.4-0.6 0-1 0.4l-4.1 4.1-4-4.1q-0.4-0.4-1-0.4-0.6 0-1 0.4l-2 2q-0.5 0.5-0.5 1.1 0 0.5 0.5 1l4 4-4 4q-0.5 0.5-0.5 1 0 0.7 0.5 1.1l2 2q0.4 0.4 1 0.4 0.6 0 1-0.4l4-4.1 4.1 4.1q0.4 0.4 1 0.4 0.6 0 1-0.4l2-2q0.4-0.4 0.4-1z m8.7-5q0 4.7-2.3 8.6t-6.3 6.2-8.6 2.3-8.6-2.3-6.2-6.2-2.3-8.6 2.3-8.6 6.2-6.2 8.6-2.3 8.6 2.3 6.3 6.2 2.3 8.6z"}))))}}]),n}(m.a.PureComponent),ye=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props,t=e.style,n=_(e,["style"]);return m.a.createElement("span",n,m.a.createElement("svg",Object.assign({},_e(t),{viewBox:"0 0 40 40",fill:"currentColor",preserveAspectRatio:"xMidYMid meet"}),m.a.createElement("g",null,m.a.createElement("path",{d:"m30.1 21.4v-2.8q0-0.6-0.4-1t-1-0.5h-5.7v-5.7q0-0.6-0.4-1t-1-0.4h-2.9q-0.6 0-1 0.4t-0.4 1v5.7h-5.7q-0.6 0-1 0.5t-0.5 1v2.8q0 0.6 0.5 1t1 0.5h5.7v5.7q0 0.5 0.4 1t1 0.4h2.9q0.6 0 1-0.4t0.4-1v-5.7h5.7q0.6 0 1-0.5t0.4-1z m7.2-1.4q0 4.7-2.3 8.6t-6.3 6.2-8.6 2.3-8.6-2.3-6.2-6.2-2.3-8.6 2.3-8.6 6.2-6.2 8.6-2.3 8.6 2.3 6.3 6.2 2.3 8.6z"}))))}}]),n}(m.a.PureComponent),ge=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props,t=e.style,n=_(e,["style"]);return m.a.createElement("span",n,m.a.createElement("svg",Object.assign({},_e(t),{viewBox:"0 0 40 40",fill:"currentColor",preserveAspectRatio:"xMidYMid meet"}),m.a.createElement("g",null,m.a.createElement("path",{d:"m31.6 21.6h-10v10h-3.2v-10h-10v-3.2h10v-10h3.2v10h10v3.2z"}))))}}]),n}(m.a.PureComponent),Ee=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props,t=e.style,n=_(e,["style"]);return m.a.createElement("span",n,m.a.createElement("svg",Object.assign({},_e(t),{viewBox:"0 0 40 40",fill:"currentColor",preserveAspectRatio:"xMidYMid meet"}),m.a.createElement("g",null,m.a.createElement("path",{d:"m19.8 26.4l2.6-2.6-3.4-3.4-2.6 2.6v1.3h2.2v2.1h1.2z m9.8-16q-0.3-0.4-0.7 0l-7.8 7.8q-0.4 0.4 0 0.7t0.7 0l7.8-7.8q0.4-0.4 0-0.7z m1.8 13.2v4.3q0 2.6-1.9 4.5t-4.5 1.9h-18.6q-2.6 0-4.5-1.9t-1.9-4.5v-18.6q0-2.7 1.9-4.6t4.5-1.8h18.6q1.4 0 2.6 0.5 0.3 0.2 0.4 0.5 0.1 0.4-0.2 0.7l-1.1 1.1q-0.3 0.3-0.7 0.1-0.5-0.1-1-0.1h-18.6q-1.4 0-2.5 1.1t-1 2.5v18.6q0 1.4 1 2.5t2.5 1h18.6q1.5 0 2.5-1t1.1-2.5v-2.9q0-0.2 0.2-0.4l1.4-1.5q0.3-0.3 0.8-0.1t0.4 0.6z m-2.1-16.5l6.4 6.5-15 15h-6.4v-6.5z m9.9 3l-2.1 2-6.4-6.4 2.1-2q0.6-0.7 1.5-0.7t1.5 0.7l3.4 3.4q0.6 0.6 0.6 1.5t-0.6 1.5z"}))))}}]),n}(m.a.PureComponent),je=function(e){u(n,e);var t=h(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"render",value:function(){var e=this.props,t=e.style,n=_(e,["style"]);return m.a.createElement("span",n,m.a.createElement("svg",Object.assign({},_e(t),{viewBox:"0 0 40 40",fill:"currentColor",preserveAspectRatio:"xMidYMid meet"}),m.a.createElement("g",null,m.a.createElement("path",{d:"m31.7 16.4q0-0.6-0.4-1l-2.1-2.1q-0.4-0.4-1-0.4t-1 0.4l-9.1 9.1-5-5q-0.5-0.4-1-0.4t-1 0.4l-2.1 2q-0.4 0.4-0.4 1 0 0.6 0.4 1l8.1 8.1q0.4 0.4 1 0.4 0.6 0 1-0.4l12.2-12.1q0.4-0.4 0.4-1z m5.6 3.6q0 4.7-2.3 8.6t-6.3 6.2-8.6 2.3-8.6-2.3-6.2-6.2-2.3-8.6 2.3-8.6 6.2-6.2 8.6-2.3 8.6 2.3 6.3 6.2 2.3 8.6z"}))))}}]),n}(m.a.PureComponent);function _e(e){return e||(e={}),{style:o(o({verticalAlign:"middle"},e),{},{color:e.color?e.color:"#000000",height:"1em",width:"1em"})}}var xe=function(e){u(n,e);var t=h(n);function n(e){var a;return i(this,n),(a=t.call(this,e)).copiedTimer=null,a.handleCopy=function(){var e=document.createElement("textarea"),t=a.props,n=t.clickCallback,r=t.src,o=t.namespace;e.innerHTML=JSON.stringify(a.clipboardValue(r),null," "),document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),a.copiedTimer=setTimeout((function(){a.setState({copied:!1})}),5500),a.setState({copied:!0},(function(){"function"==typeof n&&n({src:r,namespace:o,name:o[o.length-1]})}))},a.getClippyIcon=function(){var e=a.props.theme;return a.state.copied?m.a.createElement("span",null,m.a.createElement(ve,Object.assign({className:"copy-icon"},A(e,"copy-icon"))),m.a.createElement("span",A(e,"copy-icon-copied"),"\u2714")):m.a.createElement(ve,Object.assign({className:"copy-icon"},A(e,"copy-icon")))},a.clipboardValue=function(e){switch(x(e)){case"function":case"regexp":return e.toString();default:return e}},a.state={copied:!1},a}return c(n,[{key:"componentWillUnmount",value:function(){this.copiedTimer&&(clearTimeout(this.copiedTimer),this.copiedTimer=null)}},{key:"render",value:function(){var e=this.props,t=(e.src,e.theme),n=e.hidden,a=e.rowHovered,r=A(t,"copy-to-clipboard").style,i="inline";return n&&(i="none"),m.a.createElement("span",{className:"copy-to-clipboard-container",title:"Copy to clipboard",style:{verticalAlign:"top",display:a?"inline-block":"none"}},m.a.createElement("span",{style:o(o({},r),{},{display:i}),onClick:this.handleCopy},this.getClippyIcon()))}}]),n}(m.a.PureComponent),ke=function(e){u(n,e);var t=h(n);function n(e){var a;return i(this,n),(a=t.call(this,e)).getEditIcon=function(){var e=a.props,t=e.variable,n=e.theme;return m.a.createElement("div",{className:"click-to-edit",style:{verticalAlign:"top",display:a.state.hovered?"inline-block":"none"}},m.a.createElement(Ee,Object.assign({className:"click-to-edit-icon"},A(n,"editVarIcon"),{onClick:function(){a.prepopInput(t)}})))},a.prepopInput=function(e){if(!1!==a.props.onEdit){var t=function(e){var t;switch(x(e)){case"undefined":t="undefined";break;case"nan":t="NaN";break;case"string":t=e;break;case"date":case"function":case"regexp":t=e.toString();break;default:try{t=JSON.stringify(e,null," ")}catch(e){t=""}}return t}(e.value),n=ce(t);a.setState({editMode:!0,editValue:t,parsedInput:{type:n.type,value:n.value}})}},a.getRemoveIcon=function(){var e=a.props,t=e.variable,n=e.namespace,r=e.theme,o=e.rjvId;return m.a.createElement("div",{className:"click-to-remove",style:{verticalAlign:"top",display:a.state.hovered?"inline-block":"none"}},m.a.createElement(me,Object.assign({className:"click-to-remove-icon"},A(r,"removeVarIcon"),{onClick:function(){z.dispatch({name:"VARIABLE_REMOVED",rjvId:o,data:{name:t.name,namespace:n,existing_value:t.value,variable_removed:!0}})}})))},a.getValue=function(e,t){var n=!t&&e.type,r=p(a).props;switch(n){case!1:return a.getEditInput();case"string":return m.a.createElement(G,Object.assign({value:e.value},r));case"integer":return m.a.createElement(H,Object.assign({value:e.value},r));case"float":return m.a.createElement(D,Object.assign({value:e.value},r));case"boolean":return m.a.createElement(P,Object.assign({value:e.value},r));case"function":return m.a.createElement(V,Object.assign({value:e.value},r));case"null":return m.a.createElement(W,r);case"nan":return m.a.createElement(K,r);case"undefined":return m.a.createElement(Y,r);case"date":return m.a.createElement(F,Object.assign({value:e.value},r));case"regexp":return m.a.createElement(U,Object.assign({value:e.value},r));default:return m.a.createElement("div",{className:"object-value"},JSON.stringify(e.value))}},a.getEditInput=function(){var e=a.props.theme,t=a.state.editValue;return m.a.createElement("div",null,m.a.createElement(se,Object.assign({type:"text",inputRef:function(e){return e&&e.focus()},value:t,className:"variable-editor",onChange:function(e){var t=e.target.value,n=ce(t);a.setState({editValue:t,parsedInput:{type:n.type,value:n.value}})},onKeyDown:function(e){switch(e.key){case"Escape":a.setState({editMode:!1,editValue:""});break;case"Enter":(e.ctrlKey||e.metaKey)&&a.submitEdit(!0)}e.stopPropagation()},placeholder:"update this value",minRows:2},A(e,"edit-input"))),m.a.createElement("div",A(e,"edit-icon-container"),m.a.createElement(me,Object.assign({className:"edit-cancel"},A(e,"cancel-icon"),{onClick:function(){a.setState({editMode:!1,editValue:""})}})),m.a.createElement(je,Object.assign({className:"edit-check string-value"},A(e,"check-icon"),{onClick:function(){a.submitEdit()}})),m.a.createElement("div",null,a.showDetected())))},a.submitEdit=function(e){var t=a.props,n=t.variable,r=t.namespace,o=t.rjvId,i=a.state,s=i.editValue,c=i.parsedInput,l=s;e&&c.type&&(l=c.value),a.setState({editMode:!1}),z.dispatch({name:"VARIABLE_UPDATED",rjvId:o,data:{name:n.name,namespace:r,existing_value:n.value,new_value:l,variable_removed:!1}})},a.showDetected=function(){var e=a.props,t=e.theme,n=(e.variable,e.namespace,e.rjvId,a.state.parsedInput),r=(n.type,n.value,a.getDetectedInput());if(r)return m.a.createElement("div",null,m.a.createElement("div",A(t,"detected-row"),r,m.a.createElement(je,{className:"edit-check detected",style:o({verticalAlign:"top",paddingLeft:"3px"},A(t,"check-icon").style),onClick:function(){a.submitEdit(!0)}})))},a.getDetectedInput=function(){var e=a.state.parsedInput,t=e.type,n=e.value,r=p(a).props,i=r.theme;if(!1!==t)switch(t.toLowerCase()){case"object":return m.a.createElement("span",null,m.a.createElement("span",{style:o(o({},A(i,"brace").style),{},{cursor:"default"})},"{"),m.a.createElement("span",{style:o(o({},A(i,"ellipsis").style),{},{cursor:"default"})},"..."),m.a.createElement("span",{style:o(o({},A(i,"brace").style),{},{cursor:"default"})},"}"));case"array":return m.a.createElement("span",null,m.a.createElement("span",{style:o(o({},A(i,"brace").style),{},{cursor:"default"})},"["),m.a.createElement("span",{style:o(o({},A(i,"ellipsis").style),{},{cursor:"default"})},"..."),m.a.createElement("span",{style:o(o({},A(i,"brace").style),{},{cursor:"default"})},"]"));case"string":return m.a.createElement(G,Object.assign({value:n},r));case"integer":return m.a.createElement(H,Object.assign({value:n},r));case"float":return m.a.createElement(D,Object.assign({value:n},r));case"boolean":return m.a.createElement(P,Object.assign({value:n},r));case"function":return m.a.createElement(V,Object.assign({value:n},r));case"null":return m.a.createElement(W,r);case"nan":return m.a.createElement(K,r);case"undefined":return m.a.createElement(Y,r);case"date":return m.a.createElement(F,Object.assign({value:new Date(n)},r))}},a.state={editMode:!1,editValue:"",hovered:!1,renameKey:!1,parsedInput:{type:!1,value:null}},a}return c(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.variable,a=t.singleIndent,r=t.type,i=t.theme,s=t.namespace,c=t.indentWidth,l=t.enableClipboard,u=t.onEdit,f=t.onDelete,d=t.onSelect,p=t.displayArrayKey,b=t.quotesOnKeys,h=this.state.editMode;return m.a.createElement("div",Object.assign({},A(i,"objectKeyVal",{paddingLeft:c*a}),{onMouseEnter:function(){return e.setState(o(o({},e.state),{},{hovered:!0}))},onMouseLeave:function(){return e.setState(o(o({},e.state),{},{hovered:!1}))},className:"variable-row",key:n.name}),"array"==r?p?m.a.createElement("span",Object.assign({},A(i,"array-key"),{key:n.name+"_"+s}),n.name,m.a.createElement("div",A(i,"colon"),":")):null:m.a.createElement("span",null,m.a.createElement("span",Object.assign({},A(i,"object-name"),{className:"object-key",key:n.name+"_"+s}),!!b&&m.a.createElement("span",{style:{verticalAlign:"top"}},'"'),m.a.createElement("span",{style:{display:"inline-block"}},n.name),!!b&&m.a.createElement("span",{style:{verticalAlign:"top"}},'"')),m.a.createElement("span",A(i,"colon"),":")),m.a.createElement("div",Object.assign({className:"variable-value",onClick:!1===d&&!1===u?null:function(t){var a=B(s);(t.ctrlKey||t.metaKey)&&!1!==u?e.prepopInput(n):!1!==d&&(a.shift(),d(o(o({},n),{},{namespace:a})))}},A(i,"variableValue",{cursor:!1===d?"default":"pointer"})),this.getValue(n,h)),l?m.a.createElement(xe,{rowHovered:this.state.hovered,hidden:h,src:n.value,clickCallback:l,theme:i,namespace:[].concat(B(s),[n.name])}):null,!1!==u&&0==h?this.getEditIcon():null,!1!==f&&0==h?this.getRemoveIcon():null)}}]),n}(m.a.PureComponent),Oe=function(e){u(n,e);var t=h(n);function n(){var e;i(this,n);for(var a=arguments.length,r=new Array(a),s=0;s0?i:null,namespace:r.splice(0,r.length-1),existing_value:s,variable_removed:!1,key_name:null};"object"===x(s)?z.dispatch({name:"ADD_VARIABLE_KEY_REQUEST",rjvId:c,data:e}):z.dispatch({name:"VARIABLE_ADDED",rjvId:c,data:o(o({},e),{},{new_value:[].concat(B(s),[null])})})}})))},e.getRemoveObject=function(t){var n=e.props,a=n.theme,r=(n.hover,n.namespace),o=n.name,i=n.src,s=n.rjvId;if(1!==r.length)return m.a.createElement("span",{className:"click-to-remove",style:{display:t?"inline-block":"none"}},m.a.createElement(me,Object.assign({className:"click-to-remove-icon"},A(a,"removeVarIcon"),{onClick:function(){z.dispatch({name:"VARIABLE_REMOVED",rjvId:s,data:{name:o,namespace:r.splice(0,r.length-1),existing_value:i,variable_removed:!0}})}})))},e.render=function(){var t=e.props,n=t.theme,a=t.onDelete,r=t.onAdd,o=t.enableClipboard,i=t.src,s=t.namespace,c=t.rowHovered;return m.a.createElement("div",Object.assign({},A(n,"object-meta-data"),{className:"object-meta-data",onClick:function(e){e.stopPropagation()}}),e.getObjectSize(),o?m.a.createElement(xe,{rowHovered:c,clickCallback:o,src:i,theme:n,namespace:s}):null,!1!==r?e.getAddAttribute(c):null,!1!==a?e.getRemoveObject(c):null)},e}return n}(m.a.PureComponent);function Ce(e){var t=e.parent_type,n=e.namespace,a=e.quotesOnKeys,r=e.theme,o=e.jsvRoot,i=e.name,s=e.displayArrayKey,c=e.name?e.name:"";return!o||!1!==i&&null!==i?"array"==t?s?m.a.createElement("span",Object.assign({},A(r,"array-key"),{key:n}),m.a.createElement("span",{className:"array-key"},c),m.a.createElement("span",A(r,"colon"),":")):m.a.createElement("span",null):m.a.createElement("span",Object.assign({},A(r,"object-name"),{key:n}),m.a.createElement("span",{className:"object-key"},a&&m.a.createElement("span",{style:{verticalAlign:"top"}},'"'),m.a.createElement("span",null,c),a&&m.a.createElement("span",{style:{verticalAlign:"top"}},'"')),m.a.createElement("span",A(r,"colon"),":")):m.a.createElement("span",null)}function Se(e){var t=e.theme;switch(e.iconStyle){case"triangle":return m.a.createElement(he,Object.assign({},A(t,"expanded-icon"),{className:"expanded-icon"}));case"square":return m.a.createElement(de,Object.assign({},A(t,"expanded-icon"),{className:"expanded-icon"}));default:return m.a.createElement(ue,Object.assign({},A(t,"expanded-icon"),{className:"expanded-icon"}))}}function we(e){var t=e.theme;switch(e.iconStyle){case"triangle":return m.a.createElement(be,Object.assign({},A(t,"collapsed-icon"),{className:"collapsed-icon"}));case"square":return m.a.createElement(pe,Object.assign({},A(t,"collapsed-icon"),{className:"collapsed-icon"}));default:return m.a.createElement(fe,Object.assign({},A(t,"collapsed-icon"),{className:"collapsed-icon"}))}}var Ae=function(e){u(n,e);var t=h(n);function n(e){var a;return i(this,n),(a=t.call(this,e)).toggleCollapsed=function(e){var t=[];for(var n in a.state.expanded)t.push(a.state.expanded[n]);t[e]=!t[e],a.setState({expanded:t})},a.state={expanded:[]},a}return c(n,[{key:"getExpandedIcon",value:function(e){var t=this.props,n=t.theme,a=t.iconStyle;return this.state.expanded[e]?m.a.createElement(Se,{theme:n,iconStyle:a}):m.a.createElement(we,{theme:n,iconStyle:a})}},{key:"render",value:function(){var e=this,t=this.props,n=t.src,a=t.groupArraysAfterLength,r=(t.depth,t.name),o=t.theme,i=t.jsvRoot,s=t.namespace,c=(t.parent_type,_(t,["src","groupArraysAfterLength","depth","name","theme","jsvRoot","namespace","parent_type"])),l=0,u=5*this.props.indentWidth;i||(l=5*this.props.indentWidth);var f=a,d=Math.ceil(n.length/f);return m.a.createElement("div",Object.assign({className:"object-key-val"},A(o,i?"jsv-root":"objectKeyVal",{paddingLeft:l})),m.a.createElement(Ce,this.props),m.a.createElement("span",null,m.a.createElement(Oe,Object.assign({size:n.length},this.props))),B(Array(d)).map((function(t,a){return m.a.createElement("div",Object.assign({key:a,className:"object-key-val array-group"},A(o,"objectKeyVal",{marginLeft:6,paddingLeft:u})),m.a.createElement("span",A(o,"brace-row"),m.a.createElement("div",Object.assign({className:"icon-container"},A(o,"icon-container"),{onClick:function(t){e.toggleCollapsed(a)}}),e.getExpandedIcon(a)),e.state.expanded[a]?m.a.createElement(Fe,Object.assign({key:r+a,depth:0,name:!1,collapsed:!1,groupArraysAfterLength:f,index_offset:a*f,src:n.slice(a*f,a*f+f),namespace:s,type:"array",parent_type:"array_group",theme:o},c)):m.a.createElement("span",Object.assign({},A(o,"brace"),{onClick:function(t){e.toggleCollapsed(a)},className:"array-group-brace"}),"[",m.a.createElement("div",Object.assign({},A(o,"array-group-meta-data"),{className:"array-group-meta-data"}),m.a.createElement("span",Object.assign({className:"object-size"},A(o,"object-size")),a*f," - ",a*f+f>n.length?n.length:a*f+f)),"]")))})))}}]),n}(m.a.PureComponent),Me=function(e){u(n,e);var t=h(n);function n(e){var a;i(this,n),(a=t.call(this,e)).toggleCollapsed=function(){a.setState({expanded:!a.state.expanded},(function(){q.set(a.props.rjvId,a.props.namespace,"expanded",a.state.expanded)}))},a.getObjectContent=function(e,t,n){return m.a.createElement("div",{className:"pushed-content object-container"},m.a.createElement("div",Object.assign({className:"object-content"},A(a.props.theme,"pushed-content")),a.renderObjectContents(t,n)))},a.getEllipsis=function(){return 0===a.state.size?null:m.a.createElement("div",Object.assign({},A(a.props.theme,"ellipsis"),{className:"node-ellipsis",onClick:a.toggleCollapsed}),"...")},a.getObjectMetaData=function(e){var t=a.props,n=(t.rjvId,t.theme,a.state),r=n.size,o=n.hovered;return m.a.createElement(Oe,Object.assign({rowHovered:o,size:r},a.props))},a.renderObjectContents=function(e,t){var n,r=a.props,o=r.depth,i=r.parent_type,s=r.index_offset,c=r.groupArraysAfterLength,l=r.namespace,u=a.state.object_type,f=[],d=Object.keys(e||{});return a.props.sortKeys&&"array"!==u&&(d=d.sort()),d.forEach((function(r){if(n=new Pe(r,e[r]),"array_group"===i&&s&&(n.name=parseInt(n.name)+s),e.hasOwnProperty(r))if("object"===n.type)f.push(m.a.createElement(Fe,Object.assign({key:n.name,depth:o+1,name:n.name,src:n.value,namespace:l.concat(n.name),parent_type:u},t)));else if("array"===n.type){var d=Fe;c&&n.value.length>c&&(d=Ae),f.push(m.a.createElement(d,Object.assign({key:n.name,depth:o+1,name:n.name,src:n.value,namespace:l.concat(n.name),type:"array",parent_type:u},t)))}else f.push(m.a.createElement(ke,Object.assign({key:n.name+"_"+l,variable:n,singleIndent:5,namespace:l,type:a.props.type},t)))})),f};var r=n.getState(e);return a.state=o(o({},r),{},{prevProps:{}}),a}return c(n,[{key:"getBraceStart",value:function(e,t){var n=this,a=this.props,r=a.src,o=a.theme,i=a.iconStyle;if("array_group"===a.parent_type)return m.a.createElement("span",null,m.a.createElement("span",A(o,"brace"),"array"===e?"[":"{"),t?this.getObjectMetaData(r):null);var s=t?Se:we;return m.a.createElement("span",null,m.a.createElement("span",Object.assign({onClick:function(e){n.toggleCollapsed()}},A(o,"brace-row")),m.a.createElement("div",Object.assign({className:"icon-container"},A(o,"icon-container")),m.a.createElement(s,{theme:o,iconStyle:i})),m.a.createElement(Ce,this.props),m.a.createElement("span",A(o,"brace"),"array"===e?"[":"{")),t?this.getObjectMetaData(r):null)}},{key:"render",value:function(){var e=this,t=this.props,n=t.depth,a=t.src,r=(t.namespace,t.name,t.type,t.parent_type),i=t.theme,s=t.jsvRoot,c=t.iconStyle,l=_(t,["depth","src","namespace","name","type","parent_type","theme","jsvRoot","iconStyle"]),u=this.state,f=u.object_type,d=u.expanded,p={};return s||"array_group"===r?"array_group"===r&&(p.borderLeft=0,p.display="inline"):p.paddingLeft=5*this.props.indentWidth,m.a.createElement("div",Object.assign({className:"object-key-val",onMouseEnter:function(){return e.setState(o(o({},e.state),{},{hovered:!0}))},onMouseLeave:function(){return e.setState(o(o({},e.state),{},{hovered:!1}))}},A(i,s?"jsv-root":"objectKeyVal",p)),this.getBraceStart(f,d),d?this.getObjectContent(n,a,o({theme:i,iconStyle:c},l)):this.getEllipsis(),m.a.createElement("span",{className:"brace-row"},m.a.createElement("span",{style:o(o({},A(i,"brace").style),{},{paddingLeft:d?"3px":"0px"})},"array"===f?"]":"}"),d?null:this.getObjectMetaData(a)))}}],[{key:"getDerivedStateFromProps",value:function(e,t){var a=t.prevProps;return e.src!==a.src||e.collapsed!==a.collapsed||e.name!==a.name||e.namespace!==a.namespace||e.rjvId!==a.rjvId?o(o({},n.getState(e)),{},{prevProps:e}):null}}]),n}(m.a.PureComponent);Me.getState=function(e){var t=Object.keys(e.src).length,n=(!1===e.collapsed||!0!==e.collapsed&&e.collapsed>e.depth)&&(!e.shouldCollapse||!1===e.shouldCollapse({name:e.name,src:e.src,type:x(e.src),namespace:e.namespace}))&&0!==t;return{expanded:q.get(e.rjvId,e.namespace,"expanded",n),object_type:"array"===e.type?"array":"object",parent_type:"array"===e.type?"array":"object",size:t,hovered:!1}};var Pe=function e(t,n){i(this,e),this.name=t,this.value=n,this.type=x(n)};j(Me);var Fe=Me,De=function(e){u(n,e);var t=h(n);function n(){var e;i(this,n);for(var a=arguments.length,r=new Array(a),o=0;ot.groupArraysAfterLength&&(a=Ae),m.a.createElement("div",{className:"pretty-json-container object-container"},m.a.createElement("div",{className:"object-content"},m.a.createElement(a,Object.assign({namespace:n,depth:0,jsvRoot:!0},t))))},e}return n}(m.a.PureComponent),Ie=function(e){u(n,e);var t=h(n);function n(e){var a;return i(this,n),(a=t.call(this,e)).closeModal=function(){z.dispatch({rjvId:a.props.rjvId,name:"RESET"})},a.submit=function(){a.props.submit(a.state.input)},a.state={input:e.input?e.input:""},a}return c(n,[{key:"render",value:function(){var e=this,t=this.props,n=t.theme,a=t.rjvId,r=t.isValid,o=this.state.input,i=r(o);return m.a.createElement("div",Object.assign({className:"key-modal-request"},A(n,"key-modal-request"),{onClick:this.closeModal}),m.a.createElement("div",Object.assign({},A(n,"key-modal"),{onClick:function(e){e.stopPropagation()}}),m.a.createElement("div",A(n,"key-modal-label"),"Key Name:"),m.a.createElement("div",{style:{position:"relative"}},m.a.createElement("input",Object.assign({},A(n,"key-modal-input"),{className:"key-modal-input",ref:function(e){return e&&e.focus()},spellCheck:!1,value:o,placeholder:"...",onChange:function(t){e.setState({input:t.target.value})},onKeyPress:function(t){i&&"Enter"===t.key?e.submit():"Escape"===t.key&&e.closeModal()}})),i?m.a.createElement(je,Object.assign({},A(n,"key-modal-submit"),{className:"key-modal-submit",onClick:function(t){return e.submit()}})):null),m.a.createElement("span",A(n,"key-modal-cancel"),m.a.createElement(ge,Object.assign({},A(n,"key-modal-cancel-icon"),{className:"key-modal-cancel",onClick:function(){z.dispatch({rjvId:a,name:"RESET"})}})))))}}]),n}(m.a.PureComponent),Re=function(e){u(n,e);var t=h(n);function n(){var e;i(this,n);for(var a=arguments.length,r=new Array(a),s=0;s This article will introduce how to build a logging platform based on native Kibana and Clickhouse.\\r\\n\\r\\n\x3c!--truncate--\x3e\\r\\nIn the rapid development of business, the demand for querying and analyzing various log data leads to a sharp increase in the scale of log storage. Traditional ELK and log systems centered around ElasticSearch subsequently face many challenges in terms of cost, stability, and performance. More and more companies at home and abroad, such as Ctrip, Kuaishou, Bilibili, Cloudflare, and Uber, have been seen switching their storage to ClickHouse, with obvious benefits from their shares. Our log system has also begun to try migrating from ElasticSearch to ClickHouse, exploring and accumulating a set of comprehensive solutions that maximally cater to the existing users\' habits to achieve a smooth transition.\\r\\n\\r\\n## 1 Background Introduction\\r\\n\\r\\nSince the transition from ElasticSearch to Clickhouse in 2020, our company\'s largest log system has seen significant improvements in both cost and stability. It reliably supported over 500 billion logs per day during this year\'s National Day period, with costs reduced to just 30% of the original ElasticSearch solution.\\r\\n\\r\\nBesides this log system, there are many other logging systems within the company, most of which are based on the open-source ELK approach. As scales have increased, issues with costs and stability have gradually emerged, prompting plans to switch all logging system storage foundations to Clickhouse.\\r\\n\\r\\nThe industry has widely shared the selection and usage of Clickhouse for logging scenarios, which will not be the focus of this article. Those interested can search for relevant information on their own.\\r\\n\\r\\nAfter completing the storage switch, the most crucial issue to address is the query UI user experience. While some companies have developed their own query UIs after switching log storage to Clickhouse, accommodating users\' existing habits for a seamless transition from native Kibana to a new platform is challenging. It requires all business colleagues to familiarize themselves with a new set of syntax and UI interactions, inadvertently adding significant costs.\\r\\n\\r\\nTherefore, making it possible for users to migrate to new platform without any learning cost is a rather challenging issue.\\r\\n\\r\\n## 2 Solution Introduction\\r\\n\\r\\nOur approach is actually quite simple and intuitive. We chose to add an additional proxy layer between native Kibana and Elasticsearch. This proxy is responsible for the syntax translation between Elasticsearch and ClickHouse:\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana02.png)\\r\\n\\r\\nWe developed our own Proxy (named CKibana), which translates chart requests into ClickHouse syntax, fetches results from ClickHouse, and then simulates an Elasticsearch response to return to Kibana. This allows us to directly display data from ClickHouse in the native Kibana interface. In addition to the syntax conversion, we also addressed many practical issues encountered during use.\\r\\n\\r\\nConsidering the limitations of ClickHouse\'s query concurrency capabilities, we retained Elasticsearch. This Elasticsearch can be used for advanced features such as result caching and storing metadata related to Kibana, and it is very lightweight.\\r\\n\\r\\n## 3 How to Use CKibana\\r\\n\\r\\n### Components\\r\\n\\r\\n1. Kibana: Used to provide a UI display for business purposes.\\r\\n2. ElasticSearch: Used for storing Kibana metadata and for query caching among other advanced features.\\r\\n3. ClickHouse: The storage system where the actual log data is stored.\\r\\n4. CKibana: Provides Proxy and other advanced functionalities, enabling users to query ClickHouse data directly on the native Kibana.\\r\\n\\r\\n### Getting Started\\r\\n\\r\\n#### Launching CKibana\\r\\n\\r\\nTo start using CKibana, you\'ll first need to configure it with the necessary Elasticsearch details.\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana03.png)\\r\\n\\r\\nOnce you have your configuration set up, ensure that you have JDK 17 or higher installed on your system for CKibana to run. You can then launch CKibana with the following command:\\r\\n\\r\\n`java -jar ckibana.jar`\\r\\n\\r\\n#### Kibana Configuration\\r\\n\\r\\nTo modify the Kibana configuration, change the Elasticsearch address to the CKibana address\uff1a\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana04.png)\\r\\n\\r\\nAt this point, Kibana is fully functional and can use CKibana as an Elasticsearch Proxy\uff1a\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana05.png)\\r\\n\\r\\n#### Configuring ClickHouse Connection Information and Index Whitelist\\r\\n\\r\\nSet up the ClickHouse connection:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateCk?url=ckUrl&user=default&pass=default&defaultCkDatabase=ops\'`\\r\\n\\r\\n#### Configure the index to switch to ClickHouse\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateWhiteIndexList?list=index1,index2\'`\\r\\n\\r\\nThe corresponding relationship between field types in ElasticSearch and ClickHouse is as follows:\\r\\n\\r\\n| es | ck |\\r\\n|----------|---------|\\r\\n| keyword | String |\\r\\n| text | String |\\r\\n| ip | String(support ipv4 and ipv6) |\\r\\n| integer | Int32 |\\r\\n| long | Int64 |\\r\\n| float | Float32 |\\r\\n| double | Float64 |\\r\\n\\r\\n#### Create index pattern\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana06.png)\\r\\n\\r\\nKey Points to Note:\\r\\n\\r\\n1. First, ensure that the input index pattern matches the ClickHouse table exactly; the index pattern and the ClickHouse table name must be an exact match.\\r\\n2. If the corresponding table cannot be selected, you can troubleshoot based on the SQL in the CKibana logs to see if the corresponding table can be queried.\\r\\n3. Pay attention to the time field; otherwise, the time field will not be selectable. The selection logic is as follows:\\r\\n - Fields of the Date type, such as DateTime64, will be considered as time types.\\r\\n - Field names containing \\"time\\", for example (@timestamp UInt64), will be considered as time types.\\r\\n\\r\\nIn either of these two cases, if any one condition is met, the field will be considered a time field. If you are unable to select a time field, it\'s necessary to check whether the fields in the ClickHouse table comply with the matching logic.\\r\\n\\r\\n#### Here we go\\r\\n\\r\\nAfter configuring the index pattern, you can now make full use of Kibana\'s visual analysis capabilities![Untitled](https://oss.17usoft.com/infra-github/ckibana07.png)\\r\\n\\r\\n### Advanced Features\\r\\n\\r\\n#### Sampling\\r\\n\\r\\nMost of Kibana\'s charts focus on trends. When the result set is too large, it consumes more ClickHouse resources. We provide a sampling feature that ensures the chart trends are close to actual trends while effectively controlling the use of ClickHouse resources, especially when dealing with large datasets.\\r\\n\\r\\nNote:\\r\\n- The corresponding ClickHouse table needs to be created according to the ck sampling table requirements.[clickhouse sample](https://clickhouse.com/docs/en/sql-reference/statements/select/sample)\\r\\n- If the sampling threshold is set too low, it can result in a significant difference between the reconstructed values and the true values. We have set our online sampling threshold to 5 million.\\r\\n\\r\\nEnabling sampling requires two steps:\\r\\n1. Configure the tables to be sampled.\\r\\n2. Update the sampling threshold. Sampling is triggered when the result set exceeds this threshold.\\r\\n\\r\\n\\r\\nSampling logic: `Math.max(0.01, Double.parseDouble(String.format(\\"%.5f\\", sampleParam.getSampleCountMaxThreshold() * 1.00 / sampleParam.getSampleTotalCount())))`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana08.png)\\r\\n\\r\\nExpanding the response from the rate limiter, you can see the sampling value.\\r\\n\\r\\n#### Time Rounding + Caching\\r\\n\\r\\nWhen an issue occurs online, a large number of SRE and business colleagues need to query the nginx logs for troubleshooting, and their query conditions are mostly the same. However, ClickHouse aims to achieve the best query performance by utilizing as many CPUs as possible for computations. This situation leads to ClickHouse\'s CPU usage spiking to full capacity. Moreover, under continuous retries by colleagues, the CPU cannot recover.\\r\\n\\r\\nTherefore, we implemented a feature for time rounding + caching.\\r\\n\\r\\nTime Rounding: For instance, setting rounding to 20s means that the second\'s precision in the query time conditions will be %20, effectively introducing a maximum delay of 20s for data queries.With time rounding in place, a large number of query conditions become identical. At this point, enabling result caching can significantly alleviate the pressure on ClickHouse.\\r\\n\\r\\nSet up time rounding:\\r\\n`curl --location --request POST \'localhost:8080/config/updateRoundAbleMinPeriod?roundAbleMinPeriod=20000\' \u5355\u4f4dms`\\r\\n\\r\\nEnable caching:\\r\\n`curl --location --request POST \'localhost:8080/config/updateUseCache?useCache=true\'`\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana09.png)\\r\\n\\r\\nWhether the cache is hit can be seen in the response structure.\\r\\n\\r\\n#### Query Monitoring + Blacklisting\\r\\n\\r\\nKibana\'s query syntax is relatively flexible, but some queries can consume substantial resources from ClickHouse. Therefore, we have implemented monitoring for all queries and their execution times. This allows us to easily view which queries have been performed and set up blacklisting controls for them. By doing this, we can restrict queries that are not very efficient.\\r\\n\\r\\n\\r\\nEnable monitoring:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateEnableMonitoring?enableMonitoring=true\'`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana10.png)\\r\\n\\r\\nAs shown in the figure above, we can monitor the details, syntax, and execution time of each query.\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana11.png)\\r\\n\\r\\nThis allows us to leverage Kibana\'s powerful built-in chart features for more intuitive analysis.\\r\\n\\r\\n#### Query TimeRange Limits\\r\\n\\r\\nOften, when users want to view the latest trends based on certain conditions, they might directly query data for recent periods, such as the last 7 days. This can lead to significant resource consumption. To manage this, CKibana has implemented a maximum time range for queries, which helps in limiting usage and conserving resources.\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateMaxTimeRange?maxTimeRange=864000000\' \u5355\u4f4dms`\\r\\n\\r\\n#### keyword Query\\r\\n\\r\\nTo better align with ElasticSearch usage conventions, a `field.keyword` query is equivalent to an exact search on the field, whereas without .keyword it implies a fuzzy search.\\r\\n\\r\\nFor example, `host.keyword:\\"www.baidu.com\\"` when translated into SQL becomes:`host=\\"www.baidu.com\\"`.\\r\\n\\r\\n#### Discover Performance Optimization\\r\\n\\r\\nClickHouse is highly suitable for analytical processing (AP) scenarios, particularly when large time spans are involved in queries. Traditional SQL commands like `select x from table where x order by time desc limit 10` can lead to very low query performance and consume a significant amount of ClickHouse resources.\\r\\n\\r\\nTo address scenarios that involve trend graphs plus details, we have optimized performance to fully leverage ClickHouse\'s AP capabilities. This optimization involves splitting the execution into two steps:\\r\\n1. Leveraging ClickHouse\'s aggregation capabilities to query the number of logs that meet the criteria per minute.\\r\\n2. Based on the number of logs per minute, automatically trimming the log search time span. For instance, if the number of logs within a minute fulfills the requirement, then the query detail time span is automatically reduced to one minute.\\r\\n\\r\\nThis feature of automatically trimming the query time leads to a significant improvement in the query performance of the Discover version and greatly optimizes CPU usage in ClickHouse.\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana15.png)\\r\\n\\r\\nAs illustrated above, a Discover query is divided into three SQL statements:\\r\\n1. Determine whether sampling is needed\\r\\n2. Count the number of logs per minute\\r\\n3. Automatically trim the query time range\\r\\n\\r\\n## 4 Usage scenarios: Nginx logs\\r\\n\\r\\n#### Clickhouse Table\\r\\n\\r\\n``` CREATE TABLE bjops.ops_bjtlblog_local\\r\\n(\\r\\n`@timestamp` UInt64,\\r\\n`X-Request-Id` String,\\r\\n`addr` String,\\r\\n`ap_area` String,\\r\\n`byte` Int64,\\r\\n`bytes_recv` Int64,\\r\\n`Bbtes_sent` Int64,\\r\\n`content-type` String,\\r\\n`content_length` Int64,\\r\\n`crp` String,\\r\\n`csi` String,\\r\\n`cspanid` String,\\r\\n`difftime` Int32,\\r\\n`error_body` String,\\r\\n`error_client` String,\\r\\n`error_host` String,\\r\\n`error_request` String,\\r\\n`error_server` String,\\r\\n`error_upstream` String,\\r\\n`forwarded` String,\\r\\n`host` String,\\r\\n`hostname` String,\\r\\n`idc` LowCardinality(String),\\r\\n`index_name` LowCardinality(String),\\r\\n`ip` String,\\r\\n`logant_idc` LowCardinality(String),\\r\\n`logant_type` LowCardinality(String),\\r\\n`origin_ip` String,\\r\\n`referer` String,\\r\\n`remote_port` String,\\r\\n`request_method` LowCardinality(String),\\r\\n`request_time` Int64,\\r\\n`request_uri` String,\\r\\n`request_url` String,\\r\\n`scheme` String,\\r\\n`server_addr` String,\\r\\n`server_name` String,\\r\\n`server_port` String,\\r\\n`server_protocol` String,\\r\\n`source` String,\\r\\n`sspanid` String,\\r\\n`st` String,\\r\\n`status` Int32,\\r\\n`timeuse` Float64,\\r\\n`traceid` String,\\r\\n`type` String,\\r\\n`ua` String,\\r\\n`up_addr` String,\\r\\n`up_status` Int32,\\r\\n`upstream_name` String,\\r\\n`upstream_response_time` Int32,\\r\\n`worker_pid` String,\\r\\n`ck_assembly_extension` String,\\r\\n`bytes_sent` Int64,\\r\\nINDEX timestamp_index `@timestamp` TYPE minmax GRANULARITY 8192\\r\\n)\\r\\nENGINE = MergeTree\\r\\nPARTITION BY (toYYYYMMDD(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')), toHour(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')))\\r\\nORDER BY (host, request_uri, intHash64(`@timestamp`))\\r\\nSAMPLE BY intHash64(`@timestamp`)\\r\\nSETTINGS in_memory_parts_enable_wal = 0, index_granularity = 8192\\r\\n```\\r\\n\\r\\nAlways place `host` at the first position in the ORDER BY clause, as most Nginx log queries require sorting based on the `host`.\\r\\n\\r\\n#### CKibana Configuration\\r\\n```\\r\\n{\\r\\n\\t\\"Proxy\\": {\\r\\n\\t\\t\\"ck\\": {\\r\\n\\t\\t\\t\\"url\\": \\"ip:6321\\",\\r\\n\\t\\t\\t\\"user\\": \\"user\\",\\r\\n\\t\\t\\t\\"pass\\": \\"pass\\",\\r\\n\\t\\t\\t\\"defaultCkDatabase\\": \\"db\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"es\\": {\\r\\n\\t\\t\\t\\"host\\": \\"ip:31940\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"roundAbleMinPeriod\\": 120000,\\r\\n\\t\\t\\"round\\": 20000,\\r\\n\\t\\t\\"maxTimeRange\\": 86400000,\\r\\n\\t\\t\\"blackIndexList\\": null,\\r\\n\\t\\t\\"whiteIndexList\\": [\\"ops_bjtlblog_all\\", \\"other_index_all\\"],\\r\\n\\t\\t\\"enableMonitoring\\": true\\r\\n\\t},\\r\\n\\t\\"query\\": {\\r\\n\\t\\t\\"sampleIndexPatterns\\": [\\"ops_bjtlblog_all\\"],\\r\\n\\t\\t\\"sampleCountMaxThreshold\\": 5000000,\\r\\n\\t\\t\\"useCache\\": true,\\r\\n\\t\\t\\"maxResultRow\\": 30000\\r\\n\\t},\\r\\n\\t\\"threadPool\\": {\\r\\n\\t\\t\\"msearchProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t},\\r\\n\\t\\t\\"commonProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t}\\r\\n\\t},\\r\\n\\t\\"defaultShard\\": 2\\r\\n}\\r\\n```\\r\\n\\r\\n#### Use Cases\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana12.png)\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana13.png)\\r\\n\\r\\n## 4 Benefits\\r\\n\\r\\nAs of now, by leveraging CKibana\'s core capabilities, we have successfully completed the full migration of all Nginx access logs and business-customized logs from Elasticsearch to Clickhouse, reducing our storage costs to below 30% of the original. Moreover, thanks to ClickHouse\'s distributed table capabilities, log queries remain unaffected even in the event of a single center failure, offering significant improvements over Elasticsearch in both cost and stability. We have also continued to use the flexible and powerful native Kibana as our visualization tool, allowing users to conveniently perform log queries and analyses using their familiar Kibana dashboard.\\r\\n\\r\\n## 5 Finally\\r\\n\\r\\nThroughout the continuous evolution of our logging system, we could not have progressed without the support of many outstanding open-source projects. We are now officially open-sourcing CKibana (ClickHouse Proxy for Kibana & Clickhouse visualization tool), hoping to help more people. We also look forward to collaborating with the community to continuously enhance its functions and features, fully unleashing the power of the Kibana visualization + ClickHouse storage combination in log scenarios, making it smoother for everyone to use. \\r\\n\\r\\nGithub Repo: https://github.com/TongchengOpenSource/ckibana/\\r\\n\\r\\nWe welcome you to go to our GitHub and give us a star, as well as provide feedback and suggestions. Of course, issues and PRs are always welcomed.\\r\\n\\r\\nThanks!"},{"id":"/1","metadata":{"permalink":"/ckibana-docs/en/blog/1","source":"@site/blog/en/1.md","title":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","description":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","date":"2024-08-26T06:52:57.848Z","formattedDate":"August 26, 2024","tags":[{"label":"CKibana","permalink":"/ckibana-docs/en/blog/tags/c-kibana"}],"readingTime":13.985,"truncated":true,"authors":[{"name":"\u57fa\u7840\u67b6\u6784\u7814\u53d1\u90e8\u2014\u5468\u795d\u7fa4"}],"prevItem":{"title":"How to Build a Logging Platform using Native Kibana and ClickHouse","permalink":"/ckibana-docs/en/blog/build-logging-platform-with-native-kibana-and-clickhouse"}},"content":"> \u672c\u6587\u5c06\u4ecb\u7ecd\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0\\r\\n\\r\\n\x3c!--truncate--\x3e\\r\\n\u4e1a\u52a1\u5feb\u901f\u53d1\u5c55\u8fc7\u7a0b\u4e2d\u5bf9\u4e8e\u5404\u79cd\u65e5\u5fd7\u6570\u636e\u7684\u67e5\u8be2\u5206\u6790\u9700\u6c42\u4f1a\u5bfc\u81f4\u65e5\u5fd7\u5b58\u50a8\u89c4\u6a21\u6025\u5267\u589e\u957f\uff0c\u4f20\u7edfELK\u548c\u4ee5ElasticSearch\u4e3a\u6838\u5fc3\u5b58\u50a8\u7684\u65e5\u5fd7\u7cfb\u7edf\u968f\u4e4b\u4f1a\u9762\u4e34\u6210\u672c\u3001\u7a33\u5b9a\u6027\u4ee5\u53ca\u6027\u80fd\u7b49\u8bf8\u591a\u6311\u6218\uff0c\u4e1a\u754c\u4e5f\u770b\u5230\u8d8a\u6765\u8d8a\u591a\u7684\u56fd\u5185\u5916\u516c\u53f8\u5c06\u5b58\u50a8\u5207\u6362\u5230ClickHouse\uff0c\u6bd4\u5982\u643a\u7a0b\u3001\u5feb\u624b\u3001B\u7ad9\u3001Cloudflare\u548cUber\u7b49\uff0c\u4ece\u4ed6\u4eec\u7684\u5206\u4eab\u4e2d\u770b\u5230\u6536\u76ca\u90fd\u5f88\u660e\u663e\uff0c\u6211\u4eec\u7684\u65e5\u5fd7\u7cfb\u7edf\u4e5f\u5f00\u59cb\u5c1d\u8bd5\u4eceElasticSearch\u8fc1\u79fb\u5230ClickHouse\uff0c\u5e76\u5728\u8fc7\u7a0b\u4e2d\u63a2\u7d22\u548c\u79ef\u7d2f\u4e86\u4e00\u5957\u6700\u5927\u7a0b\u5ea6\u7167\u987e\u539f\u6709\u7528\u6237\u4f7f\u7528\u4e60\u60ef\u5b9e\u73b0\u5e73\u6ed1\u5207\u6362\u7684\u6574\u4f53\u65b9\u6848\u3002\\r\\n\\r\\n## 1 \u80cc\u666f\u4ecb\u7ecd\\r\\n\u516c\u53f8\u5185\u6d41\u91cf\u6700\u5927\u7684\u901a\u7528\u65e5\u5fd7\u7cfb\u7edf\u5e95\u5c42\u5b58\u50a8\u81ea\u4ece2020\u5e74\u7531ElasticSearch\u9010\u6b65\u5207\u6362\u5230Clickhouse\u4e4b\u540e\u5728\u6210\u672c\u4ee5\u53ca\u7a33\u5b9a\u6027\u7b49\u65b9\u9762\u5747\u6709\u663e\u8457\u63d0\u5347\u3002\u5728\u4eca\u5e74\u56fd\u5e86\u671f\u95f4\u7a33\u5b9a\u652f\u6491\u4e86\u8d85\u8fc75000\u4ebf\u6761/\u5929\u7684\u65e5\u5fd7\u91cf\uff0c\u800c\u6210\u672c\u4e5f\u4ec5\u4ec5\u662f\u539f\u5148ElasticSearch\u65b9\u6848\u768430%\u3002\\r\\n\\r\\n\u9664\u4e86\u8be5\u65e5\u5fd7\u7cfb\u7edf\u5916\uff0c\u516c\u53f8\u5185\u8fd8\u5b58\u5728\u5f88\u591a\u65e5\u5fd7\u7cfb\u7edf\uff0c\u5927\u591a\u57fa\u4e8e\u5f00\u6e90\u4e3b\u6d41ELK\u65b9\u5f0f\u3002\u5728\u89c4\u6a21\u8d8a\u6765\u8d8a\u5927\u540e\uff0c\u6210\u672c\u8ddf\u7a33\u5b9a\u6027\u65b9\u9762\u7684\u95ee\u9898\u4e5f\u5c31\u9010\u6e10\u66b4\u9732\u4e86\uff0c\u6240\u4ee5\u8ba1\u5212\u5c06\u6240\u6709\u65e5\u5fd7\u7cfb\u7edf\u7684\u5e95\u5c42\u5b58\u50a8\u5168\u90e8\u5207\u6362\u6210ClickHouse\u3002\\r\\n\\r\\n\u5173\u4e8e\u65e5\u5fd7\u573a\u666f\u4e0bClickhouse\u7684\u9009\u578b\u4e0e\u7528\u6cd5\u4e1a\u754c\u5df2\u7ecf\u6709\u5f88\u591a\u7684\u516c\u5f00\u5206\u4eab\uff0c\u4e0d\u4f5c\u4e3a\u672c\u6587\u91cd\u70b9\uff0c\u6709\u5174\u8da3\u53ef\u81ea\u884c\u641c\u7d22\u4e0b\u76f8\u5173\u8d44\u6599\u3002\\r\\n\\r\\n\u5728\u5b58\u50a8\u5207\u6362\u5b8c\u6210\u4e4b\u540e\u6700\u91cd\u8981\u7684\u662f\u89e3\u51b3\u67e5\u8be2UI\u7528\u6237\u4f53\u9a8c\u95ee\u9898\uff0c\u4e5f\u770b\u5230\u6709\u516c\u53f8\u5728\u628a\u65e5\u5fd7\u5b58\u50a8\u5207\u5230Clickhouse\u540e\u9009\u62e9\u81ea\u7814\u4e00\u5957\u67e5\u8be2UI\uff0c\u4f46\u60f3\u8981\u7167\u987e\u7528\u6237\u539f\u5148\u6240\u6709\u4f7f\u7528\u4e60\u60ef\u4ece\u539f\u751fKibana\u65e0\u7f1d\u5207\u6362\u5230\u65b0\u5e73\u53f0\u662f\u4e0d\u592a\u5b9e\u73b0\u7684\uff0c\u9700\u8981\u6240\u6709\u4e1a\u52a1\u540c\u4e8b\u719f\u6089\u4e00\u5957\u65b0\u7684\u8bed\u6cd5\u8ddfUI\u4ea4\u4e92\uff0c\u65e0\u5f62\u4e2d\u7ed9\u4ed6\u4eec\u52a0\u4e86\u5f88\u5927\u7684\u6210\u672c\u3002\\r\\n\\r\\n\u6240\u4ee5\uff0c\u600e\u4e48\u80fd\u591f\u8ba9\u4e1a\u52a1\u7528\u6237\u4ee5\u96f6\u5b66\u4e60\u6210\u672c\u4f7f\u7528\u65b0\u5e73\u53f0\uff0c\u8fd9\u662f\u4e00\u4e2a\u6700\u68d8\u624b\u7684\u95ee\u9898\u3002\\r\\n\\r\\n## 2 \u65b9\u6848\u4ecb\u7ecd\\r\\n\u6211\u4eec\u7684\u601d\u8def\u5176\u5b9e\u4e5f\u6bd4\u8f83\u5bfb\u5e38\uff0c\u6211\u4eec\u9009\u62e9\u5728\u539f\u751fKibana\u8ddfElasticSearch\u4e4b\u95f4\u65b0\u589e\u4e00\u5c42Proxy\uff0c\u8be5Proxy\u6765\u505aElasticSearch\u8ddfClickHouse\u7684\u8bed\u6cd5\u8f6c\u6362\uff0c\u5982\u56fe:\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana02.png)\\r\\n\\r\\n\u6211\u4eec\u81ea\u7814\u4e86\u4e00\u5957Proxy\uff08\u53d6\u540dCKibana\uff09\uff0c\u8be5Proxy\u8d1f\u8d23\u5c06\u56fe\u8868\u8bf7\u6c42\u8f6c\u6362\u6210ClickHouse\u8bed\u6cd5\u67e5\u8be2\u5230ClickHouse\u7ed3\u679c\u540e\u6a21\u62df\u6210ElasticSearch\u54cd\u5e94\u8fd4\u56de\u7ed9Kibana\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u76f4\u63a5\u5728\u539f\u751fKibana\u4e0a\u9762\u5c55\u793aClickHouse\u4e2d\u7684\u6570\u636e\uff0c\u9664\u4e86\u8bed\u6cd5\u8f6c\u6362\uff0c\u6211\u4eec\u8fd8\u89e3\u51b3\u4e86\u5f88\u591a\u5b9e\u9645\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684\u95ee\u9898\u3002\\r\\n\\r\\n`CKibana: \u73b0\u5df2\u6b63\u5f0f\u5f00\u6e90\uff0chttps://github.com/TongchengOpenSource/ckibana`\\r\\n\\r\\n\u4ecb\u4e8eClickHouse\u7684\u67e5\u8be2\u5e76\u53d1\u80fd\u529b\u9650\u5236\uff0c\u6211\u4eec\u4fdd\u7559\u4e86ElasticSearch\uff0c\u8be5ElasticSearch\u53ef\u4ee5\u7528\u6765\u505a\u7ed3\u679c\u7684\u7f13\u5b58\u7b49\u9ad8\u7ea7\u7279\u6027\u4ee5\u53ca\u4fdd\u5b58Kibana\u76f8\u5173\u7684\u5143\u6570\u636e\uff0c\u672c\u8eab\u975e\u5e38\u8f7b\u91cf\u3002\\r\\n\\r\\n## 3 CKibana\u4f7f\u7528\\r\\n### \u51c6\u5907\u73af\u5883\\r\\n1. Kibana: \u7528\u6765\u63d0\u4f9b\u7ed9\u4e1a\u52a1\u505aUI\u5c55\u793a\\r\\n2. ElasticSearch: \u7528\u6765\u505akibana\u5143\u6570\u636e\u5b58\u50a8+\u67e5\u8be2\u7f13\u5b58\u7b49\u9ad8\u7ea7\u7279\u6027\\r\\n3. ClickHouse: \u771f\u5b9e\u5b58\u65e5\u5fd7\u6570\u636e\u7684\u5b58\u50a8\\r\\n4. CKibana: \u63d0\u4f9bProxy\u7b49\u9ad8\u7ea7\u529f\u80fd\uff0c\u5b9e\u73b0\u8ba9\u7528\u6237\u76f4\u63a5\u5728\u539f\u751fKibana\u4e0a\u67e5\u8be2ClickHouse\u6570\u636e\\r\\n\\r\\n### \u5f00\u59cb\u4f7f\u7528\\r\\n#### \u542f\u52a8CKibana\\r\\n\u914d\u7f6eElasticSearch\u76f8\u5173\u4fe1\u606f\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana03.png)\\r\\n\\r\\n\u542f\u52a8\uff0c\u9700\u8981JDK17+\\r\\n\\r\\n`java -jar ckibana.jar`\\r\\n\\r\\n#### \u4fee\u6539Kibana\\r\\n\u4fee\u6539Kibana\u914d\u7f6e\uff0c\u5c06ElasticSearch\u5730\u5740\u6539\u4e3aCKibana\u5730\u5740\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana04.png)\\r\\n\\r\\n\u6b64\u65f6\uff0cKibana\u529f\u80fd\u5b8c\u5168\u53ef\u7528\uff0c\u53ef\u4ee5\u5c06CKibana\u5f53\u6210\u4e00\u4e2aElasticSearch Proxy\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana05.png)\\r\\n\\r\\n#### \u914d\u7f6eClickHouse\u8fde\u63a5\u4fe1\u606f\u4e0e\u7d22\u5f15\u767d\u540d\u5355\\r\\n\\r\\n\u8bbe\u7f6eClickHouse\u8fde\u63a5\u4fe1\u606f:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateCk?url=ckUrl&user=default&pass=default&defaultCkDatabase=ops\'`\\r\\n\\r\\n#### \u914d\u7f6e\u9700\u8981\u5207\u6362\u5230ClickHouse\u7684index\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateWhiteIndexList?list=index1,index2\'`\\r\\n\\r\\nClickHouse\u5b57\u6bb5\u8ddfElasticSearch\u5b57\u6bb5\u7684\u5173\u7cfb\\r\\n\\r\\n| es\u7c7b\u578b | ck\u7c7b\u578b |\\r\\n|----------|---------|\\r\\n| keyword | String |\\r\\n| text | String |\\r\\n| ip | String(\u4ee3\u7406\u81ea\u52a8\u8bc6\u522bipv4\u548cipv6) |\\r\\n| integer | Int32 |\\r\\n| long | Int64 |\\r\\n| float | Float32 |\\r\\n| double | Float64 |\\r\\n\\r\\n#### \u521b\u5efaindex pattern\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana06.png)\\r\\n\\r\\n\u6ce8\u610f\u70b9:\\r\\n1. \u9996\u5148\u786e\u5b9a\u8f93\u5165\u7684index pattern\u8ddfClickHouse\u8868\u662f\u5426\u4e00\u81f4\uff0cindex pattern\u8ddf\u8ddfClickHouse\u8868\u540d\u662f\u7cbe\u786e\u5339\u914d\\r\\n2. \u5982\u679c\u4e0d\u80fd\u6652\u9009\u5230\u5bf9\u5e94\u7684\u8868\u683c\uff0c\u53ef\u4ee5\u57fa\u4e8eCKibana\u65e5\u5fd7\u4e2d\u7684sql\u6392\u67e5\uff0c\u662f\u5426\u53ef\u67e5\u8be2\u5230\u5bf9\u5e94\u7684\u8868\\r\\n3. \u6ce8\u610f\u65f6\u95f4\u5b57\u6bb5\uff0c\u5426\u5219\u4f1a\u7b5b\u9009\u4e0d\u4e86\u65f6\u95f4\u5b57\u6bb5\uff0c\u7b5b\u9009\u903b\u8f91\u5982\u4e0b:\\r\\n- \u5b57\u6bb5\u4e3aDate\u7c7b\u578b\uff0c\u6bd4\u5982DateTime64\u7c7b\u578b\uff0c\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u7c7b\u578b\\r\\n- \u5b57\u6bb5\u540d\u4e2d\u5305\u542btime\uff0c\u6bd4\u5982\uff08@timestamp UInt64\uff09\uff0c\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u7c7b\u578b\\r\\n\\r\\n\u8fd9\u4e24\u79cd\u60c5\u51b5\u4e0b\u6ee1\u8db3\u4efb\u610f\u4e00\u4e2a\uff0c\u5b57\u6bb5\u90fd\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u5b57\u6bb5\uff0c\u5982\u679c\u9009\u62e9\u4e0d\u4e86\u65f6\u95f4\u5b57\u6bb5\uff0c\u9700\u8981\u68c0\u67e5\u4e0bClickHouse\u8868\u4e2d\u5b57\u6bb5\u662f\u5426\u7b26\u5408\u5339\u914d\u903b\u8f91\u3002\\r\\n#### \u5f00\u59cb\u4f7f\u7528\\r\\n\u914d\u7f6e\u5b8c\u6210index pattern\u540e\uff0c\u5c31\u53ef\u4ee5\u6b63\u5e38\u7684\u4f7f\u7528Kibana\u7684\u56fe\u8868\u529f\u80fd\u4e86\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana07.png)\\r\\n\\r\\n### \u9ad8\u7ea7\u529f\u80fd\\r\\n#### \u91c7\u6837\\r\\nKibana\u7684\u56fe\u8868\u5927\u90e8\u5206\u90fd\u662f\u5173\u6ce8\u8d8b\u52bf\uff0c\u5f53\u547d\u4e2d\u7ed3\u679c\u96c6\u592a\u5927\u65f6\u5019\uff0c\u6d88\u8017\u7684ClickHouse\u7684\u8d44\u6e90\u4e5f\u8f83\u591a\u3002\u6211\u4eec\u63d0\u4f9b\u4e86\u91c7\u6837\u529f\u80fd\uff0c\u5728\u6570\u636e\u96c6\u8f83\u5927\u7684\u65f6\u5019\uff0c\u80fd\u591f\u4fdd\u969c\u56fe\u8868\u8d8b\u52bf\u8ddf\u5b9e\u9645\u7684\u5dee\u4e0d\u591a\uff0c\u800c\u4e14\u53ef\u4ee5\u5f88\u597d\u7684\u63a7\u5236ClickHouse\u7684\u8d44\u6e90\u4f7f\u7528\u3002\\r\\n\\r\\n`- \u6ce8: \u5bf9\u5e94\u7684ClickHouse\u7684\u8868\u9700\u8981\u6309\u7167ck\u7684\u91c7\u6837\u8868\u521b\u5efa [clickhouse sample](https://clickhouse.com/docs/en/sql-reference/statements/select/sample)\\r\\n- \u5982\u679c\u91c7\u6837\u9608\u503c\u8bbe\u7f6e\u7684\u8fc7\u5c0f\uff0c\u4f1a\u5bfc\u81f4\u8fd8\u539f\u51fa\u6765\u7684\u503c\u8ddf\u771f\u5b9e\u503c\u5dee\u5f02\u8f83\u5927\uff0c\u6211\u4eec\u7ebf\u4e0a\u8bbe\u7f6e\u7684\u91c7\u6837\u503c\u4e3a500w`\\r\\n\\r\\n\u5f00\u542f\u91c7\u6837\u9700\u8981\u4e24\u6b65:\\r\\n1. \u914d\u7f6e\u9700\u8981\u91c7\u6837\u7684\u8868\\r\\n2. \u66f4\u65b0\u91c7\u6837\u9608\u503c\uff0c\u5f53\u547d\u4e2d\u7ed3\u679c\u96c6\u8d85\u8fc7\u9608\u503c\u65f6\uff0c\u4f1a\u89e6\u53d1\u91c7\u6837\\r\\n\\r\\n\u91c7\u6837\u903b\u8f91 `Math.max(0.01, Double.parseDouble(String.format(\\"%.5f\\", sampleParam.getSampleCountMaxThreshold() * 1.00 / sampleParam.getSampleTotalCount())))`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana08.png)\\r\\n\\r\\n\u5c55\u5f00\u6d41\u91cf\u5668\u7684\u54cd\u5e94\u7ed3\u679c\uff0c\u53ef\u4ee5\u770b\u5230\u91c7\u6837\u503c\\r\\n\\r\\n#### \u65f6\u95f4round+\u7f13\u5b58\\r\\n\u5f53\u7ebf\u4e0a\u51fa\u73b0\u4e00\u4e2a\u6545\u969c\u65f6\u5019\uff0c\u6709\u5927\u91cf\u7684sre\u540c\u5b66\u8ddf\u4e1a\u52a1\u540c\u5b66\u90fd\u9700\u8981\u901a\u8fc7nginx\u65e5\u5fd7\u6765\u67e5\u8be2\u95ee\u9898\uff0c\u800c\u4e14\u67e5\u8be2\u7684\u6761\u4ef6\u57fa\u672c\u90fd\u76f8\u540c\uff0c\u4f46\u662fClickHouse\u4e3a\u4e86\u4f7f\u5f97\u67e5\u8be2\u6027\u80fd\u6700\u597d\uff0c\u800c\u5c3d\u91cf\u7684\u4f7f\u7528\u66f4\u591a\u7684cpu\u6765\u53c2\u52a0\u8ba1\u7b97\uff0c\u8fd9\u6837\u5bfc\u81f4\u8fd9\u4e9b\u573a\u666f\u4e0bClickHouse\u7684cpu\u4f1a\u76f4\u63a5\u8dd1\u6ee1\u3002\u4e14\u5728\u540c\u5b66\u4eec\u7684\u4e0d\u65adretry\u4e0b\uff0ccpu\u4e0d\u80fd\u6062\u590d\u3002\\r\\n\\r\\n\u6240\u4ee5\u6211\u4eec\u505a\u4e86\u4e00\u4e2a\u65f6\u95f4round+\u7f13\u5b58\u529f\u80fd\u3002\\r\\n\\r\\n\u65f6\u95f4round: \u6bd4\u5982\u8bbe\u7f6eround\u4e3a20s\uff0c\u5219\u67e5\u8be2\u65f6\u95f4\u6761\u4ef6\u4e2d\u7684s\u7684\u7cbe\u5ea6\u4f1a`%20`\uff0c\u76f8\u5f53\u4e8e\u6700\u591a\u5ef6\u8fdf\u4e8620s\u6765\u67e5\u8be2\u6570\u636e\u3002\\r\\n\\r\\n\u6709\u4e86\u65f6\u95f4round\u540e\uff0c\u5219\u5927\u91cf\u7684\u67e5\u8be2\u6761\u4ef6\u5c31\u4e00\u81f4\u4e86\uff0c\u8fd9\u4e2a\u65f6\u5019\u53ea\u9700\u8981\u5f00\u542f\u7ed3\u679c\u7f13\u5b58\uff0c\u5219\u5c31\u53ef\u4ee5\u5f88\u597d\u7684\u7f13\u89e3ClickHouse\u7684\u538b\u529b\u3002\\r\\n\\r\\n\u8bbe\u7f6e\u65f6\u95f4round:\\r\\n`curl --location --request POST \'localhost:8080/config/updateRoundAbleMinPeriod?roundAbleMinPeriod=20000\' \u5355\u4f4dms`\\r\\n\\r\\n\u8bbe\u7f6e\u6253\u5f00\u7f13\u5b58:\\r\\n`curl --location --request POST \'localhost:8080/config/updateUseCache?useCache=true\'`\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana09.png)\\r\\n\\r\\n\u662f\u5426\u547d\u4e2d\u7f13\u5b58\uff0c\u5728\u54cd\u5e94\u7ed3\u6784\u91cc\u9762\u53ef\u4ee5\u770b\u5230\\r\\n\\r\\n#### \u67e5\u8be2\u76d1\u63a7 + \u9ed1\u540d\u5355\\r\\nKibana\u7684\u67e5\u8be2\u8bed\u6cd5\u76f8\u5bf9\u6bd4\u8f83\u968f\u610f\uff0c\u4e00\u4e9b\u67e5\u8be2\u5bf9ClickHouse\u7684\u8d44\u6e90\u6d88\u8017\u4f1a\u6bd4\u8f83\u5927\uff0c\u6240\u4ee5\u6211\u4eec\u5c06\u6240\u6709\u7684\u67e5\u8be2\u4ee5\u53ca\u8017\u65f6\u90fd\u505a\u4e86\u76d1\u63a7\uff0c\u8fd9\u6837\u53ef\u4ee5\u6bd4\u8f83\u65b9\u4fbf\u7684\u67e5\u770b\u90fd\u505a\u4e86\u54ea\u4e9b\u67e5\u8be2\uff0c\u8bbe\u7f6e\u53ef\u4ee5\u5bf9\u67e5\u8be2\u505a\u9ed1\u540d\u5355\u7684\u63a7\u5236\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u9650\u5236\u4e0d\u592a\u53cb\u597d\u7684\u67e5\u8be2\\r\\n\\r\\n\u5f00\u542f\u76d1\u63a7:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateEnableMonitoring?enableMonitoring=true\'`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana10.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe\uff0c\u6211\u4eec\u53ef\u4ee5\u76d1\u63a7\u6bcf\u4e2a\u67e5\u8be2\u7684\u8be6\u60c5\uff0c\u8bed\u6cd5\u4ee5\u53ca\u8017\u65f6\u3002\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana11.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe\uff0c\u53ef\u4ee5\u57fa\u4e8ekibana\u56fe\u8868\u529f\u80fd\uff0c\u505a\u66f4\u76f4\u89c2\u7684\u5206\u6790\u3002\\r\\n\\r\\n#### \u67e5\u8be2\u65f6\u95f4\u9650\u5236\\r\\n\u5f88\u591a\u65f6\u5019\uff0c\u6709\u4eba\u60f3\u8981\u67e5\u770b\u67d0\u4e2a\u6761\u4ef6\u6700\u8fd1\u7684\u8d8b\u52bf\uff0c\u76f4\u63a5\u67e5\u8be2\u6700\u8fd17\u5929\u7b49\u7b49\uff0c\u8fd9\u6837\u4f1a\u5bfc\u81f4\u8d44\u6e90\u6d88\u8017\u6bd4\u8f83\u5927\uff0c\u6240\u4ee5CKibana\u652f\u6301\u4e86\u6700\u957f\u65f6\u95f4\u67e5\u8be2\u8303\u56f4\uff0c\u6765\u9650\u5236\u4f7f\u7528\u3002\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateMaxTimeRange?maxTimeRange=864000000\' \u5355\u4f4dms`\\r\\n\\r\\n#### keyword\u67e5\u8be2\\r\\n\u4e3a\u4e86\u66f4\u597d\u7684\u5339\u914dElasticSearch\u7684\u4f7f\u7528\u4e60\u60ef\u3002 `field.keyword` \u67e5\u8be2\u76f8\u5f53\u4e8e\u5bf9field\u7684\u7cbe\u786e\u67e5\u8be2\uff0c\u5426\u5219\u4e3a\u6a21\u7cca\u641c\u7d22\\r\\n\\r\\n\u6bd4\u5982 `host.keyword:\\"www.baidu.com\\"` \u6362\u6210sql\u4e3a: `host=\\"www.baidu.com\\"`\\r\\n\\r\\n#### Discover\u6027\u80fd\u4f18\u5316\\r\\nClickHouse\u7684\u5f3a\u9879\u5728AP\u573a\u666f,\u5f53\u67e5\u8be2\u65f6\u95f4\u8de8\u5ea6\u6bd4\u8f83\u5927\u65f6,\u4f20\u7edf\u7684SQL:`select x from table where x order by time desc limit 10` \u8fd9\u79cd\u65b9\u5f0f\u4f1a\u5bfc\u81f4\u67e5\u8be2\u6027\u80fd\u975e\u5e38\u4f4e,\u800c\u4e14\u6d88\u8017\u5927\u91cf\u7684ClickHouse\u8d44\u6e90\u3002\\r\\n\u9488\u5bf9\u8fd9\u79cd\u5e26\u8d8b\u52bf\u56fe+\u660e\u7ec6\u7684\u573a\u666f\u6211\u4eec\u505a\u4e86\u6027\u80fd\u4f18\u5316,\u5145\u5206\u53d1\u6325ClickHouse\u7684AP\u80fd\u529b\u3002\u4f1a\u5c06\u6267\u884c\u62c6\u5206\u4e3a\u4e24\u6b65:\\r\\n1. \u57fa\u4e8eCk \u805a\u5408\u80fd\u529b,\u67e5\u8be2\u51fa\u6bcf\u5206\u949f\u6ee1\u8db3\u6761\u4ef6\u7684\u65e5\u5fd7\u6570\u91cf\\r\\n2. \u57fa\u4e8e\u6bcf\u5206\u949f\u7684\u65e5\u5fd7\u6570\u91cf\u81ea\u52a8\u88c1\u526a\u65e5\u5fd7\u641c\u7d22\u7684\u65f6\u95f4\u8de8\u5ea6,\u6bd4\u5982\u4e00\u5206\u949f\u5185\u7684\u65e5\u5fd7\u6761\u6570\u5c31\u6ee1\u8db3\u4e86\u8981\u6c42,\u5219\u67e5\u8be2\u660e\u7ec6\u65f6\u81ea\u52a8\u7f29\u51cf\u52301\u5206\u949f\u7684\u8de8\u5ea6\u3002\\r\\n\\r\\n\u57fa\u4e8e\u67e5\u8be2\u65f6\u95f4\u7684\u81ea\u52a8\u88c1\u526a\u529f\u80fd,\u4f1a\u4f7f\u5f97Discover\u7248\u672c\u67e5\u8be2\u6027\u80fd\u6709\u8d28\u7684\u63d0\u5347\u4e14\u5bf9ClickHouse\u7684cpu\u5360\u7528\u6709\u5f88\u5927\u7684\u4f18\u5316\u3002\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana15.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe,\u4e00\u4e2aDiscover\u67e5\u8be2\u62c6\u6210\u4e863\u4e2asql:\\r\\n1. \u8ba1\u7b97\u662f\u5426\u9700\u8981\u91c7\u6837\\r\\n2. \u7edf\u8ba1\u6bcf\u5206\u949f\u7684\u65e5\u5fd7\u6570\\r\\n3. \u81ea\u52a8\u88c1\u526a\u67e5\u8be2\u65f6\u95f4\u8303\u56f4\\r\\n\\r\\n## 4 Nginx\u65e5\u5fd7\u76f8\u5173\u4f7f\u7528\u6848\u4f8b\\r\\n\\r\\n#### Clickhouse\u8868\u7ed3\u6784\\r\\n\\r\\n``` CREATE TABLE bjops.ops_bjtlblog_local\\r\\n(\\r\\n`@timestamp` UInt64,\\r\\n`X-Request-Id` String,\\r\\n`addr` String,\\r\\n`ap_area` String,\\r\\n`byte` Int64,\\r\\n`bytes_recv` Int64,\\r\\n`Bbtes_sent` Int64,\\r\\n`content-type` String,\\r\\n`content_length` Int64,\\r\\n`crp` String,\\r\\n`csi` String,\\r\\n`cspanid` String,\\r\\n`difftime` Int32,\\r\\n`error_body` String,\\r\\n`error_client` String,\\r\\n`error_host` String,\\r\\n`error_request` String,\\r\\n`error_server` String,\\r\\n`error_upstream` String,\\r\\n`forwarded` String,\\r\\n`host` String,\\r\\n`hostname` String,\\r\\n`idc` LowCardinality(String),\\r\\n`index_name` LowCardinality(String),\\r\\n`ip` String,\\r\\n`logant_idc` LowCardinality(String),\\r\\n`logant_type` LowCardinality(String),\\r\\n`origin_ip` String,\\r\\n`referer` String,\\r\\n`remote_port` String,\\r\\n`request_method` LowCardinality(String),\\r\\n`request_time` Int64,\\r\\n`request_uri` String,\\r\\n`request_url` String,\\r\\n`scheme` String,\\r\\n`server_addr` String,\\r\\n`server_name` String,\\r\\n`server_port` String,\\r\\n`server_protocol` String,\\r\\n`source` String,\\r\\n`sspanid` String,\\r\\n`st` String,\\r\\n`status` Int32,\\r\\n`timeuse` Float64,\\r\\n`traceid` String,\\r\\n`type` String,\\r\\n`ua` String,\\r\\n`up_addr` String,\\r\\n`up_status` Int32,\\r\\n`upstream_name` String,\\r\\n`upstream_response_time` Int32,\\r\\n`worker_pid` String,\\r\\n`ck_assembly_extension` String,\\r\\n`bytes_sent` Int64,\\r\\nINDEX timestamp_index `@timestamp` TYPE minmax GRANULARITY 8192\\r\\n)\\r\\nENGINE = MergeTree\\r\\nPARTITION BY (toYYYYMMDD(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')), toHour(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')))\\r\\nORDER BY (host, request_uri, intHash64(`@timestamp`))\\r\\nSAMPLE BY intHash64(`@timestamp`)\\r\\nSETTINGS in_memory_parts_enable_wal = 0, index_granularity = 8192\\r\\n```\\r\\n\\r\\n\u5207\u8bb0\u5c06`host`\u653e\u7f6e\u5728order by\u7684\u7b2c\u4e00\u4f4d\u3002\u56e0\u4e3a\u67e5Nginx\u65e5\u5fd7\u5927\u591a\u6570\u60c5\u51b5\u4e0b\u9700\u8981\u6839\u636e`host`\u67e5\u8be2\u3002\\r\\n\\r\\n#### CKibana\u6240\u6709\u914d\u7f6e\\r\\n```\\r\\n{\\r\\n\\t\\"Proxy\\": {\\r\\n\\t\\t\\"ck\\": {\\r\\n\\t\\t\\t\\"url\\": \\"ip:6321\\",\\r\\n\\t\\t\\t\\"user\\": \\"user\\",\\r\\n\\t\\t\\t\\"pass\\": \\"pass\\",\\r\\n\\t\\t\\t\\"defaultCkDatabase\\": \\"db\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"es\\": {\\r\\n\\t\\t\\t\\"host\\": \\"ip:31940\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"roundAbleMinPeriod\\": 120000,\\r\\n\\t\\t\\"round\\": 20000,\\r\\n\\t\\t\\"maxTimeRange\\": 86400000,\\r\\n\\t\\t\\"blackIndexList\\": null,\\r\\n\\t\\t\\"whiteIndexList\\": [\\"ops_bjtlblog_all\\", \\"other_index_all\\"],\\r\\n\\t\\t\\"enableMonitoring\\": true\\r\\n\\t},\\r\\n\\t\\"query\\": {\\r\\n\\t\\t\\"sampleIndexPatterns\\": [\\"ops_bjtlblog_all\\"],\\r\\n\\t\\t\\"sampleCountMaxThreshold\\": 5000000,\\r\\n\\t\\t\\"useCache\\": true,\\r\\n\\t\\t\\"maxResultRow\\": 30000\\r\\n\\t},\\r\\n\\t\\"threadPool\\": {\\r\\n\\t\\t\\"msearchProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t},\\r\\n\\t\\t\\"commonProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t}\\r\\n\\t},\\r\\n\\t\\"defaultShard\\": 2\\r\\n}\\r\\n```\\r\\n\\r\\n#### \u7ebf\u4e0a\u6548\u679c\u56fe\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana12.png)\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana13.png)\\r\\n\\r\\n## 4 \u6536\u76ca\\r\\n\u622a\u6b62\u5230\u76ee\u524d\uff0c\u501f\u52a9CKibana\u7684\u6838\u5fc3\u80fd\u529b\uff0c\u6211\u4eec\u5df2\u7ecf\u5b8c\u6210\u4e86\u6240\u6709Nginx\u8bbf\u95ee\u65e5\u5fd7\u548c\u4e1a\u52a1\u81ea\u5b9a\u4e49\u65e5\u5fd7\u5168\u91cf\u4eceElasticSearch\u5207\u6362\u5230Clickhouse\uff0c\u5b58\u50a8\u6210\u672c\u964d\u4e3a\u539f\u6765\u768430%\u4ee5\u5185\u3002\u540c\u65f6\u57fa\u4e8eClickHouse\u7684\u5206\u5e03\u5f0f\u8868\u80fd\u529b\u53ef\u4ee5\u505a\u5230\u5373\u4f7f\u5728\u5355\u4e2d\u5fc3\u6545\u969c\u65f6\u65e5\u5fd7\u67e5\u8be2\u4e5f\u4e0d\u53d7\u4efb\u4f55\u5f71\u54cd\uff0c\u65e0\u8bba\u5728\u6210\u672c\u8fd8\u662f\u7a33\u5b9a\u6027\u65b9\u9762\u76f8\u6bd4ElasticSearch\u90fd\u6709\u4e86\u8f83\u5927\u7684\u63d0\u5347\uff0c\u5e76\u6cbf\u7528\u4e86\u7075\u6d3b\u5f3a\u5927\u7684\u539f\u751fKibana\u4f5c\u4e3a\u53ef\u89c6\u5316\u5de5\u5177\uff0c\u53ef\u4ee5\u8ba9\u7528\u6237\u7ee7\u7eed\u4f7f\u7528\u81ea\u5df1\u4e60\u60ef\u7684Kibana\u9762\u677f\u4fbf\u6377\u5730\u8fdb\u884c\u65e5\u5fd7\u67e5\u8be2\u548c\u5206\u6790\u3002\\r\\n\\r\\n## 5 \u6700\u540e\\r\\n\u5728\u6211\u4eec\u65e5\u5fd7\u7cfb\u7edf\u4e0d\u65ad\u6f14\u8fdb\u7684\u8fc7\u7a0b\u4e2d\u79bb\u4e0d\u5f00\u4f17\u591a\u4f18\u79c0\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u73b0\u5728\u6211\u4eec\u4e5f\u5c06CKibana (ClickHouse Proxy for Kibana & Clickhouse visualization tool) \u6b63\u5f0f\u5f00\u6e90\u4e86\uff0c\u5e0c\u671b\u80fd\u591f\u5e2e\u52a9\u5230\u66f4\u591a\u7684\u4eba\u540c\u65f6\u4e5f\u671f\u671b\u80fd\u8ddf\u793e\u533a\u4e00\u8d77\u5171\u5efa\u4e0d\u65ad\u5b8c\u5584\u529f\u80fd\u4e0e\u7279\u6027\uff0c\u5145\u5206\u53d1\u6325\u65e5\u5fd7\u573a\u666f\u4e0bKibana\u53ef\u89c6\u5316+ClickHouse\u5b58\u50a8\u8fd9\u5bf9\u7ec4\u5408\u7684\u5a01\u529b\uff0c\u8ba9\u5927\u5bb6\u7528\u8d77\u6765\u66f4\u52a0\u4e1d\u6ed1\uff0c\u6b22\u8fceStar\u548c\u7ed9\u6211\u4eec\u63d0ISSUE\u3002\\r\\n\\r\\n\u9879\u76eeGithub\u5730\u5740: https://github.com/TongchengOpenSource/ckibana"}]}')}}]); \ No newline at end of file diff --git a/assets/js/421626d5.8a82997b.js b/assets/js/421626d5.8a82997b.js new file mode 100644 index 0000000..73c350d --- /dev/null +++ b/assets/js/421626d5.8a82997b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[819],{9700:function(e){e.exports=JSON.parse('{"permalink":"/ckibana-docs/en/blog","page":1,"postsPerPage":2,"totalPages":1,"totalCount":2,"previousPage":null,"nextPage":null,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/4608.7152e48a.js b/assets/js/4608.7152e48a.js new file mode 100644 index 0000000..f97f897 --- /dev/null +++ b/assets/js/4608.7152e48a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[4608],{4608:function(e,t,a){a.r(t);var o=a(7294),n=a(7019),l=a(5999);t.default=function(){return o.createElement(n.Z,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})},o.createElement("main",{className:"container margin-vert--xl"},o.createElement("div",{className:"row"},o.createElement("div",{className:"col col--6 col--offset-3"},o.createElement("h1",{className:"hero__title"},o.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),o.createElement("p",null,o.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),o.createElement("p",null,o.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."))))))}}}]); \ No newline at end of file diff --git a/assets/js/4a4af889.fddbde14.js b/assets/js/4a4af889.fddbde14.js new file mode 100644 index 0000000..fe9ad1d --- /dev/null +++ b/assets/js/4a4af889.fddbde14.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[772],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return b}});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var u=r.createContext({}),l=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,u=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),f=l(n),b=o,m=f["".concat(u,".").concat(b)]||f[b]||s[b]||a;return n?r.createElement(m,i(i({ref:t},p),{},{components:n})):r.createElement(m,i({ref:t},p))}));function b(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=f;var c={};for(var u in t)hasOwnProperty.call(t,u)&&(c[u]=t[u]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var l=2;l=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=s(n),f=o,h=d["".concat(c,".").concat(f)]||d[f]||p[f]||i;return n?r.createElement(h,a(a({ref:t},u),{},{components:n})):r.createElement(h,a({ref:t},u))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:o,a[1]=l;for(var s=2;s0&&e[n-1]===t?e:e.concat(t)},f=function(e,t){var n=e.plain,r=Object.create(null),o=e.styles.reduce((function(e,n){var r=n.languages,o=n.style;return r&&!r.includes(t)||n.types.forEach((function(t){var n=s({},e[t],o);e[t]=n})),e}),r);return o.root=n,o.plain=s({},n,{backgroundColor:null}),o};function h(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&-1===t.indexOf(r)&&(n[r]=e[r]);return n}var m=function(e){function t(){for(var t=this,n=[],r=arguments.length;r--;)n[r]=arguments[r];e.apply(this,n),c(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?f(e.theme,e.language):void 0;return t.themeDict=n})),c(this,"getLineProps",(function(e){var n=e.key,r=e.className,o=e.style,i=s({},h(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),a=t.getThemeDict(t.props);return void 0!==a&&(i.style=a.plain),void 0!==o&&(i.style=void 0!==i.style?s({},i.style,o):o),void 0!==n&&(i.key=n),r&&(i.className+=" "+r),i})),c(this,"getStyleForToken",(function(e){var n=e.types,r=e.empty,o=n.length,i=t.getThemeDict(t.props);if(void 0!==i){if(1===o&&"plain"===n[0])return r?{display:"inline-block"}:void 0;if(1===o&&!r)return i[n[0]];var a=r?{display:"inline-block"}:{},l=n.map((function(e){return i[e]}));return Object.assign.apply(Object,[a].concat(l))}})),c(this,"getTokenProps",(function(e){var n=e.key,r=e.className,o=e.style,i=e.token,a=s({},h(e,["key","className","style","token"]),{className:"token "+i.types.join(" "),children:i.content,style:t.getStyleForToken(i),key:void 0});return void 0!==o&&(a.style=void 0!==a.style?s({},a.style,o):o),void 0!==n&&(a.key=n),r&&(a.className+=" "+r),a})),c(this,"tokenize",(function(e,t,n,r){var o={code:t,grammar:n,language:r,tokens:[]};e.hooks.run("before-tokenize",o);var i=o.tokens=e.tokenize(o.code,o.grammar,o.language);return e.hooks.run("after-tokenize",o),i}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,r=e.code,o=e.children,i=this.getThemeDict(this.props),a=t.languages[n];return o({tokens:function(e){for(var t=[[]],n=[e],r=[0],o=[e.length],i=0,a=0,l=[],c=[l];a>-1;){for(;(i=r[a]++)0?f:["plain"],s=h):(f=d(f,h.type),h.alias&&(f=d(f,h.alias)),s=h.content),"string"==typeof s){var m=s.split(u),y=m.length;l.push({types:f,content:m[0]});for(var g=1;g0&&o.getRangeAt(0);t.append(n),n.select(),n.selectionStart=0,n.selectionEnd=e.length;let a=!1;try{a=document.execCommand("copy")}catch{}n.remove(),i&&(o.removeAllRanges(),o.addRange(i)),r&&r.focus()}(I),f(!0),setTimeout((function(){return f(!1)}),2e3)};return o.createElement(y,(0,r.Z)({},l,{key:String(m),theme:P,code:I,language:A}),(function(e){var t=e.className,n=e.style,l=e.tokens,c=e.getLineProps,s=e.getTokenProps;return o.createElement("div",{className:(0,i.Z)(T,a,v.kM.common.codeBlock)},k&&o.createElement("div",{style:n,className:w},k),o.createElement("div",{className:(0,i.Z)(E,A)},o.createElement("pre",{tabIndex:0,className:(0,i.Z)(t,O,"thin-scrollbar"),style:n},o.createElement("code",{className:S},l.map((function(e,t){1===e.length&&"\n"===e[0].content&&(e[0].content="");var n=c({line:e,key:t});return j.includes(t)&&(n.className+=" docusaurus-highlight-code-line"),o.createElement("span",(0,r.Z)({key:t},n),e.map((function(e,t){return o.createElement("span",(0,r.Z)({key:t},s({token:e,key:t})))})),o.createElement("br",null))})))),o.createElement("button",{type:"button","aria-label":(0,g.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),className:(0,i.Z)(C,"clean-btn"),onClick:L},d?o.createElement(g.Z,{id:"theme.CodeBlock.copied",description:"The copied button label on code blocks"},"Copied"):o.createElement(g.Z,{id:"theme.CodeBlock.copy",description:"The copy button label on code blocks"},"Copy"))))}))}},9649:function(e,t,n){"use strict";n.d(t,{N:function(){return d},Z:function(){return f}});var r=n(3366),o=n(7462),i=n(7294),a=n(6010),l=n(5999),c=n(3810),s="anchorWithStickyNavbar_y2LR",u="anchorWithHideOnScrollNavbar_3ly5",p=["id"],d=function(e){var t=Object.assign({},e);return i.createElement("header",null,i.createElement("h1",(0,o.Z)({},t,{id:void 0}),t.children))},f=function(e){return"h1"===e?d:(t=e,function(e){var n,d=e.id,f=(0,r.Z)(e,p),h=(0,c.LU)().navbar.hideOnScroll;return d?i.createElement(t,(0,o.Z)({},f,{className:(0,a.Z)("anchor",(n={},n[u]=h,n[s]=!h,n)),id:d}),f.children,i.createElement("a",{className:"hash-link",href:"#"+d,title:(0,l.I)({id:"theme.common.headingLinkTitle",message:"Direct link to heading",description:"Title for link to heading"})},"\u200b")):i.createElement(t,f)});var t}},7440:function(e,t,n){"use strict";n.d(t,{Z:function(){return m}});var r=n(7462),o=n(3366),i=n(7294),a=n(2859),l=n(9960),c=n(3899),s=n(9649),u=n(6010),p=n(3810),d="details_h+cY";function f(e){var t=Object.assign({},e);return i.createElement(p.PO,(0,r.Z)({},t,{className:(0,u.Z)("alert alert--info",d,t.className)}))}var h=["mdxType","originalType"];var m={head:function(e){var t=i.Children.map(e.children,(function(e){return function(e){var t,n;if(null!=e&&null!=(t=e.props)&&t.mdxType&&null!=e&&null!=(n=e.props)&&n.originalType){var r=e.props,a=(r.mdxType,r.originalType,(0,o.Z)(r,h));return i.createElement(e.props.originalType,a)}return e}(e)}));return i.createElement(a.default,e,t)},code:function(e){var t=e.children;return(0,i.isValidElement)(t)?t:t.includes("\n")?i.createElement(c.Z,e):i.createElement("code",e)},a:function(e){return i.createElement(l.default,e)},pre:function(e){var t,n=e.children;return(0,i.isValidElement)(n)&&(0,i.isValidElement)(null==n||null==(t=n.props)?void 0:t.children)?n.props.children:i.createElement(c.Z,(0,i.isValidElement)(n)?null==n?void 0:n.props:Object.assign({},e))},details:function(e){var t=i.Children.toArray(e.children),n=t.find((function(e){var t;return"summary"===(null==e||null==(t=e.props)?void 0:t.mdxType)})),o=i.createElement(i.Fragment,null,t.filter((function(e){return e!==n})));return i.createElement(f,(0,r.Z)({},e,{summary:n}),o)},h1:(0,s.Z)("h1"),h2:(0,s.Z)("h2"),h3:(0,s.Z)("h3"),h4:(0,s.Z)("h4"),h5:(0,s.Z)("h5"),h6:(0,s.Z)("h6")}},1227:function(e,t){"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.Doctype=t.CDATA=t.Tag=t.Style=t.Script=t.Comment=t.Directive=t.Text=t.Root=t.isTag=t.ElementType=void 0,function(e){e.Root="root",e.Text="text",e.Directive="directive",e.Comment="comment",e.Script="script",e.Style="style",e.Tag="tag",e.CDATA="cdata",e.Doctype="doctype"}(n=t.ElementType||(t.ElementType={})),t.isTag=function(e){return e.type===n.Tag||e.type===n.Script||e.type===n.Style},t.Root=n.Root,t.Text=n.Text,t.Directive=n.Directive,t.Comment=n.Comment,t.Script=n.Script,t.Style=n.Style,t.Tag=n.Tag,t.CDATA=n.CDATA,t.Doctype=n.Doctype},7915:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.DomHandler=void 0;var i=n(1227),a=n(7790);o(n(7790),t);var l={withStartIndices:!1,withEndIndices:!1,xmlMode:!1},c=function(){function e(e,t,n){this.dom=[],this.root=new a.Document(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null,"function"==typeof t&&(n=t,t=l),"object"==typeof e&&(t=e,e=void 0),this.callback=null!=e?e:null,this.options=null!=t?t:l,this.elementCB=null!=n?n:null}return e.prototype.onparserinit=function(e){this.parser=e},e.prototype.onreset=function(){this.dom=[],this.root=new a.Document(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null},e.prototype.onend=function(){this.done||(this.done=!0,this.parser=null,this.handleCallback(null))},e.prototype.onerror=function(e){this.handleCallback(e)},e.prototype.onclosetag=function(){this.lastNode=null;var e=this.tagStack.pop();this.options.withEndIndices&&(e.endIndex=this.parser.endIndex),this.elementCB&&this.elementCB(e)},e.prototype.onopentag=function(e,t){var n=this.options.xmlMode?i.ElementType.Tag:void 0,r=new a.Element(e,t,void 0,n);this.addNode(r),this.tagStack.push(r)},e.prototype.ontext=function(e){var t=this.lastNode;if(t&&t.type===i.ElementType.Text)t.data+=e,this.options.withEndIndices&&(t.endIndex=this.parser.endIndex);else{var n=new a.Text(e);this.addNode(n),this.lastNode=n}},e.prototype.oncomment=function(e){if(this.lastNode&&this.lastNode.type===i.ElementType.Comment)this.lastNode.data+=e;else{var t=new a.Comment(e);this.addNode(t),this.lastNode=t}},e.prototype.oncommentend=function(){this.lastNode=null},e.prototype.oncdatastart=function(){var e=new a.Text(""),t=new a.CDATA([e]);this.addNode(t),e.parent=t,this.lastNode=e},e.prototype.oncdataend=function(){this.lastNode=null},e.prototype.onprocessinginstruction=function(e,t){var n=new a.ProcessingInstruction(e,t);this.addNode(n)},e.prototype.handleCallback=function(e){if("function"==typeof this.callback)this.callback(e,this.dom);else if(e)throw e},e.prototype.addNode=function(e){var t=this.tagStack[this.tagStack.length-1],n=t.children[t.children.length-1];this.options.withStartIndices&&(e.startIndex=this.parser.startIndex),this.options.withEndIndices&&(e.endIndex=this.parser.endIndex),t.children.push(e),n&&(e.prev=n,n.next=e),e.parent=t,this.lastNode=null},e}();t.DomHandler=c,t.default=c},7790:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__assign||function(){return i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0?this.children[this.children.length-1]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"childNodes",{get:function(){return this.children},set:function(e){this.children=e},enumerable:!1,configurable:!0}),t}(l);t.NodeWithChildren=d;var f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type=a.ElementType.CDATA,t}return o(t,e),Object.defineProperty(t.prototype,"nodeType",{get:function(){return 4},enumerable:!1,configurable:!0}),t}(d);t.CDATA=f;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type=a.ElementType.Root,t}return o(t,e),Object.defineProperty(t.prototype,"nodeType",{get:function(){return 9},enumerable:!1,configurable:!0}),t}(d);t.Document=h;var m=function(e){function t(t,n,r,o){void 0===r&&(r=[]),void 0===o&&(o="script"===t?a.ElementType.Script:"style"===t?a.ElementType.Style:a.ElementType.Tag);var i=e.call(this,r)||this;return i.name=t,i.attribs=n,i.type=o,i}return o(t,e),Object.defineProperty(t.prototype,"nodeType",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tagName",{get:function(){return this.name},set:function(e){this.name=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"attributes",{get:function(){var e=this;return Object.keys(this.attribs).map((function(t){var n,r;return{name:t,value:e.attribs[t],namespace:null===(n=e["x-attribsNamespace"])||void 0===n?void 0:n[t],prefix:null===(r=e["x-attribsPrefix"])||void 0===r?void 0:r[t]}}))},enumerable:!1,configurable:!0}),t}(d);function y(e){return(0,a.isTag)(e)}function g(e){return e.type===a.ElementType.CDATA}function v(e){return e.type===a.ElementType.Text}function b(e){return e.type===a.ElementType.Comment}function k(e){return e.type===a.ElementType.Directive}function x(e){return e.type===a.ElementType.Root}function T(e,t){var n;if(void 0===t&&(t=!1),v(e))n=new s(e.data);else if(b(e))n=new u(e.data);else if(y(e)){var r=t?E(e.children):[],o=new m(e.name,i({},e.attribs),r);r.forEach((function(e){return e.parent=o})),null!=e.namespace&&(o.namespace=e.namespace),e["x-attribsNamespace"]&&(o["x-attribsNamespace"]=i({},e["x-attribsNamespace"])),e["x-attribsPrefix"]&&(o["x-attribsPrefix"]=i({},e["x-attribsPrefix"])),n=o}else if(g(e)){r=t?E(e.children):[];var a=new f(r);r.forEach((function(e){return e.parent=a})),n=a}else if(x(e)){r=t?E(e.children):[];var l=new h(r);r.forEach((function(e){return e.parent=l})),e["x-mode"]&&(l["x-mode"]=e["x-mode"]),n=l}else{if(!k(e))throw new Error("Not implemented yet: ".concat(e.type));var c=new p(e.name,e.data);null!=e["x-name"]&&(c["x-name"]=e["x-name"],c["x-publicId"]=e["x-publicId"],c["x-systemId"]=e["x-systemId"]),n=c}return n.startIndex=e.startIndex,n.endIndex=e.endIndex,null!=e.sourceCodeLocation&&(n.sourceCodeLocation=e.sourceCodeLocation),n}function E(e){for(var t=e.map((function(e){return T(e,!0)})),n=1;n/i,a=//i,l=function(){throw new Error("This browser does not support `document.implementation.createHTMLDocument`")},c=function(){throw new Error("This browser does not support `DOMParser.prototype.parseFromString`")},s="object"==typeof window&&window.DOMParser;if("function"==typeof s){var u=new s;l=c=function(e,t){return t&&(e="<"+t+">"+e+""),u.parseFromString(e,"text/html")}}if("object"==typeof document&&document.implementation){var p=document.implementation.createHTMLDocument();l=function(e,t){return t?(p.documentElement.querySelector(t).innerHTML=e,p):(p.documentElement.innerHTML=e,p)}}var d,f="object"==typeof document?document.createElement("template"):{};f.content&&(d=function(e){return f.innerHTML=e,f.content.childNodes}),e.exports=function(e){var s,u,p,f,h=e.match(o);switch(h&&h[1]&&(s=h[1].toLowerCase()),s){case t:return u=c(e),i.test(e)||(p=u.querySelector(n))&&p.parentNode.removeChild(p),a.test(e)||(p=u.querySelector(r))&&p.parentNode.removeChild(p),u.querySelectorAll(t);case n:case r:return f=(u=l(e)).querySelectorAll(s),a.test(e)&&i.test(e)?f[0].parentNode.childNodes:f;default:return d?d(e):(p=l(e,r).querySelector(r)).childNodes}}},4152:function(e,t,n){var r=n(8276),o=n(1507).formatDOM,i=/<(![a-zA-Z\s]+)>/;e.exports=function(e){if("string"!=typeof e)throw new TypeError("First argument must be a string");if(""===e)return[];var t,n=e.match(i);return n&&n[1]&&(t=n[1]),o(r(e),null,t)}},1507:function(e,t,n){for(var r,o=n(7915),i=n(885).CASE_SENSITIVE_TAG_NAMES,a=o.Comment,l=o.Element,c=o.ProcessingInstruction,s=o.Text,u={},p=0,d=i.length;p1&&(u=h(u,{key:u.key||k})),g.push(u);else if("text"!==i.type){switch(p=i.attribs,c(i)?a(p.style,p):p&&(p=o(p,i.name)),d=null,i.type){case"script":case"style":i.children[0]&&(p.dangerouslySetInnerHTML={__html:i.children[0].data});break;case"tag":"textarea"===i.name&&i.children[0]?p.defaultValue=i.children[0].data:i.children&&i.children.length&&(d=e(i.children,n));break;default:continue}x>1&&(p.key=k),g.push(m(i.name,p,d))}else{if((s=!i.data.trim().length)&&i.parent&&!l(i.parent))continue;if(b&&s)continue;g.push(i.data)}return 1===g.length?g[0]:g}},4606:function(e,t,n){var r=n(7294),o=n(1476).default;var i={reactCompat:!0};var a=r.version.split(".")[0]>=16,l=new Set(["tr","tbody","thead","tfoot","colgroup","table","head","html","frameset"]);e.exports={PRESERVE_CUSTOM_ATTRIBUTES:a,invertObject:function(e,t){if(!e||"object"!=typeof e)throw new TypeError("First argument must be an object");var n,r,o="function"==typeof t,i={},a={};for(n in e)r=e[n],o&&(i=t(n,r))&&2===i.length?a[i[0]]=i[1]:"string"==typeof r&&(a[r]=n);return a},isCustomComponent:function(e,t){if(-1===e.indexOf("-"))return t&&"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}},setStyleProp:function(e,t){if(null!=e)try{t.style=o(e,i)}catch(n){t.style={}}},canTextBeChildOfNode:function(e){return!l.has(e.name)},elementsWithNoTextChildren:l}},8139:function(e){var t=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,n=/\n/g,r=/^\s*/,o=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,i=/^:\s*/,a=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,l=/^[;\s]*/,c=/^\s+|\s+$/g,s="";function u(e){return e?e.replace(c,s):s}e.exports=function(e,c){if("string"!=typeof e)throw new TypeError("First argument must be a string");if(!e)return[];c=c||{};var p=1,d=1;function f(e){var t=e.match(n);t&&(p+=t.length);var r=e.lastIndexOf("\n");d=~r?e.length-r:d+e.length}function h(){var e={line:p,column:d};return function(t){return t.position=new m(e),b(),t}}function m(e){this.start=e,this.end={line:p,column:d},this.source=c.source}m.prototype.content=e;var y=[];function g(t){var n=new Error(c.source+":"+p+":"+d+": "+t);if(n.reason=t,n.filename=c.source,n.line=p,n.column=d,n.source=e,!c.silent)throw n;y.push(n)}function v(t){var n=t.exec(e);if(n){var r=n[0];return f(r),e=e.slice(r.length),n}}function b(){v(r)}function k(e){var t;for(e=e||[];t=x();)!1!==t&&e.push(t);return e}function x(){var t=h();if("/"==e.charAt(0)&&"*"==e.charAt(1)){for(var n=2;s!=e.charAt(n)&&("*"!=e.charAt(n)||"/"!=e.charAt(n+1));)++n;if(n+=2,s===e.charAt(n-1))return g("End of comment missing");var r=e.slice(2,n-2);return d+=2,f(r),e=e.slice(n),d+=2,t({type:"comment",comment:r})}}function T(){var e=h(),n=v(o);if(n){if(x(),!v(i))return g("property missing ':'");var r=v(a),c=e({type:"declaration",property:u(n[0].replace(t,s)),value:r?u(r[0].replace(t,s)):s});return v(l),c}}return b(),function(){var e,t=[];for(k(t);e=T();)!1!==e&&(t.push(e),k(t));return t}()}},5726:function(e,t,n){"use strict";function r(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,o,i=[],a=!0,l=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);a=!0);}catch(c){l=!0,o=c}finally{try{a||null==n.return||n.return()}finally{if(l)throw o}}return i}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nt,p=e=>e instanceof a?a(e):e,d=(e,t)=>typeof t===l?new a(t):t,f=(e,t,n,r)=>{const o=[];for(let l=i(n),{length:u}=l,p=0;p{const r=a(t.push(n)-1);return e.set(n,r),r},m=(e,t)=>{const n=r(e,d).map(p),o=n[0],i=t||u,a=typeof o===s&&o?f(n,new Set,o,i):o;return i.call({"":a},"",a)},y=(e,t,n)=>{const r=t&&typeof t===s?(e,n)=>""===e||-1=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(n),k=a,m=d["".concat(c,".").concat(k)]||d[k]||u[k]||i;return n?r.createElement(m,o(o({ref:t},p),{},{components:n})):r.createElement(m,o({ref:t},p))}));function k(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var s=2;s0,p={};if(a){var g=JSON.parse(JSON.stringify(a||{}));Object.keys(g||{}).forEach((function(e){var t,a=null==g?void 0:g[e];p[a.name]={name:a.name,count:null==a||null==(t=a.items)?void 0:t.length,permalink:a.permalink}}))}else null==s||s.forEach((function(e){var t,a;((null==e||null==(t=e.content)||null==(a=t.metadata)?void 0:a.tags)||[]).forEach((function(e){p[e.label]?++p[e.label].count:p[e.label]={name:e.label,count:1,permalink:e.permalink}}))}));return r.createElement(i.Z,u,r.createElement("div",{className:"container margin-vert--lg",style:{maxWidth:"100%"}},r.createElement("div",{className:"row"},d&&s&&r.createElement("aside",{className:"col col--3"},r.createElement(h,{sidebar:c})),r.createElement("main",{className:(0,n.Z)("col",{"col--7":d&&s,"col--9 col--offset-1":!d,"col--10":d&&!s,"col--12":!o&&!s}),itemScope:!0,itemType:"https://schema.org/Blog"},m),d&&s&&r.createElement(v,{hashTagObj:p}),o&&r.createElement("div",{className:"col col--2"},o))))}},1916:function(e,t,a){a.d(t,{Z:function(){return k}});var l=a(7294),r=a(6010),n=a(3905),i=a(5999),s=a(9960),c=a(4996),o=a(3810),m=a(8483),u=a(6663),d="blogPostTitle_RC3s",p="blogPostData_A2Le",g="blogPostDetailsFull_2lop",h=a(62),f="image_9q7L";var v=function(e){var t=e.author,a=t.name,r=t.title,n=t.url,i=t.imageURL;return l.createElement("div",{className:"avatar margin-bottom--sm"},i&&l.createElement(s.default,{className:"avatar__photo-link avatar__photo",href:n},l.createElement("img",{className:f,src:i,alt:a})),a&&l.createElement("div",{className:"avatar__intro",itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person"},l.createElement("div",{className:"avatar__name"},l.createElement(s.default,{href:n,itemProp:"url"},l.createElement("span",{itemProp:"name"},a))),r&&l.createElement("small",{className:"avatar__subtitle",itemProp:"description"},r)))},b="authorCol_8c0z";function E(e){var t=e.authors,a=e.assets;return 0===t.length?null:l.createElement("div",{className:"row margin-top--md margin-bottom--sm"},t.map((function(e,t){var n;return l.createElement("div",{className:(0,r.Z)("col col--6",b),key:t},l.createElement(v,{author:Object.assign({},e,{imageURL:null!=(n=a.authorsImageUrls[t])?n:e.imageURL})}))})))}var k=function(e){var t,a,f,v,b=(f=(0,o.c2)().selectMessage,function(e){var t=Math.ceil(e);return f(t,(0,i.I)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:t}))}),k=(0,c.C)().withBaseUrl,C=e.children,N=e.frontMatter,y=e.assets,Z=e.metadata,_=e.truncated,w=e.isBlogPostPage,T=void 0!==w&&w,P=Z.date,A=Z.formattedDate,x=Z.permalink,L=Z.tags,O=Z.readingTime,M=Z.title,j=Z.editUrl,I=Z.authors,U=null!=(t=y.image)?t:N.image,B=!T&&_,R=L.length>0;return l.createElement("article",{className:T?void 0:"margin-bottom--xl",itemProp:"blogPost",itemScope:!0,itemType:"https://schema.org/BlogPosting"},(v=T?"h1":"h2",l.createElement("header",null,l.createElement(v,{className:d,itemProp:"headline"},T?M:l.createElement(s.default,{itemProp:"url",to:x},M)),l.createElement("div",{className:(0,r.Z)(p,"margin-vert--md")},l.createElement("time",{dateTime:P,itemProp:"datePublished"},A),void 0!==O&&l.createElement(l.Fragment,null," \xb7 ",b(O),"\xa0",T?l.createElement("label",{id:"umami-post-view-container"}):"")),l.createElement(E,{authors:I,assets:y}))),U&&l.createElement("meta",{itemProp:"image",content:k(U,{absolute:!0})}),l.createElement("div",{className:"markdown",itemProp:"articleBody"},l.createElement(n.Zo,{components:m.Z},C)),(R||_)&&l.createElement("footer",{className:(0,r.Z)("row docusaurus-mt-lg",(a={},a[g]=T,a))},R&&l.createElement("div",{className:(0,r.Z)("col",{"col--9":B})},l.createElement(h.Z,{tags:L})),T&&j&&l.createElement("div",{className:"col margin-top--sm"},l.createElement(u.Z,{editUrl:j})),B&&l.createElement("div",{className:(0,r.Z)("col text--right",{"col--3":R})},l.createElement(s.default,{to:Z.permalink,"aria-label":"Read more about "+M},l.createElement("b",null,l.createElement(i.Z,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts"},"Read More"))))))}},642:function(e,t,a){a.r(t),a.d(t,{default:function(){return m}});var l=a(7462),r=a(7294),n=a(9960),i=a(7663),s=a(1916),c=a(5999),o=a(3810);function m(e){var t,a=e.metadata,m=e.items,u=e.sidebar,d=a.allTagsPath,p=a.name,g=a.count,h=(t=(0,o.c2)().selectMessage,function(e){return t(e,(0,c.I)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One post|{count} posts"},{count:e}))}),f=(0,c.I)({id:"theme.blog.tagTitle",description:"The title of the page for a blog tag",message:'{nPosts} tagged with "{tagName}"'},{nPosts:h(g),tagName:p});return r.createElement(i.Z,(0,l.Z)({},e,{title:f,wrapperClassName:o.kM.wrapper.blogPages,pageClassName:o.kM.page.blogTagPostListPage,searchMetadata:{tag:"blog_tags_posts"},sidebar:u}),r.createElement("header",{className:"margin-bottom--xl"},r.createElement("h1",null,f),r.createElement(n.default,{href:d},r.createElement(c.Z,{id:"theme.tags.tagsPageLink",description:"The label of the link targeting the tag list page"},"View All Tags"))),m.map((function(e){var t=e.content;return r.createElement(s.Z,{key:t.metadata.permalink,frontMatter:t.frontMatter,assets:t.assets,metadata:t.metadata,truncated:!0},r.createElement(t,null))})))}},8483:function(e,t,a){var l=a(3366),r=a(7294),n=a(7440),i=a(5935),s=a(9911),c=a(1262),o=["children"],m=["children"],u=function e(t,a,l){var r,n;if(Array.isArray(null==t||null==(r=t.props)?void 0:r.children)&&null!=t&&null!=(n=t.props)&&n.originalType){var i,c,o=l.createElement(null==t||null==(i=t.props)?void 0:i.originalType),m=(0,s.Qc)((0,s.Pz)((null==t?void 0:t.props)||{}));delete m.children,Object.keys(m).forEach((function(e){o.setAttribute(e,m[e])})),a.appendChild(e(null==t||null==(c=t.props)?void 0:c.children,o,l))}else if(Array.isArray(t))t.forEach((function(t){e(t,a,l)}));else{var u;if(null!=t&&null!=(u=t.props)&&u.originalType){var d,p,g=l.createElement(null==t||null==(d=t.props)?void 0:d.originalType),h=(0,s.Qc)((0,s.Pz)((null==t?void 0:t.props)||{}));delete h.children,Object.keys(h).forEach((function(e){g.setAttribute(e,h[e])})),a.appendChild(e(null==t||null==(p=t.props)?void 0:p.children,g,l))}else a.append(t)}return a},d=function(e){var t,a=e.children,n=(0,l.Z)(e,o),s=(null==(t=a[0])?void 0:t.props.children)||(null==a?void 0:a.props.children),c=!Array.isArray(s)||s.every((function(e){return e.props.children})),m=Object.assign({},n),d=c?a:a.slice(1),p=document.createElement("table");Object.keys(m).forEach((function(e){p.setAttribute(e,m[e])})),u(d,p,document);var g=document.createElement("div");g.appendChild(p),g.setAttribute("class","table-wrapper");var h=(0,i.ZP)(g.innerHTML);return r.createElement("div",{className:"table-wrapper"},h)};t.Z=Object.assign({},n.Z,{table:function(e){var t=e.children,a=(0,l.Z)(e,m);return r.createElement(c.default,null,(function(){return d(Object.assign({children:t},a))}))}})}}]); \ No newline at end of file diff --git a/assets/js/68e633d4.e5b462d1.js b/assets/js/68e633d4.e5b462d1.js new file mode 100644 index 0000000..a1f396e --- /dev/null +++ b/assets/js/68e633d4.e5b462d1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[1843],{4022:function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0});var l=a(655),u=(0,l.__importDefault)(a(7294)),n=(0,l.__importDefault)(a(2859)),r=(0,l.__importDefault)(a(9960)),d=(0,l.__importDefault)(a(5647));function c(e){var t=e.to,a=e.children;return u.default.createElement(r.default,{className:d.default.navlink,isNavLink:!0,to:t,exact:!0,activeStyle:{backgroundColor:"#363739"}},a)}t.default=function(e){var t=e.children;return u.default.createElement(u.default.Fragment,null,u.default.createElement(n.default,null,u.default.createElement("html",{lang:"en"}),u.default.createElement("title",null,"Docusaurus debug panel")),u.default.createElement("div",null,u.default.createElement("nav",{className:d.default.nav},u.default.createElement(c,{to:"/__docusaurus/debug"},"Config"),u.default.createElement(c,{to:"/__docusaurus/debug/metadata"},"Metadata"),u.default.createElement(c,{to:"/__docusaurus/debug/registry"},"Registry"),u.default.createElement(c,{to:"/__docusaurus/debug/routes"},"Routes"),u.default.createElement(c,{to:"/__docusaurus/debug/content"},"Content"),u.default.createElement(c,{to:"/__docusaurus/debug/globalData"},"Global data")),u.default.createElement("main",{className:d.default.container},t)))}},3767:function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0});var l=a(655),u=(0,l.__importDefault)(a(7294)),n=(0,l.__importDefault)(a(4022)),r=(0,l.__importDefault)(a(2263)),d=(0,l.__importDefault)(a(3282));t.default=function(){var e=(0,r.default)().siteMetadata;return u.default.createElement(n.default,null,u.default.createElement("h2",null,"Site Metadata"),u.default.createElement("div",null,"Docusaurus Version: ",u.default.createElement("code",null,e.docusaurusVersion)),u.default.createElement("div",null,"Site Version:"," ",u.default.createElement("code",null,e.siteVersion||"No version specified")),u.default.createElement("h3",{className:d.default.sectionTitle},"Plugins and themes"),u.default.createElement("ul",{className:d.default.list},Object.entries(e.pluginVersions).map((function(e){var t=e[0],a=e[1];return u.default.createElement("li",{key:t,className:d.default.listItem},"package"===a.type&&a.version&&u.default.createElement("div",{className:d.default.version},u.default.createElement("code",null,a.version)),u.default.createElement("div",{className:d.default.name},t),u.default.createElement("div",null,"Type: ",a.type))}))))}},5647:function(e,t,a){a.r(t),t.default={container:"container_y4id",nav:"nav_a6CY",navlink:"navlink_h2iO",active:"active_+wf5"}},3282:function(e,t,a){a.r(t),t.default={sectionTitle:"sectionTitle_0tIz",list:"list_tREd",listItem:"listItem_CMp4",version:"version_UWZZ",name:"name_vd9S"}}}]); \ No newline at end of file diff --git a/assets/js/75878fc8.86e6f175.js b/assets/js/75878fc8.86e6f175.js new file mode 100644 index 0000000..83e2c68 --- /dev/null +++ b/assets/js/75878fc8.86e6f175.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[7990],{3905:function(e,t,a){a.d(t,{Zo:function(){return s},kt:function(){return p}});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function u(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),l=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):u(u({},t),e)),a},s=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),f=l(a),p=n,d=f["".concat(c,".").concat(p)]||f[p]||m[p]||o;return a?r.createElement(d,u(u({ref:t},s),{},{components:a})):r.createElement(d,u({ref:t},s))}));function p(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,u=new Array(o);u[0]=f;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:n,u[1]=i;for(var l=2;l=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var s=a.createContext({}),p=function(t){var e=a.useContext(s),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},d=function(t){var e=p(t.components);return a.createElement(s.Provider,{value:e},t.children)},u={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},c=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,l=t.originalType,s=t.parentName,d=o(t,["components","mdxType","originalType","parentName"]),c=p(n),m=r,k=c["".concat(s,".").concat(m)]||c[m]||u[m]||l;return n?a.createElement(k,i(i({ref:e},d),{},{components:n})):a.createElement(k,i({ref:e},d))}));function m(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=n.length,i=new Array(l);i[0]=c;var o={};for(var s in e)hasOwnProperty.call(e,s)&&(o[s]=e[s]);o.originalType=t,o.mdxType="string"==typeof t?t:r,i[1]=o;for(var p=2;p=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var s=r.createContext({}),u=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},l=function(e){var n=u(e.components);return r.createElement(s.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},p=r.forwardRef((function(e,n){var t=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),p=u(t),f=i,g=p["".concat(s,".").concat(f)]||p[f]||d[f]||a;return t?r.createElement(g,o(o({ref:n},l),{},{components:t})):r.createElement(g,o({ref:n},l))}));function f(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var a=t.length,o=new Array(a);o[0]=p;var c={};for(var s in n)hasOwnProperty.call(n,s)&&(c[s]=n[s]);c.originalType=e,c.mdxType="string"==typeof e?e:i,o[1]=c;for(var u=2;uindex pattern.",id:"5configuring-an-index-pattern",children:[],level:2},{value:"6\u3001Performing a query",id:"6performing-a-query",children:[],level:2},{value:"7\u3001Enable Sampling",id:"7enable-sampling",children:[],level:2},{value:"8\u3001Enable query monitoring",id:"8enable-query-monitoring",children:[],level:2},{value:"9\u3001Configure round time",id:"9configure-round-time",children:[],level:2},{value:"10\u3001Enable query cache",id:"10enable-query-cache",children:[],level:2}],d={toc:l};function p(e){var n=e.components,c=(0,i.Z)(e,o);return(0,a.kt)("wrapper",(0,r.Z)({},d,c,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"usercase"},"usercase"),(0,a.kt)("h2",{id:"1accessing-the-native-kibana"},"1\u3001Accessing the native Kibana."),(0,a.kt)("p",null,(0,a.kt)("img",{src:t(8049).Z})),(0,a.kt)("h2",{id:"2changing-kibana-configuration-to-connect-to-ckibana"},"2\u3001Changing Kibana configuration to connect to CKibana."),(0,a.kt)("p",null,(0,a.kt)("img",{src:t(1052).Z})),(0,a.kt)("h2",{id:"3configuration-for-starting-ckibana"},"3\u3001Configuration for starting CKibana"),(0,a.kt)("p",null,(0,a.kt)("img",{src:t(4898).Z})),(0,a.kt)("h2",{id:"4configuring-ckibana"},"4\u3001Configuring CKibana"),(0,a.kt)("h3",{id:"update-ck-connection-information"},"Update ck connection information"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"curl --location --request POST 'localhost:8080/config/updateCk?url=ckUrl&user=default&pass=default&defaultCkDatabase=ops'\n")),(0,a.kt)("h3",{id:"update-the-index-whitelist"},"Update the index whitelist"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"curl --location --request POST 'localhost:8080/config/updateWhiteIndexList?list=ops_bjtlblog,other_index'\n")),(0,a.kt)("h2",{id:"5configuring-an-index-pattern"},"5\u3001Configuring an ",(0,a.kt)("inlineCode",{parentName:"h2"},"index pattern"),"."),(0,a.kt)("p",null,(0,a.kt)("img",{src:t(8411).Z})),(0,a.kt)("h2",{id:"6performing-a-query"},"6\u3001Performing a query"),(0,a.kt)("p",null,(0,a.kt)("img",{src:t(1708).Z})),(0,a.kt)("h2",{id:"7enable-sampling"},"7\u3001Enable Sampling"),(0,a.kt)("p",null,"When the data volume is relatively large, turn on sampling can effectively improve the query performance. Note: If the sampling threshold is set too low, the restored trend graph will be different from the real one."),(0,a.kt)("h2",{id:"8enable-query-monitoring"},"8\u3001Enable query monitoring"),(0,a.kt)("p",null,"You can monitor what syntaxes are being queried right now, and with the blacklist feature, you can effectively alleviate the problem of clickhouse resources being too high due to improper usage."),(0,a.kt)("p",null,(0,a.kt)("img",{src:t(7925).Z}),"\nUsing monitoring metrics, you can make charts and graphs to increase observability."),(0,a.kt)("p",null,"For example, the time consumed for each query:\n",(0,a.kt)("img",{src:t(3338).Z})),(0,a.kt)("h2",{id:"9configure-round-time"},"9\u3001Configure round time"),(0,a.kt)("p",null,"You can round fetch the time, which works well with query caching to improve performance."),(0,a.kt)("p",null,"Common case, kibana inside a group of users in the query the same question, when the query conditions are highly consistent, configure round can be very good to ease the pressure of ClickHouse."),(0,a.kt)("h2",{id:"10enable-query-cache"},"10\u3001Enable query cache"),(0,a.kt)("p",null,"When the query statement is consistent with the query time, the later query can hit the es cache very well, relieving the pressure on clickhouse."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"query.useCache: true\n")),(0,a.kt)("p",null,(0,a.kt)("img",{src:t(5386).Z}),"\nIt can be seen that a hit to cache takes only 2ms, and 80ms in the case of no hit. This configuration is turned off by default, but we recommend turning it on as well.\nUsing Elasticsearch as the underlying storage medium, of course, the storage cost will be correspondingly higher, you need to maintain the proxy-cache index life cycle to regularly clean up the cold data."))}p.isMDXComponent=!0},8049:function(e,n,t){n.Z=t.p+"assets/images/usercase01-2eb4a8098af7bf5365ab61f194fdb7f0.png"},1052:function(e,n,t){n.Z=t.p+"assets/images/usercase02-402aca28049f76e78812ad0b13f67608.png"},4898:function(e,n,t){n.Z=t.p+"assets/images/usercase03-67cf696a9343595bd9ef30c0161e653c.png"},8411:function(e,n,t){n.Z=t.p+"assets/images/usercase04-5e163c04660ca304d26de671f9dc0c80.png"},1708:function(e,n,t){n.Z=t.p+"assets/images/usercase05-b9728f12052221040e7031718ac857cf.png"},3338:function(e,n,t){n.Z=t.p+"assets/images/usercase08-1-de9c5e255facbff06305370595678578.png"},7925:function(e,n,t){n.Z=t.p+"assets/images/usercase08-d312453402e0c1f34128608389d2338d.png"},5386:function(e,n,t){n.Z=t.p+"assets/images/usercase10-4ae58f1dcb9d13ce2022fbb94b3b3043.png"}}]); \ No newline at end of file diff --git a/assets/js/7b1c603c.446cf18f.js b/assets/js/7b1c603c.446cf18f.js new file mode 100644 index 0000000..bd74204 --- /dev/null +++ b/assets/js/7b1c603c.446cf18f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[4409],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return d}});var a=n(7294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}var u=a.createContext({}),c=function(e){var t=a.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(u.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var n=e.components,l=e.mdxType,i=e.originalType,u=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),k=c(n),d=l,m=k["".concat(u,".").concat(d)]||k[d]||s[d]||i;return n?a.createElement(m,r(r({ref:t},p),{},{components:n})):a.createElement(m,r({ref:t},p))}));function d(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var i=n.length,r=new Array(i);r[0]=k;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o.mdxType="string"==typeof e?e:l,r[1]=o;for(var c=2;c=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=r.createContext({}),o=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=o(e.components);return r.createElement(s.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},p=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,c=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=o(t),f=a,k=p["".concat(s,".").concat(f)]||p[f]||d[f]||c;return t?r.createElement(k,i(i({ref:n},u),{},{components:t})):r.createElement(k,i({ref:n},u))}));function f(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var c=t.length,i=new Array(c);i[0]=p;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:a,i[1]=l;for(var o=2;o=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=i.createContext({}),u=function(e){var t=i.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},c=function(e){var t=u(e.components);return i.createElement(s.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},h=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),h=u(n),p=a,g=h["".concat(s,".").concat(p)]||h[p]||d[p]||o;return n?i.createElement(g,r(r({ref:t},c),{},{components:n})):i.createElement(g,r({ref:t},c))}));function p(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,r=new Array(o);r[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:a,r[1]=l;for(var u=2;u"+e(t)+"

"}}(t.templates,this.displayFn),this.css=o.mixin({},c,t.appendTo?c.appendTo:{}),this.cssClasses=t.cssClasses=o.mixin({},c.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||o.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var n=o.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=t.$menu&&t.$menu.find(n+"-"+this.name).length>0?a.element(t.$menu.find(n+"-"+this.name)[0]):a.element(u.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=t.$menu,this.clearCachedSuggestions()}h.extractDatasetName=function(t){return a.element(t).data(i)},h.extractValue=function(t){return a.element(t).data(s)},h.extractDatum=function(t){var e=a.element(t).data(r);return"string"==typeof e&&(e=JSON.parse(e)),e},o.mixin(h.prototype,l,{_render:function(t,e){if(this.$el){var n,c=this,l=[].slice.call(arguments,2);if(this.$el.empty(),n=e&&e.length,this._isEmpty=!n,!n&&this.templates.empty)this.$el.html(h.apply(this,l)).prepend(c.templates.header?f.apply(this,l):null).append(c.templates.footer?d.apply(this,l):null);else if(n)this.$el.html(p.apply(this,l)).prepend(c.templates.header?f.apply(this,l):null).append(c.templates.footer?d.apply(this,l):null);else if(e&&!Array.isArray(e))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(n?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(n?"without":"with")+"-"+this.name),this.trigger("rendered",t)}function h(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!0}].concat(e),c.templates.empty.apply(this,e)}function p(){var t,n,l=[].slice.call(arguments,0),h=this,p=u.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return t=a.element(p).css(this.css.suggestions),n=o.map(e,f),t.append.apply(t,n),t;function f(t){var e,n=u.suggestion.replace("%PREFIX%",h.cssClasses.prefix).replace("%SUGGESTION%",h.cssClasses.suggestion);return(e=a.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(c.templates.suggestion.apply(this,[t].concat(l)))).data(i,c.name),e.data(s,c.displayFn(t)||void 0),e.data(r,JSON.stringify(t)),e.children().each((function(){a.element(this).css(h.css.suggestionChild)})),e}}function f(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!n}].concat(e),c.templates.header.apply(this,e)}function d(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!n}].concat(e),c.templates.footer.apply(this,e)}},getRoot:function(){return this.$el},update:function(t){function e(e){if(!this.canceled&&t===this.query){var n=[].slice.call(arguments,1);this.cacheSuggestions(t,e,n),this._render.apply(this,[t,e].concat(n))}}if(this.query=t,this.canceled=!1,this.shouldFetchFromCache(t))e.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var n=this,i=function(){n.canceled||n.source(t,e.bind(n))};if(this.debounce){clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout((function(){n.debounceTimeout=null,i()}),this.debounce)}else i()}},cacheSuggestions:function(t,e,n){this.cachedQuery=t,this.cachedSuggestions=e,this.cachedRenderExtraArgs=n},shouldFetchFromCache:function(t){return this.cache&&this.cachedQuery===t&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),t.exports=h},3354:function(t,e,n){"use strict";var i=n(2856),s=n(4910),r=n(3109),o=n(9050),a=n(1228);function u(t){var e,n,r,o=this;(t=t||{}).menu||i.error("menu is required"),i.isArray(t.datasets)||i.isObject(t.datasets)||i.error("1 or more datasets required"),t.datasets||i.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=t.minLength||0,this.templates={},this.appendTo=t.appendTo||!1,this.css=i.mixin({},a,t.appendTo?a.appendTo:{}),this.cssClasses=t.cssClasses=i.mixin({},a.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||i.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),e=i.bind(this._onSuggestionClick,this),n=i.bind(this._onSuggestionMouseEnter,this),r=i.bind(this._onSuggestionMouseLeave,this);var c=i.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=s.element(t.menu).on("mouseenter.aa",c,n).on("mouseleave.aa",c,r).on("click.aa",c,e),this.$container=t.appendTo?t.wrapper:this.$menu,t.templates&&t.templates.header&&(this.templates.header=i.templatify(t.templates.header),this.$menu.prepend(this.templates.header())),t.templates&&t.templates.empty&&(this.templates.empty=i.templatify(t.templates.empty),this.$empty=s.element('
'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=i.map(t.datasets,(function(e){return function(t,e,n){return new u.Dataset(i.mixin({$menu:t,cssClasses:n},e))}(o.$menu,e,t.cssClasses)})),i.each(this.datasets,(function(t){var e=t.getRoot();e&&0===e.parent().length&&o.$menu.append(e),t.onSync("rendered",o._onRendered,o)})),t.templates&&t.templates.footer&&(this.templates.footer=i.templatify(t.templates.footer),this.$menu.append(this.templates.footer()));var l=this;s.element(window).resize((function(){l._redraw()}))}i.mixin(u.prototype,r,{_onSuggestionClick:function(t){this.trigger("suggestionClicked",s.element(t.currentTarget))},_onSuggestionMouseEnter:function(t){var e=s.element(t.currentTarget);if(!e.hasClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var n=this;setTimeout((function(){n._setCursor(e,!1)}),0)}},_onSuggestionMouseLeave:function(t){if(t.relatedTarget&&s.element(t.relatedTarget).closest("."+i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return;this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(t,e){if(this.isEmpty=i.every(this.datasets,(function(t){return t.isEmpty()})),this.isEmpty)if(e.length>=this.minLength&&this.trigger("empty"),this.$empty)if(e.length=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(t,e){t.first().addClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",e)},_removeCursor:function(){this._getCursor().removeClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(t){var e,n,i,s;this.isOpen&&(n=this._getCursor(),e=this._getSuggestions(),this._removeCursor(),-1!==(i=((i=e.index(n)+t)+1)%(e.length+1)-1)?(i<-1&&(i=e.length-1),this._setCursor(s=e.eq(i),!0),this._ensureVisible(s)):this.trigger("cursorRemoved"))},_ensureVisible:function(t){var e,n,i,s;n=(e=t.position().top)+t.height()+parseInt(t.css("margin-top"),10)+parseInt(t.css("margin-bottom"),10),i=this.$menu.scrollTop(),s=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),e<0?this.$menu.scrollTop(i+e):s',dropdown:'',dataset:'
',suggestions:'',suggestion:'
'}},2534:function(t,e,n){"use strict";var i;i={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var s=n(2856),r=n(4910),o=n(3109);function a(t){var e,n,o,a,u,c=this;(t=t||{}).input||s.error("input is missing"),e=s.bind(this._onBlur,this),n=s.bind(this._onFocus,this),o=s.bind(this._onKeydown,this),a=s.bind(this._onInput,this),this.$hint=r.element(t.hint),this.$input=r.element(t.input).on("blur.aa",e).on("focus.aa",n).on("keydown.aa",o),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=s.noop),s.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",(function(t){i[t.which||t.keyCode]||s.defer(s.bind(c._onInput,c,t))})):this.$input.on("input.aa",a),this.query=this.$input.val(),this.$overflowHelper=(u=this.$input,r.element('').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:u.css("font-family"),fontSize:u.css("font-size"),fontStyle:u.css("font-style"),fontVariant:u.css("font-variant"),fontWeight:u.css("font-weight"),wordSpacing:u.css("word-spacing"),letterSpacing:u.css("letter-spacing"),textIndent:u.css("text-indent"),textRendering:u.css("text-rendering"),textTransform:u.css("text-transform")}).insertAfter(u))}function u(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}a.normalizeQuery=function(t){return(t||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},s.mixin(a.prototype,o,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(t){var e=i[t.which||t.keyCode];this._managePreventDefault(e,t),e&&this._shouldTrigger(e,t)&&this.trigger(e+"Keyed",t)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(t,e){var n,i,s;switch(t){case"tab":i=this.getHint(),s=this.getInputValue(),n=i&&i!==s&&!u(e);break;case"up":case"down":n=!u(e);break;default:n=!1}n&&e.preventDefault()},_shouldTrigger:function(t,e){var n;if("tab"===t)n=!u(e);else n=!0;return n},_checkInputValue:function(){var t,e,n,i,s;t=this.getInputValue(),i=t,s=this.query,n=!(!(e=a.normalizeQuery(i)===a.normalizeQuery(s))||!this.query)&&this.query.length!==t.length,this.query=t,e?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(t){this.query=t},getInputValue:function(){return this.$input.val()},setInputValue:function(t,e){void 0===t&&(t=this.query),this.$input.val(t),e?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(t){this.$input.attr("aria-activedescendant",t)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(t){this.$hint.val(t)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var t,e,n;n=(t=this.getInputValue())!==(e=this.getHint())&&0===e.indexOf(t),""!==t&&n&&!this.hasOverflow()||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var t=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=t},isCursorAtEnd:function(){var t,e,n;return t=this.$input.val().length,e=this.$input[0].selectionStart,s.isNumber(e)?e===t:!document.selection||((n=document.selection.createRange()).moveStart("character",-t),t===n.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),t.exports=a},6549:function(t,e,n){"use strict";var i="aaAttrs",s=n(2856),r=n(4910),o=n(50),a=n(2534),u=n(3354),c=n(3561),l=n(1228);function h(t){var e,n;if((t=t||{}).input||s.error("missing input"),this.isActivated=!1,this.debug=!!t.debug,this.autoselect=!!t.autoselect,this.autoselectOnBlur=!!t.autoselectOnBlur,this.openOnFocus=!!t.openOnFocus,this.minLength=s.isNumber(t.minLength)?t.minLength:1,this.autoWidth=void 0===t.autoWidth||!!t.autoWidth,this.clearOnSelected=!!t.clearOnSelected,this.tabAutocomplete=void 0===t.tabAutocomplete||!!t.tabAutocomplete,t.hint=!!t.hint,t.hint&&t.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=t.css=s.mixin({},l,t.appendTo?l.appendTo:{}),this.cssClasses=t.cssClasses=s.mixin({},l.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix=s.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=t.listboxId=[this.cssClasses.root,"listbox",s.getUniqueId()].join("-");var a=function(t){var e,n,o,a;e=r.element(t.input),n=r.element(c.wrapper.replace("%ROOT%",t.cssClasses.root)).css(t.css.wrapper),t.appendTo||"block"!==e.css("display")||"table"!==e.parent().css("display")||n.css("display","table-cell");var u=c.dropdown.replace("%PREFIX%",t.cssClasses.prefix).replace("%DROPDOWN_MENU%",t.cssClasses.dropdownMenu);o=r.element(u).css(t.css.dropdown).attr({role:"listbox",id:t.listboxId}),t.templates&&t.templates.dropdownMenu&&o.html(s.templatify(t.templates.dropdownMenu)());(a=e.clone().css(t.css.hint).css(function(t){return{backgroundAttachment:t.css("background-attachment"),backgroundClip:t.css("background-clip"),backgroundColor:t.css("background-color"),backgroundImage:t.css("background-image"),backgroundOrigin:t.css("background-origin"),backgroundPosition:t.css("background-position"),backgroundRepeat:t.css("background-repeat"),backgroundSize:t.css("background-size")}}(e))).val("").addClass(s.className(t.cssClasses.prefix,t.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),a.removeData&&a.removeData();e.data(i,{"aria-autocomplete":e.attr("aria-autocomplete"),"aria-expanded":e.attr("aria-expanded"),"aria-owns":e.attr("aria-owns"),autocomplete:e.attr("autocomplete"),dir:e.attr("dir"),role:e.attr("role"),spellcheck:e.attr("spellcheck"),style:e.attr("style"),type:e.attr("type")}),e.addClass(s.className(t.cssClasses.prefix,t.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":t.datasets&&t.datasets[0]&&t.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":t.ariaLabel,"aria-owns":t.listboxId}).css(t.hint?t.css.input:t.css.inputWithNoHint);try{e.attr("dir")||e.attr("dir","auto")}catch(l){}return(n=t.appendTo?n.appendTo(r.element(t.appendTo).eq(0)).eq(0):e.wrap(n).parent()).prepend(t.hint?a:null).append(o),{wrapper:n,input:e,hint:a,menu:o}}(t);this.$node=a.wrapper;var u=this.$input=a.input;e=a.menu,n=a.hint,t.dropdownMenuContainer&&r.element(t.dropdownMenuContainer).css("position","relative").append(e.css("top","0")),u.on("blur.aa",(function(t){var n=document.activeElement;s.isMsie()&&(e[0]===n||e[0].contains(n))&&(t.preventDefault(),t.stopImmediatePropagation(),s.defer((function(){u.focus()})))})),e.on("mousedown.aa",(function(t){t.preventDefault()})),this.eventBus=t.eventBus||new o({el:u}),this.dropdown=new h.Dropdown({appendTo:t.appendTo,wrapper:this.$node,menu:e,datasets:t.datasets,templates:t.templates,cssClasses:t.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new h.Input({input:u,hint:n}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(t),this._setLanguageDirection()}s.mixin(h.prototype,{_bindKeyboardShortcuts:function(t){if(t.keyboardShortcuts){var e=this.$input,n=[];s.each(t.keyboardShortcuts,(function(t){"string"==typeof t&&(t=t.toUpperCase().charCodeAt(0)),n.push(t)})),r.element(document).keydown((function(t){var i=t.target||t.srcElement,s=i.tagName;if(!i.isContentEditable&&"INPUT"!==s&&"SELECT"!==s&&"TEXTAREA"!==s){var r=t.which||t.keyCode;-1!==n.indexOf(r)&&(e.focus(),t.stopPropagation(),t.preventDefault())}}))}},_onSuggestionClicked:function(t,e){var n;(n=this.dropdown.getDatumForSuggestion(e))&&this._select(n,{selectionMethod:"click"})},_onCursorMoved:function(t,e){var n=this.dropdown.getDatumForCursor(),i=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(i),n&&(e&&this.input.setInputValue(n.value,!0),this.eventBus.trigger("cursorchanged",n.raw,n.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var t=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",t.width+"px");var e=this.$node[0].getBoundingClientRect(),n=t.bottom-e.top;this.$node.css("top",n+"px");var i=t.left-e.left;this.$node.css("left",i+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var t=this.input.getQuery();t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var t,e;t=this.dropdown.getDatumForCursor(),e=this.dropdown.getDatumForTopSuggestion();var n={selectionMethod:"blur"};this.debug||(this.autoselectOnBlur&&t?this._select(t,n):this.autoselectOnBlur&&e?this._select(e,n):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(t,e){var n,i;n=this.dropdown.getDatumForCursor(),i=this.dropdown.getDatumForTopSuggestion();var s={selectionMethod:"enterKey"};n?(this._select(n,s),e.preventDefault()):this.autoselect&&i&&(this._select(i,s),e.preventDefault())},_onTabKeyed:function(t,e){if(this.tabAutocomplete){var n;(n=this.dropdown.getDatumForCursor())?(this._select(n,{selectionMethod:"tabKey"}),e.preventDefault()):this._autocomplete(!0)}else this.dropdown.close()},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var t=this.input.getQuery();this.dropdown.isEmpty&&t.length>=this.minLength?this.dropdown.update(t):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var t=this.input.getQuery();this.dropdown.isEmpty&&t.length>=this.minLength?this.dropdown.update(t):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(t,e){this.input.clearHintIfInvalid(),e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var t=this.input.getLanguageDirection();this.dir!==t&&(this.dir=t,this.$node.css("direction",t),this.dropdown.setLanguageDirection(t))},_updateHint:function(){var t,e,n,i,r;(t=this.dropdown.getDatumForTopSuggestion())&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(e=this.input.getInputValue(),n=a.normalizeQuery(e),i=s.escapeRegExChars(n),(r=new RegExp("^(?:"+i+")(.+$)","i").exec(t.value))?this.input.setHint(e+r[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(t){var e,n,i,s;e=this.input.getHint(),n=this.input.getQuery(),i=t||this.input.isCursorAtEnd(),e&&n!==e&&i&&((s=this.dropdown.getDatumForTopSuggestion())&&this.input.setInputValue(s.value),this.eventBus.trigger("autocompleted",s.raw,s.datasetName))},_select:function(t,e){void 0!==t.value&&this.input.setQuery(t.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(t.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",t.raw,t.datasetName,e).isDefaultPrevented()&&(this.dropdown.close(),s.defer(s.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var t=this.input.getInputValue();t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(t){t=s.toStr(t),this.isActivated?this.input.setInputValue(t):(this.input.setQuery(t),this.input.setInputValue(t,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),function(t,e){var n=t.find(s.className(e.prefix,e.input));s.each(n.data(i),(function(t,e){void 0===t?n.removeAttr(e):n.attr(e,t)})),n.detach().removeClass(s.className(e.prefix,e.input,!0)).insertAfter(t),n.removeData&&n.removeData(i);t.remove()}(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),h.Dropdown=u,h.Input=a,h.sources=n(8840),t.exports=h},4910:function(t){"use strict";t.exports={element:null}},6177:function(t){"use strict";t.exports=function(t){var e=t.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||t.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(e)return[e[1],e[2],e[3]]}},2856:function(t,e,n){"use strict";var i,s=n(8820),r=n(4910);function o(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}t.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(t){if(void 0===t&&(t=navigator.userAgent),/(msie|trident)/i.test(t)){var e=t.match(/(msie |rv:)(\d+(.\d+)?)/i);if(e)return e[2]}return!1},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(t){return"number"==typeof t},toStr:function(t){return null==t?"":t+""},cloneDeep:function(t){var e=this.mixin({},t),n=this;return this.each(e,(function(t,i){t&&(n.isArray(t)?e[i]=[].concat(t):n.isObject(t)&&(e[i]=n.cloneDeep(t)))})),e},error:function(t){throw new Error(t)},every:function(t,e){var n=!0;return t?(this.each(t,(function(i,s){n&&(n=e.call(null,i,s,t)&&n)})),!!n):n},any:function(t,e){var n=!1;return t?(this.each(t,(function(i,s){if(e.call(null,i,s,t))return n=!0,!1})),n):n},getUniqueId:(i=0,function(){return i++}),templatify:function(t){if(this.isFunction(t))return t;var e=r.element(t);return"SCRIPT"===e.prop("tagName")?function(){return e.text()}:function(){return String(t)}},defer:function(t){setTimeout(t,0)},noop:function(){},formatPrefix:function(t,e){return e?"":t+"-"},className:function(t,e,n){return n?t+e:"."+s(t+e,{isIdentifier:!0})},escapeHighlightedString:function(t,e,n){e=e||"";var i=document.createElement("div");i.appendChild(document.createTextNode(e)),n=n||"";var s=document.createElement("div");s.appendChild(document.createTextNode(n));var r=document.createElement("div");return r.appendChild(document.createTextNode(t)),r.innerHTML.replace(RegExp(o(i.innerHTML),"g"),e).replace(RegExp(o(s.innerHTML),"g"),n)}}},9983:function(t,e,n){"use strict";var i=n(2856),s=n(533),r=n(6177);var o,a,u=(o=[],a=window.Promise.resolve(),function(t,e){return function(n,s){(function(t,e){return window.Promise.resolve().then((function(){return o.length&&(a=t.search(o),o=[]),a})).then((function(t){if(t)return t.results[e]}))})(t.as,o.push({indexName:t.indexName,query:n,params:e})-1).then((function(t){t&&s(t.hits,t)})).catch((function(t){i.error(t.message)}))}});t.exports=function(t,e){var n=r(t.as._ua);if(n&&n[0]>=3&&n[1]>20){var i="autocomplete.js "+s;-1===t.as._ua.indexOf(i)&&(t.as._ua+="; "+i)}return u(t,e)}},8840:function(t,e,n){"use strict";t.exports={hits:n(9983),popularIn:n(4445)}},4445:function(t,e,n){"use strict";var i=n(2856),s=n(533),r=n(6177);t.exports=function(t,e,n,o){var a=r(t.as._ua);if(a&&a[0]>=3&&a[1]>20&&((e=e||{}).additionalUA="autocomplete.js "+s),!n.source)return i.error("Missing 'source' key");var u=i.isFunction(n.source)?n.source:function(t){return t[n.source]};if(!n.index)return i.error("Missing 'index' key");var c=n.index;return o=o||{},function(a,l){t.search(a,e,(function(t,a){if(t)i.error(t.message);else{if(a.hits.length>0){var h=a.hits[0],p=i.mixin({hitsPerPage:0},n);delete p.source,delete p.index;var f=r(c.as._ua);return f&&f[0]>=3&&f[1]>20&&(e.additionalUA="autocomplete.js "+s),void c.search(u(h),p,(function(t,e){if(t)i.error(t.message);else{var n=[];if(o.includeAll){var s=o.allTitle||"All departments";n.push(i.mixin({facet:{value:s,count:e.nbHits}},i.cloneDeep(h)))}i.each(e.facets,(function(t,e){i.each(t,(function(t,s){n.push(i.mixin({facet:{facet:e,value:s,count:t}},i.cloneDeep(h)))}))}));for(var r=1;r]*>/,m=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,y=/^(?:body|html)$/i,w=/([A-Z])/g,b=["val","css","html","text","data","width","height","offset"],C=["after","prepend","before","append"],x=h.createElement("table"),_=h.createElement("tr"),S={tr:h.createElement("tbody"),tbody:x,thead:x,tfoot:x,td:_,th:_,"*":h.createElement("div")},E=/complete|loaded|interactive/,A=/^[\w-]*$/,$={},T=$.toString,O={},D=h.createElement("div"),N={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},k=Array.isArray||function(t){return t instanceof Array};function I(t){return null==t?String(t):$[T.call(t)]||"object"}function P(t){return"function"==I(t)}function L(t){return null!=t&&t==t.window}function M(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function F(t){return"object"==I(t)}function R(t){return F(t)&&!L(t)&&Object.getPrototypeOf(t)==Object.prototype}function q(t){var e=!!t&&"length"in t&&t.length,n=i.type(t);return"function"!=n&&!L(t)&&("array"==n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function V(t){return c.call(t,(function(t){return null!=t}))}function H(t){return t.length>0?i.fn.concat.apply([],t):t}function B(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function K(t){return t in f?f[t]:f[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function j(t,e){return"number"!=typeof e||d[B(t)]?e:e+"px"}function z(t){var e,n;return p[t]||(e=h.createElement(t),h.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),p[t]=n),p[t]}function U(t){return"children"in t?l.call(t.children):i.map(t.childNodes,(function(t){if(1==t.nodeType)return t}))}function Q(t,e){var n,i=t?t.length:0;for(n=0;n")),n===e&&(n=g.test(t)&&RegExp.$1),n in S||(n="*"),(a=S[n]).innerHTML=""+t,r=i.each(l.call(a.childNodes),(function(){a.removeChild(this)}))),R(s)&&(o=i(r),i.each(s,(function(t,e){b.indexOf(t)>-1?o[t](e):o.attr(t,e)}))),r},O.Z=function(t,e){return new Q(t,e)},O.isZ=function(t){return t instanceof O.Z},O.init=function(t,n){var s;if(!t)return O.Z();if("string"==typeof t)if("<"==(t=t.trim())[0]&&g.test(t))s=O.fragment(t,RegExp.$1,n),t=null;else{if(n!==e)return i(n).find(t);s=O.qsa(h,t)}else{if(P(t))return i(h).ready(t);if(O.isZ(t))return t;if(k(t))s=V(t);else if(F(t))s=[t],t=null;else if(g.test(t))s=O.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==e)return i(n).find(t);s=O.qsa(h,t)}}return O.Z(s,t)},(i=function(t,e){return O.init(t,e)}).extend=function(t){var e,n=l.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach((function(n){W(t,n,e)})),t},O.qsa=function(t,e){var n,i="#"==e[0],s=!i&&"."==e[0],r=i||s?e.slice(1):e,o=A.test(r);return t.getElementById&&o&&i?(n=t.getElementById(r))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:l.call(o&&!i&&t.getElementsByClassName?s?t.getElementsByClassName(r):t.getElementsByTagName(e):t.querySelectorAll(e))},i.contains=h.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},i.type=I,i.isFunction=P,i.isWindow=L,i.isArray=k,i.isPlainObject=R,i.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},i.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},i.inArray=function(t,e,n){return a.indexOf.call(e,t,n)},i.camelCase=r,i.trim=function(t){return null==t?"":String.prototype.trim.call(t)},i.uuid=0,i.support={},i.expr={},i.noop=function(){},i.map=function(t,e){var n,i,s,r=[];if(q(t))for(i=0;i=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each((function(){null!=this.parentNode&&this.parentNode.removeChild(this)}))},each:function(t){return a.every.call(this,(function(e,n){return!1!==t.call(e,n,e)})),this},filter:function(t){return P(t)?this.not(this.not(t)):i(c.call(this,(function(e){return O.matches(e,t)})))},add:function(t,e){return i(o(this.concat(i(t,e))))},is:function(t){return this.length>0&&O.matches(this[0],t)},not:function(t){var n=[];if(P(t)&&t.call!==e)this.each((function(e){t.call(this,e)||n.push(this)}));else{var s="string"==typeof t?this.filter(t):q(t)&&P(t.item)?l.call(t):i(t);this.forEach((function(t){s.indexOf(t)<0&&n.push(t)}))}return i(n)},has:function(t){return this.filter((function(){return F(t)?i.contains(this,t):i(this).find(t).size()}))},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!F(t)?t:i(t)},last:function(){var t=this[this.length-1];return t&&!F(t)?t:i(t)},find:function(t){var e=this;return t?"object"==typeof t?i(t).filter((function(){var t=this;return a.some.call(e,(function(e){return i.contains(e,t)}))})):1==this.length?i(O.qsa(this[0],t)):this.map((function(){return O.qsa(this,t)})):i()},closest:function(t,e){var n=[],s="object"==typeof t&&i(t);return this.each((function(i,r){for(;r&&!(s?s.indexOf(r)>=0:O.matches(r,t));)r=r!==e&&!M(r)&&r.parentNode;r&&n.indexOf(r)<0&&n.push(r)})),i(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=i.map(n,(function(t){if((t=t.parentNode)&&!M(t)&&e.indexOf(t)<0)return e.push(t),t}));return Z(e,t)},parent:function(t){return Z(o(this.pluck("parentNode")),t)},children:function(t){return Z(this.map((function(){return U(this)})),t)},contents:function(){return this.map((function(){return this.contentDocument||l.call(this.childNodes)}))},siblings:function(t){return Z(this.map((function(t,e){return c.call(U(e.parentNode),(function(t){return t!==e}))})),t)},empty:function(){return this.each((function(){this.innerHTML=""}))},pluck:function(t){return i.map(this,(function(e){return e[t]}))},show:function(){return this.each((function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=z(this.nodeName))}))},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=P(t);if(this[0]&&!e)var n=i(t).get(0),s=n.parentNode||this.length>1;return this.each((function(r){i(this).wrapAll(e?t.call(this,r):s?n.cloneNode(!0):n)}))},wrapAll:function(t){if(this[0]){var e;for(i(this[0]).before(t=i(t));(e=t.children()).length;)t=e.first();i(t).append(this)}return this},wrapInner:function(t){var e=P(t);return this.each((function(n){var s=i(this),r=s.contents(),o=e?t.call(this,n):t;r.length?r.wrapAll(o):s.append(o)}))},unwrap:function(){return this.parent().each((function(){i(this).replaceWith(i(this).children())})),this},clone:function(){return this.map((function(){return this.cloneNode(!0)}))},hide:function(){return this.css("display","none")},toggle:function(t){return this.each((function(){var n=i(this);(t===e?"none"==n.css("display"):t)?n.show():n.hide()}))},prev:function(t){return i(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return i(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each((function(e){var n=this.innerHTML;i(this).empty().append(X(this,t,e,n))})):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each((function(e){var n=X(this,t,e,this.textContent);this.textContent=null==n?"":""+n})):0 in this?this.pluck("textContent").join(""):null},attr:function(t,i){var s;return"string"!=typeof t||1 in arguments?this.each((function(e){if(1===this.nodeType)if(F(t))for(n in t)G(this,n,t[n]);else G(this,t,X(this,i,e,this.getAttribute(t)))})):0 in this&&1==this[0].nodeType&&null!=(s=this[0].getAttribute(t))?s:e},removeAttr:function(t){return this.each((function(){1===this.nodeType&&t.split(" ").forEach((function(t){G(this,t)}),this)}))},prop:function(t,e){return t=N[t]||t,1 in arguments?this.each((function(n){this[t]=X(this,e,n,this[t])})):this[0]&&this[0][t]},removeProp:function(t){return t=N[t]||t,this.each((function(){delete this[t]}))},data:function(t,n){var i="data-"+t.replace(w,"-$1").toLowerCase(),s=1 in arguments?this.attr(i,n):this.attr(i);return null!==s?Y(s):e},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each((function(e){this.value=X(this,t,e,this.value)}))):this[0]&&(this[0].multiple?i(this[0]).find("option").filter((function(){return this.selected})).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each((function(t){var n=i(this),s=X(this,e,t,n.offset()),r=n.offsetParent().offset(),o={top:s.top-r.top,left:s.left-r.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)}));if(!this.length)return null;if(h.documentElement!==this[0]&&!i.contains(h.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+t.pageXOffset,top:n.top+t.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(t,e){if(arguments.length<2){var s=this[0];if("string"==typeof t){if(!s)return;return s.style[r(t)]||getComputedStyle(s,"").getPropertyValue(t)}if(k(t)){if(!s)return;var o={},a=getComputedStyle(s,"");return i.each(t,(function(t,e){o[e]=s.style[r(e)]||a.getPropertyValue(e)})),o}}var u="";if("string"==I(t))e||0===e?u=B(t)+":"+j(t,e):this.each((function(){this.style.removeProperty(B(t))}));else for(n in t)t[n]||0===t[n]?u+=B(n)+":"+j(n,t[n])+";":this.each((function(){this.style.removeProperty(B(n))}));return this.each((function(){this.style.cssText+=";"+u}))},index:function(t){return t?this.indexOf(i(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&a.some.call(this,(function(t){return this.test(J(t))}),K(t))},addClass:function(t){return t?this.each((function(e){if("className"in this){s=[];var n=J(this);X(this,t,e,n).split(/\s+/g).forEach((function(t){i(this).hasClass(t)||s.push(t)}),this),s.length&&J(this,n+(n?" ":"")+s.join(" "))}})):this},removeClass:function(t){return this.each((function(n){if("className"in this){if(t===e)return J(this,"");s=J(this),X(this,t,n,s).split(/\s+/g).forEach((function(t){s=s.replace(K(t)," ")})),J(this,s.trim())}}))},toggleClass:function(t,n){return t?this.each((function(s){var r=i(this);X(this,t,s,J(this)).split(/\s+/g).forEach((function(t){(n===e?!r.hasClass(t):n)?r.addClass(t):r.removeClass(t)}))})):this},scrollTop:function(t){if(this.length){var n="scrollTop"in this[0];return t===e?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var n="scrollLeft"in this[0];return t===e?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),s=y.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(i(t).css("margin-top"))||0,n.left-=parseFloat(i(t).css("margin-left"))||0,s.top+=parseFloat(i(e[0]).css("border-top-width"))||0,s.left+=parseFloat(i(e[0]).css("border-left-width"))||0,{top:n.top-s.top,left:n.left-s.left}}},offsetParent:function(){return this.map((function(){for(var t=this.offsetParent||h.body;t&&!y.test(t.nodeName)&&"static"==i(t).css("position");)t=t.offsetParent;return t}))}},i.fn.detach=i.fn.remove,["width","height"].forEach((function(t){var n=t.replace(/./,(function(t){return t[0].toUpperCase()}));i.fn[t]=function(s){var r,o=this[0];return s===e?L(o)?o["inner"+n]:M(o)?o.documentElement["scroll"+n]:(r=this.offset())&&r[t]:this.each((function(e){(o=i(this)).css(t,X(this,s,e,o[t]()))}))}})),C.forEach((function(n,s){var r=s%2;i.fn[n]=function(){var n,o,a=i.map(arguments,(function(t){var s=[];return"array"==(n=I(t))?(t.forEach((function(t){return t.nodeType!==e?s.push(t):i.zepto.isZ(t)?s=s.concat(t.get()):void(s=s.concat(O.fragment(t)))})),s):"object"==n||null==t?t:O.fragment(t)})),u=this.length>1;return a.length<1?this:this.each((function(e,n){o=r?n:n.parentNode,n=0==s?n.nextSibling:1==s?n.firstChild:2==s?n:null;var c=i.contains(h.documentElement,o);a.forEach((function(e){if(u)e=e.cloneNode(!0);else if(!o)return i(e).remove();o.insertBefore(e,n),c&&tt(e,(function(e){if(!(null==e.nodeName||"SCRIPT"!==e.nodeName.toUpperCase()||e.type&&"text/javascript"!==e.type||e.src)){var n=e.ownerDocument?e.ownerDocument.defaultView:t;n.eval.call(n,e.innerHTML)}}))}))}))},i.fn[r?n+"To":"insert"+(s?"Before":"After")]=function(t){return i(t)[n](this),this}})),O.Z.prototype=Q.prototype=i.fn,O.uniq=o,O.deserializeValue=Y,i.zepto=O,i}();return function(e){var n,i=1,s=Array.prototype.slice,r=e.isFunction,o=function(t){return"string"==typeof t},a={},u={},c="onfocusin"in t,l={focus:"focusin",blur:"focusout"},h={mouseenter:"mouseover",mouseleave:"mouseout"};function p(t){return t._zid||(t._zid=i++)}function f(t,e,n,i){if((e=d(e)).ns)var s=g(e.ns);return(a[p(t)]||[]).filter((function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||s.test(t.ns))&&(!n||p(t.fn)===p(n))&&(!i||t.sel==i)}))}function d(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function g(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function m(t,e){return t.del&&!c&&t.e in l||!!e}function v(t){return h[t]||c&&l[t]||t}function y(t,i,s,r,o,u,c){var l=p(t),f=a[l]||(a[l]=[]);i.split(/\s/).forEach((function(i){if("ready"==i)return e(document).ready(s);var a=d(i);a.fn=s,a.sel=o,a.e in h&&(s=function(t){var n=t.relatedTarget;if(!n||n!==this&&!e.contains(this,n))return a.fn.apply(this,arguments)}),a.del=u;var l=u||s;a.proxy=function(e){if(!(e=S(e)).isImmediatePropagationStopped()){try{var i=Object.getOwnPropertyDescriptor(e,"data");i&&!i.writable||(e.data=r)}catch(e){}var s=l.apply(t,e._args==n?[e]:[e].concat(e._args));return!1===s&&(e.preventDefault(),e.stopPropagation()),s}},a.i=f.length,f.push(a),"addEventListener"in t&&t.addEventListener(v(a.e),a.proxy,m(a,c))}))}function w(t,e,n,i,s){var r=p(t);(e||"").split(/\s/).forEach((function(e){f(t,e,n,i).forEach((function(e){delete a[r][e.i],"removeEventListener"in t&&t.removeEventListener(v(e.e),e.proxy,m(e,s))}))}))}u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",e.event={add:y,remove:w},e.proxy=function(t,n){var i=2 in arguments&&s.call(arguments,2);if(r(t)){var a=function(){return t.apply(n,i?i.concat(s.call(arguments)):arguments)};return a._zid=p(t),a}if(o(n))return i?(i.unshift(t[n],t),e.proxy.apply(null,i)):e.proxy(t[n],t);throw new TypeError("expected function")},e.fn.bind=function(t,e,n){return this.on(t,e,n)},e.fn.unbind=function(t,e){return this.off(t,e)},e.fn.one=function(t,e,n,i){return this.on(t,e,n,i,1)};var b=function(){return!0},C=function(){return!1},x=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,_={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function S(t,i){if(i||!t.isDefaultPrevented){i||(i=t),e.each(_,(function(e,n){var s=i[e];t[e]=function(){return this[n]=b,s&&s.apply(i,arguments)},t[n]=C}));try{t.timeStamp||(t.timeStamp=Date.now())}catch(s){}(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?!1===i.returnValue:i.getPreventDefault&&i.getPreventDefault())&&(t.isDefaultPrevented=b)}return t}function E(t){var e,i={originalEvent:t};for(e in t)x.test(e)||t[e]===n||(i[e]=t[e]);return S(i,t)}e.fn.delegate=function(t,e,n){return this.on(e,t,n)},e.fn.undelegate=function(t,e,n){return this.off(e,t,n)},e.fn.live=function(t,n){return e(document.body).delegate(this.selector,t,n),this},e.fn.die=function(t,n){return e(document.body).undelegate(this.selector,t,n),this},e.fn.on=function(t,i,a,u,c){var l,h,p=this;return t&&!o(t)?(e.each(t,(function(t,e){p.on(t,i,a,e,c)})),p):(o(i)||r(u)||!1===u||(u=a,a=i,i=n),u!==n&&!1!==a||(u=a,a=n),!1===u&&(u=C),p.each((function(n,r){c&&(l=function(t){return w(r,t.type,u),u.apply(this,arguments)}),i&&(h=function(t){var n,o=e(t.target).closest(i,r).get(0);if(o&&o!==r)return n=e.extend(E(t),{currentTarget:o,liveFired:r}),(l||u).apply(o,[n].concat(s.call(arguments,1)))}),y(r,t,u,a,i,h||l)})))},e.fn.off=function(t,i,s){var a=this;return t&&!o(t)?(e.each(t,(function(t,e){a.off(t,i,e)})),a):(o(i)||r(s)||!1===s||(s=i,i=n),!1===s&&(s=C),a.each((function(){w(this,t,s,i)})))},e.fn.trigger=function(t,n){return(t=o(t)||e.isPlainObject(t)?e.Event(t):S(t))._args=n,this.each((function(){t.type in l&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)}))},e.fn.triggerHandler=function(t,n){var i,s;return this.each((function(r,a){(i=E(o(t)?e.Event(t):t))._args=n,i.target=a,e.each(f(a,t.type||t),(function(t,e){if(s=e.proxy(i),i.isImmediatePropagationStopped())return!1}))})),s},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach((function(t){e.fn[t]=function(e){return 0 in arguments?this.bind(t,e):this.trigger(t)}})),e.Event=function(t,e){o(t)||(t=(e=t).type);var n=document.createEvent(u[t]||"Events"),i=!0;if(e)for(var s in e)"bubbles"==s?i=!!e[s]:n[s]=e[s];return n.initEvent(t,i,!0),S(n)}}(i),n=[],i.fn.remove=function(){return this.each((function(){this.parentNode&&("IMG"===this.tagName&&(n.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",e&&clearTimeout(e),e=setTimeout((function(){n=[]}),6e4)),this.parentNode.removeChild(this))}))},function(t){var e={},n=t.fn.data,i=t.camelCase,s=t.expando="Zepto"+ +new Date,r=[];function o(r,o){var u=r[s],c=u&&e[u];if(void 0===o)return c||a(r);if(c){if(o in c)return c[o];var l=i(o);if(l in c)return c[l]}return n.call(t(r),o)}function a(n,r,o){var a=n[s]||(n[s]=++t.uuid),c=e[a]||(e[a]=u(n));return void 0!==r&&(c[i(r)]=o),c}function u(e){var n={};return t.each(e.attributes||r,(function(e,s){0==s.name.indexOf("data-")&&(n[i(s.name.replace("data-",""))]=t.zepto.deserializeValue(s.value))})),n}t.fn.data=function(e,n){return void 0===n?t.isPlainObject(e)?this.each((function(n,i){t.each(e,(function(t,e){a(i,t,e)}))})):0 in this?o(this[0],e):void 0:this.each((function(){a(this,e,n)}))},t.data=function(e,n,i){return t(e).data(n,i)},t.hasData=function(n){var i=n[s],r=i&&e[i];return!!r&&!t.isEmptyObject(r)},t.fn.removeData=function(n){return"string"==typeof n&&(n=n.split(/\s+/)),this.each((function(){var r=this[s],o=r&&e[r];o&&t.each(n||o,(function(t){delete o[n?i(this):t]}))}))},["remove","empty"].forEach((function(e){var n=t.fn[e];t.fn[e]=function(){var t=this.find("*");return"remove"===e&&(t=t.add(this)),t.removeData(),n.call(this)}}))}(i),i}(e)},8820:function(t){"use strict";var e={}.hasOwnProperty,n=/[ -,\.\/:-@\[-\^`\{-~]/,i=/[ -,\.\/:-@\[\]\^`\{-~]/,s=/(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g,r=function t(r,o){"single"!=(o=function(t,n){if(!t)return n;var i={};for(var s in n)i[s]=e.call(t,s)?t[s]:n[s];return i}(o,t.options)).quotes&&"double"!=o.quotes&&(o.quotes="single");for(var a="double"==o.quotes?'"':"'",u=o.isIdentifier,c=r.charAt(0),l="",h=0,p=r.length;h126){if(d>=55296&&d<=56319&&h1)for(var n=1;n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var u=r.createContext({}),l=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,u=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),f=l(n),b=o,m=f["".concat(u,".").concat(b)]||f[b]||s[b]||a;return n?r.createElement(m,c(c({ref:t},p),{},{components:n})):r.createElement(m,c({ref:t},p))}));function b(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,c=new Array(a);c[0]=f;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i.mdxType="string"==typeof e?e:o,c[1]=i;for(var l=2;l \u672c\u6587\u5c06\u4ecb\u7ecd\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0\\r\\n\\r\\n\x3c!--truncate--\x3e\\r\\n\u4e1a\u52a1\u5feb\u901f\u53d1\u5c55\u8fc7\u7a0b\u4e2d\u5bf9\u4e8e\u5404\u79cd\u65e5\u5fd7\u6570\u636e\u7684\u67e5\u8be2\u5206\u6790\u9700\u6c42\u4f1a\u5bfc\u81f4\u65e5\u5fd7\u5b58\u50a8\u89c4\u6a21\u6025\u5267\u589e\u957f\uff0c\u4f20\u7edfELK\u548c\u4ee5ElasticSearch\u4e3a\u6838\u5fc3\u5b58\u50a8\u7684\u65e5\u5fd7\u7cfb\u7edf\u968f\u4e4b\u4f1a\u9762\u4e34\u6210\u672c\u3001\u7a33\u5b9a\u6027\u4ee5\u53ca\u6027\u80fd\u7b49\u8bf8\u591a\u6311\u6218\uff0c\u4e1a\u754c\u4e5f\u770b\u5230\u8d8a\u6765\u8d8a\u591a\u7684\u56fd\u5185\u5916\u516c\u53f8\u5c06\u5b58\u50a8\u5207\u6362\u5230ClickHouse\uff0c\u6bd4\u5982\u643a\u7a0b\u3001\u5feb\u624b\u3001B\u7ad9\u3001Cloudflare\u548cUber\u7b49\uff0c\u4ece\u4ed6\u4eec\u7684\u5206\u4eab\u4e2d\u770b\u5230\u6536\u76ca\u90fd\u5f88\u660e\u663e\uff0c\u6211\u4eec\u7684\u65e5\u5fd7\u7cfb\u7edf\u4e5f\u5f00\u59cb\u5c1d\u8bd5\u4eceElasticSearch\u8fc1\u79fb\u5230ClickHouse\uff0c\u5e76\u5728\u8fc7\u7a0b\u4e2d\u63a2\u7d22\u548c\u79ef\u7d2f\u4e86\u4e00\u5957\u6700\u5927\u7a0b\u5ea6\u7167\u987e\u539f\u6709\u7528\u6237\u4f7f\u7528\u4e60\u60ef\u5b9e\u73b0\u5e73\u6ed1\u5207\u6362\u7684\u6574\u4f53\u65b9\u6848\u3002\\r\\n\\r\\n## 1 \u80cc\u666f\u4ecb\u7ecd\\r\\n\u516c\u53f8\u5185\u6d41\u91cf\u6700\u5927\u7684\u901a\u7528\u65e5\u5fd7\u7cfb\u7edf\u5e95\u5c42\u5b58\u50a8\u81ea\u4ece2020\u5e74\u7531ElasticSearch\u9010\u6b65\u5207\u6362\u5230Clickhouse\u4e4b\u540e\u5728\u6210\u672c\u4ee5\u53ca\u7a33\u5b9a\u6027\u7b49\u65b9\u9762\u5747\u6709\u663e\u8457\u63d0\u5347\u3002\u5728\u4eca\u5e74\u56fd\u5e86\u671f\u95f4\u7a33\u5b9a\u652f\u6491\u4e86\u8d85\u8fc75000\u4ebf\u6761/\u5929\u7684\u65e5\u5fd7\u91cf\uff0c\u800c\u6210\u672c\u4e5f\u4ec5\u4ec5\u662f\u539f\u5148ElasticSearch\u65b9\u6848\u768430%\u3002\\r\\n\\r\\n\u9664\u4e86\u8be5\u65e5\u5fd7\u7cfb\u7edf\u5916\uff0c\u516c\u53f8\u5185\u8fd8\u5b58\u5728\u5f88\u591a\u65e5\u5fd7\u7cfb\u7edf\uff0c\u5927\u591a\u57fa\u4e8e\u5f00\u6e90\u4e3b\u6d41ELK\u65b9\u5f0f\u3002\u5728\u89c4\u6a21\u8d8a\u6765\u8d8a\u5927\u540e\uff0c\u6210\u672c\u8ddf\u7a33\u5b9a\u6027\u65b9\u9762\u7684\u95ee\u9898\u4e5f\u5c31\u9010\u6e10\u66b4\u9732\u4e86\uff0c\u6240\u4ee5\u8ba1\u5212\u5c06\u6240\u6709\u65e5\u5fd7\u7cfb\u7edf\u7684\u5e95\u5c42\u5b58\u50a8\u5168\u90e8\u5207\u6362\u6210ClickHouse\u3002\\r\\n\\r\\n\u5173\u4e8e\u65e5\u5fd7\u573a\u666f\u4e0bClickhouse\u7684\u9009\u578b\u4e0e\u7528\u6cd5\u4e1a\u754c\u5df2\u7ecf\u6709\u5f88\u591a\u7684\u516c\u5f00\u5206\u4eab\uff0c\u4e0d\u4f5c\u4e3a\u672c\u6587\u91cd\u70b9\uff0c\u6709\u5174\u8da3\u53ef\u81ea\u884c\u641c\u7d22\u4e0b\u76f8\u5173\u8d44\u6599\u3002\\r\\n\\r\\n\u5728\u5b58\u50a8\u5207\u6362\u5b8c\u6210\u4e4b\u540e\u6700\u91cd\u8981\u7684\u662f\u89e3\u51b3\u67e5\u8be2UI\u7528\u6237\u4f53\u9a8c\u95ee\u9898\uff0c\u4e5f\u770b\u5230\u6709\u516c\u53f8\u5728\u628a\u65e5\u5fd7\u5b58\u50a8\u5207\u5230Clickhouse\u540e\u9009\u62e9\u81ea\u7814\u4e00\u5957\u67e5\u8be2UI\uff0c\u4f46\u60f3\u8981\u7167\u987e\u7528\u6237\u539f\u5148\u6240\u6709\u4f7f\u7528\u4e60\u60ef\u4ece\u539f\u751fKibana\u65e0\u7f1d\u5207\u6362\u5230\u65b0\u5e73\u53f0\u662f\u4e0d\u592a\u5b9e\u73b0\u7684\uff0c\u9700\u8981\u6240\u6709\u4e1a\u52a1\u540c\u4e8b\u719f\u6089\u4e00\u5957\u65b0\u7684\u8bed\u6cd5\u8ddfUI\u4ea4\u4e92\uff0c\u65e0\u5f62\u4e2d\u7ed9\u4ed6\u4eec\u52a0\u4e86\u5f88\u5927\u7684\u6210\u672c\u3002\\r\\n\\r\\n\u6240\u4ee5\uff0c\u600e\u4e48\u80fd\u591f\u8ba9\u4e1a\u52a1\u7528\u6237\u4ee5\u96f6\u5b66\u4e60\u6210\u672c\u4f7f\u7528\u65b0\u5e73\u53f0\uff0c\u8fd9\u662f\u4e00\u4e2a\u6700\u68d8\u624b\u7684\u95ee\u9898\u3002\\r\\n\\r\\n## 2 \u65b9\u6848\u4ecb\u7ecd\\r\\n\u6211\u4eec\u7684\u601d\u8def\u5176\u5b9e\u4e5f\u6bd4\u8f83\u5bfb\u5e38\uff0c\u6211\u4eec\u9009\u62e9\u5728\u539f\u751fKibana\u8ddfElasticSearch\u4e4b\u95f4\u65b0\u589e\u4e00\u5c42Proxy\uff0c\u8be5Proxy\u6765\u505aElasticSearch\u8ddfClickHouse\u7684\u8bed\u6cd5\u8f6c\u6362\uff0c\u5982\u56fe:\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana02.png)\\r\\n\\r\\n\u6211\u4eec\u81ea\u7814\u4e86\u4e00\u5957Proxy\uff08\u53d6\u540dCKibana\uff09\uff0c\u8be5Proxy\u8d1f\u8d23\u5c06\u56fe\u8868\u8bf7\u6c42\u8f6c\u6362\u6210ClickHouse\u8bed\u6cd5\u67e5\u8be2\u5230ClickHouse\u7ed3\u679c\u540e\u6a21\u62df\u6210ElasticSearch\u54cd\u5e94\u8fd4\u56de\u7ed9Kibana\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u76f4\u63a5\u5728\u539f\u751fKibana\u4e0a\u9762\u5c55\u793aClickHouse\u4e2d\u7684\u6570\u636e\uff0c\u9664\u4e86\u8bed\u6cd5\u8f6c\u6362\uff0c\u6211\u4eec\u8fd8\u89e3\u51b3\u4e86\u5f88\u591a\u5b9e\u9645\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684\u95ee\u9898\u3002\\r\\n\\r\\n`CKibana: \u73b0\u5df2\u6b63\u5f0f\u5f00\u6e90\uff0chttps://github.com/TongchengOpenSource/ckibana`\\r\\n\\r\\n\u4ecb\u4e8eClickHouse\u7684\u67e5\u8be2\u5e76\u53d1\u80fd\u529b\u9650\u5236\uff0c\u6211\u4eec\u4fdd\u7559\u4e86ElasticSearch\uff0c\u8be5ElasticSearch\u53ef\u4ee5\u7528\u6765\u505a\u7ed3\u679c\u7684\u7f13\u5b58\u7b49\u9ad8\u7ea7\u7279\u6027\u4ee5\u53ca\u4fdd\u5b58Kibana\u76f8\u5173\u7684\u5143\u6570\u636e\uff0c\u672c\u8eab\u975e\u5e38\u8f7b\u91cf\u3002\\r\\n\\r\\n## 3 CKibana\u4f7f\u7528\\r\\n### \u51c6\u5907\u73af\u5883\\r\\n1. Kibana: \u7528\u6765\u63d0\u4f9b\u7ed9\u4e1a\u52a1\u505aUI\u5c55\u793a\\r\\n2. ElasticSearch: \u7528\u6765\u505akibana\u5143\u6570\u636e\u5b58\u50a8+\u67e5\u8be2\u7f13\u5b58\u7b49\u9ad8\u7ea7\u7279\u6027\\r\\n3. ClickHouse: \u771f\u5b9e\u5b58\u65e5\u5fd7\u6570\u636e\u7684\u5b58\u50a8\\r\\n4. CKibana: \u63d0\u4f9bProxy\u7b49\u9ad8\u7ea7\u529f\u80fd\uff0c\u5b9e\u73b0\u8ba9\u7528\u6237\u76f4\u63a5\u5728\u539f\u751fKibana\u4e0a\u67e5\u8be2ClickHouse\u6570\u636e\\r\\n\\r\\n### \u5f00\u59cb\u4f7f\u7528\\r\\n#### \u542f\u52a8CKibana\\r\\n\u914d\u7f6eElasticSearch\u76f8\u5173\u4fe1\u606f\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana03.png)\\r\\n\\r\\n\u542f\u52a8\uff0c\u9700\u8981JDK17+\\r\\n\\r\\n`java -jar ckibana.jar`\\r\\n\\r\\n#### \u4fee\u6539Kibana\\r\\n\u4fee\u6539Kibana\u914d\u7f6e\uff0c\u5c06ElasticSearch\u5730\u5740\u6539\u4e3aCKibana\u5730\u5740\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana04.png)\\r\\n\\r\\n\u6b64\u65f6\uff0cKibana\u529f\u80fd\u5b8c\u5168\u53ef\u7528\uff0c\u53ef\u4ee5\u5c06CKibana\u5f53\u6210\u4e00\u4e2aElasticSearch Proxy\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana05.png)\\r\\n\\r\\n#### \u914d\u7f6eClickHouse\u8fde\u63a5\u4fe1\u606f\u4e0e\u7d22\u5f15\u767d\u540d\u5355\\r\\n\\r\\n\u8bbe\u7f6eClickHouse\u8fde\u63a5\u4fe1\u606f:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateCk?url=ckUrl&user=default&pass=default&defaultCkDatabase=ops\'`\\r\\n\\r\\n#### \u914d\u7f6e\u9700\u8981\u5207\u6362\u5230ClickHouse\u7684index\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateWhiteIndexList?list=index1,index2\'`\\r\\n\\r\\nClickHouse\u5b57\u6bb5\u8ddfElasticSearch\u5b57\u6bb5\u7684\u5173\u7cfb\\r\\n\\r\\n| es\u7c7b\u578b | ck\u7c7b\u578b |\\r\\n|----------|---------|\\r\\n| keyword | String |\\r\\n| text | String |\\r\\n| ip | String(\u4ee3\u7406\u81ea\u52a8\u8bc6\u522bipv4\u548cipv6) |\\r\\n| integer | Int32 |\\r\\n| long | Int64 |\\r\\n| float | Float32 |\\r\\n| double | Float64 |\\r\\n\\r\\n#### \u521b\u5efaindex pattern\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana06.png)\\r\\n\\r\\n\u6ce8\u610f\u70b9:\\r\\n1. \u9996\u5148\u786e\u5b9a\u8f93\u5165\u7684index pattern\u8ddfClickHouse\u8868\u662f\u5426\u4e00\u81f4\uff0cindex pattern\u8ddf\u8ddfClickHouse\u8868\u540d\u662f\u7cbe\u786e\u5339\u914d\\r\\n2. \u5982\u679c\u4e0d\u80fd\u6652\u9009\u5230\u5bf9\u5e94\u7684\u8868\u683c\uff0c\u53ef\u4ee5\u57fa\u4e8eCKibana\u65e5\u5fd7\u4e2d\u7684sql\u6392\u67e5\uff0c\u662f\u5426\u53ef\u67e5\u8be2\u5230\u5bf9\u5e94\u7684\u8868\\r\\n3. \u6ce8\u610f\u65f6\u95f4\u5b57\u6bb5\uff0c\u5426\u5219\u4f1a\u7b5b\u9009\u4e0d\u4e86\u65f6\u95f4\u5b57\u6bb5\uff0c\u7b5b\u9009\u903b\u8f91\u5982\u4e0b:\\r\\n- \u5b57\u6bb5\u4e3aDate\u7c7b\u578b\uff0c\u6bd4\u5982DateTime64\u7c7b\u578b\uff0c\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u7c7b\u578b\\r\\n- \u5b57\u6bb5\u540d\u4e2d\u5305\u542btime\uff0c\u6bd4\u5982\uff08@timestamp UInt64\uff09\uff0c\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u7c7b\u578b\\r\\n\\r\\n\u8fd9\u4e24\u79cd\u60c5\u51b5\u4e0b\u6ee1\u8db3\u4efb\u610f\u4e00\u4e2a\uff0c\u5b57\u6bb5\u90fd\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u5b57\u6bb5\uff0c\u5982\u679c\u9009\u62e9\u4e0d\u4e86\u65f6\u95f4\u5b57\u6bb5\uff0c\u9700\u8981\u68c0\u67e5\u4e0bClickHouse\u8868\u4e2d\u5b57\u6bb5\u662f\u5426\u7b26\u5408\u5339\u914d\u903b\u8f91\u3002\\r\\n#### \u5f00\u59cb\u4f7f\u7528\\r\\n\u914d\u7f6e\u5b8c\u6210index pattern\u540e\uff0c\u5c31\u53ef\u4ee5\u6b63\u5e38\u7684\u4f7f\u7528Kibana\u7684\u56fe\u8868\u529f\u80fd\u4e86\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana07.png)\\r\\n\\r\\n### \u9ad8\u7ea7\u529f\u80fd\\r\\n#### \u91c7\u6837\\r\\nKibana\u7684\u56fe\u8868\u5927\u90e8\u5206\u90fd\u662f\u5173\u6ce8\u8d8b\u52bf\uff0c\u5f53\u547d\u4e2d\u7ed3\u679c\u96c6\u592a\u5927\u65f6\u5019\uff0c\u6d88\u8017\u7684ClickHouse\u7684\u8d44\u6e90\u4e5f\u8f83\u591a\u3002\u6211\u4eec\u63d0\u4f9b\u4e86\u91c7\u6837\u529f\u80fd\uff0c\u5728\u6570\u636e\u96c6\u8f83\u5927\u7684\u65f6\u5019\uff0c\u80fd\u591f\u4fdd\u969c\u56fe\u8868\u8d8b\u52bf\u8ddf\u5b9e\u9645\u7684\u5dee\u4e0d\u591a\uff0c\u800c\u4e14\u53ef\u4ee5\u5f88\u597d\u7684\u63a7\u5236ClickHouse\u7684\u8d44\u6e90\u4f7f\u7528\u3002\\r\\n\\r\\n`- \u6ce8: \u5bf9\u5e94\u7684ClickHouse\u7684\u8868\u9700\u8981\u6309\u7167ck\u7684\u91c7\u6837\u8868\u521b\u5efa [clickhouse sample](https://clickhouse.com/docs/en/sql-reference/statements/select/sample)\\r\\n- \u5982\u679c\u91c7\u6837\u9608\u503c\u8bbe\u7f6e\u7684\u8fc7\u5c0f\uff0c\u4f1a\u5bfc\u81f4\u8fd8\u539f\u51fa\u6765\u7684\u503c\u8ddf\u771f\u5b9e\u503c\u5dee\u5f02\u8f83\u5927\uff0c\u6211\u4eec\u7ebf\u4e0a\u8bbe\u7f6e\u7684\u91c7\u6837\u503c\u4e3a500w`\\r\\n\\r\\n\u5f00\u542f\u91c7\u6837\u9700\u8981\u4e24\u6b65:\\r\\n1. \u914d\u7f6e\u9700\u8981\u91c7\u6837\u7684\u8868\\r\\n2. \u66f4\u65b0\u91c7\u6837\u9608\u503c\uff0c\u5f53\u547d\u4e2d\u7ed3\u679c\u96c6\u8d85\u8fc7\u9608\u503c\u65f6\uff0c\u4f1a\u89e6\u53d1\u91c7\u6837\\r\\n\\r\\n\u91c7\u6837\u903b\u8f91 `Math.max(0.01, Double.parseDouble(String.format(\\"%.5f\\", sampleParam.getSampleCountMaxThreshold() * 1.00 / sampleParam.getSampleTotalCount())))`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana08.png)\\r\\n\\r\\n\u5c55\u5f00\u6d41\u91cf\u5668\u7684\u54cd\u5e94\u7ed3\u679c\uff0c\u53ef\u4ee5\u770b\u5230\u91c7\u6837\u503c\\r\\n\\r\\n#### \u65f6\u95f4round+\u7f13\u5b58\\r\\n\u5f53\u7ebf\u4e0a\u51fa\u73b0\u4e00\u4e2a\u6545\u969c\u65f6\u5019\uff0c\u6709\u5927\u91cf\u7684sre\u540c\u5b66\u8ddf\u4e1a\u52a1\u540c\u5b66\u90fd\u9700\u8981\u901a\u8fc7nginx\u65e5\u5fd7\u6765\u67e5\u8be2\u95ee\u9898\uff0c\u800c\u4e14\u67e5\u8be2\u7684\u6761\u4ef6\u57fa\u672c\u90fd\u76f8\u540c\uff0c\u4f46\u662fClickHouse\u4e3a\u4e86\u4f7f\u5f97\u67e5\u8be2\u6027\u80fd\u6700\u597d\uff0c\u800c\u5c3d\u91cf\u7684\u4f7f\u7528\u66f4\u591a\u7684cpu\u6765\u53c2\u52a0\u8ba1\u7b97\uff0c\u8fd9\u6837\u5bfc\u81f4\u8fd9\u4e9b\u573a\u666f\u4e0bClickHouse\u7684cpu\u4f1a\u76f4\u63a5\u8dd1\u6ee1\u3002\u4e14\u5728\u540c\u5b66\u4eec\u7684\u4e0d\u65adretry\u4e0b\uff0ccpu\u4e0d\u80fd\u6062\u590d\u3002\\r\\n\\r\\n\u6240\u4ee5\u6211\u4eec\u505a\u4e86\u4e00\u4e2a\u65f6\u95f4round+\u7f13\u5b58\u529f\u80fd\u3002\\r\\n\\r\\n\u65f6\u95f4round: \u6bd4\u5982\u8bbe\u7f6eround\u4e3a20s\uff0c\u5219\u67e5\u8be2\u65f6\u95f4\u6761\u4ef6\u4e2d\u7684s\u7684\u7cbe\u5ea6\u4f1a`%20`\uff0c\u76f8\u5f53\u4e8e\u6700\u591a\u5ef6\u8fdf\u4e8620s\u6765\u67e5\u8be2\u6570\u636e\u3002\\r\\n\\r\\n\u6709\u4e86\u65f6\u95f4round\u540e\uff0c\u5219\u5927\u91cf\u7684\u67e5\u8be2\u6761\u4ef6\u5c31\u4e00\u81f4\u4e86\uff0c\u8fd9\u4e2a\u65f6\u5019\u53ea\u9700\u8981\u5f00\u542f\u7ed3\u679c\u7f13\u5b58\uff0c\u5219\u5c31\u53ef\u4ee5\u5f88\u597d\u7684\u7f13\u89e3ClickHouse\u7684\u538b\u529b\u3002\\r\\n\\r\\n\u8bbe\u7f6e\u65f6\u95f4round:\\r\\n`curl --location --request POST \'localhost:8080/config/updateRoundAbleMinPeriod?roundAbleMinPeriod=20000\' \u5355\u4f4dms`\\r\\n\\r\\n\u8bbe\u7f6e\u6253\u5f00\u7f13\u5b58:\\r\\n`curl --location --request POST \'localhost:8080/config/updateUseCache?useCache=true\'`\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana09.png)\\r\\n\\r\\n\u662f\u5426\u547d\u4e2d\u7f13\u5b58\uff0c\u5728\u54cd\u5e94\u7ed3\u6784\u91cc\u9762\u53ef\u4ee5\u770b\u5230\\r\\n\\r\\n#### \u67e5\u8be2\u76d1\u63a7 + \u9ed1\u540d\u5355\\r\\nKibana\u7684\u67e5\u8be2\u8bed\u6cd5\u76f8\u5bf9\u6bd4\u8f83\u968f\u610f\uff0c\u4e00\u4e9b\u67e5\u8be2\u5bf9ClickHouse\u7684\u8d44\u6e90\u6d88\u8017\u4f1a\u6bd4\u8f83\u5927\uff0c\u6240\u4ee5\u6211\u4eec\u5c06\u6240\u6709\u7684\u67e5\u8be2\u4ee5\u53ca\u8017\u65f6\u90fd\u505a\u4e86\u76d1\u63a7\uff0c\u8fd9\u6837\u53ef\u4ee5\u6bd4\u8f83\u65b9\u4fbf\u7684\u67e5\u770b\u90fd\u505a\u4e86\u54ea\u4e9b\u67e5\u8be2\uff0c\u8bbe\u7f6e\u53ef\u4ee5\u5bf9\u67e5\u8be2\u505a\u9ed1\u540d\u5355\u7684\u63a7\u5236\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u9650\u5236\u4e0d\u592a\u53cb\u597d\u7684\u67e5\u8be2\\r\\n\\r\\n\u5f00\u542f\u76d1\u63a7:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateEnableMonitoring?enableMonitoring=true\'`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana10.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe\uff0c\u6211\u4eec\u53ef\u4ee5\u76d1\u63a7\u6bcf\u4e2a\u67e5\u8be2\u7684\u8be6\u60c5\uff0c\u8bed\u6cd5\u4ee5\u53ca\u8017\u65f6\u3002\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana11.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe\uff0c\u53ef\u4ee5\u57fa\u4e8ekibana\u56fe\u8868\u529f\u80fd\uff0c\u505a\u66f4\u76f4\u89c2\u7684\u5206\u6790\u3002\\r\\n\\r\\n#### \u67e5\u8be2\u65f6\u95f4\u9650\u5236\\r\\n\u5f88\u591a\u65f6\u5019\uff0c\u6709\u4eba\u60f3\u8981\u67e5\u770b\u67d0\u4e2a\u6761\u4ef6\u6700\u8fd1\u7684\u8d8b\u52bf\uff0c\u76f4\u63a5\u67e5\u8be2\u6700\u8fd17\u5929\u7b49\u7b49\uff0c\u8fd9\u6837\u4f1a\u5bfc\u81f4\u8d44\u6e90\u6d88\u8017\u6bd4\u8f83\u5927\uff0c\u6240\u4ee5CKibana\u652f\u6301\u4e86\u6700\u957f\u65f6\u95f4\u67e5\u8be2\u8303\u56f4\uff0c\u6765\u9650\u5236\u4f7f\u7528\u3002\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateMaxTimeRange?maxTimeRange=864000000\' \u5355\u4f4dms`\\r\\n\\r\\n#### keyword\u67e5\u8be2\\r\\n\u4e3a\u4e86\u66f4\u597d\u7684\u5339\u914dElasticSearch\u7684\u4f7f\u7528\u4e60\u60ef\u3002 `field.keyword` \u67e5\u8be2\u76f8\u5f53\u4e8e\u5bf9field\u7684\u7cbe\u786e\u67e5\u8be2\uff0c\u5426\u5219\u4e3a\u6a21\u7cca\u641c\u7d22\\r\\n\\r\\n\u6bd4\u5982 `host.keyword:\\"www.baidu.com\\"` \u6362\u6210sql\u4e3a: `host=\\"www.baidu.com\\"`\\r\\n\\r\\n#### Discover\u6027\u80fd\u4f18\u5316\\r\\nClickHouse\u7684\u5f3a\u9879\u5728AP\u573a\u666f,\u5f53\u67e5\u8be2\u65f6\u95f4\u8de8\u5ea6\u6bd4\u8f83\u5927\u65f6,\u4f20\u7edf\u7684SQL:`select x from table where x order by time desc limit 10` \u8fd9\u79cd\u65b9\u5f0f\u4f1a\u5bfc\u81f4\u67e5\u8be2\u6027\u80fd\u975e\u5e38\u4f4e,\u800c\u4e14\u6d88\u8017\u5927\u91cf\u7684ClickHouse\u8d44\u6e90\u3002\\r\\n\u9488\u5bf9\u8fd9\u79cd\u5e26\u8d8b\u52bf\u56fe+\u660e\u7ec6\u7684\u573a\u666f\u6211\u4eec\u505a\u4e86\u6027\u80fd\u4f18\u5316,\u5145\u5206\u53d1\u6325ClickHouse\u7684AP\u80fd\u529b\u3002\u4f1a\u5c06\u6267\u884c\u62c6\u5206\u4e3a\u4e24\u6b65:\\r\\n1. \u57fa\u4e8eCk \u805a\u5408\u80fd\u529b,\u67e5\u8be2\u51fa\u6bcf\u5206\u949f\u6ee1\u8db3\u6761\u4ef6\u7684\u65e5\u5fd7\u6570\u91cf\\r\\n2. \u57fa\u4e8e\u6bcf\u5206\u949f\u7684\u65e5\u5fd7\u6570\u91cf\u81ea\u52a8\u88c1\u526a\u65e5\u5fd7\u641c\u7d22\u7684\u65f6\u95f4\u8de8\u5ea6,\u6bd4\u5982\u4e00\u5206\u949f\u5185\u7684\u65e5\u5fd7\u6761\u6570\u5c31\u6ee1\u8db3\u4e86\u8981\u6c42,\u5219\u67e5\u8be2\u660e\u7ec6\u65f6\u81ea\u52a8\u7f29\u51cf\u52301\u5206\u949f\u7684\u8de8\u5ea6\u3002\\r\\n\\r\\n\u57fa\u4e8e\u67e5\u8be2\u65f6\u95f4\u7684\u81ea\u52a8\u88c1\u526a\u529f\u80fd,\u4f1a\u4f7f\u5f97Discover\u7248\u672c\u67e5\u8be2\u6027\u80fd\u6709\u8d28\u7684\u63d0\u5347\u4e14\u5bf9ClickHouse\u7684cpu\u5360\u7528\u6709\u5f88\u5927\u7684\u4f18\u5316\u3002\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana15.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe,\u4e00\u4e2aDiscover\u67e5\u8be2\u62c6\u6210\u4e863\u4e2asql:\\r\\n1. \u8ba1\u7b97\u662f\u5426\u9700\u8981\u91c7\u6837\\r\\n2. \u7edf\u8ba1\u6bcf\u5206\u949f\u7684\u65e5\u5fd7\u6570\\r\\n3. \u81ea\u52a8\u88c1\u526a\u67e5\u8be2\u65f6\u95f4\u8303\u56f4\\r\\n\\r\\n## 4 Nginx\u65e5\u5fd7\u76f8\u5173\u4f7f\u7528\u6848\u4f8b\\r\\n\\r\\n#### Clickhouse\u8868\u7ed3\u6784\\r\\n\\r\\n``` CREATE TABLE bjops.ops_bjtlblog_local\\r\\n(\\r\\n`@timestamp` UInt64,\\r\\n`X-Request-Id` String,\\r\\n`addr` String,\\r\\n`ap_area` String,\\r\\n`byte` Int64,\\r\\n`bytes_recv` Int64,\\r\\n`Bbtes_sent` Int64,\\r\\n`content-type` String,\\r\\n`content_length` Int64,\\r\\n`crp` String,\\r\\n`csi` String,\\r\\n`cspanid` String,\\r\\n`difftime` Int32,\\r\\n`error_body` String,\\r\\n`error_client` String,\\r\\n`error_host` String,\\r\\n`error_request` String,\\r\\n`error_server` String,\\r\\n`error_upstream` String,\\r\\n`forwarded` String,\\r\\n`host` String,\\r\\n`hostname` String,\\r\\n`idc` LowCardinality(String),\\r\\n`index_name` LowCardinality(String),\\r\\n`ip` String,\\r\\n`logant_idc` LowCardinality(String),\\r\\n`logant_type` LowCardinality(String),\\r\\n`origin_ip` String,\\r\\n`referer` String,\\r\\n`remote_port` String,\\r\\n`request_method` LowCardinality(String),\\r\\n`request_time` Int64,\\r\\n`request_uri` String,\\r\\n`request_url` String,\\r\\n`scheme` String,\\r\\n`server_addr` String,\\r\\n`server_name` String,\\r\\n`server_port` String,\\r\\n`server_protocol` String,\\r\\n`source` String,\\r\\n`sspanid` String,\\r\\n`st` String,\\r\\n`status` Int32,\\r\\n`timeuse` Float64,\\r\\n`traceid` String,\\r\\n`type` String,\\r\\n`ua` String,\\r\\n`up_addr` String,\\r\\n`up_status` Int32,\\r\\n`upstream_name` String,\\r\\n`upstream_response_time` Int32,\\r\\n`worker_pid` String,\\r\\n`ck_assembly_extension` String,\\r\\n`bytes_sent` Int64,\\r\\nINDEX timestamp_index `@timestamp` TYPE minmax GRANULARITY 8192\\r\\n)\\r\\nENGINE = MergeTree\\r\\nPARTITION BY (toYYYYMMDD(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')), toHour(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')))\\r\\nORDER BY (host, request_uri, intHash64(`@timestamp`))\\r\\nSAMPLE BY intHash64(`@timestamp`)\\r\\nSETTINGS in_memory_parts_enable_wal = 0, index_granularity = 8192\\r\\n```\\r\\n\\r\\n\u5207\u8bb0\u5c06`host`\u653e\u7f6e\u5728order by\u7684\u7b2c\u4e00\u4f4d\u3002\u56e0\u4e3a\u67e5Nginx\u65e5\u5fd7\u5927\u591a\u6570\u60c5\u51b5\u4e0b\u9700\u8981\u6839\u636e`host`\u67e5\u8be2\u3002\\r\\n\\r\\n#### CKibana\u6240\u6709\u914d\u7f6e\\r\\n```\\r\\n{\\r\\n\\t\\"Proxy\\": {\\r\\n\\t\\t\\"ck\\": {\\r\\n\\t\\t\\t\\"url\\": \\"ip:6321\\",\\r\\n\\t\\t\\t\\"user\\": \\"user\\",\\r\\n\\t\\t\\t\\"pass\\": \\"pass\\",\\r\\n\\t\\t\\t\\"defaultCkDatabase\\": \\"db\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"es\\": {\\r\\n\\t\\t\\t\\"host\\": \\"ip:31940\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"roundAbleMinPeriod\\": 120000,\\r\\n\\t\\t\\"round\\": 20000,\\r\\n\\t\\t\\"maxTimeRange\\": 86400000,\\r\\n\\t\\t\\"blackIndexList\\": null,\\r\\n\\t\\t\\"whiteIndexList\\": [\\"ops_bjtlblog_all\\", \\"other_index_all\\"],\\r\\n\\t\\t\\"enableMonitoring\\": true\\r\\n\\t},\\r\\n\\t\\"query\\": {\\r\\n\\t\\t\\"sampleIndexPatterns\\": [\\"ops_bjtlblog_all\\"],\\r\\n\\t\\t\\"sampleCountMaxThreshold\\": 5000000,\\r\\n\\t\\t\\"useCache\\": true,\\r\\n\\t\\t\\"maxResultRow\\": 30000\\r\\n\\t},\\r\\n\\t\\"threadPool\\": {\\r\\n\\t\\t\\"msearchProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t},\\r\\n\\t\\t\\"commonProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t}\\r\\n\\t},\\r\\n\\t\\"defaultShard\\": 2\\r\\n}\\r\\n```\\r\\n\\r\\n#### \u7ebf\u4e0a\u6548\u679c\u56fe\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana12.png)\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana13.png)\\r\\n\\r\\n## 4 \u6536\u76ca\\r\\n\u622a\u6b62\u5230\u76ee\u524d\uff0c\u501f\u52a9CKibana\u7684\u6838\u5fc3\u80fd\u529b\uff0c\u6211\u4eec\u5df2\u7ecf\u5b8c\u6210\u4e86\u6240\u6709Nginx\u8bbf\u95ee\u65e5\u5fd7\u548c\u4e1a\u52a1\u81ea\u5b9a\u4e49\u65e5\u5fd7\u5168\u91cf\u4eceElasticSearch\u5207\u6362\u5230Clickhouse\uff0c\u5b58\u50a8\u6210\u672c\u964d\u4e3a\u539f\u6765\u768430%\u4ee5\u5185\u3002\u540c\u65f6\u57fa\u4e8eClickHouse\u7684\u5206\u5e03\u5f0f\u8868\u80fd\u529b\u53ef\u4ee5\u505a\u5230\u5373\u4f7f\u5728\u5355\u4e2d\u5fc3\u6545\u969c\u65f6\u65e5\u5fd7\u67e5\u8be2\u4e5f\u4e0d\u53d7\u4efb\u4f55\u5f71\u54cd\uff0c\u65e0\u8bba\u5728\u6210\u672c\u8fd8\u662f\u7a33\u5b9a\u6027\u65b9\u9762\u76f8\u6bd4ElasticSearch\u90fd\u6709\u4e86\u8f83\u5927\u7684\u63d0\u5347\uff0c\u5e76\u6cbf\u7528\u4e86\u7075\u6d3b\u5f3a\u5927\u7684\u539f\u751fKibana\u4f5c\u4e3a\u53ef\u89c6\u5316\u5de5\u5177\uff0c\u53ef\u4ee5\u8ba9\u7528\u6237\u7ee7\u7eed\u4f7f\u7528\u81ea\u5df1\u4e60\u60ef\u7684Kibana\u9762\u677f\u4fbf\u6377\u5730\u8fdb\u884c\u65e5\u5fd7\u67e5\u8be2\u548c\u5206\u6790\u3002\\r\\n\\r\\n## 5 \u6700\u540e\\r\\n\u5728\u6211\u4eec\u65e5\u5fd7\u7cfb\u7edf\u4e0d\u65ad\u6f14\u8fdb\u7684\u8fc7\u7a0b\u4e2d\u79bb\u4e0d\u5f00\u4f17\u591a\u4f18\u79c0\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u73b0\u5728\u6211\u4eec\u4e5f\u5c06CKibana (ClickHouse Proxy for Kibana & Clickhouse visualization tool) \u6b63\u5f0f\u5f00\u6e90\u4e86\uff0c\u5e0c\u671b\u80fd\u591f\u5e2e\u52a9\u5230\u66f4\u591a\u7684\u4eba\u540c\u65f6\u4e5f\u671f\u671b\u80fd\u8ddf\u793e\u533a\u4e00\u8d77\u5171\u5efa\u4e0d\u65ad\u5b8c\u5584\u529f\u80fd\u4e0e\u7279\u6027\uff0c\u5145\u5206\u53d1\u6325\u65e5\u5fd7\u573a\u666f\u4e0bKibana\u53ef\u89c6\u5316+ClickHouse\u5b58\u50a8\u8fd9\u5bf9\u7ec4\u5408\u7684\u5a01\u529b\uff0c\u8ba9\u5927\u5bb6\u7528\u8d77\u6765\u66f4\u52a0\u4e1d\u6ed1\uff0c\u6b22\u8fceStar\u548c\u7ed9\u6211\u4eec\u63d0ISSUE\u3002\\r\\n\\r\\n\u9879\u76eeGithub\u5730\u5740: https://github.com/TongchengOpenSource/ckibana"},{"id":"/1","metadata":{"permalink":"/ckibana-docs/zh/blog/1","source":"@site/blog/zh/1.md","title":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","description":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","date":"2024-08-26T06:52:57.848Z","formattedDate":"August 26, 2024","tags":[{"label":"CKibana","permalink":"/ckibana-docs/zh/blog/tags/c-kibana"}],"readingTime":13.985,"truncated":true,"authors":[{"name":"\u57fa\u7840\u67b6\u6784\u7814\u53d1\u90e8\u2014\u5468\u795d\u7fa4"}],"prevItem":{"title":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","permalink":"/ckibana-docs/zh/blog/build-logging-platform-with-native-kibana-and-clickhouse"}},"content":"> \u672c\u6587\u5c06\u4ecb\u7ecd\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0\\r\\n\\r\\n\x3c!--truncate--\x3e\\r\\n\u4e1a\u52a1\u5feb\u901f\u53d1\u5c55\u8fc7\u7a0b\u4e2d\u5bf9\u4e8e\u5404\u79cd\u65e5\u5fd7\u6570\u636e\u7684\u67e5\u8be2\u5206\u6790\u9700\u6c42\u4f1a\u5bfc\u81f4\u65e5\u5fd7\u5b58\u50a8\u89c4\u6a21\u6025\u5267\u589e\u957f\uff0c\u4f20\u7edfELK\u548c\u4ee5ElasticSearch\u4e3a\u6838\u5fc3\u5b58\u50a8\u7684\u65e5\u5fd7\u7cfb\u7edf\u968f\u4e4b\u4f1a\u9762\u4e34\u6210\u672c\u3001\u7a33\u5b9a\u6027\u4ee5\u53ca\u6027\u80fd\u7b49\u8bf8\u591a\u6311\u6218\uff0c\u4e1a\u754c\u4e5f\u770b\u5230\u8d8a\u6765\u8d8a\u591a\u7684\u56fd\u5185\u5916\u516c\u53f8\u5c06\u5b58\u50a8\u5207\u6362\u5230ClickHouse\uff0c\u6bd4\u5982\u643a\u7a0b\u3001\u5feb\u624b\u3001B\u7ad9\u3001Cloudflare\u548cUber\u7b49\uff0c\u4ece\u4ed6\u4eec\u7684\u5206\u4eab\u4e2d\u770b\u5230\u6536\u76ca\u90fd\u5f88\u660e\u663e\uff0c\u6211\u4eec\u7684\u65e5\u5fd7\u7cfb\u7edf\u4e5f\u5f00\u59cb\u5c1d\u8bd5\u4eceElasticSearch\u8fc1\u79fb\u5230ClickHouse\uff0c\u5e76\u5728\u8fc7\u7a0b\u4e2d\u63a2\u7d22\u548c\u79ef\u7d2f\u4e86\u4e00\u5957\u6700\u5927\u7a0b\u5ea6\u7167\u987e\u539f\u6709\u7528\u6237\u4f7f\u7528\u4e60\u60ef\u5b9e\u73b0\u5e73\u6ed1\u5207\u6362\u7684\u6574\u4f53\u65b9\u6848\u3002\\r\\n\\r\\n## 1 \u80cc\u666f\u4ecb\u7ecd\\r\\n\u516c\u53f8\u5185\u6d41\u91cf\u6700\u5927\u7684\u901a\u7528\u65e5\u5fd7\u7cfb\u7edf\u5e95\u5c42\u5b58\u50a8\u81ea\u4ece2020\u5e74\u7531ElasticSearch\u9010\u6b65\u5207\u6362\u5230Clickhouse\u4e4b\u540e\u5728\u6210\u672c\u4ee5\u53ca\u7a33\u5b9a\u6027\u7b49\u65b9\u9762\u5747\u6709\u663e\u8457\u63d0\u5347\u3002\u5728\u4eca\u5e74\u56fd\u5e86\u671f\u95f4\u7a33\u5b9a\u652f\u6491\u4e86\u8d85\u8fc75000\u4ebf\u6761/\u5929\u7684\u65e5\u5fd7\u91cf\uff0c\u800c\u6210\u672c\u4e5f\u4ec5\u4ec5\u662f\u539f\u5148ElasticSearch\u65b9\u6848\u768430%\u3002\\r\\n\\r\\n\u9664\u4e86\u8be5\u65e5\u5fd7\u7cfb\u7edf\u5916\uff0c\u516c\u53f8\u5185\u8fd8\u5b58\u5728\u5f88\u591a\u65e5\u5fd7\u7cfb\u7edf\uff0c\u5927\u591a\u57fa\u4e8e\u5f00\u6e90\u4e3b\u6d41ELK\u65b9\u5f0f\u3002\u5728\u89c4\u6a21\u8d8a\u6765\u8d8a\u5927\u540e\uff0c\u6210\u672c\u8ddf\u7a33\u5b9a\u6027\u65b9\u9762\u7684\u95ee\u9898\u4e5f\u5c31\u9010\u6e10\u66b4\u9732\u4e86\uff0c\u6240\u4ee5\u8ba1\u5212\u5c06\u6240\u6709\u65e5\u5fd7\u7cfb\u7edf\u7684\u5e95\u5c42\u5b58\u50a8\u5168\u90e8\u5207\u6362\u6210ClickHouse\u3002\\r\\n\\r\\n\u5173\u4e8e\u65e5\u5fd7\u573a\u666f\u4e0bClickhouse\u7684\u9009\u578b\u4e0e\u7528\u6cd5\u4e1a\u754c\u5df2\u7ecf\u6709\u5f88\u591a\u7684\u516c\u5f00\u5206\u4eab\uff0c\u4e0d\u4f5c\u4e3a\u672c\u6587\u91cd\u70b9\uff0c\u6709\u5174\u8da3\u53ef\u81ea\u884c\u641c\u7d22\u4e0b\u76f8\u5173\u8d44\u6599\u3002\\r\\n\\r\\n\u5728\u5b58\u50a8\u5207\u6362\u5b8c\u6210\u4e4b\u540e\u6700\u91cd\u8981\u7684\u662f\u89e3\u51b3\u67e5\u8be2UI\u7528\u6237\u4f53\u9a8c\u95ee\u9898\uff0c\u4e5f\u770b\u5230\u6709\u516c\u53f8\u5728\u628a\u65e5\u5fd7\u5b58\u50a8\u5207\u5230Clickhouse\u540e\u9009\u62e9\u81ea\u7814\u4e00\u5957\u67e5\u8be2UI\uff0c\u4f46\u60f3\u8981\u7167\u987e\u7528\u6237\u539f\u5148\u6240\u6709\u4f7f\u7528\u4e60\u60ef\u4ece\u539f\u751fKibana\u65e0\u7f1d\u5207\u6362\u5230\u65b0\u5e73\u53f0\u662f\u4e0d\u592a\u5b9e\u73b0\u7684\uff0c\u9700\u8981\u6240\u6709\u4e1a\u52a1\u540c\u4e8b\u719f\u6089\u4e00\u5957\u65b0\u7684\u8bed\u6cd5\u8ddfUI\u4ea4\u4e92\uff0c\u65e0\u5f62\u4e2d\u7ed9\u4ed6\u4eec\u52a0\u4e86\u5f88\u5927\u7684\u6210\u672c\u3002\\r\\n\\r\\n\u6240\u4ee5\uff0c\u600e\u4e48\u80fd\u591f\u8ba9\u4e1a\u52a1\u7528\u6237\u4ee5\u96f6\u5b66\u4e60\u6210\u672c\u4f7f\u7528\u65b0\u5e73\u53f0\uff0c\u8fd9\u662f\u4e00\u4e2a\u6700\u68d8\u624b\u7684\u95ee\u9898\u3002\\r\\n\\r\\n## 2 \u65b9\u6848\u4ecb\u7ecd\\r\\n\u6211\u4eec\u7684\u601d\u8def\u5176\u5b9e\u4e5f\u6bd4\u8f83\u5bfb\u5e38\uff0c\u6211\u4eec\u9009\u62e9\u5728\u539f\u751fKibana\u8ddfElasticSearch\u4e4b\u95f4\u65b0\u589e\u4e00\u5c42Proxy\uff0c\u8be5Proxy\u6765\u505aElasticSearch\u8ddfClickHouse\u7684\u8bed\u6cd5\u8f6c\u6362\uff0c\u5982\u56fe:\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana02.png)\\r\\n\\r\\n\u6211\u4eec\u81ea\u7814\u4e86\u4e00\u5957Proxy\uff08\u53d6\u540dCKibana\uff09\uff0c\u8be5Proxy\u8d1f\u8d23\u5c06\u56fe\u8868\u8bf7\u6c42\u8f6c\u6362\u6210ClickHouse\u8bed\u6cd5\u67e5\u8be2\u5230ClickHouse\u7ed3\u679c\u540e\u6a21\u62df\u6210ElasticSearch\u54cd\u5e94\u8fd4\u56de\u7ed9Kibana\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u76f4\u63a5\u5728\u539f\u751fKibana\u4e0a\u9762\u5c55\u793aClickHouse\u4e2d\u7684\u6570\u636e\uff0c\u9664\u4e86\u8bed\u6cd5\u8f6c\u6362\uff0c\u6211\u4eec\u8fd8\u89e3\u51b3\u4e86\u5f88\u591a\u5b9e\u9645\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684\u95ee\u9898\u3002\\r\\n\\r\\n`CKibana: \u73b0\u5df2\u6b63\u5f0f\u5f00\u6e90\uff0chttps://github.com/TongchengOpenSource/ckibana`\\r\\n\\r\\n\u4ecb\u4e8eClickHouse\u7684\u67e5\u8be2\u5e76\u53d1\u80fd\u529b\u9650\u5236\uff0c\u6211\u4eec\u4fdd\u7559\u4e86ElasticSearch\uff0c\u8be5ElasticSearch\u53ef\u4ee5\u7528\u6765\u505a\u7ed3\u679c\u7684\u7f13\u5b58\u7b49\u9ad8\u7ea7\u7279\u6027\u4ee5\u53ca\u4fdd\u5b58Kibana\u76f8\u5173\u7684\u5143\u6570\u636e\uff0c\u672c\u8eab\u975e\u5e38\u8f7b\u91cf\u3002\\r\\n\\r\\n## 3 CKibana\u4f7f\u7528\\r\\n### \u51c6\u5907\u73af\u5883\\r\\n1. Kibana: \u7528\u6765\u63d0\u4f9b\u7ed9\u4e1a\u52a1\u505aUI\u5c55\u793a\\r\\n2. ElasticSearch: \u7528\u6765\u505akibana\u5143\u6570\u636e\u5b58\u50a8+\u67e5\u8be2\u7f13\u5b58\u7b49\u9ad8\u7ea7\u7279\u6027\\r\\n3. ClickHouse: \u771f\u5b9e\u5b58\u65e5\u5fd7\u6570\u636e\u7684\u5b58\u50a8\\r\\n4. CKibana: \u63d0\u4f9bProxy\u7b49\u9ad8\u7ea7\u529f\u80fd\uff0c\u5b9e\u73b0\u8ba9\u7528\u6237\u76f4\u63a5\u5728\u539f\u751fKibana\u4e0a\u67e5\u8be2ClickHouse\u6570\u636e\\r\\n\\r\\n### \u5f00\u59cb\u4f7f\u7528\\r\\n#### \u542f\u52a8CKibana\\r\\n\u914d\u7f6eElasticSearch\u76f8\u5173\u4fe1\u606f\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana03.png)\\r\\n\\r\\n\u542f\u52a8\uff0c\u9700\u8981JDK17+\\r\\n\\r\\n`java -jar ckibana.jar`\\r\\n\\r\\n#### \u4fee\u6539Kibana\\r\\n\u4fee\u6539Kibana\u914d\u7f6e\uff0c\u5c06ElasticSearch\u5730\u5740\u6539\u4e3aCKibana\u5730\u5740\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana04.png)\\r\\n\\r\\n\u6b64\u65f6\uff0cKibana\u529f\u80fd\u5b8c\u5168\u53ef\u7528\uff0c\u53ef\u4ee5\u5c06CKibana\u5f53\u6210\u4e00\u4e2aElasticSearch Proxy\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana05.png)\\r\\n\\r\\n#### \u914d\u7f6eClickHouse\u8fde\u63a5\u4fe1\u606f\u4e0e\u7d22\u5f15\u767d\u540d\u5355\\r\\n\\r\\n\u8bbe\u7f6eClickHouse\u8fde\u63a5\u4fe1\u606f:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateCk?url=ckUrl&user=default&pass=default&defaultCkDatabase=ops\'`\\r\\n\\r\\n#### \u914d\u7f6e\u9700\u8981\u5207\u6362\u5230ClickHouse\u7684index\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateWhiteIndexList?list=index1,index2\'`\\r\\n\\r\\nClickHouse\u5b57\u6bb5\u8ddfElasticSearch\u5b57\u6bb5\u7684\u5173\u7cfb\\r\\n\\r\\n| es\u7c7b\u578b | ck\u7c7b\u578b |\\r\\n|----------|---------|\\r\\n| keyword | String |\\r\\n| text | String |\\r\\n| ip | String(\u4ee3\u7406\u81ea\u52a8\u8bc6\u522bipv4\u548cipv6) |\\r\\n| integer | Int32 |\\r\\n| long | Int64 |\\r\\n| float | Float32 |\\r\\n| double | Float64 |\\r\\n\\r\\n#### \u521b\u5efaindex pattern\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana06.png)\\r\\n\\r\\n\u6ce8\u610f\u70b9:\\r\\n1. \u9996\u5148\u786e\u5b9a\u8f93\u5165\u7684index pattern\u8ddfClickHouse\u8868\u662f\u5426\u4e00\u81f4\uff0cindex pattern\u8ddf\u8ddfClickHouse\u8868\u540d\u662f\u7cbe\u786e\u5339\u914d\\r\\n2. \u5982\u679c\u4e0d\u80fd\u6652\u9009\u5230\u5bf9\u5e94\u7684\u8868\u683c\uff0c\u53ef\u4ee5\u57fa\u4e8eCKibana\u65e5\u5fd7\u4e2d\u7684sql\u6392\u67e5\uff0c\u662f\u5426\u53ef\u67e5\u8be2\u5230\u5bf9\u5e94\u7684\u8868\\r\\n3. \u6ce8\u610f\u65f6\u95f4\u5b57\u6bb5\uff0c\u5426\u5219\u4f1a\u7b5b\u9009\u4e0d\u4e86\u65f6\u95f4\u5b57\u6bb5\uff0c\u7b5b\u9009\u903b\u8f91\u5982\u4e0b:\\r\\n- \u5b57\u6bb5\u4e3aDate\u7c7b\u578b\uff0c\u6bd4\u5982DateTime64\u7c7b\u578b\uff0c\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u7c7b\u578b\\r\\n- \u5b57\u6bb5\u540d\u4e2d\u5305\u542btime\uff0c\u6bd4\u5982\uff08@timestamp UInt64\uff09\uff0c\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u7c7b\u578b\\r\\n\\r\\n\u8fd9\u4e24\u79cd\u60c5\u51b5\u4e0b\u6ee1\u8db3\u4efb\u610f\u4e00\u4e2a\uff0c\u5b57\u6bb5\u90fd\u4f1a\u88ab\u8ba4\u4e3a\u662f\u65f6\u95f4\u5b57\u6bb5\uff0c\u5982\u679c\u9009\u62e9\u4e0d\u4e86\u65f6\u95f4\u5b57\u6bb5\uff0c\u9700\u8981\u68c0\u67e5\u4e0bClickHouse\u8868\u4e2d\u5b57\u6bb5\u662f\u5426\u7b26\u5408\u5339\u914d\u903b\u8f91\u3002\\r\\n#### \u5f00\u59cb\u4f7f\u7528\\r\\n\u914d\u7f6e\u5b8c\u6210index pattern\u540e\uff0c\u5c31\u53ef\u4ee5\u6b63\u5e38\u7684\u4f7f\u7528Kibana\u7684\u56fe\u8868\u529f\u80fd\u4e86\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana07.png)\\r\\n\\r\\n### \u9ad8\u7ea7\u529f\u80fd\\r\\n#### \u91c7\u6837\\r\\nKibana\u7684\u56fe\u8868\u5927\u90e8\u5206\u90fd\u662f\u5173\u6ce8\u8d8b\u52bf\uff0c\u5f53\u547d\u4e2d\u7ed3\u679c\u96c6\u592a\u5927\u65f6\u5019\uff0c\u6d88\u8017\u7684ClickHouse\u7684\u8d44\u6e90\u4e5f\u8f83\u591a\u3002\u6211\u4eec\u63d0\u4f9b\u4e86\u91c7\u6837\u529f\u80fd\uff0c\u5728\u6570\u636e\u96c6\u8f83\u5927\u7684\u65f6\u5019\uff0c\u80fd\u591f\u4fdd\u969c\u56fe\u8868\u8d8b\u52bf\u8ddf\u5b9e\u9645\u7684\u5dee\u4e0d\u591a\uff0c\u800c\u4e14\u53ef\u4ee5\u5f88\u597d\u7684\u63a7\u5236ClickHouse\u7684\u8d44\u6e90\u4f7f\u7528\u3002\\r\\n\\r\\n`- \u6ce8: \u5bf9\u5e94\u7684ClickHouse\u7684\u8868\u9700\u8981\u6309\u7167ck\u7684\u91c7\u6837\u8868\u521b\u5efa [clickhouse sample](https://clickhouse.com/docs/en/sql-reference/statements/select/sample)\\r\\n- \u5982\u679c\u91c7\u6837\u9608\u503c\u8bbe\u7f6e\u7684\u8fc7\u5c0f\uff0c\u4f1a\u5bfc\u81f4\u8fd8\u539f\u51fa\u6765\u7684\u503c\u8ddf\u771f\u5b9e\u503c\u5dee\u5f02\u8f83\u5927\uff0c\u6211\u4eec\u7ebf\u4e0a\u8bbe\u7f6e\u7684\u91c7\u6837\u503c\u4e3a500w`\\r\\n\\r\\n\u5f00\u542f\u91c7\u6837\u9700\u8981\u4e24\u6b65:\\r\\n1. \u914d\u7f6e\u9700\u8981\u91c7\u6837\u7684\u8868\\r\\n2. \u66f4\u65b0\u91c7\u6837\u9608\u503c\uff0c\u5f53\u547d\u4e2d\u7ed3\u679c\u96c6\u8d85\u8fc7\u9608\u503c\u65f6\uff0c\u4f1a\u89e6\u53d1\u91c7\u6837\\r\\n\\r\\n\u91c7\u6837\u903b\u8f91 `Math.max(0.01, Double.parseDouble(String.format(\\"%.5f\\", sampleParam.getSampleCountMaxThreshold() * 1.00 / sampleParam.getSampleTotalCount())))`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana08.png)\\r\\n\\r\\n\u5c55\u5f00\u6d41\u91cf\u5668\u7684\u54cd\u5e94\u7ed3\u679c\uff0c\u53ef\u4ee5\u770b\u5230\u91c7\u6837\u503c\\r\\n\\r\\n#### \u65f6\u95f4round+\u7f13\u5b58\\r\\n\u5f53\u7ebf\u4e0a\u51fa\u73b0\u4e00\u4e2a\u6545\u969c\u65f6\u5019\uff0c\u6709\u5927\u91cf\u7684sre\u540c\u5b66\u8ddf\u4e1a\u52a1\u540c\u5b66\u90fd\u9700\u8981\u901a\u8fc7nginx\u65e5\u5fd7\u6765\u67e5\u8be2\u95ee\u9898\uff0c\u800c\u4e14\u67e5\u8be2\u7684\u6761\u4ef6\u57fa\u672c\u90fd\u76f8\u540c\uff0c\u4f46\u662fClickHouse\u4e3a\u4e86\u4f7f\u5f97\u67e5\u8be2\u6027\u80fd\u6700\u597d\uff0c\u800c\u5c3d\u91cf\u7684\u4f7f\u7528\u66f4\u591a\u7684cpu\u6765\u53c2\u52a0\u8ba1\u7b97\uff0c\u8fd9\u6837\u5bfc\u81f4\u8fd9\u4e9b\u573a\u666f\u4e0bClickHouse\u7684cpu\u4f1a\u76f4\u63a5\u8dd1\u6ee1\u3002\u4e14\u5728\u540c\u5b66\u4eec\u7684\u4e0d\u65adretry\u4e0b\uff0ccpu\u4e0d\u80fd\u6062\u590d\u3002\\r\\n\\r\\n\u6240\u4ee5\u6211\u4eec\u505a\u4e86\u4e00\u4e2a\u65f6\u95f4round+\u7f13\u5b58\u529f\u80fd\u3002\\r\\n\\r\\n\u65f6\u95f4round: \u6bd4\u5982\u8bbe\u7f6eround\u4e3a20s\uff0c\u5219\u67e5\u8be2\u65f6\u95f4\u6761\u4ef6\u4e2d\u7684s\u7684\u7cbe\u5ea6\u4f1a`%20`\uff0c\u76f8\u5f53\u4e8e\u6700\u591a\u5ef6\u8fdf\u4e8620s\u6765\u67e5\u8be2\u6570\u636e\u3002\\r\\n\\r\\n\u6709\u4e86\u65f6\u95f4round\u540e\uff0c\u5219\u5927\u91cf\u7684\u67e5\u8be2\u6761\u4ef6\u5c31\u4e00\u81f4\u4e86\uff0c\u8fd9\u4e2a\u65f6\u5019\u53ea\u9700\u8981\u5f00\u542f\u7ed3\u679c\u7f13\u5b58\uff0c\u5219\u5c31\u53ef\u4ee5\u5f88\u597d\u7684\u7f13\u89e3ClickHouse\u7684\u538b\u529b\u3002\\r\\n\\r\\n\u8bbe\u7f6e\u65f6\u95f4round:\\r\\n`curl --location --request POST \'localhost:8080/config/updateRoundAbleMinPeriod?roundAbleMinPeriod=20000\' \u5355\u4f4dms`\\r\\n\\r\\n\u8bbe\u7f6e\u6253\u5f00\u7f13\u5b58:\\r\\n`curl --location --request POST \'localhost:8080/config/updateUseCache?useCache=true\'`\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana09.png)\\r\\n\\r\\n\u662f\u5426\u547d\u4e2d\u7f13\u5b58\uff0c\u5728\u54cd\u5e94\u7ed3\u6784\u91cc\u9762\u53ef\u4ee5\u770b\u5230\\r\\n\\r\\n#### \u67e5\u8be2\u76d1\u63a7 + \u9ed1\u540d\u5355\\r\\nKibana\u7684\u67e5\u8be2\u8bed\u6cd5\u76f8\u5bf9\u6bd4\u8f83\u968f\u610f\uff0c\u4e00\u4e9b\u67e5\u8be2\u5bf9ClickHouse\u7684\u8d44\u6e90\u6d88\u8017\u4f1a\u6bd4\u8f83\u5927\uff0c\u6240\u4ee5\u6211\u4eec\u5c06\u6240\u6709\u7684\u67e5\u8be2\u4ee5\u53ca\u8017\u65f6\u90fd\u505a\u4e86\u76d1\u63a7\uff0c\u8fd9\u6837\u53ef\u4ee5\u6bd4\u8f83\u65b9\u4fbf\u7684\u67e5\u770b\u90fd\u505a\u4e86\u54ea\u4e9b\u67e5\u8be2\uff0c\u8bbe\u7f6e\u53ef\u4ee5\u5bf9\u67e5\u8be2\u505a\u9ed1\u540d\u5355\u7684\u63a7\u5236\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u9650\u5236\u4e0d\u592a\u53cb\u597d\u7684\u67e5\u8be2\\r\\n\\r\\n\u5f00\u542f\u76d1\u63a7:\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateEnableMonitoring?enableMonitoring=true\'`\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana10.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe\uff0c\u6211\u4eec\u53ef\u4ee5\u76d1\u63a7\u6bcf\u4e2a\u67e5\u8be2\u7684\u8be6\u60c5\uff0c\u8bed\u6cd5\u4ee5\u53ca\u8017\u65f6\u3002\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana11.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe\uff0c\u53ef\u4ee5\u57fa\u4e8ekibana\u56fe\u8868\u529f\u80fd\uff0c\u505a\u66f4\u76f4\u89c2\u7684\u5206\u6790\u3002\\r\\n\\r\\n#### \u67e5\u8be2\u65f6\u95f4\u9650\u5236\\r\\n\u5f88\u591a\u65f6\u5019\uff0c\u6709\u4eba\u60f3\u8981\u67e5\u770b\u67d0\u4e2a\u6761\u4ef6\u6700\u8fd1\u7684\u8d8b\u52bf\uff0c\u76f4\u63a5\u67e5\u8be2\u6700\u8fd17\u5929\u7b49\u7b49\uff0c\u8fd9\u6837\u4f1a\u5bfc\u81f4\u8d44\u6e90\u6d88\u8017\u6bd4\u8f83\u5927\uff0c\u6240\u4ee5CKibana\u652f\u6301\u4e86\u6700\u957f\u65f6\u95f4\u67e5\u8be2\u8303\u56f4\uff0c\u6765\u9650\u5236\u4f7f\u7528\u3002\\r\\n\\r\\n`curl --location --request POST \'localhost:8080/config/updateMaxTimeRange?maxTimeRange=864000000\' \u5355\u4f4dms`\\r\\n\\r\\n#### keyword\u67e5\u8be2\\r\\n\u4e3a\u4e86\u66f4\u597d\u7684\u5339\u914dElasticSearch\u7684\u4f7f\u7528\u4e60\u60ef\u3002 `field.keyword` \u67e5\u8be2\u76f8\u5f53\u4e8e\u5bf9field\u7684\u7cbe\u786e\u67e5\u8be2\uff0c\u5426\u5219\u4e3a\u6a21\u7cca\u641c\u7d22\\r\\n\\r\\n\u6bd4\u5982 `host.keyword:\\"www.baidu.com\\"` \u6362\u6210sql\u4e3a: `host=\\"www.baidu.com\\"`\\r\\n\\r\\n#### Discover\u6027\u80fd\u4f18\u5316\\r\\nClickHouse\u7684\u5f3a\u9879\u5728AP\u573a\u666f,\u5f53\u67e5\u8be2\u65f6\u95f4\u8de8\u5ea6\u6bd4\u8f83\u5927\u65f6,\u4f20\u7edf\u7684SQL:`select x from table where x order by time desc limit 10` \u8fd9\u79cd\u65b9\u5f0f\u4f1a\u5bfc\u81f4\u67e5\u8be2\u6027\u80fd\u975e\u5e38\u4f4e,\u800c\u4e14\u6d88\u8017\u5927\u91cf\u7684ClickHouse\u8d44\u6e90\u3002\\r\\n\u9488\u5bf9\u8fd9\u79cd\u5e26\u8d8b\u52bf\u56fe+\u660e\u7ec6\u7684\u573a\u666f\u6211\u4eec\u505a\u4e86\u6027\u80fd\u4f18\u5316,\u5145\u5206\u53d1\u6325ClickHouse\u7684AP\u80fd\u529b\u3002\u4f1a\u5c06\u6267\u884c\u62c6\u5206\u4e3a\u4e24\u6b65:\\r\\n1. \u57fa\u4e8eCk \u805a\u5408\u80fd\u529b,\u67e5\u8be2\u51fa\u6bcf\u5206\u949f\u6ee1\u8db3\u6761\u4ef6\u7684\u65e5\u5fd7\u6570\u91cf\\r\\n2. \u57fa\u4e8e\u6bcf\u5206\u949f\u7684\u65e5\u5fd7\u6570\u91cf\u81ea\u52a8\u88c1\u526a\u65e5\u5fd7\u641c\u7d22\u7684\u65f6\u95f4\u8de8\u5ea6,\u6bd4\u5982\u4e00\u5206\u949f\u5185\u7684\u65e5\u5fd7\u6761\u6570\u5c31\u6ee1\u8db3\u4e86\u8981\u6c42,\u5219\u67e5\u8be2\u660e\u7ec6\u65f6\u81ea\u52a8\u7f29\u51cf\u52301\u5206\u949f\u7684\u8de8\u5ea6\u3002\\r\\n\\r\\n\u57fa\u4e8e\u67e5\u8be2\u65f6\u95f4\u7684\u81ea\u52a8\u88c1\u526a\u529f\u80fd,\u4f1a\u4f7f\u5f97Discover\u7248\u672c\u67e5\u8be2\u6027\u80fd\u6709\u8d28\u7684\u63d0\u5347\u4e14\u5bf9ClickHouse\u7684cpu\u5360\u7528\u6709\u5f88\u5927\u7684\u4f18\u5316\u3002\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana15.png)\\r\\n\\r\\n\u5982\u4e0a\u56fe,\u4e00\u4e2aDiscover\u67e5\u8be2\u62c6\u6210\u4e863\u4e2asql:\\r\\n1. \u8ba1\u7b97\u662f\u5426\u9700\u8981\u91c7\u6837\\r\\n2. \u7edf\u8ba1\u6bcf\u5206\u949f\u7684\u65e5\u5fd7\u6570\\r\\n3. \u81ea\u52a8\u88c1\u526a\u67e5\u8be2\u65f6\u95f4\u8303\u56f4\\r\\n\\r\\n## 4 Nginx\u65e5\u5fd7\u76f8\u5173\u4f7f\u7528\u6848\u4f8b\\r\\n\\r\\n#### Clickhouse\u8868\u7ed3\u6784\\r\\n\\r\\n``` CREATE TABLE bjops.ops_bjtlblog_local\\r\\n(\\r\\n`@timestamp` UInt64,\\r\\n`X-Request-Id` String,\\r\\n`addr` String,\\r\\n`ap_area` String,\\r\\n`byte` Int64,\\r\\n`bytes_recv` Int64,\\r\\n`Bbtes_sent` Int64,\\r\\n`content-type` String,\\r\\n`content_length` Int64,\\r\\n`crp` String,\\r\\n`csi` String,\\r\\n`cspanid` String,\\r\\n`difftime` Int32,\\r\\n`error_body` String,\\r\\n`error_client` String,\\r\\n`error_host` String,\\r\\n`error_request` String,\\r\\n`error_server` String,\\r\\n`error_upstream` String,\\r\\n`forwarded` String,\\r\\n`host` String,\\r\\n`hostname` String,\\r\\n`idc` LowCardinality(String),\\r\\n`index_name` LowCardinality(String),\\r\\n`ip` String,\\r\\n`logant_idc` LowCardinality(String),\\r\\n`logant_type` LowCardinality(String),\\r\\n`origin_ip` String,\\r\\n`referer` String,\\r\\n`remote_port` String,\\r\\n`request_method` LowCardinality(String),\\r\\n`request_time` Int64,\\r\\n`request_uri` String,\\r\\n`request_url` String,\\r\\n`scheme` String,\\r\\n`server_addr` String,\\r\\n`server_name` String,\\r\\n`server_port` String,\\r\\n`server_protocol` String,\\r\\n`source` String,\\r\\n`sspanid` String,\\r\\n`st` String,\\r\\n`status` Int32,\\r\\n`timeuse` Float64,\\r\\n`traceid` String,\\r\\n`type` String,\\r\\n`ua` String,\\r\\n`up_addr` String,\\r\\n`up_status` Int32,\\r\\n`upstream_name` String,\\r\\n`upstream_response_time` Int32,\\r\\n`worker_pid` String,\\r\\n`ck_assembly_extension` String,\\r\\n`bytes_sent` Int64,\\r\\nINDEX timestamp_index `@timestamp` TYPE minmax GRANULARITY 8192\\r\\n)\\r\\nENGINE = MergeTree\\r\\nPARTITION BY (toYYYYMMDD(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')), toHour(toDateTime(`@timestamp` / 1000, \'Asia/Shanghai\')))\\r\\nORDER BY (host, request_uri, intHash64(`@timestamp`))\\r\\nSAMPLE BY intHash64(`@timestamp`)\\r\\nSETTINGS in_memory_parts_enable_wal = 0, index_granularity = 8192\\r\\n```\\r\\n\\r\\n\u5207\u8bb0\u5c06`host`\u653e\u7f6e\u5728order by\u7684\u7b2c\u4e00\u4f4d\u3002\u56e0\u4e3a\u67e5Nginx\u65e5\u5fd7\u5927\u591a\u6570\u60c5\u51b5\u4e0b\u9700\u8981\u6839\u636e`host`\u67e5\u8be2\u3002\\r\\n\\r\\n#### CKibana\u6240\u6709\u914d\u7f6e\\r\\n```\\r\\n{\\r\\n\\t\\"Proxy\\": {\\r\\n\\t\\t\\"ck\\": {\\r\\n\\t\\t\\t\\"url\\": \\"ip:6321\\",\\r\\n\\t\\t\\t\\"user\\": \\"user\\",\\r\\n\\t\\t\\t\\"pass\\": \\"pass\\",\\r\\n\\t\\t\\t\\"defaultCkDatabase\\": \\"db\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"es\\": {\\r\\n\\t\\t\\t\\"host\\": \\"ip:31940\\"\\r\\n\\t\\t},\\r\\n\\t\\t\\"roundAbleMinPeriod\\": 120000,\\r\\n\\t\\t\\"round\\": 20000,\\r\\n\\t\\t\\"maxTimeRange\\": 86400000,\\r\\n\\t\\t\\"blackIndexList\\": null,\\r\\n\\t\\t\\"whiteIndexList\\": [\\"ops_bjtlblog_all\\", \\"other_index_all\\"],\\r\\n\\t\\t\\"enableMonitoring\\": true\\r\\n\\t},\\r\\n\\t\\"query\\": {\\r\\n\\t\\t\\"sampleIndexPatterns\\": [\\"ops_bjtlblog_all\\"],\\r\\n\\t\\t\\"sampleCountMaxThreshold\\": 5000000,\\r\\n\\t\\t\\"useCache\\": true,\\r\\n\\t\\t\\"maxResultRow\\": 30000\\r\\n\\t},\\r\\n\\t\\"threadPool\\": {\\r\\n\\t\\t\\"msearchProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t},\\r\\n\\t\\t\\"commonProperty\\": {\\r\\n\\t\\t\\t\\"coreSize\\": 4,\\r\\n\\t\\t\\t\\"queueSize\\": 10000\\r\\n\\t\\t}\\r\\n\\t},\\r\\n\\t\\"defaultShard\\": 2\\r\\n}\\r\\n```\\r\\n\\r\\n#### \u7ebf\u4e0a\u6548\u679c\u56fe\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana12.png)\\r\\n\\r\\n![Untitled](https://oss.17usoft.com/infra-github/ckibana13.png)\\r\\n\\r\\n## 4 \u6536\u76ca\\r\\n\u622a\u6b62\u5230\u76ee\u524d\uff0c\u501f\u52a9CKibana\u7684\u6838\u5fc3\u80fd\u529b\uff0c\u6211\u4eec\u5df2\u7ecf\u5b8c\u6210\u4e86\u6240\u6709Nginx\u8bbf\u95ee\u65e5\u5fd7\u548c\u4e1a\u52a1\u81ea\u5b9a\u4e49\u65e5\u5fd7\u5168\u91cf\u4eceElasticSearch\u5207\u6362\u5230Clickhouse\uff0c\u5b58\u50a8\u6210\u672c\u964d\u4e3a\u539f\u6765\u768430%\u4ee5\u5185\u3002\u540c\u65f6\u57fa\u4e8eClickHouse\u7684\u5206\u5e03\u5f0f\u8868\u80fd\u529b\u53ef\u4ee5\u505a\u5230\u5373\u4f7f\u5728\u5355\u4e2d\u5fc3\u6545\u969c\u65f6\u65e5\u5fd7\u67e5\u8be2\u4e5f\u4e0d\u53d7\u4efb\u4f55\u5f71\u54cd\uff0c\u65e0\u8bba\u5728\u6210\u672c\u8fd8\u662f\u7a33\u5b9a\u6027\u65b9\u9762\u76f8\u6bd4ElasticSearch\u90fd\u6709\u4e86\u8f83\u5927\u7684\u63d0\u5347\uff0c\u5e76\u6cbf\u7528\u4e86\u7075\u6d3b\u5f3a\u5927\u7684\u539f\u751fKibana\u4f5c\u4e3a\u53ef\u89c6\u5316\u5de5\u5177\uff0c\u53ef\u4ee5\u8ba9\u7528\u6237\u7ee7\u7eed\u4f7f\u7528\u81ea\u5df1\u4e60\u60ef\u7684Kibana\u9762\u677f\u4fbf\u6377\u5730\u8fdb\u884c\u65e5\u5fd7\u67e5\u8be2\u548c\u5206\u6790\u3002\\r\\n\\r\\n## 5 \u6700\u540e\\r\\n\u5728\u6211\u4eec\u65e5\u5fd7\u7cfb\u7edf\u4e0d\u65ad\u6f14\u8fdb\u7684\u8fc7\u7a0b\u4e2d\u79bb\u4e0d\u5f00\u4f17\u591a\u4f18\u79c0\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u73b0\u5728\u6211\u4eec\u4e5f\u5c06CKibana (ClickHouse Proxy for Kibana & Clickhouse visualization tool) \u6b63\u5f0f\u5f00\u6e90\u4e86\uff0c\u5e0c\u671b\u80fd\u591f\u5e2e\u52a9\u5230\u66f4\u591a\u7684\u4eba\u540c\u65f6\u4e5f\u671f\u671b\u80fd\u8ddf\u793e\u533a\u4e00\u8d77\u5171\u5efa\u4e0d\u65ad\u5b8c\u5584\u529f\u80fd\u4e0e\u7279\u6027\uff0c\u5145\u5206\u53d1\u6325\u65e5\u5fd7\u573a\u666f\u4e0bKibana\u53ef\u89c6\u5316+ClickHouse\u5b58\u50a8\u8fd9\u5bf9\u7ec4\u5408\u7684\u5a01\u529b\uff0c\u8ba9\u5927\u5bb6\u7528\u8d77\u6765\u66f4\u52a0\u4e1d\u6ed1\uff0c\u6b22\u8fceStar\u548c\u7ed9\u6211\u4eec\u63d0ISSUE\u3002\\r\\n\\r\\n\u9879\u76eeGithub\u5730\u5740: https://github.com/TongchengOpenSource/ckibana"}]}')}}]); \ No newline at end of file diff --git a/assets/js/9289a52b.37a3543c.js b/assets/js/9289a52b.37a3543c.js new file mode 100644 index 0000000..545469a --- /dev/null +++ b/assets/js/9289a52b.37a3543c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[6575],{8322:function(a){a.exports=JSON.parse('{"/ckibana-docs/zh/blog/tags/c-kibana":{"allTagsPath":"/ckibana-docs/zh/blog/tags","slug":"/ckibana-docs/zh/blog/tags/c-kibana","name":"CKibana","count":2,"permalink":"/ckibana-docs/zh/blog/tags/c-kibana"}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.d77d7265.js b/assets/js/935f2afb.d77d7265.js new file mode 100644 index 0000000..5d039b6 --- /dev/null +++ b/assets/js/935f2afb.d77d7265.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[53],{1109:function(e){e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"usercase","href":"/ckibana-docs/zh/docs/UserCase","docId":"UserCase"},{"type":"link","label":"api-docs","href":"/ckibana-docs/zh/docs/api-docs","docId":"api-docs"},{"type":"link","label":"troubleshooting","href":"/ckibana-docs/zh/docs/troubleshooting","docId":"troubleshooting"},{"type":"link","label":"\u7b80\u4ecb","href":"/ckibana-docs/zh/docs/","docId":"index"}]},"docs":{"api-docs":{"id":"api-docs","title":"api-docs","description":"application\u6587\u4ef6","sidebar":"tutorialSidebar"},"index":{"id":"index","title":"\u7b80\u4ecb","description":"License","sidebar":"tutorialSidebar"},"troubleshooting":{"id":"troubleshooting","title":"troubleshooting","description":"1\u3001CKibana\u542f\u52a8\u6210\u529f\u4e14\u6ca1\u62a5\u9519\uff0c\u4f46\u662f\u8bbf\u95eekibana\u51fa\u73b0\u5982\u4e0b\u9519\u8bef","sidebar":"tutorialSidebar"},"UserCase":{"id":"UserCase","title":"usercase","description":"1\u3001\u8bbf\u95ee\u539f\u751fkibana","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/9dd4daa8.2af42fb0.js b/assets/js/9dd4daa8.2af42fb0.js new file mode 100644 index 0000000..126c381 --- /dev/null +++ b/assets/js/9dd4daa8.2af42fb0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[902],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return b}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),l=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),f=l(n),b=a,d=f["".concat(u,".").concat(b)]||f[b]||p[b]||o;return n?r.createElement(d,i(i({ref:t},s),{},{components:n})):r.createElement(d,i({ref:t},s))}));function b(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=f;var c={};for(var u in t)hasOwnProperty.call(t,u)&&(c[u]=t[u]);c.originalType=e,c.mdxType="string"==typeof e?e:a,i[1]=c;for(var l=2;l0&&r.createElement(s,{years:o})))}}}]); \ No newline at end of file diff --git a/assets/js/a6aa9e1f.7fe95d09.js b/assets/js/a6aa9e1f.7fe95d09.js new file mode 100644 index 0000000..94333ae --- /dev/null +++ b/assets/js/a6aa9e1f.7fe95d09.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[3089],{6663:function(e,t,a){a.d(t,{Z:function(){return s}});var l=a(7294),n=a(5999);function r(e){return l.createElement("svg",{style:{display:"inline-block",width:"16px",margin:"10px 5px -2px 0 "},width:"17",height:"16",viewBox:"0 0 17 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},l.createElement("path",{d:"M8.75 0C4.19409 0 0.5 3.675 0.5 8.20357C0.5 11.8286 2.86451 14.9 6.14241 15.9857C6.19397 15.9964 6.23817 16 6.28237 16C6.58806 16 6.70592 15.7821 6.70592 15.5929C6.70592 15.3964 6.69855 14.8821 6.69487 14.1964C6.38549 14.2643 6.10926 14.2929 5.8625 14.2929C4.27511 14.2929 3.91417 13.0964 3.91417 13.0964C3.5385 12.15 2.9971 11.8964 2.9971 11.8964C2.27891 11.4071 2.99342 11.3929 3.04866 11.3929H3.05234C3.88103 11.4643 4.31563 12.2429 4.31563 12.2429C4.72813 12.9429 5.28058 13.1393 5.77411 13.1393C6.16083 13.1393 6.51071 13.0179 6.71696 12.925C6.79063 12.3964 7.00424 12.0357 7.23996 11.8286C5.40949 11.6214 3.48326 10.9179 3.48326 7.775C3.48326 6.87857 3.80368 6.14643 4.33036 5.575C4.24565 5.36786 3.96205 4.53214 4.41138 3.40357C4.41138 3.40357 4.47031 3.38571 4.59554 3.38571C4.89386 3.38571 5.56786 3.49643 6.68013 4.24643C7.3394 4.06429 8.04286 3.975 8.74632 3.97143C9.44609 3.975 10.1532 4.06429 10.8125 4.24643C11.9248 3.49643 12.5988 3.38571 12.8971 3.38571C13.0223 3.38571 13.0813 3.40357 13.0813 3.40357C13.5306 4.53214 13.247 5.36786 13.1623 5.575C13.689 6.15 14.0094 6.88214 14.0094 7.775C14.0094 10.925 12.0795 11.6179 10.2416 11.8214C10.5363 12.075 10.8015 12.575 10.8015 13.3393C10.8015 14.4357 10.7904 15.3214 10.7904 15.5893C10.7904 15.7821 10.9046 16 11.2103 16C11.2545 16 11.306 15.9964 11.3576 15.9857C14.6392 14.9 17 11.825 17 8.20357C17 3.675 13.3059 0 8.75 0Z",fill:"#92A0B3"}))}var i=a(3810);function s(e){var t=e.editUrl;return l.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:i.kM.common.editThisPage},l.createElement(r,null),l.createElement(n.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},7774:function(e,t,a){a.d(t,{Z:function(){return c}});var l=a(7294),n=a(6010),r=a(9960),i="tag_WK-t",s="tagRegular_LXbV",o="tagWithCount_S5Zl";var c=function(e){var t,a=e.permalink,c=e.name,m=e.count;return l.createElement(r.default,{href:a,className:(0,n.Z)(i,(t={},t[s]=!m,t[o]=m,t))},c,m&&l.createElement("span",null,m))}},62:function(e,t,a){a.d(t,{Z:function(){return c}});var l=a(7294),n=a(6010),r=a(5999),i=a(7774),s="tags_NBRY",o="tag_F03v";function c(e){var t=e.tags;return l.createElement(l.Fragment,null,l.createElement("b",null,l.createElement(r.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),l.createElement("ul",{className:(0,n.Z)(s,"padding--none","margin-left--sm")},t.map((function(e){var t=e.label,a=e.permalink;return l.createElement("li",{key:a,className:o},l.createElement(i.Z,{name:t,permalink:a}))}))))}},7663:function(e,t,a){a.d(t,{Z:function(){return f}});var l=a(3366),n=a(7294),r=a(6010),i=a(7019),s=a(9960),o="sidebar_q+wC",c="sidebarItemTitle_9G5K",m="sidebarItemList_6T4b",u="sidebarItem_cjdF",d="sidebarItemLink_zyXk",p="sidebarItemLinkActive_wcJs",g=a(5999);function v(e){var t=e.sidebar;return 0===t.items.length?null:n.createElement("nav",{className:(0,r.Z)(o,"thin-scrollbar"),"aria-label":(0,g.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},n.createElement("div",{className:(0,r.Z)(c,"margin-bottom--md")},t.title),n.createElement("ul",{className:m},t.items.map((function(e){return n.createElement("li",{key:e.permalink,className:u},n.createElement(s.default,{isNavLink:!0,to:e.permalink,className:d,activeClassName:p},e.title))}))))}var h={fontSize:"13px",width:"100%",whiteSpace:"nowrap",textOverflow:"ellipsis",display:"inline-block",lineHeight:"20px",height:"20px"};var b=function(e){var t=e.hashTagObj;return n.createElement("aside",{className:"col col--2"},n.createElement("h3",{style:{fontFamily:"New York"}},"All tags"),n.createElement("section",null,Object.values(t).map((function(e){return n.createElement("div",{key:e.permalink},n.createElement(s.default,{href:e.permalink,style:h,className:"tags-link"},e.name,e.count&&n.createElement("span",null,"\u2003[",e.count,"]")))}))))},E=["blogTags","items","sidebar","toc","children"];var f=function(e){var t=e.blogTags,a=void 0===t?"":t,s=e.items,o=e.sidebar,c=e.toc,m=e.children,u=(0,l.Z)(e,E),d=o&&o.items.length>0,p={};if(a){var g=JSON.parse(JSON.stringify(a||{}));Object.keys(g||{}).forEach((function(e){var t,a=null==g?void 0:g[e];p[a.name]={name:a.name,count:null==a||null==(t=a.items)?void 0:t.length,permalink:a.permalink}}))}else null==s||s.forEach((function(e){var t,a;((null==e||null==(t=e.content)||null==(a=t.metadata)?void 0:a.tags)||[]).forEach((function(e){p[e.label]?++p[e.label].count:p[e.label]={name:e.label,count:1,permalink:e.permalink}}))}));return n.createElement(i.Z,u,n.createElement("div",{className:"container margin-vert--lg",style:{maxWidth:"100%"}},n.createElement("div",{className:"row"},d&&s&&n.createElement("aside",{className:"col col--3"},n.createElement(v,{sidebar:o})),n.createElement("main",{className:(0,r.Z)("col",{"col--7":d&&s,"col--9 col--offset-1":!d,"col--10":d&&!s,"col--12":!c&&!s}),itemScope:!0,itemType:"https://schema.org/Blog"},m),d&&s&&n.createElement(b,{hashTagObj:p}),c&&n.createElement("div",{className:"col col--2"},c))))}},7638:function(e,t,a){a.r(t),a.d(t,{default:function(){return u}});var l=a(7294),n=a(2263),r=a(7663),i=a(1916),s=a(9960),o=a(5999);var c=function(e){var t=e.metadata,a=t.previousPage,n=t.nextPage;return l.createElement("nav",{className:"pagination-nav","aria-label":(0,o.I)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"})},l.createElement("div",{className:"pagination-nav__item"},a&&l.createElement(s.default,{className:"pagination-nav__link",to:a},l.createElement("div",{className:"pagination-nav__label"},"\xab"," ",l.createElement(o.Z,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)"},"Newer Entries")))),l.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},n&&l.createElement(s.default,{className:"pagination-nav__link",to:n},l.createElement("div",{className:"pagination-nav__label"},l.createElement(o.Z,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)"},"Older Entries")," ","\xbb"))))},m=a(3810);var u=function(e){var t=e.metadata,a=e.items,s=e.sidebar,o=(0,n.default)().siteConfig.title,u=t.blogDescription,d=t.blogTitle,p="/"===t.permalink?o:d;return l.createElement(r.Z,{title:p,description:u,wrapperClassName:m.kM.wrapper.blogPages,pageClassName:m.kM.page.blogListPage,searchMetadata:{tag:"blog_posts_list"},items:a,sidebar:s},a.map((function(e){var t=e.content;return l.createElement(i.Z,{key:t.metadata.permalink,frontMatter:t.frontMatter,assets:t.assets,metadata:t.metadata,truncated:t.metadata.truncated},l.createElement(t,null))})),l.createElement(c,{metadata:t}))}},1916:function(e,t,a){a.d(t,{Z:function(){return N}});var l=a(7294),n=a(6010),r=a(3905),i=a(5999),s=a(9960),o=a(4996),c=a(3810),m=a(8483),u=a(6663),d="blogPostTitle_RC3s",p="blogPostData_A2Le",g="blogPostDetailsFull_2lop",v=a(62),h="image_9q7L";var b=function(e){var t=e.author,a=t.name,n=t.title,r=t.url,i=t.imageURL;return l.createElement("div",{className:"avatar margin-bottom--sm"},i&&l.createElement(s.default,{className:"avatar__photo-link avatar__photo",href:r},l.createElement("img",{className:h,src:i,alt:a})),a&&l.createElement("div",{className:"avatar__intro",itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person"},l.createElement("div",{className:"avatar__name"},l.createElement(s.default,{href:r,itemProp:"url"},l.createElement("span",{itemProp:"name"},a))),n&&l.createElement("small",{className:"avatar__subtitle",itemProp:"description"},n)))},E="authorCol_8c0z";function f(e){var t=e.authors,a=e.assets;return 0===t.length?null:l.createElement("div",{className:"row margin-top--md margin-bottom--sm"},t.map((function(e,t){var r;return l.createElement("div",{className:(0,n.Z)("col col--6",E),key:t},l.createElement(b,{author:Object.assign({},e,{imageURL:null!=(r=a.authorsImageUrls[t])?r:e.imageURL})}))})))}var N=function(e){var t,a,h,b,E=(h=(0,c.c2)().selectMessage,function(e){var t=Math.ceil(e);return h(t,(0,i.I)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:t}))}),N=(0,o.C)().withBaseUrl,_=e.children,k=e.frontMatter,C=e.assets,Z=e.metadata,y=e.truncated,w=e.isBlogPostPage,T=void 0!==w&&w,P=Z.date,A=Z.formattedDate,x=Z.permalink,L=Z.tags,O=Z.readingTime,M=Z.title,j=Z.editUrl,I=Z.authors,B=null!=(t=C.image)?t:k.image,R=!T&&y,U=L.length>0;return l.createElement("article",{className:T?void 0:"margin-bottom--xl",itemProp:"blogPost",itemScope:!0,itemType:"https://schema.org/BlogPosting"},(b=T?"h1":"h2",l.createElement("header",null,l.createElement(b,{className:d,itemProp:"headline"},T?M:l.createElement(s.default,{itemProp:"url",to:x},M)),l.createElement("div",{className:(0,n.Z)(p,"margin-vert--md")},l.createElement("time",{dateTime:P,itemProp:"datePublished"},A),void 0!==O&&l.createElement(l.Fragment,null," \xb7 ",E(O),"\xa0",T?l.createElement("label",{id:"umami-post-view-container"}):"")),l.createElement(f,{authors:I,assets:C}))),B&&l.createElement("meta",{itemProp:"image",content:N(B,{absolute:!0})}),l.createElement("div",{className:"markdown",itemProp:"articleBody"},l.createElement(r.Zo,{components:m.Z},_)),(U||y)&&l.createElement("footer",{className:(0,n.Z)("row docusaurus-mt-lg",(a={},a[g]=T,a))},U&&l.createElement("div",{className:(0,n.Z)("col",{"col--9":R})},l.createElement(v.Z,{tags:L})),T&&j&&l.createElement("div",{className:"col margin-top--sm"},l.createElement(u.Z,{editUrl:j})),R&&l.createElement("div",{className:(0,n.Z)("col text--right",{"col--3":U})},l.createElement(s.default,{to:Z.permalink,"aria-label":"Read more about "+M},l.createElement("b",null,l.createElement(i.Z,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts"},"Read More"))))))}},8483:function(e,t,a){var l=a(3366),n=a(7294),r=a(7440),i=a(5935),s=a(9911),o=a(1262),c=["children"],m=["children"],u=function e(t,a,l){var n,r;if(Array.isArray(null==t||null==(n=t.props)?void 0:n.children)&&null!=t&&null!=(r=t.props)&&r.originalType){var i,o,c=l.createElement(null==t||null==(i=t.props)?void 0:i.originalType),m=(0,s.Qc)((0,s.Pz)((null==t?void 0:t.props)||{}));delete m.children,Object.keys(m).forEach((function(e){c.setAttribute(e,m[e])})),a.appendChild(e(null==t||null==(o=t.props)?void 0:o.children,c,l))}else if(Array.isArray(t))t.forEach((function(t){e(t,a,l)}));else{var u;if(null!=t&&null!=(u=t.props)&&u.originalType){var d,p,g=l.createElement(null==t||null==(d=t.props)?void 0:d.originalType),v=(0,s.Qc)((0,s.Pz)((null==t?void 0:t.props)||{}));delete v.children,Object.keys(v).forEach((function(e){g.setAttribute(e,v[e])})),a.appendChild(e(null==t||null==(p=t.props)?void 0:p.children,g,l))}else a.append(t)}return a},d=function(e){var t,a=e.children,r=(0,l.Z)(e,c),s=(null==(t=a[0])?void 0:t.props.children)||(null==a?void 0:a.props.children),o=!Array.isArray(s)||s.every((function(e){return e.props.children})),m=Object.assign({},r),d=o?a:a.slice(1),p=document.createElement("table");Object.keys(m).forEach((function(e){p.setAttribute(e,m[e])})),u(d,p,document);var g=document.createElement("div");g.appendChild(p),g.setAttribute("class","table-wrapper");var v=(0,i.ZP)(g.innerHTML);return n.createElement("div",{className:"table-wrapper"},v)};t.Z=Object.assign({},r.Z,{table:function(e){var t=e.children,a=(0,l.Z)(e,m);return n.createElement(o.default,null,(function(){return d(Object.assign({children:t},a))}))}})}}]); \ No newline at end of file diff --git a/assets/js/aa2aae2c.106602ae.js b/assets/js/aa2aae2c.106602ae.js new file mode 100644 index 0000000..35caecb --- /dev/null +++ b/assets/js/aa2aae2c.106602ae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[7568],{9426:function(a){a.exports=JSON.parse('{"title":"All posts","items":[{"title":"How to Build a Logging Platform using Native Kibana and ClickHouse","permalink":"/ckibana-docs/en/blog/build-logging-platform-with-native-kibana-and-clickhouse"},{"title":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","permalink":"/ckibana-docs/en/blog/1"}]}')}}]); \ No newline at end of file diff --git a/assets/js/b39cf048.8b61dec6.js b/assets/js/b39cf048.8b61dec6.js new file mode 100644 index 0000000..48a4d83 --- /dev/null +++ b/assets/js/b39cf048.8b61dec6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[1741],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return d}});var a=n(7294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}var u=a.createContext({}),c=function(e){var t=a.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(u.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var n=e.components,l=e.mdxType,i=e.originalType,u=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),k=c(n),d=l,m=k["".concat(u,".").concat(d)]||k[d]||s[d]||i;return n?a.createElement(m,r(r({ref:t},p),{},{components:n})):a.createElement(m,r({ref:t},p))}));function d(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var i=n.length,r=new Array(i);r[0]=k;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o.mdxType="string"==typeof e?e:l,r[1]=o;for(var c=2;c=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var u=r.createContext({}),l=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,u=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),f=l(n),b=o,m=f["".concat(u,".").concat(b)]||f[b]||s[b]||a;return n?r.createElement(m,i(i({ref:t},p),{},{components:n})):r.createElement(m,i({ref:t},p))}));function b(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=f;var c={};for(var u in t)hasOwnProperty.call(t,u)&&(c[u]=t[u]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var l=2;l0?n.createElement(u.Z,{toc:a.toc,minHeadingLevel:C,maxHeadingLevel:Z}):void 0},n.createElement(l.Z,{title:g,description:v,keywords:k,image:y},n.createElement("meta",{property:"og:type",content:"article"}),n.createElement("meta",{property:"article:published_time",content:b}),N.some((function(e){return e.url}))&&n.createElement("meta",{property:"article:author",content:N.map((function(e){return e.url})).filter(Boolean).join(",")}),E.length>0&&n.createElement("meta",{property:"article:tag",content:E.map((function(e){return e.label})).join(",")})),n.createElement(i.Z,{frontMatter:s,assets:d,metadata:p,isBlogPostPage:!0},n.createElement(a,null)),(h||f)&&n.createElement(c,{nextItem:h,prevItem:f}))}},6663:function(e,t,a){a.d(t,{Z:function(){return o}});var n=a(7294),l=a(5999);function r(e){return n.createElement("svg",{style:{display:"inline-block",width:"16px",margin:"10px 5px -2px 0 "},width:"17",height:"16",viewBox:"0 0 17 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n.createElement("path",{d:"M8.75 0C4.19409 0 0.5 3.675 0.5 8.20357C0.5 11.8286 2.86451 14.9 6.14241 15.9857C6.19397 15.9964 6.23817 16 6.28237 16C6.58806 16 6.70592 15.7821 6.70592 15.5929C6.70592 15.3964 6.69855 14.8821 6.69487 14.1964C6.38549 14.2643 6.10926 14.2929 5.8625 14.2929C4.27511 14.2929 3.91417 13.0964 3.91417 13.0964C3.5385 12.15 2.9971 11.8964 2.9971 11.8964C2.27891 11.4071 2.99342 11.3929 3.04866 11.3929H3.05234C3.88103 11.4643 4.31563 12.2429 4.31563 12.2429C4.72813 12.9429 5.28058 13.1393 5.77411 13.1393C6.16083 13.1393 6.51071 13.0179 6.71696 12.925C6.79063 12.3964 7.00424 12.0357 7.23996 11.8286C5.40949 11.6214 3.48326 10.9179 3.48326 7.775C3.48326 6.87857 3.80368 6.14643 4.33036 5.575C4.24565 5.36786 3.96205 4.53214 4.41138 3.40357C4.41138 3.40357 4.47031 3.38571 4.59554 3.38571C4.89386 3.38571 5.56786 3.49643 6.68013 4.24643C7.3394 4.06429 8.04286 3.975 8.74632 3.97143C9.44609 3.975 10.1532 4.06429 10.8125 4.24643C11.9248 3.49643 12.5988 3.38571 12.8971 3.38571C13.0223 3.38571 13.0813 3.40357 13.0813 3.40357C13.5306 4.53214 13.247 5.36786 13.1623 5.575C13.689 6.15 14.0094 6.88214 14.0094 7.775C14.0094 10.925 12.0795 11.6179 10.2416 11.8214C10.5363 12.075 10.8015 12.575 10.8015 13.3393C10.8015 14.4357 10.7904 15.3214 10.7904 15.5893C10.7904 15.7821 10.9046 16 11.2103 16C11.2545 16 11.306 15.9964 11.3576 15.9857C14.6392 14.9 17 11.825 17 8.20357C17 3.675 13.3059 0 8.75 0Z",fill:"#92A0B3"}))}var i=a(3810);function o(e){var t=e.editUrl;return n.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:i.kM.common.editThisPage},n.createElement(r,null),n.createElement(l.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},5002:function(e,t,a){a.d(t,{Z:function(){return c}});var n=a(7462),l=a(3366),r=a(7294),i=a(3810),o=["toc","className","linkClassName","linkActiveClassName","minHeadingLevel","maxHeadingLevel"];function s(e){var t=e.toc,a=e.className,n=e.linkClassName,l=e.isChild;return t.length?r.createElement("ul",{className:l?void 0:a},t.map((function(e){return r.createElement("li",{key:e.id},r.createElement("a",{href:"#"+e.id,className:null!=n?n:void 0,dangerouslySetInnerHTML:{__html:e.value}}),r.createElement(s,{isChild:!0,toc:e.children,className:a,linkClassName:n}))}))):null}function c(e){var t=e.toc,a=e.className,c=void 0===a?"table-of-contents table-of-contents__left-border":a,m=e.linkClassName,u=void 0===m?"table-of-contents__link":m,d=e.linkActiveClassName,p=void 0===d?void 0:d,g=e.minHeadingLevel,v=e.maxHeadingLevel,h=(0,l.Z)(e,o),f=(0,i.LU)(),b=null!=g?g:f.tableOfContents.minHeadingLevel,E=null!=v?v:f.tableOfContents.maxHeadingLevel,N=(0,i.DA)({toc:t,minHeadingLevel:b,maxHeadingLevel:E}),_=(0,r.useMemo)((function(){if(u&&p)return{linkClassName:u,linkActiveClassName:p,minHeadingLevel:b,maxHeadingLevel:E}}),[u,p,b,E]);return(0,i.Si)(_),r.createElement(s,(0,n.Z)({toc:N,className:c,linkClassName:u},h))}},7774:function(e,t,a){a.d(t,{Z:function(){return c}});var n=a(7294),l=a(6010),r=a(9960),i="tag_WK-t",o="tagRegular_LXbV",s="tagWithCount_S5Zl";var c=function(e){var t,a=e.permalink,c=e.name,m=e.count;return n.createElement(r.default,{href:a,className:(0,l.Z)(i,(t={},t[o]=!m,t[s]=m,t))},c,m&&n.createElement("span",null,m))}},62:function(e,t,a){a.d(t,{Z:function(){return c}});var n=a(7294),l=a(6010),r=a(5999),i=a(7774),o="tags_NBRY",s="tag_F03v";function c(e){var t=e.tags;return n.createElement(n.Fragment,null,n.createElement("b",null,n.createElement(r.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),n.createElement("ul",{className:(0,l.Z)(o,"padding--none","margin-left--sm")},t.map((function(e){var t=e.label,a=e.permalink;return n.createElement("li",{key:a,className:s},n.createElement(i.Z,{name:t,permalink:a}))}))))}},7663:function(e,t,a){a.d(t,{Z:function(){return E}});var n=a(3366),l=a(7294),r=a(6010),i=a(7019),o=a(9960),s="sidebar_q+wC",c="sidebarItemTitle_9G5K",m="sidebarItemList_6T4b",u="sidebarItem_cjdF",d="sidebarItemLink_zyXk",p="sidebarItemLinkActive_wcJs",g=a(5999);function v(e){var t=e.sidebar;return 0===t.items.length?null:l.createElement("nav",{className:(0,r.Z)(s,"thin-scrollbar"),"aria-label":(0,g.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},l.createElement("div",{className:(0,r.Z)(c,"margin-bottom--md")},t.title),l.createElement("ul",{className:m},t.items.map((function(e){return l.createElement("li",{key:e.permalink,className:u},l.createElement(o.default,{isNavLink:!0,to:e.permalink,className:d,activeClassName:p},e.title))}))))}var h={fontSize:"13px",width:"100%",whiteSpace:"nowrap",textOverflow:"ellipsis",display:"inline-block",lineHeight:"20px",height:"20px"};var f=function(e){var t=e.hashTagObj;return l.createElement("aside",{className:"col col--2"},l.createElement("h3",{style:{fontFamily:"New York"}},"All tags"),l.createElement("section",null,Object.values(t).map((function(e){return l.createElement("div",{key:e.permalink},l.createElement(o.default,{href:e.permalink,style:h,className:"tags-link"},e.name,e.count&&l.createElement("span",null,"\u2003[",e.count,"]")))}))))},b=["blogTags","items","sidebar","toc","children"];var E=function(e){var t=e.blogTags,a=void 0===t?"":t,o=e.items,s=e.sidebar,c=e.toc,m=e.children,u=(0,n.Z)(e,b),d=s&&s.items.length>0,p={};if(a){var g=JSON.parse(JSON.stringify(a||{}));Object.keys(g||{}).forEach((function(e){var t,a=null==g?void 0:g[e];p[a.name]={name:a.name,count:null==a||null==(t=a.items)?void 0:t.length,permalink:a.permalink}}))}else null==o||o.forEach((function(e){var t,a;((null==e||null==(t=e.content)||null==(a=t.metadata)?void 0:a.tags)||[]).forEach((function(e){p[e.label]?++p[e.label].count:p[e.label]={name:e.label,count:1,permalink:e.permalink}}))}));return l.createElement(i.Z,u,l.createElement("div",{className:"container margin-vert--lg",style:{maxWidth:"100%"}},l.createElement("div",{className:"row"},d&&o&&l.createElement("aside",{className:"col col--3"},l.createElement(v,{sidebar:s})),l.createElement("main",{className:(0,r.Z)("col",{"col--7":d&&o,"col--9 col--offset-1":!d,"col--10":d&&!o,"col--12":!c&&!o}),itemScope:!0,itemType:"https://schema.org/Blog"},m),d&&o&&l.createElement(f,{hashTagObj:p}),c&&l.createElement("div",{className:"col col--2"},c))))}},1916:function(e,t,a){a.d(t,{Z:function(){return N}});var n=a(7294),l=a(6010),r=a(3905),i=a(5999),o=a(9960),s=a(4996),c=a(3810),m=a(8483),u=a(6663),d="blogPostTitle_RC3s",p="blogPostData_A2Le",g="blogPostDetailsFull_2lop",v=a(62),h="image_9q7L";var f=function(e){var t=e.author,a=t.name,l=t.title,r=t.url,i=t.imageURL;return n.createElement("div",{className:"avatar margin-bottom--sm"},i&&n.createElement(o.default,{className:"avatar__photo-link avatar__photo",href:r},n.createElement("img",{className:h,src:i,alt:a})),a&&n.createElement("div",{className:"avatar__intro",itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person"},n.createElement("div",{className:"avatar__name"},n.createElement(o.default,{href:r,itemProp:"url"},n.createElement("span",{itemProp:"name"},a))),l&&n.createElement("small",{className:"avatar__subtitle",itemProp:"description"},l)))},b="authorCol_8c0z";function E(e){var t=e.authors,a=e.assets;return 0===t.length?null:n.createElement("div",{className:"row margin-top--md margin-bottom--sm"},t.map((function(e,t){var r;return n.createElement("div",{className:(0,l.Z)("col col--6",b),key:t},n.createElement(f,{author:Object.assign({},e,{imageURL:null!=(r=a.authorsImageUrls[t])?r:e.imageURL})}))})))}var N=function(e){var t,a,h,f,b=(h=(0,c.c2)().selectMessage,function(e){var t=Math.ceil(e);return h(t,(0,i.I)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:t}))}),N=(0,s.C)().withBaseUrl,_=e.children,k=e.frontMatter,C=e.assets,Z=e.metadata,y=e.truncated,w=e.isBlogPostPage,P=void 0!==w&&w,T=Z.date,L=Z.formattedDate,x=Z.permalink,A=Z.tags,I=Z.readingTime,O=Z.title,H=Z.editUrl,j=Z.authors,M=null!=(t=C.image)?t:k.image,B=!P&&y,S=A.length>0;return n.createElement("article",{className:P?void 0:"margin-bottom--xl",itemProp:"blogPost",itemScope:!0,itemType:"https://schema.org/BlogPosting"},(f=P?"h1":"h2",n.createElement("header",null,n.createElement(f,{className:d,itemProp:"headline"},P?O:n.createElement(o.default,{itemProp:"url",to:x},O)),n.createElement("div",{className:(0,l.Z)(p,"margin-vert--md")},n.createElement("time",{dateTime:T,itemProp:"datePublished"},L),void 0!==I&&n.createElement(n.Fragment,null," \xb7 ",b(I),"\xa0",P?n.createElement("label",{id:"umami-post-view-container"}):"")),n.createElement(E,{authors:j,assets:C}))),M&&n.createElement("meta",{itemProp:"image",content:N(M,{absolute:!0})}),n.createElement("div",{className:"markdown",itemProp:"articleBody"},n.createElement(r.Zo,{components:m.Z},_)),(S||y)&&n.createElement("footer",{className:(0,l.Z)("row docusaurus-mt-lg",(a={},a[g]=P,a))},S&&n.createElement("div",{className:(0,l.Z)("col",{"col--9":B})},n.createElement(v.Z,{tags:A})),P&&H&&n.createElement("div",{className:"col margin-top--sm"},n.createElement(u.Z,{editUrl:H})),B&&n.createElement("div",{className:(0,l.Z)("col text--right",{"col--3":S})},n.createElement(o.default,{to:Z.permalink,"aria-label":"Read more about "+O},n.createElement("b",null,n.createElement(i.Z,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts"},"Read More"))))))}},8483:function(e,t,a){var n=a(3366),l=a(7294),r=a(7440),i=a(5935),o=a(9911),s=a(1262),c=["children"],m=["children"],u=function e(t,a,n){var l,r;if(Array.isArray(null==t||null==(l=t.props)?void 0:l.children)&&null!=t&&null!=(r=t.props)&&r.originalType){var i,s,c=n.createElement(null==t||null==(i=t.props)?void 0:i.originalType),m=(0,o.Qc)((0,o.Pz)((null==t?void 0:t.props)||{}));delete m.children,Object.keys(m).forEach((function(e){c.setAttribute(e,m[e])})),a.appendChild(e(null==t||null==(s=t.props)?void 0:s.children,c,n))}else if(Array.isArray(t))t.forEach((function(t){e(t,a,n)}));else{var u;if(null!=t&&null!=(u=t.props)&&u.originalType){var d,p,g=n.createElement(null==t||null==(d=t.props)?void 0:d.originalType),v=(0,o.Qc)((0,o.Pz)((null==t?void 0:t.props)||{}));delete v.children,Object.keys(v).forEach((function(e){g.setAttribute(e,v[e])})),a.appendChild(e(null==t||null==(p=t.props)?void 0:p.children,g,n))}else a.append(t)}return a},d=function(e){var t,a=e.children,r=(0,n.Z)(e,c),o=(null==(t=a[0])?void 0:t.props.children)||(null==a?void 0:a.props.children),s=!Array.isArray(o)||o.every((function(e){return e.props.children})),m=Object.assign({},r),d=s?a:a.slice(1),p=document.createElement("table");Object.keys(m).forEach((function(e){p.setAttribute(e,m[e])})),u(d,p,document);var g=document.createElement("div");g.appendChild(p),g.setAttribute("class","table-wrapper");var v=(0,i.ZP)(g.innerHTML);return l.createElement("div",{className:"table-wrapper"},v)};t.Z=Object.assign({},r.Z,{table:function(e){var t=e.children,a=(0,n.Z)(e,m);return l.createElement(s.default,null,(function(){return d(Object.assign({children:t},a))}))}})},7708:function(e,t,a){a.d(t,{Z:function(){return d}});var n=a(7462),l=a(3366),r=a(7294),i=a(6010),o=a(5002),s="tableOfContents_vrFS",c=["className"];var m=function(e){var t=e.className,a=(0,l.Z)(e,c);return r.createElement("div",{className:(0,i.Z)(s,"thin-scrollbar",t)},r.createElement(o.Z,(0,n.Z)({},a,{linkClassName:"table-of-contents__link toc-highlight",linkActiveClassName:"table-of-contents__link--active"})))},u=["toc","editUrl"];function d(e){var t=e.toc,a=(e.editUrl,(0,l.Z)(e,u));return t.length<=0?null:r.createElement("div",{className:"toc-wrapper",style:{paddingInlineEnd:"1rem",paddingInlineStart:"1rem"}},r.createElement("h2",null,"Contents"),r.createElement(m,(0,n.Z)({toc:t},a)))}}}]); \ No newline at end of file diff --git a/assets/js/ce0e256b.fb3067ea.js b/assets/js/ce0e256b.fb3067ea.js new file mode 100644 index 0000000..f95fffc --- /dev/null +++ b/assets/js/ce0e256b.fb3067ea.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[5027],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return d}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),c=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),k=c(n),d=r,m=k["".concat(p,".").concat(d)]||k[d]||u[d]||l;return n?a.createElement(m,i(i({ref:t},s),{},{components:n})):a.createElement(m,i({ref:t},s))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,i=new Array(l);i[0]=k;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o.mdxType="string"==typeof e?e:r,i[1]=o;for(var c=2;c run.out 2>&1 &\n\n### check whether ckibana is successfully started\n$ tail -f ~/logs/app.log\nTomcat started on port(s): 8080 (http) with context path ''\nStarted Bootstrap in 1.474 seconds\n")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"3\uff09\u542f\u52a8kibana")),(0,l.kt)("p",null,"kibana\u7684elasticsearchHosts\u53c2\u6570\u914d\u7f6e\u4e3ackibana\u4ee3\u7406\u5730\u5740\uff0c\u8fd9\u6837\u5c31\u80fd\u8d70\u5230\u4ee3\u7406\u670d\u52a1\u4e2d\u6765"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-shell"},"eg\uff1aelasticsearchHosts=http://ip:port\n")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"4\uff09\u914d\u7f6eindex pattern\u767d\u540d\u5355")),(0,l.kt)("p",null,"\u914d\u7f6e\u4e86\u5bf9\u5e94\u7684\u767d\u540d\u5355\uff0c\u624d\u53ef\u4ee5\u5728\u4e0b\u4e00\u6b65\u521b\u5efaindex pattern\uff0c",(0,l.kt)("strong",{parentName:"p"},"\u914d\u7f6e\u7684\u767d\u540d\u5355\u9700\u8981\u8ddf\u8868\u540d\u4e00\u81f4"),"\uff0c\u53ef\u4ee5\u53c2\u8003",(0,l.kt)("a",{parentName:"p",href:"https://github.com/TongchengOpenSource/ckibana-docs/blob/main/api-docs.md"},"api-docs")," \u66f4\u65b0\u767d\u540d\u5355\u7d22\u5f15\u63a5\u53e3"),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"5\uff09\u5728kibana\u4e2d\u521b\u5efaindex pattern")),(0,l.kt)("p",null,"\u5728kibana\u9875\u9762\u521b\u5efaindex pattern\uff0c\u540d\u5b57\u8ddf1\uff09\u7684\u8868\u540d\u4e00\u81f4\uff0c\u4e144\uff09\u4e2d\u914d\u7f6e\u767d\u540d\u5355\uff0c\u7136\u540e\u5c31\u53ef\u4ee5\u5728kibana\u4e2d\u8fdb\u884c\u67e5\u8be2\u4e86"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-shell"},"eg\uff1a\u5982\u679cck\u8868\u540d\u662ftable_test\uff0c\u5219\u521b\u5efaindex pattern\u7684\u540d\u5b57\u5c31\u662ftable_test\n")),(0,l.kt)("p",null,"\u4ee5\u4e0a5\u6b65\u90fd\u64cd\u4f5c\u5b8c\u4ee5\u540e\uff0c\u5c31\u53ef\u4ee5\u521b\u5efa\u5927\u76d8\uff0c\u5f00\u59cb\u8fdb\u884c\u4f7f\u7528\u4e86"),(0,l.kt)("h2",{id:"todo"},"TODO"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u5206\u6bb5\u67e5\u8be2: \u652f\u6301\u81ea\u52a8\u62c6\u5206\u67e5\u8be2\u65f6\u95f4,\u53ef\u4ee5\u5145\u5206\u5229\u7528\u7f13\u5b58,\u63d0\u5347\u67e5\u8be2\u6027\u80fd"),(0,l.kt)("li",{parentName:"ul"},"IDS\u67e5\u8be2: \u76ee\u524dv8\u7248\u672c\u51e0\u5904\u6682\u672a\u652f\u6301\u6570\u636eJson\u5c55\u793a\u4e0eDoc View\uff0c\u4f8b\u5982\uff1aJson\u3001Single document\u3001Surrounding documents\u7b49\u3002")),(0,l.kt)("h2",{id:"\u6587\u6863\u5730\u5740"},"\u6587\u6863\u5730\u5740"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"https://github.com/TongchengOpenSource/ckibana-docs"},"CKibane-docs")),(0,l.kt)("h2",{id:"contact"},"Contact"),(0,l.kt)("p",null,"\u613f\u610f\u53c2\u4e0e\u6784\u5efaCKibana\u6216\u8005\u662f\u9700\u8981\u4ea4\u6d41\u95ee\u9898\u53ef\u4ee5\u52a0\u5165\u5fae\u4fe1\u7fa4(\u4f01\u4e1a\u7248\u5fae\u4fe1\u548c\u4e2a\u4eba\u7248\u672c\u5fae\u4fe1\u5747\u53ef)\n",(0,l.kt)("img",{parentName:"p",src:"http://oss.17usoft.com/infra-github/ckibana/join-us.png",alt:null})),(0,l.kt)("h2",{id:"license"},"License"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"http://www.apache.org/licenses/LICENSE-2.0.html"},"Apache License, Version 2.0")," Copyright (C) Apache Software Foundation"))}k.isMDXComponent=!0},447:function(e,t,n){t.Z=n.p+"assets/images/dashboard-import-57535ddd5204d4c2029f1e4499ee1e03.jpg"},9301:function(e,t,n){t.Z=n.p+"assets/images/dashboard-653023ff597452162127fb4b0c1328fe.jpg"}}]); \ No newline at end of file diff --git a/assets/js/e1686c3a.1084e63b.js b/assets/js/e1686c3a.1084e63b.js new file mode 100644 index 0000000..e756ba6 --- /dev/null +++ b/assets/js/e1686c3a.1084e63b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[9233],{5564:function(s){s.exports=JSON.parse('{"permalink":"/ckibana-docs/zh/blog","page":1,"postsPerPage":2,"totalPages":1,"totalCount":2,"previousPage":null,"nextPage":null,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/ede3a018.36fdc5b5.js b/assets/js/ede3a018.36fdc5b5.js new file mode 100644 index 0000000..e615e79 --- /dev/null +++ b/assets/js/ede3a018.36fdc5b5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[5127],{2507:function(e,t,u){Object.defineProperty(t,"__esModule",{value:!0});var l=u(655),a=(0,l.__importDefault)(u(7294)),r=(0,l.__importDefault)(u(4022)),f=(0,l.__importDefault)(u(4493)),c=(0,l.__importDefault)(u(8084));t.default=function(){var e=(0,c.default)();return a.default.createElement(r.default,null,a.default.createElement("h2",null,"Global data"),a.default.createElement(f.default,{src:e,collapseDepth:3}))}}}]); \ No newline at end of file diff --git a/assets/js/f07a586e.2bc221d2.js b/assets/js/f07a586e.2bc221d2.js new file mode 100644 index 0000000..305d184 --- /dev/null +++ b/assets/js/f07a586e.2bc221d2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[9671],{5962:function(s){s.exports=JSON.parse('{"title":"All posts","items":[{"title":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","permalink":"/ckibana-docs/zh/blog/build-logging-platform-with-native-kibana-and-clickhouse"},{"title":"\u5982\u4f55\u57fa\u4e8e\u539f\u751fKibana+Clickhouse\u6784\u5efa\u65e5\u5fd7\u5e73\u53f0","permalink":"/ckibana-docs/zh/blog/1"}]}')}}]); \ No newline at end of file diff --git a/assets/js/f76679b7.853c5501.js b/assets/js/f76679b7.853c5501.js new file mode 100644 index 0000000..6589a88 --- /dev/null +++ b/assets/js/f76679b7.853c5501.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[9580],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return m}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(n),m=r,h=d["".concat(s,".").concat(m)]||d[m]||u[m]||i;return n?a.createElement(h,o(o({ref:t},p),{},{components:n})):a.createElement(h,o({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var c=2;c run.out 2>&1 &\n\n### check whether ckibana is successfully started\n$ tail -f ~/logs/app.log\nTomcat started on port(s): 8080 (http) with context path ''\nStarted Bootstrap in 1.474 seconds\n")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"3\uff09start kibana")),(0,i.kt)("p",null,"Configure the elasticsearchHosts parameter in Kibana to the CKibana proxy address, so that it can be routed to the proxy service."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"eg\uff1aelasticsearchHosts=http://ip:port\n")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"4\uff09Configure the index pattern whitelist")),(0,i.kt)("p",null,"Only after configuring the corresponding whitelist can you proceed to create it in the next step ",(0,i.kt)("inlineCode",{parentName:"p"},"index pattern"),"\uff0c",(0,i.kt)("strong",{parentName:"p"},"The configured whitelist needs to be consistent with the table name"),"\uff0cplease refer to:",(0,i.kt)("a",{parentName:"p",href:"https://github.com/TongchengOpenSource/ckibana-docs/blob/main/api-docs.md"},"api-docs")," Update the whitelist index interface"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"5\uff09Create ",(0,i.kt)("inlineCode",{parentName:"strong"},"index pattern")," in Kibana")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"eg\uff1aIf the CK table name is `table_test`, then create an index pattern `table_test`\n")),(0,i.kt)("p",null,"After completing the above 5 steps, you can create a dashboard and start using it."),(0,i.kt)("h2",{id:"todo"},"TODO"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Segmented query: Supports automatically splitting query time, which can fully utilize the cache and improve query performance."),(0,i.kt)("li",{parentName:"ul"},"IDS query: Currently v8 version of several places do not support data Json display and Doc View, for example: Json, Single document, Surrounding documents and so on.")),(0,i.kt)("h2",{id:"license"},"License"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"http://www.apache.org/licenses/LICENSE-2.0.html"},"Apache License, Version 2.0")," Copyright (C) Apache Software Foundation"))}d.isMDXComponent=!0},6007:function(e,t,n){t.Z=n.p+"assets/images/dashboard-import-57535ddd5204d4c2029f1e4499ee1e03.jpg"},9633:function(e,t,n){t.Z=n.p+"assets/images/dashboard-653023ff597452162127fb4b0c1328fe.jpg"}}]); \ No newline at end of file diff --git a/assets/js/main.900560f9.js b/assets/js/main.900560f9.js new file mode 100644 index 0000000..197819a --- /dev/null +++ b/assets/js/main.900560f9.js @@ -0,0 +1,2 @@ +/*! For license information please see main.900560f9.js.LICENSE.txt */ +(self.webpackChunkdocusaurus_docs=self.webpackChunkdocusaurus_docs||[]).push([[179],{7757:function(e,t,n){e.exports=n(5666)},9782:function(e,t,n){"use strict";n.r(t),t.default={title:"\ud835\udc6a\ud835\udc72\ud835\udc8a\ud835\udc83\ud835\udc82\ud835\udc8f\ud835\udc82",tagline:"\ud835\udc6a\ud835\udc72\ud835\udc8a\ud835\udc83\ud835\udc82\ud835\udc8f\ud835\udc82",url:"http://CKibana.inf.17usoft.com/docs/",baseUrl:"/ckibana-docs/",onBrokenLinks:"warn",onBrokenMarkdownLinks:"warn",favicon:"img/logo.svg",organizationName:"inf-team",projectName:"CKibana-docs",presets:[["@docusaurus/preset-classic",{docs:!1,blog:!1,pages:!1,debug:!1,theme:{customCss:"C:\\work\\docusaurus-docs\\src\\css\\custom.css"},sitemap:!1}]],themeConfig:{colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!0,switchConfig:{darkIcon:"\ud83c\udf1c",darkIconStyle:{},lightIcon:"\ud83c\udf1e",lightIconStyle:{}}},navbar:{hideOnScroll:!1,title:"\ud835\udc6a\ud835\udc72\ud835\udc8a\ud835\udc83\ud835\udc82\ud835\udc8f\ud835\udc82",logo:{alt:"Site Logo",src:"img/ckibana-new.svg",srcDark:"img/ckibana-new.svg",href:"/",target:"_self",width:32,height:32},items:[{href:"/ckibana-docs/",label:"blog",position:"left",className:"CustomLangLink"},{href:"/ckibana-docs/",label:"docs",position:"left",className:"CustomLangLink"},{type:"search",position:"right"},{position:"right",type:"localeDropdown",className:"icon-link language navbar__item",dropdownItemsBefore:[],dropdownItemsAfter:[]}]},footer:{style:"dark",links:[{title:"Community",items:[{label:"Github Issues",href:"https://github.com/TongchengOpenSource/ckibana/issues"},{label:"CKibana Documentation",href:"https://tongchengopensource.github.io/ckibana-docs"}]},{title:"Social",items:[{label:"GitHub",href:"https://github.com/TongchengOpenSource/ckibana"}]}],copyright:"Copyright \xa9 2024 TongchengOpenSource"},docs:{versionPersistence:"localStorage"},metadata:[],prism:{additionalLanguages:[]},hideableSidebar:!1,tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},plugins:[["C:\\work\\docusaurus-docs\\src\\myPlugins\\plugin-image-zoom",{}],"docusaurus-plugin-sass",["docusaurus-plugin-module-alias",{alias:{"styled-components":"C:\\work\\docusaurus-docs\\node_modules\\styled-components",react:"C:\\work\\docusaurus-docs\\node_modules\\react","react-dom":"C:\\work\\docusaurus-docs\\node_modules\\react-dom","@components":"C:\\work\\docusaurus-docs\\src\\components"}}],["@docusaurus/plugin-content-blog",{id:"blog-en",path:"./blog/en",routeBasePath:"/en/blog",beforeDefaultRehypePlugins:[],beforeDefaultRemarkPlugins:[],showReadingTime:!0,remarkPlugins:[{},{}],rehypePlugins:[{}],postsPerPage:"ALL",blogSidebarTitle:"All posts",blogSidebarCount:"ALL",include:["**/*.md","**/*.mdx"],exclude:["**/_*.{js,jsx,ts,tsx,md,mdx}","**/_*/**","**/*.test.{js,jsx,ts,tsx}","**/__tests__/**"]}],["@docusaurus/plugin-content-blog",{id:"blog-zh",path:"./blog/zh",routeBasePath:"/zh/blog",beforeDefaultRehypePlugins:[],beforeDefaultRemarkPlugins:[],showReadingTime:!0,remarkPlugins:[{},{}],rehypePlugins:[{}],postsPerPage:"ALL",blogSidebarTitle:"All posts",blogSidebarCount:"ALL",include:["**/*.md","**/*.mdx"],exclude:["**/_*.{js,jsx,ts,tsx,md,mdx}","**/_*/**","**/*.test.{js,jsx,ts,tsx}","**/__tests__/**"]}],["@docusaurus/plugin-content-docs",{routeBasePath:"/zh/docs/",path:"docs/zh",beforeDefaultRemarkPlugins:[],remarkPlugins:[null,{theme:{light:"neutral",dark:"forest"}}],sidebarPath:"C:\\work\\docusaurus-docs\\sidebars.js",exclude:["README.md","static"]}],["@docusaurus/plugin-content-docs",{id:"en",routeBasePath:"/en/docs/",path:"docs/en",beforeDefaultRemarkPlugins:[],remarkPlugins:[null,{theme:{light:"neutral",dark:"forest"}}],sidebarPath:"C:\\work\\docusaurus-docs\\sidebars.js",exclude:["README.md","static"]}],"@docusaurus/plugin-content-pages","@docusaurus/plugin-debug","@docusaurus/plugin-sitemap"],themes:[["C:\\work\\docusaurus-docs\\node_modules\\@easyops-cn\\docusaurus-search-local\\dist\\server\\server\\index.js",{hashed:!0,language:["zh","en"],blogDir:"blog",docsRouteBasePath:["/"],docsDir:["docs"]}]],customFields:{},baseUrlIssueBanner:!0,i18n:{defaultLocale:"en",locales:["en"],localeConfigs:{}},onDuplicateRoutes:"warn",staticDirectories:["static"],titleDelimiter:"|",noIndex:!1}},9302:function(e,t,n){"use strict";n.r(t),t.default={"01a85c17":[function(){return Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,5534))},"@theme/BlogTagsListPage",5534],"073a51d1":[function(){return n.e(7007).then(n.bind(n,1506))},"@site/docs/zh/api-docs.md",1506],"0fc4eb6a":[function(){return n.e(8345).then(n.t.bind(n,7055,19))},"~blog/blog-en/ckibana-docs-en-blog-tags-tags-25c.json",7055],17896441:[function(){return Promise.all([n.e(532),n.e(7918)]).then(n.bind(n,8023))},"@theme/DocItem",8023],"1a4e3797":[function(){return Promise.all([n.e(532),n.e(7920)]).then(n.bind(n,8374))},"@theme/SearchPage",8374],"1be78505":[function(){return Promise.all([n.e(532),n.e(6154),n.e(9514)]).then(n.bind(n,5849))},"@theme/DocPage",5849],"1d184a4b":[function(){return n.e(8456).then(n.t.bind(n,6733,19))},"~blog/blog-en/ckibana-docs-en-blog-tags-c-kibana-3ba.json",6733],"1df93b7f":[function(){return Promise.all([n.e(532),n.e(3237)]).then(n.bind(n,9639))},"@site/src/pages/index.tsx",9639],"1f391b9e":[function(){return Promise.all([n.e(532),n.e(6154),n.e(3085)]).then(n.bind(n,6416))},"@theme/MDXPage",6416],"230687da":[function(){return n.e(1139).then(n.t.bind(n,4734,19))},"~docs/en/version-current-metadata-prop-751.json",4734],"23abe487":[function(){return Promise.all([n.e(532),n.e(3450),n.e(9627)]).then(n.bind(n,6074))},"@theme/DebugConfig",6074],"246f2c6f":[function(){return n.e(9285).then(n.t.bind(n,6267,19))},"~debug/default/docusaurus-debug-all-content-673.json",6267],"29a28e1e":[function(){return n.e(8182).then(n.bind(n,1654))},"@site/blog/zh/build-logging-platform-with-native-kibana-and-clickhouse.md",1654],"32e38082":[function(){return n.e(8248).then(n.bind(n,7261))},"@site/docs/en/troubleshooting.md",7261],"414e6411":[function(){return n.e(45).then(n.t.bind(n,4184,19))},"~blog/blog-en/ckibana-docs-en-blog-archive-35e.json",4184],"421626d5":[function(){return n.e(819).then(n.t.bind(n,9700,19))},"~blog/blog-en/ckibana-docs-en-blog-a52.json",9700],"4a4af889":[function(){return n.e(772).then(n.bind(n,109))},"@site/blog/en/1.md?truncated=true",109],"517ba51f":[function(){return n.e(3932).then(n.t.bind(n,2806,19))},"~blog/blog-zh/ckibana-docs-zh-blog-tags-c-kibana-ad6.json",2806],"5e9f5e1a":[function(){return Promise.resolve().then(n.bind(n,9782))},"@generated/docusaurus.config",9782],"63fdf73a":[function(){return n.e(5890).then(n.bind(n,8949))},"@site/docs/zh/troubleshooting.md",8949],"6794d4cd":[function(){return Promise.all([n.e(532),n.e(3102)]).then(n.bind(n,8165))},"@theme/DebugRegistry",8165],"6875c492":[function(){return Promise.all([n.e(532),n.e(6154),n.e(8610)]).then(n.bind(n,642))},"@theme/BlogTagsPostsPage",642],"68e633d4":[function(){return Promise.all([n.e(532),n.e(1843)]).then(n.bind(n,3767))},"@theme/DebugSiteMetadata",3767],"75878fc8":[function(){return n.e(7990).then(n.bind(n,7610))},"@site/src/pages/changelog.md",7610],"77c24adf":[function(){return n.e(578).then(n.bind(n,2719))},"@site/docs/en/api-docs.md",2719],"7ab7618d":[function(){return n.e(3199).then(n.bind(n,1934))},"@site/docs/en/UserCase.md",1934],"7b1c603c":[function(){return n.e(4409).then(n.bind(n,3879))},"@site/blog/en/1.md",3879],"829cf858":[function(){return n.e(7427).then(n.bind(n,9651))},"@site/docs/zh/UserCase.md",9651],"82f1444c":[function(){return n.e(2384).then(n.bind(n,8393))},"@site/blog/en/build-logging-platform-with-native-kibana-and-clickhouse.md",8393],"85860a8a":[function(){return n.e(8016).then(n.bind(n,2849))},"@site/blog/zh/1.md?truncated=true",2849],"8a16ec3d":[function(){return n.e(6752).then(n.t.bind(n,2896,19))},"~blog/blog-zh/ckibana-docs-zh-blog-archive-449.json",2896],"9289a52b":[function(){return n.e(6575).then(n.t.bind(n,8322,19))},"~blog/blog-zh/ckibana-docs-zh-blog-tags-tags-f1b.json",8322],"935f2afb":[function(){return n.e(53).then(n.t.bind(n,1109,19))},"~docs/default/version-current-metadata-prop-751.json",1109],"946bd85a":[function(){return Promise.all([n.e(532),n.e(3450),n.e(616)]).then(n.bind(n,7327))},"@theme/DebugRoutes",7327],"9dd4daa8":[function(){return n.e(902).then(n.bind(n,3440))},"@site/blog/en/build-logging-platform-with-native-kibana-and-clickhouse.md?truncated=true",3440],"9e4087bc":[function(){return n.e(3608).then(n.bind(n,3012))},"@theme/BlogArchivePage",3012],a6aa9e1f:[function(){return Promise.all([n.e(532),n.e(6154),n.e(3089)]).then(n.bind(n,7638))},"@theme/BlogListPage",7638],aa2aae2c:[function(){return n.e(7568).then(n.t.bind(n,9426,19))},"~blog/blog-en/blog-post-list-prop-blog-en.json",9426],b39cf048:[function(){return n.e(1741).then(n.bind(n,7519))},"@site/blog/zh/1.md",7519],ba8b3534:[function(){return Promise.all([n.e(532),n.e(3450),n.e(2983)]).then(n.bind(n,793))},"@theme/DebugContent",793],bcb5da56:[function(){return n.e(4342).then(n.bind(n,3881))},"@site/blog/zh/build-logging-platform-with-native-kibana-and-clickhouse.md?truncated=true",3881],ccc49370:[function(){return Promise.all([n.e(532),n.e(6154),n.e(6103)]).then(n.bind(n,9360))},"@theme/BlogPostPage",9360],ce0e256b:[function(){return n.e(5027).then(n.bind(n,5382))},"@site/docs/zh/index.md",5382],e1686c3a:[function(){return n.e(9233).then(n.t.bind(n,5564,19))},"~blog/blog-zh/ckibana-docs-zh-blog-4c6.json",5564],ede3a018:[function(){return Promise.all([n.e(532),n.e(3450),n.e(5127)]).then(n.bind(n,2507))},"@theme/DebugGlobalData",2507],f07a586e:[function(){return n.e(9671).then(n.t.bind(n,5962,19))},"~blog/blog-zh/blog-post-list-prop-blog-zh.json",5962],f76679b7:[function(){return n.e(9580).then(n.bind(n,3620))},"@site/docs/en/index.md",3620]}},7303:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return d}});var r=n(7294),a=n(8356),o=n.n(a);function i(e){var t=e.error,n=e.retry,a=e.pastDelay;return t?r.createElement("div",{style:{align:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,t.message),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var l=n(6887),u=n(9302),s=n(9670);var c=function(e,t){if("*"===e)return o()({loading:i,loader:function(){return n.e(4608).then(n.bind(n,4608))}});var a=l[e+"-"+t],c=[],d=[],f={},p=(0,s.Z)(a);return Object.keys(p).forEach((function(e){var t=u.default[p[e]];t&&(f[e]=t[0],c.push(t[1]),d.push(t[2]))})),o().Map({loading:i,loader:f,modules:c,webpack:function(){return d},render:function(e,t){var n=JSON.parse(JSON.stringify(a));Object.keys(e).forEach((function(t){for(var r=n,a=t.split("."),o=0;o1?t-1:0),r=1;r\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = '+e+" "+("/"===e?" (default value)":"")+'

\n

We suggest trying baseUrl =

\n\n'}(e)).replace(/=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},$=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},G=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return!1===t?String(e):String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},Q=function(e){var t=X(e,y.TITLE),n=X(e,I);if(n&&t)return n.replace(/%s/g,(function(){return Array.isArray(t)?t.join(""):t}));var r=X(e,D);return t||r||void 0},V=function(e){return X(e,F)||function(){}},W=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return H({},e,t)}),{})},K=function(e,t){return t.filter((function(e){return void 0!==e[y.BASE]})).map((function(e){return e[y.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a=0;n--){var r=e[n];if(r.hasOwnProperty(t))return r[t]}return null},J=(r=Date.now(),function(e){var t=Date.now();t-r>16?(r=t,e(t)):setTimeout((function(){J(e)}),0)}),ee=function(e){return clearTimeout(e)},te="undefined"!=typeof window?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||J:n.g.requestAnimationFrame||J,ne="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||ee:n.g.cancelAnimationFrame||ee,re=function(e){return console&&"function"==typeof console.warn&&console.warn(e)},ae=null,oe=function(e,t){var n=e.baseTag,r=e.bodyAttributes,a=e.htmlAttributes,o=e.linkTags,i=e.metaTags,l=e.noscriptTags,u=e.onChangeClientState,s=e.scriptTags,c=e.styleTags,d=e.title,f=e.titleAttributes;ue(y.BODY,r),ue(y.HTML,a),le(d,f);var p={baseTag:se(y.BASE,n),linkTags:se(y.LINK,o),metaTags:se(y.META,i),noscriptTags:se(y.NOSCRIPT,l),scriptTags:se(y.SCRIPT,s),styleTags:se(y.STYLE,c)},h={},m={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(h[e]=n),r.length&&(m[e]=p[e].oldTags)})),t&&t(),u(e,h,m)},ie=function(e){return Array.isArray(e)?e.join(""):e},le=function(e,t){void 0!==e&&document.title!==e&&(document.title=ie(e)),ue(y.TITLE,t)},ue=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute(M),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l=0;d--)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute(M):n.getAttribute(M)!==i.join(",")&&n.setAttribute(M,i.join(","))}},se=function(e,t){var n=document.head||document.querySelector(y.HEAD),r=n.querySelectorAll(e+"["+"data-react-helmet]"),a=Array.prototype.slice.call(r),o=[],i=void 0;return t&&t.length&&t.forEach((function(t){var n=document.createElement(e);for(var r in t)if(t.hasOwnProperty(r))if(r===x)n.innerHTML=t.innerHTML;else if(r===k)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var l=void 0===t[r]?"":t[r];n.setAttribute(r,l)}n.setAttribute(M,"true"),a.some((function(e,t){return i=t,n.isEqualNode(e)}))?a.splice(i,1):o.push(n)})),a.forEach((function(e){return e.parentNode.removeChild(e)})),o.forEach((function(e){return n.appendChild(e)})),{oldTags:a,newTags:o}},ce=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},de=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[O[n]||n]=e[n],t}),t)},fe=function(e,t,n){switch(e){case y.TITLE:return{toComponent:function(){return e=t.title,n=t.titleAttributes,(r={key:e})[M]=!0,a=de(n,r),[l.createElement(y.TITLE,a,e)];var e,n,r,a},toString:function(){return function(e,t,n,r){var a=ce(n),o=ie(t);return a?"<"+e+' data-react-helmet="true" '+a+">"+G(o,r)+"":"<"+e+' data-react-helmet="true">'+G(o,r)+""}(e,t.title,t.titleAttributes,n)}};case g:case v:return{toComponent:function(){return de(t)},toString:function(){return ce(t)}};default:return{toComponent:function(){return function(e,t){return t.map((function(t,n){var r,a=((r={key:n})[M]=!0,r);return Object.keys(t).forEach((function(e){var n=O[e]||e;if(n===x||n===k){var r=t.innerHTML||t.cssText;a.dangerouslySetInnerHTML={__html:r}}else a[n]=t[e]})),l.createElement(e,a)}))}(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!(e===x||e===k)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+G(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===j.indexOf(e);return t+"<"+e+' data-react-helmet="true" '+a+(i?"/>":">"+o+"")}),"")}(e,t,n)}}}},pe=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.linkTags,i=e.metaTags,l=e.noscriptTags,u=e.scriptTags,s=e.styleTags,c=e.title,d=void 0===c?"":c,f=e.titleAttributes;return{base:fe(y.BASE,t,r),bodyAttributes:fe(g,n,r),htmlAttributes:fe(v,a,r),link:fe(y.LINK,o,r),meta:fe(y.META,i,r),noscript:fe(y.NOSCRIPT,l,r),script:fe(y.SCRIPT,u,r),style:fe(y.STYLE,s,r),title:fe(y.TITLE,{title:d,titleAttributes:f},r)}},he=d()((function(e){return{baseTag:K([E,P],e),bodyAttributes:W(g,e),defer:X(e,R),encode:X(e,N),htmlAttributes:W(v,e),linkTags:Y(y.LINK,[L,E],e),metaTags:Y(y.META,[C,w,S,T,_],e),noscriptTags:Y(y.NOSCRIPT,[x],e),onChangeClientState:V(e),scriptTags:Y(y.SCRIPT,[A,x],e),styleTags:Y(y.STYLE,[k],e),title:Q(e),titleAttributes:W(b,e)}}),(function(e){ae&&ne(ae),e.defer?ae=te((function(){oe(e,(function(){ae=null}))})):(oe(e),ae=null)}),pe)((function(){return null})),me=(a=he,i=o=function(e){function t(){return U(this,t),$(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.shouldComponentUpdate=function(e){return!p()(this.props,e)},t.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case y.SCRIPT:case y.NOSCRIPT:return{innerHTML:t};case y.STYLE:return{cssText:t}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},t.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren,a=e.newChildProps,o=e.nestedChildren;return H({},r,((t={})[n.type]=[].concat(r[n.type]||[],[H({},a,this.mapNestedChildrenToProps(n,o))]),t))},t.prototype.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case y.TITLE:return H({},a,((t={})[r.type]=i,t.titleAttributes=H({},o),t));case y.BODY:return H({},a,{bodyAttributes:H({},o)});case y.HTML:return H({},a,{htmlAttributes:H({},o)})}return H({},a,((n={})[r.type]=H({},o),n))},t.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=H({},t);return Object.keys(e).forEach((function(t){var r;n=H({},n,((r={})[t]=e[t],r))})),n},t.prototype.warnOnInvalidChildren=function(e,t){return!0},t.prototype.mapChildrenToProps=function(e,t){var n=this,r={};return l.Children.forEach(e,(function(e){if(e&&e.props){var a=e.props,o=a.children,i=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[z[n]||n]=e[n],t}),t)}(q(a,["children"]));switch(n.warnOnInvalidChildren(e,o),e.type){case y.LINK:case y.META:case y.NOSCRIPT:case y.SCRIPT:case y.STYLE:r=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:i,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:i,nestedChildren:o})}}})),t=this.mapArrayTypeChildrenToProps(r,t)},t.prototype.render=function(){var e=this.props,t=e.children,n=q(e,["children"]),r=H({},n);return t&&(r=this.mapChildrenToProps(t,r)),l.createElement(a,r)},Z(t,null,[{key:"canUseDOM",set:function(e){a.canUseDOM=e}}]),t}(l.Component),o.propTypes={base:s().object,bodyAttributes:s().object,children:s().oneOfType([s().arrayOf(s().node),s().node]),defaultTitle:s().string,defer:s().bool,encodeSpecialCharacters:s().bool,htmlAttributes:s().object,link:s().arrayOf(s().object),meta:s().arrayOf(s().object),noscript:s().arrayOf(s().object),onChangeClientState:s().func,script:s().arrayOf(s().object),style:s().arrayOf(s().object),title:s().string,titleAttributes:s().object,titleTemplate:s().string},o.defaultProps={defer:!0,encodeSpecialCharacters:!0},o.peek=a.peek,o.rewind=function(){var e=a.rewind();return e||(e=pe({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),e},i);me.renderStatic=me.rewind;var ge=function(e){return l.createElement(me,Object.assign({},e))}},9960:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return p}});var r=n(3366),a=n(7294),o=n(3727),i=n(2263),l=n(3919),u=n(412),s=(0,a.createContext)({collectLink:function(){}});var c=n(4996),d=n(9356),f=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"];var p=function(e){var t,n,p=e.isNavLink,h=e.to,m=e.href,g=e.activeClassName,v=e.isActive,b=e["data-noBrokenLinkCheck"],y=e.autoAddBaseUrl,w=void 0===y||y,k=(0,r.Z)(e,f),E=(0,i.default)().siteConfig,S=E.trailingSlash,x=E.baseUrl,_=(0,c.C)().withBaseUrl,C=(0,a.useContext)(s),T=h||m,L=(0,l.Z)(T),A=null==T?void 0:T.replace("pathname://",""),P=void 0!==A?(n=A,w&&function(e){return e.startsWith("/")}(n)?_(n):n):void 0;P&&L&&(P=(0,d.applyTrailingSlash)(P,{trailingSlash:S,baseUrl:x}));var O=(0,a.useRef)(!1),D=p?o.OL:o.rU,R=u.Z.canUseIntersectionObserver,N=(0,a.useRef)();(0,a.useEffect)((function(){return!R&&L&&null!=P&&window.docusaurus.prefetch(P),function(){R&&N.current&&N.current.disconnect()}}),[N,P,R,L]);var F=null!==(t=null==P?void 0:P.startsWith("#"))&&void 0!==t&&t,I=!P||!L||F;return P&&L&&!F&&!b&&C.collectLink(P),I?a.createElement("a",Object.assign({href:P},T&&!L&&{target:"_blank",rel:"noopener noreferrer"},k)):a.createElement(D,Object.assign({},k,{onMouseEnter:function(){O.current||null==P||(window.docusaurus.preload(P),O.current=!0)},innerRef:function(e){var t,n;R&&e&&L&&(t=e,n=function(){null!=P&&window.docusaurus.prefetch(P)},N.current=new window.IntersectionObserver((function(e){e.forEach((function(e){t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(N.current.unobserve(t),N.current.disconnect(),n())}))})),N.current.observe(t))},to:P||""},p&&{isActive:v,activeClassName:g}))}},5999:function(e,t,n){"use strict";n.d(t,{Z:function(){return c},I:function(){return s}});var r=n(7294),a=/{\w+}/g,o="{}";function i(e,t){var n=[],i=e.replace(a,(function(e){var a=e.substring(1,e.length-1),i=null==t?void 0:t[a];if(void 0!==i){var l=r.isValidElement(i)?i:String(i);return n.push(l),o}return e}));return 0===n.length?e:n.every((function(e){return"string"==typeof e}))?i.split(o).reduce((function(e,t,r){var a;return e.concat(t).concat(null!==(a=n[r])&&void 0!==a?a:"")}),""):i.split(o).reduce((function(e,t,a){return[].concat(e,[r.createElement(r.Fragment,{key:a},t,n[a])])}),[])}var l=n(7529);function u(e){var t,n,r=e.id,a=e.message;if(void 0===r&&void 0===a)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return null!==(n=null!==(t=l[null!=r?r:a])&&void 0!==t?t:a)&&void 0!==n?n:r}function s(e,t){return i(u({message:e.message,id:e.id}),t)}function c(e){var t=e.children,n=e.id,r=e.values;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");return i(u({message:t,id:n}),r)}},9913:function(e,t,n){"use strict";n.d(t,{_:function(){return a},t:function(){return o}});var r=n(7294),a=r.createContext(!1);function o(e){var t=e.children,n=(0,r.useState)(!1),o=n[0],i=n[1];return(0,r.useEffect)((function(){i(!0)}),[]),r.createElement(a.Provider,{value:o},t)}},9935:function(e,t,n){"use strict";n.d(t,{m:function(){return r}});var r="default"},7041:function(e,t,n){"use strict";n.d(t,{_:function(){return c},M:function(){return d}});var r=n(7294),a=n(9782),o=JSON.parse('{"docusaurus-plugin-content-docs":{"en":{"path":"/ckibana-docs/en/docs/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/ckibana-docs/en/docs/","mainDocId":"index","docs":[{"id":"api-docs","path":"/ckibana-docs/en/docs/api-docs","sidebar":"tutorialSidebar"},{"id":"index","path":"/ckibana-docs/en/docs/","sidebar":"tutorialSidebar"},{"id":"troubleshooting","path":"/ckibana-docs/en/docs/troubleshooting","sidebar":"tutorialSidebar"},{"id":"UserCase","path":"/ckibana-docs/en/docs/UserCase","sidebar":"tutorialSidebar"}]}]},"default":{"path":"/ckibana-docs/zh/docs/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/ckibana-docs/zh/docs/","mainDocId":"index","docs":[{"id":"api-docs","path":"/ckibana-docs/zh/docs/api-docs","sidebar":"tutorialSidebar"},{"id":"index","path":"/ckibana-docs/zh/docs/","sidebar":"tutorialSidebar"},{"id":"troubleshooting","path":"/ckibana-docs/zh/docs/troubleshooting","sidebar":"tutorialSidebar"},{"id":"UserCase","path":"/ckibana-docs/zh/docs/UserCase","sidebar":"tutorialSidebar"}]}]}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr"}}}'),l=n(7529),u=JSON.parse('{"docusaurusVersion":"2.0.0-beta.14","siteVersion":"0.0.0","pluginVersions":{"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.0.0-beta.14"},"docusaurus-plugin-image-zoom":{"type":"package","name":"plugin-image-zoom","version":"0.0.0"},"docusaurus-plugin-sass":{"type":"package","name":"docusaurus-plugin-sass","version":"0.2.2"},"docusaurus-plugin-local-resolve":{"type":"package","name":"docusaurus-plugin-module-alias","version":"0.0.2"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.0.0-beta.14"},"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.0.0-beta.14"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.0.0-beta.14"},"docusaurus-plugin-debug":{"type":"package","name":"@docusaurus/plugin-debug","version":"2.0.0-beta.14"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.0.0-beta.14"},"@easyops-cn/docusaurus-search-local":{"type":"package","name":"@easyops-cn/docusaurus-search-local","version":"0.23.1"}}}'),s={siteConfig:a.default,siteMetadata:u,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(s);function d(e){var t=e.children;return r.createElement(c.Provider,{value:s},t)}},3919:function(e,t,n){"use strict";function r(e){return!0===/^(\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:function(){return a},b:function(){return r}})},6291:function(e,t,n){"use strict";var r=n(8790);t.Z=r.H},8143:function(e,t,n){"use strict";n.r(t),n.d(t,{BrowserRouter:function(){return r.VK},HashRouter:function(){return r.UT},Link:function(){return r.rU},MemoryRouter:function(){return r.VA},NavLink:function(){return r.OL},Prompt:function(){return r.NL},Redirect:function(){return r.l_},Route:function(){return r.AW},Router:function(){return r.F0},StaticRouter:function(){return r.gx},Switch:function(){return r.rs},generatePath:function(){return r.Gn},matchPath:function(){return r.LX},useHistory:function(){return r.k6},useLocation:function(){return r.TH},useParams:function(){return r.UO},useRouteMatch:function(){return r.$B},withRouter:function(){return r.EN}});var r=n(3727)},4996:function(e,t,n){"use strict";n.d(t,{C:function(){return o},Z:function(){return i}});var r=n(2263),a=n(3919);function o(){var e=(0,r.default)().siteConfig,t=(e=void 0===e?{}:e).baseUrl,n=void 0===t?"/":t,o=e.url;return{withBaseUrl:function(e,t){return function(e,t,n,r){var o=void 0===r?{}:r,i=o.forcePrependBaseUrl,l=void 0!==i&&i,u=o.absolute,s=void 0!==u&&u;if(!n)return n;if(n.startsWith("#"))return n;if((0,a.b)(n))return n;if(l)return t+n;var c=n.startsWith(t)?n:t+n.replace(/^\//,"");return s?e+c:c}(o,n,e,t)}}}function i(e,t){return void 0===t&&(t={}),(0,o().withBaseUrl)(e,t)}},2263:function(e,t,n){"use strict";n.r(t);var r=n(7294),a=n(7041);t.default=function(){return(0,r.useContext)(a._)}},8084:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return o},useAllPluginInstancesData:function(){return i},usePluginData:function(){return l}});var r=n(2263),a=n(9935);function o(){var e=(0,r.default)().globalData;if(!e)throw new Error("Docusaurus global data not found.");return e}function i(e){var t=o()[e];if(!t)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return t}function l(e,t){void 0===t&&(t=a.m);var n=i(e)[t];if(!n)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin with id "'+t+'".');return n}},2389:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(7294),a=n(9913);function o(){return(0,r.useContext)(a._)}},9670:function(e,t){"use strict";t.Z=function(e){var t={};return function e(n,r){Object.keys(n).forEach((function(a){var o,i=n[a],l=r?r+"."+a:a;"object"==typeof(o=i)&&o&&Object.keys(o).length>0?e(i,l):t[l]=i}))}(e),t}},4953:function(e,t,n){"use strict";var r=n(7294),a=n(7019),o=n(780);function i(e){var t=e.error,n=e.tryAgain;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"50vh",width:"100%",fontSize:"20px"}},r.createElement("h1",null,"This page crashed."),r.createElement("p",null,t.message),r.createElement("button",{type:"button",onClick:n},"Try again"))}t.Z=function(e){var t=e.error,n=e.tryAgain;return r.createElement(o.Z,{fallback:function(){return r.createElement(i,{error:t,tryAgain:n})}},r.createElement(a.Z,{title:"Page Error"},r.createElement(i,{error:t,tryAgain:n})))}},5743:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=t.trailingSlash,r=t.baseUrl;if(e.startsWith("#"))return e;if(void 0===n)return e;var a,o=e.split(/[#?]/)[0],i="/"===o||o===r?o:(a=o,n?function(e){return e.endsWith("/")?e:e+"/"}(a):function(e){return e.endsWith("/")?e.slice(0,-1):e}(a));return e.replace(o,i)}},9356:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.applyTrailingSlash=void 0;var a=n(5743);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}})},8408:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getDocVersionSuggestions=t.getActiveDocContext=t.getActiveVersion=t.getLatestVersion=t.getActivePlugin=void 0;var r=n(8143);t.getActivePlugin=function(e,t,n){void 0===n&&(n={});var a=Object.entries(e).find((function(e){e[0];var n=e[1];return!!(0,r.matchPath)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error("Can't find active docs plugin for \""+t+'" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: '+Object.values(e).map((function(e){return e.path})).join(", "));return o};t.getLatestVersion=function(e){return e.versions.find((function(e){return e.isLast}))};t.getActiveVersion=function(e,n){var a=(0,t.getLatestVersion)(e);return[].concat(e.versions.filter((function(e){return e!==a})),[a]).find((function(e){return!!(0,r.matchPath)(n,{path:e.path,exact:!1,strict:!1})}))};t.getActiveDocContext=function(e,n){var a,o,i=(0,t.getActiveVersion)(e,n),l=null==i?void 0:i.docs.find((function(e){return!!(0,r.matchPath)(n,{path:e.path,exact:!0,strict:!1})}));return{activeVersion:i,activeDoc:l,alternateDocVersions:l?(a=l.id,o={},e.versions.forEach((function(e){e.docs.forEach((function(t){t.id===a&&(o[e.name]=t)}))})),o):{}}};t.getDocVersionSuggestions=function(e,n){var r=(0,t.getLatestVersion)(e),a=(0,t.getActiveDocContext)(e,n);return{latestDocSuggestion:null==a?void 0:a.alternateDocVersions[r.name],latestVersionSuggestion:r}}},6730:function(e,t,n){"use strict";t.Jo=t.Iw=t.zu=t.yW=t.gB=t.gA=t.zh=t._r=void 0;var r=n(655),a=n(8143),o=(0,r.__importStar)(n(8084)),i=n(8408),l={};t._r=function(){var e;return null!==(e=(0,o.default)()["docusaurus-plugin-content-docs"])&&void 0!==e?e:l};t.zh=function(e){return(0,o.usePluginData)("docusaurus-plugin-content-docs",e)};t.gA=function(e){void 0===e&&(e={});var n=(0,t._r)(),r=(0,a.useLocation)().pathname;return(0,i.getActivePlugin)(n,r,e)};t.gB=function(e){return(0,t.zh)(e).versions};t.yW=function(e){var n=(0,t.zh)(e);return(0,i.getLatestVersion)(n)};t.zu=function(e){var n=(0,t.zh)(e),r=(0,a.useLocation)().pathname;return(0,i.getActiveVersion)(n,r)};t.Iw=function(e){var n=(0,t.zh)(e),r=(0,a.useLocation)().pathname;return(0,i.getActiveDocContext)(n,r)};t.Jo=function(e){var n=(0,t.zh)(e),r=(0,a.useLocation)().pathname;return(0,i.getDocVersionSuggestions)(n,r)}},541:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(7294),a="iconExternalLink_wgqa";var o=function(e){var t=e.width,n=void 0===t?13.5:t,o=e.height,i=void 0===o?13.5:o;return r.createElement("svg",{width:n,height:i,"aria-hidden":"true",viewBox:"0 0 24 24",className:a},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},3264:function(e,t,n){"use strict";var r=n(7462),a=n(3366),o=n(7294),i=["width","height"];t.Z=function(e){var t=e.width,n=void 0===t?20:t,l=e.height,u=void 0===l?20:l,s=(0,a.Z)(e,i);return o.createElement("svg",(0,r.Z)({viewBox:"0 0 20 20",width:n,height:u,"aria-hidden":"true"},s),o.createElement("path",{fill:"currentColor",d:"M19.753 10.909c-.624-1.707-2.366-2.726-4.661-2.726-.09 0-.176.002-.262.006l-.016-2.063 3.525-.607c.115-.019.133-.119.109-.231-.023-.111-.167-.883-.188-.976-.027-.131-.102-.127-.207-.109-.104.018-3.25.461-3.25.461l-.013-2.078c-.001-.125-.069-.158-.194-.156l-1.025.016c-.105.002-.164.049-.162.148l.033 2.307s-3.061.527-3.144.543c-.084.014-.17.053-.151.143.019.09.19 1.094.208 1.172.018.08.072.129.188.107l2.924-.504.035 2.018c-1.077.281-1.801.824-2.256 1.303-.768.807-1.207 1.887-1.207 2.963 0 1.586.971 2.529 2.328 2.695 3.162.387 5.119-3.06 5.769-4.715 1.097 1.506.256 4.354-2.094 5.98-.043.029-.098.129-.033.207l.619.756c.08.096.206.059.256.023 2.51-1.73 3.661-4.515 2.869-6.683zm-7.386 3.188c-.966-.121-.944-.914-.944-1.453 0-.773.327-1.58.876-2.156a3.21 3.21 0 011.229-.799l.082 4.277a2.773 2.773 0 01-1.243.131zm2.427-.553l.046-4.109c.084-.004.166-.01.252-.01.773 0 1.494.145 1.885.361.391.217-1.023 2.713-2.183 3.758zm-8.95-7.668a.196.196 0 00-.196-.145h-1.95a.194.194 0 00-.194.144L.008 16.916c-.017.051-.011.076.062.076h1.733c.075 0 .099-.023.114-.072l1.008-3.318h3.496l1.008 3.318c.016.049.039.072.113.072h1.734c.072 0 .078-.025.062-.076-.014-.05-3.083-9.741-3.494-11.04zm-2.618 6.318l1.447-5.25 1.447 5.25H3.226z"}))}},7019:function(e,t,n){"use strict";n.d(t,{Z:function(){return De}});var r=n(7294),a=n(6010),o=n(780),i=n(6775),l=n(5999),u=n(3810),s="skipToContent_OuoZ";function c(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}var d=function(){var e=(0,r.useRef)(null),t=(0,i.k6)().action;return(0,u.SL)((function(n){var r=n.location;e.current&&!r.hash&&"PUSH"===t&&c(e.current)})),r.createElement("div",{ref:e},r.createElement("a",{href:"#",className:s,onClick:function(e){e.preventDefault();var t=document.querySelector("main:first-of-type")||document.querySelector(".main-wrapper");t&&c(t)}},r.createElement(l.Z,{id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"},"Skip to main content")))},f=n(7462),p=n(3366),h=["width","height","color","strokeWidth","className"];function m(e){var t=e.width,n=void 0===t?21:t,a=e.height,o=void 0===a?21:a,i=e.color,l=void 0===i?"currentColor":i,u=e.strokeWidth,s=void 0===u?1.2:u,c=(e.className,(0,p.Z)(e,h));return r.createElement("svg",(0,f.Z)({viewBox:"0 0 15 15",width:n,height:o},c),r.createElement("g",{stroke:l,strokeWidth:s},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}var g="announcementBar_axC9",v="announcementBarPlaceholder_xYHE",b="announcementBarClose_A3A1",y="announcementBarContent_6uhP";var w=function(){var e=(0,u.nT)(),t=e.isActive,n=e.close,o=(0,u.LU)().announcementBar;if(!t)return null;var i=o.content,s=o.backgroundColor,c=o.textColor,d=o.isCloseable;return r.createElement("div",{className:g,style:{backgroundColor:s,color:c},role:"banner"},d&&r.createElement("div",{className:v}),r.createElement("div",{className:y,dangerouslySetInnerHTML:{__html:i}}),d?r.createElement("button",{type:"button",className:(0,a.Z)("clean-btn close",b),onClick:n,"aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},r.createElement(m,{width:14,height:14,strokeWidth:3.1})):null)},k=n(7445),E=n(2389),S="toggle_iYfV",x="toggleScreenReader_h9qa",_="toggleDisabled_xj38",C="toggleTrack_t-f2",T="toggleTrackCheck_mk7D",L="toggleChecked_a04y",A="toggleTrackX_dm8H",P="toggleTrackThumb_W6To",O="toggleFocused_pRSw",D="toggleIcon_pHJ9",R=(0,r.memo)((function(e){var t,n=e.className,o=e.switchConfig,i=e.checked,l=e.disabled,u=e.onChange,s=o.darkIcon,c=o.darkIconStyle,d=o.lightIcon,f=o.lightIconStyle,p=(0,r.useState)(i),h=p[0],m=p[1],g=(0,r.useState)(!1),v=g[0],b=g[1],y=(0,r.useRef)(null);return r.createElement("div",{className:(0,a.Z)(S,n,(t={},t[L]=h,t[O]=v,t[_]=l,t))},r.createElement("div",{className:C,role:"button",tabIndex:-1,onClick:function(){var e;return null==(e=y.current)?void 0:e.click()}},r.createElement("div",{className:T},r.createElement("span",{className:D,style:c},s)),r.createElement("div",{className:A},r.createElement("span",{className:D,style:f},d)),r.createElement("div",{className:P})),r.createElement("input",{ref:y,checked:h,type:"checkbox",className:x,"aria-label":"Switch between dark and light mode",onChange:u,onClick:function(){return m(!h)},onFocus:function(){return b(!0)},onBlur:function(){return b(!1)},onKeyDown:function(e){var t;"Enter"===e.key&&(null==(t=y.current)||t.click())}}))}));function N(e){var t=(0,u.LU)().colorMode.switchConfig,n=(0,E.Z)();return r.createElement(R,(0,f.Z)({switchConfig:t,disabled:!n},e))}var F=n(5350),I=function(e){var t=(0,r.useState)(e),n=t[0],a=t[1],o=(0,r.useRef)(!1),i=(0,r.useRef)(0),l=(0,r.useCallback)((function(e){null!==e&&(i.current=e.getBoundingClientRect().height)}),[]);return(0,u.RF)((function(t,n){if(e){var r=t.scrollY;if(r=l?a(!1):r+s0&&r.createElement("button",{type:"button",className:"clean-btn navbar-sidebar__back",onClick:s.hide},r.createElement(l.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu")),s.content)))}var W=function(){var e,t=(0,u.LU)().navbar,n=t.hideOnScroll,o=t.style,i=function(){var e=(0,j.Z)(),t="mobile"===e,n=(0,r.useState)(!1),a=n[0],o=n[1];(0,u.Rb)((function(){if(a)return o(!1),!1}));var i=(0,r.useCallback)((function(){o((function(e){return!e}))}),[]);return(0,r.useEffect)((function(){"desktop"===e&&o(!1)}),[e]),{shouldRender:t,toggle:i,shown:a}}(),l=Q(),s=(0,M.gA)(),c=I(n),d=c.navbarRef,p=c.isNavbarVisible,h=G(),m=h.some((function(e){return"search"===e.type})),g=function(e){return{leftItems:e.filter((function(e){var t;return"left"===(null!=(t=e.position)?t:$)})),rightItems:e.filter((function(e){var t;return"right"===(null!=(t=e.position)?t:$)}))}}(h),v=g.leftItems,b=g.rightItems;return r.createElement("nav",{ref:d,className:(0,a.Z)("navbar","navbar--fixed-top",(e={"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown},e[q.navbarHideable]=n,e[q.navbarHidden]=n&&!p,e))},r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},((null==h?void 0:h.length)>0||s)&&r.createElement("button",{"aria-label":"Navigation bar toggle",className:"navbar__toggle clean-btn",type:"button",tabIndex:0,onClick:i.toggle,onKeyDown:i.toggle},r.createElement(H,null)),r.createElement(U.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title"}),v.map((function(e,t){return r.createElement(B.Z,(0,f.Z)({},e,{key:t}))}))),r.createElement("div",{className:"navbar__items navbar__items--right"},b.map((function(e,t){return r.createElement(B.Z,(0,f.Z)({},e,{key:t}))})),!l.disabled&&r.createElement(N,{className:q.toggle,checked:l.isDarkTheme,onChange:l.toggle}),!m&&r.createElement(k.Z,null))),r.createElement("div",{role:"presentation",className:"navbar-sidebar__backdrop",onClick:i.toggle}),i.shouldRender&&r.createElement(V,{sidebarShown:i.shown,toggleSidebar:i.toggle}))},K=n(9960),Y=n(4996),X=n(3919),J="footerLogoLink_SRtH",ee=n(9750),te=n(541),ne=["to","href","label","prependBaseUrlToHref"];function re(e){var t=e.to,n=e.href,a=e.label,o=e.prependBaseUrlToHref,i=(0,p.Z)(e,ne),l=(0,Y.Z)(t),u=(0,Y.Z)(n,{forcePrependBaseUrl:!0});return r.createElement(K.default,(0,f.Z)({className:"footer__link-item"},n?{href:o?u:n}:{to:l},i),n&&!(0,X.Z)(n)?r.createElement("span",null,a,r.createElement(te.Z,null)):a)}function ae(e){var t=e.sources,n=e.alt,a=e.width,o=e.height;return r.createElement(ee.Z,{className:"footer__logo",alt:n,sources:t,width:a,height:o})}function oe(e){var t=e.links;return r.createElement(r.Fragment,null,t.map((function(e,t){return r.createElement("div",{key:t,className:"col footer__col"},r.createElement("div",{className:"footer__title"},e.title),r.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.createElement("li",{key:e.href||e.to,className:"footer__item"},r.createElement(re,e))}))))})))}function ie(e){var t=e.links;return r.createElement("div",{className:"footer__links"},t.map((function(e,n){return r.createElement(r.Fragment,null,e.html?r.createElement("span",{key:n,className:"footer__link-item",dangerouslySetInnerHTML:{__html:e.html}}):r.createElement(re,e),t.length!==n+1&&r.createElement("span",{className:"footer__link-separator"},"\xb7"))})))}function le(){var e=(0,u.LU)().footer,t=e||{},n=t.copyright,o=t.links,i=void 0===o?[]:o,l=t.logo,s=void 0===l?{}:l,c={light:(0,Y.Z)(s.src),dark:(0,Y.Z)(s.srcDark||s.src)};return e?r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===e.style})},r.createElement("div",{className:"container container-fluid"},i&&i.length>0&&(function(e){return"title"in e[0]}(i)?r.createElement("div",{className:"row footer__links"},r.createElement(oe,{links:i})):r.createElement("div",{className:"footer__links text--center"},r.createElement(ie,{links:i}))),(s||n)&&r.createElement("div",{className:"footer__bottom text--center"},s&&(s.src||s.srcDark)&&r.createElement("div",{className:"margin-bottom--sm"},s.href?r.createElement(K.default,{href:s.href,className:J},r.createElement(ae,{alt:s.alt,sources:c,width:s.width,height:s.height})):r.createElement(ae,{alt:s.alt,sources:c})),n?r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:n}}):null))):null}var ue=r.memo(le),se=n(412),ce=(0,u.WA)("theme"),de="light",fe="dark",pe=function(e){return e===fe?fe:de},he=function(e){(0,u.WA)("theme").set(pe(e))},me=function(){var e=(0,u.LU)().colorMode,t=e.defaultMode,n=e.disableSwitch,a=e.respectPrefersColorScheme,o=(0,r.useState)(function(e){return se.Z.canUseDOM?pe(document.documentElement.getAttribute("data-theme")):pe(e)}(t)),i=o[0],l=o[1],s=(0,r.useCallback)((function(){l(de),he(de)}),[]),c=(0,r.useCallback)((function(){l(fe),he(fe)}),[]);return(0,r.useEffect)((function(){document.documentElement.setAttribute("data-theme",pe(i))}),[i]),(0,r.useEffect)((function(){if(!n)try{var e=ce.get();null!==e&&l(pe(e))}catch(t){console.error(t)}}),[n,l]),(0,r.useEffect)((function(){n&&!a||window.matchMedia("(prefers-color-scheme: dark)").addListener((function(e){var t=e.matches;l(t?fe:de)}))}),[n,a]),{isDarkTheme:i===fe,setLightTheme:s,setDarkTheme:c}},ge=n(2924);var ve=function(e){var t=me(),n=t.isDarkTheme,a=t.setLightTheme,o=t.setDarkTheme,i=(0,r.useMemo)((function(){return{isDarkTheme:n,setLightTheme:a,setDarkTheme:o}}),[n,a,o]);return r.createElement(ge.Z.Provider,{value:i},e.children)},be="docusaurus.tab.",ye=function(){var e=(0,r.useState)({}),t=e[0],n=e[1],a=(0,r.useCallback)((function(e,t){(0,u.WA)("docusaurus.tab."+e).set(t)}),[]);return(0,r.useEffect)((function(){try{var e={};(0,u._f)().forEach((function(t){if(t.startsWith(be)){var n=t.substring(be.length);e[n]=(0,u.WA)(t).get()}})),n(e)}catch(t){console.error(t)}}),[]),{tabGroupChoices:t,setTabGroupChoices:function(e,t){n((function(n){var r;return Object.assign({},n,((r={})[e]=t,r))})),a(e,t)}}},we=(0,r.createContext)(void 0);var ke=function(e){var t=ye(),n=t.tabGroupChoices,a=t.setTabGroupChoices,o=(0,r.useMemo)((function(){return{tabGroupChoices:n,setTabGroupChoices:a}}),[n,a]);return r.createElement(we.Provider,{value:o},e.children)};function Ee(e){var t=e.children;return r.createElement(ve,null,r.createElement(u.pl,null,r.createElement(ke,null,r.createElement(u.OC,null,r.createElement(u.L5,null,r.createElement(u.Cn,null,t))))))}var Se=n(2859),xe=n(2263);function _e(e){var t=e.locale,n=e.version,a=e.tag;return r.createElement(Se.default,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),a&&r.createElement("meta",{name:"docusaurus_tag",content:a}))}var Ce=n(1217);function Te(){var e=(0,xe.default)().i18n,t=e.defaultLocale,n=e.locales,a=(0,u.l5)();return r.createElement(Se.default,null,n.map((function(e){return r.createElement("link",{key:e,rel:"alternate",href:a.createUrl({locale:e,fullyQualified:!0}),hrefLang:e})})),r.createElement("link",{rel:"alternate",href:a.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}))}function Le(e){var t=e.permalink,n=(0,xe.default)().siteConfig.url,a=function(){var e=(0,xe.default)().siteConfig.url,t=(0,i.TH)().pathname;return e+(0,Y.Z)(t)}(),o=t?""+n+t:a;return r.createElement(Se.default,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function Ae(e){var t=(0,xe.default)(),n=t.siteConfig.favicon,a=t.i18n,o=a.currentLocale,i=a.localeConfigs,l=(0,u.LU)(),s=l.metadata,c=l.image,d=e.title,p=e.description,h=e.image,m=e.keywords,g=e.searchMetadata,v=(0,Y.Z)(n),b=(0,u.pe)(d),y=o,w=i[o].direction;return r.createElement(r.Fragment,null,r.createElement(Se.default,null,r.createElement("html",{lang:y,dir:w}),n&&r.createElement("link",{rel:"icon",href:v}),r.createElement("title",null,b),r.createElement("meta",{property:"og:title",content:b}),r.createElement("meta",{name:"twitter:card",content:"summary_large_image"})),c&&r.createElement(Ce.Z,{image:c}),h&&r.createElement(Ce.Z,{image:h}),r.createElement(Ce.Z,{description:p,keywords:m}),r.createElement(Le,null),r.createElement(Te,null),r.createElement(_e,(0,f.Z)({tag:u.HX,locale:o},g)),r.createElement(Se.default,null,s.map((function(e,t){return r.createElement("meta",(0,f.Z)({key:"metadata_"+t},e))}))))}var Pe=function(){(0,r.useEffect)((function(){var e="navigation-with-keyboard";function t(t){"keydown"===t.type&&"Tab"===t.key&&document.body.classList.add(e),"mousedown"===t.type&&document.body.classList.remove(e)}return document.addEventListener("keydown",t),document.addEventListener("mousedown",t),function(){document.body.classList.remove(e),document.removeEventListener("keydown",t),document.removeEventListener("mousedown",t)}}),[])};function Oe(e){var t=e.error,n=e.tryAgain;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(l.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("p",null,t.message),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},r.createElement(l.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again when the page crashed"},"Try again"))))))}var De=function(e){var t=e.children,n=e.noFooter,i=e.wrapperClassName,l=e.pageClassName;return Pe(),r.createElement(Ee,null,r.createElement(Ae,e),r.createElement(d,null),r.createElement(w,null),r.createElement(W,null),r.createElement("div",{className:(0,a.Z)(u.kM.wrapper.main,i,l)},r.createElement(o.Z,{fallback:Oe},t)),!n&&r.createElement(ue,null))}},5537:function(e,t,n){"use strict";var r=n(7462),a=n(3366),o=n(7294),i=n(9960),l=n(9750),u=n(4996),s=n(2263),c=n(3810),d=["imageClassName","titleClassName"];t.Z=function(e){var t=(0,s.default)().siteConfig.title,n=(0,c.LU)().navbar,f=n.title,p=n.logo,h=void 0===p?{src:""}:p,m=e.imageClassName,g=e.titleClassName,v=(0,a.Z)(e,d),b=(0,u.Z)(h.href||"/"),y={light:(0,u.Z)(h.src),dark:(0,u.Z)(h.srcDark||h.src)},w=o.createElement(l.Z,{sources:y,height:h.height,width:h.width,alt:h.alt||f||t});return o.createElement(i.default,(0,r.Z)({to:b},v,h.target&&{target:h.target}),h.src&&(m?o.createElement("div",{className:m},w):w),null!=f&&o.createElement("b",{className:g},f))}},5525:function(e,t,n){"use strict";n.d(t,{O:function(){return v}});var r=n(7462),a=n(3366),o=n(7294),i=n(6010),l=n(9960),u=n(4996),s=n(541),c=n(3919),d=n(3810),f=n(9194),p=["activeBasePath","activeBaseRegex","to","href","label","activeClassName","prependBaseUrlToHref"],h=["className","isDropdownItem"],m=["className","isDropdownItem"],g=["mobile","position"];function v(e){var t,n=e.activeBasePath,i=e.activeBaseRegex,f=e.to,h=e.href,m=e.label,g=e.activeClassName,v=void 0===g?"":g,b=e.prependBaseUrlToHref,y=(0,a.Z)(e,p),w=(0,u.Z)(f),k=(0,u.Z)(n),E=(0,u.Z)(h,{forcePrependBaseUrl:!0}),S=m&&h&&!(0,c.Z)(h),x="dropdown__link--active"===v;return o.createElement(l.default,(0,r.Z)({},h?{href:b?E:h}:Object.assign({isNavLink:!0,activeClassName:null!=(t=y.className)&&t.includes(v)?"":v,to:w},n||i?{isActive:function(e,t){return i?(0,d.Fx)(i,t.pathname):t.pathname.startsWith(k)}}:null),y),S?o.createElement("span",null,m,o.createElement(s.Z,x&&{width:12,height:12})):m)}function b(e){var t=e.className,n=e.isDropdownItem,l=void 0!==n&&n,u=(0,a.Z)(e,h),s=o.createElement(v,(0,r.Z)({className:(0,i.Z)(l?"dropdown__link":"navbar__item navbar__link",t)},u));return l?o.createElement("li",null,s):s}function y(e){var t=e.className,n=(e.isDropdownItem,(0,a.Z)(e,m));return o.createElement("li",{className:"menu__list-item"},o.createElement(v,(0,r.Z)({className:(0,i.Z)("menu__link",t)},n)))}t.Z=function(e){var t,n=e.mobile,i=void 0!==n&&n,l=(e.position,(0,a.Z)(e,g)),u=i?y:b;return o.createElement(u,(0,r.Z)({},l,{activeClassName:null!=(t=l.activeClassName)?t:(0,f.E)(i)}))}},6400:function(e,t,n){"use strict";n.d(t,{Z:function(){return f}});var r=n(7462),a=n(3366),o=n(7294),i=n(5525),l=n(6730),u=n(6010),s=n(9194),c=n(3810),d=["docId","label","docsPluginId"];function f(e){var t,n=e.docId,f=e.label,p=e.docsPluginId,h=(0,a.Z)(e,d),m=(0,l.Iw)(p),g=m.activeVersion,v=m.activeDoc,b=(0,c.J)(p).preferredVersion,y=(0,l.yW)(p),w=function(e,t){var n=e.flatMap((function(e){return e.docs})),r=n.find((function(e){return e.id===t}));if(!r){var a=n.map((function(e){return e.id})).join("\n- ");throw new Error("DocNavbarItem: couldn't find any doc with id \""+t+'" in version'+(e.length?"s":"")+" "+e.map((function(e){return e.name})).join(", ")+'".\nAvailable doc ids are:\n- '+a)}return r}((0,c.jj)([g,b,y].filter(Boolean)),n),k=(0,s.E)(h.mobile);return o.createElement(i.Z,(0,r.Z)({exact:!0},h,{className:(0,u.Z)(h.className,(t={},t[k]=(null==v?void 0:v.sidebar)&&v.sidebar===w.sidebar,t)),activeClassName:k,label:null!=f?f:w.id,to:w.path}))}},9308:function(e,t,n){"use strict";n.d(t,{Z:function(){return p}});var r=n(7462),a=n(3366),o=n(7294),i=n(5525),l=n(3154),u=n(6730),s=n(3810),c=n(5999),d=["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter"],f=function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))};function p(e){var t,n,p=e.mobile,h=e.docsPluginId,m=e.dropdownActiveClassDisabled,g=e.dropdownItemsBefore,v=e.dropdownItemsAfter,b=(0,a.Z)(e,d),y=(0,u.Iw)(h),w=(0,u.gB)(h),k=(0,u.yW)(h),E=(0,s.J)(h),S=E.preferredVersion,x=E.savePreferredVersionName;var _,C=(_=w.map((function(e){var t=(null==y?void 0:y.alternateDocVersions[e.name])||f(e);return{isNavLink:!0,label:e.label,to:t.path,isActive:function(){return e===(null==y?void 0:y.activeVersion)},onClick:function(){x(e.name)}}})),[].concat(g,_,v)),T=null!=(t=null!=(n=y.activeVersion)?n:S)?t:k,L=p&&C?(0,c.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):T.label,A=p&&C?void 0:f(T).path;return C.length<=1?o.createElement(i.Z,(0,r.Z)({},b,{mobile:p,label:L,to:A,isActive:m?function(){return!1}:void 0})):o.createElement(l.Z,(0,r.Z)({},b,{mobile:p,label:L,to:A,items:C,isActive:m?function(){return!1}:void 0}))}},7250:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(7462),a=n(3366),o=n(7294),i=n(5525),l=n(6730),u=n(3810),s=["label","to","docsPluginId"];function c(e){var t,n=e.label,c=e.to,d=e.docsPluginId,f=(0,a.Z)(e,s),p=(0,l.zu)(d),h=(0,u.J)(d).preferredVersion,m=(0,l.yW)(d),g=null!=(t=null!=p?p:h)?t:m,v=null!=n?n:g.label,b=null!=c?c:function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))}(g).path;return o.createElement(i.Z,(0,r.Z)({},f,{label:v,to:b}))}},3154:function(e,t,n){"use strict";var r=n(7462),a=n(3366),o=n(7294),i=n(6010),l=n(3810),u=n(5525),s=n(5131),c=["items","position","className"],d=["items","className","position"],f=["mobile"];function p(e,t){return e.some((function(e){return function(e,t){return!!(0,l.Mg)(e.to,t)||!!(0,l.Fx)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)}))}function h(e){var t,n=e.items,l=e.position,d=e.className,f=(0,a.Z)(e,c),p=(0,o.useRef)(null),h=(0,o.useState)(!1),m=h[0],g=h[1];return(0,o.useEffect)((function(){var e=function(e){p.current&&!p.current.contains(e.target)&&g(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[p]),o.createElement("div",{ref:p,className:(0,i.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===l,"dropdown--show":m})},o.createElement(u.O,(0,r.Z)({href:f.to?void 0:"#",className:(0,i.Z)("navbar__link",d)},f,{onClick:f.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),g(!m))}}),null!=(t=f.children)?t:f.label),o.createElement("ul",{className:"dropdown__menu"},n.map((function(e,t){return o.createElement(s.Z,(0,r.Z)({isDropdownItem:!0,onKeyDown:function(e){if(t===n.length-1&&"Tab"===e.key){e.preventDefault(),g(!1);var r=p.current.nextElementSibling;r&&r.focus()}},activeClassName:"dropdown__link--active"},e,{key:t}))}))))}function m(e){var t,n=e.items,c=e.className,f=(e.position,(0,a.Z)(e,d)),h=(0,l.be)(),m=p(n,h),g=(0,l.uR)({initialState:function(){return!m}}),v=g.collapsed,b=g.toggleCollapsed,y=g.setCollapsed;return(0,o.useEffect)((function(){m&&y(!m)}),[h,m,y]),o.createElement("li",{className:(0,i.Z)("menu__list-item",{"menu__list-item--collapsed":v})},o.createElement(u.O,(0,r.Z)({role:"button",className:(0,i.Z)("menu__link menu__link--sublist",c)},f,{onClick:function(e){e.preventDefault(),b()}}),null!=(t=f.children)?t:f.label),o.createElement(l.zF,{lazy:!0,as:"ul",className:"menu__list",collapsed:v},n.map((function(e,t){return o.createElement(s.Z,(0,r.Z)({mobile:!0,isDropdownItem:!0,onClick:f.onClick,activeClassName:"menu__link--active"},e,{key:t}))}))))}t.Z=function(e){var t=e.mobile,n=void 0!==t&&t,r=(0,a.Z)(e,f),i=n?m:h;return o.createElement(i,r)}},9194:function(e,t,n){"use strict";n.d(t,{Z:function(){return y},E:function(){return b}});var r=n(3366),a=n(7294),o=n(5525),i=n(3154),l=n(7462),u=n(3264),s=n(2263),c=n(3810),d="iconLanguage_EbrZ",f=["mobile","dropdownItemsBefore","dropdownItemsAfter"];function p(e){var t=e.mobile,n=e.dropdownItemsBefore,o=e.dropdownItemsAfter,p=(0,r.Z)(e,f),h=(0,s.default)().i18n,m=h.currentLocale,g=h.locales,v=h.localeConfigs,b=(0,c.l5)();function y(e){return v[e].label}var w=g.map((function(e){var t="pathname://"+b.createUrl({locale:e,fullyQualified:!1});return{isNavLink:!0,label:y(e),to:t,target:"_self",autoAddBaseUrl:!1,className:e===m?"dropdown__link--active":""}})),k=[].concat(n,w,o),E=t?"Languages":y(m);return a.createElement(i.Z,(0,l.Z)({},p,{mobile:t,label:a.createElement("span",null,a.createElement(u.Z,{className:d}),a.createElement("span",null,E)),items:k}))}var h=n(7445);function m(e){return e.mobile?null:a.createElement(h.Z,null)}var g=["type"],v={default:function(){return o.Z},localeDropdown:function(){return p},search:function(){return m},dropdown:function(){return i.Z},docsVersion:function(){return n(7250).Z},docsVersionDropdown:function(){return n(9308).Z},doc:function(){return n(6400).Z}};var b=function(e){return e?"menu__link--active":"navbar__link--active"};function y(e){var t=e.type,n=(0,r.Z)(e,g),o=function(e,t){return e&&"default"!==e?e:t?"dropdown":"default"}(t,void 0!==n.items),i=function(e){var t=v[e];if(!t)throw new Error('No NavbarItem component found for type "'+e+'".');return t()}(o);return a.createElement(i,n)}},1217:function(e,t,n){"use strict";n.d(t,{Z:function(){return l}});var r=n(7294),a=n(2859),o=n(3810),i=n(4996);function l(e){var t=e.title,n=e.description,l=e.keywords,u=e.image,s=e.children,c=(0,o.pe)(t),d=(0,i.C)().withBaseUrl,f=u?d(u,{absolute:!0}):void 0;return r.createElement(a.default,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),l&&r.createElement("meta",{name:"keywords",content:Array.isArray(l)?l.join(","):l}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),s)}},2924:function(e,t,n){"use strict";var r=n(7294).createContext(void 0);t.Z=r},9750:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(7462),a=n(3366),o=n(7294),i=n(6010),l=n(2389),u=n(5350),s={themedImage:"themedImage_TMUO","themedImage--light":"themedImage--light_4Vu1","themedImage--dark":"themedImage--dark_uzRr"},c=["sources","className","alt"];var d=function(e){var t=(0,l.Z)(),n=(0,u.Z)().isDarkTheme,d=e.sources,f=e.className,p=e.alt,h=void 0===p?"":p,m=(0,a.Z)(e,c),g=t?n?["dark"]:["light"]:["light","dark"];return o.createElement(o.Fragment,null,g.map((function(e){return o.createElement("img",(0,r.Z)({key:e,src:d[e],alt:h,className:(0,i.Z)(s.themedImage,s["themedImage--"+e],f)},m))})))}},5350:function(e,t,n){"use strict";var r=n(7294),a=n(2924);t.Z=function(){var e=(0,r.useContext)(a.Z);if(null==e)throw new Error('"useThemeContext" is used outside of "Layout" component. Please see https://docusaurus.io/docs/api/themes/configuration#usethemecontext.');return e}},3783:function(e,t,n){"use strict";var r=n(7294),a=n(412),o="desktop",i="mobile",l="ssr";function u(){return a.Z.canUseDOM?window.innerWidth>996?o:i:l}t.Z=function(){var e=(0,r.useState)((function(){return u()})),t=e[0],n=e[1];return(0,r.useEffect)((function(){function e(){n(u())}return window.addEventListener("resize",e),function(){window.removeEventListener("resize",e),clearTimeout(undefined)}}),[]),t}},467:function(e,t,n){"use strict";n.r(t);var r=n(412),a=n(9782);t.default=function(e){if(r.Z.canUseDOM){var t=a.default.themeConfig.prism,o=(void 0===t?{}:t).additionalLanguages,i=void 0===o?[]:o;window.Prism=e,i.forEach((function(e){n(6726)("./prism-"+e)})),delete window.Prism}}},2448:function(e,t,n){"use strict";var r=a(n(7410));function a(e){return e&&e.__esModule?e:{default:e}}(0,a(n(467)).default)(r.default)},3810:function(e,t,n){"use strict";n.d(t,{pl:function(){return Me},zF:function(){return ve},HX:function(){return Q},PO:function(){return Ce},L5:function(){return D},bT:function(){return S},qu:function(){return w},Cv:function(){return Oe},Cn:function(){return Le},OC:function(){return Je},kM:function(){return Re},WA:function(){return s},os:function(){return V},Wl:function(){return _},_F:function(){return C},Fx:function(){return rt},Mg:function(){return g},_f:function(){return c},PZ:function(){return qe},bc:function(){return q},Vo:function(){return $},nZ:function(){return G},MA:function(){return He},jj:function(){return De},l5:function(){return f},nT:function(){return Be},uR:function(){return se},J:function(){return F},Vq:function(){return x},E6:function(){return k},Rb:function(){return $e},be:function(){return Ue},SL:function(){return ae},g8:function(){return Pe},c2:function(){return ee},D9:function(){return re},RF:function(){return nt},DA:function(){return Ye},Si:function(){return We},LU:function(){return a},pe:function(){return W}});var r=n(2263);function a(){return(0,r.default)().siteConfig.themeConfig}var o="localStorage";function i(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}var l=!1;var u={get:function(){return null},set:function(){},del:function(){}};var s=function(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error('Illegal storage API usage for storage key "'+e+'".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.')}return{get:t,set:t,del:t}}(e);var n=i(null==t?void 0:t.persistence);return null===n?u:{get:function(){try{return n.getItem(e)}catch(t){return console.error("Docusaurus storage error, can't get key="+e,t),null}},set:function(t){try{n.setItem(e,t)}catch(r){console.error("Docusaurus storage error, can't set "+e+"="+t,r)}},del:function(){try{n.removeItem(e)}catch(t){console.error("Docusaurus storage error, can't delete key="+e,t)}}}};function c(e){void 0===e&&(e=o);var t=i(e);if(!t)return[];for(var n=[],r=0;r");return e}var E=(0,h.createContext)(b);function S(e){var t=e.children,n=e.sidebar;return h.createElement(E.Provider,{value:n},t)}function x(){var e=(0,h.useContext)(E);if(e===b)throw new Error("This hook requires usage of ");return e}function _(e){if(e.href)return e.href;for(var t,n=(0,m.Z)(e.items);!(t=n()).done;){var r=t.value;if("link"===r.type)return r.href;if("category"!==r.type)throw new Error("Unexpected category item type for "+JSON.stringify(r));var a=_(r);if(a)return a}}function C(e,t){var n=function(e){return void 0!==e&&g(e,t)};return"link"===e.type?n(e.href):"category"===e.type&&(n(e.href)||function(e,t){return e.some((function(e){return C(e,t)}))}(e.items,t))}var T=function(e){return"docs-preferred-version-"+e},L={save:function(e,t,n){s(T(e),{persistence:t}).set(n)},read:function(e,t){return s(T(e),{persistence:t}).get()},clear:function(e,t){s(T(e),{persistence:t}).del()}};function A(e){var t=e.pluginIds,n=e.versionPersistence,r=e.allDocsData;var a={};return t.forEach((function(e){a[e]=function(e){var t=L.read(e,n);return r[e].versions.some((function(e){return e.name===t}))?{preferredVersionName:t}:(L.clear(e,n),{preferredVersionName:null})}(e)})),a}function P(){var e=(0,p._r)(),t=a().docs.versionPersistence,n=(0,h.useMemo)((function(){return Object.keys(e)}),[e]),r=(0,h.useState)((function(){return function(e){var t={};return e.forEach((function(e){t[e]={preferredVersionName:null}})),t}(n)})),o=r[0],i=r[1];return(0,h.useEffect)((function(){i(A({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]),[o,(0,h.useMemo)((function(){return{savePreferredVersion:function(e,n){L.save(e,t,n),i((function(t){var r;return Object.assign({},t,((r={})[e]={preferredVersionName:n},r))}))}}}),[t])]}var O=(0,h.createContext)(null);function D(e){var t=e.children;return v?h.createElement(R,null,t):t}function R(e){var t=e.children,n=P();return h.createElement(O.Provider,{value:n},t)}var N=n(9935);function F(e){void 0===e&&(e=N.m);var t=(0,p.zh)(e),n=function(){var e=(0,h.useContext)(O);if(!e)throw new Error('Can\'t find docs preferred context, maybe you forgot to use the "DocsPreferredVersionContextProvider"?');return e}(),r=n[0],a=n[1],o=r[e].preferredVersionName;return{preferredVersion:o?t.versions.find((function(e){return e.name===o})):null,savePreferredVersionName:(0,h.useCallback)((function(t){a.savePreferredVersion(e,t)}),[a,e])}}var I=n(7594),z=n.n(I),j=/title=(["'])(.*?)\1/,M=/{([\d,-]+)}/,B=["js","jsBlock","jsx","python","html"],U={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},python:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},Z=["highlight-next-line","highlight-start","highlight-end"],H=function(e){void 0===e&&(e=B);var t=e.map((function(e){var t=U[e],n=t.start,r=t.end;return"(?:"+n+"\\s*("+Z.join("|")+")\\s*"+r+")"})).join("|");return new RegExp("^\\s*(?:"+t+")\\s*$")};function q(e){var t,n;return null!==(n=null===(t=null==e?void 0:e.match(j))||void 0===t?void 0:t[2])&&void 0!==n?n:""}function $(e){var t=null==e?void 0:e.split(" ").find((function(e){return e.startsWith("language-")}));return null==t?void 0:t.replace(/language-/,"")}function G(e,t,n){var r=e.replace(/\n$/,"");if(t&&M.test(t)){var a=t.match(M)[1];return{highlightLines:z()(a).filter((function(e){return e>0})).map((function(e){return e-1})),code:r}}if(void 0===n)return{highlightLines:[],code:r};for(var o,i=function(e){switch(e){case"js":case"javascript":case"ts":case"typescript":return H(["js","jsBlock"]);case"jsx":case"tsx":return H(["js","jsBlock","jsx"]);case"html":return H(["js","jsBlock","html"]);case"python":case"py":return H(["python"]);default:return H()}}(n),l=r.split("\n"),u="",s=0;sn.pluralForms.length&&console.error("For locale="+n.locale+", a maximum of "+n.pluralForms.length+" plural forms are expected ("+n.pluralForms+"), but the message contains "+r.length+" plural forms: "+e+" ");var a=n.select(t),o=n.pluralForms.indexOf(a);return r[Math.min(o,r.length-1)]}(n,t,e)}}}var te="undefined"!=typeof window?h.useLayoutEffect:h.useEffect;function ne(e){var t=(0,h.useRef)(e);return te((function(){t.current=e}),[e]),(0,h.useCallback)((function(){return t.current.apply(t,arguments)}),[])}function re(e){var t=(0,h.useRef)();return te((function(){t.current=e})),t.current}function ae(e){var t=(0,d.TH)(),n=re(t),r=ne(e);(0,h.useEffect)((function(){t!==n&&r({location:t,previousLocation:n})}),[r,t,n])}var oe=n(3366),ie=n(412),le=["collapsed"],ue=["lazy"];function se(e){var t=e.initialState,n=(0,h.useState)(null!=t&&t),r=n[0],a=n[1],o=(0,h.useCallback)((function(){a((function(e){return!e}))}),[]);return{collapsed:r,setCollapsed:a,toggleCollapsed:o}}var ce={display:"none",overflow:"hidden",height:"0px"},de={display:"block",overflow:"visible",height:"auto"};function fe(e,t){var n=t?ce:de;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function pe(e){var t=e.collapsibleRef,n=e.collapsed,r=e.animation,a=(0,h.useRef)(!1);(0,h.useEffect)((function(){var e,o=t.current;function i(){var e,t,n=o.scrollHeight,a=null!==(e=null==r?void 0:r.duration)&&void 0!==e?e:function(e){var t=e/36;return Math.round(10*(4+15*Math.pow(t,.25)+t/5))}(n);return{transition:"height "+a+"ms "+(null!==(t=null==r?void 0:r.easing)&&void 0!==t?t:"ease-in-out"),height:n+"px"}}function l(){var e=i();o.style.transition=e.transition,o.style.height=e.height}if(!a.current)return fe(o,n),void(a.current=!0);return o.style.willChange="height",e=requestAnimationFrame((function(){n?(l(),requestAnimationFrame((function(){o.style.height=ce.height,o.style.overflow=ce.overflow}))):(o.style.display="block",requestAnimationFrame((function(){l()})))})),function(){return cancelAnimationFrame(e)}}),[t,n,r])}function he(e){if(!ie.Z.canUseDOM)return e?ce:de}function me(e){var t=e.as,n=void 0===t?"div":t,r=e.collapsed,a=e.children,o=e.animation,i=e.onCollapseTransitionEnd,l=e.className,u=e.disableSSRStyle,s=(0,h.useRef)(null);return pe({collapsibleRef:s,collapsed:r,animation:o}),h.createElement(n,{ref:s,style:u?void 0:he(r),onTransitionEnd:function(e){"height"===e.propertyName&&(fe(s.current,r),null==i||i(r))},className:l},a)}function ge(e){var t=e.collapsed,n=(0,oe.Z)(e,le),r=(0,h.useState)(!t),a=r[0],o=r[1];(0,h.useLayoutEffect)((function(){t||o(!0)}),[t]);var i=(0,h.useState)(t),l=i[0],u=i[1];return(0,h.useLayoutEffect)((function(){a&&u(t)}),[a,t]),a?h.createElement(me,Object.assign({},n,{collapsed:l})):null}function ve(e){var t=e.lazy,n=(0,oe.Z)(e,ue),r=t?ge:me;return h.createElement(r,Object.assign({},n))}var be=n(2389),ye=n(6010),we="details_Q743",ke="isBrowser_rWTL",Ee="collapsibleContent_K5uX",Se=["summary","children"];function xe(e){return!!e&&("SUMMARY"===e.tagName||xe(e.parentElement))}function _e(e,t){return!!e&&(e===t||_e(e.parentElement,t))}var Ce=function(e){var t,n=e.summary,r=e.children,a=(0,oe.Z)(e,Se),o=(0,be.Z)(),i=(0,h.useRef)(null),l=se({initialState:!a.open}),u=l.collapsed,s=l.setCollapsed,c=(0,h.useState)(a.open),d=c[0],f=c[1];return h.createElement("details",Object.assign({},a,{ref:i,open:d,"data-collapsed":u,className:(0,ye.Z)(we,(t={},t[ke]=o,t),a.className),onMouseDown:function(e){xe(e.target)&&e.detail>1&&e.preventDefault()},onClick:function(e){e.stopPropagation();var t=e.target;xe(t)&&_e(t,i.current)&&(e.preventDefault(),u?(s(!1),f(!0)):s(!0))}}),n,h.createElement(ve,{lazy:!1,collapsed:u,disableSSRStyle:!0,onCollapseTransitionEnd:function(e){s(e),f(!e)}},h.createElement("div",{className:Ee},r)))};var Te=(0,h.createContext)(null);function Le(e){var t=e.children;return h.createElement(Te.Provider,{value:(0,h.useState)(null)},t)}function Ae(){var e=(0,h.useContext)(Te);if(null===e)throw new Error("MobileSecondaryMenuProvider was not used correctly, context value is null");return e}function Pe(){var e=Ae()[0];if(e){var t=e.component;return function(n){return h.createElement(t,Object.assign({},e.props,n))}}return function(){}}function Oe(e){var t,n=e.component,r=e.props,a=Ae()[1],o=(t=r,(0,h.useMemo)((function(){return t}),[].concat(Object.keys(t),Object.values(t))));return(0,h.useEffect)((function(){a({component:n,props:o})}),[a,n,o]),(0,h.useEffect)((function(){return function(){return a(null)}}),[a]),null}function De(e){return Array.from(new Set(e))}var Re={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block"},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:function(e){return"theme-doc-sidebar-item-category-level-"+e},docSidebarItemLinkLevel:function(e){return"theme-doc-sidebar-item-link-level-"+e}},blog:{}},Ne=s("docusaurus.announcement.dismiss"),Fe=s("docusaurus.announcement.id"),Ie=function(){return"true"===Ne.get()},ze=function(e){return Ne.set(String(e))},je=(0,h.createContext)(null);function Me(e){var t=e.children,n=function(){var e=a().announcementBar,t=(0,be.Z)(),n=(0,h.useState)((function(){return!!t&&Ie()})),r=n[0],o=n[1];(0,h.useEffect)((function(){o(Ie())}),[]);var i=(0,h.useCallback)((function(){ze(!0),o(!0)}),[]);return(0,h.useEffect)((function(){if(e){var t=e.id,n=Fe.get();"annoucement-bar"===n&&(n="announcement-bar");var r=t!==n;Fe.set(t),r&&ze(!1),!r&&Ie()||o(!1)}}),[e]),(0,h.useMemo)((function(){return{isActive:!!e&&!r,close:i}}),[e,r,i])}();return h.createElement(je.Provider,{value:n},t)}var Be=function(){var e=(0,h.useContext)(je);if(!e)throw new Error("useAnnouncementBar(): AnnouncementBar not found in React context: make sure to use the AnnouncementBarProvider on top of the tree");return e};function Ue(){var e=(0,r.default)().siteConfig.baseUrl;return(0,d.TH)().pathname.replace(e,"/")}var Ze=n(5999),He=function(){return(0,Ze.I)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"})};function qe(e){var t={};return Object.values(e).forEach((function(e){var n,r=function(e){return e[0].toUpperCase()}(e.name);t[r]=null!==(n=t[r])&&void 0!==n?n:[],t[r].push(e)})),Object.entries(t).sort((function(e,t){var n=e[0],r=t[0];return n.localeCompare(r)})).map((function(e){return{letter:e[0],tags:e[1].sort((function(e,t){return e.name.localeCompare(t.name)}))}}))}function $e(e){!function(e){var t=(0,d.k6)().block,n=(0,h.useRef)(e);(0,h.useEffect)((function(){n.current=e}),[e]),(0,h.useEffect)((function(){return t((function(e,t){return n.current(e,t)}))}),[t,n])}((function(t,n){if("POP"===n)return e(t,n)}))}function Ge(e){var t=e.getBoundingClientRect();return t.top===t.bottom?Ge(e.parentNode):t}function Qe(e,t){var n,r=t.anchorTopOffset,a=e.find((function(e){return Ge(e).top>=r}));return a?function(e){return e.top>0&&e.bottom=n&&e.level<=r}(e)?[Object.assign({},e,{children:t})]:t}))}function Ye(e){var t=e.toc,n=e.minHeadingLevel,r=e.maxHeadingLevel;return(0,h.useMemo)((function(){return Ke({toc:t,minHeadingLevel:n,maxHeadingLevel:r})}),[t,n,r])}var Xe=(0,h.createContext)(void 0);function Je(e){var t,n=e.children;return h.createElement(Xe.Provider,{value:(t=(0,h.useRef)(!0),(0,h.useMemo)((function(){return{scrollEventsEnabledRef:t,enableScrollEvents:function(){t.current=!0},disableScrollEvents:function(){t.current=!1}}}),[]))},n)}function et(){var e=(0,h.useContext)(Xe);if(null==e)throw new Error('"useScrollController" is used but no context provider was found in the React tree.');return e}var tt=function(){return ie.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null};function nt(e,t){void 0===t&&(t=[]);var n=et().scrollEventsEnabledRef,r=(0,h.useRef)(tt()),a=ne(e);(0,h.useEffect)((function(){var e=function(){if(n.current){var e=tt();a&&a(e,r.current),r.current=e}},t={passive:!0};return e(),window.addEventListener("scroll",e,t),function(){return window.removeEventListener("scroll",e,t)}}),[a,n].concat(t))}function rt(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}},311:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(7294),a=n(6010),o="loadingRing_Zg7X";function i(e){var t=e.className;return r.createElement("div",{className:(0,a.Z)(o,t)},r.createElement("div",null),r.createElement("div",null),r.createElement("div",null),r.createElement("div",null))}},22:function(e,t,n){"use strict";n.d(t,{w:function(){return c}});var r=n(7855),a=n(5861),o=n(7757),i=n.n(o),l=n(1336),u=n.n(l),s=n(1029);function c(e){return d.apply(this,arguments)}function d(){return(d=(0,a.Z)(i().mark((function e(t){var n,a,o;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=3,fetch(t+"search-index.json?_="+s.rx);case 3:return e.next=5,e.sent.json();case 5:return n=e.sent,a=n.map((function(e,t){var n=e.documents,r=e.index;return{type:t,documents:n,index:u().Index.load(r)}})),o=n.reduce((function(e,t){for(var n,a=(0,r.Z)(t.index.invertedIndex);!(n=a()).done;){var o=n.value;/(?:[\u3400-\u4DBF\u4E00-\u9FFF\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD884[\uDC00-\uDF4A])/.test(o[0][0])&&e.add(o[0])}return e}),new Set),e.abrupt("return",{wrappedIndexes:a,zhDictionary:Array.from(o)});case 9:return e.abrupt("return",{wrappedIndexes:[],zhDictionary:[]});case 10:case"end":return e.stop()}}),e)})))).apply(this,arguments)}},7445:function(e,t,n){"use strict";n.d(t,{Z:function(){return Q}});var r=n(1029),a=n(7855),o=n(5861),i=n(7757),l=n.n(i),u=n(7294),s=n(6010),c=n(2263),d=n(412),f=n(6775),p=n(22),h=n(8202),m=n(2539),g=n(726),v=n(1073),b="searchBar_DBlZ",y="dropdownMenu_0bDV",w="suggestion_uMTE",k="cursor_PFw8",E="hitTree_v+XL",S="hitIcon_rLCp",x="hitPath_gCTv",_="noResultsIcon_jKPf",C="hitFooter_9rOv",T="hitWrapper_RTFf",L="hitTitle_4Fan",A="hitAction_ETy-",P="noResults_iBoj",O="searchBarContainer_I7kZ",D="searchBarLoadingRing_J5Ez",R="searchIndexLoading_oVRS",N="searchHintContainer_CDc6",F="searchHint_2RRg",I="input_e95Y",z="hint_S1nb",j="suggestions_Gb5D",M="dataset_N4X9",B="empty_i1dZ";function U(e){var t=e.document,n=e.type,r=e.page,a=e.metadata,o=e.tokens,i=e.isInterOfTree,l=e.isLastOfTree,u=0===n,s=1===n,c=[];i?c.push(''):l&&c.push('');var d=c.map((function(e){return''+e+""})),f=''+(u?'':s?'':'')+"",p=[''+(0,g.o)(t.t,(0,v.m)(a,"t"),o)+""];return u||p.push(''+(0,m.C)(r.t||(t.u.startsWith("/docs/api-reference/")?"API Reference":""),o)+""),[].concat(d,[f,''],p,["",'']).join("")}function Z(){return''+r.Iz.no_results+""}var H=n(311);function q(){return $.apply(this,arguments)}function $(){return($=(0,o.Z)(l().mark((function e(){var t,r;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all([n.e(8443),n.e(5525)]).then(n.t.bind(n,8443,23));case 2:return t=e.sent,(r=t.default).noConflict?r.noConflict():t.noConflict&&t.noConflict(),e.abrupt("return",r);case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var G="_highlight";var Q=function(e){var t,n,i,m=e.handleSearchBarToggle,g=(0,c.default)().siteConfig.baseUrl,v=(0,f.k6)(),E=(0,f.TH)(),S=(0,u.useRef)(null),x=(0,u.useRef)("empty"),_=(0,u.useRef)(!1),T=(0,u.useState)(!1),L=T[0],A=T[1],P=(0,u.useState)(!1),$=P[0],Q=P[1],V=(0,u.useCallback)((0,o.Z)(l().mark((function e(){var t,n,o,i,u,s,c;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("empty"===x.current){e.next=2;break}return e.abrupt("return");case 2:return x.current="loading",A(!0),e.next=6,Promise.all([(0,p.w)(g),q()]);case 6:t=e.sent,n=t[0],o=n.wrappedIndexes,i=n.zhDictionary,u=t[1],s=u(S.current,{hint:!1,autoselect:!0,openOnFocus:!0,cssClasses:{root:b,noPrefix:!0,dropdownMenu:y,input:I,hint:z,suggestions:j,suggestion:w,cursor:k,dataset:M,empty:B}},[{source:(0,h.v)(o,i,r.qo),templates:{suggestion:U,empty:Z,footer:function(e){var t=e.query;if(!e.isEmpty){var n=document.createElement("a"),a=g+"search?q="+encodeURIComponent(t);n.href=a,n.textContent=r.Iz.see_all_results,n.addEventListener("click",(function(e){e.ctrlKey||e.metaKey||(e.preventDefault(),s.autocomplete.close(),v.push(a))}));var o=document.createElement("div");return o.className=C,o.appendChild(n),o}}}}]).on("autocomplete:selected",(function(e,t){var n,o=t.document,i=o.u,l=o.h,u=t.tokens;null==(n=S.current)||n.blur();var s=i;if(r.vc&&u.length>0){for(var c,d=new URLSearchParams,f=(0,a.Z)(u);!(c=f()).done;){var p=c.value;d.append(G,p)}s+="?"+d.toString()}l&&(s+=l),v.push(s)})).on("autocomplete:closed",(function(){var e;null==(e=S.current)||e.blur()})),x.current="done",A(!1),_.current&&((c=S.current).value&&s.autocomplete.open(),c.focus());case 15:case"end":return e.stop()}}),e)}))),[g,v]);(0,u.useEffect)((function(){if(r.vc){var e=d.Z.canUseDOM?new URLSearchParams(E.search).getAll(G):[];0!==e.length&&setTimeout((function(){var t=document.querySelector("article");if(t){var n=new r.vc(t);n.unmark(),n.mark(e)}}))}}),[E.search]);var W=(0,u.useCallback)((function(){_.current=!0,V(),null==m||m(!0)}),[m,V]),K=(0,u.useCallback)((function(){null==m||m(!1)}),[m]),Y=(0,u.useCallback)((function(){V()}),[V]),X=(0,u.useCallback)((function(e){e.target.value&&Q(!0)}),[]),J=!!d.Z.canUseDOM&&/mac/i.test(null!=(t=null==(n=navigator.userAgentData)?void 0:n.platform)?t:navigator.platform);return(0,u.useEffect)((function(){function e(e){var t;(J?e.metaKey:e.ctrlKey)&&"KeyK"===e.code&&(e.preventDefault(),null==(t=S.current)||t.focus(),W())}return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}),[J,W]),u.createElement("div",{className:(0,s.Z)("navbar__search",O,(i={},i[R]=L&&$,i))},u.createElement("input",{placeholder:r.Iz.search_placeholder,"aria-label":"Search",className:"navbar__search-input",onMouseEnter:Y,onFocus:W,onBlur:K,onChange:X,ref:S}),u.createElement(H.Z,{className:D}),u.createElement("div",{className:N},u.createElement("kbd",{className:F},J?"\u2318":"ctrl"),u.createElement("kbd",{className:F},"K")))}},8202:function(e,t,n){"use strict";n.d(t,{v:function(){return c}});var r=n(7855),a=n(1336),o=n.n(a);function i(e,t){var n=[];return function e(a,o){if(0!==a.length){var i=a[0];if(/(?:[\u3400-\u4DBF\u4E00-\u9FFF\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD884[\uDC00-\uDF4A])/.test(i))for(var l,u=function(e,t){var n=[];return function e(a,o){for(var i,l=0,u=!1,s=(0,r.Z)(t);!(i=s()).done;){var c=i.value;if(a.substr(0,c.length)===c){var d={missed:o.missed,term:o.term.concat({value:c})};a.length>c.length?e(a.substr(c.length),d):n.push(d),u=!0}else for(var f=c.length-1;f>l;f-=1){var p=c.substr(0,f);if(a.substr(0,f)===p){l=f;var h={missed:o.missed,term:o.term.concat({value:p,trailing:!0})};a.length>f?e(a.substr(f),h):n.push(h),u=!0;break}}}u||(a.length>0?e(a.substr(1),{missed:o.missed+1,term:o.term}):o.term.length>0&&n.push(o))}(e,{missed:0,term:[]}),n.sort((function(e,t){var n=e.missed>0?1:0,r=t.missed>0?1:0;return n!==r?n-r:e.term.length-t.term.length})).map((function(e){return e.term}))}(i,t),s=(0,r.Z)(u);!(l=s()).done;){var c=l.value,d=o.concat.apply(o,c);e(a.slice(1),d)}else{var f=o.concat({value:i});e(a.slice(1),f)}}else n.push(o)}(e,[]),n}var l=n(1029);function u(e){return s(e).concat(s(e.filter((function(e){var t=e[e.length-1];return!t.trailing&&t.maybeTyping})),!0))}function s(e,t){return e.map((function(e){return{tokens:e.map((function(e){return e.value})),term:e.map((function(e){return{value:e.value,presence:o().Query.presence.REQUIRED,wildcard:(t?e.trailing||e.maybeTyping:e.trailing)?o().Query.wildcard.TRAILING:o().Query.wildcard.NONE}}))}}))}function c(e,t,n){return function(a,s){var c=function(e,t){if(1===t.length&&["ja","jp","th"].includes(t[0]))return o()[t[0]].tokenizer(e).map((function(e){return e.toString()}));var n=/[^-\s]+/g;return t.includes("zh")&&(n=/[0-9A-Z_a-z]+|(?:[\u3400-\u4DBF\u4E00-\u9FFF\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD884[\uDC00-\uDF4A])+/g),e.toLowerCase().match(n)||[]}(a,l.dK);if(0!==c.length){var d=function(e,t){var n=i(e,t);if(0===n.length)return[{tokens:e,term:e.map((function(e){return{value:e,presence:o().Query.presence.REQUIRED,wildcard:o().Query.wildcard.LEADING|o().Query.wildcard.TRAILING}}))}];for(var a,s=(0,r.Z)(n);!(a=s()).done;){var c=a.value;c[c.length-1].maybeTyping=!0}for(var d,f,p=[],h=(0,r.Z)(l.dK);!(d=h()).done;){var m=d.value;if("en"===m)l._k||p.unshift(o().stopWordFilter);else{var g=o()[m];g.stopWordFilter&&p.unshift(g.stopWordFilter)}}if(p.length>0){var v=function(e){return p.reduce((function(e,t){return e.filter((function(e){return t(e.value)}))}),e)};f=[];for(var b,y=[],w=(0,r.Z)(n);!(b=w()).done;){var k=b.value,E=v(k);f.push(E),E.length0&&y.push(E)}n.push.apply(n,y)}else f=n.slice();for(var S,x=[],_=(0,r.Z)(f);!(S=_()).done;){var C=S.value;if(C.length>2)for(var T=C.length-1;T>=0;T-=1)x.push(C.slice(0,T).concat(C.slice(T+1)))}return u(n).concat(u(x))}(c,t),f=[],p=function(){for(var t,a=h.value,o=a.term,i=a.tokens,l=function(){var a=t.value,l=a.documents,u=a.index,s=a.type;if(f.push.apply(f,u.query((function(e){for(var t,n=(0,r.Z)(o);!(t=n()).done;){var a=t.value;e.term(a.value,{wildcard:a.wildcard,presence:a.presence})}})).slice(0,n).filter((function(e){return!f.some((function(t){return t.document.i.toString()===e.ref}))})).slice(0,n-f.length).map((function(t){var n=l.find((function(e){return e.i.toString()===t.ref}));return{document:n,type:s,page:0!==s&&e[0].documents.find((function(e){return e.i===n.p})),metadata:t.matchData.metadata,tokens:i,score:t.score}}))),f.length>=n)return{v:"break|search"}},u=(0,r.Z)(e);!(t=u()).done;){var s=l();if("object"==typeof s)return s.v}};e:for(var h,m=(0,r.Z)(d);!(h=m()).done;){if("break|search"===p())break e}!function(e){e.forEach((function(e,t){e.index=t})),e.sort((function(t,n){var r=t.type>0&&t.page?e.findIndex((function(e){return e.document===t.page})):t.index,a=n.type>0&&n.page?e.findIndex((function(e){return e.document===n.page})):n.index;return-1===r&&(r=t.index),-1===a&&(a=n.index),r===a?0===t.type?-1:0===n.type?1:t.index-n.index:r-a}))}(f),function(e){e.forEach((function(t,n){n>0&&t.page&&e.some((function(e){return e.document===t.page}))&&(n/g,">").replace(/"/g,""").replace(/'/g,"'")}n.d(t,{X:function(){return r}})},1073:function(e,t,n){"use strict";function r(e,t){for(var n=[],r=0,a=Object.values(e);r=0){c>0&&l.push(o(e.substr(0,c),t)),l.push(""+(0,a.X)(e.substr(c,s.length))+"");var d=c+s.length;d"+(0,a.X)(e)+"":(0,a.X)(e):l.join("")}},726:function(e,t,n){"use strict";n.d(t,{o:function(){return u}});var r=n(1690),a=n(2539),o=/[0-9A-Z_a-z]+|(?:[\u3400-\u4DBF\u4E00-\u9FFF\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD884[\uDC00-\uDF4A])/;function i(e){for(var t=[],n=0,r=e;r.length>0;){var a=r.match(o);if(!a){t.push(r);break}a.index>0&&t.push(r.substr(0,a.index)),t.push(a[0]),n+=a.index+a[0].length,r=e.substr(n)}return t}var l=n(1029);function u(e,t,n,r){void 0===r&&(r=l.Hk);for(var a={chunkIndex:-1},o=s(e,t,n,0,0,a),i=o.slice(0,a.chunkIndex),u=o[a.chunkIndex],c=[u.html],d=o.slice(a.chunkIndex+1),f=u.textLength,p=0,h=0,m=!1,g=!1;f0){var v=i.pop();f+v.textLength<=r?(c.unshift(v.html),p+=v.textLength,f+=v.textLength):(m=!0,i.length=0)}else{if(!(d.length>0))break;var b=d.shift();f+b.textLength<=r?(c.push(b.html),h+=b.textLength,f+=b.textLength):(g=!0,d.length=0)}return(m||i.length>0)&&c.unshift("\u2026"),(g||d.length>0)&&c.push("\u2026"),c.join("")}function s(e,t,n,o,l,u){var c=[],d=t[o],f=d[0],p=d[1];if(fl&&c.push.apply(c,i(e.substring(l,f)).map((function(e){return{html:(0,r.X)(e),textLength:e.length}}))),u&&(u.chunkIndex=c.length),c.push({html:(0,a.C)(e.substr(f,p),n,!0),textLength:p});var h=f+p;(o+=1)=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!s)for(;d--;d)i.unshift("..");!s||""===i[0]||i[0]&&a(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function l(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var u=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=l(t),a=l(n);return r!==t||a!==n?e(r,a):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1},s=n(2177);function c(e){return"/"===e.charAt(0)?e:"/"+e}function d(e){return"/"===e.charAt(0)?e.substr(1):e}function f(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function p(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function h(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function m(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&u(e.state,t.state)}function v(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=m(e,t,f(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t=n&&t[(a-=n)>>3]&1<<(7&a))return this.cursor++,!0}return!1},in_grouping_b:function(t,n,r){if(this.cursor>this.limit_backward){var a=e.charCodeAt(this.cursor-1);if(a<=r&&a>=n&&t[(a-=n)>>3]&1<<(7&a))return this.cursor--,!0}return!1},out_grouping:function(t,n,r){if(this.cursorr||a>3]&1<<(7&a)))return this.cursor++,!0}return!1},out_grouping_b:function(t,n,r){if(this.cursor>this.limit_backward){var a=e.charCodeAt(this.cursor-1);if(a>r||a>3]&1<<(7&a)))return this.cursor--,!0}return!1},eq_s:function(t,n){if(this.limit-this.cursor>1),d=0,f=l0||a==r||s)break;s=!0}}for(;;){if(l>=(p=t[r]).s_size){if(this.cursor=o+p.s_size,!p.method)return p.result;var m=p.method();if(this.cursor=o+p.s_size,m)return p.result}if((r=p.substring_i)<0)return 0}},find_among_b:function(t,n){for(var r=0,a=n,o=this.cursor,i=this.limit_backward,l=0,u=0,s=!1;;){for(var c=r+(a-r>>1),d=0,f=l=0;p--){if(o-f==i){d=-1;break}if(d=e.charCodeAt(o-1-f)-h.s[p])break;f++}if(d<0?(a=c,u=f):(r=c,l=f),a-r<=1){if(r>0||a==r||s)break;s=!0}}for(;;){var h;if(l>=(h=t[r]).s_size){if(this.cursor=o-h.s_size,!h.method)return h.result;var m=h.method();if(this.cursor=o-h.s_size,m)return h.result}if((r=h.substring_i)<0)return 0}},replace_s:function(t,n,r){var a=r.length-(n-t),o=e.substring(0,t),i=e.substring(n);return e=o+r+i,this.limit+=a,this.cursor>=n?this.cursor+=a:this.cursor>t&&(this.cursor=t),a},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>e.length)throw"faulty slice operation"},slice_from:function(e){this.slice_check(),this.replace_s(this.bra,this.ket,e)},slice_del:function(){this.slice_from("")},insert:function(e,t,n){var r=this.replace_s(e,t,n);e<=this.bra&&(this.bra+=r),e<=this.ket&&(this.ket+=r)},slice_to:function(){return this.slice_check(),e.substring(this.bra,this.ket)},eq_v_b:function(e){return this.eq_s_b(e.length,e)}}}},e.trimmerSupport={generateTrimmer:function(e){var t=new RegExp("^[^"+e+"]+"),n=new RegExp("[^"+e+"]+$");return function(e){return"function"==typeof e.update?e.update((function(e){return e.replace(t,"").replace(n,"")})):e.replace(t,"").replace(n,"")}}}}})?r.call(t,n,t,e):r)||(e.exports=a)},1336:function(e,t,n){var r,a;!function(){var o,i,l,u,s,c,d,f,p,h,m,g,v,b,y,w,k,E,S,x,_,C,T,L,A,P,O=function(e){var t=new O.Builder;return t.pipeline.add(O.trimmer,O.stopWordFilter,O.stemmer),t.searchPipeline.add(O.stemmer),e.call(t,t),t.build()};O.version="2.3.9",O.utils={},O.utils.warn=(o=this,function(e){o.console&&console.warn&&console.warn(e)}),O.utils.asString=function(e){return null==e?"":e.toString()},O.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r0){var u=O.utils.clone(t)||{};u.position=[i,l],u.index=a.length,a.push(new O.Token(n.slice(i,o),u))}i=o+1}}return a},O.tokenizer.separator=/[\s\-]+/,O.Pipeline=function(){this._stack=[]},O.Pipeline.registeredFunctions=Object.create(null),O.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&O.utils.warn("Overwriting existing registered function: "+t),e.label=t,O.Pipeline.registeredFunctions[e.label]=e},O.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||O.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},O.Pipeline.load=function(e){var t=new O.Pipeline;return e.forEach((function(e){var n=O.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},O.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach((function(e){O.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},O.Pipeline.prototype.after=function(e,t){O.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},O.Pipeline.prototype.before=function(e,t){O.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},O.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},O.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n1&&(oe&&(n=a),o!=e);)r=n-t,a=t+Math.floor(r/2),o=this.elements[2*a];return o==e||o>e?2*a:ol?s+=2:i==l&&(t+=n[u+1]*r[s+1],u+=2,s+=2);return t},O.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},O.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t0){var o,i=a.str.charAt(0);i in a.node.edges?o=a.node.edges[i]:(o=new O.TokenSet,a.node.edges[i]=o),1==a.str.length&&(o.final=!0),r.push({node:o,editsRemaining:a.editsRemaining,str:a.str.slice(1)})}if(0!=a.editsRemaining){if("*"in a.node.edges)var l=a.node.edges["*"];else{l=new O.TokenSet;a.node.edges["*"]=l}if(0==a.str.length&&(l.final=!0),r.push({node:l,editsRemaining:a.editsRemaining-1,str:a.str}),a.str.length>1&&r.push({node:a.node,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)}),1==a.str.length&&(a.node.final=!0),a.str.length>=1){if("*"in a.node.edges)var u=a.node.edges["*"];else{u=new O.TokenSet;a.node.edges["*"]=u}1==a.str.length&&(u.final=!0),r.push({node:u,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)})}if(a.str.length>1){var s,c=a.str.charAt(0),d=a.str.charAt(1);d in a.node.edges?s=a.node.edges[d]:(s=new O.TokenSet,a.node.edges[d]=s),1==a.str.length&&(s.final=!0),r.push({node:s,editsRemaining:a.editsRemaining-1,str:c+a.str.slice(2)})}}}return n},O.TokenSet.fromString=function(e){for(var t=new O.TokenSet,n=t,r=0,a=e.length;r=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},O.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},O.Index.prototype.search=function(e){return this.query((function(t){new O.QueryParser(e,t).parse()}))},O.Index.prototype.query=function(e){for(var t=new O.Query(this.fields),n=Object.create(null),r=Object.create(null),a=Object.create(null),o=Object.create(null),i=Object.create(null),l=0;l1?1:e},O.Builder.prototype.k1=function(e){this._k1=e},O.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var a=0;a=this.length)return O.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},O.QueryLexer.prototype.width=function(){return this.pos-this.start},O.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},O.QueryLexer.prototype.backup=function(){this.pos-=1},O.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=O.QueryLexer.EOS&&this.backup()},O.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(O.QueryLexer.TERM)),e.ignore(),e.more())return O.QueryLexer.lexText},O.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(O.QueryLexer.EDIT_DISTANCE),O.QueryLexer.lexText},O.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(O.QueryLexer.BOOST),O.QueryLexer.lexText},O.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(O.QueryLexer.TERM)},O.QueryLexer.termSeparator=O.tokenizer.separator,O.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==O.QueryLexer.EOS)return O.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return O.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(O.QueryLexer.TERM),O.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(O.QueryLexer.TERM),O.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(O.QueryLexer.PRESENCE),O.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(O.QueryLexer.PRESENCE),O.QueryLexer.lexText;if(t.match(O.QueryLexer.termSeparator))return O.QueryLexer.lexTerm}else e.escapeCharacter()}},O.QueryParser=function(e,t){this.lexer=new O.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},O.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=O.QueryParser.parseClause;e;)e=e(this);return this.query},O.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},O.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},O.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},O.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case O.QueryLexer.PRESENCE:return O.QueryParser.parsePresence;case O.QueryLexer.FIELD:return O.QueryParser.parseField;case O.QueryLexer.TERM:return O.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new O.QueryParseError(n,t.start,t.end)}},O.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=O.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=O.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new O.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new O.QueryParseError(n,t.start,t.end)}switch(r.type){case O.QueryLexer.FIELD:return O.QueryParser.parseField;case O.QueryLexer.TERM:return O.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new O.QueryParseError(n,r.start,r.end)}}},O.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new O.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var a=e.peekLexeme();if(null==a){r="expecting term, found nothing";throw new O.QueryParseError(r,t.start,t.end)}if(a.type===O.QueryLexer.TERM)return O.QueryParser.parseTerm;r="expecting term, found '"+a.type+"'";throw new O.QueryParseError(r,a.start,a.end)}},O.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case O.QueryLexer.TERM:return e.nextClause(),O.QueryParser.parseTerm;case O.QueryLexer.FIELD:return e.nextClause(),O.QueryParser.parseField;case O.QueryLexer.EDIT_DISTANCE:return O.QueryParser.parseEditDistance;case O.QueryLexer.BOOST:return O.QueryParser.parseBoost;case O.QueryLexer.PRESENCE:return e.nextClause(),O.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new O.QueryParseError(r,n.start,n.end)}else e.nextClause()}},O.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new O.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case O.QueryLexer.TERM:return e.nextClause(),O.QueryParser.parseTerm;case O.QueryLexer.FIELD:return e.nextClause(),O.QueryParser.parseField;case O.QueryLexer.EDIT_DISTANCE:return O.QueryParser.parseEditDistance;case O.QueryLexer.BOOST:return O.QueryParser.parseBoost;case O.QueryLexer.PRESENCE:return e.nextClause(),O.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new O.QueryParseError(r,a.start,a.end)}else e.nextClause()}},O.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new O.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case O.QueryLexer.TERM:return e.nextClause(),O.QueryParser.parseTerm;case O.QueryLexer.FIELD:return e.nextClause(),O.QueryParser.parseField;case O.QueryLexer.EDIT_DISTANCE:return O.QueryParser.parseEditDistance;case O.QueryLexer.BOOST:return O.QueryParser.parseBoost;case O.QueryLexer.PRESENCE:return e.nextClause(),O.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new O.QueryParseError(r,a.start,a.end)}else e.nextClause()}},void 0===(a="function"==typeof(r=function(){return O})?r.call(t,n,t,e):r)||(e.exports=a)}()},6743:function(e,t,n){"use strict";n.r(t)},2497:function(e,t,n){"use strict";n.r(t)},2295:function(e,t,n){"use strict";n.r(t)},4865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),s=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),u(s,i(e,c,d)),1===e?(u(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){u(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),s=document.querySelector(r.parent);return u(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),s!=document.body&&c(s,"nprogress-custom-parent"),s.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),u=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function s(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;s(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);s(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7418:function(e){"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,o){for(var i,l,u=a(e),s=1;se.trim())))if(/^-?\d+$/.test(r))n.push(parseInt(r,10));else if(t=r.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,r,a,o]=t;if(r&&o){r=parseInt(r),o=parseInt(o);const e=r=d.reach);S+=E.value.length,E=E.next){var x=E.value;if(t.length>e.length)return;if(!(x instanceof a)){var _,C=1;if(b){if(!(_=o(k,S,e,v))||_.index>=e.length)break;var T=_.index,L=_.index+_[0].length,A=S;for(A+=E.value.length;T>=A;)A+=(E=E.next).value.length;if(S=A-=E.value.length,E.value instanceof a)continue;for(var P=E;P!==t.tail&&(Ad.reach&&(d.reach=N);var F=E.prev;if(D&&(F=u(t,F,D),S+=D.length),s(t,F,C),E=u(t,F,new a(f,g?r.tokenize(O,g):O,y,O)),R&&u(t,E,R),C>1){var I={cause:f+","+h,reach:N};i(e,t,n,E.prev,S,I),d&&I.reach>d.reach&&(d.reach=I.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function u(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function s(e,t,n){for(var r=t.next,a=0;a"+o.content+""},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{*\.{3}(?:[^{}]|)*\})/.source;function o(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var u=i(a);r0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(u=i(t[r-1])+u,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",u,null,u)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var u=o.substring(0,l),d=s(c[a]),p=o.substring(l+a.length),h=[];if(u&&h.push(u),h.push(d),p){var m=[p];e(m),h.push.apply(h,m)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(h)),n+=h.length-1):r.content=h}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var u=n;u=0&&p(s,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n=o.length);u++){var s=l[u];if("string"==typeof s||s.content&&"string"==typeof s.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof s?s:s.content,p=t(r,c),h=f.indexOf(p);if(h>-1){++a;var m=f.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=f.substring(h+p.length),b=[];m&&b.push.apply(b,i([m])),b.push(g),v&&b.push.apply(b,i([v])),"string"==typeof s?l.splice.apply(l,[u,1].concat(b)):s.content=b}}else s.content&&i(s.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},u=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/},function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),t.default=a},9901:function(e){e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:function(e,t,n){const r=n(9901),a=n(9642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:function(e,t,n){var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},6500:function(e,t,n){var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6500},9642:function(e){"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var l={},u=e[r];if(u){function s(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(u.require,s),t(u.optional,s),t(u.modify,s)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var u=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),s=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(u);i=i.map(s),l=(l||[]).map(s);var c=n(i),d=n(l);i.forEach((function e(n){var r=u[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(u),h=c;a(h);){for(var m in f={},h){var g=u[m];t(g&&g.modify,(function(e){e in d&&(f[e]=!0)}))}for(var v in d)if(!(v in c))for(var b in p(v))if(b in c){f[v]=!0;break}for(var y in h=f)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},u={};function s(e){if(e in l)return l[e];u[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var f=i(c.map((function(e){var t=s(e);return delete u[e],t})));o?a=o(f,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)s(c);var d=[];for(var f in u)d.push(l[f]);return i(d)}(p,c,t,n)}};return w}}();e.exports=t},2703:function(e,t,n){"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:function(e,t,n){e.exports=n(2703)()},414:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:function(e,t,n){"use strict";var r=n(7294),a=n(7418),o=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n