diff --git a/404.html b/404.html index 149698f..287d1d9 100644 --- a/404.html +++ b/404.html @@ -5,13 +5,13 @@ Page Not Found | The Metron Project - - + +
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/assets/js/05af08ae.4e9bef8e.js b/assets/js/05af08ae.c6400bd1.js similarity index 76% rename from assets/js/05af08ae.4e9bef8e.js rename to assets/js/05af08ae.c6400bd1.js index e943ec8..f7241a9 100644 --- a/assets/js/05af08ae.4e9bef8e.js +++ b/assets/js/05af08ae.c6400bd1.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[4772],{7360:e=>{e.exports=JSON.parse('{"label":"comictagger","permalink":"/blog/tags/comictagger","allTagsPath":"/blog/tags","count":2}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[4772],{7360:e=>{e.exports=JSON.parse('{"label":"comictagger","permalink":"/blog/tags/comictagger","allTagsPath":"/blog/tags","count":3}')}}]); \ No newline at end of file diff --git a/assets/js/11bad855.118359a6.js b/assets/js/11bad855.118359a6.js deleted file mode 100644 index 28762ee..0000000 --- a/assets/js/11bad855.118359a6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[4700],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>u});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 s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},g={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),m=c(n),u=a,h=m["".concat(s,".").concat(u)]||m[u]||g[u]||o;return n?r.createElement(h,i(i({ref:t},p),{},{components:n})):r.createElement(h,i({ref:t},p))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;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,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>g,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=n(7462),a=(n(7294),n(3905));const o={slug:"october-2023-update",title:"October 2023 Update",date:"2023-10-29T10:04",authors:["bpepple"],tags:["comic","database","metron","metrontagger","comictagger"]},i="October 2023 News",l={permalink:"/blog/october-2023-update",source:"@site/blog/2023-10-29-october-update/index.md",title:"October 2023 Update",description:"New Indexed Issues Milestone",date:"2023-10-29T10:04:00.000Z",formattedDate:"October 29, 2023",tags:[{label:"comic",permalink:"/blog/tags/comic"},{label:"database",permalink:"/blog/tags/database"},{label:"metron",permalink:"/blog/tags/metron"},{label:"metrontagger",permalink:"/blog/tags/metrontagger"},{label:"comictagger",permalink:"/blog/tags/comictagger"}],readingTime:1.6,hasTruncateMarker:!1,authors:[{name:"Brian Pepple",title:"Founder of the Metron Project / Code Monkey",url:"https://github.com/bpepple",imageURL:"https://github.com/bpepple.png",key:"bpepple"}],frontMatter:{slug:"october-2023-update",title:"October 2023 Update",date:"2023-10-29T10:04",authors:["bpepple"],tags:["comic","database","metron","metrontagger","comictagger"]},nextItem:{title:"Latest Happenings",permalink:"/blog/latest-happenings"}},s={authorsImageUrls:[void 0]},c=[{value:"New Indexed Issues Milestone",id:"new-indexed-issues-milestone",level:2},{value:"Metron-Tagger v1.6.4",id:"metron-tagger-v164",level:2},{value:"Duplicate Page Removal",id:"duplicate-page-removal",level:3},{value:"Miscellaneous Maintenance",id:"miscellaneous-maintenance",level:3},{value:"Comic-Tagger",id:"comic-tagger",level:2}],p={toc:c};function g(e){let{components:t,...n}=e;return(0,a.kt)("wrapper",(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"new-indexed-issues-milestone"},"New Indexed Issues Milestone"),(0,a.kt)("p",null,"The ",(0,a.kt)("a",{parentName:"p",href:"https://metron.cloud/"},"Metron Project")," reached a milestone this month by having more than 77,000 issues added to\nits database. I wish to give big thanks to everyone who has helped with the project. Thanks!"),(0,a.kt)("h2",{id:"metron-tagger-v164"},"Metron-Tagger v1.6.4"),(0,a.kt)("h3",{id:"duplicate-page-removal"},"Duplicate Page Removal"),(0,a.kt)("p",null,"Just released a new version of ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/Metron-Project/metron-tagger"},"Metron-Tagger"),", which adds a new\nexperimental feature of finding / removing duplicate pages in a directory of comics. The feature will get the hashes for\nall the pages of the comics in a directory, and then ask the user if the image should be removed from the comics. This\nis done by using the user's system image viewer to display the duplicate image. Once the user has reviewed all the\nduplicated images it will ask the user whether to write the changes to the comics and then prompt them if they also want\nto update the ",(0,a.kt)("a",{parentName:"p",href:"https://anansi-project.github.io/docs/comicinfo/intro"},"ComicInfo.xml")," (if it exists) for the page\nchanges."),(0,a.kt)("p",null,"This feature most likely will work best when running on a weekly basis, instead of on a ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},"whole"))," comic collection,\nsince it's asking the user to review all the duplicate images ",(0,a.kt)("em",{parentName:"p"},"before")," writing the changes. I'm planning on reworking\nthis to make it more feasible to use on a large comic collection, but that is pretty far down on my TODO list (but if\nsomeone wants to work on this I'm more than willing to review a Pull Request)."),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Note"),": I've been using this for the last month and haven't had any issues, but if you plan on using this I would\nsuggest backing up any files when using this initially, and verifying it works correctly for you since once the changes\nare written they can't be undone! \ud83d\udca3"),(0,a.kt)("h3",{id:"miscellaneous-maintenance"},"Miscellaneous Maintenance"),(0,a.kt)("p",null,"The rest of v1.6.4 changes are primarily developer-side changes updating the toolsets for Metron-Tagger."),(0,a.kt)("h2",{id:"comic-tagger"},"Comic-Tagger"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/comictagger/comictagger"},"Comic-Tagger")," recently released\ntheir ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/comictagger/metron_talker"},"Metron-Talker")," plugin which adds support for tagging any comic with\nmetadata from ",(0,a.kt)("a",{parentName:"p",href:"https://metron.cloud/"},"Metron"),"."))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/11bad855.1a82eee2.js b/assets/js/11bad855.1a82eee2.js new file mode 100644 index 0000000..fa4624b --- /dev/null +++ b/assets/js/11bad855.1a82eee2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[4700],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>u});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 s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},g={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),m=c(n),u=a,h=m["".concat(s,".").concat(u)]||m[u]||g[u]||o;return n?r.createElement(h,i(i({ref:t},p),{},{components:n})):r.createElement(h,i({ref:t},p))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;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,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>g,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=n(7462),a=(n(7294),n(3905));const o={slug:"october-2023-update",title:"October 2023 Update",date:"2023-10-29T10:04",authors:["bpepple"],tags:["comic","database","metron","metrontagger","comictagger"]},i="October 2023 News",l={permalink:"/blog/october-2023-update",source:"@site/blog/2023-10-29-october-update/index.md",title:"October 2023 Update",description:"New Indexed Issues Milestone",date:"2023-10-29T10:04:00.000Z",formattedDate:"October 29, 2023",tags:[{label:"comic",permalink:"/blog/tags/comic"},{label:"database",permalink:"/blog/tags/database"},{label:"metron",permalink:"/blog/tags/metron"},{label:"metrontagger",permalink:"/blog/tags/metrontagger"},{label:"comictagger",permalink:"/blog/tags/comictagger"}],readingTime:1.6,hasTruncateMarker:!1,authors:[{name:"Brian Pepple",title:"Founder of the Metron Project / Code Monkey",url:"https://github.com/bpepple",imageURL:"https://github.com/bpepple.png",key:"bpepple"}],frontMatter:{slug:"october-2023-update",title:"October 2023 Update",date:"2023-10-29T10:04",authors:["bpepple"],tags:["comic","database","metron","metrontagger","comictagger"]},prevItem:{title:"November 2023 Update",permalink:"/blog/november-2023-update"},nextItem:{title:"Latest Happenings",permalink:"/blog/latest-happenings"}},s={authorsImageUrls:[void 0]},c=[{value:"New Indexed Issues Milestone",id:"new-indexed-issues-milestone",level:2},{value:"Metron-Tagger v1.6.4",id:"metron-tagger-v164",level:2},{value:"Duplicate Page Removal",id:"duplicate-page-removal",level:3},{value:"Miscellaneous Maintenance",id:"miscellaneous-maintenance",level:3},{value:"Comic-Tagger",id:"comic-tagger",level:2}],p={toc:c};function g(e){let{components:t,...n}=e;return(0,a.kt)("wrapper",(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"new-indexed-issues-milestone"},"New Indexed Issues Milestone"),(0,a.kt)("p",null,"The ",(0,a.kt)("a",{parentName:"p",href:"https://metron.cloud/"},"Metron Project")," reached a milestone this month by having more than 77,000 issues added to\nits database. I wish to give big thanks to everyone who has helped with the project. Thanks!"),(0,a.kt)("h2",{id:"metron-tagger-v164"},"Metron-Tagger v1.6.4"),(0,a.kt)("h3",{id:"duplicate-page-removal"},"Duplicate Page Removal"),(0,a.kt)("p",null,"Just released a new version of ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/Metron-Project/metron-tagger"},"Metron-Tagger"),", which adds a new\nexperimental feature of finding / removing duplicate pages in a directory of comics. The feature will get the hashes for\nall the pages of the comics in a directory, and then ask the user if the image should be removed from the comics. This\nis done by using the user's system image viewer to display the duplicate image. Once the user has reviewed all the\nduplicated images it will ask the user whether to write the changes to the comics and then prompt them if they also want\nto update the ",(0,a.kt)("a",{parentName:"p",href:"https://anansi-project.github.io/docs/comicinfo/intro"},"ComicInfo.xml")," (if it exists) for the page\nchanges."),(0,a.kt)("p",null,"This feature most likely will work best when running on a weekly basis, instead of on a ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},"whole"))," comic collection,\nsince it's asking the user to review all the duplicate images ",(0,a.kt)("em",{parentName:"p"},"before")," writing the changes. I'm planning on reworking\nthis to make it more feasible to use on a large comic collection, but that is pretty far down on my TODO list (but if\nsomeone wants to work on this I'm more than willing to review a Pull Request)."),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Note"),": I've been using this for the last month and haven't had any issues, but if you plan on using this I would\nsuggest backing up any files when using this initially, and verifying it works correctly for you since once the changes\nare written they can't be undone! \ud83d\udca3"),(0,a.kt)("h3",{id:"miscellaneous-maintenance"},"Miscellaneous Maintenance"),(0,a.kt)("p",null,"The rest of v1.6.4 changes are primarily developer-side changes updating the toolsets for Metron-Tagger."),(0,a.kt)("h2",{id:"comic-tagger"},"Comic-Tagger"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/comictagger/comictagger"},"Comic-Tagger")," recently released\ntheir ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/comictagger/metron_talker"},"Metron-Talker")," plugin which adds support for tagging any comic with\nmetadata from ",(0,a.kt)("a",{parentName:"p",href:"https://metron.cloud/"},"Metron"),"."))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3f5bd139.6ac52912.js b/assets/js/3f5bd139.6ac52912.js new file mode 100644 index 0000000..ff5fef1 --- /dev/null +++ b/assets/js/3f5bd139.6ac52912.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[9303],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>d});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 s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},m=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),c=p(n),d=a,g=c["".concat(s,".").concat(d)]||c[d]||u[d]||o;return n?r.createElement(g,i(i({ref:t},m),{},{components:n})):r.createElement(g,i({ref:t},m))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=c;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,i[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));const o={slug:"november-2023-update",title:"November 2023 Update",date:"2023-12-03T13:29",authors:["bpepple"],tags:["comic","database","metron","metrontagger","comictagger"]},i="November 2023 News",l={permalink:"/blog/november-2023-update",source:"@site/blog/2023-12-03-november-update/index.md",title:"November 2023 Update",description:"Issues Indexed",date:"2023-12-03T13:29:00.000Z",formattedDate:"December 3, 2023",tags:[{label:"comic",permalink:"/blog/tags/comic"},{label:"database",permalink:"/blog/tags/database"},{label:"metron",permalink:"/blog/tags/metron"},{label:"metrontagger",permalink:"/blog/tags/metrontagger"},{label:"comictagger",permalink:"/blog/tags/comictagger"}],readingTime:1.785,hasTruncateMarker:!1,authors:[{name:"Brian Pepple",title:"Founder of the Metron Project / Code Monkey",url:"https://github.com/bpepple",imageURL:"https://github.com/bpepple.png",key:"bpepple"}],frontMatter:{slug:"november-2023-update",title:"November 2023 Update",date:"2023-12-03T13:29",authors:["bpepple"],tags:["comic","database","metron","metrontagger","comictagger"]},nextItem:{title:"October 2023 Update",permalink:"/blog/october-2023-update"}},s={authorsImageUrls:[void 0]},p=[{value:"Issues Indexed",id:"issues-indexed",level:2},{value:"2024 Tasks",id:"2024-tasks",level:2}],m={toc:p};function u(e){let{components:t,...n}=e;return(0,a.kt)("wrapper",(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"issues-indexed"},"Issues Indexed"),(0,a.kt)("p",null,"Not much user-facing development was done in November, but 10,612 issues were added to the database bringing the total\nnumber of issues to ",(0,a.kt)("strong",{parentName:"p"},"88,244"),". I wish to give big thanks to everyone who has helped with the project. Thanks!"),(0,a.kt)("h2",{id:"2024-tasks"},"2024 Tasks"),(0,a.kt)("p",null,"I've started working on a list of items that I'm planning to work on in 2024. Here's a partial list:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Upgrade Server"),(0,a.kt)("p",{parentName:"li"},"Currently, the server is fairly underpowered (1 GiB Memory, 1 CPU, 25 GiB SSD, 1,000 GiB Transfer) but is able to\nhandle the current load without any particular issues. Based on the current user growth rate, I'm guessing I'll\nfinally need to upgrade sometime in 2024, I'm thinking a fairly minor bump should be sufficient (2 GiB Memory,\n1CPU, 50 GiB SSD, 2,000 GiB Transfer)")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Container Deployment"),(0,a.kt)("p",{parentName:"li"},"Before upgrading the server it makes sense to ",(0,a.kt)("em",{parentName:"p"},"finally")," set up the project to use containers (preferably\n",(0,a.kt)("a",{parentName:"p",href:"https://podman.io/"},"Podman"),") when deploying the website. If anyone wants to help\nwith ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/bpepple/metron/issues/69"},"this"),", that would be awesome.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Look into Open Collective for Future Funding"),(0,a.kt)("p",{parentName:"li"},"Eventually it will make sense to look at setting up something like\n",(0,a.kt)("a",{parentName:"p",href:"https://opencollective.com/opensource"},"Open Collective")," to help with future server costs. Right now the server costs\naround $14 a month (not including annual domain name & email hosting costs) so it's not really an issue, but down the\nroad I probably won't want to cover all the costs of the project myself."),(0,a.kt)("p",{parentName:"li"},"Glancing at the criteria needed for acceptance to the Open Source Collective, it looks like Metron meets most of them,\nexcept having ",(0,a.kt)("em",{parentName:"p"},"100 stars")," on ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/"},"Github"),". ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},"So, if you'd like to help the project, one easy\nway would be to star the ",(0,a.kt)("a",{parentName:"em",href:"https://github.com/bpepple/metron"},"repository"),".")))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Manga / International Support"),(0,a.kt)("p",{parentName:"li"},"It would be nice to make a final decision on whether to support Manga and Non-U.S. issues, right now I'm inclined not\nto but ",(0,a.kt)("em",{parentName:"p"},"if")," we do add support it will necessitate some changes to the database for things like currencies, languages,\nand such."))),(0,a.kt)("p",null,"I'm sure there will be other smaller items (like tweaking the site's css and such), but these are most items I'll be\nlooking at in 2024. \ud83c\udf89"))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/527c8e33.ca4fa9df.js b/assets/js/527c8e33.aa03cbec.js similarity index 78% rename from assets/js/527c8e33.ca4fa9df.js rename to assets/js/527c8e33.aa03cbec.js index 0027c7c..3e5b955 100644 --- a/assets/js/527c8e33.ca4fa9df.js +++ b/assets/js/527c8e33.aa03cbec.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[6795],{245:a=>{a.exports=JSON.parse('{"label":"database","permalink":"/blog/tags/database","allTagsPath":"/blog/tags","count":5}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[6795],{245:a=>{a.exports=JSON.parse('{"label":"database","permalink":"/blog/tags/database","allTagsPath":"/blog/tags","count":6}')}}]); \ No newline at end of file diff --git a/assets/js/6243bdea.b90719ed.js b/assets/js/6243bdea.cb3af133.js similarity index 79% rename from assets/js/6243bdea.b90719ed.js rename to assets/js/6243bdea.cb3af133.js index 1d31a55..dbef05a 100644 --- a/assets/js/6243bdea.b90719ed.js +++ b/assets/js/6243bdea.cb3af133.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[6399],{5393:e=>{e.exports=JSON.parse('{"label":"metron","permalink":"/blog/tags/metron","allTagsPath":"/blog/tags","count":5}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[6399],{5393:e=>{e.exports=JSON.parse('{"label":"metron","permalink":"/blog/tags/metron","allTagsPath":"/blog/tags","count":6}')}}]); \ No newline at end of file diff --git a/assets/js/681e922c.9ebf92a4.js b/assets/js/681e922c.fbc2a81f.js similarity index 78% rename from assets/js/681e922c.9ebf92a4.js rename to assets/js/681e922c.fbc2a81f.js index 7a66493..75df23f 100644 --- a/assets/js/681e922c.9ebf92a4.js +++ b/assets/js/681e922c.fbc2a81f.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[5742],{2192:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/comictagger","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[5742],{2192:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/comictagger","page":1,"postsPerPage":10,"totalPages":1,"totalCount":3,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/6e82c118.652a67fd.js b/assets/js/6e82c118.f453804d.js similarity index 58% rename from assets/js/6e82c118.652a67fd.js rename to assets/js/6e82c118.f453804d.js index 368a75a..2e12c46 100644 --- a/assets/js/6e82c118.652a67fd.js +++ b/assets/js/6e82c118.f453804d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[6626],{8645:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/comic","page":1,"postsPerPage":10,"totalPages":1,"totalCount":10,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[6626],{8645:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/comic","page":1,"postsPerPage":10,"totalPages":2,"totalCount":11,"nextPage":"/blog/tags/comic/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/717f6a48.9da14ac9.js b/assets/js/717f6a48.9da14ac9.js new file mode 100644 index 0000000..261d63a --- /dev/null +++ b/assets/js/717f6a48.9da14ac9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[8265],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>d});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 s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},m=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),c=p(n),d=a,g=c["".concat(s,".").concat(d)]||c[d]||u[d]||o;return n?r.createElement(g,i(i({ref:t},m),{},{components:n})):r.createElement(g,i({ref:t},m))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=c;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,i[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));const o={slug:"november-2023-update",title:"November 2023 Update",date:"2023-12-03T13:29",authors:["bpepple"],tags:["comic","database","metron","metrontagger","comictagger"]},i="November 2023 News",l={permalink:"/blog/november-2023-update",source:"@site/blog/2023-12-03-november-update/index.md",title:"November 2023 Update",description:"Issues Indexed",date:"2023-12-03T13:29:00.000Z",formattedDate:"December 3, 2023",tags:[{label:"comic",permalink:"/blog/tags/comic"},{label:"database",permalink:"/blog/tags/database"},{label:"metron",permalink:"/blog/tags/metron"},{label:"metrontagger",permalink:"/blog/tags/metrontagger"},{label:"comictagger",permalink:"/blog/tags/comictagger"}],readingTime:1.785,hasTruncateMarker:!1,authors:[{name:"Brian Pepple",title:"Founder of the Metron Project / Code Monkey",url:"https://github.com/bpepple",imageURL:"https://github.com/bpepple.png",key:"bpepple"}],frontMatter:{slug:"november-2023-update",title:"November 2023 Update",date:"2023-12-03T13:29",authors:["bpepple"],tags:["comic","database","metron","metrontagger","comictagger"]},nextItem:{title:"October 2023 Update",permalink:"/blog/october-2023-update"}},s={authorsImageUrls:[void 0]},p=[{value:"Issues Indexed",id:"issues-indexed",level:2},{value:"2024 Tasks",id:"2024-tasks",level:2}],m={toc:p};function u(e){let{components:t,...n}=e;return(0,a.kt)("wrapper",(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"issues-indexed"},"Issues Indexed"),(0,a.kt)("p",null,"Not much user-facing development was done in November, but 10,612 issues were added to the database bringing the total\nnumber of issues to ",(0,a.kt)("strong",{parentName:"p"},"88,244"),". I wish to give big thanks to everyone who has helped with the project. Thanks!"),(0,a.kt)("h2",{id:"2024-tasks"},"2024 Tasks"),(0,a.kt)("p",null,"I've started working on a list of items that I'm planning to work on in 2024. Here's a partial list:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Upgrade Server"),(0,a.kt)("p",{parentName:"li"},"Currently, the server is fairly underpowered (1 GiB Memory, 1 CPU, 25 GiB SSD, 1,000 GiB Transfer) but is able to\nhandle the current load without any particular issues. Based on the current user growth rate, I'm guessing I'll\nfinally need to upgrade sometime in 2024, I'm thinking a fairly minor bump should be sufficient (2 GiB Memory,\n1CPU, 50 GiB SSD, 2,000 GiB Transfer)")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Container Deployment"),(0,a.kt)("p",{parentName:"li"},"Before upgrading the server it makes sense to ",(0,a.kt)("em",{parentName:"p"},"finally")," set up the project to use containers (preferably\n",(0,a.kt)("a",{parentName:"p",href:"https://podman.io/"},"Podman"),") when deploying the website. If anyone wants to help\nwith ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/bpepple/metron/issues/69"},"this"),", that would be awesome.")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Look into Open Collective for Future Funding"),(0,a.kt)("p",{parentName:"li"},"Eventually it will make sense to look at setting up something like\n",(0,a.kt)("a",{parentName:"p",href:"https://opencollective.com/opensource"},"Open Collective")," to help with future server costs. Right now the server costs\naround $14 a month (not including annual domain name & email hosting costs) so it's not really an issue, but down the\nroad I probably won't want to cover all the costs of the project myself."),(0,a.kt)("p",{parentName:"li"},"Glancing at the criteria needed for acceptance to the Open Source Collective, it looks like Metron meets most of them,\nexcept having ",(0,a.kt)("em",{parentName:"p"},"100 stars")," on ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/"},"Github"),". ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},"So, if you'd like to help the project, one easy\nway would be to star the ",(0,a.kt)("a",{parentName:"em",href:"https://github.com/bpepple/metron"},"repository"),".")))),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Manga / International Support"),(0,a.kt)("p",{parentName:"li"},"It would be nice to make a final decision on whether to support Manga and Non-U.S. issues, right now I'm inclined not\nto but ",(0,a.kt)("em",{parentName:"p"},"if")," we do add support it will necessitate some changes to the database for things like currencies, languages,\nand such."))),(0,a.kt)("p",null,"I'm sure there will be other smaller items (like tweaking the site's css and such), but these are most items I'll be\nlooking at in 2024. \ud83c\udf89"))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/814f3328.2a7d82a5.js b/assets/js/814f3328.2a7d82a5.js deleted file mode 100644 index afd7cfc..0000000 --- a/assets/js/814f3328.2a7d82a5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[2535],{5641:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"October 2023 Update","permalink":"/blog/october-2023-update"},{"title":"Latest Happenings","permalink":"/blog/latest-happenings"},{"title":"Limited Series Type","permalink":"/blog/series-type-change"},{"title":"Using Podman to Run GCD Database Locally","permalink":"/blog/podman-gcd"},{"title":"OS Upgrade","permalink":"/blog/ubuntu-2204-lts"}]}')}}]); \ No newline at end of file diff --git a/assets/js/814f3328.a82e4a54.js b/assets/js/814f3328.a82e4a54.js new file mode 100644 index 0000000..f92726b --- /dev/null +++ b/assets/js/814f3328.a82e4a54.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[2535],{5641:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"November 2023 Update","permalink":"/blog/november-2023-update"},{"title":"October 2023 Update","permalink":"/blog/october-2023-update"},{"title":"Latest Happenings","permalink":"/blog/latest-happenings"},{"title":"Limited Series Type","permalink":"/blog/series-type-change"},{"title":"Using Podman to Run GCD Database Locally","permalink":"/blog/podman-gcd"}]}')}}]); \ No newline at end of file diff --git a/assets/js/84474961.18723eab.js b/assets/js/84474961.18723eab.js deleted file mode 100644 index f4d32e8..0000000 --- a/assets/js/84474961.18723eab.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[5037],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>u});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 s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},g={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),m=c(n),u=a,h=m["".concat(s,".").concat(u)]||m[u]||g[u]||o;return n?r.createElement(h,i(i({ref:t},p),{},{components:n})):r.createElement(h,i({ref:t},p))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;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,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>g,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=n(7462),a=(n(7294),n(3905));const o={slug:"october-2023-update",title:"October 2023 Update",date:"2023-10-29T10:04",authors:["bpepple"],tags:["comic","database","metron","metrontagger","comictagger"]},i="October 2023 News",l={permalink:"/blog/october-2023-update",source:"@site/blog/2023-10-29-october-update/index.md",title:"October 2023 Update",description:"New Indexed Issues Milestone",date:"2023-10-29T10:04:00.000Z",formattedDate:"October 29, 2023",tags:[{label:"comic",permalink:"/blog/tags/comic"},{label:"database",permalink:"/blog/tags/database"},{label:"metron",permalink:"/blog/tags/metron"},{label:"metrontagger",permalink:"/blog/tags/metrontagger"},{label:"comictagger",permalink:"/blog/tags/comictagger"}],readingTime:1.6,hasTruncateMarker:!1,authors:[{name:"Brian Pepple",title:"Founder of the Metron Project / Code Monkey",url:"https://github.com/bpepple",imageURL:"https://github.com/bpepple.png",key:"bpepple"}],frontMatter:{slug:"october-2023-update",title:"October 2023 Update",date:"2023-10-29T10:04",authors:["bpepple"],tags:["comic","database","metron","metrontagger","comictagger"]},nextItem:{title:"Latest Happenings",permalink:"/blog/latest-happenings"}},s={authorsImageUrls:[void 0]},c=[{value:"New Indexed Issues Milestone",id:"new-indexed-issues-milestone",level:2},{value:"Metron-Tagger v1.6.4",id:"metron-tagger-v164",level:2},{value:"Duplicate Page Removal",id:"duplicate-page-removal",level:3},{value:"Miscellaneous Maintenance",id:"miscellaneous-maintenance",level:3},{value:"Comic-Tagger",id:"comic-tagger",level:2}],p={toc:c};function g(e){let{components:t,...n}=e;return(0,a.kt)("wrapper",(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"new-indexed-issues-milestone"},"New Indexed Issues Milestone"),(0,a.kt)("p",null,"The ",(0,a.kt)("a",{parentName:"p",href:"https://metron.cloud/"},"Metron Project")," reached a milestone this month by having more than 77,000 issues added to\nits database. I wish to give big thanks to everyone who has helped with the project. Thanks!"),(0,a.kt)("h2",{id:"metron-tagger-v164"},"Metron-Tagger v1.6.4"),(0,a.kt)("h3",{id:"duplicate-page-removal"},"Duplicate Page Removal"),(0,a.kt)("p",null,"Just released a new version of ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/Metron-Project/metron-tagger"},"Metron-Tagger"),", which adds a new\nexperimental feature of finding / removing duplicate pages in a directory of comics. The feature will get the hashes for\nall the pages of the comics in a directory, and then ask the user if the image should be removed from the comics. This\nis done by using the user's system image viewer to display the duplicate image. Once the user has reviewed all the\nduplicated images it will ask the user whether to write the changes to the comics and then prompt them if they also want\nto update the ",(0,a.kt)("a",{parentName:"p",href:"https://anansi-project.github.io/docs/comicinfo/intro"},"ComicInfo.xml")," (if it exists) for the page\nchanges."),(0,a.kt)("p",null,"This feature most likely will work best when running on a weekly basis, instead of on a ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},"whole"))," comic collection,\nsince it's asking the user to review all the duplicate images ",(0,a.kt)("em",{parentName:"p"},"before")," writing the changes. I'm planning on reworking\nthis to make it more feasible to use on a large comic collection, but that is pretty far down on my TODO list (but if\nsomeone wants to work on this I'm more than willing to review a Pull Request)."),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Note"),": I've been using this for the last month and haven't had any issues, but if you plan on using this I would\nsuggest backing up any files when using this initially, and verifying it works correctly for you since once the changes\nare written they can't be undone! \ud83d\udca3"),(0,a.kt)("h3",{id:"miscellaneous-maintenance"},"Miscellaneous Maintenance"),(0,a.kt)("p",null,"The rest of v1.6.4 changes are primarily developer-side changes updating the toolsets for Metron-Tagger."),(0,a.kt)("h2",{id:"comic-tagger"},"Comic-Tagger"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/comictagger/comictagger"},"Comic-Tagger")," recently released\ntheir ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/comictagger/metron_talker"},"Metron-Talker")," plugin which adds support for tagging any comic with\nmetadata from ",(0,a.kt)("a",{parentName:"p",href:"https://metron.cloud/"},"Metron"),"."))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/84474961.9cd4f72f.js b/assets/js/84474961.9cd4f72f.js new file mode 100644 index 0000000..7750bcc --- /dev/null +++ b/assets/js/84474961.9cd4f72f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[5037],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>u});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 s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},g={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),m=c(n),u=a,h=m["".concat(s,".").concat(u)]||m[u]||g[u]||o;return n?r.createElement(h,i(i({ref:t},p),{},{components:n})):r.createElement(h,i({ref:t},p))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;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,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>g,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=n(7462),a=(n(7294),n(3905));const o={slug:"october-2023-update",title:"October 2023 Update",date:"2023-10-29T10:04",authors:["bpepple"],tags:["comic","database","metron","metrontagger","comictagger"]},i="October 2023 News",l={permalink:"/blog/october-2023-update",source:"@site/blog/2023-10-29-october-update/index.md",title:"October 2023 Update",description:"New Indexed Issues Milestone",date:"2023-10-29T10:04:00.000Z",formattedDate:"October 29, 2023",tags:[{label:"comic",permalink:"/blog/tags/comic"},{label:"database",permalink:"/blog/tags/database"},{label:"metron",permalink:"/blog/tags/metron"},{label:"metrontagger",permalink:"/blog/tags/metrontagger"},{label:"comictagger",permalink:"/blog/tags/comictagger"}],readingTime:1.6,hasTruncateMarker:!1,authors:[{name:"Brian Pepple",title:"Founder of the Metron Project / Code Monkey",url:"https://github.com/bpepple",imageURL:"https://github.com/bpepple.png",key:"bpepple"}],frontMatter:{slug:"october-2023-update",title:"October 2023 Update",date:"2023-10-29T10:04",authors:["bpepple"],tags:["comic","database","metron","metrontagger","comictagger"]},prevItem:{title:"November 2023 Update",permalink:"/blog/november-2023-update"},nextItem:{title:"Latest Happenings",permalink:"/blog/latest-happenings"}},s={authorsImageUrls:[void 0]},c=[{value:"New Indexed Issues Milestone",id:"new-indexed-issues-milestone",level:2},{value:"Metron-Tagger v1.6.4",id:"metron-tagger-v164",level:2},{value:"Duplicate Page Removal",id:"duplicate-page-removal",level:3},{value:"Miscellaneous Maintenance",id:"miscellaneous-maintenance",level:3},{value:"Comic-Tagger",id:"comic-tagger",level:2}],p={toc:c};function g(e){let{components:t,...n}=e;return(0,a.kt)("wrapper",(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"new-indexed-issues-milestone"},"New Indexed Issues Milestone"),(0,a.kt)("p",null,"The ",(0,a.kt)("a",{parentName:"p",href:"https://metron.cloud/"},"Metron Project")," reached a milestone this month by having more than 77,000 issues added to\nits database. I wish to give big thanks to everyone who has helped with the project. Thanks!"),(0,a.kt)("h2",{id:"metron-tagger-v164"},"Metron-Tagger v1.6.4"),(0,a.kt)("h3",{id:"duplicate-page-removal"},"Duplicate Page Removal"),(0,a.kt)("p",null,"Just released a new version of ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/Metron-Project/metron-tagger"},"Metron-Tagger"),", which adds a new\nexperimental feature of finding / removing duplicate pages in a directory of comics. The feature will get the hashes for\nall the pages of the comics in a directory, and then ask the user if the image should be removed from the comics. This\nis done by using the user's system image viewer to display the duplicate image. Once the user has reviewed all the\nduplicated images it will ask the user whether to write the changes to the comics and then prompt them if they also want\nto update the ",(0,a.kt)("a",{parentName:"p",href:"https://anansi-project.github.io/docs/comicinfo/intro"},"ComicInfo.xml")," (if it exists) for the page\nchanges."),(0,a.kt)("p",null,"This feature most likely will work best when running on a weekly basis, instead of on a ",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},"whole"))," comic collection,\nsince it's asking the user to review all the duplicate images ",(0,a.kt)("em",{parentName:"p"},"before")," writing the changes. I'm planning on reworking\nthis to make it more feasible to use on a large comic collection, but that is pretty far down on my TODO list (but if\nsomeone wants to work on this I'm more than willing to review a Pull Request)."),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Note"),": I've been using this for the last month and haven't had any issues, but if you plan on using this I would\nsuggest backing up any files when using this initially, and verifying it works correctly for you since once the changes\nare written they can't be undone! \ud83d\udca3"),(0,a.kt)("h3",{id:"miscellaneous-maintenance"},"Miscellaneous Maintenance"),(0,a.kt)("p",null,"The rest of v1.6.4 changes are primarily developer-side changes updating the toolsets for Metron-Tagger."),(0,a.kt)("h2",{id:"comic-tagger"},"Comic-Tagger"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://github.com/comictagger/comictagger"},"Comic-Tagger")," recently released\ntheir ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/comictagger/metron_talker"},"Metron-Talker")," plugin which adds support for tagging any comic with\nmetadata from ",(0,a.kt)("a",{parentName:"p",href:"https://metron.cloud/"},"Metron"),"."))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8eb4e46b.7c48f7ed.js b/assets/js/8eb4e46b.6a14f0c7.js similarity index 79% rename from assets/js/8eb4e46b.7c48f7ed.js rename to assets/js/8eb4e46b.6a14f0c7.js index 6d1f1dc..bca8e4f 100644 --- a/assets/js/8eb4e46b.7c48f7ed.js +++ b/assets/js/8eb4e46b.6a14f0c7.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[1],{2638:e=>{e.exports=JSON.parse('{"permalink":"/blog/page/2","page":2,"postsPerPage":10,"totalPages":2,"totalCount":11,"previousPage":"/blog","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[1],{2638:e=>{e.exports=JSON.parse('{"permalink":"/blog/page/2","page":2,"postsPerPage":10,"totalPages":2,"totalCount":12,"previousPage":"/blog","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/9b5d5226.93b4c497.js b/assets/js/9b5d5226.93b4c497.js new file mode 100644 index 0000000..62f2185 --- /dev/null +++ b/assets/js/9b5d5226.93b4c497.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[4567],{1502:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/comic/page/2","page":2,"postsPerPage":10,"totalPages":2,"totalCount":11,"previousPage":"/blog/tags/comic","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/9c954eb0.d3b258db.js b/assets/js/9c954eb0.6a52efb9.js similarity index 78% rename from assets/js/9c954eb0.d3b258db.js rename to assets/js/9c954eb0.6a52efb9.js index ef0b11b..0b4435c 100644 --- a/assets/js/9c954eb0.d3b258db.js +++ b/assets/js/9c954eb0.6a52efb9.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[5657],{3484:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/database","page":1,"postsPerPage":10,"totalPages":1,"totalCount":5,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[5657],{3484:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/database","page":1,"postsPerPage":10,"totalPages":1,"totalCount":6,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/a7023ddc.4ecb5797.js b/assets/js/a7023ddc.b1201bcb.js similarity index 82% rename from assets/js/a7023ddc.4ecb5797.js rename to assets/js/a7023ddc.b1201bcb.js index 1d9ee9a..9bd3c86 100644 --- a/assets/js/a7023ddc.4ecb5797.js +++ b/assets/js/a7023ddc.b1201bcb.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[1713],{3457:a=>{a.exports=JSON.parse('[{"label":"comic","permalink":"/blog/tags/comic","count":10},{"label":"database","permalink":"/blog/tags/database","count":5},{"label":"metron","permalink":"/blog/tags/metron","count":5},{"label":"metrontagger","permalink":"/blog/tags/metrontagger","count":1},{"label":"comictagger","permalink":"/blog/tags/comictagger","count":2},{"label":"series","permalink":"/blog/tags/series","count":2},{"label":"api","permalink":"/blog/tags/api","count":3},{"label":"comicvine","permalink":"/blog/tags/comicvine","count":2},{"label":"podman","permalink":"/blog/tags/podman","count":1},{"label":"mysql","permalink":"/blog/tags/mysql","count":1},{"label":"gcd","permalink":"/blog/tags/gcd","count":1},{"label":"grandcomicdatabase","permalink":"/blog/tags/grandcomicdatabase","count":1},{"label":"server","permalink":"/blog/tags/server","count":1},{"label":"ubuntu","permalink":"/blog/tags/ubuntu","count":1},{"label":"marvel","permalink":"/blog/tags/marvel","count":2},{"label":"python","permalink":"/blog/tags/python","count":1},{"label":"cbz","permalink":"/blog/tags/cbz","count":1},{"label":"cbr","permalink":"/blog/tags/cbr","count":1},{"label":"tagging","permalink":"/blog/tags/tagging","count":2},{"label":"masterworks","permalink":"/blog/tags/masterworks","count":1},{"label":"x-men","permalink":"/blog/tags/x-men","count":1},{"label":"tpb","permalink":"/blog/tags/tpb","count":1},{"label":"collections","permalink":"/blog/tags/collections","count":1},{"label":"metadata","permalink":"/blog/tags/metadata","count":1},{"label":"comic-tagger","permalink":"/blog/tags/comic-tagger","count":1},{"label":"anansi-project","permalink":"/blog/tags/anansi-project","count":1}]')}}]); \ No newline at end of file +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[1713],{3457:a=>{a.exports=JSON.parse('[{"label":"comic","permalink":"/blog/tags/comic","count":11},{"label":"database","permalink":"/blog/tags/database","count":6},{"label":"metron","permalink":"/blog/tags/metron","count":6},{"label":"metrontagger","permalink":"/blog/tags/metrontagger","count":2},{"label":"comictagger","permalink":"/blog/tags/comictagger","count":3},{"label":"series","permalink":"/blog/tags/series","count":2},{"label":"api","permalink":"/blog/tags/api","count":3},{"label":"comicvine","permalink":"/blog/tags/comicvine","count":2},{"label":"podman","permalink":"/blog/tags/podman","count":1},{"label":"mysql","permalink":"/blog/tags/mysql","count":1},{"label":"gcd","permalink":"/blog/tags/gcd","count":1},{"label":"grandcomicdatabase","permalink":"/blog/tags/grandcomicdatabase","count":1},{"label":"server","permalink":"/blog/tags/server","count":1},{"label":"ubuntu","permalink":"/blog/tags/ubuntu","count":1},{"label":"marvel","permalink":"/blog/tags/marvel","count":2},{"label":"python","permalink":"/blog/tags/python","count":1},{"label":"cbz","permalink":"/blog/tags/cbz","count":1},{"label":"cbr","permalink":"/blog/tags/cbr","count":1},{"label":"tagging","permalink":"/blog/tags/tagging","count":2},{"label":"masterworks","permalink":"/blog/tags/masterworks","count":1},{"label":"x-men","permalink":"/blog/tags/x-men","count":1},{"label":"tpb","permalink":"/blog/tags/tpb","count":1},{"label":"collections","permalink":"/blog/tags/collections","count":1},{"label":"metadata","permalink":"/blog/tags/metadata","count":1},{"label":"comic-tagger","permalink":"/blog/tags/comic-tagger","count":1},{"label":"anansi-project","permalink":"/blog/tags/anansi-project","count":1}]')}}]); \ No newline at end of file diff --git a/assets/js/b2b675dd.6977e76b.js b/assets/js/b2b675dd.5235f2a9.js similarity index 78% rename from assets/js/b2b675dd.6977e76b.js rename to assets/js/b2b675dd.5235f2a9.js index b701b43..124621f 100644 --- a/assets/js/b2b675dd.6977e76b.js +++ b/assets/js/b2b675dd.5235f2a9.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[533],{8017:e=>{e.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":2,"totalCount":11,"nextPage":"/blog/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[533],{8017:e=>{e.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":2,"totalCount":12,"nextPage":"/blog/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/b2f554cd.1bf226b5.js b/assets/js/b2f554cd.1bf226b5.js new file mode 100644 index 0000000..82f384f --- /dev/null +++ b/assets/js/b2f554cd.1bf226b5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[1477],{10:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"november-2023-update","metadata":{"permalink":"/blog/november-2023-update","source":"@site/blog/2023-12-03-november-update/index.md","title":"November 2023 Update","description":"Issues Indexed","date":"2023-12-03T13:29:00.000Z","formattedDate":"December 3, 2023","tags":[{"label":"comic","permalink":"/blog/tags/comic"},{"label":"database","permalink":"/blog/tags/database"},{"label":"metron","permalink":"/blog/tags/metron"},{"label":"metrontagger","permalink":"/blog/tags/metrontagger"},{"label":"comictagger","permalink":"/blog/tags/comictagger"}],"readingTime":1.785,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"november-2023-update","title":"November 2023 Update","date":"2023-12-03T13:29","authors":["bpepple"],"tags":["comic","database","metron","metrontagger","comictagger"]},"nextItem":{"title":"October 2023 Update","permalink":"/blog/october-2023-update"}},"content":"## Issues Indexed\\n\\nNot much user-facing development was done in November, but 10,612 issues were added to the database bringing the total\\nnumber of issues to **88,244**. I wish to give big thanks to everyone who has helped with the project. Thanks!\\n\\n## 2024 Tasks\\n\\nI\'ve started working on a list of items that I\'m planning to work on in 2024. Here\'s a partial list:\\n\\n- Upgrade Server\\n\\n Currently, the server is fairly underpowered (1 GiB Memory, 1 CPU, 25 GiB SSD, 1,000 GiB Transfer) but is able to\\n handle the current load without any particular issues. Based on the current user growth rate, I\'m guessing I\'ll\\n finally need to upgrade sometime in 2024, I\'m thinking a fairly minor bump should be sufficient (2 GiB Memory,\\n 1CPU, 50 GiB SSD, 2,000 GiB Transfer)\\n\\n- Container Deployment\\n\\n Before upgrading the server it makes sense to *finally* set up the project to use containers (preferably\\n [Podman](https://podman.io/)) when deploying the website. If anyone wants to help\\n with [this](https://github.com/bpepple/metron/issues/69), that would be awesome.\\n\\n- Look into Open Collective for Future Funding\\n\\n Eventually it will make sense to look at setting up something like\\n [Open Collective](https://opencollective.com/opensource) to help with future server costs. Right now the server costs\\n around $14 a month (not including annual domain name & email hosting costs) so it\'s not really an issue, but down the\\n road I probably won\'t want to cover all the costs of the project myself.\\n\\n Glancing at the criteria needed for acceptance to the Open Source Collective, it looks like Metron meets most of them,\\n except having *100 stars* on [Github](https://github.com/). ***So, if you\'d like to help the project, one easy\\n way would be to star the [repository](https://github.com/bpepple/metron).***\\n\\n- Manga / International Support\\n\\n It would be nice to make a final decision on whether to support Manga and Non-U.S. issues, right now I\'m inclined not\\n to but *if* we do add support it will necessitate some changes to the database for things like currencies, languages,\\n and such.\\n\\nI\'m sure there will be other smaller items (like tweaking the site\'s css and such), but these are most items I\'ll be\\nlooking at in 2024. \ud83c\udf89"},{"id":"october-2023-update","metadata":{"permalink":"/blog/october-2023-update","source":"@site/blog/2023-10-29-october-update/index.md","title":"October 2023 Update","description":"New Indexed Issues Milestone","date":"2023-10-29T10:04:00.000Z","formattedDate":"October 29, 2023","tags":[{"label":"comic","permalink":"/blog/tags/comic"},{"label":"database","permalink":"/blog/tags/database"},{"label":"metron","permalink":"/blog/tags/metron"},{"label":"metrontagger","permalink":"/blog/tags/metrontagger"},{"label":"comictagger","permalink":"/blog/tags/comictagger"}],"readingTime":1.6,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"october-2023-update","title":"October 2023 Update","date":"2023-10-29T10:04","authors":["bpepple"],"tags":["comic","database","metron","metrontagger","comictagger"]},"prevItem":{"title":"November 2023 Update","permalink":"/blog/november-2023-update"},"nextItem":{"title":"Latest Happenings","permalink":"/blog/latest-happenings"}},"content":"## New Indexed Issues Milestone\\n\\nThe [Metron Project](https://metron.cloud/) reached a milestone this month by having more than 77,000 issues added to\\nits database. I wish to give big thanks to everyone who has helped with the project. Thanks!\\n\\n## Metron-Tagger v1.6.4\\n\\n### Duplicate Page Removal\\n\\nJust released a new version of [Metron-Tagger](https://github.com/Metron-Project/metron-tagger), which adds a new\\nexperimental feature of finding / removing duplicate pages in a directory of comics. The feature will get the hashes for\\nall the pages of the comics in a directory, and then ask the user if the image should be removed from the comics. This\\nis done by using the user\'s system image viewer to display the duplicate image. Once the user has reviewed all the\\nduplicated images it will ask the user whether to write the changes to the comics and then prompt them if they also want\\nto update the [ComicInfo.xml](https://anansi-project.github.io/docs/comicinfo/intro) (if it exists) for the page\\nchanges.\\n\\nThis feature most likely will work best when running on a weekly basis, instead of on a ***whole*** comic collection,\\nsince it\'s asking the user to review all the duplicate images *before* writing the changes. I\'m planning on reworking\\nthis to make it more feasible to use on a large comic collection, but that is pretty far down on my TODO list (but if\\nsomeone wants to work on this I\'m more than willing to review a Pull Request).\\n\\n**Note**: I\'ve been using this for the last month and haven\'t had any issues, but if you plan on using this I would\\nsuggest backing up any files when using this initially, and verifying it works correctly for you since once the changes\\nare written they can\'t be undone! \ud83d\udca3\\n\\n### Miscellaneous Maintenance\\n\\nThe rest of v1.6.4 changes are primarily developer-side changes updating the toolsets for Metron-Tagger.\\n\\n## Comic-Tagger\\n\\n[Comic-Tagger](https://github.com/comictagger/comictagger) recently released\\ntheir [Metron-Talker](https://github.com/comictagger/metron_talker) plugin which adds support for tagging any comic with\\nmetadata from [Metron](https://metron.cloud/)."},{"id":"latest-happenings","metadata":{"permalink":"/blog/latest-happenings","source":"@site/blog/2023-05-23-latest-happenings/index.md","title":"Latest Happenings","description":"New Indexed Issues Milestone","date":"2023-05-24T13:24:00.000Z","formattedDate":"May 24, 2023","tags":[{"label":"comic","permalink":"/blog/tags/comic"},{"label":"database","permalink":"/blog/tags/database"},{"label":"series","permalink":"/blog/tags/series"},{"label":"api","permalink":"/blog/tags/api"},{"label":"comicvine","permalink":"/blog/tags/comicvine"},{"label":"comictagger","permalink":"/blog/tags/comictagger"}],"readingTime":0.88,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"latest-happenings","title":"Latest Happenings","date":"2023-05-24T13:24","authors":["bpepple"],"tags":["comic","database","series","api","comicvine","comictagger"]},"prevItem":{"title":"October 2023 Update","permalink":"/blog/october-2023-update"},"nextItem":{"title":"Limited Series Type","permalink":"/blog/series-type-change"}},"content":"## New Indexed Issues Milestone\\n\\nThe [Metron Project](https://metron.cloud/) reached a milestone today by having 65,000 issues added to its database. I wish to give big thanks to everyone who has helped with the project. Thanks!\\n\\n## POST API\\n\\nBeen spending the last few months working on a POST API to make it easier to add/update information on Metron. Currently it\'s only available to users with Adminstrators permissions, but later this year I\'ll look at the feasability of making it more readily available.\\n\\n## Comic Vine ID\'s\\n\\nAnother project I\'ve been working on is adding [Comic Vine](https://comicvine.gamespot.com/) identification numbers to the various resource items. This should help users match items between the two data sources. Currently, about 40% of the issues have been updated with this information and with any luck the majority of issues will be finished by the end of the month.\\n\\n## ComicTagger\\n\\nOne of the developers of [Comic Tagger](https://github.com/comictagger/comictagger) has been working on adding support for tagging digital comics with data from Metron, and hopefully in the next couple of months that merged."},{"id":"series-type-change","metadata":{"permalink":"/blog/series-type-change","source":"@site/blog/2022-12-04-series-type/index.md","title":"Limited Series Type","description":"Made a minor change to the series types available by consolidating mini & maxi-series to the new Limited Series type. There isn\'t a real definite value for mini and maxi series, and really it makes more sense to not bother differentiating them. So, I\'ve gone ahead and migrated the existing data for this change, and users should see this change. If you have any questions or thoughts, don\'t hesitate to contact me.","date":"2022-12-04T16:51:00.000Z","formattedDate":"December 4, 2022","tags":[{"label":"comic","permalink":"/blog/tags/comic"},{"label":"database","permalink":"/blog/tags/database"},{"label":"series","permalink":"/blog/tags/series"}],"readingTime":0.36,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"series-type-change","title":"Limited Series Type","date":"2022-12-04T16:51","authors":["bpepple"],"tags":["comic","database","series"]},"prevItem":{"title":"Latest Happenings","permalink":"/blog/latest-happenings"},"nextItem":{"title":"Using Podman to Run GCD Database Locally","permalink":"/blog/podman-gcd"}},"content":"Made a minor change to the ***series types*** available by consolidating ***mini & maxi-series*** to the new ***Limited Series*** type. There isn\'t a real definite value for mini and maxi series, and really it makes more sense to not bother differentiating them. So, I\'ve gone ahead and migrated the existing data for this change, and users should see this change. If you have any questions or thoughts, don\'t hesitate to contact [me](mailto:bpepple@metron.cloud)."},{"id":"podman-gcd","metadata":{"permalink":"/blog/podman-gcd","source":"@site/blog/2022-10-08-podman/index.md","title":"Using Podman to Run GCD Database Locally","description":"I\'ve had a few users ask me how to run a local copy of the Grand Comics Database, so I figured I\'d do a short write-up on how I do it.","date":"2022-10-08T11:35:00.000Z","formattedDate":"October 8, 2022","tags":[{"label":"comic","permalink":"/blog/tags/comic"},{"label":"database","permalink":"/blog/tags/database"},{"label":"podman","permalink":"/blog/tags/podman"},{"label":"mysql","permalink":"/blog/tags/mysql"},{"label":"gcd","permalink":"/blog/tags/gcd"},{"label":"grandcomicdatabase","permalink":"/blog/tags/grandcomicdatabase"}],"readingTime":5.065,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"podman-gcd","title":"Using Podman to Run GCD Database Locally","date":"2022-10-08T11:35","authors":["bpepple"],"tags":["comic","database","podman","mysql","gcd","grandcomicdatabase"]},"prevItem":{"title":"Limited Series Type","permalink":"/blog/series-type-change"},"nextItem":{"title":"OS Upgrade","permalink":"/blog/ubuntu-2204-lts"}},"content":"I\'ve had a few users ask me how to run a local copy of the [Grand Comics Database](https://www.comics.org/), so I figured I\'d do a short write-up on how I do it.\\n\\nI use [Podman](https://podman.io/) for containers instead of [Docker](https://www.docker.com/), but the differences between them is fairly minimal and this should give you a good idea of how to do it. Anyway, let\'s get started!\\n\\nFirst off, you\'ll want to download the most recent database dump from GCD which can be found [here](https://www.comics.org/download/). Once it\'s finished downloading, unzip the file:\\n\\n```\\nunzip current.zip -d /tmp/\\n```\\nYou should see output similar to this:\\n\\n```\\nArchive: current.zip\\n inflating: /tmp/2022-10-01.sql \\n```\\n\\nOk, now that we\'ve got the data from gcd, let\'s create a [MySQL](https://www.mysql.com/) container. We need to first pull a MySQL image, which can be done by running:\\n\\n```\\npodman pull docker.io/library/mysql:5.7\\n```\\n\\nAfter it\'s done downloading the image, you can confirm:\\n\\n```\\npodman images\\n```\\n\\nwhich should return output similar to this:\\n\\n```\\nbpepple@frodo ~ $ podman images mysql\\nREPOSITORY TAG IMAGE ID CREATED SIZE\\ndocker.io/library/mysql 5.7 eb175b0743cc 19 hours ago 448 MB\\n```\\n\\nNow we need to create the container. You\'ll want to replace user and mysql credentials with your own values. The `volume` flag is where on your filesystem you want to save the database. The `Z` suffix is used for systems, primarily [Red Hat](https://www.redhat.com/en/topics/linux/what-is-selinux)-based, that use [SELinux](https://www.redhat.com/en/topics/linux/what-is-selinux). If you don\'t use SELinux that can be dropped:\\n\\n```\\npodman run -d --name mysql -p 3306:3306 -e MYSQL_USER=bpepple -e MYSQL_PASSWORD=123456 -e MYSQL_DATABASE=gcd -e MYSQL_ROOT_PASSWORD=567890 --volume /home/bpepple/Storage/pods/mysql/:/var/lib/mysql:Z mysql:5.7\\n```\\n\\nNow let\'s verify that the container was created and is running by using the following:\\n\\n```\\npodman ps\\n```\\n\\nYou should see output similar to this:\\n\\n```\\nbpepple@frodo ~ $ podman ps\\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\\n400c957ae25d docker.io/library/mysql:5.7 mysqld 7 seconds ago Up 7 seconds ago 0.0.0.0:3306->3306/tcp mysql\\n```\\nNow we just need to dump the data from GCD into the database. We can do this by running:\\n\\n```\\ncat /tmp/2022-10-01.sql | podman exec -i mysql /usr/bin/mysql -u root --password=567890 gcd\\n```\\nDepending on the specs of your machine, this might be a good time to grab some coffee, since the SQL dump is **very** large and will take awhile to finish. Once it\'s done, we can start using the database by attaching to the container:\\n\\n```\\npodman exec -it mysql mysql -ubpepple -p gcd\\n```\\n\\nThis command will prompt you for your password, and then you\'ll see the MySQL prompt where you can run a simple SQL statement like so:\\n```\\n DESCRIBE gcd_issue;\\n```\\nWhich should produce output similar to this:\\n```\\n+----------------------------+---------------+------+-----+---------------------+----------------+\\n| Field | Type | Null | Key | Default | Extra |\\n+----------------------------+---------------+------+-----+---------------------+----------------+\\n| id | int(11) | NO | PRI | NULL | auto_increment |\\n| number | varchar(50) | NO | MUL | NULL | |\\n| volume | varchar(50) | NO | MUL | | |\\n| no_volume | tinyint(1) | NO | MUL | 0 | |\\n| display_volume_with_number | tinyint(1) | NO | MUL | 0 | |\\n| series_id | int(11) | NO | MUL | NULL | |\\n| indicia_publisher_id | int(11) | YES | MUL | NULL | |\\n| indicia_pub_not_printed | tinyint(1) | NO | | NULL | |\\n| brand_id | int(11) | YES | MUL | NULL | |\\n| no_brand | tinyint(1) | NO | MUL | NULL | |\\n| publication_date | varchar(255) | NO | | NULL | |\\n| key_date | varchar(10) | NO | MUL | NULL | |\\n| sort_code | int(11) | NO | MUL | NULL | |\\n| price | varchar(255) | NO | | NULL | |\\n| page_count | decimal(10,3) | YES | | NULL | |\\n| page_count_uncertain | tinyint(1) | NO | | 0 | |\\n| indicia_frequency | varchar(255) | NO | | | |\\n| no_indicia_frequency | tinyint(1) | NO | MUL | 0 | |\\n| editing | longtext | NO | | NULL | |\\n| no_editing | tinyint(1) | NO | MUL | 0 | |\\n| notes | longtext | NO | | NULL | |\\n| created | datetime | NO | | 1901-01-01 00:00:00 | |\\n| modified | datetime | NO | MUL | 1901-01-01 00:00:00 | |\\n| deleted | tinyint(1) | NO | MUL | 0 | |\\n| is_indexed | tinyint(1) | NO | MUL | 0 | |\\n| isbn | varchar(32) | NO | MUL | | |\\n| valid_isbn | varchar(13) | NO | MUL | | |\\n| no_isbn | tinyint(1) | NO | MUL | 0 | |\\n| variant_of_id | int(11) | YES | MUL | NULL | |\\n| variant_name | varchar(255) | NO | | | |\\n| barcode | varchar(38) | NO | MUL | | |\\n| no_barcode | tinyint(1) | NO | | 0 | |\\n| title | varchar(255) | NO | MUL | | |\\n| no_title | tinyint(1) | NO | MUL | 0 | |\\n| on_sale_date | varchar(10) | NO | MUL | NULL | |\\n| on_sale_date_uncertain | tinyint(1) | NO | | 0 | |\\n| rating | varchar(255) | NO | MUL | NULL | |\\n| no_rating | tinyint(1) | NO | MUL | NULL | |\\n| volume_not_printed | tinyint(1) | NO | | NULL | |\\n| no_indicia_printer | tinyint(1) | NO | | NULL | |\\n+----------------------------+---------------+------+-----+---------------------+----------------+\\n40 rows in set (0.00 sec)\\n\\n```\\nGreat, we\'ve got the database up and running! To logout from the container just type:\\n\\n```\\n\\\\q\\n```\\n\\nTo stop the container, you would just use the following:\\n\\n```\\npodman stop mysql\\n```\\n\\nAnd that\'s it! Podman has tons of niceties (like auto-updating images, using [systemd](https://systemd.io/) for container start-ups, etc.) and I\'d encourage you to read up on using some its many features. If it get some free time, I\'ll do a follow-up article about using [Python](https://www.python.org/) to query the database and using that data for things like writing metadata to comic archives."},{"id":"ubuntu-2204-lts","metadata":{"permalink":"/blog/ubuntu-2204-lts","source":"@site/blog/2022-08-26-ubuntu-22-04/index.md","title":"OS Upgrade","description":"Finally got around to upgrading the OS for Metron to Ubuntu 22.04.1 LTS, which overall, was fairly painless. Tests didn\'t find anything obviously broken, but if you do run across something that is, please open a bug for it. Thx!","date":"2022-08-27T14:32:00.000Z","formattedDate":"August 27, 2022","tags":[{"label":"server","permalink":"/blog/tags/server"},{"label":"ubuntu","permalink":"/blog/tags/ubuntu"}],"readingTime":0.2,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"ubuntu-2204-lts","title":"OS Upgrade","date":"2022-08-27T14:32","authors":["bpepple"],"tags":["server","ubuntu"]},"prevItem":{"title":"Using Podman to Run GCD Database Locally","permalink":"/blog/podman-gcd"},"nextItem":{"title":"Esak-1.3.2","permalink":"/blog/esak-132"}},"content":"Finally got around to upgrading the OS for Metron to [Ubuntu 22.04.1 LTS](https://releases.ubuntu.com/22.04.1/), which overall, was fairly painless. Tests didn\'t find anything obviously broken, but if you do run across something that is, please open a [bug](https://github.com/bpepple/metron/issues/new/choose) for it. Thx!"},{"id":"esak-132","metadata":{"permalink":"/blog/esak-132","source":"@site/blog/2022-08-23-esak-1-3-2/index.md","title":"Esak-1.3.2","description":"Did a quick release this morning of the python wrapper for the Marvel API, Esak, which adds an option to have the cache results expire after a user-defined number of days. To update to the latest version just run the following command:","date":"2022-08-23T10:35:00.000Z","formattedDate":"August 23, 2022","tags":[{"label":"comic","permalink":"/blog/tags/comic"},{"label":"marvel","permalink":"/blog/tags/marvel"},{"label":"api","permalink":"/blog/tags/api"},{"label":"python","permalink":"/blog/tags/python"}],"readingTime":0.245,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"esak-132","title":"Esak-1.3.2","date":"2022-08-23T10:35","authors":["bpepple"],"tags":["comic","marvel","api","python"]},"prevItem":{"title":"OS Upgrade","permalink":"/blog/ubuntu-2204-lts"},"nextItem":{"title":"Darkseid-1.3.3","permalink":"/blog/darkseid-133"}},"content":"Did a quick release this morning of the python wrapper for the Marvel API, [Esak](https://github.com/Metron-Project/esak), which adds an option to have the cache results expire after a user-defined number of days. To update to the latest version just run the following command:\\n\\n```\\npip3 install -U --user esak\\n```"},{"id":"darkseid-133","metadata":{"permalink":"/blog/darkseid-133","source":"@site/blog/2022-07-26-darkseid-1-3-3/index.md","title":"Darkseid-1.3.3","description":"Did a quick release today of Darkseid that fixes a bug which prevented exporting rar (.cbr) comics to zip files (.cbz). If you use Metron-Tagger and export rar files, it would be worthwhile to update Darkseid which can be done with the following command:","date":"2022-07-26T12:35:00.000Z","formattedDate":"July 26, 2022","tags":[{"label":"cbz","permalink":"/blog/tags/cbz"},{"label":"cbr","permalink":"/blog/tags/cbr"},{"label":"comic","permalink":"/blog/tags/comic"},{"label":"tagging","permalink":"/blog/tags/tagging"}],"readingTime":0.33,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"darkseid-133","title":"Darkseid-1.3.3","date":"2022-07-26T12:35","authors":["bpepple"],"tags":["cbz","cbr","comic","tagging"]},"prevItem":{"title":"Esak-1.3.2","permalink":"/blog/esak-132"},"nextItem":{"title":"Trade Paperback / Collections Support","permalink":"/blog/trade-paperback-collections-support"}},"content":"Did a quick release today of [Darkseid](https://github.com/Metron-Project/darkseid) that fixes a bug which prevented exporting rar (.cbr) comics to zip files (.cbz). If you use [Metron-Tagger](https://github.com/Metron-Project/metron-tagger) and export rar files, it would be worthwhile to update Darkseid which can be done with the following command:\\n\\n```\\npip3 install -U --user darkseid\\n```\\n\\nAs always if you run into any problems, don\'t hesitate to contact us on [Matrix](https://matrix.to/#/#metrondb:matrix.org)."},{"id":"trade-paperback-collections-support","metadata":{"permalink":"/blog/trade-paperback-collections-support","source":"@site/blog/2022-07-23-collections/index.md","title":"Trade Paperback / Collections Support","description":"Marvel Masterworks Cover","date":"2022-07-23T15:35:00.000Z","formattedDate":"July 23, 2022","tags":[{"label":"metron","permalink":"/blog/tags/metron"},{"label":"comic","permalink":"/blog/tags/comic"},{"label":"marvel","permalink":"/blog/tags/marvel"},{"label":"masterworks","permalink":"/blog/tags/masterworks"},{"label":"x-men","permalink":"/blog/tags/x-men"},{"label":"tpb","permalink":"/blog/tags/tpb"},{"label":"collections","permalink":"/blog/tags/collections"}],"readingTime":0.935,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"trade-paperback-collections-support","title":"Trade Paperback / Collections Support","date":"2022-07-23T15:35","authors":["bpepple"],"tags":["metron","comic","marvel","masterworks","x-men","tpb","collections"]},"prevItem":{"title":"Darkseid-1.3.3","permalink":"/blog/darkseid-133"},"nextItem":{"title":"50,000 issues indexed","permalink":"/blog/50000-issues"}},"content":"![Marvel Masterworks Cover](./marvel-masterworks-uncanny-xmen-1.jpg)\\n\\nA user contacted me about adding [Marvel Masterworks: The Uncanny X-Men](https://metron.cloud/series/marvel-masterworks-the-uncanny-x-men-2003/) series to [Metron](https://metron.cloud) since we have recently added support for trade paperbacks/collected editions. I figured this would be useful exercise since it would show me what parts of the process could be improved to make it easier.\\n\\nCurrently, the process requires the editor to add ***all*** creators, characters, teams, etc. manually for the reprinted issues associate with the collection, much like a regular issue. One obvious way to simplify this is to automatically ***add*** any characters, team, story titles, etc. for the issues being reprinted. Currently, I\'ve written an [admin action](https://github.com/bpepple/metron/blob/0d6268f92709ef886e49ffe2a134a0b6af3672f7/comicsdb/admin/issue.py#L145) to do this, but sometime in the future I need to expose this functionality so that ***anyone*** adding a Trade Paperback/Collection can save some time.\\n\\nWhen I was creating Metron one of the choices I made was to add creators at an issue-level, and not at a story-level, since I wanted the process for adding an issue to be fairly simple. The downside to this approach is that adding information to a collection from an issue with multiple stories isn\'t really possible.\ud83d\ude22"},{"id":"50000-issues","metadata":{"permalink":"/blog/50000-issues","source":"@site/blog/2022-07-17-50000/index.md","title":"50,000 issues indexed","description":"The Metron Project reached a milestone today by having 50,000 issues added to its database. I wish to give big thanks to everyone who has helped with the project. Thanks!","date":"2022-07-17T11:00:00.000Z","formattedDate":"July 17, 2022","tags":[{"label":"metron","permalink":"/blog/tags/metron"},{"label":"comic","permalink":"/blog/tags/comic"},{"label":"database","permalink":"/blog/tags/database"},{"label":"api","permalink":"/blog/tags/api"}],"readingTime":0.15,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"50000-issues","title":"50,000 issues indexed","date":"2022-07-17T11:00","authors":["bpepple"],"tags":["metron","comic","database","api"]},"prevItem":{"title":"Trade Paperback / Collections Support","permalink":"/blog/trade-paperback-collections-support"},"nextItem":{"title":"MetronInfo.xml","permalink":"/blog/welcome-metroninfo"}},"content":"The Metron Project reached a milestone today by having 50,000 issues added to its database. I wish to give big thanks to everyone who has helped with the project. Thanks!"},{"id":"welcome-metroninfo","metadata":{"permalink":"/blog/welcome-metroninfo","source":"@site/blog/2022-07-13-metroninfo/index.md","title":"MetronInfo.xml","description":"So, one of the new projects I\'ve been working on in my spare time is a new comic book xml schema called MetronInfo.","date":"2022-07-13T00:00:00.000Z","formattedDate":"July 13, 2022","tags":[{"label":"metron","permalink":"/blog/tags/metron"},{"label":"comic","permalink":"/blog/tags/comic"},{"label":"metadata","permalink":"/blog/tags/metadata"},{"label":"tagging","permalink":"/blog/tags/tagging"},{"label":"comicvine","permalink":"/blog/tags/comicvine"},{"label":"comic-tagger","permalink":"/blog/tags/comic-tagger"},{"label":"anansi-project","permalink":"/blog/tags/anansi-project"}],"readingTime":1.75,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"welcome-metroninfo","title":"MetronInfo.xml","authors":["bpepple"],"tags":["metron","comic","metadata","tagging","comicvine","comic-tagger","anansi-project"]},"prevItem":{"title":"50,000 issues indexed","permalink":"/blog/50000-issues"},"nextItem":{"title":"Welcome","permalink":"/blog/welcome"}},"content":"So, one of the new projects I\'ve been working on in my spare time is a new comic book xml schema called [MetronInfo](https://github.com/Metron-Project/metroninfo).\\n\\nCurrently, most applications use [ComicInfo](https://github.com/anansi-project/comicinfo) which originated from the [ComicRack](https://comicrack.en.softonic.com/) application, but due to it\'s history this format has some limitations like:\\n\\n- **Poor handling of data.** For example, cover date information that is split into separate integer types, instead of just using a date type.\\n- **Limited types metadata stored.** For example, when tagging a comic book archive with an application like [ComicTagger](https://github.com/comictagger/comictagger) it would be useful to know where the metadata information was retrieved from (i.e. Comic Vine, GCD, Metron, etc.) and the resources identification number.\\n- **Lack of documentation.** The [Anansi Project](https://anansi-project.github.io/) ***is*** working on improving this, tho.\\n\\nFor now, the Anansi Project is working on documenting and extending (non-breaking changes) the ComicInfo schema, but in my opinion that time spent would be better spent on creating a new format not tied to a dead application. Due to the fairly unstructured nature of comic book archives it\'s trivial to tag one with the existing ComicInfo format **and** also a new format. That way users who use applications that only support ComicInfo.xml can still use them, but also gives them the option to use applications that could support the MetronInfo format.\\n\\nMy goals for MetronInfo.xml are:\\n\\n- Fix some of the deficiencies of the ComicInfo format.\\n- Add information to make it easier for Plex-like application to identify data (series, character, etc/) when importing comics into their application.\\n- Document the elements clearly so their use is not ambiguous.\\n\\nCurrently I\'m working right now on finalizing the new format, and would appreciate any help or feedback from the comic book community in this. Feel free to leave suggestions either at the [Discussions Page](https://github.com/Metron-Project/metroninfo/discussions) or contact use over on [Matrix](https://matrix.to/#/#metrondb:matrix.org).\\n\\nOnce the new format is finalized I plan on writing a tool that will create a MetronInfo.xml file for any existing comic book archive that was tagged with ComicTagger or [Metron-Tagger](https://github.com/Metron-Project/metron-tagger), and also retrieve any missing data from the source of information (Metron or Comic Vine)."},{"id":"welcome","metadata":{"permalink":"/blog/welcome","source":"@site/blog/2022-07-06-welcome/index.md","title":"Welcome","description":"Welcome to the Metron Project! We\'ll be using this site to add some documentation and information about new project initiatives here.","date":"2022-07-06T00:00:00.000Z","formattedDate":"July 6, 2022","tags":[{"label":"metron","permalink":"/blog/tags/metron"},{"label":"comic","permalink":"/blog/tags/comic"}],"readingTime":0.165,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"welcome","title":"Welcome","authors":["bpepple"],"tags":["metron","comic"]},"prevItem":{"title":"MetronInfo.xml","permalink":"/blog/welcome-metroninfo"}},"content":"Welcome to the Metron Project! We\'ll be using this site to add some documentation and information about new project initiatives here.\\nIf you have any questions, don\'t hesitate to contact us on [Matrix](https://matrix.to/#/#metrondb:matrix.org)."}]}')}}]); \ No newline at end of file diff --git a/assets/js/b2f554cd.e51f5e8d.js b/assets/js/b2f554cd.e51f5e8d.js deleted file mode 100644 index 77d8806..0000000 --- a/assets/js/b2f554cd.e51f5e8d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[1477],{10:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"october-2023-update","metadata":{"permalink":"/blog/october-2023-update","source":"@site/blog/2023-10-29-october-update/index.md","title":"October 2023 Update","description":"New Indexed Issues Milestone","date":"2023-10-29T10:04:00.000Z","formattedDate":"October 29, 2023","tags":[{"label":"comic","permalink":"/blog/tags/comic"},{"label":"database","permalink":"/blog/tags/database"},{"label":"metron","permalink":"/blog/tags/metron"},{"label":"metrontagger","permalink":"/blog/tags/metrontagger"},{"label":"comictagger","permalink":"/blog/tags/comictagger"}],"readingTime":1.6,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"october-2023-update","title":"October 2023 Update","date":"2023-10-29T10:04","authors":["bpepple"],"tags":["comic","database","metron","metrontagger","comictagger"]},"nextItem":{"title":"Latest Happenings","permalink":"/blog/latest-happenings"}},"content":"## New Indexed Issues Milestone\\n\\nThe [Metron Project](https://metron.cloud/) reached a milestone this month by having more than 77,000 issues added to\\nits database. I wish to give big thanks to everyone who has helped with the project. Thanks!\\n\\n## Metron-Tagger v1.6.4\\n\\n### Duplicate Page Removal\\n\\nJust released a new version of [Metron-Tagger](https://github.com/Metron-Project/metron-tagger), which adds a new\\nexperimental feature of finding / removing duplicate pages in a directory of comics. The feature will get the hashes for\\nall the pages of the comics in a directory, and then ask the user if the image should be removed from the comics. This\\nis done by using the user\'s system image viewer to display the duplicate image. Once the user has reviewed all the\\nduplicated images it will ask the user whether to write the changes to the comics and then prompt them if they also want\\nto update the [ComicInfo.xml](https://anansi-project.github.io/docs/comicinfo/intro) (if it exists) for the page\\nchanges.\\n\\nThis feature most likely will work best when running on a weekly basis, instead of on a ***whole*** comic collection,\\nsince it\'s asking the user to review all the duplicate images *before* writing the changes. I\'m planning on reworking\\nthis to make it more feasible to use on a large comic collection, but that is pretty far down on my TODO list (but if\\nsomeone wants to work on this I\'m more than willing to review a Pull Request).\\n\\n**Note**: I\'ve been using this for the last month and haven\'t had any issues, but if you plan on using this I would\\nsuggest backing up any files when using this initially, and verifying it works correctly for you since once the changes\\nare written they can\'t be undone! \ud83d\udca3\\n\\n### Miscellaneous Maintenance\\n\\nThe rest of v1.6.4 changes are primarily developer-side changes updating the toolsets for Metron-Tagger.\\n\\n## Comic-Tagger\\n\\n[Comic-Tagger](https://github.com/comictagger/comictagger) recently released\\ntheir [Metron-Talker](https://github.com/comictagger/metron_talker) plugin which adds support for tagging any comic with\\nmetadata from [Metron](https://metron.cloud/)."},{"id":"latest-happenings","metadata":{"permalink":"/blog/latest-happenings","source":"@site/blog/2023-05-23-latest-happenings/index.md","title":"Latest Happenings","description":"New Indexed Issues Milestone","date":"2023-05-24T13:24:00.000Z","formattedDate":"May 24, 2023","tags":[{"label":"comic","permalink":"/blog/tags/comic"},{"label":"database","permalink":"/blog/tags/database"},{"label":"series","permalink":"/blog/tags/series"},{"label":"api","permalink":"/blog/tags/api"},{"label":"comicvine","permalink":"/blog/tags/comicvine"},{"label":"comictagger","permalink":"/blog/tags/comictagger"}],"readingTime":0.88,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"latest-happenings","title":"Latest Happenings","date":"2023-05-24T13:24","authors":["bpepple"],"tags":["comic","database","series","api","comicvine","comictagger"]},"prevItem":{"title":"October 2023 Update","permalink":"/blog/october-2023-update"},"nextItem":{"title":"Limited Series Type","permalink":"/blog/series-type-change"}},"content":"## New Indexed Issues Milestone\\n\\nThe [Metron Project](https://metron.cloud/) reached a milestone today by having 65,000 issues added to its database. I wish to give big thanks to everyone who has helped with the project. Thanks!\\n\\n## POST API\\n\\nBeen spending the last few months working on a POST API to make it easier to add/update information on Metron. Currently it\'s only available to users with Adminstrators permissions, but later this year I\'ll look at the feasability of making it more readily available.\\n\\n## Comic Vine ID\'s\\n\\nAnother project I\'ve been working on is adding [Comic Vine](https://comicvine.gamespot.com/) identification numbers to the various resource items. This should help users match items between the two data sources. Currently, about 40% of the issues have been updated with this information and with any luck the majority of issues will be finished by the end of the month.\\n\\n## ComicTagger\\n\\nOne of the developers of [Comic Tagger](https://github.com/comictagger/comictagger) has been working on adding support for tagging digital comics with data from Metron, and hopefully in the next couple of months that merged."},{"id":"series-type-change","metadata":{"permalink":"/blog/series-type-change","source":"@site/blog/2022-12-04-series-type/index.md","title":"Limited Series Type","description":"Made a minor change to the series types available by consolidating mini & maxi-series to the new Limited Series type. There isn\'t a real definite value for mini and maxi series, and really it makes more sense to not bother differentiating them. So, I\'ve gone ahead and migrated the existing data for this change, and users should see this change. If you have any questions or thoughts, don\'t hesitate to contact me.","date":"2022-12-04T16:51:00.000Z","formattedDate":"December 4, 2022","tags":[{"label":"comic","permalink":"/blog/tags/comic"},{"label":"database","permalink":"/blog/tags/database"},{"label":"series","permalink":"/blog/tags/series"}],"readingTime":0.36,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"series-type-change","title":"Limited Series Type","date":"2022-12-04T16:51","authors":["bpepple"],"tags":["comic","database","series"]},"prevItem":{"title":"Latest Happenings","permalink":"/blog/latest-happenings"},"nextItem":{"title":"Using Podman to Run GCD Database Locally","permalink":"/blog/podman-gcd"}},"content":"Made a minor change to the ***series types*** available by consolidating ***mini & maxi-series*** to the new ***Limited Series*** type. There isn\'t a real definite value for mini and maxi series, and really it makes more sense to not bother differentiating them. So, I\'ve gone ahead and migrated the existing data for this change, and users should see this change. If you have any questions or thoughts, don\'t hesitate to contact [me](mailto:bpepple@metron.cloud)."},{"id":"podman-gcd","metadata":{"permalink":"/blog/podman-gcd","source":"@site/blog/2022-10-08-podman/index.md","title":"Using Podman to Run GCD Database Locally","description":"I\'ve had a few users ask me how to run a local copy of the Grand Comics Database, so I figured I\'d do a short write-up on how I do it.","date":"2022-10-08T11:35:00.000Z","formattedDate":"October 8, 2022","tags":[{"label":"comic","permalink":"/blog/tags/comic"},{"label":"database","permalink":"/blog/tags/database"},{"label":"podman","permalink":"/blog/tags/podman"},{"label":"mysql","permalink":"/blog/tags/mysql"},{"label":"gcd","permalink":"/blog/tags/gcd"},{"label":"grandcomicdatabase","permalink":"/blog/tags/grandcomicdatabase"}],"readingTime":5.065,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"podman-gcd","title":"Using Podman to Run GCD Database Locally","date":"2022-10-08T11:35","authors":["bpepple"],"tags":["comic","database","podman","mysql","gcd","grandcomicdatabase"]},"prevItem":{"title":"Limited Series Type","permalink":"/blog/series-type-change"},"nextItem":{"title":"OS Upgrade","permalink":"/blog/ubuntu-2204-lts"}},"content":"I\'ve had a few users ask me how to run a local copy of the [Grand Comics Database](https://www.comics.org/), so I figured I\'d do a short write-up on how I do it.\\n\\nI use [Podman](https://podman.io/) for containers instead of [Docker](https://www.docker.com/), but the differences between them is fairly minimal and this should give you a good idea of how to do it. Anyway, let\'s get started!\\n\\nFirst off, you\'ll want to download the most recent database dump from GCD which can be found [here](https://www.comics.org/download/). Once it\'s finished downloading, unzip the file:\\n\\n```\\nunzip current.zip -d /tmp/\\n```\\nYou should see output similar to this:\\n\\n```\\nArchive: current.zip\\n inflating: /tmp/2022-10-01.sql \\n```\\n\\nOk, now that we\'ve got the data from gcd, let\'s create a [MySQL](https://www.mysql.com/) container. We need to first pull a MySQL image, which can be done by running:\\n\\n```\\npodman pull docker.io/library/mysql:5.7\\n```\\n\\nAfter it\'s done downloading the image, you can confirm:\\n\\n```\\npodman images\\n```\\n\\nwhich should return output similar to this:\\n\\n```\\nbpepple@frodo ~ $ podman images mysql\\nREPOSITORY TAG IMAGE ID CREATED SIZE\\ndocker.io/library/mysql 5.7 eb175b0743cc 19 hours ago 448 MB\\n```\\n\\nNow we need to create the container. You\'ll want to replace user and mysql credentials with your own values. The `volume` flag is where on your filesystem you want to save the database. The `Z` suffix is used for systems, primarily [Red Hat](https://www.redhat.com/en/topics/linux/what-is-selinux)-based, that use [SELinux](https://www.redhat.com/en/topics/linux/what-is-selinux). If you don\'t use SELinux that can be dropped:\\n\\n```\\npodman run -d --name mysql -p 3306:3306 -e MYSQL_USER=bpepple -e MYSQL_PASSWORD=123456 -e MYSQL_DATABASE=gcd -e MYSQL_ROOT_PASSWORD=567890 --volume /home/bpepple/Storage/pods/mysql/:/var/lib/mysql:Z mysql:5.7\\n```\\n\\nNow let\'s verify that the container was created and is running by using the following:\\n\\n```\\npodman ps\\n```\\n\\nYou should see output similar to this:\\n\\n```\\nbpepple@frodo ~ $ podman ps\\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\\n400c957ae25d docker.io/library/mysql:5.7 mysqld 7 seconds ago Up 7 seconds ago 0.0.0.0:3306->3306/tcp mysql\\n```\\nNow we just need to dump the data from GCD into the database. We can do this by running:\\n\\n```\\ncat /tmp/2022-10-01.sql | podman exec -i mysql /usr/bin/mysql -u root --password=567890 gcd\\n```\\nDepending on the specs of your machine, this might be a good time to grab some coffee, since the SQL dump is **very** large and will take awhile to finish. Once it\'s done, we can start using the database by attaching to the container:\\n\\n```\\npodman exec -it mysql mysql -ubpepple -p gcd\\n```\\n\\nThis command will prompt you for your password, and then you\'ll see the MySQL prompt where you can run a simple SQL statement like so:\\n```\\n DESCRIBE gcd_issue;\\n```\\nWhich should produce output similar to this:\\n```\\n+----------------------------+---------------+------+-----+---------------------+----------------+\\n| Field | Type | Null | Key | Default | Extra |\\n+----------------------------+---------------+------+-----+---------------------+----------------+\\n| id | int(11) | NO | PRI | NULL | auto_increment |\\n| number | varchar(50) | NO | MUL | NULL | |\\n| volume | varchar(50) | NO | MUL | | |\\n| no_volume | tinyint(1) | NO | MUL | 0 | |\\n| display_volume_with_number | tinyint(1) | NO | MUL | 0 | |\\n| series_id | int(11) | NO | MUL | NULL | |\\n| indicia_publisher_id | int(11) | YES | MUL | NULL | |\\n| indicia_pub_not_printed | tinyint(1) | NO | | NULL | |\\n| brand_id | int(11) | YES | MUL | NULL | |\\n| no_brand | tinyint(1) | NO | MUL | NULL | |\\n| publication_date | varchar(255) | NO | | NULL | |\\n| key_date | varchar(10) | NO | MUL | NULL | |\\n| sort_code | int(11) | NO | MUL | NULL | |\\n| price | varchar(255) | NO | | NULL | |\\n| page_count | decimal(10,3) | YES | | NULL | |\\n| page_count_uncertain | tinyint(1) | NO | | 0 | |\\n| indicia_frequency | varchar(255) | NO | | | |\\n| no_indicia_frequency | tinyint(1) | NO | MUL | 0 | |\\n| editing | longtext | NO | | NULL | |\\n| no_editing | tinyint(1) | NO | MUL | 0 | |\\n| notes | longtext | NO | | NULL | |\\n| created | datetime | NO | | 1901-01-01 00:00:00 | |\\n| modified | datetime | NO | MUL | 1901-01-01 00:00:00 | |\\n| deleted | tinyint(1) | NO | MUL | 0 | |\\n| is_indexed | tinyint(1) | NO | MUL | 0 | |\\n| isbn | varchar(32) | NO | MUL | | |\\n| valid_isbn | varchar(13) | NO | MUL | | |\\n| no_isbn | tinyint(1) | NO | MUL | 0 | |\\n| variant_of_id | int(11) | YES | MUL | NULL | |\\n| variant_name | varchar(255) | NO | | | |\\n| barcode | varchar(38) | NO | MUL | | |\\n| no_barcode | tinyint(1) | NO | | 0 | |\\n| title | varchar(255) | NO | MUL | | |\\n| no_title | tinyint(1) | NO | MUL | 0 | |\\n| on_sale_date | varchar(10) | NO | MUL | NULL | |\\n| on_sale_date_uncertain | tinyint(1) | NO | | 0 | |\\n| rating | varchar(255) | NO | MUL | NULL | |\\n| no_rating | tinyint(1) | NO | MUL | NULL | |\\n| volume_not_printed | tinyint(1) | NO | | NULL | |\\n| no_indicia_printer | tinyint(1) | NO | | NULL | |\\n+----------------------------+---------------+------+-----+---------------------+----------------+\\n40 rows in set (0.00 sec)\\n\\n```\\nGreat, we\'ve got the database up and running! To logout from the container just type:\\n\\n```\\n\\\\q\\n```\\n\\nTo stop the container, you would just use the following:\\n\\n```\\npodman stop mysql\\n```\\n\\nAnd that\'s it! Podman has tons of niceties (like auto-updating images, using [systemd](https://systemd.io/) for container start-ups, etc.) and I\'d encourage you to read up on using some its many features. If it get some free time, I\'ll do a follow-up article about using [Python](https://www.python.org/) to query the database and using that data for things like writing metadata to comic archives."},{"id":"ubuntu-2204-lts","metadata":{"permalink":"/blog/ubuntu-2204-lts","source":"@site/blog/2022-08-26-ubuntu-22-04/index.md","title":"OS Upgrade","description":"Finally got around to upgrading the OS for Metron to Ubuntu 22.04.1 LTS, which overall, was fairly painless. Tests didn\'t find anything obviously broken, but if you do run across something that is, please open a bug for it. Thx!","date":"2022-08-27T14:32:00.000Z","formattedDate":"August 27, 2022","tags":[{"label":"server","permalink":"/blog/tags/server"},{"label":"ubuntu","permalink":"/blog/tags/ubuntu"}],"readingTime":0.2,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"ubuntu-2204-lts","title":"OS Upgrade","date":"2022-08-27T14:32","authors":["bpepple"],"tags":["server","ubuntu"]},"prevItem":{"title":"Using Podman to Run GCD Database Locally","permalink":"/blog/podman-gcd"},"nextItem":{"title":"Esak-1.3.2","permalink":"/blog/esak-132"}},"content":"Finally got around to upgrading the OS for Metron to [Ubuntu 22.04.1 LTS](https://releases.ubuntu.com/22.04.1/), which overall, was fairly painless. Tests didn\'t find anything obviously broken, but if you do run across something that is, please open a [bug](https://github.com/bpepple/metron/issues/new/choose) for it. Thx!"},{"id":"esak-132","metadata":{"permalink":"/blog/esak-132","source":"@site/blog/2022-08-23-esak-1-3-2/index.md","title":"Esak-1.3.2","description":"Did a quick release this morning of the python wrapper for the Marvel API, Esak, which adds an option to have the cache results expire after a user-defined number of days. To update to the latest version just run the following command:","date":"2022-08-23T10:35:00.000Z","formattedDate":"August 23, 2022","tags":[{"label":"comic","permalink":"/blog/tags/comic"},{"label":"marvel","permalink":"/blog/tags/marvel"},{"label":"api","permalink":"/blog/tags/api"},{"label":"python","permalink":"/blog/tags/python"}],"readingTime":0.245,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"esak-132","title":"Esak-1.3.2","date":"2022-08-23T10:35","authors":["bpepple"],"tags":["comic","marvel","api","python"]},"prevItem":{"title":"OS Upgrade","permalink":"/blog/ubuntu-2204-lts"},"nextItem":{"title":"Darkseid-1.3.3","permalink":"/blog/darkseid-133"}},"content":"Did a quick release this morning of the python wrapper for the Marvel API, [Esak](https://github.com/Metron-Project/esak), which adds an option to have the cache results expire after a user-defined number of days. To update to the latest version just run the following command:\\n\\n```\\npip3 install -U --user esak\\n```"},{"id":"darkseid-133","metadata":{"permalink":"/blog/darkseid-133","source":"@site/blog/2022-07-26-darkseid-1-3-3/index.md","title":"Darkseid-1.3.3","description":"Did a quick release today of Darkseid that fixes a bug which prevented exporting rar (.cbr) comics to zip files (.cbz). If you use Metron-Tagger and export rar files, it would be worthwhile to update Darkseid which can be done with the following command:","date":"2022-07-26T12:35:00.000Z","formattedDate":"July 26, 2022","tags":[{"label":"cbz","permalink":"/blog/tags/cbz"},{"label":"cbr","permalink":"/blog/tags/cbr"},{"label":"comic","permalink":"/blog/tags/comic"},{"label":"tagging","permalink":"/blog/tags/tagging"}],"readingTime":0.33,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"darkseid-133","title":"Darkseid-1.3.3","date":"2022-07-26T12:35","authors":["bpepple"],"tags":["cbz","cbr","comic","tagging"]},"prevItem":{"title":"Esak-1.3.2","permalink":"/blog/esak-132"},"nextItem":{"title":"Trade Paperback / Collections Support","permalink":"/blog/trade-paperback-collections-support"}},"content":"Did a quick release today of [Darkseid](https://github.com/Metron-Project/darkseid) that fixes a bug which prevented exporting rar (.cbr) comics to zip files (.cbz). If you use [Metron-Tagger](https://github.com/Metron-Project/metron-tagger) and export rar files, it would be worthwhile to update Darkseid which can be done with the following command:\\n\\n```\\npip3 install -U --user darkseid\\n```\\n\\nAs always if you run into any problems, don\'t hesitate to contact us on [Matrix](https://matrix.to/#/#metrondb:matrix.org)."},{"id":"trade-paperback-collections-support","metadata":{"permalink":"/blog/trade-paperback-collections-support","source":"@site/blog/2022-07-23-collections/index.md","title":"Trade Paperback / Collections Support","description":"Marvel Masterworks Cover","date":"2022-07-23T15:35:00.000Z","formattedDate":"July 23, 2022","tags":[{"label":"metron","permalink":"/blog/tags/metron"},{"label":"comic","permalink":"/blog/tags/comic"},{"label":"marvel","permalink":"/blog/tags/marvel"},{"label":"masterworks","permalink":"/blog/tags/masterworks"},{"label":"x-men","permalink":"/blog/tags/x-men"},{"label":"tpb","permalink":"/blog/tags/tpb"},{"label":"collections","permalink":"/blog/tags/collections"}],"readingTime":0.935,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"trade-paperback-collections-support","title":"Trade Paperback / Collections Support","date":"2022-07-23T15:35","authors":["bpepple"],"tags":["metron","comic","marvel","masterworks","x-men","tpb","collections"]},"prevItem":{"title":"Darkseid-1.3.3","permalink":"/blog/darkseid-133"},"nextItem":{"title":"50,000 issues indexed","permalink":"/blog/50000-issues"}},"content":"![Marvel Masterworks Cover](./marvel-masterworks-uncanny-xmen-1.jpg)\\n\\nA user contacted me about adding [Marvel Masterworks: The Uncanny X-Men](https://metron.cloud/series/marvel-masterworks-the-uncanny-x-men-2003/) series to [Metron](https://metron.cloud) since we have recently added support for trade paperbacks/collected editions. I figured this would be useful exercise since it would show me what parts of the process could be improved to make it easier.\\n\\nCurrently, the process requires the editor to add ***all*** creators, characters, teams, etc. manually for the reprinted issues associate with the collection, much like a regular issue. One obvious way to simplify this is to automatically ***add*** any characters, team, story titles, etc. for the issues being reprinted. Currently, I\'ve written an [admin action](https://github.com/bpepple/metron/blob/0d6268f92709ef886e49ffe2a134a0b6af3672f7/comicsdb/admin/issue.py#L145) to do this, but sometime in the future I need to expose this functionality so that ***anyone*** adding a Trade Paperback/Collection can save some time.\\n\\nWhen I was creating Metron one of the choices I made was to add creators at an issue-level, and not at a story-level, since I wanted the process for adding an issue to be fairly simple. The downside to this approach is that adding information to a collection from an issue with multiple stories isn\'t really possible.\ud83d\ude22"},{"id":"50000-issues","metadata":{"permalink":"/blog/50000-issues","source":"@site/blog/2022-07-17-50000/index.md","title":"50,000 issues indexed","description":"The Metron Project reached a milestone today by having 50,000 issues added to its database. I wish to give big thanks to everyone who has helped with the project. Thanks!","date":"2022-07-17T11:00:00.000Z","formattedDate":"July 17, 2022","tags":[{"label":"metron","permalink":"/blog/tags/metron"},{"label":"comic","permalink":"/blog/tags/comic"},{"label":"database","permalink":"/blog/tags/database"},{"label":"api","permalink":"/blog/tags/api"}],"readingTime":0.15,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"50000-issues","title":"50,000 issues indexed","date":"2022-07-17T11:00","authors":["bpepple"],"tags":["metron","comic","database","api"]},"prevItem":{"title":"Trade Paperback / Collections Support","permalink":"/blog/trade-paperback-collections-support"},"nextItem":{"title":"MetronInfo.xml","permalink":"/blog/welcome-metroninfo"}},"content":"The Metron Project reached a milestone today by having 50,000 issues added to its database. I wish to give big thanks to everyone who has helped with the project. Thanks!"},{"id":"welcome-metroninfo","metadata":{"permalink":"/blog/welcome-metroninfo","source":"@site/blog/2022-07-13-metroninfo/index.md","title":"MetronInfo.xml","description":"So, one of the new projects I\'ve been working on in my spare time is a new comic book xml schema called MetronInfo.","date":"2022-07-13T00:00:00.000Z","formattedDate":"July 13, 2022","tags":[{"label":"metron","permalink":"/blog/tags/metron"},{"label":"comic","permalink":"/blog/tags/comic"},{"label":"metadata","permalink":"/blog/tags/metadata"},{"label":"tagging","permalink":"/blog/tags/tagging"},{"label":"comicvine","permalink":"/blog/tags/comicvine"},{"label":"comic-tagger","permalink":"/blog/tags/comic-tagger"},{"label":"anansi-project","permalink":"/blog/tags/anansi-project"}],"readingTime":1.75,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"welcome-metroninfo","title":"MetronInfo.xml","authors":["bpepple"],"tags":["metron","comic","metadata","tagging","comicvine","comic-tagger","anansi-project"]},"prevItem":{"title":"50,000 issues indexed","permalink":"/blog/50000-issues"},"nextItem":{"title":"Welcome","permalink":"/blog/welcome"}},"content":"So, one of the new projects I\'ve been working on in my spare time is a new comic book xml schema called [MetronInfo](https://github.com/Metron-Project/metroninfo).\\n\\nCurrently, most applications use [ComicInfo](https://github.com/anansi-project/comicinfo) which originated from the [ComicRack](https://comicrack.en.softonic.com/) application, but due to it\'s history this format has some limitations like:\\n\\n- **Poor handling of data.** For example, cover date information that is split into separate integer types, instead of just using a date type.\\n- **Limited types metadata stored.** For example, when tagging a comic book archive with an application like [ComicTagger](https://github.com/comictagger/comictagger) it would be useful to know where the metadata information was retrieved from (i.e. Comic Vine, GCD, Metron, etc.) and the resources identification number.\\n- **Lack of documentation.** The [Anansi Project](https://anansi-project.github.io/) ***is*** working on improving this, tho.\\n\\nFor now, the Anansi Project is working on documenting and extending (non-breaking changes) the ComicInfo schema, but in my opinion that time spent would be better spent on creating a new format not tied to a dead application. Due to the fairly unstructured nature of comic book archives it\'s trivial to tag one with the existing ComicInfo format **and** also a new format. That way users who use applications that only support ComicInfo.xml can still use them, but also gives them the option to use applications that could support the MetronInfo format.\\n\\nMy goals for MetronInfo.xml are:\\n\\n- Fix some of the deficiencies of the ComicInfo format.\\n- Add information to make it easier for Plex-like application to identify data (series, character, etc/) when importing comics into their application.\\n- Document the elements clearly so their use is not ambiguous.\\n\\nCurrently I\'m working right now on finalizing the new format, and would appreciate any help or feedback from the comic book community in this. Feel free to leave suggestions either at the [Discussions Page](https://github.com/Metron-Project/metroninfo/discussions) or contact use over on [Matrix](https://matrix.to/#/#metrondb:matrix.org).\\n\\nOnce the new format is finalized I plan on writing a tool that will create a MetronInfo.xml file for any existing comic book archive that was tagged with ComicTagger or [Metron-Tagger](https://github.com/Metron-Project/metron-tagger), and also retrieve any missing data from the source of information (Metron or Comic Vine)."},{"id":"welcome","metadata":{"permalink":"/blog/welcome","source":"@site/blog/2022-07-06-welcome/index.md","title":"Welcome","description":"Welcome to the Metron Project! We\'ll be using this site to add some documentation and information about new project initiatives here.","date":"2022-07-06T00:00:00.000Z","formattedDate":"July 6, 2022","tags":[{"label":"metron","permalink":"/blog/tags/metron"},{"label":"comic","permalink":"/blog/tags/comic"}],"readingTime":0.165,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple"}],"frontMatter":{"slug":"welcome","title":"Welcome","authors":["bpepple"],"tags":["metron","comic"]},"prevItem":{"title":"MetronInfo.xml","permalink":"/blog/welcome-metroninfo"}},"content":"Welcome to the Metron Project! We\'ll be using this site to add some documentation and information about new project initiatives here.\\nIf you have any questions, don\'t hesitate to contact us on [Matrix](https://matrix.to/#/#metrondb:matrix.org)."}]}')}}]); \ No newline at end of file diff --git a/assets/js/c39b9779.4edbce80.js b/assets/js/c39b9779.9a551d7f.js similarity index 79% rename from assets/js/c39b9779.4edbce80.js rename to assets/js/c39b9779.9a551d7f.js index da278aa..463e7eb 100644 --- a/assets/js/c39b9779.4edbce80.js +++ b/assets/js/c39b9779.9a551d7f.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[6533],{9255:e=>{e.exports=JSON.parse('{"label":"comic","permalink":"/blog/tags/comic","allTagsPath":"/blog/tags","count":10}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[6533],{9255:e=>{e.exports=JSON.parse('{"label":"comic","permalink":"/blog/tags/comic","allTagsPath":"/blog/tags","count":11}')}}]); \ No newline at end of file diff --git a/assets/js/cdd04f6c.452931da.js b/assets/js/cdd04f6c.4cd69e69.js similarity index 78% rename from assets/js/cdd04f6c.452931da.js rename to assets/js/cdd04f6c.4cd69e69.js index 0b845a4..4672ada 100644 --- a/assets/js/cdd04f6c.452931da.js +++ b/assets/js/cdd04f6c.4cd69e69.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[8099],{3204:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/metrontagger","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[8099],{3204:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/metrontagger","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/e27a0684.9aa45edc.js b/assets/js/e27a0684.8a0028e9.js similarity index 75% rename from assets/js/e27a0684.9aa45edc.js rename to assets/js/e27a0684.8a0028e9.js index ef73f37..c0234d6 100644 --- a/assets/js/e27a0684.9aa45edc.js +++ b/assets/js/e27a0684.8a0028e9.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[2537],{3517:e=>{e.exports=JSON.parse('{"label":"metrontagger","permalink":"/blog/tags/metrontagger","allTagsPath":"/blog/tags","count":1}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[2537],{3517:e=>{e.exports=JSON.parse('{"label":"metrontagger","permalink":"/blog/tags/metrontagger","allTagsPath":"/blog/tags","count":2}')}}]); \ No newline at end of file diff --git a/assets/js/e60eeb0d.5d5a91bb.js b/assets/js/e60eeb0d.54b4549b.js similarity index 77% rename from assets/js/e60eeb0d.5d5a91bb.js rename to assets/js/e60eeb0d.54b4549b.js index 263bcdc..5acf9ca 100644 --- a/assets/js/e60eeb0d.5d5a91bb.js +++ b/assets/js/e60eeb0d.54b4549b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[2298],{1146:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/metron","page":1,"postsPerPage":10,"totalPages":1,"totalCount":5,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[2298],{1146:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/metron","page":1,"postsPerPage":10,"totalPages":1,"totalCount":6,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/e6ec2c74.fec4ce1d.js b/assets/js/e6ec2c74.fec4ce1d.js new file mode 100644 index 0000000..622878e --- /dev/null +++ b/assets/js/e6ec2c74.fec4ce1d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[4749],{3149:e=>{e.exports=JSON.parse('{"label":"comic","permalink":"/blog/tags/comic","allTagsPath":"/blog/tags","count":11}')}}]); \ No newline at end of file diff --git a/assets/js/main.0991f0ab.js b/assets/js/main.0991f0ab.js deleted file mode 100644 index 79b7ebd..0000000 --- a/assets/js/main.0991f0ab.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.0991f0ab.js.LICENSE.txt */ -(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(7462),o=n(8356),i=n.n(o),l=n(6887);const s={"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,1223)),"@theme/BlogTagsListPage",1223],"02f2779f":[()=>n.e(7209).then(n.t.bind(n,7056,19)),"~blog/default/blog-tags-series-ad7.json",7056],"0563681c":[()=>n.e(5516).then(n.t.bind(n,5092,19)),"~blog/default/blog-tags-cbz-c89-list.json",5092],"05af08ae":[()=>n.e(4772).then(n.t.bind(n,7360,19)),"~blog/default/blog-tags-comictagger-80e.json",7360],"05d98ec9":[()=>n.e(2919).then(n.bind(n,9172)),"@site/blog/2022-10-08-podman/index.md?truncated=true",9172],"0be9de06":[()=>n.e(7222).then(n.t.bind(n,390,19)),"~blog/default/blog-tags-api-ce2-list.json",390],"0c7e25e7":[()=>n.e(9573).then(n.bind(n,3179)),"@site/blog/2022-10-08-podman/index.md",3179],"0e7670bc":[()=>n.e(1328).then(n.bind(n,1106)),"@site/blog/2022-08-26-ubuntu-22-04/index.md?truncated=true",1106],"11a4dc28":[()=>n.e(4908).then(n.t.bind(n,3769,19)),"/home/runner/work/metron-project.github.io/metron-project.github.io/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"11bad855":[()=>n.e(4700).then(n.bind(n,2680)),"@site/blog/2023-10-29-october-update/index.md",2680],"14eb3368":[()=>Promise.all([n.e(532),n.e(9817)]).then(n.bind(n,4228)),"@theme/DocCategoryGeneratedIndexPage",4228],17896441:[()=>Promise.all([n.e(532),n.e(3473),n.e(8490),n.e(7918)]).then(n.bind(n,5154)),"@theme/DocItem",5154],"1b2af15e":[()=>n.e(3868).then(n.t.bind(n,5155,19)),"~blog/default/blog-tags-podman-11d-list.json",5155],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"1e66a50d":[()=>n.e(9894).then(n.bind(n,8829)),"@site/blog/2022-07-17-50000/index.md?truncated=true",8829],"1f9d284d":[()=>n.e(8894).then(n.t.bind(n,5179,19)),"~blog/default/blog-tags-tpb-7c0-list.json",5179],"232c92ba":[()=>n.e(6974).then(n.t.bind(n,2725,19)),"~blog/default/blog-tags-python-667.json",2725],"25e0a582":[()=>n.e(8483).then(n.t.bind(n,8724,19)),"~blog/default/blog-tags-x-men-97e-list.json",8724],"264084f7":[()=>n.e(9069).then(n.t.bind(n,7907,19)),"~blog/default/blog-tags-cbr-6a0-list.json",7907],"29ff3bf2":[()=>n.e(2402).then(n.t.bind(n,468,19)),"~blog/default/blog-tags-server-926.json",468],"2b4ce088":[()=>n.e(4030).then(n.bind(n,4248)),"@site/docs/metron-tagger.md",4248],"33b5c924":[()=>n.e(2533).then(n.t.bind(n,8669,19)),"~blog/default/blog-tags-anansi-project-178-list.json",8669],39679213:[()=>n.e(8604).then(n.bind(n,7812)),"@site/blog/2022-07-26-darkseid-1-3-3/index.md?truncated=true",7812],"3a943e45":[()=>n.e(9751).then(n.t.bind(n,6792,19)),"~blog/default/blog-tags-cbr-6a0.json",6792],"4577b2d2":[()=>n.e(6652).then(n.t.bind(n,9328,19)),"~blog/default/blog-tags-mysql-cfd-list.json",9328],"49ba0d5b":[()=>n.e(6602).then(n.t.bind(n,3097,19)),"~blog/default/blog-tags-masterworks-8cf.json",3097],"4acd723a":[()=>Promise.all([n.e(532),n.e(3473),n.e(9653)]).then(n.bind(n,9759)),"@site/docs/metroninfo/schemas/v1.0.md",9759],"527c8e33":[()=>n.e(6795).then(n.t.bind(n,245,19)),"~blog/default/blog-tags-database-b87.json",245],"53a9b09c":[()=>n.e(8599).then(n.bind(n,9709)),"@site/blog/2022-08-26-ubuntu-22-04/index.md",9709],"56d203f6":[()=>n.e(3460).then(n.t.bind(n,5745,19)),"/home/runner/work/metron-project.github.io/metron-project.github.io/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"5f5e3655":[()=>n.e(5144).then(n.t.bind(n,1422,19)),"~docs/default/category-docs-tutorialsidebar-category-metroninfo-36e.json",1422],"5f893a80":[()=>n.e(5175).then(n.t.bind(n,9574,19)),"~blog/default/blog-tags-comic-tagger-773-list.json",9574],"6243bdea":[()=>n.e(6399).then(n.t.bind(n,5393,19)),"~blog/default/blog-tags-metron-82a.json",5393],"6244a568":[()=>n.e(8029).then(n.t.bind(n,9363,19)),"~blog/default/blog-tags-grandcomicdatabase-4d2.json",9363],"68122b44":[()=>n.e(2362).then(n.t.bind(n,6422,19)),"~blog/default/blog-tags-server-926-list.json",6422],"681e922c":[()=>n.e(5742).then(n.t.bind(n,2192,19)),"~blog/default/blog-tags-comictagger-80e-list.json",2192],"6875c492":[()=>Promise.all([n.e(532),n.e(3473),n.e(8490),n.e(6048),n.e(8610)]).then(n.bind(n,1714)),"@theme/BlogTagsPostsPage",1714],"69a05e65":[()=>n.e(9164).then(n.bind(n,7173)),"@site/blog/2022-07-06-welcome/index.md",7173],"6d453d64":[()=>n.e(9287).then(n.t.bind(n,794,19)),"~blog/default/blog-tags-api-ce2.json",794],"6d7a5c46":[()=>n.e(5858).then(n.bind(n,4888)),"@site/blog/2022-12-04-series-type/index.md?truncated=true",4888],"6e82c118":[()=>n.e(6626).then(n.t.bind(n,8645,19)),"~blog/default/blog-tags-comic-059-list.json",8645],"7407582a":[()=>n.e(1439).then(n.t.bind(n,4383,19)),"~blog/default/blog-tags-tagging-f07-list.json",4383],"75a41a73":[()=>n.e(9022).then(n.bind(n,1071)),"@site/blog/2023-05-23-latest-happenings/index.md",1071],"814f3328":[()=>n.e(2535).then(n.t.bind(n,5641,19)),"~blog/default/blog-post-list-prop-default.json",5641],82753213:[()=>n.e(1729).then(n.t.bind(n,8067,19)),"~blog/default/blog-tags-metadata-b12.json",8067],"82f1be8f":[()=>n.e(5675).then(n.t.bind(n,5736,19)),"~blog/default/blog-tags-anansi-project-178.json",5736],"83c7db29":[()=>n.e(7531).then(n.t.bind(n,4859,19)),"~blog/default/blog-tags-comicvine-5cd.json",4859],84474961:[()=>n.e(5037).then(n.bind(n,6626)),"@site/blog/2023-10-29-october-update/index.md?truncated=true",6626],"85915f9d":[()=>n.e(5722).then(n.bind(n,6066)),"@site/blog/2022-07-13-metroninfo/index.md",6066],"85f05a67":[()=>n.e(3189).then(n.t.bind(n,1359,19)),"~blog/default/blog-tags-collections-0c1-list.json",1359],"8a641b50":[()=>n.e(6255).then(n.t.bind(n,438,19)),"~blog/default/blog-tags-cbz-c89.json",438],"8ab41e7a":[()=>n.e(2375).then(n.t.bind(n,5710,19)),"~blog/default/blog-tags-mysql-cfd.json",5710],"8e1a0eae":[()=>n.e(2624).then(n.t.bind(n,2010,19)),"~docs/default/category-docs-tutorialsidebar-category-schemas-1f4.json",2010],"8eb4e46b":[()=>n.e(1).then(n.t.bind(n,2638,19)),"~blog/default/blog-page-2-677.json",2638],"8edc814a":[()=>n.e(7178).then(n.t.bind(n,9996,19)),"~blog/default/blog-tags-grandcomicdatabase-4d2-list.json",9996],"8ff69cf9":[()=>n.e(6530).then(n.t.bind(n,8094,19)),"~blog/default/blog-tags-marvel-806-list.json",8094],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"9b57ac37":[()=>n.e(6033).then(n.t.bind(n,4469,19)),"/home/runner/work/metron-project.github.io/metron-project.github.io/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",4469],"9c954eb0":[()=>n.e(5657).then(n.t.bind(n,3484,19)),"~blog/default/blog-tags-database-b87-list.json",3484],"9e4087bc":[()=>n.e(3608).then(n.bind(n,3169)),"@theme/BlogArchivePage",3169],a09c2993:[()=>n.e(4128).then(n.bind(n,8495)),"@site/docs/introduction.md",8495],a481f6fd:[()=>n.e(8449).then(n.bind(n,9087)),"@site/blog/2023-05-23-latest-happenings/index.md?truncated=true",9087],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(3473),n.e(8490),n.e(6048),n.e(3089)]).then(n.bind(n,46)),"@theme/BlogListPage",46],a7023ddc:[()=>n.e(1713).then(n.t.bind(n,3457,19)),"~blog/default/blog-tags-tags-4c2.json",3457],aa10fd73:[()=>n.e(981).then(n.bind(n,6070)),"@site/blog/2022-07-23-collections/index.md?truncated=true",6070],aa18dea3:[()=>n.e(8675).then(n.t.bind(n,5751,19)),"~blog/default/blog-tags-comic-tagger-773.json",5751],b03b33b9:[()=>n.e(3243).then(n.bind(n,450)),"@site/blog/2022-07-06-welcome/index.md?truncated=true",450],b0a09dfa:[()=>n.e(5892).then(n.t.bind(n,8989,19)),"~blog/default/blog-tags-tpb-7c0.json",8989],b2b675dd:[()=>n.e(533).then(n.t.bind(n,8017,19)),"~blog/default/blog-c06.json",8017],b2f554cd:[()=>n.e(1477).then(n.t.bind(n,10,19)),"~blog/default/blog-archive-80c.json",10],b7da2017:[()=>n.e(1426).then(n.bind(n,2603)),"@site/blog/2022-07-17-50000/index.md",2603],b8a0c318:[()=>n.e(8850).then(n.bind(n,6836)),"@site/docs/simyan.md",6836],b91b4820:[()=>n.e(4468).then(n.bind(n,4939)),"@site/docs/metroninfo/intro.md",4939],b97f1789:[()=>n.e(1054).then(n.bind(n,9202)),"@site/blog/2022-08-23-esak-1-3-2/index.md",9202],ba0938ab:[()=>n.e(7341).then(n.t.bind(n,2236,19)),"~blog/default/blog-tags-masterworks-8cf-list.json",2236],c1cb2c93:[()=>n.e(2386).then(n.t.bind(n,9042,19)),"~blog/default/blog-tags-marvel-806.json",9042],c219f51b:[()=>n.e(6294).then(n.bind(n,9813)),"@site/docs/darkseid.md",9813],c22e3c0e:[()=>n.e(1045).then(n.t.bind(n,713,19)),"~blog/default/blog-tags-gcd-bf6-list.json",713],c2e4ce5f:[()=>n.e(2843).then(n.bind(n,8410)),"@site/blog/2022-08-23-esak-1-3-2/index.md?truncated=true",8410],c39b9779:[()=>n.e(6533).then(n.t.bind(n,9255,19)),"~blog/default/blog-tags-comic-059.json",9255],c4f1db29:[()=>n.e(8353).then(n.bind(n,3852)),"@site/docs/metroninfo/documentation.md",3852],c4f5d8e4:[()=>Promise.all([n.e(532),n.e(4195)]).then(n.bind(n,3261)),"@site/src/pages/index.js",3261],c7c90d09:[()=>n.e(6825).then(n.t.bind(n,6863,19)),"~blog/default/blog-tags-comicvine-5cd-list.json",6863],c7e673ad:[()=>n.e(3376).then(n.t.bind(n,8901,19)),"~blog/default/blog-tags-ubuntu-9bb-list.json",8901],c86c5744:[()=>n.e(8300).then(n.bind(n,7562)),"@site/docs/mokkari.md",7562],c9993dd8:[()=>n.e(9638).then(n.t.bind(n,6210,19)),"~blog/default/blog-tags-x-men-97e.json",6210],cc67f79b:[()=>n.e(879).then(n.bind(n,2418)),"@site/blog/2022-07-26-darkseid-1-3-3/index.md",2418],ccc49370:[()=>Promise.all([n.e(532),n.e(3473),n.e(8490),n.e(6048),n.e(6103)]).then(n.bind(n,9178)),"@theme/BlogPostPage",9178],cdd04f6c:[()=>n.e(8099).then(n.t.bind(n,3204,19)),"~blog/default/blog-tags-metrontagger-f33-list.json",3204],d47a6dc3:[()=>n.e(6458).then(n.bind(n,775)),"@site/docs/esak.md",775],db07686f:[()=>n.e(5796).then(n.bind(n,9795)),"@site/blog/2022-07-23-collections/index.md",9795],e27a0684:[()=>n.e(2537).then(n.t.bind(n,3517,19)),"~blog/default/blog-tags-metrontagger-f33.json",3517],e2e8a294:[()=>n.e(1677).then(n.t.bind(n,3351,19)),"~blog/default/blog-tags-metadata-b12-list.json",3351],e60eeb0d:[()=>n.e(2298).then(n.t.bind(n,1146,19)),"~blog/default/blog-tags-metron-82a-list.json",1146],e8722f0b:[()=>n.e(7942).then(n.t.bind(n,9275,19)),"~blog/default/blog-tags-tagging-f07.json",9275],ea8c2dc3:[()=>n.e(2595).then(n.t.bind(n,2600,19)),"~blog/default/blog-tags-gcd-bf6.json",2600],eb84fa4f:[()=>n.e(7824).then(n.t.bind(n,1100,19)),"~blog/default/blog-tags-collections-0c1.json",1100],f158f49f:[()=>n.e(2512).then(n.t.bind(n,4961,19)),"~blog/default/blog-tags-series-ad7-list.json",4961],f6360934:[()=>n.e(5594).then(n.t.bind(n,2989,19)),"~blog/default/blog-tags-podman-11d.json",2989],f8de77c0:[()=>n.e(5826).then(n.t.bind(n,7661,19)),"~blog/default/blog-tags-python-667-list.json",7661],f9605b50:[()=>n.e(2426).then(n.bind(n,5376)),"@site/blog/2022-07-13-metroninfo/index.md?truncated=true",5376],fc027257:[()=>n.e(1702).then(n.t.bind(n,7229,19)),"~blog/default/blog-tags-ubuntu-9bb.json",7229],fda2a896:[()=>n.e(6546).then(n.bind(n,1942)),"@site/blog/2022-12-04-series-type/index.md",1942]};function u(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"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,String(t)),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 c=n(9670),d=n(226);function f(e,t){if("*"===e)return i()({loading:u,loader:()=>n.e(4972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[e+"-"+t],f={},p=[],m=[],g=(0,c.Z)(o);return Object.entries(g).forEach((e=>{let[t,n]=e;const r=s[n];r&&(f[t]=r[0],p.push(r[1]),m.push(r[2]))})),i().Map({loading:u,loader:f,modules:p,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error("The page component at "+e+" doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.");"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const p=[{path:"/blog",component:f("/blog","e74"),exact:!0},{path:"/blog/50000-issues",component:f("/blog/50000-issues","ab6"),exact:!0},{path:"/blog/archive",component:f("/blog/archive","25d"),exact:!0},{path:"/blog/darkseid-133",component:f("/blog/darkseid-133","233"),exact:!0},{path:"/blog/esak-132",component:f("/blog/esak-132","21e"),exact:!0},{path:"/blog/latest-happenings",component:f("/blog/latest-happenings","364"),exact:!0},{path:"/blog/october-2023-update",component:f("/blog/october-2023-update","dde"),exact:!0},{path:"/blog/page/2",component:f("/blog/page/2","b00"),exact:!0},{path:"/blog/podman-gcd",component:f("/blog/podman-gcd","732"),exact:!0},{path:"/blog/series-type-change",component:f("/blog/series-type-change","73c"),exact:!0},{path:"/blog/tags",component:f("/blog/tags","0f1"),exact:!0},{path:"/blog/tags/anansi-project",component:f("/blog/tags/anansi-project","849"),exact:!0},{path:"/blog/tags/api",component:f("/blog/tags/api","325"),exact:!0},{path:"/blog/tags/cbr",component:f("/blog/tags/cbr","812"),exact:!0},{path:"/blog/tags/cbz",component:f("/blog/tags/cbz","958"),exact:!0},{path:"/blog/tags/collections",component:f("/blog/tags/collections","dcc"),exact:!0},{path:"/blog/tags/comic",component:f("/blog/tags/comic","c32"),exact:!0},{path:"/blog/tags/comic-tagger",component:f("/blog/tags/comic-tagger","32c"),exact:!0},{path:"/blog/tags/comictagger",component:f("/blog/tags/comictagger","416"),exact:!0},{path:"/blog/tags/comicvine",component:f("/blog/tags/comicvine","f5c"),exact:!0},{path:"/blog/tags/database",component:f("/blog/tags/database","04a"),exact:!0},{path:"/blog/tags/gcd",component:f("/blog/tags/gcd","544"),exact:!0},{path:"/blog/tags/grandcomicdatabase",component:f("/blog/tags/grandcomicdatabase","b5d"),exact:!0},{path:"/blog/tags/marvel",component:f("/blog/tags/marvel","4e5"),exact:!0},{path:"/blog/tags/masterworks",component:f("/blog/tags/masterworks","602"),exact:!0},{path:"/blog/tags/metadata",component:f("/blog/tags/metadata","87b"),exact:!0},{path:"/blog/tags/metron",component:f("/blog/tags/metron","a3a"),exact:!0},{path:"/blog/tags/metrontagger",component:f("/blog/tags/metrontagger","569"),exact:!0},{path:"/blog/tags/mysql",component:f("/blog/tags/mysql","347"),exact:!0},{path:"/blog/tags/podman",component:f("/blog/tags/podman","7e9"),exact:!0},{path:"/blog/tags/python",component:f("/blog/tags/python","d03"),exact:!0},{path:"/blog/tags/series",component:f("/blog/tags/series","382"),exact:!0},{path:"/blog/tags/server",component:f("/blog/tags/server","aca"),exact:!0},{path:"/blog/tags/tagging",component:f("/blog/tags/tagging","57f"),exact:!0},{path:"/blog/tags/tpb",component:f("/blog/tags/tpb","158"),exact:!0},{path:"/blog/tags/ubuntu",component:f("/blog/tags/ubuntu","e83"),exact:!0},{path:"/blog/tags/x-men",component:f("/blog/tags/x-men","c80"),exact:!0},{path:"/blog/trade-paperback-collections-support",component:f("/blog/trade-paperback-collections-support","6e1"),exact:!0},{path:"/blog/ubuntu-2204-lts",component:f("/blog/ubuntu-2204-lts","159"),exact:!0},{path:"/blog/welcome",component:f("/blog/welcome","2c4"),exact:!0},{path:"/blog/welcome-metroninfo",component:f("/blog/welcome-metroninfo","74b"),exact:!0},{path:"/docs",component:f("/docs","ae1"),routes:[{path:"/docs/category/metroninfo",component:f("/docs/category/metroninfo","681"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/schemas",component:f("/docs/category/schemas","2ed"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/darkseid",component:f("/docs/darkseid","43a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/esak",component:f("/docs/esak","6b1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/introduction",component:f("/docs/introduction","457"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/metron-tagger",component:f("/docs/metron-tagger","1f7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/metroninfo/documentation",component:f("/docs/metroninfo/documentation","8f4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/metroninfo/intro",component:f("/docs/metroninfo/intro","c0a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/metroninfo/schemas/v1.0",component:f("/docs/metroninfo/schemas/v1.0","451"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/mokkari",component:f("/docs/mokkari","1de"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/simyan",component:f("/docs/simyan","7c8"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:f("/","729"),exact:!0},{path:"*",component:f("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},7221:(e,t,n)=>{"use strict";var r=n(7294),a=n(3935),o=n(3727),i=n(405),l=n(412);const s=[n(2497),n(3310),n(8320),n(2295)];var u=n(723),c=n(6775),d=n(8790);function f(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var p=n(7462),m=n(5742),g=n(2263),h=n(4996),b=n(6668),v=n(1944),y=n(4711),w=n(9727),k=n(3320),E=n(8780),S=n(197);function x(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,g.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function _(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,g.Z)(),a=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,g.Z)(),{pathname:r}=(0,c.TH)();return e+(0,E.applyTrailingSlash)((0,h.Z)(r),{trailingSlash:n,baseUrl:t})}(),o=t?""+n+t:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function C(){const{i18n:{currentLocale:e}}=(0,g.Z)(),{metadata:t,image:n}=(0,b.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(v.d,{image:n}),r.createElement(_,null),r.createElement(x,null),r.createElement(S.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const T=new Map;function A(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var L=n(8934),P=n(8940);function R(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{var r,a;const o=null!=(r=null==(a=t.default)?void 0:a[e])?r:t[e];return null==o?void 0:o(...n)}));return()=>a.forEach((e=>null==e?void 0:e()))}const N=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);null==t||t.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),R("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>null==e.route.component.preload?void 0:e.route.component.preload())))}class I extends r.Component{constructor(e){super(e),this.previousLocation=void 0,this.routeUpdateCleanupCb=void 0,this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?R("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=R("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(N,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const D=I,M="__docusaurus-base-url-issue-banner-container",j="__docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function B(e){return"\nwindow['"+F+"'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['"+F+"'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('"+M+"');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = "+JSON.stringify(function(e){return'\n
\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(/{window[F]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,B(e))),r.createElement("div",{id:M}))}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,g.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(z,null):null}function $(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,g.Z)(),i=(0,h.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(m.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var q=n(4763),H=n(2389);function G(){const e=(0,H.Z)();return r.createElement(m.Z,null,r.createElement("html",{"data-has-hydrated":e}))}function Z(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement(q.Z,null,r.createElement(P.M,null,r.createElement(L.t,null,r.createElement(f,null,r.createElement($,null),r.createElement(C,null),r.createElement(U,null),r.createElement(D,{location:A(t)},e)),r.createElement(G,null))))}var V=n(6887);const W=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{var r,a;if("undefined"==typeof document)return void n();const o=document.createElement("link");o.setAttribute("rel","prefetch"),o.setAttribute("href",e),o.onload=()=>t(),o.onerror=()=>n();const i=null!=(r=document.getElementsByTagName("head")[0])?r:null==(a=document.getElementsByName("script")[0])?void 0:a.parentNode;null==i||i.appendChild(o)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Y=n(9670);const K=new Set,Q=new Set,X=()=>{var e,t;return(null==(e=navigator.connection)?void 0:e.effectiveType.includes("2g"))||(null==(t=navigator.connection)?void 0:t.saveData)},J={prefetch(e){if(!(e=>!X()&&!Q.has(e)&&!K.has(e))(e))return!1;K.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(V).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Y.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?W(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!X()&&!Q.has(e))(e)&&(Q.add(e),O(e))},ee=Object.freeze(J);if(l.Z.canUseDOM){window.docusaurus=ee;const e=a.hydrate;O(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(Z,null))),document.getElementById("__docusaurus"))}))}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(7294),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"introduction","docs":[{"id":"darkseid","path":"/docs/darkseid","sidebar":"tutorialSidebar"},{"id":"esak","path":"/docs/esak","sidebar":"tutorialSidebar"},{"id":"introduction","path":"/docs/introduction","sidebar":"tutorialSidebar"},{"id":"metron-tagger","path":"/docs/metron-tagger","sidebar":"tutorialSidebar"},{"id":"metroninfo/documentation","path":"/docs/metroninfo/documentation","sidebar":"tutorialSidebar"},{"id":"metroninfo/intro","path":"/docs/metroninfo/intro","sidebar":"tutorialSidebar"},{"id":"metroninfo/schemas/v1.0","path":"/docs/metroninfo/schemas/v1.0","sidebar":"tutorialSidebar"},{"id":"mokkari","path":"/docs/mokkari","sidebar":"tutorialSidebar"},{"id":"simyan","path":"/docs/simyan","sidebar":"tutorialSidebar"},{"id":"/category/metroninfo","path":"/docs/category/metroninfo","sidebar":"tutorialSidebar"},{"id":"/category/schemas","path":"/docs/category/schemas","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/introduction","label":"introduction"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"2.4.3","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.3"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.3"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.3"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.3"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.3"},"docusaurus-plugin-remote-content-metroninfo":{"type":"package","name":"docusaurus-plugin-remote-content","version":"3.1.0"}}}'),u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(412),o=n(5742),i=n(8780),l=n(7961);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(f,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){var n;const e={error:t,tryAgain:()=>this.setState({error:null})};return(null!=(n=this.props.fallback)?n:d)(e)}return null!=e?e:null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(405);function o(e){return r.createElement(a.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7462),a=n(7294),o=n(3727),i=n(8780),l=n(2263),s=n(3919),u=n(412);const c=a.createContext({collectLink:()=>{}});var d=n(4996);function f(e,t){var n,f;let{isNavLink:p,to:m,href:g,activeClassName:h,isActive:b,"data-noBrokenLinkCheck":v,autoAddBaseUrl:y=!0,...w}=e;const{siteConfig:{trailingSlash:k,baseUrl:E}}=(0,l.Z)(),{withBaseUrl:S}=(0,d.C)(),x=(0,a.useContext)(c),_=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>_.current));const C=m||g;const T=(0,s.Z)(C),A=null==C?void 0:C.replace("pathname://","");let L=void 0!==A?(P=A,y&&(e=>e.startsWith("/"))(P)?S(P):P):void 0;var P;L&&T&&(L=(0,i.applyTrailingSlash)(L,{trailingSlash:k,baseUrl:E}));const R=(0,a.useRef)(!1),N=p?o.OL:o.rU,O=u.Z.canUseIntersectionObserver,I=(0,a.useRef)(),D=()=>{R.current||null==L||(window.docusaurus.preload(L),R.current=!0)};(0,a.useEffect)((()=>(!O&&T&&null!=L&&window.docusaurus.prefetch(L),()=>{O&&I.current&&I.current.disconnect()})),[I,L,O,T]);const M=null!=(n=null==(f=L)?void 0:f.startsWith("#"))&&n,j=!L||!T||M;return j||v||x.collectLink(L),j?a.createElement("a",(0,r.Z)({ref:_,href:L},C&&!T&&{target:"_blank",rel:"noopener noreferrer"},w)):a.createElement(N,(0,r.Z)({},w,{onMouseEnter:D,onTouchStart:D,innerRef:e=>{_.current=e,O&&e&&T&&(I.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(I.current.unobserve(e),I.current.disconnect(),null!=L&&window.docusaurus.prefetch(L))}))})),I.current.observe(e))},to:L},p&&{isActive:b,activeClassName:h}))}const p=a.forwardRef(f)},1875:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=()=>null},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=null==t?void 0:t[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(7529);function i(e){var t,n;let{id:r,message:a}=e;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!=(t=null!=(n=o[null!=r?r:a])?n:a)?t:r}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});function r(e){const t={};return function e(n,r){Object.entries(n).forEach((n=>{let[a,o]=n;const i=r?r+"."+a:a;var l;"object"==typeof(l=o)&&l&&Object.keys(l).length>0?e(o,i):t[i]=o}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...null==n?void 0:n.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>g,gA:()=>f,_r:()=>c,Jo:()=>h,zh:()=>d,yW:()=>m,gB:()=>p});var r=n(6775),a=n(2263),o=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=null==n?void 0:n.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},c=()=>{var e;return null!=(e=i("docusaurus-plugin-content-docs"))?e:u},d=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=null==r?void 0:r[t];if(!a&&n.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin with id "'+t+'".');return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function f(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(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((e=>e.path)).join(", "));return o}(t,n,e)}function p(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return s(t,n)}function h(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)("./prism-"+e)})),delete globalThis.Prism}(r.Z)},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const a="iconExternalLink_nPIU";function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"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"}))}},7961:(e,t,n)=>{"use strict";n.d(t,{Z:()=>mt});var r=n(7294),a=n(6010),o=n(4763),i=n(7462),l=n(6775),s=n(5999),u=n(5936);const c="__docusaurus_skipToContent_fallback";function d(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=null!=(n=document.querySelector("main:first-of-type"))?n:document.getElementById(c);var n;t&&d(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&d(e.current)})),{containerRef:e,onClick:n}}const p=(0,s.I)({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",message:"Skip to main content"});function m(e){var t;const n=null!=(t=e.children)?t:p,{containerRef:a,onClick:o}=f();return r.createElement("div",{ref:a,role:"region","aria-label":p},r.createElement("a",(0,i.Z)({},e,{href:"#"+c,onClick:o}),n))}var g=n(1944),h=n(5281),b=n(9727);const v="skipToContent_fXgn";function y(){return r.createElement(m,{className:v})}var w=n(6668),k=n(9689);function E(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:l,...s}=e;return r.createElement("svg",(0,i.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S="closeButton_CVFx";function x(e){return r.createElement("button",(0,i.Z)({type:"button","aria-label":(0,s.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",S,e.className)}),r.createElement(E,{width:14,height:14,strokeWidth:3.1}))}const _="content_knG7";function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,i.Z)({},e,{className:(0,a.Z)(_,e.className),dangerouslySetInnerHTML:{__html:n}}))}const T="announcementBar_mb4j",A="announcementBarPlaceholder_vyr4",L="announcementBarClose_gvF7",P="announcementBarContent_xLdY";function R(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:T,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:A}),r.createElement(C,{className:P}),i&&r.createElement(x,{onClick:n,className:L}))}var N=n(2961),O=n(2466);var I=n(902),D=n(3102);const M=r.createContext(null);function j(e){let{children:t}=e;const n=function(){const e=(0,N.e)(),t=(0,D.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,I.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(M.Provider,{value:n},t)}function F(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function B(){const e=(0,r.useContext)(M);if(!e)throw new I.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,D.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:F(o)})),[a,o,t])}function z(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=B();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var U=n(2949),$=n(2389);function q(e){return r.createElement("svg",(0,i.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function H(e){return r.createElement("svg",(0,i.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const G={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function Z(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const l=(0,$.Z)(),u=(0,s.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===o?(0,s.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)(G.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",G.toggleButton,!l&&G.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:u,"aria-label":u,"aria-live":"polite"},r.createElement(q,{className:(0,a.Z)(G.toggleIcon,G.lightToggleIcon)}),r.createElement(H,{className:(0,a.Z)(G.toggleIcon,G.darkToggleIcon)})))}const V=r.memo(Z),W="darkNavbarColorModeToggle_X3D1";function Y(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,U.I)();return a?null:r.createElement(V,{className:t,buttonClassName:"dark"===n?W:void 0,value:o,onChange:i})}var K=n(1327);function Q(){return r.createElement(K.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function X(){const e=(0,N.e)();return r.createElement("button",{type:"button","aria-label":(0,s.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(E,{color:"var(--ifm-color-emphasis-600)"}))}function J(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(Q,null),r.createElement(Y,{className:"margin-right--md"}),r.createElement(X,null))}var ee=n(9960),te=n(4996),ne=n(3919);function re(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var ae=n(9471);function oe(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:l,html:s,isDropdownLink:u,prependBaseUrlToHref:c,...d}=e;const f=(0,te.Z)(a),p=(0,te.Z)(t),m=(0,te.Z)(o,{forcePrependBaseUrl:!0}),g=l&&o&&!(0,ne.Z)(o),h=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,l,g&&r.createElement(ae.Z,u&&{width:12,height:12}))};return o?r.createElement(ee.Z,(0,i.Z)({href:c?m:o},d,h)):r.createElement(ee.Z,(0,i.Z)({to:f,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?re(n,t.pathname):t.pathname.startsWith(p)},d,h))}function ie(e){let{className:t,isDropdownItem:n=!1,...o}=e;const l=r.createElement(oe,(0,i.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,l):l}function le(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(oe,(0,i.Z)({className:(0,a.Z)("menu__link",t)},o)))}function se(e){var t;let{mobile:n=!1,position:a,...o}=e;const l=n?le:ie;return r.createElement(l,(0,i.Z)({},o,{activeClassName:null!=(t=o.activeClassName)?t:n?"menu__link--active":"navbar__link--active"}))}var ue=n(6043),ce=n(8596),de=n(2263);function fe(e,t){return e.some((e=>function(e,t){return!!(0,ce.Mg)(e.to,t)||!!re(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function pe(e){var t;let{items:n,position:o,className:l,onClick:s,...u}=e;const c=(0,r.useRef)(null),[d,f]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{c.current&&!c.current.contains(e.target)&&f(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[c]),r.createElement("div",{ref:c,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===o,"dropdown--show":d})},r.createElement(oe,(0,i.Z)({"aria-haspopup":"true","aria-expanded":d,role:"button",href:u.to?void 0:"#",className:(0,a.Z)("navbar__link",l)},u,{onClick:u.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),f(!d))}}),null!=(t=u.children)?t:u.label),r.createElement("ul",{className:"dropdown__menu"},n.map(((e,t)=>r.createElement(Te,(0,i.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function me(e){var t;let{items:n,className:o,position:s,onClick:u,...c}=e;const d=function(){const{siteConfig:{baseUrl:e}}=(0,de.Z)(),{pathname:t}=(0,l.TH)();return t.replace(e,"/")}(),f=fe(n,d),{collapsed:p,toggleCollapsed:m,setCollapsed:g}=(0,ue.u)({initialState:()=>!f});return(0,r.useEffect)((()=>{f&&g(!f)}),[d,f,g]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":p})},r.createElement(oe,(0,i.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",o)},c,{onClick:e=>{e.preventDefault(),m()}}),null!=(t=c.children)?t:c.label),r.createElement(ue.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p},n.map(((e,t)=>r.createElement(Te,(0,i.Z)({mobile:!0,isDropdownItem:!0,onClick:u,activeClassName:"menu__link--active"},e,{key:t}))))))}function ge(e){let{mobile:t=!1,...n}=e;const a=t?me:pe;return r.createElement(a,n)}var he=n(4711);function be(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,i.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const ve="iconLanguage_nlXk";var ye=n(1875);const we="searchBox_ZlJk";function ke(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,we)},t)}var Ee=n(143),Se=n(2802);var xe=n(373);const _e=e=>e.docs.find((t=>t.id===e.mainDocId));const Ce={default:se,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:u,locales:c,localeConfigs:d}}=(0,de.Z)(),f=(0,he.l)(),{search:p,hash:m}=(0,l.TH)(),g=[...n,...c.map((e=>{const n=""+("pathname://"+f.createUrl({locale:e,fullyQualified:!1}))+p+m;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===u?t?"menu__link--active":"dropdown__link--active":""}})),...a],h=t?(0,s.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[u].label;return r.createElement(ge,(0,i.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(be,{className:ve}),h),items:g}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(ke,{className:n},r.createElement(ye.Z,null))},dropdown:ge,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:l}=(0,Ee.Iw)(a),s=(0,Se.vY)(t,a);return null===s?null:r.createElement(se,(0,i.Z)({exact:!0},o,{isActive:()=>(null==l?void 0:l.path)===s.path||!(null==l||!l.sidebar)&&l.sidebar===s.sidebar,label:null!=n?n:s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:l}=(0,Ee.Iw)(a),s=(0,Se.oz)(t,a).link;if(!s)throw new Error('DocSidebarNavbarItem: Sidebar with ID "'+t+"\" doesn't have anything to be linked to.");return r.createElement(se,(0,i.Z)({exact:!0},o,{isActive:()=>(null==l?void 0:l.sidebar)===t,label:null!=n?n:s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const l=(0,Se.lO)(a)[0],s=null!=t?t:l.label,u=null!=n?n:(e=>e.docs.find((t=>t.id===e.mainDocId)))(l).path;return r.createElement(se,(0,i.Z)({},o,{label:s,to:u}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:u,...c}=e;const{search:d,hash:f}=(0,l.TH)(),p=(0,Ee.Iw)(n),m=(0,Ee.gB)(n),{savePreferredVersionName:g}=(0,xe.J)(n),h=[...o,...m.map((e=>{var t;const n=null!=(t=p.alternateDocVersions[e.name])?t:_e(e);return{label:e.label,to:""+n.path+d+f,isActive:()=>e===p.activeVersion,onClick:()=>g(e.name)}})),...u],b=(0,Se.lO)(n)[0],v=t&&h.length>1?(0,s.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,y=t&&h.length>1?void 0:_e(b).path;return h.length<=1?r.createElement(se,(0,i.Z)({},c,{mobile:t,label:v,to:y,isActive:a?()=>!1:void 0})):r.createElement(ge,(0,i.Z)({},c,{mobile:t,label:v,to:y,items:h,isActive:a?()=>!1:void 0}))}};function Te(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Ce[a];if(!o)throw new Error('No NavbarItem component found for type "'+t+'".');return r.createElement(o,n)}function Ae(){const e=(0,N.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(Te,(0,i.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Le(e){return r.createElement("button",(0,i.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(s.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"))}function Pe(){const e=0===(0,w.L)().navbar.items.length,t=B();return r.createElement(r.Fragment,null,!e&&r.createElement(Le,{onClick:()=>t.hide()}),t.content)}function Re(){const e=(0,N.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(z,{header:r.createElement(J,null),primaryMenu:r.createElement(Ae,null),secondaryMenu:r.createElement(Pe,null)}):null}const Ne="navbarHideable_m1mJ",Oe="navbarHidden_jGov";function Ie(e){return r.createElement("div",(0,i.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function De(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,N.e)(),{navbarRef:l,isNavbarVisible:c}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,O.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+u{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,s.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Ne,!c&&Oe],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Ie,{onClick:i.toggle}),r.createElement(Re,null))}var Me=n(8780);const je="errorBoundaryError_a6uf";function Fe(e){return r.createElement("button",(0,i.Z)({type:"button"},e),r.createElement(s.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function Be(e){let{error:t}=e;const n=(0,Me.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:je},n)}class ze extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}function Ue(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,i.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function $e(){const{toggle:e,shown:t}=(0,N.e)();return r.createElement("button",{onClick:e,"aria-label":(0,s.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(Ue,null))}const qe="colorModeToggle_DEke";function He(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(ze,{key:t,onError:t=>new Error("A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n"+JSON.stringify(e,null,2),{cause:t})},r.createElement(Te,e)))))}function Ge(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function Ze(){const e=(0,N.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){var t;return"left"===(null!=(t=e.position)?t:"right")}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(Ge,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement($e,null),r.createElement(Q,null),r.createElement(He,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(He,{items:a}),r.createElement(Y,{className:qe}),!o&&r.createElement(ke,null,r.createElement(ye.Z,null)))})}function Ve(){return r.createElement(De,null,r.createElement(Ze,null))}function We(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:l,...s}=t,u=(0,te.Z)(n),c=(0,te.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(ee.Z,(0,i.Z)({className:"footer__link-item"},a?{href:l?c:a}:{to:u},s),o,a&&!(0,ne.Z)(a)&&r.createElement(ae.Z,null))}function Ye(e){var t;let{item:n}=e;return n.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:n.html}}):r.createElement("li",{key:null!=(t=n.href)?t:n.to,className:"footer__item"},r.createElement(We,{item:n}))}function Ke(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(Ye,{key:t,item:e})))))}function Qe(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Ke,{key:t,column:e}))))}function Xe(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function Je(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(We,{item:t})}function et(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(Je,{item:e}),t.length!==n+1&&r.createElement(Xe,null))))))}function tt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(Qe,{columns:t}):r.createElement(et,{links:t})}var nt=n(941);const rt="footerLogoLink_BH7S";function at(e){var t;let{logo:n}=e;const{withBaseUrl:o}=(0,te.C)(),i={light:o(n.src),dark:o(null!=(t=n.srcDark)?t:n.src)};return r.createElement(nt.Z,{className:(0,a.Z)("footer__logo",n.className),alt:n.alt,sources:i,width:n.width,height:n.height,style:n.style})}function ot(e){let{logo:t}=e;return t.href?r.createElement(ee.Z,{href:t.href,className:rt,target:t.target},r.createElement(at,{logo:t})):r.createElement(at,{logo:t})}function it(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function lt(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function st(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(lt,{style:o,links:n&&n.length>0&&r.createElement(tt,{links:n}),logo:a&&r.createElement(ot,{logo:a}),copyright:t&&r.createElement(it,{copyright:t})})}const ut=r.memo(st),ct=(0,I.Qc)([U.S,k.pl,O.OC,xe.L5,g.VC,function(e){let{children:t}=e;return r.createElement(D.n2,null,r.createElement(N.M,null,r.createElement(j,null,t)))}]);function dt(e){let{children:t}=e;return r.createElement(ct,null,t)}function ft(e){let{error:t,tryAgain:n}=e;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(s.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(Fe,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(Be,{error:t})))))}const pt="mainWrapper_z2l0";function mt(e){const{children:t,noFooter:n,wrapperClassName:i,title:l,description:s}=e;return(0,b.t)(),r.createElement(dt,null,r.createElement(g.d,{title:l,description:s}),r.createElement(y,null),r.createElement(R,null),r.createElement(Ve,null),r.createElement("div",{id:c,className:(0,a.Z)(h.k.wrapper.main,pt,i)},r.createElement(o.Z,{fallback:e=>r.createElement(ft,e)},t)),!n&&r.createElement(ut,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),a=n(7294),o=n(9960),i=n(4996),l=n(2263),s=n(6668),u=n(941);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(u.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){var t;const{siteConfig:{title:n}}=(0,l.Z)(),{navbar:{title:u,logo:d}}=(0,s.L)(),{imageClassName:f,titleClassName:p,...m}=e,g=(0,i.Z)((null==d?void 0:d.href)||"/"),h=u?"":n,b=null!=(t=null==d?void 0:d.alt)?t:h;return a.createElement(o.Z,(0,r.Z)({to:g},m,(null==d?void 0:d.target)&&{target:d.target}),d&&a.createElement(c,{logo:d,alt:b,imageClassName:f}),null!=u&&a.createElement("b",{className:p},u))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(5742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),a=n(7294),o=n(6010),i=n(2389),l=n(2949);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function u(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:u,className:c,alt:d,...f}=e,p=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,p.map((e=>a.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,o.Z)(s.themedImage,s["themedImage--"+e],c)},f)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>l,z:()=>g});var r=n(7462),a=n(7294),o=n(412),i=n(1442);function l(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(null!=t&&t),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const s={display:"none",overflow:"hidden",height:"0px"},u={display:"block",overflow:"visible",height:"auto"};function c(e,t){const n=t?s:u;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function d(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){var t,n;const a=e.scrollHeight,o=null!=(t=null==r?void 0:r.duration)?t:function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(a);return{transition:"height "+o+"ms "+(null!=(n=null==r?void 0:r.easing)?n:"ease-in-out"),height:a+"px"}}function l(){const t=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return c(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=s.height,e.style.overflow=s.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function f(e){if(!o.Z.canUseDOM)return e?s:u}function p(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const u=(0,a.useRef)(null);return d({collapsibleRef:u,collapsed:n,animation:o}),a.createElement(t,{ref:u,style:s?void 0:f(n),onTransitionEnd:e=>{"height"===e.propertyName&&(c(u.current,n),null==i||i(n))},className:l},r)}function m(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(p,(0,r.Z)({},n,{collapsed:l})):null}function g(e){let{lazy:t,...n}=e;const r=t?m:p;return a.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>p});var r=n(7294),a=n(2389),o=n(12),i=n(902),l=n(6668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&d(!1),!r&&c()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>h,S:()=>g});var r=n(7294),a=n(412),o=n(902),i=n(12),l=n(6668);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d="light",f="dark",p=e=>e===f?f:d;function m(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[o,i]=(0,r.useState)((e=>a.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e))(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const s=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(i(t),a&&(e=>{c.set(p(e))})(t)):(i(n?window.matchMedia("(prefers-color-scheme: dark)").matches?f:d:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&s(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,s]);const m=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||m.current?m.current=window.matchMedia("print").matches:s(null)};return e.addListener(r),()=>e.removeListener(r)}),[s,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:s,get isDarkTheme(){return o===f},setLightTheme(){s(d)},setDarkTheme(){s(f)}})),[o,s])}function g(e){let{children:t}=e;const n=m();return r.createElement(s.Provider,{value:n},t)}function h(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>y,L5:()=>b});var r=n(7294),a=n(143),o=n(9935),i=n(6668),l=n(2802),s=n(902),u=n(12);const c=e=>"docs-preferred-version-"+e,d=(e,t,n)=>{(0,u.WA)(c(e),{persistence:t}).set(n)},f=(e,t)=>(0,u.WA)(c(e),{persistence:t}).get(),p=(e,t)=>{(0,u.WA)(c(e),{persistence:t}).del()};const m=r.createContext(null);function g(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>(e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}]))))(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=f(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=g();return r.createElement(m.Provider,{value:n},t)}function b(e){let{children:t}=e;return l.cE?r.createElement(h,null,t):r.createElement(r.Fragment,null,t)}function v(){const e=(0,r.useContext)(m);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function y(e){var t;void 0===e&&(e=o.m);const n=(0,a.zh)(e),[i,l]=v(),{preferredVersionName:s}=i[e];return{preferredVersion:null!=(t=n.versions.find((e=>e.name===s)))?t:null,savePreferredVersionName:(0,r.useCallback)((t=>{l.savePreferredVersion(e,t)}),[l,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>i});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,version:n}=e;return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocsVersionProvider");return e}},2961:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(7294),a=n(3102),o=n(7524),i=n(6775),l=(n(1688),n(902));function s(e){!function(e){const t=(0,i.k6)(),n=(0,l.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(6668);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,u.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function f(e){let{children:t}=e;const n=d();return r.createElement(c.Provider,{value:n},t)}function p(){const e=r.useContext(c);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7294),a=n(412);const o="desktop",i="mobile",l="ssr";function s(){return a.Z.canUseDOM?window.innerWidth>996?o:i:l}function u(){const[e,t]=(0,r.useState)((()=>s()));return(0,r.useEffect)((()=>{function e(){t(s())}return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(undefined)}}),[]),e}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={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",admonition:"theme-admonition",admonitionType:e=>"theme-admonition-"+e},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",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",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>"theme-doc-sidebar-item-category-level-"+e,docSidebarItemLinkLevel:e=>"theme-doc-sidebar-item-link-level-"+e},blog:{}}},1442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},2802:(e,t,n)=>{"use strict";n.d(t,{MN:()=>x,Wl:()=>m,_F:()=>b,cE:()=>f,jA:()=>g,xz:()=>p,hI:()=>S,lO:()=>w,vY:()=>E,oz:()=>k,s1:()=>y});var r=n(7294),a=n(6775),o=n(8790),i=n(143),l=n(373),s=n(4477),u=n(1116);function c(e){return Array.from(new Set(e))}var d=n(8596);const f=!!i._r;function p(e){const t=(0,s.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error("no version doc found by id="+e);return n}function m(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=m(t);if(e)return e}}}function g(){const{pathname:e}=(0,a.TH)(),t=(0,u.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=v({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(e+" is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.");return n}const h=(e,t)=>void 0!==e&&(0,d.Mg)(e,t);function b(e,t){return"link"===e.type?h(e.href,t):"category"===e.type&&(h(e.href,t)||((e,t)=>e.some((e=>b(e,t))))(e.items,t))}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function y(){var e;const t=(0,u.V)(),{pathname:n}=(0,a.TH)();return!1!==(null==(e=(0,i.gA)())?void 0:e.pluginData.breadcrumbs)&&t?v({sidebarItems:t.items,pathname:n}):null}function w(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>c([t,n,a].filter(Boolean))),[t,n,a])}function k(e,t){const n=w(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error("Can't find any sidebar with id \""+e+'" in version'+(n.length>1?"s":"")+" "+n.map((e=>e.name)).join(", ")+'".\nAvailable sidebar ids are:\n- '+t.map((e=>e[0])).join("\n- "));return r[1]}),[e,n])}function E(e,t){const n=w(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error("Couldn't find any doc with id \""+e+'" in version'+(n.length>1?"s":"")+' "'+n.map((e=>e.name)).join(", ")+'".\nAvailable doc ids are:\n- '+c(t.map((e=>e.id))).join("\n- "))}return r}),[e,n])}function S(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}function x(e){return e.filter((e=>"category"!==e.type||!!m(e)))}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>c,VC:()=>p});var r=n(7294),a=n(6010),o=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),u=n(2263);function c(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const c=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return null!=e&&e.trim().length?e.trim()+" "+r+" "+n:n}(t),{withBaseUrl:d}=(0,s.C)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,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}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o="plugin-"+n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"");const i="plugin-id-"+n.plugin.id;return r.createElement(f,{className:(0,a.Z)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){var n,r,a,o;super(),this.name="ReactContextError",this.message="Hook "+(null!=(n=null==(r=this.stack)||null==(a=r.split("\n")[1])||null==(o=a.match(/at (?:\w+\.)?(?\w+)/))?void 0:o.groups.name)?n:"")+" is called outside the <"+e+">. "+(null!=t?t:"")}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),a=n(723),o=n(2263);function i(e,t){const n=e=>{var t;return null==(t=!e||e.endsWith("/")?e:e+"/")?void 0:t.toLowerCase()};return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>{var t;return null!=(t=e.routes)?t:[]})))}(n)}({routes:a.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>s,RF:()=>d});var r=n(7294),a=n(412),o=n(2389),i=n(902);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>null==e.current?void 0:e.current()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(2263);const r="default";function a(e,t){return"docs-"+e+"-"+t}},12:(e,t,n)=>{"use strict";n.d(t,{WA:()=>s});n(7294),n(1688);const r="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function o(e){if(void 0===e&&(e=r),"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,i||(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),i=!0),null}var t}let i=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function s(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,listen:t}}(e);const n=o(null==t?void 0:t.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error("Docusaurus storage error, can't get key="+e,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),a({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error("Docusaurus storage error, can't set "+e+"="+t,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),a({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error("Docusaurus storage error, can't delete key="+e,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error("Docusaurus storage error, can't listen for changes of key="+e,r),()=>{}}}}}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(2263),a=n(6775),o=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.Z)(),{pathname:s}=(0,a.TH)(),u=(0,o.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace("/"+l+"/","/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return""+(r?t:"")+function(e){return e===i?""+c:""+c+e+"/"}(n)+d}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),a=n(6775),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:e+"/"}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780: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.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},6010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>p,PP:()=>A,Ep:()=>f});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(2177);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(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 d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(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 p(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 m(){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=p(e,t,g(),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{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=p(n);a&&a!==m&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),g=s(n),h=0;h{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(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),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(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),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.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()}}(),s=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 u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(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: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,s=a(e),u=1;u{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=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(v){if(!(_=o(k,S,e,b))||_.index>=e.length)break;var T=_.index,A=_.index+_[0].length,L=S;for(L+=E.value.length;T>=L;)L+=(E=E.next).value.length;if(S=L-=E.value.length,E.value instanceof a)continue;for(var P=E;P!==t.tail&&(Ld.reach&&(d.reach=I);var D=E.prev;if(N&&(D=s(t,D,N),S+=N.length),u(t,D,C),E=s(t,D,new a(f,h?r.tokenize(R,h):R,y,R)),O&&s(t,E,O),C>1){var M={cause:f+","+m,reach:I};i(e,t,n,E.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.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 s(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 u(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=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),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),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:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),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 s=n;s=0&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),f=Object.keys(c);return i=0,function e(t){for(var n=0;n=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 s=o.substring(0,l),d=u(c[a]),p=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),p){var g=[p];e(g),m.push.apply(m,g)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var h=r.content;Array.isArray(h)?e(h):e([h])}}}(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]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,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){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*\.{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 s=i(a);r0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}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){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",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"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),m=f.indexOf(p);if(m>-1){++a;var g=f.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=f.substring(m+p.length),v=[];g&&v.push.apply(v,i([g])),v.push(h),b&&v.push.apply(v,i([b])),"string"==typeof u?l.splice.apply(l,[s,1].concat(v)):u.content=v}}else u.content&&i(u.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:/[:;(){}]/},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,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){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:/[()]/};const o=a},9901: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:"shell",aliasTitles:{shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},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"},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"},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"},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"},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"},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:(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:(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:(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: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={},s=e[r];if(s){function u(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(s.require,u),t(s.optional,u),t(s.modify,u)}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 s=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),u=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}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(s),m=c;a(m);){for(var g in f={},m){var h=s[g];t(h&&h.modify,(function(e){e in d&&(f[e]=!0)}))}for(var b in d)if(!(b in c))for(var v in p(b))if(v in c){f[b]=!0;break}for(var y in m=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={},s={};function u(e){if(e in l)return l[e];s[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=u(e);return delete s[e],t})));o?a=o(f,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var f in s)d.push(l[f]);return i(d)}(p,c,t,n)}};return w}}();e.exports=t},2703:(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:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(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