@sybelblue/prairielearn-navigator 0.3.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +82 -9
  2. package/dist/cli.js +7 -1
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -3,14 +3,76 @@
3
3
  Checks a [PrairieLearn](https://www.prairielearn.com) course for problems that
4
4
  should fail CI. These are the same diagnostics the
5
5
  [PrairieLearn Navigator](https://github.com/SybelBlue/prairielearn-navigator)
6
- VS Code extension shows. `check` looks at every `infoAssessment.json` under the given
7
- paths (default: `.`). It reports missing or incomplete questions as errors and
8
- duplicate question IDs as warnings. Only errors make it exit non-zero.
6
+ VS Code extension shows. `check` looks at every course JSON file
7
+ (`infoCourse.json`, `infoCourseInstance.json`, `infoAssessment.json`, the
8
+ `info.json` of questions, elements, and element extensions, and each
9
+ question's `question.html`) under the given
10
+ paths (default: `.`). Only errors make it exit non-zero.
9
11
 
10
12
  ```sh
11
- npx -y @sybelblue/prairielearn-navigator check [--format pretty|github] [paths...]
13
+ npx -y @sybelblue/prairielearn-navigator check [options] [paths...]
12
14
  ```
13
15
 
16
+ | Option | |
17
+ | --- | --- |
18
+ | `--format pretty\|github` | Output format (default: `pretty`) |
19
+ | `--config <path>` | Config file (default: `.pl-navigator.jsonc` in each course root) |
20
+ | `--pl-version <version>` | PrairieLearn version to check against (overrides the config) |
21
+ | `--schema-cache <dir>` | Where downloaded schemas are cached (overrides the config) |
22
+ | `--exclude <glob>` | Skip matching files, relative to the current directory. Repeatable; adds to the config's `excludes`. |
23
+
24
+ ## Rules
25
+
26
+ Each diagnostic ends with its rule id, e.g. `[schema]`.
27
+
28
+ | Rule | Files | Reports |
29
+ | --- | --- | --- |
30
+ | `json-syntax` | all | JSON syntax errors, including comments and trailing commas, which PrairieLearn's `JSON.parse` rejects |
31
+ | `schema` | all | Violations of PrairieLearn's own JSON schema for the selected version. Unknown properties are warnings. |
32
+ | `duplicate-question-id` | `infoAssessment.json` | Question ids used more than once (warning) |
33
+ | `question-exists` | `infoAssessment.json`, question `info.json` (`template`) | Question ids with no directory, `info.json`, or `question.html` |
34
+ | `client-files-course-exist` | question, element, and element extension `info.json` | `clientFilesCourseStyles`/`Scripts` missing from `clientFilesCourse/` |
35
+ | `client-files-question-exist` | question `info.json` | `clientFilesQuestionStyles`/`Scripts` missing from `clientFilesQuestion/`; deprecated `clientFiles` (warning) |
36
+ | `server-files-course-exist` | question `info.json` | `externalGradingOptions.serverFilesCourse` entries missing from `serverFilesCourse/` |
37
+ | `element-files-exist` | element and element extension `info.json` | `controller` and element/extension dependencies missing from the element's directory |
38
+ | `<element>-file-exist` | `question.html` | Missing source files of `pl-figure`, `pl-file-download`, `pl-code`, `pl-file-editor`, `pl-graph`, `pl-rich-text-editor`, `pl-excalidraw`, `pl-xss-safe`, and `pl-template`, resolved through each element's `directory` attribute as PrairieLearn does. Invalid `directory` values are errors. |
39
+
40
+ File rules skip what can't be known before PrairieLearn renders the question:
41
+ values containing mustache (`{{`), and `type="dynamic"` files generated by
42
+ `server.py`. Files named for student submissions (e.g. `pl-file-editor`'s
43
+ `file-name`) are not references.
44
+
45
+ ## Configuration
46
+
47
+ Put a `.pl-navigator.jsonc` (JSON with comments) next to `infoCourse.json`:
48
+
49
+ ```jsonc
50
+ {
51
+ // "latest" (default), a date, or a PrairieLearn commit sha
52
+ "plVersion": "2025-06-01",
53
+ // Relative to this file. Default: $XDG_CACHE_HOME/prairielearn-navigator/schemas
54
+ // or ~/.cache/prairielearn-navigator/schemas
55
+ "schemaCacheDir": ".cache/pl-schemas",
56
+ // Turn rules off or change their severity
57
+ "rules": { "duplicate-question-id": "error" },
58
+ // Files never checked, relative to this file
59
+ "excludes": ["courseInstances/Archive/**", "questions/drafts/**"]
60
+ }
61
+ ```
62
+
63
+ PrairieLearn has no numbered releases; it deploys continuously from its
64
+ `master` branch. So a version is one of:
65
+
66
+ - `latest`: today's `master`. Schemas are downloaded at most once a day.
67
+ - A date (`YYYY-MM-DD`): `master` as of the end of that day (UTC). The commit is
68
+ looked up once with the GitHub API; set `GITHUB_TOKEN` if you hit its rate
69
+ limit.
70
+ - A 40-character commit sha. Fully reproducible, and needs no API call.
71
+
72
+ Schemas are fetched from GitHub and cached. If they can't be fetched (for
73
+ example, offline with an empty cache), schema validation is skipped with a
74
+ single warning, and the other rules still run.
75
+
14
76
  Paths can be glob patterns. A glob that matches a directory searches inside
15
77
  it. Quote globs so the shell passes them through unexpanded:
16
78
 
@@ -18,8 +80,8 @@ it. Quote globs so the shell passes them through unexpanded:
18
80
  npx -y @sybelblue/prairielearn-navigator check "courseInstances/Fa26/**"
19
81
  ```
20
82
 
21
- Every file it verifies is listed first: each `infoAssessment.json`, followed by
22
- the `info.json` of each question it references (red if that question has an
83
+ Every file it verifies is listed first. Each `infoAssessment.json` is followed
84
+ by the `info.json` of each question it references (red if that question has an
23
85
  error). With `--format github` this list is a collapsible log group.
24
86
 
25
87
  ```
@@ -31,14 +93,25 @@ courseInstances/Fa26/assessments/hw1/infoAssessment.json
31
93
  questions/noInfo/info.json
32
94
  questions/doesNotExist/info.json
33
95
 
34
- courseInstances/Fa26/assessments/hw1/infoAssessment.json:13:18 error: incomplete question: missing required html file
96
+ infoCourse.json
97
+ questions/deps/info.json
98
+ ...
99
+
100
+ courseInstances/Fa26/assessments/hw1/infoAssessment.json:13:18 error: incomplete question: missing required html file [incomplete-question]
35
101
  |
36
102
  11 | { "id": "topic/nested", "points": 1 },
37
103
  12 | { "id": "inlineText", "points": 1 },
38
104
  13 | { "id": "noHtml", "points": 1 },
39
- | ^^^^^^ incomplete question: missing required html file
105
+ | ^^^^^^ incomplete question: missing required html file [incomplete-question]
106
+
107
+ questions/deps/info.json:8:48 error: file not found: clientFilesCourse/missing.css [client-files-course-exist]
108
+ |
109
+ 6 | "topic": "T",
110
+ 7 | "dependencies": {
111
+ 8 | "clientFilesCourseStyles": ["exists.css", "missing.css"],
112
+ | ^^^^^^^^^^^ file not found: clientFilesCourse/missing.css [client-files-course-exist]
40
113
 
41
- 3 errors, 2 warnings in 1 file (1 file, 6 questions checked)
114
+ 6 errors, 3 warnings in 3 files (8 files, 6 questions checked)
42
115
  ```
43
116
 
44
117
  ## GitHub Actions
package/dist/cli.js CHANGED
@@ -1,2 +1,8 @@
1
1
  #!/usr/bin/env node
2
- (()=>{"use strict";var e={61(e,t,n){var o,r=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,o,r)}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=o(e),i=0;i<n.length;i++)"default"!==n[i]&&r(t,e,n[i]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.run=async function(e){if(e.includes("--help")||e.includes("-h"))return console.log(_),0;let t="pretty";const n=[];for(let o=0;o<e.length;o++){const r=e[o];let s;if("--format"===r)s=e[++o];else{if(!r.startsWith("--format=")){if(r.startsWith("-"))return console.error((0,a.styleText)("red",`Unknown option: ${r}`)),console.error(_),1;n.push(r);continue}s=r.slice(9)}if("pretty"!==s&&"github"!==s)return console.error((0,a.styleText)("red",`Invalid --format: ${s??"(missing)"}`)),1;t=s}0===n.length&&n.push(".");const o=function(e){const t=new Set,n=process.cwd();for(const o of e){if(O(o)){for(const e of j(o,n))t.add(e);continue}const e=l.resolve(n,o);if(c.existsSync(e))if(c.statSync(e).isDirectory())for(const n of c.globSync(`**/${b}`,{cwd:e}))t.add(l.resolve(e,n));else t.add(e)}return[...t].filter(e=>!v.some(t=>e.includes(t))).sort()}(n);if(0===o.length){console.error((0,a.styleText)("yellow","No infoAssessment.json files found in:"));for(const e of n)console.error((0,a.styleText)("yellow",` ${e}`));return 1}let r=0,s=0,i=0;const u=new Set,f=[],d=[],p=process.cwd();for(const e of o){const n=l.relative(p,e)||e,{errors:o,questions:m}=h(e,n),v=o.filter(e=>"error"===e.severity).length;if(o.length>0)if(i++,r+=v,s+=o.length-v,"github"===t)d.push(...o.map(y));else{const t=c.readFileSync(e,"utf-8");d.push(...o.map(e=>g(e,t)+"\n"))}f.push(o.length>0?(0,a.styleText)(v>0?"red":"yellow",n):(0,a.styleText)("dim",n));for(const e of m){u.add(e.infoJson);const t=" "+(l.relative(p,e.infoJson)||e.infoJson);f.push((0,a.styleText)(e.hasError?"red":"dim",t))}}if("github"===t?(console.log("::group::Checked files"),f.forEach(e=>console.log(e)),console.log("::endgroup::")):f.forEach(e=>console.log(e)),d.length>0){"pretty"===t&&console.log();for(const e of d)console.log(e)}return console.log(function(e,t,n,o,r=0){const s=`${n} ${1===n?"file":"files"}, ${o} ${1===o?"question":"questions"} checked`;if(0===e&&0===r)return(0,a.styleText)("green",`No errors found (${s})`);const i=[];if(e>0){const t=1===e?"error":"errors";i.push((0,a.styleText)("red",`${e} ${t}`))}if(r>0){const e=1===r?"warning":"warnings";i.push((0,a.styleText)("yellow",`${r} ${e}`))}const c=1===t?"file":"files";return`${i.join(", ")} in ${t} ${c} (${s})`}(r,i,o.length,u.size,s)),r>0?1:0};const c=i(n(24)),l=i(n(760)),a=n(975),u=n(633),f=n(157),d=n(195),p=n(634);function h(e,t){const n=c.readFileSync(e,"utf-8"),o=(0,f.findCourseRoot)(e);if(null===o)return{errors:[{file:t,line:1,column:1,endLine:1,endColumn:1,message:"not inside a course (no infoCourse.json found in any parent directory); skipped",severity:"warning"}],questions:[]};const r=(0,u.checkAssessment)(n,o),s=new Set(r.filter(e=>"error"===e.severity).map(e=>n.slice(e.startOffset,e.endOffset))),i=(0,u.referencedQuestionIds)(n).map(e=>({infoJson:(0,p.questionFilePathsFromId)({courseId:o,localId:e}).infoJson,hasError:s.has(e)}));return{errors:r.map(e=>{const o=(0,d.offsetToPosition)(n,e.startOffset),r=(0,d.offsetToPosition)(n,e.endOffset);return{file:t,line:o.line,column:o.column,endLine:r.line,endColumn:r.column,message:e.message,severity:e.severity}}),questions:i}}function g(e,t){const n=t.split("\n"),o=e.line-1,r="warning"===e.severity?"yellow":"red",s=(0,a.styleText)("bold",`${e.file}:${e.line}:${e.column}`)+" "+(0,a.styleText)(r,e.severity)+": "+e.message,i=Math.max(0,o-2),c=Math.min(n.length-1,e.endLine-1),l=String(c+1).length,u=e=>String(e).padStart(l),f=[s];f.push((0,a.styleText)("dim"," ".repeat(l)+" |"));for(let e=i;e<=c;e++)f.push((0,a.styleText)("dim",`${u(e+1)} |`)+" "+n[e]);const d=n[e.endLine-1]||"",[p,h]=e.line===e.endLine?[e.column-1,e.endColumn-1]:[0,d.length],g=" ".repeat(p)+"^".repeat(Math.max(1,h-p))+" "+e.message;return f.push((0,a.styleText)("dim"," ".repeat(l)+" |")+" "+(0,a.styleText)(r,g)),f.join("\n")}function m(e){return e.replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function y(e){const t=[`file=${n=e.file,m(n).replace(/:/g,"%3A").replace(/,/g,"%2C")}`,`line=${e.line}`,`col=${e.column}`,`endLine=${e.endLine}`,`endColumn=${e.endColumn}`,"title=prairielearn-navigator"].join(",");var n;return`::${e.severity} ${t}::${m(e.message)}`}const v=[`${l.sep}node_modules${l.sep}`,`${l.sep}.git${l.sep}`],b="infoAssessment.json";function O(e){return/[*?[\]{}]/.test(e)}function j(e,t){return c.globSync([e,`${e.replace(/\/+$/,"")}/**/${b}`],{cwd:t}).filter(e=>l.basename(e)===b).map(e=>l.resolve(t,e))}const _='Usage: prairielearn-navigator check [options] [paths...]\n\nCheck infoAssessment.json files for missing, incomplete, and duplicate questions.\n\nArguments:\n paths Course directories to search, infoAssessment.json files, or glob\n patterns matching either (default: .). Quote globs so the shell\n does not expand them.\n\nOptions:\n --format <pretty|github> Output format (default: pretty). "github" emits\n GitHub Actions annotations.\n --help Show this help message\n\nExit status is 1 if any errors are found; warnings do not affect it.\n\nExamples:\n prairielearn-navigator check\n prairielearn-navigator check path/to/course\n prairielearn-navigator check "courseInstances/Fa26/**"\n prairielearn-navigator check "**/assessments/hw*/infoAssessment.json"\n prairielearn-navigator check --format github'},633(e,t,n){var o,r=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,o,r)}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=o(e),i=0;i<n.length;i++)"default"!==n[i]&&r(t,e,n[i]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.incompleteQuestionDiagnosticCode=void 0,t.referencedQuestionIds=function(e){return[...new Set(Array.from(e.matchAll(a),e=>e[1]))]},t.checkDuplicateQuestionIds=u,t.checkIncompleteQuestions=f,t.checkAssessment=function(e,t){return[...u(e),...f(e,t)].sort((e,t)=>e.startOffset-t.startOffset)};const c=i(n(24)),l=n(634);t.incompleteQuestionDiagnosticCode="prairielearn-navigator-incomplete";const a=/"id"\s*:\s*"([^"]+)"/g;function u(e){const t=new Map;for(const n of e.matchAll(a)){const e=n[1],o=n.index+n[0].indexOf(e),r=t.get(e)??[];r.push(o),t.set(e,r)}const n=[];for(const[e,o]of t)if(!(o.length<=1))for(const t of o)n.push({startOffset:t,endOffset:t+e.length,message:`Duplicate question ID: "${e}" appears ${o.length} times`,severity:"warning"});return n}function f(e,n){const o=[];for(const r of e.matchAll(a)){const e=r[1],s=(0,l.questionFilePathsFromId)({courseId:n,localId:e}),i=r.index+r[0].length,a={startOffset:i-(e.length+1),endOffset:i-1},u=s.strict();if(!u.dir){o.push({...a,message:`missing question: expected question directory ${s.dir}`,severity:"error",code:t.incompleteQuestionDiagnosticCode,related:[{path:s.infoJson,message:"Expected location of info.json"}]});continue}u.infoJson||o.push({...a,message:"incomplete question: missing required JSON file",severity:"error",code:t.incompleteQuestionDiagnosticCode,related:[{path:s.infoJson,message:"Expected location of info.json"}]});let f=!1;if(u.infoJson)try{const e=JSON.parse(c.readFileSync(u.infoJson,"utf8"));f="string"==typeof e.options?.text}catch(e){console.error(`prairielearn -- error reading question info.json: ${e}`)}u.questionHtml||f||o.push({...a,message:"incomplete question: missing required html file",severity:"error",code:t.incompleteQuestionDiagnosticCode,related:[{path:s.questionHtml,message:"Expected location of question.html"}]})}return o}},157(e,t,n){var o,r=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,o,r)}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=o(e),i=0;i<n.length;i++)"default"!==n[i]&&r(t,e,n[i]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.findCourseRoot=function(e){let t=l.dirname(l.resolve(e));for(;;){if(c.existsSync(l.join(t,"infoCourse.json")))return t;const e=l.dirname(t);if(e===t)return null;t=e}};const c=i(n(24)),l=i(n(760))},195(e,t){t.offsetToPosition=function(e,t){let n=1,o=0;for(let r=0;r<t&&r<e.length;r++)"\n"===e[r]&&(n++,o=r+1);return{line:n,column:t-o+1}}},634(e,t,n){var o,r=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,o,r)}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=o(e),i=0;i<n.length;i++)"default"!==n[i]&&r(t,e,n[i]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.questionFilePathsFromId=function(e){const t=l.join(e.courseId,"questions",e.localId),n=l.join(t,"info.json"),o=l.join(t,"question.html"),r=l.join(t,"server.py");return{dir:t,infoJson:n,questionHtml:o,serverPy:r,strict(){const e={};return c.existsSync(t)&&(e.dir=t),c.existsSync(n)&&(e.infoJson=n),c.existsSync(o)&&(e.questionHtml=o),c.existsSync(r)&&(e.serverPy=r),e}}};const c=i(n(24)),l=i(n(760))},24(e){e.exports=require("node:fs")},760(e){e.exports=require("node:path")},975(e){e.exports=require("node:util")}};const t={};function n(o){const r=t[o];if(void 0!==r)return r.exports;const s=t[o]={exports:{}};return e[o].call(s.exports,s,s.exports,n),s.exports}let o={};(()=>{let e=o;Object.defineProperty(e,"__esModule",{value:!0});const t=n(975),r=n(61);!async function(){const e=process.argv.slice(2),n=e[0];switch(n){case"check":process.exit(await(0,r.run)(e.slice(1)));break;case"--help":case"-h":case void 0:console.log("Usage: prairielearn-navigator <command> [options]\n\nCommands:\n check Check infoAssessment.json files for missing and duplicate questions\n\nRun 'prairielearn-navigator <command> --help' for command-specific help."),process.exit(n?0:1);break;default:console.error((0,t.styleText)("red",`Unknown command: ${n}`)),console.error('Run "prairielearn-navigator --help" for usage.'),process.exit(1)}}()})(),module.exports=o})();
2
+ (()=>{"use strict";var e={3282(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.MissingRefError=t.ValidationError=t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=t.Ajv=void 0;const n=r(4042),s=r(6144),o=r(6653),a=r(2079),i=["/properties"],c="http://json-schema.org/draft-07/schema";class l extends n.default{_addVocabularies(){super._addVocabularies(),s.default.forEach(e=>this.addVocabulary(e)),this.opts.discriminator&&this.addKeyword(o.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;const e=this.opts.$data?this.$dataMetaSchema(a,i):a;this.addMetaSchema(e,c,!1),this.refs["http://json-schema.org/schema"]=c}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(c)?c:void 0)}}t.Ajv=l,e.exports=t=l,e.exports.Ajv=l,Object.defineProperty(t,"__esModule",{value:!0}),t.default=l;var u=r(2586);Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return u.KeywordCxt}});var d=r(9029);Object.defineProperty(t,"_",{enumerable:!0,get:function(){return d._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return d.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return d.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return d.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return d.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return d.CodeGen}});var f=r(3558);Object.defineProperty(t,"ValidationError",{enumerable:!0,get:function(){return f.default}});var p=r(4551);Object.defineProperty(t,"MissingRefError",{enumerable:!0,get:function(){return p.default}})},1520(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.regexpCode=t.getEsmExportName=t.getProperty=t.safeStringify=t.stringify=t.strConcat=t.addCodeArg=t.str=t._=t.nil=t._Code=t.Name=t.IDENTIFIER=t._CodeOrName=void 0;class r{}t._CodeOrName=r,t.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class n extends r{constructor(e){if(super(),!t.IDENTIFIER.test(e))throw new Error("CodeGen: name must be a valid identifier");this.str=e}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}t.Name=n;class s extends r{constructor(e){super(),this._items="string"==typeof e?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;const e=this._items[0];return""===e||'""'===e}get str(){var e;return null!==(e=this._str)&&void 0!==e?e:this._str=this._items.reduce((e,t)=>`${e}${t}`,"")}get names(){var e;return null!==(e=this._names)&&void 0!==e?e:this._names=this._items.reduce((e,t)=>(t instanceof n&&(e[t.str]=(e[t.str]||0)+1),e),{})}}function o(e,...t){const r=[e[0]];let n=0;for(;n<t.length;)c(r,t[n]),r.push(e[++n]);return new s(r)}t._Code=s,t.nil=new s(""),t._=o;const a=new s("+");function i(e,...t){const r=[u(e[0])];let n=0;for(;n<t.length;)r.push(a),c(r,t[n]),r.push(a,u(e[++n]));return function(e){let t=1;for(;t<e.length-1;){if(e[t]===a){const r=l(e[t-1],e[t+1]);if(void 0!==r){e.splice(t-1,3,r);continue}e[t++]="+"}t++}}(r),new s(r)}function c(e,t){var r;t instanceof s?e.push(...t._items):t instanceof n?e.push(t):e.push("number"==typeof(r=t)||"boolean"==typeof r||null===r?r:u(Array.isArray(r)?r.join(","):r))}function l(e,t){if('""'===t)return e;if('""'===e)return t;if("string"==typeof e){if(t instanceof n||'"'!==e[e.length-1])return;return"string"!=typeof t?`${e.slice(0,-1)}${t}"`:'"'===t[0]?e.slice(0,-1)+t.slice(1):void 0}return"string"!=typeof t||'"'!==t[0]||e instanceof n?void 0:`"${e}${t.slice(1)}`}function u(e){return JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}t.str=i,t.addCodeArg=c,t.strConcat=function(e,t){return t.emptyStr()?e:e.emptyStr()?t:i`${e}${t}`},t.stringify=function(e){return new s(u(e))},t.safeStringify=u,t.getProperty=function(e){return"string"==typeof e&&t.IDENTIFIER.test(e)?new s(`.${e}`):o`[${e}]`},t.getEsmExportName=function(e){if("string"==typeof e&&t.IDENTIFIER.test(e))return new s(`${e}`);throw new Error(`CodeGen: invalid export name: ${e}, use explicit $id name mapping`)},t.regexpCode=function(e){return new s(e.toString())}},9029(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.or=t.and=t.not=t.CodeGen=t.operators=t.varKinds=t.ValueScopeName=t.ValueScope=t.Scope=t.Name=t.regexpCode=t.stringify=t.getProperty=t.nil=t.strConcat=t.str=t._=void 0;const n=r(1520),s=r(7845);var o=r(1520);Object.defineProperty(t,"_",{enumerable:!0,get:function(){return o._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return o.str}}),Object.defineProperty(t,"strConcat",{enumerable:!0,get:function(){return o.strConcat}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return o.nil}}),Object.defineProperty(t,"getProperty",{enumerable:!0,get:function(){return o.getProperty}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return o.stringify}}),Object.defineProperty(t,"regexpCode",{enumerable:!0,get:function(){return o.regexpCode}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return o.Name}});var a=r(7845);Object.defineProperty(t,"Scope",{enumerable:!0,get:function(){return a.Scope}}),Object.defineProperty(t,"ValueScope",{enumerable:!0,get:function(){return a.ValueScope}}),Object.defineProperty(t,"ValueScopeName",{enumerable:!0,get:function(){return a.ValueScopeName}}),Object.defineProperty(t,"varKinds",{enumerable:!0,get:function(){return a.varKinds}}),t.operators={GT:new n._Code(">"),GTE:new n._Code(">="),LT:new n._Code("<"),LTE:new n._Code("<="),EQ:new n._Code("==="),NEQ:new n._Code("!=="),NOT:new n._Code("!"),OR:new n._Code("||"),AND:new n._Code("&&"),ADD:new n._Code("+")};class i{optimizeNodes(){return this}optimizeNames(e,t){return this}}class c extends i{constructor(e,t,r){super(),this.varKind=e,this.name=t,this.rhs=r}render({es5:e,_n:t}){const r=e?s.varKinds.var:this.varKind,n=void 0===this.rhs?"":` = ${this.rhs}`;return`${r} ${this.name}${n};`+t}optimizeNames(e,t){if(e[this.name.str])return this.rhs&&(this.rhs=A(this.rhs,e,t)),this}get names(){return this.rhs instanceof n._CodeOrName?this.rhs.names:{}}}class l extends i{constructor(e,t,r){super(),this.lhs=e,this.rhs=t,this.sideEffects=r}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,t){if(!(this.lhs instanceof n.Name)||e[this.lhs.str]||this.sideEffects)return this.rhs=A(this.rhs,e,t),this}get names(){return R(this.lhs instanceof n.Name?{}:{...this.lhs.names},this.rhs)}}class u extends l{constructor(e,t,r,n){super(e,r,n),this.op=t}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}}class d extends i{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}}class f extends i{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:""};`+e}}class p extends i{constructor(e){super(),this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}}class h extends i{constructor(e){super(),this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,t){return this.code=A(this.code,e,t),this}get names(){return this.code instanceof n._CodeOrName?this.code.names:{}}}class m extends i{constructor(e=[]){super(),this.nodes=e}render(e){return this.nodes.reduce((t,r)=>t+r.render(e),"")}optimizeNodes(){const{nodes:e}=this;let t=e.length;for(;t--;){const r=e[t].optimizeNodes();Array.isArray(r)?e.splice(t,1,...r):r?e[t]=r:e.splice(t,1)}return e.length>0?this:void 0}optimizeNames(e,t){const{nodes:r}=this;let n=r.length;for(;n--;){const s=r[n];s.optimizeNames(e,t)||(T(e,s.names),r.splice(n,1))}return r.length>0?this:void 0}get names(){return this.nodes.reduce((e,t)=>P(e,t.names),{})}}class g extends m{render(e){return"{"+e._n+super.render(e)+"}"+e._n}}class y extends m{}class v extends g{}v.kind="else";class $ extends g{constructor(e,t){super(t),this.condition=e}render(e){let t=`if(${this.condition})`+super.render(e);return this.else&&(t+="else "+this.else.render(e)),t}optimizeNodes(){super.optimizeNodes();const e=this.condition;if(!0===e)return this.nodes;let t=this.else;if(t){const e=t.optimizeNodes();t=this.else=Array.isArray(e)?new v(e):e}return t?!1===e?t instanceof $?t:t.nodes:this.nodes.length?this:new $(N(e),t instanceof $?[t]:t.nodes):!1!==e&&this.nodes.length?this:void 0}optimizeNames(e,t){var r;if(this.else=null===(r=this.else)||void 0===r?void 0:r.optimizeNames(e,t),super.optimizeNames(e,t)||this.else)return this.condition=A(this.condition,e,t),this}get names(){const e=super.names;return R(e,this.condition),this.else&&P(e,this.else.names),e}}$.kind="if";class b extends g{}b.kind="for";class _ extends b{constructor(e){super(),this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iteration=A(this.iteration,e,t),this}get names(){return P(super.names,this.iteration.names)}}class w extends b{constructor(e,t,r,n){super(),this.varKind=e,this.name=t,this.from=r,this.to=n}render(e){const t=e.es5?s.varKinds.var:this.varKind,{name:r,from:n,to:o}=this;return`for(${t} ${r}=${n}; ${r}<${o}; ${r}++)`+super.render(e)}get names(){const e=R(super.names,this.from);return R(e,this.to)}}class E extends b{constructor(e,t,r,n){super(),this.loop=e,this.varKind=t,this.name=r,this.iterable=n}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iterable=A(this.iterable,e,t),this}get names(){return P(super.names,this.iterable.names)}}class S extends g{constructor(e,t,r){super(),this.name=e,this.args=t,this.async=r}render(e){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(e)}}S.kind="func";class k extends m{render(e){return"return "+super.render(e)}}k.kind="return";class x extends g{render(e){let t="try"+super.render(e);return this.catch&&(t+=this.catch.render(e)),this.finally&&(t+=this.finally.render(e)),t}optimizeNodes(){var e,t;return super.optimizeNodes(),null===(e=this.catch)||void 0===e||e.optimizeNodes(),null===(t=this.finally)||void 0===t||t.optimizeNodes(),this}optimizeNames(e,t){var r,n;return super.optimizeNames(e,t),null===(r=this.catch)||void 0===r||r.optimizeNames(e,t),null===(n=this.finally)||void 0===n||n.optimizeNames(e,t),this}get names(){const e=super.names;return this.catch&&P(e,this.catch.names),this.finally&&P(e,this.finally.names),e}}class C extends g{constructor(e){super(),this.error=e}render(e){return`catch(${this.error})`+super.render(e)}}C.kind="catch";class O extends g{render(e){return"finally"+super.render(e)}}function P(e,t){for(const r in t)e[r]=(e[r]||0)+(t[r]||0);return e}function R(e,t){return t instanceof n._CodeOrName?P(e,t.names):e}function A(e,t,r){return e instanceof n.Name?o(e):(s=e)instanceof n._Code&&s._items.some(e=>e instanceof n.Name&&1===t[e.str]&&void 0!==r[e.str])?new n._Code(e._items.reduce((e,t)=>(t instanceof n.Name&&(t=o(t)),t instanceof n._Code?e.push(...t._items):e.push(t),e),[])):e;var s;function o(e){const n=r[e.str];return void 0===n||1!==t[e.str]?e:(delete t[e.str],n)}}function T(e,t){for(const r in t)e[r]=(e[r]||0)-(t[r]||0)}function N(e){return"boolean"==typeof e||"number"==typeof e||null===e?!e:n._`!${L(e)}`}O.kind="finally",t.CodeGen=class{constructor(e,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...t,_n:t.lines?"\n":""},this._extScope=e,this._scope=new s.Scope({parent:e}),this._nodes=[new y]}toString(){return this._root.render(this.opts)}name(e){return this._scope.name(e)}scopeName(e){return this._extScope.name(e)}scopeValue(e,t){const r=this._extScope.value(e,t);return(this._values[r.prefix]||(this._values[r.prefix]=new Set)).add(r),r}getScopeValue(e,t){return this._extScope.getValue(e,t)}scopeRefs(e){return this._extScope.scopeRefs(e,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(e,t,r,n){const s=this._scope.toName(t);return void 0!==r&&n&&(this._constants[s.str]=r),this._leafNode(new c(e,s,r)),s}const(e,t,r){return this._def(s.varKinds.const,e,t,r)}let(e,t,r){return this._def(s.varKinds.let,e,t,r)}var(e,t,r){return this._def(s.varKinds.var,e,t,r)}assign(e,t,r){return this._leafNode(new l(e,t,r))}add(e,r){return this._leafNode(new u(e,t.operators.ADD,r))}code(e){return"function"==typeof e?e():e!==n.nil&&this._leafNode(new h(e)),this}object(...e){const t=["{"];for(const[r,s]of e)t.length>1&&t.push(","),t.push(r),(r!==s||this.opts.es5)&&(t.push(":"),(0,n.addCodeArg)(t,s));return t.push("}"),new n._Code(t)}if(e,t,r){if(this._blockNode(new $(e)),t&&r)this.code(t).else().code(r).endIf();else if(t)this.code(t).endIf();else if(r)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(e){return this._elseNode(new $(e))}else(){return this._elseNode(new v)}endIf(){return this._endBlockNode($,v)}_for(e,t){return this._blockNode(e),t&&this.code(t).endFor(),this}for(e,t){return this._for(new _(e),t)}forRange(e,t,r,n,o=(this.opts.es5?s.varKinds.var:s.varKinds.let)){const a=this._scope.toName(e);return this._for(new w(o,a,t,r),()=>n(a))}forOf(e,t,r,o=s.varKinds.const){const a=this._scope.toName(e);if(this.opts.es5){const e=t instanceof n.Name?t:this.var("_arr",t);return this.forRange("_i",0,n._`${e}.length`,t=>{this.var(a,n._`${e}[${t}]`),r(a)})}return this._for(new E("of",o,a,t),()=>r(a))}forIn(e,t,r,o=(this.opts.es5?s.varKinds.var:s.varKinds.const)){if(this.opts.ownProperties)return this.forOf(e,n._`Object.keys(${t})`,r);const a=this._scope.toName(e);return this._for(new E("in",o,a,t),()=>r(a))}endFor(){return this._endBlockNode(b)}label(e){return this._leafNode(new d(e))}break(e){return this._leafNode(new f(e))}return(e){const t=new k;if(this._blockNode(t),this.code(e),1!==t.nodes.length)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(k)}try(e,t,r){if(!t&&!r)throw new Error('CodeGen: "try" without "catch" and "finally"');const n=new x;if(this._blockNode(n),this.code(e),t){const e=this.name("e");this._currNode=n.catch=new C(e),t(e)}return r&&(this._currNode=n.finally=new O,this.code(r)),this._endBlockNode(C,O)}throw(e){return this._leafNode(new p(e))}block(e,t){return this._blockStarts.push(this._nodes.length),e&&this.code(e).endBlock(t),this}endBlock(e){const t=this._blockStarts.pop();if(void 0===t)throw new Error("CodeGen: not in self-balancing block");const r=this._nodes.length-t;if(r<0||void 0!==e&&r!==e)throw new Error(`CodeGen: wrong number of nodes: ${r} vs ${e} expected`);return this._nodes.length=t,this}func(e,t=n.nil,r,s){return this._blockNode(new S(e,t,r)),s&&this.code(s).endFunc(),this}endFunc(){return this._endBlockNode(S)}optimize(e=1){for(;e-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(e){return this._currNode.nodes.push(e),this}_blockNode(e){this._currNode.nodes.push(e),this._nodes.push(e)}_endBlockNode(e,t){const r=this._currNode;if(r instanceof e||t&&r instanceof t)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${t?`${e.kind}/${t.kind}`:e.kind}"`)}_elseNode(e){const t=this._currNode;if(!(t instanceof $))throw new Error('CodeGen: "else" without "if"');return this._currNode=t.else=e,this}get _root(){return this._nodes[0]}get _currNode(){const e=this._nodes;return e[e.length-1]}set _currNode(e){const t=this._nodes;t[t.length-1]=e}},t.not=N;const j=D(t.operators.AND);t.and=function(...e){return e.reduce(j)};const I=D(t.operators.OR);function D(e){return(t,r)=>t===n.nil?r:r===n.nil?t:n._`${L(t)} ${e} ${L(r)}`}function L(e){return e instanceof n.Name?e:n._`(${e})`}t.or=function(...e){return e.reduce(I)}},7845(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.ValueScope=t.ValueScopeName=t.Scope=t.varKinds=t.UsedValueState=void 0;const n=r(1520);class s extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`),this.value=e.value}}var o;!function(e){e[e.Started=0]="Started",e[e.Completed=1]="Completed"}(o||(t.UsedValueState=o={})),t.varKinds={const:new n.Name("const"),let:new n.Name("let"),var:new n.Name("var")};class a{constructor({prefixes:e,parent:t}={}){this._names={},this._prefixes=e,this._parent=t}toName(e){return e instanceof n.Name?e:this.name(e)}name(e){return new n.Name(this._newName(e))}_newName(e){return`${e}${(this._names[e]||this._nameGroup(e)).index++}`}_nameGroup(e){var t,r;if((null===(r=null===(t=this._parent)||void 0===t?void 0:t._prefixes)||void 0===r?void 0:r.has(e))||this._prefixes&&!this._prefixes.has(e))throw new Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}}t.Scope=a;class i extends n.Name{constructor(e,t){super(t),this.prefix=e}setValue(e,{property:t,itemIndex:r}){this.value=e,this.scopePath=n._`.${new n.Name(t)}[${r}]`}}t.ValueScopeName=i;const c=n._`\n`;t.ValueScope=class extends a{constructor(e){super(e),this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?c:n.nil}}get(){return this._scope}name(e){return new i(e,this._newName(e))}value(e,t){var r;if(void 0===t.ref)throw new Error("CodeGen: ref must be passed in value");const n=this.toName(e),{prefix:s}=n,o=null!==(r=t.key)&&void 0!==r?r:t.ref;let a=this._values[s];if(a){const e=a.get(o);if(e)return e}else a=this._values[s]=new Map;a.set(o,n);const i=this._scope[s]||(this._scope[s]=[]),c=i.length;return i[c]=t.ref,n.setValue(t,{property:s,itemIndex:c}),n}getValue(e,t){const r=this._values[e];if(r)return r.get(t)}scopeRefs(e,t=this._values){return this._reduceValues(t,t=>{if(void 0===t.scopePath)throw new Error(`CodeGen: name "${t}" has no value`);return n._`${e}${t.scopePath}`})}scopeCode(e=this._values,t,r){return this._reduceValues(e,e=>{if(void 0===e.value)throw new Error(`CodeGen: name "${e}" has no value`);return e.value.code},t,r)}_reduceValues(e,r,a={},i){let c=n.nil;for(const l in e){const u=e[l];if(!u)continue;const d=a[l]=a[l]||new Map;u.forEach(e=>{if(d.has(e))return;d.set(e,o.Started);let a=r(e);if(a){const r=this.opts.es5?t.varKinds.var:t.varKinds.const;c=n._`${c}${r} ${e} = ${a};${this.opts._n}`}else{if(!(a=null==i?void 0:i(e)))throw new s(e);c=n._`${c}${a}${this.opts._n}`}d.set(e,o.Completed)})}return c}}},8708(e,t,r){t.extendErrors=t.resetErrorsCount=t.reportExtraError=t.reportError=t.keyword$DataError=t.y=void 0;const n=r(9029),s=r(4227),o=r(2023);function a(e,t){const r=e.const("err",t);e.if(n._`${o.default.vErrors} === null`,()=>e.assign(o.default.vErrors,n._`[${r}]`),n._`${o.default.vErrors}.push(${r})`),e.code(n._`${o.default.errors}++`)}function i(e,t){const{gen:r,validateName:s,schemaEnv:o}=e;o.$async?r.throw(n._`new ${e.ValidationError}(${t})`):(r.assign(n._`${s}.errors`,t),r.return(!1))}t.y={message:({keyword:e})=>n.str`must pass "${e}" keyword validation`},t.keyword$DataError={message:({keyword:e,schemaType:t})=>t?n.str`"${e}" keyword must be ${t} ($data)`:n.str`"${e}" keyword is invalid ($data)`},t.reportError=function(e,r=t.y,s,o){const{it:c}=e,{gen:u,compositeRule:d,allErrors:f}=c,p=l(e,r,s);(null!=o?o:d||f)?a(u,p):i(c,n._`[${p}]`)},t.reportExtraError=function(e,r=t.y,n){const{it:s}=e,{gen:c,compositeRule:u,allErrors:d}=s;a(c,l(e,r,n)),u||d||i(s,o.default.vErrors)},t.resetErrorsCount=function(e,t){e.assign(o.default.errors,t),e.if(n._`${o.default.vErrors} !== null`,()=>e.if(t,()=>e.assign(n._`${o.default.vErrors}.length`,t),()=>e.assign(o.default.vErrors,null)))},t.extendErrors=function({gen:e,keyword:t,schemaValue:r,data:s,errsCount:a,it:i}){if(void 0===a)throw new Error("ajv implementation error");const c=e.name("err");e.forRange("i",a,o.default.errors,a=>{e.const(c,n._`${o.default.vErrors}[${a}]`),e.if(n._`${c}.instancePath === undefined`,()=>e.assign(n._`${c}.instancePath`,(0,n.strConcat)(o.default.instancePath,i.errorPath))),e.assign(n._`${c}.schemaPath`,n.str`${i.errSchemaPath}/${t}`),i.opts.verbose&&(e.assign(n._`${c}.schema`,r),e.assign(n._`${c}.data`,s))})};const c={keyword:new n.Name("keyword"),schemaPath:new n.Name("schemaPath"),params:new n.Name("params"),propertyName:new n.Name("propertyName"),message:new n.Name("message"),schema:new n.Name("schema"),parentSchema:new n.Name("parentSchema")};function l(e,t,r){const{createErrors:s}=e.it;return!1===s?n._`{}`:function(e,t,r={}){const{gen:s,it:a}=e,i=[u(a,r),d(e,r)];return function(e,{params:t,message:r},s){const{keyword:a,data:i,schemaValue:l,it:u}=e,{opts:d,propertyName:f,topSchemaRef:p,schemaPath:h}=u;s.push([c.keyword,a],[c.params,"function"==typeof t?t(e):t||n._`{}`]),d.messages&&s.push([c.message,"function"==typeof r?r(e):r]),d.verbose&&s.push([c.schema,l],[c.parentSchema,n._`${p}${h}`],[o.default.data,i]),f&&s.push([c.propertyName,f])}(e,t,i),s.object(...i)}(e,t,r)}function u({errorPath:e},{instancePath:t}){const r=t?n.str`${e}${(0,s.getErrorPath)(t,s.Type.Str)}`:e;return[o.default.instancePath,(0,n.strConcat)(o.default.instancePath,r)]}function d({keyword:e,it:{errSchemaPath:t}},{schemaPath:r,parentSchema:o}){let a=o?t:n.str`${t}/${e}`;return r&&(a=n.str`${a}${(0,s.getErrorPath)(r,s.Type.Str)}`),[c.schemaPath,a]}},3835(e,t,r){t.resolveSchema=t.resolveRef=t.compileSchema=t.SchemaEnv=void 0;const n=r(9029),s=r(3558),o=r(2023),a=r(6939),i=r(4227),c=r(2586);class l{constructor(e){var t;let r;this.refs={},this.dynamicAnchors={},"object"==typeof e.schema&&(r=e.schema),this.schema=e.schema,this.schemaId=e.schemaId,this.root=e.root||this,this.baseId=null!==(t=e.baseId)&&void 0!==t?t:(0,a.normalizeId)(null==r?void 0:r[e.schemaId||"$id"]),this.schemaPath=e.schemaPath,this.localRefs=e.localRefs,this.meta=e.meta,this.$async=null==r?void 0:r.$async,this.refs={}}}function u(e){const t=f.call(this,e);if(t)return t;const r=(0,a.getFullPath)(this.opts.uriResolver,e.root.baseId),{es5:i,lines:l}=this.opts.code,{ownProperties:u}=this.opts,d=new n.CodeGen(this.scope,{es5:i,lines:l,ownProperties:u});let p;e.$async&&(p=d.scopeValue("Error",{ref:s.default,code:n._`require("ajv/dist/runtime/validation_error").default`}));const h=d.scopeName("validate");e.validateName=h;const m={gen:d,allErrors:this.opts.allErrors,data:o.default.data,parentData:o.default.parentData,parentDataProperty:o.default.parentDataProperty,dataNames:[o.default.data],dataPathArr:[n.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:d.scopeValue("schema",!0===this.opts.code.source?{ref:e.schema,code:(0,n.stringify)(e.schema)}:{ref:e.schema}),validateName:h,ValidationError:p,schema:e.schema,schemaEnv:e,rootId:r,baseId:e.baseId||r,schemaPath:n.nil,errSchemaPath:e.schemaPath||(this.opts.jtd?"":"#"),errorPath:n._`""`,opts:this.opts,self:this};let g;try{this._compilations.add(e),(0,c.validateFunctionCode)(m),d.optimize(this.opts.code.optimize);const t=d.toString();g=`${d.scopeRefs(o.default.scope)}return ${t}`,this.opts.code.process&&(g=this.opts.code.process(g,e));const r=new Function(`${o.default.self}`,`${o.default.scope}`,g)(this,this.scope.get());if(this.scope.value(h,{ref:r}),r.errors=null,r.schema=e.schema,r.schemaEnv=e,e.$async&&(r.$async=!0),!0===this.opts.code.source&&(r.source={validateName:h,validateCode:t,scopeValues:d._values}),this.opts.unevaluated){const{props:e,items:t}=m;r.evaluated={props:e instanceof n.Name?void 0:e,items:t instanceof n.Name?void 0:t,dynamicProps:e instanceof n.Name,dynamicItems:t instanceof n.Name},r.source&&(r.source.evaluated=(0,n.stringify)(r.evaluated))}return e.validate=r,e}catch(t){throw delete e.validate,delete e.validateName,g&&this.logger.error("Error compiling schema, function code:",g),t}finally{this._compilations.delete(e)}}function d(e){return(0,a.inlineRef)(e.schema,this.opts.inlineRefs)?e.schema:e.validate?e:u.call(this,e)}function f(e){for(const t of this._compilations)if(p(t,e))return t}function p(e,t){return e.schema===t.schema&&e.root===t.root&&e.baseId===t.baseId}function h(e,t){let r;for(;"string"==typeof(r=this.refs[t]);)t=r;return r||this.schemas[t]||m.call(this,e,t)}function m(e,t){const r=this.opts.uriResolver.parse(t),n=(0,a._getFullPath)(this.opts.uriResolver,r);let s=(0,a.getFullPath)(this.opts.uriResolver,e.baseId,void 0);if(Object.keys(e.schema).length>0&&n===s)return y.call(this,r,e);const o=(0,a.normalizeId)(n),i=this.refs[o]||this.schemas[o];if("string"==typeof i){const t=m.call(this,e,i);if("object"!=typeof(null==t?void 0:t.schema))return;return y.call(this,r,t)}if("object"==typeof(null==i?void 0:i.schema)){if(i.validate||u.call(this,i),o===(0,a.normalizeId)(t)){const{schema:t}=i,{schemaId:r}=this.opts,n=t[r];return n&&(s=(0,a.resolveUrl)(this.opts.uriResolver,s,n)),new l({schema:t,schemaId:r,root:e,baseId:s})}return y.call(this,r,i)}}t.SchemaEnv=l,t.compileSchema=u,t.resolveRef=function(e,t,r){var n;r=(0,a.resolveUrl)(this.opts.uriResolver,t,r);const s=e.refs[r];if(s)return s;let o=h.call(this,e,r);if(void 0===o){const s=null===(n=e.localRefs)||void 0===n?void 0:n[r],{schemaId:a}=this.opts;s&&(o=new l({schema:s,schemaId:a,root:e,baseId:t}))}return void 0!==o?e.refs[r]=d.call(this,o):void 0},t.resolveSchema=m;const g=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function y(e,{baseId:t,schema:r,root:n}){var s;if("/"!==(null===(s=e.fragment)||void 0===s?void 0:s[0]))return;for(const n of e.fragment.slice(1).split("/")){if("boolean"==typeof r)return;const e=r[(0,i.unescapeFragment)(n)];if(void 0===e)return;const s="object"==typeof(r=e)&&r[this.opts.schemaId];!g.has(n)&&s&&(t=(0,a.resolveUrl)(this.opts.uriResolver,t,s))}let o;if("boolean"!=typeof r&&r.$ref&&!(0,i.schemaHasRulesButRef)(r,this.RULES)){const e=(0,a.resolveUrl)(this.opts.uriResolver,t,r.$ref);o=m.call(this,n,e)}const{schemaId:c}=this.opts;return o=o||new l({schema:r,schemaId:c,root:n,baseId:t}),o.schema!==o.root.schema?o:void 0}},2023(e,t,r){const n=r(9029),s={data:new n.Name("data"),valCxt:new n.Name("valCxt"),instancePath:new n.Name("instancePath"),parentData:new n.Name("parentData"),parentDataProperty:new n.Name("parentDataProperty"),rootData:new n.Name("rootData"),dynamicAnchors:new n.Name("dynamicAnchors"),vErrors:new n.Name("vErrors"),errors:new n.Name("errors"),this:new n.Name("this"),self:new n.Name("self"),scope:new n.Name("scope"),json:new n.Name("json"),jsonPos:new n.Name("jsonPos"),jsonLen:new n.Name("jsonLen"),jsonPart:new n.Name("jsonPart")};t.default=s},4551(e,t,r){Object.defineProperty(t,"__esModule",{value:!0});const n=r(6939);class s extends Error{constructor(e,t,r,s){super(s||`can't resolve reference ${r} from id ${t}`),this.missingRef=(0,n.resolveUrl)(e,t,r),this.missingSchema=(0,n.normalizeId)((0,n.getFullPath)(e,this.missingRef))}}t.default=s},6939(e,t,r){t.getSchemaRefs=t.resolveUrl=t.normalizeId=t._getFullPath=t.getFullPath=t.inlineRef=void 0;const n=r(4227),s=r(2017),o=r(7106),a=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);t.inlineRef=function(e,t=!0){return"boolean"==typeof e||(!0===t?!c(e):!!t&&l(e)<=t)};const i=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function c(e){for(const t in e){if(i.has(t))return!0;const r=e[t];if(Array.isArray(r)&&r.some(c))return!0;if("object"==typeof r&&c(r))return!0}return!1}function l(e){let t=0;for(const r in e){if("$ref"===r)return 1/0;if(t++,!a.has(r)&&("object"==typeof e[r]&&(0,n.eachItem)(e[r],e=>t+=l(e)),t===1/0))return 1/0}return t}function u(e,t="",r){!1!==r&&(t=p(t));const n=e.parse(t);return d(e,n)}function d(e,t){return e.serialize(t).split("#")[0]+"#"}t.getFullPath=u,t._getFullPath=d;const f=/#\/?$/;function p(e){return e?e.replace(f,""):""}t.normalizeId=p,t.resolveUrl=function(e,t,r){return r=p(r),e.resolve(t,r)};const h=/^[a-z_][-a-z0-9._]*$/i;t.getSchemaRefs=function(e,t){if("boolean"==typeof e)return{};const{schemaId:r,uriResolver:n}=this.opts,a=p(e[r]||t),i={"":a},c=u(n,a,!1),l={},d=new Set;return o(e,{allKeys:!0},(e,t,n,s)=>{if(void 0===s)return;const o=c+t;let a=i[s];function u(t){const r=this.opts.uriResolver.resolve;if(t=p(a?r(a,t):t),d.has(t))throw m(t);d.add(t);let n=this.refs[t];return"string"==typeof n&&(n=this.refs[n]),"object"==typeof n?f(e,n.schema,t):t!==p(o)&&("#"===t[0]?(f(e,l[t],t),l[t]=e):this.refs[t]=o),t}function g(e){if("string"==typeof e){if(!h.test(e))throw new Error(`invalid anchor "${e}"`);u.call(this,`#${e}`)}}"string"==typeof e[r]&&(a=u.call(this,e[r])),g.call(this,e.$anchor),g.call(this,e.$dynamicAnchor),i[t]=a}),l;function f(e,t,r){if(void 0!==t&&!s(e,t))throw m(r)}function m(e){return new Error(`reference "${e}" resolves to more than one schema`)}}},396(e,t){t.getRules=t.isJSONType=void 0;const r=new Set(["string","number","integer","boolean","null","object","array"]);t.isJSONType=function(e){return"string"==typeof e&&r.has(e)},t.getRules=function(){const e={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...e,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}},4227(e,t,r){t.checkStrictMode=t.getErrorPath=t.Type=t.useFunc=t.evaluatedPropsToName=t.mergeEvaluated=t.eachItem=t.unescapeJsonPointer=t.escapeFragment=t.unescapeFragment=t.schemaRefOrVal=t.schemaHasRulesButRef=t.checkUnknownRules=t.alwaysValidSchema=t.toHash=void 0;const n=r(9029),s=r(1520);function o(e,t=e.schema){const{opts:r,self:n}=e;if(!r.strictSchema)return;if("boolean"==typeof t)return;const s=n.RULES.keywords;for(const r in t)s[r]||p(e,`unknown keyword: "${r}"`)}function a(e){return"number"==typeof e?`${e}`:e.replace(/~/g,"~0").replace(/\//g,"~1")}function i(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function c({mergeNames:e,mergeToName:t,mergeValues:r,resultToName:s}){return(o,a,i,c)=>{const l=void 0===i?a:i instanceof n.Name?(a instanceof n.Name?e(o,a,i):t(o,a,i),i):a instanceof n.Name?(t(o,i,a),a):r(a,i);return c!==n.Name||l instanceof n.Name?l:s(o,l)}}function l(e,t){if(!0===t)return e.var("props",!0);const r=e.var("props",n._`{}`);return void 0!==t&&u(e,r,t),r}function u(e,t,r){Object.keys(r).forEach(r=>e.assign(n._`${t}${(0,n.getProperty)(r)}`,!0))}t.toHash=function(e){const t={};for(const r of e)t[r]=!0;return t},t.alwaysValidSchema=function(e,t){return"boolean"==typeof t?t:0===Object.keys(t).length||(o(e,t),!function(e,t){if("boolean"==typeof e)return!e;for(const r in e)if(t[r])return!0;return!1}(t,e.self.RULES.all))},t.checkUnknownRules=o,t.schemaHasRulesButRef=function(e,t){if("boolean"==typeof e)return!e;for(const r in e)if("$ref"!==r&&t.all[r])return!0;return!1},t.schemaRefOrVal=function({topSchemaRef:e,schemaPath:t},r,s,o){if(!o){if("number"==typeof r||"boolean"==typeof r)return r;if("string"==typeof r)return n._`${r}`}return n._`${e}${t}${(0,n.getProperty)(s)}`},t.unescapeFragment=function(e){return i(decodeURIComponent(e))},t.escapeFragment=function(e){return encodeURIComponent(a(e))},t.unescapeJsonPointer=i,t.eachItem=function(e,t){if(Array.isArray(e))for(const r of e)t(r);else t(e)},t.mergeEvaluated={props:c({mergeNames:(e,t,r)=>e.if(n._`${r} !== true && ${t} !== undefined`,()=>{e.if(n._`${t} === true`,()=>e.assign(r,!0),()=>e.assign(r,n._`${r} || {}`).code(n._`Object.assign(${r}, ${t})`))}),mergeToName:(e,t,r)=>e.if(n._`${r} !== true`,()=>{!0===t?e.assign(r,!0):(e.assign(r,n._`${r} || {}`),u(e,r,t))}),mergeValues:(e,t)=>!0===e||{...e,...t},resultToName:l}),items:c({mergeNames:(e,t,r)=>e.if(n._`${r} !== true && ${t} !== undefined`,()=>e.assign(r,n._`${t} === true ? true : ${r} > ${t} ? ${r} : ${t}`)),mergeToName:(e,t,r)=>e.if(n._`${r} !== true`,()=>e.assign(r,!0===t||n._`${r} > ${t} ? ${r} : ${t}`)),mergeValues:(e,t)=>!0===e||Math.max(e,t),resultToName:(e,t)=>e.var("items",t)})},t.evaluatedPropsToName=l;const d={};var f;function p(e,t,r=e.opts.strictSchema){if(r){if(t=`strict mode: ${t}`,!0===r)throw new Error(t);e.self.logger.warn(t)}}t.useFunc=function(e,t){return e.scopeValue("func",{ref:t,code:d[t.code]||(d[t.code]=new s._Code(t.code))})},function(e){e[e.Num=0]="Num",e[e.Str=1]="Str"}(f||(t.Type=f={})),t.getErrorPath=function(e,t,r){if(e instanceof n.Name){const s=t===f.Num;return r?s?n._`"[" + ${e} + "]"`:n._`"['" + ${e} + "']"`:s?n._`"/" + ${e}`:n._`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return r?(0,n.getProperty)(e).toString():"/"+a(e)},t.checkStrictMode=p},7887(e,t){function r(e,t){return t.rules.some(t=>n(e,t))}function n(e,t){var r;return void 0!==e[t.keyword]||(null===(r=t.definition.implements)||void 0===r?void 0:r.some(t=>void 0!==e[t]))}t.shouldUseRule=t.shouldUseGroup=t.schemaHasRulesForType=void 0,t.schemaHasRulesForType=function({schema:e,self:t},n){const s=t.RULES.types[n];return s&&!0!==s&&r(e,s)},t.shouldUseGroup=r,t.shouldUseRule=n},8727(e,t,r){t.boolOrEmptySchema=t.topBoolOrEmptySchema=void 0;const n=r(8708),s=r(9029),o=r(2023),a={message:"boolean schema is false"};function i(e,t){const{gen:r,data:s}=e,o={gen:r,keyword:"false schema",data:s,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};(0,n.reportError)(o,a,void 0,t)}t.topBoolOrEmptySchema=function(e){const{gen:t,schema:r,validateName:n}=e;!1===r?i(e,!1):"object"==typeof r&&!0===r.$async?t.return(o.default.data):(t.assign(s._`${n}.errors`,null),t.return(!0))},t.boolOrEmptySchema=function(e,t){const{gen:r,schema:n}=e;!1===n?(r.var(t,!1),i(e)):r.var(t,!0)}},208(e,t,r){t.reportTypeError=t.checkDataTypes=t.checkDataType=t.coerceAndCheckDataType=t.getJSONTypes=t.getSchemaTypes=t.DataType=void 0;const n=r(396),s=r(7887),o=r(8708),a=r(9029),i=r(4227);var c;function l(e){const t=Array.isArray(e)?e:e?[e]:[];if(t.every(n.isJSONType))return t;throw new Error("type must be JSONType or JSONType[]: "+t.join(","))}!function(e){e[e.Correct=0]="Correct",e[e.Wrong=1]="Wrong"}(c||(t.DataType=c={})),t.getSchemaTypes=function(e){const t=l(e.type);if(t.includes("null")){if(!1===e.nullable)throw new Error("type: null contradicts nullable: false")}else{if(!t.length&&void 0!==e.nullable)throw new Error('"nullable" cannot be used without "type"');!0===e.nullable&&t.push("null")}return t},t.getJSONTypes=l,t.coerceAndCheckDataType=function(e,t){const{gen:r,data:n,opts:o}=e,i=function(e,t){return t?e.filter(e=>u.has(e)||"array"===t&&"array"===e):[]}(t,o.coerceTypes),l=t.length>0&&!(0===i.length&&1===t.length&&(0,s.schemaHasRulesForType)(e,t[0]));if(l){const s=f(t,n,o.strictNumbers,c.Wrong);r.if(s,()=>{i.length?function(e,t,r){const{gen:n,data:s,opts:o}=e,i=n.let("dataType",a._`typeof ${s}`),c=n.let("coerced",a._`undefined`);"array"===o.coerceTypes&&n.if(a._`${i} == 'object' && Array.isArray(${s}) && ${s}.length == 1`,()=>n.assign(s,a._`${s}[0]`).assign(i,a._`typeof ${s}`).if(f(t,s,o.strictNumbers),()=>n.assign(c,s))),n.if(a._`${c} !== undefined`);for(const e of r)(u.has(e)||"array"===e&&"array"===o.coerceTypes)&&l(e);function l(e){switch(e){case"string":return void n.elseIf(a._`${i} == "number" || ${i} == "boolean"`).assign(c,a._`"" + ${s}`).elseIf(a._`${s} === null`).assign(c,a._`""`);case"number":return void n.elseIf(a._`${i} == "boolean" || ${s} === null
3
+ || (${i} == "string" && ${s} && ${s} == +${s})`).assign(c,a._`+${s}`);case"integer":return void n.elseIf(a._`${i} === "boolean" || ${s} === null
4
+ || (${i} === "string" && ${s} && ${s} == +${s} && !(${s} % 1))`).assign(c,a._`+${s}`);case"boolean":return void n.elseIf(a._`${s} === "false" || ${s} === 0 || ${s} === null`).assign(c,!1).elseIf(a._`${s} === "true" || ${s} === 1`).assign(c,!0);case"null":return n.elseIf(a._`${s} === "" || ${s} === 0 || ${s} === false`),void n.assign(c,null);case"array":n.elseIf(a._`${i} === "string" || ${i} === "number"
5
+ || ${i} === "boolean" || ${s} === null`).assign(c,a._`[${s}]`)}}n.else(),h(e),n.endIf(),n.if(a._`${c} !== undefined`,()=>{n.assign(s,c),function({gen:e,parentData:t,parentDataProperty:r},n){e.if(a._`${t} !== undefined`,()=>e.assign(a._`${t}[${r}]`,n))}(e,c)})}(e,t,i):h(e)})}return l};const u=new Set(["string","number","integer","boolean","null"]);function d(e,t,r,n=c.Correct){const s=n===c.Correct?a.operators.EQ:a.operators.NEQ;let o;switch(e){case"null":return a._`${t} ${s} null`;case"array":o=a._`Array.isArray(${t})`;break;case"object":o=a._`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case"integer":o=i(a._`!(${t} % 1) && !isNaN(${t})`);break;case"number":o=i();break;default:return a._`typeof ${t} ${s} ${e}`}return n===c.Correct?o:(0,a.not)(o);function i(e=a.nil){return(0,a.and)(a._`typeof ${t} == "number"`,e,r?a._`isFinite(${t})`:a.nil)}}function f(e,t,r,n){if(1===e.length)return d(e[0],t,r,n);let s;const o=(0,i.toHash)(e);if(o.array&&o.object){const e=a._`typeof ${t} != "object"`;s=o.null?e:a._`!${t} || ${e}`,delete o.null,delete o.array,delete o.object}else s=a.nil;o.number&&delete o.integer;for(const e in o)s=(0,a.and)(s,d(e,t,r,n));return s}t.checkDataType=d,t.checkDataTypes=f;const p={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>"string"==typeof e?a._`{type: ${e}}`:a._`{type: ${t}}`};function h(e){const t=function(e){const{gen:t,data:r,schema:n}=e,s=(0,i.schemaRefOrVal)(e,n,"type");return{gen:t,keyword:"type",data:r,schema:n.type,schemaCode:s,schemaValue:s,parentSchema:n,params:{},it:e}}(e);(0,o.reportError)(t,p)}t.reportTypeError=h},7870(e,t,r){t.assignDefaults=void 0;const n=r(9029),s=r(4227);function o(e,t,r){const{gen:o,compositeRule:a,data:i,opts:c}=e;if(void 0===r)return;const l=n._`${i}${(0,n.getProperty)(t)}`;if(a)return void(0,s.checkStrictMode)(e,`default is ignored for: ${l}`);let u=n._`${l} === undefined`;"empty"===c.useDefaults&&(u=n._`${u} || ${l} === null || ${l} === ""`),o.if(u,n._`${l} = ${(0,n.stringify)(r)}`)}t.assignDefaults=function(e,t){const{properties:r,items:n}=e.schema;if("object"===t&&r)for(const t in r)o(e,t,r[t].default);else"array"===t&&Array.isArray(n)&&n.forEach((t,r)=>o(e,r,t.default))}},2586(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.getData=t.KeywordCxt=t.validateFunctionCode=void 0;const n=r(8727),s=r(208),o=r(7887),a=r(208),i=r(7870),c=r(3673),l=r(4495),u=r(9029),d=r(2023),f=r(6939),p=r(4227),h=r(8708);function m({gen:e,validateName:t,schema:r,schemaEnv:n,opts:s},o){s.code.es5?e.func(t,u._`${d.default.data}, ${d.default.valCxt}`,n.$async,()=>{e.code(u._`"use strict"; ${g(r,s)}`),function(e,t){e.if(d.default.valCxt,()=>{e.var(d.default.instancePath,u._`${d.default.valCxt}.${d.default.instancePath}`),e.var(d.default.parentData,u._`${d.default.valCxt}.${d.default.parentData}`),e.var(d.default.parentDataProperty,u._`${d.default.valCxt}.${d.default.parentDataProperty}`),e.var(d.default.rootData,u._`${d.default.valCxt}.${d.default.rootData}`),t.dynamicRef&&e.var(d.default.dynamicAnchors,u._`${d.default.valCxt}.${d.default.dynamicAnchors}`)},()=>{e.var(d.default.instancePath,u._`""`),e.var(d.default.parentData,u._`undefined`),e.var(d.default.parentDataProperty,u._`undefined`),e.var(d.default.rootData,d.default.data),t.dynamicRef&&e.var(d.default.dynamicAnchors,u._`{}`)})}(e,s),e.code(o)}):e.func(t,u._`${d.default.data}, ${function(e){return u._`{${d.default.instancePath}="", ${d.default.parentData}, ${d.default.parentDataProperty}, ${d.default.rootData}=${d.default.data}${e.dynamicRef?u._`, ${d.default.dynamicAnchors}={}`:u.nil}}={}`}(s)}`,n.$async,()=>e.code(g(r,s)).code(o))}function g(e,t){const r="object"==typeof e&&e[t.schemaId];return r&&(t.code.source||t.code.process)?u._`/*# sourceURL=${r} */`:u.nil}function y({schema:e,self:t}){if("boolean"==typeof e)return!e;for(const r in e)if(t.RULES.all[r])return!0;return!1}function v(e){return"boolean"!=typeof e.schema}function $(e){(0,p.checkUnknownRules)(e),function(e){const{schema:t,errSchemaPath:r,opts:n,self:s}=e;t.$ref&&n.ignoreKeywordsWithRef&&(0,p.schemaHasRulesButRef)(t,s.RULES)&&s.logger.warn(`$ref: keywords ignored in schema at path "${r}"`)}(e)}function b(e,t){if(e.opts.jtd)return w(e,[],!1,t);const r=(0,s.getSchemaTypes)(e.schema);w(e,r,!(0,s.coerceAndCheckDataType)(e,r),t)}function _({gen:e,schemaEnv:t,schema:r,errSchemaPath:n,opts:s}){const o=r.$comment;if(!0===s.$comment)e.code(u._`${d.default.self}.logger.log(${o})`);else if("function"==typeof s.$comment){const r=u.str`${n}/$comment`,s=e.scopeValue("root",{ref:t.root});e.code(u._`${d.default.self}.opts.$comment(${o}, ${r}, ${s}.schema)`)}}function w(e,t,r,n){const{gen:s,schema:i,data:c,allErrors:l,opts:f,self:h}=e,{RULES:m}=h;function g(p){(0,o.shouldUseGroup)(i,p)&&(p.type?(s.if((0,a.checkDataType)(p.type,c,f.strictNumbers)),E(e,p),1===t.length&&t[0]===p.type&&r&&(s.else(),(0,a.reportTypeError)(e)),s.endIf()):E(e,p),l||s.if(u._`${d.default.errors} === ${n||0}`))}!i.$ref||!f.ignoreKeywordsWithRef&&(0,p.schemaHasRulesButRef)(i,m)?(f.jtd||function(e,t){!e.schemaEnv.meta&&e.opts.strictTypes&&(function(e,t){t.length&&(e.dataTypes.length?(t.forEach(t=>{S(e.dataTypes,t)||k(e,`type "${t}" not allowed by context "${e.dataTypes.join(",")}"`)}),function(e,t){const r=[];for(const n of e.dataTypes)S(t,n)?r.push(n):t.includes("integer")&&"number"===n&&r.push("integer");e.dataTypes=r}(e,t)):e.dataTypes=t)}(e,t),e.opts.allowUnionTypes||function(e,t){t.length>1&&(2!==t.length||!t.includes("null"))&&k(e,"use allowUnionTypes to allow union type keyword")}(e,t),function(e,t){const r=e.self.RULES.all;for(const n in r){const s=r[n];if("object"==typeof s&&(0,o.shouldUseRule)(e.schema,s)){const{type:r}=s.definition;r.length&&!r.some(e=>{return n=e,(r=t).includes(n)||"number"===n&&r.includes("integer");var r,n})&&k(e,`missing type "${r.join(",")}" for keyword "${n}"`)}}}(e,e.dataTypes))}(e,t),s.block(()=>{for(const e of m.rules)g(e);g(m.post)})):s.block(()=>C(e,"$ref",m.all.$ref.definition))}function E(e,t){const{gen:r,schema:n,opts:{useDefaults:s}}=e;s&&(0,i.assignDefaults)(e,t.type),r.block(()=>{for(const r of t.rules)(0,o.shouldUseRule)(n,r)&&C(e,r.keyword,r.definition,t.type)})}function S(e,t){return e.includes(t)||"integer"===t&&e.includes("number")}function k(e,t){t+=` at "${e.schemaEnv.baseId+e.errSchemaPath}" (strictTypes)`,(0,p.checkStrictMode)(e,t,e.opts.strictTypes)}t.validateFunctionCode=function(e){v(e)&&($(e),y(e))?function(e){const{schema:t,opts:r,gen:n}=e;m(e,()=>{r.$comment&&t.$comment&&_(e),function(e){const{schema:t,opts:r}=e;void 0!==t.default&&r.useDefaults&&r.strictSchema&&(0,p.checkStrictMode)(e,"default is ignored in the schema root")}(e),n.let(d.default.vErrors,null),n.let(d.default.errors,0),r.unevaluated&&function(e){const{gen:t,validateName:r}=e;e.evaluated=t.const("evaluated",u._`${r}.evaluated`),t.if(u._`${e.evaluated}.dynamicProps`,()=>t.assign(u._`${e.evaluated}.props`,u._`undefined`)),t.if(u._`${e.evaluated}.dynamicItems`,()=>t.assign(u._`${e.evaluated}.items`,u._`undefined`))}(e),b(e),function(e){const{gen:t,schemaEnv:r,validateName:n,ValidationError:s,opts:o}=e;r.$async?t.if(u._`${d.default.errors} === 0`,()=>t.return(d.default.data),()=>t.throw(u._`new ${s}(${d.default.vErrors})`)):(t.assign(u._`${n}.errors`,d.default.vErrors),o.unevaluated&&function({gen:e,evaluated:t,props:r,items:n}){r instanceof u.Name&&e.assign(u._`${t}.props`,r),n instanceof u.Name&&e.assign(u._`${t}.items`,n)}(e),t.return(u._`${d.default.errors} === 0`))}(e)})}(e):m(e,()=>(0,n.topBoolOrEmptySchema)(e))};class x{constructor(e,t,r){if((0,c.validateKeywordUsage)(e,t,r),this.gen=e.gen,this.allErrors=e.allErrors,this.keyword=r,this.data=e.data,this.schema=e.schema[r],this.$data=t.$data&&e.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,p.schemaRefOrVal)(e,this.schema,r,this.$data),this.schemaType=t.schemaType,this.parentSchema=e.schema,this.params={},this.it=e,this.def=t,this.$data)this.schemaCode=e.gen.const("vSchema",R(this.$data,e));else if(this.schemaCode=this.schemaValue,!(0,c.validSchemaType)(this.schema,t.schemaType,t.allowUndefined))throw new Error(`${r} value must be ${JSON.stringify(t.schemaType)}`);("code"in t?t.trackErrors:!1!==t.errors)&&(this.errsCount=e.gen.const("_errs",d.default.errors))}result(e,t,r){this.failResult((0,u.not)(e),t,r)}failResult(e,t,r){this.gen.if(e),r?r():this.error(),t?(this.gen.else(),t(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(e,t){this.failResult((0,u.not)(e),void 0,t)}fail(e){if(void 0===e)return this.error(),void(this.allErrors||this.gen.if(!1));this.gen.if(e),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(e){if(!this.$data)return this.fail(e);const{schemaCode:t}=this;this.fail(u._`${t} !== undefined && (${(0,u.or)(this.invalid$data(),e)})`)}error(e,t,r){if(t)return this.setParams(t),this._error(e,r),void this.setParams({});this._error(e,r)}_error(e,t){(e?h.reportExtraError:h.reportError)(this,this.def.error,t)}$dataError(){(0,h.reportError)(this,this.def.$dataError||h.keyword$DataError)}reset(){if(void 0===this.errsCount)throw new Error('add "trackErrors" to keyword definition');(0,h.resetErrorsCount)(this.gen,this.errsCount)}ok(e){this.allErrors||this.gen.if(e)}setParams(e,t){t?Object.assign(this.params,e):this.params=e}block$data(e,t,r=u.nil){this.gen.block(()=>{this.check$data(e,r),t()})}check$data(e=u.nil,t=u.nil){if(!this.$data)return;const{gen:r,schemaCode:n,schemaType:s,def:o}=this;r.if((0,u.or)(u._`${n} === undefined`,t)),e!==u.nil&&r.assign(e,!0),(s.length||o.validateSchema)&&(r.elseIf(this.invalid$data()),this.$dataError(),e!==u.nil&&r.assign(e,!1)),r.else()}invalid$data(){const{gen:e,schemaCode:t,schemaType:r,def:n,it:s}=this;return(0,u.or)(function(){if(r.length){if(!(t instanceof u.Name))throw new Error("ajv implementation error");const e=Array.isArray(r)?r:[r];return u._`${(0,a.checkDataTypes)(e,t,s.opts.strictNumbers,a.DataType.Wrong)}`}return u.nil}(),function(){if(n.validateSchema){const r=e.scopeValue("validate$data",{ref:n.validateSchema});return u._`!${r}(${t})`}return u.nil}())}subschema(e,t){const r=(0,l.getSubschema)(this.it,e);(0,l.extendSubschemaData)(r,this.it,e),(0,l.extendSubschemaMode)(r,e);const s={...this.it,...r,items:void 0,props:void 0};return function(e,t){v(e)&&($(e),y(e))?function(e,t){const{schema:r,gen:n,opts:s}=e;s.$comment&&r.$comment&&_(e),function(e){const t=e.schema[e.opts.schemaId];t&&(e.baseId=(0,f.resolveUrl)(e.opts.uriResolver,e.baseId,t))}(e),function(e){if(e.schema.$async&&!e.schemaEnv.$async)throw new Error("async schema in sync schema")}(e);const o=n.const("_errs",d.default.errors);b(e,o),n.var(t,u._`${o} === ${d.default.errors}`)}(e,t):(0,n.boolOrEmptySchema)(e,t)}(s,t),s}mergeEvaluated(e,t){const{it:r,gen:n}=this;r.opts.unevaluated&&(!0!==r.props&&void 0!==e.props&&(r.props=p.mergeEvaluated.props(n,e.props,r.props,t)),!0!==r.items&&void 0!==e.items&&(r.items=p.mergeEvaluated.items(n,e.items,r.items,t)))}mergeValidEvaluated(e,t){const{it:r,gen:n}=this;if(r.opts.unevaluated&&(!0!==r.props||!0!==r.items))return n.if(t,()=>this.mergeEvaluated(e,u.Name)),!0}}function C(e,t,r,n){const s=new x(e,r,t);"code"in r?r.code(s,n):s.$data&&r.validate?(0,c.funcKeywordCode)(s,r):"macro"in r?(0,c.macroKeywordCode)(s,r):(r.compile||r.validate)&&(0,c.funcKeywordCode)(s,r)}t.KeywordCxt=x;const O=/^\/(?:[^~]|~0|~1)*$/,P=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function R(e,{dataLevel:t,dataNames:r,dataPathArr:n}){let s,o;if(""===e)return d.default.rootData;if("/"===e[0]){if(!O.test(e))throw new Error(`Invalid JSON-pointer: ${e}`);s=e,o=d.default.rootData}else{const a=P.exec(e);if(!a)throw new Error(`Invalid JSON-pointer: ${e}`);const i=+a[1];if(s=a[2],"#"===s){if(i>=t)throw new Error(c("property/index",i));return n[t-i]}if(i>t)throw new Error(c("data",i));if(o=r[t-i],!s)return o}let a=o;const i=s.split("/");for(const e of i)e&&(o=u._`${o}${(0,u.getProperty)((0,p.unescapeJsonPointer)(e))}`,a=u._`${a} && ${o}`);return a;function c(e,r){return`Cannot access ${e} ${r} levels up, current level is ${t}`}}t.getData=R},3673(e,t,r){t.validateKeywordUsage=t.validSchemaType=t.funcKeywordCode=t.macroKeywordCode=void 0;const n=r(9029),s=r(2023),o=r(5765),a=r(8708);function i(e){const{gen:t,data:r,it:s}=e;t.if(s.parentData,()=>t.assign(r,n._`${s.parentData}[${s.parentDataProperty}]`))}function c(e,t,r){if(void 0===r)throw new Error(`keyword "${t}" failed to compile`);return e.scopeValue("keyword","function"==typeof r?{ref:r}:{ref:r,code:(0,n.stringify)(r)})}t.macroKeywordCode=function(e,t){const{gen:r,keyword:s,schema:o,parentSchema:a,it:i}=e,l=t.macro.call(i.self,o,a,i),u=c(r,s,l);!1!==i.opts.validateSchema&&i.self.validateSchema(l,!0);const d=r.name("valid");e.subschema({schema:l,schemaPath:n.nil,errSchemaPath:`${i.errSchemaPath}/${s}`,topSchemaRef:u,compositeRule:!0},d),e.pass(d,()=>e.error(!0))},t.funcKeywordCode=function(e,t){var r;const{gen:l,keyword:u,schema:d,parentSchema:f,$data:p,it:h}=e;!function({schemaEnv:e},t){if(t.async&&!e.$async)throw new Error("async keyword in sync schema")}(h,t);const m=!p&&t.compile?t.compile.call(h.self,d,f,h):t.validate,g=c(l,u,m),y=l.let("valid");function v(r=(t.async?n._`await `:n.nil)){const a=h.opts.passContext?s.default.this:s.default.self,i=!("compile"in t&&!p||!1===t.schema);l.assign(y,n._`${r}${(0,o.callValidateCode)(e,g,a,i)}`,t.modifying)}function $(e){var r;l.if((0,n.not)(null!==(r=t.valid)&&void 0!==r?r:y),e)}e.block$data(y,function(){if(!1===t.errors)v(),t.modifying&&i(e),$(()=>e.error());else{const r=t.async?function(){const e=l.let("ruleErrs",null);return l.try(()=>v(n._`await `),t=>l.assign(y,!1).if(n._`${t} instanceof ${h.ValidationError}`,()=>l.assign(e,n._`${t}.errors`),()=>l.throw(t))),e}():function(){const e=n._`${g}.errors`;return l.assign(e,null),v(n.nil),e}();t.modifying&&i(e),$(()=>function(e,t){const{gen:r}=e;r.if(n._`Array.isArray(${t})`,()=>{r.assign(s.default.vErrors,n._`${s.default.vErrors} === null ? ${t} : ${s.default.vErrors}.concat(${t})`).assign(s.default.errors,n._`${s.default.vErrors}.length`),(0,a.extendErrors)(e)},()=>e.error())}(e,r))}}),e.ok(null!==(r=t.valid)&&void 0!==r?r:y)},t.validSchemaType=function(e,t,r=!1){return!t.length||t.some(t=>"array"===t?Array.isArray(e):"object"===t?e&&"object"==typeof e&&!Array.isArray(e):typeof e==t||r&&void 0===e)},t.validateKeywordUsage=function({schema:e,opts:t,self:r,errSchemaPath:n},s,o){if(Array.isArray(s.keyword)?!s.keyword.includes(o):s.keyword!==o)throw new Error("ajv implementation error");const a=s.dependencies;if(null==a?void 0:a.some(t=>!Object.prototype.hasOwnProperty.call(e,t)))throw new Error(`parent schema must have dependencies of ${o}: ${a.join(",")}`);if(s.validateSchema&&!s.validateSchema(e[o])){const e=`keyword "${o}" value is invalid at path "${n}": `+r.errorsText(s.validateSchema.errors);if("log"!==t.validateSchema)throw new Error(e);r.logger.error(e)}}},4495(e,t,r){t.extendSubschemaMode=t.extendSubschemaData=t.getSubschema=void 0;const n=r(9029),s=r(4227);t.getSubschema=function(e,{keyword:t,schemaProp:r,schema:o,schemaPath:a,errSchemaPath:i,topSchemaRef:c}){if(void 0!==t&&void 0!==o)throw new Error('both "keyword" and "schema" passed, only one allowed');if(void 0!==t){const o=e.schema[t];return void 0===r?{schema:o,schemaPath:n._`${e.schemaPath}${(0,n.getProperty)(t)}`,errSchemaPath:`${e.errSchemaPath}/${t}`}:{schema:o[r],schemaPath:n._`${e.schemaPath}${(0,n.getProperty)(t)}${(0,n.getProperty)(r)}`,errSchemaPath:`${e.errSchemaPath}/${t}/${(0,s.escapeFragment)(r)}`}}if(void 0!==o){if(void 0===a||void 0===i||void 0===c)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:o,schemaPath:a,topSchemaRef:c,errSchemaPath:i}}throw new Error('either "keyword" or "schema" must be passed')},t.extendSubschemaData=function(e,t,{dataProp:r,dataPropType:o,data:a,dataTypes:i,propertyName:c}){if(void 0!==a&&void 0!==r)throw new Error('both "data" and "dataProp" passed, only one allowed');const{gen:l}=t;if(void 0!==r){const{errorPath:a,dataPathArr:i,opts:c}=t;u(l.let("data",n._`${t.data}${(0,n.getProperty)(r)}`,!0)),e.errorPath=n.str`${a}${(0,s.getErrorPath)(r,o,c.jsPropertySyntax)}`,e.parentDataProperty=n._`${r}`,e.dataPathArr=[...i,e.parentDataProperty]}function u(r){e.data=r,e.dataLevel=t.dataLevel+1,e.dataTypes=[],t.definedProperties=new Set,e.parentData=t.data,e.dataNames=[...t.dataNames,r]}void 0!==a&&(u(a instanceof n.Name?a:l.let("data",a,!0)),void 0!==c&&(e.propertyName=c)),i&&(e.dataTypes=i)},t.extendSubschemaMode=function(e,{jtdDiscriminator:t,jtdMetadata:r,compositeRule:n,createErrors:s,allErrors:o}){void 0!==n&&(e.compositeRule=n),void 0!==s&&(e.createErrors=s),void 0!==o&&(e.allErrors=o),e.jtdDiscriminator=t,e.jtdMetadata=r}},4042(e,t,r){r(2586),r(9029);const n=r(3558),s=r(4551),o=r(396),a=r(3835),i=r(9029),c=r(6939),l=r(208),u=r(4227),d=r(3837),f=r(5944),p=(e,t)=>new RegExp(e,t);p.code="new RegExp";const h=["removeAdditional","useDefaults","coerceTypes"],m=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),g={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},y={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'};function v(e){var t,r,n,s,o,a,i,c,l,u,d,h,m,g,y,v,$,b,_,w,E,S,k,x,C;const O=e.strict,P=null===(t=e.code)||void 0===t?void 0:t.optimize,R=!0===P||void 0===P?1:P||0,A=null!==(n=null===(r=e.code)||void 0===r?void 0:r.regExp)&&void 0!==n?n:p,T=null!==(s=e.uriResolver)&&void 0!==s?s:f.default;return{strictSchema:null===(a=null!==(o=e.strictSchema)&&void 0!==o?o:O)||void 0===a||a,strictNumbers:null===(c=null!==(i=e.strictNumbers)&&void 0!==i?i:O)||void 0===c||c,strictTypes:null!==(u=null!==(l=e.strictTypes)&&void 0!==l?l:O)&&void 0!==u?u:"log",strictTuples:null!==(h=null!==(d=e.strictTuples)&&void 0!==d?d:O)&&void 0!==h?h:"log",strictRequired:null!==(g=null!==(m=e.strictRequired)&&void 0!==m?m:O)&&void 0!==g&&g,code:e.code?{...e.code,optimize:R,regExp:A}:{optimize:R,regExp:A},loopRequired:null!==(y=e.loopRequired)&&void 0!==y?y:200,loopEnum:null!==(v=e.loopEnum)&&void 0!==v?v:200,meta:null===($=e.meta)||void 0===$||$,messages:null===(b=e.messages)||void 0===b||b,inlineRefs:null===(_=e.inlineRefs)||void 0===_||_,schemaId:null!==(w=e.schemaId)&&void 0!==w?w:"$id",addUsedSchema:null===(E=e.addUsedSchema)||void 0===E||E,validateSchema:null===(S=e.validateSchema)||void 0===S||S,validateFormats:null===(k=e.validateFormats)||void 0===k||k,unicodeRegExp:null===(x=e.unicodeRegExp)||void 0===x||x,int32range:null===(C=e.int32range)||void 0===C||C,uriResolver:T}}class ${constructor(e={}){this.schemas={},this.refs={},this.formats=Object.create(null),this._compilations=new Set,this._loading={},this._cache=new Map,e=this.opts={...e,...v(e)};const{es5:t,lines:r}=this.opts.code;this.scope=new i.ValueScope({scope:{},prefixes:m,es5:t,lines:r}),this.logger=function(e){if(!1===e)return x;if(void 0===e)return console;if(e.log&&e.warn&&e.error)return e;throw new Error("logger must implement log, warn and error methods")}(e.logger);const n=e.validateFormats;e.validateFormats=!1,this.RULES=(0,o.getRules)(),b.call(this,g,e,"NOT SUPPORTED"),b.call(this,y,e,"DEPRECATED","warn"),this._metaOpts=k.call(this),e.formats&&E.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),e.keywords&&S.call(this,e.keywords),"object"==typeof e.meta&&this.addMetaSchema(e.meta),w.call(this),e.validateFormats=n}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){const{$data:e,meta:t,schemaId:r}=this.opts;let n=d;"id"===r&&(n={...d},n.id=n.$id,delete n.$id),t&&e&&this.addMetaSchema(n,n[r],!1)}defaultMeta(){const{meta:e,schemaId:t}=this.opts;return this.opts.defaultMeta="object"==typeof e?e[t]||e:void 0}validate(e,t){let r;if("string"==typeof e){if(r=this.getSchema(e),!r)throw new Error(`no schema with key or ref "${e}"`)}else r=this.compile(e);const n=r(t);return"$async"in r||(this.errors=r.errors),n}compile(e,t){const r=this._addSchema(e,t);return r.validate||this._compileSchemaEnv(r)}compileAsync(e,t){if("function"!=typeof this.opts.loadSchema)throw new Error("options.loadSchema should be a function");const{loadSchema:r}=this.opts;return n.call(this,e,t);async function n(e,t){await o.call(this,e.$schema);const r=this._addSchema(e,t);return r.validate||a.call(this,r)}async function o(e){e&&!this.getSchema(e)&&await n.call(this,{$ref:e},!0)}async function a(e){try{return this._compileSchemaEnv(e)}catch(t){if(!(t instanceof s.default))throw t;return i.call(this,t),await c.call(this,t.missingSchema),a.call(this,e)}}function i({missingSchema:e,missingRef:t}){if(this.refs[e])throw new Error(`AnySchema ${e} is loaded but ${t} cannot be resolved`)}async function c(e){const r=await l.call(this,e);this.refs[e]||await o.call(this,r.$schema),this.refs[e]||this.addSchema(r,e,t)}async function l(e){const t=this._loading[e];if(t)return t;try{return await(this._loading[e]=r(e))}finally{delete this._loading[e]}}}addSchema(e,t,r,n=this.opts.validateSchema){if(Array.isArray(e)){for(const t of e)this.addSchema(t,void 0,r,n);return this}let s;if("object"==typeof e){const{schemaId:t}=this.opts;if(s=e[t],void 0!==s&&"string"!=typeof s)throw new Error(`schema ${t} must be string`)}return t=(0,c.normalizeId)(t||s),this._checkUnique(t),this.schemas[t]=this._addSchema(e,r,t,n,!0),this}addMetaSchema(e,t,r=this.opts.validateSchema){return this.addSchema(e,t,!0,r),this}validateSchema(e,t){if("boolean"==typeof e)return!0;let r;if(r=e.$schema,void 0!==r&&"string"!=typeof r)throw new Error("$schema must be a string");if(r=r||this.opts.defaultMeta||this.defaultMeta(),!r)return this.logger.warn("meta-schema not available"),this.errors=null,!0;const n=this.validate(r,e);if(!n&&t){const e="schema is invalid: "+this.errorsText();if("log"!==this.opts.validateSchema)throw new Error(e);this.logger.error(e)}return n}getSchema(e){let t;for(;"string"==typeof(t=_.call(this,e));)e=t;if(void 0===t){const{schemaId:r}=this.opts,n=new a.SchemaEnv({schema:{},schemaId:r});if(t=a.resolveSchema.call(this,n,e),!t)return;this.refs[e]=t}return t.validate||this._compileSchemaEnv(t)}removeSchema(e){if(e instanceof RegExp)return this._removeAllSchemas(this.schemas,e),this._removeAllSchemas(this.refs,e),this;switch(typeof e){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{const t=_.call(this,e);return"object"==typeof t&&this._cache.delete(t.schema),delete this.schemas[e],delete this.refs[e],this}case"object":{const t=e;this._cache.delete(t);let r=e[this.opts.schemaId];return r&&(r=(0,c.normalizeId)(r),delete this.schemas[r],delete this.refs[r]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(e){for(const t of e)this.addKeyword(t);return this}addKeyword(e,t){let r;if("string"==typeof e)r=e,"object"==typeof t&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),t.keyword=r);else{if("object"!=typeof e||void 0!==t)throw new Error("invalid addKeywords parameters");if(r=(t=e).keyword,Array.isArray(r)&&!r.length)throw new Error("addKeywords: keyword must be string or non-empty array")}if(O.call(this,r,t),!t)return(0,u.eachItem)(r,e=>P.call(this,e)),this;A.call(this,t);const n={...t,type:(0,l.getJSONTypes)(t.type),schemaType:(0,l.getJSONTypes)(t.schemaType)};return(0,u.eachItem)(r,0===n.type.length?e=>P.call(this,e,n):e=>n.type.forEach(t=>P.call(this,e,n,t))),this}getKeyword(e){const t=this.RULES.all[e];return"object"==typeof t?t.definition:!!t}removeKeyword(e){const{RULES:t}=this;delete t.keywords[e],delete t.all[e];for(const r of t.rules){const t=r.rules.findIndex(t=>t.keyword===e);t>=0&&r.rules.splice(t,1)}return this}addFormat(e,t){return"string"==typeof t&&(t=new RegExp(t)),this.formats[e]=t,this}errorsText(e=this.errors,{separator:t=", ",dataVar:r="data"}={}){return e&&0!==e.length?e.map(e=>`${r}${e.instancePath} ${e.message}`).reduce((e,r)=>e+t+r):"No errors"}$dataMetaSchema(e,t){const r=this.RULES.all;e=JSON.parse(JSON.stringify(e));for(const n of t){const t=n.split("/").slice(1);let s=e;for(const e of t)s=s[e];for(const e in r){const t=r[e];if("object"!=typeof t)continue;const{$data:n}=t.definition,o=s[e];n&&o&&(s[e]=N(o))}}return e}_removeAllSchemas(e,t){for(const r in e){const n=e[r];t&&!t.test(r)||("string"==typeof n?delete e[r]:n&&!n.meta&&(this._cache.delete(n.schema),delete e[r]))}}_addSchema(e,t,r,n=this.opts.validateSchema,s=this.opts.addUsedSchema){let o;const{schemaId:i}=this.opts;if("object"==typeof e)o=e[i];else{if(this.opts.jtd)throw new Error("schema must be object");if("boolean"!=typeof e)throw new Error("schema must be object or boolean")}let l=this._cache.get(e);if(void 0!==l)return l;r=(0,c.normalizeId)(o||r);const u=c.getSchemaRefs.call(this,e,r);return l=new a.SchemaEnv({schema:e,schemaId:i,meta:t,baseId:r,localRefs:u}),this._cache.set(l.schema,l),s&&!r.startsWith("#")&&(r&&this._checkUnique(r),this.refs[r]=l),n&&this.validateSchema(e,!0),l}_checkUnique(e){if(this.schemas[e]||this.refs[e])throw new Error(`schema with key or id "${e}" already exists`)}_compileSchemaEnv(e){if(e.meta?this._compileMetaSchema(e):a.compileSchema.call(this,e),!e.validate)throw new Error("ajv implementation error");return e.validate}_compileMetaSchema(e){const t=this.opts;this.opts=this._metaOpts;try{a.compileSchema.call(this,e)}finally{this.opts=t}}}function b(e,t,r,n="error"){for(const s in e){const o=s;o in t&&this.logger[n](`${r}: option ${s}. ${e[o]}`)}}function _(e){return e=(0,c.normalizeId)(e),this.schemas[e]||this.refs[e]}function w(){const e=this.opts.schemas;if(e)if(Array.isArray(e))this.addSchema(e);else for(const t in e)this.addSchema(e[t],t)}function E(){for(const e in this.opts.formats){const t=this.opts.formats[e];t&&this.addFormat(e,t)}}function S(e){if(Array.isArray(e))this.addVocabulary(e);else{this.logger.warn("keywords option as map is deprecated, pass array");for(const t in e){const r=e[t];r.keyword||(r.keyword=t),this.addKeyword(r)}}}function k(){const e={...this.opts};for(const t of h)delete e[t];return e}$.ValidationError=n.default,$.MissingRefError=s.default,t.default=$;const x={log(){},warn(){},error(){}},C=/^[a-z_$][a-z0-9_$:-]*$/i;function O(e,t){const{RULES:r}=this;if((0,u.eachItem)(e,e=>{if(r.keywords[e])throw new Error(`Keyword ${e} is already defined`);if(!C.test(e))throw new Error(`Keyword ${e} has invalid name`)}),t&&t.$data&&!("code"in t)&&!("validate"in t))throw new Error('$data keyword must have "code" or "validate" function')}function P(e,t,r){var n;const s=null==t?void 0:t.post;if(r&&s)throw new Error('keyword with "post" flag cannot have "type"');const{RULES:o}=this;let a=s?o.post:o.rules.find(({type:e})=>e===r);if(a||(a={type:r,rules:[]},o.rules.push(a)),o.keywords[e]=!0,!t)return;const i={keyword:e,definition:{...t,type:(0,l.getJSONTypes)(t.type),schemaType:(0,l.getJSONTypes)(t.schemaType)}};t.before?R.call(this,a,i,t.before):a.rules.push(i),o.all[e]=i,null===(n=t.implements)||void 0===n||n.forEach(e=>this.addKeyword(e))}function R(e,t,r){const n=e.rules.findIndex(e=>e.keyword===r);n>=0?e.rules.splice(n,0,t):(e.rules.push(t),this.logger.warn(`rule ${r} is not defined`))}function A(e){let{metaSchema:t}=e;void 0!==t&&(e.$data&&this.opts.$data&&(t=N(t)),e.validateSchema=this.compile(t,!0))}const T={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function N(e){return{anyOf:[e,T]}}},6250(e,t,r){const n=r(2017);n.code='require("ajv/dist/runtime/equal").default',t.default=n},3853(e,t){function r(e){const t=e.length;let r,n=0,s=0;for(;s<t;)n++,r=e.charCodeAt(s++),r>=55296&&r<=56319&&s<t&&(r=e.charCodeAt(s),56320==(64512&r)&&s++);return n}t.default=r,r.code='require("ajv/dist/runtime/ucs2length").default'},5944(e,t,r){const n=r(8343);n.code='require("ajv/dist/runtime/uri").default',t.default=n},3558(e,t){Object.defineProperty(t,"__esModule",{value:!0});class r extends Error{constructor(e){super("validation failed"),this.errors=e,this.ajv=this.validation=!0}}t.default=r},5457(e,t,r){t.validateAdditionalItems=void 0;const n=r(9029),s=r(4227),o={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:{message:({params:{len:e}})=>n.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>n._`{limit: ${e}}`},code(e){const{parentSchema:t,it:r}=e,{items:n}=t;Array.isArray(n)?a(e,n):(0,s.checkStrictMode)(r,'"additionalItems" is ignored when "items" is not an array of schemas')}};function a(e,t){const{gen:r,schema:o,data:a,keyword:i,it:c}=e;c.items=!0;const l=r.const("len",n._`${a}.length`);if(!1===o)e.setParams({len:t.length}),e.pass(n._`${l} <= ${t.length}`);else if("object"==typeof o&&!(0,s.alwaysValidSchema)(c,o)){const o=r.var("valid",n._`${l} <= ${t.length}`);r.if((0,n.not)(o),()=>function(o){r.forRange("i",t.length,l,t=>{e.subschema({keyword:i,dataProp:t,dataPropType:s.Type.Num},o),c.allErrors||r.if((0,n.not)(o),()=>r.break())})}(o)),e.ok(o)}}t.validateAdditionalItems=a,t.default=o},8660(e,t,r){const n=r(5765),s=r(9029),o=r(2023),a=r(4227),i={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:{message:"must NOT have additional properties",params:({params:e})=>s._`{additionalProperty: ${e.additionalProperty}}`},code(e){const{gen:t,schema:r,parentSchema:i,data:c,errsCount:l,it:u}=e;if(!l)throw new Error("ajv implementation error");const{allErrors:d,opts:f}=u;if(u.props=!0,"all"!==f.removeAdditional&&(0,a.alwaysValidSchema)(u,r))return;const p=(0,n.allSchemaProperties)(i.properties),h=(0,n.allSchemaProperties)(i.patternProperties);function m(e){t.code(s._`delete ${c}[${e}]`)}function g(n){if("all"===f.removeAdditional||f.removeAdditional&&!1===r)m(n);else{if(!1===r)return e.setParams({additionalProperty:n}),e.error(),void(d||t.break());if("object"==typeof r&&!(0,a.alwaysValidSchema)(u,r)){const r=t.name("valid");"failing"===f.removeAdditional?(y(n,r,!1),t.if((0,s.not)(r),()=>{e.reset(),m(n)})):(y(n,r),d||t.if((0,s.not)(r),()=>t.break()))}}}function y(t,r,n){const s={keyword:"additionalProperties",dataProp:t,dataPropType:a.Type.Str};!1===n&&Object.assign(s,{compositeRule:!0,createErrors:!1,allErrors:!1}),e.subschema(s,r)}t.forIn("key",c,r=>{p.length||h.length?t.if(function(r){let o;if(p.length>8){const e=(0,a.schemaRefOrVal)(u,i.properties,"properties");o=(0,n.isOwnProperty)(t,e,r)}else o=p.length?(0,s.or)(...p.map(e=>s._`${r} === ${e}`)):s.nil;return h.length&&(o=(0,s.or)(o,...h.map(t=>s._`${(0,n.usePattern)(e,t)}.test(${r})`))),(0,s.not)(o)}(r),()=>g(r)):g(r)}),e.ok(s._`${l} === ${o.default.errors}`)}};t.default=i},5844(e,t,r){const n=r(4227),s={keyword:"allOf",schemaType:"array",code(e){const{gen:t,schema:r,it:s}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");const o=t.name("valid");r.forEach((t,r)=>{if((0,n.alwaysValidSchema)(s,t))return;const a=e.subschema({keyword:"allOf",schemaProp:r},o);e.ok(o),e.mergeEvaluated(a)})}};t.default=s},6505(e,t,r){const n={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:r(5765).validateUnion,error:{message:"must match a schema in anyOf"}};t.default=n},2661(e,t,r){const n=r(9029),s=r(4227),o={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:{message:({params:{min:e,max:t}})=>void 0===t?n.str`must contain at least ${e} valid item(s)`:n.str`must contain at least ${e} and no more than ${t} valid item(s)`,params:({params:{min:e,max:t}})=>void 0===t?n._`{minContains: ${e}}`:n._`{minContains: ${e}, maxContains: ${t}}`},code(e){const{gen:t,schema:r,parentSchema:o,data:a,it:i}=e;let c,l;const{minContains:u,maxContains:d}=o;i.opts.next?(c=void 0===u?1:u,l=d):c=1;const f=t.const("len",n._`${a}.length`);if(e.setParams({min:c,max:l}),void 0===l&&0===c)return void(0,s.checkStrictMode)(i,'"minContains" == 0 without "maxContains": "contains" keyword ignored');if(void 0!==l&&c>l)return(0,s.checkStrictMode)(i,'"minContains" > "maxContains" is always invalid'),void e.fail();if((0,s.alwaysValidSchema)(i,r)){let t=n._`${f} >= ${c}`;return void 0!==l&&(t=n._`${t} && ${f} <= ${l}`),void e.pass(t)}i.items=!0;const p=t.name("valid");function h(){const e=t.name("_valid"),r=t.let("count",0);m(e,()=>t.if(e,()=>function(e){t.code(n._`${e}++`),void 0===l?t.if(n._`${e} >= ${c}`,()=>t.assign(p,!0).break()):(t.if(n._`${e} > ${l}`,()=>t.assign(p,!1).break()),1===c?t.assign(p,!0):t.if(n._`${e} >= ${c}`,()=>t.assign(p,!0)))}(r)))}function m(r,n){t.forRange("i",0,f,t=>{e.subschema({keyword:"contains",dataProp:t,dataPropType:s.Type.Num,compositeRule:!0},r),n()})}void 0===l&&1===c?m(p,()=>t.if(p,()=>t.break())):0===c?(t.let(p,!0),void 0!==l&&t.if(n._`${a}.length > 0`,h)):(t.let(p,!1),h()),e.result(p,()=>e.reset())}};t.default=o},3025(e,t,r){t.z3=void 0;const n=r(9029),s=r(4227),o=r(5765);t.z3={message:({params:{property:e,depsCount:t,deps:r}})=>{const s=1===t?"property":"properties";return n.str`must have ${s} ${r} when property ${e} is present`},params:({params:{property:e,depsCount:t,deps:r,missingProperty:s}})=>n._`{property: ${e},
6
+ missingProperty: ${s},
7
+ depsCount: ${t},
8
+ deps: ${r}}`};const a={keyword:"dependencies",type:"object",schemaType:"object",error:t.z3,code(e){const[t,r]=function({schema:e}){const t={},r={};for(const n in e)"__proto__"!==n&&((Array.isArray(e[n])?t:r)[n]=e[n]);return[t,r]}(e);(function(e,t=e.schema){const{gen:r,data:s,it:a}=e;if(0===Object.keys(t).length)return;const i=r.let("missing");for(const c in t){const l=t[c];if(0===l.length)continue;const u=(0,o.propertyInData)(r,s,c,a.opts.ownProperties);e.setParams({property:c,depsCount:l.length,deps:l.join(", ")}),a.allErrors?r.if(u,()=>{for(const t of l)(0,o.checkReportMissingProp)(e,t)}):(r.if(n._`${u} && (${(0,o.checkMissingProp)(e,l,i)})`),(0,o.reportMissingProp)(e,i),r.else())}})(e,t),function(e,t=e.schema){const{gen:r,data:n,keyword:a,it:i}=e,c=r.name("valid");for(const l in t)(0,s.alwaysValidSchema)(i,t[l])||(r.if((0,o.propertyInData)(r,n,l,i.opts.ownProperties),()=>{const t=e.subschema({keyword:a,schemaProp:l},c);e.mergeValidEvaluated(t,c)},()=>r.var(c,!0)),e.ok(c))}(e,r)}};t.default=a},1239(e,t,r){const n=r(9029),s=r(4227),o={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:{message:({params:e})=>n.str`must match "${e.ifClause}" schema`,params:({params:e})=>n._`{failingKeyword: ${e.ifClause}}`},code(e){const{gen:t,parentSchema:r,it:o}=e;void 0===r.then&&void 0===r.else&&(0,s.checkStrictMode)(o,'"if" without "then" and "else" is ignored');const i=a(o,"then"),c=a(o,"else");if(!i&&!c)return;const l=t.let("valid",!0),u=t.name("_valid");if(function(){const t=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},u);e.mergeEvaluated(t)}(),e.reset(),i&&c){const r=t.let("ifClause");e.setParams({ifClause:r}),t.if(u,d("then",r),d("else",r))}else i?t.if(u,d("then")):t.if((0,n.not)(u),d("else"));function d(r,s){return()=>{const o=e.subschema({keyword:r},u);t.assign(l,u),e.mergeValidEvaluated(o,l),s?t.assign(s,n._`${r}`):e.setParams({ifClause:r})}}e.pass(l,()=>e.error(!0))}};function a(e,t){const r=e.schema[t];return void 0!==r&&!(0,s.alwaysValidSchema)(e,r)}t.default=o},6378(e,t,r){const n=r(5457),s=r(5354),o=r(494),a=r(3966),i=r(2661),c=r(3025),l=r(9713),u=r(8660),d=r(117),f=r(5333),p=r(7923),h=r(6505),m=r(6163),g=r(5844),y=r(1239),v=r(4426);t.default=function(e=!1){const t=[p.default,h.default,m.default,g.default,y.default,v.default,l.default,u.default,c.default,d.default,f.default];return e?t.push(s.default,a.default):t.push(n.default,o.default),t.push(i.default),t}},494(e,t,r){t.validateTuple=void 0;const n=r(9029),s=r(4227),o=r(5765),a={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(e){const{schema:t,it:r}=e;if(Array.isArray(t))return i(e,"additionalItems",t);r.items=!0,(0,s.alwaysValidSchema)(r,t)||e.ok((0,o.validateArray)(e))}};function i(e,t,r=e.schema){const{gen:o,parentSchema:a,data:i,keyword:c,it:l}=e;!function(e){const{opts:n,errSchemaPath:o}=l,a=r.length,i=a===e.minItems&&(a===e.maxItems||!1===e[t]);if(n.strictTuples&&!i){const e=`"${c}" is ${a}-tuple, but minItems or maxItems/${t} are not specified or different at path "${o}"`;(0,s.checkStrictMode)(l,e,n.strictTuples)}}(a),l.opts.unevaluated&&r.length&&!0!==l.items&&(l.items=s.mergeEvaluated.items(o,r.length,l.items));const u=o.name("valid"),d=o.const("len",n._`${i}.length`);r.forEach((t,r)=>{(0,s.alwaysValidSchema)(l,t)||(o.if(n._`${d} > ${r}`,()=>e.subschema({keyword:c,schemaProp:r,dataProp:r},u)),e.ok(u))})}t.validateTuple=i,t.default=a},3966(e,t,r){const n=r(9029),s=r(4227),o=r(5765),a=r(5457),i={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:{message:({params:{len:e}})=>n.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>n._`{limit: ${e}}`},code(e){const{schema:t,parentSchema:r,it:n}=e,{prefixItems:i}=r;n.items=!0,(0,s.alwaysValidSchema)(n,t)||(i?(0,a.validateAdditionalItems)(e,i):e.ok((0,o.validateArray)(e)))}};t.default=i},7923(e,t,r){const n=r(4227),s={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){const{gen:t,schema:r,it:s}=e;if((0,n.alwaysValidSchema)(s,r))return void e.fail();const o=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),e.failResult(o,()=>e.reset(),()=>e.error())},error:{message:"must NOT be valid"}};t.default=s},6163(e,t,r){const n=r(9029),s=r(4227),o={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:{message:"must match exactly one schema in oneOf",params:({params:e})=>n._`{passingSchemas: ${e.passing}}`},code(e){const{gen:t,schema:r,parentSchema:o,it:a}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");if(a.opts.discriminator&&o.discriminator)return;const i=r,c=t.let("valid",!1),l=t.let("passing",null),u=t.name("_valid");e.setParams({passing:l}),t.block(function(){i.forEach((r,o)=>{let i;(0,s.alwaysValidSchema)(a,r)?t.var(u,!0):i=e.subschema({keyword:"oneOf",schemaProp:o,compositeRule:!0},u),o>0&&t.if(n._`${u} && ${c}`).assign(c,!1).assign(l,n._`[${l}, ${o}]`).else(),t.if(u,()=>{t.assign(c,!0),t.assign(l,o),i&&e.mergeEvaluated(i,n.Name)})})}),e.result(c,()=>e.reset(),()=>e.error(!0))}};t.default=o},5333(e,t,r){const n=r(5765),s=r(9029),o=r(4227),a=r(4227),i={keyword:"patternProperties",type:"object",schemaType:"object",code(e){const{gen:t,schema:r,data:i,parentSchema:c,it:l}=e,{opts:u}=l,d=(0,n.allSchemaProperties)(r),f=d.filter(e=>(0,o.alwaysValidSchema)(l,r[e]));if(0===d.length||f.length===d.length&&(!l.opts.unevaluated||!0===l.props))return;const p=u.strictSchema&&!u.allowMatchingProperties&&c.properties,h=t.name("valid");!0===l.props||l.props instanceof s.Name||(l.props=(0,a.evaluatedPropsToName)(t,l.props));const{props:m}=l;function g(e){for(const t in p)new RegExp(e).test(t)&&(0,o.checkStrictMode)(l,`property ${t} matches pattern ${e} (use allowMatchingProperties)`)}function y(r){t.forIn("key",i,o=>{t.if(s._`${(0,n.usePattern)(e,r)}.test(${o})`,()=>{const n=f.includes(r);n||e.subschema({keyword:"patternProperties",schemaProp:r,dataProp:o,dataPropType:a.Type.Str},h),l.opts.unevaluated&&!0!==m?t.assign(s._`${m}[${o}]`,!0):n||l.allErrors||t.if((0,s.not)(h),()=>t.break())})})}!function(){for(const e of d)p&&g(e),l.allErrors?y(e):(t.var(h,!0),y(e),t.if(h))}()}};t.default=i},5354(e,t,r){const n=r(494),s={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:e=>(0,n.validateTuple)(e,"items")};t.default=s},117(e,t,r){const n=r(2586),s=r(5765),o=r(4227),a=r(8660),i={keyword:"properties",type:"object",schemaType:"object",code(e){const{gen:t,schema:r,parentSchema:i,data:c,it:l}=e;"all"===l.opts.removeAdditional&&void 0===i.additionalProperties&&a.default.code(new n.KeywordCxt(l,a.default,"additionalProperties"));const u=(0,s.allSchemaProperties)(r);for(const e of u)l.definedProperties.add(e);l.opts.unevaluated&&u.length&&!0!==l.props&&(l.props=o.mergeEvaluated.props(t,(0,o.toHash)(u),l.props));const d=u.filter(e=>!(0,o.alwaysValidSchema)(l,r[e]));if(0===d.length)return;const f=t.name("valid");for(const r of d)p(r)?h(r):(t.if((0,s.propertyInData)(t,c,r,l.opts.ownProperties)),h(r),l.allErrors||t.else().var(f,!0),t.endIf()),e.it.definedProperties.add(r),e.ok(f);function p(e){return l.opts.useDefaults&&!l.compositeRule&&void 0!==r[e].default}function h(t){e.subschema({keyword:"properties",schemaProp:t,dataProp:t},f)}}};t.default=i},9713(e,t,r){const n=r(9029),s=r(4227),o={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:{message:"property name must be valid",params:({params:e})=>n._`{propertyName: ${e.propertyName}}`},code(e){const{gen:t,schema:r,data:o,it:a}=e;if((0,s.alwaysValidSchema)(a,r))return;const i=t.name("valid");t.forIn("key",o,r=>{e.setParams({propertyName:r}),e.subschema({keyword:"propertyNames",data:r,dataTypes:["string"],propertyName:r,compositeRule:!0},i),t.if((0,n.not)(i),()=>{e.error(!0),a.allErrors||t.break()})}),e.ok(i)}};t.default=o},4426(e,t,r){const n=r(4227),s={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:r}){void 0===t.if&&(0,n.checkStrictMode)(r,`"${e}" without "if" is ignored`)}};t.default=s},5765(e,t,r){t.validateUnion=t.validateArray=t.usePattern=t.callValidateCode=t.allSchemaProperties=t.noPropertyInData=t.propertyInData=t.isOwnProperty=t.reportMissingProp=t.checkMissingProp=t.checkReportMissingProp=void 0;const n=r(9029),s=r(4227),o=r(2023),a=r(4227);function i(e,t,r){return n._`${function(e){return e.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:n._`Object.prototype.hasOwnProperty`})}(e)}.call(${t}, ${r})`}function c(e,t,r,s){const o=n._`${t}${(0,n.getProperty)(r)} === undefined`;return s?(0,n.or)(o,(0,n.not)(i(e,t,r))):o}t.checkReportMissingProp=function(e,t){const{gen:r,data:s,it:o}=e;r.if(c(r,s,t,o.opts.ownProperties),()=>{e.setParams({missingProperty:n._`${t}`},!0),e.error()})},t.checkMissingProp=function({gen:e,data:t,it:{opts:r}},s,o){return(0,n.or)(...s.map(s=>(0,n.and)(c(e,t,s,r.ownProperties),n._`${o} = ${s}`)))},t.reportMissingProp=function(e,t){e.setParams({missingProperty:t},!0),e.error()},t.isOwnProperty=i,t.propertyInData=function(e,t,r,s){const o=n._`${t}${(0,n.getProperty)(r)} !== undefined`;return s?n._`${o} && ${i(e,t,r)}`:o},t.noPropertyInData=c,t.allSchemaProperties=function(e){return e?Object.keys(e).filter(e=>"__proto__"!==e):[]},t.callValidateCode=function({schemaCode:e,data:t,it:{gen:r,topSchemaRef:s,schemaPath:a,errorPath:i},it:c},l,u,d){const f=d?n._`${e}, ${t}, ${s}${a}`:t,p=[[o.default.instancePath,(0,n.strConcat)(o.default.instancePath,i)],[o.default.parentData,c.parentData],[o.default.parentDataProperty,c.parentDataProperty],[o.default.rootData,o.default.rootData]];c.opts.dynamicRef&&p.push([o.default.dynamicAnchors,o.default.dynamicAnchors]);const h=n._`${f}, ${r.object(...p)}`;return u!==n.nil?n._`${l}.call(${u}, ${h})`:n._`${l}(${h})`};const l=n._`new RegExp`;t.usePattern=function({gen:e,it:{opts:t}},r){const s=t.unicodeRegExp?"u":"",{regExp:o}=t.code,i=o(r,s);return e.scopeValue("pattern",{key:i.toString(),ref:i,code:n._`${"new RegExp"===o.code?l:(0,a.useFunc)(e,o)}(${r}, ${s})`})},t.validateArray=function(e){const{gen:t,data:r,keyword:o,it:a}=e,i=t.name("valid");if(a.allErrors){const e=t.let("valid",!0);return c(()=>t.assign(e,!1)),e}return t.var(i,!0),c(()=>t.break()),i;function c(a){const c=t.const("len",n._`${r}.length`);t.forRange("i",0,c,r=>{e.subschema({keyword:o,dataProp:r,dataPropType:s.Type.Num},i),t.if((0,n.not)(i),a)})}},t.validateUnion=function(e){const{gen:t,schema:r,keyword:o,it:a}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");if(r.some(e=>(0,s.alwaysValidSchema)(a,e))&&!a.opts.unevaluated)return;const i=t.let("valid",!1),c=t.name("_valid");t.block(()=>r.forEach((r,s)=>{const a=e.subschema({keyword:o,schemaProp:s,compositeRule:!0},c);t.assign(i,n._`${i} || ${c}`),e.mergeValidEvaluated(a,c)||t.if((0,n.not)(i))})),e.result(i,()=>e.reset(),()=>e.error(!0))}},3463(e,t){const r={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};t.default=r},2128(e,t,r){const n=r(3463),s=r(3693),o=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",n.default,s.default];t.default=o},3693(e,t,r){const n=r(4551),s=r(5765),o=r(9029),a=r(2023),i=r(3835),c=r(4227),l={keyword:"$ref",schemaType:"string",code(e){const{gen:t,schema:r,it:s}=e,{baseId:a,schemaEnv:c,validateName:l,opts:d,self:f}=s,{root:p}=c;if(("#"===r||"#/"===r)&&a===p.baseId)return function(){if(c===p)return u(e,l,c,c.$async);const r=t.scopeValue("root",{ref:p});return u(e,o._`${r}.validate`,p,p.$async)}();const h=i.resolveRef.call(f,p,a,r);if(void 0===h)throw new n.default(s.opts.uriResolver,a,r);return h instanceof i.SchemaEnv?function(t){const r=function(e,t){const{gen:r}=e;return t.validate?r.scopeValue("validate",{ref:t.validate}):o._`${r.scopeValue("wrapper",{ref:t})}.validate`}(e,t);u(e,r,t,t.$async)}(h):function(n){const s=t.scopeValue("schema",!0===d.code.source?{ref:n,code:(0,o.stringify)(n)}:{ref:n}),a=t.name("valid"),i=e.subschema({schema:n,dataTypes:[],schemaPath:o.nil,topSchemaRef:s,errSchemaPath:r},a);e.mergeEvaluated(i),e.ok(a)}(h)}};function u(e,t,r,n){const{gen:i,it:l}=e,{allErrors:u,schemaEnv:d,opts:f}=l,p=f.passContext?a.default.this:o.nil;function h(e){const t=o._`${e}.errors`;i.assign(a.default.vErrors,o._`${a.default.vErrors} === null ? ${t} : ${a.default.vErrors}.concat(${t})`),i.assign(a.default.errors,o._`${a.default.vErrors}.length`)}function m(e){var t;if(!l.opts.unevaluated)return;const n=null===(t=null==r?void 0:r.validate)||void 0===t?void 0:t.evaluated;if(!0!==l.props)if(n&&!n.dynamicProps)void 0!==n.props&&(l.props=c.mergeEvaluated.props(i,n.props,l.props));else{const t=i.var("props",o._`${e}.evaluated.props`);l.props=c.mergeEvaluated.props(i,t,l.props,o.Name)}if(!0!==l.items)if(n&&!n.dynamicItems)void 0!==n.items&&(l.items=c.mergeEvaluated.items(i,n.items,l.items));else{const t=i.var("items",o._`${e}.evaluated.items`);l.items=c.mergeEvaluated.items(i,t,l.items,o.Name)}}n?function(){if(!d.$async)throw new Error("async schema referenced by sync schema");const r=i.let("valid");i.try(()=>{i.code(o._`await ${(0,s.callValidateCode)(e,t,p)}`),m(t),u||i.assign(r,!0)},e=>{i.if(o._`!(${e} instanceof ${l.ValidationError})`,()=>i.throw(e)),h(e),u||i.assign(r,!1)}),e.ok(r)}():e.result((0,s.callValidateCode)(e,t,p),()=>m(t),()=>h(t))}t.default=l},6653(e,t,r){const n=r(9029),s=r(7652),o=r(3835),a=r(4551),i=r(4227),c={keyword:"discriminator",type:"object",schemaType:"object",error:{message:({params:{discrError:e,tagName:t}})=>e===s.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:r}})=>n._`{error: ${e}, tag: ${r}, tagValue: ${t}}`},code(e){const{gen:t,data:r,schema:c,parentSchema:l,it:u}=e,{oneOf:d}=l;if(!u.opts.discriminator)throw new Error("discriminator: requires discriminator option");const f=c.propertyName;if("string"!=typeof f)throw new Error("discriminator: requires propertyName");if(c.mapping)throw new Error("discriminator: mapping is not supported");if(!d)throw new Error("discriminator: requires oneOf keyword");const p=t.let("valid",!1),h=t.const("tag",n._`${r}${(0,n.getProperty)(f)}`);function m(r){const s=t.name("valid"),o=e.subschema({keyword:"oneOf",schemaProp:r},s);return e.mergeEvaluated(o,n.Name),s}t.if(n._`typeof ${h} == "string"`,()=>function(){const r=function(){var e;const t={},r=s(l);let n=!0;for(let t=0;t<d.length;t++){let l=d[t];if((null==l?void 0:l.$ref)&&!(0,i.schemaHasRulesButRef)(l,u.self.RULES)){const e=l.$ref;if(l=o.resolveRef.call(u.self,u.schemaEnv.root,u.baseId,e),l instanceof o.SchemaEnv&&(l=l.schema),void 0===l)throw new a.default(u.opts.uriResolver,u.baseId,e)}const p=null===(e=null==l?void 0:l.properties)||void 0===e?void 0:e[f];if("object"!=typeof p)throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${f}"`);n=n&&(r||s(l)),c(p,t)}if(!n)throw new Error(`discriminator: "${f}" must be required`);return t;function s({required:e}){return Array.isArray(e)&&e.includes(f)}function c(e,t){if(e.const)p(e.const,t);else{if(!e.enum)throw new Error(`discriminator: "properties/${f}" must have "const" or "enum"`);for(const r of e.enum)p(r,t)}}function p(e,r){if("string"!=typeof e||e in t)throw new Error(`discriminator: "${f}" values must be unique strings`);t[e]=r}}();t.if(!1);for(const e in r)t.elseIf(n._`${h} === ${e}`),t.assign(p,m(r[e]));t.else(),e.error(!1,{discrError:s.DiscrError.Mapping,tag:h,tagName:f}),t.endIf()}(),()=>e.error(!1,{discrError:s.DiscrError.Tag,tag:h,tagName:f})),e.ok(p)}};t.default=c},7652(e,t){var r;t.DiscrError=void 0,function(e){e.Tag="tag",e.Mapping="mapping"}(r||(t.DiscrError=r={}))},6144(e,t,r){const n=r(2128),s=r(7060),o=r(6378),a=r(7532),i=r(9857),c=[n.default,s.default,(0,o.default)(),a.default,i.metadataVocabulary,i.contentVocabulary];t.default=c},4737(e,t,r){const n=r(9029),s={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:{message:({schemaCode:e})=>n.str`must match format "${e}"`,params:({schemaCode:e})=>n._`{format: ${e}}`},code(e,t){const{gen:r,data:s,$data:o,schema:a,schemaCode:i,it:c}=e,{opts:l,errSchemaPath:u,schemaEnv:d,self:f}=c;l.validateFormats&&(o?function(){const o=r.scopeValue("formats",{ref:f.formats,code:l.code.formats}),a=r.const("fDef",n._`${o}[${i}]`),c=r.let("fType"),u=r.let("format");r.if(n._`typeof ${a} == "object" && !(${a} instanceof RegExp)`,()=>r.assign(c,n._`${a}.type || "string"`).assign(u,n._`${a}.validate`),()=>r.assign(c,n._`"string"`).assign(u,a)),e.fail$data((0,n.or)(!1===l.strictSchema?n.nil:n._`${i} && !${u}`,function(){const e=d.$async?n._`(${a}.async ? await ${u}(${s}) : ${u}(${s}))`:n._`${u}(${s})`,r=n._`(typeof ${u} == "function" ? ${e} : ${u}.test(${s}))`;return n._`${u} && ${u} !== true && ${c} === ${t} && !${r}`}()))}():function(){const o=f.formats[a];if(!o)return void function(){if(!1!==l.strictSchema)throw new Error(e());function e(){return`unknown format "${a}" ignored in schema at path "${u}"`}f.logger.warn(e())}();if(!0===o)return;const[i,c,p]=function(e){const t=e instanceof RegExp?(0,n.regexpCode)(e):l.code.formats?n._`${l.code.formats}${(0,n.getProperty)(a)}`:void 0,s=r.scopeValue("formats",{key:a,ref:e,code:t});return"object"!=typeof e||e instanceof RegExp?["string",e,s]:[e.type||"string",e.validate,n._`${s}.validate`]}(o);i===t&&e.pass(function(){if("object"==typeof o&&!(o instanceof RegExp)&&o.async){if(!d.$async)throw new Error("async format in sync schema");return n._`await ${p}(${s})`}return"function"==typeof c?n._`${p}(${s})`:n._`${p}.test(${s})`}())}())}};t.default=s},7532(e,t,r){const n=[r(4737).default];t.default=n},9857(e,t){t.contentVocabulary=t.metadataVocabulary=void 0,t.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"],t.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]},7935(e,t,r){const n=r(9029),s=r(4227),o=r(6250),a={keyword:"const",$data:!0,error:{message:"must be equal to constant",params:({schemaCode:e})=>n._`{allowedValue: ${e}}`},code(e){const{gen:t,data:r,$data:a,schemaCode:i,schema:c}=e;a||c&&"object"==typeof c?e.fail$data(n._`!${(0,s.useFunc)(t,o.default)}(${r}, ${i})`):e.fail(n._`${c} !== ${r}`)}};t.default=a},8643(e,t,r){const n=r(9029),s=r(4227),o=r(6250),a={keyword:"enum",schemaType:"array",$data:!0,error:{message:"must be equal to one of the allowed values",params:({schemaCode:e})=>n._`{allowedValues: ${e}}`},code(e){const{gen:t,data:r,$data:a,schema:i,schemaCode:c,it:l}=e;if(!a&&0===i.length)throw new Error("enum must have non-empty array");const u=i.length>=l.opts.loopEnum;let d;const f=()=>null!=d?d:d=(0,s.useFunc)(t,o.default);let p;if(u||a)p=t.let("valid"),e.block$data(p,function(){t.assign(p,!1),t.forOf("v",c,e=>t.if(n._`${f()}(${r}, ${e})`,()=>t.assign(p,!0).break()))});else{if(!Array.isArray(i))throw new Error("ajv implementation error");const e=t.const("vSchema",c);p=(0,n.or)(...i.map((t,s)=>function(e,t){const s=i[t];return"object"==typeof s&&null!==s?n._`${f()}(${r}, ${e}[${t}])`:n._`${r} === ${s}`}(e,s)))}e.pass(p)}};t.default=a},7060(e,t,r){const n=r(5882),s=r(3439),o=r(7307),a=r(422),i=r(4486),c=r(4003),l=r(1163),u=r(617),d=r(7935),f=r(8643),p=[n.default,s.default,o.default,a.default,i.default,c.default,l.default,u.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},d.default,f.default];t.default=p},1163(e,t,r){const n=r(9029),s={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:{message({keyword:e,schemaCode:t}){const r="maxItems"===e?"more":"fewer";return n.str`must NOT have ${r} than ${t} items`},params:({schemaCode:e})=>n._`{limit: ${e}}`},code(e){const{keyword:t,data:r,schemaCode:s}=e,o="maxItems"===t?n.operators.GT:n.operators.LT;e.fail$data(n._`${r}.length ${o} ${s}`)}};t.default=s},7307(e,t,r){const n=r(9029),s=r(4227),o=r(3853),a={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:{message({keyword:e,schemaCode:t}){const r="maxLength"===e?"more":"fewer";return n.str`must NOT have ${r} than ${t} characters`},params:({schemaCode:e})=>n._`{limit: ${e}}`},code(e){const{keyword:t,data:r,schemaCode:a,it:i}=e,c="maxLength"===t?n.operators.GT:n.operators.LT,l=!1===i.opts.unicode?n._`${r}.length`:n._`${(0,s.useFunc)(e.gen,o.default)}(${r})`;e.fail$data(n._`${l} ${c} ${a}`)}};t.default=a},5882(e,t,r){const n=r(9029),s=n.operators,o={maximum:{okStr:"<=",ok:s.LTE,fail:s.GT},minimum:{okStr:">=",ok:s.GTE,fail:s.LT},exclusiveMaximum:{okStr:"<",ok:s.LT,fail:s.GTE},exclusiveMinimum:{okStr:">",ok:s.GT,fail:s.LTE}},a={message:({keyword:e,schemaCode:t})=>n.str`must be ${o[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>n._`{comparison: ${o[e].okStr}, limit: ${t}}`},i={keyword:Object.keys(o),type:"number",schemaType:"number",$data:!0,error:a,code(e){const{keyword:t,data:r,schemaCode:s}=e;e.fail$data(n._`${r} ${o[t].fail} ${s} || isNaN(${r})`)}};t.default=i},4486(e,t,r){const n=r(9029),s={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:{message({keyword:e,schemaCode:t}){const r="maxProperties"===e?"more":"fewer";return n.str`must NOT have ${r} than ${t} properties`},params:({schemaCode:e})=>n._`{limit: ${e}}`},code(e){const{keyword:t,data:r,schemaCode:s}=e,o="maxProperties"===t?n.operators.GT:n.operators.LT;e.fail$data(n._`Object.keys(${r}).length ${o} ${s}`)}};t.default=s},3439(e,t,r){const n=r(9029),s={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:{message:({schemaCode:e})=>n.str`must be multiple of ${e}`,params:({schemaCode:e})=>n._`{multipleOf: ${e}}`},code(e){const{gen:t,data:r,schemaCode:s,it:o}=e,a=o.opts.multipleOfPrecision,i=t.let("res"),c=a?n._`Math.abs(Math.round(${i}) - ${i}) > 1e-${a}`:n._`${i} !== parseInt(${i})`;e.fail$data(n._`(${s} === 0 || (${i} = ${r}/${s}, ${c}))`)}};t.default=s},422(e,t,r){const n=r(5765),s=r(4227),o=r(9029),a={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:{message:({schemaCode:e})=>o.str`must match pattern "${e}"`,params:({schemaCode:e})=>o._`{pattern: ${e}}`},code(e){const{gen:t,data:r,$data:a,schema:i,schemaCode:c,it:l}=e,u=l.opts.unicodeRegExp?"u":"";if(a){const{regExp:n}=l.opts.code,a="new RegExp"===n.code?o._`new RegExp`:(0,s.useFunc)(t,n),i=t.let("valid");t.try(()=>t.assign(i,o._`${a}(${c}, ${u}).test(${r})`),()=>t.assign(i,!1)),e.fail$data(o._`!${i}`)}else{const t=(0,n.usePattern)(e,i);e.fail$data(o._`!${t}.test(${r})`)}}};t.default=a},4003(e,t,r){const n=r(5765),s=r(9029),o=r(4227),a={keyword:"required",type:"object",schemaType:"array",$data:!0,error:{message:({params:{missingProperty:e}})=>s.str`must have required property '${e}'`,params:({params:{missingProperty:e}})=>s._`{missingProperty: ${e}}`},code(e){const{gen:t,schema:r,schemaCode:a,data:i,$data:c,it:l}=e,{opts:u}=l;if(!c&&0===r.length)return;const d=r.length>=u.loopRequired;if(l.allErrors?function(){if(d||c)e.block$data(s.nil,f);else for(const t of r)(0,n.checkReportMissingProp)(e,t)}():function(){const o=t.let("missing");if(d||c){const r=t.let("valid",!0);e.block$data(r,()=>function(r,o){e.setParams({missingProperty:r}),t.forOf(r,a,()=>{t.assign(o,(0,n.propertyInData)(t,i,r,u.ownProperties)),t.if((0,s.not)(o),()=>{e.error(),t.break()})},s.nil)}(o,r)),e.ok(r)}else t.if((0,n.checkMissingProp)(e,r,o)),(0,n.reportMissingProp)(e,o),t.else()}(),u.strictRequired){const t=e.parentSchema.properties,{definedProperties:n}=e.it;for(const e of r)if(void 0===(null==t?void 0:t[e])&&!n.has(e)){const t=`required property "${e}" is not defined at "${l.schemaEnv.baseId+l.errSchemaPath}" (strictRequired)`;(0,o.checkStrictMode)(l,t,l.opts.strictRequired)}}function f(){t.forOf("prop",a,r=>{e.setParams({missingProperty:r}),t.if((0,n.noPropertyInData)(t,i,r,u.ownProperties),()=>e.error())})}}};t.default=a},617(e,t,r){const n=r(208),s=r(9029),o=r(4227),a=r(6250),i={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:{message:({params:{i:e,j:t}})=>s.str`must NOT have duplicate items (items ## ${t} and ${e} are identical)`,params:({params:{i:e,j:t}})=>s._`{i: ${e}, j: ${t}}`},code(e){const{gen:t,data:r,$data:i,schema:c,parentSchema:l,schemaCode:u,it:d}=e;if(!i&&!c)return;const f=t.let("valid"),p=l.items?(0,n.getSchemaTypes)(l.items):[];function h(o,a){const i=t.name("item"),c=(0,n.checkDataTypes)(p,i,d.opts.strictNumbers,n.DataType.Wrong),l=t.const("indices",s._`{}`);t.for(s._`;${o}--;`,()=>{t.let(i,s._`${r}[${o}]`),t.if(c,s._`continue`),p.length>1&&t.if(s._`typeof ${i} == "string"`,s._`${i} += "_"`),t.if(s._`typeof ${l}[${i}] == "number"`,()=>{t.assign(a,s._`${l}[${i}]`),e.error(),t.assign(f,!1).break()}).code(s._`${l}[${i}] = ${o}`)})}function m(n,i){const c=(0,o.useFunc)(t,a.default),l=t.name("outer");t.label(l).for(s._`;${n}--;`,()=>t.for(s._`${i} = ${n}; ${i}--;`,()=>t.if(s._`${c}(${r}[${n}], ${r}[${i}])`,()=>{e.error(),t.assign(f,!1).break(l)})))}e.block$data(f,function(){const n=t.let("i",s._`${r}.length`),o=t.let("j");e.setParams({i:n,j:o}),t.assign(f,!0),t.if(s._`${n} > 1`,()=>(p.length>0&&!p.some(e=>"object"===e||"array"===e)?h:m)(n,o))},s._`${u} === false`),e.ok(f)}};t.default=i},2017(e){e.exports=function e(t,r){if(t===r)return!0;if(t&&r&&"object"==typeof t&&"object"==typeof r){if(t.constructor!==r.constructor)return!1;var n,s,o;if(Array.isArray(t)){if((n=t.length)!=r.length)return!1;for(s=n;0!==s--;)if(!e(t[s],r[s]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if((n=(o=Object.keys(t)).length)!==Object.keys(r).length)return!1;for(s=n;0!==s--;)if(!Object.prototype.hasOwnProperty.call(r,o[s]))return!1;for(s=n;0!==s--;){var a=o[s];if(!e(t[a],r[a]))return!1}return!0}return t!=t&&r!=r}},7106(e){var t=e.exports=function(e,t,n){"function"==typeof t&&(n=t,t={}),r(t,"function"==typeof(n=t.cb||n)?n:n.pre||function(){},n.post||function(){},e,"",e)};function r(e,s,o,a,i,c,l,u,d,f){if(a&&"object"==typeof a&&!Array.isArray(a)){for(var p in s(a,i,c,l,u,d,f),a){var h=a[p];if(Array.isArray(h)){if(p in t.arrayKeywords)for(var m=0;m<h.length;m++)r(e,s,o,h[m],i+"/"+p+"/"+m,c,i,p,a,m)}else if(p in t.propsKeywords){if(h&&"object"==typeof h)for(var g in h)r(e,s,o,h[g],i+"/"+p+"/"+n(g),c,i,p,a,g)}else(p in t.keywords||e.allKeys&&!(p in t.skipKeywords))&&r(e,s,o,h,i+"/"+p,c,i,p,a)}o(a,i,c,l,u,d,f)}}function n(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}t.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0},t.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},t.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},t.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0}},5211(e,t,r){function n(e){return 32===e||9===e}function s(e){return 10===e||13===e}function o(e){return e>=48&&e<=57}var a;r.d(t,{findNodeAtLocation:()=>m,parse:()=>p,parseTree:()=>h,printParseErrorCode:()=>y}),function(e){e[e.lineFeed=10]="lineFeed",e[e.carriageReturn=13]="carriageReturn",e[e.space=32]="space",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.asterisk=42]="asterisk",e[e.backslash=92]="backslash",e[e.closeBrace=125]="closeBrace",e[e.closeBracket=93]="closeBracket",e[e.colon=58]="colon",e[e.comma=44]="comma",e[e.dot=46]="dot",e[e.doubleQuote=34]="doubleQuote",e[e.minus=45]="minus",e[e.openBrace=123]="openBrace",e[e.openBracket=91]="openBracket",e[e.plus=43]="plus",e[e.slash=47]="slash",e[e.formFeed=12]="formFeed",e[e.tab=9]="tab"}(a||(a={})),new Array(20).fill(0).map((e,t)=>" ".repeat(t));const i=200;var c,l,u;function d(e,t,r=c.DEFAULT){const a=function(e,t=!1){const r=e.length;let a=0,i="",c=0,l=16,u=0,d=0,f=0,p=0,h=0;function m(t,r){let n=0,s=0;for(;n<t||!r;){let t=e.charCodeAt(a);if(t>=48&&t<=57)s=16*s+t-48;else if(t>=65&&t<=70)s=16*s+t-65+10;else{if(!(t>=97&&t<=102))break;s=16*s+t-97+10}a++,n++}return n<t&&(s=-1),s}function g(){if(i="",h=0,c=a,d=u,p=f,a>=r)return c=r,l=17;let t=e.charCodeAt(a);if(n(t)){do{a++,i+=String.fromCharCode(t),t=e.charCodeAt(a)}while(n(t));return l=15}if(s(t))return a++,i+=String.fromCharCode(t),13===t&&10===e.charCodeAt(a)&&(a++,i+="\n"),u++,f=a,l=14;switch(t){case 123:return a++,l=1;case 125:return a++,l=2;case 91:return a++,l=3;case 93:return a++,l=4;case 58:return a++,l=6;case 44:return a++,l=5;case 34:return a++,i=function(){let t="",n=a;for(;;){if(a>=r){t+=e.substring(n,a),h=2;break}const o=e.charCodeAt(a);if(34===o){t+=e.substring(n,a),a++;break}if(92!==o){if(o>=0&&o<=31){if(s(o)){t+=e.substring(n,a),h=2;break}h=6}a++}else{if(t+=e.substring(n,a),a++,a>=r){h=2;break}switch(e.charCodeAt(a++)){case 34:t+='"';break;case 92:t+="\\";break;case 47:t+="/";break;case 98:t+="\b";break;case 102:t+="\f";break;case 110:t+="\n";break;case 114:t+="\r";break;case 116:t+="\t";break;case 117:const e=m(4,!0);e>=0?t+=String.fromCharCode(e):h=4;break;default:h=5}n=a}}return t}(),l=10;case 47:const n=a-1;if(47===e.charCodeAt(a+1)){for(a+=2;a<r&&!s(e.charCodeAt(a));)a++;return i=e.substring(n,a),l=12}if(42===e.charCodeAt(a+1)){a+=2;const t=r-1;let o=!1;for(;a<t;){const t=e.charCodeAt(a);if(42===t&&47===e.charCodeAt(a+1)){a+=2,o=!0;break}a++,s(t)&&(13===t&&10===e.charCodeAt(a)&&a++,u++,f=a)}return o||(a++,h=1),i=e.substring(n,a),l=13}return i+=String.fromCharCode(t),a++,l=16;case 45:if(i+=String.fromCharCode(t),a++,a===r||!o(e.charCodeAt(a)))return l=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return i+=function(){let t=a;if(48===e.charCodeAt(a))a++;else for(a++;a<e.length&&o(e.charCodeAt(a));)a++;if(a<e.length&&46===e.charCodeAt(a)){if(a++,!(a<e.length&&o(e.charCodeAt(a))))return h=3,e.substring(t,a);for(a++;a<e.length&&o(e.charCodeAt(a));)a++}let r=a;if(a<e.length&&(69===e.charCodeAt(a)||101===e.charCodeAt(a)))if(a++,(a<e.length&&43===e.charCodeAt(a)||45===e.charCodeAt(a))&&a++,a<e.length&&o(e.charCodeAt(a))){for(a++;a<e.length&&o(e.charCodeAt(a));)a++;r=a}else h=3;return e.substring(t,r)}(),l=11;default:for(;a<r&&y(t);)a++,t=e.charCodeAt(a);if(c!==a){switch(i=e.substring(c,a),i){case"true":return l=8;case"false":return l=9;case"null":return l=7}return l=16}return i+=String.fromCharCode(t),a++,l=16}}function y(e){if(n(e)||s(e))return!1;switch(e){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}return{setPosition:function(e){a=e,i="",c=0,l=16,h=0},getPosition:()=>a,scan:t?function(){let e;do{e=g()}while(e>=12&&e<=15);return e}:g,getToken:()=>l,getTokenValue:()=>i,getTokenOffset:()=>c,getTokenLength:()=>a-c,getTokenStartLine:()=>d,getTokenStartCharacter:()=>c-p,getTokenError:()=>h}}(e,!1),i=[];let l=0;function u(e){return e?t=>0===l&&e(t,a.getTokenOffset(),a.getTokenLength(),a.getTokenStartLine(),a.getTokenStartCharacter()):()=>!0}function d(e){return e?t=>0===l&&e(t,a.getTokenOffset(),a.getTokenLength(),a.getTokenStartLine(),a.getTokenStartCharacter(),()=>i.slice()):()=>!0}function f(e){return e?()=>{l>0?l++:!1===e(a.getTokenOffset(),a.getTokenLength(),a.getTokenStartLine(),a.getTokenStartCharacter(),()=>i.slice())&&(l=1)}:()=>!0}function p(e){return e?()=>{l>0&&l--,0===l&&e(a.getTokenOffset(),a.getTokenLength(),a.getTokenStartLine(),a.getTokenStartCharacter())}:()=>!0}const h=f(t.onObjectBegin),m=d(t.onObjectProperty),g=p(t.onObjectEnd),y=f(t.onArrayBegin),v=p(t.onArrayEnd),$=d(t.onLiteralValue),b=u(t.onSeparator),_=(E=t.onComment)?()=>0===l&&E(a.getTokenOffset(),a.getTokenLength(),a.getTokenStartLine(),a.getTokenStartCharacter()):()=>!0,w=u(t.onError);var E;const S=r&&r.disallowComments,k=r&&r.allowTrailingComma;function x(){for(;;){const e=a.scan();switch(a.getTokenError()){case 4:C(14);break;case 5:C(15);break;case 3:C(13);break;case 1:S||C(11);break;case 2:C(12);break;case 6:C(16)}switch(e){case 12:case 13:S?C(10):_();break;case 16:C(1);break;case 15:case 14:break;default:return e}}}function C(e,t=[],r=[]){if(w(e),t.length+r.length>0){let e=a.getToken();for(;17!==e;){if(-1!==t.indexOf(e)){x();break}if(-1!==r.indexOf(e))break;e=x()}}}function O(e){const t=a.getTokenValue();return e?$(t):(m(t),i.push(t)),x(),!0}function P(){return 10!==a.getToken()?(C(3,[],[2,5]),!1):(O(!1),6===a.getToken()?(b(":"),x(),R()||C(4,[],[2,5])):C(5,[],[2,5]),i.pop(),!0)}function R(){switch(a.getToken()){case 3:return function(){y(),x();let e=!0,t=!1;for(;4!==a.getToken()&&17!==a.getToken();){if(5===a.getToken()){if(t||C(4,[],[]),b(","),x(),4===a.getToken()&&k)break}else t&&C(6,[],[]);e?(i.push(0),e=!1):i[i.length-1]++,R()||C(4,[],[4,5]),t=!0}return v(),e||i.pop(),4!==a.getToken()?C(8,[4],[]):x(),!0}();case 1:return function(){h(),x();let e=!1;for(;2!==a.getToken()&&17!==a.getToken();){if(5===a.getToken()){if(e||C(4,[],[]),b(","),x(),2===a.getToken()&&k)break}else e&&C(6,[],[]);P()||C(4,[],[2,5]),e=!0}return g(),2!==a.getToken()?C(7,[2],[]):x(),!0}();case 10:return O(!0);default:return function(){switch(a.getToken()){case 11:const e=a.getTokenValue();let t=Number(e);isNaN(t)&&(C(2),t=0),$(t);break;case 7:$(null);break;case 8:$(!0);break;case 9:$(!1);break;default:return!1}return x(),!0}()}}return x(),17===a.getToken()?!!r.allowEmptyContent||(C(4,[],[]),!1):R()?(17!==a.getToken()&&C(9,[],[]),!0):(C(4,[],[]),!1)}function f(e){switch(typeof e){case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"object":return e?Array.isArray(e)?"array":"object":"null";default:return"null"}}new Array(i).fill(0).map((e,t)=>"\n"+" ".repeat(t)),new Array(i).fill(0).map((e,t)=>"\r"+" ".repeat(t)),new Array(i).fill(0).map((e,t)=>"\r\n"+" ".repeat(t)),new Array(i).fill(0).map((e,t)=>"\n"+"\t".repeat(t)),new Array(i).fill(0).map((e,t)=>"\r"+"\t".repeat(t)),new Array(i).fill(0).map((e,t)=>"\r\n"+"\t".repeat(t)),function(e){e.DEFAULT={allowTrailingComma:!1}}(c||(c={})),function(e){e[e.None=0]="None",e[e.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=2]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",e[e.InvalidUnicode=4]="InvalidUnicode",e[e.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",e[e.InvalidCharacter=6]="InvalidCharacter"}(l||(l={})),function(e){e[e.OpenBraceToken=1]="OpenBraceToken",e[e.CloseBraceToken=2]="CloseBraceToken",e[e.OpenBracketToken=3]="OpenBracketToken",e[e.CloseBracketToken=4]="CloseBracketToken",e[e.CommaToken=5]="CommaToken",e[e.ColonToken=6]="ColonToken",e[e.NullKeyword=7]="NullKeyword",e[e.TrueKeyword=8]="TrueKeyword",e[e.FalseKeyword=9]="FalseKeyword",e[e.StringLiteral=10]="StringLiteral",e[e.NumericLiteral=11]="NumericLiteral",e[e.LineCommentTrivia=12]="LineCommentTrivia",e[e.BlockCommentTrivia=13]="BlockCommentTrivia",e[e.LineBreakTrivia=14]="LineBreakTrivia",e[e.Trivia=15]="Trivia",e[e.Unknown=16]="Unknown",e[e.EOF=17]="EOF"}(u||(u={}));const p=function(e,t=[],r=c.DEFAULT){let n=null,s=[];const o=[];function a(e){Array.isArray(s)?s.push(e):null!==n&&(s[n]=e)}return d(e,{onObjectBegin:()=>{const e={};a(e),o.push(s),s=e,n=null},onObjectProperty:e=>{n=e},onObjectEnd:()=>{s=o.pop()},onArrayBegin:()=>{const e=[];a(e),o.push(s),s=e,n=null},onArrayEnd:()=>{s=o.pop()},onLiteralValue:a,onError:(e,r,n)=>{t.push({error:e,offset:r,length:n})}},r),s[0]},h=function(e,t=[],r=c.DEFAULT){let n={type:"array",offset:-1,length:-1,children:[],parent:void 0};function s(e){"property"===n.type&&(n.length=e-n.offset,n=n.parent)}function o(e){return n.children.push(e),e}d(e,{onObjectBegin:e=>{n=o({type:"object",offset:e,length:-1,parent:n,children:[]})},onObjectProperty:(e,t,r)=>{n=o({type:"property",offset:t,length:-1,parent:n,children:[]}),n.children.push({type:"string",value:e,offset:t,length:r,parent:n})},onObjectEnd:(e,t)=>{s(e+t),n.length=e+t-n.offset,n=n.parent,s(e+t)},onArrayBegin:(e,t)=>{n=o({type:"array",offset:e,length:-1,parent:n,children:[]})},onArrayEnd:(e,t)=>{n.length=e+t-n.offset,n=n.parent,s(e+t)},onLiteralValue:(e,t,r)=>{o({type:f(e),offset:t,length:r,parent:n,value:e}),s(t+r)},onSeparator:(e,t,r)=>{"property"===n.type&&(":"===e?n.colonOffset=t:","===e&&s(t))},onError:(e,r,n)=>{t.push({error:e,offset:r,length:n})}},r);const a=n.children[0];return a&&delete a.parent,a},m=function(e,t){if(!e)return;let r=e;for(let e of t)if("string"==typeof e){if("object"!==r.type||!Array.isArray(r.children))return;let t=!1;for(const n of r.children)if(Array.isArray(n.children)&&n.children[0].value===e&&2===n.children.length){r=n.children[1],t=!0;break}if(!t)return}else{const t=e;if("array"!==r.type||t<0||!Array.isArray(r.children)||t>=r.children.length)return;r=r.children[t]}return r};var g;function y(e){switch(e){case 1:return"InvalidSymbol";case 2:return"InvalidNumberFormat";case 3:return"PropertyNameExpected";case 4:return"ValueExpected";case 5:return"ColonExpected";case 6:return"CommaExpected";case 7:return"CloseBraceExpected";case 8:return"CloseBracketExpected";case 9:return"EndOfFileExpected";case 10:return"InvalidCommentToken";case 11:return"UnexpectedEndOfComment";case 12:return"UnexpectedEndOfString";case 13:return"UnexpectedEndOfNumber";case 14:return"InvalidUnicode";case 15:return"InvalidEscapeCharacter";case 16:return"InvalidCharacter"}return"<unknown ParseErrorCode>"}!function(e){e[e.InvalidSymbol=1]="InvalidSymbol",e[e.InvalidNumberFormat=2]="InvalidNumberFormat",e[e.PropertyNameExpected=3]="PropertyNameExpected",e[e.ValueExpected=4]="ValueExpected",e[e.ColonExpected=5]="ColonExpected",e[e.CommaExpected=6]="CommaExpected",e[e.CloseBraceExpected=7]="CloseBraceExpected",e[e.CloseBracketExpected=8]="CloseBracketExpected",e[e.EndOfFileExpected=9]="EndOfFileExpected",e[e.InvalidCommentToken=10]="InvalidCommentToken",e[e.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=12]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",e[e.InvalidUnicode=14]="InvalidUnicode",e[e.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",e[e.InvalidCharacter=16]="InvalidCharacter"}(g||(g={}))},5157(e,t,r){const n=r(6675),s=r(280);function o(e,t,r=!1){return!t||null!==t.windows&&void 0!==t.windows||(t={...t,windows:s.isWindows()}),n(e,t,r)}Object.assign(o,n),e.exports=o},3940(e){const t="\\\\/",r=`[^${t}]`,n="\\.",s="\\/",o="[^/]",a=`(?:${s}|$)`,i=`(?:^|${s})`,c=`${n}{1,2}${a}`,l={DOT_LITERAL:n,PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:s,ONE_CHAR:"(?=.)",QMARK:o,END_ANCHOR:a,DOTS_SLASH:c,NO_DOT:`(?!${n})`,NO_DOTS:`(?!${i}${c})`,NO_DOT_SLASH:`(?!${n}{0,1}${a})`,NO_DOTS_SLASH:`(?!${c})`,QMARK_NO_DOT:`[^.${s}]`,STAR:`${o}*?`,START_ANCHOR:i,SEP:"/"},u={...l,SLASH_LITERAL:`[${t}]`,QMARK:r,STAR:`${r}*?`,DOTS_SLASH:`${n}{1,2}(?:[${t}]|$)`,NO_DOT:`(?!${n})`,NO_DOTS:`(?!(?:^|[${t}])${n}{1,2}(?:[${t}]|$))`,NO_DOT_SLASH:`(?!${n}{0,1}(?:[${t}]|$))`,NO_DOTS_SLASH:`(?!${n}{1,2}(?:[${t}]|$))`,QMARK_NO_DOT:`[^.${t}]`,START_ANCHOR:`(?:^|[${t}])`,END_ANCHOR:`(?:[${t}]|$)`,SEP:"\\"};e.exports={DEFAULT_MAX_EXTGLOB_RECURSION:0,MAX_LENGTH:65536,POSIX_REGEX_SOURCE:{__proto__:null,alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"},REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{__proto__:null,"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,extglobChars:e=>({"!":{type:"negate",open:"(?:(?!(?:",close:`))${e.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}),globChars:e=>!0===e?u:l}},1154(e,t,r){const n=r(3940),s=r(280),{MAX_LENGTH:o,POSIX_REGEX_SOURCE:a,REGEX_NON_SPECIAL_CHARS:i,REGEX_SPECIAL_CHARS_BACKREF:c,REPLACEMENTS:l}=n,u=(e,t)=>{if("function"==typeof t.expandRange)return t.expandRange(...e,t);e.sort();const r=`[${e.join("-")}]`;try{new RegExp(r)}catch(t){return e.map(e=>s.escapeRegex(e)).join("..")}return r},d=(e,t)=>`Missing ${e}: "${t}" - use "\\\\${t}" to match literal characters`,f=e=>{const t=[];let r=0,n=0,s=0,o="",a=!1;for(const i of e)if(!0!==a)if("\\"!==i)if('"'!==i){if(0===s)if("["===i)r++;else if("]"===i&&r>0)r--;else if(0===r)if("("===i)n++;else if(")"===i&&n>0)n--;else if("|"===i&&0===n){t.push(o),o="";continue}o+=i}else s=1===s?0:1,o+=i;else o+=i,a=!0;else o+=i,a=!1;return t.push(o),t},p=e=>{let t=e.trim(),r=!0;for(;!0===r;)r=!1,/^@\([^\\()[\]{}|]+\)$/.test(t)&&(t=t.slice(2,-1),r=!0);if((e=>{let t=!1;for(const r of e)if(!0!==t)if("\\"!==r){if(/[?*+@!()[\]{}]/.test(r))return!1}else t=!0;else t=!1;return!0})(t))return t.replace(/\\(.)/g,"$1")},h=(e,t=!0)=>{if("+"!==e[0]&&"*"!==e[0]||"("!==e[1])return;let r=0,n=0,s=0,o=!1;for(let a=1;a<e.length;a++){const i=e[a];if(!0!==o)if("\\"!==i)if('"'!==i){if(1!==s)if("["!==i){if("]"===i&&r>0)r--;else if(!(r>0))if("("!==i){if(")"===i&&(n--,0===n)){if(!0===t&&a!==e.length-1)return;return{type:e[0],body:e.slice(2,a),end:a}}}else n++}else r++}else s=1===s?0:1;else o=!0;else o=!1}},m=e=>{let t=0;const r=[];for(;t<e.length;){const n=h(e.slice(t),!1);if(!n||"*"!==n.type)return;const s=f(n.body).map(e=>e.trim());if(1!==s.length)return;const o=p(s[0]);if(!o||1!==o.length)return;r.push(o),t+=n.end+1}if(!(r.length<1))return r},g=e=>{let t=0,r=e.trim(),n=h(r);for(;n;)t++,r=n.body.trim(),n=h(r);return t},y=(e,t)=>{if("string"!=typeof e)throw new TypeError("Expected a string");e=l[e]||e;const r={...t},h="number"==typeof r.maxLength?Math.min(o,r.maxLength):o;let v=e.length;if(v>h)throw new SyntaxError(`Input length: ${v}, exceeds maximum allowed length: ${h}`);const $={type:"bos",value:"",output:r.prepend||""},b=[$],_=r.capture?"":"?:",w=n.globChars(r.windows),E=n.extglobChars(w),{DOT_LITERAL:S,PLUS_LITERAL:k,SLASH_LITERAL:x,ONE_CHAR:C,DOTS_SLASH:O,NO_DOT:P,NO_DOT_SLASH:R,NO_DOTS_SLASH:A,QMARK:T,QMARK_NO_DOT:N,STAR:j,START_ANCHOR:I}=w,D=e=>`(${_}(?:(?!${I}${e.dot?O:S}).)*?)`,L=r.dot?"":P,M=r.dot?T:N;let F=!0===r.bash?D(r):j;r.capture&&(F=`(${F})`),"boolean"==typeof r.noext&&(r.noextglob=r.noext);const H={input:e,index:-1,start:0,dot:!0===r.dot,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:b};e=s.removePrefix(e,H),v=e.length;const q=[],U=[],V=[];let B,K=$;const z=()=>H.index===v-1,G=H.peek=(t=1)=>e[H.index+t],J=H.advance=()=>e[++H.index]||"",Q=()=>e.slice(H.index+1),W=(e="",t=0)=>{H.consumed+=e,H.index+=t},X=e=>{H.output+=null!=e.output?e.output:e.value,W(e.value)},Y=()=>{let e=1;for(;"!"===G()&&("("!==G(2)||"?"===G(3));)J(),H.start++,e++;return e%2!=0&&(H.negated=!0,H.start++,!0)},Z=e=>{H[e]++,V.push(e)},ee=e=>{H[e]--,V.pop()},te=e=>{if("globstar"===K.type){const t=H.braces>0&&("comma"===e.type||"brace"===e.type),r=!0===e.extglob||q.length&&("pipe"===e.type||"paren"===e.type);"slash"===e.type||"paren"===e.type||t||r||(H.output=H.output.slice(0,-K.output.length),K.type="star",K.value="*",K.output=F,H.output+=K.output)}if(q.length&&"paren"!==e.type&&(q[q.length-1].inner+=e.value),(e.value||e.output)&&X(e),K&&"text"===K.type&&"text"===e.type)return K.output=(K.output||K.value)+e.value,void(K.value+=e.value);e.prev=K,b.push(e),K=e},re=(e,t)=>{const n={...E[t],conditions:1,inner:""};n.prev=K,n.parens=H.parens,n.output=H.output,n.startIndex=H.index,n.tokensIndex=b.length;const s=(r.capture?"(":"")+n.open;Z("parens"),te({type:e,value:t,output:H.output?"":C}),te({type:"paren",extglob:!0,value:J(),output:s}),q.push(n)},ne=o=>{const a=e.slice(o.startIndex,H.index+1),i=((e,t)=>{if(!1===t.maxExtglobRecursion)return{risky:!1};const r="number"==typeof t.maxExtglobRecursion?t.maxExtglobRecursion:n.DEFAULT_MAX_EXTGLOB_RECURSION,o=f(e).map(e=>e.trim());if(o.length>1&&(o.some(e=>""===e)||o.some(e=>/^[*?]+$/.test(e))||(e=>{const t=e.map(p).filter(Boolean);for(let e=0;e<t.length;e++)for(let r=e+1;r<t.length;r++){const n=t[e],s=t[r],o=n[0];if(o&&n===o.repeat(n.length)&&s===o.repeat(s.length)&&(n===s||n.startsWith(s)||s.startsWith(n)))return!0}return!1})(o)))return{risky:!0};const a=[];let i=!1,c=!0;for(const e of o){const t=m(e);if(t){i=!0,a.push(...t);continue}const n=p(e);if(n&&1===n.length)a.push(n);else if(c=!1,g(e)>r)return{risky:!0}}return i?c?{risky:!0,safeOutput:(l=[...new Set(a)],`${1===l.length?s.escapeRegex(l[0]):`[${l.map(e=>s.escapeRegex(e)).join("")}]`}*`)}:{risky:!0}:{risky:!1};var l})(e.slice(o.startIndex+2,H.index),r);if(("plus"===o.type||"star"===o.type)&&i.risky){const e=i.safeOutput?(o.output?"":C)+(r.capture?`(${i.safeOutput})`:i.safeOutput):void 0,t=b[o.tokensIndex];t.type="text",t.value=a,t.output=e||s.escapeRegex(a);for(let e=o.tokensIndex+1;e<b.length;e++)b[e].value="",b[e].output="",delete b[e].suffix;return H.output=o.output+t.output,H.backtrack=!0,te({type:"paren",extglob:!0,value:B,output:""}),void ee("parens")}let c,l=o.close+(r.capture?")":"");if("negate"===o.type){let e=F;if(o.inner&&o.inner.length>1&&o.inner.includes("/")&&(e=D(r)),(e!==F||z()||/^\)+$/.test(Q()))&&(l=o.close=`)$))${e}`),o.inner.includes("*")&&(c=Q())&&/^\.[^\\/.]+$/.test(c)){const r=y(c,{...t,fastpaths:!1}).output;l=o.close=`)${r})${e})`}"bos"===o.prev.type&&(H.negatedExtglob=!0)}te({type:"paren",extglob:!0,value:B,output:l}),ee("parens")};if(!1!==r.fastpaths&&!/(^[*!]|[/()[\]{}"])/.test(e)){let n=!1,o=e.replace(c,(e,t,r,s,o,a)=>"\\"===s?(n=!0,e):"?"===s?t?t+s+(o?T.repeat(o.length):""):0===a?M+(o?T.repeat(o.length):""):T.repeat(r.length):"."===s?S.repeat(r.length):"*"===s?t?t+s+(o?F:""):F:t?e:`\\${e}`);return!0===n&&(o=!0===r.unescape?o.replace(/\\/g,""):o.replace(/\\+/g,e=>e.length%2==0?"\\\\":e?"\\":"")),o===e&&!0===r.contains?(H.output=e,H):(H.output=s.wrapOutput(o,H,t),H)}for(;!z();){if(B=J(),"\0"===B)continue;if("\\"===B){const e=G();if("/"===e&&!0!==r.bash)continue;if("."===e||";"===e)continue;if(!e){B+="\\",te({type:"text",value:B});continue}const t=/^\\+/.exec(Q());let n=0;if(t&&t[0].length>2&&(n=t[0].length,H.index+=n,n%2!=0&&(B+="\\")),!0===r.unescape?B=J():B+=J(),0===H.brackets){te({type:"text",value:B});continue}}if(H.brackets>0&&("]"!==B||"["===K.value||"[^"===K.value)){if(!1!==r.posix&&":"===B){const e=K.value.slice(1);if(e.includes("[")&&(K.posix=!0,e.includes(":"))){const e=K.value.lastIndexOf("["),t=K.value.slice(0,e),r=K.value.slice(e+2),n=a[r];if(n){K.value=t+n,H.backtrack=!0,J(),$.output||1!==b.indexOf(K)||($.output=C);continue}}}("["===B&&":"!==G()||"-"===B&&"]"===G())&&(B=`\\${B}`),"]"!==B||"["!==K.value&&"[^"!==K.value||(B=`\\${B}`),!0===r.posix&&"!"===B&&"["===K.value&&(B="^"),K.value+=B,X({value:B});continue}if(1===H.quotes&&'"'!==B){B=s.escapeRegex(B),K.value+=B,X({value:B});continue}if('"'===B){H.quotes=1===H.quotes?0:1,!0===r.keepQuotes&&te({type:"text",value:B});continue}if("("===B){Z("parens"),te({type:"paren",value:B});continue}if(")"===B){if(0===H.parens&&!0===r.strictBrackets)throw new SyntaxError(d("opening","("));const e=q[q.length-1];if(e&&H.parens===e.parens+1){ne(q.pop());continue}te({type:"paren",value:B,output:H.parens?")":"\\)"}),ee("parens");continue}if("["===B){if(!0!==r.nobracket&&Q().includes("]"))Z("brackets");else{if(!0!==r.nobracket&&!0===r.strictBrackets)throw new SyntaxError(d("closing","]"));B=`\\${B}`}te({type:"bracket",value:B});continue}if("]"===B){if(!0===r.nobracket||K&&"bracket"===K.type&&1===K.value.length){te({type:"text",value:B,output:`\\${B}`});continue}if(0===H.brackets){if(!0===r.strictBrackets)throw new SyntaxError(d("opening","["));te({type:"text",value:B,output:`\\${B}`});continue}ee("brackets");const e=K.value.slice(1);if(!0===K.posix||"^"!==e[0]||e.includes("/")||(B=`/${B}`),K.value+=B,X({value:B}),!1===r.literalBrackets||s.hasRegexChars(e))continue;const t=s.escapeRegex(K.value);if(H.output=H.output.slice(0,-K.value.length),!0===r.literalBrackets){H.output+=t,K.value=t;continue}K.value=`(${_}${t}|${K.value})`,H.output+=K.value;continue}if("{"===B&&!0!==r.nobrace){Z("braces");const e={type:"brace",value:B,output:"(",outputIndex:H.output.length,tokensIndex:H.tokens.length};U.push(e),te(e);continue}if("}"===B){const e=U[U.length-1];if(!0===r.nobrace||!e){te({type:"text",value:B,output:B});continue}let t=")";if(!0===e.dots){const e=b.slice(),n=[];for(let t=e.length-1;t>=0&&(b.pop(),"brace"!==e[t].type);t--)"dots"!==e[t].type&&n.unshift(e[t].value);t=u(n,r),H.backtrack=!0}if(!0!==e.comma&&!0!==e.dots){const r=H.output.slice(0,e.outputIndex),n=H.tokens.slice(e.tokensIndex);e.value=e.output="\\{",B=t="\\}",H.output=r;for(const e of n)H.output+=e.output||e.value}te({type:"brace",value:B,output:t}),ee("braces"),U.pop();continue}if("|"===B){q.length>0&&q[q.length-1].conditions++,te({type:"text",value:B});continue}if(","===B){let e=B;const t=U[U.length-1];t&&"braces"===V[V.length-1]&&(t.comma=!0,e="|"),te({type:"comma",value:B,output:e});continue}if("/"===B){if("dot"===K.type&&H.index===H.start+1){H.start=H.index+1,H.consumed="",H.output="",b.pop(),K=$;continue}te({type:"slash",value:B,output:x});continue}if("."===B){if(H.braces>0&&"dot"===K.type){"."===K.value&&(K.output=S);const e=U[U.length-1];K.type="dots",K.output+=B,K.value+=B,e.dots=!0;continue}if(H.braces+H.parens===0&&"bos"!==K.type&&"slash"!==K.type){te({type:"text",value:B,output:S});continue}te({type:"dot",value:B,output:S});continue}if("?"===B){if((!K||"("!==K.value)&&!0!==r.noextglob&&"("===G()&&"?"!==G(2)){re("qmark",B);continue}if(K&&"paren"===K.type){const e=G();let t=B;("("===K.value&&!/[!=<:]/.test(e)||"<"===e&&!/<([!=]|\w+>)/.test(Q()))&&(t=`\\${B}`),te({type:"text",value:B,output:t});continue}if(!0!==r.dot&&("slash"===K.type||"bos"===K.type)){te({type:"qmark",value:B,output:N});continue}te({type:"qmark",value:B,output:T});continue}if("!"===B){if(!0!==r.noextglob&&"("===G()&&("?"!==G(2)||!/[!=<:]/.test(G(3)))){re("negate",B);continue}if(!0!==r.nonegate&&0===H.index){Y();continue}}if("+"===B){if(!0!==r.noextglob&&"("===G()&&"?"!==G(2)){re("plus",B);continue}if(K&&"("===K.value||!1===r.regex){te({type:"plus",value:B,output:k});continue}if(K&&("bracket"===K.type||"paren"===K.type||"brace"===K.type)||H.parens>0){te({type:"plus",value:B});continue}te({type:"plus",value:k});continue}if("@"===B){if(!0!==r.noextglob&&"("===G()&&"?"!==G(2)){te({type:"at",extglob:!0,value:B,output:""});continue}te({type:"text",value:B});continue}if("*"!==B){"$"!==B&&"^"!==B||(B=`\\${B}`);const e=i.exec(Q());e&&(B+=e[0],H.index+=e[0].length),te({type:"text",value:B});continue}if(K&&("globstar"===K.type||!0===K.star)){K.type="star",K.star=!0,K.value+=B,K.output=F,H.backtrack=!0,H.globstar=!0,W(B);continue}let t=Q();if(!0!==r.noextglob&&/^\([^?]/.test(t)){re("star",B);continue}if("star"===K.type){if(!0===r.noglobstar){W(B);continue}const n=K.prev,s=n.prev,o="slash"===n.type||"bos"===n.type,a=s&&("star"===s.type||"globstar"===s.type);if(!0===r.bash&&(!o||t[0]&&"/"!==t[0])){te({type:"star",value:B,output:""});continue}const i=H.braces>0&&("comma"===n.type||"brace"===n.type),c=q.length&&("pipe"===n.type||"paren"===n.type);if(!o&&"paren"!==n.type&&!i&&!c){te({type:"star",value:B,output:""});continue}for(;"/**"===t.slice(0,3);){const r=e[H.index+4];if(r&&"/"!==r)break;t=t.slice(3),W("/**",3)}const l=z()||H.parens>0&&t===")".repeat(H.parens)&&!q.some(e=>"negate"===e.type);if("bos"===n.type&&z()){K.type="globstar",K.value+=B,K.output=D(r),H.output=K.output,H.globstar=!0,W(B);continue}if("slash"===n.type&&"bos"!==n.prev.type&&!a&&l){H.output=H.output.slice(0,-(n.output+K.output).length),n.output=`(?:${n.output}`,K.type="globstar",K.output=D(r)+(r.strictSlashes?")":"|$)"),K.value+=B,H.globstar=!0,H.output+=n.output+K.output,W(B);continue}if("slash"===n.type&&"bos"!==n.prev.type&&"/"===t[0]){const e=void 0!==t[1]?"|$":"";H.output=H.output.slice(0,-(n.output+K.output).length),n.output=`(?:${n.output}`,K.type="globstar",K.output=`${D(r)}${x}|${x}${e})`,K.value+=B,H.output+=n.output+K.output,H.globstar=!0,W(B+J()),te({type:"slash",value:"/",output:""});continue}if("bos"===n.type&&"/"===t[0]){K.type="globstar",K.value+=B,K.output=`(?:^|${x}|${D(r)}${x})`,H.output=K.output,H.globstar=!0,W(B+J()),te({type:"slash",value:"/",output:""});continue}H.output=H.output.slice(0,-K.output.length),K.type="globstar",K.output=D(r),K.value+=B,H.output+=K.output,H.globstar=!0,W(B);continue}const n={type:"star",value:B,output:F};!0!==r.bash?!K||"bracket"!==K.type&&"paren"!==K.type||!0!==r.regex?(H.index!==H.start&&"slash"!==K.type&&"dot"!==K.type||("dot"===K.type?(H.output+=R,K.output+=R):!0===r.dot?(H.output+=A,K.output+=A):(H.output+=L,K.output+=L),"*"!==G()&&(H.output+=C,K.output+=C)),te(n)):(n.output=B,te(n)):(n.output=".*?","bos"!==K.type&&"slash"!==K.type||(n.output=L+n.output),te(n))}for(;H.brackets>0;){if(!0===r.strictBrackets)throw new SyntaxError(d("closing","]"));H.output=s.escapeLast(H.output,"["),ee("brackets")}for(;H.parens>0;){if(!0===r.strictBrackets)throw new SyntaxError(d("closing",")"));H.output=s.escapeLast(H.output,"("),ee("parens")}for(;H.braces>0;){if(!0===r.strictBrackets)throw new SyntaxError(d("closing","}"));H.output=s.escapeLast(H.output,"{"),ee("braces")}if(!0===r.strictSlashes||"star"!==K.type&&"bracket"!==K.type||te({type:"maybe_slash",value:"",output:`${x}?`}),!0===H.backtrack){H.output="";for(const e of H.tokens)H.output+=null!=e.output?e.output:e.value,e.suffix&&(H.output+=e.suffix)}return H};y.fastpaths=(e,t)=>{const r={...t},a="number"==typeof r.maxLength?Math.min(o,r.maxLength):o,i=e.length;if(i>a)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${a}`);e=l[e]||e;const{DOT_LITERAL:c,SLASH_LITERAL:u,ONE_CHAR:d,DOTS_SLASH:f,NO_DOT:p,NO_DOTS:h,NO_DOTS_SLASH:m,STAR:g,START_ANCHOR:y}=n.globChars(r.windows),v=r.dot?h:p,$=r.dot?m:p,b=r.capture?"":"?:";let _=!0===r.bash?".*?":g;r.capture&&(_=`(${_})`);const w=e=>!0===e.noglobstar?_:`(${b}(?:(?!${y}${e.dot?f:c}).)*?)`,E=e=>{switch(e){case"*":return`${v}${d}${_}`;case".*":return`${c}${d}${_}`;case"*.*":return`${v}${_}${c}${d}${_}`;case"*/*":return`${v}${_}${u}${d}${$}${_}`;case"**":return v+w(r);case"**/*":return`(?:${v}${w(r)}${u})?${$}${d}${_}`;case"**/*.*":return`(?:${v}${w(r)}${u})?${$}${_}${c}${d}${_}`;case"**/.*":return`(?:${v}${w(r)}${u})?${c}${d}${_}`;default:{const t=/^(.*?)\.(\w+)$/.exec(e);if(!t)return;const r=E(t[1]);if(!r)return;return r+c+t[2]}}},S=s.removePrefix(e,{negated:!1,prefix:""});let k=E(S);return k&&!0!==r.strictSlashes&&(k+=`${u}?`),k},e.exports=y},6675(e,t,r){const n=r(2608),s=r(1154),o=r(280),a=r(3940),i=(e,t,r=!1)=>{if(Array.isArray(e)){const n=e.map(e=>i(e,t,r)),s=e=>{for(const t of n){const r=t(e);if(r)return r}return!1};return s}const n=(s=e)&&"object"==typeof s&&!Array.isArray(s)&&e.tokens&&e.input;var s;if(""===e||"string"!=typeof e&&!n)throw new TypeError("Expected pattern to be a non-empty string");const o=t||{},a=o.windows,c=n?i.compileRe(e,t):i.makeRe(e,t,!1,!0),l=c.state;delete c.state;let u=()=>!1;if(o.ignore){const e={...t,ignore:null,onMatch:null,onResult:null};u=i(o.ignore,e,r)}const d=(r,n=!1)=>{const{isMatch:s,match:d,output:f}=i.test(r,c,t,{glob:e,posix:a}),p={glob:e,state:l,regex:c,posix:a,input:r,output:f,match:d,isMatch:s};return"function"==typeof o.onResult&&o.onResult(p),!1===s?(p.isMatch=!1,!!n&&p):u(r)?("function"==typeof o.onIgnore&&o.onIgnore(p),p.isMatch=!1,!!n&&p):("function"==typeof o.onMatch&&o.onMatch(p),!n||p)};return r&&(d.state=l),d};i.test=(e,t,r,{glob:n,posix:s}={})=>{if("string"!=typeof e)throw new TypeError("Expected input to be a string");if(""===e)return{isMatch:!1,output:""};const a=r||{},c=a.format||(s?o.toPosixSlashes:null);let l=e===n,u=l&&c?c(e):e;return!1===l&&(u=c?c(e):e,l=u===n),!1!==l&&!0!==a.capture||(l=!0===a.matchBase||!0===a.basename?i.matchBase(e,t,r,s):t.exec(u)),{isMatch:Boolean(l),match:l,output:u}},i.matchBase=(e,t,r,n=r&&r.windows)=>(t instanceof RegExp?t:i.makeRe(t,r)).test(o.basename(e,{windows:n})),i.isMatch=(e,t,r)=>i(t,r)(e),i.parse=(e,t)=>Array.isArray(e)?e.map(e=>i.parse(e,t)):s(e,{...t,fastpaths:!1}),i.scan=(e,t)=>n(e,t),i.compileRe=(e,t,r=!1,n=!1)=>{if(!0===r)return e.output;const s=t||{},o=s.contains?"":"^",a=s.contains?"":"$";let c=`${o}(?:${e.output})${a}`;e&&!0===e.negated&&(c=`^(?!${c}).*$`);const l=i.toRegex(c,t);return!0===n&&(l.state=e),l},i.makeRe=(e,t={},r=!1,n=!1)=>{if(!e||"string"!=typeof e)throw new TypeError("Expected a non-empty string");let o={negated:!1,fastpaths:!0};return!1===t.fastpaths||"."!==e[0]&&"*"!==e[0]||(o.output=s.fastpaths(e,t)),o.output||(o=s(e,t)),i.compileRe(o,t,r,n)},i.toRegex=(e,t)=>{try{const r=t||{};return new RegExp(e,r.flags||(r.nocase?"i":""))}catch(e){if(t&&!0===t.debug)throw e;return/$^/}},i.constants=a,e.exports=i},2608(e,t,r){const n=r(280),{CHAR_ASTERISK:s,CHAR_AT:o,CHAR_BACKWARD_SLASH:a,CHAR_COMMA:i,CHAR_DOT:c,CHAR_EXCLAMATION_MARK:l,CHAR_FORWARD_SLASH:u,CHAR_LEFT_CURLY_BRACE:d,CHAR_LEFT_PARENTHESES:f,CHAR_LEFT_SQUARE_BRACKET:p,CHAR_PLUS:h,CHAR_QUESTION_MARK:m,CHAR_RIGHT_CURLY_BRACE:g,CHAR_RIGHT_PARENTHESES:y,CHAR_RIGHT_SQUARE_BRACKET:v}=r(3940),$=e=>e===u||e===a,b=e=>{!0!==e.isPrefix&&(e.depth=e.isGlobstar?1/0:1)};e.exports=(e,t)=>{const r=t||{},_=e.length-1,w=!0===r.parts||!0===r.tokens||!0===r.scanToEnd,E=[],S=[],k=[];let x,C,O=e,P=-1,R=0,A=0,T=!1,N=!1,j=!1,I=!1,D=!1,L=!1,M=!1,F=!1,H=!1,q=!1,U=0,V={value:"",depth:0,isGlob:!1};const B=()=>P>=_,K=()=>O.charCodeAt(P+1),z=()=>(x=C,O.charCodeAt(++P));for(;P<_;){let e;if(C=z(),C!==a){if(!0===L||C===d){for(U++;!0!==B()&&(C=z());)if(C!==a)if(C!==d){if(!0!==L&&C===c&&(C=z())===c){if(T=V.isBrace=!0,j=V.isGlob=!0,q=!0,!0===w)continue;break}if(!0!==L&&C===i){if(T=V.isBrace=!0,j=V.isGlob=!0,q=!0,!0===w)continue;break}if(C===g&&(U--,0===U)){L=!1,T=V.isBrace=!0,q=!0;break}}else U++;else M=V.backslashes=!0,z();if(!0===w)continue;break}if(C!==u){if(!0!==r.noext&&!0==(C===h||C===o||C===s||C===m||C===l)&&K()===f){if(j=V.isGlob=!0,I=V.isExtglob=!0,q=!0,C===l&&P===R&&(H=!0),!0===w){let e=0;for(;!0!==B()&&(C=z());)if(C!==a)if(C!==f){if(C===y&&0===--e){q=!0;break}}else e++;else M=V.backslashes=!0,z();continue}break}if(C===s){if(x===s&&(D=V.isGlobstar=!0),j=V.isGlob=!0,q=!0,!0===w)continue;break}if(C===m){if(j=V.isGlob=!0,q=!0,!0===w)continue;break}if(C===p){for(;!0!==B()&&(e=z());)if(e!==a){if(e===v){N=V.isBracket=!0,j=V.isGlob=!0,q=!0;break}}else M=V.backslashes=!0,z();if(!0===w)continue;break}if(!0===r.nonegate||C!==l||P!==R){if(!0!==r.noparen&&C===f){if(j=V.isGlob=!0,!0===w){let e=1;for(;!0!==B()&&(C=z());)if(C!==a)if(C!==f){if(C===y&&0===--e){q=!0;break}}else e++;else M=V.backslashes=!0,z();continue}break}if(!0===j){if(q=!0,!0===w)continue;break}}else F=V.negated=!0,R++}else{if(E.push(P),S.push(V),V={value:"",depth:0,isGlob:!1},!0===q)continue;if(x===c&&P===R+1){R+=2;continue}A=P+1}}else M=V.backslashes=!0,C=z(),C===d&&(L=!0)}!0===r.noext&&(I=!1,j=!1);let G=O,J="",Q="";R>0&&(J=O.slice(0,R),O=O.slice(R),A-=R),G&&!0===j&&A>0?(G=O.slice(0,A),Q=O.slice(A)):!0===j?(G="",Q=O):G=O,G&&""!==G&&"/"!==G&&G!==O&&$(G.charCodeAt(G.length-1))&&(G=G.slice(0,-1)),!0===r.unescape&&(Q&&(Q=n.removeBackslashes(Q)),G&&!0===M&&(G=n.removeBackslashes(G)));const W={prefix:J,input:e,start:R,base:G,glob:Q,isBrace:T,isBracket:N,isGlob:j,isExtglob:I,isGlobstar:D,negated:F,negatedExtglob:H};if(!0===r.tokens&&(W.maxDepth=0,$(C)||S.push(V),W.tokens=S),!0===r.parts||!0===r.tokens){let t;for(let n=0;n<E.length;n++){const s=void 0!==t?t+1:R,o=E[n],a=e.slice(s,o);r.tokens&&(0===n&&0!==R?(S[n].isPrefix=!0,S[n].value=J):S[n].value=a,b(S[n]),W.maxDepth+=S[n].depth),o>=R&&(k.push(a),t=o)}const n=void 0!==t?t+1:R,s=e.slice(n);k.push(s),r.tokens&&t&&t+1<e.length&&(S[S.length-1].value=s,b(S[S.length-1]),W.maxDepth+=S[S.length-1].depth),W.slashes=E,W.parts=k}return W}},280(e,t,r){const{REGEX_BACKSLASH:n,REGEX_REMOVE_BACKSLASH:s,REGEX_SPECIAL_CHARS:o,REGEX_SPECIAL_CHARS_GLOBAL:a}=r(3940);t.isObject=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),t.hasRegexChars=e=>o.test(e),t.isRegexChar=e=>1===e.length&&t.hasRegexChars(e),t.escapeRegex=e=>e.replace(a,"\\$1"),t.toPosixSlashes=e=>e.replace(n,"/"),t.isWindows=()=>{if("undefined"!=typeof navigator&&navigator.platform){const e=navigator.platform.toLowerCase();return"win32"===e||"windows"===e}return!("undefined"==typeof process||!process.platform)&&"win32"===process.platform},t.removeBackslashes=e=>e.replace(s,e=>"\\"===e?"":e),t.escapeLast=(e,r,n)=>{const s=e.lastIndexOf(r,n);return-1===s?e:"\\"===e[s-1]?t.escapeLast(e,r,s-1):`${e.slice(0,s)}\\${e.slice(s)}`},t.removePrefix=(e,t={})=>{let r=e;return r.startsWith("./")&&(r=r.slice(2),t.prefix="./"),r},t.wrapOutput=(e,t={},r={})=>{let n=`${r.contains?"":"^"}(?:${e})${r.contains?"":"$"}`;return!0===t.negated&&(n=`(?:^(?!${n}).*$)`),n},t.basename=(e,{windows:t}={})=>{const r=e.split(t?/[\\/]/:"/"),n=r[r.length-1];return""===n?r[r.length-2]:n}},4061(e,t,r){var n,s=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},n(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=n(e),a=0;a<r.length;a++)"default"!==r[a]&&s(t,e,r[a]);return o(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.run=async function(e){if(e.includes("--help")||e.includes("-h"))return console.log(T),0;const t=function(e){const t={},r=[];for(let n=0;n<e.length;n++){const s=e[n];if(!s.startsWith("-")){r.push(s);continue}const o=s.indexOf("="),a=-1===o?s:s.slice(0,o);if(!N.includes(a))return`Unknown option: ${s}`;const i=-1===o?e[++n]:s.slice(o+1);if(void 0===i)return`Missing value for ${a}`;t[a]=j.includes(a)&&void 0!==t[a]?`${t[a]}\0${i}`:i}return{options:t,paths:r}}(e);if("string"==typeof t)return console.error((0,l.styleText)("red",t)),console.error(T),1;const{options:r,paths:n}=t,s=r["--format"]??"pretty";if("pretty"!==s&&"github"!==s)return console.error((0,l.styleText)("red",`Invalid --format: ${s}`)),1;0===n.length&&n.push(".");const o={excludes:r["--exclude"]?.split("\0"),plVersion:r["--pl-version"],schemaCacheDir:r["--schema-cache"]},a=(0,u.loadConfig)(null,{configPath:r["--config"],overrides:o}).problems.filter(e=>!e.file);if(a.length>0)return a.forEach(e=>console.error((0,l.styleText)("red",e.message))),1;const p=new $(r["--config"],o),h=function(e,t){const r=[],n=new Map;for(const s of e){const e=(0,d.findCourseRoot)(s,n);t(s,e)||(null===e?O.includes(c.basename(s))&&r.push([s,null]):(0,y.isCheckable)((0,f.courseRelativePath)(e,s))&&r.push([s,e]))}return r}(function(e){const t=new Set,r=process.cwd();for(const n of e){if(R(n)){for(const e of A(n,r))t.add(e);continue}const e=c.resolve(r,n);if(i.existsSync(e))if(i.statSync(e).isDirectory())for(const r of i.globSync(P,{cwd:e}))t.add(c.resolve(e,r));else t.add(e)}return[...t].filter(e=>!k.some(t=>e.includes(t))).sort()}(n),(e,t)=>(0,u.isExcluded)(null===t?(0,u.loadConfig)(null,{overrides:o}).config:p.get(t).loaded.config,e));if(0===h.length){console.error((0,l.styleText)("yellow","No PrairieLearn course JSON files found in:"));for(const e of n)console.error((0,l.styleText)("yellow",` ${e}`));return 1}let m=0,g=0,v=0;const x=new Set,C=[],I=[],D=process.cwd(),L=e=>c.relative(D,e)||e,M=(e,t)=>{const r=e.filter(e=>"error"===e.severity).length;if(e.length>0)if(v++,m+=r,g+=e.length-r,"github"===s)I.push(...e.map(S));else{const r=t();I.push(...e.map(e=>function(e,t){const r=t.split("\n"),n=e.line-1,s="warning"===e.severity?"yellow":"red",o=(0,l.styleText)("bold",`${e.file}:${e.line}:${e.column}`)+" "+(0,l.styleText)(s,e.severity)+": "+e.message,a=Math.max(0,n-2),i=Math.min(r.length-1,e.endLine-1),c=String(i+1).length,u=e=>String(e).padStart(c),d=[o];d.push((0,l.styleText)("dim"," ".repeat(c)+" |"));for(let e=a;e<=i;e++)d.push((0,l.styleText)("dim",`${u(e+1)} |`)+" "+r[e]);const f=r[e.endLine-1]||"",[p,h]=e.line===e.endLine?[e.column-1,e.endColumn-1]:[0,f.length],m=" ".repeat(p)+"^".repeat(Math.max(1,h-p))+" "+e.message;return d.push((0,l.styleText)("dim"," ".repeat(c)+" |")+" "+(0,l.styleText)(s,m)),d.join("\n")}(e,r)+"\n"))}return r};for(const[e,t]of h){const r=L(e),{errors:n,questions:s}=null===t?w(r):await _(e,t,r,p.get(t)),o=M(n,()=>i.readFileSync(e,"utf-8"));C.push(n.length>0?(0,l.styleText)(o>0?"red":"yellow",r):(0,l.styleText)("dim",r));for(const e of s){x.add(e.infoJson);const t=" "+(c.relative(D,e.infoJson)||e.infoJson);C.push((0,l.styleText)(e.hasError?"red":"dim",t))}}for(const[e,t]of p.configProblems()){const r=i.readFileSync(e,"utf-8");M(t.map(t=>b(t,r,L(e))),()=>r)}for(const e of p.schemaProblems())g++,I.push("github"===s?`::warning title=prairielearn-navigator::${E(e)}`:(0,l.styleText)("yellow","warning")+`: ${e}\n`);if("github"===s?(console.log("::group::Checked files"),C.forEach(e=>console.log(e)),console.log("::endgroup::")):C.forEach(e=>console.log(e)),I.length>0){"pretty"===s&&console.log();for(const e of I)console.log(e)}return console.log(function(e,t,r,n,s=0){const o=`${r} ${1===r?"file":"files"}, ${n} ${1===n?"question":"questions"} checked`;if(0===e&&0===s)return(0,l.styleText)("green",`No errors found (${o})`);const a=[];if(e>0){const t=1===e?"error":"errors";a.push((0,l.styleText)("red",`${e} ${t}`))}if(s>0){const e=1===s?"warning":"warnings";a.push((0,l.styleText)("yellow",`${s} ${e}`))}const i=t>0?` in ${t} ${1===t?"file":"files"}`:"";return`${a.join(", ")}${i} (${o})`}(m,v,h.length,x.size,g)),m>0?1:0};const i=a(r(3024)),c=a(r(6760)),l=r(7975),u=r(3738),d=r(2157),f=r(5554),p=r(5195),h=r(3702),m=r(634),g=r(3392),y=r(9215),v=r(1482);class ${configPath;overrides;byCourse=new Map;stores=new Map;constructor(e,t){this.configPath=e,this.overrides=t}get(e){let t=this.byCourse.get(e);if(!t){const r=(0,u.loadConfig)(e,{configPath:this.configPath,overrides:this.overrides}),{schemaCacheDir:n}=r.config;let s=this.stores.get(n);s||(s=new v.SchemaStore({cacheDir:n,githubToken:process.env.GITHUB_TOKEN}),this.stores.set(n,s)),t={loaded:r,schemas:s},this.byCourse.set(e,t)}return t}configProblems(){const e=new Map;for(const{loaded:t}of this.byCourse.values())t.file&&t.problems.some(e=>e.file)&&e.set(t.file,t.problems.filter(e=>e.file));return e}schemaProblems(){return[...this.stores.values()].flatMap(e=>[...e.problems])}}function b(e,t,r){const n=(0,p.offsetToPosition)(t,e.startOffset),s=(0,p.offsetToPosition)(t,e.endOffset),o=e.code?.replace(/^prairielearn-navigator\//,"");return{file:r,line:n.line,column:n.column,endLine:s.line,endColumn:s.column,message:o?`${e.message} [${o}]`:e.message,severity:e.severity}}async function _(e,t,r,n){const s=i.readFileSync(e,"utf-8"),o=await(0,y.runRules)(e,s,{courseRoot:t,config:n.loaded.config,schemas:n.schemas}),a=new Set(o.filter(e=>"error"===e.severity).map(e=>s.slice(e.startOffset,e.endOffset))),l=c.basename(e)===x?(0,g.findFileRefs)((0,g.sourceOf)(s),(0,f.courseRelativePath)(t,e),(0,h.versionDate)(n.loaded.config.plVersion),{courseRoot:t,fileDir:c.dirname(e)},e=>"question"===e.target).map(e=>e.value):[],u=[...new Set(l)].map(e=>({infoJson:(0,m.questionFilePathsFromId)({courseId:t,localId:e}).infoJson,hasError:a.has(e)}));return{errors:o.map(e=>b(e,s,r)),questions:u}}function w(e){return{errors:[{file:e,line:1,column:1,endLine:1,endColumn:1,message:"not inside a course (no infoCourse.json found in any parent directory); skipped",severity:"warning"}],questions:[]}}function E(e){return e.replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function S(e){const t=[`file=${r=e.file,E(r).replace(/:/g,"%3A").replace(/,/g,"%2C")}`,`line=${e.line}`,`col=${e.column}`,`endLine=${e.endLine}`,`endColumn=${e.endColumn}`,"title=prairielearn-navigator"].join(",");var r;return`::${e.severity} ${t}::${E(e.message)}`}const k=[`${c.sep}node_modules${c.sep}`,`${c.sep}.git${c.sep}`],x="infoAssessment.json",C=["infoCourse.json","infoCourseInstance.json",x,"info.json","question.html"],O=["infoCourseInstance.json",x],P=`**/{${C.join(",")}}`;function R(e){return/[*?[\]{}]/.test(e)}function A(e,t){return i.globSync([e,`${e.replace(/\/+$/,"")}/${P}`],{cwd:t}).filter(e=>C.includes(c.basename(e))).map(e=>c.resolve(t,e))}const T='Usage: prairielearn-navigator check [options] [paths...]\n\nCheck a PrairieLearn course\'s JSON files against PrairieLearn\'s schemas and\nthe navigator\'s rules: missing, incomplete, and duplicate questions, and\nclientFilesCourse dependencies that do not exist.\n\nArguments:\n paths Course directories to search, course JSON files, or glob\n patterns matching either (default: .). Quote globs so the shell\n does not expand them.\n\nOptions:\n --format <pretty|github> Output format (default: pretty). "github" emits\n GitHub Actions annotations.\n --config <path> Config file (default: .pl-navigator.jsonc in each\n course root)\n --pl-version <version> PrairieLearn version to check against: "latest",\n a date (YYYY-MM-DD), or a commit sha\n --schema-cache <dir> Where downloaded schemas are cached\n --exclude <glob> Skip matching files (relative to the current\n directory; repeatable). Adds to the config\n file\'s "excludes".\n --help Show this help message\n\nDated versions are resolved with the GitHub API; set GITHUB_TOKEN to avoid\nits rate limit.\n\nExit status is 1 if any errors are found; warnings do not affect it.\n\nExamples:\n prairielearn-navigator check\n prairielearn-navigator check path/to/course\n prairielearn-navigator check --pl-version 2025-06-01\n prairielearn-navigator check --exclude "questions/archive/**"\n prairielearn-navigator check "courseInstances/Fa26/**"\n prairielearn-navigator check "**/assessments/hw*/infoAssessment.json"\n prairielearn-navigator check --format github',N=["--format","--config","--pl-version","--schema-cache","--exclude"],j=["--exclude"]},3738(e,t,r){var n,s=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},n(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=n(e),a=0;a<r.length;a++)"default"!==r[a]&&s(t,e,r[a]);return o(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.configFileName=void 0,t.isExcluded=function(e,t){return e.excludes.some(({base:e,glob:r})=>{const n=l.relative(e,t);return!n.startsWith("..")&&!l.isAbsolute(n)&&(0,u.matchesGlob)(n.split(l.sep).join("/"),r)})},t.loadConfig=function(e,r={}){const n={plVersion:"latest",schemaCacheDir:m(),rules:{},excludes:[],...r.defaults},s=[],o=r.configPath??(e?l.join(e,t.configFileName):void 0);let a;if(o&&i.existsSync(o)){a=l.resolve(o);const e=(0,d.parseJsonDoc)(i.readFileSync(a,"utf-8"));for(const t of e.errors)s.push({file:a,startOffset:t.offset,endOffset:t.offset+t.length,message:`invalid JSON: ${t.message}`,severity:"error"});g(n,e.value,l.dirname(a),(t,r,n="error")=>s.push({file:a,...(0,d.rangeOf)(e,r,{key:"warning"===n}),message:t,severity:n}))}else r.configPath&&s.push({startOffset:0,endOffset:0,message:`config file not found: ${r.configPath}`,severity:"error"});return r.overrides&&g(n,r.overrides,r.overridesBaseDir??process.cwd(),(e,t,r="error")=>s.push({startOffset:0,endOffset:0,message:e,severity:r})),{config:n,file:a,problems:s}};const i=a(r(3024)),c=a(r(8161)),l=a(r(6760)),u=r(5554),d=r(2758),f=r(3702),p=r(7731);t.configFileName=".pl-navigator.jsonc";const h=["off","warning","error"];function m(){const e=process.env.XDG_CACHE_HOME||l.join(c.homedir(),".cache");return l.join(e,"prairielearn-navigator","schemas")}function g(e,t,r,n){const s=(e,t)=>n(e,t,"warning");if(void 0!==t)if("object"!=typeof t||null===t||Array.isArray(t))n("config must be an object",[]);else for(const[o,a]of Object.entries(t))if(void 0!==a)switch(o){case"$schema":break;case"plVersion":{const t=(0,f.validatePlVersion)(a);t?n(t,[o]):e.plVersion=a;break}case"schemaCacheDir":"string"!=typeof a||""===a?n("schemaCacheDir must be a non-empty string",[o]):e.schemaCacheDir=l.resolve(r,y(a));break;case"excludes":!Array.isArray(a)||a.some(e=>"string"!=typeof e||""===e)?n("excludes must be an array of glob patterns",[o]):e.excludes=[...e.excludes,...a.map(e=>({base:r,glob:e.replace(/^\.\//,"")}))];break;case"rules":if("object"!=typeof a||null===a||Array.isArray(a)){n('rules must be an object of rule id to "off" | "warning" | "error"',[o]);break}for(const[t,r]of Object.entries(a))(0,p.isRuleId)(t)?"string"==typeof r&&h.includes(r)?e.rules={...e.rules,[t]:r}:n(`rule "${t}" must be "off", "warning", or "error"`,[o,t]):s(`unknown rule "${t}"`,[o,t]);break;default:s(`unknown config key "${o}"`,[o])}}function y(e){return"~"===e||e.startsWith("~/")?l.join(c.homedir(),e.slice(1)):e}},2157(e,t,r){var n,s=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},n(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=n(e),a=0;a<r.length;a++)"default"!==r[a]&&s(t,e,r[a]);return o(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.findCourseRoot=function(e,t){const r=[];let n,s=c.dirname(c.resolve(e));for(;void 0===n&&(n=t?.get(s),void 0===n);)r.push(s),i.existsSync(c.join(s,"infoCourse.json"))?n=s:c.dirname(s)===s?n=null:s=c.dirname(s);return r.forEach(e=>t?.set(e,n)),n};const i=a(r(3024)),c=a(r(6760))},5554(e,t,r){var n,s=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},n(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=n(e),a=0;a<r.length;a++)"default"!==r[a]&&s(t,e,r[a]);return o(t,e),t}),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.questionHtml=t.courseFiles=void 0,t.matchesGlob=function(e,t){let r=u.get(t);return r||(r=(0,l.default)(t,{dot:!0}),u.set(t,r)),r(e)},t.courseRelativePath=function(e,t){return c.relative(e,t).split(c.sep).join("/")};const c=a(r(6760)),l=i(r(5157));t.courseFiles={course:"infoCourse.json",courseInstance:"courseInstances/**/infoCourseInstance.json",assessment:"courseInstances/**/assessments/**/infoAssessment.json",question:"questions/**/info.json",element:"elements/*/info.json",elementExtension:"elementExtensions/*/*/info.json"},t.questionHtml="questions/**/question.html";const u=new Map},5195(e,t){t.offsetToPosition=function(e,t){let r=1,n=0;for(let s=0;s<t&&s<e.length;s++)"\n"===e[s]&&(r++,n=s+1);return{line:r,column:t-n+1}}},9013(e,t){t.findElements=function(e,t){const r=function(e){return e.replace(/<!--[\s\S]*?(?:-->|$)/g,e=>e.replace(/[^\n]/g," "))}(e),o=r.toLowerCase(),a=`<${t.toLowerCase()}`,i=[];for(let e=o.indexOf(a);-1!==e;e=o.indexOf(a,e+1)){const t=e+a.length;if(!/[\s/>]/.test(r[t]??""))continue;const o=n(r,t);if(-1===o)break;i.push({startOffset:e,endOffset:o+1,attributes:s(r.slice(t,o),t)}),e=o}return i};const r=/([^\s"'<>/=]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))?/g;function n(e,t){let r;for(let n=t;n<e.length;n++){const t=e[n];if(r)t===r&&(r=void 0);else if('"'===t||"'"===t)r=t;else if(">"===t)return n}return-1}function s(e,t){const n=new Map;for(const s of e.matchAll(r)){const e=s[1].toLowerCase();if(n.has(e))continue;const r=s[2]??s[3]??s[4]??"",o=void 0!==s[2]||void 0!==s[3],a=t+s.index+s[0].length-(o?1:0);n.set(e,{value:r,startOffset:a-r.length,endOffset:a})}return n}},2758(e,t,r){t.parseJsonDoc=s,t.strictJsonErrors=function(e){const t=[];return(0,n.parseTree)(e,t,{allowTrailingComma:!1,disallowComments:!0}),t.map(e=>({offset:e.offset,length:e.length,message:(0,n.printParseErrorCode)(e.error)}))},t.parseJsonc=function(e){const t=s(e);return 0===t.errors.length?t.value:void 0},t.rangeOf=function(e,t,r={}){if(e.tree)for(let s=t.length;s>=0;s--){let o=(0,n.findNodeAtLocation)(e.tree,t.slice(0,s));if(o&&r.key&&s===t.length&&"property"===o.parent?.type&&(o=o.parent.children?.[0]??o),o)return{startOffset:o.offset,endOffset:o.offset+o.length}}return{startOffset:0,endOffset:0}},t.pointerToPath=function(e){return""===e?[]:e.slice(1).split("/").map(e=>e.replace(/~1/g,"/").replace(/~0/g,"~")).map(e=>/^\d+$/.test(e)?Number(e):e)};const n=r(5211);function s(e){const t=[],r={allowTrailingComma:!0,disallowComments:!1},s=(0,n.parseTree)(e,t,r);return{value:s?(0,n.parse)(e,[],r):void 0,tree:s,errors:t.map(e=>({offset:e.offset,length:e.length,message:(0,n.printParseErrorCode)(e.error)}))}}},3702(e,t){t.isCommitSha=a,t.validatePlVersion=function(e){return"string"!=typeof e?"plVersion must be a string":"latest"===e||o(e)||a(e)?void 0:`invalid plVersion "${e}": expected "latest", a date (YYYY-MM-DD), or a 40-character commit sha`},t.today=i,t.versionDate=function(e){return o(e)?e:i()},t.matchesRange=function(e,t){return e.trim().split(/\s+/).every(r=>{if("*"===r)return!0;const n=s.exec(r);if(!n)throw new Error(`invalid version range "${e}"`);const[,o="=",a]=n;switch(o){case">=":return t>=a;case"<=":return t<=a;case">":return t>a;case"<":return t<a;default:return t===a}})};const r=/^\d{4}-\d{2}-\d{2}$/,n=/^[0-9a-f]{40}$/,s=/^(>=|<=|>|<|=)?(\d{4}-\d{2}-\d{2})$/;function o(e){return r.test(e)&&!Number.isNaN(Date.parse(e))}function a(e){return n.test(e)}function i(){return(new Date).toISOString().slice(0,10)}},634(e,t,r){var n,s=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},n(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=n(e),a=0;a<r.length;a++)"default"!==r[a]&&s(t,e,r[a]);return o(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.questionFilePathsFromId=function(e){const t=c.join(e.courseId,"questions",e.localId),r=c.join(t,"info.json"),n=c.join(t,"question.html"),s=c.join(t,"server.py");return{dir:t,infoJson:r,questionHtml:n,serverPy:s,strict(){const e={};return i.existsSync(t)&&(e.dir=t),i.existsSync(r)&&(e.infoJson=r),i.existsSync(n)&&(e.questionHtml=n),i.existsSync(s)&&(e.serverPy=s),e}}};const i=a(r(3024)),c=a(r(6760))},6835(e,t,r){var n,s=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},n(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=n(e),a=0;a<r.length;a++)"default"!==r[a]&&s(t,e,r[a]);return o(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.baseDir=function(e,t){switch(e){case"fileDir":return t.fileDir;case"clientFilesQuestion":return i.join(t.fileDir,"clientFilesQuestion");case"clientFilesCourse":return i.join(t.courseRoot,"clientFilesCourse");case"serverFilesCourse":return i.join(t.courseRoot,"serverFilesCourse");case"courseExtensions":return i.join(t.courseRoot,"elementExtensions");case"questions":return i.join(t.courseRoot,"questions")}},t.inside=function(e,t,r=!1){const n=i.resolve(e,t),s=i.relative(e,n);return""===s?r?n:null:s.startsWith("..")||i.isAbsolute(s)?null:n};const i=a(r(6760))},3392(e,t,r){var n,s=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},n(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=n(e),a=0;a<r.length;a++)"default"!==r[a]&&s(t,e,r[a]);return o(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.sourceOf=function(e){let t;return{text:e,get doc(){return t??=(0,d.parseJsonDoc)(e)}}},t.holdsReferences=function(e){return h.refSpecs.some(t=>(0,l.matchesGlob)(e,t.files))},t.findFileRefs=function(e,t,r,n,s=()=>!0){const o=[];for(const a of h.refSpecs)if(s(a)&&(0,l.matchesGlob)(t,a.files)&&(0,f.matchesRange)(a.range,r))if("json"===a.source){const t=e.doc.tree;t&&g(a,a.json.json,a.json.base,t,n,o)}else for(const t of(0,u.findElements)(e.text,a.html.tag)){const e=v(a,t,n);e&&o.push(e)}return o.sort((e,t)=>e.startOffset-t.startOffset)},t.fileRefAt=function(e,t){return e.find(e=>e.startOffset-1<=t&&t<=e.endOffset+1)},t.openTarget=function(e){if(null===e.target||"question"!==e.spec.target)return e.target;const t=c.join(e.target,"question.html");return i.existsSync(t)?t:c.join(e.target,"info.json")};const i=a(r(3024)),c=a(r(6760)),l=r(5554),u=r(9013),d=r(2758),f=r(3702),p=r(6835),h=r(7633);function m(e,t){return"*"===e||(e instanceof RegExp?"string"==typeof t&&e.test(t):e===String(t))}function g(e,t,r,n,s,o,a=0){if(a===t.length){if("string"===n.type){const t=n.value;o.push({spec:e,value:t,startOffset:n.offset+1,endOffset:n.offset+n.length-1,...$(e,t,(0,p.baseDir)(r,s))})}return}const i=t[a];if("object"===n.type)for(const c of n.children??[]){const[n,l]=c.children??[];n&&l&&m(i,n.value)&&g(e,t,r,l,s,o,a+1)}else"array"===n.type&&(n.children??[]).forEach((n,c)=>{m(i,c)&&g(e,t,r,n,s,o,a+1)})}const y=e=>e.includes("{{");function v(e,t,r){const{attr:n,directory:s,base:o,staticOnly:a}=e.html,i=t.attributes.get(n),c=t.attributes.get("type")?.value??"static",l=t.attributes.get("directory"),u=l?.value??s?.default??"";if(!i||[i.value,c,u].some(y)||a&&"static"!==c.trim().toLowerCase())return;const d={spec:e,value:i.value,startOffset:i.startOffset,endOffset:i.endOffset};let f;if(s?Object.hasOwn(s.named,u)?f=(0,p.baseDir)(s.named[u],r):s.relative&&(f=(0,p.inside)(r.fileDir,u,!0)??void 0):f=(0,p.baseDir)(o??"fileDir",r),!f){const t=Object.keys(s?.named??{}).map(e=>`"${e}"`),r=t.length>2?`one of ${t.join(", ")}`:t.join(" or ");return{...d,value:u,startOffset:l?.startOffset??d.startOffset,endOffset:l?.endOffset??d.endOffset,target:null,problem:s?.relative?`${e.html.tag} directory "${u}" must be inside the question directory`:`invalid ${e.html.tag} directory "${u}": must be ${r}`}}return{...d,...$(e,i.value,f,u)}}function $(e,t,r,n=("json"===e.source?e.json.base:"")){const s=(0,p.inside)(r,t);return s?{target:s}:{target:null,problem:`"${t}" must be a path inside ${"question"===e.target?"questions/":"fileDir"===n||"."===n||""===n?"its directory":`${n}/`}`}}},7633(e,t,r){t.refSpecs=void 0;const n=r(5554),s=(e,t)=>({source:"json",json:{json:e,base:t}}),o=e=>({source:"html",html:e}),a=/^clientFilesCourse(Styles|Scripts)$/,i=[n.courseFiles.element,n.courseFiles.elementExtension],c={default:".",named:{serverFilesCourse:"serverFilesCourse",clientFilesCourse:"clientFilesCourse"},relative:!0},l={default:"clientFilesQuestion",named:{clientFilesQuestion:"clientFilesQuestion",clientFilesCourse:"clientFilesCourse"}};t.refSpecs=[{id:"question.dependencies.clientFilesCourse",range:"*",files:n.courseFiles.question,rule:"client-files-course-exist",target:"file",...s(["dependencies",a,"*"],"clientFilesCourse")},{id:"question.dependencies.clientFilesQuestion",range:"*",files:n.courseFiles.question,rule:"client-files-question-exist",target:"file",...s(["dependencies",/^clientFilesQuestion(Styles|Scripts)$/,"*"],"clientFilesQuestion")},{id:"question.clientFiles",range:"*",files:n.courseFiles.question,rule:"client-files-question-exist",target:"file",severity:"warning",...s(["clientFiles","*"],"fileDir")},{id:"question.externalGradingOptions.serverFilesCourse",range:"*",files:n.courseFiles.question,rule:"server-files-course-exist",target:"fileOrDir",...s(["externalGradingOptions","serverFilesCourse","*"],"serverFilesCourse")},{id:"question.template",range:"*",files:n.courseFiles.question,rule:"question-exists",target:"question",...s(["template"],"questions")},...i.flatMap(e=>[{id:`${e}.controller`,range:"*",files:e,rule:"element-files-exist",target:"file",...s(["controller"],"fileDir")},{id:`${e}.dependencies.element`,range:"*",files:e,rule:"element-files-exist",target:"file",...s(["dependencies",/^(element|extension)(Styles|Scripts)$/,"*"],"fileDir")},{id:`${e}.dynamicDependencies.element`,range:"*",files:e,rule:"element-files-exist",target:"file",...s(["dynamicDependencies",/^(element|extension)Scripts$/,"*"],"fileDir")},{id:`${e}.dependencies.clientFilesCourse`,range:"*",files:e,rule:"client-files-course-exist",target:"file",...s(["dependencies",a,"*"],"clientFilesCourse")},{id:`${e}.dynamicDependencies.clientFilesCourse`,range:"*",files:e,rule:"client-files-course-exist",target:"file",...s(["dynamicDependencies","clientFilesCourseScripts","*"],"clientFilesCourse")}]),{id:"assessment.question",range:"*",files:n.courseFiles.assessment,rule:"question-exists",target:"question",...s(["zones","*","questions","*","id"],"questions")},{id:"assessment.alternative",range:"*",files:n.courseFiles.assessment,rule:"question-exists",target:"question",...s(["zones","*","questions","*","alternatives","*","id"],"questions")},{id:"pl-figure",range:"*",files:n.questionHtml,rule:"pl-figure-file-exist",target:"file",...o({tag:"pl-figure",attr:"file-name",directory:l,staticOnly:!0})},{id:"pl-file-download",range:"*",files:n.questionHtml,rule:"pl-file-download-file-exist",target:"file",...o({tag:"pl-file-download",attr:"file-name",directory:l,staticOnly:!0})},{id:"pl-code",range:"*",files:n.questionHtml,rule:"pl-code-file-exist",target:"fileOrDir",...o({tag:"pl-code",attr:"source-file-name",directory:c})},{id:"pl-file-editor",range:"*",files:n.questionHtml,rule:"pl-file-editor-file-exist",target:"file",...o({tag:"pl-file-editor",attr:"source-file-name",directory:c})},{id:"pl-graph",range:"*",files:n.questionHtml,rule:"pl-graph-file-exist",target:"file",...o({tag:"pl-graph",attr:"source-file-name",directory:c})},{id:"pl-rich-text-editor",range:"*",files:n.questionHtml,rule:"pl-rich-text-editor-file-exist",target:"file",...o({tag:"pl-rich-text-editor",attr:"source-file-name",directory:c})},{id:"pl-excalidraw",range:"*",files:n.questionHtml,rule:"pl-excalidraw-file-exist",target:"file",...o({tag:"pl-excalidraw",attr:"source-file-name",directory:{default:".",named:{".":"fileDir",clientFilesQuestion:"clientFilesQuestion",clientFilesCourse:"clientFilesCourse",serverFilesCourse:"serverFilesCourse"}}})},{id:"pl-xss-safe",range:"*",files:n.questionHtml,rule:"pl-xss-safe-file-exist",target:"fileOrDir",...o({tag:"pl-xss-safe",attr:"source-file-name",base:"fileDir"})},{id:"pl-template",range:"*",files:n.questionHtml,rule:"pl-template-file-exist",target:"file",...o({tag:"pl-template",attr:"file-name",directory:{default:"serverFilesCourse",named:{question:"fileDir",clientFilesQuestion:"clientFilesQuestion",clientFilesCourse:"clientFilesCourse",serverFilesCourse:"serverFilesCourse",courseExtensions:"courseExtensions"}}})}]},1369(e,t,r){var n,s=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},n(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=n(e),a=0;a<r.length;a++)"default"!==r[a]&&s(t,e,r[a]);return o(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.duplicateQuestionIds=t.jsonSyntax=void 0,t.schemaRule=function(e){return async({doc:t,schemas:r,plVersion:n})=>{if(t.errors.length>0||void 0===t.value)return[];const s=await r.get(e,n);if(!s||s.validate(t.value))return[];const o=new Set,a=[];for(const e of s.validate.errors??[]){let r=(0,l.pointerToPath)(e.instancePath),n=`${e.instancePath||"root"} ${e.message}`,i="error";if("additionalProperties"===e.keyword){const t=String(e.params.additionalProperty);r=[...r,t],n=`unknown property "${t}"`,i="warning"}else"enum"===e.keyword&&(n+=`: ${e.params.allowedValues.map(e=>JSON.stringify(e)).join(", ")}`);const c=`${r.join("/")}\0${n}`;if(o.has(c))continue;o.add(c);let u=(0,l.rangeOf)(t,r);"required"===e.keyword&&(u={startOffset:u.startOffset,endOffset:u.startOffset+1}),a.push({...u,message:`${n} (PL schema ${s.label})`,severity:i})}return a}},t.referencesExist=function(e){return t=>{const r=[];for(const n of f(t,t=>t.rule===e)){const e={startOffset:n.startOffset,endOffset:n.endOffset},s=n.spec.severity??"error";if(null===n.target)r.push({...e,message:n.problem??`invalid path "${n.value}"`,severity:"error"});else if("question"===n.spec.target){const o=h(n,t.courseRoot);o&&r.push({...e,...o,severity:s})}else p(n.target,n.spec.target)||r.push({...e,message:`${"file"===n.spec.target?"file":"file or directory"} not found: ${c.relative(t.courseRoot,n.target)}`,severity:s,related:[{path:n.target,message:"Expected location of file"}]})}return r}};const i=a(r(3024)),c=a(r(6760)),l=r(2758),u=r(634),d=r(3392);function f(e,t){const{relPath:r,plDate:n,courseRoot:s,filePath:o}=e;return(0,d.findFileRefs)(e,r,n,{courseRoot:s,fileDir:c.dirname(o)},t)}function p(e,t){const r=i.statSync(e,{throwIfNoEntry:!1});return"file"===t?!!r?.isFile():!!r}function h(e,t){const r=(0,u.questionFilePathsFromId)({courseId:t,localId:e.value}),n=r.strict();if(!n.dir)return{message:`missing question: expected question directory ${r.dir}`,related:[{path:r.infoJson,message:"Expected location of info.json"}]};if(!n.infoJson)return{message:"incomplete question: missing required JSON file",related:[{path:r.infoJson,message:"Expected location of info.json"}]};if(!n.questionHtml){const e=(0,l.parseJsonc)(i.readFileSync(n.infoJson,"utf8"));if("string"!=typeof e?.options?.text)return{message:"incomplete question: missing required html file",related:[{path:r.questionHtml,message:"Expected location of question.html"}]}}}t.jsonSyntax=({text:e})=>{const t=new Set,r=[];for(const n of(0,l.strictJsonErrors)(e)){if(t.has(n.offset))continue;t.add(n.offset);const s=/,\s*$/.exec(e.slice(0,n.offset)),o=s&&"InvalidCommentToken"!==n.message?{startOffset:s.index,endOffset:s.index+1}:{startOffset:n.offset,endOffset:n.offset+Math.max(1,n.length)};r.push({...o,message:"InvalidCommentToken"===n.message?"comments are not allowed: PrairieLearn reads course JSON with JSON.parse":s?"trailing commas are not allowed: PrairieLearn reads course JSON with JSON.parse":`invalid JSON: ${n.message}`,severity:"error"})}return r},t.duplicateQuestionIds=e=>{const t=new Map;for(const r of f(e,e=>"question"===e.target))t.set(r.value,[...t.get(r.value)??[],r]);return[...t.values()].filter(e=>e.length>1).flatMap(e=>e.map(t=>({startOffset:t.startOffset,endOffset:t.endOffset,message:`Duplicate question ID: "${t.value}" appears ${e.length} times`,severity:"warning"})))}},7731(e,t,r){t.rules=void 0,t.isRuleId=function(e){return Object.hasOwn(t.rules,e)},t.ruleDiagnosticCode=function(e){return`prairielearn-navigator/${e}`};const n=r(5554),s=r(7633),o=r(1369),a={"json-syntax":Object.values(n.courseFiles).map(e=>["*",e,o.jsonSyntax]),schema:[["*",n.courseFiles.course,(0,o.schemaRule)("infoCourse")],["*",n.courseFiles.courseInstance,(0,o.schemaRule)("infoCourseInstance")],["*",n.courseFiles.assessment,(0,o.schemaRule)("infoAssessment")],["*",n.courseFiles.question,(0,o.schemaRule)("infoQuestion")],["*",n.courseFiles.element,(0,o.schemaRule)("infoElementCourse")],["*",n.courseFiles.elementExtension,(0,o.schemaRule)("infoElementExtension")]],"duplicate-question-id":[["*",n.courseFiles.assessment,o.duplicateQuestionIds]]};t.rules={...a,...function(){const e={};for(const t of s.refSpecs){const r=e[t.rule]??=[];r.some(([,e])=>e===t.files)||r.push(["*",t.files,(0,o.referencesExist)(t.rule)])}return e}()}},9215(e,t,r){t.isCheckable=function(e){return Object.values(a.rules).some(t=>t.some(([,t])=>(0,n.matchesGlob)(e,t)))},t.runRules=async function(e,t,r){const{courseRoot:i,config:c,schemas:l}=r,u=(0,n.courseRelativePath)(i,e),d=(0,o.versionDate)(c.plVersion);let f;const p={courseRoot:i,filePath:e,relPath:u,text:t,get doc(){return f??=(0,s.parseJsonDoc)(t)},plVersion:c.plVersion,plDate:d,schemas:l};return(await Promise.all(function(e,t,r=a.rules){const s=[];for(const[a,i]of Object.entries(r)){const r=i.find(([r,s])=>(0,n.matchesGlob)(e,s)&&(0,o.matchesRange)(r,t));r&&s.push([a,r[2]])}return s}(u,d).filter(([e])=>"off"!==c.rules[e]).map(async([e,t])=>{const r=c.rules[e];let n;try{n=await t(p)}catch(e){n=[{startOffset:0,endOffset:0,message:`internal error in rule: ${e}`,severity:"warning"}]}return n.map(t=>({...t,code:(0,a.ruleDiagnosticCode)(e),severity:"warning"===r||"error"===r?r:t.severity}))}))).flat().sort((e,t)=>e.startOffset-t.startOffset)};const n=r(5554),s=r(2758),o=r(3702),a=r(7731)},1482(e,t,r){var n,s=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,s)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},n(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=n(e),a=0;a<r.length;a++)"default"!==r[a]&&s(t,e,r[a]);return o(t,e),t}),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.SchemaStore=void 0;const c=a(r(3024)),l=a(r(6760)),u=i(r(3282)),d=r(3702),f="PrairieLearn/PrairieLearn",p=["apps/prairielearn/src/schemas/schemas","schemas/schemas"];t.SchemaStore=class{options;problems=new Set;fetch;loading=new Map;resolving=new Map;constructor(e){this.options=e,this.fetch=e.fetch??globalThis.fetch}get cacheDir(){return this.options.cacheDir}get(e,t){const r=`${t}\0${e}`;let n=this.loading.get(r);return n||(n=this.load(e,t),this.loading.set(r,n)),n}async load(e,t){const r=await this.resolve(t);if(!r)return;const n=await this.schemaText(e,r);if(void 0!==n)try{return{validate:new u.default({allErrors:!0,strict:!1,validateFormats:!1}).compile(JSON.parse(n)),label:r.label}}catch(t){return void this.problems.add(`could not compile ${e} schema for PL ${r.label}: ${t}`)}}resolve(e){let t=this.resolving.get(e);return t||(t=this.resolveUncached(e),this.resolving.set(e,t)),t}async resolveUncached(e){if((0,d.isCommitSha)(e))return{key:e,ref:e,label:e.slice(0,7)};if("latest"===e){const e=(0,d.today)();return{key:`master-${e}`,ref:"master",label:`latest (${e})`}}const t=this.readRefs()[e]??await this.lookupSha(e);return t?{key:t,ref:t,label:`${e} (${t.slice(0,7)})`}:void 0}async lookupSha(e){const t=`https://api.github.com/repos/${f}/commits?sha=master&until=${e}T23:59:59Z&per_page=1`,r={accept:"application/vnd.github+json"};this.options.githubToken&&(r.authorization=`Bearer ${this.options.githubToken}`);try{const n=await this.fetch(t,{headers:r});if(!n.ok){const t=403===n.status||429===n.status?" (rate limited; set GITHUB_TOKEN or pin a commit sha)":"";return void this.problems.add(`could not resolve PL version ${e}: GitHub API returned ${n.status}${t}`)}const s=await n.json(),o=s[0]?.sha;return o?(this.writeRefs({...this.readRefs(),[e]:o}),o):void this.problems.add(`no PrairieLearn commit found on or before ${e}`)}catch(t){return void this.problems.add(`could not resolve PL version ${e} (offline?): ${t}`)}}async schemaText(e,t){const r=l.join(this.options.cacheDir,t.key),n=l.join(r,`${e}.json`);if(c.existsSync(n))return c.readFileSync(n,"utf-8");let s="";for(const o of p){const a=`https://raw.githubusercontent.com/${f}/${t.ref}/${o}/${e}.json`;try{const e=await this.fetch(a);if(e.ok){const s=await e.text();return this.writeCache(r,n,s,t),s}if(s=`HTTP ${e.status}`,404!==e.status)break}catch(r){return void this.problems.add(`schema ${e} for PL ${t.label} is not cached and could not be downloaded (offline?): ${r}`)}}this.problems.add(`schema ${e} not found for PL ${t.label} (${s})`)}writeCache(e,t,r,n){try{c.mkdirSync(e,{recursive:!0}),c.writeFileSync(t,r),"master"===n.ref&&this.pruneStaleLatest(n.key)}catch(t){this.problems.add(`could not write schema cache ${e}: ${t}`)}}pruneStaleLatest(e){for(const t of c.readdirSync(this.options.cacheDir))t.startsWith("master-")&&t!==e&&c.rmSync(l.join(this.options.cacheDir,t),{recursive:!0,force:!0})}get refsFile(){return l.join(this.options.cacheDir,"refs.json")}readRefs(){try{return JSON.parse(c.readFileSync(this.refsFile,"utf-8"))}catch{return{}}}writeRefs(e){try{c.mkdirSync(this.options.cacheDir,{recursive:!0}),c.writeFileSync(this.refsFile,JSON.stringify(e,void 0,2)+"\n")}catch(e){this.problems.add(`could not write ${this.refsFile}: ${e}`)}}}},3024(e){e.exports=require("node:fs")},8161(e){e.exports=require("node:os")},6760(e){e.exports=require("node:path")},7975(e){e.exports=require("node:util")},8343(e,t,r){const{normalizeIPv6:n,removeDotSegments:s,recomposeAuthority:o,normalizePercentEncoding:a,normalizePathEncoding:i,escapePreservingEscapes:c,reescapeHostDelimiters:l,isIPv4:u,nonSimpleDomain:d}=r(4834),{SCHEMES:f,getSchemeHandler:p}=r(343);function h(e,t,r,n){const o={};return n||(e=b(m(e,r),r),t=b(m(t,r),r)),!(r=r||{}).tolerant&&t.scheme?(o.scheme=t.scheme,o.userinfo=t.userinfo,o.host=t.host,o.port=t.port,o.path=s(t.path||""),o.query=t.query):(void 0!==t.userinfo||void 0!==t.host||void 0!==t.port?(o.userinfo=t.userinfo,o.host=t.host,o.port=t.port,o.path=s(t.path||""),o.query=t.query):(t.path?("/"===t.path[0]?o.path=s(t.path):(void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?o.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path:o.path=t.path:o.path="/"+t.path,o.path=s(o.path)),o.query=t.query):(o.path=e.path,void 0!==t.query?o.query=t.query:o.query=e.query),o.userinfo=e.userinfo,o.host=e.host,o.port=e.port),o.scheme=e.scheme),o.fragment=t.fragment,o}function m(e,t){const r={host:e.host,scheme:e.scheme,userinfo:e.userinfo,port:e.port,path:e.path,query:e.query,nid:e.nid,nss:e.nss,uuid:e.uuid,fragment:e.fragment,reference:e.reference,resourceName:e.resourceName,secure:e.secure,error:""},n=Object.assign({},t),i=[],l=p(n.scheme||r.scheme);l&&l.serialize&&l.serialize(r,n),void 0!==r.path&&(n.skipEscape?r.path=a(r.path):(r.path=c(r.path),void 0!==r.scheme&&(r.path=r.path.split("%3A").join(":")))),"suffix"!==n.reference&&r.scheme&&i.push(r.scheme,":");const u=o(r);if(void 0!==u&&("suffix"!==n.reference&&i.push("//"),i.push(u),r.path&&"/"!==r.path[0]&&i.push("/")),void 0!==r.path){let e=r.path;n.absolutePath||l&&l.absolutePath||(e=s(e)),void 0===u&&"/"===e[0]&&"/"===e[1]&&(e="/%2F"+e.slice(2)),i.push(e)}return void 0!==r.query&&i.push("?",r.query),void 0!==r.fragment&&i.push("#",r.fragment),i.join("")}const g=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u,y=/^(?:[^#/:?]+:)?\/\/([^/?#]*)/,v=/^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;function $(e,t){const r=Object.assign({},t),s={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0};let o=!1,a=!1;"suffix"===r.reference&&(e=r.scheme?r.scheme+":"+e:"//"+e);const c=e.match(y);null!==c&&-1!==c[1].indexOf("\\")&&(s.error="URI authority must not contain a literal backslash.",o=!0);const f=e.match(v);if(null!==f){const e=f[1],t=e.replace(/[\t\n\r]/g,"");t.length>=2&&("//"!==t.slice(0,2)?(s.error=s.error||"URI authority must not contain a literal backslash.",o=!0):e.length!==t.length&&(s.error=s.error||"URI authority introducer must not contain whitespace.",o=!0))}const h=e.match(g);if(h){s.scheme=h[1],s.userinfo=h[3],s.host=h[4],s.port=parseInt(h[5],10),s.path=h[6]||"",s.query=h[7],s.fragment=h[8],isNaN(s.port)&&(s.port=h[5]);const t=function(e,t){return void 0!==t[2]&&e.path&&"/"!==e.path[0]?'URI path must start with "/" when authority is present.':"number"==typeof e.port&&(e.port<0||e.port>65535)?"URI port is malformed.":void 0}(s,h);if(void 0!==t&&(s.error=s.error||t,o=!0),s.host)if(!1===u(s.host)){const e=n(s.host);s.host=e.host.toLowerCase(),a=e.isIPV6}else a=!0;void 0!==s.scheme||void 0!==s.userinfo||void 0!==s.host||void 0!==s.port||void 0!==s.query||s.path?void 0===s.scheme?s.reference="relative":void 0===s.fragment?s.reference="absolute":s.reference="uri":s.reference="same-document",r.reference&&"suffix"!==r.reference&&r.reference!==s.reference&&(s.error=s.error||"URI is not a "+r.reference+" reference.");const c=p(r.scheme||s.scheme);if(!(r.unicodeSupport||c&&c.unicodeSupport)&&s.host&&(r.domainHost||c&&c.domainHost)&&!1===a&&d(s.host))try{s.host=new URL("http://"+s.host).hostname}catch(e){s.error=s.error||"Host's domain name can not be converted to ASCII: "+e}if((!c||c&&!c.skipNormalize)&&(-1!==e.indexOf("%")&&(void 0!==s.scheme&&(s.scheme=unescape(s.scheme)),void 0!==s.host&&(s.host=l(unescape(s.host),a))),s.path&&(s.path=i(s.path)),s.fragment))try{s.fragment=encodeURI(decodeURIComponent(s.fragment))}catch{s.error=s.error||"URI malformed"}c&&c.parse&&c.parse(s,r)}else s.error=s.error||"URI can not be parsed.";return{parsed:s,malformedAuthorityOrPort:o}}function b(e,t){return $(e,t).parsed}function _(e,t){const{parsed:r,malformedAuthorityOrPort:n}=$(e,t);return{normalized:n?e:m(r,t),malformedAuthorityOrPort:n}}function w(e,t){if("string"==typeof e){const{normalized:r,malformedAuthorityOrPort:n}=_(e,t);return n?void 0:r}if("object"==typeof e)return m(e,t)}const E={SCHEMES:f,normalize:function(e,t){return"string"==typeof e?e=function(e,t){return _(e,t).normalized}(e,t):"object"==typeof e&&(e=b(m(e,t),t)),e},resolve:function(e,t,r){const n=r?Object.assign({scheme:"null"},r):{scheme:"null"},{parsed:s,malformedAuthorityOrPort:o}=$(e,n),{parsed:a,malformedAuthorityOrPort:i}=$(t,n);if(o||i)throw new Error(s.error||a.error||"URI is malformed.");const c=h(s,a,n,!0);return n.skipEscape=!0,m(c,n)},resolveComponent:h,equal:function(e,t,r){const n=w(e,r),s=w(t,r);return void 0!==n&&void 0!==s&&n.toLowerCase()===s.toLowerCase()},serialize:m,parse:b};e.exports=E,e.exports.default=E,e.exports.fastUri=E},343(e,t,r){const{isUUID:n}=r(4834),s=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,o=["http","https","ws","wss","urn","urn:uuid"];function a(e){return!0===e.secure||!1!==e.secure&&!!e.scheme&&!(3!==e.scheme.length||"w"!==e.scheme[0]&&"W"!==e.scheme[0]||"s"!==e.scheme[1]&&"S"!==e.scheme[1]||"s"!==e.scheme[2]&&"S"!==e.scheme[2])}function i(e){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e}function c(e){const t="https"===String(e.scheme).toLowerCase();return e.port!==(t?443:80)&&""!==e.port||(e.port=void 0),e.path||(e.path="/"),e}const l={scheme:"http",domainHost:!0,parse:i,serialize:c},u={scheme:"ws",domainHost:!0,parse:function(e){return e.secure=a(e),e.resourceName=(e.path||"/")+(e.query?"?"+e.query:""),e.path=void 0,e.query=void 0,e},serialize:function(e){if(e.port!==(a(e)?443:80)&&""!==e.port||(e.port=void 0),"boolean"==typeof e.secure&&(e.scheme=e.secure?"wss":"ws",e.secure=void 0),e.resourceName){const[t,r]=e.resourceName.split("?");e.path=t&&"/"!==t?t:void 0,e.query=r,e.resourceName=void 0}return e.fragment=void 0,e}},d={http:l,https:{scheme:"https",domainHost:l.domainHost,parse:i,serialize:c},ws:u,wss:{scheme:"wss",domainHost:u.domainHost,parse:u.parse,serialize:u.serialize},urn:{scheme:"urn",parse:function(e,t){if(!e.path)return e.error="URN can not be parsed",e;const r=e.path.match(s);if(r){const n=t.scheme||e.scheme||"urn";e.nid=r[1].toLowerCase(),e.nss=r[2];const s=f(`${n}:${t.nid||e.nid}`);e.path=void 0,s&&(e=s.parse(e,t))}else e.error=e.error||"URN can not be parsed.";return e},serialize:function(e,t){if(void 0===e.nid)throw new Error("URN without nid cannot be serialized");const r=t.scheme||e.scheme||"urn",n=e.nid.toLowerCase(),s=f(`${r}:${t.nid||n}`);s&&(e=s.serialize(e,t));const o=e,a=e.nss;return o.path=`${n||t.nid}:${a}`,t.skipEscape=!0,o},skipNormalize:!0},"urn:uuid":{scheme:"urn:uuid",parse:function(e,t){const r=e;return r.uuid=r.nss,r.nss=void 0,t.tolerant||r.uuid&&n(r.uuid)||(r.error=r.error||"UUID is not valid."),r},serialize:function(e){const t=e;return t.nss=(e.uuid||"").toLowerCase(),t},skipNormalize:!0}};function f(e){return e&&(d[e]||d[e.toLowerCase()])||void 0}Object.setPrototypeOf(d,null),e.exports={wsIsSecure:a,SCHEMES:d,isValidSchemeName:function(e){return-1!==o.indexOf(e)},getSchemeHandler:f}},4834(e){const t=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),r=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u),n=RegExp.prototype.test.bind(/^[\da-f]{2}$/iu),s=RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu),o=RegExp.prototype.test.bind(/^[\da-z\-._~!$&'()*+,;=:@/]$/iu);function a(e){let t="",r=0,n=0;for(n=0;n<e.length;n++)if(r=e[n].charCodeAt(0),48!==r){if(!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";t+=e[n];break}for(n+=1;n<e.length;n++){if(r=e[n].charCodeAt(0),!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";t+=e[n]}return t}const i=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function c(e){return e.length=0,!0}function l(e,t,r){if(e.length){const n=a(e);if(""===n)return r.error=!0,!1;t.push(n),e.length=0}return!0}function u(e){if(function(e){let t=0;for(let r=0;r<e.length;r++)":"===e[r]&&t++;return t}(e)<2)return{host:e,isIPV6:!1};const t=function(e){let t=0;const r={error:!1,address:"",zone:""},n=[],s=[];let o=!1,i=!1,u=l;for(let a=0;a<e.length;a++){const l=e[a];if("["!==l&&"]"!==l)if(":"!==l)if("%"===l){if(!u(s,n,r))break;u=c}else s.push(l);else{if(!0===o&&(i=!0),!u(s,n,r))break;if(++t>7){r.error=!0;break}a>0&&":"===e[a-1]&&(o=!0),n.push(":")}}return s.length&&(u===c?r.zone=s.join(""):i?n.push(s.join("")):n.push(a(s))),r.address=n.join(""),r}(e);if(t.error)return{host:e,isIPV6:!1};{let e=t.address,r=t.address;return t.zone&&(e+="%"+t.zone,r+="%25"+t.zone),{host:e,isIPV6:!0,escapedHost:r}}}const d={"@":"%40","/":"%2F","?":"%3F","#":"%23",":":"%3A"},f=/[@/?#:]/g,p=/[@/?#]/g;function h(e,t){const r=t?p:f;return r.lastIndex=0,e.replace(r,e=>d[e])}e.exports={nonSimpleDomain:i,recomposeAuthority:function(e){const t=[];if(void 0!==e.userinfo&&(t.push(e.userinfo),t.push("@")),void 0!==e.host){let n=unescape(e.host);if(!r(n)){const e=u(n);n=!0===e.isIPV6?`[${e.escapedHost}]`:h(n,!1)}t.push(n)}return"number"!=typeof e.port&&"string"!=typeof e.port||(t.push(":"),t.push(String(e.port))),t.length?t.join(""):void 0},reescapeHostDelimiters:h,normalizePercentEncoding:function(e,t=!1){if(-1===e.indexOf("%"))return e;let r="";for(let o=0;o<e.length;o++){if("%"===e[o]&&o+2<e.length){const a=e.slice(o+1,o+3);if(n(a)){const e=a.toUpperCase(),n=String.fromCharCode(parseInt(e,16));t&&s(n)?r+=n:r+="%"+e,o+=2;continue}}r+=e[o]}return r},normalizePathEncoding:function(e){let t="";for(let r=0;r<e.length;r++){if("%"===e[r]&&r+2<e.length){const o=e.slice(r+1,r+3);if(n(o)){const e=o.toUpperCase(),n=String.fromCharCode(parseInt(e,16));"."!==n&&s(n)?t+=n:t+="%"+e,r+=2;continue}}o(e[r])?t+=e[r]:t+=escape(e[r])}return t},escapePreservingEscapes:function(e){let t="";for(let r=0;r<e.length;r++){if("%"===e[r]&&r+2<e.length){const s=e.slice(r+1,r+3);if(n(s)){t+="%"+s.toUpperCase(),r+=2;continue}}t+=escape(e[r])}return t},removeDotSegments:function(e){let t=e;const r=[];let n=-1,s=0;for(;s=t.length;){if(1===s){if("."===t)break;if("/"===t){r.push("/");break}r.push(t);break}if(2===s){if("."===t[0]){if("."===t[1])break;if("/"===t[1]){t=t.slice(2);continue}}else if("/"===t[0]&&("."===t[1]||"/"===t[1])){r.push("/");break}}else if(3===s&&"/.."===t){0!==r.length&&r.pop(),r.push("/");break}if("."===t[0]){if("."===t[1]){if("/"===t[2]){t=t.slice(3);continue}}else if("/"===t[1]){t=t.slice(2);continue}}else if("/"===t[0]&&"."===t[1]){if("/"===t[2]){t=t.slice(2);continue}if("."===t[2]&&"/"===t[3]){t=t.slice(3),0!==r.length&&r.pop();continue}}if(-1===(n=t.indexOf("/",1))){r.push(t);break}r.push(t.slice(0,n)),t=t.slice(n)}return r.join("")},isIPv4:r,isUUID:t,normalizeIPv6:u,stringArrayToHexStripped:a}},3837(e){e.exports=JSON.parse('{"$id":"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#","description":"Meta-schema for $data reference (JSON AnySchema extension proposal)","type":"object","required":["$data"],"properties":{"$data":{"type":"string","anyOf":[{"format":"relative-json-pointer"},{"format":"json-pointer"}]}},"additionalProperties":false}')},2079(e){e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"http://json-schema.org/draft-07/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"$comment":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":true,"readOnly":{"type":"boolean","default":false},"examples":{"type":"array","items":true},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":true},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"propertyNames":{"format":"regex"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":true,"enum":{"type":"array","items":true,"minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"contentMediaType":{"type":"string"},"contentEncoding":{"type":"string"},"if":{"$ref":"#"},"then":{"$ref":"#"},"else":{"$ref":"#"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":true}')}};const t={};function r(n){const s=t[n];if(void 0!==s)return s.exports;const o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var s=t[n++],o=t[n++];r.o(e,s)?0===o&&n++:0===o?Object.defineProperty(e,s,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,s,{enumerable:!0,get:o})}else for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);let n={};(()=>{let e=n;Object.defineProperty(e,"__esModule",{value:!0});const t=r(7975),s=r(4061);!async function(){const e=process.argv.slice(2),r=e[0];switch(r){case"check":process.exit(await(0,s.run)(e.slice(1)));break;case"--help":case"-h":case void 0:console.log("Usage: prairielearn-navigator <command> [options]\n\nCommands:\n check Check a course's JSON files against PrairieLearn's schemas and rules\n\nRun 'prairielearn-navigator <command> --help' for command-specific help."),process.exit(r?0:1);break;default:console.error((0,t.styleText)("red",`Unknown command: ${r}`)),console.error('Run "prairielearn-navigator --help" for usage.'),process.exit(1)}}()})(),module.exports=n})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sybelblue/prairielearn-navigator",
3
- "version": "0.3.1",
3
+ "version": "1.0.0",
4
4
  "description": "Check PrairieLearn courses for missing, incomplete, and duplicate questions",
5
5
  "license": "MIT",
6
6
  "repository": {